From de3032cbecac3e74fac97aeeead185b9fd2732da Mon Sep 17 00:00:00 2001 From: Chris Alvares Date: Mon, 25 Apr 2016 17:54:57 -0500 Subject: [PATCH 1/5] remove node modules files. --- .gitignore | 3 +- lib/client.js | 14 +- node_modules/.bin/nodeunit | 1 - node_modules/nodeunit/.npmignore | 3 - node_modules/nodeunit/CONTRIBUTORS.md | 68 - node_modules/nodeunit/LICENSE | 19 - node_modules/nodeunit/Makefile | 177 - node_modules/nodeunit/README.md | 443 - node_modules/nodeunit/bin/nodeunit | 133 - node_modules/nodeunit/bin/nodeunit.json | 10 - node_modules/nodeunit/deps/async.js | 623 - node_modules/nodeunit/deps/console.log.js | 55 - node_modules/nodeunit/deps/ejs/History.md | 70 - node_modules/nodeunit/deps/ejs/Makefile | 20 - node_modules/nodeunit/deps/ejs/Readme.md | 152 - node_modules/nodeunit/deps/ejs/benchmark.js | 14 - node_modules/nodeunit/deps/ejs/ejs.js | 531 - node_modules/nodeunit/deps/ejs/ejs.min.js | 2 - .../nodeunit/deps/ejs/examples/client.html | 5 - .../nodeunit/deps/ejs/examples/list.ejs | 7 - .../nodeunit/deps/ejs/examples/list.js | 16 - node_modules/nodeunit/deps/ejs/index.js | 2 - node_modules/nodeunit/deps/ejs/lib/ejs.js | 251 - node_modules/nodeunit/deps/ejs/lib/filters.js | 198 - node_modules/nodeunit/deps/ejs/lib/utils.js | 23 - node_modules/nodeunit/deps/ejs/package.json | 11 - .../nodeunit/deps/ejs/support/compile.js | 173 - .../nodeunit/deps/ejs/test/ejs.test.js | 269 - node_modules/nodeunit/deps/json2.js | 481 - node_modules/nodeunit/doc/nodeunit.md | 60 - .../nodeunit/examples/browser/nodeunit.js | 2034 - .../nodeunit/examples/browser/suite1.js | 12 - .../nodeunit/examples/browser/suite2.js | 13 - .../nodeunit/examples/browser/suite3.js | 7 - .../nodeunit/examples/browser/test.html | 18 - .../nested/nested_reporter_test.unit.js | 94 - node_modules/nodeunit/img/example_fail.png | Bin 38642 -> 0 bytes .../nodeunit/img/example_machineout.png | Bin 422136 -> 0 bytes node_modules/nodeunit/img/example_pass.png | Bin 14133 -> 0 bytes node_modules/nodeunit/index.js | 3 - node_modules/nodeunit/lib/assert.js | 354 - node_modules/nodeunit/lib/core.js | 318 - node_modules/nodeunit/lib/nodeunit.js | 104 - .../nodeunit/lib/reporters/browser.js | 121 - .../nodeunit/lib/reporters/default.js | 131 - .../nodeunit/lib/reporters/eclipse.js | 104 - node_modules/nodeunit/lib/reporters/html.js | 110 - node_modules/nodeunit/lib/reporters/index.js | 14 - node_modules/nodeunit/lib/reporters/junit.js | 180 - .../nodeunit/lib/reporters/machineout.js | 112 - .../nodeunit/lib/reporters/minimal.js | 121 - node_modules/nodeunit/lib/reporters/nested.js | 214 - .../nodeunit/lib/reporters/skip_passed.js | 108 - node_modules/nodeunit/lib/reporters/tap.js | 65 - .../nodeunit/lib/reporters/verbose.js | 123 - node_modules/nodeunit/lib/track.js | 48 - node_modules/nodeunit/lib/types.js | 189 - node_modules/nodeunit/lib/utils.js | 203 - node_modules/nodeunit/man1/nodeunit.1 | 95 - node_modules/nodeunit/node_modules/.bin/tap | 1 - .../nodeunit/node_modules/tap/.npmignore | 0 .../nodeunit/node_modules/tap/AUTHORS | 11 - .../nodeunit/node_modules/tap/LICENSE | 23 - .../nodeunit/node_modules/tap/README.md | 84 - .../nodeunit/node_modules/tap/bin/tap-http.js | 19 - .../node_modules/tap/bin/tap-reader.js | 33 - .../nodeunit/node_modules/tap/bin/tap.js | 132 - .../tap/coverage-example/lib/bar.js | 15 - .../tap/coverage-example/lib/foo.js | 15 - .../tap/coverage-example/test/bar.test.js | 20 - .../tap/coverage-example/test/baz.test.js | 29 - .../tap/coverage-example/test/foo.test.js | 20 - .../node_modules/tap/example/lib/math.js | 1 - .../tap/example/test/test-example.js | 237 - .../nodeunit/node_modules/tap/lib/main.js | 16 - .../node_modules/tap/lib/tap-assert.js | 445 - .../tap/lib/tap-browser-harness.js | 63 - .../node_modules/tap/lib/tap-consumer.js | 245 - .../node_modules/tap/lib/tap-cov-html.js | 78 - .../tap/lib/tap-global-harness.js | 68 - .../node_modules/tap/lib/tap-harness.js | 223 - .../node_modules/tap/lib/tap-producer.js | 130 - .../node_modules/tap/lib/tap-results.js | 71 - .../node_modules/tap/lib/tap-runner.js | 472 - .../nodeunit/node_modules/tap/lib/tap-test.js | 109 - .../node_modules/tap/node_modules/.bin/nopt | 1 - .../tap/node_modules/buffer-equal/.travis.yml | 4 - .../node_modules/buffer-equal/README.markdown | 62 - .../node_modules/buffer-equal/example/eq.js | 14 - .../tap/node_modules/buffer-equal/index.js | 13 - .../node_modules/buffer-equal/package.json | 37 - .../tap/node_modules/buffer-equal/test/eq.js | 35 - .../node_modules/deep-equal/README.markdown | 55 - .../node_modules/deep-equal/example/cmp.js | 11 - .../tap/node_modules/deep-equal/index.js | 84 - .../tap/node_modules/deep-equal/package.json | 39 - .../tap/node_modules/deep-equal/test/cmp.js | 18 - .../tap/node_modules/difflet/.travis.yml | 4 - .../tap/node_modules/difflet/README.markdown | 116 - .../node_modules/difflet/example/cmp_array.js | 6 - .../difflet/example/cmp_object.js | 6 - .../node_modules/difflet/example/colors.js | 18 - .../difflet/example/comma_first.js | 12 - .../tap/node_modules/difflet/example/diff.js | 15 - .../tap/node_modules/difflet/example/html.js | 34 - .../node_modules/difflet/example/string.js | 4 - .../tap/node_modules/difflet/index.js | 371 - .../node_modules/charm/README.markdown | 202 - .../difflet/node_modules/charm/example/256.js | 17 - .../node_modules/charm/example/column.js | 10 - .../node_modules/charm/example/cursor.js | 22 - .../node_modules/charm/example/http_spin.js | 35 - .../node_modules/charm/example/lucky.js | 30 - .../node_modules/charm/example/position.js | 7 - .../node_modules/charm/example/progress.js | 19 - .../node_modules/charm/example/spin.js | 23 - .../difflet/node_modules/charm/index.js | 286 - .../difflet/node_modules/charm/lib/encode.js | 18 - .../difflet/node_modules/charm/package.json | 38 - .../difflet/node_modules/traverse/.npmignore | 1 - .../difflet/node_modules/traverse/.travis.yml | 3 - .../difflet/node_modules/traverse/LICENSE | 24 - .../node_modules/traverse/README.markdown | 258 - .../node_modules/traverse/examples/json.js | 16 - .../node_modules/traverse/examples/leaves.js | 15 - .../traverse/examples/negative.js | 8 - .../node_modules/traverse/examples/scrub.js | 10 - .../traverse/examples/stringify.js | 38 - .../difflet/node_modules/traverse/fail.js | 9 - .../difflet/node_modules/traverse/index.js | 310 - .../node_modules/traverse/package.json | 45 - .../node_modules/traverse/test/circular.js | 117 - .../node_modules/traverse/test/date.js | 37 - .../node_modules/traverse/test/equal.js | 240 - .../node_modules/traverse/test/error.js | 11 - .../difflet/node_modules/traverse/test/has.js | 15 - .../node_modules/traverse/test/instance.js | 17 - .../node_modules/traverse/test/interface.js | 43 - .../node_modules/traverse/test/json.js | 49 - .../node_modules/traverse/test/keys.js | 31 - .../node_modules/traverse/test/leaves.js | 22 - .../traverse/test/lib/deep_equal.js | 96 - .../node_modules/traverse/test/mutability.js | 300 - .../node_modules/traverse/test/negative.js | 21 - .../difflet/node_modules/traverse/test/obj.js | 11 - .../node_modules/traverse/test/siblings.js | 37 - .../node_modules/traverse/test/stop.js | 44 - .../node_modules/traverse/test/stringify.js | 36 - .../node_modules/traverse/test/subexpr.js | 36 - .../node_modules/traverse/test/super_deep.js | 56 - .../node_modules/traverse/testling/leaves.js | 22 - .../tap/node_modules/difflet/package.json | 45 - .../tap/node_modules/difflet/test/html.js | 80 - .../tap/node_modules/glob/.npmignore | 2 - .../tap/node_modules/glob/.travis.yml | 3 - .../tap/node_modules/glob/LICENSE | 27 - .../tap/node_modules/glob/README.md | 233 - .../tap/node_modules/glob/examples/g.js | 9 - .../node_modules/glob/examples/usr-local.js | 9 - .../tap/node_modules/glob/glob.js | 634 - .../glob/node_modules/graceful-fs/.npmignore | 1 - .../glob/node_modules/graceful-fs/LICENSE | 23 - .../glob/node_modules/graceful-fs/README.md | 5 - .../node_modules/graceful-fs/graceful-fs.js | 312 - .../node_modules/graceful-fs/package.json | 36 - .../node_modules/graceful-fs/test/open.js | 41 - .../glob/node_modules/inherits/README.md | 51 - .../glob/node_modules/inherits/inherits.js | 29 - .../glob/node_modules/inherits/package.json | 26 - .../glob/node_modules/minimatch/.travis.yml | 4 - .../glob/node_modules/minimatch/LICENSE | 23 - .../glob/node_modules/minimatch/README.md | 218 - .../glob/node_modules/minimatch/minimatch.js | 1079 - .../node_modules/lru-cache/.npmignore | 1 - .../minimatch/node_modules/lru-cache/AUTHORS | 8 - .../minimatch/node_modules/lru-cache/LICENSE | 23 - .../node_modules/lru-cache/README.md | 46 - .../node_modules/lru-cache/lib/lru-cache.js | 191 - .../node_modules/lru-cache/package.json | 58 - .../node_modules/lru-cache/test/basic.js | 267 - .../minimatch/node_modules/sigmund/LICENSE | 27 - .../minimatch/node_modules/sigmund/README.md | 53 - .../minimatch/node_modules/sigmund/bench.js | 283 - .../node_modules/sigmund/package.json | 38 - .../minimatch/node_modules/sigmund/sigmund.js | 39 - .../node_modules/sigmund/test/basic.js | 24 - .../glob/node_modules/minimatch/package.json | 36 - .../glob/node_modules/minimatch/test/basic.js | 297 - .../minimatch/test/brace-expand.js | 33 - .../node_modules/minimatch/test/caching.js | 14 - .../node_modules/minimatch/test/defaults.js | 274 - .../tap/node_modules/glob/package.json | 36 - .../tap/node_modules/glob/test/00-setup.js | 176 - .../node_modules/glob/test/bash-comparison.js | 63 - .../node_modules/glob/test/bash-results.json | 347 - .../tap/node_modules/glob/test/cwd-test.js | 55 - .../tap/node_modules/glob/test/mark.js | 74 - .../node_modules/glob/test/pause-resume.js | 73 - .../node_modules/glob/test/root-nomount.js | 39 - .../tap/node_modules/glob/test/root.js | 46 - .../tap/node_modules/glob/test/zz-cleanup.js | 11 - .../tap/node_modules/inherits/LICENSE | 14 - .../tap/node_modules/inherits/README.md | 51 - .../tap/node_modules/inherits/inherits-old.js | 40 - .../tap/node_modules/inherits/inherits.js | 29 - .../tap/node_modules/inherits/package.json | 8 - .../tap/node_modules/mkdirp/.npmignore | 2 - .../tap/node_modules/mkdirp/.travis.yml | 4 - .../tap/node_modules/mkdirp/LICENSE | 21 - .../tap/node_modules/mkdirp/README.markdown | 61 - .../tap/node_modules/mkdirp/examples/pow.js | 6 - .../tap/node_modules/mkdirp/index.js | 82 - .../tap/node_modules/mkdirp/package.json | 33 - .../tap/node_modules/mkdirp/test/chmod.js | 38 - .../tap/node_modules/mkdirp/test/clobber.js | 37 - .../tap/node_modules/mkdirp/test/mkdirp.js | 28 - .../tap/node_modules/mkdirp/test/perm.js | 32 - .../tap/node_modules/mkdirp/test/perm_sync.js | 39 - .../tap/node_modules/mkdirp/test/race.js | 41 - .../tap/node_modules/mkdirp/test/rel.js | 32 - .../tap/node_modules/mkdirp/test/return.js | 25 - .../node_modules/mkdirp/test/return_sync.js | 24 - .../tap/node_modules/mkdirp/test/root.js | 18 - .../tap/node_modules/mkdirp/test/sync.js | 32 - .../tap/node_modules/mkdirp/test/umask.js | 28 - .../node_modules/mkdirp/test/umask_sync.js | 32 - .../tap/node_modules/nopt/.npmignore | 1 - .../tap/node_modules/nopt/LICENSE | 23 - .../tap/node_modules/nopt/README.md | 210 - .../tap/node_modules/nopt/bin/nopt.js | 51 - .../node_modules/nopt/examples/my-program.js | 30 - .../tap/node_modules/nopt/lib/nopt.js | 602 - .../nopt/node_modules/abbrev/LICENSE | 23 - .../nopt/node_modules/abbrev/README.md | 23 - .../nopt/node_modules/abbrev/lib/abbrev.js | 111 - .../nopt/node_modules/abbrev/package.json | 25 - .../tap/node_modules/nopt/package.json | 32 - .../node_modules/runforcover/README.markdown | 56 - .../tap/node_modules/runforcover/index.js | 127 - .../node_modules/bunker/.npmignore | 1 - .../node_modules/bunker/.travis.yml | 4 - .../node_modules/bunker/README.markdown | 82 - .../node_modules/bunker/example/prof.js | 51 - .../node_modules/bunker/example/tiny.js | 18 - .../node_modules/bunker/example/top/run.js | 31 - .../node_modules/bunker/example/top/src.js | 18 - .../runforcover/node_modules/bunker/index.js | 116 - .../bunker/node_modules/burrito/.npmignore | 1 - .../bunker/node_modules/burrito/.travis.yml | 4 - .../node_modules/burrito/README.markdown | 187 - .../node_modules/burrito/example/microwave.js | 8 - .../node_modules/burrito/example/web/bs.js | 4832 -- .../burrito/example/web/index.html | 14 - .../node_modules/burrito/example/web/main.js | 17 - .../burrito/example/web/server.js | 12 - .../node_modules/burrito/example/wrap.js | 7 - .../bunker/node_modules/burrito/index.js | 208 - .../burrito/node_modules/.bin/uglifyjs | 1 - .../burrito/node_modules/traverse/.npmignore | 1 - .../burrito/node_modules/traverse/LICENSE | 24 - .../node_modules/traverse/README.markdown | 237 - .../node_modules/traverse/examples/json.js | 16 - .../node_modules/traverse/examples/leaves.js | 15 - .../traverse/examples/negative.js | 8 - .../node_modules/traverse/examples/scrub.js | 10 - .../traverse/examples/stringify.js | 38 - .../burrito/node_modules/traverse/index.js | 267 - .../burrito/node_modules/traverse/main.js | 10 - .../node_modules/traverse/package.json | 24 - .../node_modules/traverse/test/circular.js | 115 - .../node_modules/traverse/test/date.js | 35 - .../node_modules/traverse/test/equal.js | 220 - .../node_modules/traverse/test/instance.js | 17 - .../node_modules/traverse/test/interface.js | 42 - .../node_modules/traverse/test/json.js | 47 - .../node_modules/traverse/test/keys.js | 29 - .../node_modules/traverse/test/leaves.js | 21 - .../traverse/test/lib/deep_equal.js | 92 - .../node_modules/traverse/test/mutability.js | 252 - .../node_modules/traverse/test/negative.js | 20 - .../burrito/node_modules/traverse/test/obj.js | 15 - .../node_modules/traverse/test/siblings.js | 35 - .../node_modules/traverse/test/stop.js | 41 - .../node_modules/traverse/test/stringify.js | 36 - .../node_modules/traverse/test/subexpr.js | 34 - .../node_modules/traverse/test/super_deep.js | 55 - .../burrito/node_modules/uglify-js/.npmignore | 4 - .../node_modules/uglify-js/README.html | 1026 - .../burrito/node_modules/uglify-js/README.org | 571 - .../node_modules/uglify-js/bin/uglifyjs | 317 - .../node_modules/uglify-js/docstyle.css | 75 - .../node_modules/uglify-js/lib/object-ast.js | 75 - .../node_modules/uglify-js/lib/parse-js.js | 1339 - .../node_modules/uglify-js/lib/process.js | 2001 - .../uglify-js/lib/squeeze-more.js | 51 - .../node_modules/uglify-js/package.json | 22 - .../node_modules/uglify-js/test/beautify.js | 28 - .../node_modules/uglify-js/test/testparser.js | 403 - .../test/unit/compress/expected/array1.js | 1 - .../test/unit/compress/expected/array2.js | 1 - .../test/unit/compress/expected/array3.js | 1 - .../test/unit/compress/expected/array4.js | 1 - .../test/unit/compress/expected/assignment.js | 1 - .../unit/compress/expected/concatstring.js | 1 - .../test/unit/compress/expected/const.js | 1 - .../unit/compress/expected/empty-blocks.js | 1 - .../unit/compress/expected/forstatement.js | 1 - .../test/unit/compress/expected/if.js | 1 - .../test/unit/compress/expected/ifreturn.js | 1 - .../test/unit/compress/expected/ifreturn2.js | 1 - .../test/unit/compress/expected/issue10.js | 1 - .../test/unit/compress/expected/issue11.js | 1 - .../test/unit/compress/expected/issue13.js | 1 - .../test/unit/compress/expected/issue14.js | 1 - .../test/unit/compress/expected/issue16.js | 1 - .../test/unit/compress/expected/issue17.js | 1 - .../test/unit/compress/expected/issue20.js | 1 - .../test/unit/compress/expected/issue21.js | 1 - .../test/unit/compress/expected/issue25.js | 1 - .../test/unit/compress/expected/issue27.js | 1 - .../test/unit/compress/expected/issue28.js | 1 - .../test/unit/compress/expected/issue29.js | 1 - .../test/unit/compress/expected/issue30.js | 1 - .../test/unit/compress/expected/issue34.js | 1 - .../test/unit/compress/expected/issue4.js | 1 - .../test/unit/compress/expected/issue48.js | 1 - .../test/unit/compress/expected/issue50.js | 1 - .../test/unit/compress/expected/issue53.js | 1 - .../test/unit/compress/expected/issue54.1.js | 1 - .../test/unit/compress/expected/issue68.js | 1 - .../test/unit/compress/expected/issue69.js | 1 - .../test/unit/compress/expected/issue9.js | 1 - .../test/unit/compress/expected/mangle.js | 1 - .../unit/compress/expected/null_string.js | 1 - .../unit/compress/expected/strict-equals.js | 1 - .../test/unit/compress/expected/var.js | 1 - .../test/unit/compress/expected/whitespace.js | 1 - .../test/unit/compress/expected/with.js | 1 - .../test/unit/compress/test/array1.js | 3 - .../test/unit/compress/test/array2.js | 4 - .../test/unit/compress/test/array3.js | 4 - .../test/unit/compress/test/array4.js | 6 - .../test/unit/compress/test/assignment.js | 20 - .../test/unit/compress/test/concatstring.js | 3 - .../test/unit/compress/test/const.js | 5 - .../test/unit/compress/test/empty-blocks.js | 4 - .../test/unit/compress/test/forstatement.js | 10 - .../uglify-js/test/unit/compress/test/if.js | 6 - .../test/unit/compress/test/ifreturn.js | 9 - .../test/unit/compress/test/ifreturn2.js | 16 - .../test/unit/compress/test/issue10.js | 1 - .../test/unit/compress/test/issue11.js | 3 - .../test/unit/compress/test/issue13.js | 1 - .../test/unit/compress/test/issue14.js | 1 - .../test/unit/compress/test/issue16.js | 1 - .../test/unit/compress/test/issue17.js | 4 - .../test/unit/compress/test/issue20.js | 1 - .../test/unit/compress/test/issue21.js | 6 - .../test/unit/compress/test/issue25.js | 7 - .../test/unit/compress/test/issue27.js | 1 - .../test/unit/compress/test/issue28.js | 3 - .../test/unit/compress/test/issue29.js | 1 - .../test/unit/compress/test/issue30.js | 3 - .../test/unit/compress/test/issue34.js | 3 - .../test/unit/compress/test/issue4.js | 3 - .../test/unit/compress/test/issue48.js | 1 - .../test/unit/compress/test/issue50.js | 9 - .../test/unit/compress/test/issue53.js | 1 - .../test/unit/compress/test/issue54.1.js | 3 - .../test/unit/compress/test/issue68.js | 5 - .../test/unit/compress/test/issue69.js | 1 - .../test/unit/compress/test/issue9.js | 4 - .../test/unit/compress/test/mangle.js | 5 - .../test/unit/compress/test/null_string.js | 1 - .../test/unit/compress/test/strict-equals.js | 3 - .../uglify-js/test/unit/compress/test/var.js | 3 - .../test/unit/compress/test/whitespace.js | 21 - .../uglify-js/test/unit/compress/test/with.js | 2 - .../uglify-js/test/unit/scripts.js | 55 - .../node_modules/uglify-js/tmp/hoist.js | 33 - .../node_modules/uglify-js/tmp/instrument.js | 97 - .../node_modules/uglify-js/tmp/instrument2.js | 138 - .../node_modules/uglify-js/tmp/test.js | 30 - .../node_modules/uglify-js/uglify-js.js | 17 - .../bunker/node_modules/burrito/package.json | 47 - .../bunker/node_modules/burrito/test/ast.js | 31 - .../bunker/node_modules/burrito/test/err.js | 52 - .../bunker/node_modules/burrito/test/fail.js | 9 - .../node_modules/burrito/test/fail/src.js | 60 - .../bunker/node_modules/burrito/test/label.js | 92 - .../node_modules/burrito/test/microwave.js | 34 - .../node_modules/burrito/test/parent.js | 27 - .../bunker/node_modules/burrito/test/wrap.js | 159 - .../node_modules/bunker/package.json | 41 - .../node_modules/bunker/test/cover.js | 36 - .../node_modules/bunker/test/return.js | 29 - .../node_modules/bunker/test/src/cover.js | 6 - .../tap/node_modules/runforcover/package.json | 38 - .../node_modules/runforcover/test/index.js | 1 - .../runforcover/test/interface.js | 50 - .../runforcover/test/src/coverage.js | 7 - .../tap/node_modules/slide/README.md | 27 - .../tap/node_modules/slide/index.js | 1 - .../slide/lib/async-map-ordered.js | 65 - .../tap/node_modules/slide/lib/async-map.js | 56 - .../tap/node_modules/slide/lib/bind-actor.js | 16 - .../tap/node_modules/slide/lib/chain.js | 20 - .../tap/node_modules/slide/lib/slide.js | 3 - .../slide/nodejs-controlling-flow.pdf | Bin 167502 -> 0 bytes .../tap/node_modules/slide/package.json | 31 - .../tap/node_modules/yamlish/LICENSE | 19 - .../tap/node_modules/yamlish/README.md | 20 - .../tap/node_modules/yamlish/package.json | 9 - .../tap/node_modules/yamlish/yamlish.js | 260 - .../nodeunit/node_modules/tap/package.json | 62 - .../node_modules/tap/test-disabled/bailout.js | 36 - .../node_modules/tap/test-disabled/foo.js | 1 - .../node_modules/tap/test-disabled/t.js | 16 - .../node_modules/tap/test/buffer_compare.js | 11 - .../nodeunit/node_modules/tap/test/common.js | 32 - .../nodeunit/node_modules/tap/test/deep.js | 43 - .../node_modules/tap/test/end-exception/t.js | 12 - .../node_modules/tap/test/executed.sh | 4 - .../node_modules/tap/test/expose-gc-test.js | 46 - .../tap/test/independent-timeouts.js | 16 - .../tap/test/isolated-conf-test.js | 16 - .../node_modules/tap/test/meta-test.js | 73 - .../node_modules/tap/test/nested-test.js | 23 - .../node_modules/tap/test/non-tap-output.js | 12 - .../node_modules/tap/test/not-executed.sh | 4 - .../tap/test/output-childtest-description.js | 50 - .../node_modules/tap/test/result-trap.js | 25 - .../nodeunit/node_modules/tap/test/segv.js | 62 - .../tap/test/simple-harness-test-with-plan.js | 16 - .../tap/test/simple-harness-test.js | 13 - .../node_modules/tap/test/test-test.js | 91 - .../nodeunit/node_modules/tap/test/timeout.js | 33 - .../node_modules/tap/test/trivial-success.js | 0 .../tap/test/undefined_indented.js | 27 - node_modules/nodeunit/nodelint.cfg | 7 - node_modules/nodeunit/package.json | 97 - node_modules/nodeunit/share/junit.xml.ejs | 19 - node_modules/nodeunit/share/license.js | 11 - node_modules/nodeunit/share/nodeunit.css | 70 - .../fixtures/coffee/mock_coffee_module.coffee | 4 - .../test/fixtures/dir/mock_module3.js | 1 - .../test/fixtures/dir/mock_module4.js | 1 - .../nodeunit/test/fixtures/mock_module1.js | 1 - .../nodeunit/test/fixtures/mock_module2.js | 1 - .../nodeunit/test/fixtures/raw_jscode1.js | 3 - .../nodeunit/test/fixtures/raw_jscode2.js | 3 - .../nodeunit/test/fixtures/raw_jscode3.js | 1 - node_modules/nodeunit/test/test-base.js | 239 - .../nodeunit/test/test-bettererrors.js | 71 - .../nodeunit/test/test-failing-callbacks.js | 114 - node_modules/nodeunit/test/test-httputil.js | 55 - node_modules/nodeunit/test/test-runfiles.js | 214 - node_modules/nodeunit/test/test-runmodule.js | 177 - node_modules/nodeunit/test/test-runtest.js | 46 - node_modules/nodeunit/test/test-sandbox.js | 31 - .../nodeunit/test/test-testcase-legacy.js | 257 - node_modules/nodeunit/test/test-testcase.js | 256 - node_modules/nodeunit/test/test.html | 28 - node_modules/underscore/.npmignore | 4 - node_modules/underscore/.travis.yml | 5 - node_modules/underscore/CNAME | 1 - node_modules/underscore/CONTRIBUTING.md | 9 - node_modules/underscore/LICENSE | 22 - node_modules/underscore/README.md | 19 - node_modules/underscore/favicon.ico | Bin 1406 -> 0 bytes node_modules/underscore/index.html | 2467 - node_modules/underscore/index.js | 1 - node_modules/underscore/package.json | 32 - node_modules/underscore/underscore-min.js | 1 - node_modules/underscore/underscore.js | 1226 - node_modules/xml2json/.npmignore | 1 - node_modules/xml2json/README.md | 91 - node_modules/xml2json/index.js | 1 - node_modules/xml2json/lib/index.js | 4 - node_modules/xml2json/lib/json2xml.js | 55 - node_modules/xml2json/lib/xml2json.js | 196 - .../node_modules/node-expat/.npmignore | 4 - .../node_modules/node-expat/.travis.yml | 4 - .../xml2json/node_modules/node-expat/LICENSE | 20 - .../node_modules/node-expat/README.markdown | 51 - .../xml2json/node_modules/node-expat/bench.js | 60 - .../node_modules/node-expat/binding.gyp | 11 - .../node_modules/node-expat/build/Makefile | 365 - .../build/Release/.deps/Release/libexpat.a.d | 1 - .../Release/.deps/Release/node_expat.node.d | 1 - .../expat/deps/libexpat/lib/xmlparse.o.d | 14 - .../expat/deps/libexpat/lib/xmlrole.o.d | 13 - .../expat/deps/libexpat/lib/xmltok.o.d | 23 - .../obj.target/node_expat/node-expat.o.d | 36 - .../node-expat/build/Release/libexpat.a | Bin 522808 -> 0 bytes .../node-expat/build/Release/linker.lock | 0 .../node-expat/build/Release/node_expat.node | Bin 192924 -> 0 bytes .../expat/deps/libexpat/lib/xmlparse.o | Bin 220360 -> 0 bytes .../expat/deps/libexpat/lib/xmlrole.o | Bin 65700 -> 0 bytes .../expat/deps/libexpat/lib/xmltok.o | Bin 233840 -> 0 bytes .../obj.target/node_expat/node-expat.o | Bin 143188 -> 0 bytes .../node-expat/build/binding.Makefile | 6 - .../node_modules/node-expat/build/config.gypi | 107 - .../build/deps/libexpat/expat.target.mk | 155 - .../build/deps/libexpat/libexpat.Makefile | 6 - .../build/deps/libexpat/version.target.mk | 153 - .../node-expat/build/gyp-mac-tool | 211 - .../node-expat/build/node_expat.target.mk | 163 - .../node-expat/deps/libexpat/CMake.README | 42 - .../node-expat/deps/libexpat/CMakeLists.txt | 111 - .../node-expat/deps/libexpat/COPYING | 22 - .../node-expat/deps/libexpat/Changes | 205 - .../deps/libexpat/ConfigureChecks.cmake | 44 - .../node-expat/deps/libexpat/MANIFEST | 141 - .../node-expat/deps/libexpat/Makefile.in | 201 - .../node-expat/deps/libexpat/README | 139 - .../node-expat/deps/libexpat/aclocal.m4 | 8460 ---- .../node-expat/deps/libexpat/amiga/Makefile | 336 - .../node-expat/deps/libexpat/amiga/README.txt | 98 - .../node-expat/deps/libexpat/amiga/expat.xml | 264 - .../deps/libexpat/amiga/expat_68k.c | 939 - .../deps/libexpat/amiga/expat_68k.h | 94 - .../libexpat/amiga/expat_68k_handler_stubs.c | 185 - .../deps/libexpat/amiga/expat_base.h | 40 - .../deps/libexpat/amiga/expat_lib.c | 247 - .../deps/libexpat/amiga/expat_vectors.c | 505 - .../libexpat/amiga/include/inline4/expat.h | 94 - .../libexpat/amiga/include/interfaces/expat.h | 98 - .../libexpat/amiga/include/libraries/expat.h | 566 - .../deps/libexpat/amiga/include/proto/expat.h | 52 - .../node-expat/deps/libexpat/amiga/launch.c | 57 - .../node-expat/deps/libexpat/bcb5/README.txt | 87 - .../deps/libexpat/bcb5/all_projects.bpg | 49 - .../deps/libexpat/bcb5/elements.bpf | 4 - .../deps/libexpat/bcb5/elements.bpr | 149 - .../deps/libexpat/bcb5/elements.mak | 186 - .../node-expat/deps/libexpat/bcb5/expat.bpf | 6 - .../node-expat/deps/libexpat/bcb5/expat.bpr | 140 - .../node-expat/deps/libexpat/bcb5/expat.mak | 187 - .../deps/libexpat/bcb5/expat_static.bpf | 5 - .../deps/libexpat/bcb5/expat_static.bpr | 143 - .../deps/libexpat/bcb5/expat_static.mak | 189 - .../node-expat/deps/libexpat/bcb5/expatw.bpf | 6 - .../node-expat/deps/libexpat/bcb5/expatw.bpr | 146 - .../node-expat/deps/libexpat/bcb5/expatw.mak | 187 - .../deps/libexpat/bcb5/expatw_static.bpf | 5 - .../deps/libexpat/bcb5/expatw_static.bpr | 152 - .../deps/libexpat/bcb5/expatw_static.mak | 190 - .../deps/libexpat/bcb5/libexpat_mtd.def | 141 - .../deps/libexpat/bcb5/libexpatw_mtd.def | 140 - .../deps/libexpat/bcb5/makefile.mak | 37 - .../node-expat/deps/libexpat/bcb5/outline.bpf | 4 - .../node-expat/deps/libexpat/bcb5/outline.bpr | 132 - .../node-expat/deps/libexpat/bcb5/outline.mak | 186 - .../node-expat/deps/libexpat/bcb5/setup.bat | 9 - .../node-expat/deps/libexpat/bcb5/xmlwf.bpf | 7 - .../node-expat/deps/libexpat/bcb5/xmlwf.bpr | 136 - .../node-expat/deps/libexpat/bcb5/xmlwf.mak | 187 - .../node-expat/deps/libexpat/configure | 18632 ------- .../node-expat/deps/libexpat/configure.in | 155 - .../deps/libexpat/conftools/PrintPath | 116 - .../conftools/ac_c_bigendian_cross.m4 | 81 - .../deps/libexpat/conftools/config.guess | 1517 - .../deps/libexpat/conftools/config.sub | 1760 - .../deps/libexpat/conftools/expat.m4 | 43 - .../deps/libexpat/conftools/get-version.sh | 46 - .../deps/libexpat/conftools/install-sh | 520 - .../deps/libexpat/conftools/ltmain.sh | 9642 ---- .../deps/libexpat/conftools/mkinstalldirs | 40 - .../node-expat/deps/libexpat/doc/expat.png | Bin 1027 -> 0 bytes .../deps/libexpat/doc/reference.html | 2390 - .../node-expat/deps/libexpat/doc/style.css | 101 - .../deps/libexpat/doc/valid-xhtml10.png | Bin 2368 -> 0 bytes .../node-expat/deps/libexpat/doc/xmlwf.1 | 251 - .../node-expat/deps/libexpat/doc/xmlwf.sgml | 468 - .../deps/libexpat/examples/elements.c | 65 - .../deps/libexpat/examples/elements.dsp | 103 - .../deps/libexpat/examples/outline.c | 106 - .../deps/libexpat/examples/outline.dsp | 103 - .../node-expat/deps/libexpat/expat.dsw | 110 - .../node-expat/deps/libexpat/expat.pc.in | 11 - .../node-expat/deps/libexpat/expat_config.h | 103 - .../deps/libexpat/expat_config.h.cmake | 91 - .../deps/libexpat/expat_config.h.in | 102 - .../node-expat/deps/libexpat/lib/Makefile.MPW | 206 - .../deps/libexpat/lib/amigaconfig.h | 32 - .../node-expat/deps/libexpat/lib/ascii.h | 92 - .../node-expat/deps/libexpat/lib/asciitab.h | 36 - .../node-expat/deps/libexpat/lib/expat.dsp | 185 - .../node-expat/deps/libexpat/lib/expat.h | 1047 - .../deps/libexpat/lib/expat_external.h | 115 - .../deps/libexpat/lib/expat_static.dsp | 162 - .../node-expat/deps/libexpat/lib/expatw.dsp | 185 - .../deps/libexpat/lib/expatw_static.dsp | 162 - .../node-expat/deps/libexpat/lib/iasciitab.h | 37 - .../node-expat/deps/libexpat/lib/internal.h | 73 - .../node-expat/deps/libexpat/lib/latin1tab.h | 36 - .../node-expat/deps/libexpat/lib/libexpat.def | 73 - .../deps/libexpat/lib/libexpatw.def | 73 - .../node-expat/deps/libexpat/lib/macconfig.h | 53 - .../node-expat/deps/libexpat/lib/nametab.h | 150 - .../node-expat/deps/libexpat/lib/utf8tab.h | 37 - .../node-expat/deps/libexpat/lib/winconfig.h | 30 - .../node-expat/deps/libexpat/lib/xmlparse.c | 6403 --- .../node-expat/deps/libexpat/lib/xmlrole.c | 1336 - .../node-expat/deps/libexpat/lib/xmlrole.h | 114 - .../node-expat/deps/libexpat/lib/xmltok.c | 1651 - .../node-expat/deps/libexpat/lib/xmltok.h | 316 - .../deps/libexpat/lib/xmltok_impl.c | 1783 - .../deps/libexpat/lib/xmltok_impl.h | 46 - .../node-expat/deps/libexpat/lib/xmltok_ns.c | 115 - .../node-expat/deps/libexpat/libexpat.gyp | 84 - .../node-expat/deps/libexpat/m4/libtool.m4 | 7851 --- .../node-expat/deps/libexpat/m4/ltoptions.m4 | 369 - .../node-expat/deps/libexpat/m4/ltsugar.m4 | 123 - .../node-expat/deps/libexpat/m4/ltversion.m4 | 23 - .../deps/libexpat/m4/lt~obsolete.m4 | 98 - .../node-expat/deps/libexpat/tests/README.txt | 13 - .../deps/libexpat/tests/benchmark/README.txt | 16 - .../deps/libexpat/tests/benchmark/benchmark.c | 114 - .../libexpat/tests/benchmark/benchmark.dsp | 88 - .../libexpat/tests/benchmark/benchmark.dsw | 44 - .../node-expat/deps/libexpat/tests/chardata.c | 131 - .../node-expat/deps/libexpat/tests/chardata.h | 40 - .../deps/libexpat/tests/minicheck.c | 182 - .../deps/libexpat/tests/minicheck.h | 90 - .../node-expat/deps/libexpat/tests/runtests.c | 1515 - .../deps/libexpat/tests/runtestspp.cpp | 6 - .../node-expat/deps/libexpat/tests/xmltest.sh | 142 - .../node-expat/deps/libexpat/version.c | 9 - .../node-expat/deps/libexpat/vms/README.vms | 23 - .../node-expat/deps/libexpat/vms/descrip.mms | 70 - .../deps/libexpat/vms/expat_config.h | 52 - .../deps/libexpat/win32/MANIFEST.txt | 27 - .../node-expat/deps/libexpat/win32/README.txt | 80 - .../node-expat/deps/libexpat/win32/expat.iss | 69 - .../node-expat/deps/libexpat/xmlwf/codepage.c | 68 - .../node-expat/deps/libexpat/xmlwf/codepage.h | 6 - .../node-expat/deps/libexpat/xmlwf/ct.c | 147 - .../node-expat/deps/libexpat/xmlwf/filemap.h | 17 - .../deps/libexpat/xmlwf/readfilemap.c | 100 - .../deps/libexpat/xmlwf/unixfilemap.c | 65 - .../deps/libexpat/xmlwf/win32filemap.c | 96 - .../node-expat/deps/libexpat/xmlwf/xmlfile.c | 244 - .../node-expat/deps/libexpat/xmlwf/xmlfile.h | 20 - .../node-expat/deps/libexpat/xmlwf/xmlmime.c | 163 - .../node-expat/deps/libexpat/xmlwf/xmlmime.h | 19 - .../node-expat/deps/libexpat/xmlwf/xmltchar.h | 36 - .../node-expat/deps/libexpat/xmlwf/xmlurl.h | 13 - .../node-expat/deps/libexpat/xmlwf/xmlwf.c | 861 - .../node-expat/deps/libexpat/xmlwf/xmlwf.dsp | 139 - .../deps/libexpat/xmlwf/xmlwin32url.cxx | 395 - .../node_modules/node-expat/lib/node-expat.js | 101 - .../node_modules/node-expat/node-expat.cc | 448 - .../node_modules/node-expat/package.json | 88 - .../node-expat/test-mystic-library.xml | 42160 ---------------- .../xml2json/node_modules/node-expat/test.js | 345 - node_modules/xml2json/package.json | 31 - node_modules/xml2json/test/.npmignore | 1 - node_modules/xml2json/test/coerce-overhead.js | 20 - .../xml2json/test/fixtures/coerce.json | 1 - .../xml2json/test/fixtures/coerce.xml | 30 - .../test/fixtures/domain-reversible.json | 1 - .../xml2json/test/fixtures/domain.json | 1 - .../xml2json/test/fixtures/domain.xml | 1 - .../xml2json/test/fixtures/large.json | 1 - node_modules/xml2json/test/fixtures/large.xml | 1132 - .../xml2json/test/fixtures/reorder.json | 1 - .../xml2json/test/fixtures/reorder.xml | 1 - .../xml2json/test/fixtures/spacetext.json | 1 - .../xml2json/test/fixtures/spacetext.xml | 14 - node_modules/xml2json/test/test-coerce.js | 22 - node_modules/xml2json/test/test-reorder.js | 18 - node_modules/xml2json/test/test-space.js | 25 - node_modules/xml2json/test/test.js | 62 - 675 files changed, 9 insertions(+), 170618 deletions(-) delete mode 120000 node_modules/.bin/nodeunit delete mode 100644 node_modules/nodeunit/.npmignore delete mode 100644 node_modules/nodeunit/CONTRIBUTORS.md delete mode 100644 node_modules/nodeunit/LICENSE delete mode 100644 node_modules/nodeunit/Makefile delete mode 100644 node_modules/nodeunit/README.md delete mode 100755 node_modules/nodeunit/bin/nodeunit delete mode 100644 node_modules/nodeunit/bin/nodeunit.json delete mode 100644 node_modules/nodeunit/deps/async.js delete mode 100644 node_modules/nodeunit/deps/console.log.js delete mode 100644 node_modules/nodeunit/deps/ejs/History.md delete mode 100644 node_modules/nodeunit/deps/ejs/Makefile delete mode 100644 node_modules/nodeunit/deps/ejs/Readme.md delete mode 100644 node_modules/nodeunit/deps/ejs/benchmark.js delete mode 100644 node_modules/nodeunit/deps/ejs/ejs.js delete mode 100644 node_modules/nodeunit/deps/ejs/ejs.min.js delete mode 100644 node_modules/nodeunit/deps/ejs/examples/client.html delete mode 100644 node_modules/nodeunit/deps/ejs/examples/list.ejs delete mode 100644 node_modules/nodeunit/deps/ejs/examples/list.js delete mode 100644 node_modules/nodeunit/deps/ejs/index.js delete mode 100644 node_modules/nodeunit/deps/ejs/lib/ejs.js delete mode 100644 node_modules/nodeunit/deps/ejs/lib/filters.js delete mode 100644 node_modules/nodeunit/deps/ejs/lib/utils.js delete mode 100644 node_modules/nodeunit/deps/ejs/package.json delete mode 100644 node_modules/nodeunit/deps/ejs/support/compile.js delete mode 100644 node_modules/nodeunit/deps/ejs/test/ejs.test.js delete mode 100644 node_modules/nodeunit/deps/json2.js delete mode 100644 node_modules/nodeunit/doc/nodeunit.md delete mode 100644 node_modules/nodeunit/examples/browser/nodeunit.js delete mode 100644 node_modules/nodeunit/examples/browser/suite1.js delete mode 100644 node_modules/nodeunit/examples/browser/suite2.js delete mode 100644 node_modules/nodeunit/examples/browser/suite3.js delete mode 100644 node_modules/nodeunit/examples/browser/test.html delete mode 100644 node_modules/nodeunit/examples/nested/nested_reporter_test.unit.js delete mode 100644 node_modules/nodeunit/img/example_fail.png delete mode 100644 node_modules/nodeunit/img/example_machineout.png delete mode 100644 node_modules/nodeunit/img/example_pass.png delete mode 100644 node_modules/nodeunit/index.js delete mode 100644 node_modules/nodeunit/lib/assert.js delete mode 100644 node_modules/nodeunit/lib/core.js delete mode 100644 node_modules/nodeunit/lib/nodeunit.js delete mode 100644 node_modules/nodeunit/lib/reporters/browser.js delete mode 100644 node_modules/nodeunit/lib/reporters/default.js delete mode 100644 node_modules/nodeunit/lib/reporters/eclipse.js delete mode 100644 node_modules/nodeunit/lib/reporters/html.js delete mode 100644 node_modules/nodeunit/lib/reporters/index.js delete mode 100644 node_modules/nodeunit/lib/reporters/junit.js delete mode 100644 node_modules/nodeunit/lib/reporters/machineout.js delete mode 100644 node_modules/nodeunit/lib/reporters/minimal.js delete mode 100644 node_modules/nodeunit/lib/reporters/nested.js delete mode 100644 node_modules/nodeunit/lib/reporters/skip_passed.js delete mode 100644 node_modules/nodeunit/lib/reporters/tap.js delete mode 100644 node_modules/nodeunit/lib/reporters/verbose.js delete mode 100644 node_modules/nodeunit/lib/track.js delete mode 100644 node_modules/nodeunit/lib/types.js delete mode 100644 node_modules/nodeunit/lib/utils.js delete mode 100644 node_modules/nodeunit/man1/nodeunit.1 delete mode 120000 node_modules/nodeunit/node_modules/.bin/tap delete mode 100644 node_modules/nodeunit/node_modules/tap/.npmignore delete mode 100644 node_modules/nodeunit/node_modules/tap/AUTHORS delete mode 100644 node_modules/nodeunit/node_modules/tap/LICENSE delete mode 100644 node_modules/nodeunit/node_modules/tap/README.md delete mode 100644 node_modules/nodeunit/node_modules/tap/bin/tap-http.js delete mode 100755 node_modules/nodeunit/node_modules/tap/bin/tap-reader.js delete mode 100755 node_modules/nodeunit/node_modules/tap/bin/tap.js delete mode 100644 node_modules/nodeunit/node_modules/tap/coverage-example/lib/bar.js delete mode 100644 node_modules/nodeunit/node_modules/tap/coverage-example/lib/foo.js delete mode 100644 node_modules/nodeunit/node_modules/tap/coverage-example/test/bar.test.js delete mode 100644 node_modules/nodeunit/node_modules/tap/coverage-example/test/baz.test.js delete mode 100644 node_modules/nodeunit/node_modules/tap/coverage-example/test/foo.test.js delete mode 100644 node_modules/nodeunit/node_modules/tap/example/lib/math.js delete mode 100644 node_modules/nodeunit/node_modules/tap/example/test/test-example.js delete mode 100644 node_modules/nodeunit/node_modules/tap/lib/main.js delete mode 100644 node_modules/nodeunit/node_modules/tap/lib/tap-assert.js delete mode 100644 node_modules/nodeunit/node_modules/tap/lib/tap-browser-harness.js delete mode 100644 node_modules/nodeunit/node_modules/tap/lib/tap-consumer.js delete mode 100644 node_modules/nodeunit/node_modules/tap/lib/tap-cov-html.js delete mode 100644 node_modules/nodeunit/node_modules/tap/lib/tap-global-harness.js delete mode 100644 node_modules/nodeunit/node_modules/tap/lib/tap-harness.js delete mode 100644 node_modules/nodeunit/node_modules/tap/lib/tap-producer.js delete mode 100644 node_modules/nodeunit/node_modules/tap/lib/tap-results.js delete mode 100644 node_modules/nodeunit/node_modules/tap/lib/tap-runner.js delete mode 100644 node_modules/nodeunit/node_modules/tap/lib/tap-test.js delete mode 120000 node_modules/nodeunit/node_modules/tap/node_modules/.bin/nopt delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/buffer-equal/.travis.yml delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/buffer-equal/README.markdown delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/buffer-equal/example/eq.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/buffer-equal/index.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/buffer-equal/package.json delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/buffer-equal/test/eq.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/deep-equal/README.markdown delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/deep-equal/example/cmp.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/deep-equal/index.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/deep-equal/package.json delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/deep-equal/test/cmp.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/.travis.yml delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/README.markdown delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/example/cmp_array.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/example/cmp_object.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/example/colors.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/example/comma_first.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/example/diff.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/example/html.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/example/string.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/index.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/README.markdown delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/256.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/column.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/cursor.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/http_spin.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/lucky.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/position.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/progress.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/spin.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/index.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/lib/encode.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/package.json delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/.npmignore delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/.travis.yml delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/LICENSE delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/README.markdown delete mode 100755 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/examples/json.js delete mode 100755 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/examples/leaves.js delete mode 100755 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/examples/negative.js delete mode 100755 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/examples/scrub.js delete mode 100755 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/examples/stringify.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/fail.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/index.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/package.json delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/circular.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/date.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/equal.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/error.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/has.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/instance.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/interface.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/json.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/keys.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/leaves.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/lib/deep_equal.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/mutability.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/negative.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/obj.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/siblings.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/stop.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/stringify.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/subexpr.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/super_deep.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/testling/leaves.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/package.json delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/difflet/test/html.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/.npmignore delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/.travis.yml delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/LICENSE delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/README.md delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/examples/g.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/examples/usr-local.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/glob.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/graceful-fs/.npmignore delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/graceful-fs/LICENSE delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/graceful-fs/README.md delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/graceful-fs/graceful-fs.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/graceful-fs/package.json delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/graceful-fs/test/open.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/inherits/README.md delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/inherits/inherits.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/inherits/package.json delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/.travis.yml delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/LICENSE delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/README.md delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/minimatch.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/.npmignore delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/AUTHORS delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/LICENSE delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/README.md delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/package.json delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/basic.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/sigmund/LICENSE delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/sigmund/README.md delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/sigmund/bench.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/sigmund/package.json delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/sigmund/sigmund.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/sigmund/test/basic.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/package.json delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/test/basic.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/test/brace-expand.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/test/caching.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/test/defaults.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/package.json delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/test/00-setup.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/test/bash-comparison.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/test/bash-results.json delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/test/cwd-test.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/test/mark.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/test/pause-resume.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/test/root-nomount.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/test/root.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/glob/test/zz-cleanup.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/inherits/LICENSE delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/inherits/README.md delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/inherits/inherits-old.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/inherits/inherits.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/inherits/package.json delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/.npmignore delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/.travis.yml delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/LICENSE delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/README.markdown delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/examples/pow.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/index.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/package.json delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/chmod.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/clobber.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/mkdirp.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/perm.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/perm_sync.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/race.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/rel.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/return.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/return_sync.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/root.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/sync.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/umask.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/umask_sync.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/nopt/.npmignore delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/nopt/LICENSE delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/nopt/README.md delete mode 100755 node_modules/nodeunit/node_modules/tap/node_modules/nopt/bin/nopt.js delete mode 100755 node_modules/nodeunit/node_modules/tap/node_modules/nopt/examples/my-program.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/nopt/lib/nopt.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/nopt/node_modules/abbrev/LICENSE delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/nopt/node_modules/abbrev/README.md delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/nopt/node_modules/abbrev/lib/abbrev.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/nopt/node_modules/abbrev/package.json delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/nopt/package.json delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/README.markdown delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/index.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/.npmignore delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/.travis.yml delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/README.markdown delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/example/prof.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/example/tiny.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/example/top/run.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/example/top/src.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/index.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/.npmignore delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/.travis.yml delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/README.markdown delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/example/microwave.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/example/web/bs.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/example/web/index.html delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/example/web/main.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/example/web/server.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/example/wrap.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/index.js delete mode 120000 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/.bin/uglifyjs delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/.npmignore delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/LICENSE delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/README.markdown delete mode 100755 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/examples/json.js delete mode 100755 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/examples/leaves.js delete mode 100755 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/examples/negative.js delete mode 100755 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/examples/scrub.js delete mode 100755 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/examples/stringify.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/index.js delete mode 100755 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/main.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/package.json delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/circular.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/date.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/equal.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/instance.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/interface.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/json.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/keys.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/leaves.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/lib/deep_equal.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/mutability.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/negative.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/obj.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/siblings.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/stop.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/stringify.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/subexpr.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/super_deep.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/.npmignore delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/README.html delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/README.org delete mode 100755 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/bin/uglifyjs delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/docstyle.css delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/lib/object-ast.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/lib/parse-js.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/lib/process.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/lib/squeeze-more.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/package.json delete mode 100755 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/beautify.js delete mode 100755 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/testparser.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/array1.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/array2.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/array3.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/array4.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/assignment.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/concatstring.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/const.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/empty-blocks.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/forstatement.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/if.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/ifreturn.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/ifreturn2.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue10.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue11.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue13.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue14.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue16.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue17.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue20.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue21.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue25.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue27.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue28.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue29.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue30.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue34.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue4.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue48.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue50.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue53.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue54.1.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue68.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue69.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue9.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/mangle.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/null_string.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/strict-equals.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/var.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/whitespace.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/with.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/array1.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/array2.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/array3.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/array4.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/assignment.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/concatstring.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/const.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/empty-blocks.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/forstatement.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/if.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/ifreturn.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/ifreturn2.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue10.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue11.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue13.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue14.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue16.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue17.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue20.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue21.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue25.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue27.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue28.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue29.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue30.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue34.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue4.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue48.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue50.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue53.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue54.1.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue68.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue69.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue9.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/mangle.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/null_string.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/strict-equals.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/var.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/whitespace.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/with.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/scripts.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/tmp/hoist.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/tmp/instrument.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/tmp/instrument2.js delete mode 100755 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/tmp/test.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/uglify-js.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/package.json delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/ast.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/err.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/fail.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/fail/src.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/label.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/microwave.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/parent.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/wrap.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/package.json delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/test/cover.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/test/return.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/test/src/cover.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/package.json delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/test/index.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/test/interface.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/runforcover/test/src/coverage.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/slide/README.md delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/slide/index.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/slide/lib/async-map-ordered.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/slide/lib/async-map.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/slide/lib/bind-actor.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/slide/lib/chain.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/slide/lib/slide.js delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/slide/nodejs-controlling-flow.pdf delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/slide/package.json delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/yamlish/LICENSE delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/yamlish/README.md delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/yamlish/package.json delete mode 100644 node_modules/nodeunit/node_modules/tap/node_modules/yamlish/yamlish.js delete mode 100644 node_modules/nodeunit/node_modules/tap/package.json delete mode 100644 node_modules/nodeunit/node_modules/tap/test-disabled/bailout.js delete mode 100644 node_modules/nodeunit/node_modules/tap/test-disabled/foo.js delete mode 100644 node_modules/nodeunit/node_modules/tap/test-disabled/t.js delete mode 100644 node_modules/nodeunit/node_modules/tap/test/buffer_compare.js delete mode 100644 node_modules/nodeunit/node_modules/tap/test/common.js delete mode 100644 node_modules/nodeunit/node_modules/tap/test/deep.js delete mode 100644 node_modules/nodeunit/node_modules/tap/test/end-exception/t.js delete mode 100755 node_modules/nodeunit/node_modules/tap/test/executed.sh delete mode 100644 node_modules/nodeunit/node_modules/tap/test/expose-gc-test.js delete mode 100644 node_modules/nodeunit/node_modules/tap/test/independent-timeouts.js delete mode 100644 node_modules/nodeunit/node_modules/tap/test/isolated-conf-test.js delete mode 100644 node_modules/nodeunit/node_modules/tap/test/meta-test.js delete mode 100644 node_modules/nodeunit/node_modules/tap/test/nested-test.js delete mode 100644 node_modules/nodeunit/node_modules/tap/test/non-tap-output.js delete mode 100644 node_modules/nodeunit/node_modules/tap/test/not-executed.sh delete mode 100644 node_modules/nodeunit/node_modules/tap/test/output-childtest-description.js delete mode 100644 node_modules/nodeunit/node_modules/tap/test/result-trap.js delete mode 100644 node_modules/nodeunit/node_modules/tap/test/segv.js delete mode 100644 node_modules/nodeunit/node_modules/tap/test/simple-harness-test-with-plan.js delete mode 100644 node_modules/nodeunit/node_modules/tap/test/simple-harness-test.js delete mode 100644 node_modules/nodeunit/node_modules/tap/test/test-test.js delete mode 100644 node_modules/nodeunit/node_modules/tap/test/timeout.js delete mode 100644 node_modules/nodeunit/node_modules/tap/test/trivial-success.js delete mode 100644 node_modules/nodeunit/node_modules/tap/test/undefined_indented.js delete mode 100644 node_modules/nodeunit/nodelint.cfg delete mode 100644 node_modules/nodeunit/package.json delete mode 100644 node_modules/nodeunit/share/junit.xml.ejs delete mode 100644 node_modules/nodeunit/share/license.js delete mode 100644 node_modules/nodeunit/share/nodeunit.css delete mode 100644 node_modules/nodeunit/test/fixtures/coffee/mock_coffee_module.coffee delete mode 100644 node_modules/nodeunit/test/fixtures/dir/mock_module3.js delete mode 100644 node_modules/nodeunit/test/fixtures/dir/mock_module4.js delete mode 100644 node_modules/nodeunit/test/fixtures/mock_module1.js delete mode 100644 node_modules/nodeunit/test/fixtures/mock_module2.js delete mode 100644 node_modules/nodeunit/test/fixtures/raw_jscode1.js delete mode 100644 node_modules/nodeunit/test/fixtures/raw_jscode2.js delete mode 100644 node_modules/nodeunit/test/fixtures/raw_jscode3.js delete mode 100644 node_modules/nodeunit/test/test-base.js delete mode 100644 node_modules/nodeunit/test/test-bettererrors.js delete mode 100644 node_modules/nodeunit/test/test-failing-callbacks.js delete mode 100644 node_modules/nodeunit/test/test-httputil.js delete mode 100644 node_modules/nodeunit/test/test-runfiles.js delete mode 100644 node_modules/nodeunit/test/test-runmodule.js delete mode 100644 node_modules/nodeunit/test/test-runtest.js delete mode 100644 node_modules/nodeunit/test/test-sandbox.js delete mode 100644 node_modules/nodeunit/test/test-testcase-legacy.js delete mode 100644 node_modules/nodeunit/test/test-testcase.js delete mode 100644 node_modules/nodeunit/test/test.html delete mode 100644 node_modules/underscore/.npmignore delete mode 100644 node_modules/underscore/.travis.yml delete mode 100644 node_modules/underscore/CNAME delete mode 100644 node_modules/underscore/CONTRIBUTING.md delete mode 100644 node_modules/underscore/LICENSE delete mode 100644 node_modules/underscore/README.md delete mode 100644 node_modules/underscore/favicon.ico delete mode 100644 node_modules/underscore/index.html delete mode 100644 node_modules/underscore/index.js delete mode 100644 node_modules/underscore/package.json delete mode 100644 node_modules/underscore/underscore-min.js delete mode 100644 node_modules/underscore/underscore.js delete mode 100644 node_modules/xml2json/.npmignore delete mode 100644 node_modules/xml2json/README.md delete mode 100644 node_modules/xml2json/index.js delete mode 100644 node_modules/xml2json/lib/index.js delete mode 100644 node_modules/xml2json/lib/json2xml.js delete mode 100644 node_modules/xml2json/lib/xml2json.js delete mode 100644 node_modules/xml2json/node_modules/node-expat/.npmignore delete mode 100644 node_modules/xml2json/node_modules/node-expat/.travis.yml delete mode 100644 node_modules/xml2json/node_modules/node-expat/LICENSE delete mode 100644 node_modules/xml2json/node_modules/node-expat/README.markdown delete mode 100644 node_modules/xml2json/node_modules/node-expat/bench.js delete mode 100644 node_modules/xml2json/node_modules/node-expat/binding.gyp delete mode 100644 node_modules/xml2json/node_modules/node-expat/build/Makefile delete mode 100644 node_modules/xml2json/node_modules/node-expat/build/Release/.deps/Release/libexpat.a.d delete mode 100644 node_modules/xml2json/node_modules/node-expat/build/Release/.deps/Release/node_expat.node.d delete mode 100644 node_modules/xml2json/node_modules/node-expat/build/Release/.deps/Release/obj.target/expat/deps/libexpat/lib/xmlparse.o.d delete mode 100644 node_modules/xml2json/node_modules/node-expat/build/Release/.deps/Release/obj.target/expat/deps/libexpat/lib/xmlrole.o.d delete mode 100644 node_modules/xml2json/node_modules/node-expat/build/Release/.deps/Release/obj.target/expat/deps/libexpat/lib/xmltok.o.d delete mode 100644 node_modules/xml2json/node_modules/node-expat/build/Release/.deps/Release/obj.target/node_expat/node-expat.o.d delete mode 100644 node_modules/xml2json/node_modules/node-expat/build/Release/libexpat.a delete mode 100644 node_modules/xml2json/node_modules/node-expat/build/Release/linker.lock delete mode 100755 node_modules/xml2json/node_modules/node-expat/build/Release/node_expat.node delete mode 100644 node_modules/xml2json/node_modules/node-expat/build/Release/obj.target/expat/deps/libexpat/lib/xmlparse.o delete mode 100644 node_modules/xml2json/node_modules/node-expat/build/Release/obj.target/expat/deps/libexpat/lib/xmlrole.o delete mode 100644 node_modules/xml2json/node_modules/node-expat/build/Release/obj.target/expat/deps/libexpat/lib/xmltok.o delete mode 100644 node_modules/xml2json/node_modules/node-expat/build/Release/obj.target/node_expat/node-expat.o delete mode 100644 node_modules/xml2json/node_modules/node-expat/build/binding.Makefile delete mode 100644 node_modules/xml2json/node_modules/node-expat/build/config.gypi delete mode 100644 node_modules/xml2json/node_modules/node-expat/build/deps/libexpat/expat.target.mk delete mode 100644 node_modules/xml2json/node_modules/node-expat/build/deps/libexpat/libexpat.Makefile delete mode 100644 node_modules/xml2json/node_modules/node-expat/build/deps/libexpat/version.target.mk delete mode 100755 node_modules/xml2json/node_modules/node-expat/build/gyp-mac-tool delete mode 100644 node_modules/xml2json/node_modules/node-expat/build/node_expat.target.mk delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/CMake.README delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/CMakeLists.txt delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/COPYING delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/Changes delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/ConfigureChecks.cmake delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/MANIFEST delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/Makefile.in delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/README delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/aclocal.m4 delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/Makefile delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/README.txt delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/expat.xml delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/expat_68k.c delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/expat_68k.h delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/expat_68k_handler_stubs.c delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/expat_base.h delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/expat_lib.c delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/expat_vectors.c delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/include/inline4/expat.h delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/include/interfaces/expat.h delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/include/libraries/expat.h delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/include/proto/expat.h delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/launch.c delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/README.txt delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/all_projects.bpg delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/elements.bpf delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/elements.bpr delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/elements.mak delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expat.bpf delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expat.bpr delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expat.mak delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expat_static.bpf delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expat_static.bpr delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expat_static.mak delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expatw.bpf delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expatw.bpr delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expatw.mak delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expatw_static.bpf delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expatw_static.bpr delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expatw_static.mak delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/libexpat_mtd.def delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/libexpatw_mtd.def delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/makefile.mak delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/outline.bpf delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/outline.bpr delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/outline.mak delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/setup.bat delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/xmlwf.bpf delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/xmlwf.bpr delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/xmlwf.mak delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/configure delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/configure.in delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/PrintPath delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/ac_c_bigendian_cross.m4 delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/config.guess delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/config.sub delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/expat.m4 delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/get-version.sh delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/install-sh delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/ltmain.sh delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/mkinstalldirs delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/doc/expat.png delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/doc/reference.html delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/doc/style.css delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/doc/valid-xhtml10.png delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/doc/xmlwf.1 delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/doc/xmlwf.sgml delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/examples/elements.c delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/examples/elements.dsp delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/examples/outline.c delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/examples/outline.dsp delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/expat.dsw delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/expat.pc.in delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/expat_config.h delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/expat_config.h.cmake delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/expat_config.h.in delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/Makefile.MPW delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/amigaconfig.h delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/ascii.h delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/asciitab.h delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/expat.dsp delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/expat.h delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/expat_external.h delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/expat_static.dsp delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/expatw.dsp delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/expatw_static.dsp delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/iasciitab.h delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/internal.h delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/latin1tab.h delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/libexpat.def delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/libexpatw.def delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/macconfig.h delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/nametab.h delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/utf8tab.h delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/winconfig.h delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmlparse.c delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmlrole.c delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmlrole.h delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmltok.c delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmltok.h delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmltok_impl.c delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmltok_impl.h delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmltok_ns.c delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/libexpat.gyp delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/m4/libtool.m4 delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/m4/ltoptions.m4 delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/m4/ltsugar.m4 delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/m4/ltversion.m4 delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/m4/lt~obsolete.m4 delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/README.txt delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/benchmark/README.txt delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/benchmark/benchmark.c delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/benchmark/benchmark.dsp delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/benchmark/benchmark.dsw delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/chardata.c delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/chardata.h delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/minicheck.c delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/minicheck.h delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/runtests.c delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/runtestspp.cpp delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/xmltest.sh delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/version.c delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/vms/README.vms delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/vms/descrip.mms delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/vms/expat_config.h delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/win32/MANIFEST.txt delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/win32/README.txt delete mode 100644 node_modules/xml2json/node_modules/node-expat/deps/libexpat/win32/expat.iss delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/codepage.c delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/codepage.h delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/ct.c delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/filemap.h delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/readfilemap.c delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/unixfilemap.c delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/win32filemap.c delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlfile.c delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlfile.h delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlmime.c delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlmime.h delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmltchar.h delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlurl.h delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlwf.c delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlwf.dsp delete mode 100755 node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlwin32url.cxx delete mode 100644 node_modules/xml2json/node_modules/node-expat/lib/node-expat.js delete mode 100644 node_modules/xml2json/node_modules/node-expat/node-expat.cc delete mode 100644 node_modules/xml2json/node_modules/node-expat/package.json delete mode 100644 node_modules/xml2json/node_modules/node-expat/test-mystic-library.xml delete mode 100644 node_modules/xml2json/node_modules/node-expat/test.js delete mode 100644 node_modules/xml2json/package.json delete mode 100644 node_modules/xml2json/test/.npmignore delete mode 100644 node_modules/xml2json/test/coerce-overhead.js delete mode 100644 node_modules/xml2json/test/fixtures/coerce.json delete mode 100644 node_modules/xml2json/test/fixtures/coerce.xml delete mode 100644 node_modules/xml2json/test/fixtures/domain-reversible.json delete mode 100644 node_modules/xml2json/test/fixtures/domain.json delete mode 100644 node_modules/xml2json/test/fixtures/domain.xml delete mode 100644 node_modules/xml2json/test/fixtures/large.json delete mode 100644 node_modules/xml2json/test/fixtures/large.xml delete mode 100644 node_modules/xml2json/test/fixtures/reorder.json delete mode 100644 node_modules/xml2json/test/fixtures/reorder.xml delete mode 100644 node_modules/xml2json/test/fixtures/spacetext.json delete mode 100644 node_modules/xml2json/test/fixtures/spacetext.xml delete mode 100644 node_modules/xml2json/test/test-coerce.js delete mode 100644 node_modules/xml2json/test/test-reorder.js delete mode 100644 node_modules/xml2json/test/test-space.js delete mode 100644 node_modules/xml2json/test/test.js diff --git a/.gitignore b/.gitignore index 1279ff3..310c5f0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ +node_modules* test/test-credentials.js -npm-debug.log \ No newline at end of file +npm-debug.log diff --git a/lib/client.js b/lib/client.js index 56d1e71..be10ca5 100644 --- a/lib/client.js +++ b/lib/client.js @@ -6,7 +6,7 @@ var crypto = require("crypto"), http = require("https"), p = Client.prototype; -p.init = function(username, sharedSecret, environment, options){ +p.init = function(username, sharedSecret, environment, options){ this.environments = { sanJose: "api.omniture.com", dallas: "api2.omniture.com", @@ -20,7 +20,7 @@ p.init = function(username, sharedSecret, environment, options){ this.environment = (environment) ? this.environments[environment] : this.environments.sanJose; this.nonce = null; this.created = null; - this.version = +((options && options.version) || 1.3); + this.version = +((options && options.version) || 1.4); this.path = "/admin/" + this.version + "/rest/"; this.log = (options && options.log) ? true : false; this.proxy = options.proxy; @@ -72,18 +72,18 @@ p.sendRequest = function(method, parameters, callback){ agent: false }; if(self.proxy) - options.proxy = self.proxy; + options.proxy = self.proxy; var request = require("request").defaults(options); - request.post({url:"http://"+ this.environment+this.path+"?method="+method, form: parameters}, function (error, response, body) { + request.post({url:"https://"+ this.environment+this.path+"?method="+method, form: parameters}, function (error, response, body) { if (error || response.statusCode != 200) { - callback(new Error(error)); + callback(new Error(error || body)); return; - } + } self.logger("info","HTTP Request Successful"); var responseData = ""; self.logger("info", "API Request Finished"); callback(null,body); - }) + }); } p.generateNonce = function(){ diff --git a/node_modules/.bin/nodeunit b/node_modules/.bin/nodeunit deleted file mode 120000 index f31cdbe..0000000 --- a/node_modules/.bin/nodeunit +++ /dev/null @@ -1 +0,0 @@ -../nodeunit/bin/nodeunit \ No newline at end of file diff --git a/node_modules/nodeunit/.npmignore b/node_modules/nodeunit/.npmignore deleted file mode 100644 index 1a82501..0000000 --- a/node_modules/nodeunit/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -dist -stamp-build -test/fixtures/dir2 diff --git a/node_modules/nodeunit/CONTRIBUTORS.md b/node_modules/nodeunit/CONTRIBUTORS.md deleted file mode 100644 index fba3609..0000000 --- a/node_modules/nodeunit/CONTRIBUTORS.md +++ /dev/null @@ -1,68 +0,0 @@ -Nodeunit contributors (sorted alphabeticaly) -============================================ - -* **[Alex Gorbatchev](https://github.com/alexgorbatchev)** - - * Deeper default object inspection - * Timeout to ensure flushing of console output (default reporter) - -* **[Alex Wolfe](https://github.com/alexkwolfe)** - - * HTML test reporter - -* **[Caolan McMahon](https://github.com/caolan)** - - * Author and maintainer - * Most features develpopment - -* **[Carl Fürstenberg](https://github.com/azatoth)** - - * Debian-friendly Makefile, supports both 'node' and 'nodejs' executables - * Sandbox utility - * Minimal test reporter - -* **[Gerad Suyderhoud](https://github.com/gerad)** - - * First comand-line tool - -* **[Kadir Pekel](https://github.com/kadirpekel)** - - * Improvements to default test reporter - * HTTP test utility - -* **[Λlisue](https://github.com/lambdalisue)** - - * Add machineout reporter - -* **[Matthias Lübken](https://github.com/luebken)** - - * Utility functions for tracking incomplete tests on exit - -* **[Oleg Efimov](https://github.com/Sannis)** - - * Adding 'make lint' and fixing nodelint errors - * Option parsing, --help text and config file support - * Reporters option for command-line tool - -* **[Orlando Vazquez](https://github.com/orlandov)** - - * Added jUnit XML reporter - -* **[Ryan Dahl](https://github.com/ry)** - - * Add package.json - -* **[Sam Stephenson](https://github.com/sstephenson)** - - * Coffee-script support - -* **[Thomas Mayfield](https://github.com/thegreatape)** - - * Async setUp and tearDown support for testCase - -* **[Maciej Małecki](https://github.com/mmalecki)** - - * Removal of `testCase` - -**[Full contributors list](https://github.com/caolan/nodeunit/contributors).** - diff --git a/node_modules/nodeunit/LICENSE b/node_modules/nodeunit/LICENSE deleted file mode 100644 index b7f9d50..0000000 --- a/node_modules/nodeunit/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2010 Caolan McMahon - -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: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -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. diff --git a/node_modules/nodeunit/Makefile b/node_modules/nodeunit/Makefile deleted file mode 100644 index 8f8d8cb..0000000 --- a/node_modules/nodeunit/Makefile +++ /dev/null @@ -1,177 +0,0 @@ -PACKAGE = nodeunit -NODEJS = $(if $(shell test -f /usr/bin/nodejs && echo "true"),nodejs,node) - -PREFIX ?= /usr/local -BINDIR ?= $(PREFIX)/bin -DATADIR ?= $(PREFIX)/share -MANDIR ?= $(PREFIX)/share/man -LIBDIR ?= $(PREFIX)/lib -NODEJSLIBDIR ?= $(LIBDIR)/$(NODEJS) - -BUILDDIR = dist - -DOCS = $(shell find doc -name '*.md' \ - |sed 's|.md|.1|g' \ - |sed 's|doc/|man1/|g' \ - ) - - -$(shell if [ ! -d $(BUILDDIR) ]; then mkdir $(BUILDDIR); fi) - -all: build doc - -browser: - # super hacky build script for browser version! - mkdir -p $(BUILDDIR)/browser - rm -rf $(BUILDDIR)/browser/* - # build browser version of nodeunit.js - cat share/license.js >> $(BUILDDIR)/browser/nodeunit.js - echo "nodeunit = (function(){" >> $(BUILDDIR)/browser/nodeunit.js - cat deps/json2.js >> $(BUILDDIR)/browser/nodeunit.js - # make assert global - echo "var assert = this.assert = {};" >> $(BUILDDIR)/browser/nodeunit.js - echo "var types = {};" >> $(BUILDDIR)/browser/nodeunit.js - echo "var core = {};" >> $(BUILDDIR)/browser/nodeunit.js - echo "var nodeunit = {};" >> $(BUILDDIR)/browser/nodeunit.js - echo "var reporter = {};" >> $(BUILDDIR)/browser/nodeunit.js - cat deps/async.js >> $(BUILDDIR)/browser/nodeunit.js - echo "(function(exports){" >> $(BUILDDIR)/browser/nodeunit.js - cat lib/assert.js >> $(BUILDDIR)/browser/nodeunit.js - echo "})(assert);" >> $(BUILDDIR)/browser/nodeunit.js - echo "(function(exports){" >> $(BUILDDIR)/browser/nodeunit.js - cat lib/types.js >> $(BUILDDIR)/browser/nodeunit.js - echo "})(types);" >> $(BUILDDIR)/browser/nodeunit.js - echo "(function(exports){" >> $(BUILDDIR)/browser/nodeunit.js - cat lib/core.js >> $(BUILDDIR)/browser/nodeunit.js - echo "})(core);" >> $(BUILDDIR)/browser/nodeunit.js - echo "(function(exports){" >> $(BUILDDIR)/browser/nodeunit.js - cat lib/reporters/browser.js >> $(BUILDDIR)/browser/nodeunit.js - echo "})(reporter);" >> $(BUILDDIR)/browser/nodeunit.js - echo "nodeunit = core;" >> $(BUILDDIR)/browser/nodeunit.js - echo "nodeunit.assert = assert;" >> $(BUILDDIR)/browser/nodeunit.js - echo "nodeunit.reporter = reporter;" >> $(BUILDDIR)/browser/nodeunit.js - echo "nodeunit.run = reporter.run;" >> $(BUILDDIR)/browser/nodeunit.js - echo "return nodeunit; })();" >> $(BUILDDIR)/browser/nodeunit.js - cp $(BUILDDIR)/browser/nodeunit.js $(BUILDDIR)/browser/.nodeunit.js - sed "/\@REMOVE_LINE_FOR_BROWSER/d" <$(BUILDDIR)/browser/.nodeunit.js > $(BUILDDIR)/browser/nodeunit.js - rm $(BUILDDIR)/browser/.nodeunit.js - # copy nodeunit.css - cp share/nodeunit.css $(BUILDDIR)/browser/nodeunit.css - # create nodeunit.min.js - node_modules/uglify-js/bin/uglifyjs $(BUILDDIR)/browser/nodeunit.js > $(BUILDDIR)/browser/nodeunit.min.js - # create test scripts - mkdir -p $(BUILDDIR)/browser/test - cp test/test.html $(BUILDDIR)/browser/test/test.html - # test-base.js - echo "(function (exports) {" > $(BUILDDIR)/browser/test/test-base.js - cat test/test-base.js >> $(BUILDDIR)/browser/test/test-base.js - echo "})(this.test_base = {});" >> $(BUILDDIR)/browser/test/test-base.js - cp $(BUILDDIR)/browser/test/test-base.js $(BUILDDIR)/browser/.test-base.js - sed "/\@REMOVE_LINE_FOR_BROWSER/d" <$(BUILDDIR)/browser/.test-base.js > $(BUILDDIR)/browser/test/test-base.js - rm $(BUILDDIR)/browser/.test-base.js - # test-runmodule.js - echo "(function (exports) {" > $(BUILDDIR)/browser/test/test-runmodule.js - cat test/test-runmodule.js >> $(BUILDDIR)/browser/test/test-runmodule.js - echo "})(this.test_runmodule = {});" >> $(BUILDDIR)/browser/test/test-runmodule.js - cp $(BUILDDIR)/browser/test/test-runmodule.js $(BUILDDIR)/browser/.test-runmodule.js - sed "/\@REMOVE_LINE_FOR_BROWSER/d" <$(BUILDDIR)/browser/.test-runmodule.js > $(BUILDDIR)/browser/test/test-runmodule.js - rm $(BUILDDIR)/browser/.test-runmodule.js - # test-runtest.js - echo "(function (exports) {" > $(BUILDDIR)/browser/test/test-runtest.js - cat test/test-runtest.js >> $(BUILDDIR)/browser/test/test-runtest.js - echo "})(this.test_runtest = {});" >> $(BUILDDIR)/browser/test/test-runtest.js - cp $(BUILDDIR)/browser/test/test-runtest.js $(BUILDDIR)/browser/.test-runtest.js - sed "/\@REMOVE_LINE_FOR_BROWSER/d" <$(BUILDDIR)/browser/.test-runtest.js > $(BUILDDIR)/browser/test/test-runtest.js - rm $(BUILDDIR)/browser/.test-runtest.js - # test-testcase.js - echo "(function (exports) {" > $(BUILDDIR)/browser/test/test-testcase.js - cat test/test-testcase.js >> $(BUILDDIR)/browser/test/test-testcase.js - echo "})(this.test_testcase = {});" >> $(BUILDDIR)/browser/test/test-testcase.js - cp $(BUILDDIR)/browser/test/test-testcase.js $(BUILDDIR)/browser/.test-testcase.js - sed "/\@REMOVE_LINE_FOR_BROWSER/d" <$(BUILDDIR)/browser/.test-testcase.js > $(BUILDDIR)/browser/test/test-testcase.js - rm $(BUILDDIR)/browser/.test-testcase.js - # test-testcase-legacy.js - echo "(function (exports) {" > $(BUILDDIR)/browser/test/test-testcase-legacy.js - cat test/test-testcase-legacy.js >> $(BUILDDIR)/browser/test/test-testcase-legacy.js - echo "})(this.test_testcase_legacy = {});" >> $(BUILDDIR)/browser/test/test-testcase-legacy.js - cp $(BUILDDIR)/browser/test/test-testcase-legacy.js $(BUILDDIR)/browser/.test-testcase-legacy.js - sed "/\@REMOVE_LINE_FOR_BROWSER/d" <$(BUILDDIR)/browser/.test-testcase-legacy.js > $(BUILDDIR)/browser/test/test-testcase-legacy.js - rm $(BUILDDIR)/browser/.test-testcase-legacy.js - # copy nodeunit.js to dist/browser/test to make it easier for me to host and - # run on windows VMs with IE - cp $(BUILDDIR)/browser/nodeunit.js $(BUILDDIR)/browser/test/nodeunit.js - cp $(BUILDDIR)/browser/nodeunit.css $(BUILDDIR)/browser/test/nodeunit.css - -commonjs: - # super hacky build script for browser commonjs version! - ##### make commonjs browser module ###### - mkdir -p $(BUILDDIR)/commonjs - rm -rf $(BUILDDIR)/commonjs/* - mkdir -p $(BUILDDIR)/commonjs/deps - cp deps/json2.js $(BUILDDIR)/commonjs/deps - cp deps/async.js $(BUILDDIR)/commonjs/deps - echo "var async = require('async');" >> $(BUILDDIR)/commonjs/nodeunit.js - echo "var assert = {};" >> $(BUILDDIR)/commonjs/nodeunit.js - echo "var types = {};" >> $(BUILDDIR)/commonjs/nodeunit.js - echo "var core = {};" >> $(BUILDDIR)/commonjs/nodeunit.js - echo "var nodeunit = {};" >> $(BUILDDIR)/commonjs/nodeunit.js - echo "var reporter = {};" >> $(BUILDDIR)/commonjs/nodeunit.js - echo "(function(exports){" >> $(BUILDDIR)/commonjs/nodeunit.js - cat lib/assert.js >> $(BUILDDIR)/commonjs/nodeunit.js - echo "})(assert);" >> $(BUILDDIR)/commonjs/nodeunit.js - echo "(function(exports){" >> $(BUILDDIR)/commonjs/nodeunit.js - cat lib/types.js >> $(BUILDDIR)/commonjs/nodeunit.js - echo "})(types);" >> $(BUILDDIR)/commonjs/nodeunit.js - echo "(function(exports){" >> $(BUILDDIR)/commonjs/nodeunit.js - cat lib/core.js >> $(BUILDDIR)/commonjs/nodeunit.js - echo "})(core);" >> $(BUILDDIR)/commonjs/nodeunit.js - echo "module.exports = core;" >> $(BUILDDIR)/commonjs/nodeunit.js - echo "(function(exports, nodeunit){" >> $(BUILDDIR)/commonjs/nodeunit.js - cat lib/reporters/browser.js >> $(BUILDDIR)/commonjs/nodeunit.js - echo "})(reporter, module.exports);" >> $(BUILDDIR)/commonjs/nodeunit.js - echo "module.exports.assert = assert;" >> $(BUILDDIR)/commonjs/nodeunit.js - echo "module.exports.reporter = reporter;" >> $(BUILDDIR)/commonjs/nodeunit.js - echo "module.exports.run = reporter.run;" >> $(BUILDDIR)/commonjs/nodeunit.js - sed -i "/\@REMOVE_LINE_FOR_BROWSER/d" $(BUILDDIR)/commonjs/nodeunit.js - sed -i "/\@REMOVE_LINE_FOR_COMMONJS/d" $(BUILDDIR)/commonjs/nodeunit.js - ##### end of commonjs browser module ##### - -build: stamp-build - -stamp-build: $(wildcard deps/* lib/*.js) - touch $@; - mkdir -p $(BUILDDIR)/nodeunit - cp -R bin node_modules deps index.js lib package.json share $(BUILDDIR)/nodeunit - printf '#!/bin/sh\n$(NODEJS) $(NODEJSLIBDIR)/$(PACKAGE)/bin/nodeunit $$@' > $(BUILDDIR)/nodeunit.sh - -test: - $(NODEJS) ./bin/nodeunit test - -install: build - install -d $(NODEJSLIBDIR) - cp -a $(BUILDDIR)/nodeunit $(NODEJSLIBDIR) - install -m 0755 $(BUILDDIR)/nodeunit.sh $(BINDIR)/nodeunit - install -d $(MANDIR)/man1/ - cp -a man1/nodeunit.1 $(MANDIR)/man1/ - -uninstall: - rm -rf $(NODEJSLIBDIR)/nodeunit $(NODEJSLIBDIR)/nodeunit.js $(BINDIR)/nodeunit - rm -rf $(MANDIR)/man1/nodeunit.1 - -clean: - rm -rf $(BUILDDIR) stamp-build - -lint: - nodelint --config nodelint.cfg ./index.js ./bin/nodeunit ./bin/nodeunit.json ./lib/*.js ./lib/reporters/*.js ./test/*.js - -doc: man1 $(DOCS) - @true - -man1: - @if ! test -d man1 ; then mkdir -p man1 ; fi - -# use `npm install ronn` for this to work. -man1/%.1: doc/%.md - ronn --roff $< > $@ - -.PHONY: browser test install uninstall build all diff --git a/node_modules/nodeunit/README.md b/node_modules/nodeunit/README.md deleted file mode 100644 index 359a9c7..0000000 --- a/node_modules/nodeunit/README.md +++ /dev/null @@ -1,443 +0,0 @@ -Nodeunit -======== - -Simple syntax, powerful tools. Nodeunit provides easy async unit testing for -node.js and the browser. - -* Simple to use -* Just export the tests from a module -* Works with node.js and in the browser. -* Helps you avoid common pitfalls when testing asynchronous code -* Easy to add test cases with setUp and tearDown functions if you wish -* Flexible reporters for custom output, built-in support for HTML and jUnit XML -* Allows the use of mocks and stubs - -__Contributors__ - -* [alexgorbatchev](https://github.com/alexgorbatchev) -* [alexkwolfe](https://github.com/alexkwolfe) -* [azatoth](https://github.com/azatoth) -* [kadirpekel](https://github.com/kadirpekel) -* [lambdalisue](https://github.com/lambdalisue) -* [luebken](https://github.com/luebken) -* [orlandov](https://github.com/orlandov) -* [Sannis](https://github.com/Sannis) -* [sstephenson](https://github.com/sstephenson) -* [thegreatape](https://github.com/thegreatape) -* [mmalecki](https://github.com/mmalecki) -* and thanks to [cjohansen](https://github.com/cjohansen) for input and advice - on implementing setUp and tearDown functions. See - [cjohansen's fork](https://github.com/cjohansen/nodeunit). - -Also, check out gerad's [nodeunit-dsl](https://github.com/gerad/nodeunit-dsl) -project, which implements a 'pretty dsl on top of nodeunit'. - -More contributor information can be found in the -[CONTRIBUTORS.md](https://github.com/caolan/nodeunit/blob/master/CONTRIBUTORS.md) -file. - -Usage ------ - -Here is an example unit test module: - - exports.testSomething = function(test){ - test.expect(1); - test.ok(true, "this assertion should pass"); - test.done(); - }; - - exports.testSomethingElse = function(test){ - test.ok(false, "this assertion should fail"); - test.done(); - }; - -When run using the included test runner, this will output the following: - - - -Installation ------------- - -There are two options for installing nodeunit: - -1. Clone / download nodeunit from [github](https://github.com/caolan/nodeunit), - then: - - make && sudo make install - -2. Install via npm: - - npm install nodeunit - -API Documentation ------------------ - -Nodeunit uses the functions available in the node.js -[assert module](http://nodejs.org/docs/v0.4.2/api/assert.html): - -* __ok(value, [message])__ - Tests if value is a true value. -* __equal(actual, expected, [message])__ - Tests shallow, coercive equality - with the equal comparison operator ( == ). -* __notEqual(actual, expected, [message])__ - Tests shallow, coercive - non-equality with the not equal comparison operator ( != ). -* __deepEqual(actual, expected, [message])__ - Tests for deep equality. -* __notDeepEqual(actual, expected, [message])__ - Tests for any deep - inequality. -* __strictEqual(actual, expected, [message])__ - Tests strict equality, as - determined by the strict equality operator ( === ) -* __notStrictEqual(actual, expected, [message])__ - Tests strict non-equality, - as determined by the strict not equal operator ( !== ) -* __throws(block, [error], [message])__ - Expects block to throw an error. -* __doesNotThrow(block, [error], [message])__ - Expects block not to throw an - error. -* __ifError(value)__ - Tests if value is not a false value, throws if it is a - true value. Useful when testing the first argument, error in callbacks. - -Nodeunit also provides the following functions within tests: - -* __expect(amount)__ - Specify how many assertions are expected to run within a - test. Very useful for ensuring that all your callbacks and assertions are - run. -* __done()__ - Finish the current test function, and move on to the next. ALL - tests should call this! - -Nodeunit aims to be simple and easy to learn. This is achieved through using -existing structures (such as node.js modules) to maximum effect, and reducing -the API where possible, to make it easier to digest. - -Tests are simply exported from a module, but they are still run in the order -they are defined. - -__Note:__ Users of old nodeunit versions may remember using ok, equals and same -in the style of qunit, instead of the assert functions above. These functions -still exist for backwards compatibility, and are simply aliases to their assert -module counterparts. - - -Asynchronous Testing --------------------- - -When testing asynchronous code, there are a number of sharp edges to watch out -for. Thankfully, nodeunit is designed to help you avoid as many of these -pitfalls as possible. For the most part, testing asynchronous code in nodeunit -_just works_. - - -### Tests run in series - -While running tests in parallel seems like a good idea for speeding up your -test suite, in practice I've found it means writing much more complicated -tests. Because of node's module cache, running tests in parallel means mocking -and stubbing is pretty much impossible. One of the nicest things about testing -in javascript is the ease of doing stubs: - - var _readFile = fs.readFile; - fs.readFile = function(path, callback){ - // its a stub! - }; - // test function that uses fs.readFile - - // we're done - fs.readFile = _readFile; - -You cannot do this when running tests in parallel. In order to keep testing as -simple as possible, nodeunit avoids it. Thankfully, most unit-test suites run -fast anyway. - - -### Explicit ending of tests - -When testing async code its important that tests end at the correct point, not -just after a given number of assertions. Otherwise your tests can run short, -ending before all assertions have completed. Its important to detect too -many assertions as well as too few. Combining explicit ending of tests with -an expected number of assertions helps to avoid false test passes, so be sure -to use the test.expect() method at the start of your test functions, and -test.done() when finished. - - -Groups, setUp and tearDown --------------------------- - -Nodeunit allows the nesting of test functions: - - exports.test1 = function (test) { - ... - } - - exports.group = { - test2: function (test) { - ... - }, - test3: function (test) { - ... - } - } - -This would be run as: - - test1 - group - test2 - group - test3 - -Using these groups, Nodeunit allows you to define a `setUp` function, which is -run before each test, and a `tearDown` function, which is run after each test -calls `test.done()`: - - module.exports = { - setUp: function (callback) { - this.foo = 'bar'; - callback(); - }, - tearDown: function (callback) { - // clean up - callback(); - }, - test1: function (test) { - test.equals(this.foo, 'bar'); - test.done(); - } - }; - -In this way, its possible to have multiple groups of tests in a module, each -group with its own setUp and tearDown functions. - - -Running Tests -------------- - -Nodeunit comes with a basic command-line test runner, which can be installed -using 'sudo make install'. Example usage: - - nodeunit testmodule1.js testfolder [...] - -The default test reporter uses color output, because I think that's more fun :) I -intend to add a no-color option in future. To give you a feeling of the fun you'll -be having writing tests, lets fix the example at the start of the README: - - - -Ahhh, Doesn't that feel better? - -When using the included test runner, it will exit using the failed number of -assertions as the exit code. Exiting with 0 when all tests pass. - - -### Command-line Options - -* __--reporter FILE__ - you can set the test reporter to a custom module or -on of the modules in nodeunit/lib/reporters, when omitted, the default test runner -is used. -* __--list-reporters__ - list available build-in reporters. -* __--config FILE__ - load config options from a JSON file, allows -the customisation of color schemes for the default test reporter etc. See -bin/nodeunit.json for current available options. -* __--version__ or __-v__ - report nodeunit version -* __--help__ - show nodeunit help - - -Running tests in the browser ----------------------------- - -Nodeunit tests can also be run inside the browser. For example usage, see -the examples/browser folder. The basic syntax is as follows: - -__test.html__ - - - - Example Test Suite - - - - - - -

- - -nodeunit with vim -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -There is [nodeunit.vim](https://github.com/lambdalisue/nodeunit.vim) so you can use nodeunit with VIM. -That compiler use __machineout__ reporter and it is useful to use with [vim-makegreen](https://github.com/reinh/vim-makegreen) - - - -Contributing ------------- - -Contributions to the project are most welcome, so feel free to fork and improve. -When submitting a pull request, please run 'make lint' first to ensure -we're following a consistent coding style. diff --git a/node_modules/nodeunit/bin/nodeunit b/node_modules/nodeunit/bin/nodeunit deleted file mode 100755 index 4b3f4d5..0000000 --- a/node_modules/nodeunit/bin/nodeunit +++ /dev/null @@ -1,133 +0,0 @@ -#!/usr/bin/env node - -var - fs = require('fs'), - path = require('path'); - -// TODO: remove this when https://github.com/joyent/node/pull/1312 -// lands in core. -// -// Until then, use console.log from npm (https://gist.github.com/1077544) -require('../deps/console.log'); - -//require.paths.push(process.cwd()); -var args = (process.ARGV || process.argv).slice(2); - -var files = []; - -var testrunner, - config_file, - config_param_found = false, - output_param_found = false, - reporter_file = 'default', - reporter_param_found = false, - testspec_param_found = false; - testFullSpec_param_found = false; - -var usage = "Usage: nodeunit [options] testmodule1.js testfolder [...] \n" + - "Options:\n\n" + - " --config FILE the path to a JSON file with options\n" + - " --reporter FILE optional path to a reporter file to customize the output\n" + - " --list-reporters list available build-in reporters\n" + - " -t name, specify a test to run\n" + - " -f fullname, specify a specific test to run. fullname is built so: \"outerGroup - .. - innerGroup - testName\"\n" + - " -h, --help display this help and exit\n" + - " -v, --version output version information and exit"; - - - -// load default options -var content = fs.readFileSync(__dirname + '/nodeunit.json', 'utf8'); -var options = JSON.parse(content); - -// a very basic pseudo --options parser -args.forEach(function (arg) { - if (arg.slice(0, 9) === "--config=") { - config_file = arg.slice(9); - } else if (arg === '--config') { - config_param_found = true; - } else if (config_param_found) { - config_file = arg; - config_param_found = false; - } else if (arg.slice(0, 9) === "--output=") { - options.output = arg.slice(9); - } else if (arg === '--output') { - output_param_found = true; - } else if (output_param_found) { - options.output = arg; - output_param_found = false; - } else if (arg.slice(0, 11) === "--reporter=") { - reporter_file = arg.slice(11); - } else if (arg === '--reporter') { - reporter_param_found = true; - } else if (reporter_param_found) { - reporter_file = arg; - reporter_param_found = false; - } else if (arg === '-t') { - testspec_param_found = true; - } else if (testspec_param_found) { - options.testspec = arg; - testspec_param_found = false; - } else if (arg === '-f') { - testFullSpec_param_found = true; - } else if (testFullSpec_param_found) { - options.testFullSpec= arg; - testFullSpec_param_found = false; - } else if (arg === '--list-reporters') { - var reporters = fs.readdirSync(__dirname + '/../lib/reporters'); - reporters = reporters.filter(function (reporter_file) { - return (/\.js$/).test(reporter_file); - }).map(function (reporter_file) { - return reporter_file.replace(/\.js$/, ''); - }).filter(function (reporter_file) { - return reporter_file !== 'index'; - }); - console.log('Build-in reporters: '); - reporters.forEach(function (reporter_file) { - var reporter = require('../lib/reporters/' + reporter_file); - console.log(' * ' + reporter_file + (reporter.info ? ': ' + reporter.info : '')); - }); - process.exit(0); - } else if ((arg === '-v') || (arg === '--version')) { - var content = fs.readFileSync(__dirname + '/../package.json', 'utf8'); - var pkg = JSON.parse(content); - console.log(pkg.version); - process.exit(0); - } else if ((arg === '-h') || (arg === '--help')) { - console.log(usage); - process.exit(0); - } else { - files.push(arg); - } -}); - -if (files.length === 0) { - console.log('Files required.'); - console.log(usage); - process.exit(1); -} - -if (config_file) { - content = fs.readFileSync(config_file, 'utf8'); - var custom_options = JSON.parse(content); - - for (var option in custom_options) { - if (typeof option === 'string') { - options[option] = custom_options[option]; - } - } -} - -var builtin_reporters = require(__dirname + '/../lib/reporters'); -if (reporter_file in builtin_reporters) { - testrunner = builtin_reporters[reporter_file]; -} -else { - testrunner = require(reporter_file); -} - -testrunner.run(files, options, function(err) { - if (err) { - process.exit(1); - } -}); diff --git a/node_modules/nodeunit/bin/nodeunit.json b/node_modules/nodeunit/bin/nodeunit.json deleted file mode 100644 index 5c7778f..0000000 --- a/node_modules/nodeunit/bin/nodeunit.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "error_prefix": "\u001B[31m", - "error_suffix": "\u001B[39m", - "ok_prefix": "\u001B[32m", - "ok_suffix": "\u001B[39m", - "bold_prefix": "\u001B[1m", - "bold_suffix": "\u001B[22m", - "assertion_prefix": "\u001B[35m", - "assertion_suffix": "\u001B[39m" -} diff --git a/node_modules/nodeunit/deps/async.js b/node_modules/nodeunit/deps/async.js deleted file mode 100644 index d81255f..0000000 --- a/node_modules/nodeunit/deps/async.js +++ /dev/null @@ -1,623 +0,0 @@ -/*global setTimeout: false, console: false */ -(function () { - - var async = {}; - - // global on the server, window in the browser - var root = this, - previous_async = root.async; - - if (typeof module !== 'undefined' && module.exports) { - module.exports = async; - } - else { - root.async = async; - } - - async.noConflict = function () { - root.async = previous_async; - return async; - }; - - //// cross-browser compatiblity functions //// - - var _forEach = function (arr, iterator) { - if (arr.forEach) { - return arr.forEach(iterator); - } - for (var i = 0; i < arr.length; i += 1) { - iterator(arr[i], i, arr); - } - }; - - var _map = function (arr, iterator) { - if (arr.map) { - return arr.map(iterator); - } - var results = []; - _forEach(arr, function (x, i, a) { - results.push(iterator(x, i, a)); - }); - return results; - }; - - var _reduce = function (arr, iterator, memo) { - if (arr.reduce) { - return arr.reduce(iterator, memo); - } - _forEach(arr, function (x, i, a) { - memo = iterator(memo, x, i, a); - }); - return memo; - }; - - var _keys = function (obj) { - if (Object.keys) { - return Object.keys(obj); - } - var keys = []; - for (var k in obj) { - if (obj.hasOwnProperty(k)) { - keys.push(k); - } - } - return keys; - }; - - var _indexOf = function (arr, item) { - if (arr.indexOf) { - return arr.indexOf(item); - } - for (var i = 0; i < arr.length; i += 1) { - if (arr[i] === item) { - return i; - } - } - return -1; - }; - - //// exported async module functions //// - - //// nextTick implementation with browser-compatible fallback //// - if (typeof process === 'undefined' || !(process.nextTick)) { - async.nextTick = function (fn) { - setTimeout(fn, 0); - }; - } - else { - async.nextTick = process.nextTick; - } - - async.forEach = function (arr, iterator, callback) { - if (!arr.length) { - return callback(); - } - var completed = 0; - _forEach(arr, function (x) { - iterator(x, function (err) { - if (err) { - callback(err); - callback = function () {}; - } - else { - completed += 1; - if (completed === arr.length) { - callback(); - } - } - }); - }); - }; - - async.forEachSeries = function (arr, iterator, callback) { - if (!arr.length) { - return callback(); - } - var completed = 0; - var iterate = function () { - iterator(arr[completed], function (err) { - if (err) { - callback(err); - callback = function () {}; - } - else { - completed += 1; - if (completed === arr.length) { - callback(); - } - else { - iterate(); - } - } - }); - }; - iterate(); - }; - - - var doParallel = function (fn) { - return function () { - var args = Array.prototype.slice.call(arguments); - return fn.apply(null, [async.forEach].concat(args)); - }; - }; - var doSeries = function (fn) { - return function () { - var args = Array.prototype.slice.call(arguments); - return fn.apply(null, [async.forEachSeries].concat(args)); - }; - }; - - - var _asyncMap = function (eachfn, arr, iterator, callback) { - var results = []; - arr = _map(arr, function (x, i) { - return {index: i, value: x}; - }); - eachfn(arr, function (x, callback) { - iterator(x.value, function (err, v) { - results[x.index] = v; - callback(err); - }); - }, function (err) { - callback(err, results); - }); - }; - async.map = doParallel(_asyncMap); - async.mapSeries = doSeries(_asyncMap); - - - // reduce only has a series version, as doing reduce in parallel won't - // work in many situations. - async.reduce = function (arr, memo, iterator, callback) { - async.forEachSeries(arr, function (x, callback) { - iterator(memo, x, function (err, v) { - memo = v; - callback(err); - }); - }, function (err) { - callback(err, memo); - }); - }; - // inject alias - async.inject = async.reduce; - // foldl alias - async.foldl = async.reduce; - - async.reduceRight = function (arr, memo, iterator, callback) { - var reversed = _map(arr, function (x) { - return x; - }).reverse(); - async.reduce(reversed, memo, iterator, callback); - }; - // foldr alias - async.foldr = async.reduceRight; - - var _filter = function (eachfn, arr, iterator, callback) { - var results = []; - arr = _map(arr, function (x, i) { - return {index: i, value: x}; - }); - eachfn(arr, function (x, callback) { - iterator(x.value, function (v) { - if (v) { - results.push(x); - } - callback(); - }); - }, function (err) { - callback(_map(results.sort(function (a, b) { - return a.index - b.index; - }), function (x) { - return x.value; - })); - }); - }; - async.filter = doParallel(_filter); - async.filterSeries = doSeries(_filter); - // select alias - async.select = async.filter; - async.selectSeries = async.filterSeries; - - var _reject = function (eachfn, arr, iterator, callback) { - var results = []; - arr = _map(arr, function (x, i) { - return {index: i, value: x}; - }); - eachfn(arr, function (x, callback) { - iterator(x.value, function (v) { - if (!v) { - results.push(x); - } - callback(); - }); - }, function (err) { - callback(_map(results.sort(function (a, b) { - return a.index - b.index; - }), function (x) { - return x.value; - })); - }); - }; - async.reject = doParallel(_reject); - async.rejectSeries = doSeries(_reject); - - var _detect = function (eachfn, arr, iterator, main_callback) { - eachfn(arr, function (x, callback) { - iterator(x, function (result) { - if (result) { - main_callback(x); - } - else { - callback(); - } - }); - }, function (err) { - main_callback(); - }); - }; - async.detect = doParallel(_detect); - async.detectSeries = doSeries(_detect); - - async.some = function (arr, iterator, main_callback) { - async.forEach(arr, function (x, callback) { - iterator(x, function (v) { - if (v) { - main_callback(true); - main_callback = function () {}; - } - callback(); - }); - }, function (err) { - main_callback(false); - }); - }; - // any alias - async.any = async.some; - - async.every = function (arr, iterator, main_callback) { - async.forEach(arr, function (x, callback) { - iterator(x, function (v) { - if (!v) { - main_callback(false); - main_callback = function () {}; - } - callback(); - }); - }, function (err) { - main_callback(true); - }); - }; - // all alias - async.all = async.every; - - async.sortBy = function (arr, iterator, callback) { - async.map(arr, function (x, callback) { - iterator(x, function (err, criteria) { - if (err) { - callback(err); - } - else { - callback(null, {value: x, criteria: criteria}); - } - }); - }, function (err, results) { - if (err) { - return callback(err); - } - else { - var fn = function (left, right) { - var a = left.criteria, b = right.criteria; - return a < b ? -1 : a > b ? 1 : 0; - }; - callback(null, _map(results.sort(fn), function (x) { - return x.value; - })); - } - }); - }; - - async.auto = function (tasks, callback) { - callback = callback || function () {}; - var keys = _keys(tasks); - if (!keys.length) { - return callback(null); - } - - var completed = []; - - var listeners = []; - var addListener = function (fn) { - listeners.unshift(fn); - }; - var removeListener = function (fn) { - for (var i = 0; i < listeners.length; i += 1) { - if (listeners[i] === fn) { - listeners.splice(i, 1); - return; - } - } - }; - var taskComplete = function () { - _forEach(listeners, function (fn) { - fn(); - }); - }; - - addListener(function () { - if (completed.length === keys.length) { - callback(null); - } - }); - - _forEach(keys, function (k) { - var task = (tasks[k] instanceof Function) ? [tasks[k]]: tasks[k]; - var taskCallback = function (err) { - if (err) { - callback(err); - // stop subsequent errors hitting callback multiple times - callback = function () {}; - } - else { - completed.push(k); - taskComplete(); - } - }; - var requires = task.slice(0, Math.abs(task.length - 1)) || []; - var ready = function () { - return _reduce(requires, function (a, x) { - return (a && _indexOf(completed, x) !== -1); - }, true); - }; - if (ready()) { - task[task.length - 1](taskCallback); - } - else { - var listener = function () { - if (ready()) { - removeListener(listener); - task[task.length - 1](taskCallback); - } - }; - addListener(listener); - } - }); - }; - - async.waterfall = function (tasks, callback) { - if (!tasks.length) { - return callback(); - } - callback = callback || function () {}; - var wrapIterator = function (iterator) { - return function (err) { - if (err) { - callback(err); - callback = function () {}; - } - else { - var args = Array.prototype.slice.call(arguments, 1); - var next = iterator.next(); - if (next) { - args.push(wrapIterator(next)); - } - else { - args.push(callback); - } - async.nextTick(function () { - iterator.apply(null, args); - }); - } - }; - }; - wrapIterator(async.iterator(tasks))(); - }; - - async.parallel = function (tasks, callback) { - callback = callback || function () {}; - if (tasks.constructor === Array) { - async.map(tasks, function (fn, callback) { - if (fn) { - fn(function (err) { - var args = Array.prototype.slice.call(arguments, 1); - if (args.length <= 1) { - args = args[0]; - } - callback.call(null, err, args || null); - }); - } - }, callback); - } - else { - var results = {}; - async.forEach(_keys(tasks), function (k, callback) { - tasks[k](function (err) { - var args = Array.prototype.slice.call(arguments, 1); - if (args.length <= 1) { - args = args[0]; - } - results[k] = args; - callback(err); - }); - }, function (err) { - callback(err, results); - }); - } - }; - - async.series = function (tasks, callback) { - callback = callback || function () {}; - if (tasks.constructor === Array) { - async.mapSeries(tasks, function (fn, callback) { - if (fn) { - fn(function (err) { - var args = Array.prototype.slice.call(arguments, 1); - if (args.length <= 1) { - args = args[0]; - } - callback.call(null, err, args || null); - }); - } - }, callback); - } - else { - var results = {}; - async.forEachSeries(_keys(tasks), function (k, callback) { - tasks[k](function (err) { - var args = Array.prototype.slice.call(arguments, 1); - if (args.length <= 1) { - args = args[0]; - } - results[k] = args; - callback(err); - }); - }, function (err) { - callback(err, results); - }); - } - }; - - async.iterator = function (tasks) { - var makeCallback = function (index) { - var fn = function () { - if (tasks.length) { - tasks[index].apply(null, arguments); - } - return fn.next(); - }; - fn.next = function () { - return (index < tasks.length - 1) ? makeCallback(index + 1): null; - }; - return fn; - }; - return makeCallback(0); - }; - - async.apply = function (fn) { - var args = Array.prototype.slice.call(arguments, 1); - return function () { - return fn.apply( - null, args.concat(Array.prototype.slice.call(arguments)) - ); - }; - }; - - var _concat = function (eachfn, arr, fn, callback) { - var r = []; - eachfn(arr, function (x, cb) { - fn(x, function (err, y) { - r = r.concat(y || []); - cb(err); - }); - }, function (err) { - callback(err, r); - }); - }; - async.concat = doParallel(_concat); - async.concatSeries = doSeries(_concat); - - async.whilst = function (test, iterator, callback) { - if (test()) { - iterator(function (err) { - if (err) { - return callback(err); - } - async.whilst(test, iterator, callback); - }); - } - else { - callback(); - } - }; - - async.until = function (test, iterator, callback) { - if (!test()) { - iterator(function (err) { - if (err) { - return callback(err); - } - async.until(test, iterator, callback); - }); - } - else { - callback(); - } - }; - - async.queue = function (worker, concurrency) { - var workers = 0; - var tasks = []; - var q = { - concurrency: concurrency, - push: function (data, callback) { - tasks.push({data: data, callback: callback}); - async.nextTick(q.process); - }, - process: function () { - if (workers < q.concurrency && tasks.length) { - var task = tasks.splice(0, 1)[0]; - workers += 1; - worker(task.data, function () { - workers -= 1; - if (task.callback) { - task.callback.apply(task, arguments); - } - q.process(); - }); - } - }, - length: function () { - return tasks.length; - } - }; - return q; - }; - - var _console_fn = function (name) { - return function (fn) { - var args = Array.prototype.slice.call(arguments, 1); - fn.apply(null, args.concat([function (err) { - var args = Array.prototype.slice.call(arguments, 1); - if (typeof console !== 'undefined') { - if (err) { - if (console.error) { - console.error(err); - } - } - else if (console[name]) { - _forEach(args, function (x) { - console[name](x); - }); - } - } - }])); - }; - }; - async.log = _console_fn('log'); - async.dir = _console_fn('dir'); - /*async.info = _console_fn('info'); - async.warn = _console_fn('warn'); - async.error = _console_fn('error');*/ - - async.memoize = function (fn, hasher) { - var memo = {}; - hasher = hasher || function (x) { - return x; - }; - return function () { - var args = Array.prototype.slice.call(arguments); - var callback = args.pop(); - var key = hasher.apply(null, args); - if (key in memo) { - callback.apply(null, memo[key]); - } - else { - fn.apply(null, args.concat([function () { - memo[key] = arguments; - callback.apply(null, arguments); - }])); - } - }; - }; - -}()); diff --git a/node_modules/nodeunit/deps/console.log.js b/node_modules/nodeunit/deps/console.log.js deleted file mode 100644 index fe146c1..0000000 --- a/node_modules/nodeunit/deps/console.log.js +++ /dev/null @@ -1,55 +0,0 @@ -/* - A console.log that won't leave you hanging when node exits - 90% of this file was ripped from node.js - - License: see: https://github.com/joyent/node/blob/master/lib/console.js - */ - - // console object -var formatRegExp = /%[sdj]/g; -function format(f) { - var util = require('util'); - - if (typeof f !== 'string') { - var objects = []; - for (var i = 0; i < arguments.length; i++) { - objects.push(util.inspect(arguments[i])); - } - return objects.join(' '); - } - - - var i = 1; - var args = arguments; - var str = String(f).replace(formatRegExp, function(x) { - switch (x) { - case '%s': return String(args[i++]); - case '%d': return Number(args[i++]); - case '%j': return JSON.stringify(args[i++]); - default: - return x; - } - }); - for (var len = args.length, x = args[i]; i < len; x = args[++i]) { - if (x === null || typeof x !== 'object') { - str += ' ' + x; - } else { - str += ' ' + util.inspect(x); - } - } - return str; -} - -console.log = function() { - var res = process.stdout.write(format.apply(this, arguments) + '\n'); - - // this is the first time stdout got backed up - if (!res && !process.stdout.pendingWrite) { - process.stdout.pendingWrite = true; - - // magic sauce: keep node alive until stdout has flushed - process.stdout.once('drain', function () { - process.stdout.draining = false; - }); - } -}; diff --git a/node_modules/nodeunit/deps/ejs/History.md b/node_modules/nodeunit/deps/ejs/History.md deleted file mode 100644 index 00d2b5b..0000000 --- a/node_modules/nodeunit/deps/ejs/History.md +++ /dev/null @@ -1,70 +0,0 @@ - -0.4.3 / 2011-06-20 -================== - - * Fixed stacktraces line number when used multiline js expressions [Octave] - -0.4.2 / 2011-05-11 -================== - - * Added client side support - -0.4.1 / 2011-04-21 -================== - - * Fixed error context - -0.4.0 / 2011-04-21 -================== - - * Added; ported jade's error reporting to ejs. [slaskis] - -0.3.1 / 2011-02-23 -================== - - * Fixed optional `compile()` options - -0.3.0 / 2011-02-14 -================== - - * Added 'json' filter [Yuriy Bogdanov] - * Use exported version of parse function to allow monkey-patching [Anatoliy Chakkaev] - -0.2.1 / 2010-10-07 -================== - - * Added filter support - * Fixed _cache_ option. ~4x performance increase - -0.2.0 / 2010-08-05 -================== - - * Added support for global tag config - * Added custom tag support. Closes #5 - * Fixed whitespace bug. Closes #4 - -0.1.0 / 2010-08-04 -================== - - * Faster implementation [ashleydev] - -0.0.4 / 2010-08-02 -================== - - * Fixed single quotes for content outside of template tags. [aniero] - * Changed; `exports.compile()` now expects only "locals" - -0.0.3 / 2010-07-15 -================== - - * Fixed single quotes - -0.0.2 / 2010-07-09 -================== - - * Fixed newline preservation - -0.0.1 / 2010-07-09 -================== - - * Initial release diff --git a/node_modules/nodeunit/deps/ejs/Makefile b/node_modules/nodeunit/deps/ejs/Makefile deleted file mode 100644 index a8b00d9..0000000 --- a/node_modules/nodeunit/deps/ejs/Makefile +++ /dev/null @@ -1,20 +0,0 @@ - -SRC = $(shell find lib -name "*.js" -type f) -UGLIFY_FLAGS = --no-mangle - -test: - @./node_modules/.bin/expresso test/*.test.js - -ejs.js: $(SRC) - @node support/compile.js $^ - -ejs.min.js: ejs.js - @uglifyjs $(UGLIFY_FLAGS) $< > $@ \ - && du ejs.min.js \ - && du ejs.js - -clean: - rm -f ejs.js - rm -f ejs.min.js - -.PHONY: test \ No newline at end of file diff --git a/node_modules/nodeunit/deps/ejs/Readme.md b/node_modules/nodeunit/deps/ejs/Readme.md deleted file mode 100644 index 58cb10a..0000000 --- a/node_modules/nodeunit/deps/ejs/Readme.md +++ /dev/null @@ -1,152 +0,0 @@ - -# EJS - -Embedded JavaScript templates. - -## Installation - - $ npm install ejs - -## Features - - * Complies with the [Express](http://expressjs.com) view system - * Static caching of intermediate JavaScript - * Unbuffered code for conditionals etc `<% code %>` - * Escapes html by default with `<%= code %>` - * Unescaped buffering with `<%- code %>` - * Supports tag customization - * Filter support for designer-friendly templates - * Client-side support - -## Example - - <% if (user) { %> -

<%= user.name %>

- <% } %> - -## Usage - - ejs.compile(str, options); - // => Function - - ejs.render(str, options); - // => str - -## Options - - - `locals` Local variables object - - `cache` Compiled functions are cached, requires `filename` - - `filename` Used by `cache` to key caches - - `scope` Function execution context - - `debug` Output generated function body - - `open` Open tag, defaulting to "<%" - - `close` Closing tag, defaulting to "%>" - -## Custom tags - -Custom tags can also be applied globally: - - var ejs = require('ejs'); - ejs.open = '{{'; - ejs.close = '}}'; - -Which would make the following a valid template: - -

{{= title }}

- -## Filters - -EJS conditionally supports the concept of "filters". A "filter chain" -is a designer friendly api for manipulating data, without writing JavaScript. - -Filters can be applied by supplying the _:_ modifier, so for example if we wish to take the array `[{ name: 'tj' }, { name: 'mape' }, { name: 'guillermo' }]` and output a list of names we can do this simply with filters: - -Template: - -

<%=: users | map:'name' | join %>

- -Output: - -

Tj, Mape, Guillermo

- -Render call: - - ejs.render(str, { - locals: { - users: [ - { name: 'tj' }, - { name: 'mape' }, - { name: 'guillermo' } - ] - } - }); - -Or perhaps capitalize the first user's name for display: - -

<%=: users | first | capitalize %>

- -## Filter list - -Currently these filters are available: - - - first - - last - - capitalize - - downcase - - upcase - - sort - - sort_by:'prop' - - size - - length - - plus:n - - minus:n - - times:n - - divided_by:n - - join:'val' - - truncate:n - - truncate_words:n - - replace:pattern,substitution - - prepend:val - - append:val - - map:'prop' - - reverse - - get:'prop' - -## Adding filters - - To add a filter simply add a method to the `.filters` object: - -```js -ejs.filters.last = function(obj) { - return obj[obj.length - 1]; -}; -``` - -## client-side support - - include `./ejs.js` or `./ejs.min.js` and `require("ejs").compile(str)`. - -## License - -(The MIT License) - -Copyright (c) 2009-2010 TJ Holowaychuk <tj@vision-media.ca> - -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: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -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. diff --git a/node_modules/nodeunit/deps/ejs/benchmark.js b/node_modules/nodeunit/deps/ejs/benchmark.js deleted file mode 100644 index 7b267e1..0000000 --- a/node_modules/nodeunit/deps/ejs/benchmark.js +++ /dev/null @@ -1,14 +0,0 @@ - - -var ejs = require('./lib/ejs'), - str = '<% if (foo) { %>

<%= foo %>

<% } %>', - times = 50000; - -console.log('rendering ' + times + ' times'); - -var start = new Date; -while (times--) { - ejs.render(str, { cache: true, filename: 'test', locals: { foo: 'bar' }}); -} - -console.log('took ' + (new Date - start) + 'ms'); \ No newline at end of file diff --git a/node_modules/nodeunit/deps/ejs/ejs.js b/node_modules/nodeunit/deps/ejs/ejs.js deleted file mode 100644 index b8c6aa1..0000000 --- a/node_modules/nodeunit/deps/ejs/ejs.js +++ /dev/null @@ -1,531 +0,0 @@ - -// CommonJS require() - -function require(p){ - var path = require.resolve(p) - , mod = require.modules[path]; - if (!mod) throw new Error('failed to require "' + p + '"'); - if (!mod.exports) { - mod.exports = {}; - mod.call(mod.exports, mod, mod.exports, require.relative(path)); - } - return mod.exports; - } - -require.modules = {}; - -require.resolve = function (path){ - var orig = path - , reg = path + '.js' - , index = path + '/index.js'; - return require.modules[reg] && reg - || require.modules[index] && index - || orig; - }; - -require.register = function (path, fn){ - require.modules[path] = fn; - }; - -require.relative = function (parent) { - return function(p){ - if ('.' != p[0]) return require(p); - - var path = parent.split('/') - , segs = p.split('/'); - path.pop(); - - for (var i = 0; i < segs.length; i++) { - var seg = segs[i]; - if ('..' == seg) path.pop(); - else if ('.' != seg) path.push(seg); - } - - return require(path.join('/')); - }; - }; - - -require.register("ejs.js", function(module, exports, require){ - -/*! - * EJS - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var utils = require('./utils'); - -/** - * Library version. - */ - -exports.version = '0.4.2'; - -/** - * Filters. - * - * @type Object - */ - -var filters = exports.filters = require('./filters'); - -/** - * Intermediate js cache. - * - * @type Object - */ - -var cache = {}; - -/** - * Clear intermediate js cache. - * - * @api public - */ - -exports.clearCache = function(){ - cache = {}; -}; - -/** - * Translate filtered code into function calls. - * - * @param {String} js - * @return {String} - * @api private - */ - -function filtered(js) { - return js.substr(1).split('|').reduce(function(js, filter){ - var parts = filter.split(':') - , name = parts.shift() - , args = parts.shift() || ''; - if (args) args = ', ' + args; - return 'filters.' + name + '(' + js + args + ')'; - }); -}; - -/** - * Re-throw the given `err` in context to the - * `str` of ejs, `filename`, and `lineno`. - * - * @param {Error} err - * @param {String} str - * @param {String} filename - * @param {String} lineno - * @api private - */ - -function rethrow(err, str, filename, lineno){ - var lines = str.split('\n') - , start = Math.max(lineno - 3, 0) - , end = Math.min(lines.length, lineno + 3); - - // Error context - var context = lines.slice(start, end).map(function(line, i){ - var curr = i + start + 1; - return (curr == lineno ? ' >> ' : ' ') - + curr - + '| ' - + line; - }).join('\n'); - - // Alter exception message - err.path = filename; - err.message = (filename || 'ejs') + ':' - + lineno + '\n' - + context + '\n\n' - + err.message; - - throw err; -} - -/** - * Parse the given `str` of ejs, returning the function body. - * - * @param {String} str - * @return {String} - * @api public - */ - -var parse = exports.parse = function(str, options){ - var options = options || {} - , open = options.open || exports.open || '<%' - , close = options.close || exports.close || '%>'; - - var buf = [ - "var buf = [];" - , "\nwith (locals) {" - , "\n buf.push('" - ]; - - var lineno = 1; - - for (var i = 0, len = str.length; i < len; ++i) { - if (str.slice(i, open.length + i) == open) { - i += open.length - - var prefix, postfix, line = '__stack.lineno=' + lineno; - switch (str[i]) { - case '=': - prefix = "', escape((" + line + ', '; - postfix = ")), '"; - ++i; - break; - case '-': - prefix = "', (" + line + ', '; - postfix = "), '"; - ++i; - break; - default: - prefix = "');" + line + ';'; - postfix = "; buf.push('"; - } - - var start = i; - var end = str.indexOf(close, i); - var js = str.substring(i, end); - var n = 0; - while ((n = js.indexOf("\n", n)) > -1) { - n++; - lineno++; - } - if (js[0] == ':') js = filtered(js); - buf.push(prefix, js, postfix); - i += end - start + close.length - 1; - - } else if (str[i] == "\\") { - buf.push("\\\\"); - } else if (str[i] == "'") { - buf.push("\\'"); - } else if (str[i] == "\r") { - buf.push(" "); - } else if (str[i] == "\n") { - buf.push("\\n"); - lineno++; - } else { - buf.push(str[i]); - } - } - - buf.push("');\n}\nreturn buf.join('');"); - return buf.join(''); -}; - -/** - * Compile the given `str` of ejs into a `Function`. - * - * @param {String} str - * @param {Object} options - * @return {Function} - * @api public - */ - -var compile = exports.compile = function(str, options){ - options = options || {}; - - var input = JSON.stringify(str) - , filename = options.filename - ? JSON.stringify(options.filename) - : 'undefined'; - - // Adds the fancy stack trace meta info - str = [ - 'var __stack = { lineno: 1, input: ' + input + ', filename: ' + filename + ' };', - rethrow.toString(), - 'try {', - exports.parse(str, options), - '} catch (err) {', - ' rethrow(err, __stack.input, __stack.filename, __stack.lineno);', - '}' - ].join("\n"); - - if (options.debug) console.log(str); - var fn = new Function('locals, filters, escape', str); - return function(locals){ - return fn.call(this, locals, filters, utils.escape); - } -}; - -/** - * Render the given `str` of ejs. - * - * Options: - * - * - `locals` Local variables object - * - `cache` Compiled functions are cached, requires `filename` - * - `filename` Used by `cache` to key caches - * - `scope` Function execution context - * - `debug` Output generated function body - * - `open` Open tag, defaulting to "<%" - * - `close` Closing tag, defaulting to "%>" - * - * @param {String} str - * @param {Object} options - * @return {String} - * @api public - */ - -exports.render = function(str, options){ - var fn - , options = options || {}; - if (options.cache) { - if (options.filename) { - fn = cache[options.filename] || (cache[options.filename] = compile(str, options)); - } else { - throw new Error('"cache" option requires "filename".'); - } - } else { - fn = compile(str, options); - } - return fn.call(options.scope, options.locals || {}); -}; - -/** - * Expose to require(). - */ - -if (require.extensions) { - require.extensions['.ejs'] = function(module, filename) { - source = require('fs').readFileSync(filename, 'utf-8'); - module._compile(compile(source, {}), filename); - }; -} else if (require.registerExtension) { - require.registerExtension('.ejs', function(src) { - return compile(src, {}); - }); -} - -}); // module: ejs.js - -require.register("filters.js", function(module, exports, require){ - -/*! - * EJS - Filters - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * First element of the target `obj`. - */ - -exports.first = function(obj) { - return obj[0]; -}; - -/** - * Last element of the target `obj`. - */ - -exports.last = function(obj) { - return obj[obj.length - 1]; -}; - -/** - * Capitalize the first letter of the target `str`. - */ - -exports.capitalize = function(str){ - str = String(str); - return str[0].toUpperCase() + str.substr(1, str.length); -}; - -/** - * Downcase the target `str`. - */ - -exports.downcase = function(str){ - return String(str).toLowerCase(); -}; - -/** - * Uppercase the target `str`. - */ - -exports.upcase = function(str){ - return String(str).toUpperCase(); -}; - -/** - * Sort the target `obj`. - */ - -exports.sort = function(obj){ - return Object.create(obj).sort(); -}; - -/** - * Sort the target `obj` by the given `prop` ascending. - */ - -exports.sort_by = function(obj, prop){ - return Object.create(obj).sort(function(a, b){ - a = a[prop], b = b[prop]; - if (a > b) return 1; - if (a < b) return -1; - return 0; - }); -}; - -/** - * Size or length of the target `obj`. - */ - -exports.size = exports.length = function(obj) { - return obj.length; -}; - -/** - * Add `a` and `b`. - */ - -exports.plus = function(a, b){ - return Number(a) + Number(b); -}; - -/** - * Subtract `b` from `a`. - */ - -exports.minus = function(a, b){ - return Number(a) - Number(b); -}; - -/** - * Multiply `a` by `b`. - */ - -exports.times = function(a, b){ - return Number(a) * Number(b); -}; - -/** - * Divide `a` by `b`. - */ - -exports.divided_by = function(a, b){ - return Number(a) / Number(b); -}; - -/** - * Join `obj` with the given `str`. - */ - -exports.join = function(obj, str){ - return obj.join(str || ', '); -}; - -/** - * Truncate `str` to `len`. - */ - -exports.truncate = function(str, len){ - str = String(str); - return str.substr(0, len); -}; - -/** - * Truncate `str` to `n` words. - */ - -exports.truncate_words = function(str, n){ - var str = String(str) - , words = str.split(/ +/); - return words.slice(0, n).join(' '); -}; - -/** - * Replace `pattern` with `substitution` in `str`. - */ - -exports.replace = function(str, pattern, substitution){ - return String(str).replace(pattern, substitution || ''); -}; - -/** - * Prepend `val` to `obj`. - */ - -exports.prepend = function(obj, val){ - return Array.isArray(obj) - ? [val].concat(obj) - : val + obj; -}; - -/** - * Append `val` to `obj`. - */ - -exports.append = function(obj, val){ - return Array.isArray(obj) - ? obj.concat(val) - : obj + val; -}; - -/** - * Map the given `prop`. - */ - -exports.map = function(arr, prop){ - return arr.map(function(obj){ - return obj[prop]; - }); -}; - -/** - * Reverse the given `obj`. - */ - -exports.reverse = function(obj){ - return Array.isArray(obj) - ? obj.reverse() - : String(obj).split('').reverse().join(''); -}; - -/** - * Get `prop` of the given `obj`. - */ - -exports.get = function(obj, prop){ - return obj[prop]; -}; - -/** - * Packs the given `obj` into json string - */ -exports.json = function(obj){ - return JSON.stringify(obj); -}; -}); // module: filters.js - -require.register("utils.js", function(module, exports, require){ - -/*! - * EJS - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Escape the given string of `html`. - * - * @param {String} html - * @return {String} - * @api private - */ - -exports.escape = function(html){ - return String(html) - .replace(/&(?!\w+;)/g, '&') - .replace(//g, '>') - .replace(/"/g, '"'); -}; - -}); // module: utils.js diff --git a/node_modules/nodeunit/deps/ejs/ejs.min.js b/node_modules/nodeunit/deps/ejs/ejs.min.js deleted file mode 100644 index 6b72d94..0000000 --- a/node_modules/nodeunit/deps/ejs/ejs.min.js +++ /dev/null @@ -1,2 +0,0 @@ -// CommonJS require() -function require(p){var path=require.resolve(p),mod=require.modules[path];if(!mod)throw new Error('failed to require "'+p+'"');mod.exports||(mod.exports={},mod.call(mod.exports,mod,mod.exports,require.relative(path)));return mod.exports}require.modules={},require.resolve=function(path){var orig=path,reg=path+".js",index=path+"/index.js";return require.modules[reg]&®||require.modules[index]&&index||orig},require.register=function(path,fn){require.modules[path]=fn},require.relative=function(parent){return function(p){if("."!=p[0])return require(p);var path=parent.split("/"),segs=p.split("/");path.pop();for(var i=0;i> ":" ")+curr+"| "+line}).join("\n");err.path=filename,err.message=(filename||"ejs")+":"+lineno+"\n"+context+"\n\n"+err.message;throw err}var parse=exports.parse=function(str,options){var options=options||{},open=options.open||exports.open||"<%",close=options.close||exports.close||"%>",buf=["var buf = [];","\nwith (locals) {","\n buf.push('"],lineno=1;for(var i=0,len=str.length;ib)return 1;if(a/g,">").replace(/"/g,""")}}) \ No newline at end of file diff --git a/node_modules/nodeunit/deps/ejs/examples/client.html b/node_modules/nodeunit/deps/ejs/examples/client.html deleted file mode 100644 index 7081a04..0000000 --- a/node_modules/nodeunit/deps/ejs/examples/client.html +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/node_modules/nodeunit/deps/ejs/examples/list.ejs b/node_modules/nodeunit/deps/ejs/examples/list.ejs deleted file mode 100644 index d571330..0000000 --- a/node_modules/nodeunit/deps/ejs/examples/list.ejs +++ /dev/null @@ -1,7 +0,0 @@ -<% if (names.length) { %> -
    - <% names.forEach(function(name){ %> -
  • <%= name %>
  • - <% }) %> -
-<% } %> \ No newline at end of file diff --git a/node_modules/nodeunit/deps/ejs/examples/list.js b/node_modules/nodeunit/deps/ejs/examples/list.js deleted file mode 100644 index 9cd7168..0000000 --- a/node_modules/nodeunit/deps/ejs/examples/list.js +++ /dev/null @@ -1,16 +0,0 @@ - -/** - * Module dependencies. - */ - -var ejs = require('../') - , fs = require('fs') - , str = fs.readFileSync(__dirname + '/list.ejs', 'utf8'); - -var ret = ejs.render(str, { - locals: { - names: ['foo', 'bar', 'baz'] - } -}); - -console.log(ret); \ No newline at end of file diff --git a/node_modules/nodeunit/deps/ejs/index.js b/node_modules/nodeunit/deps/ejs/index.js deleted file mode 100644 index 20bf71a..0000000 --- a/node_modules/nodeunit/deps/ejs/index.js +++ /dev/null @@ -1,2 +0,0 @@ - -module.exports = require('./lib/ejs'); \ No newline at end of file diff --git a/node_modules/nodeunit/deps/ejs/lib/ejs.js b/node_modules/nodeunit/deps/ejs/lib/ejs.js deleted file mode 100644 index 46afa74..0000000 --- a/node_modules/nodeunit/deps/ejs/lib/ejs.js +++ /dev/null @@ -1,251 +0,0 @@ - -/*! - * EJS - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var utils = require('./utils'); - -/** - * Library version. - */ - -exports.version = '0.4.3'; - -/** - * Filters. - * - * @type Object - */ - -var filters = exports.filters = require('./filters'); - -/** - * Intermediate js cache. - * - * @type Object - */ - -var cache = {}; - -/** - * Clear intermediate js cache. - * - * @api public - */ - -exports.clearCache = function(){ - cache = {}; -}; - -/** - * Translate filtered code into function calls. - * - * @param {String} js - * @return {String} - * @api private - */ - -function filtered(js) { - return js.substr(1).split('|').reduce(function(js, filter){ - var parts = filter.split(':') - , name = parts.shift() - , args = parts.shift() || ''; - if (args) args = ', ' + args; - return 'filters.' + name + '(' + js + args + ')'; - }); -}; - -/** - * Re-throw the given `err` in context to the - * `str` of ejs, `filename`, and `lineno`. - * - * @param {Error} err - * @param {String} str - * @param {String} filename - * @param {String} lineno - * @api private - */ - -function rethrow(err, str, filename, lineno){ - var lines = str.split('\n') - , start = Math.max(lineno - 3, 0) - , end = Math.min(lines.length, lineno + 3); - - // Error context - var context = lines.slice(start, end).map(function(line, i){ - var curr = i + start + 1; - return (curr == lineno ? ' >> ' : ' ') - + curr - + '| ' - + line; - }).join('\n'); - - // Alter exception message - err.path = filename; - err.message = (filename || 'ejs') + ':' - + lineno + '\n' - + context + '\n\n' - + err.message; - - throw err; -} - -/** - * Parse the given `str` of ejs, returning the function body. - * - * @param {String} str - * @return {String} - * @api public - */ - -var parse = exports.parse = function(str, options){ - var options = options || {} - , open = options.open || exports.open || '<%' - , close = options.close || exports.close || '%>'; - - var buf = [ - "var buf = [];" - , "\nwith (locals) {" - , "\n buf.push('" - ]; - - var lineno = 1; - - for (var i = 0, len = str.length; i < len; ++i) { - if (str.slice(i, open.length + i) == open) { - i += open.length - - var prefix, postfix, line = '__stack.lineno=' + lineno; - switch (str.substr(i, 1)) { - case '=': - prefix = "', escape((" + line + ', '; - postfix = ")), '"; - ++i; - break; - case '-': - prefix = "', (" + line + ', '; - postfix = "), '"; - ++i; - break; - default: - prefix = "');" + line + ';'; - postfix = "; buf.push('"; - } - - var end = str.indexOf(close, i) - , js = str.substring(i, end) - , start = i - , n = 0; - - while (~(n = js.indexOf("\n", n))) n++, lineno++; - if (js.substr(0, 1) == ':') js = filtered(js); - buf.push(prefix, js, postfix); - i += end - start + close.length - 1; - - } else if (str.substr(i, 1) == "\\") { - buf.push("\\\\"); - } else if (str.substr(i, 1) == "'") { - buf.push("\\'"); - } else if (str.substr(i, 1) == "\r") { - buf.push(" "); - } else if (str.substr(i, 1) == "\n") { - buf.push("\\n"); - lineno++; - } else { - buf.push(str.substr(i, 1)); - } - } - - buf.push("');\n}\nreturn buf.join('');"); - return buf.join(''); -}; - -/** - * Compile the given `str` of ejs into a `Function`. - * - * @param {String} str - * @param {Object} options - * @return {Function} - * @api public - */ - -var compile = exports.compile = function(str, options){ - options = options || {}; - - var input = JSON.stringify(str) - , filename = options.filename - ? JSON.stringify(options.filename) - : 'undefined'; - - // Adds the fancy stack trace meta info - str = [ - 'var __stack = { lineno: 1, input: ' + input + ', filename: ' + filename + ' };', - rethrow.toString(), - 'try {', - exports.parse(str, options), - '} catch (err) {', - ' rethrow(err, __stack.input, __stack.filename, __stack.lineno);', - '}' - ].join("\n"); - - if (options.debug) console.log(str); - var fn = new Function('locals, filters, escape', str); - return function(locals){ - return fn.call(this, locals, filters, utils.escape); - } -}; - -/** - * Render the given `str` of ejs. - * - * Options: - * - * - `locals` Local variables object - * - `cache` Compiled functions are cached, requires `filename` - * - `filename` Used by `cache` to key caches - * - `scope` Function execution context - * - `debug` Output generated function body - * - `open` Open tag, defaulting to "<%" - * - `close` Closing tag, defaulting to "%>" - * - * @param {String} str - * @param {Object} options - * @return {String} - * @api public - */ - -exports.render = function(str, options){ - var fn - , options = options || {}; - if (options.cache) { - if (options.filename) { - fn = cache[options.filename] || (cache[options.filename] = compile(str, options)); - } else { - throw new Error('"cache" option requires "filename".'); - } - } else { - fn = compile(str, options); - } - return fn.call(options.scope, options.locals || {}); -}; - -/** - * Expose to require(). - */ - -if (require.extensions) { - require.extensions['.ejs'] = function(module, filename) { - source = require('fs').readFileSync(filename, 'utf-8'); - module._compile(compile(source, {}), filename); - }; -} else if (require.registerExtension) { - require.registerExtension('.ejs', function(src) { - return compile(src, {}); - }); -} diff --git a/node_modules/nodeunit/deps/ejs/lib/filters.js b/node_modules/nodeunit/deps/ejs/lib/filters.js deleted file mode 100644 index d425c8d..0000000 --- a/node_modules/nodeunit/deps/ejs/lib/filters.js +++ /dev/null @@ -1,198 +0,0 @@ - -/*! - * EJS - Filters - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * First element of the target `obj`. - */ - -exports.first = function(obj) { - return obj[0]; -}; - -/** - * Last element of the target `obj`. - */ - -exports.last = function(obj) { - return obj[obj.length - 1]; -}; - -/** - * Capitalize the first letter of the target `str`. - */ - -exports.capitalize = function(str){ - str = String(str); - return str[0].toUpperCase() + str.substr(1, str.length); -}; - -/** - * Downcase the target `str`. - */ - -exports.downcase = function(str){ - return String(str).toLowerCase(); -}; - -/** - * Uppercase the target `str`. - */ - -exports.upcase = function(str){ - return String(str).toUpperCase(); -}; - -/** - * Sort the target `obj`. - */ - -exports.sort = function(obj){ - return Object.create(obj).sort(); -}; - -/** - * Sort the target `obj` by the given `prop` ascending. - */ - -exports.sort_by = function(obj, prop){ - return Object.create(obj).sort(function(a, b){ - a = a[prop], b = b[prop]; - if (a > b) return 1; - if (a < b) return -1; - return 0; - }); -}; - -/** - * Size or length of the target `obj`. - */ - -exports.size = exports.length = function(obj) { - return obj.length; -}; - -/** - * Add `a` and `b`. - */ - -exports.plus = function(a, b){ - return Number(a) + Number(b); -}; - -/** - * Subtract `b` from `a`. - */ - -exports.minus = function(a, b){ - return Number(a) - Number(b); -}; - -/** - * Multiply `a` by `b`. - */ - -exports.times = function(a, b){ - return Number(a) * Number(b); -}; - -/** - * Divide `a` by `b`. - */ - -exports.divided_by = function(a, b){ - return Number(a) / Number(b); -}; - -/** - * Join `obj` with the given `str`. - */ - -exports.join = function(obj, str){ - return obj.join(str || ', '); -}; - -/** - * Truncate `str` to `len`. - */ - -exports.truncate = function(str, len){ - str = String(str); - return str.substr(0, len); -}; - -/** - * Truncate `str` to `n` words. - */ - -exports.truncate_words = function(str, n){ - var str = String(str) - , words = str.split(/ +/); - return words.slice(0, n).join(' '); -}; - -/** - * Replace `pattern` with `substitution` in `str`. - */ - -exports.replace = function(str, pattern, substitution){ - return String(str).replace(pattern, substitution || ''); -}; - -/** - * Prepend `val` to `obj`. - */ - -exports.prepend = function(obj, val){ - return Array.isArray(obj) - ? [val].concat(obj) - : val + obj; -}; - -/** - * Append `val` to `obj`. - */ - -exports.append = function(obj, val){ - return Array.isArray(obj) - ? obj.concat(val) - : obj + val; -}; - -/** - * Map the given `prop`. - */ - -exports.map = function(arr, prop){ - return arr.map(function(obj){ - return obj[prop]; - }); -}; - -/** - * Reverse the given `obj`. - */ - -exports.reverse = function(obj){ - return Array.isArray(obj) - ? obj.reverse() - : String(obj).split('').reverse().join(''); -}; - -/** - * Get `prop` of the given `obj`. - */ - -exports.get = function(obj, prop){ - return obj[prop]; -}; - -/** - * Packs the given `obj` into json string - */ -exports.json = function(obj){ - return JSON.stringify(obj); -}; \ No newline at end of file diff --git a/node_modules/nodeunit/deps/ejs/lib/utils.js b/node_modules/nodeunit/deps/ejs/lib/utils.js deleted file mode 100644 index 8d569d6..0000000 --- a/node_modules/nodeunit/deps/ejs/lib/utils.js +++ /dev/null @@ -1,23 +0,0 @@ - -/*! - * EJS - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Escape the given string of `html`. - * - * @param {String} html - * @return {String} - * @api private - */ - -exports.escape = function(html){ - return String(html) - .replace(/&(?!\w+;)/g, '&') - .replace(//g, '>') - .replace(/"/g, '"'); -}; - \ No newline at end of file diff --git a/node_modules/nodeunit/deps/ejs/package.json b/node_modules/nodeunit/deps/ejs/package.json deleted file mode 100644 index 224b4ff..0000000 --- a/node_modules/nodeunit/deps/ejs/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "ejs", - "description": "Embedded JavaScript templates", - "version": "0.4.3", - "author": "TJ Holowaychuk ", - "keywords": ["template", "engine", "ejs"], - "devDependencies": { - "expresso": "0.9.2" - }, - "main": "./lib/ejs.js" -} \ No newline at end of file diff --git a/node_modules/nodeunit/deps/ejs/support/compile.js b/node_modules/nodeunit/deps/ejs/support/compile.js deleted file mode 100644 index edd3815..0000000 --- a/node_modules/nodeunit/deps/ejs/support/compile.js +++ /dev/null @@ -1,173 +0,0 @@ - -/** - * Module dependencies. - */ - -var fs = require('fs'); - -/** - * Arguments. - */ - -var args = process.argv.slice(2) - , pending = args.length - , files = {}; - -console.log(''); - -// parse arguments - -args.forEach(function(file){ - var mod = file.replace('lib/', ''); - fs.readFile(file, 'utf8', function(err, js){ - if (err) throw err; - console.log(' \033[90mcompile : \033[0m\033[36m%s\033[0m', file); - files[file] = parse(js); - --pending || compile(); - }); -}); - -/** - * Parse the given `js`. - */ - -function parse(js) { - return parseInheritance(parseConditionals(js)); -} - -/** - * Parse __proto__. - */ - -function parseInheritance(js) { - return js - .replace(/^ *(\w+)\.prototype\.__proto__ * = *(\w+)\.prototype *;?/gm, function(_, child, parent){ - return child + '.prototype = new ' + parent + ';\n' - + child + '.prototype.constructor = '+ child + ';\n'; - }); -} - -/** - * Parse the given `js`, currently supporting: - * - * 'if' ['node' | 'browser'] - * 'end' - * - */ - -function parseConditionals(js) { - var lines = js.split('\n') - , len = lines.length - , buffer = true - , browser = false - , buf = [] - , line - , cond; - - for (var i = 0; i < len; ++i) { - line = lines[i]; - if (/^ *\/\/ *if *(node|browser)/gm.exec(line)) { - cond = RegExp.$1; - buffer = browser = 'browser' == cond; - } else if (/^ *\/\/ *end/.test(line)) { - buffer = true; - browser = false; - } else if (browser) { - buf.push(line.replace(/^( *)\/\//, '$1')); - } else if (buffer) { - buf.push(line); - } - } - - return buf.join('\n'); -} - -/** - * Compile the files. - */ - -function compile() { - var buf = ''; - buf += '\n// CommonJS require()\n\n'; - buf += browser.require + '\n\n'; - buf += 'require.modules = {};\n\n'; - buf += 'require.resolve = ' + browser.resolve + ';\n\n'; - buf += 'require.register = ' + browser.register + ';\n\n'; - buf += 'require.relative = ' + browser.relative + ';\n\n'; - args.forEach(function(file){ - var js = files[file]; - file = file.replace('lib/', ''); - buf += '\nrequire.register("' + file + '", function(module, exports, require){\n'; - buf += js; - buf += '\n}); // module: ' + file + '\n'; - }); - fs.writeFile('ejs.js', buf, function(err){ - if (err) throw err; - console.log(' \033[90m create : \033[0m\033[36m%s\033[0m', 'ejs.js'); - console.log(); - }); -} - -// refactored version of weepy's -// https://github.com/weepy/brequire/blob/master/browser/brequire.js - -var browser = { - - /** - * Require a module. - */ - - require: function require(p){ - var path = require.resolve(p) - , mod = require.modules[path]; - if (!mod) throw new Error('failed to require "' + p + '"'); - if (!mod.exports) { - mod.exports = {}; - mod.call(mod.exports, mod, mod.exports, require.relative(path)); - } - return mod.exports; - }, - - /** - * Resolve module path. - */ - - resolve: function(path){ - var orig = path - , reg = path + '.js' - , index = path + '/index.js'; - return require.modules[reg] && reg - || require.modules[index] && index - || orig; - }, - - /** - * Return relative require(). - */ - - relative: function(parent) { - return function(p){ - if ('.' != p.substr(0, 1)) return require(p); - - var path = parent.split('/') - , segs = p.split('/'); - path.pop(); - - for (var i = 0; i < segs.length; i++) { - var seg = segs[i]; - if ('..' == seg) path.pop(); - else if ('.' != seg) path.push(seg); - } - - return require(path.join('/')); - }; - }, - - /** - * Register a module. - */ - - register: function(path, fn){ - require.modules[path] = fn; - } -}; \ No newline at end of file diff --git a/node_modules/nodeunit/deps/ejs/test/ejs.test.js b/node_modules/nodeunit/deps/ejs/test/ejs.test.js deleted file mode 100644 index 624157d..0000000 --- a/node_modules/nodeunit/deps/ejs/test/ejs.test.js +++ /dev/null @@ -1,269 +0,0 @@ - -/** - * Module dependencies. - */ - -var ejs = require('../') - , assert = require('assert'); - -module.exports = { - 'test .version': function(){ - assert.ok(/^\d+\.\d+\.\d+$/.test(ejs.version), 'Test .version format'); - }, - - 'test html': function(){ - assert.equal('

yay

', ejs.render('

yay

')); - }, - - 'test buffered code': function(){ - var html = '

tj

', - str = '

<%= name %>

', - locals = { name: 'tj' }; - assert.equal(html, ejs.render(str, { locals: locals })); - }, - - 'test unbuffered code': function(){ - var html = '

tj

', - str = '<% if (name) { %>

<%= name %>

<% } %>', - locals = { name: 'tj' }; - assert.equal(html, ejs.render(str, { locals: locals })); - }, - - 'test `scope` option': function(){ - var html = '

tj

', - str = '

<%= this %>

'; - assert.equal(html, ejs.render(str, { scope: 'tj' })); - }, - - 'test escaping': function(){ - assert.equal('<script>', ejs.render('<%= " - - - - - - - - diff --git a/node_modules/nodeunit/examples/nested/nested_reporter_test.unit.js b/node_modules/nodeunit/examples/nested/nested_reporter_test.unit.js deleted file mode 100644 index 612adcd..0000000 --- a/node_modules/nodeunit/examples/nested/nested_reporter_test.unit.js +++ /dev/null @@ -1,94 +0,0 @@ -var testCase = require('nodeunit').testCase; -/* - This is an example test suite to demonstrate the nested test reporter. - Run with --reporter nested, e.g., - nodeunit --reporter nested nested_reporter_test.unit.js - - The test output should be something like: - - nested_reporter_test.unit.js - Test 0.1 (pass) - TC 1 - TC 1.1 - Test 1.1.1 (pass) - TC 2 - TC 2.1 - TC 2.1.1 - Test 2.1.1.1 (pass) - Test 2.1.1.2 (pass) - TC 2.2.1 - Test 2.2.1.1 (pass) - TC 2.2.1.1 - Test 2.2.1.1.1 (pass) - Test 2.2.1.2 (pass) - TC 3 - TC 3.1 - TC 3.1.1 - Test 3.1.1.1 (should fail) (fail) ✖ - AssertionError: false == true - // stack trace here. - - FAILURES: 1/8 assertions failed (6ms) -*/ - -module.exports = testCase({ - "Test 0.1": function(test) { - test.ok(true); - test.done(); - }, - - "TC 1": testCase({ - "TC 1.1": testCase({ - "Test 1.1.1": function(test) { - test.ok(true); - test.done(); - } - }) - }), - - "TC 2": testCase({ - "TC 2.1": testCase({ - "TC 2.1.1": testCase({ - "Test 2.1.1.1": function(test) { - test.ok(true); - test.done(); - }, - - "Test 2.1.1.2": function(test) { - test.ok(true); - test.done(); - } - }), - - "TC 2.2.1": testCase({ - "Test 2.2.1.1": function(test) { - test.ok(true); - test.done(); - }, - - "TC 2.2.1.1": testCase({ - "Test 2.2.1.1.1": function(test) { - test.ok(true); - test.done(); - }, - }), - - "Test 2.2.1.2": function(test) { - test.ok(true); - test.done(); - } - }) - }) - }), - - "TC 3": testCase({ - "TC 3.1": testCase({ - "TC 3.1.1": testCase({ - "Test 3.1.1.1 (should fail)": function(test) { - test.ok(false); - test.done(); - } - }) - }) - }) -}); diff --git a/node_modules/nodeunit/img/example_fail.png b/node_modules/nodeunit/img/example_fail.png deleted file mode 100644 index 78ff4258cd574420da27fcf38b4711d02db58a92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38642 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 diff --git a/node_modules/nodeunit/img/example_machineout.png b/node_modules/nodeunit/img/example_machineout.png deleted file mode 100644 index c6bfa27b56900e91282095c43b34b4e67854a0cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 422136 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 z z2ec?Ut&GRaG9SLs^rRHEG8*WD^7pc|CQ18f1%HRT&_i zz+4<({C8brODwev{-iu+gn{o)OW~@%(LkdLcq41de^RN7K89Z7-|@zTZsflGBwC=S zCBEkji4fZ(c+^tU9rvp&&2lN&c|$O_!!wi4cXP(ctXR)$C{r@mGp2YNmLR~fk>1bA zv8X>Yfu(1~Ly-AwT3l7j=8A0m|~yLd=>ddIA}AC27d<8j{L;`t?Z zZ0Z&vHUMzcVzwnA37`@4XEpm(OTcA7r2S`JC-dPfGDYV@d0;sH23OA2+Wtf4J6Iy6 z{_6uiqU~_z0xIGv=rm~nO;~OETyXwO=g|D<-!>mtLla9}#@+S+euryUI^WAnXQ1zG z6CP>A@a!*6RZTuUQa0Yf$2hOk54dzZNk?lss}`!BCi19`5Iu|#DeaW(>#^NS;3Zd* zRc=Qgg7i+DR6iYt;YLxG=1MvPyrMKYuR8_}grsTvwXgC5;o63Ioh0b_(derl$@z-u ztnQaRhUGc{t1}9K%8&NT44Ns>mDxU~A2`fj1)9^0o&k+mfgQb!ZDBUgxo=M0GCCYn zZtktygBAal7Wna~+92Vc=eGaHqS}4B#@_OU|NQOacb?$*vnz1C z*(9EPeJ$4d2-v9A)9a^@M3S| zE;`SMjhK2=Y(b^LQ;0rsJI9tZKF-G(u5fjc_d=Y-aUnqa~PAs^!jn+gD5`r&F5F&C~m}N zX}L`3-XbW*98iqOt2i>F0>8|%_?vN$a>iWd*^?-NLPoSpU;`0r*iWG7PNkD($ozFZ zEsj?;!;JP+m$P|JrRQhJxR^TGZSA7LYh{yDL1FT%)Xoarbly!;NQnV`53P^xRuO=2 z%5}xUf7BTofm0;#(=`3&Z+FbRbG50#xpG++{Cmt>LGGo83O^?|G?*&d+i^$X_i54Bx@D4emn zJ(boCSlQf78AuXnMfr?@rDgm%lDeKzEH0Orh##imDLLW@|Ndjtjn&df=-AG z%rzjL(d(7h$amA7_qorqS=XlVfObK(QuXH&Z#;#CK~b!{EI}t(%lgjF>&n!S;M)PF zH#PBu;G?uTuM7MY{3`+4*QKt`ys(HdoqOwF9;$H0H&2t&X{D@fDeysk=BVb!*|k?} z_JgnTnC z%kfzjp3*mH%`Mq)>tJ2yi?N;L)Veh;${a<&X9L5(ZhOv){+3l)nrNczd+Bm(tsQ*> zx61JwslR)o74=&VXDw+_nN=9uPnOHst~`xuq({65uXsO9MUH5N;2{cEQ3*BS@jL}Y z!=HT=ldAL~HX{}bmFUVLq!JL}RJw#ICWYu=KCXld=ZiyUZBW+QpQVF6Q=g{i8Kz>G ztpgmrpz5R+rhA>4AzRH?wvf{v(((5{1(c{Pd%41apsJIDixIbFYu?RFuSavPm0UUcC@U%0hiD8$VVt1j%COrmmV zH1XyqqWZ7>757-=I+D9RtdSl!bt&BDuf88L$6Z$)d?_qyCG>S0`UH@U9Wz~BhLOnMnO1+*4v(APx%^mdjz+dBR;>0&C);b9`<_e zZ(7tAg^cUinC+j_RZ(ez@Wt>!+a5Zt7b`g~%vYg=1as*n&y`!p#M9IEC$qZ+!~yyr z0{8$xo9nud|JLtteRkxWNd2`nHEKUkhm~s4cf4eaE`*NDC{SN_TLyujw}ycr7Zl)p z_3^AAFJ{w|?d^U*N5P-q(!qIQ+2Ib^s6pGi@yT;Y$f6rJLQApz5UiG&Y#u4$+)R;6rjMiC(jqUogG;e7R|0<;sh>bQGe0Uhw>u;&;cQt?>j6lYJd!P``UT;(Ce zMCkuvchw)B%Z{8I4a%h|c)bX>r$-gC+0_CJ(0A4Dcs9?sxZ)N)nh3{V9 z+wmd&;%J(BaJ}_jOaU2vZr4-p{Y2JzvMGYkV(Q)gB3PUNl=jhD1AGX`i*v4@^J9hLsmg8@IX~BCBns`WXYU2Z3==nfU>rg2TlSkEv#QS6&LBMsW=o4hmlm`gW&hOzQeF=O| zdG4Y`=Gq`G8D?Hn zFeMcT?XsH&bcv4mepXw5S=D&t%18hyr01fv{3*%~%DXaUcuB1oYE}-#&JfXeb#dh; zVw^a*OP@d-ovZiS{6;Jj6C%vTZu06oVbf|I&Vv-k`|M2IiQx(&M4={uD~*bhk^q)C~CK}30J1(GKazO;PXk<{LR>b@e223G^a8+h!LChRX0DAhYPucv(DU<%$nP; zYXurQcSklmYZ7IMuZ{K4fZonuPVjF;Geq27XQe5uh@#rJ3GzD}UHuO#&5!h&{EnU- zV-oAw%((j^7IZ%j_6hlo4jg3ox}Oh@(Lue4O#XGg(>LTRUyKYG2^tRar^iHpob9ar z(a+j6*8fw;2r<4CjfeGiAJglQ8s|z0KpE(J-TO&QQI)e%JhOWoi$45Z+Tpn@P(duA z=kN9^J-KTCU=32kORwekjAFmLA1Fn)(_)~QiU zauTk<&Qi3qt8YtCSV-0G<7l`w?}6c{%efd8=j#{IwgGcxUNSAk8MItnsHbEu9geo0 za+m_9u~VesA&(O1K9n^%=nEcBt|PD}ek*`hmSA=1cF)r8>1F68K^ci00_LfY4*p2 z3o^Qz4^Zz}xH50dYNfP0{`8v-mSDeJwNN|1kO|o8ezQc3p*;WQy0UzUO#O(<`ob14 z{l{IO0U#s`tq{P?1TqAjclzNu;sStm6VYKrN+CWmmVB3i^LMy?*_qA(NcR8byYVmI zynp%L85UIFxJ^Ak;BB41GAB$0plVO%GuO3T9#8=Tnu`-g_96*8RX56i;jx(o)~+K-V?FEd_- zSR0O!+ba3iLPMTGdN^&PCI^z*%C{`r=?H1wh_O`gQWTYFl%E+xkOTYOP|>J@!DGzA zLToF#MUk+-R`~k82XDK^6qz&fGmyky)aBK?|pOlVS(K*QvkbdZ?hK=oIauexD z%%vbVR+tPl{{5q4a<4YJ5g-uh@ie&!di~` zN#qlVFJp}$BfXP>X^<-%sECQ3OzJ<7!RJ0b_HK6GE(xag;e9+_l>ap}o#^7_X$5v< zM(gza6xggmzjT2^nMf%v4s_tD&uu%}FRG${pk)EzFi`k*g!3E;TCI9GiU#M2auVY7 zzFuT}m!o@+^MY6CT-rpJp^bu%q$rG}p~Hwgp!&W&&k0H9ZXlI5T0c!ZhA-F(D|jwN z3r^#UgY_a_NU}c*-eGjfFscX;x_-|QU4E~@08>wvbT!SF{oI=mqt-vG(OhEwzNsfd zV*I#>@RQ^9Eur&TH1qF3ZffeXZs7nwW4oF`c<|K2E6o92YKX*@|K!9P+=c}@T}EPk zD^+>AG>K?QKbhW0+>|@~sA8H?L)Ir8ad=oaCN0df9#}v+K0F(SfS!orU@i#v(Rv6o zu+IY1cj-bzE&-N$Jqq}snMdyc$ ze^|eAsLqM)c0M$TNsj{x7M)kd z3ngSucf<0?1lo_sf{dk@X?ur#!XzVHNx0R1t%S%N}I%r<@ z#!k~ehHvVCKSEO(1jOF13zw*8ekh*PcY z@0QKB7*|<$1M23WY%w1PES9DTQym0Xu|gJTK@W7#oKCT`KgPZ6XqV3=ix8|nSSMd^ zZ)P=WC=kC5S-&R`Ljy{Gw;q@jGes%gX|;X!EnNrMnwFvfU~X-JD&_hw{ET zbxE!{8P8@NSvk|IL$N+h6G#{LyGk>Bk>I;u>4nPxhX53-Qix~%%1HkC<@pP^QBbWW zH}25ymKhaH%pEH4SN^I_#k_a~f^$vDmSTde0%cRk8MUd*c;lc!O4Gm44*qc}*WaE= z#<|_$Sj3jk)$~=QaXD%AHjITd16(n(Vgyy^AMzJ0Rium{OM}0D_daF$KzR!U_$Z0j zNn=O;N7ZnD$0%3z)GHjOUYdNRDFnek0v}o-MQ`Bw>Ef{FYzen7;w8j5NtUXpn-X!F5{)AKLexRldcOyK_5u?qH>41H+b8b% zCQZS%ha=GfY?Wr`=1 zQ%I>;l<=VT+-sc82a%LDmAhB-F^dxwJpoc88WYj-P|aEdV;5s*PH1q<&@sK74JxFF z?aU-4oc@mbLCLS7Zx!~{ra^gw;_X;(F*XcQ*sU1*_Jv<{MrFohJ$1{-zAmhd$=HkA zVWm5vU~CVoZo@}qxhbH_*5$i;SUgr;mrkSYGHAk}U&=y%!pvt*H6`35S{@V(#`C)Qi#6%Np^`;8@w;u&1v?=H-$?;#Qms;^`?L9#?+n!nM^VHEDNIJgBcIr1E z)5_Ah+MQhith=bw^F8zpdsh52j6Nqy0x_uI3ZLVU33;132qH842iie4``9X<#(e-w z_SeR`8Q-KD4*msc^KKL_82iD2-W&U^8q%%+%p|(Vy-^E8K&lD4#n%Oj%;=oi!_!l% zEcslobTEeB!|PuW@n?JzaOpb2iCf{W3h_e_Q(pHm7ePZ$O~dE9ccAV2*Kp^ok2g$1 zV5$wG)YW>6n+qs(Rfyhm&gz_E{PD5~_G)FdTc^RH7`3PXlIfROtHctH zthKsZIC;?YqMXOP{v2*|-NC_>LG%^R)pMVtQ zLDOhGZ*sQ5L2FY((mX+U*ZxP*~1ns(8)L5#6LK+y2%ONIh}^V(byyIUh=9PQ9_;gvOB67f52!3)qhK7q8OWkuY~r|l9rN1?xV`4 zU@mDIQ6}9-3>&R6%TyCmTlS@JmNuWmFE%=|G#k%#52s=n=@femPs@olAuz~r{IJe5 z?ehD`i5jV5WomxR_InkO)7|p6|6VuC6u#zk0}v#0J4CK1AqDgX9~anEo6(>GI{MDL zK)<&B$9uEN7_!&uuanM06nX|+C|KINA9ID$7D)+w2Bp}!@L9LRHrh*|H5X9WQ@{W= za0m)c*zt8a9am;q!PWotzVB_juuMYka*CAFO6b>ngfwZ3ayVJN8)Yd4F2K3})I`iJbE?_sB^EKm|BjWI)@!oM^%EJXL$9Ak zTt3Z7E{ryNyV0*qlW|};r~9NiQ{8Q!Ws))c@9s|) zsWJduJ~}JAU9pN3F;C}>t?)XXIy!76^vz8Br%4P@Iqqc;cI#Lm z^5{u}D$J@kyKfomIp`$_j}Q2`Z)wHFeG<3cpYugax>2Ust)#9ITT2=53Nkb%)!56y z^Wsge(P-WhP)<%&9tv(KlBe8QYAOW?#Lf7CM6^!GV0|dreby&0DhLb8J{giguycf9 za&bUlsB8y6gF|?R0`Da<4g#nrBBOVILTD2wiL6)$C#&MZ76U<_3>>PK9p~;0iddX3 ziMeDyHdK^nnG&@w6f!6XrT)C3wiDIy(q)~P4F?BB?i=<*mhqv1Ei$K@Ayw@Y8w2t$ zNz{pVhA3(Xz#s}rHb^fHF3uE^G`(+zf&d3YIxm1f@gC%tclPna(9)q%1-0`#IL?n8 zspQ+AsN`|m=4_2WX_O>uU2s5OC*qU*P}C7v0=6 zhK2yh@1!AFgWGVh=1d`3z1xwpdS7i$ixs=>v6d`cxO4?=);8zVpQ{d{bs9<*77j!g zEx*=x?lg~0##1Ub5)qhVE+6ljnyL(cPB?7Mj?7JCX4!W(_P;Uw4;Ug`4jJ-)c*hFb z1|fg>ZfDCsQe^hAf=w$i+hPU{9kdZV&-U*~R7rv}#Q`kTjC74BD#8RBCTi8#f0N6< zDqx(Fl^>;-o}i(bis?Y3hP9k;r>*%rH@#7!LV+Wcg6+X6zgxq!?(!7`V;E}LFI<4i z)9$&vkK7mCSj-wDEp$ruBFfgkGfUk+bI2&U=H*%S2(v8?6o`;~>&eT}8d55;9c zyhpU8qvd?!=i%^6UUg532|zaT%h*`i&;P3b)aGr&=r0*mh34HiXMpkGyM=ThcFjGd!L?DFFMoB(_BgQ= zM#vaR;P2Wxks_MIhb@}g7>&a!P9O5QWE_BI_Xc(};+x;vtj|y()7fgK&7*kX+-n3Z zRMwO+8!o|>JbK8`j>g`^xPhR%Lgnq(`GY;DEBNZSYKfc=N2krTr@|-x`|-t_<;8`G zHLZLQN68g6WXi%L(1#u(V|ltNQtk0~P@eLrdRQjun9Z?Ui1 z9@NFbVrFPK1)9R%di_mG_sEyOF<}WjpOnBe7p2=98XHUdI%|vkcla7BYtu@l6o2~P ziY0K|1Dn~u5F$m^W_*8`s z_qiIYat5UruP#Bps0LGAj$B3t5cEja6A_Qu$>Y?IX+s=F_($$AN} zpi|ap8M9ef`T@ooa+ovGTTBih0h*4)FecY<`{3-SXk>hJ-{l2UKY_z%zRnSy2 zW&U$vAD4IRDjqM7`S!UpP<4s8s{qL4`H^C$4LrwdWT*!OEtgg$gcw6j^QHyeYraTF z6g6?kgm(rVjaDgzm_SV<&HO_06&CgZf)0VVX6P)?Ga-Gr*yn= zsbrh8wQF4txfst-<-w!%u*+4InK9|mhu~9V-zdSQk-~eHS4S`UmUe0d^x*4h8hR{W zE&DM(!y(G`OB?^WY6{t=)ZAZ(v#>m8i;NLB%f3Tw@q6<*)U=sv(n0AS zC6e()B$;!Bx1RmN%b1TZ?0RNiEkKC_;l6f*NjkN=4@9=~+bi7_RqFmS>0bb*833i2;{jmQaSj6Hlr?t! z2c@Zr`sRuuq1wFR6bg6!!Nzw(+t9w|95GCTKB#gWuvD{ZRGr3MoJAt%X#J);Ow<2k z0UYlPoNa;%`VWNxYj=)AaE3!}xanC3%&?$aoVAKCBg*L1sz%j9)g3YEsN3|1__zSN zhx|d6P#tl+^Aw-GcAD0I^ocL?45KlCsv4E;3BIGRR(R?en7nTr0_GlK6q32N^Rj;z z-Mq2B9D&sQc8_Pk^uzXji0;P7RAxEI`n%?^H;L+Eo|q=yT($wV;jsFJOI5i^wWFL& z4k8@sybPr42A)wDfbrbbMuM(1cB_V6Bj%KAs-{G^b%-7~C4fx0NOn|OeP>F8Kio6` zs9xM(@}_$-u+q4X;?!{tt}1sR%Vqgc2?3j^4kzk%JN#S49^pV}z}**Rm5Ay-8hHU7 z&SiRn$rf^0v-XisJ<#iOwW`V7^ZY1*{NeQSXG%27-A|yAF|PLK96rL+&CQ8uK=#+W zkuuQ$f_I}zK8Q6a@o28wWxI=mvC^ME&=*Sw`lu{~YGqnjzez`$!gTo7{@uPy)zuaC zwS>(;bN=(zv?fqVVyZqGY4=Kx7c6(a&LNY&WwcaRM0gP$FyH2r!pQc)LI_p$Y~(K5 zoKaaoM^`JNZo4KpDNCz`pNH=~)3)3n(m>ZQJ~cOP_Zp$0;&e40lG71)p`}gHKu26& zmYlXZVfj64x(kaqb0g7)Mg>``?!C7*+_v_EpBX<+I=$NxS1WxhlY3J4VlR1;V4syU zIoOWHP<5gJ6^peZAfoQ06>Ye=B(@4GIpNwshm@G~KF`UMg#Ipi(ngFid}|ahJ^hn* zqSheipl_4_DjqX^=<|mP>1NwLmWHdOx30-;12;&tg9*kV4D@k)l4C9N=a9-+jIE_26?OZFP5Znq9pV`ef0y5(_nx8M(GIw-4g zSuFeQK5bSb=vYTtE!*urAvbL$TV!{o9_^(&KOHZI243$#n>U$iZgJY^Oh4GJR^C0t z={)+j*v)u!$P1#VG_Mf;h!+)-DM;jIy$z8Kr;{WeOj#?8sg2KwLW|GGWijPAGWSNf zsDX=_Dgo53XLTMq%v4INF3H)Sps>+VLyqPjyF7IaPQqlP)DG2X`mSYO&Vu3+bZ2I-^chjrn{$AgDeQ zvb_o~Og&lCO%Fch6o(pZ`OSq!c2EDRVny^4gCA}^Zm7pnaEvfbIP>J+n5t;SboV|a+Ag)&e;7nfIdi0S~8 z#V0z8% z21iw)Y}jXbl0rJgox{0B@jq4gzt06ef>qjtn}$zE!Vh0-8t4P&97$0asPa3iMAYJM zjz9!Ji4*J0=HYQR^`Ie|Ie2gU*GXb$(Yp%Bq(2Y@Q~Yzco zuMp5LEmO_SDw&b8Ys!jxS3u(bBN?Kg_|t`HPnz{0RH2f@(l5>?t*CbXn5|1fa3V_S z+hw&E%kj7p3f}l(7lW}h;$soG9E5ddQx0&(pc<>Y_JFp-S-zLj4GB{YojgoIVU$FO zS8iSknXh+ye>6#&)$Pg}ZKi+S)Ke*6YN?0 zZ5JSx=Yvb=?r3SkltXsyTjH>S?`Hmap@YpFfOlT$-$nlZGAUYeS$%O~jbR9Enpu_* z#BaJbeL9P1$$jHl&y(*3(L&gEKBzA2yf1gv-Tt;y+yNhU|5I+y{a0?U>gO&x;WnVt z29>C1eVNuDmM>hG?eo5|6tW`Qq}OQv$Ps+I`BPcPH?1e>>&kBIq@aNAz2hnOOv~{+ zd;hOOt=DBQOpXL_zvy^74<;dk0=U-@KiXLi&6n=UzE!Cx5bMKcVT`uGn2tIf7u$98 ztofPb3sUe3fe8u6Wn^ZduVH2vp`0$pBw@NqRx1%9(JLYJW9MfUGJ_N zQolg(3(D<;MY$}V0_;PqI^;(_olZ|67-e91a?zWK{4o6loR|V) z?@uoNwyqgLheQ5t6fyUi`8>GGxf)0P4U0=Ch_~ZS%BF)qTHm#q)!=?q;PZd={Hgy} z&yOR9hCo3Q<#yP(e}CChsM2Zhor=M?aCdd30K^mB5AzdZnjn%Y&;Ks#kniboyBQmp z$WH>ls67dBzyaN3FUb)U6i^nadF0dQQIV~V*Yk!JpsnJns}>7E;?cbx<@1Ge`^#UG}`319PDD&+qVupF+zMrzS>7J~DLgh%@MUdn%Aq2le$vCX z^YiBBzqAK_7{#=mI{5pz=R@WFhZ7XQ5@rcn@0Ec(Q6HZ5QYKD#w1k&6v2cc%mf# z{#Z;@7lFt7_H_Qox%2HQi^s*Z1oEe6z1F;YW>Jkh5#BE|*pB=6Q(&-?VD8sfs)x9e zEY3;vH~Xk&fe!qS8+~Bk4jv)vxi`b+%gyyv@@t95M+AgE&4c$M#JO$5!@_*#w5|MCn-@vj9 zaDQy+xyt#*AzQ)oN)*-7*7x}>4&YYn!nA3o|+q;(L2Nvt+9)Z(LIB=Twc4$8uOwiLac2Wz|RC%qTx|JTzz%&0}MbQYR+`?g8*ow znN`k2a9esGug{(4J7V>5=UECli9ro6AYMWK`HXDO0*!^B zQ!p1uZ*_6b<%ccdkqUaR3~!)8=Xe0^vIo>%T8{nbXYBC)t=lUt-C_ZODHDAt;deYmxKn_nK3`rU4h=5L#}1&Y<0W;qSD;mgV)- z4Js3)NN7@k%Vp6Ny|Rw0g5XD)JiFEDl^pMR@hmD}J2JG^WHdVLQYl1`VAlQ(tmK6K zt8@9Wd@E76|G`-?YtIz$i+{j0ppT~ySZ~ z+QokCY`@PA>W|qRLHc#_v=4+jb=v|a;WJyk0$ry@cXCoUEUzzaP^%#U95{{p^l=jN z5tEuIQDo=J46d!girG+I*&P>_v2pQIjv~q!IU*drSl|ncsxwK$jpF|e<;Oy1ISE#R z%O1>YE#QHW=*w*j^l=%$^Zgi7@LO)!+C4@BAvJaMo-BoDOjP&M+I%H) z4t8>r4%}X^f&D`e;*D9JK)=~U;p$L4H;5v^XdI%>JMrxsO!AFrSV+g~iGv0Wf-yQ6 zoo36)IOIrKgx}abngTvU36sIKX7D3#lJJnXt8yy>wcAl218eg9=gpoch8j(FOqNfc z5635Z5jBz5^pBBS*80Tnd!h-`5i4@9k8*#4`wZnKZ3N9mdV`0oMPwF2gNOa9sT!5@ z{@jpfe96az#Z_G|c0h;lF(=Au5Ugp?c4Ei&`i|rq01^j4XHQ^qn;mV>U4iDkt7PZ3pY;K7SP6Uua{sM#^hTeM>`J>=HFMu-b60%8rT|V)Y4+$-BR9%^2YR)QSWE20fOc6=2D|5z@H| z{~-!vP1&eLEUpK0WrFW&+TH3(TG<8^q+@fxMTG0J!T;$%5S^y6IWPD;Z7oW4*If+( z$N;G%GV+TN0xdzGLXXR4%vYj0Y#b$NCEOp za?mfg0GK@c6nHSecVq>k*N#$<)aK9sNNuFJh8{hTa0Lq1rkUA+mH|T|0}gQ z(tkRUZG$EJd1Zgh!59sa+BAZsHU!+rv0l_DmNKelAO}jPtbVeVDxDger|fqbeH!ak zk5Sc zLV1o9<)EyeIV_!!`}_5y_ILM>`TglV_9D2gs#^cl4yDLwgZiN=q3nKYXMr>{te(y| zvjsh|24ub+Zo^7F8!$=lURisc#C=&YuK0hr@9zW-d{rw4aGp3pC zR~<%yC`Y=|a(by4m`2=(qj3!qFNd~z-3mFar#xy#bx5RxXI#ZzgNvqLj@!3H-ZME! zmFE3JMnJ5TvfN@QT2rWVi@#1#ytHzV;(-KZewUn4TZ{1SF=AgHNEr2^fGo$K3;l3)kaym_e{ssgP4gZ_244TljGD+Xbq<*HNQ@i>Cs%}w>W2* zPqVfq!u%?Sj6=jAL%{bjFmasCYI*)VUMsgj+FnE-e`cN zH}1Z`pJ$-W=3kM!-GqGi6`E#wYX2j>Y5srG8>#;%y+MseAh^&px6Rsxep-uSi%j_e zx>SmpEH>y;)aoLjOOe3^^?{^|m0FbKY31p@SY3!|$v?yT|0!?s(>ML1GGq&BQd9s! z<3rAKkR+M{-#o&Ibuo9fQgbuO*$a_Oty&7rH&+(NrhXCzJWx#WtKInywU!x-fW$8A z0S*&SLRjE#I~?tQKT=^Ezk)O~pwl%mcWFUg!s-p*Q!r^avfAoc03(clVye{YGUM6# zKF-JRK_-_jdYE*OONXHwRjUwNv)mL8A&{l$H-cq@CKQr*Q`y!eOXgS5q-nJO6X&>H zC!1U9nD&Wc4prgsU7TqSjnF@CteJy1zJSB>c@;=bp=~_;a84av_mtY(o?f?jB*&cc zX>Oj7R(23D_3<1!=fC0#@V3zBO_8oS!wnXm{aLteI3og(MG8?)1OSpdHHFo-=Qn=l zpt#?7qnho~(1yvzf}I_giW7m{J$gsTfBdCPU?67_L{n)OPrgW5VMo)LN&8V7uIr7` zN&ft|?r4a%A`1G+>V<_2i1b|aCS{3Q3`at40-+*mY&}|p zC)6VeAhZF*M>54&-p^mJ9d*7=WWpCkqe}w&93)epnrxQhrw0R*(SFA}DN^ojvBY5@ z>l>NLQMUZz&3&-D)D_zqJo8xVT1r>zTf(O;zyFl`QW*5%A8iWWyv_k$Nu3ogmt=j< zRAyI)_yk835v=HaAC*0v|5-mr+&HfGs-i{k(BbmYClKTz2wqPESBJxIk<=mFzwrz6Rs+f-yQ7)CZ43dW zelAM3y=fL?;gxOAQY|@j!COF)E}89FG1q%l3dq>8NJt%P)W4!9b3>H;4tA>7{9?00faa#9cZ*W zdYiJEM^EyXgF(~Gx>AfJl7P{5rIqEunmxB^anOs3o4$Y7V+s(^F27Xiww_9lwAm1h zfvAL?p%i$HFCN(q!wCq0?yeECl88-sB>iqYa$L0i5omqd*L$Gcm0HAu0}grjuEuC_ zJ`U0}96sUWILfJoX5;_A(1D~`KIl_M}SUXGD1)v+PV$}Lmb9`666 z=^Mi{d7iHCU}M|X#R}G3JhaB!H*aK(V2AXPveq0&I{MCCg{JeUv1aJ+V#SH8Vg<-iq#vf zje%%=C;WxLc#S}-bR%**?0-C|EO)_Xkx45W&Z)Bhb0v-dYF>~~WJPE?Tk4^MVnt|K zA6k|~0T!AZ8|LDftHVF1rUhQy{G2i+sQxuRh~E9|D^ifMk^q+kBi^v?_aE;IJM_lNR@R{r7S5IgkdhiQu}1c&0>m^?gFi$0 zj$KzNcc#Qu3NkXpaLG2{wU}I0|Ae$zbu1X6-%jg?bWgXUn%K5vG{;(GVbz!4%>rT@>93!o>05{zkWX2&>?mlVSzpf2#I z2UwJBn46QWKS_peGx|7*dAep+imLble!rO=r>hqc9y85|SSgr9;dO5-`~@4z%;56G zAm-v%%f||W6}(a#*!Z0_w3ByY2yZyT+7<4cPy^xTVA<9O>n(T4GM0pr2%#-0bgkv; zStGGfy83RtFT{0wK(z@6yAioqg%ww*=BS6HjU)_JgV2kw_Dxe#p7GXNP*)8fca z%}k<#ROUHs_sJBb2CCDTym5sFpTg-fO^Wb+CJ0vb4K)5=*%DgxB(G794xf&Xx7BhjTpikIBc#Y4^FK&zZKKD|s z9!mZQz{fyqUpOCO=CfpoNo(VvP$Z|s{*jbM-tH?IQfTsh-q)S{^jDXk-o~>@lKW-2 z%MiGA5#EZ{V7@t}8B9nAQR5_=LpY+Y1_eN}bbaFgknavV|8wJYR-yzB@RR777TPXA zeF3fmnQo_pof4F_N56v|UwT~1_>Lx)fm+}}1|VtSrT!6?eY#=K<(fwUavaz=Qdz}- z-EiX~{Ek3)gFB8+{M*?3+k#zR>UFi^X{D3T^T?;YHhONca&x)6AQj*Kr|E9HE=v@@ z7J}AnL^F|si2L43);e8eb(bjq&}rQ@+6~CRv4}7uSK9{Gb__bYKp{EBpw-a2cw)^~ zVAt0cE^Loim1(C})y0v^>RVYi&VxvRP;{UF_1gd^parLODwUuB4HADCuUwK+ba~ml zCkh=10A!Y(%P770Bnw7IHMK<|0WNNGYm4+kQcjgT-6uxcxVW-l{q|nsb^8l`(db&- zgT1i%-TeU8>*W+hHzggODyO<;Qi+`Xq$Ekh40|5qYi8;$xt<4af~F1sI~EbT?_$%y z+KmzAj8!t+-G4+1pf0;T^qtz~-HsYjD# zPbBG%jCR<@<4JHmtl1{`K1xuGVsXwYL+=*QpUJgt=nv>icE{JO&R7~ZGQFA{RiOt^ zJuX#k{A25A$bo^3IfJNW1OPxUZlswamM_z7uqcJw#~xnl;qN&ZY7hP!CiO@~{3_wc zA3A+wk%n14yvwl(TLjOZSs^N}SXd>cebx&rt0sqh!EMeY+O3F<-Op4R_ylO}8}B1h zmn{^+YFx*(qq}UIDD@(((`+B+{N^ThYn=e#@N_8i(zTS2Nt?h$oo@x?0!`mV z!G7tP51wwh#u5z0#tUhrDONVjI?{2SUfw#^+?_G0v9T3+PjyX+`~5c^M%yQA#B6t?gm>m3`E6IKkA!_dfx$7JbJ*i(VoT=9(=2K@-8`#wIQzHAv1 zR(BcKi&x$pS#?i4s|<~>OQ~FE8K#=@x+&*hXfqrFwtVJpS7N9-en@L08S;mL-f!J} zA7zvik>8Xhp?>X}>Id|C>{L%Cz#C3ib!AfElhDvITDLvVCLNe3x6^rPJL)oQ*9^{FOD5|x$#%d4!Yje$ozo0vcX|t;VhPk z*Xm6XBNKg+{LV28e+e@=B;t>tw8)maux$q#D-SW=wT?h9k~~@#KBj_DNWk7vkm!u8 zt}bn=-4mg2qEZwH;I%R^&%R#(z%L6Q zoTO|iBcLE$S!1M%rH5D$QpJeZ8*N>nG$N-*k@*T%!A%G9pb+u9l^aD_0vp4_MVeW8 zTQ>0Z1&|c^rIN6#e>!1Jftf@;>?PKWuNc353%iW{PmS{0TPY3z3Q#mK)S-?UF=N^* zN(^cGqM@A}l`1haW(0oFWW@McvZf>$b_{h)-N5@776&t5-*%vx4u4b*gg__RWVO4@ z(0BV@yevjigXj7s-7x0WM=38OtPLVY-3|@Jl<83?$OEn`zZ%JaftU!hjE?R^njJ!>8&!V1h!C@(A!>YTk`MsI58srw z*~?+SXkwlYiO9emo?|?1RRxDHB?1^mg5=`!g|y5Mr|GicvPCFBB`ZgS)bz;2WU-ks z^Ih609CEt*F0xaC9{rKK9Ri+jq84z7*X8xCUtfkQl-l@qO-7k=M6h1LH+}=OrMgo` z0AT|eDbo_A$aVuJ$A!hS*d|_aWVfO!XKRbUI$pYCB+T>tKG{eDR%X))J(iwTRyc52 zGDby1Gcb{VVWNtV+&kMt0$^w~7aD77Q0pULSWr;+1?FH|0fw1E^ z5OgM(^7V*xOjs)#P~A9^z~a*|3D-S)DK-G$H+h--e#M$AyU7M;*Sj7sA4kZfFwg=4 z{n8}ZFkz7c6CgMClZ`iEW%Pee7@u%(1D!yI8DBYNZBG?%TU~I{LcknV3Zu88SBM(& zHb7IQVGq&Jw8couj*Fwg(83A$W#T9uZ^&=ZjQ^|tyUy?2>32!O_mwts&N!TBT>1Wi zwSLkcx97nXW;j7ITC<`OmQvc&*b}ZjHlKkwIOx&T2-crTr4QD&@K?aVKD{rTc)q|g zox0%vw}=3KpieD-AnFp}1s0wsZZWsb+g4?euR_HmWG5(*#_CJQqR?Y2(tcKl0awkR z;IfK{ANP+wIpRO@-~d!3@@_Y6^;N)`l$h@+F0Yffs3EFlEhOs*&NHE7t*VV>Y_&Je zJdcVk%1Z_+!hxKo&n1W+4l*cF$x#p*f;Q!2RK$fcG|PhRE<+su3t0&K3X}!oyR7n>}j+K$EB;g22 zmm9|jYYB9EH^#!mky>;-laci3JRdMZ-VeNB*oBKPfWHp9PTObbo^xz)w8BdHNAlm} zK|cr)0Kms{I+x|o)Nl?l)9E%N16n5(>J|nGx9AAG@C9_`%Go(sf~(u{*|1RAiQ7b( zrNtlRr9J?!Hb&Fv<#F!+C}gQvS=@27Hq2pm*|PsqU*lP}_ZLU$M15eeBU2=15v$)b zt%*^tq>l}<zjv)KzYh!VoYv)gnDo7tK{mrQf+UcC!Md(GBtGY1Z1I%}hhqxlrsiKJia|rIKllPI z_xRkq9c6aLz2F-Eh2VVYw$C^G;OiQq7Z3%C0FcHuNhthF%4|{fR%vTDk<-Ov&D{Q5 zY^!M7`_U|_FH)8_$qn;kEIupK)LsjF7MgEc_hU)r5rBEi}4oS~H*s2ExT25?*K3X+7))C!7clFYYkR1h885{&!G z4^CFl5Q_Q7RiJgy^M#u08}e0ZnOD&NYS}`C({KH)W!u^)u_TIF;LV>6XU>6O29U3k zD#hJKjoX3D_N{iA(d8YIiH0>|v7s6N6PpKCqB|+4XcvjFb)Kn=&s~krFQ|(#-@Vw9 z2HB54q$M;DJ7{*l^imGasnD)|{b(MQT<#(6QRO1DTTlss0BYx5Dtjs-JZfXa>@Z0Y<#3#y$bjw@!;8R9-6KlJz2!S^WR^Z* zH`=TlDd=XZdOl{S9h`9!g2MaqiLML(OC=LZ5DG~MF!mNp$TDbis?r#Ar%fItafuK& zBm%=m(Pw`8(TtrM=_3*37tSZ}_KSYZruze9d8`oh3)YaNki$)VZutFp!wIKZqW00s z%;-(z5nnj~2L~M#$%4OO@efjf6Qn2Q&=&t?`F%jzEX7vZ#shC_6Rye1U+z*BFr2dP zQbpZQtAe29A*ho1I(f)V!jakD?|#?SJl?yi5O9UfF$pitpp&o>LPa|CJJ7FChX@}e zlfRG2AKTagOQd|IyDfOX@NF#c3l_Zo%-5DAeFXgOx^dgtkE-^Fs;`#aLaW)_es_uu z!AAyRlVzN;taM%JqM6O_Irlu)*zM^+Gc@69!>TSUU!t=NbW!dq*zThHbi4m(bTNL= zZ7Td>O$yXwzv81=i%W+MhCnbhe|+X9U|fvWIQKCs939lIj7*F8Q>6OWlo)L5_g;0@ z_*(42iq-483J4J~Dt$uLaT zKUqhPOV4fJ#s16;B2={2aIbmRGs1tqoR{%y6q5}LWKVm%p3gC#_v~^W(pD#PzZ5Mq zqIJ5?@2D}u(V(*D>|U?b^Pc&)`Q5EeIX>S^5be0%XHIc@p65ijMGwMkwWD9;%p==s zv4EOlzkAH`dtiBZWp1}MPoRr|r4~FeE}k#KPo}@0*7Vu|Sn!(Ow!h5MB)}}GKdkwb zY0owe=nmfvw!@-aP-U&Fdu4RmxyAozwVlr}I(7y}dDF<7vr+b+4Bx1hg7jAFVt$rh zsRtM(Uu5*9J!Q_0ml`cI>3Z)Owna(mt1bdMdvjM&fhw`ENqW^FAcB80OOInT4pZNt zEH#}jR35EI;|73ym>~l+gR`^hp`NjYkrlLkGq|>l^-!A%Y}twyKeKe1mL(n(6#6E{-U?t zyxV_Kr9zI$fGmTN^Q>)9XmoQ~W*m=)jiBdkiRJi8Ruj{1YgTQyeq+##se0Na%h_Pt z<1~Lg)4O?lG0f@XSPxS(@B0Q`WyV1oVI0-N$iaQ_Q@O28kl8pv-7Vf7G9)~7d)jMP z5Kwy-sU!myUGTG{E9g-1*B94XA;Ed`v^-}UaiXTK%rU40lf`yHRP~)%ESm>kwjoJN zBF>)kn|zL-hs%8t%1M0ql<}b z;V;+)tL4=&QOjT`F&CjiMfG5!BG4@zhnG#|atu6LOOGlHESisKUZf6+!fVzE?%T1$ zaNB;H1Jhz6|4QM~M<}vDaONNdGc%U#!VfMFY&3faFjHAvQ=!;l=~!%^XAeV3oBcpa z>N8Z711aJjqRYz;dAluNFVvJo-OYcUt-JFhe&; zKI?Ib%Zsb#4FwIwtCCU)P!uMPI75R%dvJ%QiAawdsxCzerJ~>NEUEvzl0c9xZIv&D ziNNI^0Yjfru1o|L@=hInXtZvI6Vp%|=wFv~ZY_(oKZCAf-6-`XMKX7WCEeaH9wj_K zI=KE`Y+{eimHsthjH9a7iHeObTk;wmO}UE^r9AD|W)Wl!Wi_tc*@!?A@KCY3Jy7>WpoO?MqtNK8|#+ zMI6$M&@I=USE_IrE8KGZkOPUc!2G4*GEmSl>OAqoUt(aKidE%zC6V7>p|^K=Xr>$# z!#(9xFBQmon0X197y5gKrbZ}LGjbn~&o4*Auw34I>4%Qi7K_2ZZ*;iXA_G5(n15_* zKt|0wXYdyx#Hl8`lgpq*A%_f)iqmo@Y6T3Rw#())OZ;?N9n(-dDBu|#6e@aD=n4iM z4|j7aiB9ncw}AmEH?~V`B`8gw?Xx-`xi8I5MJl%j#r29+W>GKUIJ0m1ZV8+B-F)W5 zrdndXtS03_4;&7pJdZpvAxXapICzrw{=3E3`tWrbQTyl}`Dd?h+Y8i)P{-r@$^GPw zKbX`0j`1eO(Sk6WY41uub4yNpu4(fD3{lOM>74iK#JwgDxCQ1X21d_&`#s<5;y$z4 zYSb@lNtSiceyekXHjabp&wMf)kO(p$2AOtBiKhs5E$jZyD2Rfj8IkGfTy`O=1; z*X_>i83TsM+mXr>&3AUqrqY=QyXJ}4+S4A9w!cCO6qO8xxqS=xx+(H@@Beap-w@%6 zce=?>&l)D+y5bp+is~?zGUyhe%e3-%$v4PdTd$=Ojf>f*BdS#xu+0TIX18W zg3a%b4_zB4>pyR&329F&1As@ZPKnP=O%2gHzKO4|vUj&R>nI|^XP#ei+iwU<M!lgt{b+3HdZ+6GU%)MS;FT(EiOkBS3*wf zTtQ2kQD;-l1^79QheeDeu9%;My@%SJU$37U(N25^blmtsZD-f2iXaG38WapV7?x3hRcY# zZ@%}Z{RIHl`VljE7NX!l7_lE+Z_Z93Yc^$LB4l`(+u(t!f_}}DhTGa)b^$dusXMgf z%yMS`EOTlUU6u3g^ioMELZi>G7?(S?$KykkRNOV~vp>3?f%xX(RNB466bTiw0+e1r; z)3&QYHz;JY?zsk`WCs7|wr~{D<9X5Jz;mg)avYGb9tyC~rsH-by`Ma!Ij7`2-6_I) z)c0oHeY`AO=J=qLWYWTZA~R1Z*m~Jd;on|m%Tx+bjDa7Xj)`+XO^aM}vR`cc>}^pp z>gUH#orBPyH~Xkq-`3l{$sijXv79Z##jc^(e>Lh%K#J>jzvE8k4KHPHK1gVH28{#kMX?O5STv=1lQSWv`Yi&r_;>?M#ZxP+Aszm~1$_Y%9 z=I8+-hIemmVV6y!{`7Js+h_g2OCNX42OA<~3=n?CUDP{g6*gcGCi$-CVZO9uup6k9 z@Jm7V>nSoFIivu9g0*jb>Bm6q#*Iw9mizA6xUa~hXyidk@}GkOFN2L}@_B;L3`9ot zh0bE;QTtXSgMp9~m8xF)x!8WwUjKOmb+3N?jjoo7MFn@_e~NFO1Yc_PX7h5SPnmC?M3TlIo>`sFL-R{sw{1HkS^beFrQ1dUG22vOZGM0qXNXGv zOr%d%zP<2iC~Xu_0LgwFE?BbcrsL^Q3kL)LMcM|0dXC?^+@_C>{r~Iq!;?sn_B>yR z#ex_BsA2i1OaMG$8(Z37j@9UIO**a-^B7mq`>~olRU1$1@zvaae0h#}{Vdl!9Kmds z<&zzU|63#?>wdtQ}RzHr9(fnH&sfC>xsqWZc-wKTq|i$mE!A1Lxb zMZ~*XZGP9hslN2RcKbLui_?2U0_56oZ68aGMU30eKG#gT6ow)(pSj;XS;+I;i~0af zEY_}=t~FQmxUf6p(W65^Z^yj0X(N+0hyK3y`PviMha+lh7*_pW^d5aQ+j=3ujed=) z4#Or|HSO(H&Rd=m>1=g$4XVidJBT()7(F+AKQo-dfua|jnMIXXl05jKtZq>klkc5O z`)RgJ?MVlSy&aic=F1v|0xe}T{!ZhQ1CoPgnsxr{Nm;%e#xOk#A8{!y=-rgkP?Rb{ z=+T*nBjSx+*Q%0t1dkm@{%&}OTWQZu3=s$~c>j_f;jDwlp9PDMoOpktXqYUm&NpH~ zJLd9j^yTvGYqY(}D5!jMo)1#c;T`fNW1{wub<+m%q7G2pW2ZzkTGTCvNq zqdLQcK{VSsKJh-D-A-x>}iPeJ;w`kYRZ=evx~Nhz3fa3X~uffY>gx<)h0$( zrc$TL#-HJ&=?>f1;eI?wz`*%xR5k~r^Lr)xr&>_QL+vC@lnQpZ#G2y>@3w#{Pk&ZPF6jZJ2s$ zf~e7A*R#@VvRhrn3^NCXeMFnk>!ktOaS$a%iZwPz{e8KaZnK+b>Mj6K%4+-hw`Yp^ zj=tvIX5*=pCY{jwl(bhmqjp!_+xWSwdp901UY*=}5# zy+cbGETK4{BV=mdZ~SinWS9p*056&bls!&wW`m)k87232ft?j1K!u-Y(GrRzYXY7% z`(5XX?PXb}eh{b;`Up9>5q%~@nPH1#*=6fgbLx1c^;>E2*-ld~87@J>p52;i;IyLt z{5Z~!I%d}FJx`I}AeWXewXwBQCv^_pu*sedbf^h4%3R_-ziU}$wa;NMI6^4CO1)+r zVab2b)P%?5uraS_P%;C#^}w(p-&m-tZ$@*RH(ki=UBHLsL3oNhVe(AI2Y#U0eEPSO zYs_NOdT3>=Vyl`{vo|sE2&c8!EWJ`rf!=*^^@2kJD#Lqj?kBdNi&cYdHMy+6w$$0A z1vu;5qOu5nL9{=Pa0!?4U^?UMVXqoJ$?%{6Lid=zUpSwxuTa}3Za8!seEvcs0DiN5 zP501kO5i1U0*abN1bk69VIfKv(}T?zLN z9fQ7c9i#p32p7RNYRobt#8GbAKMw0+=XKubJTx=H1H_^do-mm`f@rC(ENzR^p@eZ9 z3_!X~Xm;hOp&uP`S=N;z#pxd5HS&_5uPB;~a4<=y zd3`}QLH7c0oG7{8U}Ii-W)*gKj9*1Edm#?X!kMfkTosi+P{=Hufa7VyIl)bt7d80(%EJ?^b*9AM{^*v)oeZlZD2Gm zC>hQ>LDAf|Gc~H9wE8e3#L{irPm%26;5%)6z0Qde8QQjdsqAgk?cwgIabLAc4ry9> z!Hs!{hVS@hyXalN{B*VwLZDer)3&QVPjVm@tl!ttaVscBiUS4|Z*ui@ypTU5+i49L z(9<0&OTE(7+Nj$I2S?@=RVn#xViU?sB*4FsGHuNpfqee zmFG!bzi8puyq3u&phu=X+}VpZi^+wLzSy#S_r>r^{7HYW9qk?E?<*Rc#i%x4r^x9q zd}G#V@U+mQnP_JqubN!#&Wc(M%bfBLZyQgx+YfO9Vh;=9ab*jRqf_t3y~pelbZ8|= zrcJhnL?}>Z`oR1i-s$gHVF@|hq&Q+4AYd`uEd8~31{bDDb1kzAPRAW3gtIHLGvVgU zn=o=@ZKF`Ps!o7^Gl1U8>WGo+ALl<10&*w|a~vKDV#cbMP}S zH~^rdxQl!#d~A31rK}=Ri#xMix??jut9)Va(U!Vj7=3``Qna#bvX#+8c0!{rWE-j8 zM_-KuWiJ|38E<(w7tnHg4I%WrnWz4TSxC;zL&m;P$5a*64`xfJJ5fU?N*dniOqPuj z6iDn>`LLW0?GaD`__-CKGv`lDclPWo=Q8NDZHWfO6Ytu*clZPAke;A#M8>jc5+v{_ z(l=0}Eux__G1z>3#<$-=f&2r<10jjML9%22-di-P_PD4R_pp_&#omDsLfj|#hXp_;J5>sW3?-O|3XE1C#TwfPG9%G<7KO zR>RX+sAjM?9E<@cJib+el8gxF%oTsHF2NJdMle1%d1GRE1s8!-_Bj!Yub3A6ndMrd z=7M)J#d~P{5#k?70DGh8>nM*uLp=Kfe&RCzt)_%%J|~JU&TMWUA|9#!L$>Tcb&;FedZUennFQZ=kSxCk4T&uU$#UKH@afv z9OuDyPYVJEZRrX(Y-MM>GkwLObn8nd#70T1-(ZzJ(ztkoIIzxH0 za)7$*2t4r4zrhK;G)FL#`8vg1IWQ_@^!xulBV3_g-l9<)F?RF4iYbz#sGwt_j{gv{ z)wD2>Gy#*IR8+6=qA3gR4E4&&kqz_fZ8_auuH6xq&AA-mh5kZDO9nd@Kf^OTJxfdi^Uzf>im^K^(R=^1FK(P?N={zypy9q2o&pChTm*tdD> zz{VKhio~%Cp*%LgA8IDwraoGEaActkJ!f?2w2?I+2LNtht8G5-(-T45#&Vl_GQe%y zbjirpMqv>KT}Ee(dYHkAuVKc;QMgdp)PD^T54zj}FCP7vSV14^Bg?0vYCR%f&isAE z+^1IZduYyCY{+9X*oi`P;D(rzk5|UE<(s~5bjLHKC9@0y00;`=JpZx{zG!_S9bVu2 zF9O!Mcb6y@Bez~{$3@23tOq+O7-;G+LA9-+x-l%GGwn6FP<&sE9r5Fx-o(B`FD{9( z^5_7+{F7L#pX9tckJ1<>_0Y)1w*WwqU9{}lXC5f%08LFIELV2TO=seOcs)g4F)+^< z@FOr*cSv(J23ahF2Fhsvs}|)Rj3AMkYC{*(@5ol_>%Y~jr%I3sC5o`yoSyXitotmz zZRT_!uoNhUe|3>0Pr)H5?pU|O++8^I6mQPll?=81_qC!&CLNz1UKVmI4I4odB&1`H z+);@G00g3+w*3k33P9&!)!H6xtCG}IB0v;+_W@4-f&NM<+p8?tSC*lc5}j`#*iQbJ zstazj}4gcad}FSBnR)V|rs7R2Cbk7l|=L9Yq_Adlr3Q;eLq0 z%Hu8p_cE1b?f;JjAUZkcZK`oo z7ocIV9%Ccitvlh0w-kr$#o1n{_3}29RQXFxN`EoHgyH!qdhYyg{^ZAIySY_bs>Lsb zs53J5+SLt7QXipmw-Agm+PHXWc@=llQa19Ivk$26YgAo40065M&MM=cdXMIEJVf1| zGez-93y37lCft!rH8C3_ns$&eh z`8_zAbE5M|nM9OrSQupg1Gp8Wn(`;tpI*_4_3!i{Fn2_`3u0Togla2#rF9|5$kHE6 zXrl(uNPdY_@Zp9ek@@D^o6vi)CW7vvt4o4}S^5;0vAUK1Rk@R1(b1*h`|IazKh;{t zv5HmA{(yq8P~%_ip;EQ8Z*Qp>mXo1%IMad1#eaw0azA5xKx-KW0OT*;G$4YyAhPcp z&pL1#dgP}cVG#GH|5+1$GBxejsY;$~hdZq(ba8SsgBQw0}B1pBA7~BYm>`~07NsF^@fpE`+qkLTIl)LS?aRxFUCVmo&MV+5OXKgNIc|mekX0u zZ4PInJ#ov5+k(U}d6!%N3f0?AQk0l>5A{}CI7b_5iBZf6(+$y%5Q={3;XC?%j21Ag zxIPzV!3$IPMJ!o4_(Ae?dDk^-rcRC;)L!AlQQw*^s^^ zy66#RxKK2++ArdY+*nL^lY;(F_k2YC3S|EdH5_UC*lYvsHqiKGIS)H|SHi z|Dq*Xw#*>#vzG{G@5}O1!ePmJP6_t6Odj0XN;PX`$t7rdT zH8)oyihpMa-Qg0Frs%#@7+*?HR^SjMw(;cu@bwr{WsL^!+QV`r;PsIo%#O5r9Y;=2}lw>SsW=oO_b_j zH1{R0+sO43q|AUTF-y}xaZ49Fs6va404`mw)0}2(&QQ6bc+L|%_krs>9|baQ=2mGG zZu`bsXP)`S?J9obfFF!(d&^=70A=F%V!L5VQ5ux*t^*^LH{(lcJ(;HfD;^8fxrd^4GS z(&Kmhp_B_pZW<_0$pVI8c}o^rjGEW=opgit@pI^9d(6h>U6PL3#i9TfK$O;+YOj31 zP|q%eku+$~!*lEl#6DMx#1{qi@;9kKh&P^{oEX-GVBY5O8myYfDE55r)?LK3LH5-v zUsrA36M+$L65PAClYKff(n5}o!;)#aI9%B3_v{OE^BrGbWIrtX*Jf%tio}{P&dv_X ztz|Aas~q=Hwt!vn!gbq|#)@Ij^(O-S26wnJHsDdNA*yt0@51{x*s?}*ZSzR60mM8} zs;W0r*IqZbxgCUgVzdFVNqWX}RZ;Zde#U2pT3PAS76iJ;_45&t9brNU%9!(KtnS_Y zS{_;%PR<*!l?~FW)g@ZWGvN_{)!^`)wX!i0v@?-DGL9xn9jjtr|ITj zk(HelNpf*2DHPzJV(@p{)@^W$`fDi|!KI{Sw}Jta@zl^P1oSg~b!HEB>pouG47KtK z^%IZ4_s+h*(k7azuYq>!+J9sLXIIReV<91s;v$B-jJHepFvAT#3@*M0z1r)$CaR#; zel_dgR^q?X=PSkV1=U>BJDXaa76LW>mT+QOuf+j^w|gI+oEUg+)>@Ow|lXjNzc2G*^?>vMN7Wh*W6!{}d%1?I~mF*$7s zCXU;8U0f!X`_4lJ@8EJlys_mhs=%?Oz-AG7(2tNYBVg%^-l?F+ln z!cr{qxW2AwaGX=~#NV~V*))97cCn)<`PkhhSg(Cbc#>9EG`WFEZdsp#Zhw2*-UYHA ziNXVSot>-}N(@l&SqVDM)+<@YDtSm{OYts(Xs^xGE4}V|Vz^6536bkDr0y*t`E+!@ z)^GW=oVLeiTmTd-C+Hn3{lL)Oo|VQ5HR09gDf2@FRF{{|dF>6n4klHTzPT>d5pWC~ zJ#AVSl{3(qp<%mKy(WA-KIXC1qzWYxVqi5nZT1EgU(1HnT&5f#|APb+Zgi%3JNM_I z%h&!g^4P02a{#3u{-x&jd!haj5+gM+QYLLeDq&exm{GP2D}`W0SGzIFjp?xIj4(2CUa(f8J-#cN&}*^8WABN(c#?m zYS8(;KIeD9rl%m2(;!ySaEhH)t8*Osa?v&sUt}Kdl6;pl3&%-}_o{qQz-EW^n{kl7 zSBLRtHkX+Fk+9Eo0z0K&&5U*VVTQ&o<~Duu!)gY%dbr{Yp{HZEVZcTQ7_AC2cp-Qt z$?&FSC;3No^+XWsGb z1ze*masE66X17FsWaHa%S(;*-`;EMfDrHVqkLfH!7-Jm1@q;OX`pM117VhRh5dd@* z$WvNjn2v5p0F}o_=jcx=v;K}%lflBej%IBv-6$ZP;k53m_7#xp@FVDdnD5#4tp7pv z^-k0I1!}jRg96d92f2MeyOT5Vygxq9y~w8$fozATjODl@4~s5d)1!^lOg%)NSf8Ar zZgGkm5P)E+*Xc;_G&z>iCist_&m-qn3?h?BNi}Jpzsb!d>)|sfnVF`fMa>=j@BIip zXbpchr_%l-K~y;vO(LQpr*YaIvr89P&1!_$dtC7R_()H0Ft%C}J{X$-V&r}Fh2?x` zNSGN?s2Q&bQWTTRlI&O~8Jjc~%oJ9XYWl~W%79KCY-DcaPK@XMwGXGB5R1-GRopTv z)uyZudIvH?a*XdqXQZ9J?sSCZJhTxb(6y`sx}~2UWVYK$x#z|_y1$FL3~0daev}tu zAtj-s4qukbau+4)H`*>+_s3uasI|^vfZu@tPM5*rYuxnNCCOZ^%%}#G$b1^C`#&aO zY1=m65f%oSMOrb{Qrm!FcfBp$z<0s(_m~DChr@47122S&=6Pk{CA&R^-aM-f2OJ3m zJV~1S%{LoVR7wPGl&WLG$H*k3O3_NZvIsl6g(7XQZX=Mgu2BdCNc1pMR89?wocMd! z8RNQFzUJz9B{JIMe)C7c5*<`9_WQQEHJ1EmU}(nYhiI_o^_AMI0S^Md1j;sv{|k9r znMI>Y@&|#wN)`d?^uWFp%lw{2Q2Zn*R!CA(V!Rv;x;Es%q|aAk`SC_tyu$cAZO#NTG|1Lnau49i~dg6C04Pzg9IIzMDUK2 zGB+FdMn7>rl{FM|;m(M#Z^#iSIOB3HCfmN}R|3P&J$q=mb$9c!FxBGiQdmtUC+698 zZ&x$ZzM7vOMih7znj9UgLV*EFbd@$Pcp*U4-fc_(e~Bw#plR-ulu$?n%+TvkZ*Oz9 ziW=IWk|;!d(bl;77)lUdf0X?4+}ucI2->*&Xnc71?_LFWTT@FMI%!tw|00zWLYZh< zJTxC(jx4y5iJ1r2u(e5dPvS!06Fboh0BDT1gb;Ee=*pNc$GC5QWM*egmW#pY*0i=+ zxsG>+>V^u(CsfX^7goXmQhJ1OUPB7(yYWEH(Z&mTR zGv@3vH{6d|=)?n&S!gqD&&~{cy_%+v6`9phnt{lBIW=b0$T%lg!jLSWUj->)Oel$U zrL4$A?vW%Xrd{p8huCucFo3}X0~nJ3l;>A(y0(_;@o_lbbknj$h$vav7Zio1y9vpF z5B@eZue#YkS@fuioSPb~+>=Fl6s1yKE@L4-9lc73Q7V)Q1kS%oV`@J2Dc41Mk&Vt; zsCEkm%!p2ock+0h5`{Op)?CJbTXyzaZQG&`cID99aO}p&#!Myt0aWVL9Dx!=mU>`O zyv9gt>Z~}u5nwqdL50-O&@kDLWYT3Fh4hs8^z3x~AfV(=w#H~=jJ)(T8i#xd3lOO< z0m>%^gCBx<)H{6(?J8glT4qu697l8(Cw%-ed*oFzcOzs?J=F+En^h}0+pr4C5np8RG>h>KjL|* zo7kOvB!RpTdhO8Gi5tf9>I66`TeYo2^#-<sikDocn=X45gyUy#Ht>-T$MR9PB|3 z%jx8)|J>y6Hwg}5k z56CTj%ruzE1^X1RG^FXMB;(yUS}H0Ans)f1X*`}4qXS0Pc90W1rXl;Cz`Iy9r&VuTum!(M>GMll#d zhih#SEb%z~@88>6Sr0azCDtz}5TWvm7=N6CroKTIKN*TFFSZwlp2xbwvu-BXJde5H ze&t3<1qI!o=P>r*;q1^bt*X4Elhg|PN?<~tDd(Gb%_PW6_JvIwxPbmO^!ToGaRAC~2I zEA^vva}rp30#7*6_iS0)psI+zf|F2CDoeNr$G%}Nsd3s<;+D>^xCR5rISf0nRT;j-C_aCFu1;M5Wv}depEoC!dL0b=jEp% zPUcc+^^miM2$m(><(U>_$$+k9=7X?R0GdicwfBFcQ-si!;Y3&b##f-bH^_v!>Pd9G5l?U_+yE?jYoW34Ys6Yo zz$`{1#mSh?A9x#<8o18jylQN(Q=NGr7eZ{6B7>Gh*7uQc%aR|l?N`A}9@)n!MQV+Q zlUolF3qB@l8G$|rm{*)wyEp>+*+N1rMOm09(>D5!8URYL!8igag`2j0Vcsn5<{XsK z3eF(_ZOT>LkDFp|7d$O45yE9dB*lb;_3!vJQ|8f=?Omg<_wMtM`O}q>0N`;XKU+2B zL%|8b2SWH(qkSwbWz?mF#euLu__A4EAz+N1L{kn8?5|XTdC)UeKX+_yaAANkmwl#3 zt5t5B)M!|ERv+O8Q~uCgw>z8=m?Eu`infwOeL8D5>5rxt^xhMmhw!gM{~&OIz_Xq3 z1z;j1`D%0iB7t9W?eR>^&2V>-yamAt{QrXx_;faDLe)fWZ|_>(7T_&{?ScN1vSTD7H^6#Wr(jeYv0>G`~4?Af_SjIhw0-F57B z_I~`J-upF=Pqk+#1c`WET8jCgpkKoud^acSpxOR?OYcgfv&k>|9U^h*+l_|ua;COZ zq3vH&eUWYv1_^+I-O7n(TyJUd|FvXaKY1gl>p1K|ha>SNs0dzO6e?huyq;eAwN2(f zmgE@}mzb2X%5oo@UKKp#0>08@ zO(KCb=+{Y6KqAMrzWjYKmBb8gi_trZc05X%;(iz}6cGUEY6yC`p<{+ve{c3N#!ocd z{PpDiZW7WN+M!NlK9b2_m77VkeimRfIOK5Klt@Cs!fNlI<$?CvF_{?~oSJW6!E3qC zjr%^`44~`?`K$`1*^NXN4iOUg6uPY*{10!hGqLx1n67TAVYC?Cn~jrkaWM%wnOh6v z3ZK^K%X{^IIj~smrX(65GJo{?)NflBB=ki7SxbEw--QnVs=tY_p3YQcW%p6}4SV_0 z&^Do2EkFUGrbm+m7SVQzwgudi#Ipl=>O8ugZ}DYqsWCgPJJSYsFHLj zjP?b*y=r{t%m_5*YmR;@7cN?y-Kv6Z;>k)rDon2A;lg}7Wm8#jdA@Mr6HPR+ZF^$dwv&mSOl;e>Cbn(cb~3ST-}C#g zd*4s*TIb8@bGm9*@7>j1yPju1+;TdR)K%ZjR7A{NA5={`+e$)P&AM4K619RqfUvvC z45mrU9SL|K{Cy^asj+U#AA2fzvb5Ih&YXDZjWpf$PifdHu+~0*sNBcCBUyR1vcJ?p zJ&0gXyA3zH%mFroA)7tRx0W@?55l=Z?^w2Ww^<&Sh~I4XjsJiLi&ZL+017oW$JO#jqFB$Lqzte{W=i?pZma2as%NHyA-gbH}-5i3}Xp2LhNorVUO zB(2yaNIyES{MMM!R#cD*)|f-ew{ck$?42L+fap_3cIpcYEq5abZ4-RAB1-7>H5Z_IRmNeZnx6yXs(`GP<^8 zR}z-0pzX0KrUK>B6o;hfi3?`NWVBjmL=oz`AZaA{j(psRbp6Ez8ok#v@1OK7>+q?Y#2X z=I{#TFGE!N=QG&leMnhirP`~iloj6w4^JnXWE{L6UeLfGyHEOrD)nT!D+{`W|M#+r zdjRFuAY|>`{Tfw;a6)TZ?TNN=yoH@KGGMlH=Ot#W<@)%h zNmdp(xASsIv6-RJ9(&5><$C6jRnDaBHaPs9R6-{-m1aN)QRaTGTc`SsiDv09S$;H(I+mIFt)`;=v5%oxV6?B- z6Y2T6E1fdQP3~rcCuJi{HyPpPMo}hG+HMfHabLdS`j+JXBWRs}G{Z^rJ~H(hqvXFs zf>I6Sg)iLC$h>G8$=uTHLlf`sok6VZ{8(Bv^{@#Lkh z8)&spQSw(|*xeabnp}%yS3UvhIDcS-`ahZQ!u2@}RKejT7#!4FC_v$YjbY8nyZ*~x zy*fn+Yg+ERxvix2`a(bZ@xh85qAu^aQLC&b)m2>NFc^uFzm*~Vzr>5IVo{bTnwz+X z>PZN;WK&9z<Qr8d&yEcX*j04R<*(d3JW<=p##r1-ouyfl4>9oz{n+Pb{=xkj8rI^Q6JSq?YW|V z<0fP@g^9QHEDf~2F$rauW!3ksK!8Jgpbp9uD>tkqmu?FcDT!PDx#6(k^^$b46f^Yz zeq6fE9p)Ra-9ihwW7E9q%b>R#XBaM*c&)>&n*Yjde6jC9x-&h`BMTFJot2X0htK)J z%71)2)#~CqJ@3!$7E9rvTzE6KkzeXg+9qULap;FLGZSr2HaX zu>ZUts+&8i70ZCEew2N`3A)|gCX01hPw3BGek-O3SsQh~GfH;1sa*Hlc0vu!{&IzXUefc)ELz?o{`S+|q7BU*1{jp#iT2MjP~ zW-K8g|I~B*9g6!)xkSu%Xg0SWD z@g%s#70hUd$NNj%j)ao_<1(%EX6&9{XGl7QW6R%4zNp(%B(e*Ir77DulB4l{)zeoM zgL#B0^s_U>JQ8Yt<~whv{pmlbe-}T?W}*L@L*atwWdq5T(y*XIrhe?3_zql{`{&E+ z`nDKHxHsuqRhtvH%eDNQAy~{f7L{Z$55TW_pw@yssy50JaAOKjUR1WGDw0WM`(VX# zDThuxEu1-a?rZXH7mKuk!NiiVbr#uT`1Dn%UtomV3vn4bz1r-v4enWg@#Cm|W@Z6T z%&Ee6fipnXcSYKE7(mU*yY$Adfk8#-Tdl*I7^p?(fk-8a(=<;+GPQ~iG5PGnGle2p}M!xZuZaHztq9(@AXP-vo&qZ>RxniCb9=)NHN#sw(#o< z8#GIHJ>@@nOHB>&|HG7jQ%VP@Nc{P)I~3sEzWL0})eQ%|^l)ln*8QUM=RodI7!+Wx zImz!H{q$u2P)8>Hz1B9a2MaLfIlDfu$QlCxB(UqRCv)h5h*cmE`ky1~qx;QBDI`$? zE)EB%RK1@2mu2BI;B#I1?2UvRXA62Fxm_gYrEUy)?ns(hrH7sH2{@1ybWiBj)#N(tdA8Uu!c1`{QCB|&XL5*7&^h`h=AvD?=1ZW!}W^Rk<|}K zx#O{P3=5O;V=>;bU`qb;e?jbn|H0hNOXySQ8EdGD7>!qeYTiKM^ceWoLJv$SQ z09dgf=lys3Pde>itY@$9U5S@Ph1%Z#AG*Dn*Z{Deaxbq}Ag0sVYWg3mp;KFeWqK6n zHlC;(MYK?OxZn%^RoAIkHUjAv{_9FGn)0(w`z`C+>$^9y0Pw~9x_ft()3uIL2=GUY zSAL7@66l=O>%0H_8fX04nBqEoD$C_|^76DbQ**W6Z8DN*rXJgRCLHgF*OLHL0A@N8 z9Nm;dRU{28c(~_5C2-{b+HEU98Qg;d%+_DDIhDviWMU9J$v2M>VO??@9qSEn{6{HJ z`>3aQd22~KCV-cSQP_2QtKoY%U5Xx5Co-dGLK&g`Ho9)x&ydR5N&NwxJzGHtBUSfz zbtonu6kTOeSb^3Iq$8&*zvQ2$oInwE>F;Ye1wo*Cs>VqdMO;uu&gbVXGL(eS(!I}) zC&8EBVOREA`WjV71Gh#SlOA904&PX8EC(|j86K(p=l<{ySR%o%2Y$A=u<7S}*AE^z zmK4a49zHHfG^xgss+}xKFBDg)1f^_KDP01lgaG&^U7pJI{_enLU;Gr zej7#mHA16k%u)4P1a?UKr8sXmqBo4gZq92YPR#wyC#vI>jPJ}4mXMd7pl7wzPrc6d zy2eIP(8qO_%Rv7#A zG&AS!-+iKV37!_F_$+Sc+e!LCAx0Sm9$f8|w^67yKMG4hx_umvv-s*;+epp!sFeHd zZehWVF zbPClpr|V<)DqfQGpksI-QGz&d&;3mKqpHR(pPmcYrw5EMHkEa!{hT5#57|jIY;+Vq zPkZ#Wjq!P>*@BX%H!&!P9|tRngRYz=ik{h1Z9b0ZuTK`^%%$u0xN|%BXte;kZDUWX zM}F#EWa?;*2GwK#s;L9Mr&N^`&($~p0I=M>bJ0%sxAvFULIf5hvN>`YLqVS0@A>rq zHa*$rIU~3t+<+TOrCJ(}KwX|RAJQ40^JRa!gMP%NXy-$Fp%*5ZXP5v&`#AC5tc+}zL|LDXyvsJ{m>)pQo0T#9LaT*q~n>h!U#|kLv3eWWb>PQ(0nkcyIkw&$0ip#KqPV~GiooDi?%VNn?}*IFgUC6 zE&#kf54j+29(h|xG*eaE8DAEcY0B+M)Z`g$0EllAsMqKmJDE}%307lvAv=p|j1!+7 zj`kkJK12i%TFge=H_$B0WSIV9kl3=y4CDe12qZv#9;f?dwqOfrAegcSr68ZR^M+4e zDYfB!d3q?y3Et}*W`0IpOs6>(bONmo+mqzW)SOA&=atA761u|_yX7CNaVZ!|S`q-LzDCNTJAURpRhwE zRK#!J-=Us&-`_l=JywOa%vRJr@F3q5_$C`&*Lu7!PiMOu1x9E@<)x{f8i z6h`HOv}W6^&0;67-T(ds1kHVRdM;J}yUQ5G!^x5-pBJrgbtAJm7xlEY#m~S(O<1ot z2}N9Te$0Ra^&|bSXS>zw6UKvQi7ICtvob@ix60D+&APs|5(u&-s`u^T?QiUN!qZtw zcOafl3x2~j4kbm-IqO}(_OMbg!wmokP@QE|NfcG?IB0ZkG_D2sN3cz>#~GQ*IW_7y z365=TWe|F^*;^c%h%S-~W+s~$bx^H6CuC@mXGXM{=nj6_Gk5NVv~!#T)zV2LhbS)7 zLXWwA?z|R$6Le&&FhT_=o-N2fZHI3`e2ydqRY6zcvgIKl3FR*-?N~I*KE(v;f{o>9 zU#Mm@%n|mvttVY{5DO^G4SR!ex*Um!SBPRHZKnE$df{yNkCvaGHDx^nh`=5@w_mH# zIT7&M*+uwI2@nS;mBnHvvzP#l9~7jNlKWqqnU~trgMvak7RvS4WO*H&op0C>1OC|U zMwLH9quJG#vHy;gq1X%&l^5`WrXquSUmxFRqM>jR&m9B$sLkaa>ZZ6m=N-z`H)lm* zfq*7~{NM>_?xWqdm;qOw(;mmvM4*@dn)JALXeGQ`w>;VhF|7;b#&MXJ)!^AI{4D8{ z297K9Qk5wm2}xUwG|~pdX>h@IF@3=UyK^l?zM(FLw_wZVsLZKb;hI z#0|CaG<+MW<|Gbakq39T!K2fx{F8>?5jbH<+~Udgo!%RlV5jqLk~(trw?1RkCg=WJ z#u&IC0WxQKT6W4(a~h)-3AV(;KBF=O1tIgDJ>vBoF9$5YK8PwkalF?}Oo}O=nc>J@ zCzxcd_OAJG6!Pkue~*V;<-^UI-E7}pP$W&bW)+DT*LKhKi5mNAOOpLWe!h`50j)Yq z0JK8Ninzrl&6Ovf=++h|$=>%Xe#6(=;-uVf+yF&!nC@96Hl1mD&g%-o#MRYGljvcA z8Ru!n1@i#uzpG*$UsGynpo!D%JBeDeB8*PAXa(SGQSimjXRGe4tgU+c{OXhB-Prs#h~oXK4H^JJ z$Rg(z0tW>E5dUDRXo1Cs=B+4TUeF_`^cE|hM)P!=i}c?Bvn2Rm>3zcogGm!JE4_g{ zc_7E={2I-_E-Dz&;3~M+e~9F^YOnUv#@sR3yPV0x$d^t~4RJi5)<}DzGqA6YYc#PH z1c3PwJ`X9c?IU#uDHFAHwUk6S)R1Po4id(VV9;18VYIB!DvlXmOriz;KsH%oF+u7L zn%q2|F^&~~L6i&Le_C>a6kdI9tGl*>J-lnjx4>S$*^xTSJF|H zwy4o3@f+i{b{9t?Kj8~9wnvYRPFRz)Trj#cgVNvkux>S45q4|hxJR0E?Ot=VvAP#% za4k$qAQs(RJE*{?=0?D}T#c)_62^{e-N7NEsh-lbDJ-xjknkgEdPikf>-FfIJW+#V zS1jP7wb5=v)xqbH1=zeg&)T~GJ)JwS-DO#NoAqR00k^D7LH0p@R(D-6gg>ruU-k$~ zvSJ`feqSfA?tQCjw&m_%Sa%skeux-<_te0D#PZbAzh({eC5eFxxY&RNP@fenhev>o z$mp9g38;ls5=8=H6dbhl_n$xO5a%R$@E_l{t5$|mrwCIOh3yXRk+`CjC_3#FT$7?5 zoGo|Cm>=r~VOCwm2==PvqbEDlFx{{JlC(PRK6|;oI|i*)_Rlb}U^k`EiRRYc85$mR zfyMs&ifKJ=7|}Ps2iFmU>++vL5ySv0(a)?{wPaHTE+hgD4locT|CVaNn8A?X|6W1tI zNl*6&h|+keqc(~rYG!Q43P1TjHu1_j@>>rT^uXxd&f)~zQ8$J0IeY`K{24x48)LOi z=xQyFg)r1)ctA~AdCY*V;exaU9E=VvQYawmNdkxL3=$|x^H4h|WzMtZ2NWED0sx>a z7CXO~zFIiLYD3I*vz~86hCqypJG6chj>j#TF!^nqCZShkHbZIkTh+;Aro;ZOos9J``#^`~820g`bxQiK*u2%+55n$foz z)aR`iVr*Se+k~MGC}p1B)*1l{y-RFmJ`gc&BG2p-^S9v=*~pd0p0A|l=~U0jY=N8b?Nro%g``j zBkObxsHeuwarW{P9Jr+GCStURPzvoT6e41#jH{SW=hU3y&ODR}X_fkki0)lWnL63% z*)rv*57~2}Zi&l<%=5t6s!M-yl)4K~qx+AV{=Bo6(R=bF(AdZ4C@ZsX1=qztn4U)# zSfPQP8Z0C~kbv(DPGZ1o#EcN+hd%j>NLSv%kB2-^Z>1Nd_Uz33=k8C-C5;Wr;h4ql z1=CZ5FtmW~C$T|o7V>rTUpB>jA*7bpsAn@<+SQTaD*GkpnY@u#-BibZ7)t}TS2^XL z*B%h5QzJB`@)tzFAw^J0E!%*`_FDXg1}^t!D)&bz#|<~WafMY#|76@y z8=J72=nOZ-y{mwLGKz>|`6Px3c*XO4VU7fk8~_sp2lwD~Mxg?|qaPZx4u>cyg|sBU zZwax{e<6uN@PN7>OaU~~-FZcZir8dM(miRk^n4Q7!x_1MXYesl5!04pho}8(eWh>JVJ*6W zp1k#m*Tz(_zp2%M4HWPX-MgIhl!m>g2PB|APe#|Cw`XD7^E&1BHJ-xc`>><@=GYm0 z!{p~jkyQTY^M|LQ7f7a}q9|2Oz6#?iXkI?P=hM-UHwkMRS@7Y7noC22GyiW#xF1vq zmc;hsOMLuMYAW-vr=lMmN`>ipkzh4h;2z{=}QD3`UiUz_^i&=9f>dQx?MM#5z*bW zD(Iu7s{Acjc>apT!MnlP6kBjw#fIian@7=mSm51^=`GS*WdaJ}E@|A4hz7lBiZ2?> zUxo&?a{V~Wy~Gz|05urTkLL^`+TAI9(1R1{m(#uBzBb*GHRk!TFW-Eli!C)CbWwUk z0i0067I3ar-buwcT%Z6w#3gg)Cx6!D?F?H#hvAcGCd~fQ41qgOwUpQ;uC&2n+#6{5 z(mNOh6{3V?QQG^4Yfpf}IJkiWvVN)o4a{Tun5cmH8{rpyyp7R9Nu5BopgSeE`M z$it?!S>ai+3C{w01^Fw1cue;ny`JaA+6KmR^!#shcKK@b;lAZ4lqpw`7LsB6jczJz zB+c;3s2Sw51GOk42_+0&lqr{@Y8%D?xoSCSKTPf<=(Tut{JGgQSQ`~|E9-9yYMBTx zN4s?Ub*}gczdg2{mzR915}usic!y0?>2V5;}vn% zPE26?f$2&r~e+}dD za{8%~Cb~sigY+}Ve^N85dA{Zc(X5ySc&N${p)C6T$^FMM?c7zc;c-kdN2b}bjNhtG z$+ILl%Y?_cs(?g;ic`5(jycDzUR_F6S~9% ze)(mp_9H^+diFrsky6HTyr?&fInR|JkSDc*+hcspQuNSa(9=;J&8T^{luqnwSiz0G zpL&s1p5((|eOW*4vpv`Qvbc#|uSx)PgPe0;yf98wyK&QNk$!2$z|Szme@&3`3yGpD z&@VjxQJ~PUAiXr$GzBY0zoU*jGWj<Vg`}HF5mss(qy)XI>;P;fskb-GF|SIYK5fDD z!pl-F`HIC#&GPBkdb4piXwuS&1lGa}!{tnDHqYA1j@@yN)1Y!F3yHwiCEm%{MGg%G zR8SROcSB1b9aKbbM@(BR%83eSm!VsP82F&r;=(GVi&mduRQA>s!Ik!tS?lWJk@B78 zXkZj7BH&LsY%KozZ<)Bi_1tz0FN-=-C|pg#86|AF8R8_`*yAJs#8EZNiwh}oDMTy? zWO(4BxNyN#c%IkTOA5ZI?Cr8h8p%xf%Eym*$gsos*a_&RRA2pe`hMfFVSgnSuxUfv z;~=8Y{z@OuTcwxuIPNKI8KaN+?1f~Yde!IGMtfMdG&?-ulLm!R6h^By&-(cpo)29f z+P+HF8x+>D_vl1n=o~m|H09ymP#AOHRN=m|qeXd22n+xe)IE-?BHbPwXw}khYTYWX z!IFdJQkZ0F_xNW6c@!+bOH#^M5jp5$5#N8F!eG$jMDe0f4f67gKG7`zuL8zfNJKtP zd!1=TjIKRvJP3gJSICjE2Yxiz3tHLEi`bbx6Pb=XnD(zjle*Dwv72?^?d1G>9{^}2 zIDml8FpoZikC`x+T}~9w9J82dTx#>~NCE@=TftbSyxeFEe0g1x>}iF8zUAPhVzHb! zjpH4^wR~c(ua=<`NG8dZ&T%AB_{6uFg^6B~PQa@5CIhc96yB*^yEwQu~Ww>Q5^2+W@Z@ewAHwb&WH9Av1Ge;ZQ01CcYk8~c=#vYV-b zn>KZxTzdn}Abx9$)z^XOf&Hb6hVtPxpvTX!RM|%_U8Y`QS_>?rf2WgE>@Fo}LsVGW zj?7%%2JqwJn%hlkL4UR6S(#KUqK@cKE_TVN7s`h=%ZeiYaMT2*%63Go7Sk^ON!c~# z@QlmIjcltuKW!xdPwZRKmVP|L$tf$4QU%h@0UF{YTrXkl4#26EDbG&LhVQiaNzP_| zI38=7NXG&@bw@!!dGov}`h|6Rguhw|xQB!yf8ng;<>}*X9;4y`b7o%OAfG?`&Rwdq zWsXlS=sGp@_c8cAI#rYzSVGIl%X|{)+MB{2p+QBgIzt7owl)q9(d8|g#>C9mF|(wA zcZZzLOC5qhfUm0^`!Z0(ZqEU`w2|Ckye?`xBhvpI2L8c0(iE7u(X$r{=_>*&F|qSi z!EETZJ6rY!#sp&oN~*@O4s1MW_4oL{U2$vfugDX>4}pHcI&KnQBA0JZ$*-O}sIOH?% z#JN6(iQ7M79`yz%3mg1zlMxm4^yFN2yo~GaAg6AvLXSSt#~}dA3(!yE@aAPY@t-$JT6P{i%*Nbc>tNEY?r(iq~eUNBIYio{aZMBeFYQipd{I#G&4`ly6suYjy zIgdCcf__{d=RIZr?b_@7KEt(}*eOsXHd?I2Kr;NQ+>@-1U;dS!mh9=RPIUn9tf%2J zz!VD+_jCzjYnI7c_SqL@w| zx#Dq74*61Wth-@?>odFymO;IO0^xm$R_a>bMwxup()x9qiEcF;#w0`?uHc~f^_SDO z%K7UTk`%0B(jY2a2~TPX(}}RXZoEwLxYwa|M%oDR?=H@LeXQ=S{kic5vWt`%ZY9LU z)!H;wprsSX|5@s@z?2FBm~8W|;8{JFSX1tMDN_?bT!vQmj5uSguFUwS5;RVWXfo03EbrlBi;{ zqLt*H{r_PB znqWAE(P_(DnL1GNVqXBIb*YJJ{|%E|%u5}9`~utry0a%z@Z_yA)>{lc9E za^hgy;>)rA%kZa4B*E3&xdk629O*=&U9hg%iPpdF?0a~3Nt?N}U)~o!EmZLB@oRo+ z*T0kbV(FDy@C#MZ99NG8#S($(5>2w1oFmFKZS4AOf(?R#21-!r|uce>X@S!i1!!FDN)sB=j5rIM+ zo02Bjni=fF=`b(aN7(~ZkZ$b2iUhZS?wMj(^$*G5mh zTd|qwa5%k@uQR2lAbvs^Syrn)8DF1byjCUdfa7`y+8U@)3A2o~F6IXe79Q~-(LXL^ zC%y5Ze~vY}mc)j3=R=c;SPWYB++tF<&g@0tdpvNyO%QKx= zj0QQ?aEH@|US2?w@Ppp^T5P`ZW9|Jy)7tp`b8J+q>uagxqw=EjVqA?=y$NfK0K(%_ z@TiEnPZ2^uzMA?FCpr`u1c_QH$%*ze6;#wR9`CQ( z?tys`#p)o2lm37nE6PQ~T?WDM!FUB{HP>AD{Z`itEVykGT-<2fx z0lgJf<70HA(+rdU`;1Rd(OCY2#g543d!PJ`7WCnq%x2#%b+MJ|#FzWV+MG74ABy7L z_kF!u1A$hAMyrvT{sDdV9Ejy_7HEeG%G);XibZ*7Fm=3W4Id*-B{NfPj=WZovDbf) zG_x}v++1)SaHu73+i9yhhl_B?SIlRK5;Pi4eN(dOP-fyWzDXT8K=6%Tr}~rhj5UzK zN0h54J|Xj-?8}j=s`zE%xN$MS5?ug%GUFp4AS*&l&)dGg#j?^*O=EyfuT|&#HoEmm zB30T122jbsFf~C#X(TvW9u_?o&(2O_!o&NWxS=trZ-B?Afa$;VI2;Hee0xn`6{-5eNxFy3d3n69 zs0j9+oCI~k7^Q9~vfjcZlVg^G#T2PhKS5L2Sh+0kq#@+6BgL4`U@WTr(>cf3hE+te z(FtNNU%abG*so(fuL%Z*GJ%%$ERj-bqPaF@dHK$MFP)B9Piz-{C0mcP@5Pye}!-^3=C8-7qBELm83h~ zR|O=3nxoX8UI%74uypPUu{Yydk0Q^XF{IK0Zk1v&e^I~%03SqhI;q~@%f3`U9bmQk z)_OiIe^jI*3bsd*{*X=}Bjjo3;H}F*0sGvPVf|@h`^|S$bNxqzR8k`ra!#(lrZK0^ zl5N{}z376+C2~A*@OvAl)r7)oAK=u!o`koGqXh zHv2<p`sk0m_tyPl6KLlm-tf&?75i%J$2`& zw?KM4x)7TPWT(6PYyQL!wR77JPMB4sQ^c{WHn%laD53yDM4`e3;w4okzw8eN>tlG8 zRsZUNGS2pl9yo7Zs*|NtXl|iGc9|Xi1;LTJpDC2W0&doG?i&OTy)G0#=5wN4v_G8= zsnko^34Y&Q$J&9Y$?a(5(*89)SXkwsZ2!j^x{9!3o_suQ_ko?8HV34*ovIEyEj@?w z*0il(zBG%^L8la&Rn`obn4*R;U2%Kf3h!wbx@rVVd{&j*+AxSsT#7U!3LJ#$L}FiNufYXWOPW!fZWK}d z=s?=sW2GyGvoL~7$AY#SN;&qe`v+XT)Rqs2{4#++vwm49M2yGgaNY_P(b{1q&X!QP zK%u&&vxFV|zGx<(H~CY`uCf03wnler^K4}&t(iS!r6q$yYe3vPJv1<1x-u4AejU2} z`qHdi3H+s*eJ8O&OG$p6>1r$7&e!RN3^Z(|F^#Q}cbFB%Bh*+Ih!Ccxhz&W_acP!)=w?z>WJk+Azs$w~G~5NX$eU+`J@ zqIMwMRBbX}v3Ebv80MrKLWm5eB@z(w9W1PKN>h=&3Hrg%eJSH5y@>M{)G$)<8Syk| zXQ6Fui~Pku`=|Pb=H$tG4#wR;(Ou{>)JDbv0cd%sD@617iGQ|6##wV{%)_uL#s?ES zy^HgAa|tK}_rDsbAJ)7pgeQBQ=Sp51R{^3EcaRsmPd+XEjH{h##7JBh5^bMpm3qyH?hLqu z_rf8d8*f%!)#)C%eMDObw%p);syHq;gV+0LK6fIQuQ5;j1&*FoB&$@6wSn5Ae;+9K zdX9bX`$ivew$(vSS0f>IsuFsiE~(}-QSN+IxZ-m`^FtNZ=Qt#u>jX&y{ipbQPz8PI z)`F_o`@bcVio(?>Z2Qj8P~&nE?=hkeGu*efSaDt=W6CRX`{5fEuix2g7rIrsF%8z= z`RC6{AT!h*{%qK5!VC34h%0SVsCBp3dZr-*0bPhibsIGv87LdtNO1(+hhJ3U!WZ)K z2$kgp&vi}xnVX)5^*3tg-w}`cwsJsx9HeJ92d`WktoLqXN)DWd<8#E#vE0jouJ9p| zLfw{&Ni_MXsBRBI_e3E~Pb}x)rVvD(->@>3?p2H?1?-L4wKDSkYN9H^1f-=Hw;` z0Q__nNp)3eM-jA`0=FcKLje9&XYfSdh4RZC$+^F+G6bNXF2BdP9%pWTA!4^`l z6x`zpI**RBitiU(`?lXdr;DmZT#}|n#A8-8udZAVhveOv_ieD5*u_`pP+XU{{|u{n0c{p;w>7DpVo#nfrJ zlQ#_0`s8t}Qn(p0R(-jBOHjGjx`Qr1chc$6XO*7*Nc5Byh$%`UeI6dE1}ys6ONo`4 znRq)N1XjV}a=JGL%zQHM1$;bZLA8=FDtx*aeTOrP+hWurg3GgES(3(H;#JKO9orXI zYm<{_e{m;5cfg78#0BW4e`*BRN$ZeTI9pa`MLf3{HJtx_a87l>pE}ik!s^Un_7UrO z^;u>0+;aK@04&{R(#z32Hs+et@nkg~-N-3p0ZUN4$YPYFcuc3!ZBzPNV^;_TdYQ)H zuBjs}{KP4#`^B6Qd;R^XHqtj(hc$Mub%1onqLx zHj-gr`}(P;%5qFfz(#bo$Y{Yv3_I^0SVbyn#4{&XrEbk2=JD*$dVyQ*`lRD#b9*MAdc35}Ek}tA(5U=JBS_j^q1`o@^XPo$SJimdG^LYmz`KakrnUh~g-rHv4BJS@SQo;#fadv6*Q>LSNxU zY4KNn5Q|wX=D(thX8+>T(D79Kfeyq)I@9g~u_Y8Vp=gjZWl}X*>^nMn%-)7cVjW?- z(3(RQWi`nBUitRtunYSrJ6&Ui_go^6o<7ZyJni)15}jL;5=xpzt`zC#>OIX=!_mpf zcDyoktM*|c0b!Z{o+MV_@iB)KBahb0T|(@kN@#b-7oyhLI%YYDp*Q^LZKXOmR%q^U zq}mdOEr1dIzA*zVj-g1sePoyro}o8tH+)}4v#l>e0Zw$a$6?g}s!tPnjIc_9k?s@wVtGt03v(dgfk1n8%TVY_56p8DlPmiYw1pcXlN_S;S}l zfV_C)-=pdM7TTN!S9WG!rgQ1enXx58wDs$9c0S0CmG$ByyVPT{kMlRi1O3}CpnWON zPP_(Y&3apf>y||ey`knM8jXiT1w{xBb%qP&**6-i@sCBWEV>visoTqmBCzi|iWMBH zT9u~1g39fgi1$?3W4@%)!IoPP_9E)=Y-!LM08Unezcuz|D`FE52`FGR?8~Z?;y9&` ze}nQ&v~$H*cL=vMu3W$26syN`!>D&4{dt#N^Md#A6x|WD&(5K#l*x!o!f)uGh_0{cVc?v6AwD*tf@cxu|V*=vx+D%RbghLp)j=14T^f{di()isM3f zDP3R43gBs`3uoLJ;}P37^fwE;r>Q70h)UAFYMz(irpN*wXwrL&*ER?Ghs&ED!-Su-#h1c5s7`p_%J z=fr?Iba;%qAdmpkmUT`W#pQWGKXH-NC2XZdsiZiW2?_A>zyJ~8Q*6BGhr(jR_T^0W ztt~X(9j-+;D%@tEt(TQk?BAG{TZaSYu+2~9<$E2`fTXy{VX7>!eZ2aSnhJJ=1+x&T zDh90x)0OzPLRyd7KZae|`4E=jvA;~vKo@*Wgyg4++q1_1EzR>dP!-wmXsj@AggR{d zFyr&w`fsai;yya;WHsDdEeBq*8zUv*m^-!$UgJqo^M21 z$xb(|YA4EUc3)ci?W`KQ>+>r~g$E>V4!iqmb?9M{J>4w(4XO$=|Jv*0>kS0EctIZG zDq8>*6uW1PfuA?#?&~O6^X(S^fVGd83NMpFAzam{^JsKZV&W*?BqXKT z<>R867LZ(n2&bL}Bh!kPg!+6_R^lwJ$00a#emB*!U63r2uc{vRSQP>Wh`VMt$gwoA zM#3T9bcIZr>ed_<1`wXcE?G)U*&zb9J3c2&cWC#4l@H&Hf};ERcn54r32d%V0Hb-# zX*OMyqXu3(K-8Fo?t0`$cOsq1cO>+ez4Dsl=;*h^V5rl(-q|-=+2LYy_I2koWa>;u z>=|O$Tt+kjOr~?#G?21j4=F~|+$qDDZLM{G=B*PGRfUE{qhjS@OYvz`qwDs#xBbbw zJl-#++mh&0w*soy)w;0>#aO6_SF>#_xjrr|d9A6=NzWJe18N^|nTU^O zxQ|qCj!L-2drZzLSfWR4cLv7OOe&o0L-mVoy+YR1Fe;z(k7)-X!%*^`TIj(N*0IY{ zv~)rP2+eEYx}Pk2!km;a4j}D#9WA8p!wB8SW8#+XV|2T3FQ+1(w}lRnlJk!3-fVzX z4t<#R9`nMD!|@EqyvLk5O=R6J(}g4L&?nMLrI-KJuUDH@oAAa;$h!U68cG63N^kKyp1fI5C8(;cH20ORM!4WBBHy3 za;&fO80&3+JZ))3Hl{4?JpS~L)v@b;t$l3SQ-Gn$SALkw=QbWtwAGNv$)iQU<^MXk z-tfVBVBKU8?d0N-R2`p^!EB2My0x=C{fqjppEge)(wIf}yE`TKgYxttLiHV?hB*!d zkWli0)U+J{j5+WP{?ATGWFY=e&1!9}VvT8+AmK`!o|UX=pdLTxN}yd0ul5;@*_vTK z(csitm~w^jD+dnQ;(VcnaQpRB7h^SFzV7n~-ZT#97bdddB_6?0qcCt30#jg15_ zscN-j=dy*apn=qFF%$&`%@VFLW?qVt=Ct^9k8_GEiYLkgRJ2u@3U&C8Cu9E~Pe$z? z{VM|W)x8W19)@}yo za_zX>3jj!}0kiqzD>7N@u5xieDh~XARGcxdTk?X|B6wK3l543&EDIur{-&$*!y0eh z(B{IzeDAAt&LQhhAe-iivjX;Zv)=kWIDh$Mp`vcJ^6WUv~=?C_o zGmQik8E9i+G7lnA+D=v6I?KqXeMyqbH!d9oy>3GeB%tx=^f>RNA4ey@MtxiZrlA}; z3sv_gx5C@=#VQVcXUgBa?;d>a0~gtBofU-30{Upq;axc&{;b4B{r&4|t&+lL>%3!M zmxf$tGF3?e{QysvU20mnKuhFj-aR_O*tcYH8>iWU;w-MgQo|r%E30V%QY6Vk0aL(7 z|FU+UpLvcwgBw|X1O{l0Zi3^1GH%q3!Ef?({nDYw0gT#ITKy9wEFfE^bTS4qc3?|o zx2khMG#81hBf5EtQ=5i;qa@vBwFZ)4&D(VvJwV88ck zij6@2&|ad8Z0He}##7pM@{*iK*9)fP8fI6mYx!l?_+tXLe zD&$zG7**IZli~?GJHpgYWFb3?&0j3it5D%7k@Bmocp2x6*2jroz84Ob(H~P&!u0{d zN^Mha_7)~4qI+lR<0i0Y?H+XEe-SGKo=7n^I!W-+7yd6BMj_xruZz1ipWJffhgq&j zyK!BLdh-5aLzo)#Pd%PDg^5Jv#Q($8JBC-%glo7fwl%RPwrwX9+nQJt+n#X3iEZ1q zZQHibns4uY&iS{lzIv6qx~jVBex5fz)(RZMW*w-uF$1b?w18?G?-sTk45u**J$n&d z%wuFA4g8qa6d%8izrHwxHfSyrjzm1O?w)bkrV6(qKDCu*WWW*|27C=Kk~hj+LsjNQ zFRq;)rG66aif(#4-c65hZ)47ah^pzTcku;i$ld+MZG|Qa+g#7kHp$g3oN#Ua%i;De zNEguGVdAdJWs4tS&bC4HYHvv=pGix>_5%Ayb!h<&i_!7O+2j8e+$hAYeJO+;86u69 z085EQH%$xxgk#cE0ONj6IpcNiNquFsrK>Or2b8bk>*%31^v%8e1QofZlNBv1C@P#` zpZtZ_&Ki3jEQejp=edU1&|jdOez-|dk#18EE|Ft(Pdt_zLF}-~tyQZ5j4J^Bgm7BJ zVv|9OrK8~B*pvik6z+SJ^87HGlJPZ^Dm*w~C?d$*C^1#d?`TG8dPha#Tml%_! zu?gdH^7Gqy;liMupFo|!%v>qxKg_>-k7L@h)N%!N!yBY3 z9KoKsw_PtT?;a^bcx9hECoaY&cvlW=zD9r zQhAM`ugq$l+e=T<;Qnf)G&_k!p`f1u^6*}Sq2iOr7T`#7{M#EwG*~#ZWoj)nu#is! zEV(kxQhgj-epb%Z|H^kD|aa9d|BW-JxkQJi$gK174PDka?@4hirM{Twxos}*EyuwHG!ax zi5H$ze~f(kz^ASA^*KLny+2=3cs!CquhZh*UYc8Q0RSysG|D|Vg2LD3l4zSXYw|Th z0|%h6d4#bUIf<`Os>&sersq9*bCGdfDFGE#P{ID37I0V}dj_{u7vR%$loM zq+-rs0~HH-1PQE4o12KG%zq7O*Yk48#Pz0(ex2UxDepruYDl*t-Cm6Ajy+Bsbk4Ua7ElzcC=XfBS;qgi}z7A+&1E_-lnXAYfIL zXT1X*r`yQQx)S`9*x7!wZ-ayhD2kZG6HFj38zUi^)r}edS6F>zNzm;nNVB#iixjm0o-iCbfRM1y)1&$-{9=uAmC6ooQ72rA42@(E5|%ff-|?dpFL<1%yPf8@P+tojrxaJiMGIrT>|A@NrSSV*zt zHtUYc@TlczbEFmVQwb=zLD+BRck&$mU@!mdi1nTk0|*^{pn#V>FwiBCjA{&8gEwq2 z>xZZ!K@4=xp6W35DRuMsSX+HNV1F~n*}3rpQ zA#81=>w)a~!Z7M?JW&6NZP`@ zu+sX6+n+`kVsKFEK*CXu!q8!b2CtHW$d41;XgbfIrk0-KNaIVqZ$>_5H(6Li6emHT z?_ci@V>uWwz%r``d082+rhF4tkhf52Okv~STQTF85G5sHvne zX$jK*5$#0h6XvHo_NTFuCcEfDuiE-Zdvc!-rq;eTU#>gqf+mejlcGjf1&~piVJCO z*Bc>Zqs`T)?aATzAo(^=y@>W5bYQw&*&8El;9^UE6gW~fQD-W#n|up>)@gr;mPfC417bK17NtPg7X|PuRYo3f%ZPj~ zQSpwt&dNCi7a2rw|1EM>tm{D0;kZ-{Xk`G5dJSpC$U^fM`I?f_sVg>~ZW@J7`|0B! zUEXs1KiK+3k`acN288+^1{O4u|81$mNvT>0EHnW8ff#3e{4mix-*u_oEkOrI6IxOP z8X5>W7kjuYj?a(BVAnp9-fU6gjkF@{By@T+n6b1TKpLly^d6|ixYG0Dd5A?`r8e4n zno)bTqBVQXoHCL&*NX&wDvq1h>0P1;??FAp4R%PCI3f@;;@T$GP??&{R#3%I**6ol?MaNM!k-+SCEX& z2v?sA;K5idv%eDD{-Zd~d=-AhhdNzx1Sak%f(xH@V$H`-rxjOj(YCIXM4>uFV)%4R zwYz7R>kB9p4%?u^KjiRgeITNa|5)gRe=KyTwT);O8SVsd-8yk2<07Xl-R1e>x^yVc z&lWl>D%*no&7S=J5=s!g+P%6=xwV3SNBP$L=l@XYypmBFx&uLcl*S}v$-&f+!_wfA z4*G5vK80$pzcr>67vl7Mz!M2OVImjy^pmdlABIX4^b?uM%r(nryj<@>JvZd^S~68Y zufL7Fk-wMfv_2|$YeFNtd*jks@J9|l7w{BP7jD66A2rhFZlTI68&M?02jO#B1iLg_ zcK`hc2#+Rp`Fi0St`Uyv71)1C1Jg~jGPW+T2)d+!lUSO&kIkx9WzbsDQ$AE&XUd2jS7&y(BX zJUIJ6V*v!i5j{E$ySBuGIYyN^5GQmU6wq64aA7T^-`H&_eB8Zf87kwDesRak6Z}$= z=5J!>)J_08*S5OnoxdV(HON2j6(RM&X6E`C1!UPRpB)vXvMrlXJ)F+NV*;|N+3zP( z>G&_zmHx}n=3j;y5)|C&+=XJDI8$tnDkZ;je+{T%xve}AB)gT1m5D0k2L6{0)w!cq z2sDI`H?ge!)ql{r_xm0-#H^~!5VI1HEw}#Yyvw9s3Diwes+67h2?F3eXyKjkr+R4! zj?I0=WvbIU75}O1@{4sRGTz=z5D^yuc$Q_0!l^TDnN16k!?7SQVli%?yznG@aMFaz z%3IwpyWv%aN-V`irw0UZr=Fk3OEjodb?iJ~vGtZNR|l!4$-jf0YGcP}U+3D2l=2!El$!5@)J;F>YJ9d^|+<-n1!d+qZG>~$S=6}|jv__S#yC>;LS=2xG`Y)9m}Zw>+mDlvC|eyJLHVAuZ$ z@COkTw~B+X;^><)E-1aoY2s%X`0o29jXr?;kNki*y|A3WueZ&200Dx# z$?+Rac$($!LXPjNIY4mNp4EV+-Otu?sx2WVjpEr{HG>&rlX~uCNHz5n>hIow07J3Q(F{pqg>%fB+lG%dh(1Niey;| zSDJx+g6>v$<)7v7j4rTER)zE#}4y^qe`sX?Gf%%^O%h!2+ zF%6jSseyKYq`pzmgVTE?DHN+}6%dJDrBS$2XiFj!`^PCaEV(v#T_PU^A8_CY-vSj} zHGhely!*tB#CKP^pQ&MvmG$+cfRMgh%_vlqy;a4Xt_V;w0fgrx%igMD1<>fCRGtH9 zfnOU@?iLT)x?jH*j1X~{)Z`R^YXng83L)>(4c{Kj+O^QnATi8hD#0u@#BeYHog6b8}r7BiuJ|9;O( zK>DYunH|m2AL1v>A2(eFHsZq6Q{CuN0=~DxqKHPt3Q6}VgJJ-`^Y;9DX}l1{g!m-= zzNBVy$td4XF@tsag6Ew}W%-#ns`rrF{WQZRY!A$4yQ6jyJ>X8xFO%2h4_jqCCsH)N zOmNMDsl15!awrSc0lY`|*qQIZ6}H+)T@e@TVNyu>(-2}1IlDd&(n`ySMWTkajlG31F+GEL8u{D(GAOjZ6b z+RXF6XtTJx8W3$RAOk|fqnQF@s`ZSdrkhwKF#up-1((Akbqg}K1qcfZ!mR_v6ot{( zKYq6rUj377rS?+-AB3Lj_*klsk5d@|hR2XX`Lw-)J(o$$J(mqNiw({;x?&*e$URzU z=ZL-eP6&))QVs^k>4vB6zUxwdu_3?dK0RG}y&FF{T)Ai7?LTp8l7a(N%nIAFmR*E8 zgPb;;XwGlCgveQzSd=Ls{WilwgziPt)KK_iH1p)QwDaye^b93s<(g zTdqWDEf!s`)BOp)*342ko#ZxY3K03qm2SMf9(6d8qQcgPJ5zky-Y?Yo>aKA;v7U*= zZsFJ$N5LY}@baDsjrqw;nl(CH#C%Jo0$GqATEXy2>8&AHI6GoO+1FmH<5AlzdvaNR zx?657&0Z%&=}Z))J~2L7_!CP8)0P-gPv#RZp@H~&iORB;fXWM0K7?RkJr6u3?a8Vn zl*Q2&+g$RZPu{VER53K`JHz6OtmW%h7tQX9hb(>aOpPl?nT*lA2*7QDjEid?Z+;5} zuQK!H1T7^_TX2jn`v6nn1iq9qI4Hg&K1*S|B<1- zyB#}~W+upAT5EA~{jRo-z-1pi18ib5HeYC>BF-DGjrqQf^q0fy@X!@JMfQDljCd+| zX)X!GZee;py1?L}g?(j#BegKh8j{!v>hYXuY&KqdVMFrou@5?}r$6~OzmD>(>A?ZF zR+_9hfl8y8pc?8bf`v11T(SDP!iCe0=8b;FQj=i9&SA5qIsTNW`Hj zv6739C(`2{UfbWLB@ZWeFZq#Gfl;;;Syw(c}2IA(>$Qn+lQpg7@AeF z_#u=$>zZ;EH6}>sDUVL8=t&mLz;Y>QBz}C)>&Ypj`gk1ydzw8F3oiJLg+c12HW(P` z!IOL`x0?7Q+*^6LC=$-T#)88}A=MbBq8lZi>!%L!N+457 z`|(Hc$B=a-p0>;By9{JuUnCdUag8hgJk5=Zp6cmcl_VBcM8I>$j(ubjCPKAlFc&&b zUP#QOVK{Azrz?fgL5D)U#P2dTAv&2}GaE&aL}>==pxB8YKZwp+oybi2xUP@-@L*np zbUap%P0&MOD)=@I4;6@t0$NZ+Vw(lL8%qUyhKt zc=4)&{$%!9Hx_-fU=I$ZOxYHxdIu`js9C$dXkkAw5s8ANd(=o!Sa43{ye}b)4Q|DBJ6;mJG0tPT@ma7n^CMb3D5mGc z91WSjD3it-q|>r@c)m3iPLXpk$b5WI)dfKjLIGtX({YM+AE>Fsa6f6Pv=w6AmHJj5 z%?`4|F-nbS#YKC%A3$%4-(XvThkh&TrGq)ku4(a;09COKq`c(lQ^a`7mfx-HN4Edq zj)3x3?^o4>O}t=a@sa1(LKDz=9@a_+t%!iX4fihQh}QoVa-r2TX_d%)`4m3XOTBF7 z`w!&>)_D!g501ZFv$MPiBmxvg#Ss$(#_$_HF`HK#l2fFs*!lQbk3(b3Y?Gz76uT;# z-o(=mnO05XpTPO%rQUHVJ6tD#WnPrU;2U77+OU03p$H;#&q`Sxyoa z3NJy72S)3_xzFs^M~V&iw~X+5SFvpYw3BR-C!u}yE|v#N-BzxKicZyy0m5}N+L6Vc zMNy4ZsWNj1+JTsW_OOsOs{zlgl1?#J4h{ce>?V{6sj?FZ4SZZrZDk=%a$T3cM#wYm z{m^fUJdqHJA*aX)GI$n!gebBtqf@%O!eZk00^U63)^=a|`hjcponn%c-gG!u2lFu6 zHVR=*hJQoK6tZx{x2Sq_0_4L6FVrfH5kAA?Q!K!lJ^?XWcTyNYT^X*WYqMM<$LJOs$g zjU}Z#PDN!R%ZvO(UZbzEdW6_VS9Pb&Tdj%cgjCBF1+*AD`4EiO)~?n}oJXFtz&l0p z6ouK*R~y=t{OMy@h)oS2_-ao?c1~=Z?(*cK%EKN7=+&?*+;;(+WaJb&Asju08+;Q; zUv?(nE6%$u|BczKSluCuIw4|*Bi9B#$_6S+Vu3*o)}3Jmz7moPSd1@r0Z~@uTl7br zZqr!{o7o(0c)^Fi&mi22_Owi0>2e>Fhk5fm3)&{X%_mDz$8SmL)VII3Neo|VwbAf; z2$z^vBq7+QH9WUw@mO#~f}}5S<_H)>eH4O-m*sBGe!POTgc|T@5)yVF^xDZN6el=Y47Z-4GsvUi{oN(tZv930V93c+$F_KaB_dL+($g zI1LMmLE-!SA$osTjP>c7iwXD^=cq5Co6iR-<~K@e<15MglClS7P33K6KKa=8m!)Ua zET9hYoxn1|F2Uf0WmBrinZM+CS`~WLP2BfxdTFu~jh2m?8=_a#r+%%tRSBappzksL zVY)p%koqXrH+nb8;DkrwHj+ApF!Q1t*h|`gz@!J;CF=;CXH`VtS{d2e%C5>(qqrjod zf2P}y7y$#1Oqb+A2fMDIsq$728wvW`tip(G$2bT8dU4wB>k}gb8i$#$;*&=%J&Pm> zb+)l^HEuB~)VBFrhQkIzAMN!5nvbW&WB_<-L;&~aF%*#ZIS08!)llGTbX^D$9Tif^ zRo6_T_-D7h5kKbECU5AYSdb>zN7g5VK)Fv&VlZQcR|97Z87#&kr$~MvV}(_t=wo#W zr=5oOQ>*@2|L6U8p7sQk^s~5+CfBG&73_Buo4FaQM_s)OdK0L!Io}t54w$Fet9NYn zz6pSZRG-3Or~lXQRa4Mfysn$ihU4b48GH4-J^FLF`tA}ZxPYTZ<3F41Zd}HFE%aNi z*2P?EEW=QIf0bV4A5tYIMAXxFnzy36JU>{U1{UU&wODfLOhB$$E|#h6QfTuU&orXn z9xfA$i<0v)^`bpIT%K5!t+inhAq2|DZoMT!i>pY@mwivWQ-Nkg2%+F&lV_zBz)!GX zfgHuJ5-=+ouCU*nAdN;mulF^tXpiTbKSidIr^(!G;rI{oOyh)CAJs*3;DPzjna6RU{Ml`U z%DNRZmRw^*08P!<&$HhyEYYzB#x>~XE@5Kr0zq!%Gw>k{0p8DWT3X=;y6N~hs2NfD9{AT}1pI#Gwi;jtzy;?j)Ekh?gS}CGGBK@T)_>0SPu+$X6&jnaE zdYbfw{P6S$yU`%nAFx2L19%>HPF#b82Us&M3zD~4+(bTMmGQ?tx;Cd1QR^;$A|t8+ zzVW1FR5iQla_qbxHKz^JjT^DhoBcKF6yYnw?7a*gXkV0XJd~9s3&)757@V^z2x9}M z2@X8Upk#<=TOo8k|qSTYf~IgV-0gW(LooS zsEvEeFF$p0FJ^H%pA#qo>U^(fLA*0$VW?}-C!JCam{Twnp4^Wzm{4xt{jAJMO#nZ^njo`0B}&Vp2*T&py){kdyJ} zu)?T?WqNa9p@Ghlp!UQ;jzh;b?JpjK$(#z18vI33ix;tz)eI2tTO@eMrNd>Z`MSEv z2xuH<92!wnA47lu){TUUnC^j6p;7|eQKD$|C^R~K+4;V|a+*eJAypbKOs}YNL-nLM z{4C`y@?ao85e6iH!~WP}iM~4zHhg!yLo7(;ov}5em7Rr=pM~qDq@Ai%hq<^hczfJ? z@K&`ti0OEFu1D~s8EDrKLTER>q8g=o1pB%&MaV;_3?APL( z0t6uZx&iX-%i&r6y~s}&kFNad3sU=12{N0#)-+FQa(ENyhzt!BvI zl63E;-b4-TrSXd>jD9PBC#(kN6^F@bG7<(J$#$bUOKCU@vj{NUTs| z?vV_;hh8V@@N|~uLXnZDa8BnzIq&>*74PyC|DH0)*-kQJm{zLpACwp&mm@TcEG(-W zo9uS=noR9)Ey4H-23iEqrZ)5q-3qNtHtrPq&m*)+SNM1}XJq?&ko(lt*0UCw!a(~o zN|K;C|F`_^Q*@6MpDw=fCVgJ5>w5gY&>yYBUtzd2@} z;O#hz+yHZ8kcN`VZxKc;7xlMP#h&{cFr=RzrBZrt@!C92@XHk8`lw1aXF2Gd+Ryq^ zYPl+Xzg%1D$p(jUk(w1&vY>5eX8=otIF-SI%w)RouU2lq6tN=ogvCD06uTJ&LzBnk zgePpOE0#@+lgD1O^bev=YCJP`tF`>~IeUmw<$~gmAa|yv-S^WD1Ez zCKW?z;p`^L@r8WvA$Og;t&e z>lw*uaTixvV!@OG%C1dcp&fwe8L484>XAffMY=Pd#<$;&8H z(NGO>Q}G%t@VEcipjk|uy0VR743JfhDim+nOZ9*3&bRGP-5_DQ66f^2h=Wb?|NdMU zFcaK7*DYBT6>+7!kxMP|S z69p7q8MD4TXDNn?#9a|^wNpGloUNgN-2-thal7qSWiDTV!Y}WqDvQU}+n~W83vKko z`TvT*XF7V39{Kzh(bib6@O!)FWZpzyCR~xIUrt7NvS730n*Bs-{gq$*8vwwFUw70a zu8t4fhK=TRIMk3QIo%9g6x(n27WH&}>Scv;Pl_CrTj=_%4?_Y>JFKHWyg}<`?1X-{ zvh~SLS(uLJpbRoA4*9HR77dZ}>>PNqioJ6k{+Ryte=Go?(AY&!n`2Moysur}uC|xl z88uwacX;)e)+^0o8}1)8n}+Fupw-3*(yN-yL7lDrJ#uWB-eW`^PiCGAVz!IN7b=pO zl*rGIPe_h>3DRg$s3#&&zz^}O=2rG=jq||um?{>Lfgs>6%~cK6du|MwoWo+~pQV&H z#WVc!?N+|(}3_>eLkJ_0D z&Ob~<;@%`znOaLD4kIaLRG}eh*?hgRkl?{y?v6Y>Cxh6&o-?Q9xfcQ3$_!OmK6ksD zeX0Z@VaIpMuJRQZKU<#17xqPf;KF40*YM4CM`-2{!E%?kua}p#xxR}1BAi_Rw7$;A z`(@8Wi>_1u{2LVh*X!d>)6k4zrwi%;3atm-hU>1bLvNA5`*}VX`LZ5v-(+;W;(GCf zZ$Z0yEZ|jP67a! zBk(w#R>PHY#)R>pSaEC7{_cD=?b49`?J0fQ_4=GVAF59%9_qek5f1$a5)%I{?veHB zVFArp;V6KcfM$;{V{1vw&gggmsp&ClS_tUOLqM}jsJr~%MSVis3;diwQ=E)Xp&|Z` z_Lm3Ma|?Z@J6J+s=+#Ar(*Kb6*Q}Vf4S)K0=SHFx4Rs#m}*fX@*54H!+ zQl#v!kbdK1%HSZQzjGbHTnr>mD;5ud^cO#kq@k1z*rWnwYt@W9{0&>DTN2CWaJWj7 z8J%%J+*~ly^UIyZs3B^gcP?4~9N(6fe9`dq(kh}g)dkyrdw)>~`~;vr6_ulyH=q;% zFmQUUfR&SP&GO+meFo>DdcZ{~vl++A1ePf#-HPKPJ!xQFplT+LumDg0er&RX#-;&i zjFZx(Kd7W5}R(=J!iLeI&FJmpkXP-H!^Ab|0eKQvIp72nOp{p*s> zlTe`3r92q~RMguy%Z-$e=`o?HW1ZWqya!qUTXzE4@;mOxkLrw)qD=O9T^J$EHvizB6?=kVto z*2jfY26@(-ck`cdKanCTZM%!KeZRyPf-;5=Ji$H1t_)rFm+pZx{rKHY`~-}Rnfn9^ zpfilHcmx)SmG%T5wurm^O;rP$uH-i<$*U&r=Z^^769yysmuxTLJw5U{(S~nCBTxSv1CGIABlK}{3fivja4V(>1~8}UsNK-#W(LP(jLP$ zB;K}G->1fom@GY>L;pkBGIv9D2UL1*$qposCD3 zZMO-7RLi3O{f%6_$XDTdNS&jzJ(`bhauvF!?>%oPyrxL+`({g1Z=c}p%LVkv(cmsE z7%@QO<4=5~?GVNdksmUVcn9gFDENvdaC~@w&Bn`-2OeO0qv0NyF(CN$>`YZ84;^(6%YpS6X*b>3p>(ku&J`Kg-ig~!-M-rtIAu{oSle@?%4p= zYput!hmV|0QXbhbX07IaWhfxt`>=(3Xv;fbpr_Sj{(dEeLHB3DA)PVWa9&)8Y0?=*zDwwDP@U=^IAHk#GAb6c-)tc07SRgX(J+Uz6vxsW+%G zgVXk55_MdQe$^P6w8CFXIXl;%xJCGd+r&0fnneQx0_Zu_qF#9YE)<8Hvn>ZW zL|CON6b*^m4|8buC+kq5GE~p;)D=ZozWNCp?o*kkzdffhUG&RN+*SLxAqAUnany<8 zLghIbb&ne#xOHs^RKHVw;||zz(NF}zs>sgh2xIUVCr7U8cLKz`f#YTIoN;v?z3sU z2(JwaP$(LDM?=%35s$fIrdze15GPcI2lyRxQ}nmlhF-ZXHORNxZ1AgoM~;v)!iX0I z1*v|W8w^g%yOpVWZ(XzVY(QLgzmqYM0joKnW~a`kDXEL@W) zMz$UKzuCWdkDtR@_@tC+a|1M2cFFph9T@i8S*H-n`G+o}i7nyQ1r@vAhO=l8JHslf zs)C2}p7dAX$S6iA)A4?}_tUhgbh1$J5oQ+k4W4Zkf`8{xF598KG31L=2A)N=fgzy{ zaLw8}1(&AL);F}~Y#+H$>fBjKBEjh5T-MT_w{@JI++hkX?IKS6E!Q1Nn@@8=FTW?(!0)yk^&UMPlu(&rEa0C2q}MFmwQqE{E{wH>0#6G&NmT$R>N zrTt)ET$sNhny!UjZnAT-6y>a_Ip|R+cH@Z=x4Zeo`hpL&^?iE(Y{EjCeMDM>0uTvq zS?yTX1>J~z=oCueOzJO7v_j$$r#e?J*wnO(0rnHIFqud5SA!Px8|ha(3X5qEn--K~ zB;UO!YibUx2H#qy_>FPueFAERx71hLb@3RhzVeh?RPe(?9#v z2Q*hT9%`g!@Hv;d=gb}xW1IeSJjeh)(WMlLLH6^M^EI=%J^HjJIp*H%$%c#M3bT|0 zrZhEqw3?t_*iT1Q9Y*(SCq-TIXJWl!NiHhhn~f^(hl()H;C2QFC_sbY*Uc5PsgC6F zXCcwG^1!I?%tW!r{71{pt-3y)9cuj=l{#m1Ih{^xnx^jOg$r}hx$_`^Znyc#`XEnz zw9BH)%PJ@k!1U-*lkA{Woy41Lr@YqgMjvR5%bX67xe>0dZJh1}1w8O!RkBO{Nj!=a7_5Dg zySZq4u|J|)dyit=m3$jw_c-!@IZ778dcrm>LI4gxD?P^4i?Y{eTpX+4&HKPbBJpzY zV2F#aS_~4U0-k;eJatRK0ZUUtcEsy?_;-yRFUC;i4##lTpby z=E?@J|A?(blF)384~Xu+u^M{-2K(cNcWOFg>F=4&O_Mc_;#?;p|G<)%AQ6Sy%7YP{ zBUq3DPMKlYA|;+!ZBa>B8=Q}uBR<|7e3$L+Xpf-A_FZvlEap9I z%C?Y*D?=9*bsEJtHa`Ns-7z-xlVEoYv{BTTEama+L9dx`YH4J0-%hXC>1GW+g^}n` zvW5niu5KSL8dwJ%7P#%uoNzF|wKS{hZ?c)6rzUrR7P(Hx5jk^R3F5mPDx7W((36_r zEqXuJ)L;PnXxmsJ!4kH_V2!K%?cMW(ee%CIG0%N&eKH{o1h@q@vbrjqz|m!`+kWxG z(0zPxK^cicom#*NUd=bjQ~CP~*U(^M75>o?JL#&Z@P^5&^jcFy(d5-p7wN)cT^sbZ z*JiETT1vnza1@Z|O3)$O1PvsL1rCL*nnv)sD)jDkN(l`|c!c_$rsY}M2K6JU4`>5^ zW{DSTV#e98*spLmMtN20%Z+Jk3J6n0+7ilko=B`}&8hj|Ux ziMB4|NfE^Spn$_f(2w%9lZ(AhPPHKH>~GgPt6T;u(_?xppbFh!Ab!v@>w{{96fJ_^ z%FOs278Oo2#Wq49I?mZhyORKb?~i|RnR95(%d4ym>Q8X~96PO>LdX|yT^!9>eZ*I4 zH_FC=@gf66m$V?SX;*P{6reH8cMBEQC1pG^DA-zzv0@b;+;Y_srR=on*+%i5lN>kT;@(-rZFo#@sN_OQpE3k*#zDX4+i$8~N>9J!4p5Uo+l!xgk; z<$G|a)T1(`xZ2-7C7hsSUEMsAsloCLEM^O2^r>;n98v$a(jU43s@XsIgx(X^?pt>g z{)TyZW=(Pf4L+;P)b4Q3xDFr^8>|VE!bAX*E`G^|nl?u@pDa+vED*Y0>HQ`&!Z_&L z*ZcGhis!!Q>7mCLfkpZ1j=al3}CKczXR;trZPf6f~vA(Qs`|wVWiT>$4P99XYU~-0a*& zkOgw3kK3oqIb%jJ3fkK<@p)nApa$$|Eb>8q+HD6o0(tDZM{%xIYFe3AhZifdrjXlq zjimwjs<;=Lw^K!e&J_!s<0q}ODhj@kj~sloZWDMjUS!DIWZRtgHPc^B25_m zm`U#)mXukb-t@(NG$rqR%fV;qnz3Q+TS3w~4cbay5*YnwrJ!r3Dv z5kl4p4-B!b@bY>1E(I6po=2ah&!GTCDw3hEuc`RElj;(S;cDe}p$BUdi)yPo_++|@ z;Ya&R{ogUVu&k4|9mLi$wc#@As$#5RNZ{hC*avMFt=d4e+iPq4$r-pSQg-*tY%mdb zWFbn-u2P@MTqP$URUPVeGNuO}kHgi71K1%_EXTWPqE>Fs-l5%NM8ZCboaEd@_eObX z?`fRMt%VR+aeuVmDLKdhZ=5-W3 zveAYh?wx->7B2cqn1n$h3(6m#N-OSMka{^(Kt*#Z61~vgwNu4wrxR}Ex5K37Ly#`R z6Q?q=D20~^;I>4W9hofgwD79!Y_p<>PaQYYGcGEq{9-Yam$UhXV`C;9v7e5Aa?^yp8 zjT&|P%=@t405Uow zR2aYW*XlQAw6aN}WaU?G2#d38FRYf|kJ-m>h{wlZq zg{Z3X`^6)6;f33PJKFDCQ}=@57A*iT2@&yKA?uLr9WyPaiA|7*Y$Sy&pX0Ba?^cI1 zbSP9tcuKl@{vi#sIGWue=K>2{pZ@T#VlX)~g<9l*Bvr0|FT_~21|>;sW!<^5cv#2%xfZP4E2e{R zG%lP8ut6&`E+*T*Ce~tLBZ6#o6J4P#h z%k!>o`?L{woUhI|g$@zi?}ZVip+)AGP+6}<#VQ0T(Q&!ujo5oJHBea?_Tk8EcHJL1 zNsYmjMRXn;x-OI9P~6MPfM*hp!vufokoEW`hx@zdk+Zxnb^{%Na@*?LJ-c|*D*4^0 z73@SzoMlxqyq*>K45hbY&6et5Ht1JyTfWKZ<>~%^f2o4Ppv;j^qnKKW9VhI#bJ8*w z#HwJoRKC2HEhF~b{JqN8-At(0)odRFL@#$HSsi(QRH zvpg3SQyI_lMlG<{Hhptts+~ASaeg`E8D@c93$zNv%-q_*NN_m3<+)fo3_w{vzRYZM z3Dm4BuE}?B;VcJFTOMt*JBx6|lpO;2;+Q46H6QPfZ305ici%$UFDnUaydx7wS1dIW zGbXo%6BSh~3>2TyepyP7jmnIUYOb5t6CEq%n4F z%(dspj>DDBHp!+nQAP1Mc=n&=fz+A?5-EVlkV6(if;;?RNy-Oy$)owTr^~XB6IswH zcLi4^Vp&i(S|t&?luC_hb#2UR_?s%9by26>NFwVVbbF=lIgJSn>f30U7@A<}pShT= z=B}wd+6b^6C@pna?jrnwE6cogBnp5uFoI5QKd4b=h5)=>+Q3I$eme(0>Ta+^9g2Jx z9bw1x5)h&E2LEbi@3Vv!+<5mqmvm`vf^2U39qSOeQg1x{8PshiAceuC z5fb4MVrpoihpY8}`L#KFECC!-hKcexp^5alwn6AX2|!-St;t(MWkHZ|=znbyUe|+Y zhR>vi`&OXMSBLsNJ!bE~cCte5h;;vBJh+s8sQ@^zdxTAk` z)P<|Mk)cc+yv(>q20$Nn&@O9=Sr?znI>5Bu%ewWqTdsP|Hw0Kn$- z$Txh&y}Dtt^V$4(N*U1H*uGHUptQ|jaJ5yFbymQPRXt3*R@1@dYv%o0$d)5;sU2=E zrS{QQ9H>sx=yT!wj)ir@Z|D_6<^9$9Ss*r3Ly19t>EZ!A{;ktHJU=I42fXj5mm+#w zha(fUx_oe(hl>qaQp&;#IP-I!CTTb+bYoeboEhX;$E1#lICxp&5@*LjX%zX1*&=a3 zU3UDsapv#Ni&z1tm2Qzj^7ICV0a_Usfm(E3R9Y$I7D}EXslypnA|d(Wb~$|9LcVD8 z6Dwh~M+>hk;^Ijg!GsY-!U*%vL($u?E#Z#T?IuZPO(@9x-A@} zaFj8n?>c5Q3yk=E;*`FIKJ~=$(?$x0SQ@5{mhJX_V9(61D^!#?6bZmc$ZdA!_Hn;< zlr*VjKVx|LdfERtDDLO{x3T+S=TQ@iUQa5HGdVj!%l3RziVy@~hU#W;g+n3SM)CPf z%N(Jbgo*7;wZES61W?7x602Zzshbl65dD2*v>HdDiOwzx6u~fCUKM$U09LrBt%Cpn zOrhC#3rB(u0BnQcnzRghKR<(0+tt6y;~}No(?69<0VbbL^8?e4{|{5|93)Bez47*V zXUDef9ox2T+n(96y<^Yp*yfIH+qP}oe!staBW^_h)6vzLQ72DjRc4*f^R)0wRLVWv zD4qOUC-5f?1o7Xg;&OMqE@g1PBI+IUE}bo*;3QsLHlxL2c0EXFQufv4K6eljoXY;| z^Xwcl#&17FRJPpV!`o&1L6WDiQv4I7!Sg` zkJD*O$%ix(xJjAP-LN&~g+D*Le%w7uO#x%Y?ga>d!Ti%m=Yc3fMQ^92JDVt~g{j{K zJq8}47>hV$cm}!*#eGEZZzbBZG?qdeHoem_`s>EfT)-Ken`lqfW*9$!mO`DdS(*G`#c+cx?6jHxn z>GJ|wpoLh7SZL|E;qle)KL@f>A&Y#ZA;8-=KvG0dB|@7*Hy)$lRE84FgOpkgmCV38 zp-d(g#oX3_&*bUI5faOto;J7Pu73Zbshl2quubmn!=XU*frgT-Va3#5UR)QR*IPWx zFko;-Q+o)jaJ#G4<|$G-wqcnHlBYK0s+Zi~Ja4`K()j>@kSj{Xjy_11*c0R(q@pkO zS8XFXlK!Al#O01-09G~22AtW!f^}y%RcS0{llwF(U4Oq20??hLWJnu%U(7pU0uq-& z7&%BU9mV5AB@)aJq40K-|B?rOgILMs?%FbMfBM&4=Y77R@2AL$f};J=IeSfhuknF@ zHE9L3aFzWQ^$t)@!wL%xl6%>f*w@#Q^aD*9TBR@TDOcL7t=)fnZ^lsaBi+2hJ+y{# z>Xg&j?euUq9T(t&RzD`i@ol#HRscia$%^-{`g^&|9O#e~ZQ0G)Ci^3A;(e;Z<_2@N zn`YE&Zw9`_?${X#c>l~8bj<1eYF(_D`NNGmn26bzA(g*f7oA0P5{FC|lcZPwpuCdiTA6Zkvj;WI6J0rl0Yi#n&?8m6xfUpR@=74SCs` z(}ok^vfSqROIVaw$%F_o65dJ0V9_=D=jWxhFPX0o-tRNjI)#`S*g-Dp8s^*+-j?#N z=Wt(L*UBM;x-Qoi|73@&)iGVaYVuA-{JLT&V>!N-Pq0$52#f^3RR@pi(QUK-z>a#b z>06-bb@2VP+67157-5NdPvzc<<7y1R-%HACatVSP!_A=mnV_731W{1eu4rqC^*lm9 zF; zpR;aMFwZ(|5T0`*+-X7|@26hEYD&tm;dhPE*$WaOG`_39ebgk0o+C`KdD-*1s1l4- zI`aSoEc;$xOu26`#`KOWuQWyv&EFK=*1gVfySV4=f8!QJ zj`=IrEE0wHKs`0N;9IoPX2t8SB15TpzA`zCt57U>yC@%q z4LT*NpCm;QzLhqnA|Z+Te<_N~RN?+fBO?iksoxOm^3 zd(o<&vCP*ytx~cy7_FH5w0*=jQj@ZHI8Rt2#8BG{dC_;n)h?I5;^nQq31vto8K1NN zUz>gT`WV7n@1+%JyWFubcIJO{%n)`r!lzJb)RH~#C#;*$hoZ>TGCYV3N2iRXo0Mh3 zs!sH3Tf=EC<69?D%=IvY0f2>TZvMSAb_AdpnD3x}&re_c}98@}GOHFTlVJmC%8NmuIH5=4~!gA!=L@wzmb-(dZW#)kxtbqOB~ozKotOs~=HUOWpG z)l1{0e4KL}@$hxNLFY`j%G&`M@vxOKiyyAVblRe7t(d89G8)d*(_dZ6jKk||cKH{- zUxcgexzs<|gUI)E%6J?&ZlTon$?3mT*QMjhA>9~Vci(&(VENM!^k&1@FeWo2 zF!oX}Ihu7+=d861W?c!GpwNKokIpSqEeEaMaC2x(q^Pft|B?%3E0&R&6Z`Y^Dj<3O zsphi_%XiZU{C#*GTo65fo@V=P&u3yvaE6Pt(<{%>x;}Sel>p4l03DqK#GkyMZ5ls* z75jiTp&&43=IOHls`Z2?WCXWO$i9;6E&9JSL$4>pDleq7ePW>im1Tr7z!v&mtm=D4 z*Zp0UWB*(o{be1nr^-{TiPWxR7aswhF&?*}nyc;f?*Cm@+S@(~3K<@JzOPe%k_Su@ z4QV#-Fwh-T_w@$d_XPk*s}k?(V|$P9<~W_~1oh=LKk#djr-m7}k?MuwHmtn}@7v^K zB^;YFk8QOL1|6^2TRC^2wZuPCaGl;%>kxM;p{}=&N^-IPJrQfxZ)GMEnr(T!NU@{d zNc=cGe#qbp!aC3Hx5U$uP7<{C86|EkKFRx0mldfax4G= z3tqvTxOLC%Cded*9|2@YR!-51e^>7i0eZx&q`Vm6m6N6AN|I?-X9Jyc>PFs17s3Bk z87U}e3l%FgNUsPHR?>`3k}Kci5FViN_(;t$XExpmO_3PCqJNhZE z%FNzj`ad{?0xw0Ujw)5v%@-6D{ec92d8kJiYyvYHFSN0SN3;Fqq>k6K@98$c+L+@W z(Ixq6vN8Kalm#?%bMuauBz;9O`RSLJ6s56%@Y=j2nIcn+rF-jBhVCT85YtAbocZXG zrMMba6kW!2sd2-)5CIMCv|Qo5BX)rmjh725(d{N0#`CQyV+5d-4~T%q<7F>YtTH=_ zmd(f%4nY}2NTt{h&X8$jOf!65+Nj)X7_nE8mm(}jmMVHY4tWweT<^OOtu*}+^q*Ey zqo`VP(Aqx?Y!!Xs(=(>U&b5icRR5&Q7O37AE`j5em7NZ9=*a5Haa9RHtD&o59L1Nx ziW%}H=SVZq=g*vQ(z=Gf;d}{R`q7Lzrowv2E*74(RITIC$ z0VU;^lN2mi>PKwuoGBYYXJ?R28h+M0iO}Xjisj7>P8>&U+0aHtnWsIS8ftzRecwW9 z0;30TirmYIf7ES1GvWQeDsCjs|wVc`K8x0*aIL9oUG9M}>vGG;OU75ZQeeDL1|B)!p+c7pRuUEM5~ zF?#}pP7ySFkH8p}Bn5oVAjRGg%#xlEwK(Hk^&c5!+)J{_OF?Cxj%>qqCPe)gP8CEe`V)Bc+HL~Rd#`@>|Xye94 z{%>lMI6WPay!p|hi?NBMIHAlbLgu@dbWH48GPDvPe(9KYJMHA6tHWK-kGJX0*aVE* z!E$XW3s?FeI&t4x-*2X5y`E4D$x$=3qd%4p*b#dgsMy&$k>#!aGI?kYggd`bkWY(& z!yc(m@Y4rKgHqA+#a15AsZyNJZqe2%c;N;J8!suw3E9P$}Z3repx2 zTD9Z6&0vm-fOfW*HgyV7GE}K2FF`p)A>8zXy|p@`&y%liC2I&kvN@0FbP+HEXS+}k z8n6cyF@Sk=S5NgI6dT?1x3-y*Axem0PhyQ$PQoP3t5y4#J^{RNx;SANm8S>gg<-P` z0!9sOTztaYtF~dM2?T;1jQ+>hA&iwLbBhpROQ78NBvt8=B>%MS9VftFT{$aTc9O~t z5fp$(3)HaviVzz84}hL=x~F1+EQ+3Qqk=88C7J(zBG8uiOa~Qv0(g;M@;JM zcp~5H)Cc*G^nW?EZ*^B@wT(vX*=#!jJlzXT3u#7q@0G2z7Y8?yT|9$SsiqxSF;!Awz}nObtSlRP>`i zr_owDD{*Pix2vQW?CWn2#!w8!i_nFjo|(OUKvG$hcTYX_57h%Mc94wmAIpE7s8)8_ z0vf5$52we}Y@Zu-G>84eSY%tCdQ^x>zOoZ!9NNw(#3WxbA5zBXzc_3E1E_0V|9=2= zwuEEt$Nf7lea^U%iG=F_&A4%4*JqYyuovzghfm(&{&`I~#LolG(4zv-a*dn_XjGLP zC^^2dBOw4dYsf3AmmPhB|I~;hQb|AJ4u81KmC*05ZLN z>=`_@)bTPBo(RO6Cw`LyHG)&T+O<);Ih}-1mvF(*wRj_asFvMD6sGh4bazcrmQqfC z-f@2Nb|!%#618WEl_aJ=eyn{I+M8+^au#&V8omjQi%W^9k0BA)HkbNK6`|D^<&&84 z{Rd%ZiTwZ&S59~)%o=PDCi(Jy^mMvtDH>8?2*EQm#vAVK+D-lb9F7R%#AT8FEj!WA z9px?ZUr<2>ZK*=UQdf9F#Ar~{Ne^lxohV&G2MmEldWT8N6Qw)(@HA6v zVZx%05z}L>-(_8i((d9$gPZ#l)iZ|<643D4iQ=CVr53^A$~&OId#=99&kU6O64Rs| zhdp+X15^sq8QFK>l(3Ea)ALV^5Qo~(r@X5h{bqJJntN<+D>00Rk|+^nkX|)zS-yXX z|IkPg1~V{aijwG*a7UuKeA!YUZ6pTmyH#&ECW6g5Db0RtF@W*}YN01bmV+&!qx~s+ z5W*_VkS%65`9qyNMmXM~*@KQ%RTkDRdVAhagfJ+PjK$DPWJsw5@iA8e?ILsxztI|g zGt+9{NbK1Y)US3t4#?5>*{n#+--9VCd2x)~+jo+nw{xT1DMJd!A1ZMC+TE%ZU&W=2 zWB@*;q@~IhV~mAbQI^t8j1$jC4g62pKtMd;D(?@l7?k||Mi5;*f%?_--^0N|w7uw~ zP)Imv+5BEcCKd_4*OYCwefK(oIj5`Oav?KAT3_={v6@3@OBPeN_1r4PAa?6Gp51OlZY!q0A%}5A>UHV#y<1-6cc}o zHM2Ugdj?Ss8=!XW(hD9SF5=o|xeU|Rlq%$6na128qC@Xiv=s(AfBeSw5GbRy2@CW{X7YHKJH|4TMBv{Jbv3l!0P0}q&G zM&3-3Uv6efT5Q@cLBG$rms=vchOpPyEz#!Ebzb<71FINFeJLAieKwU;G#c|^B$)5R zsx)6<&^}r?w)W|C#GkFM#LGD6I?AkgV9Kc)o0nU{^Mkxq-|$s>K)3o_W$dHK{VDEc zwcLUff|}>x8-lBvh&w{o)3zp2pUG8K;|#P{=5&1C<)e8Ct)$h-rfsRF4$ibqe+$4Z z#C@yGh^>8{#*JftJNQ(TpS>Ur(#?I*lT`WOH0KL84H5piF240E>;gJ~UUTh`Gz5Y) zEAM~HD6T|$zM!YS`6+LI@zXhGF1Cnd+KCY|cIQ<++TuiNufRG~cwxPYKRzfgw%quw z@x`+NcKu|1V3LghE8w}Mr5;G4vv`qt0cYh>qm@W1-R|XEmcXAEG8k>1ux+BQKbgtU zP#MB(eDc=!et5UHgDj%)+e|7<%Ij``CcBd5x6La|ei70wv|!#`e-m9c@xZ+<%P%RH z+FtwY83?f3zE7Si}H-E-FtV>hgKMdzRSCS{GDa$y9#rMlRiiLncG}B^ZF_ zMPKd4>FE3&eFIQat*q^)Z7-IrA23UK3T7}?syHcl@+F?vo*?iu{3hm*-+q3&KG?&E zUw^|i0Fqjam=Ej8gdy&E0-Igu*Le30{a=-xy_!?d+?g)N2?yKrw)kz^X!Iv-pZHuw zJ0G2uX6qr*P~fmtH3lRZl`zqeG6Zu9z386=TRw}s{KFastiKQ_JYkNz?q(upkAAY+ z@EE-9yh%C6-Pq9}gv40g6{~gQ8Jbh9OWg$b{&mGrFKxYo#70Qt6InB(fe2x}*=%u7 z#}lNReaz)+?FyW4-Uwp7S#5E*6b}sjOOv<#^vA+4K4}5VmIeElt%Fa|ivnrZ`q(EC z$zTG8kNnLVI`Sn2$!mc16ocz*D7B5{+TS***rQO!MQ^->x5{YV9qTAd>2|M9P=?LU zX^D1k@AQ(o4QY=SviIu?Y~zShYWFuf?xedt#ixQ1-p|RIGCsl8un~3g_ovs@F9g-r z@BMBy^c!%fZRXVc{c4e6-H2H37W0fUn}NP|`Yk{2VGHR+B9(O;mzl0{8t)T{*x7-z z2Yt64*N@HzZ3-c>@>aLvJ9gCi0;PYI{ZSQW2%{Ipn$v1}9HFV($P&s^2d~UFJk0;%bbU~aUiRH# ztbS<&UY@72;u6mgY|H9TpeEB~%bA?7t1aO@wJ6}*$mbXQ-FJ55*gzj_sI! zZAX5f($B_8tLArekxo~?K(CIj(#7TM^uDXy5`q`gJ$Us-;<8PLU9y-zkHg}9B+>LT z;F|t?esl0AadnbDuTN7hqvu~5&{w+(fn!_}g)?OI29G)H1B6jTZBR z?QTf7CteNgR?p7F1A6Y#!wZ5A7Xy8BWi(+t$j=nW=T9!bX!&m2Tf6q==tUGb^AsMq zxCOYCJ<|vMkavE~L!%fxU5J`yo2>?$`y5m5zFbv_SnyzQ^Y0yf$OlI@5`n{TfO*@A z%tD@Hj^5LWY6~L3f`#Mcz~Kl||9fkk{*?CJryw!q&Lhx3W|O@Alsg7@9^$*xiqBD9 z^3xm~me~$j7<{5IxCB+v#9~ndtaoF!?CLd-gu)Gvw~ppPN~x(<_m9@=6z-#DpB4gw z-qvkjr6d@_p$uNWn=aBZY9eH(6B5YKo{JNZG`!m!pXQ5Zf5-`i`!E?ip(9PdO)5E}IEizi*zy&k`p+y8Zi#19$s+>Q|=UY~6_X zy-1R+X8AB#OdH_K_1hNQv=0)kA{cXTgVz^xA`oefr=0o z%GKhs>K6usY+)mr#Q5_(x&jHAx#DM?uuVT$y~*u2!kx60$Op`V{|Cx{ko(Pp0*UyZ zLL#xrPOyXxpA5zt3E--8`$KI}=T3umZo>9IM%prSk`7$aNP03F3k61lH)u(B!)NwjuA}75O@=&M_3^0LFK3GuMbqwDOYJaQIyZER zK=jl8;#`z>VeCO)(13z8G%=}n`M~`5_~h8+DAy|MOaHRjdCq>}1j)Btp)rrBkny;lG;Sr}Ews=YurYgCq04)w#q^ehzh?(; z4Qe%PRuI*>v4y#JKb)5}`_I+oa6^x5}Bc2TnpHL`9wt0LC zV5|oCM#yj}q83c$JtM%E<3+&|)oI6b^CDk`-HI!jNBF5YI++Z;r*TV1a~xwbhQuFV zK~yu(XrViuKkh~>xbc%)Wm2Vf()|SiRGjszyAcSJO`$SNx}KExV>IxSb*yj+!ZG|o zN6^Ia8ITH*hnF*3IP-r{e|FXr)l2Jje&R@1tN^Ru8aCzcLfpw8Psbic70YVJX;ss= z)|3z#%Zo5#02{KLUU6S<$c@}x5Dw5DP6Ppzrf^?ZvKIkMG|4X!xLEvQ0V)+$h85;` zU2g0Qth?imC0pP~2|Hf!SretIUzQA4rrqH@*ZIS}C?wB!9JpC7GzYH@P;qJq@x!ei zkej^iYWnvrJDD}`a`{F^q`?wvBx3XW1L!U3_(L=r|3>uuG)7*b$`7Bot!1fx07ep@ zpzxU}?*BrOZT|y-#6hGIjVRa4_B{TXe>Yy z`MZu5r}1}kcx7tbHr@_k?`SxPE$c`6S|6E=;mzrYziQ_~3b?N92Djh{*NszR3Drh8 z`Z!S3AvljHr~Ln`1qe8ggVJu<`|wA5pZ+Zs5wXpomv#?4czpXHE}|g%hU?>Ya8v#n zEROTW&3nH{9OzH{u%~#{Pyu8KUvNGeb=-9HtqM2X@ASVihou~_nEK9d+Dq8^KYcDM zjqOKckE*DG)Hk-Q%O>n`rI)lk2zMl3fRA1AiZqbp_sQvn|CmTGR%7GqH?DuY6~K+5 zbV;71N6#cyd_Ek>avtY%$n^U@<|piIGK4UDBpi+H)S9o0kKIP<5Nie!ll5{22JDiu zxNx`vK>gbm#8)9vWJwiU_Ky5K{pS64!cq$bP#*A)_s)5j#iF{Qz~&t^F7;6NQs<;> zS=6#%eBO>JIlt6Q21={*>Vo%vGMl~=r>;ZD0RCFUDA{@>_OI8?-Er#ENQj}p(cpJ` zWe_n=$v_X!ze2nNeYzldVq>Fq*fe5Myhbu$o^m5Qv2Qru)DG-}4n3MVH|}>bhnKhc z;rVTsjdZl8*893x(`-Sud(B0|jkmz3bN($o9~*HbnM;>od5xR*$8ZEjERwHfk~ zVnkHi+U*?%7UOYi<4m4q{2?#0w3Yk0cID@3i`>GtQ-4a;d^EN>V_E8@CWJcz4A51s z+_TB;>&-taU%CQAelta3m0k^*dW=*HEd~P6V^vx_ZZ!h*z;cKj3c^xXOPAS9Hf^xe z^^@d_;i#|ADP{?1zX_l`!vBJY=$1{ZWWU69U4#@j#We`GxkB1exgAcDguJgV^RCV; z4g>?JWY(MYhWcmiNn7(2+sT(AS7?ZE%0{iWU%$eC;9|byLjxQtMbYO zhd>NGuxu+ljhULKuUMT#vsODeJ0<)<`T+gGx;7n&AEJ>VZyJ98$Tvn=iQfelRruR}tRj9J2EckW*uf#iaL z>Hnl%lsb{mPC$!Sptyp!j~op&eroD+Q-1U2{k7I%8p;F@h@ZsBb}8LragE&Vb8wwz zm80eW{K089sapG#B&meMogQgtz?VY5=KB+z)8wiqB7}ElQH)7KV|_Y;3{DGLV!)H; z>Dmtn+gxR{Uc$UZ0VU02ca<^&9@ipHtS2__G_?|qcMmt@!H56Lycr%EFhYJGyRvBS zm}XUfCdf~qZ%z#lP;S}WDR^>ee(Wf!OE7M19g}3#_n2t52`P$+wY^)6))T23^i_Q3}tvw^e ze(yv@W~j{lyVZGTxx6&B*j%PjGSVmxO8g``ZbQ|&k-hmIQgN44QxG!zFA=tE=aFK= z%*0Lqre`=GHhJ}d+XrRikxDuw97tbiuIF+r0OFv{7t*;CgSGd*W`IgfQ*$I9?f%}# z!q(YbM+l7wo7??@Z`X)vSIB&dNtNLz)kj;Pp5mWe<)x9MSA0!XEV|=MgzpS?zs0Ur zlq)k*Sj3&O{x6qQo;v>KXu69C2!1Glff?Udp^3REX+R=tlP;q_ZIwjtEkl9@^|UFq zh4g;g7R_Gn`efN-0>YbpQ}$V9(x2d@!n2p6?$i0X3RZTAS6THQ5P;sQ(K+Z{85mEK zrDwLHrp6!TEx~b9FJW6elz`y!^(o!NL@+rYTf1lHggXtCi^Jpk#zNfe(N7bAp+6;g zHBF^#;LZ)tsuGtwLIn`D0n`fPez6PjeW+<$!nmlks7}GoLrS@Y_;f23i?OR8O zB?I<*7bvE%Gdsuo2gbO4XJpjjki%Lc6I=M=IzJiNs4d@rSXTG%2ot2a(Q|}=1XAj1 zGlxGTD$1B$=gze{xAo8PUp;Rg>=*j?18P&)p?o;ITL@t5EMx{O_J9-VM`7!^JO14lKCe`bVT3Q`8$}i6V5xO}nx?h*wrrW9 zR8$!K7_un2uWo6vNLQqRAtIZP zH9y+c0#TrseKp=~TV|h)meS!3wwrt~terbxBCJjxreWhdGSELysF3>HCuhTv1Y|qn z3j)^Tnp@&QNFAfCJ zB97%cX=_4Olp|<9Ar+vn@6(BAC@kV|$@OzK+#?g|<=VncE$jv0Y3%3lIZ+2MI}^oA zj1}b)uZ(Qi0Dw$AT|LcdlRau0DQm8-w(NMECIiWl;bQnFwj>IjwwJs%tnqNV1UE%; zA#~j&lpg1s3**Dmpj3LJ=cZ+fuw-@?Q!)NO8{V&gQ-zyJUL2(i&c7?L^f{{8Jt+N# z;iFcaiXv8x6<_`Hd6Rnsk*ubCUJ_g05nw+1*1hXrnE%{2Q?tHTXj`pitdc6e3j7u7 ze(bV{YY0qyX>&d{c379(>*BpB(5KEfiouFHLR}rP&)0d+(-AlfD589ue}i)-&ay>K zyvLIzsgN@Mty@m*o zG-!2tzslnMG{-@u`Q(V3dOm(PVb^}TdAYwaSe&|zofS3C ziE!IJth=Yn(1i_>bT>Pm%6A$uBJwwWn+Km?3S~u~hs<2=UvUhxL~Aw$VqZ8H1d1+L z9SV+Bzg2hs#PstMel6%$%e?y0;TNTlhV1r!KCnjK3`n63CfWJ2hA^;J7TIj2y4?Qi zKidwi(tf;D6Eb8**JV3snMjFq z_2>yR4?Sj<*i<;SnNpdop2Uc^9EX`Y;a@zlqCwUDS2q|Xl?37KZ61k&_y_+1=CT9K zYdz}cX!Dwf6w+MF64`dC-A?*$foTo~|GhOkTR~fXdCtDD)gbs!8J||*Ahsti&!~7X zm#$38#UX#S;RC2q`i17pPc@u>mn9V-Bi)?<6z(s=Kd;o`FbTbMg9M6)M|>XIj|Zo5 zod?%=1^@tM0y7ZC;j07onMk`F8pno9S!lohY?b|vS5b$4<^mp@@wVF7e3;I3$%H() zG@)=Fg|ZIt<=!ph0UIl`SxXsT{vTSJj&{1^;JBT!0c$)a3yf>h+?bOx`O$YTRKe>| z)MfY_V#?Mhn^SmoIhchs6-vBa8c+MR=+69zOSc_(OC;_f2KfvxpIhKx-pfb6i2K@u z@WDR(sFmi3mlo2F>t5a3&zMb}|1P$hq$_yy{S+#i36{eAOZi?+ZlszHMl!D(?k%}A zmPval8Elf&QptoYnGsP{Mw+gzFtdyrt0Uk5J^71sWF};{02!p8Q6%FDCo$ljqMqnI z#}&Q*Ol@EtOf;d@NS3cj&~aSN#bR_n4=0z4;cEy)V6pLl`zVZ>bnejkOW0GriKTx@ zr$JwwSV>#5VnAvu^s0f6Q-;i!Ew)73Q4DRB(4QL%tf$P>_f{s2$v+gRd+-96L{dY! z&&OBxYS>KFJGIU^tkYuV=lF%2(e<3$&22$uLLO1Qz|8>> zK#!Tq>@T2%s6e8GBjO?jE`nBB2CD0M|8iilUfPN&W#AHc>KixC*y?6xyzSAs5}vM* zT3~@Rc-1Zaqq}yDq`eiHEWPN)D-t$2jqHHGTvAU17SM^oO&Kn`Y5?s5fTA0D5lLZ0!7d|%lWgDpSs=sH|*>=XO=npB5R@vnd1)tSm4sjsp~VFBUT{b zCZ7ddK0eie{TC9T7IRUSkVbTXgCZZX{3{`2eqx%s6;@Fp$rz+COn0KnWFOqDj=L~j z_t7o!{v%KM62q3Wq3oB<(@-r-n*_6oD!ST{@4HF>U?t{SKiL~cQF4@v#- zo|sq>9+RDsdQveG!5nj)*F~GJ!<6Jkz zhVcy6G`7*P=*43+C6l}UzOlsaY~NJ-zh&k<958Eyw#yZq02~ce zcB)eP>lZ82N}8uPlo)WIFzr_mS84ZzN46h?yX^wrcT%PcwttoFm(T9zQ6Dm=GDttd7BXv6`V}s25M*Vld%wIi>%J(-~ z)oy(5uvIZS>95WP!#-MgN^lf-rj5R%jLW3AFt|Hf?0!xDqAJ8JQ zRFqw_-qp0zTaW^x%)ij*ymz@!7-u4mriArFx@)e(C*~%k$QtyRFaeUDe}7&|Bf
KTihal9Ajl|fXZjNHfLk6}?0P-qs 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%0AFUWX!S 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 -// -// 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: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// 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 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. - - -var pSlice = Array.prototype.slice; - -// 1. The assert module provides functions that throw -// AssertionError's when particular conditions are not met. The -// assert module must conform to the following interface. - -var assert = exports; - -// 2. The AssertionError is defined in assert. -// new assert.AssertionError({message: message, actual: actual, expected: expected}) - -assert.AssertionError = function AssertionError (options) { - this.name = "AssertionError"; - this.message = options.message; - this.actual = options.actual; - this.expected = options.expected; - this.operator = options.operator; - var stackStartFunction = options.stackStartFunction || fail; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, stackStartFunction); - } -}; -// code from util.inherits in node -assert.AssertionError.super_ = Error; - - -// EDITED FOR BROWSER COMPATIBILITY: replaced Object.create call -// TODO: test what effect this may have -var ctor = function () { this.constructor = assert.AssertionError; }; -ctor.prototype = Error.prototype; -assert.AssertionError.prototype = new ctor(); - - -assert.AssertionError.prototype.toString = function() { - if (this.message) { - return [this.name+":", this.message].join(' '); - } else { - return [ this.name+":" - , JSON.stringify(this.expected ) - , this.operator - , JSON.stringify(this.actual) - ].join(" "); - } -}; - -// assert.AssertionError instanceof Error - -assert.AssertionError.__proto__ = Error.prototype; - -// At present only the three keys mentioned above are used and -// understood by the spec. Implementations or sub modules can pass -// other keys to the AssertionError's constructor - they will be -// ignored. - -// 3. All of the following functions must throw an AssertionError -// when a corresponding condition is not met, with a message that -// may be undefined if not provided. All assertion methods provide -// both the actual and expected values to the assertion error for -// display purposes. - -function fail(actual, expected, message, operator, stackStartFunction) { - throw new assert.AssertionError({ - message: message, - actual: actual, - expected: expected, - operator: operator, - stackStartFunction: stackStartFunction - }); -} - -// EXTENSION! allows for well behaved errors defined elsewhere. -assert.fail = fail; - -// 4. Pure assertion tests whether a value is truthy, as determined -// by !!guard. -// assert.ok(guard, message_opt); -// This statement is equivalent to assert.equal(true, guard, -// message_opt);. To test strictly for the value true, use -// assert.strictEqual(true, guard, message_opt);. - -assert.ok = function ok(value, message) { - if (!!!value) fail(value, true, message, "==", assert.ok); -}; - -// 5. The equality assertion tests shallow, coercive equality with -// ==. -// assert.equal(actual, expected, message_opt); - -assert.equal = function equal(actual, expected, message) { - if (actual != expected) fail(actual, expected, message, "==", assert.equal); -}; - -// 6. The non-equality assertion tests for whether two objects are not equal -// with != assert.notEqual(actual, expected, message_opt); - -assert.notEqual = function notEqual(actual, expected, message) { - if (actual == expected) { - fail(actual, expected, message, "!=", assert.notEqual); - } -}; - -// 7. The equivalence assertion tests a deep equality relation. -// assert.deepEqual(actual, expected, message_opt); - -assert.deepEqual = function deepEqual(actual, expected, message) { - if (!_deepEqual(actual, expected)) { - fail(actual, expected, message, "deepEqual", assert.deepEqual); - } -}; - -var Buffer = null; -if (typeof require !== 'undefined' && typeof process !== 'undefined') { - try { - Buffer = require('buffer').Buffer; - } - catch (e) { - // May be a CommonJS environment other than Node.js - Buffer = null; - } -} - -function _deepEqual(actual, expected) { - // 7.1. All identical values are equivalent, as determined by ===. - if (actual === expected) { - return true; - // 7.2. If the expected value is a Date object, the actual value is - // equivalent if it is also a Date object that refers to the same time. - } else if (actual instanceof Date && expected instanceof Date) { - return actual.getTime() === expected.getTime(); - - // 7.2.1 If the expcted value is a RegExp object, the actual value is - // equivalent if it is also a RegExp object that refers to the same source and options - } else if (actual instanceof RegExp && expected instanceof RegExp) { - return actual.source === expected.source && - actual.global === expected.global && - actual.ignoreCase === expected.ignoreCase && - actual.multiline === expected.multiline; - - } else if (Buffer && actual instanceof Buffer && expected instanceof Buffer) { - return (function() { - var i, len; - - for (i = 0, len = expected.length; i < len; i++) { - if (actual[i] !== expected[i]) { - return false; - } - } - return actual.length === expected.length; - })(); - // 7.3. Other pairs that do not both pass typeof value == "object", - // equivalence is determined by ==. - } else if (typeof actual != 'object' && typeof expected != 'object') { - return actual == expected; - - // 7.4. For all other Object pairs, including Array objects, equivalence is - // determined by having the same number of owned properties (as verified - // with Object.prototype.hasOwnProperty.call), the same set of keys - // (although not necessarily the same order), equivalent values for every - // corresponding key, and an identical "prototype" property. Note: this - // accounts for both named and indexed properties on Arrays. - } else { - return objEquiv(actual, expected); - } -} - -function isUndefinedOrNull (value) { - return value === null || value === undefined; -} - -function isArguments (object) { - return Object.prototype.toString.call(object) == '[object Arguments]'; -} - -function objEquiv (a, b) { - if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) - return false; - // an identical "prototype" property. - if (a.prototype !== b.prototype) return false; - //~~~I've managed to break Object.keys through screwy arguments passing. - // Converting to array solves the problem. - if (isArguments(a)) { - if (!isArguments(b)) { - return false; - } - a = pSlice.call(a); - b = pSlice.call(b); - return _deepEqual(a, b); - } - try{ - var ka = _keys(a), - kb = _keys(b), - key, i; - } catch (e) {//happens when one is a string literal and the other isn't - return false; - } - // having the same number of owned properties (keys incorporates hasOwnProperty) - if (ka.length != kb.length) - return false; - //the same set of keys (although not necessarily the same order), - ka.sort(); - kb.sort(); - //~~~cheap key test - for (i = ka.length - 1; i >= 0; i--) { - if (ka[i] != kb[i]) - return false; - } - //equivalent values for every corresponding key, and - //~~~possibly expensive deep test - for (i = ka.length - 1; i >= 0; i--) { - key = ka[i]; - if (!_deepEqual(a[key], b[key] )) - return false; - } - return true; -} - -// 8. The non-equivalence assertion tests for any deep inequality. -// assert.notDeepEqual(actual, expected, message_opt); - -assert.notDeepEqual = function notDeepEqual(actual, expected, message) { - if (_deepEqual(actual, expected)) { - fail(actual, expected, message, "notDeepEqual", assert.notDeepEqual); - } -}; - -// 9. The strict equality assertion tests strict equality, as determined by ===. -// assert.strictEqual(actual, expected, message_opt); - -assert.strictEqual = function strictEqual(actual, expected, message) { - if (actual !== expected) { - fail(actual, expected, message, "===", assert.strictEqual); - } -}; - -// 10. The strict non-equality assertion tests for strict inequality, as determined by !==. -// assert.notStrictEqual(actual, expected, message_opt); - -assert.notStrictEqual = function notStrictEqual(actual, expected, message) { - if (actual === expected) { - fail(actual, expected, message, "!==", assert.notStrictEqual); - } -}; - -function expectedException(actual, expected) { - if (!actual || !expected) { - return false; - } - - if (expected instanceof RegExp) { - return expected.test(actual.message || actual); - } else if (actual instanceof expected) { - return true; - } else if (expected.call({}, actual) === true) { - return true; - } - - return false; -} - -function _throws(shouldThrow, block, expected, message) { - var actual; - - if (typeof expected === 'string') { - message = expected; - expected = null; - } - - try { - block(); - } catch (e) { - actual = e; - } - - message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + - (message ? ' ' + message : '.'); - - if (shouldThrow && !actual) { - fail('Missing expected exception' + message); - } - - if (!shouldThrow && expectedException(actual, expected)) { - fail('Got unwanted exception' + message); - } - - if ((shouldThrow && actual && expected && - !expectedException(actual, expected)) || (!shouldThrow && actual)) { - throw actual; - } -} - -// 11. Expected to throw an error: -// assert.throws(block, Error_opt, message_opt); - -assert.throws = function(block, /*optional*/error, /*optional*/message) { - _throws.apply(this, [true].concat(pSlice.call(arguments))); -}; - -// EXTENSION! This is annoying to write outside this module. -assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) { - _throws.apply(this, [false].concat(pSlice.call(arguments))); -}; - -assert.ifError = function (err) { if (err) {throw err;}}; diff --git a/node_modules/nodeunit/lib/core.js b/node_modules/nodeunit/lib/core.js deleted file mode 100644 index 5281bc7..0000000 --- a/node_modules/nodeunit/lib/core.js +++ /dev/null @@ -1,318 +0,0 @@ -/*! - * Nodeunit - * Copyright (c) 2010 Caolan McMahon - * MIT Licensed - * - * THIS FILE SHOULD BE BROWSER-COMPATIBLE JS! - * You can use @REMOVE_LINE_FOR_BROWSER to remove code from the browser build. - * Only code on that line will be removed, it's mostly to avoid requiring code - * that is node specific - */ - -/** - * Module dependencies - */ - -var async = require('../deps/async'), //@REMOVE_LINE_FOR_BROWSER - nodeunit = require('./nodeunit'), //@REMOVE_LINE_FOR_BROWSER - types = require('./types'); //@REMOVE_LINE_FOR_BROWSER - - -/** - * Added for browser compatibility - */ - -var _keys = function (obj) { - if (Object.keys) { - return Object.keys(obj); - } - var keys = []; - for (var k in obj) { - if (obj.hasOwnProperty(k)) { - keys.push(k); - } - } - return keys; -}; - - -var _copy = function (obj) { - var nobj = {}; - var keys = _keys(obj); - for (var i = 0; i < keys.length; i += 1) { - nobj[keys[i]] = obj[keys[i]]; - } - return nobj; -}; - - -/** - * Runs a test function (fn) from a loaded module. After the test function - * calls test.done(), the callback is executed with an assertionList as its - * second argument. - * - * @param {String} name - * @param {Function} fn - * @param {Object} opt - * @param {Function} callback - * @api public - */ - -exports.runTest = function (name, fn, opt, callback) { - var options = types.options(opt); - - options.testStart(name); - var start = new Date().getTime(); - var test = types.test(name, start, options, callback); - - try { - fn(test); - } - catch (e) { - test.done(e); - } -}; - -/** - * Takes an object containing test functions or other test suites as properties - * and runs each in series. After all tests have completed, the callback is - * called with a list of all assertions as the second argument. - * - * If a name is passed to this function it is prepended to all test and suite - * names that run within it. - * - * @param {String} name - * @param {Object} suite - * @param {Object} opt - * @param {Function} callback - * @api public - */ - -exports.runSuite = function (name, suite, opt, callback) { - suite = wrapGroup(suite); - var keys = _keys(suite); - - async.concatSeries(keys, function (k, cb) { - var prop = suite[k], _name; - - _name = name ? [].concat(name, k) : [k]; - _name.toString = function () { - // fallback for old one - return this.join(' - '); - }; - - if (typeof prop === 'function') { - var in_name = false, - in_specific_test = (_name.toString() === opt.testFullSpec) ? true : false; - for (var i = 0; i < _name.length; i += 1) { - if (_name[i] === opt.testspec) { - in_name = true; - } - } - - if ((!opt.testFullSpec || in_specific_test) && (!opt.testspec || in_name)) { - if (opt.moduleStart) { - opt.moduleStart(); - } - exports.runTest(_name, suite[k], opt, cb); - } - else { - return cb(); - } - } - else { - exports.runSuite(_name, suite[k], opt, cb); - } - }, callback); -}; - -/** - * Run each exported test function or test suite from a loaded module. - * - * @param {String} name - * @param {Object} mod - * @param {Object} opt - * @param {Function} callback - * @api public - */ - -exports.runModule = function (name, mod, opt, callback) { - var options = _copy(types.options(opt)); - - var _run = false; - var _moduleStart = options.moduleStart; - - mod = wrapGroup(mod); - - function run_once() { - if (!_run) { - _run = true; - _moduleStart(name); - } - } - options.moduleStart = run_once; - - var start = new Date().getTime(); - - exports.runSuite(null, mod, options, function (err, a_list) { - var end = new Date().getTime(); - var assertion_list = types.assertionList(a_list, end - start); - options.moduleDone(name, assertion_list); - if (nodeunit.complete) { - nodeunit.complete(name, assertion_list); - } - callback(null, a_list); - }); -}; - -/** - * Treats an object literal as a list of modules keyed by name. Runs each - * module and finished with calling 'done'. You can think of this as a browser - * safe alternative to runFiles in the nodeunit module. - * - * @param {Object} modules - * @param {Object} opt - * @api public - */ - -// TODO: add proper unit tests for this function -exports.runModules = function (modules, opt) { - var all_assertions = []; - var options = types.options(opt); - var start = new Date().getTime(); - - async.concatSeries(_keys(modules), function (k, cb) { - exports.runModule(k, modules[k], options, cb); - }, - function (err, all_assertions) { - var end = new Date().getTime(); - options.done(types.assertionList(all_assertions, end - start)); - }); -}; - - -/** - * Wraps a test function with setUp and tearDown functions. - * Used by testCase. - * - * @param {Function} setUp - * @param {Function} tearDown - * @param {Function} fn - * @api private - */ - -var wrapTest = function (setUp, tearDown, fn) { - return function (test) { - var context = {}; - if (tearDown) { - var done = test.done; - test.done = function (err) { - try { - tearDown.call(context, function (err2) { - if (err && err2) { - test._assertion_list.push( - types.assertion({error: err}) - ); - return done(err2); - } - done(err || err2); - }); - } - catch (e) { - done(e); - } - }; - } - if (setUp) { - setUp.call(context, function (err) { - if (err) { - return test.done(err); - } - fn.call(context, test); - }); - } - else { - fn.call(context, test); - } - }; -}; - - -/** - * Returns a serial callback from two functions. - * - * @param {Function} funcFirst - * @param {Function} funcSecond - * @api private - */ - -var getSerialCallback = function (fns) { - if (!fns.length) { - return null; - } - return function (callback) { - var that = this; - var bound_fns = []; - for (var i = 0, len = fns.length; i < len; i++) { - (function (j) { - bound_fns.push(function () { - return fns[j].apply(that, arguments); - }); - })(i); - } - return async.series(bound_fns, callback); - }; -}; - - -/** - * Wraps a group of tests with setUp and tearDown functions. - * Used by testCase. - * - * @param {Object} group - * @param {Array} setUps - parent setUp functions - * @param {Array} tearDowns - parent tearDown functions - * @api private - */ - -var wrapGroup = function (group, setUps, tearDowns) { - var tests = {}; - - var setUps = setUps ? setUps.slice(): []; - var tearDowns = tearDowns ? tearDowns.slice(): []; - - if (group.setUp) { - setUps.push(group.setUp); - delete group.setUp; - } - if (group.tearDown) { - tearDowns.unshift(group.tearDown); - delete group.tearDown; - } - - var keys = _keys(group); - - for (var i = 0; i < keys.length; i += 1) { - var k = keys[i]; - if (typeof group[k] === 'function') { - tests[k] = wrapTest( - getSerialCallback(setUps), - getSerialCallback(tearDowns), - group[k] - ); - } - else if (typeof group[k] === 'object') { - tests[k] = wrapGroup(group[k], setUps, tearDowns); - } - } - return tests; -}; - - -/** - * Backwards compatibility for test suites using old testCase API - */ - -exports.testCase = function (suite) { - return suite; -}; diff --git a/node_modules/nodeunit/lib/nodeunit.js b/node_modules/nodeunit/lib/nodeunit.js deleted file mode 100644 index e20e974..0000000 --- a/node_modules/nodeunit/lib/nodeunit.js +++ /dev/null @@ -1,104 +0,0 @@ -/*! - * Nodeunit - * Copyright (c) 2010 Caolan McMahon - * MIT Licensed - */ - -/** - * Module dependencies - */ - -var async = require('../deps/async'), - types = require('./types'), - utils = require('./utils'), - core = require('./core'), - reporters = require('./reporters'), - assert = require('./assert'), - path = require('path') - events = require('events'); - - -/** - * Export sub-modules. - */ - -exports.types = types; -exports.utils = utils; -exports.reporters = reporters; -exports.assert = assert; - -// backwards compatibility -exports.testrunner = { - run: function () { - console.log( - 'WARNING: nodeunit.testrunner is going to be deprecated, please ' + - 'use nodeunit.reporters.default instead!' - ); - return reporters['default'].run.apply(this, arguments); - } -}; - - -/** - * Export all core functions - */ - -for (var k in core) { - exports[k] = core[k]; -}; - - -/** - * Load modules from paths array and run all exported tests in series. If a path - * is a directory, load all supported file types inside it as modules. This only - * reads 1 level deep in the directory and does not recurse through - * sub-directories. - * - * @param {Array} paths - * @param {Object} opt - * @api public - */ - -exports.runFiles = function (paths, opt) { - var all_assertions = []; - var options = types.options(opt); - var start = new Date().getTime(); - - if (!paths.length) { - return options.done(types.assertionList(all_assertions)); - } - - utils.modulePaths(paths, function (err, files) { - if (err) throw err; - async.concatSeries(files, function (file, cb) { - var name = path.basename(file); - exports.runModule(name, require(file), options, cb); - }, - function (err, all_assertions) { - var end = new Date().getTime(); - exports.done() - options.done(types.assertionList(all_assertions, end - start)); - }); - }); - -}; - -/* Export all prototypes from events.EventEmitter */ -var label; -for (label in events.EventEmitter.prototype) { - exports[label] = events.EventEmitter.prototype[label]; -} - -/* Emit event 'complete' on completion of a test suite. */ -exports.complete = function(name, assertions) -{ - exports.emit('complete', name, assertions); -}; - -/* Emit event 'complete' on completion of all tests. */ -exports.done = function() -{ - exports.emit('done'); -}; - -module.exports = exports; diff --git a/node_modules/nodeunit/lib/reporters/browser.js b/node_modules/nodeunit/lib/reporters/browser.js deleted file mode 100644 index 9836c90..0000000 --- a/node_modules/nodeunit/lib/reporters/browser.js +++ /dev/null @@ -1,121 +0,0 @@ -/*! - * Nodeunit - * Copyright (c) 2010 Caolan McMahon - * MIT Licensed - * - * THIS FILE SHOULD BE BROWSER-COMPATIBLE JS! - * You can use @REMOVE_LINE_FOR_BROWSER to remove code from the browser build. - * Only code on that line will be removed, its mostly to avoid requiring code - * that is node specific - */ - - -/** - * NOTE: this test runner is not listed in index.js because it cannot be - * used with the command-line tool, only inside the browser. - */ - - -/** - * Reporter info string - */ - -exports.info = "Browser-based test reporter"; - - -/** - * Run all tests within each module, reporting the results - * - * @param {Array} files - * @api public - */ - -exports.run = function (modules, options) { - var start = new Date().getTime(), div; - options = options || {}; - div = options.div || document.body; - - function setText(el, txt) { - if ('innerText' in el) { - el.innerText = txt; - } - else if ('textContent' in el){ - el.textContent = txt; - } - } - - function getOrCreate(tag, id) { - var el = document.getElementById(id); - if (!el) { - el = document.createElement(tag); - el.id = id; - div.appendChild(el); - } - return el; - }; - - var header = getOrCreate('h1', 'nodeunit-header'); - var banner = getOrCreate('h2', 'nodeunit-banner'); - var userAgent = getOrCreate('h2', 'nodeunit-userAgent'); - var tests = getOrCreate('ol', 'nodeunit-tests'); - var result = getOrCreate('p', 'nodeunit-testresult'); - - setText(userAgent, navigator.userAgent); - - nodeunit.runModules(modules, { - moduleStart: function (name) { - /*var mheading = document.createElement('h2'); - mheading.innerText = name; - results.appendChild(mheading); - module = document.createElement('ol'); - results.appendChild(module);*/ - }, - testDone: function (name, assertions) { - var test = document.createElement('li'); - var strong = document.createElement('strong'); - strong.innerHTML = name + ' (' + - '' + assertions.failures() + ', ' + - '' + assertions.passes() + ', ' + - assertions.length + - ')'; - test.className = assertions.failures() ? 'fail': 'pass'; - test.appendChild(strong); - - var aList = document.createElement('ol'); - aList.style.display = 'none'; - test.onclick = function () { - var d = aList.style.display; - aList.style.display = (d == 'none') ? 'block': 'none'; - }; - for (var i=0; i' + (a.error.stack || a.error) + ''; - li.className = 'fail'; - } - else { - li.innerHTML = a.message || a.method || 'no message'; - li.className = 'pass'; - } - aList.appendChild(li); - } - test.appendChild(aList); - tests.appendChild(test); - }, - done: function (assertions) { - var end = new Date().getTime(); - var duration = end - start; - - var failures = assertions.failures(); - banner.className = failures ? 'fail': 'pass'; - - result.innerHTML = 'Tests completed in ' + duration + - ' milliseconds.
' + - assertions.passes() + ' assertions of ' + - '' + assertions.length + ' passed, ' + - assertions.failures() + ' failed.'; - } - }); -}; diff --git a/node_modules/nodeunit/lib/reporters/default.js b/node_modules/nodeunit/lib/reporters/default.js deleted file mode 100644 index 9b4c66a..0000000 --- a/node_modules/nodeunit/lib/reporters/default.js +++ /dev/null @@ -1,131 +0,0 @@ -/*! - * Nodeunit - * Copyright (c) 2010 Caolan McMahon - * MIT Licensed - */ - -/** - * Module dependencies - */ - -var nodeunit = require('../nodeunit'), - utils = require('../utils'), - fs = require('fs'), - track = require('../track'), - path = require('path'), - AssertionError = require('../assert').AssertionError; - -/** - * Reporter info string - */ - -exports.info = "Default tests reporter"; - - -/** - * Run all tests within each module, reporting the results to the command-line. - * - * @param {Array} files - * @api public - */ - -exports.run = function (files, options, callback) { - - if (!options) { - // load default options - var content = fs.readFileSync( - __dirname + '/../../bin/nodeunit.json', 'utf8' - ); - options = JSON.parse(content); - } - - var error = function (str) { - return options.error_prefix + str + options.error_suffix; - }; - var ok = function (str) { - return options.ok_prefix + str + options.ok_suffix; - }; - var bold = function (str) { - return options.bold_prefix + str + options.bold_suffix; - }; - var assertion_message = function (str) { - return options.assertion_prefix + str + options.assertion_suffix; - }; - - var start = new Date().getTime(); - var tracker = track.createTracker(function (tracker) { - if (tracker.unfinished()) { - console.log(''); - console.log(error(bold( - 'FAILURES: Undone tests (or their setups/teardowns): ' - ))); - var names = tracker.names(); - for (var i = 0; i < names.length; i += 1) { - console.log('- ' + names[i]); - } - console.log(''); - console.log('To fix this, make sure all tests call test.done()'); - process.reallyExit(tracker.unfinished()); - } - }); - - var opts = { - testspec: options.testspec, - testFullSpec: options.testFullSpec, - moduleStart: function (name) { - console.log('\n' + bold(name)); - }, - testDone: function (name, assertions) { - tracker.remove(name); - - if (!assertions.failures()) { - console.log('✔ ' + name); - } - else { - console.log(error('✖ ' + name) + '\n'); - assertions.forEach(function (a) { - if (a.failed()) { - a = utils.betterErrors(a); - if (a.error instanceof AssertionError && a.message) { - console.log( - 'Assertion Message: ' + - assertion_message(a.message) - ); - } - console.log(a.error.stack + '\n'); - } - }); - } - }, - done: function (assertions, end) { - var end = end || new Date().getTime(); - var duration = end - start; - if (assertions.failures()) { - console.log( - '\n' + bold(error('FAILURES: ')) + assertions.failures() + - '/' + assertions.length + ' assertions failed (' + - assertions.duration + 'ms)' - ); - } - else { - console.log( - '\n' + bold(ok('OK: ')) + assertions.length + - ' assertions (' + assertions.duration + 'ms)' - ); - } - - if (callback) callback(assertions.failures() ? new Error('We have got test failures.') : undefined); - }, - testStart: function(name) { - tracker.put(name); - } - }; - if (files && files.length) { - var paths = files.map(function (p) { - return path.join(process.cwd(), p); - }); - nodeunit.runFiles(paths, opts); - } else { - nodeunit.runModules(files,opts); - } -}; diff --git a/node_modules/nodeunit/lib/reporters/eclipse.js b/node_modules/nodeunit/lib/reporters/eclipse.js deleted file mode 100644 index 6775ff1..0000000 --- a/node_modules/nodeunit/lib/reporters/eclipse.js +++ /dev/null @@ -1,104 +0,0 @@ -/*! - * Nodeunit - * Copyright (c) 2010 Caolan McMahon - * MIT Licensed - */ - -/** - * Module dependencies - */ - -var nodeunit = require('../nodeunit'), - utils = require('../utils'), - fs = require('fs'), - track = require('../track'), - path = require('path'), - AssertionError = require('../assert').AssertionError; - -/** - * Reporter info string - */ - -exports.info = "Reporter for eclipse plugin"; - - -/** - * Run all tests within each module, reporting the results to the command-line. - * - * @param {Array} files - * @api public - */ - -exports.run = function (files, options, callback) { - - var start = new Date().getTime(); - var paths = files.map(function (p) { - if (p.indexOf('/') === 0) { - return p; - } - return path.join(process.cwd(), p); - }); - var tracker = track.createTracker(function (tracker) { - if (tracker.unfinished()) { - console.log(''); - console.log('FAILURES: Undone tests (or their setups/teardowns): '); - var names = tracker.names(); - for (var i = 0; i < names.length; i += 1) { - console.log('- ' + names[i]); - } - console.log(''); - console.log('To fix this, make sure all tests call test.done()'); - process.reallyExit(tracker.unfinished()); - } - }); - - nodeunit.runFiles(paths, { - testspec: undefined, - moduleStart: function (name) { - console.log('\n' + name); - }, - testDone: function (name, assertions) { - tracker.remove(name); - - if (!assertions.failures()) { - console.log('✔ ' + name); - } - else { - console.log('✖ ' + name + '\n'); - assertions.forEach(function (a) { - if (a.failed()) { - a = utils.betterErrors(a); - if (a.error instanceof AssertionError && a.message) { - console.log( - 'Assertion Message: ' + a.message - ); - } - console.log(a.error.stack + '\n'); - } - }); - } - }, - done: function (assertions, end) { - var end = end || new Date().getTime(); - var duration = end - start; - if (assertions.failures()) { - console.log( - '\n' + 'FAILURES: ' + assertions.failures() + - '/' + assertions.length + ' assertions failed (' + - assertions.duration + 'ms)' - ); - } - else { - console.log( - '\n' + 'OK: ' + assertions.length + - ' assertions (' + assertions.duration + 'ms)' - ); - } - - if (callback) callback(assertions.failures() ? new Error('We have got test failures.') : undefined); - }, - testStart: function (name) { - tracker.put(name); - } - }); -}; diff --git a/node_modules/nodeunit/lib/reporters/html.js b/node_modules/nodeunit/lib/reporters/html.js deleted file mode 100644 index 80866b6..0000000 --- a/node_modules/nodeunit/lib/reporters/html.js +++ /dev/null @@ -1,110 +0,0 @@ -/*! - * Nodeunit - * Copyright (c) 2010 Caolan McMahon - * MIT Licensed - */ - -/** - * Module dependencies - */ - -var nodeunit = require('../nodeunit'), - utils = require('../utils'), - fs = require('fs'), - path = require('path'), - AssertionError = require('assert').AssertionError; - -/** - * Reporter info string - */ - -exports.info = "Report tests result as HTML"; - -/** - * Run all tests within each module, reporting the results to the command-line. - * - * @param {Array} files - * @api public - */ - -exports.run = function (files, options, callback) { - - var start = new Date().getTime(); - var paths = files.map(function (p) { - return path.join(process.cwd(), p); - }); - - console.log(''); - console.log(''); - console.log(''); - console.log(''); - console.log(''); - console.log(''); - nodeunit.runFiles(paths, { - testspec: options.testspec, - testFullSpec: options.testFullSpec, - moduleStart: function (name) { - console.log('

' + name + '

'); - console.log('
    '); - }, - testDone: function (name, assertions) { - if (!assertions.failures()) { - console.log('
  1. ' + name + '
  2. '); - } - else { - console.log('
  3. ' + name); - assertions.forEach(function (a) { - if (a.failed()) { - a = utils.betterErrors(a); - if (a.error instanceof AssertionError && a.message) { - console.log('
    ' + - 'Assertion Message: ' + a.message + - '
    '); - } - console.log('
    ');
    -                        console.log(a.error.stack);
    -                        console.log('
    '); - } - }); - console.log('
  4. '); - } - }, - moduleDone: function () { - console.log('
'); - }, - done: function (assertions) { - var end = new Date().getTime(); - var duration = end - start; - if (assertions.failures()) { - console.log( - '

FAILURES: ' + assertions.failures() + - '/' + assertions.length + ' assertions failed (' + - assertions.duration + 'ms)

' - ); - } - else { - console.log( - '

OK: ' + assertions.length + - ' assertions (' + assertions.duration + 'ms)

' - ); - } - console.log(''); - console.log(''); - - if (callback) callback(assertions.failures() ? new Error('We have got test failures.') : undefined); - } - }); -}; diff --git a/node_modules/nodeunit/lib/reporters/index.js b/node_modules/nodeunit/lib/reporters/index.js deleted file mode 100644 index b3989c0..0000000 --- a/node_modules/nodeunit/lib/reporters/index.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - 'junit': require('./junit'), - 'default': require('./default'), - 'skip_passed': require('./skip_passed'), - 'minimal': require('./minimal'), - 'html': require('./html'), - 'eclipse': require('./eclipse'), - 'machineout': require('./machineout'), - 'tap': require('./tap'), - 'nested': require('./nested'), - 'verbose' : require('./verbose') - // browser test reporter is not listed because it cannot be used - // with the command line tool, only inside a browser. -}; diff --git a/node_modules/nodeunit/lib/reporters/junit.js b/node_modules/nodeunit/lib/reporters/junit.js deleted file mode 100644 index d9a1d02..0000000 --- a/node_modules/nodeunit/lib/reporters/junit.js +++ /dev/null @@ -1,180 +0,0 @@ -/*! - * Nodeunit - * Copyright (c) 2010 Caolan McMahon - * MIT Licensed - */ - -/** - * Module dependencies - */ - -var nodeunit = require('../nodeunit'), - utils = require('../utils'), - fs = require('fs'), - path = require('path'), - async = require('../../deps/async'), - AssertionError = require('assert').AssertionError, - child_process = require('child_process'), - ejs = require('../../deps/ejs'); - - -/** - * Reporter info string - */ - -exports.info = "jUnit XML test reports"; - - -/** - * Ensures a directory exists using mkdir -p. - * - * @param {String} path - * @param {Function} callback - * @api private - */ - -var ensureDir = function (path, callback) { - var mkdir = child_process.spawn('mkdir', ['-p', path]); - mkdir.on('error', function (err) { - callback(err); - callback = function(){}; - }); - mkdir.on('exit', function (code) { - if (code === 0) callback(); - else callback(new Error('mkdir exited with code: ' + code)); - }); -}; - - -/** - * Returns absolute version of a path. Relative paths are interpreted - * relative to process.cwd() or the cwd parameter. Paths that are already - * absolute are returned unaltered. - * - * @param {String} p - * @param {String} cwd - * @return {String} - * @api public - */ - -var abspath = function (p, /*optional*/cwd) { - if (p[0] === '/') return p; - cwd = cwd || process.cwd(); - return path.normalize(path.join(cwd, p)); -}; - - -/** - * Run all tests within each module, reporting the results to the command-line, - * then writes out junit-compatible xml documents. - * - * @param {Array} files - * @api public - */ - -exports.run = function (files, opts, callback) { - if (!opts.output) { - console.error( - 'Error: No output directory defined.\n' + - '\tEither add an "output" property to your nodeunit.json config ' + - 'file, or\n\tuse the --output command line option.' - ); - return; - } - opts.output = abspath(opts.output); - var error = function (str) { - return opts.error_prefix + str + opts.error_suffix; - }; - var ok = function (str) { - return opts.ok_prefix + str + opts.ok_suffix; - }; - var bold = function (str) { - return opts.bold_prefix + str + opts.bold_suffix; - }; - - var start = new Date().getTime(); - var paths = files.map(function (p) { - return path.join(process.cwd(), p); - }); - - var modules = {} - var curModule; - - nodeunit.runFiles(paths, { - testspec: opts.testspec, - testFullSpec: opts.testFullSpec, - moduleStart: function (name) { - curModule = { - errorCount: 0, - failureCount: 0, - tests: 0, - testcases: [], - name: name - }; - modules[name] = curModule; - }, - testDone: function (name, assertions) { - var testcase = {name: name}; - for (var i=0; i name_slice(['TC1', 'TC1.1', 'mytest'], 1); - * "TC1,TC1.1" - */ - var name_slice = function (name_arr, end_index) { - return name_arr.slice(0, end_index + 1).join(","); - }; - - var indent = (function () { - var txt = ''; - var i; - for (i = 0; i < spaces_per_indent; i++) { - txt += ' '; - } - return txt; - }()); - - // Indent once for each indent_level - var add_indent = function (txt, indent_level) { - var k; - for (k = 0; k < indent_level; k++) { - txt += indent; - } - return txt; - }; - - // If it's not the last element of the name_arr, it's a testCase. - var is_testCase = function (name_arr, index) { - return index === name_arr.length - 1 ? false : true; - }; - - var testCase_line = function (txt) { - return txt + "\n"; - }; - - /** - * Prints (console.log) the nested test status line(s). - * - * @param {Array} name_arr - Array of name elements. - * @param {String} status - either 'pass' or 'fail'. - * @example - * > print_status(['TC1', 'TC1.1', 'mytest'], 'pass'); - * TC1 - * TC1.1 - * mytest (pass) - */ - var print_status = function (name_arr, status) { - var txt = ''; - var _name_slice, part, i; - for (i = 0; i < name_arr.length; i++) { - _name_slice = name_slice(name_arr, i); - part = name_arr[i]; - if (!tracker.already_printed[_name_slice]) { - txt = add_indent(txt, i); - if (is_testCase(name_arr, i)) { - txt += testCase_line(part); - } else { - txt += status_text(part, status); - } - tracker.already_printed[_name_slice] = true; - } - } - console.log(txt); - }; - - nodeunit.runFiles(paths, { - testspec: options.testspec, - testFullSpec: options.testFullSpec, - moduleStart: function (name) { - console.log('\n' + bold(name)); - }, - testDone: function (name, assertions) { - tracker.remove(name); - - if (!assertions.failures()) { - print_status(name, 'pass'); - } else { - print_status(name, 'fail'); - assertions.forEach(function (a) { - if (a.failed()) { - a = utils.betterErrors(a); - if (a.error instanceof AssertionError && a.message) { - console.log( - 'Assertion Message: ' + - assertion_message(a.message) - ); - } - console.log(a.error.stack + '\n'); - } - }); - } - }, - done: function (assertions, end) { - end = end || new Date().getTime(); - var duration = end - start; - if (assertions.failures()) { - console.log( - '\n' + bold(error('FAILURES: ')) + assertions.failures() + - '/' + assertions.length + ' assertions failed (' + - assertions.duration + 'ms)' - ); - } else { - console.log( - '\n' + bold(ok('OK: ')) + assertions.length + - ' assertions (' + assertions.duration + 'ms)' - ); - } - }, - testStart: function (name) { - tracker.put(name); - } - }); -}; diff --git a/node_modules/nodeunit/lib/reporters/skip_passed.js b/node_modules/nodeunit/lib/reporters/skip_passed.js deleted file mode 100644 index 299a99a..0000000 --- a/node_modules/nodeunit/lib/reporters/skip_passed.js +++ /dev/null @@ -1,108 +0,0 @@ -/*! - * Nodeunit - * Copyright (c) 2010 Caolan McMahon - * MIT Licensed - */ - -/** - * Module dependencies - */ - -var nodeunit = require('../nodeunit'), - utils = require('../utils'), - fs = require('fs'), - path = require('path'), - AssertionError = require('assert').AssertionError; - -/** - * Reporter info string - */ - -exports.info = "Skip passed tests output"; - -/** - * Run all tests within each module, reporting the results to the command-line. - * - * @param {Array} files - * @api public - */ - -exports.run = function (files, options, callback) { - - if (!options) { - // load default options - var content = fs.readFileSync( - __dirname + '/../../bin/nodeunit.json', 'utf8' - ); - options = JSON.parse(content); - } - - var error = function (str) { - return options.error_prefix + str + options.error_suffix; - }; - var ok = function (str) { - return options.ok_prefix + str + options.ok_suffix; - }; - var bold = function (str) { - return options.bold_prefix + str + options.bold_suffix; - }; - var assertion_message = function (str) { - return options.assertion_prefix + str + options.assertion_suffix; - }; - - var start = new Date().getTime(); - var paths = files.map(function (p) { - return path.join(process.cwd(), p); - }); - - nodeunit.runFiles(paths, { - testspec: options.testspec, - testFullSpec: options.testFullSpec, - moduleStart: function (name) { - console.log('\n' + bold(name)); - }, - testDone: function (name, assertions) { - if (assertions.failures()) { - console.log(error('✖ ' + name) + '\n'); - assertions.forEach(function (a) { - if (a.failed()) { - a = utils.betterErrors(a); - if (a.error instanceof AssertionError && a.message) { - console.log( - 'Assertion Message: ' + assertion_message(a.message) - ); - } - console.log(a.error.stack + '\n'); - } - }); - } - }, - moduleDone: function (name, assertions) { - if (!assertions.failures()) { - console.log('✔ all tests passed'); - } - else { - console.log(error('✖ some tests failed')); - } - }, - done: function (assertions) { - var end = new Date().getTime(); - var duration = end - start; - if (assertions.failures()) { - console.log( - '\n' + bold(error('FAILURES: ')) + assertions.failures() + - '/' + assertions.length + ' assertions failed (' + - assertions.duration + 'ms)' - ); - } - else { - console.log( - '\n' + bold(ok('OK: ')) + assertions.length + - ' assertions (' + assertions.duration + 'ms)' - ); - } - - if (callback) callback(assertions.failures() ? new Error('We have got test failures.') : undefined); - } - }); -}; diff --git a/node_modules/nodeunit/lib/reporters/tap.js b/node_modules/nodeunit/lib/reporters/tap.js deleted file mode 100644 index 9a36aaf..0000000 --- a/node_modules/nodeunit/lib/reporters/tap.js +++ /dev/null @@ -1,65 +0,0 @@ -/** - * Module dependencies - */ - -var nodeunit = require('../nodeunit'), - path = require('path'), - assert = require('tap').assert, - TapProducer = require('tap').Producer; - -/** - * Reporter info string - */ - -exports.info = "TAP output"; - -/** - * Run all tests within each module, reporting the results to the command-line. - * - * @param {Array} files - * @api public - */ - -exports.run = function (files, options) { - - if (!options) { - // load default options - var content = fs.readFileSync( - __dirname + '/../../bin/nodeunit.json', 'utf8' - ); - options = JSON.parse(content); - } - - var paths = files.map(function (p) { - return path.join(process.cwd(), p); - }); - var output = new TapProducer(); - output.pipe(process.stdout); - - nodeunit.runFiles(paths, { - testStart: function (name) { - output.write(name.toString()); - }, - testDone: function (name, assertions) { - assertions.forEach(function (e) { - var extra = {}; - if (e.error) { - extra.error = { - name: e.error.name, - message: e.error.message, - stack: e.error.stack.split(/\n/).filter(function (line) { - // exclude line of "types.js" - return ! RegExp(/types.js:83:39/).test(line); - }).join('\n') - }; - extra.wanted = e.error.expected; - extra.found = e.error.actual; - } - output.write(assert(e.passed(), e.message, extra)); - }); - }, - done: function (assertions) { - output.end(); - } - }); -}; diff --git a/node_modules/nodeunit/lib/reporters/verbose.js b/node_modules/nodeunit/lib/reporters/verbose.js deleted file mode 100644 index 228271b..0000000 --- a/node_modules/nodeunit/lib/reporters/verbose.js +++ /dev/null @@ -1,123 +0,0 @@ -/*! - * Nodeunit - * Copyright (c) 2010 Caolan McMahon - * MIT Licensed - */ - -/** - * Module dependencies - */ - -var nodeunit = require('../nodeunit'), - utils = require('../utils'), - fs = require('fs'), - track = require('../track'), - path = require('path'); - AssertionError = require('../assert').AssertionError; - -/** - * Reporter info string - */ - -exports.info = "Verbose tests reporter" - - -/** - * Run all tests within each module, reporting the results to the command-line. - * - * @param {Array} files - * @api public - */ - -exports.run = function (files, options) { - - if (!options) { - // load default options - var content = fs.readFileSync( - __dirname + '/../../bin/nodeunit.json', 'utf8' - ); - options = JSON.parse(content); - } - - var error = function (str) { - return options.error_prefix + str + options.error_suffix; - }; - var ok = function (str) { - return options.ok_prefix + str + options.ok_suffix; - }; - var bold = function (str) { - return options.bold_prefix + str + options.bold_suffix; - }; - var assertion_message = function (str) { - return options.assertion_prefix + str + options.assertion_suffix; - }; - - var start = new Date().getTime(); - var paths = files.map(function (p) { - return path.join(process.cwd(), p); - }); - var tracker = track.createTracker(function (tracker) { - if (tracker.unfinished()) { - console.log(''); - console.log(error(bold( - 'FAILURES: Undone tests (or their setups/teardowns): ' - ))); - var names = tracker.names(); - for (var i = 0; i < names.length; i += 1) { - console.log('- ' + names[i]); - } - console.log(''); - console.log('To fix this, make sure all tests call test.done()'); - process.reallyExit(tracker.unfinished()); - } - }); - - nodeunit.runFiles(paths, { - testspec: options.testspec, - testFullSpec: options.testFullSpec, - moduleStart: function (name) { - console.log('\n' + bold(name)); - }, - testDone: function (name, assertions) { - tracker.remove(name); - - if (!assertions.failures()) { - console.log('✔ ' + name); - } - else { - console.log(error('✖ ' + name)); - } - // verbose so print everything - assertions.forEach(function (a) { - if (a.failed()) { - console.log(error(' ✖ ' + a.message)); - a = utils.betterErrors(a); - console.log(' ' + a.error.stack); - } - else { - console.log(' ✔ ' + a.message); - } - }); - }, - done: function (assertions, end) { - var end = end || new Date().getTime(); - var duration = end - start; - if (assertions.failures()) { - console.log( - '\n' + bold(error('FAILURES: ')) + assertions.failures() + - '/' + assertions.length + ' assertions failed (' + - assertions.duration + 'ms)' - ); - } - else { - console.log( - '\n' + bold(ok('OK: ')) + assertions.length + - ' assertions (' + assertions.duration + 'ms)' - ); - } - }, - testStart: function(name) { - tracker.put(name); - } - }); -}; diff --git a/node_modules/nodeunit/lib/track.js b/node_modules/nodeunit/lib/track.js deleted file mode 100644 index 5af98ad..0000000 --- a/node_modules/nodeunit/lib/track.js +++ /dev/null @@ -1,48 +0,0 @@ -/*! - * Simple util module to track tests. Adds a process.exit hook to print - * the undone tests. - */ - - -exports.createTracker = function (on_exit) { - var names = {}; - var tracker = { - names: function () { - var arr = []; - for (var k in names) { - if (names.hasOwnProperty(k)) { - arr.push(k); - } - } - return arr; - }, - unfinished: function () { - return tracker.names().length; - }, - put: function (testname) { - names[testname] = testname; - }, - remove: function (testname) { - delete names[testname]; - } - }; - - process.on('exit', function() { - on_exit = on_exit || exports.default_on_exit; - on_exit(tracker); - }); - - return tracker; -}; - -exports.default_on_exit = function (tracker) { - if (tracker.unfinished()) { - console.log(''); - console.log('Undone tests (or their setups/teardowns): '); - var names = tracker.names(); - for (var i = 0; i < names.length; i += 1) { - console.log(names[i]); - } - process.reallyExit(tracker.unfinished()); - } -}; diff --git a/node_modules/nodeunit/lib/types.js b/node_modules/nodeunit/lib/types.js deleted file mode 100644 index 2cdd1ef..0000000 --- a/node_modules/nodeunit/lib/types.js +++ /dev/null @@ -1,189 +0,0 @@ -/*! - * Nodeunit - * Copyright (c) 2010 Caolan McMahon - * MIT Licensed - * - * THIS FILE SHOULD BE BROWSER-COMPATIBLE JS! - * You can use @REMOVE_LINE_FOR_BROWSER to remove code from the browser build. - * Only code on that line will be removed, it's mostly to avoid requiring code - * that is node specific - */ - -/** - * Module dependencies - */ - -var assert = require('./assert'), //@REMOVE_LINE_FOR_BROWSER - async = require('../deps/async'); //@REMOVE_LINE_FOR_BROWSER - - -/** - * Creates assertion objects representing the result of an assert call. - * Accepts an object or AssertionError as its argument. - * - * @param {object} obj - * @api public - */ - -exports.assertion = function (obj) { - return { - method: obj.method || '', - message: obj.message || (obj.error && obj.error.message) || '', - error: obj.error, - passed: function () { - return !this.error; - }, - failed: function () { - return Boolean(this.error); - } - }; -}; - -/** - * Creates an assertion list object representing a group of assertions. - * Accepts an array of assertion objects. - * - * @param {Array} arr - * @param {Number} duration - * @api public - */ - -exports.assertionList = function (arr, duration) { - var that = arr || []; - that.failures = function () { - var failures = 0; - for (var i = 0; i < this.length; i += 1) { - if (this[i].failed()) { - failures += 1; - } - } - return failures; - }; - that.passes = function () { - return that.length - that.failures(); - }; - that.duration = duration || 0; - return that; -}; - -/** - * Create a wrapper function for assert module methods. Executes a callback - * after it's complete with an assertion object representing the result. - * - * @param {Function} callback - * @api private - */ - -var assertWrapper = function (callback) { - return function (new_method, assert_method, arity) { - return function () { - var message = arguments[arity - 1]; - var a = exports.assertion({method: new_method, message: message}); - try { - assert[assert_method].apply(null, arguments); - } - catch (e) { - a.error = e; - } - callback(a); - }; - }; -}; - -/** - * Creates the 'test' object that gets passed to every test function. - * Accepts the name of the test function as its first argument, followed by - * the start time in ms, the options object and a callback function. - * - * @param {String} name - * @param {Number} start - * @param {Object} options - * @param {Function} callback - * @api public - */ - -exports.test = function (name, start, options, callback) { - var expecting; - var a_list = []; - - var wrapAssert = assertWrapper(function (a) { - a_list.push(a); - if (options.log) { - async.nextTick(function () { - options.log(a); - }); - } - }); - - var test = { - done: function (err) { - if (expecting !== undefined && expecting !== a_list.length) { - var e = new Error( - 'Expected ' + expecting + ' assertions, ' + - a_list.length + ' ran' - ); - var a1 = exports.assertion({method: 'expect', error: e}); - a_list.push(a1); - if (options.log) { - async.nextTick(function () { - options.log(a1); - }); - } - } - if (err) { - var a2 = exports.assertion({error: err}); - a_list.push(a2); - if (options.log) { - async.nextTick(function () { - options.log(a2); - }); - } - } - var end = new Date().getTime(); - async.nextTick(function () { - var assertion_list = exports.assertionList(a_list, end - start); - options.testDone(name, assertion_list); - callback(null, a_list); - }); - }, - ok: wrapAssert('ok', 'ok', 2), - same: wrapAssert('same', 'deepEqual', 3), - equals: wrapAssert('equals', 'equal', 3), - expect: function (num) { - expecting = num; - }, - _assertion_list: a_list - }; - // add all functions from the assert module - for (var k in assert) { - if (assert.hasOwnProperty(k)) { - test[k] = wrapAssert(k, k, assert[k].length); - } - } - return test; -}; - -/** - * Ensures an options object has all callbacks, adding empty callback functions - * if any are missing. - * - * @param {Object} opt - * @return {Object} - * @api public - */ - -exports.options = function (opt) { - var optionalCallback = function (name) { - opt[name] = opt[name] || function () {}; - }; - - optionalCallback('moduleStart'); - optionalCallback('moduleDone'); - optionalCallback('testStart'); - optionalCallback('testDone'); - //optionalCallback('log'); - - // 'done' callback is not optional. - - return opt; -}; diff --git a/node_modules/nodeunit/lib/utils.js b/node_modules/nodeunit/lib/utils.js deleted file mode 100644 index 5efd26c..0000000 --- a/node_modules/nodeunit/lib/utils.js +++ /dev/null @@ -1,203 +0,0 @@ -/*! - * Nodeunit - * Copyright (c) 2010 Caolan McMahon - * MIT Licensed - */ - -/** - * Module dependencies - */ - -var async = require('../deps/async'), - fs = require('fs'), - util = require('util'), - Script = process.binding('evals').Script || process.binding('evals').NodeScript, - http = require('http'); - - -/** - * Detect if coffee-script is available and search for .coffee as an - * extension in modulePaths if it is. - */ - -var extensionPattern; -try { - require('coffee-script'); - extensionPattern = /\.(?:js|coffee)$/; -} -catch (e) { - extensionPattern = /\.js$/; -} - - -/** - * Finds all modules at each path in an array, If a path is a directory, it - * returns all supported file types inside it. This only reads 1 level deep in - * the directory and does not recurse through sub-directories. - * - * The extension (.js, .coffee etc) is stripped from the filenames so they can - * simply be require()'ed. - * - * @param {Array} paths - * @param {Function} callback - * @api public - */ - -exports.modulePaths = function (paths, callback) { - async.concat(paths, function (p, cb) { - fs.stat(p, function (err, stats) { - if (err) { - return cb(err); - } - if (stats.isFile()) { - return cb(null, [p]); - } - if (stats.isDirectory()) { - fs.readdir(p, function (err, files) { - if (err) { - return cb(err); - } - - // filter out any filenames with unsupported extensions - var modules = files.filter(function (filename) { - return extensionPattern.exec(filename); - }); - - // remove extension from module name and prepend the - // directory path - var fullpaths = modules.map(function (filename) { - var mod_name = filename.replace(extensionPattern, ''); - return [p, mod_name].join('/'); - }); - - // sort filenames here, because Array.map changes order - fullpaths.sort(); - - cb(null, fullpaths); - }); - } - }); - }, callback); -}; - -/** - * Evaluates JavaScript files in a sandbox, returning the context. The first - * argument can either be a single filename or an array of filenames. If - * multiple filenames are given their contents are concatenated before - * evalution. The second argument is an optional context to use for the sandbox. - * - * @param files - * @param {Object} sandbox - * @return {Object} - * @api public - */ - -exports.sandbox = function (files, /*optional*/sandbox) { - var source, script, result; - if (!(files instanceof Array)) { - files = [files]; - } - source = files.map(function (file) { - return fs.readFileSync(file, 'utf8'); - }).join(''); - - if (!sandbox) { - sandbox = {}; - } - script = new Script(source); - result = script.runInNewContext(sandbox); - return sandbox; -}; - -/** - * Provides a http request, response testing environment. - * - * Example: - * - * var httputil = require('nodeunit').utils.httputil - * exports.testSomething = function(test) { - * httputil(function (req, resp) { - * resp.writeHead(200, {}); - * resp.end('test data'); - * }, - * function(server, client) { - * client.fetch('GET', '/', {}, function(resp) { - * test.equal('test data', resp.body); - * server.close(); - * test.done(); - * }) - * }); - * }; - * - * @param {Function} cgi - * @param {Function} envReady - * @api public - */ -exports.httputil = function (cgi, envReady) { - var hostname = process.env.HOSTNAME || 'localhost'; - var port = process.env.PORT || 3000; - - var server = http.createServer(cgi); - server.listen(port, hostname); - - var client = http.createClient(port, hostname); - client.fetch = function (method, path, headers, respReady) { - var request = this.request(method, path, headers); - request.end(); - request.on('response', function (response) { - response.setEncoding('utf8'); - response.on('data', function (chunk) { - if (response.body) { - response.body += chunk; - } else { - response.body = chunk; - } - }); - response.on('end', function () { - if (response.headers['content-type'] === 'application/json') { - response.bodyAsObject = JSON.parse(response.body); - } - respReady(response); - }); - }); - }; - - process.nextTick(function () { - if (envReady && typeof envReady === 'function') { - envReady(server, client); - } - }); -}; - - -/** - * Improves formatting of AssertionError messages to make deepEqual etc more - * readable. - * - * @param {Object} assertion - * @return {Object} - * @api public - */ - -exports.betterErrors = function (assertion) { - if (!assertion.error) return assertion; - - var e = assertion.error; - if (e.actual && e.expected) { - var actual = util.inspect(e.actual, false, 10).replace(/\n$/, ''); - var expected = util.inspect(e.expected, false, 10).replace(/\n$/, ''); - var multiline = ( - actual.indexOf('\n') !== -1 || - expected.indexOf('\n') !== -1 - ); - var spacing = (multiline ? '\n' : ' '); - e._message = e.message; - e.stack = ( - e.name + ':' + spacing + - actual + spacing + e.operator + spacing + - expected + '\n' + - e.stack.split('\n').slice(1).join('\n') - ); - } - return assertion; -}; diff --git a/node_modules/nodeunit/man1/nodeunit.1 b/node_modules/nodeunit/man1/nodeunit.1 deleted file mode 100644 index 450772d..0000000 --- a/node_modules/nodeunit/man1/nodeunit.1 +++ /dev/null @@ -1,95 +0,0 @@ -.\" Generated with Ronnjs/v0.1 -.\" http://github.com/kapouer/ronnjs/ -. -.TH "NODEUNIT" "1" "October 2010" "" "" -. -.SH "NAME" -\fBnodeunit\fR \-\- simple node\.js unit testing tool -. -.SH "SYNOPSIS" -. -.nf -nodeunit [options] [ \.\.\.] -. -.fi -. -.SH "DESCRIPTION" -Nodeunit is a simple unit testing tool based on the node\.js assert module\. -. -.IP "\(bu" 4 -Simple to use -. -.IP "\(bu" 4 -Just export the tests from a module -. -.IP "\(bu" 4 -Helps you avoid common pitfalls when testing asynchronous code -. -.IP "\(bu" 4 -Easy to add test cases with setUp and tearDown functions if you wish -. -.IP "\(bu" 4 -Allows the use of mocks and stubs -. -.IP "" 0 -. -.SH "OPTIONS" - \fB\-\-config FILE\fR: -. -.br - Load config options from a JSON file, allows the customisation - of color schemes for the default test reporter etc\. - See bin/nodeunit\.json for current available options\. -. -.P - \fB\-\-reporter FILE\fR: -. -.br - You can set the test reporter to a custom module or on of the modules - in nodeunit/lib/reporters, when omitted, the default test runner is used\. -. -.P - \fB\-\-list\-reporters\fR: -. -.br - List available build\-in reporters\. -. -.P - \fB\-h\fR, \fB\-\-help\fR: -. -.br - Display the help and exit\. -. -.P - \fB\-v\fR, \fB\-\-version\fR: -. -.br - Output version information and exit\. -. -.P - \fB\fR: - You can run nodeunit on specific files or on all \fI*\.js\fR files inside -. -.br - a directory\. -. -.SH "AUTHORS" -Written by Caolan McMahon and other nodeunit contributors\. -. -.br -Contributors list: \fIhttp://github\.com/caolan/nodeunit/contributors\fR\|\. -. -.SH "REPORTING BUGS" -Report nodeunit bugs to \fIhttp://github\.com/caolan/nodeunit/issues\fR\|\. -. -.SH "COPYRIGHT" -Copyright © 2010 Caolan McMahon\. -. -.br -Nodeunit has been released under the MIT license: -. -.br -\fIhttp://github\.com/caolan/nodeunit/raw/master/LICENSE\fR\|\. -. -.SH "SEE ALSO" -node(1) diff --git a/node_modules/nodeunit/node_modules/.bin/tap b/node_modules/nodeunit/node_modules/.bin/tap deleted file mode 120000 index 999914b..0000000 --- a/node_modules/nodeunit/node_modules/.bin/tap +++ /dev/null @@ -1 +0,0 @@ -../tap/bin/tap.js \ No newline at end of file diff --git a/node_modules/nodeunit/node_modules/tap/.npmignore b/node_modules/nodeunit/node_modules/tap/.npmignore deleted file mode 100644 index e69de29..0000000 diff --git a/node_modules/nodeunit/node_modules/tap/AUTHORS b/node_modules/nodeunit/node_modules/tap/AUTHORS deleted file mode 100644 index b7f6eb2..0000000 --- a/node_modules/nodeunit/node_modules/tap/AUTHORS +++ /dev/null @@ -1,11 +0,0 @@ -# contributors sorted by whether or not they're me -Isaac Z. Schlueter -baudehlo -James Halliday -Jason Smith (air) -Pedro P. Candel -Stein Martin Hustad -Trent Mick -Corey Richardson -Raynos -Siddharth Mahendraker diff --git a/node_modules/nodeunit/node_modules/tap/LICENSE b/node_modules/nodeunit/node_modules/tap/LICENSE deleted file mode 100644 index 05a4010..0000000 --- a/node_modules/nodeunit/node_modules/tap/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright 2009, 2010, 2011 Isaac Z. Schlueter. -All rights reserved. - -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: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -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. diff --git a/node_modules/nodeunit/node_modules/tap/README.md b/node_modules/nodeunit/node_modules/tap/README.md deleted file mode 100644 index db81731..0000000 --- a/node_modules/nodeunit/node_modules/tap/README.md +++ /dev/null @@ -1,84 +0,0 @@ -This is a mix-and-match set of utilities that you can use to write test -harnesses and frameworks that communicate with one another using the -Test Anything Protocol. - -If you don't yet know what TAP is, [you better ask -somebody](http://testanything.org/). - -Default Usage: - -1. Make a directory. Maybe call it 'test'. That'd be nice and obvious. -2. Put a bunch of test scripts in there. If they're node programs, then - they should be ".js". Anything else is assumed to be some kind of shell - script, which should have a shebang line. -3. `npm install tap` -4. Update package.json scripts.test to include `tap ./test` [example - gist](https://gist.github.com/4469613) -5. `npm test` - -The output will be TAP-compliant. - -For extra special bonus points, you can do something like this: - - var test = require("tap").test - test("make sure the thingie is a thing", function (t) { - t.equal(thingie, "thing", "thingie should be thing") - t.type(thingie, "string", "type of thingie is string") - t.ok(true, "this is always true") - t.notOk(false, "this is never true") - t.test("a child test", function (t) { - t.equal(this, superEasy, "right!?") - t.similar(7, 2, "ever notice 7 is kinda like 2?", {todo: true}) - t.test("so skippable", {skip: true}, function (t) { - t.plan(1) // only one test in this block - t.ok(true, "but when the flag changes, it'll pass") - // no need to end, since we had a plan. - }) - t.end() - }) - t.ok(99, "can also skip individual assertions", {skip: true}) - // end lets it know it's over. - t.end() - }) - test("another one", function (t) { - t.plan(1) - t.ok(true, "It's ok to plan, and also end. Watch.") - t.end() // but it must match the plan! - }) - -Node-tap is actually a collection of several modules, any of which may be -mixed and matched however you please. - -If you don't like this test framework, and think you can do much much -better, *I strongly encourage you to do so!* If you use this library, -however, at least to output TAP-compliant results when `process.env.TAP` -is set, then the data coming out of your framework will be much more -consumable by machines. - -You can also use this to build programs that *consume* the TAP data, so -this is very useful for CI systems and such. - -* tap-assert: A collection of assert functions that return TAP result - objects. -* tap-consumer: A stream interface for consuming TAP data. -* tap-producer: A class that produces a TAP stream by taking in result - objects. -* tap-results: A class for keeping track of TAP result objects as they - pass by, counting up skips, passes, fails, and so on. -* tap-runner: A program that runs through a directory running all the - tests in it. (Tests which may or may not be TAP-outputting tests. But - it's better if they are.) -* tap-test: A class for actually running tests. -* tap-harness: A class that runs tests. (Tests are also Harnesses, - which is how sub-tests run.) -* tap-global-harness: A default harness that provides the top-level - support for running TAP tests. - -## Experimental Code Coverage with runforcover & bunker: - -``` -TAP_COV=1 tap ./test [--cover=./lib,foo.js] [--cover-dir=./coverage] -``` - -This feature is experimental, and will most likely change somewhat -before being finalized. Feedback welcome. diff --git a/node_modules/nodeunit/node_modules/tap/bin/tap-http.js b/node_modules/nodeunit/node_modules/tap/bin/tap-http.js deleted file mode 100644 index 296910f..0000000 --- a/node_modules/nodeunit/node_modules/tap/bin/tap-http.js +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env node - -// just an example, really -// Run with `node tap-http.js path/to/tests/` - -var argv = process.argv.slice(2) - , path = require("path") - , Runner = require("../lib/tap-runner") - - , http = require("http") - , server = http.createServer(function (req, res) { - // it'd be nice to return a non-200 if the tests fail, but we don't - // know the status until it's done, so that would mean not being able - // to pipe the output - res.writeHead(200, {'content-type': 'text/plain'}) - new Runner(argv, null).pipe(res) - }) - -server.listen(1337) diff --git a/node_modules/nodeunit/node_modules/tap/bin/tap-reader.js b/node_modules/nodeunit/node_modules/tap/bin/tap-reader.js deleted file mode 100755 index b196cc2..0000000 --- a/node_modules/nodeunit/node_modules/tap/bin/tap-reader.js +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env node - -// read a tap stream from stdin. - -var TapConsumer = require("../lib/tap-consumer") - , TapProducer = require("../lib/tap-producer") - -var tc = new TapConsumer - , tp = new TapProducer - -//process.stdin.pipe(tc) -process.stdin.on("data", function (c) { - c = c + "" - // console.error(JSON.stringify(c).substr(0, 100)) - tc.write(c) -}) -process.stdin.on("end", function () { tc.end() }) -process.stdin.resume() -//tc.pipe(tp) -tc.on("data", function (c) { - tp.write(c) -}) -tc.on("end", function () { tp.end() }) - -tp.on("data", function (c) { - console.error(["output write", c]) - process.stdout.write(c) -}) - -tp.on("end", function (er, total, ok) { - if (er) throw er - process.exit(total - ok) -}) diff --git a/node_modules/nodeunit/node_modules/tap/bin/tap.js b/node_modules/nodeunit/node_modules/tap/bin/tap.js deleted file mode 100755 index e7afcbc..0000000 --- a/node_modules/nodeunit/node_modules/tap/bin/tap.js +++ /dev/null @@ -1,132 +0,0 @@ -#!/usr/bin/env node - -var argv = process.argv.slice(2) - , path = require("path") - , Runner = require("../lib/tap-runner") - - , nopt = require("nopt") - - , knownOpts = - { cover: [path, false] - , "cover-dir": path - , stderr: Boolean - , stdout: Boolean - , diag: Boolean - , version: Boolean - , tap: Boolean - , timeout: Number - , gc: Boolean - } - - , shorthands = - // debugging 1: show stderr - { d: ["--stderr"] - // debugging 2: show stderr and tap - , dd: ["--stderr", "--tap"] - // debugging 3: show stderr, tap, AND always show diagnostics. - , ddd: ["--stderr", "--tap", "--diag"] - , "expose-gc": ["--gc"] - , g: ["--gc"] - , e: ["--stderr"] - , t: ["--timeout"] - , o: ["--tap"] - , c: ["--cover"] - , v: ["--version"] - , "?": ["--help"] - , h: ["--help"] - } - - , defaults = - { cover: "./lib" - , "cover-dir": "./coverage" - , stderr: process.env.TAP_STDERR - , tap: process.env.TAP - , diag: process.env.TAP_DIAG - , timeout: +process.env.TAP_TIMEOUT || 30 - , gc: false - , version: false - , help: false } - - , options = nopt(knownOpts, shorthands) - -if (options.version) { - console.log(require("../package.json").version) - process.exit(0) -} - -if (options.help) { - console.log(function(){/* - -Usage: - tap - - Run the files as tap tests, parse the output, and report the results - -Options: - - --stderr Print standard error output of tests to standard error. - --tap Print raw tap output. - --diag Print diagnostic output for passed tests, as well as failed. - (Implies --tap) - --gc Expose the garbage collector to tests. - --timeout Maximum time to wait for a subtest, in seconds. Default: 30 - --version Print the version of node tap. - --help Print this help. - -Please report bugs! https://github.com/isaacs/node-tap/issues - -*/}.toString().split(/\n/).slice(1, -1).join("\n")) - process.exit(0) -} - - -Object.keys(defaults).forEach(function (k) { - if (!options.hasOwnProperty(k)) options[k] = defaults[k] -}) - -// other tests that might rely on these -if (options.diag) process.env.TAP_DIAG = true -if (options.tap) process.env.TAP = true -if (options.timeout) process.env.TAP_TIMEOUT = options.timeout - -var r = new Runner(options) - , TapProducer = require("../lib/tap-producer") - -if (options.tap || options.diag) { - r.pipe(process.stdout) -} else { - r.on("file", function (file, results, details) { - var s = (details.ok ? "" : "not ") + "ok "+results.name - , n = details.pass + "/" + details.testsTotal - , dots = new Array(Math.max(1, 60 - s.length - n.length)).join(".") - console.log("%s %s %s", s, dots, n) - if (details.ok) { - if (details.skip) { - console.log(" skipped: %s", details.skipTotal) - } - } else { - // console.error(details) - console.log(" Command: %s", results.command) - console.log(" " + TapProducer.encode(details.list) - .split(/\n/).join("\n ")) - } - }) - r.on("end", function () { - //console.log(r) - var s = "total" - , n = r.results.pass + "/" + r.results.testsTotal - , dots = new Array(60 - s.length - n.length).join(".") - , ok = r.results.ok ? "ok" : "not ok" - console.log("%s %s %s\n\n%s", s, dots, n, ok) - if (r.doCoverage) { - console.error( "\nCoverage: %s\n" - , path.resolve(r.coverageOutDir, "index.html") ) - } - }) -} - - - -r.on("end", function () { - process.exit(r.results.tests - r.results.pass) -}) diff --git a/node_modules/nodeunit/node_modules/tap/coverage-example/lib/bar.js b/node_modules/nodeunit/node_modules/tap/coverage-example/lib/bar.js deleted file mode 100644 index e7cb7ad..0000000 --- a/node_modules/nodeunit/node_modules/tap/coverage-example/lib/bar.js +++ /dev/null @@ -1,15 +0,0 @@ -var Bar = module.exports = function(str) { - this.bar = str; - this.str = str; -}; - -Bar.prototype.foo = function() { - var self = this; - return self.bar; -}; - -Bar.prototype.baz = function() { - var self = this; - return self.str; -}; - diff --git a/node_modules/nodeunit/node_modules/tap/coverage-example/lib/foo.js b/node_modules/nodeunit/node_modules/tap/coverage-example/lib/foo.js deleted file mode 100644 index cb9ee8f..0000000 --- a/node_modules/nodeunit/node_modules/tap/coverage-example/lib/foo.js +++ /dev/null @@ -1,15 +0,0 @@ -var Foo = module.exports = function(str) { - this.foo = str; - this.str = str; -}; - -Foo.prototype.bar = function() { - var self = this; - return self.foo; -}; - -Foo.prototype.baz = function() { - var self = this; - return self.str; -}; - diff --git a/node_modules/nodeunit/node_modules/tap/coverage-example/test/bar.test.js b/node_modules/nodeunit/node_modules/tap/coverage-example/test/bar.test.js deleted file mode 100644 index 91e4bc2..0000000 --- a/node_modules/nodeunit/node_modules/tap/coverage-example/test/bar.test.js +++ /dev/null @@ -1,20 +0,0 @@ -var test = require('tap').test, - Bar = require('../lib/bar'), - bar; - -test('setup', function(t) { - bar = new Bar('baz'); - t.ok(bar); - t.end(); -}); - -test('bar', function(t) { - t.equal('baz', bar.foo()); - t.end(); -}); - -test('teardown', function(t) { - t.ok(true); - t.end(); -}); - diff --git a/node_modules/nodeunit/node_modules/tap/coverage-example/test/baz.test.js b/node_modules/nodeunit/node_modules/tap/coverage-example/test/baz.test.js deleted file mode 100644 index fae22d8..0000000 --- a/node_modules/nodeunit/node_modules/tap/coverage-example/test/baz.test.js +++ /dev/null @@ -1,29 +0,0 @@ -var test = require('tap').test, - Foo = require('../lib/foo'), - Bar = require('../lib/bar'), - foo, bar; - -test('setup', function(t) { - foo = new Foo('baz'); - t.ok(foo); - bar = new Bar('baz'); - t.ok(bar); - t.end(); -}); - -test('baz from Foo', function(t) { - t.equal('baz', foo.baz()); - t.end(); -}); - -test('baz from Bar', function(t) { - t.equal('baz', bar.baz()); - t.end(); -}); - - -test('teardown', function(t) { - t.ok(true); - t.end(); -}); - diff --git a/node_modules/nodeunit/node_modules/tap/coverage-example/test/foo.test.js b/node_modules/nodeunit/node_modules/tap/coverage-example/test/foo.test.js deleted file mode 100644 index 2aed8fd..0000000 --- a/node_modules/nodeunit/node_modules/tap/coverage-example/test/foo.test.js +++ /dev/null @@ -1,20 +0,0 @@ -var test = require('tap').test, - Foo = require('../lib/foo'), - foo; - -test('setup', function(t) { - foo = new Foo('baz'); - t.ok(foo); - t.end(); -}); - -test('bar', function(t) { - t.equal('baz', foo.bar()); - t.end(); -}); - -test('teardown', function(t) { - t.ok(true); - t.end(); -}); - diff --git a/node_modules/nodeunit/node_modules/tap/example/lib/math.js b/node_modules/nodeunit/node_modules/tap/example/lib/math.js deleted file mode 100644 index f798626..0000000 --- a/node_modules/nodeunit/node_modules/tap/example/lib/math.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = Math diff --git a/node_modules/nodeunit/node_modules/tap/example/test/test-example.js b/node_modules/nodeunit/node_modules/tap/example/test/test-example.js deleted file mode 100644 index cd2549b..0000000 --- a/node_modules/nodeunit/node_modules/tap/example/test/test-example.js +++ /dev/null @@ -1,237 +0,0 @@ -var tap = require("tap") - , test = tap.test - , plan = tap.plan - , math - -test("load sut", function (t) { - math = require("../lib/math") - t.ok(math, "object loaded") - t.end() -}) - -test("validate constants", function (t) { - t.equal(math.LN10, 2.302585092994046, "ln 10") - t.equal(math.PI, 3.141592653589793, "pi") - t.equal(math.E, 2.718281828459045, "e") - t.equal(math.LOG10E, 0.4342944819032518, "log 10 e") - t.equal(math.SQRT2, 1.4142135623730951, "sqrt 2") - t.equal(math.SQRT1_2, 0.7071067811865476, "sqrt 1/2") - t.equal(math.LN2, 0.6931471805599453, "ln2") - t.end() -}) - -test("using this", function (t) { - // this also works. - this.equal(t, this, "call in scope of test obj") - this.end() -}) - -// test setTimeout, just a trivial example. -test("setTimeout", function (t) { - var start = Date.now() - setTimeout(function () { - t.ok(Date.now() >= start + 50, "timeout fired after delay") - t.end() - }, 50) -}) - -// another way to do the same, using a plan. -// this is more robust, but annoying when you have a long list -// of tests for something. For async stuff, it's generally better, -// since there's a higher risk of the control flowing off to lala land. -test("setTimeout planned", function (t) { - t.plan(1) - var start = Date.now() - setTimeout(function () { - t.ok(Date.now() >= start + 50, "timeout fired after delay") - }, 50) -}) - -// plans also are good for cases where things may fire in a non-deterministic -// order, since it won't be as obvious when everything is done. -test("setTimeout parallel", function (t) { - t.plan(2) - var start = Date.now() - setTimeout(function A () { - t.ok(Date.now() >= start + 50, "timeout A fired after delay") - }, 50) - setTimeout(function B () { - t.ok(Date.now() >= start + 50, "timeout B fired after delay") - }, 50) -}) - -// something slightly less hello worldy -test("async test", function (t) { - t.plan(4) - var fs = require("fs") - t.ok(fs, "fs library should load") - var rs = fs.createReadStream(__filename) - t.ok(rs, "read stream should start fine.") - rs.on("open", function (fd) { - t.type(fd, "number", "file descriptor should be a number") - t.equal(fd, rs.fd, "fd should match stream fd") - }) -}) - -// you can bail out of the entire everything if something is just -// Not Right (db not installed, etc.) -test("tarp", function (parent) { - if (7 === 5) { - parent.bailout("math is broken") - } - // bailout bubbles up a bit like "error" events - // if unhandled, then the parent will bail, as well. - parent.test("child bailouts", function (child) { - child.on("bailout", function (s) { - parent.fail("children shouldn't bail.") - }) - child.bailout("try to bail out, but instead just fail a test") - }) - - parent.test("child bailout 2", function (child) { - child.bailout("this one will bail out") - }) -}) - -// tests marked "todo" can fail without counting against the overall score -// never ever ever write tests to "verify" incorrect behavior! -test("unfinished test", function (t) { - t.equal(math.cos(math.PI), -1, "cos(PI)") - t.equal(math.sin(math.PI), 0, "sin(PI)") - t.equal(math.face, "your face", "math.face should be your face # TODO") - t.end() -}) - -// tests can have children. -test("http server", function (t) { - // one test plus 4 children. - t.plan(5) - - var http = require("http") - , PORT = 12346 - - t.ok(http, "http module should load") - var server - - t.test("set up server", function (t) { - t.plan(2) - server = http.createServer(function (req, res) { - t.comment("Request: "+req.url) - res.writeHead(200, {}) - res.end(req.method + " " + req.url) - }) - t.ok(server, "createServer should create a server") - server.listen(PORT, t.cb("listen should fire callback")) - }) - - // set the "parallel" flag on this one. - // That signals the harness to proceed immediately to the next test, - // and run them in parallel. - // Default behavior is to wait for each test to complete before proceeding - // to the next one. - // The first not-parallel test encountered will cause it to wait for that - // test, as well as all the parallel tests before it. - // A, B', C', D', E (where ' means "parallel") - // Runs A, and then B, C, and D in parallel, and then E. - t.test("testing POST", {parallel: true}, function (t) { - t.plan(1) - http.request("POST", { method: "POST" - , host: "localhost" - , path: "/foo" - , port: PORT }).on("response", function (res) { - t.bufferStream(res, function (s) { t.equal(s, "POST /foo") }) - }).end() - }) - - t.test("testing GET", {parallel: true}, function (t) { - t.plan(1) - http.request("POST", { method: "GET" - , host: "localhost" - , path: "/foo" - , port: PORT }).on("response", function (res) { - t.bufferStream(res, function (s) { t.equal(s, "GET /foo") }) - }).end() - }) - - // wrap in a test so that if this throws, it'll log as a failed test. - t.test("teardown", function (t) { - server.close() - t.end() - }) -}) - -// yo dawg! -test("meta-tests", function (t) { - t.plan(5) - - // t.fails() wraps a child test and succeeds if it fails. - t.fails(t.test("this should fail", function (t) { - t.ok(false, "assert false") - t.end() - })) - - // t.timesOut() wraps a child test and succeeds if it times out. - // if t.end() is called, or if a plan is completed, then it fails. - // set the timeout really low so that it will not take forever. - t.timesOut(t.test("this should timeout", { timeout: 1 }, function (t) { - t.ok(true, "assert true") - // t.end() never called. - })) - - // t.incomplete() wraps a child test and succeeds if it ends before - // the plan is finished. - t.incomplete(t.test("this should be incomplete", function (t) { - t.plan(100) - t.ok(true, "assert true") - // calling end prematurely. - t.end() - })) - - // t.bailsOut() wraps a child test and succeeds if it calls bailout() - t.bailsOut(t.test("this should bailout", function (t) { - t.bailout("oh noes, bailing out!") - })) - - // low-level analysis of subtests - t.test("verifying test success/failure expectations", function (t) { - t.once("end", function () { - var res = t.results - , is = t.equal - // hijack! - t.clear() - is(res.ok, false, "ok") - - is(res.bailedOut, false, "bailed out") - - is(res.skip, 2, "skips") - is(res.skipPass, 1, "skip that passed") - is(res.skipFail, 1, "skip that failed") - - is(res.todo, 2, "todos") - is(res.todoPass, 1, "todo that passed") - is(res.todoFail, 1, "todo that failed") - - is(res.failTotal, 3, "failures total") - is(res.fail, 1, "relevant failure") - - is(res.passTotal, 3, "passes total") - is(res.pass, 1, "relevant pass") - - is(res.testsTotal, 6, "total tests") - is(res.tests, 2, "should be 2 relevant tests") - - t.end() - }) - - // run the metatest. - // *this* is the actual SUT in this case. - t.ok(false, "failing todo #todo") - // can also set #todo or #skip explicitly - t.ok(true, "succeeding todo", {todo: true}) - t.ok(false, "failing skip #skip", {skip: true}) - t.ok(true, "suceeding skip #skip") - t.ok(false, "failing test") - t.ok(true, "succeeding test") - t.end() - }) -}) diff --git a/node_modules/nodeunit/node_modules/tap/lib/main.js b/node_modules/nodeunit/node_modules/tap/lib/main.js deleted file mode 100644 index a9a520a..0000000 --- a/node_modules/nodeunit/node_modules/tap/lib/main.js +++ /dev/null @@ -1,16 +0,0 @@ - -var GlobalHarness = require("./tap-global-harness") - -// this lets you do stuff like: -// var test = require("tap").test -// test(...) -// to run stuff in the global harness. -exports = module.exports = new GlobalHarness() - -exports.createProducer = exports.Producer = require("./tap-producer") -exports.createConsumer = exports.Consumer = require("./tap-consumer") -exports.yamlish = require("yamlish") -exports.createTest = exports.Test = require("./tap-test") -exports.createHarness = exports.Harness = require("./tap-harness") -exports.createRunner = exports.Runner = require("./tap-runner") -exports.assert = require("./tap-assert") diff --git a/node_modules/nodeunit/node_modules/tap/lib/tap-assert.js b/node_modules/nodeunit/node_modules/tap/lib/tap-assert.js deleted file mode 100644 index 60203a0..0000000 --- a/node_modules/nodeunit/node_modules/tap/lib/tap-assert.js +++ /dev/null @@ -1,445 +0,0 @@ -// an assert module that returns tappable data for each assertion. -var difflet = require('difflet') - , deepEqual = require('deep-equal') - , bufferEqual = require('buffer-equal') - , Buffer = require('buffer').Buffer - -module.exports = assert - -var syns = {} - , id = 1 - -function assert (ok, message, extra) { - if (extra && extra.skip) return assert.skip(message, extra) - - //console.error("assert %j", [ok, message, extra]) - //if (extra && extra.skip) return assert.skip(message, extra) - //console.error("assert", [ok, message, extra]) - ok = !!ok - var res = { id : id ++, ok: ok } - - var caller = getCaller(extra && extra.error) - if (extra && extra.error) { - res.type = extra.error.name - res.message = extra.error.message - res.code = extra.error.code - || extra.error.type - res.errno = extra.error.errno - delete extra.error - } - if (caller.file) { - res.file = caller.file - res.line = +caller.line - res.column = +caller.column - } - res.stack = caller.stack - - res.name = message || "(unnamed assert)" - - if (extra) Object.keys(extra).forEach(function (k) { - if (!res.hasOwnProperty(k)) res[k] = extra[k] - }) - - // strings and objects are hard to diff by eye - if (!ok && - res.hasOwnProperty("found") && - res.hasOwnProperty("wanted") && - res.found !== res.wanted) { - if (typeof res.wanted !== typeof res.found || - typeof res.wanted === "object" && (!res.found || !res.wanted)) { - res.type = { found: typeof found - , wanted: typeof wanted } - } else if (typeof res.wanted === "string") { - res.diff = diffString(res.found, res.wanted) - } else if (typeof res.wanted === "object") { - res.diff = diffObject(res.found, res.wanted) - } - } - - //console.error("assert return", res) - - return res -} -assert.ok = assert -syns.ok = [ "true", "assert" ] - - -function notOk (ok, message, extra) { - return assert(!ok, message, extra) -} -assert.notOk = notOk -syns.notOk = [ "false", "notok" ] - -function error (er, message, extra) { - if (!er) { - // just like notOk(er) - return assert(!er, message, extra) - } - message = message || er.message - extra = extra || {} - extra.error = er - return assert.fail(message, extra) -} -assert.error = error -syns.error = [ "ifError", "ifErr", "iferror" ] - - -function pass (message, extra) { - return assert(true, message, extra) -} -assert.pass = pass - -function fail (message, extra) { - //console.error("assert.fail", [message, extra]) - //if (extra && extra.skip) return assert.skip(message, extra) - return assert(false, message, extra) -} -assert.fail = fail - -function skip (message, extra) { - //console.error("assert.skip", message, extra) - if (!extra) extra = {} - return { id: id ++, skip: true, name: message || "" } -} -assert.skip = skip - -function throws (fn, wanted, message, extra) { - if (typeof wanted === "string") { - extra = message - message = wanted - wanted = null - } - - if (extra && extra.skip) return assert.skip(message, extra) - - var found = null - try { - fn() - } catch (e) { - found = { name: e.name, message: e.message } - } - - extra = extra || {} - - extra.found = found - if (wanted) { - wanted = { name: wanted.name, message: wanted.message } - extra.wanted = wanted - } - - if (!message) { - message = "Expected to throw" - if (wanted) message += ": "+wanted.name + " " + wanted.message - } - - return (wanted) ? assert.similar(found, wanted, message, extra) - : assert.ok(found, message, extra) -} -assert.throws = throws - - -function doesNotThrow (fn, message, extra) { - if (extra && extra.skip) return assert.skip(message, extra) - var found = null - try { - fn() - } catch (e) { - found = {name: e.name, message: e.message} - } - message = message || "Should not throw" - - return assert.equal(found, null, message, extra) -} -assert.doesNotThrow = doesNotThrow - - -function equal (a, b, message, extra) { - if (extra && extra.skip) return assert.skip(message, extra) - extra = extra || {} - message = message || "should be equal" - extra.found = a - extra.wanted = b - return assert(a === b, message, extra) -} -assert.equal = equal -syns.equal = ["equals" - ,"isEqual" - ,"is" - ,"strictEqual" - ,"strictEquals"] - - -function equivalent (a, b, message, extra) { - if (extra && extra.skip) return assert.skip(message, extra) - var extra = extra || {} - message = message || "should be equivalent" - extra.found = a - extra.wanted = b - - if (Buffer.isBuffer(a) && Buffer.isBuffer(b)) { - return assert(bufferEqual(a, b), message, extra) - } else { - return assert(deepEqual(a, b), message, extra) - } -} -assert.equivalent = equivalent -syns.equivalent = ["isEquivalent" - ,"looseEqual" - ,"looseEquals" - ,"isDeeply" - ,"same" - ,"deepEqual" - ,"deepEquals"] - - -function inequal (a, b, message, extra) { - if (extra && extra.skip) return assert.skip(message, extra) - extra = extra || {} - message = message || "should not be equal" - extra.found = a - extra.doNotWant = b - return assert(a !== b, message, extra) -} -assert.inequal = inequal -syns.inequal = ["notEqual" - ,"notEquals" - ,"notStrictEqual" - ,"notStrictEquals" - ,"isNotEqual" - ,"isNot" - ,"not" - ,"doesNotEqual" - ,"isInequal"] - - -function inequivalent (a, b, message, extra) { - if (extra && extra.skip) return assert.skip(message, extra) - extra = extra || {} - message = message || "should not be equivalent" - extra.found = a - extra.doNotWant = b - - if (Buffer.isBuffer(a) && Buffer.isBuffer(b)) { - return assert(!bufferEqual(a, b), message, extra) - } else { - return assert(!deepEqual(a, b), message, extra) - } -} -assert.inequivalent = inequivalent -syns.inequivalent = ["notEquivalent" - ,"notDeepEqual" - ,"notDeeply" - ,"notSame" - ,"isNotDeepEqual" - ,"isNotDeeply" - ,"isNotEquivalent" - ,"isInequivalent"] - -function similar (a, b, message, extra, flip) { - if (extra && extra.skip) return assert.skip(message, extra) - // test that a has all the fields in b - message = message || "should be similar" - - if (typeof a === "string" && - (Object.prototype.toString.call(b) === "[object RegExp]")) { - extra = extra || {} - extra.pattern = b - extra.string = a - var ok = a.match(b) - extra.match = ok - if (flip) ok = !ok - return assert.ok(ok, message, extra) - } - - var isObj = assert(a && typeof a === "object", message, extra) - if (!isObj.ok) { - // not an object - if (a == b) isObj.ok = true - if (flip) isObj.ok = !isObj.ok - return isObj - } - - var eq = flip ? inequivalent : equivalent - return eq(selectFields(a, b), b, message, extra) -} -assert.similar = similar -syns.similar = ["isSimilar" - ,"has" - ,"hasFields" - ,"like" - ,"isLike"] - -function dissimilar (a, b, message, extra) { - if (extra && extra.skip) return assert.skip(message, extra) - message = message || "should be dissimilar" - return similar(a, b, message, extra, true) -} -assert.dissimilar = dissimilar -syns.dissimilar = ["unsimilar" - ,"notSimilar" - ,"unlike" - ,"isUnlike" - ,"notLike" - ,"isNotLike" - ,"doesNotHave" - ,"isNotSimilar" - ,"isDissimilar"] - -function type (thing, t, message, extra) { - if (extra && extra.skip) return assert.skip(message, extra) - var name = t - if (typeof name === "function") name = name.name || "(anonymous ctor)" - //console.error("name=%s", name) - message = message || "type is "+name - var type = typeof thing - //console.error("type=%s", type) - if (!thing && type === "object") type = "null" - if (type === "object" && t !== "object") { - if (typeof t === "function") { - //console.error("it is a function!") - extra = extra || {} - extra.found = Object.getPrototypeOf(thing).constructor.name - extra.wanted = name - //console.error(thing instanceof t, name) - return assert.ok(thing instanceof t, message, extra) - } - - //console.error("check prototype chain") - // check against classnames or objects in prototype chain, as well. - // type(new Error("asdf"), "Error") - // type(Object.create(foo), foo) - var p = thing - while (p = Object.getPrototypeOf(p)) { - if (p === t || p.constructor && p.constructor.name === t) { - type = name - break - } - } - } - //console.error(type, name, type === name) - return assert.equal(type, name, message, extra) -} -assert.type = type -syns.type = ["isa"] - -// synonyms are helpful. -Object.keys(syns).forEach(function (c) { - syns[c].forEach(function (s) { - Object.defineProperty(assert, s, { value: assert[c], enumerable: false }) - }) -}) - -// helpers below - -function selectFields (a, b) { - // get the values in A of the fields in B - var ret = Array.isArray(b) ? [] : {} - Object.keys(b).forEach(function (k) { - if (!a.hasOwnProperty(k)) return - var v = b[k] - , av = a[k] - if (v && av && typeof v === "object" && typeof av === "object" - && !(v instanceof Date) - && !(v instanceof RegExp) - && !(v instanceof String) - && !(v instanceof Boolean) - && !(v instanceof Number) - && !(Array.isArray(v))) { - ret[k] = selectFields(av, v) - } else ret[k] = av - }) - return ret -} - -function sortObject (obj) { - if (typeof obj !== 'object' || Array.isArray(obj) || obj === null) { - return obj - } - - return Object.keys(obj).sort().reduce(function (acc, key) { - acc[key] = sortObject(obj[key]) - return acc - }, {}) -} - -function stringify (a) { - return JSON.stringify(sortObject(a), (function () { - var seen = [] - , keys = [] - return function (key, val) { - var s = seen.indexOf(val) - if (s !== -1) { - return "[Circular: "+keys[s]+"]" - } - if (val && typeof val === "object" || typeof val === "function") { - seen.push(val) - keys.push(val["!"] || val.name || key || "") - if (typeof val === "function") { - return val.toString().split(/\n/)[0] - } else if (typeof val.toUTCString === "function") { - return val.toUTCString() - } - } - return val - }})()) -} - -function diffString (f, w) { - if (w === f) return null - var p = 0 - , l = w.length - while (p < l && w.charAt(p) === f.charAt(p)) p ++ - w = stringify(w).substr(1).replace(/"$/, "") - f = stringify(f).substr(1).replace(/"$/, "") - return diff(f, w, p) -} - -function diffObject (f, w) { - return difflet({ indent : 2, comment : true }).compare(w, f) -} - -function diff (f, w, p) { - if (w === f) return null - var i = p || 0 // it's going to be at least p. JSON can only be bigger. - , l = w.length - while (i < l && w.charAt(i) === f.charAt(i)) i ++ - var pos = Math.max(0, i - 20) - w = w.substr(pos, 40) - f = f.substr(pos, 40) - var pointer = i - pos - return "FOUND: "+f+"\n" - + "WANTED: "+w+"\n" - + (new Array(pointer + 9).join(" ")) - + "^ (at position = "+p+")" -} - -function getCaller (er) { - // get the first file/line that isn't this file. - if (!er) er = new Error - var stack = er.stack || "" - stack = stack.split(/\n/) - for (var i = 1, l = stack.length; i < l; i ++) { - var s = stack[i].match(/\(([^):]+):([0-9]+):([0-9]+)\)$/) - if (!s) continue - var file = s[1] - , line = +s[2] - , col = +s[3] - if (file.indexOf(__dirname) === 0) continue - if (file.match(/tap-test\/test.js$/)) continue - else break - } - var res = {} - if (file && file !== __filename && !file.match(/tap-test\/test.js$/)) { - res.file = file - res.line = line - res.column = col - } - - res.stack = stack.slice(1).map(function (s) { - return s.replace(/^\s*at\s*/, "") - }) - - return res -} - - diff --git a/node_modules/nodeunit/node_modules/tap/lib/tap-browser-harness.js b/node_modules/nodeunit/node_modules/tap/lib/tap-browser-harness.js deleted file mode 100644 index 94700f5..0000000 --- a/node_modules/nodeunit/node_modules/tap/lib/tap-browser-harness.js +++ /dev/null @@ -1,63 +0,0 @@ -// this is just a harness that pipes to stdout. -// It's the default one. -module.exports = BrowserHarness - -var BrowserHarness = global.TAP_Browser_Harness - , inherits = require("inherits") - , Results = require("./tap-results") - , Harness = require("./tap-harness") - , Test = require("./tap-test") - -inherits(BrowserHarness, Harness) -function BrowserHarness (outPipe) { - //console.error("calling BrowserHarness") - if (browserHarness) return browserHarness - if (!(this instanceof BrowserHarness)) { - return browserHarness = new BrowserHarness - } - browserHarness = global.TAP_Browser_Harness = this - BrowserHarness.super.call(this, Test) - - if (outPipe) this.output.pipe(outPipe) - - this.test = this.test.bind(this) - - this.plan = this.plan.bind(this) - - var output = this.output - this.on("childEnd", function (child) { - //console.error("childEnd in global harness") - //console.error(child.results) - // write out the stuff for this child. - //console.error("child.conf", child.conf) - - // maybe write some other stuff about the number of tests in this - // thing, etc. I dunno. - //console.error("child results", child.results) - this.results.list.forEach(function (res) { - //delete res.error - //console.error("child resuilt", res) - output.write(res) - }) - //console.error("wrote child results") - this.results.list.length = 0 - }) - - var streamEnded = false - this.on("end", function () { - //console.error("global ending the stream") - if (!streamEnded) { - this.results.list.forEach(function (res) { - output.write(res) - }) - this.results.list.length = 0 - output.end() - streamEnded = true - } - }) - - // TODO: handle global errors - // process.on("unhandledException", function (e) { - // this.bailout("unhandled exception: " + e.message) - // }) -} diff --git a/node_modules/nodeunit/node_modules/tap/lib/tap-consumer.js b/node_modules/nodeunit/node_modules/tap/lib/tap-consumer.js deleted file mode 100644 index f1b2a6a..0000000 --- a/node_modules/nodeunit/node_modules/tap/lib/tap-consumer.js +++ /dev/null @@ -1,245 +0,0 @@ -module.exports = TapConsumer - -// pipe a stream into this that's emitting tap-formatted data, -// and it'll emit "data" events with test objects or comment strings -// and an "end" event with the final results. - -var yamlish = require("yamlish") - , Results = require("./tap-results") - , inherits = require("inherits") - -TapConsumer.decode = TapConsumer.parse = function (str) { - var tc = new TapConsumer - , list = [] - tc.on("data", function (res) { - list.push(res) - }) - tc.end(str) - tc.results.list = list - return tc.results -} - -inherits(TapConsumer, require("stream").Stream) -function TapConsumer () { - if (!(this instanceof TapConsumer)) { - return new TapConsumer - } - - TapConsumer.super.call(this) - this.results = new Results - this.readable = this.writable = true - - this.on("data", function (res) { - if (typeof res === "object") this.results.add(res) - }) - - this._plan = null - this._buffer = "" - this._indent = [] - this._current = null - this._actualCount = 0 - this._passed = [] - this._failed = [] - //console.error("TapConsumer ctor done") -} - -TapConsumer.prototype.bailedOut = false - -TapConsumer.prototype.write = function (chunk) { - if (!this.writable) this.emit("error", new Error("not writable")) - if (this.bailedOut) return true - - this._buffer = this._buffer + chunk - // split it up into lines. - var lines = this._buffer.split(/\r?\n/) - // ignore the last line, since it might be incomplete. - this._buffer = lines.pop() - - for (var i = 0, l = lines.length; i < l; i ++) { - //console.error([i, lines[i]]) - // see if it's indented. - var line = lines[i] - , spaces = (this._indent.length && !line.trim()) - || line.match(/^\s/) - // at this level, only interested in fully undented stuff. - if (spaces) { - var c = i - while (c < l && (!lines[c].trim() || lines[c].match(/^\s/))) { - this._indent.push(lines[c++]) - } - //console.error(c-i, "indented", this._indent, this._current) - i = c - 1 - continue - } - // some kind of line. summary, ok, notok, comment, or garbage. - // this also finishes parsing any of the indented lines from before - this._parseLine(line) - } - return true -} - -TapConsumer.prototype.end = function () { - // finish up any hanging indented sections or final buffer - if (this._buffer.match(/^\s/)) this._indent.push(this.buffer) - else this._parseLine(this._buffer) - - if (!this.bailedOut && - this._plan !== null && - this.results.testsTotal !== this._plan) { - while (this._actualCount < this._plan) { - this.emit("data", {ok: false, name:"MISSING TEST", - id:this._actualCount ++ }) - } - } - - this._parseLine("") - this._buffer = "" - this.writable = false - this.emit("end", null, this._actualCount, this._passed) -} - -TapConsumer.prototype._parseLine = function (line) { - if (this.bailedOut) return - //console.error("_parseLine", [line]) - // if there are any indented lines, and there is a - // current object already, then they belong to it. - // if there is not a current object, then they're garbage. - if (this._current && this._indent.length) { - this._parseIndented() - } - this._indent.length = 0 - if (this._current) { - if (this._current.ok) this._passed.push(this._current.id) - else this._failed.push(this._current.id) - this.emit("data", this._current) - } - this._current = null - line = line.trim() - if (!line) return - // try to see what kind of line this is. - - var bo - if (bo = line.match(/^bail out!\s*(.*)$/i)) { - this.bailedOut = true - // this.emit("error", new Error(line)) - this.emit("bailout", bo[1]) - return - } - - if (line.match(/^#/)) { // just a comment - line = line.replace(/^#+/, "").trim() - // console.error("outputting comment", [line]) - if (line) this.emit("data", line) - return - } - - var plan = line.match(/^([0-9]+)\.\.([0-9]+)(?:\s+#(.*))?$/) - if (plan) { - var start = +(plan[1]) - , end = +(plan[2]) - , comment = plan[3] - - // TODO: maybe do something else with this? - // it might be something like: "1..0 #Skip because of reasons" - this._plan = end - this.emit("plan", end, comment) - // plan must come before or after all tests. - if (this._actualCount !== 0) { - this._sawPlan = true - } - return - } - - if (line.match(/^(not )?ok(?:\s+([0-9]+))?/)) { - this._parseResultLine(line) - return - } - - // garbage. emit as a comment. - //console.error("emitting", [line.trim()]) - if (line.trim()) this.emit("data", line.trim()) -} - -TapConsumer.prototype._parseDirective = function (line) { - line = line.trim() - if (line.match(/^TODO\b/i)) { - return { todo:true, explanation: line.replace(/^TODO\s*/i, "") } - } else if (line.match(/^SKIP\b/i)) { - return { skip:true, explanation: line.replace(/^SKIP\s*/i, "") } - } -} - -TapConsumer.prototype._parseResultLine = function (line) { - this._actualCount ++ - if (this._sawPlan) { - this.emit("data", {ok: false, name:"plan in the middle of tests" - ,id:this._actualCount ++}) - } - var parsed = line.match(/^(not )?ok(?: ([0-9]+))?(?:(?: - )?(.*))?$/) - , ok = !parsed[1] - , id = +(parsed[2] || this._actualCount) - , rest = parsed[3] || "" - , name - , res = { id:id, ok:ok } - - // split on un-escaped # characters - - //console.log("# "+JSON.stringify([name, rest])) - rest = rest.replace(/([^\\])((?:\\\\)*)#/g, "$1\n$2").split("\n") - name = rest.shift() - rest = rest.filter(function (r) { return r.trim() }).join("#") - //console.log("# "+JSON.stringify([name, rest])) - - // now, let's see if there's a directive in there. - var dir = this._parseDirective(rest.trim()) - if (!dir) name += rest ? "#" + rest : "" - else { - res.ok = true - if (dir.skip) res.skip = true - else if (dir.todo) res.todo = true - if (dir.explanation) res.explanation = dir.explanation - } - res.name = name - - //console.error(line, [ok, id, name]) - this._current = res -} - -TapConsumer.prototype._parseIndented = function () { - // pull yamlish block out - var ind = this._indent - , ys - , ye - , yind - , diag - //console.error(ind, this._indent) - for (var i = 0, l = ind.length; i < l; i ++) { - var line = ind[i] - if (line === undefined) continue - var lt = line.trim() - - if (!ys) { - ys = line.match(/^(\s*)---(.*)$/) - if (ys) { - yind = ys[1] - diag = [ys[2]] - //console.error([line,ys, diag]) - continue - } else if (lt) this.emit("data", lt) - } else if (ys && !ye) { - if (line === yind + "...") ye = true - else { - diag.push(line.substr(yind.length)) - } - } else if (ys && ye && lt) this.emit("data", lt) - } - if (diag) { - //console.error('about to parse', diag) - diag = yamlish.decode(diag.join("\n")) - //console.error('parsed', diag) - Object.keys(diag).forEach(function (k) { - //console.error(this._current, k) - if (!this._current.hasOwnProperty(k)) this._current[k] = diag[k] - }, this) - } -} diff --git a/node_modules/nodeunit/node_modules/tap/lib/tap-cov-html.js b/node_modules/nodeunit/node_modules/tap/lib/tap-cov-html.js deleted file mode 100644 index 3c1c192..0000000 --- a/node_modules/nodeunit/node_modules/tap/lib/tap-cov-html.js +++ /dev/null @@ -1,78 +0,0 @@ -var fs = require('fs'), - path = require('path'), - asyncMap = require("slide").asyncMap, - util = require('util'); - -var CovHtml = module.exports = function(cov_stats, cov_dir, cb) { - var index = []; - - asyncMap( - Object.keys(cov_stats), - function(f, cb) { - var st = cov_stats[f], - missing_lines = st.missing.map(function(l) { - return l.number; - }), - out = '\n\n\n ' + - '\n ' + - - f + ' (' + st.loc + ')\n' + - '\n' + - '\n\n' + - '

' + f + ' (' + st.loc + ')' + '

' + - '

Run: ' + (st.missing.length ? st.loc - st.missing.length : st.loc) + ', Missing: ' + - st.missing.length + ', Percentage: ' + st.percentage + '

' + - '

Source:

\n' + - '
    \n' + - st.lines.map(function(line) { - var number = line.number, - color = (missing_lines.indexOf(number) !== -1) ? '#fcc' : '#cfc'; - return '
  1. ' + line.source.replace(/'; - }).join('\n') + - '
\n' + - '

Data

\n'+ - '
' + util.inspect(st, true, Infinity, false).replace(/\n';
-
-      fs.writeFile(
-        cov_dir + '/' + 
-        f.replace(process.cwd() + '/', '').replace(/\//g, '+') + '.html',
-        out,
-        'utf8',
-        function(err) {
-          if (err) {
-            throw err;
-          }
-          index.push(f);
-          cb();
-        });
-    },
-    function(err) {
-      if (err) {
-        throw err;
-      }
-      var out = '\n\n\n  ' +
-          '\n  Coverage Index\n\n' +
-          '\n

Code Coverage Information

\n
\n\n'; - - fs.writeFile(cov_dir + '/index.html', out, 'utf8', function(err) { - if (err) { - throw err; - } - cb(); - }); - } - ); -}; - - diff --git a/node_modules/nodeunit/node_modules/tap/lib/tap-global-harness.js b/node_modules/nodeunit/node_modules/tap/lib/tap-global-harness.js deleted file mode 100644 index 1007300..0000000 --- a/node_modules/nodeunit/node_modules/tap/lib/tap-global-harness.js +++ /dev/null @@ -1,68 +0,0 @@ -// this is just a harness that pipes to stdout. -// It's the default one. -module.exports = GlobalHarness - -var globalHarness = global.TAP_Global_Harness - , inherits = require("inherits") - , Results = require("./tap-results") - , Harness = require("./tap-harness") - , Test = require("./tap-test") - -inherits(GlobalHarness, Harness) -function GlobalHarness () { - //console.error("calling GlobalHarness") - if (globalHarness) return globalHarness - if (!(this instanceof GlobalHarness)) { - return globalHarness = new GlobalHarness - } - - globalHarness = global.TAP_Global_Harness = this - GlobalHarness.super.call(this, Test) - - this.output.pipe(process.stdout) - //this.output.on("data", function () { - // process.nextTick(process.stdout.flush.bind(process.stdout)) - //}) - - this.test = this.test.bind(this) - - this.plan = this.plan.bind(this) - - var output = this.output - this.on("childEnd", function (child) { - //console.error("childEnd in global harness") - //console.error(child.results) - // write out the stuff for this child. - //console.error("child.conf", child.conf) - - // maybe write some other stuff about the number of tests in this - // thing, etc. I dunno. - //console.error("child results", child.results) - this.results.list.forEach(function (res) { - //delete res.error - //console.error("child resuilt", res) - output.write(res) - }) - //console.error("wrote child results") - this.results.list.length = 0 - }) - - var streamEnded = false - this.on("end", function () { - //console.error("global ending the stream") - if (!streamEnded) { - this.results.list.forEach(function (res) { - output.write(res) - }) - this.results.list.length = 0 - output.end() - streamEnded = true - } - }) - - //this.on("end", this.output.end.bind(this.output)) - - process.on("unhandledException", function (e) { - this.bailout("unhandled exception: " + e.message) - }) -} diff --git a/node_modules/nodeunit/node_modules/tap/lib/tap-harness.js b/node_modules/nodeunit/node_modules/tap/lib/tap-harness.js deleted file mode 100644 index 3c0eb80..0000000 --- a/node_modules/nodeunit/node_modules/tap/lib/tap-harness.js +++ /dev/null @@ -1,223 +0,0 @@ -// a thing that runs tests. -// Every "test" is also a harness. If they do not have a harness, -// then they are attached to the defaut "global harness", -// which writes its results to stdout. - - -// TODO: -// - Bailout should stop running any tests. -// - "skip" in the test config obj should skip it. - -module.exports = Harness -require("inherits")(Harness, require("events").EventEmitter) - -var Results = require("./tap-results") - , TapProducer = require("./tap-producer") - , assert = require("./tap-assert") - -function Harness (Test) { - if (!(this instanceof Harness)) return new Harness(Test) - - //console.error("Test in "+this.constructor.name, Test) - - this._Test = Test - this._plan = null - this._children = [] - this._started = false - - this._testCount = 0 - this._planSum = 0 - - this.results = new Results() - // emit result events on the harness. - //this.results.on("result", function (res) { - // console.error("proxying result ev from res to harness") - // this.emit("result", res) - //}.bind(this)) - var me = this - this.results.on("result", this.emit.bind(this, "result")) - - var p = this.process.bind(this) - this.process = function () { - this._started = true - process.nextTick(p) - } - - this.output = new TapProducer() - Harness.super.call(this) -} - -// this function actually only gets called bound to -// the Harness object, and on process.nextTick. Even if -// passed as an event handler, everything *else* will -// happen before it gets called. -Harness.prototype.process = function () { - //console.error("harness process") - // "end" can emit multiple times, so only actually move on - // to the next test if the current one is actually over. - // TODO: multiple in-process tests, if all are marked "async" - if (this._current) { - if (!this._current._ended) return - // handle the current one before moving onto the next. - this.childEnd(this._current) - } - var skip = true - while (skip) { - //console.error("checking for skips") - var current = this._current = this._children.shift() - if (current) { - skip = current.conf.skip - if (skip) { - //console.error("add a failure for the skipping") - this.results.add(assert.fail(current.conf.name - ,{skip:true, diag:false})) - } - } else skip = false - } - - // keep processing through skipped tests, instead of running them. - if (current && this._bailedOut) { - return this.process() - } - - //console.error("got current?", !!current) - if (current) { - current.on("end", this.process) - current.emit("ready") - //console.error("emitted ready") - //console.error("_plan", this._plan, this.constructor.name) - } else { - //console.error("Harness process: no more left. ending") - if (this._endNice) { - this._endNice() - } else { - this.end() - } - } -} - -Harness.prototype.end = function () { - if (this._children.length) { - return this.process() - } - //console.error("harness end", this.constructor.name) - if (this._bailedOut) return - - // can't call .end() more than once. - if (this._ended) { - //console.error("adding failure for end calling") - this.results.add(assert.fail("end called more than once")) - } - - // see if the plan is completed properly, if there was one. - if (this._plan !== null) { - var total = this._testCount - if (total !== this._plan) { - this.results.add(assert.equal(total, this._plan, "test count != plan")) - } - this._plan = total - } - - //console.error("setting ended true", this.constructor.name) - this._ended = true - this.emit("end") -} - -Harness.prototype.plan = function (p) { - //console.error("setting plan", new Error().stack) - if (this._plan !== null) { - //console.error("about to add failure for calling plan") - return this.results.add(assert.fail("plan set multiple times")) - } - this._plan = p - if (p === 0 || this.results.testsTotal) { - this.end() - } -} - -Harness.prototype.childEnd = function (child) { - //console.error("childEnd") - this._testCount ++ - this._planSum += child._plan - //console.error("adding set of child.results") - - this.results.add(child.conf.name || "(unnamed test)") - this.results.addSet(child.results) - this.emit("childEnd", child) - // was this planned? - if (this._plan === this._testCount) { - //console.error("plan", [this._plan, this._testCount]) - return this.end() - } -} - -function copyObj(o) { - var copied = {} - Object.keys(o).forEach(function (k) { copied[k] = o[k] }) - return copied -} - -Harness.prototype.test = function test (name, conf, cb) { - if (this._bailedOut) return - - if (typeof conf === "function") cb = conf, conf = null - if (typeof name === "object") conf = name, name = null - if (typeof name === "function") cb = name, name = null - - conf = (conf ? copyObj(conf) : {}) - name = name || "" - - //console.error("making test", [name, conf, cb]) - - // timeout: value in milliseconds. Defaults to 30s - // Set to Infinity to have no timeout. - if (isNaN(conf.timeout)) conf.timeout = 30000 - var t = new this._Test(this, name, conf) - var self = this - if (cb) { - //console.error("attaching cb to ready event") - t.on("ready", function () { - if (!isNaN(conf.timeout) && isFinite(conf.timeout)) { - var timer = setTimeout(this.timeout.bind(this), conf.timeout) - var clear = function () { - clearTimeout(timer) - } - t.on("end", clear) - t.on("bailout", function (message) { - self.bailout(message) - clear() - }) - } - }) - t.on("ready", cb.bind(t, t)) - // proxy the child results to this object. - //t.on("result", function (res) { - // console.error("in harness, proxying result up") - // t.results.add(res) - //}) - } - return t -} - -Harness.prototype.bailout = function (message) { - // console.error("Harness bailout", this.constructor.name) - message = message || "" - //console.error("adding bailout message result") - this.results.add({bailout: message}) - // console.error(">>> results after bailout" , this.results) - this._bailedOut = true - this.emit("bailout", message) - this.output.end({bailout: message}) -} - -Harness.prototype.add = function (child) { - //console.error("adding child") - this._children.push(child) - if (!this._started) this.process() -} - -// the tearDown function is *always* guaranteed to happen. -// Even if there's a bailout. -Harness.prototype.tearDown = function (fn) { - this.on("end", fn) -} diff --git a/node_modules/nodeunit/node_modules/tap/lib/tap-producer.js b/node_modules/nodeunit/node_modules/tap/lib/tap-producer.js deleted file mode 100644 index c6593a9..0000000 --- a/node_modules/nodeunit/node_modules/tap/lib/tap-producer.js +++ /dev/null @@ -1,130 +0,0 @@ -module.exports = TapProducer - -var Results = require("./tap-results") - , inherits = require("inherits") - , yamlish = require("yamlish") - -TapProducer.encode = function (result, diag) { - var tp = new TapProducer(diag) - , out = "" - tp.on("data", function (c) { out += c }) - if (Array.isArray(result)) { - result.forEach(tp.write, tp) - } else tp.write(result) - tp.end() - return out -} - -inherits(TapProducer, require("stream").Stream) -function TapProducer (diag) { - TapProducer.super.call(this) - this.diag = diag - this.count = 0 - this.readable = this.writable = true - this.results = new Results -} - -TapProducer.prototype.trailer = true - -TapProducer.prototype.write = function (res) { - // console.error("TapProducer.write", res) - if (typeof res === "function") throw new Error("wtf?") - if (!this.writable) this.emit("error", new Error("not writable")) - - if (!this._didHead) { - this.emit("data", "TAP version 13\n") - this._didHead = true - } - - var diag = res.diag - if (diag === undefined) diag = this.diag - - this.emit("data", encodeResult(res, this.count + 1, diag)) - - if (typeof res === "string") return true - - if (res.bailout) { - var bo = "bail out!" - if (typeof res.bailout === "string") bo += " " + res.bailout - this.emit("data", bo) - return - } - this.results.add(res, false) - - this.count ++ -} - -TapProducer.prototype.end = function (res) { - if (res) this.write(res) - // console.error("TapProducer end", res, this.results) - this.emit("data", "\n1.."+this.results.testsTotal+"\n") - if (this.trailer && typeof this.trailer !== "string") { - // summary trailer. - var trailer = "tests "+this.results.testsTotal + "\n" - if (this.results.pass) { - trailer += "pass " + this.results.pass + "\n" - } - if (this.results.fail) { - trailer += "fail " + this.results.fail + "\n" - } - if (this.results.skip) { - trailer += "skip "+this.results.skip + "\n" - } - if (this.results.todo) { - trailer += "todo "+this.results.todo + "\n" - } - if (this.results.bailedOut) { - trailer += "bailed out" + "\n" - } - - if (this.results.testsTotal === this.results.pass) { - trailer += "\nok\n" - } - this.trailer = trailer - } - if (this.trailer) this.write(this.trailer) - this.writable = false - this.emit("end", null, this.count, this.ok) -} - -function encodeResult (res, count, diag) { - // console.error(res, count, diag) - if (typeof res === "string") { - res = res.split(/\r?\n/).map(function (l) { - if (!l.trim()) return l.trim() - return "# " + l - }).join("\n") - if (res.substr(-1) !== "\n") res += "\n" - return res - } - - if (res.bailout) return "" - - - if (!!process.env.TAP_NODIAG) diag = false - else if (!!process.env.TAP_DIAG) diag = true - else if (diag === undefined) diag = !res.ok - - var output = "" - res.name = res.name && ("" + res.name).trim() - output += ( !res.ok ? "not " : "") + "ok " + count - + ( !res.name ? "" - : " " + res.name.replace(/[\r\n]/g, " ") ) - + ( res.skip ? " # SKIP" - : res.todo ? " # TODO" - : "" ) - + "\n" - - if (!diag) return output - var d = {} - , dc = 0 - Object.keys(res).filter(function (k) { - return k !== "ok" && k !== "name" && k !== "id" - }).forEach(function (k) { - dc ++ - d[k] = res[k] - }) - //console.error(d, "about to encode") - if (dc > 0) output += " ---"+yamlish.encode(d)+"\n ...\n" - return output -} diff --git a/node_modules/nodeunit/node_modules/tap/lib/tap-results.js b/node_modules/nodeunit/node_modules/tap/lib/tap-results.js deleted file mode 100644 index 6fe90e8..0000000 --- a/node_modules/nodeunit/node_modules/tap/lib/tap-results.js +++ /dev/null @@ -1,71 +0,0 @@ -// A class for counting up results in a test harness. - -module.exports = Results - -var inherits = require("inherits") - , EventEmitter = require("events").EventEmitter - -inherits(Results, EventEmitter) - -function Results (r) { - //console.error("result constructor", r) - this.ok = true - this.addSet(r) -} - -Results.prototype.addSet = function (r) { - //console.error("add set of results", r) - r = r || {ok: true} - ; [ "todo" - , "todoPass" - , "todoFail" - , "skip" - , "skipPass" - , "skipFail" - , "pass" - , "passTotal" - , "fail" - , "failTotal" - , "tests" - , "testsTotal" ].forEach(function (k) { - this[k] = (this[k] || 0) + (r[k] || 0) - //console.error([k, this[k]]) - }, this) - - this.ok = this.ok && r.ok && true - this.bailedOut = this.bailedOut || r.bailedOut || false - this.list = (this.list || []).concat(r.list || []) - this.emit("set", this.list) - //console.error("after addSet", this) -} - -Results.prototype.add = function (r, addToList) { - //console.error("add result", r) - var pf = r.ok ? "pass" : "fail" - , PF = r.ok ? "Pass" : "Fail" - - this.testsTotal ++ - this[pf + "Total"] ++ - - if (r.skip) { - this["skip" + PF] ++ - this.skip ++ - } else if (r.todo) { - this["todo" + PF] ++ - this.todo ++ - } else { - this.tests ++ - this[pf] ++ - } - - if (r.bailout || typeof r.bailout === "string") { - // console.error("Bailing out in result") - this.bailedOut = true - } - this.ok = !!(this.ok && r.ok) - - if (addToList === false) return - this.list = this.list || [] - this.list.push(r) - this.emit("result", r) -} diff --git a/node_modules/nodeunit/node_modules/tap/lib/tap-runner.js b/node_modules/nodeunit/node_modules/tap/lib/tap-runner.js deleted file mode 100644 index 28253d1..0000000 --- a/node_modules/nodeunit/node_modules/tap/lib/tap-runner.js +++ /dev/null @@ -1,472 +0,0 @@ -var fs = require("fs") - , child_process = require("child_process") - , path = require("path") - , chain = require("slide").chain - , asyncMap = require("slide").asyncMap - , TapProducer = require("./tap-producer.js") - , TapConsumer = require("./tap-consumer.js") - , assert = require("./tap-assert.js") - , inherits = require("inherits") - , util = require("util") - , CovHtml = require("./tap-cov-html.js") - , glob = require("glob") - - // XXX Clean up the coverage options - , doCoverage = process.env.TAP_COV - || process.env.npm_package_config_coverage - || process.env.npm_config_coverage - -module.exports = Runner - -inherits(Runner, TapProducer) - -function Runner (options, cb) { - this.options = options - - var diag = this.options.diag - var dir = this.options.argv.remain - Runner.super.call(this, diag) - - this.doCoverage = doCoverage - // An array of full paths to files to obtain coverage - this.coverageFiles = [] - // The source of these files - this.coverageFilesSource = {} - // Where to write coverage information - this.coverageOutDir = this.options["coverage-dir"] - // Temporary test files bunkerified we'll remove later - this.f2delete = [] - // Raw coverage stats, as read from JSON files - this.rawCovStats = [] - // Processed coverage information, per file to cover: - this.covStats = {} - - if (dir) { - var filesToCover = this.options.cover - - if (doCoverage) { - var mkdirp = require("mkdirp") - this.coverageOutDir = path.resolve(this.coverageOutDir) - this.getFilesToCover(filesToCover) - var self = this - return mkdirp(this.coverageOutDir, 0755, function (er) { - if (er) return self.emit("error", er) - self.run(dir, cb) - }) - } - - this.run(dir, cb) - } -} - - -Runner.prototype.run = function() { - var self = this - , args = Array.prototype.slice.call(arguments) - , cb = args.pop() || finish - - function finish (er) { - if (er) { - self.emit("error", er) - } - - if (!doCoverage) return self.end() - - // Cleanup temporary test files with coverage: - self.f2delete.forEach(function(f) { - fs.unlinkSync(f) - }) - self.getFilesToCoverSource(function(err, data) { - if (err) { - self.emit("error", err) - } - self.getPerFileCovInfo(function(err, data) { - if (err) { - self.emit("error", err) - } - self.mergeCovStats(function(err, data) { - if (err) { - self.emit("error", err) - } - CovHtml(self.covStats, self.coverageOutDir, function() { - self.end() - }) - }) - }) - }) - } - - if (Array.isArray(args[0])) { - args = args[0] - } - self.runFiles(args, "", cb) -} - -Runner.prototype.runDir = function (dir, cb) { - var self = this - fs.readdir(dir, function (er, files) { - if (er) { - self.write(assert.fail("failed to readdir " + dir, { error: er })) - self.end() - return - } - files = files.sort(function(a, b) { - return a > b ? 1 : -1 - }) - files = files.filter(function(f) { - return !f.match(/^\./) - }) - files = files.map(path.resolve.bind(path, dir)) - - self.runFiles(files, path.resolve(dir), cb) - }) -} - - -// glob the filenames so that test/*.js works on windows -Runner.prototype.runFiles = function (files, dir, cb) { - var self = this - var globRes = [] - chain(files.map(function (f) { - return function (cb) { - glob(f, function (er, files) { - if (er) - return cb(er) - globRes.push.apply(globRes, files) - cb() - }) - } - }), function (er) { - if (er) - return cb(er) - runFiles(self, globRes, dir, cb) - }) -} - -function runFiles(self, files, dir, cb) { - chain(files.map(function(f) { - return function (cb) { - if (self._bailedOut) return - var relDir = dir || path.dirname(f) - , fileName = relDir === "." ? f : f.substr(relDir.length + 1) - - self.write(fileName) - fs.lstat(f, function(er, st) { - if (er) { - self.write(assert.fail("failed to stat " + f, {error: er})) - return cb() - } - - var cmd = f, args = [], env = {} - - if (path.extname(f) === ".js") { - cmd = "node" - if (self.options.gc) { - args.push("--expose-gc") - } - args.push(fileName) - } else if (path.extname(f) === ".coffee") { - cmd = "coffee" - args.push(fileName) - } else { - // Check if file is executable - if ((st.mode & 0100) && process.getuid) { - if (process.getuid() != st.uid) { - return cb() - } - } else if ((st.mode & 0010) && process.getgid) { - if (process.getgid() != st.gid) { - return cb() - } - } else if ((st.mode & 0001) == 0) { - return cb() - } - } - - if (st.isDirectory()) { - return self.runDir(f, cb) - } - - if (doCoverage && path.extname(f) === ".js") { - var foriginal = fs.readFileSync(f, "utf8") - , fcontents = self.coverHeader() + foriginal + self.coverFooter() - , tmpBaseName = path.basename(f, path.extname(f)) - + ".with-coverage." + process.pid + path.extname(f) - , tmpFname = path.resolve(path.dirname(f), tmpBaseName) - - fs.writeFileSync(tmpFname, fcontents, "utf8") - args.splice(-1, 1, tmpFname) - } - - for (var i in process.env) { - env[i] = process.env[i] - } - env.TAP = 1 - - var cp = child_process.spawn(cmd, args, { env: env, cwd: relDir }) - , out = "" - , err = "" - , tc = new TapConsumer() - , childTests = [f] - - var timeout = setTimeout(function () { - if (!cp._ended) { - cp._timedOut = true - cp.kill() - } - }, self.options.timeout * 1000) - - tc.on("data", function(c) { - self.emit("result", c) - self.write(c) - }) - - tc.on("bailout", function (message) { - clearTimeout(timeout) - console.log("# " + f.substr(process.cwd().length + 1)) - process.stderr.write(err) - process.stdout.write(out + "\n") - self._bailedOut = true - cp._ended = true - cp.kill() - }) - - cp.stdout.pipe(tc) - cp.stdout.on("data", function (c) { out += c }) - cp.stderr.on("data", function (c) { - if (self.options.stderr) process.stderr.write(c) - err += c - }) - - cp.on("close", function (code, signal) { - if (cp._ended) return - cp._ended = true - var ok = !cp._timedOut && code === 0 - clearTimeout(timeout) - //childTests.forEach(function (c) { self.write(c) }) - var res = { name: path.dirname(f).replace(process.cwd() + "/", "") - + "/" + fileName - , ok: ok - , exit: code } - - if (cp._timedOut) - res.timedOut = cp._timedOut - if (signal) - res.signal = signal - - if (err) { - res.stderr = err - if (tc.results.ok && - tc.results.tests === 0 && - !self.options.stderr) { - // perhaps a compilation error or something else failed. - // no need if stderr is set, since it will have been - // output already anyway. - console.error(err) - } - } - - // tc.results.ok = tc.results.ok && ok - tc.results.add(res) - res.command = [cmd].concat(args).map(JSON.stringify).join(" ") - self.emit("result", res) - self.emit("file", f, res, tc.results) - self.write(res) - self.write("\n") - if (doCoverage) { - self.f2delete.push(tmpFname) - } - cb() - }) - }) - } - }), cb) - - return self -} - - -// Get an array of full paths to files we are interested into obtain -// code coverage. -Runner.prototype.getFilesToCover = function(filesToCover) { - var self = this - filesToCover = filesToCover.split(",").map(function(f) { - return path.resolve(f) - }).filter(function(f) { - return path.existsSync(f) - }) - - function recursive(f) { - if (path.extname(f) === "") { - // Is a directory: - fs.readdirSync(f).forEach(function(p) { - recursive(f + "/" + p) - }) - } else { - self.coverageFiles.push(f) - } - } - filesToCover.forEach(function(f) { - recursive(f) - }) -} - -// Prepend to every test file to run. Note tap.test at the very top due it -// "plays" with include paths. -Runner.prototype.coverHeader = function() { - // semi here since we're injecting it before the first line, - // and don't want to mess up line numbers in the test files. - return "var ___TAP_COVERAGE = require(" - + JSON.stringify(require.resolve("runforcover")) - + ").cover(/.*/g);" -} - -// Append at the end of every test file to run. Actually, the stuff which gets -// the coverage information. -// Maybe it would be better to move into a separate file template so editing -// could be easier. -Runner.prototype.coverFooter = function() { - var self = this - // This needs to be a string with proper interpolations: - return [ "" - , "var ___TAP = require(" + JSON.stringify(require.resolve("./main.js")) + ")" - , "if (typeof ___TAP._plan === 'number') ___TAP._plan ++" - , "___TAP.test(" + JSON.stringify("___coverage") + ", function(t) {" - , " var covFiles = " + JSON.stringify(self.coverageFiles) - , " , covDir = " + JSON.stringify(self.coverageOutDir) - , " , path = require('path')" - , " , fs = require('fs')" - , " , testFnBase = path.basename(__filename, '.js') + '.json'" - , " , testFn = path.resolve(covDir, testFnBase)" - , "" - , " function asyncForEach(arr, fn, callback) {" - , " if (!arr.length) {" - , " return callback()" - , " }" - , " var completed = 0" - , " arr.forEach(function(i) {" - , " fn(i, function (err) {" - , " if (err) {" - , " callback(err)" - , " callback = function () {}" - , " } else {" - , " completed += 1" - , " if (completed === arr.length) {" - , " callback()" - , " }" - , " }" - , " })" - , " })" - , " }" - , "" - , " ___TAP_COVERAGE(function(coverageData) {" - , " var outObj = {}" - , " asyncForEach(covFiles, function(f, cb) {" - , " if (coverageData[f]) {" - , " var stats = coverageData[f].stats()" - , " , stObj = stats" - , " stObj.lines = stats.lines.map(function (l) {" - , " return { number: l.lineno, source: l.source() }" - , " })" - , " outObj[f] = stObj" - , " }" - , " cb()" - , " }, function(err) {" - , " ___TAP_COVERAGE.release()" - , " fs.writeFileSync(testFn, JSON.stringify(outObj))" - , " t.end()" - , " })" - , " })" - , "})" ].join("\n") -} - - -Runner.prototype.getFilesToCoverSource = function(cb) { - var self = this - asyncMap(self.coverageFiles, function(f, cb) { - fs.readFile(f, "utf8", function(err, data) { - var lc = 0 - if (err) { - cb(err) - } - self.coverageFilesSource[f] = data.split("\n").map(function(l) { - lc += 1 - return { number: lc, source: l } - }) - cb() - }) - }, cb) -} - -Runner.prototype.getPerFileCovInfo = function(cb) { - var self = this - , covPath = path.resolve(self.coverageOutDir) - - fs.readdir(covPath, function(err, files) { - if (err) { - self.emit("error", err) - } - var covFiles = files.filter(function(f) { - return path.extname(f) === ".json" - }) - asyncMap(covFiles, function(f, cb) { - fs.readFile(path.resolve(covPath, f), "utf8", function(err, data) { - if (err) { - cb(err) - } - self.rawCovStats.push(JSON.parse(data)) - cb() - }) - }, function(f, cb) { - fs.unlink(path.resolve(covPath, f), cb) - }, cb) - }) -} - -Runner.prototype.mergeCovStats = function(cb) { - var self = this - self.rawCovStats.forEach(function(st) { - Object.keys(st).forEach(function(i) { - // If this is the first time we reach this file, just add the info: - if (!self.covStats[i]) { - self.covStats[i] = { - missing: st[i].lines - } - } else { - // If we already added info for this file before, we need to remove - // from self.covStats any line not duplicated again (since it has - // run on such case) - self.covStats[i].missing = self.covStats[i].missing.filter( - function(l) { - return (st[i].lines.indexOf(l)) - }) - } - }) - }) - - // This is due to a bug into - // chrisdickinson/node-bunker/blob/feature/add-coverage-interface - // which is using array indexes for line numbers instead of the right number - Object.keys(self.covStats).forEach(function(f) { - self.covStats[f].missing = self.covStats[f].missing.map(function(line) { - return { number: line.number, source: line.source } - }) - }) - - Object.keys(self.coverageFilesSource).forEach(function(f) { - if (!self.covStats[f]) { - self.covStats[f] = { missing: self.coverageFilesSource[f] - , percentage: 0 - } - } - self.covStats[f].lines = self.coverageFilesSource[f] - self.covStats[f].loc = self.coverageFilesSource[f].length - - if (!self.covStats[f].percentage) { - self.covStats[f].percentage = - 1 - (self.covStats[f].missing.length / self.covStats[f].loc) - } - - }) - cb() -} diff --git a/node_modules/nodeunit/node_modules/tap/lib/tap-test.js b/node_modules/nodeunit/node_modules/tap/lib/tap-test.js deleted file mode 100644 index 15ae8fb..0000000 --- a/node_modules/nodeunit/node_modules/tap/lib/tap-test.js +++ /dev/null @@ -1,109 +0,0 @@ -// This is a very simple test framework that leverages the tap framework -// to run tests and output tap-parseable results. - -module.exports = Test - -var assert = require("./tap-assert") - , inherits = require("inherits") - , Results = require("./tap-results") - -// tests are also test harnesses -inherits(Test, require("./tap-harness")) - -function Test (harness, name, conf) { - //console.error("test ctor") - if (!(this instanceof Test)) return new Test(harness, name, conf) - - Test.super.call(this, Test) - - conf.name = name || conf.name || "(anonymous)" - this.conf = conf - - this.harness = harness - this.harness.add(this) -} - -// it's taking too long! -Test.prototype.timeout = function () { - // detect false alarms - if (this._ended) return - this.fail("Timeout!") - this.end() -} - -Test.prototype.clear = function () { - this._started = false - this._ended = false - this._plan = null - this._bailedOut = false - this._testCount = 0 - this.results = new Results() -} - -// this gets called if a test throws ever -Test.prototype.threw = function (ex) { - //console.error("threw!", ex.stack) - this.fail(ex.name + ": " + ex.message, { error: ex, thrown: true }) - // may emit further failing tests if the plan is not completed - //console.error("end, because it threw") - if (!this._ended) this.end() -} - -Test.prototype.comment = function (m) { - if (typeof m !== "string") { - return this.fail("Test.comment argument must be a string") - } - this.result("\n" + m.trim()) -} - -Test.prototype.result = function (res) { - this.results.add(res) - this._testCount ++ - this.emit("result", res) - if (this._plan === this._testCount) { - process.nextTick(this._endNice.bind(this)) - } -} - -Test.prototype._endNice = function () { - if (!this._ended) this.end() -} - -// parasitic -// Who says you can't do multiple inheritance in js? -Object.getOwnPropertyNames(assert).forEach(function (k) { - if (k === "prototype" || k === "name") return - var d = Object.getOwnPropertyDescriptor(assert, k) - , v = d.value - if (!v) return - d.value = assertParasite(v) - Object.defineProperty(Test.prototype, k, d) -}) - -function assertParasite (fn) { return function _testAssert () { - //console.error("_testAssert", fn.name, arguments) - if (this._bailedOut) return - var res = fn.apply(assert, arguments) - this.result(res) - return res -}} - -// a few tweaks on the EE emit function, because -// we want to catch all thrown errors and bubble up "bailout" -Test.prototype.emit = (function (em) { return function (t) { - // bailouts bubble until handled - if (t === "bailout" && - this.listeners(t).length === 0 && - this.harness) { - return this.harness.bailout(arguments[1]) - } - - if (t === "error") return em.apply(this, arguments) - try { - em.apply(this, arguments) - } catch (ex) { - // any exceptions in a test are a failure - //console.error("caught!", ex.stack) - this.threw(ex) - } -}})(Test.super.prototype.emit) diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/.bin/nopt b/node_modules/nodeunit/node_modules/tap/node_modules/.bin/nopt deleted file mode 120000 index 6b6566e..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/.bin/nopt +++ /dev/null @@ -1 +0,0 @@ -../nopt/bin/nopt.js \ No newline at end of file diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/buffer-equal/.travis.yml b/node_modules/nodeunit/node_modules/tap/node_modules/buffer-equal/.travis.yml deleted file mode 100644 index f1d0f13..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/buffer-equal/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.4 - - 0.6 diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/buffer-equal/README.markdown b/node_modules/nodeunit/node_modules/tap/node_modules/buffer-equal/README.markdown deleted file mode 100644 index 571938a..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/buffer-equal/README.markdown +++ /dev/null @@ -1,62 +0,0 @@ -buffer-equal -============ - -Return whether two buffers are equal. - -[![build status](https://secure.travis-ci.org/substack/node-buffer-equal.png)](http://travis-ci.org/substack/node-buffer-equal) - -example -======= - -``` js -var bufferEqual = require('bufferEqual'); - -console.dir(bufferEqual( - new Buffer([253,254,255]), - new Buffer([253,254,255]) -)); -console.dir(bufferEqual( - new Buffer('abc'), - new Buffer('abcd') -)); -console.dir(bufferEqual( - new Buffer('abc'), - 'abc' -)); -``` - -output: - -``` -true -false -undefined -``` - -methods -======= - -``` js -var bufferEqual = require('buffer-equal') -``` - -bufferEqual(a, b) ------------------ - -Return whether the two buffers `a` and `b` are equal. - -If `a` or `b` is not a buffer, return `undefined`. - -install -======= - -With [npm](http://npmjs.org) do: - -``` -npm install buffer-equal -``` - -license -======= - -MIT diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/buffer-equal/example/eq.js b/node_modules/nodeunit/node_modules/tap/node_modules/buffer-equal/example/eq.js deleted file mode 100644 index 1eb0509..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/buffer-equal/example/eq.js +++ /dev/null @@ -1,14 +0,0 @@ -var bufferEqual = require('../'); - -console.dir(bufferEqual( - new Buffer([253,254,255]), - new Buffer([253,254,255]) -)); -console.dir(bufferEqual( - new Buffer('abc'), - new Buffer('abcd') -)); -console.dir(bufferEqual( - new Buffer('abc'), - 'abc' -)); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/buffer-equal/index.js b/node_modules/nodeunit/node_modules/tap/node_modules/buffer-equal/index.js deleted file mode 100644 index 35a73c3..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/buffer-equal/index.js +++ /dev/null @@ -1,13 +0,0 @@ -var Buffer = require('buffer').Buffer; // for use with browserify - -module.exports = function (a, b) { - if (!Buffer.isBuffer(a)) return undefined; - if (!Buffer.isBuffer(b)) return undefined; - if (a.length !== b.length) return false; - - for (var i = 0; i < a.length; i++) { - if (a[i] !== b[i]) return false; - } - - return true; -}; diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/buffer-equal/package.json b/node_modules/nodeunit/node_modules/tap/node_modules/buffer-equal/package.json deleted file mode 100644 index 2c6ad5d..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/buffer-equal/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "buffer-equal", - "description": "return whether two buffers are equal", - "version": "0.0.0", - "repository": { - "type": "git", - "url": "git://github.com/substack/node-buffer-equal.git" - }, - "main": "index.js", - "keywords": [ - "buffer", - "equal" - ], - "directories": { - "example": "example", - "test": "test" - }, - "scripts": { - "test": "tap test/*.js" - }, - "devDependencies": { - "tap": "~0.2.4" - }, - "engines": { - "node": ">=0.4.0" - }, - "license": "MIT", - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "readme": "buffer-equal\n============\n\nReturn whether two buffers are equal.\n\n[![build status](https://secure.travis-ci.org/substack/node-buffer-equal.png)](http://travis-ci.org/substack/node-buffer-equal)\n\nexample\n=======\n\n``` js\nvar bufferEqual = require('bufferEqual');\n\nconsole.dir(bufferEqual(\n new Buffer([253,254,255]),\n new Buffer([253,254,255])\n));\nconsole.dir(bufferEqual(\n new Buffer('abc'),\n new Buffer('abcd')\n));\nconsole.dir(bufferEqual(\n new Buffer('abc'),\n 'abc'\n));\n```\n\noutput:\n\n```\ntrue\nfalse\nundefined\n```\n\nmethods\n=======\n\n``` js\nvar bufferEqual = require('buffer-equal')\n```\n\nbufferEqual(a, b)\n-----------------\n\nReturn whether the two buffers `a` and `b` are equal.\n\nIf `a` or `b` is not a buffer, return `undefined`.\n\ninstall\n=======\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm install buffer-equal\n```\n\nlicense\n=======\n\nMIT\n", - "readmeFilename": "README.markdown", - "_id": "buffer-equal@0.0.0", - "_from": "buffer-equal@~0.0.0" -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/buffer-equal/test/eq.js b/node_modules/nodeunit/node_modules/tap/node_modules/buffer-equal/test/eq.js deleted file mode 100644 index 3d34006..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/buffer-equal/test/eq.js +++ /dev/null @@ -1,35 +0,0 @@ -var bufferEqual = require('../'); -var test = require('tap').test; - -test('equal', function (t) { - var eq = bufferEqual( - new Buffer([253,254,255]), - new Buffer([253,254,255]) - ); - t.strictEqual(eq, true); - t.end(); -}); - -test('not equal', function (t) { - var eq = bufferEqual( - new Buffer('abc'), - new Buffer('abcd') - ); - t.strictEqual(eq, false); - t.end(); -}); - -test('not equal not buffer', function (t) { - var eq = bufferEqual( - new Buffer('abc'), - 'abc' - ); - t.strictEqual(eq, undefined); - t.end(); -}); - -test('equal not buffer', function (t) { - var eq = bufferEqual('abc', 'abc'); - t.strictEqual(eq, undefined); - t.end(); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/deep-equal/README.markdown b/node_modules/nodeunit/node_modules/tap/node_modules/deep-equal/README.markdown deleted file mode 100644 index c3293d3..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/deep-equal/README.markdown +++ /dev/null @@ -1,55 +0,0 @@ -deep-equal -========== - -Node's `assert.deepEqual() algorithm` as a standalone module. - -example -======= - -``` js -var equal = require('deep-equal'); -console.dir([ - equal( - { a : [ 2, 3 ], b : [ 4 ] }, - { a : [ 2, 3 ], b : [ 4 ] } - ), - equal( - { x : 5, y : [6] }, - { x : 5, y : 6 } - ) -]); -``` - -methods -======= - -var deepEqual = require('deep-equal') - -deepEqual(a, b) ---------------- - -Compare objects `a` and `b`, returning whether they are equal according to a -recursive equality algorithm. - -install -======= - -With [npm](http://npmjs.org) do: - -``` -npm install deep-equal -``` - -test -==== - -With [npm](http://npmjs.org) do: - -``` -npm test -``` - -license -======= - -MIT. Derived largely from node's assert module. diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/deep-equal/example/cmp.js b/node_modules/nodeunit/node_modules/tap/node_modules/deep-equal/example/cmp.js deleted file mode 100644 index 67014b8..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/deep-equal/example/cmp.js +++ /dev/null @@ -1,11 +0,0 @@ -var equal = require('../'); -console.dir([ - equal( - { a : [ 2, 3 ], b : [ 4 ] }, - { a : [ 2, 3 ], b : [ 4 ] } - ), - equal( - { x : 5, y : [6] }, - { x : 5, y : 6 } - ) -]); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/deep-equal/index.js b/node_modules/nodeunit/node_modules/tap/node_modules/deep-equal/index.js deleted file mode 100644 index e4e37be..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/deep-equal/index.js +++ /dev/null @@ -1,84 +0,0 @@ -var pSlice = Array.prototype.slice; -var Object_keys = typeof Object.keys === 'function' - ? Object.keys - : function (obj) { - var keys = []; - for (var key in obj) keys.push(key); - return keys; - } -; - -var deepEqual = module.exports = function (actual, expected) { - // 7.1. All identical values are equivalent, as determined by ===. - if (actual === expected) { - return true; - - } else if (actual instanceof Date && expected instanceof Date) { - return actual.getTime() === expected.getTime(); - - // 7.3. Other pairs that do not both pass typeof value == 'object', - // equivalence is determined by ==. - } else if (typeof actual != 'object' && typeof expected != 'object') { - return actual == expected; - - // 7.4. For all other Object pairs, including Array objects, equivalence is - // determined by having the same number of owned properties (as verified - // with Object.prototype.hasOwnProperty.call), the same set of keys - // (although not necessarily the same order), equivalent values for every - // corresponding key, and an identical 'prototype' property. Note: this - // accounts for both named and indexed properties on Arrays. - } else { - return objEquiv(actual, expected); - } -} - -function isUndefinedOrNull(value) { - return value === null || value === undefined; -} - -function isArguments(object) { - return Object.prototype.toString.call(object) == '[object Arguments]'; -} - -function objEquiv(a, b) { - if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) - return false; - // an identical 'prototype' property. - if (a.prototype !== b.prototype) return false; - //~~~I've managed to break Object.keys through screwy arguments passing. - // Converting to array solves the problem. - if (isArguments(a)) { - if (!isArguments(b)) { - return false; - } - a = pSlice.call(a); - b = pSlice.call(b); - return deepEqual(a, b); - } - try { - var ka = Object_keys(a), - kb = Object_keys(b), - key, i; - } catch (e) {//happens when one is a string literal and the other isn't - return false; - } - // having the same number of owned properties (keys incorporates - // hasOwnProperty) - if (ka.length != kb.length) - return false; - //the same set of keys (although not necessarily the same order), - ka.sort(); - kb.sort(); - //~~~cheap key test - for (i = ka.length - 1; i >= 0; i--) { - if (ka[i] != kb[i]) - return false; - } - //equivalent values for every corresponding key, and - //~~~possibly expensive deep test - for (i = ka.length - 1; i >= 0; i--) { - key = ka[i]; - if (!deepEqual(a[key], b[key])) return false; - } - return true; -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/deep-equal/package.json b/node_modules/nodeunit/node_modules/tap/node_modules/deep-equal/package.json deleted file mode 100644 index 79f7498..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/deep-equal/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "deep-equal", - "version": "0.0.0", - "description": "node's assert.deepEqual algorithm", - "main": "index.js", - "directories": { - "lib": ".", - "example": "example", - "test": "test" - }, - "scripts": { - "test": "tap test/*.js" - }, - "devDependencies": { - "tap": "0.0.x" - }, - "repository": { - "type": "git", - "url": "http://github.com/substack/node-deep-equal.git" - }, - "keywords": [ - "equality", - "equal", - "compare" - ], - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "license": "MIT/X11", - "engine": { - "node": ">=0.4" - }, - "readme": "deep-equal\n==========\n\nNode's `assert.deepEqual() algorithm` as a standalone module.\n\nexample\n=======\n\n``` js\nvar equal = require('deep-equal');\nconsole.dir([\n equal(\n { a : [ 2, 3 ], b : [ 4 ] },\n { a : [ 2, 3 ], b : [ 4 ] }\n ),\n equal(\n { x : 5, y : [6] },\n { x : 5, y : 6 }\n )\n]);\n```\n\nmethods\n=======\n\nvar deepEqual = require('deep-equal')\n\ndeepEqual(a, b)\n---------------\n\nCompare objects `a` and `b`, returning whether they are equal according to a\nrecursive equality algorithm.\n\ninstall\n=======\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm install deep-equal\n```\n\ntest\n====\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm test\n```\n\nlicense\n=======\n\nMIT. Derived largely from node's assert module.\n", - "readmeFilename": "README.markdown", - "_id": "deep-equal@0.0.0", - "_from": "deep-equal@~0.0.0" -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/deep-equal/test/cmp.js b/node_modules/nodeunit/node_modules/tap/node_modules/deep-equal/test/cmp.js deleted file mode 100644 index 8418f0f..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/deep-equal/test/cmp.js +++ /dev/null @@ -1,18 +0,0 @@ -var test = require('tap').test; -var equal = require('../'); - -test('equal', function (t) { - t.ok(equal( - { a : [ 2, 3 ], b : [ 4 ] }, - { a : [ 2, 3 ], b : [ 4 ] } - )); - t.end(); -}); - -test('not equal', function (t) { - t.notOk(equal( - { x : 5, y : [6] }, - { x : 5, y : 6 } - )); - t.end(); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/.travis.yml b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/.travis.yml deleted file mode 100644 index f1d0f13..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.4 - - 0.6 diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/README.markdown b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/README.markdown deleted file mode 100644 index 9ad4303..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/README.markdown +++ /dev/null @@ -1,116 +0,0 @@ -difflet -======= - -Create colorful diffs for javascript objects. - -example -======= - -string.js ---------- - -``` js -var difflet = require('difflet'); - -var s = difflet.compare({ a : 2, c : 5 }, { a : 3, b : 4 }); -process.stdout.write(s); -``` - -output: - -![colorful output](http://substack.net/images/screenshots/difflet_string.png) - -colors.js ---------- - -``` js -var diff = require('difflet')({ indent : 2 }); - -var prev = { - yy : 6, - zz : 5, - a : [1,2,3], - fn : 'beep', - c : { x : 7, z : 3 } -}; - -var next = { - a : [ 1, 2, "z", /beep/, new Buffer(3) ], - fn : function qqq () {}, - b : [5,6,7], - c : { x : 8, y : 5 } -}; - -diff(prev, next).pipe(process.stdout); -``` - -output: - -![colorful output](http://substack.net/images/screenshots/difflet_colors.png) - -green for inserts, blue for updates, red for deletes - -methods -======= - -var difflet = require('difflet') - -var diff = difflet(opts={}) ---------------------------- - -Create a difflet from optional options `opts`. - -With `opts.start(type, stream)` and `opts.stop(type, stream)`, -you can write custom handlers for all the types of differences: -`'inserted'`, `'updated'`, and `'deleted'`. -By default green is used for insertions, blue for updates, and red for -deletions. - -If `opts.indent` is set, output will span multiple lines and `opts.indent` -spaces will be used for leading whitespace. - -If `opts.comma === 'first'` then commas will be placed at the start of lines. - -Setting `opts.comment` to `true` will turn on comments with the previous -contents like this: - -![object comments](http://substack.net/images/screenshots/difflet_object_comments.png) - -diff(prev, next) ----------------- - -Return a stream with the colorful changes between objects `prev` and `next`. - -diff.compare(prev, next) ------------------------- - -Return a string with the colorful changes between `prev` and `next`. - -difflet.compare(prev, next) ---------------------------- - -Return a string with the colorful changes between `prev` and `next` with the -default options. - -install -======= - -With [npm](http://npmjs.org) do: - -``` -npm install difflet -``` - -test -==== - -With [npm](http://npmjs.org) do: - -``` -npm test -``` - -license -======= - -MIT/X11 diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/example/cmp_array.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/example/cmp_array.js deleted file mode 100644 index bc5733f..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/example/cmp_array.js +++ /dev/null @@ -1,6 +0,0 @@ -var difflet = require('../'); -var s = difflet({ indent : 2, comment : true }).compare( - [ 1, [2,3,{a:4}], 3 ], - [ 1, [[5],6,7], 4 ] -); -process.stdout.write(s); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/example/cmp_object.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/example/cmp_object.js deleted file mode 100644 index 5e00e2c..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/example/cmp_object.js +++ /dev/null @@ -1,6 +0,0 @@ -var difflet = require('../'); -var s = difflet({ indent : 2, comment : true }).compare( - { z : [6,7], a : 'abcdefgh', b : [ 31, 'xxt' ] }, - { x : 5, a : 'abdcefg', b : [ 51, 'xxs' ] } -); -console.log(s); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/example/colors.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/example/colors.js deleted file mode 100644 index 332bbae..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/example/colors.js +++ /dev/null @@ -1,18 +0,0 @@ -var diff = require('../')({ indent : 2 }); - -var prev = { - yy : 6, - zz : 5, - a : [1,2,3], - fn : 'beep', - c : { x : 7, z : 3 } -}; - -var next = { - a : [ 1, 2, "z", /beep/, new Buffer(3) ], - fn : function qqq () {}, - b : [5,6,7], - c : { x : 8, y : 5 } -}; - -diff(prev, next).pipe(process.stdout); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/example/comma_first.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/example/comma_first.js deleted file mode 100644 index 67ece23..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/example/comma_first.js +++ /dev/null @@ -1,12 +0,0 @@ -var diff = require('../')({ - indent : 2, - comma : 'first', -}); - -var prev = { yy : 6, zz : 5, a : [1,2,3] }; -var next = { - a : [ 1, 2, 3, [4], "z", /beep/, new Buffer(3) ], - fn : 8, - b : [5,6,7] -}; -diff(prev, next).pipe(process.stdout); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/example/diff.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/example/diff.js deleted file mode 100644 index 08f6e7a..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/example/diff.js +++ /dev/null @@ -1,15 +0,0 @@ -var difflet = require('../'); -var a = { - x : 4, - z : 8, - xs : [ 5, 2, 1, { 0 : 'c' } ], -}; - -var b = { - x : 4, - y : 5, - xs : [ 5, 2, 2, { c : 5 } ], -}; - -var s = difflet({ comment : true, indent : 2 }).compare(a, b); -console.log(s); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/example/html.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/example/html.js deleted file mode 100644 index 9ff4a29..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/example/html.js +++ /dev/null @@ -1,34 +0,0 @@ -var difflet = require('../'); -var ent = require('ent'); - -var tags = { - inserted : '', - updated : '', - deleted : '', -}; -var diff = difflet({ - start : function (t, s) { - s.write(tags[t]); - }, - stop : function (t, s) { - s.write(''); - }, - write : function (buf) { - stream.write(ent.encode(buf)) - }, -}); - -var prev = { - yy : 6, - zz : 5, - a : [1,2,3], - fn : function qq () {} -}; -var next = { - a : [ 1, 2, 3, [4], "z", /beep/, new Buffer([0,1,2]) ], - fn : 'I <3 robots', - b : [5,6,7] -}; - -var stream = diff(prev, next); -stream.pipe(process.stdout, { end : false }); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/example/string.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/example/string.js deleted file mode 100644 index 6cff6cb..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/example/string.js +++ /dev/null @@ -1,4 +0,0 @@ -var difflet = require('../'); - -var s = difflet.compare({ a : 2, c : 5 }, { a : 3, b : 4 }); -process.stdout.write(s); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/index.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/index.js deleted file mode 100644 index cc32f2b..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/index.js +++ /dev/null @@ -1,371 +0,0 @@ -var traverse = require('traverse'); -var Stream = require('stream').Stream; -var charm = require('charm'); -var deepEqual = require('deep-equal'); - -var exports = module.exports = function (opts_) { - var fn = difflet.bind(null, opts_); - fn.compare = function (prev, next) { - var opts = Object.keys(opts_ || {}).reduce(function (acc, key) { - acc[key] = opts_[key]; - return acc; - }, {}); - var s = opts.stream = new Stream; - var data = ''; - s.write = function (buf) { data += buf }; - s.end = function () {}; - s.readable = true; - s.writable = true; - - difflet(opts, prev, next); - return data; - }; - return fn; -}; - -exports.compare = function (prev, next) { - return exports({}).compare(prev, next); -}; - -function difflet (opts, prev, next) { - var stream = opts.stream || new Stream; - if (!opts.stream) { - stream.readable = true; - stream.writable = true; - stream.write = function (buf) { this.emit('data', buf) }; - stream.end = function () { this.emit('end') }; - } - - if (!opts) opts = {}; - if (opts.start === undefined && opts.stop === undefined) { - var c = charm(stream); - opts.start = function (type) { - c.foreground({ - inserted : 'green', - updated : 'blue', - deleted : 'red', - comment : 'cyan', - }[type]); - c.display('bright'); - }; - opts.stop = function (type) { - c.display('reset'); - }; - } - var write = function (buf) { - if (opts.write) opts.write(buf, stream) - else stream.write(buf) - }; - - var commaFirst = opts.comma === 'first'; - - var stringify = function (node, params) { - return stringifier.call(this, true, node, params || opts); - }; - var plainStringify = function (node, params) { - return stringifier.call(this, false, node, params || opts); - }; - - var levels = 0; - function set (type) { - if (levels === 0) opts.start(type, stream); - levels ++; - } - - function unset (type) { - if (--levels === 0) opts.stop(type, stream); - } - - function stringifier (insertable, node, opts) { - var indent = opts.indent; - - if (insertable) { - var prevNode = traverse.get(prev, this.path || []); - } - var inserted = insertable && prevNode === undefined; - - var indentx = indent ? Array( - ((this.path || []).length + 1) * indent + 1 - ).join(' ') : ''; - if (commaFirst) indentx = indentx.slice(indent); - - if (Array.isArray(node)) { - var updated = (prevNode || traverse.has(prev, this.path)) - && !Array.isArray(prevNode); - if (updated) { - set('updated'); - } - - if (opts.comment && !Array.isArray(prevNode)) { - indent = 0; - } - - this.before(function () { - if (inserted) set('inserted'); - if (indent && commaFirst) { - if ((this.path || []).length === 0 - || Array.isArray(this.parent.node)) { - write('[ '); - } - else write('\n' + indentx + '[ '); - } - else if (indent) { - write('[\n' + indentx); - } - else { - write('['); - } - }); - - this.post(function (child) { - if (!child.isLast && !(indent && commaFirst)) { - write(','); - } - - var prev = prevNode && prevNode[child.key]; - if (indent && opts.comment && child.node !== prev - && (typeof child.node !== 'object' || typeof prev !== 'object') - ) { - set('comment'); - write(' // != '); - traverse(prev).forEach(function (x) { - plainStringify.call(this, x, { indent : 0 }); - }); - unset('comment'); - } - - if (!child.isLast) { - if (indent && commaFirst) { - write('\n' + indentx + ', '); - } - else if (indent) { - write('\n' + indentx); - } - } - }); - - this.after(function () { - if (indent && commaFirst) write('\n' + indentx); - else if (indent) write('\n' + indentx.slice(indent)); - - write(']'); - if (updated) unset('updated'); - if (inserted) unset('inserted'); - }); - } - else if (isRegExp(node)) { - this.block(); - - if (inserted) { - set('inserted'); - write(node.toString()); - unset('inserted'); - } - else if (insertable && prevNode !== node) { - set('updated'); - write(node.toString()); - unset('updated'); - } - else write(node.toString()); - } - else if (typeof node === 'object' - && node && typeof node.inspect === 'function') { - this.block(); - if (inserted) { - set('inserted'); - write(node.inspect()); - unset('inserted'); - } - else if (!(prevNode && typeof prevNode.inspect === 'function' - && prevNode.inspect() === node.inspect())) { - set('updated'); - write(node.inspect()); - unset('updated'); - } - else write(node.inspect()); - } - else if (typeof node == 'object' && node !== null) { - var insertedKey = false; - var deleted = insertable && typeof prevNode === 'object' && prevNode - ? Object.keys(prevNode).filter(function (key) { - return !Object.hasOwnProperty.call(node, key); - }) - : [] - ; - - this.before(function () { - if (inserted) set('inserted'); - write(indent && commaFirst && !this.isRoot - ? '\n' + indentx + '{ ' - : '{' - ); - }); - - this.pre(function (x, key) { - if (insertable) { - var obj = traverse.get(prev, this.path.concat(key)); - if (obj === undefined) { - insertedKey = true; - set('inserted'); - } - } - - if (indent && !commaFirst) write('\n' + indentx); - - plainStringify(key); - write(indent ? ' : ' : ':'); - }); - - this.post(function (child) { - if (!child.isLast && !(indent && commaFirst)) { - write(','); - } - - if (child.isLast && deleted.length) { - if (insertedKey) unset('inserted'); - insertedKey = false; - } - else if (insertedKey) { - unset('inserted'); - insertedKey = false; - } - - var prev = prevNode && prevNode[child.key]; - if (indent && opts.comment && child.node !== prev - && (typeof child.node !== 'object' || typeof prev !== 'object') - ) { - set('comment'); - write(' // != '); - traverse(prev).forEach(function (x) { - plainStringify.call(this, x, { indent : 0 }); - }); - unset('comment'); - } - - if (child.isLast && deleted.length) { - if (insertedKey) unset('inserted'); - insertedKey = false; - - if (indent && commaFirst) { - write('\n' + indentx + ', ') - } - else if (opts.comment && indent) { - write('\n' + indentx); - } - else if (indent) { - write(',\n' + indentx); - } - else write(','); - } - else { - if (!child.isLast) { - if (indent && commaFirst) { - write('\n' + indentx + ', '); - } - } - } - }); - - this.after(function () { - if (inserted) unset('inserted'); - - if (deleted.length) { - if (indent && !commaFirst - && Object.keys(node).length === 0) { - write('\n' + indentx); - } - - set('deleted'); - deleted.forEach(function (key, ix) { - if (indent && opts.comment) { - unset('deleted'); - set('comment'); - write('// '); - unset('comment'); - set('deleted'); - } - - plainStringify(key); - write(indent ? ' : ' : ':'); - traverse(prevNode[key]).forEach(function (x) { - plainStringify.call(this, x, { indent : 0 }); - }); - - var last = ix === deleted.length - 1; - if (insertable && !last) { - if (indent && commaFirst) { - write('\n' + indentx + ', '); - } - else if (indent) { - write(',\n' + indentx); - } - else write(','); - } - }); - unset('deleted'); - } - - if (commaFirst && indent) { - write(indentx.slice(indent) + ' }'); - } - else if (indent) { - write('\n' + indentx.slice(indent) + '}'); - } - else write('}'); - }); - } - else { - var changed = false; - - if (inserted) set('inserted'); - else if (insertable && !deepEqual(prevNode, node)) { - changed = true; - set('updated'); - } - - if (typeof node === 'string') { - write('"' + node.toString().replace(/"/g, '\\"') + '"'); - } - else if (isRegExp(node)) { - write(node.toString()); - } - else if (typeof node === 'function') { - write(node.name - ? '[Function: ' + node.name + ']' - : '[Function]' - ); - } - else if (node === undefined) { - write('undefined'); - } - else if (node === null) { - write('null'); - } - else { - write(node.toString()); - } - - if (inserted) unset('inserted'); - else if (changed) unset('updated'); - } - } - - if (opts.stream) { - traverse(next).forEach(stringify); - } - else process.nextTick(function () { - traverse(next).forEach(stringify); - stream.emit('end'); - }); - - return stream; -} - -function isRegExp (node) { - return node instanceof RegExp || (node - && typeof node.test === 'function' - && typeof node.exec === 'function' - && typeof node.compile === 'function' - && node.constructor && node.constructor.name === 'RegExp' - ); -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/README.markdown b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/README.markdown deleted file mode 100644 index c78d81f..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/README.markdown +++ /dev/null @@ -1,202 +0,0 @@ -charm -===== - -Use -[ansi terminal characters](http://www.termsys.demon.co.uk/vtansi.htm) -to write colors and cursor positions. - -![me lucky charms](http://substack.net/images/charms.png) - -example -======= - -lucky ------ - -````javascript -var charm = require('charm')(process); -charm.reset(); - -var colors = [ 'red', 'cyan', 'yellow', 'green', 'blue' ]; -var text = 'Always after me lucky charms.'; - -var offset = 0; -var iv = setInterval(function () { - var y = 0, dy = 1; - for (var i = 0; i < 40; i++) { - var color = colors[(i + offset) % colors.length]; - var c = text[(i + offset) % text.length]; - charm - .move(1, dy) - .foreground(color) - .write(c) - ; - y += dy; - if (y <= 0 || y >= 5) dy *= -1; - } - charm.position(0, 1); - offset ++; -}, 150); - -charm.on('data', function (buf) { - if (buf[0] === 3) { - clearInterval(iv); - charm.destroy(); - } -}); -```` - -events -====== - -Charm objects pass along the data events from their input stream except for -events generated from querying the terminal device. - -Because charm puts stdin into raw mode, charm emits two special events: "^C" and -"^D" when the user types those combos. It's super convenient with these events -to do: - -````javascript -charm.on('^C', process.exit) -```` - -methods -======= - -var charm = require('charm')(param or stream, ...) --------------------------------------------------- - -Create a new `charm` given a `param` with `stdout` and `stdin` streams, such as -`process` or by passing the streams in themselves separately as parameters. - -Protip: you can pass in an http response object as an output stream and it will -just work™. - -charm.reset() -------------- - -Reset the entire screen, like the /usr/bin/reset command. - -charm.destroy() ---------------- - -Destroy the input stream. - -charm.write(msg) ----------------- - -Pass along `msg` to the output stream. - -charm.position(x, y) or charm.position(cb) ------------------------------------------- - -Set the cursor position to the absolute coordinates `x, y` or query the position -and get the response as `cb(x, y)`. - -charm.move(x, y) ----------------- - -Move the cursor position by the relative coordinates `x, y`. - -charm.up(y) ------------ - -Move the cursor up by `y` rows. - -charm.down(y) -------------- - -Move the cursor down by `y` rows. - -charm.left(x) -------------- - -Move the cursor left by `x` columns. - -charm.right(x) -------------- - -Move the cursor right by `x` columns. - -charm.push(withAttributes=false) --------------------------------- - -Push the cursor state and optionally the attribute state. - -charm.pop(withAttributes=false) -------------------------------- - -Pop the cursor state and optionally the attribute state. - -charm.erase(s) --------------- - -Erase a region defined by the string `s`. - -`s` can be: - -* end - erase from the cursor to the end of the line -* start - erase from the cursor to the start of the line -* line - erase the current line -* down - erase everything below the current line -* up - erase everything above the current line -* screen - erase the entire screen - -charm.display(attr) -------------------- - -Set the display mode with the string `attr`. - -`attr` can be: - -* reset -* bright -* dim -* underscore -* blink -* reverse -* hidden - -charm.foreground(color) ------------------------ - -Set the foreground color with the string `color`, which can be: - -* red -* yellow -* green -* blue -* cyan -* magenta -* black -* white - -or `color` can be an integer from 0 to 255, inclusive. - -charm.background(color) ------------------------ - -Set the background color with the string `color`, which can be: - -* red -* yellow -* green -* blue -* cyan -* magenta -* black -* white - -or `color` can be an integer from 0 to 255, inclusive. - -charm.cursor(visible) ---------------------- - -Set the cursor visibility with a boolean `visible`. - -install -======= - -With [npm](http://npmjs.org) do: - - npm install charm diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/256.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/256.js deleted file mode 100644 index 6851386..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/256.js +++ /dev/null @@ -1,17 +0,0 @@ -var charm = require('../')(process); - -function exit () { - charm.display('reset'); - process.exit(); -} -charm.on('^C', exit); - -var ix = 0; -var iv = setInterval(function () { - charm.background(ix++).write(' '); - if (ix === 256) { - clearInterval(iv); - charm.write('\n'); - exit(); - } -}, 10); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/column.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/column.js deleted file mode 100644 index 448e9c3..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/column.js +++ /dev/null @@ -1,10 +0,0 @@ -var charm = require('../')(process); - -charm - .column(16) - .write('beep') - .down() - .column(32) - .write('boop\n') - .destroy() -; diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/cursor.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/cursor.js deleted file mode 100644 index 0c565b0..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/cursor.js +++ /dev/null @@ -1,22 +0,0 @@ -var charm = require('../')(process); - -charm.position(5, 10); - -charm.position(function (x, y) { - console.dir([ x, y ]); - - charm.move(7,2); - charm.push(); - process.stdout.write('lul'); - - charm.left(3).up(1).foreground('magenta'); - process.stdout.write('v'); - charm.left(1).up(1).display('reset'); - process.stdout.write('|'); - - charm.down(3); - charm.pop().background('blue'); - process.stdout.write('popped\npow'); - charm.display('reset').erase('line'); - charm.destroy(); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/http_spin.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/http_spin.js deleted file mode 100644 index 53e0e4b..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/http_spin.js +++ /dev/null @@ -1,35 +0,0 @@ -var http = require('http'); -var charmer = require('../'); - -http.createServer(function (req, res) { - res.setHeader('content-type', 'text/ansi'); - - var charm = charmer(res); - charm.reset(); - - var radius = 10; - var theta = 0; - var points = []; - - var iv = setInterval(function () { - var x = 2 + (radius + Math.cos(theta) * radius) * 2; - var y = 2 + radius + Math.sin(theta) * radius; - - points.unshift([ x, y ]); - var colors = [ 'red', 'yellow', 'green', 'cyan', 'blue', 'magenta' ]; - - points.forEach(function (p, i) { - charm.position(p[0], p[1]); - var c = colors[Math.floor(i / 12)]; - charm.background(c).write(' ') - }); - points = points.slice(0, 12 * colors.length - 1); - - theta += Math.PI / 40; - }, 50); - - req.connection.on('end', function () { - clearInterval(iv); - charm.destroy(); - }); -}).listen(8081); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/lucky.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/lucky.js deleted file mode 100644 index 08dc5b5..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/lucky.js +++ /dev/null @@ -1,30 +0,0 @@ -var charm = require('../')(process); -charm.reset(); - -var colors = [ 'red', 'cyan', 'yellow', 'green', 'blue' ]; -var text = 'Always after me lucky charms.'; - -var offset = 0; -var iv = setInterval(function () { - var y = 0, dy = 1; - for (var i = 0; i < 40; i++) { - var color = colors[(i + offset) % colors.length]; - var c = text[(i + offset) % text.length]; - charm - .move(1, dy) - .foreground(color) - .write(c) - ; - y += dy; - if (y <= 0 || y >= 5) dy *= -1; - } - charm.position(0, 1); - offset ++; -}, 150); - -charm.on('data', function (buf) { - if (buf[0] === 3) { - clearInterval(iv); - charm.destroy(); - } -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/position.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/position.js deleted file mode 100644 index 2c5ae9b..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/position.js +++ /dev/null @@ -1,7 +0,0 @@ -var charm = require('charm')(process); - -charm.on('^C', process.exit); - -charm.position(function (x, y) { - console.log('(%d, %d)', x, y); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/progress.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/progress.js deleted file mode 100644 index f8db57b..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/progress.js +++ /dev/null @@ -1,19 +0,0 @@ -var charm = require('../')(process); - -charm.write("Progress: 0 %"); -var i = 0; - -var increment = function () { - charm.left(i.toString().length + 2); - i = i + 1; - charm.write(i + " %"); - if (i === 100) { - charm.write("\nDone!\n"); - process.exit(); - } -}; - -var loop = setInterval(increment, 50); - -charm.on('^C',process.exit); - diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/spin.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/spin.js deleted file mode 100644 index fd3e23a..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/example/spin.js +++ /dev/null @@ -1,23 +0,0 @@ -var charm = require('../')(process); -charm.reset(); - -var radius = 10; -var theta = 0; -var points = []; - -var iv = setInterval(function () { - var x = 2 + (radius + Math.cos(theta) * radius) * 2; - var y = 2 + radius + Math.sin(theta) * radius; - - points.unshift([ x, y ]); - var colors = [ 'red', 'yellow', 'green', 'cyan', 'blue', 'magenta' ]; - - points.forEach(function (p, i) { - charm.position(p[0], p[1]); - var c = colors[Math.floor(i / 12)]; - charm.background(c).write(' ') - }); - points = points.slice(0, 12 * colors.length - 1); - - theta += Math.PI / 40; -}, 50); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/index.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/index.js deleted file mode 100644 index bcfc7a8..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/index.js +++ /dev/null @@ -1,286 +0,0 @@ -var tty = require('tty'); -var encode = require('./lib/encode'); -var EventEmitter = require('events').EventEmitter; - -var exports = module.exports = function () { - var input = null; - function setInput (s) { - if (input) throw new Error('multiple inputs specified') - else input = s - } - - var output = null; - function setOutput (s) { - if (output) throw new Error('multiple outputs specified') - else output = s - } - - for (var i = 0; i < arguments.length; i++) { - var arg = arguments[i]; - if (!arg) continue; - if (arg.readable) setInput(arg) - else if (arg.stdin || arg.input) setInput(arg.stdin || arg.input) - - if (arg.writable) setOutput(arg) - else if (arg.stdout || arg.output) setOutput(arg.stdout || arg.output) - - } - - return new Charm(input, output); -}; - -var Charm = exports.Charm = function (input, output) { - var self = this; - self.input = input; - self.output = output; - self.pending = []; - - if (!output) { - self.emit('error', new Error('output stream required')); - } - - if (input && typeof input.fd === 'number' && tty.isatty(input.fd)) { - if (process.stdin.setRawMode) { - process.stdin.setRawMode(true); - } - else tty.setRawMode(true); - input.resume(); - } - - if (input) { - input.on('data', function (buf) { - if (self.pending.length) { - var codes = extractCodes(buf); - var matched = false; - - for (var i = 0; i < codes.length; i++) { - for (var j = 0; j < self.pending.length; j++) { - var cb = self.pending[j]; - if (cb(codes[i])) { - matched = true; - self.pending.splice(j, 1); - break; - } - } - } - - if (matched) return; - } - - self.emit('data', buf) - - if (buf.length === 1) { - if (buf[0] === 3) self.emit('^C'); - if (buf[0] === 4) self.emit('^D'); - } - }); - } -} - -Charm.prototype = new EventEmitter; - -Charm.prototype.destroy = function () { - if (this.input) this.input.destroy() -}; - -Charm.prototype.write = function (msg) { - this.output.write(msg); - return this; -}; - -Charm.prototype.reset = function (cb) { - this.write(encode('c')); - return this; -}; - -Charm.prototype.position = function (x, y) { - // get/set absolute coordinates - if (typeof x === 'function') { - var cb = x; - this.pending.push(function (buf) { - if (buf[0] === 27 && buf[1] === encode.ord('[') - && buf[buf.length-1] === encode.ord('R')) { - var pos = buf.toString() - .slice(2,-1) - .split(';') - .map(Number) - ; - cb(pos[1], pos[0]); - return true; - } - }); - this.write(encode('[6n')); - } - else { - this.write(encode( - '[' + Math.floor(y) + ';' + Math.floor(x) + 'f' - )); - } - return this; -}; - -Charm.prototype.move = function (x, y) { - // set relative coordinates - var bufs = []; - - if (y < 0) this.up(-y) - else if (y > 0) this.down(y) - - if (x > 0) this.right(x) - else if (x < 0) this.left(-x) - - return this; -}; - -Charm.prototype.up = function (y) { - if (y === undefined) y = 1; - this.write(encode('[' + Math.floor(y) + 'A')); - return this; -}; - -Charm.prototype.down = function (y) { - if (y === undefined) y = 1; - this.write(encode('[' + Math.floor(y) + 'B')); - return this; -}; - -Charm.prototype.right = function (x) { - if (x === undefined) x = 1; - this.write(encode('[' + Math.floor(x) + 'C')); - return this; -}; - -Charm.prototype.left = function (x) { - if (x === undefined) x = 1; - this.write(encode('[' + Math.floor(x) + 'D')); - return this; -}; - -Charm.prototype.column = function (x) { - this.write(encode('[' + Math.floor(x) + 'G')); - return this; -}; - -Charm.prototype.push = function (withAttributes) { - this.write(encode(withAttributes ? '7' : '[s')); - return this; -}; - -Charm.prototype.pop = function (withAttributes) { - this.write(encode(withAttributes ? '8' : '[u')); - return this; -}; - -Charm.prototype.erase = function (s) { - if (s === 'end' || s === '$') { - this.write(encode('[K')); - } - else if (s === 'start' || s === '^') { - this.write(encode('[1K')); - } - else if (s === 'line') { - this.write(encode('[2K')); - } - else if (s === 'down') { - this.write(encode('[J')); - } - else if (s === 'up') { - this.write(encode('[1J')); - } - else if (s === 'screen') { - this.write(encode('[1J')); - } - else { - this.emit('error', new Error('Unknown erase type: ' + s)); - } - return this; -}; - -Charm.prototype.display = function (attr) { - var c = { - reset : 0, - bright : 1, - dim : 2, - underscore : 4, - blink : 5, - reverse : 7, - hidden : 8 - }[attr]; - if (c === undefined) { - this.emit('error', new Error('Unknown attribute: ' + attr)); - } - this.write(encode('[' + c + 'm')); - return this; -}; - -Charm.prototype.foreground = function (color) { - if (typeof color === 'number') { - if (color < 0 || color >= 256) { - this.emit('error', new Error('Color out of range: ' + color)); - } - this.write(encode('[38;5;' + color + 'm')); - } - else { - var c = { - black : 30, - red : 31, - green : 32, - yellow : 33, - blue : 34, - magenta : 35, - cyan : 36, - white : 37 - }[color.toLowerCase()]; - - if (!c) this.emit('error', new Error('Unknown color: ' + color)); - this.write(encode('[' + c + 'm')); - } - return this; -}; - -Charm.prototype.background = function (color) { - if (typeof color === 'number') { - if (color < 0 || color >= 256) { - this.emit('error', new Error('Color out of range: ' + color)); - } - this.write(encode('[48;5;' + color + 'm')); - } - else { - var c = { - black : 40, - red : 41, - green : 42, - yellow : 43, - blue : 44, - magenta : 45, - cyan : 46, - white : 47 - }[color.toLowerCase()]; - - if (!c) this.emit('error', new Error('Unknown color: ' + color)); - this.write(encode('[' + c + 'm')); - } - return this; -}; - -Charm.prototype.cursor = function (visible) { - this.write(encode(visible ? '[?25h' : '[?25l')); - return this; -}; - -var extractCodes = exports.extractCodes = function (buf) { - var codes = []; - var start = -1; - - for (var i = 0; i < buf.length; i++) { - if (buf[i] === 27) { - if (start >= 0) codes.push(buf.slice(start, i)); - start = i; - } - else if (start >= 0 && i === buf.length - 1) { - codes.push(buf.slice(start)); - } - } - - return codes; -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/lib/encode.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/lib/encode.js deleted file mode 100644 index 3b6417a..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/lib/encode.js +++ /dev/null @@ -1,18 +0,0 @@ -var encode = module.exports = function (xs) { - function bytes (s) { - if (typeof s === 'string') { - return s.split('').map(ord); - } - else if (Array.isArray(s)) { - return s.reduce(function (acc, c) { - return acc.concat(bytes(c)); - }, []); - } - } - - return new Buffer([ 0x1b ].concat(bytes(xs))); -}; - -var ord = encode.ord = function ord (c) { - return c.charCodeAt(0) -}; diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/package.json b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/package.json deleted file mode 100644 index 33f56af..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/charm/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "charm", - "version": "0.0.8", - "description": "ansi control sequences for terminal cursor hopping and colors", - "main": "index.js", - "directories": { - "lib": ".", - "example": "example", - "test": "test" - }, - "repository": { - "type": "git", - "url": "http://github.com/substack/node-charm.git" - }, - "keywords": [ - "terminal", - "ansi", - "cursor", - "color", - "console", - "control", - "escape", - "sequence" - ], - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "license": "MIT/X11", - "engine": { - "node": ">=0.4" - }, - "readme": "charm\n=====\n\nUse\n[ansi terminal characters](http://www.termsys.demon.co.uk/vtansi.htm)\nto write colors and cursor positions.\n\n![me lucky charms](http://substack.net/images/charms.png)\n\nexample\n=======\n\nlucky\n-----\n\n````javascript\nvar charm = require('charm')(process);\ncharm.reset();\n\nvar colors = [ 'red', 'cyan', 'yellow', 'green', 'blue' ];\nvar text = 'Always after me lucky charms.';\n\nvar offset = 0;\nvar iv = setInterval(function () {\n var y = 0, dy = 1;\n for (var i = 0; i < 40; i++) {\n var color = colors[(i + offset) % colors.length];\n var c = text[(i + offset) % text.length];\n charm\n .move(1, dy)\n .foreground(color)\n .write(c)\n ;\n y += dy;\n if (y <= 0 || y >= 5) dy *= -1;\n }\n charm.position(0, 1);\n offset ++;\n}, 150);\n \ncharm.on('data', function (buf) {\n if (buf[0] === 3) {\n clearInterval(iv);\n charm.destroy();\n }\n});\n````\n\nevents\n======\n\nCharm objects pass along the data events from their input stream except for\nevents generated from querying the terminal device.\n\nBecause charm puts stdin into raw mode, charm emits two special events: \"^C\" and\n\"^D\" when the user types those combos. It's super convenient with these events\nto do:\n\n````javascript\ncharm.on('^C', process.exit)\n````\n\nmethods\n=======\n\nvar charm = require('charm')(param or stream, ...)\n--------------------------------------------------\n\nCreate a new `charm` given a `param` with `stdout` and `stdin` streams, such as\n`process` or by passing the streams in themselves separately as parameters.\n\nProtip: you can pass in an http response object as an output stream and it will\njust work™.\n\ncharm.reset()\n-------------\n\nReset the entire screen, like the /usr/bin/reset command.\n\ncharm.destroy()\n---------------\n\nDestroy the input stream.\n\ncharm.write(msg)\n----------------\n\nPass along `msg` to the output stream.\n\ncharm.position(x, y) or charm.position(cb)\n------------------------------------------\n\nSet the cursor position to the absolute coordinates `x, y` or query the position\nand get the response as `cb(x, y)`.\n\ncharm.move(x, y)\n----------------\n\nMove the cursor position by the relative coordinates `x, y`.\n\ncharm.up(y)\n-----------\n\nMove the cursor up by `y` rows.\n\ncharm.down(y)\n-------------\n\nMove the cursor down by `y` rows.\n\ncharm.left(x)\n-------------\n\nMove the cursor left by `x` columns.\n\ncharm.right(x)\n-------------\n\nMove the cursor right by `x` columns.\n\ncharm.push(withAttributes=false)\n--------------------------------\n\nPush the cursor state and optionally the attribute state.\n\ncharm.pop(withAttributes=false)\n-------------------------------\n\nPop the cursor state and optionally the attribute state.\n\ncharm.erase(s)\n--------------\n\nErase a region defined by the string `s`.\n\n`s` can be:\n\n* end - erase from the cursor to the end of the line\n* start - erase from the cursor to the start of the line\n* line - erase the current line\n* down - erase everything below the current line\n* up - erase everything above the current line\n* screen - erase the entire screen\n\ncharm.display(attr)\n-------------------\n\nSet the display mode with the string `attr`.\n\n`attr` can be:\n\n* reset\n* bright\n* dim\n* underscore\n* blink\n* reverse\n* hidden\n\ncharm.foreground(color)\n-----------------------\n\nSet the foreground color with the string `color`, which can be:\n\n* red\n* yellow\n* green\n* blue\n* cyan\n* magenta\n* black\n* white\n\nor `color` can be an integer from 0 to 255, inclusive.\n\ncharm.background(color)\n-----------------------\n\nSet the background color with the string `color`, which can be:\n\n* red\n* yellow\n* green\n* blue\n* cyan\n* magenta\n* black\n* white\n\nor `color` can be an integer from 0 to 255, inclusive.\n\ncharm.cursor(visible)\n---------------------\n\nSet the cursor visibility with a boolean `visible`.\n\ninstall\n=======\n\nWith [npm](http://npmjs.org) do:\n\n npm install charm\n", - "readmeFilename": "README.markdown", - "_id": "charm@0.0.8", - "_from": "charm@0.0.x" -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/.npmignore b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/.npmignore deleted file mode 100644 index 3c3629e..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/.travis.yml b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/.travis.yml deleted file mode 100644 index 2d26206..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - 0.6 diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/LICENSE b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/LICENSE deleted file mode 100644 index 7b75500..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -Copyright 2010 James Halliday (mail@substack.net) - -This project is free software released under the MIT/X11 license: -http://www.opensource.org/licenses/mit-license.php - -Copyright 2010 James Halliday (mail@substack.net) - -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: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -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. diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/README.markdown b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/README.markdown deleted file mode 100644 index 275667b..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/README.markdown +++ /dev/null @@ -1,258 +0,0 @@ -traverse -======== - -Traverse and transform objects by visiting every node on a recursive walk. - -[![build status](https://secure.travis-ci.org/substack/js-traverse.png)](http://travis-ci.org/substack/js-traverse) - -examples -======== - -transform negative numbers in-place ------------------------------------ - -negative.js - -````javascript -var traverse = require('traverse'); -var obj = [ 5, 6, -3, [ 7, 8, -2, 1 ], { f : 10, g : -13 } ]; - -traverse(obj).forEach(function (x) { - if (x < 0) this.update(x + 128); -}); - -console.dir(obj); -```` - -Output: - - [ 5, 6, 125, [ 7, 8, 126, 1 ], { f: 10, g: 115 } ] - -collect leaf nodes ------------------- - -leaves.js - -````javascript -var traverse = require('traverse'); - -var obj = { - a : [1,2,3], - b : 4, - c : [5,6], - d : { e : [7,8], f : 9 }, -}; - -var leaves = traverse(obj).reduce(function (acc, x) { - if (this.isLeaf) acc.push(x); - return acc; -}, []); - -console.dir(leaves); -```` - -Output: - - [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ] - -scrub circular references -------------------------- - -scrub.js: - -````javascript -var traverse = require('traverse'); - -var obj = { a : 1, b : 2, c : [ 3, 4 ] }; -obj.c.push(obj); - -var scrubbed = traverse(obj).map(function (x) { - if (this.circular) this.remove() -}); -console.dir(scrubbed); -```` - -output: - - { a: 1, b: 2, c: [ 3, 4 ] } - -methods -======= - -Each method that takes an `fn` uses the context documented below in the context -section. - -.map(fn) --------- - -Execute `fn` for each node in the object and return a new object with the -results of the walk. To update nodes in the result use `this.update(value)`. - -.forEach(fn) ------------- - -Execute `fn` for each node in the object but unlike `.map()`, when -`this.update()` is called it updates the object in-place. - -.reduce(fn, acc) ----------------- - -For each node in the object, perform a -[left-fold](http://en.wikipedia.org/wiki/Fold_(higher-order_function)) -with the return value of `fn(acc, node)`. - -If `acc` isn't specified, `acc` is set to the root object for the first step -and the root element is skipped. - -.paths() --------- - -Return an `Array` of every possible non-cyclic path in the object. -Paths are `Array`s of string keys. - -.nodes() --------- - -Return an `Array` of every node in the object. - -.clone() --------- - -Create a deep clone of the object. - -.get(path) ----------- - -Get the element at the array `path`. - -.set(path, value) ------------------ - -Set the element at the array `path` to `value`. - -.has(path) ----------- - -Return whether the element at the array `path` exists. - -context -======= - -Each method that takes a callback has a context (its `this` object) with these -attributes: - -this.node ---------- - -The present node on the recursive walk - -this.path ---------- - -An array of string keys from the root to the present node - -this.parent ------------ - -The context of the node's parent. -This is `undefined` for the root node. - -this.key --------- - -The name of the key of the present node in its parent. -This is `undefined` for the root node. - -this.isRoot, this.notRoot -------------------------- - -Whether the present node is the root node - -this.isLeaf, this.notLeaf -------------------------- - -Whether or not the present node is a leaf node (has no children) - -this.level ----------- - -Depth of the node within the traversal - -this.circular -------------- - -If the node equals one of its parents, the `circular` attribute is set to the -context of that parent and the traversal progresses no deeper. - -this.update(value, stopHere=false) ----------------------------------- - -Set a new value for the present node. - -All the elements in `value` will be recursively traversed unless `stopHere` is -true. - -this.remove(stopHere=false) -------------- - -Remove the current element from the output. If the node is in an Array it will -be spliced off. Otherwise it will be deleted from its parent. - -this.delete(stopHere=false) -------------- - -Delete the current element from its parent in the output. Calls `delete` even on -Arrays. - -this.before(fn) ---------------- - -Call this function before any of the children are traversed. - -You can assign into `this.keys` here to traverse in a custom order. - -this.after(fn) --------------- - -Call this function after any of the children are traversed. - -this.pre(fn) ------------- - -Call this function before each of the children are traversed. - -this.post(fn) -------------- - -Call this function after each of the children are traversed. - - -install -======= - -Using [npm](http://npmjs.org) do: - - $ npm install traverse - -test -==== - -Using [expresso](http://github.com/visionmedia/expresso) do: - - $ expresso - - 100% wahoo, your stuff is not broken! - -in the browser -============== - -Use [browserify](https://github.com/substack/node-browserify) to run traverse in -the browser. - -traverse has been tested and works with: - -* Internet Explorer 5.5, 6.0, 7.0, 8.0, 9.0 -* Firefox 3.5 -* Chrome 6.0 -* Opera 10.6 -* Safari 5.0 diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/examples/json.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/examples/json.js deleted file mode 100755 index 50d612e..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/examples/json.js +++ /dev/null @@ -1,16 +0,0 @@ -var traverse = require('traverse'); - -var id = 54; -var callbacks = {}; -var obj = { moo : function () {}, foo : [2,3,4, function () {}] }; - -var scrubbed = traverse(obj).map(function (x) { - if (typeof x === 'function') { - callbacks[id] = { id : id, f : x, path : this.path }; - this.update('[Function]'); - id++; - } -}); - -console.dir(scrubbed); -console.dir(callbacks); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/examples/leaves.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/examples/leaves.js deleted file mode 100755 index c1b310b..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/examples/leaves.js +++ /dev/null @@ -1,15 +0,0 @@ -var traverse = require('traverse'); - -var obj = { - a : [1,2,3], - b : 4, - c : [5,6], - d : { e : [7,8], f : 9 }, -}; - -var leaves = traverse(obj).reduce(function (acc, x) { - if (this.isLeaf) acc.push(x); - return acc; -}, []); - -console.dir(leaves); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/examples/negative.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/examples/negative.js deleted file mode 100755 index 78608a0..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/examples/negative.js +++ /dev/null @@ -1,8 +0,0 @@ -var traverse = require('traverse'); -var obj = [ 5, 6, -3, [ 7, 8, -2, 1 ], { f : 10, g : -13 } ]; - -traverse(obj).forEach(function (x) { - if (x < 0) this.update(x + 128); -}); - -console.dir(obj); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/examples/scrub.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/examples/scrub.js deleted file mode 100755 index 5d15b91..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/examples/scrub.js +++ /dev/null @@ -1,10 +0,0 @@ -// scrub out circular references -var traverse = require('traverse'); - -var obj = { a : 1, b : 2, c : [ 3, 4 ] }; -obj.c.push(obj); - -var scrubbed = traverse(obj).map(function (x) { - if (this.circular) this.remove() -}); -console.dir(scrubbed); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/examples/stringify.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/examples/stringify.js deleted file mode 100755 index 167b68b..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/examples/stringify.js +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env node -var traverse = require('traverse'); - -var obj = [ 'five', 6, -3, [ 7, 8, -2, 1 ], { f : 10, g : -13 } ]; - -var s = ''; -traverse(obj).forEach(function to_s (node) { - if (Array.isArray(node)) { - this.before(function () { s += '[' }); - this.post(function (child) { - if (!child.isLast) s += ','; - }); - this.after(function () { s += ']' }); - } - else if (typeof node == 'object') { - this.before(function () { s += '{' }); - this.pre(function (x, key) { - to_s(key); - s += ':'; - }); - this.post(function (child) { - if (!child.isLast) s += ','; - }); - this.after(function () { s += '}' }); - } - else if (typeof node == 'string') { - s += '"' + node.toString().replace(/"/g, '\\"') + '"'; - } - else if (typeof node == 'function') { - s += 'null'; - } - else { - s += node.toString(); - } -}); - -console.log('JSON.stringify: ' + JSON.stringify(obj)); -console.log('this stringify: ' + s); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/fail.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/fail.js deleted file mode 100644 index 3d75f8d..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/fail.js +++ /dev/null @@ -1,9 +0,0 @@ -tr = require("traverse") -obj = {"a": "[false]", "b": "[]", c: "[\"a string\"]"} -o = JSON.parse(JSON.stringify(obj)) -tr(o).forEach(function(e){ - if (this.isLeaf) { - //if (e === "[false]"){ this.update(false) } - if (e === "[]") { this.update([]); } - } -}) diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/index.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/index.js deleted file mode 100644 index d5de238..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/index.js +++ /dev/null @@ -1,310 +0,0 @@ -var traverse = module.exports = function (obj) { - return new Traverse(obj); -}; - -function Traverse (obj) { - this.value = obj; -} - -Traverse.prototype.get = function (ps) { - var node = this.value; - for (var i = 0; i < ps.length; i ++) { - var key = ps[i]; - if (!Object.hasOwnProperty.call(node, key)) { - node = undefined; - break; - } - node = node[key]; - } - return node; -}; - -Traverse.prototype.has = function (ps) { - var node = this.value; - for (var i = 0; i < ps.length; i ++) { - var key = ps[i]; - if (!Object.hasOwnProperty.call(node, key)) { - return false; - } - node = node[key]; - } - return true; -}; - -Traverse.prototype.set = function (ps, value) { - var node = this.value; - for (var i = 0; i < ps.length - 1; i ++) { - var key = ps[i]; - if (!Object.hasOwnProperty.call(node, key)) node[key] = {}; - node = node[key]; - } - node[ps[i]] = value; - return value; -}; - -Traverse.prototype.map = function (cb) { - return walk(this.value, cb, true); -}; - -Traverse.prototype.forEach = function (cb) { - this.value = walk(this.value, cb, false); - return this.value; -}; - -Traverse.prototype.reduce = function (cb, init) { - var skip = arguments.length === 1; - var acc = skip ? this.value : init; - this.forEach(function (x) { - if (!this.isRoot || !skip) { - acc = cb.call(this, acc, x); - } - }); - return acc; -}; - -Traverse.prototype.paths = function () { - var acc = []; - this.forEach(function (x) { - acc.push(this.path); - }); - return acc; -}; - -Traverse.prototype.nodes = function () { - var acc = []; - this.forEach(function (x) { - acc.push(this.node); - }); - return acc; -}; - -Traverse.prototype.clone = function () { - var parents = [], nodes = []; - - return (function clone (src) { - for (var i = 0; i < parents.length; i++) { - if (parents[i] === src) { - return nodes[i]; - } - } - - if (typeof src === 'object' && src !== null) { - var dst = copy(src); - - parents.push(src); - nodes.push(dst); - - forEach(objectKeys(src), function (key) { - dst[key] = clone(src[key]); - }); - - parents.pop(); - nodes.pop(); - return dst; - } - else { - return src; - } - })(this.value); -}; - -function walk (root, cb, immutable) { - var path = []; - var parents = []; - var alive = true; - - return (function walker (node_) { - var node = immutable ? copy(node_) : node_; - var modifiers = {}; - - var keepGoing = true; - - var state = { - node : node, - node_ : node_, - path : [].concat(path), - parent : parents[parents.length - 1], - parents : parents, - key : path.slice(-1)[0], - isRoot : path.length === 0, - level : path.length, - circular : null, - update : function (x, stopHere) { - if (!state.isRoot) { - state.parent.node[state.key] = x; - } - state.node = x; - if (stopHere) keepGoing = false; - }, - 'delete' : function (stopHere) { - delete state.parent.node[state.key]; - if (stopHere) keepGoing = false; - }, - remove : function (stopHere) { - if (isArray(state.parent.node)) { - state.parent.node.splice(state.key, 1); - } - else { - delete state.parent.node[state.key]; - } - if (stopHere) keepGoing = false; - }, - keys : null, - before : function (f) { modifiers.before = f }, - after : function (f) { modifiers.after = f }, - pre : function (f) { modifiers.pre = f }, - post : function (f) { modifiers.post = f }, - stop : function () { alive = false }, - block : function () { keepGoing = false } - }; - - if (!alive) return state; - - function updateState() { - if (typeof state.node === 'object' && state.node !== null) { - if (!state.keys || state.node_ !== state.node) { - state.keys = objectKeys(state.node) - } - - state.isLeaf = state.keys.length == 0; - - for (var i = 0; i < parents.length; i++) { - if (parents[i].node_ === node_) { - state.circular = parents[i]; - break; - } - } - } - else { - state.isLeaf = true; - state.keys = null; - } - - state.notLeaf = !state.isLeaf; - state.notRoot = !state.isRoot; - } - - updateState(); - - // use return values to update if defined - var ret = cb.call(state, state.node); - if (ret !== undefined && state.update) state.update(ret); - - if (modifiers.before) modifiers.before.call(state, state.node); - - if (!keepGoing) return state; - - if (typeof state.node == 'object' - && state.node !== null && !state.circular) { - parents.push(state); - - updateState(); - - forEach(state.keys, function (key, i) { - path.push(key); - - if (modifiers.pre) modifiers.pre.call(state, state.node[key], key); - - var child = walker(state.node[key]); - if (immutable && Object.hasOwnProperty.call(state.node, key)) { - state.node[key] = child.node; - } - - child.isLast = i == state.keys.length - 1; - child.isFirst = i == 0; - - if (modifiers.post) modifiers.post.call(state, child); - - path.pop(); - }); - parents.pop(); - } - - if (modifiers.after) modifiers.after.call(state, state.node); - - return state; - })(root).node; -} - -function copy (src) { - if (typeof src === 'object' && src !== null) { - var dst; - - if (isArray(src)) { - dst = []; - } - else if (isDate(src)) { - dst = new Date(src); - } - else if (isRegExp(src)) { - dst = new RegExp(src); - } - else if (isError(src)) { - dst = { message: src.message }; - } - else if (isBoolean(src)) { - dst = new Boolean(src); - } - else if (isNumber(src)) { - dst = new Number(src); - } - else if (isString(src)) { - dst = new String(src); - } - else if (Object.create && Object.getPrototypeOf) { - dst = Object.create(Object.getPrototypeOf(src)); - } - else if (src.constructor === Object) { - dst = {}; - } - else { - var proto = - (src.constructor && src.constructor.prototype) - || src.__proto__ - || {} - ; - var T = function () {}; - T.prototype = proto; - dst = new T; - } - - forEach(objectKeys(src), function (key) { - dst[key] = src[key]; - }); - return dst; - } - else return src; -} - -var objectKeys = Object.keys || function keys (obj) { - var res = []; - for (var key in obj) res.push(key) - return res; -}; - -function toS (obj) { return Object.prototype.toString.call(obj) } -function isDate (obj) { return toS(obj) === '[object Date]' } -function isRegExp (obj) { return toS(obj) === '[object RegExp]' } -function isError (obj) { return toS(obj) === '[object Error]' } -function isBoolean (obj) { return toS(obj) === '[object Boolean]' } -function isNumber (obj) { return toS(obj) === '[object Number]' } -function isString (obj) { return toS(obj) === '[object String]' } - -var isArray = Array.isArray || function isArray (xs) { - return Object.prototype.toString.call(xs) === '[object Array]'; -}; - -var forEach = function (xs, fn) { - if (xs.forEach) return xs.forEach(fn) - else for (var i = 0; i < xs.length; i++) { - fn(xs[i], i, xs); - } -}; - -forEach(objectKeys(Traverse.prototype), function (key) { - traverse[key] = function (obj) { - var args = [].slice.call(arguments, 1); - var t = new Traverse(obj); - return t[key].apply(t, args); - }; -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/package.json b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/package.json deleted file mode 100644 index def7eb2..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "traverse", - "version": "0.6.3", - "description": "traverse and transform objects by visiting every node on a recursive walk", - "main": "index.js", - "bin": {}, - "directories": { - "example": "example", - "test": "test" - }, - "dependencies": {}, - "devDependencies": { - "tap": "~0.2.5" - }, - "scripts": { - "test": "tap test/*.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/substack/js-traverse.git" - }, - "homepage": "https://github.com/substack/js-traverse", - "keywords": [ - "traverse", - "walk", - "recursive", - "map", - "forEach", - "deep", - "clone" - ], - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "license": "MIT", - "engine": { - "node": ">=0.6" - }, - "readme": "traverse\n========\n\nTraverse and transform objects by visiting every node on a recursive walk.\n\n[![build status](https://secure.travis-ci.org/substack/js-traverse.png)](http://travis-ci.org/substack/js-traverse)\n\nexamples\n========\n\ntransform negative numbers in-place\n-----------------------------------\n\nnegative.js\n\n````javascript\nvar traverse = require('traverse');\nvar obj = [ 5, 6, -3, [ 7, 8, -2, 1 ], { f : 10, g : -13 } ];\n\ntraverse(obj).forEach(function (x) {\n if (x < 0) this.update(x + 128);\n});\n\nconsole.dir(obj);\n````\n\nOutput:\n\n [ 5, 6, 125, [ 7, 8, 126, 1 ], { f: 10, g: 115 } ]\n\ncollect leaf nodes\n------------------\n\nleaves.js\n\n````javascript\nvar traverse = require('traverse');\n\nvar obj = {\n a : [1,2,3],\n b : 4,\n c : [5,6],\n d : { e : [7,8], f : 9 },\n};\n\nvar leaves = traverse(obj).reduce(function (acc, x) {\n if (this.isLeaf) acc.push(x);\n return acc;\n}, []);\n\nconsole.dir(leaves);\n````\n\nOutput:\n\n [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]\n\nscrub circular references\n-------------------------\n\nscrub.js:\n\n````javascript\nvar traverse = require('traverse');\n\nvar obj = { a : 1, b : 2, c : [ 3, 4 ] };\nobj.c.push(obj);\n\nvar scrubbed = traverse(obj).map(function (x) {\n if (this.circular) this.remove()\n});\nconsole.dir(scrubbed);\n````\n\noutput:\n\n { a: 1, b: 2, c: [ 3, 4 ] }\n\nmethods\n=======\n\nEach method that takes an `fn` uses the context documented below in the context\nsection.\n\n.map(fn)\n--------\n\nExecute `fn` for each node in the object and return a new object with the\nresults of the walk. To update nodes in the result use `this.update(value)`.\n\n.forEach(fn)\n------------\n\nExecute `fn` for each node in the object but unlike `.map()`, when\n`this.update()` is called it updates the object in-place.\n\n.reduce(fn, acc)\n----------------\n\nFor each node in the object, perform a\n[left-fold](http://en.wikipedia.org/wiki/Fold_(higher-order_function))\nwith the return value of `fn(acc, node)`.\n\nIf `acc` isn't specified, `acc` is set to the root object for the first step\nand the root element is skipped.\n\n.paths()\n--------\n\nReturn an `Array` of every possible non-cyclic path in the object.\nPaths are `Array`s of string keys.\n\n.nodes()\n--------\n\nReturn an `Array` of every node in the object.\n\n.clone()\n--------\n\nCreate a deep clone of the object.\n\n.get(path)\n----------\n\nGet the element at the array `path`.\n\n.set(path, value)\n-----------------\n\nSet the element at the array `path` to `value`.\n\n.has(path)\n----------\n\nReturn whether the element at the array `path` exists.\n\ncontext\n=======\n\nEach method that takes a callback has a context (its `this` object) with these\nattributes:\n\nthis.node\n---------\n\nThe present node on the recursive walk\n\nthis.path\n---------\n\nAn array of string keys from the root to the present node\n\nthis.parent\n-----------\n\nThe context of the node's parent.\nThis is `undefined` for the root node.\n\nthis.key\n--------\n\nThe name of the key of the present node in its parent.\nThis is `undefined` for the root node.\n\nthis.isRoot, this.notRoot\n-------------------------\n\nWhether the present node is the root node\n\nthis.isLeaf, this.notLeaf\n-------------------------\n\nWhether or not the present node is a leaf node (has no children)\n\nthis.level\n----------\n\nDepth of the node within the traversal\n\nthis.circular\n-------------\n\nIf the node equals one of its parents, the `circular` attribute is set to the\ncontext of that parent and the traversal progresses no deeper.\n\nthis.update(value, stopHere=false)\n----------------------------------\n\nSet a new value for the present node.\n\nAll the elements in `value` will be recursively traversed unless `stopHere` is\ntrue.\n\nthis.remove(stopHere=false)\n-------------\n\nRemove the current element from the output. If the node is in an Array it will\nbe spliced off. Otherwise it will be deleted from its parent.\n\nthis.delete(stopHere=false)\n-------------\n\nDelete the current element from its parent in the output. Calls `delete` even on\nArrays.\n\nthis.before(fn)\n---------------\n\nCall this function before any of the children are traversed.\n\nYou can assign into `this.keys` here to traverse in a custom order.\n\nthis.after(fn)\n--------------\n\nCall this function after any of the children are traversed.\n\nthis.pre(fn)\n------------\n\nCall this function before each of the children are traversed.\n\nthis.post(fn)\n-------------\n\nCall this function after each of the children are traversed.\n\n\ninstall\n=======\n\nUsing [npm](http://npmjs.org) do:\n\n $ npm install traverse\n\ntest\n====\n\nUsing [expresso](http://github.com/visionmedia/expresso) do:\n\n $ expresso\n \n 100% wahoo, your stuff is not broken!\n\nin the browser\n==============\n\nUse [browserify](https://github.com/substack/node-browserify) to run traverse in\nthe browser.\n\ntraverse has been tested and works with:\n\n* Internet Explorer 5.5, 6.0, 7.0, 8.0, 9.0\n* Firefox 3.5\n* Chrome 6.0\n* Opera 10.6\n* Safari 5.0\n", - "readmeFilename": "README.markdown", - "_id": "traverse@0.6.3", - "_from": "traverse@0.6.x" -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/circular.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/circular.js deleted file mode 100644 index 10e32f0..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/circular.js +++ /dev/null @@ -1,117 +0,0 @@ -var test = require('tap').test; -var traverse = require('../'); -var deepEqual = require('./lib/deep_equal'); -var util = require('util'); - -test('circular', function (t) { - t.plan(1); - - var obj = { x : 3 }; - obj.y = obj; - traverse(obj).forEach(function (x) { - if (this.path.join('') == 'y') { - t.equal( - util.inspect(this.circular.node), - util.inspect(obj) - ); - } - }); -}); - -test('deepCirc', function (t) { - t.plan(2); - var obj = { x : [ 1, 2, 3 ], y : [ 4, 5 ] }; - obj.y[2] = obj; - - var times = 0; - traverse(obj).forEach(function (x) { - if (this.circular) { - t.same(this.circular.path, []); - t.same(this.path, [ 'y', 2 ]); - } - }); -}); - -test('doubleCirc', function (t) { - var obj = { x : [ 1, 2, 3 ], y : [ 4, 5 ] }; - obj.y[2] = obj; - obj.x.push(obj.y); - - var circs = []; - traverse(obj).forEach(function (x) { - if (this.circular) { - circs.push({ circ : this.circular, self : this, node : x }); - } - }); - - t.same(circs[0].self.path, [ 'x', 3, 2 ]); - t.same(circs[0].circ.path, []); - - t.same(circs[1].self.path, [ 'y', 2 ]); - t.same(circs[1].circ.path, []); - - t.same(circs.length, 2); - t.end(); -}); - -test('circDubForEach', function (t) { - var obj = { x : [ 1, 2, 3 ], y : [ 4, 5 ] }; - obj.y[2] = obj; - obj.x.push(obj.y); - - traverse(obj).forEach(function (x) { - if (this.circular) this.update('...'); - }); - - t.same(obj, { x : [ 1, 2, 3, [ 4, 5, '...' ] ], y : [ 4, 5, '...' ] }); - t.end(); -}); - -test('circDubMap', function (t) { - var obj = { x : [ 1, 2, 3 ], y : [ 4, 5 ] }; - obj.y[2] = obj; - obj.x.push(obj.y); - - var c = traverse(obj).map(function (x) { - if (this.circular) { - this.update('...'); - } - }); - - t.same(c, { x : [ 1, 2, 3, [ 4, 5, '...' ] ], y : [ 4, 5, '...' ] }); - t.end(); -}); - -test('circClone', function (t) { - var obj = { x : [ 1, 2, 3 ], y : [ 4, 5 ] }; - obj.y[2] = obj; - obj.x.push(obj.y); - - var clone = traverse.clone(obj); - t.ok(obj !== clone); - - t.ok(clone.y[2] === clone); - t.ok(clone.y[2] !== obj); - t.ok(clone.x[3][2] === clone); - t.ok(clone.x[3][2] !== obj); - t.same(clone.x.slice(0,3), [1,2,3]); - t.same(clone.y.slice(0,2), [4,5]); - t.end(); -}); - -test('circMapScrub', function (t) { - var obj = { a : 1, b : 2 }; - obj.c = obj; - - var scrubbed = traverse(obj).map(function (node) { - if (this.circular) this.remove(); - }); - t.same( - Object.keys(scrubbed).sort(), - [ 'a', 'b' ] - ); - t.ok(deepEqual(scrubbed, { a : 1, b : 2 })); - - t.equal(obj.c, obj); - t.end(); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/date.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/date.js deleted file mode 100644 index 6feb13f..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/date.js +++ /dev/null @@ -1,37 +0,0 @@ -var test = require('tap').test; -var traverse = require('../'); - -test('dateEach', function (t) { - var obj = { x : new Date, y : 10, z : 5 }; - - var counts = {}; - - traverse(obj).forEach(function (node) { - var t = (node instanceof Date && 'Date') || typeof node; - counts[t] = (counts[t] || 0) + 1; - }); - - t.same(counts, { - object : 1, - Date : 1, - number : 2, - }); - t.end(); -}); - -test('dateMap', function (t) { - var obj = { x : new Date, y : 10, z : 5 }; - - var res = traverse(obj).map(function (node) { - if (typeof node === 'number') this.update(node + 100); - }); - - t.ok(obj.x !== res.x); - t.same(res, { - x : obj.x, - y : 110, - z : 105, - }); - t.end(); -}); - diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/equal.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/equal.js deleted file mode 100644 index 169b696..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/equal.js +++ /dev/null @@ -1,240 +0,0 @@ -var test = require('tap').test; -var traverse = require('../'); -var deepEqual = require('./lib/deep_equal'); - -test('deepDates', function (t) { - t.plan(2); - - t.ok( - deepEqual( - { d : new Date, x : [ 1, 2, 3 ] }, - { d : new Date, x : [ 1, 2, 3 ] } - ), - 'dates should be equal' - ); - - var d0 = new Date; - setTimeout(function () { - t.ok( - !deepEqual( - { d : d0, x : [ 1, 2, 3 ], }, - { d : new Date, x : [ 1, 2, 3 ] } - ), - 'microseconds should count in date equality' - ); - }, 5); -}); - -test('deepCircular', function (t) { - var a = [1]; - a.push(a); // a = [ 1, *a ] - - var b = [1]; - b.push(a); // b = [ 1, [ 1, *a ] ] - - t.ok( - !deepEqual(a, b), - 'circular ref mount points count towards equality' - ); - - var c = [1]; - c.push(c); // c = [ 1, *c ] - t.ok( - deepEqual(a, c), - 'circular refs are structurally the same here' - ); - - var d = [1]; - d.push(a); // c = [ 1, [ 1, *d ] ] - t.ok( - deepEqual(b, d), - 'non-root circular ref structural comparison' - ); - - t.end(); -}); - -test('deepInstances', function (t) { - t.ok( - !deepEqual([ new Boolean(false) ], [ false ]), - 'boolean instances are not real booleans' - ); - - t.ok( - !deepEqual([ new String('x') ], [ 'x' ]), - 'string instances are not real strings' - ); - - t.ok( - !deepEqual([ new Number(4) ], [ 4 ]), - 'number instances are not real numbers' - ); - - t.ok( - deepEqual([ new RegExp('x') ], [ /x/ ]), - 'regexp instances are real regexps' - ); - - t.ok( - !deepEqual([ new RegExp(/./) ], [ /../ ]), - 'these regexps aren\'t the same' - ); - - t.ok( - !deepEqual( - [ function (x) { return x * 2 } ], - [ function (x) { return x * 2 } ] - ), - 'functions with the same .toString() aren\'t necessarily the same' - ); - - var f = function (x) { return x * 2 }; - t.ok( - deepEqual([ f ], [ f ]), - 'these functions are actually equal' - ); - - t.end(); -}); - -test('deepEqual', function (t) { - t.ok( - !deepEqual([ 1, 2, 3 ], { 0 : 1, 1 : 2, 2 : 3 }), - 'arrays are not objects' - ); - t.end(); -}); - -test('falsy', function (t) { - t.ok( - !deepEqual([ undefined ], [ null ]), - 'null is not undefined!' - ); - - t.ok( - !deepEqual([ null ], [ undefined ]), - 'undefined is not null!' - ); - - t.ok( - !deepEqual( - { a : 1, b : 2, c : [ 3, undefined, 5 ] }, - { a : 1, b : 2, c : [ 3, null, 5 ] } - ), - 'undefined is not null, however deeply!' - ); - - t.ok( - !deepEqual( - { a : 1, b : 2, c : [ 3, undefined, 5 ] }, - { a : 1, b : 2, c : [ 3, null, 5 ] } - ), - 'null is not undefined, however deeply!' - ); - - t.ok( - !deepEqual( - { a : 1, b : 2, c : [ 3, undefined, 5 ] }, - { a : 1, b : 2, c : [ 3, null, 5 ] } - ), - 'null is not undefined, however deeply!' - ); - - t.end(); -}); - -test('deletedArrayEqual', function (t) { - var xs = [ 1, 2, 3, 4 ]; - delete xs[2]; - - var ys = Object.create(Array.prototype); - ys[0] = 1; - ys[1] = 2; - ys[3] = 4; - - t.ok( - deepEqual(xs, ys), - 'arrays with deleted elements are only equal to' - + ' arrays with similarly deleted elements' - ); - - t.ok( - !deepEqual(xs, [ 1, 2, undefined, 4 ]), - 'deleted array elements cannot be undefined' - ); - - t.ok( - !deepEqual(xs, [ 1, 2, null, 4 ]), - 'deleted array elements cannot be null' - ); - - t.end(); -}); - -test('deletedObjectEqual', function (t) { - var obj = { a : 1, b : 2, c : 3 }; - delete obj.c; - - t.ok( - deepEqual(obj, { a : 1, b : 2 }), - 'deleted object elements should not show up' - ); - - t.ok( - !deepEqual(obj, { a : 1, b : 2, c : undefined }), - 'deleted object elements are not undefined' - ); - - t.ok( - !deepEqual(obj, { a : 1, b : 2, c : null }), - 'deleted object elements are not null' - ); - - t.end(); -}); - -test('emptyKeyEqual', function (t) { - t.ok(!deepEqual( - { a : 1 }, { a : 1, '' : 55 } - )); - - t.end(); -}); - -test('deepArguments', function (t) { - t.ok( - !deepEqual( - [ 4, 5, 6 ], - (function () { return arguments })(4, 5, 6) - ), - 'arguments are not arrays' - ); - - t.ok( - deepEqual( - (function () { return arguments })(4, 5, 6), - (function () { return arguments })(4, 5, 6) - ), - 'arguments should equal' - ); - - t.end(); -}); - -test('deepUn', function (t) { - t.ok(!deepEqual({ a : 1, b : 2 }, undefined)); - t.ok(!deepEqual({ a : 1, b : 2 }, {})); - t.ok(!deepEqual(undefined, { a : 1, b : 2 })); - t.ok(!deepEqual({}, { a : 1, b : 2 })); - t.ok(deepEqual(undefined, undefined)); - t.ok(deepEqual(null, null)); - t.ok(!deepEqual(undefined, null)); - - t.end(); -}); - -test('deepLevels', function (t) { - var xs = [ 1, 2, [ 3, 4, [ 5, 6 ] ] ]; - t.ok(!deepEqual(xs, [])); - t.end(); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/error.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/error.js deleted file mode 100644 index 6d3b44a..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/error.js +++ /dev/null @@ -1,11 +0,0 @@ -var test = require('tap').test; -var traverse = require('../'); - -test('traverse an Error', function (t) { - var obj = new Error("test"); - var results = traverse(obj).map(function (node) {}); - t.same(results, { message: 'test' }); - - t.end(); -}); - diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/has.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/has.js deleted file mode 100644 index cc1a2e7..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/has.js +++ /dev/null @@ -1,15 +0,0 @@ -var test = require('tap').test; -var traverse = require('../'); - -test('has', function (t) { - var obj = { a : 2, b : [ 4, 5, { c : 6 } ] }; - - t.equal(traverse(obj).has([ 'b', 2, 'c' ]), true) - t.equal(traverse(obj).has([ 'b', 2, 'c', 0 ]), false) - t.equal(traverse(obj).has([ 'b', 2, 'd' ]), false) - t.equal(traverse(obj).has([]), true) - t.equal(traverse(obj).has([ 'a' ]), true) - t.equal(traverse(obj).has([ 'a', 2 ]), false) - - t.end(); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/instance.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/instance.js deleted file mode 100644 index 165bc71..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/instance.js +++ /dev/null @@ -1,17 +0,0 @@ -var test = require('tap').test; -var traverse = require('../'); -var EventEmitter = require('events').EventEmitter; - -test('check instanceof on node elems', function (t) { - var counts = { emitter : 0 }; - - traverse([ new EventEmitter, 3, 4, { ev : new EventEmitter }]) - .forEach(function (node) { - if (node instanceof EventEmitter) counts.emitter ++; - }) - ; - - t.equal(counts.emitter, 2); - - t.end(); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/interface.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/interface.js deleted file mode 100644 index 7a7fda2..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/interface.js +++ /dev/null @@ -1,43 +0,0 @@ -var test = require('tap').test; -var traverse = require('../'); - -test('interface map', function (t) { - var obj = { a : [ 5,6,7 ], b : { c : [8] } }; - - t.same( - traverse.paths(obj) - .sort() - .map(function (path) { return path.join('/') }) - .slice(1) - .join(' ') - , - 'a a/0 a/1 a/2 b b/c b/c/0' - ); - - t.same( - traverse.nodes(obj), - [ - { a: [ 5, 6, 7 ], b: { c: [ 8 ] } }, - [ 5, 6, 7 ], 5, 6, 7, - { c: [ 8 ] }, [ 8 ], 8 - ] - ); - - t.same( - traverse.map(obj, function (node) { - if (typeof node == 'number') { - return node + 1000; - } - else if (Array.isArray(node)) { - return node.join(' '); - } - }), - { a: '5 6 7', b: { c: '8' } } - ); - - var nodes = 0; - traverse.forEach(obj, function (node) { nodes ++ }); - t.same(nodes, 8); - - t.end(); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/json.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/json.js deleted file mode 100644 index 2ab3ac4..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/json.js +++ /dev/null @@ -1,49 +0,0 @@ -var test = require('tap').test; -var traverse = require('../'); - -test('json test', function (t) { - var id = 54; - var callbacks = {}; - var obj = { moo : function () {}, foo : [2,3,4, function () {}] }; - - var scrubbed = traverse(obj).map(function (x) { - if (typeof x === 'function') { - callbacks[id] = { id : id, f : x, path : this.path }; - this.update('[Function]'); - id++; - } - }); - - t.equal( - scrubbed.moo, '[Function]', - 'obj.moo replaced with "[Function]"' - ); - - t.equal( - scrubbed.foo[3], '[Function]', - 'obj.foo[3] replaced with "[Function]"' - ); - - t.same(scrubbed, { - moo : '[Function]', - foo : [ 2, 3, 4, "[Function]" ] - }, 'Full JSON string matches'); - - t.same( - typeof obj.moo, 'function', - 'Original obj.moo still a function' - ); - - t.same( - typeof obj.foo[3], 'function', - 'Original obj.foo[3] still a function' - ); - - t.same(callbacks, { - 54: { id: 54, f : obj.moo, path: [ 'moo' ] }, - 55: { id: 55, f : obj.foo[3], path: [ 'foo', '3' ] }, - }, 'Check the generated callbacks list'); - - t.end(); -}); - diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/keys.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/keys.js deleted file mode 100644 index b36bcbb..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/keys.js +++ /dev/null @@ -1,31 +0,0 @@ -var test = require('tap').test; -var traverse = require('../'); - -test('sort test', function (t) { - var acc = []; - traverse({ - a: 30, - b: 22, - id: 9 - }).forEach(function (node) { - if ((! Array.isArray(node)) && typeof node === 'object') { - this.before(function(node) { - this.keys = Object.keys(node); - this.keys.sort(function(a, b) { - a = [a === "id" ? 0 : 1, a]; - b = [b === "id" ? 0 : 1, b]; - return a < b ? -1 : a > b ? 1 : 0; - }); - }); - } - if (this.isLeaf) acc.push(node); - }); - - t.equal( - acc.join(' '), - '9 30 22', - 'Traversal in a custom order' - ); - - t.end(); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/leaves.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/leaves.js deleted file mode 100644 index 71e4529..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/leaves.js +++ /dev/null @@ -1,22 +0,0 @@ -var test = require('tap').test; -var traverse = require('../'); - -test('leaves test', function (t) { - var acc = []; - traverse({ - a : [1,2,3], - b : 4, - c : [5,6], - d : { e : [7,8], f : 9 } - }).forEach(function (x) { - if (this.isLeaf) acc.push(x); - }); - - t.equal( - acc.join(' '), - '1 2 3 4 5 6 7 8 9', - 'Traversal in the right(?) order' - ); - - t.end(); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/lib/deep_equal.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/lib/deep_equal.js deleted file mode 100644 index c75b04c..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/lib/deep_equal.js +++ /dev/null @@ -1,96 +0,0 @@ -var traverse = require('../../'); - -module.exports = function (a, b) { - if (arguments.length !== 2) { - throw new Error( - 'deepEqual requires exactly two objects to compare against' - ); - } - - var equal = true; - var node = b; - - traverse(a).forEach(function (y) { - var notEqual = (function () { - equal = false; - //this.stop(); - return undefined; - }).bind(this); - - //if (node === undefined || node === null) return notEqual(); - - if (!this.isRoot) { - /* - if (!Object.hasOwnProperty.call(node, this.key)) { - return notEqual(); - } - */ - if (typeof node !== 'object') return notEqual(); - node = node[this.key]; - } - - var x = node; - - this.post(function () { - node = x; - }); - - var toS = function (o) { - return Object.prototype.toString.call(o); - }; - - if (this.circular) { - if (traverse(b).get(this.circular.path) !== x) notEqual(); - } - else if (typeof x !== typeof y) { - notEqual(); - } - else if (x === null || y === null || x === undefined || y === undefined) { - if (x !== y) notEqual(); - } - else if (x.__proto__ !== y.__proto__) { - notEqual(); - } - else if (x === y) { - // nop - } - else if (typeof x === 'function') { - if (x instanceof RegExp) { - // both regexps on account of the __proto__ check - if (x.toString() != y.toString()) notEqual(); - } - else if (x !== y) notEqual(); - } - else if (typeof x === 'object') { - if (toS(y) === '[object Arguments]' - || toS(x) === '[object Arguments]') { - if (toS(x) !== toS(y)) { - notEqual(); - } - } - else if (toS(y) === '[object RegExp]' - || toS(x) === '[object RegExp]') { - if (!x || !y || x.toString() !== y.toString()) notEqual(); - } - else if (x instanceof Date || y instanceof Date) { - if (!(x instanceof Date) || !(y instanceof Date) - || x.getTime() !== y.getTime()) { - notEqual(); - } - } - else { - var kx = Object.keys(x); - var ky = Object.keys(y); - if (kx.length !== ky.length) return notEqual(); - for (var i = 0; i < kx.length; i++) { - var k = kx[i]; - if (!Object.hasOwnProperty.call(y, k)) { - notEqual(); - } - } - } - } - }); - - return equal; -}; diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/mutability.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/mutability.js deleted file mode 100644 index 30761a7..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/mutability.js +++ /dev/null @@ -1,300 +0,0 @@ -var test = require('tap').test; -var traverse = require('../'); -var deepEqual = require('./lib/deep_equal'); - -test('mutate', function (t) { - var obj = { a : 1, b : 2, c : [ 3, 4 ] }; - var res = traverse(obj).forEach(function (x) { - if (typeof x === 'number' && x % 2 === 0) { - this.update(x * 10); - } - }); - t.same(obj, res); - t.same(obj, { a : 1, b : 20, c : [ 3, 40 ] }); - t.end(); -}); - -test('mutateT', function (t) { - var obj = { a : 1, b : 2, c : [ 3, 4 ] }; - var res = traverse.forEach(obj, function (x) { - if (typeof x === 'number' && x % 2 === 0) { - this.update(x * 10); - } - }); - t.same(obj, res); - t.same(obj, { a : 1, b : 20, c : [ 3, 40 ] }); - t.end(); -}); - -test('map', function (t) { - var obj = { a : 1, b : 2, c : [ 3, 4 ] }; - var res = traverse(obj).map(function (x) { - if (typeof x === 'number' && x % 2 === 0) { - this.update(x * 10); - } - }); - t.same(obj, { a : 1, b : 2, c : [ 3, 4 ] }); - t.same(res, { a : 1, b : 20, c : [ 3, 40 ] }); - t.end(); -}); - -test('mapT', function (t) { - var obj = { a : 1, b : 2, c : [ 3, 4 ] }; - var res = traverse.map(obj, function (x) { - if (typeof x === 'number' && x % 2 === 0) { - this.update(x * 10); - } - }); - t.same(obj, { a : 1, b : 2, c : [ 3, 4 ] }); - t.same(res, { a : 1, b : 20, c : [ 3, 40 ] }); - t.end(); -}); - -test('clone', function (t) { - var obj = { a : 1, b : 2, c : [ 3, 4 ] }; - var res = traverse(obj).clone(); - t.same(obj, res); - t.ok(obj !== res); - obj.a ++; - t.same(res.a, 1); - obj.c.push(5); - t.same(res.c, [ 3, 4 ]); - t.end(); -}); - -test('cloneT', function (t) { - var obj = { a : 1, b : 2, c : [ 3, 4 ] }; - var res = traverse.clone(obj); - t.same(obj, res); - t.ok(obj !== res); - obj.a ++; - t.same(res.a, 1); - obj.c.push(5); - t.same(res.c, [ 3, 4 ]); - t.end(); -}); - -test('reduce', function (t) { - var obj = { a : 1, b : 2, c : [ 3, 4 ] }; - var res = traverse(obj).reduce(function (acc, x) { - if (this.isLeaf) acc.push(x); - return acc; - }, []); - t.same(obj, { a : 1, b : 2, c : [ 3, 4 ] }); - t.same(res, [ 1, 2, 3, 4 ]); - t.end(); -}); - -test('reduceInit', function (t) { - var obj = { a : 1, b : 2, c : [ 3, 4 ] }; - var res = traverse(obj).reduce(function (acc, x) { - if (this.isRoot) assert.fail('got root'); - return acc; - }); - t.same(obj, { a : 1, b : 2, c : [ 3, 4 ] }); - t.same(res, obj); - t.end(); -}); - -test('remove', function (t) { - var obj = { a : 1, b : 2, c : [ 3, 4 ] }; - traverse(obj).forEach(function (x) { - if (this.isLeaf && x % 2 == 0) this.remove(); - }); - - t.same(obj, { a : 1, c : [ 3 ] }); - t.end(); -}); - -exports.removeNoStop = function() { - var obj = { a : 1, b : 2, c : { d: 3, e: 4 }, f: 5 }; - - var keys = []; - traverse(obj).forEach(function (x) { - keys.push(this.key) - if (this.key == 'c') this.remove(); - }); - - t.same(keys, [undefined, 'a', 'b', 'c', 'd', 'e', 'f']) - t.end(); -} - -exports.removeStop = function() { - var obj = { a : 1, b : 2, c : { d: 3, e: 4 }, f: 5 }; - - var keys = []; - traverse(obj).forEach(function (x) { - keys.push(this.key) - if (this.key == 'c') this.remove(true); - }); - - t.same(keys, [undefined, 'a', 'b', 'c', 'f']) - t.end(); -} - -test('removeMap', function (t) { - var obj = { a : 1, b : 2, c : [ 3, 4 ] }; - var res = traverse(obj).map(function (x) { - if (this.isLeaf && x % 2 == 0) this.remove(); - }); - - t.same(obj, { a : 1, b : 2, c : [ 3, 4 ] }); - t.same(res, { a : 1, c : [ 3 ] }); - t.end(); -}); - -test('delete', function (t) { - var obj = { a : 1, b : 2, c : [ 3, 4 ] }; - traverse(obj).forEach(function (x) { - if (this.isLeaf && x % 2 == 0) this.delete(); - }); - - t.ok(!deepEqual( - obj, { a : 1, c : [ 3, undefined ] } - )); - - t.ok(deepEqual( - obj, { a : 1, c : [ 3 ] } - )); - - t.ok(!deepEqual( - obj, { a : 1, c : [ 3, null ] } - )); - t.end(); -}); - -test('deleteNoStop', function (t) { - var obj = { a : 1, b : 2, c : { d: 3, e: 4 } }; - - var keys = []; - traverse(obj).forEach(function (x) { - keys.push(this.key) - if (this.key == 'c') this.delete(); - }); - - t.same(keys, [undefined, 'a', 'b', 'c', 'd', 'e']) - t.end(); -}); - -test('deleteStop', function (t) { - var obj = { a : 1, b : 2, c : { d: 3, e: 4 } }; - - var keys = []; - traverse(obj).forEach(function (x) { - keys.push(this.key) - if (this.key == 'c') this.delete(true); - }); - - t.same(keys, [undefined, 'a', 'b', 'c']) - t.end(); -}); - -test('deleteRedux', function (t) { - var obj = { a : 1, b : 2, c : [ 3, 4, 5 ] }; - traverse(obj).forEach(function (x) { - if (this.isLeaf && x % 2 == 0) this.delete(); - }); - - t.ok(!deepEqual( - obj, { a : 1, c : [ 3, undefined, 5 ] } - )); - - t.ok(deepEqual( - obj, { a : 1, c : [ 3 ,, 5 ] } - )); - - t.ok(!deepEqual( - obj, { a : 1, c : [ 3, null, 5 ] } - )); - - t.ok(!deepEqual( - obj, { a : 1, c : [ 3, 5 ] } - )); - - t.end(); -}); - -test('deleteMap', function (t) { - var obj = { a : 1, b : 2, c : [ 3, 4 ] }; - var res = traverse(obj).map(function (x) { - if (this.isLeaf && x % 2 == 0) this.delete(); - }); - - t.ok(deepEqual( - obj, - { a : 1, b : 2, c : [ 3, 4 ] } - )); - - var xs = [ 3, 4 ]; - delete xs[1]; - - t.ok(deepEqual( - res, { a : 1, c : xs } - )); - - t.ok(deepEqual( - res, { a : 1, c : [ 3, ] } - )); - - t.ok(deepEqual( - res, { a : 1, c : [ 3 ] } - )); - - t.end(); -}); - -test('deleteMapRedux', function (t) { - var obj = { a : 1, b : 2, c : [ 3, 4, 5 ] }; - var res = traverse(obj).map(function (x) { - if (this.isLeaf && x % 2 == 0) this.delete(); - }); - - t.ok(deepEqual( - obj, - { a : 1, b : 2, c : [ 3, 4, 5 ] } - )); - - var xs = [ 3, 4, 5 ]; - delete xs[1]; - - t.ok(deepEqual( - res, { a : 1, c : xs } - )); - - t.ok(!deepEqual( - res, { a : 1, c : [ 3, 5 ] } - )); - - t.ok(deepEqual( - res, { a : 1, c : [ 3 ,, 5 ] } - )); - - t.end(); -}); - -test('objectToString', function (t) { - var obj = { a : 1, b : 2, c : [ 3, 4 ] }; - var res = traverse(obj).forEach(function (x) { - if (typeof x === 'object' && !this.isRoot) { - this.update(JSON.stringify(x)); - } - }); - t.same(obj, res); - t.same(obj, { a : 1, b : 2, c : "[3,4]" }); - t.end(); -}); - -test('stringToObject', function (t) { - var obj = { a : 1, b : 2, c : "[3,4]" }; - var res = traverse(obj).forEach(function (x) { - if (typeof x === 'string') { - this.update(JSON.parse(x)); - } - else if (typeof x === 'number' && x % 2 === 0) { - this.update(x * 10); - } - }); - t.deepEqual(obj, res); - t.deepEqual(obj, { a : 1, b : 20, c : [ 3, 40 ] }); - t.end(); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/negative.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/negative.js deleted file mode 100644 index fdd1cc5..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/negative.js +++ /dev/null @@ -1,21 +0,0 @@ -var traverse = require('../'); -var test = require('tap').test; - -test('negative update test', function (t) { - var obj = [ 5, 6, -3, [ 7, 8, -2, 1 ], { f : 10, g : -13 } ]; - var fixed = traverse.map(obj, function (x) { - if (x < 0) this.update(x + 128); - }); - - t.same(fixed, - [ 5, 6, 125, [ 7, 8, 126, 1 ], { f: 10, g: 115 } ], - 'Negative values += 128' - ); - - t.same(obj, - [ 5, 6, -3, [ 7, 8, -2, 1 ], { f: 10, g: -13 } ], - 'Original references not modified' - ); - - t.end(); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/obj.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/obj.js deleted file mode 100644 index 7f0cb70..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/obj.js +++ /dev/null @@ -1,11 +0,0 @@ -var test = require('tap').test; -var traverse = require('../'); - -test('traverse an object with nested functions', function (t) { - t.plan(1); - - function Cons (x) { - t.equal(x, 10) - }; - traverse(new Cons(10)); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/siblings.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/siblings.js deleted file mode 100644 index cdfbd7d..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/siblings.js +++ /dev/null @@ -1,37 +0,0 @@ -var test = require('tap').test; -var traverse = require('../'); - -test('siblings', function (t) { - var obj = { a : 1, b : 2, c : [ 4, 5, 6 ] }; - - var res = traverse(obj).reduce(function (acc, x) { - var p = '/' + this.path.join('/'); - if (this.parent) { - acc[p] = { - siblings : this.parent.keys, - key : this.key, - index : this.parent.keys.indexOf(this.key) - }; - } - else { - acc[p] = { - siblings : [], - key : this.key, - index : -1 - } - } - return acc; - }, {}); - - t.same(res, { - '/' : { siblings : [], key : undefined, index : -1 }, - '/a' : { siblings : [ 'a', 'b', 'c' ], key : 'a', index : 0 }, - '/b' : { siblings : [ 'a', 'b', 'c' ], key : 'b', index : 1 }, - '/c' : { siblings : [ 'a', 'b', 'c' ], key : 'c', index : 2 }, - '/c/0' : { siblings : [ '0', '1', '2' ], key : '0', index : 0 }, - '/c/1' : { siblings : [ '0', '1', '2' ], key : '1', index : 1 }, - '/c/2' : { siblings : [ '0', '1', '2' ], key : '2', index : 2 } - }); - - t.end(); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/stop.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/stop.js deleted file mode 100644 index ecf38e4..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/stop.js +++ /dev/null @@ -1,44 +0,0 @@ -var test = require('tap').test; -var traverse = require('../'); - -test('stop', function (t) { - var visits = 0; - traverse('abcdefghij'.split('')).forEach(function (node) { - if (typeof node === 'string') { - visits ++; - if (node === 'e') this.stop() - } - }); - - t.equal(visits, 5); - t.end(); -}); - -test('stopMap', function (t) { - var s = traverse('abcdefghij'.split('')).map(function (node) { - if (typeof node === 'string') { - if (node === 'e') this.stop() - return node.toUpperCase(); - } - }).join(''); - - t.equal(s, 'ABCDEfghij'); - t.end(); -}); - -test('stopReduce', function (t) { - var obj = { - a : [ 4, 5 ], - b : [ 6, [ 7, 8, 9 ] ] - }; - var xs = traverse(obj).reduce(function (acc, node) { - if (this.isLeaf) { - if (node === 7) this.stop(); - else acc.push(node) - } - return acc; - }, []); - - t.same(xs, [ 4, 5, 6 ]); - t.end(); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/stringify.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/stringify.js deleted file mode 100644 index 862598d..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/stringify.js +++ /dev/null @@ -1,36 +0,0 @@ -var test = require('tap').test; -var traverse = require('../'); - -test('stringify', function (t) { - var obj = [ 5, 6, -3, [ 7, 8, -2, 1 ], { f : 10, g : -13 } ]; - - var s = ''; - traverse(obj).forEach(function (node) { - if (Array.isArray(node)) { - this.before(function () { s += '[' }); - this.post(function (child) { - if (!child.isLast) s += ','; - }); - this.after(function () { s += ']' }); - } - else if (typeof node == 'object') { - this.before(function () { s += '{' }); - this.pre(function (x, key) { - s += '"' + key + '"' + ':'; - }); - this.post(function (child) { - if (!child.isLast) s += ','; - }); - this.after(function () { s += '}' }); - } - else if (typeof node == 'function') { - s += 'null'; - } - else { - s += node.toString(); - } - }); - - t.equal(s, JSON.stringify(obj)); - t.end(); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/subexpr.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/subexpr.js deleted file mode 100644 index c372bf3..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/subexpr.js +++ /dev/null @@ -1,36 +0,0 @@ -var traverse = require('../'); -var test = require('tap').test; - -test('subexpr', function (t) { - var obj = [ 'a', 4, 'b', 5, 'c', 6 ]; - var r = traverse(obj).map(function (x) { - if (typeof x === 'number') { - this.update([ x - 0.1, x, x + 0.1 ], true); - } - }); - - t.same(obj, [ 'a', 4, 'b', 5, 'c', 6 ]); - t.same(r, [ - 'a', [ 3.9, 4, 4.1 ], - 'b', [ 4.9, 5, 5.1 ], - 'c', [ 5.9, 6, 6.1 ], - ]); - t.end(); -}); - -test('block', function (t) { - var obj = [ [ 1 ], [ 2 ], [ 3 ] ]; - var r = traverse(obj).map(function (x) { - if (Array.isArray(x) && !this.isRoot) { - if (x[0] === 5) this.block() - else this.update([ [ x[0] + 1 ] ]) - } - }); - - t.same(r, [ - [ [ [ [ [ 5 ] ] ] ] ], - [ [ [ [ 5 ] ] ] ], - [ [ [ 5 ] ] ], - ]); - t.end(); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/super_deep.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/super_deep.js deleted file mode 100644 index 088f890..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/test/super_deep.js +++ /dev/null @@ -1,56 +0,0 @@ -var test = require('tap').test; -var traverse = require('../'); -var deepEqual = require('./lib/deep_equal'); - -test('super_deep', function (t) { - var util = require('util'); - var a0 = make(); - var a1 = make(); - t.ok(deepEqual(a0, a1)); - - a0.c.d.moo = true; - t.ok(!deepEqual(a0, a1)); - - a1.c.d.moo = true; - t.ok(deepEqual(a0, a1)); - - // TODO: this one - //a0.c.a = a1; - //t.ok(!deepEqual(a0, a1)); - t.end(); -}); - -function make () { - var a = { self : 'a' }; - var b = { self : 'b' }; - var c = { self : 'c' }; - var d = { self : 'd' }; - var e = { self : 'e' }; - - a.a = a; - a.b = b; - a.c = c; - - b.a = a; - b.b = b; - b.c = c; - - c.a = a; - c.b = b; - c.c = c; - c.d = d; - - d.a = a; - d.b = b; - d.c = c; - d.d = d; - d.e = e; - - e.a = a; - e.b = b; - e.c = c; - e.d = d; - e.e = e; - - return a; -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/testling/leaves.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/testling/leaves.js deleted file mode 100644 index 29968dd..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/node_modules/traverse/testling/leaves.js +++ /dev/null @@ -1,22 +0,0 @@ -var traverse = require('./'); -var test = require('testling'); - -test('leaves', function (t) { - var obj = { - a : [1,2,3], - b : 4, - c : [5,6], - d : { e : [7,8], f : 9 } - }; - - var acc = []; - traverse(obj).forEach(function (x) { - if (this.isLeaf) acc.push(x); - }); - - t.deepEqual( - acc, [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ], - 'traversal in the proper order' - ); - t.end(); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/package.json b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/package.json deleted file mode 100644 index 2aff0bc..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "difflet", - "description": "colorful diffs for javascript objects", - "version": "0.2.3", - "repository": { - "type": "git", - "url": "git://github.com/substack/difflet.git" - }, - "main": "index.js", - "keywords": [ - "diff", - "object", - "compare" - ], - "directories": { - "lib": ".", - "example": "example", - "test": "test" - }, - "scripts": { - "test": "tap test/*.js" - }, - "dependencies": { - "traverse": "0.6.x", - "charm": "0.0.x", - "deep-equal": "0.0.x" - }, - "devDependencies": { - "tap": "0.1.x", - "ent": "0.0.x" - }, - "engines": { - "node": ">=0.4.0" - }, - "license": "MIT", - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "readme": "difflet\n=======\n\nCreate colorful diffs for javascript objects.\n\nexample\n=======\n\nstring.js\n---------\n\n``` js\nvar difflet = require('difflet');\n\nvar s = difflet.compare({ a : 2, c : 5 }, { a : 3, b : 4 });\nprocess.stdout.write(s);\n```\n\noutput:\n\n![colorful output](http://substack.net/images/screenshots/difflet_string.png)\n\ncolors.js\n---------\n\n``` js\nvar diff = require('difflet')({ indent : 2 });\n\nvar prev = {\n yy : 6,\n zz : 5,\n a : [1,2,3],\n fn : 'beep',\n c : { x : 7, z : 3 }\n};\n\nvar next = {\n a : [ 1, 2, \"z\", /beep/, new Buffer(3) ],\n fn : function qqq () {},\n b : [5,6,7],\n c : { x : 8, y : 5 }\n};\n\ndiff(prev, next).pipe(process.stdout);\n```\n\noutput:\n\n![colorful output](http://substack.net/images/screenshots/difflet_colors.png)\n\ngreen for inserts, blue for updates, red for deletes\n\nmethods\n=======\n\nvar difflet = require('difflet')\n\nvar diff = difflet(opts={})\n---------------------------\n\nCreate a difflet from optional options `opts`.\n\nWith `opts.start(type, stream)` and `opts.stop(type, stream)`,\nyou can write custom handlers for all the types of differences:\n`'inserted'`, `'updated'`, and `'deleted'`.\nBy default green is used for insertions, blue for updates, and red for\ndeletions.\n\nIf `opts.indent` is set, output will span multiple lines and `opts.indent`\nspaces will be used for leading whitespace.\n\nIf `opts.comma === 'first'` then commas will be placed at the start of lines.\n\nSetting `opts.comment` to `true` will turn on comments with the previous\ncontents like this:\n\n![object comments](http://substack.net/images/screenshots/difflet_object_comments.png)\n\ndiff(prev, next)\n----------------\n\nReturn a stream with the colorful changes between objects `prev` and `next`.\n\ndiff.compare(prev, next)\n------------------------\n\nReturn a string with the colorful changes between `prev` and `next`.\n\ndifflet.compare(prev, next)\n---------------------------\n\nReturn a string with the colorful changes between `prev` and `next` with the\ndefault options.\n\ninstall\n=======\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm install difflet\n```\n\ntest\n====\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm test\n```\n\nlicense\n=======\n\nMIT/X11\n", - "readmeFilename": "README.markdown", - "_id": "difflet@0.2.3", - "_from": "difflet@~0.2.0" -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/test/html.js b/node_modules/nodeunit/node_modules/tap/node_modules/difflet/test/html.js deleted file mode 100644 index 26d2ed4..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/difflet/test/html.js +++ /dev/null @@ -1,80 +0,0 @@ -var difflet = require('../'); -var test = require('tap').test; -var ent = require('ent'); - -var tags = { - inserted : 'g', - updated : 'b', - deleted : 'r', -}; - -test('html output', function (t) { - t.plan(1); - var diff = difflet({ - start : function (t, s) { - s.write('<' + tags[t] + '>'); - }, - stop : function (t, s) { - s.write(''); - }, - write : function (buf, s) { - s.write(ent.encode(buf)); - } - }); - - var stream = diff( - { yy : 6, zz : 5, a : [1,2,3], fn : function qqq () {} }, - { - a : [ 1, 2, 3, [4], "z", /beep/, new Buffer([0,1,2]) ], - fn : function rrr () {}, - b : [5,6,7] - } - ); - - var data = '' - stream.on('data', function (buf) { data += buf }); - stream.on('end', function () { - t.equal(data, - '{"a":[1,2,3,[4],"z",' - + '/beep/,<Buffer 00 01 02>],' - + '"fn":[Function: rrr],' - + '"b":[5,6,7],"yy":6,' - + '"zz":5}' - ); - t.end(); - }); -}); - -test('compare html output', function (t) { - t.plan(1); - - var diff = difflet({ - start : function (t, s) { - s.write('<' + tags[t] + '>'); - }, - stop : function (t, s) { - s.write(''); - }, - write : function (buf, s) { - s.write(ent.encode(buf)); - } - }); - - var data = diff.compare( - { yy : 6, zz : 5, a : [1,2,3], fn : function qqq () {} }, - { - a : [ 1, 2, 3, [4], "z", /beep/, new Buffer([0,1,2]) ], - fn : function rrr () {}, - b : [5,6,7] - } - ); - - t.equal(data, - '{"a":[1,2,3,[4],"z",' - + '/beep/,<Buffer 00 01 02>],' - + '"fn":[Function: rrr],' - + '"b":[5,6,7],"yy":6,' - + '"zz":5}' - ); - t.end(); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/.npmignore b/node_modules/nodeunit/node_modules/tap/node_modules/glob/.npmignore deleted file mode 100644 index 2af4b71..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -.*.swp -test/a/ diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/.travis.yml b/node_modules/nodeunit/node_modules/tap/node_modules/glob/.travis.yml deleted file mode 100644 index baa0031..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - 0.8 diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/LICENSE b/node_modules/nodeunit/node_modules/tap/node_modules/glob/LICENSE deleted file mode 100644 index 0c44ae7..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/README.md b/node_modules/nodeunit/node_modules/tap/node_modules/glob/README.md deleted file mode 100644 index 6e27df6..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/README.md +++ /dev/null @@ -1,233 +0,0 @@ -# Glob - -This is a glob implementation in JavaScript. It uses the `minimatch` -library to do its matching. - -## Attention: node-glob users! - -The API has changed dramatically between 2.x and 3.x. This library is -now 100% JavaScript, and the integer flags have been replaced with an -options object. - -Also, there's an event emitter class, proper tests, and all the other -things you've come to expect from node modules. - -And best of all, no compilation! - -## Usage - -```javascript -var glob = require("glob") - -// options is optional -glob("**/*.js", options, function (er, files) { - // files is an array of filenames. - // If the `nonull` option is set, and nothing - // was found, then files is ["**/*.js"] - // er is an error object or null. -}) -``` - -## Features - -Please see the [minimatch -documentation](https://github.com/isaacs/minimatch) for more details. - -Supports these glob features: - -* Brace Expansion -* Extended glob matching -* "Globstar" `**` matching - -See: - -* `man sh` -* `man bash` -* `man 3 fnmatch` -* `man 5 gitignore` -* [minimatch documentation](https://github.com/isaacs/minimatch) - -## glob(pattern, [options], cb) - -* `pattern` {String} Pattern to be matched -* `options` {Object} -* `cb` {Function} - * `err` {Error | null} - * `matches` {Array} filenames found matching the pattern - -Perform an asynchronous glob search. - -## glob.sync(pattern, [options] - -* `pattern` {String} Pattern to be matched -* `options` {Object} -* return: {Array} filenames found matching the pattern - -Perform a synchronous glob search. - -## Class: glob.Glob - -Create a Glob object by instanting the `glob.Glob` class. - -```javascript -var Glob = require("glob").Glob -var mg = new Glob(pattern, options, cb) -``` - -It's an EventEmitter, and starts walking the filesystem to find matches -immediately. - -### new glob.Glob(pattern, [options], [cb]) - -* `pattern` {String} pattern to search for -* `options` {Object} -* `cb` {Function} Called when an error occurs, or matches are found - * `err` {Error | null} - * `matches` {Array} filenames found matching the pattern - -Note that if the `sync` flag is set in the options, then matches will -be immediately available on the `g.found` member. - -### Properties - -* `minimatch` The minimatch object that the glob uses. -* `options` The options object passed in. -* `error` The error encountered. When an error is encountered, the - glob object is in an undefined state, and should be discarded. -* `aborted` Boolean which is set to true when calling `abort()`. There - is no way at this time to continue a glob search after aborting, but - you can re-use the statCache to avoid having to duplicate syscalls. - -### Events - -* `end` When the matching is finished, this is emitted with all the - matches found. If the `nonull` option is set, and no match was found, - then the `matches` list contains the original pattern. The matches - are sorted, unless the `nosort` flag is set. -* `match` Every time a match is found, this is emitted with the matched. -* `error` Emitted when an unexpected error is encountered, or whenever - any fs error occurs if `options.strict` is set. -* `abort` When `abort()` is called, this event is raised. - -### Methods - -* `abort` Stop the search. - -### Options - -All the options that can be passed to Minimatch can also be passed to -Glob to change pattern matching behavior. Also, some have been added, -or have glob-specific ramifications. - -All options are false by default, unless otherwise noted. - -All options are added to the glob object, as well. - -* `cwd` The current working directory in which to search. Defaults - to `process.cwd()`. -* `root` The place where patterns starting with `/` will be mounted - onto. Defaults to `path.resolve(options.cwd, "/")` (`/` on Unix - systems, and `C:\` or some such on Windows.) -* `nomount` By default, a pattern starting with a forward-slash will be - "mounted" onto the root setting, so that a valid filesystem path is - returned. Set this flag to disable that behavior. -* `mark` Add a `/` character to directory matches. Note that this - requires additional stat calls. -* `nosort` Don't sort the results. -* `stat` Set to true to stat *all* results. This reduces performance - somewhat, and is completely unnecessary, unless `readdir` is presumed - to be an untrustworthy indicator of file existence. It will cause - ELOOP to be triggered one level sooner in the case of cyclical - symbolic links. -* `silent` When an unusual error is encountered - when attempting to read a directory, a warning will be printed to - stderr. Set the `silent` option to true to suppress these warnings. -* `strict` When an unusual error is encountered - when attempting to read a directory, the process will just continue on - in search of other matches. Set the `strict` option to raise an error - in these cases. -* `statCache` A cache of results of filesystem information, to prevent - unnecessary stat calls. While it should not normally be necessary to - set this, you may pass the statCache from one glob() call to the - options object of another, if you know that the filesystem will not - change between calls. (See "Race Conditions" below.) -* `sync` Perform a synchronous glob search. -* `nounique` In some cases, brace-expanded patterns can result in the - same file showing up multiple times in the result set. By default, - this implementation prevents duplicates in the result set. - Set this flag to disable that behavior. -* `nonull` Set to never return an empty set, instead returning a set - containing the pattern itself. This is the default in glob(3). -* `nocase` Perform a case-insensitive match. Note that case-insensitive - filesystems will sometimes result in glob returning results that are - case-insensitively matched anyway, since readdir and stat will not - raise an error. -* `debug` Set to enable debug logging in minimatch and glob. -* `globDebug` Set to enable debug logging in glob, but not minimatch. - -## Comparisons to other fnmatch/glob implementations - -While strict compliance with the existing standards is a worthwhile -goal, some discrepancies exist between node-glob and other -implementations, and are intentional. - -If the pattern starts with a `!` character, then it is negated. Set the -`nonegate` flag to suppress this behavior, and treat leading `!` -characters normally. This is perhaps relevant if you wish to start the -pattern with a negative extglob pattern like `!(a|B)`. Multiple `!` -characters at the start of a pattern will negate the pattern multiple -times. - -If a pattern starts with `#`, then it is treated as a comment, and -will not match anything. Use `\#` to match a literal `#` at the -start of a line, or set the `nocomment` flag to suppress this behavior. - -The double-star character `**` is supported by default, unless the -`noglobstar` flag is set. This is supported in the manner of bsdglob -and bash 4.1, where `**` only has special significance if it is the only -thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but -`a/**b` will not. **Note that this is different from the way that `**` is -handled by ruby's `Dir` class.** - -If an escaped pattern has no matches, and the `nonull` flag is set, -then glob returns the pattern as-provided, rather than -interpreting the character escapes. For example, -`glob.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than -`"*a?"`. This is akin to setting the `nullglob` option in bash, except -that it does not resolve escaped pattern characters. - -If brace expansion is not disabled, then it is performed before any -other interpretation of the glob pattern. Thus, a pattern like -`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded -**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are -checked for validity. Since those two are valid, matching proceeds. - -## Windows - -**Please only use forward-slashes in glob expressions.** - -Though windows uses either `/` or `\` as its path separator, only `/` -characters are used by this glob implementation. You must use -forward-slashes **only** in glob expressions. Back-slashes will always -be interpreted as escape characters, not path separators. - -Results from absolute patterns such as `/foo/*` are mounted onto the -root setting using `path.join`. On windows, this will by default result -in `/foo/*` matching `C:\foo\bar.txt`. - -## Race Conditions - -Glob searching, by its very nature, is susceptible to race conditions, -since it relies on directory walking and such. - -As a result, it is possible that a file that exists when glob looks for -it may have been deleted or modified by the time it returns the result. - -As part of its internal implementation, this program caches all stat -and readdir calls that it makes, in order to cut down on system -overhead. However, this also makes it even more susceptible to races, -especially if the statCache object is reused between glob calls. - -Users are thus advised not to use a glob result as a -guarantee of filesystem state in the face of rapid changes. -For the vast majority of operations, this is never a problem. diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/examples/g.js b/node_modules/nodeunit/node_modules/tap/node_modules/glob/examples/g.js deleted file mode 100644 index be122df..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/examples/g.js +++ /dev/null @@ -1,9 +0,0 @@ -var Glob = require("../").Glob - -var pattern = "test/a/**/[cg]/../[cg]" -console.log(pattern) - -var mg = new Glob(pattern, {mark: true, sync:true}, function (er, matches) { - console.log("matches", matches) -}) -console.log("after") diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/examples/usr-local.js b/node_modules/nodeunit/node_modules/tap/node_modules/glob/examples/usr-local.js deleted file mode 100644 index 327a425..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/examples/usr-local.js +++ /dev/null @@ -1,9 +0,0 @@ -var Glob = require("../").Glob - -var pattern = "{./*/*,/*,/usr/local/*}" -console.log(pattern) - -var mg = new Glob(pattern, {mark: true}, function (er, matches) { - console.log("matches", matches) -}) -console.log("after") diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/glob.js b/node_modules/nodeunit/node_modules/tap/node_modules/glob/glob.js deleted file mode 100644 index b26e7ff..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/glob.js +++ /dev/null @@ -1,634 +0,0 @@ -// Approach: -// -// 1. Get the minimatch set -// 2. For each pattern in the set, PROCESS(pattern) -// 3. Store matches per-set, then uniq them -// -// PROCESS(pattern) -// Get the first [n] items from pattern that are all strings -// Join these together. This is PREFIX. -// If there is no more remaining, then stat(PREFIX) and -// add to matches if it succeeds. END. -// readdir(PREFIX) as ENTRIES -// If fails, END -// If pattern[n] is GLOBSTAR -// // handle the case where the globstar match is empty -// // by pruning it out, and testing the resulting pattern -// PROCESS(pattern[0..n] + pattern[n+1 .. $]) -// // handle other cases. -// for ENTRY in ENTRIES (not dotfiles) -// // attach globstar + tail onto the entry -// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $]) -// -// else // not globstar -// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot) -// Test ENTRY against pattern[n] -// If fails, continue -// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $]) -// -// Caveat: -// Cache all stats and readdirs results to minimize syscall. Since all -// we ever care about is existence and directory-ness, we can just keep -// `true` for files, and [children,...] for directories, or `false` for -// things that don't exist. - - - -module.exports = glob - -var fs = require("graceful-fs") -, minimatch = require("minimatch") -, Minimatch = minimatch.Minimatch -, inherits = require("inherits") -, EE = require("events").EventEmitter -, path = require("path") -, isDir = {} -, assert = require("assert").ok - -function glob (pattern, options, cb) { - if (typeof options === "function") cb = options, options = {} - if (!options) options = {} - - if (typeof options === "number") { - deprecated() - return - } - - var g = new Glob(pattern, options, cb) - return g.sync ? g.found : g -} - -glob.fnmatch = deprecated - -function deprecated () { - throw new Error("glob's interface has changed. Please see the docs.") -} - -glob.sync = globSync -function globSync (pattern, options) { - if (typeof options === "number") { - deprecated() - return - } - - options = options || {} - options.sync = true - return glob(pattern, options) -} - - -glob.Glob = Glob -inherits(Glob, EE) -function Glob (pattern, options, cb) { - if (!(this instanceof Glob)) { - return new Glob(pattern, options, cb) - } - - if (typeof cb === "function") { - this.on("error", cb) - this.on("end", function (matches) { - cb(null, matches) - }) - } - - options = options || {} - - this.EOF = {} - this._emitQueue = [] - - this.maxDepth = options.maxDepth || 1000 - this.maxLength = options.maxLength || Infinity - this.statCache = options.statCache || {} - - this.changedCwd = false - var cwd = process.cwd() - if (!options.hasOwnProperty("cwd")) this.cwd = cwd - else { - this.cwd = options.cwd - this.changedCwd = path.resolve(options.cwd) !== cwd - } - - this.root = options.root || path.resolve(this.cwd, "/") - this.root = path.resolve(this.root) - if (process.platform === "win32") - this.root = this.root.replace(/\\/g, "/") - - this.nomount = !!options.nomount - - if (!pattern) { - throw new Error("must provide pattern") - } - - // base-matching: just use globstar for that. - if (options.matchBase && -1 === pattern.indexOf("/")) { - if (options.noglobstar) { - throw new Error("base matching requires globstar") - } - pattern = "**/" + pattern - } - - this.strict = options.strict !== false - this.dot = !!options.dot - this.mark = !!options.mark - this.sync = !!options.sync - this.nounique = !!options.nounique - this.nonull = !!options.nonull - this.nosort = !!options.nosort - this.nocase = !!options.nocase - this.stat = !!options.stat - - this.debug = !!options.debug || !!options.globDebug - if (this.debug) - this.log = console.error - - this.silent = !!options.silent - - var mm = this.minimatch = new Minimatch(pattern, options) - this.options = mm.options - pattern = this.pattern = mm.pattern - - this.error = null - this.aborted = false - - EE.call(this) - - // process each pattern in the minimatch set - var n = this.minimatch.set.length - - // The matches are stored as {: true,...} so that - // duplicates are automagically pruned. - // Later, we do an Object.keys() on these. - // Keep them as a list so we can fill in when nonull is set. - this.matches = new Array(n) - - this.minimatch.set.forEach(iterator.bind(this)) - function iterator (pattern, i, set) { - this._process(pattern, 0, i, function (er) { - if (er) this.emit("error", er) - if (-- n <= 0) this._finish() - }) - } -} - -Glob.prototype.log = function () {} - -Glob.prototype._finish = function () { - assert(this instanceof Glob) - - var nou = this.nounique - , all = nou ? [] : {} - - for (var i = 0, l = this.matches.length; i < l; i ++) { - var matches = this.matches[i] - this.log("matches[%d] =", i, matches) - // do like the shell, and spit out the literal glob - if (!matches) { - if (this.nonull) { - var literal = this.minimatch.globSet[i] - if (nou) all.push(literal) - else all[literal] = true - } - } else { - // had matches - var m = Object.keys(matches) - if (nou) all.push.apply(all, m) - else m.forEach(function (m) { - all[m] = true - }) - } - } - - if (!nou) all = Object.keys(all) - - if (!this.nosort) { - all = all.sort(this.nocase ? alphasorti : alphasort) - } - - if (this.mark) { - // at *some* point we statted all of these - all = all.map(function (m) { - var sc = this.statCache[m] - if (!sc) - return m - var isDir = (Array.isArray(sc) || sc === 2) - if (isDir && m.slice(-1) !== "/") { - return m + "/" - } - if (!isDir && m.slice(-1) === "/") { - return m.replace(/\/+$/, "") - } - return m - }, this) - } - - this.log("emitting end", all) - - this.EOF = this.found = all - this.emitMatch(this.EOF) -} - -function alphasorti (a, b) { - a = a.toLowerCase() - b = b.toLowerCase() - return alphasort(a, b) -} - -function alphasort (a, b) { - return a > b ? 1 : a < b ? -1 : 0 -} - -Glob.prototype.abort = function () { - this.aborted = true - this.emit("abort") -} - -Glob.prototype.pause = function () { - if (this.paused) return - if (this.sync) - this.emit("error", new Error("Can't pause/resume sync glob")) - this.paused = true - this.emit("pause") -} - -Glob.prototype.resume = function () { - if (!this.paused) return - if (this.sync) - this.emit("error", new Error("Can't pause/resume sync glob")) - this.paused = false - this.emit("resume") - this._processEmitQueue() - //process.nextTick(this.emit.bind(this, "resume")) -} - -Glob.prototype.emitMatch = function (m) { - this._emitQueue.push(m) - this._processEmitQueue() -} - -Glob.prototype._processEmitQueue = function (m) { - while (!this._processingEmitQueue && - !this.paused) { - this._processingEmitQueue = true - var m = this._emitQueue.shift() - if (!m) { - this._processingEmitQueue = false - break - } - - this.log('emit!', m === this.EOF ? "end" : "match") - - this.emit(m === this.EOF ? "end" : "match", m) - this._processingEmitQueue = false - } -} - -Glob.prototype._process = function (pattern, depth, index, cb_) { - assert(this instanceof Glob) - - var cb = function cb (er, res) { - assert(this instanceof Glob) - if (this.paused) { - if (!this._processQueue) { - this._processQueue = [] - this.once("resume", function () { - var q = this._processQueue - this._processQueue = null - q.forEach(function (cb) { cb() }) - }) - } - this._processQueue.push(cb_.bind(this, er, res)) - } else { - cb_.call(this, er, res) - } - }.bind(this) - - if (this.aborted) return cb() - - if (depth > this.maxDepth) return cb() - - // Get the first [n] parts of pattern that are all strings. - var n = 0 - while (typeof pattern[n] === "string") { - n ++ - } - // now n is the index of the first one that is *not* a string. - - // see if there's anything else - var prefix - switch (n) { - // if not, then this is rather simple - case pattern.length: - prefix = pattern.join("/") - this._stat(prefix, function (exists, isDir) { - // either it's there, or it isn't. - // nothing more to do, either way. - if (exists) { - if (prefix.charAt(0) === "/" && !this.nomount) { - prefix = path.join(this.root, prefix) - } - - if (process.platform === "win32") - prefix = prefix.replace(/\\/g, "/") - - this.matches[index] = this.matches[index] || {} - this.matches[index][prefix] = true - this.emitMatch(prefix) - } - return cb() - }) - return - - case 0: - // pattern *starts* with some non-trivial item. - // going to readdir(cwd), but not include the prefix in matches. - prefix = null - break - - default: - // pattern has some string bits in the front. - // whatever it starts with, whether that's "absolute" like /foo/bar, - // or "relative" like "../baz" - prefix = pattern.slice(0, n) - prefix = prefix.join("/") - break - } - - // get the list of entries. - var read - if (prefix === null) read = "." - else if (isAbsolute(prefix) || isAbsolute(pattern.join("/"))) { - read = prefix = path.resolve(path.join("/", prefix)) - - if (process.platform === "win32") - read = prefix = prefix.replace(/^[a-zA-Z]:|\\/g, "/") - - this.log('absolute: ', prefix, this.root, pattern) - } else read = prefix - - this.log('readdir(%j)', read, this.cwd, this.root) - - return this._readdir(read, function (er, entries) { - if (er) { - // not a directory! - // this means that, whatever else comes after this, it can never match - return cb() - } - - // globstar is special - if (pattern[n] === minimatch.GLOBSTAR) { - // test without the globstar, and with every child both below - // and replacing the globstar. - var s = [ pattern.slice(0, n).concat(pattern.slice(n + 1)) ] - entries.forEach(function (e) { - if (e.charAt(0) === "." && !this.dot) return - // instead of the globstar - s.push(pattern.slice(0, n).concat(e).concat(pattern.slice(n + 1))) - // below the globstar - s.push(pattern.slice(0, n).concat(e).concat(pattern.slice(n))) - }, this) - - // now asyncForEach over this - var l = s.length - , errState = null - s.forEach(function (gsPattern) { - this._process(gsPattern, depth + 1, index, function (er) { - if (errState) return - if (er) return cb(errState = er) - if (--l <= 0) return cb() - }) - }, this) - - return - } - - // not a globstar - // It will only match dot entries if it starts with a dot, or if - // dot is set. Stuff like @(.foo|.bar) isn't allowed. - var pn = pattern[n] - if (typeof pn === "string") { - var found = entries.indexOf(pn) !== -1 - entries = found ? entries[pn] : [] - } else { - var rawGlob = pattern[n]._glob - , dotOk = this.dot || rawGlob.charAt(0) === "." - - entries = entries.filter(function (e) { - return (e.charAt(0) !== "." || dotOk) && - (typeof pattern[n] === "string" && e === pattern[n] || - e.match(pattern[n])) - }) - } - - // If n === pattern.length - 1, then there's no need for the extra stat - // *unless* the user has specified "mark" or "stat" explicitly. - // We know that they exist, since the readdir returned them. - if (n === pattern.length - 1 && - !this.mark && - !this.stat) { - entries.forEach(function (e) { - if (prefix) { - if (prefix !== "/") e = prefix + "/" + e - else e = prefix + e - } - if (e.charAt(0) === "/" && !this.nomount) { - e = path.join(this.root, e) - } - - if (process.platform === "win32") - e = e.replace(/\\/g, "/") - - this.matches[index] = this.matches[index] || {} - this.matches[index][e] = true - this.emitMatch(e) - }, this) - return cb.call(this) - } - - - // now test all the remaining entries as stand-ins for that part - // of the pattern. - var l = entries.length - , errState = null - if (l === 0) return cb() // no matches possible - entries.forEach(function (e) { - var p = pattern.slice(0, n).concat(e).concat(pattern.slice(n + 1)) - this._process(p, depth + 1, index, function (er) { - if (errState) return - if (er) return cb(errState = er) - if (--l === 0) return cb.call(this) - }) - }, this) - }) - -} - -Glob.prototype._stat = function (f, cb) { - assert(this instanceof Glob) - var abs = f - if (f.charAt(0) === "/") { - abs = path.join(this.root, f) - } else if (this.changedCwd) { - abs = path.resolve(this.cwd, f) - } - this.log('stat', [this.cwd, f, '=', abs]) - if (f.length > this.maxLength) { - var er = new Error("Path name too long") - er.code = "ENAMETOOLONG" - er.path = f - return this._afterStat(f, abs, cb, er) - } - - if (this.statCache.hasOwnProperty(f)) { - var exists = this.statCache[f] - , isDir = exists && (Array.isArray(exists) || exists === 2) - if (this.sync) return cb.call(this, !!exists, isDir) - return process.nextTick(cb.bind(this, !!exists, isDir)) - } - - if (this.sync) { - var er, stat - try { - stat = fs.statSync(abs) - } catch (e) { - er = e - } - this._afterStat(f, abs, cb, er, stat) - } else { - fs.stat(abs, this._afterStat.bind(this, f, abs, cb)) - } -} - -Glob.prototype._afterStat = function (f, abs, cb, er, stat) { - var exists - assert(this instanceof Glob) - - if (abs.slice(-1) === "/" && stat && !stat.isDirectory()) { - this.log("should be ENOTDIR, fake it") - - er = new Error("ENOTDIR, not a directory '" + abs + "'") - er.path = abs - er.code = "ENOTDIR" - stat = null - } - - if (er || !stat) { - exists = false - } else { - exists = stat.isDirectory() ? 2 : 1 - } - this.statCache[f] = this.statCache[f] || exists - cb.call(this, !!exists, exists === 2) -} - -Glob.prototype._readdir = function (f, cb) { - assert(this instanceof Glob) - var abs = f - if (f.charAt(0) === "/") { - abs = path.join(this.root, f) - } else if (isAbsolute(f)) { - abs = f - } else if (this.changedCwd) { - abs = path.resolve(this.cwd, f) - } - - this.log('readdir', [this.cwd, f, abs]) - if (f.length > this.maxLength) { - var er = new Error("Path name too long") - er.code = "ENAMETOOLONG" - er.path = f - return this._afterReaddir(f, abs, cb, er) - } - - if (this.statCache.hasOwnProperty(f)) { - var c = this.statCache[f] - if (Array.isArray(c)) { - if (this.sync) return cb.call(this, null, c) - return process.nextTick(cb.bind(this, null, c)) - } - - if (!c || c === 1) { - // either ENOENT or ENOTDIR - var code = c ? "ENOTDIR" : "ENOENT" - , er = new Error((c ? "Not a directory" : "Not found") + ": " + f) - er.path = f - er.code = code - this.log(f, er) - if (this.sync) return cb.call(this, er) - return process.nextTick(cb.bind(this, er)) - } - - // at this point, c === 2, meaning it's a dir, but we haven't - // had to read it yet, or c === true, meaning it's *something* - // but we don't have any idea what. Need to read it, either way. - } - - if (this.sync) { - var er, entries - try { - entries = fs.readdirSync(abs) - } catch (e) { - er = e - } - return this._afterReaddir(f, abs, cb, er, entries) - } - - fs.readdir(abs, this._afterReaddir.bind(this, f, abs, cb)) -} - -Glob.prototype._afterReaddir = function (f, abs, cb, er, entries) { - assert(this instanceof Glob) - if (entries && !er) { - this.statCache[f] = entries - // if we haven't asked to stat everything for suresies, then just - // assume that everything in there exists, so we can avoid - // having to stat it a second time. This also gets us one step - // further into ELOOP territory. - if (!this.mark && !this.stat) { - entries.forEach(function (e) { - if (f === "/") e = f + e - else e = f + "/" + e - this.statCache[e] = true - }, this) - } - - return cb.call(this, er, entries) - } - - // now handle errors, and cache the information - if (er) switch (er.code) { - case "ENOTDIR": // totally normal. means it *does* exist. - this.statCache[f] = 1 - return cb.call(this, er) - case "ENOENT": // not terribly unusual - case "ELOOP": - case "ENAMETOOLONG": - case "UNKNOWN": - this.statCache[f] = false - return cb.call(this, er) - default: // some unusual error. Treat as failure. - this.statCache[f] = false - if (this.strict) this.emit("error", er) - if (!this.silent) console.error("glob error", er) - return cb.call(this, er) - } -} - -var isAbsolute = process.platform === "win32" ? absWin : absUnix - -function absWin (p) { - if (absUnix(p)) return true - // pull off the device/UNC bit from a windows path. - // from node's lib/path.js - var splitDeviceRe = - /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/ - , result = splitDeviceRe.exec(p) - , device = result[1] || '' - , isUnc = device && device.charAt(1) !== ':' - , isAbsolute = !!result[2] || isUnc // UNC paths are always absolute - - return isAbsolute -} - -function absUnix (p) { - return p.charAt(0) === "/" || p === "" -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/graceful-fs/.npmignore b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/graceful-fs/.npmignore deleted file mode 100644 index c2658d7..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/graceful-fs/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/graceful-fs/LICENSE b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/graceful-fs/LICENSE deleted file mode 100644 index 05a4010..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/graceful-fs/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright 2009, 2010, 2011 Isaac Z. Schlueter. -All rights reserved. - -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: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -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. diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/graceful-fs/README.md b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/graceful-fs/README.md deleted file mode 100644 index 7d2e681..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/graceful-fs/README.md +++ /dev/null @@ -1,5 +0,0 @@ -Just like node's `fs` module, but it does an incremental back-off when -EMFILE is encountered. - -Useful in asynchronous situations where one needs to try to open lots -and lots of files. diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/graceful-fs/graceful-fs.js b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/graceful-fs/graceful-fs.js deleted file mode 100644 index be9951e..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/graceful-fs/graceful-fs.js +++ /dev/null @@ -1,312 +0,0 @@ -// this keeps a queue of opened file descriptors, and will make -// fs operations wait until some have closed before trying to open more. - -var fs = require("fs") - -// there is such a thing as TOO graceful. -if (fs.open === gracefulOpen) return - -var queue = [] - , constants = require("constants") - -exports = module.exports = fs -fs._curOpen = 0 - -fs.MIN_MAX_OPEN = 64 -fs.MAX_OPEN = 1024 - -var originalOpen = fs.open - , originalOpenSync = fs.openSync - , originalClose = fs.close - , originalCloseSync = fs.closeSync - - -// prevent EMFILE errors -function OpenReq (path, flags, mode, cb) { - this.path = path - this.flags = flags - this.mode = mode - this.cb = cb -} - -function noop () {} - -fs.open = gracefulOpen - -function gracefulOpen (path, flags, mode, cb) { - if (typeof mode === "function") cb = mode, mode = null - if (typeof cb !== "function") cb = noop - - if (fs._curOpen >= fs.MAX_OPEN) { - queue.push(new OpenReq(path, flags, mode, cb)) - setTimeout(flush) - return - } - open(path, flags, mode, function (er, fd) { - if (er && er.code === "EMFILE" && fs._curOpen > fs.MIN_MAX_OPEN) { - // that was too many. reduce max, get back in queue. - // this should only happen once in a great while, and only - // if the ulimit -n is set lower than 1024. - fs.MAX_OPEN = fs._curOpen - 1 - return fs.open(path, flags, mode, cb) - } - cb(er, fd) - }) -} - -function open (path, flags, mode, cb) { - cb = cb || noop - fs._curOpen ++ - originalOpen.call(fs, path, flags, mode, function (er, fd) { - if (er) onclose() - cb(er, fd) - }) -} - -fs.openSync = function (path, flags, mode) { - var ret - ret = originalOpenSync.call(fs, path, flags, mode) - fs._curOpen ++ - return ret -} - -function onclose () { - fs._curOpen -- - flush() -} - -function flush () { - while (fs._curOpen < fs.MAX_OPEN) { - var req = queue.shift() - if (!req) return - open(req.path, req.flags || "r", req.mode || 0777, req.cb) - } -} - -fs.close = function (fd, cb) { - cb = cb || noop - originalClose.call(fs, fd, function (er) { - onclose() - cb(er) - }) -} - -fs.closeSync = function (fd) { - onclose() - return originalCloseSync.call(fs, fd) -} - - -// (re-)implement some things that are known busted or missing. - -var constants = require("constants") - -// lchmod, broken prior to 0.6.2 -// back-port the fix here. -if (constants.hasOwnProperty('O_SYMLINK') && - process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { - fs.lchmod = function (path, mode, callback) { - callback = callback || noop - fs.open( path - , constants.O_WRONLY | constants.O_SYMLINK - , mode - , function (err, fd) { - if (err) { - callback(err) - return - } - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - fs.fchmod(fd, mode, function (err) { - fs.close(fd, function(err2) { - callback(err || err2) - }) - }) - }) - } - - fs.lchmodSync = function (path, mode) { - var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) - - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - var err, err2 - try { - var ret = fs.fchmodSync(fd, mode) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } -} - - -// lutimes implementation, or no-op -if (!fs.lutimes) { - if (constants.hasOwnProperty("O_SYMLINK")) { - fs.lutimes = function (path, at, mt, cb) { - fs.open(path, constants.O_SYMLINK, function (er, fd) { - cb = cb || noop - if (er) return cb(er) - fs.futimes(fd, at, mt, function (er) { - fs.close(fd, function (er2) { - return cb(er || er2) - }) - }) - }) - } - - fs.lutimesSync = function (path, at, mt) { - var fd = fs.openSync(path, constants.O_SYMLINK) - , err - , err2 - , ret - - try { - var ret = fs.futimesSync(fd, at, mt) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } - - } else if (fs.utimensat && constants.hasOwnProperty("AT_SYMLINK_NOFOLLOW")) { - // maybe utimensat will be bound soonish? - fs.lutimes = function (path, at, mt, cb) { - fs.utimensat(path, at, mt, constants.AT_SYMLINK_NOFOLLOW, cb) - } - - fs.lutimesSync = function (path, at, mt) { - return fs.utimensatSync(path, at, mt, constants.AT_SYMLINK_NOFOLLOW) - } - - } else { - fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) } - fs.lutimesSync = function () {} - } -} - - -// https://github.com/isaacs/node-graceful-fs/issues/4 -// Chown should not fail on einval or eperm if non-root. - -fs.chown = chownFix(fs.chown) -fs.fchown = chownFix(fs.fchown) -fs.lchown = chownFix(fs.lchown) - -fs.chownSync = chownFixSync(fs.chownSync) -fs.fchownSync = chownFixSync(fs.fchownSync) -fs.lchownSync = chownFixSync(fs.lchownSync) - -function chownFix (orig) { - if (!orig) return orig - return function (target, uid, gid, cb) { - return orig.call(fs, target, uid, gid, function (er, res) { - if (chownErOk(er)) er = null - cb(er, res) - }) - } -} - -function chownFixSync (orig) { - if (!orig) return orig - return function (target, uid, gid) { - try { - return orig.call(fs, target, uid, gid) - } catch (er) { - if (!chownErOk(er)) throw er - } - } -} - -function chownErOk (er) { - // if there's no getuid, or if getuid() is something other than 0, - // and the error is EINVAL or EPERM, then just ignore it. - // This specific case is a silent failure in cp, install, tar, - // and most other unix tools that manage permissions. - // When running as root, or if other types of errors are encountered, - // then it's strict. - if (!er || (!process.getuid || process.getuid() !== 0) - && (er.code === "EINVAL" || er.code === "EPERM")) return true -} - - -// if lchmod/lchown do not exist, then make them no-ops -if (!fs.lchmod) { - fs.lchmod = function (path, mode, cb) { - process.nextTick(cb) - } - fs.lchmodSync = function () {} -} -if (!fs.lchown) { - fs.lchown = function (path, uid, gid, cb) { - process.nextTick(cb) - } - fs.lchownSync = function () {} -} - - - -// on Windows, A/V software can lock the directory, causing this -// to fail with an EACCES or EPERM if the directory contains newly -// created files. Try again on failure, for up to 1 second. -if (process.platform === "win32") { - var rename_ = fs.rename - fs.rename = function rename (from, to, cb) { - var start = Date.now() - rename_(from, to, function CB (er) { - if (er - && (er.code === "EACCES" || er.code === "EPERM") - && Date.now() - start < 1000) { - return rename_(from, to, CB) - } - cb(er) - }) - } -} - - -// if read() returns EAGAIN, then just try it again. -var read = fs.read -fs.read = function (fd, buffer, offset, length, position, callback_) { - var callback - if (callback_ && typeof callback_ === 'function') { - var eagCounter = 0 - callback = function (er, _, __) { - if (er && er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - return read.call(fs, fd, buffer, offset, length, position, callback) - } - callback_.apply(this, arguments) - } - } - return read.call(fs, fd, buffer, offset, length, position, callback) -} - -var readSync = fs.readSync -fs.readSync = function (fd, buffer, offset, length, position) { - var eagCounter = 0 - while (true) { - try { - return readSync.call(fs, fd, buffer, offset, length, position) - } catch (er) { - if (er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - continue - } - throw er - } - } -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/graceful-fs/package.json b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/graceful-fs/package.json deleted file mode 100644 index 9ac2815..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/graceful-fs/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me" - }, - "name": "graceful-fs", - "description": "fs monkey-patching to avoid EMFILE and other problems", - "version": "1.1.14", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-graceful-fs.git" - }, - "main": "graceful-fs.js", - "engines": { - "node": ">=0.4.0" - }, - "directories": { - "test": "test" - }, - "scripts": { - "test": "tap test/*.js" - }, - "keywords": [ - "fs", - "EMFILE", - "error", - "handling", - "monkeypatch" - ], - "license": "BSD", - "readme": "Just like node's `fs` module, but it does an incremental back-off when\nEMFILE is encountered.\n\nUseful in asynchronous situations where one needs to try to open lots\nand lots of files.\n", - "readmeFilename": "README.md", - "_id": "graceful-fs@1.1.14", - "_from": "graceful-fs@~1.1.2" -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/graceful-fs/test/open.js b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/graceful-fs/test/open.js deleted file mode 100644 index d05f880..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/graceful-fs/test/open.js +++ /dev/null @@ -1,41 +0,0 @@ -var test = require('tap').test -var fs = require('../graceful-fs.js') - -test('open an existing file works', function (t) { - var start = fs._curOpen - var fd = fs.openSync(__filename, 'r') - t.equal(fs._curOpen, start + 1) - fs.closeSync(fd) - t.equal(fs._curOpen, start) - fs.open(__filename, 'r', function (er, fd) { - if (er) throw er - t.equal(fs._curOpen, start + 1) - fs.close(fd, function (er) { - if (er) throw er - t.equal(fs._curOpen, start) - t.end() - }) - }) -}) - -test('open a non-existing file throws', function (t) { - var start = fs._curOpen - var er - try { - var fd = fs.openSync('this file does not exist', 'r') - } catch (x) { - er = x - } - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - t.equal(fs._curOpen, start) - - fs.open('neither does this file', 'r', function (er, fd) { - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - t.equal(fs._curOpen, start) - t.end() - }) -}) diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/inherits/README.md b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/inherits/README.md deleted file mode 100644 index b2beaed..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/inherits/README.md +++ /dev/null @@ -1,51 +0,0 @@ -A dead simple way to do inheritance in JS. - - var inherits = require("inherits") - - function Animal () { - this.alive = true - } - Animal.prototype.say = function (what) { - console.log(what) - } - - inherits(Dog, Animal) - function Dog () { - Dog.super.apply(this) - } - Dog.prototype.sniff = function () { - this.say("sniff sniff") - } - Dog.prototype.bark = function () { - this.say("woof woof") - } - - inherits(Chihuahua, Dog) - function Chihuahua () { - Chihuahua.super.apply(this) - } - Chihuahua.prototype.bark = function () { - this.say("yip yip") - } - - // also works - function Cat () { - Cat.super.apply(this) - } - Cat.prototype.hiss = function () { - this.say("CHSKKSS!!") - } - inherits(Cat, Animal, { - meow: function () { this.say("miao miao") } - }) - Cat.prototype.purr = function () { - this.say("purr purr") - } - - - var c = new Chihuahua - assert(c instanceof Chihuahua) - assert(c instanceof Dog) - assert(c instanceof Animal) - -The actual function is laughably small. 10-lines small. diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/inherits/inherits.js b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/inherits/inherits.js deleted file mode 100644 index 061b396..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/inherits/inherits.js +++ /dev/null @@ -1,29 +0,0 @@ -module.exports = inherits - -function inherits (c, p, proto) { - proto = proto || {} - var e = {} - ;[c.prototype, proto].forEach(function (s) { - Object.getOwnPropertyNames(s).forEach(function (k) { - e[k] = Object.getOwnPropertyDescriptor(s, k) - }) - }) - c.prototype = Object.create(p.prototype, e) - c.super = p -} - -//function Child () { -// Child.super.call(this) -// console.error([this -// ,this.constructor -// ,this.constructor === Child -// ,this.constructor.super === Parent -// ,Object.getPrototypeOf(this) === Child.prototype -// ,Object.getPrototypeOf(Object.getPrototypeOf(this)) -// === Parent.prototype -// ,this instanceof Child -// ,this instanceof Parent]) -//} -//function Parent () {} -//inherits(Child, Parent) -//new Child diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/inherits/package.json b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/inherits/package.json deleted file mode 100644 index ada6137..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/inherits/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "inherits", - "description": "A tiny simple way to do classic inheritance in js", - "version": "1.0.0", - "keywords": [ - "inheritance", - "class", - "klass", - "oop", - "object-oriented" - ], - "main": "./inherits.js", - "repository": { - "type": "git", - "url": "https://github.com/isaacs/inherits" - }, - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "readme": "A dead simple way to do inheritance in JS.\n\n var inherits = require(\"inherits\")\n\n function Animal () {\n this.alive = true\n }\n Animal.prototype.say = function (what) {\n console.log(what)\n }\n\n inherits(Dog, Animal)\n function Dog () {\n Dog.super.apply(this)\n }\n Dog.prototype.sniff = function () {\n this.say(\"sniff sniff\")\n }\n Dog.prototype.bark = function () {\n this.say(\"woof woof\")\n }\n\n inherits(Chihuahua, Dog)\n function Chihuahua () {\n Chihuahua.super.apply(this)\n }\n Chihuahua.prototype.bark = function () {\n this.say(\"yip yip\")\n }\n\n // also works\n function Cat () {\n Cat.super.apply(this)\n }\n Cat.prototype.hiss = function () {\n this.say(\"CHSKKSS!!\")\n }\n inherits(Cat, Animal, {\n meow: function () { this.say(\"miao miao\") }\n })\n Cat.prototype.purr = function () {\n this.say(\"purr purr\")\n }\n\n\n var c = new Chihuahua\n assert(c instanceof Chihuahua)\n assert(c instanceof Dog)\n assert(c instanceof Animal)\n\nThe actual function is laughably small. 10-lines small.\n", - "readmeFilename": "README.md", - "_id": "inherits@1.0.0", - "_from": "inherits@1" -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/.travis.yml b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/.travis.yml deleted file mode 100644 index f1d0f13..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.4 - - 0.6 diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/LICENSE b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/LICENSE deleted file mode 100644 index 05a4010..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright 2009, 2010, 2011 Isaac Z. Schlueter. -All rights reserved. - -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: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -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. diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/README.md b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/README.md deleted file mode 100644 index 6fd07d2..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/README.md +++ /dev/null @@ -1,218 +0,0 @@ -# minimatch - -A minimal matching utility. - -[![Build Status](https://secure.travis-ci.org/isaacs/minimatch.png)](http://travis-ci.org/isaacs/minimatch) - - -This is the matching library used internally by npm. - -Eventually, it will replace the C binding in node-glob. - -It works by converting glob expressions into JavaScript `RegExp` -objects. - -## Usage - -```javascript -var minimatch = require("minimatch") - -minimatch("bar.foo", "*.foo") // true! -minimatch("bar.foo", "*.bar") // false! -``` - -## Features - -Supports these glob features: - -* Brace Expansion -* Extended glob matching -* "Globstar" `**` matching - -See: - -* `man sh` -* `man bash` -* `man 3 fnmatch` -* `man 5 gitignore` - -### Comparisons to other fnmatch/glob implementations - -While strict compliance with the existing standards is a worthwhile -goal, some discrepancies exist between minimatch and other -implementations, and are intentional. - -If the pattern starts with a `!` character, then it is negated. Set the -`nonegate` flag to suppress this behavior, and treat leading `!` -characters normally. This is perhaps relevant if you wish to start the -pattern with a negative extglob pattern like `!(a|B)`. Multiple `!` -characters at the start of a pattern will negate the pattern multiple -times. - -If a pattern starts with `#`, then it is treated as a comment, and -will not match anything. Use `\#` to match a literal `#` at the -start of a line, or set the `nocomment` flag to suppress this behavior. - -The double-star character `**` is supported by default, unless the -`noglobstar` flag is set. This is supported in the manner of bsdglob -and bash 4.1, where `**` only has special significance if it is the only -thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but -`a/**b` will not. **Note that this is different from the way that `**` is -handled by ruby's `Dir` class.** - -If an escaped pattern has no matches, and the `nonull` flag is set, -then minimatch.match returns the pattern as-provided, rather than -interpreting the character escapes. For example, -`minimatch.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than -`"*a?"`. This is akin to setting the `nullglob` option in bash, except -that it does not resolve escaped pattern characters. - -If brace expansion is not disabled, then it is performed before any -other interpretation of the glob pattern. Thus, a pattern like -`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded -**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are -checked for validity. Since those two are valid, matching proceeds. - - -## Minimatch Class - -Create a minimatch object by instanting the `minimatch.Minimatch` class. - -```javascript -var Minimatch = require("minimatch").Minimatch -var mm = new Minimatch(pattern, options) -``` - -### Properties - -* `pattern` The original pattern the minimatch object represents. -* `options` The options supplied to the constructor. -* `set` A 2-dimensional array of regexp or string expressions. - Each row in the - array corresponds to a brace-expanded pattern. Each item in the row - corresponds to a single path-part. For example, the pattern - `{a,b/c}/d` would expand to a set of patterns like: - - [ [ a, d ] - , [ b, c, d ] ] - - If a portion of the pattern doesn't have any "magic" in it - (that is, it's something like `"foo"` rather than `fo*o?`), then it - will be left as a string rather than converted to a regular - expression. - -* `regexp` Created by the `makeRe` method. A single regular expression - expressing the entire pattern. This is useful in cases where you wish - to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled. -* `negate` True if the pattern is negated. -* `comment` True if the pattern is a comment. -* `empty` True if the pattern is `""`. - -### Methods - -* `makeRe` Generate the `regexp` member if necessary, and return it. - Will return `false` if the pattern is invalid. -* `match(fname)` Return true if the filename matches the pattern, or - false otherwise. -* `matchOne(fileArray, patternArray, partial)` Take a `/`-split - filename, and match it against a single row in the `regExpSet`. This - method is mainly for internal use, but is exposed so that it can be - used by a glob-walker that needs to avoid excessive filesystem calls. - -All other methods are internal, and will be called as necessary. - -## Functions - -The top-level exported function has a `cache` property, which is an LRU -cache set to store 100 items. So, calling these methods repeatedly -with the same pattern and options will use the same Minimatch object, -saving the cost of parsing it multiple times. - -### minimatch(path, pattern, options) - -Main export. Tests a path against the pattern using the options. - -```javascript -var isJS = minimatch(file, "*.js", { matchBase: true }) -``` - -### minimatch.filter(pattern, options) - -Returns a function that tests its -supplied argument, suitable for use with `Array.filter`. Example: - -```javascript -var javascripts = fileList.filter(minimatch.filter("*.js", {matchBase: true})) -``` - -### minimatch.match(list, pattern, options) - -Match against the list of -files, in the style of fnmatch or glob. If nothing is matched, and -options.nonull is set, then return a list containing the pattern itself. - -```javascript -var javascripts = minimatch.match(fileList, "*.js", {matchBase: true})) -``` - -### minimatch.makeRe(pattern, options) - -Make a regular expression object from the pattern. - -## Options - -All options are `false` by default. - -### debug - -Dump a ton of stuff to stderr. - -### nobrace - -Do not expand `{a,b}` and `{1..3}` brace sets. - -### noglobstar - -Disable `**` matching against multiple folder names. - -### dot - -Allow patterns to match filenames starting with a period, even if -the pattern does not explicitly have a period in that spot. - -Note that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot` -is set. - -### noext - -Disable "extglob" style patterns like `+(a|b)`. - -### nocase - -Perform a case-insensitive match. - -### nonull - -When a match is not found by `minimatch.match`, return a list containing -the pattern itself. When set, an empty list is returned if there are -no matches. - -### matchBase - -If set, then patterns without slashes will be matched -against the basename of the path if it contains slashes. For example, -`a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`. - -### nocomment - -Suppress the behavior of treating `#` at the start of a pattern as a -comment. - -### nonegate - -Suppress the behavior of treating a leading `!` character as negation. - -### flipNegate - -Returns from negate expressions the same as if they were not negated. -(Ie, true on a hit, false on a miss.) diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/minimatch.js b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/minimatch.js deleted file mode 100644 index 5841be1..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/minimatch.js +++ /dev/null @@ -1,1079 +0,0 @@ -;(function (require, exports, module, platform) { - -if (module) module.exports = minimatch -else exports.minimatch = minimatch - -if (!require) { - require = function (id) { - switch (id) { - case "sigmund": return function sigmund (obj) { - return JSON.stringify(obj) - } - case "path": return { basename: function (f) { - f = f.split(/[\/\\]/) - var e = f.pop() - if (!e) e = f.pop() - return e - }} - case "lru-cache": return function LRUCache () { - // not quite an LRU, but still space-limited. - var cache = {} - var cnt = 0 - this.set = function (k, v) { - cnt ++ - if (cnt >= 100) cache = {} - cache[k] = v - } - this.get = function (k) { return cache[k] } - } - } - } -} - -minimatch.Minimatch = Minimatch - -var LRU = require("lru-cache") - , cache = minimatch.cache = new LRU({max: 100}) - , GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} - , sigmund = require("sigmund") - -var path = require("path") - // any single thing other than / - // don't need to escape / when using new RegExp() - , qmark = "[^/]" - - // * => any number of characters - , star = qmark + "*?" - - // ** when dots are allowed. Anything goes, except .. and . - // not (^ or / followed by one or two dots followed by $ or /), - // followed by anything, any number of times. - , twoStarDot = "(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?" - - // not a ^ or / followed by a dot, - // followed by anything, any number of times. - , twoStarNoDot = "(?:(?!(?:\\\/|^)\\.).)*?" - - // characters that need to be escaped in RegExp. - , reSpecials = charSet("().*{}+?[]^$\\!") - -// "abc" -> { a:true, b:true, c:true } -function charSet (s) { - return s.split("").reduce(function (set, c) { - set[c] = true - return set - }, {}) -} - -// normalizes slashes. -var slashSplit = /\/+/ - -minimatch.monkeyPatch = monkeyPatch -function monkeyPatch () { - var desc = Object.getOwnPropertyDescriptor(String.prototype, "match") - var orig = desc.value - desc.value = function (p) { - if (p instanceof Minimatch) return p.match(this) - return orig.call(this, p) - } - Object.defineProperty(String.prototype, desc) -} - -minimatch.filter = filter -function filter (pattern, options) { - options = options || {} - return function (p, i, list) { - return minimatch(p, pattern, options) - } -} - -function ext (a, b) { - a = a || {} - b = b || {} - var t = {} - Object.keys(b).forEach(function (k) { - t[k] = b[k] - }) - Object.keys(a).forEach(function (k) { - t[k] = a[k] - }) - return t -} - -minimatch.defaults = function (def) { - if (!def || !Object.keys(def).length) return minimatch - - var orig = minimatch - - var m = function minimatch (p, pattern, options) { - return orig.minimatch(p, pattern, ext(def, options)) - } - - m.Minimatch = function Minimatch (pattern, options) { - return new orig.Minimatch(pattern, ext(def, options)) - } - - return m -} - -Minimatch.defaults = function (def) { - if (!def || !Object.keys(def).length) return Minimatch - return minimatch.defaults(def).Minimatch -} - - -function minimatch (p, pattern, options) { - if (typeof pattern !== "string") { - throw new TypeError("glob pattern string required") - } - - if (!options) options = {} - - // shortcut: comments match nothing. - if (!options.nocomment && pattern.charAt(0) === "#") { - return false - } - - // "" only matches "" - if (pattern.trim() === "") return p === "" - - return new Minimatch(pattern, options).match(p) -} - -function Minimatch (pattern, options) { - if (!(this instanceof Minimatch)) { - return new Minimatch(pattern, options, cache) - } - - if (typeof pattern !== "string") { - throw new TypeError("glob pattern string required") - } - - if (!options) options = {} - pattern = pattern.trim() - - // windows: need to use /, not \ - // On other platforms, \ is a valid (albeit bad) filename char. - if (platform === "win32") { - pattern = pattern.split("\\").join("/") - } - - // lru storage. - // these things aren't particularly big, but walking down the string - // and turning it into a regexp can get pretty costly. - var cacheKey = pattern + "\n" + sigmund(options) - var cached = minimatch.cache.get(cacheKey) - if (cached) return cached - minimatch.cache.set(cacheKey, this) - - this.options = options - this.set = [] - this.pattern = pattern - this.regexp = null - this.negate = false - this.comment = false - this.empty = false - - // make the set of regexps etc. - this.make() -} - -Minimatch.prototype.make = make -function make () { - // don't do it more than once. - if (this._made) return - - var pattern = this.pattern - var options = this.options - - // empty patterns and comments match nothing. - if (!options.nocomment && pattern.charAt(0) === "#") { - this.comment = true - return - } - if (!pattern) { - this.empty = true - return - } - - // step 1: figure out negation, etc. - this.parseNegate() - - // step 2: expand braces - var set = this.globSet = this.braceExpand() - - if (options.debug) console.error(this.pattern, set) - - // step 3: now we have a set, so turn each one into a series of path-portion - // matching patterns. - // These will be regexps, except in the case of "**", which is - // set to the GLOBSTAR object for globstar behavior, - // and will not contain any / characters - set = this.globParts = set.map(function (s) { - return s.split(slashSplit) - }) - - if (options.debug) console.error(this.pattern, set) - - // glob --> regexps - set = set.map(function (s, si, set) { - return s.map(this.parse, this) - }, this) - - if (options.debug) console.error(this.pattern, set) - - // filter out everything that didn't compile properly. - set = set.filter(function (s) { - return -1 === s.indexOf(false) - }) - - if (options.debug) console.error(this.pattern, set) - - this.set = set -} - -Minimatch.prototype.parseNegate = parseNegate -function parseNegate () { - var pattern = this.pattern - , negate = false - , options = this.options - , negateOffset = 0 - - if (options.nonegate) return - - for ( var i = 0, l = pattern.length - ; i < l && pattern.charAt(i) === "!" - ; i ++) { - negate = !negate - negateOffset ++ - } - - if (negateOffset) this.pattern = pattern.substr(negateOffset) - this.negate = negate -} - -// Brace expansion: -// a{b,c}d -> abd acd -// a{b,}c -> abc ac -// a{0..3}d -> a0d a1d a2d a3d -// a{b,c{d,e}f}g -> abg acdfg acefg -// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg -// -// Invalid sets are not expanded. -// a{2..}b -> a{2..}b -// a{b}c -> a{b}c -minimatch.braceExpand = function (pattern, options) { - return new Minimatch(pattern, options).braceExpand() -} - -Minimatch.prototype.braceExpand = braceExpand -function braceExpand (pattern, options) { - options = options || this.options - pattern = typeof pattern === "undefined" - ? this.pattern : pattern - - if (typeof pattern === "undefined") { - throw new Error("undefined pattern") - } - - if (options.nobrace || - !pattern.match(/\{.*\}/)) { - // shortcut. no need to expand. - return [pattern] - } - - var escaping = false - - // examples and comments refer to this crazy pattern: - // a{b,c{d,e},{f,g}h}x{y,z} - // expected: - // abxy - // abxz - // acdxy - // acdxz - // acexy - // acexz - // afhxy - // afhxz - // aghxy - // aghxz - - // everything before the first \{ is just a prefix. - // So, we pluck that off, and work with the rest, - // and then prepend it to everything we find. - if (pattern.charAt(0) !== "{") { - // console.error(pattern) - var prefix = null - for (var i = 0, l = pattern.length; i < l; i ++) { - var c = pattern.charAt(i) - // console.error(i, c) - if (c === "\\") { - escaping = !escaping - } else if (c === "{" && !escaping) { - prefix = pattern.substr(0, i) - break - } - } - - // actually no sets, all { were escaped. - if (prefix === null) { - // console.error("no sets") - return [pattern] - } - - var tail = braceExpand(pattern.substr(i), options) - return tail.map(function (t) { - return prefix + t - }) - } - - // now we have something like: - // {b,c{d,e},{f,g}h}x{y,z} - // walk through the set, expanding each part, until - // the set ends. then, we'll expand the suffix. - // If the set only has a single member, then'll put the {} back - - // first, handle numeric sets, since they're easier - var numset = pattern.match(/^\{(-?[0-9]+)\.\.(-?[0-9]+)\}/) - if (numset) { - // console.error("numset", numset[1], numset[2]) - var suf = braceExpand(pattern.substr(numset[0].length), options) - , start = +numset[1] - , end = +numset[2] - , inc = start > end ? -1 : 1 - , set = [] - for (var i = start; i != (end + inc); i += inc) { - // append all the suffixes - for (var ii = 0, ll = suf.length; ii < ll; ii ++) { - set.push(i + suf[ii]) - } - } - return set - } - - // ok, walk through the set - // We hope, somewhat optimistically, that there - // will be a } at the end. - // If the closing brace isn't found, then the pattern is - // interpreted as braceExpand("\\" + pattern) so that - // the leading \{ will be interpreted literally. - var i = 1 // skip the \{ - , depth = 1 - , set = [] - , member = "" - , sawEnd = false - , escaping = false - - function addMember () { - set.push(member) - member = "" - } - - // console.error("Entering for") - FOR: for (i = 1, l = pattern.length; i < l; i ++) { - var c = pattern.charAt(i) - // console.error("", i, c) - - if (escaping) { - escaping = false - member += "\\" + c - } else { - switch (c) { - case "\\": - escaping = true - continue - - case "{": - depth ++ - member += "{" - continue - - case "}": - depth -- - // if this closes the actual set, then we're done - if (depth === 0) { - addMember() - // pluck off the close-brace - i ++ - break FOR - } else { - member += c - continue - } - - case ",": - if (depth === 1) { - addMember() - } else { - member += c - } - continue - - default: - member += c - continue - } // switch - } // else - } // for - - // now we've either finished the set, and the suffix is - // pattern.substr(i), or we have *not* closed the set, - // and need to escape the leading brace - if (depth !== 0) { - // console.error("didn't close", pattern) - return braceExpand("\\" + pattern, options) - } - - // x{y,z} -> ["xy", "xz"] - // console.error("set", set) - // console.error("suffix", pattern.substr(i)) - var suf = braceExpand(pattern.substr(i), options) - // ["b", "c{d,e}","{f,g}h"] -> - // [["b"], ["cd", "ce"], ["fh", "gh"]] - var addBraces = set.length === 1 - // console.error("set pre-expanded", set) - set = set.map(function (p) { - return braceExpand(p, options) - }) - // console.error("set expanded", set) - - - // [["b"], ["cd", "ce"], ["fh", "gh"]] -> - // ["b", "cd", "ce", "fh", "gh"] - set = set.reduce(function (l, r) { - return l.concat(r) - }) - - if (addBraces) { - set = set.map(function (s) { - return "{" + s + "}" - }) - } - - // now attach the suffixes. - var ret = [] - for (var i = 0, l = set.length; i < l; i ++) { - for (var ii = 0, ll = suf.length; ii < ll; ii ++) { - ret.push(set[i] + suf[ii]) - } - } - return ret -} - -// parse a component of the expanded set. -// At this point, no pattern may contain "/" in it -// so we're going to return a 2d array, where each entry is the full -// pattern, split on '/', and then turned into a regular expression. -// A regexp is made at the end which joins each array with an -// escaped /, and another full one which joins each regexp with |. -// -// Following the lead of Bash 4.1, note that "**" only has special meaning -// when it is the *only* thing in a path portion. Otherwise, any series -// of * is equivalent to a single *. Globstar behavior is enabled by -// default, and can be disabled by setting options.noglobstar. -Minimatch.prototype.parse = parse -var SUBPARSE = {} -function parse (pattern, isSub) { - var options = this.options - - // shortcuts - if (!options.noglobstar && pattern === "**") return GLOBSTAR - if (pattern === "") return "" - - var re = "" - , hasMagic = false - , escaping = false - // ? => one single character - , patternListStack = [] - , plType - , stateChar - , inClass = false - , reClassStart = -1 - , classStart = -1 - // . and .. never match anything that doesn't start with ., - // even when options.dot is set. - , patternStart = pattern.charAt(0) === "." ? "" // anything - // not (start or / followed by . or .. followed by / or end) - : options.dot ? "(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))" - : "(?!\\.)" - - function clearStateChar () { - if (stateChar) { - // we had some state-tracking character - // that wasn't consumed by this pass. - switch (stateChar) { - case "*": - re += star - hasMagic = true - break - case "?": - re += qmark - hasMagic = true - break - default: - re += "\\"+stateChar - break - } - stateChar = false - } - } - - for ( var i = 0, len = pattern.length, c - ; (i < len) && (c = pattern.charAt(i)) - ; i ++ ) { - - if (options.debug) { - console.error("%s\t%s %s %j", pattern, i, re, c) - } - - // skip over any that are escaped. - if (escaping && reSpecials[c]) { - re += "\\" + c - escaping = false - continue - } - - SWITCH: switch (c) { - case "/": - // completely not allowed, even escaped. - // Should already be path-split by now. - return false - - case "\\": - clearStateChar() - escaping = true - continue - - // the various stateChar values - // for the "extglob" stuff. - case "?": - case "*": - case "+": - case "@": - case "!": - if (options.debug) { - console.error("%s\t%s %s %j <-- stateChar", pattern, i, re, c) - } - - // all of those are literals inside a class, except that - // the glob [!a] means [^a] in regexp - if (inClass) { - if (c === "!" && i === classStart + 1) c = "^" - re += c - continue - } - - // if we already have a stateChar, then it means - // that there was something like ** or +? in there. - // Handle the stateChar, then proceed with this one. - clearStateChar() - stateChar = c - // if extglob is disabled, then +(asdf|foo) isn't a thing. - // just clear the statechar *now*, rather than even diving into - // the patternList stuff. - if (options.noext) clearStateChar() - continue - - case "(": - if (inClass) { - re += "(" - continue - } - - if (!stateChar) { - re += "\\(" - continue - } - - plType = stateChar - patternListStack.push({ type: plType - , start: i - 1 - , reStart: re.length }) - // negation is (?:(?!js)[^/]*) - re += stateChar === "!" ? "(?:(?!" : "(?:" - stateChar = false - continue - - case ")": - if (inClass || !patternListStack.length) { - re += "\\)" - continue - } - - hasMagic = true - re += ")" - plType = patternListStack.pop().type - // negation is (?:(?!js)[^/]*) - // The others are (?:) - switch (plType) { - case "!": - re += "[^/]*?)" - break - case "?": - case "+": - case "*": re += plType - case "@": break // the default anyway - } - continue - - case "|": - if (inClass || !patternListStack.length || escaping) { - re += "\\|" - escaping = false - continue - } - - re += "|" - continue - - // these are mostly the same in regexp and glob - case "[": - // swallow any state-tracking char before the [ - clearStateChar() - - if (inClass) { - re += "\\" + c - continue - } - - inClass = true - classStart = i - reClassStart = re.length - re += c - continue - - case "]": - // a right bracket shall lose its special - // meaning and represent itself in - // a bracket expression if it occurs - // first in the list. -- POSIX.2 2.8.3.2 - if (i === classStart + 1 || !inClass) { - re += "\\" + c - escaping = false - continue - } - - // finish up the class. - hasMagic = true - inClass = false - re += c - continue - - default: - // swallow any state char that wasn't consumed - clearStateChar() - - if (escaping) { - // no need - escaping = false - } else if (reSpecials[c] - && !(c === "^" && inClass)) { - re += "\\" - } - - re += c - - } // switch - } // for - - - // handle the case where we left a class open. - // "[abc" is valid, equivalent to "\[abc" - if (inClass) { - // split where the last [ was, and escape it - // this is a huge pita. We now have to re-walk - // the contents of the would-be class to re-translate - // any characters that were passed through as-is - var cs = pattern.substr(classStart + 1) - , sp = this.parse(cs, SUBPARSE) - re = re.substr(0, reClassStart) + "\\[" + sp[0] - hasMagic = hasMagic || sp[1] - } - - // handle the case where we had a +( thing at the *end* - // of the pattern. - // each pattern list stack adds 3 chars, and we need to go through - // and escape any | chars that were passed through as-is for the regexp. - // Go through and escape them, taking care not to double-escape any - // | chars that were already escaped. - var pl - while (pl = patternListStack.pop()) { - var tail = re.slice(pl.reStart + 3) - // maybe some even number of \, then maybe 1 \, followed by a | - tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) { - if (!$2) { - // the | isn't already escaped, so escape it. - $2 = "\\" - } - - // need to escape all those slashes *again*, without escaping the - // one that we need for escaping the | character. As it works out, - // escaping an even number of slashes can be done by simply repeating - // it exactly after itself. That's why this trick works. - // - // I am sorry that you have to see this. - return $1 + $1 + $2 + "|" - }) - - // console.error("tail=%j\n %s", tail, tail) - var t = pl.type === "*" ? star - : pl.type === "?" ? qmark - : "\\" + pl.type - - hasMagic = true - re = re.slice(0, pl.reStart) - + t + "\\(" - + tail - } - - // handle trailing things that only matter at the very end. - clearStateChar() - if (escaping) { - // trailing \\ - re += "\\\\" - } - - // only need to apply the nodot start if the re starts with - // something that could conceivably capture a dot - var addPatternStart = false - switch (re.charAt(0)) { - case ".": - case "[": - case "(": addPatternStart = true - } - - // if the re is not "" at this point, then we need to make sure - // it doesn't match against an empty path part. - // Otherwise a/* will match a/, which it should not. - if (re !== "" && hasMagic) re = "(?=.)" + re - - if (addPatternStart) re = patternStart + re - - // parsing just a piece of a larger pattern. - if (isSub === SUBPARSE) { - return [ re, hasMagic ] - } - - // skip the regexp for non-magical patterns - // unescape anything in it, though, so that it'll be - // an exact match against a file etc. - if (!hasMagic) { - return globUnescape(pattern) - } - - var flags = options.nocase ? "i" : "" - , regExp = new RegExp("^" + re + "$", flags) - - regExp._glob = pattern - regExp._src = re - - return regExp -} - -minimatch.makeRe = function (pattern, options) { - return new Minimatch(pattern, options || {}).makeRe() -} - -Minimatch.prototype.makeRe = makeRe -function makeRe () { - if (this.regexp || this.regexp === false) return this.regexp - - // at this point, this.set is a 2d array of partial - // pattern strings, or "**". - // - // It's better to use .match(). This function shouldn't - // be used, really, but it's pretty convenient sometimes, - // when you just want to work with a regex. - var set = this.set - - if (!set.length) return this.regexp = false - var options = this.options - - var twoStar = options.noglobstar ? star - : options.dot ? twoStarDot - : twoStarNoDot - , flags = options.nocase ? "i" : "" - - var re = set.map(function (pattern) { - return pattern.map(function (p) { - return (p === GLOBSTAR) ? twoStar - : (typeof p === "string") ? regExpEscape(p) - : p._src - }).join("\\\/") - }).join("|") - - // must match entire pattern - // ending in a * or ** will make it less strict. - re = "^" + re + "$" - - // can match anything, as long as it's not this. - if (this.negate) re = "^(?!" + re + ").*$" - - try { - return this.regexp = new RegExp(re, flags) - } catch (ex) { - return this.regexp = false - } -} - -minimatch.match = function (list, pattern, options) { - var mm = new Minimatch(pattern, options) - list = list.filter(function (f) { - return mm.match(f) - }) - if (options.nonull && !list.length) { - list.push(pattern) - } - return list -} - -Minimatch.prototype.match = match -function match (f, partial) { - // console.error("match", f, this.pattern) - // short-circuit in the case of busted things. - // comments, etc. - if (this.comment) return false - if (this.empty) return f === "" - - if (f === "/" && partial) return true - - var options = this.options - - // windows: need to use /, not \ - // On other platforms, \ is a valid (albeit bad) filename char. - if (platform === "win32") { - f = f.split("\\").join("/") - } - - // treat the test path as a set of pathparts. - f = f.split(slashSplit) - if (options.debug) { - console.error(this.pattern, "split", f) - } - - // just ONE of the pattern sets in this.set needs to match - // in order for it to be valid. If negating, then just one - // match means that we have failed. - // Either way, return on the first hit. - - var set = this.set - // console.error(this.pattern, "set", set) - - for (var i = 0, l = set.length; i < l; i ++) { - var pattern = set[i] - var hit = this.matchOne(f, pattern, partial) - if (hit) { - if (options.flipNegate) return true - return !this.negate - } - } - - // didn't get any hits. this is success if it's a negative - // pattern, failure otherwise. - if (options.flipNegate) return false - return this.negate -} - -// set partial to true to test if, for example, -// "/a/b" matches the start of "/*/b/*/d" -// Partial means, if you run out of file before you run -// out of pattern, then that's fine, as long as all -// the parts match. -Minimatch.prototype.matchOne = function (file, pattern, partial) { - var options = this.options - - if (options.debug) { - console.error("matchOne", - { "this": this - , file: file - , pattern: pattern }) - } - - if (options.matchBase && pattern.length === 1) { - file = path.basename(file.join("/")).split("/") - } - - if (options.debug) { - console.error("matchOne", file.length, pattern.length) - } - - for ( var fi = 0 - , pi = 0 - , fl = file.length - , pl = pattern.length - ; (fi < fl) && (pi < pl) - ; fi ++, pi ++ ) { - - if (options.debug) { - console.error("matchOne loop") - } - var p = pattern[pi] - , f = file[fi] - - if (options.debug) { - console.error(pattern, p, f) - } - - // should be impossible. - // some invalid regexp stuff in the set. - if (p === false) return false - - if (p === GLOBSTAR) { - if (options.debug) - console.error('GLOBSTAR', [pattern, p, f]) - - // "**" - // a/**/b/**/c would match the following: - // a/b/x/y/z/c - // a/x/y/z/b/c - // a/b/x/b/x/c - // a/b/c - // To do this, take the rest of the pattern after - // the **, and see if it would match the file remainder. - // If so, return success. - // If not, the ** "swallows" a segment, and try again. - // This is recursively awful. - // - // a/**/b/**/c matching a/b/x/y/z/c - // - a matches a - // - doublestar - // - matchOne(b/x/y/z/c, b/**/c) - // - b matches b - // - doublestar - // - matchOne(x/y/z/c, c) -> no - // - matchOne(y/z/c, c) -> no - // - matchOne(z/c, c) -> no - // - matchOne(c, c) yes, hit - var fr = fi - , pr = pi + 1 - if (pr === pl) { - if (options.debug) - console.error('** at the end') - // a ** at the end will just swallow the rest. - // We have found a match. - // however, it will not swallow /.x, unless - // options.dot is set. - // . and .. are *never* matched by **, for explosively - // exponential reasons. - for ( ; fi < fl; fi ++) { - if (file[fi] === "." || file[fi] === ".." || - (!options.dot && file[fi].charAt(0) === ".")) return false - } - return true - } - - // ok, let's see if we can swallow whatever we can. - WHILE: while (fr < fl) { - var swallowee = file[fr] - - if (options.debug) { - console.error('\nglobstar while', - file, fr, pattern, pr, swallowee) - } - - // XXX remove this slice. Just pass the start index. - if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { - if (options.debug) - console.error('globstar found match!', fr, fl, swallowee) - // found a match. - return true - } else { - // can't swallow "." or ".." ever. - // can only swallow ".foo" when explicitly asked. - if (swallowee === "." || swallowee === ".." || - (!options.dot && swallowee.charAt(0) === ".")) { - if (options.debug) - console.error("dot detected!", file, fr, pattern, pr) - break WHILE - } - - // ** swallows a segment, and continue. - if (options.debug) - console.error('globstar swallow a segment, and continue') - fr ++ - } - } - // no match was found. - // However, in partial mode, we can't say this is necessarily over. - // If there's more *pattern* left, then - if (partial) { - // ran out of file - // console.error("\n>>> no match, partial?", file, fr, pattern, pr) - if (fr === fl) return true - } - return false - } - - // something other than ** - // non-magic patterns just have to match exactly - // patterns with magic have been turned into regexps. - var hit - if (typeof p === "string") { - if (options.nocase) { - hit = f.toLowerCase() === p.toLowerCase() - } else { - hit = f === p - } - if (options.debug) { - console.error("string match", p, f, hit) - } - } else { - hit = f.match(p) - if (options.debug) { - console.error("pattern match", p, f, hit) - } - } - - if (!hit) return false - } - - // Note: ending in / means that we'll get a final "" - // at the end of the pattern. This can only match a - // corresponding "" at the end of the file. - // If the file ends in /, then it can only match a - // a pattern that ends in /, unless the pattern just - // doesn't have any more for it. But, a/b/ should *not* - // match "a/b/*", even though "" matches against the - // [^/]*? pattern, except in partial mode, where it might - // simply not be reached yet. - // However, a/b/ should still satisfy a/* - - // now either we fell off the end of the pattern, or we're done. - if (fi === fl && pi === pl) { - // ran out of pattern and filename at the same time. - // an exact hit! - return true - } else if (fi === fl) { - // ran out of file, but still had pattern left. - // this is ok if we're doing the match as part of - // a glob fs traversal. - return partial - } else if (pi === pl) { - // ran out of pattern, still have file left. - // this is only acceptable if we're on the very last - // empty segment of a file with a trailing slash. - // a/* should match a/b/ - var emptyFileEnd = (fi === fl - 1) && (file[fi] === "") - return emptyFileEnd - } - - // should be unreachable. - throw new Error("wtf?") -} - - -// replace stuff like \* with * -function globUnescape (s) { - return s.replace(/\\(.)/g, "$1") -} - - -function regExpEscape (s) { - return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&") -} - -})( typeof require === "function" ? require : null, - this, - typeof module === "object" ? module : null, - typeof process === "object" ? process.platform : "win32" - ) diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/.npmignore b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/.npmignore deleted file mode 100644 index 07e6e47..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/.npmignore +++ /dev/null @@ -1 +0,0 @@ -/node_modules diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/AUTHORS b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/AUTHORS deleted file mode 100644 index 016d7fb..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/AUTHORS +++ /dev/null @@ -1,8 +0,0 @@ -# Authors, sorted by whether or not they are me -Isaac Z. Schlueter -Carlos Brito Lage -Marko Mikulicic -Trent Mick -Kevin O'Hara -Marco Rogers -Jesse Dailey diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/LICENSE b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/LICENSE deleted file mode 100644 index 05a4010..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright 2009, 2010, 2011 Isaac Z. Schlueter. -All rights reserved. - -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: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -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. diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/README.md b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/README.md deleted file mode 100644 index 8ea0dd9..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/README.md +++ /dev/null @@ -1,46 +0,0 @@ -# lru cache - -A cache object that deletes the least-recently-used items. - -## Usage: - -```javascript -var LRU = require("lru-cache") - , options = { max: 500 - , length: function (n) { return n * 2 } - , dispose: function (key, n) { n.close() } - , maxAge: 1000 * 60 * 60 } - , cache = LRU(options) - , otherCache = LRU(50) // sets just the max size - -cache.set("key", "value") -cache.get("key") // "value" - -cache.reset() // empty the cache -``` - -If you put more stuff in it, then items will fall out. - -If you try to put an oversized thing in it, then it'll fall out right -away. - -## Options - -* `max` The maximum number of items. Not setting this is kind of - silly, since that's the whole purpose of this lib, but it defaults - to `Infinity`. -* `maxAge` Maximum age in ms. Items are not pro-actively pruned out - as they age, but if you try to get an item that is too old, it'll - drop it and return undefined instead of giving it to you. -* `length` Function that is used to calculate the length of stored - items. If you're storing strings or buffers, then you probably want - to do something like `function(n){return n.length}`. The default is - `function(n){return 1}`, which is fine if you want to store `n` - like-sized things. -* `dispose` Function that is called on items when they are dropped - from the cache. This can be handy if you want to close file - descriptors or do other cleanup tasks when items are no longer - accessible. Called with `key, value`. It's called *before* - actually removing the item from the internal cache, so if you want - to immediately put it back in, you'll have to do that in a - `nextTick` or `setTimeout` callback or it won't do anything. diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js deleted file mode 100644 index 4bec3e2..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js +++ /dev/null @@ -1,191 +0,0 @@ -;(function () { // closure for web browsers - -if (typeof module === 'object' && module.exports) { - module.exports = LRUCache -} else { - // just set the global for non-node platforms. - this.LRUCache = LRUCache -} - -function hOP (obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key) -} - -function naiveLength () { return 1 } - -function LRUCache (options) { - if (!(this instanceof LRUCache)) { - return new LRUCache(options) - } - - var max - if (typeof options === 'number') { - max = options - options = { max: max } - } - max = options.max - - if (!options) options = {} - - var lengthCalculator = options.length || naiveLength - - if (typeof lengthCalculator !== "function") { - lengthCalculator = naiveLength - } - if (!max || !(typeof max === "number") || max <= 0 ) { - // a little bit silly. maybe this should throw? - max = Infinity - } - - var maxAge = options.maxAge || null - - var dispose = options.dispose - - var cache = Object.create(null) // hash of items by key - , lruList = Object.create(null) // list of items in order of use recency - , mru = 0 // most recently used - , length = 0 // number of items in the list - , itemCount = 0 - - - // resize the cache when the max changes. - Object.defineProperty(this, "max", - { set : function (mL) { - if (!mL || !(typeof mL === "number") || mL <= 0 ) mL = Infinity - max = mL - // if it gets above double max, trim right away. - // otherwise, do it whenever it's convenient. - if (length > max) trim() - } - , get : function () { return max } - , enumerable : true - }) - - // resize the cache when the lengthCalculator changes. - Object.defineProperty(this, "lengthCalculator", - { set : function (lC) { - if (typeof lC !== "function") { - lengthCalculator = naiveLength - length = itemCount - for (var key in cache) { - cache[key].length = 1 - } - } else { - lengthCalculator = lC - length = 0 - for (var key in cache) { - cache[key].length = lengthCalculator(cache[key].value) - length += cache[key].length - } - } - - if (length > max) trim() - } - , get : function () { return lengthCalculator } - , enumerable : true - }) - - Object.defineProperty(this, "length", - { get : function () { return length } - , enumerable : true - }) - - - Object.defineProperty(this, "itemCount", - { get : function () { return itemCount } - , enumerable : true - }) - - this.reset = function () { - if (dispose) { - for (var k in cache) { - dispose(k, cache[k].value) - } - } - cache = {} - lruList = {} - mru = 0 - length = 0 - itemCount = 0 - } - - // Provided for debugging/dev purposes only. No promises whatsoever that - // this API stays stable. - this.dump = function () { - return cache - } - - this.set = function (key, value) { - if (hOP(cache, key)) { - // dispose of the old one before overwriting - if (dispose) dispose(key, cache[key].value) - if (maxAge) cache[key].now = Date.now() - cache[key].value = value - this.get(key) - return true - } - - var len = lengthCalculator(value) - var age = maxAge ? Date.now() : 0 - var hit = new Entry(key, value, mru++, len, age) - - // oversized objects fall out of cache automatically. - if (hit.length > max) { - if (dispose) dispose(key, value) - return false - } - - length += hit.length - lruList[hit.lu] = cache[key] = hit - itemCount ++ - - if (length > max) trim() - return true - } - - this.get = function (key) { - if (!hOP(cache, key)) return - var hit = cache[key] - if (maxAge && (Date.now() - hit.now > maxAge)) { - this.del(key) - return - } - delete lruList[hit.lu] - hit.lu = mru ++ - lruList[hit.lu] = hit - return hit.value - } - - this.del = function (key) { - if (!hOP(cache, key)) return - var hit = cache[key] - if (dispose) dispose(key, hit.value) - delete cache[key] - delete lruList[hit.lu] - length -= hit.length - itemCount -- - } - - function trim () { - if (length <= max) return - for (var k in lruList) { - if (length <= max) break; - var hit = lruList[k] - if (dispose) dispose(hit.key, hit.value) - length -= hit.length - delete cache[ hit.key ] - delete lruList[k] - } - } -} - -// classy, since V8 prefers predictable objects. -function Entry (key, value, mru, len, age) { - this.key = key - this.value = value - this.lu = mru - this.length = len - this.now = age -} - -})() diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/package.json b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/package.json deleted file mode 100644 index 35c92a1..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/package.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "lru-cache", - "description": "A cache object that deletes the least-recently-used items.", - "version": "2.0.4", - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me" - }, - "scripts": { - "test": "tap test" - }, - "main": "lib/lru-cache.js", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-lru-cache.git" - }, - "devDependencies": { - "tap": "" - }, - "license": { - "type": "MIT", - "url": "http://github.com/isaacs/node-lru-cache/raw/master/LICENSE" - }, - "readme": "# lru cache\n\nA cache object that deletes the least-recently-used items.\n\n## Usage:\n\n```javascript\nvar LRU = require(\"lru-cache\")\n , options = { max: 500\n , length: function (n) { return n * 2 }\n , dispose: function (key, n) { n.close() }\n , maxAge: 1000 * 60 * 60 }\n , cache = LRU(options)\n , otherCache = LRU(50) // sets just the max size\n\ncache.set(\"key\", \"value\")\ncache.get(\"key\") // \"value\"\n\ncache.reset() // empty the cache\n```\n\nIf you put more stuff in it, then items will fall out.\n\nIf you try to put an oversized thing in it, then it'll fall out right\naway.\n\n## Options\n\n* `max` The maximum number of items. Not setting this is kind of\n silly, since that's the whole purpose of this lib, but it defaults\n to `Infinity`.\n* `maxAge` Maximum age in ms. Items are not pro-actively pruned out\n as they age, but if you try to get an item that is too old, it'll\n drop it and return undefined instead of giving it to you.\n* `length` Function that is used to calculate the length of stored\n items. If you're storing strings or buffers, then you probably want\n to do something like `function(n){return n.length}`. The default is\n `function(n){return 1}`, which is fine if you want to store `n`\n like-sized things.\n* `dispose` Function that is called on items when they are dropped\n from the cache. This can be handy if you want to close file\n descriptors or do other cleanup tasks when items are no longer\n accessible. Called with `key, value`. It's called *before*\n actually removing the item from the internal cache, so if you want\n to immediately put it back in, you'll have to do that in a\n `nextTick` or `setTimeout` callback or it won't do anything.\n", - "readmeFilename": "README.md", - "contributors": [ - { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me" - }, - { - "name": "Carlos Brito Lage", - "email": "carlos@carloslage.net" - }, - { - "name": "Marko Mikulicic", - "email": "marko.mikulicic@isti.cnr.it" - }, - { - "name": "Trent Mick", - "email": "trentm@gmail.com" - }, - { - "name": "Kevin O'Hara", - "email": "kevinohara80@gmail.com" - }, - { - "name": "Marco Rogers", - "email": "marco.rogers@gmail.com" - }, - { - "name": "Jesse Dailey", - "email": "jesse.dailey@gmail.com" - } - ], - "_id": "lru-cache@2.0.4", - "_from": "lru-cache@~2.0.0" -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/basic.js b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/basic.js deleted file mode 100644 index 4200272..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/basic.js +++ /dev/null @@ -1,267 +0,0 @@ -var test = require("tap").test - , LRU = require("../") - -test("basic", function (t) { - var cache = new LRU({max: 10}) - cache.set("key", "value") - t.equal(cache.get("key"), "value") - t.equal(cache.get("nada"), undefined) - t.equal(cache.length, 1) - t.equal(cache.max, 10) - t.end() -}) - -test("least recently set", function (t) { - var cache = new LRU(2) - cache.set("a", "A") - cache.set("b", "B") - cache.set("c", "C") - t.equal(cache.get("c"), "C") - t.equal(cache.get("b"), "B") - t.equal(cache.get("a"), undefined) - t.end() -}) - -test("lru recently gotten", function (t) { - var cache = new LRU(2) - cache.set("a", "A") - cache.set("b", "B") - cache.get("a") - cache.set("c", "C") - t.equal(cache.get("c"), "C") - t.equal(cache.get("b"), undefined) - t.equal(cache.get("a"), "A") - t.end() -}) - -test("del", function (t) { - var cache = new LRU(2) - cache.set("a", "A") - cache.del("a") - t.equal(cache.get("a"), undefined) - t.end() -}) - -test("max", function (t) { - var cache = new LRU(3) - - // test changing the max, verify that the LRU items get dropped. - cache.max = 100 - for (var i = 0; i < 100; i ++) cache.set(i, i) - t.equal(cache.length, 100) - for (var i = 0; i < 100; i ++) { - t.equal(cache.get(i), i) - } - cache.max = 3 - t.equal(cache.length, 3) - for (var i = 0; i < 97; i ++) { - t.equal(cache.get(i), undefined) - } - for (var i = 98; i < 100; i ++) { - t.equal(cache.get(i), i) - } - - // now remove the max restriction, and try again. - cache.max = "hello" - for (var i = 0; i < 100; i ++) cache.set(i, i) - t.equal(cache.length, 100) - for (var i = 0; i < 100; i ++) { - t.equal(cache.get(i), i) - } - // should trigger an immediate resize - cache.max = 3 - t.equal(cache.length, 3) - for (var i = 0; i < 97; i ++) { - t.equal(cache.get(i), undefined) - } - for (var i = 98; i < 100; i ++) { - t.equal(cache.get(i), i) - } - t.end() -}) - -test("reset", function (t) { - var cache = new LRU(10) - cache.set("a", "A") - cache.set("b", "B") - cache.reset() - t.equal(cache.length, 0) - t.equal(cache.max, 10) - t.equal(cache.get("a"), undefined) - t.equal(cache.get("b"), undefined) - t.end() -}) - - -// Note: `.dump()` is a debugging tool only. No guarantees are made -// about the format/layout of the response. -test("dump", function (t) { - var cache = new LRU(10) - var d = cache.dump(); - t.equal(Object.keys(d).length, 0, "nothing in dump for empty cache") - cache.set("a", "A") - var d = cache.dump() // { a: { key: "a", value: "A", lu: 0 } } - t.ok(d.a) - t.equal(d.a.key, "a") - t.equal(d.a.value, "A") - t.equal(d.a.lu, 0) - - cache.set("b", "B") - cache.get("b") - d = cache.dump() - t.ok(d.b) - t.equal(d.b.key, "b") - t.equal(d.b.value, "B") - t.equal(d.b.lu, 2) - - t.end() -}) - - -test("basic with weighed length", function (t) { - var cache = new LRU({ - max: 100, - length: function (item) { return item.size } - }) - cache.set("key", {val: "value", size: 50}) - t.equal(cache.get("key").val, "value") - t.equal(cache.get("nada"), undefined) - t.equal(cache.lengthCalculator(cache.get("key")), 50) - t.equal(cache.length, 50) - t.equal(cache.max, 100) - t.end() -}) - - -test("weighed length item too large", function (t) { - var cache = new LRU({ - max: 10, - length: function (item) { return item.size } - }) - t.equal(cache.max, 10) - - // should fall out immediately - cache.set("key", {val: "value", size: 50}) - - t.equal(cache.length, 0) - t.equal(cache.get("key"), undefined) - t.end() -}) - -test("least recently set with weighed length", function (t) { - var cache = new LRU({ - max:8, - length: function (item) { return item.length } - }) - cache.set("a", "A") - cache.set("b", "BB") - cache.set("c", "CCC") - cache.set("d", "DDDD") - t.equal(cache.get("d"), "DDDD") - t.equal(cache.get("c"), "CCC") - t.equal(cache.get("b"), undefined) - t.equal(cache.get("a"), undefined) - t.end() -}) - -test("lru recently gotten with weighed length", function (t) { - var cache = new LRU({ - max: 8, - length: function (item) { return item.length } - }) - cache.set("a", "A") - cache.set("b", "BB") - cache.set("c", "CCC") - cache.get("a") - cache.get("b") - cache.set("d", "DDDD") - t.equal(cache.get("c"), undefined) - t.equal(cache.get("d"), "DDDD") - t.equal(cache.get("b"), "BB") - t.equal(cache.get("a"), "A") - t.end() -}) - -test("set returns proper booleans", function(t) { - var cache = new LRU({ - max: 5, - length: function (item) { return item.length } - }) - - t.equal(cache.set("a", "A"), true) - - // should return false for max exceeded - t.equal(cache.set("b", "donuts"), false) - - t.equal(cache.set("b", "B"), true) - t.equal(cache.set("c", "CCCC"), true) - t.end() -}) - -test("drop the old items", function(t) { - var cache = new LRU({ - max: 5, - maxAge: 50 - }) - - cache.set("a", "A") - - setTimeout(function () { - cache.set("b", "b") - t.equal(cache.get("a"), "A") - }, 25) - - setTimeout(function () { - cache.set("c", "C") - // timed out - t.notOk(cache.get("a")) - }, 60) - - setTimeout(function () { - t.notOk(cache.get("b")) - t.equal(cache.get("c"), "C") - }, 90) - - setTimeout(function () { - t.notOk(cache.get("c")) - t.end() - }, 155) -}) - -test("disposal function", function(t) { - var disposed = false - var cache = new LRU({ - max: 1, - dispose: function (k, n) { - disposed = n - } - }) - - cache.set(1, 1) - cache.set(2, 2) - t.equal(disposed, 1) - cache.set(3, 3) - t.equal(disposed, 2) - cache.reset() - t.equal(disposed, 3) - t.end() -}) - -test("disposal function on too big of item", function(t) { - var disposed = false - var cache = new LRU({ - max: 1, - length: function (k) { - return k.length - }, - dispose: function (k, n) { - disposed = n - } - }) - var obj = [ 1, 2 ] - - t.equal(disposed, false) - cache.set("obj", obj) - t.equal(disposed, obj) - t.end() -}) diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/sigmund/LICENSE b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/sigmund/LICENSE deleted file mode 100644 index 0c44ae7..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/sigmund/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/sigmund/README.md b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/sigmund/README.md deleted file mode 100644 index 7e36512..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/sigmund/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# sigmund - -Quick and dirty signatures for Objects. - -This is like a much faster `deepEquals` comparison, which returns a -string key suitable for caches and the like. - -## Usage - -```javascript -function doSomething (someObj) { - var key = sigmund(someObj, maxDepth) // max depth defaults to 10 - var cached = cache.get(key) - if (cached) return cached) - - var result = expensiveCalculation(someObj) - cache.set(key, result) - return result -} -``` - -The resulting key will be as unique and reproducible as calling -`JSON.stringify` or `util.inspect` on the object, but is much faster. -In order to achieve this speed, some differences are glossed over. -For example, the object `{0:'foo'}` will be treated identically to the -array `['foo']`. - -Also, just as there is no way to summon the soul from the scribblings -of a cocain-addled psychoanalyst, there is no way to revive the object -from the signature string that sigmund gives you. In fact, it's -barely even readable. - -As with `sys.inspect` and `JSON.stringify`, larger objects will -produce larger signature strings. - -Because sigmund is a bit less strict than the more thorough -alternatives, the strings will be shorter, and also there is a -slightly higher chance for collisions. For example, these objects -have the same signature: - - var obj1 = {a:'b',c:/def/,g:['h','i',{j:'',k:'l'}]} - var obj2 = {a:'b',c:'/def/',g:['h','i','{jkl']} - -Like a good Freudian, sigmund is most effective when you already have -some understanding of what you're looking for. It can help you help -yourself, but you must be willing to do some work as well. - -Cycles are handled, and cyclical objects are silently omitted (though -the key is included in the signature output.) - -The second argument is the maximum depth, which defaults to 10, -because that is the maximum object traversal depth covered by most -insurance carriers. diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/sigmund/bench.js b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/sigmund/bench.js deleted file mode 100644 index 5acfd6d..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/sigmund/bench.js +++ /dev/null @@ -1,283 +0,0 @@ -// different ways to id objects -// use a req/res pair, since it's crazy deep and cyclical - -// sparseFE10 and sigmund are usually pretty close, which is to be expected, -// since they are essentially the same algorithm, except that sigmund handles -// regular expression objects properly. - - -var http = require('http') -var util = require('util') -var sigmund = require('./sigmund.js') -var sreq, sres, creq, cres, test - -http.createServer(function (q, s) { - sreq = q - sres = s - sres.end('ok') - this.close(function () { setTimeout(function () { - start() - }, 200) }) -}).listen(1337, function () { - creq = http.get({ port: 1337 }) - creq.on('response', function (s) { cres = s }) -}) - -function start () { - test = [sreq, sres, creq, cres] - // test = sreq - // sreq.sres = sres - // sreq.creq = creq - // sreq.cres = cres - - for (var i in exports.compare) { - console.log(i) - var hash = exports.compare[i]() - console.log(hash) - console.log(hash.length) - console.log('') - } - - require('bench').runMain() -} - -function customWs (obj, md, d) { - d = d || 0 - var to = typeof obj - if (to === 'undefined' || to === 'function' || to === null) return '' - if (d > md || !obj || to !== 'object') return ('' + obj).replace(/[\n ]+/g, '') - - if (Array.isArray(obj)) { - return obj.map(function (i, _, __) { - return customWs(i, md, d + 1) - }).reduce(function (a, b) { return a + b }, '') - } - - var keys = Object.keys(obj) - return keys.map(function (k, _, __) { - return k + ':' + customWs(obj[k], md, d + 1) - }).reduce(function (a, b) { return a + b }, '') -} - -function custom (obj, md, d) { - d = d || 0 - var to = typeof obj - if (to === 'undefined' || to === 'function' || to === null) return '' - if (d > md || !obj || to !== 'object') return '' + obj - - if (Array.isArray(obj)) { - return obj.map(function (i, _, __) { - return custom(i, md, d + 1) - }).reduce(function (a, b) { return a + b }, '') - } - - var keys = Object.keys(obj) - return keys.map(function (k, _, __) { - return k + ':' + custom(obj[k], md, d + 1) - }).reduce(function (a, b) { return a + b }, '') -} - -function sparseFE2 (obj, maxDepth) { - var seen = [] - var soFar = '' - function ch (v, depth) { - if (depth > maxDepth) return - if (typeof v === 'function' || typeof v === 'undefined') return - if (typeof v !== 'object' || !v) { - soFar += v - return - } - if (seen.indexOf(v) !== -1 || depth === maxDepth) return - seen.push(v) - soFar += '{' - Object.keys(v).forEach(function (k, _, __) { - // pseudo-private values. skip those. - if (k.charAt(0) === '_') return - var to = typeof v[k] - if (to === 'function' || to === 'undefined') return - soFar += k + ':' - ch(v[k], depth + 1) - }) - soFar += '}' - } - ch(obj, 0) - return soFar -} - -function sparseFE (obj, maxDepth) { - var seen = [] - var soFar = '' - function ch (v, depth) { - if (depth > maxDepth) return - if (typeof v === 'function' || typeof v === 'undefined') return - if (typeof v !== 'object' || !v) { - soFar += v - return - } - if (seen.indexOf(v) !== -1 || depth === maxDepth) return - seen.push(v) - soFar += '{' - Object.keys(v).forEach(function (k, _, __) { - // pseudo-private values. skip those. - if (k.charAt(0) === '_') return - var to = typeof v[k] - if (to === 'function' || to === 'undefined') return - soFar += k - ch(v[k], depth + 1) - }) - } - ch(obj, 0) - return soFar -} - -function sparse (obj, maxDepth) { - var seen = [] - var soFar = '' - function ch (v, depth) { - if (depth > maxDepth) return - if (typeof v === 'function' || typeof v === 'undefined') return - if (typeof v !== 'object' || !v) { - soFar += v - return - } - if (seen.indexOf(v) !== -1 || depth === maxDepth) return - seen.push(v) - soFar += '{' - for (var k in v) { - // pseudo-private values. skip those. - if (k.charAt(0) === '_') continue - var to = typeof v[k] - if (to === 'function' || to === 'undefined') continue - soFar += k - ch(v[k], depth + 1) - } - } - ch(obj, 0) - return soFar -} - -function noCommas (obj, maxDepth) { - var seen = [] - var soFar = '' - function ch (v, depth) { - if (depth > maxDepth) return - if (typeof v === 'function' || typeof v === 'undefined') return - if (typeof v !== 'object' || !v) { - soFar += v - return - } - if (seen.indexOf(v) !== -1 || depth === maxDepth) return - seen.push(v) - soFar += '{' - for (var k in v) { - // pseudo-private values. skip those. - if (k.charAt(0) === '_') continue - var to = typeof v[k] - if (to === 'function' || to === 'undefined') continue - soFar += k + ':' - ch(v[k], depth + 1) - } - soFar += '}' - } - ch(obj, 0) - return soFar -} - - -function flatten (obj, maxDepth) { - var seen = [] - var soFar = '' - function ch (v, depth) { - if (depth > maxDepth) return - if (typeof v === 'function' || typeof v === 'undefined') return - if (typeof v !== 'object' || !v) { - soFar += v - return - } - if (seen.indexOf(v) !== -1 || depth === maxDepth) return - seen.push(v) - soFar += '{' - for (var k in v) { - // pseudo-private values. skip those. - if (k.charAt(0) === '_') continue - var to = typeof v[k] - if (to === 'function' || to === 'undefined') continue - soFar += k + ':' - ch(v[k], depth + 1) - soFar += ',' - } - soFar += '}' - } - ch(obj, 0) - return soFar -} - -exports.compare = -{ - // 'custom 2': function () { - // return custom(test, 2, 0) - // }, - // 'customWs 2': function () { - // return customWs(test, 2, 0) - // }, - 'JSON.stringify (guarded)': function () { - var seen = [] - return JSON.stringify(test, function (k, v) { - if (typeof v !== 'object' || !v) return v - if (seen.indexOf(v) !== -1) return undefined - seen.push(v) - return v - }) - }, - - 'flatten 10': function () { - return flatten(test, 10) - }, - - // 'flattenFE 10': function () { - // return flattenFE(test, 10) - // }, - - 'noCommas 10': function () { - return noCommas(test, 10) - }, - - 'sparse 10': function () { - return sparse(test, 10) - }, - - 'sparseFE 10': function () { - return sparseFE(test, 10) - }, - - 'sparseFE2 10': function () { - return sparseFE2(test, 10) - }, - - sigmund: function() { - return sigmund(test, 10) - }, - - - // 'util.inspect 1': function () { - // return util.inspect(test, false, 1, false) - // }, - // 'util.inspect undefined': function () { - // util.inspect(test) - // }, - // 'util.inspect 2': function () { - // util.inspect(test, false, 2, false) - // }, - // 'util.inspect 3': function () { - // util.inspect(test, false, 3, false) - // }, - // 'util.inspect 4': function () { - // util.inspect(test, false, 4, false) - // }, - // 'util.inspect Infinity': function () { - // util.inspect(test, false, Infinity, false) - // } -} - -/** results -**/ diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/sigmund/package.json b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/sigmund/package.json deleted file mode 100644 index 92a63e9..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/sigmund/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "sigmund", - "version": "1.0.0", - "description": "Quick and dirty signatures for Objects.", - "main": "sigmund.js", - "directories": { - "test": "test" - }, - "dependencies": {}, - "devDependencies": { - "tap": "~0.3.0" - }, - "scripts": { - "test": "tap test/*.js", - "bench": "node bench.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/isaacs/sigmund" - }, - "keywords": [ - "object", - "signature", - "key", - "data", - "psychoanalysis" - ], - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "license": "BSD", - "readme": "# sigmund\n\nQuick and dirty signatures for Objects.\n\nThis is like a much faster `deepEquals` comparison, which returns a\nstring key suitable for caches and the like.\n\n## Usage\n\n```javascript\nfunction doSomething (someObj) {\n var key = sigmund(someObj, maxDepth) // max depth defaults to 10\n var cached = cache.get(key)\n if (cached) return cached)\n\n var result = expensiveCalculation(someObj)\n cache.set(key, result)\n return result\n}\n```\n\nThe resulting key will be as unique and reproducible as calling\n`JSON.stringify` or `util.inspect` on the object, but is much faster.\nIn order to achieve this speed, some differences are glossed over.\nFor example, the object `{0:'foo'}` will be treated identically to the\narray `['foo']`.\n\nAlso, just as there is no way to summon the soul from the scribblings\nof a cocain-addled psychoanalyst, there is no way to revive the object\nfrom the signature string that sigmund gives you. In fact, it's\nbarely even readable.\n\nAs with `sys.inspect` and `JSON.stringify`, larger objects will\nproduce larger signature strings.\n\nBecause sigmund is a bit less strict than the more thorough\nalternatives, the strings will be shorter, and also there is a\nslightly higher chance for collisions. For example, these objects\nhave the same signature:\n\n var obj1 = {a:'b',c:/def/,g:['h','i',{j:'',k:'l'}]}\n var obj2 = {a:'b',c:'/def/',g:['h','i','{jkl']}\n\nLike a good Freudian, sigmund is most effective when you already have\nsome understanding of what you're looking for. It can help you help\nyourself, but you must be willing to do some work as well.\n\nCycles are handled, and cyclical objects are silently omitted (though\nthe key is included in the signature output.)\n\nThe second argument is the maximum depth, which defaults to 10,\nbecause that is the maximum object traversal depth covered by most\ninsurance carriers.\n", - "readmeFilename": "README.md", - "_id": "sigmund@1.0.0", - "_from": "sigmund@~1.0.0" -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/sigmund/sigmund.js b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/sigmund/sigmund.js deleted file mode 100644 index 82c7ab8..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/sigmund/sigmund.js +++ /dev/null @@ -1,39 +0,0 @@ -module.exports = sigmund -function sigmund (subject, maxSessions) { - maxSessions = maxSessions || 10; - var notes = []; - var analysis = ''; - var RE = RegExp; - - function psychoAnalyze (subject, session) { - if (session > maxSessions) return; - - if (typeof subject === 'function' || - typeof subject === 'undefined') { - return; - } - - if (typeof subject !== 'object' || !subject || - (subject instanceof RE)) { - analysis += subject; - return; - } - - if (notes.indexOf(subject) !== -1 || session === maxSessions) return; - - notes.push(subject); - analysis += '{'; - Object.keys(subject).forEach(function (issue, _, __) { - // pseudo-private values. skip those. - if (issue.charAt(0) === '_') return; - var to = typeof subject[issue]; - if (to === 'function' || to === 'undefined') return; - analysis += issue; - psychoAnalyze(subject[issue], session + 1); - }); - } - psychoAnalyze(subject, 0); - return analysis; -} - -// vim: set softtabstop=4 shiftwidth=4: diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/sigmund/test/basic.js b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/sigmund/test/basic.js deleted file mode 100644 index 50c53a1..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/node_modules/sigmund/test/basic.js +++ /dev/null @@ -1,24 +0,0 @@ -var test = require('tap').test -var sigmund = require('../sigmund.js') - - -// occasionally there are duplicates -// that's an acceptable edge-case. JSON.stringify and util.inspect -// have some collision potential as well, though less, and collision -// detection is expensive. -var hash = '{abc/def/g{0h1i2{jkl' -var obj1 = {a:'b',c:/def/,g:['h','i',{j:'',k:'l'}]} -var obj2 = {a:'b',c:'/def/',g:['h','i','{jkl']} - -var obj3 = JSON.parse(JSON.stringify(obj1)) -obj3.c = /def/ -obj3.g[2].cycle = obj3 -var cycleHash = '{abc/def/g{0h1i2{jklcycle' - -test('basic', function (t) { - t.equal(sigmund(obj1), hash) - t.equal(sigmund(obj2), hash) - t.equal(sigmund(obj3), cycleHash) - t.end() -}) - diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/package.json b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/package.json deleted file mode 100644 index 3365956..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me" - }, - "name": "minimatch", - "description": "a glob matcher in javascript", - "version": "0.2.9", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/minimatch.git" - }, - "main": "minimatch.js", - "scripts": { - "test": "tap test" - }, - "engines": { - "node": "*" - }, - "dependencies": { - "lru-cache": "~2.0.0", - "sigmund": "~1.0.0" - }, - "devDependencies": { - "tap": "" - }, - "license": { - "type": "MIT", - "url": "http://github.com/isaacs/minimatch/raw/master/LICENSE" - }, - "readme": "# minimatch\n\nA minimal matching utility.\n\n[![Build Status](https://secure.travis-ci.org/isaacs/minimatch.png)](http://travis-ci.org/isaacs/minimatch)\n\n\nThis is the matching library used internally by npm.\n\nEventually, it will replace the C binding in node-glob.\n\nIt works by converting glob expressions into JavaScript `RegExp`\nobjects.\n\n## Usage\n\n```javascript\nvar minimatch = require(\"minimatch\")\n\nminimatch(\"bar.foo\", \"*.foo\") // true!\nminimatch(\"bar.foo\", \"*.bar\") // false!\n```\n\n## Features\n\nSupports these glob features:\n\n* Brace Expansion\n* Extended glob matching\n* \"Globstar\" `**` matching\n\nSee:\n\n* `man sh`\n* `man bash`\n* `man 3 fnmatch`\n* `man 5 gitignore`\n\n### Comparisons to other fnmatch/glob implementations\n\nWhile strict compliance with the existing standards is a worthwhile\ngoal, some discrepancies exist between minimatch and other\nimplementations, and are intentional.\n\nIf the pattern starts with a `!` character, then it is negated. Set the\n`nonegate` flag to suppress this behavior, and treat leading `!`\ncharacters normally. This is perhaps relevant if you wish to start the\npattern with a negative extglob pattern like `!(a|B)`. Multiple `!`\ncharacters at the start of a pattern will negate the pattern multiple\ntimes.\n\nIf a pattern starts with `#`, then it is treated as a comment, and\nwill not match anything. Use `\\#` to match a literal `#` at the\nstart of a line, or set the `nocomment` flag to suppress this behavior.\n\nThe double-star character `**` is supported by default, unless the\n`noglobstar` flag is set. This is supported in the manner of bsdglob\nand bash 4.1, where `**` only has special significance if it is the only\nthing in a path part. That is, `a/**/b` will match `a/x/y/b`, but\n`a/**b` will not. **Note that this is different from the way that `**` is\nhandled by ruby's `Dir` class.**\n\nIf an escaped pattern has no matches, and the `nonull` flag is set,\nthen minimatch.match returns the pattern as-provided, rather than\ninterpreting the character escapes. For example,\n`minimatch.match([], \"\\\\*a\\\\?\")` will return `\"\\\\*a\\\\?\"` rather than\n`\"*a?\"`. This is akin to setting the `nullglob` option in bash, except\nthat it does not resolve escaped pattern characters.\n\nIf brace expansion is not disabled, then it is performed before any\nother interpretation of the glob pattern. Thus, a pattern like\n`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded\n**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are\nchecked for validity. Since those two are valid, matching proceeds.\n\n\n## Minimatch Class\n\nCreate a minimatch object by instanting the `minimatch.Minimatch` class.\n\n```javascript\nvar Minimatch = require(\"minimatch\").Minimatch\nvar mm = new Minimatch(pattern, options)\n```\n\n### Properties\n\n* `pattern` The original pattern the minimatch object represents.\n* `options` The options supplied to the constructor.\n* `set` A 2-dimensional array of regexp or string expressions.\n Each row in the\n array corresponds to a brace-expanded pattern. Each item in the row\n corresponds to a single path-part. For example, the pattern\n `{a,b/c}/d` would expand to a set of patterns like:\n\n [ [ a, d ]\n , [ b, c, d ] ]\n\n If a portion of the pattern doesn't have any \"magic\" in it\n (that is, it's something like `\"foo\"` rather than `fo*o?`), then it\n will be left as a string rather than converted to a regular\n expression.\n\n* `regexp` Created by the `makeRe` method. A single regular expression\n expressing the entire pattern. This is useful in cases where you wish\n to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled.\n* `negate` True if the pattern is negated.\n* `comment` True if the pattern is a comment.\n* `empty` True if the pattern is `\"\"`.\n\n### Methods\n\n* `makeRe` Generate the `regexp` member if necessary, and return it.\n Will return `false` if the pattern is invalid.\n* `match(fname)` Return true if the filename matches the pattern, or\n false otherwise.\n* `matchOne(fileArray, patternArray, partial)` Take a `/`-split\n filename, and match it against a single row in the `regExpSet`. This\n method is mainly for internal use, but is exposed so that it can be\n used by a glob-walker that needs to avoid excessive filesystem calls.\n\nAll other methods are internal, and will be called as necessary.\n\n## Functions\n\nThe top-level exported function has a `cache` property, which is an LRU\ncache set to store 100 items. So, calling these methods repeatedly\nwith the same pattern and options will use the same Minimatch object,\nsaving the cost of parsing it multiple times.\n\n### minimatch(path, pattern, options)\n\nMain export. Tests a path against the pattern using the options.\n\n```javascript\nvar isJS = minimatch(file, \"*.js\", { matchBase: true })\n```\n\n### minimatch.filter(pattern, options)\n\nReturns a function that tests its\nsupplied argument, suitable for use with `Array.filter`. Example:\n\n```javascript\nvar javascripts = fileList.filter(minimatch.filter(\"*.js\", {matchBase: true}))\n```\n\n### minimatch.match(list, pattern, options)\n\nMatch against the list of\nfiles, in the style of fnmatch or glob. If nothing is matched, and\noptions.nonull is set, then return a list containing the pattern itself.\n\n```javascript\nvar javascripts = minimatch.match(fileList, \"*.js\", {matchBase: true}))\n```\n\n### minimatch.makeRe(pattern, options)\n\nMake a regular expression object from the pattern.\n\n## Options\n\nAll options are `false` by default.\n\n### debug\n\nDump a ton of stuff to stderr.\n\n### nobrace\n\nDo not expand `{a,b}` and `{1..3}` brace sets.\n\n### noglobstar\n\nDisable `**` matching against multiple folder names.\n\n### dot\n\nAllow patterns to match filenames starting with a period, even if\nthe pattern does not explicitly have a period in that spot.\n\nNote that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot`\nis set.\n\n### noext\n\nDisable \"extglob\" style patterns like `+(a|b)`.\n\n### nocase\n\nPerform a case-insensitive match.\n\n### nonull\n\nWhen a match is not found by `minimatch.match`, return a list containing\nthe pattern itself. When set, an empty list is returned if there are\nno matches.\n\n### matchBase\n\nIf set, then patterns without slashes will be matched\nagainst the basename of the path if it contains slashes. For example,\n`a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`.\n\n### nocomment\n\nSuppress the behavior of treating `#` at the start of a pattern as a\ncomment.\n\n### nonegate\n\nSuppress the behavior of treating a leading `!` character as negation.\n\n### flipNegate\n\nReturns from negate expressions the same as if they were not negated.\n(Ie, true on a hit, false on a miss.)\n", - "readmeFilename": "README.md", - "_id": "minimatch@0.2.9", - "_from": "minimatch@0.2" -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/test/basic.js b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/test/basic.js deleted file mode 100644 index d860d8b..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/test/basic.js +++ /dev/null @@ -1,297 +0,0 @@ -// http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test -// -// TODO: Some of these tests do very bad things with backslashes, and will -// most likely fail badly on windows. They should probably be skipped. - -var tap = require("tap") - , globalBefore = Object.keys(global) - , mm = require("../") - , files = [ "a", "b", "c", "d", "abc" - , "abd", "abe", "bb", "bcd" - , "ca", "cb", "dd", "de" - , "bdir/", "bdir/cfile"] - , next = files.concat([ "a-b", "aXb" - , ".x", ".y" ]) - -tap.test("basic tests", function (t) { - var start = Date.now() - - // [ pattern, [matches], MM opts, files, TAP opts] - ; [ "http://www.bashcookbook.com/bashinfo" + - "/source/bash-1.14.7/tests/glob-test" - , ["a*", ["a", "abc", "abd", "abe"]] - , ["X*", ["X*"], {nonull: true}] - - // allow null glob expansion - , ["X*", []] - - // isaacs: Slightly different than bash/sh/ksh - // \\* is not un-escaped to literal "*" in a failed match, - // but it does make it get treated as a literal star - , ["\\*", ["\\*"], {nonull: true}] - , ["\\**", ["\\**"], {nonull: true}] - , ["\\*\\*", ["\\*\\*"], {nonull: true}] - - , ["b*/", ["bdir/"]] - , ["c*", ["c", "ca", "cb"]] - , ["**", files] - - , ["\\.\\./*/", ["\\.\\./*/"], {nonull: true}] - , ["s/\\..*//", ["s/\\..*//"], {nonull: true}] - - , "legendary larry crashes bashes" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/"], {nonull: true}] - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/"], {nonull: true}] - - , "character classes" - , ["[a-c]b*", ["abc", "abd", "abe", "bb", "cb"]] - , ["[a-y]*[^c]", ["abd", "abe", "bb", "bcd", - "bdir/", "ca", "cb", "dd", "de"]] - , ["a*[^c]", ["abd", "abe"]] - , function () { files.push("a-b", "aXb") } - , ["a[X-]b", ["a-b", "aXb"]] - , function () { files.push(".x", ".y") } - , ["[^a-c]*", ["d", "dd", "de"]] - , function () { files.push("a*b/", "a*b/ooo") } - , ["a\\*b/*", ["a*b/ooo"]] - , ["a\\*?/*", ["a*b/ooo"]] - , ["*\\\\!*", [], {null: true}, ["echo !7"]] - , ["*\\!*", ["echo !7"], null, ["echo !7"]] - , ["*.\\*", ["r.*"], null, ["r.*"]] - , ["a[b]c", ["abc"]] - , ["a[\\b]c", ["abc"]] - , ["a?c", ["abc"]] - , ["a\\*c", [], {null: true}, ["abc"]] - , ["", [""], { null: true }, [""]] - - , "http://www.opensource.apple.com/source/bash/bash-23/" + - "bash/tests/glob-test" - , function () { files.push("man/", "man/man1/", "man/man1/bash.1") } - , ["*/man*/bash.*", ["man/man1/bash.1"]] - , ["man/man1/bash.1", ["man/man1/bash.1"]] - , ["a***c", ["abc"], null, ["abc"]] - , ["a*****?c", ["abc"], null, ["abc"]] - , ["?*****??", ["abc"], null, ["abc"]] - , ["*****??", ["abc"], null, ["abc"]] - , ["?*****?c", ["abc"], null, ["abc"]] - , ["?***?****c", ["abc"], null, ["abc"]] - , ["?***?****?", ["abc"], null, ["abc"]] - , ["?***?****", ["abc"], null, ["abc"]] - , ["*******c", ["abc"], null, ["abc"]] - , ["*******?", ["abc"], null, ["abc"]] - , ["a*cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??k***", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??***k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??***k**", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a****c**?**??*****", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["[-abc]", ["-"], null, ["-"]] - , ["[abc-]", ["-"], null, ["-"]] - , ["\\", ["\\"], null, ["\\"]] - , ["[\\\\]", ["\\"], null, ["\\"]] - , ["[[]", ["["], null, ["["]] - , ["[", ["["], null, ["["]] - , ["[*", ["[abc"], null, ["[abc"]] - , "a right bracket shall lose its special meaning and\n" + - "represent itself in a bracket expression if it occurs\n" + - "first in the list. -- POSIX.2 2.8.3.2" - , ["[]]", ["]"], null, ["]"]] - , ["[]-]", ["]"], null, ["]"]] - , ["[a-\z]", ["p"], null, ["p"]] - , ["??**********?****?", [], { null: true }, ["abc"]] - , ["??**********?****c", [], { null: true }, ["abc"]] - , ["?************c****?****", [], { null: true }, ["abc"]] - , ["*c*?**", [], { null: true }, ["abc"]] - , ["a*****c*?**", [], { null: true }, ["abc"]] - , ["a********???*******", [], { null: true }, ["abc"]] - , ["[]", [], { null: true }, ["a"]] - , ["[abc", [], { null: true }, ["["]] - - , "nocase tests" - , ["XYZ", ["xYz"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - , ["ab*", ["ABC"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - , ["[ia]?[ck]", ["ABC", "IjK"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - - // [ pattern, [matches], MM opts, files, TAP opts] - , "onestar/twostar" - , ["{/*,*}", [], {null: true}, ["/asdf/asdf/asdf"]] - , ["{/?,*}", ["/a", "bb"], {null: true} - , ["/a", "/b/b", "/a/b/c", "bb"]] - - , "dots should not match unless requested" - , ["**", ["a/b"], {}, ["a/b", "a/.d", ".a/.d"]] - - // .. and . can only match patterns starting with ., - // even when options.dot is set. - , function () { - files = ["a/./b", "a/../b", "a/c/b", "a/.d/b"] - } - , ["a/*/b", ["a/c/b", "a/.d/b"], {dot: true}] - , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: true}] - , ["a/*/b", ["a/c/b"], {dot:false}] - , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: false}] - - - // this also tests that changing the options needs - // to change the cache key, even if the pattern is - // the same! - , ["**", ["a/b","a/.d",".a/.d"], { dot: true } - , [ ".a/.d", "a/.d", "a/b"]] - - , "paren sets cannot contain slashes" - , ["*(a/b)", ["*(a/b)"], {nonull: true}, ["a/b"]] - - // brace sets trump all else. - // - // invalid glob pattern. fails on bash4 and bsdglob. - // however, in this implementation, it's easier just - // to do the intuitive thing, and let brace-expansion - // actually come before parsing any extglob patterns, - // like the documentation seems to say. - // - // XXX: if anyone complains about this, either fix it - // or tell them to grow up and stop complaining. - // - // bash/bsdglob says this: - // , ["*(a|{b),c)}", ["*(a|{b),c)}"], {}, ["a", "ab", "ac", "ad"]] - // but we do this instead: - , ["*(a|{b),c)}", ["a", "ab", "ac"], {}, ["a", "ab", "ac", "ad"]] - - // test partial parsing in the presence of comment/negation chars - , ["[!a*", ["[!ab"], {}, ["[!ab", "[ab"]] - , ["[#a*", ["[#ab"], {}, ["[#ab", "[ab"]] - - // like: {a,b|c\\,d\\\|e} except it's unclosed, so it has to be escaped. - , ["+(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g" - , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g"] - , {} - , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g", "a", "b\\c"]] - - - // crazy nested {,,} and *(||) tests. - , function () { - files = [ "a", "b", "c", "d" - , "ab", "ac", "ad" - , "bc", "cb" - , "bc,d", "c,db", "c,d" - , "d)", "(b|c", "*(b|c" - , "b|c", "b|cc", "cb|c" - , "x(a|b|c)", "x(a|c)" - , "(a|b|c)", "(a|c)"] - } - , ["*(a|{b,c})", ["a", "b", "c", "ab", "ac"]] - , ["{a,*(b|c,d)}", ["a","(b|c", "*(b|c", "d)"]] - // a - // *(b|c) - // *(b|d) - , ["{a,*(b|{c,d})}", ["a","b", "bc", "cb", "c", "d"]] - , ["*(a|{b|c,c})", ["a", "b", "c", "ab", "ac", "bc", "cb"]] - - - // test various flag settings. - , [ "*(a|{b|c,c})", ["x(a|b|c)", "x(a|c)", "(a|b|c)", "(a|c)"] - , { noext: true } ] - , ["a?b", ["x/y/acb", "acb/"], {matchBase: true} - , ["x/y/acb", "acb/", "acb/d/e", "x/y/acb/d"] ] - , ["#*", ["#a", "#b"], {nocomment: true}, ["#a", "#b", "c#d"]] - - - // begin channelling Boole and deMorgan... - , "negation tests" - , function () { - files = ["d", "e", "!ab", "!abc", "a!b", "\\!a"] - } - - // anything that is NOT a* matches. - , ["!a*", ["\\!a", "d", "e", "!ab", "!abc"]] - - // anything that IS !a* matches. - , ["!a*", ["!ab", "!abc"], {nonegate: true}] - - // anything that IS a* matches - , ["!!a*", ["a!b"]] - - // anything that is NOT !a* matches - , ["!\\!a*", ["a!b", "d", "e", "\\!a"]] - - // negation nestled within a pattern - , function () { - files = [ "foo.js" - , "foo.bar" - // can't match this one without negative lookbehind. - , "foo.js.js" - , "blar.js" - , "foo." - , "boo.js.boo" ] - } - , ["*.!(js)", ["foo.bar", "foo.", "boo.js.boo"] ] - - // https://github.com/isaacs/minimatch/issues/5 - , function () { - files = [ 'a/b/.x/c' - , 'a/b/.x/c/d' - , 'a/b/.x/c/d/e' - , 'a/b/.x' - , 'a/b/.x/' - , 'a/.x/b' - , '.x' - , '.x/' - , '.x/a' - , '.x/a/b' - , 'a/.x/b/.x/c' - , '.x/.x' ] - } - , ["**/.x/**", [ '.x/' - , '.x/a' - , '.x/a/b' - , 'a/.x/b' - , 'a/b/.x/' - , 'a/b/.x/c' - , 'a/b/.x/c/d' - , 'a/b/.x/c/d/e' ] ] - - ].forEach(function (c) { - if (typeof c === "function") return c() - if (typeof c === "string") return t.comment(c) - - var pattern = c[0] - , expect = c[1].sort(alpha) - , options = c[2] || {} - , f = c[3] || files - , tapOpts = c[4] || {} - - // options.debug = true - var m = new mm.Minimatch(pattern, options) - var r = m.makeRe() - tapOpts.re = String(r) || JSON.stringify(r) - tapOpts.files = JSON.stringify(f) - tapOpts.pattern = pattern - tapOpts.set = m.set - tapOpts.negated = m.negate - - var actual = mm.match(f, pattern, options) - actual.sort(alpha) - - t.equivalent( actual, expect - , JSON.stringify(pattern) + " " + JSON.stringify(expect) - , tapOpts ) - }) - - t.comment("time=" + (Date.now() - start) + "ms") - t.end() -}) - -tap.test("global leak test", function (t) { - var globalAfter = Object.keys(global) - t.equivalent(globalAfter, globalBefore, "no new globals, please") - t.end() -}) - -function alpha (a, b) { - return a > b ? 1 : -1 -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/test/brace-expand.js b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/test/brace-expand.js deleted file mode 100644 index 7ee278a..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/test/brace-expand.js +++ /dev/null @@ -1,33 +0,0 @@ -var tap = require("tap") - , minimatch = require("../") - -tap.test("brace expansion", function (t) { - // [ pattern, [expanded] ] - ; [ [ "a{b,c{d,e},{f,g}h}x{y,z}" - , [ "abxy" - , "abxz" - , "acdxy" - , "acdxz" - , "acexy" - , "acexz" - , "afhxy" - , "afhxz" - , "aghxy" - , "aghxz" ] ] - , [ "a{1..5}b" - , [ "a1b" - , "a2b" - , "a3b" - , "a4b" - , "a5b" ] ] - , [ "a{b}c", ["a{b}c"] ] - ].forEach(function (tc) { - var p = tc[0] - , expect = tc[1] - t.equivalent(minimatch.braceExpand(p), expect, p) - }) - console.error("ending") - t.end() -}) - - diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/test/caching.js b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/test/caching.js deleted file mode 100644 index 0fec4b0..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/test/caching.js +++ /dev/null @@ -1,14 +0,0 @@ -var Minimatch = require("../minimatch.js").Minimatch -var tap = require("tap") -tap.test("cache test", function (t) { - var mm1 = new Minimatch("a?b") - var mm2 = new Minimatch("a?b") - t.equal(mm1, mm2, "should get the same object") - // the lru should drop it after 100 entries - for (var i = 0; i < 100; i ++) { - new Minimatch("a"+i) - } - mm2 = new Minimatch("a?b") - t.notEqual(mm1, mm2, "cache should have dropped") - t.end() -}) diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/test/defaults.js b/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/test/defaults.js deleted file mode 100644 index 25f1f60..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/node_modules/minimatch/test/defaults.js +++ /dev/null @@ -1,274 +0,0 @@ -// http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test -// -// TODO: Some of these tests do very bad things with backslashes, and will -// most likely fail badly on windows. They should probably be skipped. - -var tap = require("tap") - , globalBefore = Object.keys(global) - , mm = require("../") - , files = [ "a", "b", "c", "d", "abc" - , "abd", "abe", "bb", "bcd" - , "ca", "cb", "dd", "de" - , "bdir/", "bdir/cfile"] - , next = files.concat([ "a-b", "aXb" - , ".x", ".y" ]) - -tap.test("basic tests", function (t) { - var start = Date.now() - - // [ pattern, [matches], MM opts, files, TAP opts] - ; [ "http://www.bashcookbook.com/bashinfo" + - "/source/bash-1.14.7/tests/glob-test" - , ["a*", ["a", "abc", "abd", "abe"]] - , ["X*", ["X*"], {nonull: true}] - - // allow null glob expansion - , ["X*", []] - - // isaacs: Slightly different than bash/sh/ksh - // \\* is not un-escaped to literal "*" in a failed match, - // but it does make it get treated as a literal star - , ["\\*", ["\\*"], {nonull: true}] - , ["\\**", ["\\**"], {nonull: true}] - , ["\\*\\*", ["\\*\\*"], {nonull: true}] - - , ["b*/", ["bdir/"]] - , ["c*", ["c", "ca", "cb"]] - , ["**", files] - - , ["\\.\\./*/", ["\\.\\./*/"], {nonull: true}] - , ["s/\\..*//", ["s/\\..*//"], {nonull: true}] - - , "legendary larry crashes bashes" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/"], {nonull: true}] - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/"], {nonull: true}] - - , "character classes" - , ["[a-c]b*", ["abc", "abd", "abe", "bb", "cb"]] - , ["[a-y]*[^c]", ["abd", "abe", "bb", "bcd", - "bdir/", "ca", "cb", "dd", "de"]] - , ["a*[^c]", ["abd", "abe"]] - , function () { files.push("a-b", "aXb") } - , ["a[X-]b", ["a-b", "aXb"]] - , function () { files.push(".x", ".y") } - , ["[^a-c]*", ["d", "dd", "de"]] - , function () { files.push("a*b/", "a*b/ooo") } - , ["a\\*b/*", ["a*b/ooo"]] - , ["a\\*?/*", ["a*b/ooo"]] - , ["*\\\\!*", [], {null: true}, ["echo !7"]] - , ["*\\!*", ["echo !7"], null, ["echo !7"]] - , ["*.\\*", ["r.*"], null, ["r.*"]] - , ["a[b]c", ["abc"]] - , ["a[\\b]c", ["abc"]] - , ["a?c", ["abc"]] - , ["a\\*c", [], {null: true}, ["abc"]] - , ["", [""], { null: true }, [""]] - - , "http://www.opensource.apple.com/source/bash/bash-23/" + - "bash/tests/glob-test" - , function () { files.push("man/", "man/man1/", "man/man1/bash.1") } - , ["*/man*/bash.*", ["man/man1/bash.1"]] - , ["man/man1/bash.1", ["man/man1/bash.1"]] - , ["a***c", ["abc"], null, ["abc"]] - , ["a*****?c", ["abc"], null, ["abc"]] - , ["?*****??", ["abc"], null, ["abc"]] - , ["*****??", ["abc"], null, ["abc"]] - , ["?*****?c", ["abc"], null, ["abc"]] - , ["?***?****c", ["abc"], null, ["abc"]] - , ["?***?****?", ["abc"], null, ["abc"]] - , ["?***?****", ["abc"], null, ["abc"]] - , ["*******c", ["abc"], null, ["abc"]] - , ["*******?", ["abc"], null, ["abc"]] - , ["a*cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??k***", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??***k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??***k**", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a****c**?**??*****", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["[-abc]", ["-"], null, ["-"]] - , ["[abc-]", ["-"], null, ["-"]] - , ["\\", ["\\"], null, ["\\"]] - , ["[\\\\]", ["\\"], null, ["\\"]] - , ["[[]", ["["], null, ["["]] - , ["[", ["["], null, ["["]] - , ["[*", ["[abc"], null, ["[abc"]] - , "a right bracket shall lose its special meaning and\n" + - "represent itself in a bracket expression if it occurs\n" + - "first in the list. -- POSIX.2 2.8.3.2" - , ["[]]", ["]"], null, ["]"]] - , ["[]-]", ["]"], null, ["]"]] - , ["[a-\z]", ["p"], null, ["p"]] - , ["??**********?****?", [], { null: true }, ["abc"]] - , ["??**********?****c", [], { null: true }, ["abc"]] - , ["?************c****?****", [], { null: true }, ["abc"]] - , ["*c*?**", [], { null: true }, ["abc"]] - , ["a*****c*?**", [], { null: true }, ["abc"]] - , ["a********???*******", [], { null: true }, ["abc"]] - , ["[]", [], { null: true }, ["a"]] - , ["[abc", [], { null: true }, ["["]] - - , "nocase tests" - , ["XYZ", ["xYz"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - , ["ab*", ["ABC"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - , ["[ia]?[ck]", ["ABC", "IjK"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - - // [ pattern, [matches], MM opts, files, TAP opts] - , "onestar/twostar" - , ["{/*,*}", [], {null: true}, ["/asdf/asdf/asdf"]] - , ["{/?,*}", ["/a", "bb"], {null: true} - , ["/a", "/b/b", "/a/b/c", "bb"]] - - , "dots should not match unless requested" - , ["**", ["a/b"], {}, ["a/b", "a/.d", ".a/.d"]] - - // .. and . can only match patterns starting with ., - // even when options.dot is set. - , function () { - files = ["a/./b", "a/../b", "a/c/b", "a/.d/b"] - } - , ["a/*/b", ["a/c/b", "a/.d/b"], {dot: true}] - , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: true}] - , ["a/*/b", ["a/c/b"], {dot:false}] - , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: false}] - - - // this also tests that changing the options needs - // to change the cache key, even if the pattern is - // the same! - , ["**", ["a/b","a/.d",".a/.d"], { dot: true } - , [ ".a/.d", "a/.d", "a/b"]] - - , "paren sets cannot contain slashes" - , ["*(a/b)", ["*(a/b)"], {nonull: true}, ["a/b"]] - - // brace sets trump all else. - // - // invalid glob pattern. fails on bash4 and bsdglob. - // however, in this implementation, it's easier just - // to do the intuitive thing, and let brace-expansion - // actually come before parsing any extglob patterns, - // like the documentation seems to say. - // - // XXX: if anyone complains about this, either fix it - // or tell them to grow up and stop complaining. - // - // bash/bsdglob says this: - // , ["*(a|{b),c)}", ["*(a|{b),c)}"], {}, ["a", "ab", "ac", "ad"]] - // but we do this instead: - , ["*(a|{b),c)}", ["a", "ab", "ac"], {}, ["a", "ab", "ac", "ad"]] - - // test partial parsing in the presence of comment/negation chars - , ["[!a*", ["[!ab"], {}, ["[!ab", "[ab"]] - , ["[#a*", ["[#ab"], {}, ["[#ab", "[ab"]] - - // like: {a,b|c\\,d\\\|e} except it's unclosed, so it has to be escaped. - , ["+(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g" - , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g"] - , {} - , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g", "a", "b\\c"]] - - - // crazy nested {,,} and *(||) tests. - , function () { - files = [ "a", "b", "c", "d" - , "ab", "ac", "ad" - , "bc", "cb" - , "bc,d", "c,db", "c,d" - , "d)", "(b|c", "*(b|c" - , "b|c", "b|cc", "cb|c" - , "x(a|b|c)", "x(a|c)" - , "(a|b|c)", "(a|c)"] - } - , ["*(a|{b,c})", ["a", "b", "c", "ab", "ac"]] - , ["{a,*(b|c,d)}", ["a","(b|c", "*(b|c", "d)"]] - // a - // *(b|c) - // *(b|d) - , ["{a,*(b|{c,d})}", ["a","b", "bc", "cb", "c", "d"]] - , ["*(a|{b|c,c})", ["a", "b", "c", "ab", "ac", "bc", "cb"]] - - - // test various flag settings. - , [ "*(a|{b|c,c})", ["x(a|b|c)", "x(a|c)", "(a|b|c)", "(a|c)"] - , { noext: true } ] - , ["a?b", ["x/y/acb", "acb/"], {matchBase: true} - , ["x/y/acb", "acb/", "acb/d/e", "x/y/acb/d"] ] - , ["#*", ["#a", "#b"], {nocomment: true}, ["#a", "#b", "c#d"]] - - - // begin channelling Boole and deMorgan... - , "negation tests" - , function () { - files = ["d", "e", "!ab", "!abc", "a!b", "\\!a"] - } - - // anything that is NOT a* matches. - , ["!a*", ["\\!a", "d", "e", "!ab", "!abc"]] - - // anything that IS !a* matches. - , ["!a*", ["!ab", "!abc"], {nonegate: true}] - - // anything that IS a* matches - , ["!!a*", ["a!b"]] - - // anything that is NOT !a* matches - , ["!\\!a*", ["a!b", "d", "e", "\\!a"]] - - // negation nestled within a pattern - , function () { - files = [ "foo.js" - , "foo.bar" - // can't match this one without negative lookbehind. - , "foo.js.js" - , "blar.js" - , "foo." - , "boo.js.boo" ] - } - , ["*.!(js)", ["foo.bar", "foo.", "boo.js.boo"] ] - - ].forEach(function (c) { - if (typeof c === "function") return c() - if (typeof c === "string") return t.comment(c) - - var pattern = c[0] - , expect = c[1].sort(alpha) - , options = c[2] || {} - , f = c[3] || files - , tapOpts = c[4] || {} - - // options.debug = true - var Class = mm.defaults(options).Minimatch - var m = new Class(pattern, {}) - var r = m.makeRe() - tapOpts.re = String(r) || JSON.stringify(r) - tapOpts.files = JSON.stringify(f) - tapOpts.pattern = pattern - tapOpts.set = m.set - tapOpts.negated = m.negate - - var actual = mm.match(f, pattern, options) - actual.sort(alpha) - - t.equivalent( actual, expect - , JSON.stringify(pattern) + " " + JSON.stringify(expect) - , tapOpts ) - }) - - t.comment("time=" + (Date.now() - start) + "ms") - t.end() -}) - -tap.test("global leak test", function (t) { - var globalAfter = Object.keys(global) - t.equivalent(globalAfter, globalBefore, "no new globals, please") - t.end() -}) - -function alpha (a, b) { - return a > b ? 1 : -1 -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/package.json b/node_modules/nodeunit/node_modules/tap/node_modules/glob/package.json deleted file mode 100644 index a964479..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "name": "glob", - "description": "a little globber", - "version": "3.1.17", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-glob.git" - }, - "main": "glob.js", - "engines": { - "node": "*" - }, - "dependencies": { - "minimatch": "0.2", - "graceful-fs": "~1.1.2", - "inherits": "1" - }, - "devDependencies": { - "tap": "~0.4.0", - "mkdirp": "0", - "rimraf": "1" - }, - "scripts": { - "test": "tap test/*.js" - }, - "license": "BSD", - "readme": "# Glob\n\nThis is a glob implementation in JavaScript. It uses the `minimatch`\nlibrary to do its matching.\n\n## Attention: node-glob users!\n\nThe API has changed dramatically between 2.x and 3.x. This library is\nnow 100% JavaScript, and the integer flags have been replaced with an\noptions object.\n\nAlso, there's an event emitter class, proper tests, and all the other\nthings you've come to expect from node modules.\n\nAnd best of all, no compilation!\n\n## Usage\n\n```javascript\nvar glob = require(\"glob\")\n\n// options is optional\nglob(\"**/*.js\", options, function (er, files) {\n // files is an array of filenames.\n // If the `nonull` option is set, and nothing\n // was found, then files is [\"**/*.js\"]\n // er is an error object or null.\n})\n```\n\n## Features\n\nPlease see the [minimatch\ndocumentation](https://github.com/isaacs/minimatch) for more details.\n\nSupports these glob features:\n\n* Brace Expansion\n* Extended glob matching\n* \"Globstar\" `**` matching\n\nSee:\n\n* `man sh`\n* `man bash`\n* `man 3 fnmatch`\n* `man 5 gitignore`\n* [minimatch documentation](https://github.com/isaacs/minimatch)\n\n## glob(pattern, [options], cb)\n\n* `pattern` {String} Pattern to be matched\n* `options` {Object}\n* `cb` {Function}\n * `err` {Error | null}\n * `matches` {Array} filenames found matching the pattern\n\nPerform an asynchronous glob search.\n\n## glob.sync(pattern, [options]\n\n* `pattern` {String} Pattern to be matched\n* `options` {Object}\n* return: {Array} filenames found matching the pattern\n\nPerform a synchronous glob search.\n\n## Class: glob.Glob\n\nCreate a Glob object by instanting the `glob.Glob` class.\n\n```javascript\nvar Glob = require(\"glob\").Glob\nvar mg = new Glob(pattern, options, cb)\n```\n\nIt's an EventEmitter, and starts walking the filesystem to find matches\nimmediately.\n\n### new glob.Glob(pattern, [options], [cb])\n\n* `pattern` {String} pattern to search for\n* `options` {Object}\n* `cb` {Function} Called when an error occurs, or matches are found\n * `err` {Error | null}\n * `matches` {Array} filenames found matching the pattern\n\nNote that if the `sync` flag is set in the options, then matches will\nbe immediately available on the `g.found` member.\n\n### Properties\n\n* `minimatch` The minimatch object that the glob uses.\n* `options` The options object passed in.\n* `error` The error encountered. When an error is encountered, the\n glob object is in an undefined state, and should be discarded.\n* `aborted` Boolean which is set to true when calling `abort()`. There\n is no way at this time to continue a glob search after aborting, but\n you can re-use the statCache to avoid having to duplicate syscalls.\n\n### Events\n\n* `end` When the matching is finished, this is emitted with all the\n matches found. If the `nonull` option is set, and no match was found,\n then the `matches` list contains the original pattern. The matches\n are sorted, unless the `nosort` flag is set.\n* `match` Every time a match is found, this is emitted with the matched.\n* `error` Emitted when an unexpected error is encountered, or whenever\n any fs error occurs if `options.strict` is set.\n* `abort` When `abort()` is called, this event is raised.\n\n### Methods\n\n* `abort` Stop the search.\n\n### Options\n\nAll the options that can be passed to Minimatch can also be passed to\nGlob to change pattern matching behavior. Also, some have been added,\nor have glob-specific ramifications.\n\nAll options are false by default, unless otherwise noted.\n\nAll options are added to the glob object, as well.\n\n* `cwd` The current working directory in which to search. Defaults\n to `process.cwd()`.\n* `root` The place where patterns starting with `/` will be mounted\n onto. Defaults to `path.resolve(options.cwd, \"/\")` (`/` on Unix\n systems, and `C:\\` or some such on Windows.)\n* `nomount` By default, a pattern starting with a forward-slash will be\n \"mounted\" onto the root setting, so that a valid filesystem path is\n returned. Set this flag to disable that behavior.\n* `mark` Add a `/` character to directory matches. Note that this\n requires additional stat calls.\n* `nosort` Don't sort the results.\n* `stat` Set to true to stat *all* results. This reduces performance\n somewhat, and is completely unnecessary, unless `readdir` is presumed\n to be an untrustworthy indicator of file existence. It will cause\n ELOOP to be triggered one level sooner in the case of cyclical\n symbolic links.\n* `silent` When an unusual error is encountered\n when attempting to read a directory, a warning will be printed to\n stderr. Set the `silent` option to true to suppress these warnings.\n* `strict` When an unusual error is encountered\n when attempting to read a directory, the process will just continue on\n in search of other matches. Set the `strict` option to raise an error\n in these cases.\n* `statCache` A cache of results of filesystem information, to prevent\n unnecessary stat calls. While it should not normally be necessary to\n set this, you may pass the statCache from one glob() call to the\n options object of another, if you know that the filesystem will not\n change between calls. (See \"Race Conditions\" below.)\n* `sync` Perform a synchronous glob search.\n* `nounique` In some cases, brace-expanded patterns can result in the\n same file showing up multiple times in the result set. By default,\n this implementation prevents duplicates in the result set.\n Set this flag to disable that behavior.\n* `nonull` Set to never return an empty set, instead returning a set\n containing the pattern itself. This is the default in glob(3).\n* `nocase` Perform a case-insensitive match. Note that case-insensitive\n filesystems will sometimes result in glob returning results that are\n case-insensitively matched anyway, since readdir and stat will not\n raise an error.\n* `debug` Set to enable debug logging in minimatch and glob.\n* `globDebug` Set to enable debug logging in glob, but not minimatch.\n\n## Comparisons to other fnmatch/glob implementations\n\nWhile strict compliance with the existing standards is a worthwhile\ngoal, some discrepancies exist between node-glob and other\nimplementations, and are intentional.\n\nIf the pattern starts with a `!` character, then it is negated. Set the\n`nonegate` flag to suppress this behavior, and treat leading `!`\ncharacters normally. This is perhaps relevant if you wish to start the\npattern with a negative extglob pattern like `!(a|B)`. Multiple `!`\ncharacters at the start of a pattern will negate the pattern multiple\ntimes.\n\nIf a pattern starts with `#`, then it is treated as a comment, and\nwill not match anything. Use `\\#` to match a literal `#` at the\nstart of a line, or set the `nocomment` flag to suppress this behavior.\n\nThe double-star character `**` is supported by default, unless the\n`noglobstar` flag is set. This is supported in the manner of bsdglob\nand bash 4.1, where `**` only has special significance if it is the only\nthing in a path part. That is, `a/**/b` will match `a/x/y/b`, but\n`a/**b` will not. **Note that this is different from the way that `**` is\nhandled by ruby's `Dir` class.**\n\nIf an escaped pattern has no matches, and the `nonull` flag is set,\nthen glob returns the pattern as-provided, rather than\ninterpreting the character escapes. For example,\n`glob.match([], \"\\\\*a\\\\?\")` will return `\"\\\\*a\\\\?\"` rather than\n`\"*a?\"`. This is akin to setting the `nullglob` option in bash, except\nthat it does not resolve escaped pattern characters.\n\nIf brace expansion is not disabled, then it is performed before any\nother interpretation of the glob pattern. Thus, a pattern like\n`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded\n**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are\nchecked for validity. Since those two are valid, matching proceeds.\n\n## Windows\n\n**Please only use forward-slashes in glob expressions.**\n\nThough windows uses either `/` or `\\` as its path separator, only `/`\ncharacters are used by this glob implementation. You must use\nforward-slashes **only** in glob expressions. Back-slashes will always\nbe interpreted as escape characters, not path separators.\n\nResults from absolute patterns such as `/foo/*` are mounted onto the\nroot setting using `path.join`. On windows, this will by default result\nin `/foo/*` matching `C:\\foo\\bar.txt`.\n\n## Race Conditions\n\nGlob searching, by its very nature, is susceptible to race conditions,\nsince it relies on directory walking and such.\n\nAs a result, it is possible that a file that exists when glob looks for\nit may have been deleted or modified by the time it returns the result.\n\nAs part of its internal implementation, this program caches all stat\nand readdir calls that it makes, in order to cut down on system\noverhead. However, this also makes it even more susceptible to races,\nespecially if the statCache object is reused between glob calls.\n\nUsers are thus advised not to use a glob result as a\nguarantee of filesystem state in the face of rapid changes.\nFor the vast majority of operations, this is never a problem.\n", - "readmeFilename": "README.md", - "_id": "glob@3.1.17", - "_from": "glob@~3.1.14" -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/test/00-setup.js b/node_modules/nodeunit/node_modules/tap/node_modules/glob/test/00-setup.js deleted file mode 100644 index 245afaf..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/test/00-setup.js +++ /dev/null @@ -1,176 +0,0 @@ -// just a little pre-run script to set up the fixtures. -// zz-finish cleans it up - -var mkdirp = require("mkdirp") -var path = require("path") -var i = 0 -var tap = require("tap") -var fs = require("fs") -var rimraf = require("rimraf") - -var files = -[ "a/.abcdef/x/y/z/a" -, "a/abcdef/g/h" -, "a/abcfed/g/h" -, "a/b/c/d" -, "a/bc/e/f" -, "a/c/d/c/b" -, "a/cb/e/f" -] - -var symlinkTo = path.resolve(__dirname, "a/symlink/a/b/c") -var symlinkFrom = "../.." - -files = files.map(function (f) { - return path.resolve(__dirname, f) -}) - -tap.test("remove fixtures", function (t) { - rimraf(path.resolve(__dirname, "a"), function (er) { - t.ifError(er, "remove fixtures") - t.end() - }) -}) - -files.forEach(function (f) { - tap.test(f, function (t) { - var d = path.dirname(f) - mkdirp(d, 0755, function (er) { - if (er) { - t.fail(er) - return t.bailout() - } - fs.writeFile(f, "i like tests", function (er) { - t.ifError(er, "make file") - t.end() - }) - }) - }) -}) - -if (process.platform !== "win32") { - tap.test("symlinky", function (t) { - var d = path.dirname(symlinkTo) - console.error("mkdirp", d) - mkdirp(d, 0755, function (er) { - t.ifError(er) - fs.symlink(symlinkFrom, symlinkTo, "dir", function (er) { - t.ifError(er, "make symlink") - t.end() - }) - }) - }) -} - -;["foo","bar","baz","asdf","quux","qwer","rewq"].forEach(function (w) { - w = "/tmp/glob-test/" + w - tap.test("create " + w, function (t) { - mkdirp(w, function (er) { - if (er) - throw er - t.pass(w) - t.end() - }) - }) -}) - - -// generate the bash pattern test-fixtures if possible -if (process.platform === "win32" || !process.env.TEST_REGEN) { - console.error("Windows, or TEST_REGEN unset. Using cached fixtures.") - return -} - -var spawn = require("child_process").spawn; -var globs = - // put more patterns here. - // anything that would be directly in / should be in /tmp/glob-test - ["test/a/*/+(c|g)/./d" - ,"test/a/**/[cg]/../[cg]" - ,"test/a/{b,c,d,e,f}/**/g" - ,"test/a/b/**" - ,"test/**/g" - ,"test/a/abc{fed,def}/g/h" - ,"test/a/abc{fed/g,def}/**/" - ,"test/a/abc{fed/g,def}/**///**/" - ,"test/**/a/**/" - ,"test/+(a|b|c)/a{/,bc*}/**" - ,"test/*/*/*/f" - ,"test/**/f" - ,"test/a/symlink/a/b/c/a/b/c/a/b/c//a/b/c////a/b/c/**/b/c/**" - ,"{./*/*,/tmp/glob-test/*}" - ,"{/tmp/glob-test/*,*}" // evil owl face! how you taunt me! - ,"test/a/!(symlink)/**" - ] -var bashOutput = {} -var fs = require("fs") - -globs.forEach(function (pattern) { - tap.test("generate fixture " + pattern, function (t) { - var cmd = "shopt -s globstar && " + - "shopt -s extglob && " + - "shopt -s nullglob && " + - // "shopt >&2; " + - "eval \'for i in " + pattern + "; do echo $i; done\'" - var cp = spawn("bash", ["-c", cmd], { cwd: path.dirname(__dirname) }) - var out = [] - cp.stdout.on("data", function (c) { - out.push(c) - }) - cp.stderr.pipe(process.stderr) - cp.on("close", function (code) { - out = flatten(out) - if (!out) - out = [] - else - out = cleanResults(out.split(/\r*\n/)) - - bashOutput[pattern] = out - t.notOk(code, "bash test should finish nicely") - t.end() - }) - }) -}) - -tap.test("save fixtures", function (t) { - var fname = path.resolve(__dirname, "bash-results.json") - var data = JSON.stringify(bashOutput, null, 2) + "\n" - fs.writeFile(fname, data, function (er) { - t.ifError(er) - t.end() - }) -}) - -function cleanResults (m) { - // normalize discrepancies in ordering, duplication, - // and ending slashes. - return m.map(function (m) { - return m.replace(/\/+/g, "/").replace(/\/$/, "") - }).sort(alphasort).reduce(function (set, f) { - if (f !== set[set.length - 1]) set.push(f) - return set - }, []).sort(alphasort).map(function (f) { - // de-windows - return (process.platform !== 'win32') ? f - : f.replace(/^[a-zA-Z]:\\\\/, '/').replace(/\\/g, '/') - }) -} - -function flatten (chunks) { - var s = 0 - chunks.forEach(function (c) { s += c.length }) - var out = new Buffer(s) - s = 0 - chunks.forEach(function (c) { - c.copy(out, s) - s += c.length - }) - - return out.toString().trim() -} - -function alphasort (a, b) { - a = a.toLowerCase() - b = b.toLowerCase() - return a > b ? 1 : a < b ? -1 : 0 -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/test/bash-comparison.js b/node_modules/nodeunit/node_modules/tap/node_modules/glob/test/bash-comparison.js deleted file mode 100644 index 239ed1a..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/test/bash-comparison.js +++ /dev/null @@ -1,63 +0,0 @@ -// basic test -// show that it does the same thing by default as the shell. -var tap = require("tap") -, child_process = require("child_process") -, bashResults = require("./bash-results.json") -, globs = Object.keys(bashResults) -, glob = require("../") -, path = require("path") - -// run from the root of the project -// this is usually where you're at anyway, but be sure. -process.chdir(path.resolve(__dirname, "..")) - -function alphasort (a, b) { - a = a.toLowerCase() - b = b.toLowerCase() - return a > b ? 1 : a < b ? -1 : 0 -} - -globs.forEach(function (pattern) { - var expect = bashResults[pattern] - // anything regarding the symlink thing will fail on windows, so just skip it - if (process.platform === "win32" && - expect.some(function (m) { - return /\/symlink\//.test(m) - })) - return - - tap.test(pattern, function (t) { - glob(pattern, function (er, matches) { - if (er) - throw er - - // sort and unmark, just to match the shell results - matches = cleanResults(matches) - - t.deepEqual(matches, expect, pattern) - t.end() - }) - }) - - tap.test(pattern + " sync", function (t) { - var matches = cleanResults(glob.sync(pattern)) - - t.deepEqual(matches, expect, "should match shell") - t.end() - }) -}) - -function cleanResults (m) { - // normalize discrepancies in ordering, duplication, - // and ending slashes. - return m.map(function (m) { - return m.replace(/\/+/g, "/").replace(/\/$/, "") - }).sort(alphasort).reduce(function (set, f) { - if (f !== set[set.length - 1]) set.push(f) - return set - }, []).sort(alphasort).map(function (f) { - // de-windows - return (process.platform !== 'win32') ? f - : f.replace(/^[a-zA-Z]:[\/\\]+/, '/').replace(/[\\\/]+/g, '/') - }) -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/test/bash-results.json b/node_modules/nodeunit/node_modules/tap/node_modules/glob/test/bash-results.json deleted file mode 100644 index 8c341db..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/test/bash-results.json +++ /dev/null @@ -1,347 +0,0 @@ -{ - "test/a/*/+(c|g)/./d": [ - "test/a/b/c/./d" - ], - "test/a/**/[cg]/../[cg]": [ - "test/a/abcdef/g/../g", - "test/a/abcfed/g/../g", - "test/a/b/c/../c", - "test/a/c/../c", - "test/a/c/d/c/../c", - "test/a/symlink/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c" - ], - "test/a/{b,c,d,e,f}/**/g": [], - "test/a/b/**": [ - "test/a/b", - "test/a/b/c", - "test/a/b/c/d" - ], - "test/**/g": [ - "test/a/abcdef/g", - "test/a/abcfed/g" - ], - "test/a/abc{fed,def}/g/h": [ - "test/a/abcdef/g/h", - "test/a/abcfed/g/h" - ], - "test/a/abc{fed/g,def}/**/": [ - "test/a/abcdef", - "test/a/abcdef/g", - "test/a/abcfed/g" - ], - "test/a/abc{fed/g,def}/**///**/": [ - "test/a/abcdef", - "test/a/abcdef/g", - "test/a/abcfed/g" - ], - "test/**/a/**/": [ - "test/a", - "test/a/abcdef", - "test/a/abcdef/g", - "test/a/abcfed", - "test/a/abcfed/g", - "test/a/b", - "test/a/b/c", - "test/a/bc", - "test/a/bc/e", - "test/a/c", - "test/a/c/d", - "test/a/c/d/c", - "test/a/cb", - "test/a/cb/e", - "test/a/symlink", - "test/a/symlink/a", - "test/a/symlink/a/b", - "test/a/symlink/a/b/c", - "test/a/symlink/a/b/c/a", - "test/a/symlink/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b" - ], - "test/+(a|b|c)/a{/,bc*}/**": [ - "test/a/abcdef", - "test/a/abcdef/g", - "test/a/abcdef/g/h", - "test/a/abcfed", - "test/a/abcfed/g", - "test/a/abcfed/g/h" - ], - "test/*/*/*/f": [ - "test/a/bc/e/f", - "test/a/cb/e/f" - ], - "test/**/f": [ - "test/a/bc/e/f", - "test/a/cb/e/f" - ], - "test/a/symlink/a/b/c/a/b/c/a/b/c//a/b/c////a/b/c/**/b/c/**": [ - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c" - ], - "{./*/*,/tmp/glob-test/*}": [ - "./examples/g.js", - "./examples/usr-local.js", - "./node_modules/graceful-fs", - "./node_modules/inherits", - "./node_modules/minimatch", - "./node_modules/mkdirp", - "./node_modules/rimraf", - "./node_modules/tap", - "./test/00-setup.js", - "./test/a", - "./test/bash-comparison.js", - "./test/bash-results.json", - "./test/cwd-test.js", - "./test/mark.js", - "./test/pause-resume.js", - "./test/root-nomount.js", - "./test/root.js", - "./test/zz-cleanup.js", - "/tmp/glob-test/asdf", - "/tmp/glob-test/bar", - "/tmp/glob-test/baz", - "/tmp/glob-test/foo", - "/tmp/glob-test/quux", - "/tmp/glob-test/qwer", - "/tmp/glob-test/rewq" - ], - "{/tmp/glob-test/*,*}": [ - "/tmp/glob-test/asdf", - "/tmp/glob-test/bar", - "/tmp/glob-test/baz", - "/tmp/glob-test/foo", - "/tmp/glob-test/quux", - "/tmp/glob-test/qwer", - "/tmp/glob-test/rewq", - "examples", - "glob.js", - "LICENSE", - "node_modules", - "package.json", - "README.md", - "test" - ], - "test/a/!(symlink)/**": [ - "test/a/abcdef", - "test/a/abcdef/g", - "test/a/abcdef/g/h", - "test/a/abcfed", - "test/a/abcfed/g", - "test/a/abcfed/g/h", - "test/a/b", - "test/a/b/c", - "test/a/b/c/d", - "test/a/bc", - "test/a/bc/e", - "test/a/bc/e/f", - "test/a/c", - "test/a/c/d", - "test/a/c/d/c", - "test/a/c/d/c/b", - "test/a/cb", - "test/a/cb/e", - "test/a/cb/e/f" - ] -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/test/cwd-test.js b/node_modules/nodeunit/node_modules/tap/node_modules/glob/test/cwd-test.js deleted file mode 100644 index 352c27e..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/test/cwd-test.js +++ /dev/null @@ -1,55 +0,0 @@ -var tap = require("tap") - -var origCwd = process.cwd() -process.chdir(__dirname) - -tap.test("changing cwd and searching for **/d", function (t) { - var glob = require('../') - var path = require('path') - t.test('.', function (t) { - glob('**/d', function (er, matches) { - t.ifError(er) - t.like(matches, [ 'a/b/c/d', 'a/c/d' ]) - t.end() - }) - }) - - t.test('a', function (t) { - glob('**/d', {cwd:path.resolve('a')}, function (er, matches) { - t.ifError(er) - t.like(matches, [ 'b/c/d', 'c/d' ]) - t.end() - }) - }) - - t.test('a/b', function (t) { - glob('**/d', {cwd:path.resolve('a/b')}, function (er, matches) { - t.ifError(er) - t.like(matches, [ 'c/d' ]) - t.end() - }) - }) - - t.test('a/b/', function (t) { - glob('**/d', {cwd:path.resolve('a/b/')}, function (er, matches) { - t.ifError(er) - t.like(matches, [ 'c/d' ]) - t.end() - }) - }) - - t.test('.', function (t) { - glob('**/d', {cwd: process.cwd()}, function (er, matches) { - t.ifError(er) - t.like(matches, [ 'a/b/c/d', 'a/c/d' ]) - t.end() - }) - }) - - t.test('cd -', function (t) { - process.chdir(origCwd) - t.end() - }) - - t.end() -}) diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/test/mark.js b/node_modules/nodeunit/node_modules/tap/node_modules/glob/test/mark.js deleted file mode 100644 index ed68a33..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/test/mark.js +++ /dev/null @@ -1,74 +0,0 @@ -var test = require("tap").test -var glob = require('../') -process.chdir(__dirname) - -test("mark, no / on pattern", function (t) { - glob("a/*", {mark: true}, function (er, results) { - if (er) - throw er - var expect = [ 'a/abcdef/', - 'a/abcfed/', - 'a/b/', - 'a/bc/', - 'a/c/', - 'a/cb/' ] - - if (process.platform !== "win32") - expect.push('a/symlink/') - - t.same(results, expect) - t.end() - }) -}) - -test("mark=false, no / on pattern", function (t) { - glob("a/*", function (er, results) { - if (er) - throw er - var expect = [ 'a/abcdef', - 'a/abcfed', - 'a/b', - 'a/bc', - 'a/c', - 'a/cb' ] - - if (process.platform !== "win32") - expect.push('a/symlink') - t.same(results, expect) - t.end() - }) -}) - -test("mark=true, / on pattern", function (t) { - glob("a/*/", {mark: true}, function (er, results) { - if (er) - throw er - var expect = [ 'a/abcdef/', - 'a/abcfed/', - 'a/b/', - 'a/bc/', - 'a/c/', - 'a/cb/' ] - if (process.platform !== "win32") - expect.push('a/symlink/') - t.same(results, expect) - t.end() - }) -}) - -test("mark=false, / on pattern", function (t) { - glob("a/*/", function (er, results) { - if (er) - throw er - var expect = [ 'a/abcdef/', - 'a/abcfed/', - 'a/b/', - 'a/bc/', - 'a/c/', - 'a/cb/' ] - if (process.platform !== "win32") - expect.push('a/symlink/') - t.same(results, expect) - t.end() - }) -}) diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/test/pause-resume.js b/node_modules/nodeunit/node_modules/tap/node_modules/glob/test/pause-resume.js deleted file mode 100644 index e1ffbab..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/test/pause-resume.js +++ /dev/null @@ -1,73 +0,0 @@ -// show that no match events happen while paused. -var tap = require("tap") -, child_process = require("child_process") -// just some gnarly pattern with lots of matches -, pattern = "test/a/!(symlink)/**" -, bashResults = require("./bash-results.json") -, patterns = Object.keys(bashResults) -, glob = require("../") -, Glob = glob.Glob -, path = require("path") - -// run from the root of the project -// this is usually where you're at anyway, but be sure. -process.chdir(path.resolve(__dirname, "..")) - -function alphasort (a, b) { - a = a.toLowerCase() - b = b.toLowerCase() - return a > b ? 1 : a < b ? -1 : 0 -} - -function cleanResults (m) { - // normalize discrepancies in ordering, duplication, - // and ending slashes. - return m.map(function (m) { - return m.replace(/\/+/g, "/").replace(/\/$/, "") - }).sort(alphasort).reduce(function (set, f) { - if (f !== set[set.length - 1]) set.push(f) - return set - }, []).sort(alphasort).map(function (f) { - // de-windows - return (process.platform !== 'win32') ? f - : f.replace(/^[a-zA-Z]:\\\\/, '/').replace(/\\/g, '/') - }) -} - -var globResults = [] -tap.test("use a Glob object, and pause/resume it", function (t) { - var g = new Glob(pattern) - , paused = false - , res = [] - , expect = bashResults[pattern] - - g.on("pause", function () { - console.error("pause") - }) - - g.on("resume", function () { - console.error("resume") - }) - - g.on("match", function (m) { - t.notOk(g.paused, "must not be paused") - globResults.push(m) - g.pause() - t.ok(g.paused, "must be paused") - setTimeout(g.resume.bind(g), 10) - }) - - g.on("end", function (matches) { - t.pass("reached glob end") - globResults = cleanResults(globResults) - matches = cleanResults(matches) - t.deepEqual(matches, globResults, - "end event matches should be the same as match events") - - t.deepEqual(matches, expect, - "glob matches should be the same as bash results") - - t.end() - }) -}) - diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/test/root-nomount.js b/node_modules/nodeunit/node_modules/tap/node_modules/glob/test/root-nomount.js deleted file mode 100644 index 3ac5979..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/test/root-nomount.js +++ /dev/null @@ -1,39 +0,0 @@ -var tap = require("tap") - -var origCwd = process.cwd() -process.chdir(__dirname) - -tap.test("changing root and searching for /b*/**", function (t) { - var glob = require('../') - var path = require('path') - t.test('.', function (t) { - glob('/b*/**', { globDebug: true, root: '.', nomount: true }, function (er, matches) { - t.ifError(er) - t.like(matches, []) - t.end() - }) - }) - - t.test('a', function (t) { - glob('/b*/**', { globDebug: true, root: path.resolve('a'), nomount: true }, function (er, matches) { - t.ifError(er) - t.like(matches, [ '/b', '/b/c', '/b/c/d', '/bc', '/bc/e', '/bc/e/f' ]) - t.end() - }) - }) - - t.test('root=a, cwd=a/b', function (t) { - glob('/b*/**', { globDebug: true, root: 'a', cwd: path.resolve('a/b'), nomount: true }, function (er, matches) { - t.ifError(er) - t.like(matches, [ '/b', '/b/c', '/b/c/d', '/bc', '/bc/e', '/bc/e/f' ]) - t.end() - }) - }) - - t.test('cd -', function (t) { - process.chdir(origCwd) - t.end() - }) - - t.end() -}) diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/test/root.js b/node_modules/nodeunit/node_modules/tap/node_modules/glob/test/root.js deleted file mode 100644 index 95c23f9..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/test/root.js +++ /dev/null @@ -1,46 +0,0 @@ -var t = require("tap") - -var origCwd = process.cwd() -process.chdir(__dirname) - -var glob = require('../') -var path = require('path') - -t.test('.', function (t) { - glob('/b*/**', { globDebug: true, root: '.' }, function (er, matches) { - t.ifError(er) - t.like(matches, []) - t.end() - }) -}) - - -t.test('a', function (t) { - console.error("root=" + path.resolve('a')) - glob('/b*/**', { globDebug: true, root: path.resolve('a') }, function (er, matches) { - t.ifError(er) - var wanted = [ - '/b', '/b/c', '/b/c/d', '/bc', '/bc/e', '/bc/e/f' - ].map(function (m) { - return path.join(path.resolve('a'), m).replace(/\\/g, '/') - }) - - t.like(matches, wanted) - t.end() - }) -}) - -t.test('root=a, cwd=a/b', function (t) { - glob('/b*/**', { globDebug: true, root: 'a', cwd: path.resolve('a/b') }, function (er, matches) { - t.ifError(er) - t.like(matches, [ '/b', '/b/c', '/b/c/d', '/bc', '/bc/e', '/bc/e/f' ].map(function (m) { - return path.join(path.resolve('a'), m).replace(/\\/g, '/') - })) - t.end() - }) -}) - -t.test('cd -', function (t) { - process.chdir(origCwd) - t.end() -}) diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/glob/test/zz-cleanup.js b/node_modules/nodeunit/node_modules/tap/node_modules/glob/test/zz-cleanup.js deleted file mode 100644 index e085f0f..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/glob/test/zz-cleanup.js +++ /dev/null @@ -1,11 +0,0 @@ -// remove the fixtures -var tap = require("tap") -, rimraf = require("rimraf") -, path = require("path") - -tap.test("cleanup fixtures", function (t) { - rimraf(path.resolve(__dirname, "a"), function (er) { - t.ifError(er, "removed") - t.end() - }) -}) diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/inherits/LICENSE b/node_modules/nodeunit/node_modules/tap/node_modules/inherits/LICENSE deleted file mode 100644 index 5a8e332..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/inherits/LICENSE +++ /dev/null @@ -1,14 +0,0 @@ - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - Version 2, December 2004 - - Copyright (C) 2004 Sam Hocevar - - Everyone is permitted to copy and distribute verbatim or modified - copies of this license document, and changing it is allowed as long - as the name is changed. - - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. You just DO WHAT THE FUCK YOU WANT TO. - diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/inherits/README.md b/node_modules/nodeunit/node_modules/tap/node_modules/inherits/README.md deleted file mode 100644 index b2beaed..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/inherits/README.md +++ /dev/null @@ -1,51 +0,0 @@ -A dead simple way to do inheritance in JS. - - var inherits = require("inherits") - - function Animal () { - this.alive = true - } - Animal.prototype.say = function (what) { - console.log(what) - } - - inherits(Dog, Animal) - function Dog () { - Dog.super.apply(this) - } - Dog.prototype.sniff = function () { - this.say("sniff sniff") - } - Dog.prototype.bark = function () { - this.say("woof woof") - } - - inherits(Chihuahua, Dog) - function Chihuahua () { - Chihuahua.super.apply(this) - } - Chihuahua.prototype.bark = function () { - this.say("yip yip") - } - - // also works - function Cat () { - Cat.super.apply(this) - } - Cat.prototype.hiss = function () { - this.say("CHSKKSS!!") - } - inherits(Cat, Animal, { - meow: function () { this.say("miao miao") } - }) - Cat.prototype.purr = function () { - this.say("purr purr") - } - - - var c = new Chihuahua - assert(c instanceof Chihuahua) - assert(c instanceof Dog) - assert(c instanceof Animal) - -The actual function is laughably small. 10-lines small. diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/inherits/inherits-old.js b/node_modules/nodeunit/node_modules/tap/node_modules/inherits/inherits-old.js deleted file mode 100644 index ef39252..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/inherits/inherits-old.js +++ /dev/null @@ -1,40 +0,0 @@ -// This is a less perfect implementation of the inherits function, -// designed to work in cases where ES5 is not available. -// -// Note that it is a bit longer, and doesn't properly deal with -// getter/setters or property descriptor flags (enumerable, etc.) - -module.exports = inheritsOld - -function inheritsOld (c, p, proto) { - function F () { this.constructor = c } - F.prototype = p.prototype - var e = {} - for (var i in c.prototype) if (c.prototype.hasOwnProperty(i)) { - e[i] = c.prototype[i] - } - if (proto) for (var i in proto) if (proto.hasOwnProperty(i)) { - e[i] = proto[i] - } - c.prototype = new F() - for (var i in e) if (e.hasOwnProperty(i)) { - c.prototype[i] = e[i] - } - c.super = p -} - -// function Child () { -// Child.super.call(this) -// console.error([this -// ,this.constructor -// ,this.constructor === Child -// ,this.constructor.super === Parent -// ,Object.getPrototypeOf(this) === Child.prototype -// ,Object.getPrototypeOf(Object.getPrototypeOf(this)) -// === Parent.prototype -// ,this instanceof Child -// ,this instanceof Parent]) -// } -// function Parent () {} -// inheritsOld(Child, Parent) -// new Child diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/inherits/inherits.js b/node_modules/nodeunit/node_modules/tap/node_modules/inherits/inherits.js deleted file mode 100644 index 061b396..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/inherits/inherits.js +++ /dev/null @@ -1,29 +0,0 @@ -module.exports = inherits - -function inherits (c, p, proto) { - proto = proto || {} - var e = {} - ;[c.prototype, proto].forEach(function (s) { - Object.getOwnPropertyNames(s).forEach(function (k) { - e[k] = Object.getOwnPropertyDescriptor(s, k) - }) - }) - c.prototype = Object.create(p.prototype, e) - c.super = p -} - -//function Child () { -// Child.super.call(this) -// console.error([this -// ,this.constructor -// ,this.constructor === Child -// ,this.constructor.super === Parent -// ,Object.getPrototypeOf(this) === Child.prototype -// ,Object.getPrototypeOf(Object.getPrototypeOf(this)) -// === Parent.prototype -// ,this instanceof Child -// ,this instanceof Parent]) -//} -//function Parent () {} -//inherits(Child, Parent) -//new Child diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/inherits/package.json b/node_modules/nodeunit/node_modules/tap/node_modules/inherits/package.json deleted file mode 100644 index 487b6fa..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/inherits/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ "name" : "inherits" -, "description": "A tiny simple way to do classic inheritance in js" -, "version" : "1.0.0" -, "keywords" : ["inheritance", "class", "klass", "oop", "object-oriented"] -, "main" : "./inherits.js" -, "repository" : "https://github.com/isaacs/inherits" -, "license": { "type": "WTFPL2" } -, "author" : "Isaac Z. Schlueter (http://blog.izs.me/)" } diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/.npmignore b/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/.npmignore deleted file mode 100644 index 9303c34..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules/ -npm-debug.log \ No newline at end of file diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/.travis.yml b/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/.travis.yml deleted file mode 100644 index f1d0f13..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.4 - - 0.6 diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/LICENSE b/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/LICENSE deleted file mode 100644 index 432d1ae..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright 2010 James Halliday (mail@substack.net) - -This project is free software released under the MIT/X11 license: - -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: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -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. diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/README.markdown b/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/README.markdown deleted file mode 100644 index 40de04f..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/README.markdown +++ /dev/null @@ -1,61 +0,0 @@ -mkdirp -====== - -Like `mkdir -p`, but in node.js! - -[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp) - -example -======= - -pow.js ------- - var mkdirp = require('mkdirp'); - - mkdirp('/tmp/foo/bar/baz', function (err) { - if (err) console.error(err) - else console.log('pow!') - }); - -Output - pow! - -And now /tmp/foo/bar/baz exists, huzzah! - -methods -======= - -var mkdirp = require('mkdirp'); - -mkdirp(dir, mode, cb) ---------------------- - -Create a new directory and any necessary subdirectories at `dir` with octal -permission string `mode`. - -If `mode` isn't specified, it defaults to `0777 & (~process.umask())`. - -`cb(err, made)` fires with the error or the first directory `made` -that had to be created, if any. - -mkdirp.sync(dir, mode) ----------------------- - -Synchronously create a new directory and any necessary subdirectories at `dir` -with octal permission string `mode`. - -If `mode` isn't specified, it defaults to `0777 & (~process.umask())`. - -Returns the first directory that had to be created, if any. - -install -======= - -With [npm](http://npmjs.org) do: - - npm install mkdirp - -license -======= - -MIT/X11 diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/examples/pow.js b/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/examples/pow.js deleted file mode 100644 index e692421..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/examples/pow.js +++ /dev/null @@ -1,6 +0,0 @@ -var mkdirp = require('mkdirp'); - -mkdirp('/tmp/foo/bar/baz', function (err) { - if (err) console.error(err) - else console.log('pow!') -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/index.js b/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/index.js deleted file mode 100644 index fda6de8..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/index.js +++ /dev/null @@ -1,82 +0,0 @@ -var path = require('path'); -var fs = require('fs'); - -module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP; - -function mkdirP (p, mode, f, made) { - if (typeof mode === 'function' || mode === undefined) { - f = mode; - mode = 0777 & (~process.umask()); - } - if (!made) made = null; - - var cb = f || function () {}; - if (typeof mode === 'string') mode = parseInt(mode, 8); - p = path.resolve(p); - - fs.mkdir(p, mode, function (er) { - if (!er) { - made = made || p; - return cb(null, made); - } - switch (er.code) { - case 'ENOENT': - mkdirP(path.dirname(p), mode, function (er, made) { - if (er) cb(er, made); - else mkdirP(p, mode, cb, made); - }); - break; - - // In the case of any other error, just see if there's a dir - // there already. If so, then hooray! If not, then something - // is borked. - default: - fs.stat(p, function (er2, stat) { - // if the stat fails, then that's super weird. - // let the original error be the failure reason. - if (er2 || !stat.isDirectory()) cb(er, made) - else cb(null, made); - }); - break; - } - }); -} - -mkdirP.sync = function sync (p, mode, made) { - if (mode === undefined) { - mode = 0777 & (~process.umask()); - } - if (!made) made = null; - - if (typeof mode === 'string') mode = parseInt(mode, 8); - p = path.resolve(p); - - try { - fs.mkdirSync(p, mode); - made = made || p; - } - catch (err0) { - switch (err0.code) { - case 'ENOENT' : - made = sync(path.dirname(p), mode, made); - sync(p, mode, made); - break; - - // In the case of any other error, just see if there's a dir - // there already. If so, then hooray! If not, then something - // is borked. - default: - var stat; - try { - stat = fs.statSync(p); - } - catch (err1) { - throw err0; - } - if (!stat.isDirectory()) throw err0; - break; - } - } - - return made; -}; diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/package.json b/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/package.json deleted file mode 100644 index f79c6a5..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "mkdirp", - "description": "Recursively mkdir, like `mkdir -p`", - "version": "0.3.4", - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "main": "./index", - "keywords": [ - "mkdir", - "directory" - ], - "repository": { - "type": "git", - "url": "http://github.com/substack/node-mkdirp.git" - }, - "scripts": { - "test": "tap test/*.js" - }, - "devDependencies": { - "tap": "~0.2.4" - }, - "license": "MIT/X11", - "engines": { - "node": "*" - }, - "readme": "mkdirp\n======\n\nLike `mkdir -p`, but in node.js!\n\n[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)\n\nexample\n=======\n\npow.js\n------\n var mkdirp = require('mkdirp');\n \n mkdirp('/tmp/foo/bar/baz', function (err) {\n if (err) console.error(err)\n else console.log('pow!')\n });\n\nOutput\n pow!\n\nAnd now /tmp/foo/bar/baz exists, huzzah!\n\nmethods\n=======\n\nvar mkdirp = require('mkdirp');\n\nmkdirp(dir, mode, cb)\n---------------------\n\nCreate a new directory and any necessary subdirectories at `dir` with octal\npermission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\n`cb(err, made)` fires with the error or the first directory `made`\nthat had to be created, if any.\n\nmkdirp.sync(dir, mode)\n----------------------\n\nSynchronously create a new directory and any necessary subdirectories at `dir`\nwith octal permission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\nReturns the first directory that had to be created, if any.\n\ninstall\n=======\n\nWith [npm](http://npmjs.org) do:\n\n npm install mkdirp\n\nlicense\n=======\n\nMIT/X11\n", - "readmeFilename": "README.markdown", - "_id": "mkdirp@0.3.4", - "_from": "mkdirp@~0.3" -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/chmod.js b/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/chmod.js deleted file mode 100644 index 520dcb8..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/chmod.js +++ /dev/null @@ -1,38 +0,0 @@ -var mkdirp = require('../').mkdirp; -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -var ps = [ '', 'tmp' ]; - -for (var i = 0; i < 25; i++) { - var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - ps.push(dir); -} - -var file = ps.join('/'); - -test('chmod-pre', function (t) { - var mode = 0744 - mkdirp(file, mode, function (er) { - t.ifError(er, 'should not error'); - fs.stat(file, function (er, stat) { - t.ifError(er, 'should exist'); - t.ok(stat && stat.isDirectory(), 'should be directory'); - t.equal(stat && stat.mode & 0777, mode, 'should be 0744'); - t.end(); - }); - }); -}); - -test('chmod', function (t) { - var mode = 0755 - mkdirp(file, mode, function (er) { - t.ifError(er, 'should not error'); - fs.stat(file, function (er, stat) { - t.ifError(er, 'should exist'); - t.ok(stat && stat.isDirectory(), 'should be directory'); - t.end(); - }); - }); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/clobber.js b/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/clobber.js deleted file mode 100644 index 0eb7099..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/clobber.js +++ /dev/null @@ -1,37 +0,0 @@ -var mkdirp = require('../').mkdirp; -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -var ps = [ '', 'tmp' ]; - -for (var i = 0; i < 25; i++) { - var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - ps.push(dir); -} - -var file = ps.join('/'); - -// a file in the way -var itw = ps.slice(0, 3).join('/'); - - -test('clobber-pre', function (t) { - console.error("about to write to "+itw) - fs.writeFileSync(itw, 'I AM IN THE WAY, THE TRUTH, AND THE LIGHT.'); - - fs.stat(itw, function (er, stat) { - t.ifError(er) - t.ok(stat && stat.isFile(), 'should be file') - t.end() - }) -}) - -test('clobber', function (t) { - t.plan(2); - mkdirp(file, 0755, function (err) { - t.ok(err); - t.equal(err.code, 'ENOTDIR'); - t.end(); - }); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/mkdirp.js b/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/mkdirp.js deleted file mode 100644 index b07cd70..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/mkdirp.js +++ /dev/null @@ -1,28 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('woo', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/perm.js b/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/perm.js deleted file mode 100644 index 23a7abb..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/perm.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('async perm', function (t) { - t.plan(2); - var file = '/tmp/' + (Math.random() * (1<<30)).toString(16); - - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); - -test('async root perm', function (t) { - mkdirp('/tmp', 0755, function (err) { - if (err) t.fail(err); - t.end(); - }); - t.end(); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/perm_sync.js b/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/perm_sync.js deleted file mode 100644 index f685f60..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/perm_sync.js +++ /dev/null @@ -1,39 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('sync perm', function (t) { - t.plan(2); - var file = '/tmp/' + (Math.random() * (1<<30)).toString(16) + '.json'; - - mkdirp.sync(file, 0755); - path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }); -}); - -test('sync root perm', function (t) { - t.plan(1); - - var file = '/tmp'; - mkdirp.sync(file, 0755); - path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/race.js b/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/race.js deleted file mode 100644 index 96a0447..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/race.js +++ /dev/null @@ -1,41 +0,0 @@ -var mkdirp = require('../').mkdirp; -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('race', function (t) { - t.plan(4); - var ps = [ '', 'tmp' ]; - - for (var i = 0; i < 25; i++) { - var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - ps.push(dir); - } - var file = ps.join('/'); - - var res = 2; - mk(file, function () { - if (--res === 0) t.end(); - }); - - mk(file, function () { - if (--res === 0) t.end(); - }); - - function mk (file, cb) { - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - if (cb) cb(); - } - }) - }) - }); - } -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/rel.js b/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/rel.js deleted file mode 100644 index 7985824..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/rel.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('rel', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var cwd = process.cwd(); - process.chdir('/tmp'); - - var file = [x,y,z].join('/'); - - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - process.chdir(cwd); - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/return.js b/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/return.js deleted file mode 100644 index bce68e5..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/return.js +++ /dev/null @@ -1,25 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('return value', function (t) { - t.plan(4); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - // should return the first dir created. - // By this point, it would be profoundly surprising if /tmp didn't - // already exist, since every other test makes things in there. - mkdirp(file, function (err, made) { - t.ifError(err); - t.equal(made, '/tmp/' + x); - mkdirp(file, function (err, made) { - t.ifError(err); - t.equal(made, null); - }); - }); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/return_sync.js b/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/return_sync.js deleted file mode 100644 index 7c222d3..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/return_sync.js +++ /dev/null @@ -1,24 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('return value', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - // should return the first dir created. - // By this point, it would be profoundly surprising if /tmp didn't - // already exist, since every other test makes things in there. - // Note that this will throw on failure, which will fail the test. - var made = mkdirp.sync(file); - t.equal(made, '/tmp/' + x); - - // making the same file again should have no effect. - made = mkdirp.sync(file); - t.equal(made, null); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/root.js b/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/root.js deleted file mode 100644 index 97ad7a2..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/root.js +++ /dev/null @@ -1,18 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('root', function (t) { - // '/' on unix, 'c:/' on windows. - var file = path.resolve('/'); - - mkdirp(file, 0755, function (err) { - if (err) throw err - fs.stat(file, function (er, stat) { - if (er) throw er - t.ok(stat.isDirectory(), 'target is a directory'); - t.end(); - }) - }); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/sync.js b/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/sync.js deleted file mode 100644 index 7530cad..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/sync.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('sync', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - try { - mkdirp.sync(file, 0755); - } catch (err) { - t.fail(err); - return t.end(); - } - - path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }); - }); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/umask.js b/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/umask.js deleted file mode 100644 index 64ccafe..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/umask.js +++ /dev/null @@ -1,28 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('implicit mode from umask', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - mkdirp(file, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0777 & (~process.umask())); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/umask_sync.js b/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/umask_sync.js deleted file mode 100644 index 35bd5cb..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/mkdirp/test/umask_sync.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('umask sync modes', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - try { - mkdirp.sync(file); - } catch (err) { - t.fail(err); - return t.end(); - } - - path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, (0777 & (~process.umask()))); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }); - }); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/nopt/.npmignore b/node_modules/nodeunit/node_modules/tap/node_modules/nopt/.npmignore deleted file mode 100644 index 3c3629e..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/nopt/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/nopt/LICENSE b/node_modules/nodeunit/node_modules/tap/node_modules/nopt/LICENSE deleted file mode 100644 index 05a4010..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/nopt/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright 2009, 2010, 2011 Isaac Z. Schlueter. -All rights reserved. - -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: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -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. diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/nopt/README.md b/node_modules/nodeunit/node_modules/tap/node_modules/nopt/README.md deleted file mode 100644 index f290da8..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/nopt/README.md +++ /dev/null @@ -1,210 +0,0 @@ -If you want to write an option parser, and have it be good, there are -two ways to do it. The Right Way, and the Wrong Way. - -The Wrong Way is to sit down and write an option parser. We've all done -that. - -The Right Way is to write some complex configurable program with so many -options that you go half-insane just trying to manage them all, and put -it off with duct-tape solutions until you see exactly to the core of the -problem, and finally snap and write an awesome option parser. - -If you want to write an option parser, don't write an option parser. -Write a package manager, or a source control system, or a service -restarter, or an operating system. You probably won't end up with a -good one of those, but if you don't give up, and you are relentless and -diligent enough in your procrastination, you may just end up with a very -nice option parser. - -## USAGE - - // my-program.js - var nopt = require("nopt") - , Stream = require("stream").Stream - , path = require("path") - , knownOpts = { "foo" : [String, null] - , "bar" : [Stream, Number] - , "baz" : path - , "bloo" : [ "big", "medium", "small" ] - , "flag" : Boolean - , "pick" : Boolean - , "many" : [String, Array] - } - , shortHands = { "foofoo" : ["--foo", "Mr. Foo"] - , "b7" : ["--bar", "7"] - , "m" : ["--bloo", "medium"] - , "p" : ["--pick"] - , "f" : ["--flag"] - } - // everything is optional. - // knownOpts and shorthands default to {} - // arg list defaults to process.argv - // slice defaults to 2 - , parsed = nopt(knownOpts, shortHands, process.argv, 2) - console.log(parsed) - -This would give you support for any of the following: - -```bash -$ node my-program.js --foo "blerp" --no-flag -{ "foo" : "blerp", "flag" : false } - -$ node my-program.js ---bar 7 --foo "Mr. Hand" --flag -{ bar: 7, foo: "Mr. Hand", flag: true } - -$ node my-program.js --foo "blerp" -f -----p -{ foo: "blerp", flag: true, pick: true } - -$ node my-program.js -fp --foofoo -{ foo: "Mr. Foo", flag: true, pick: true } - -$ node my-program.js --foofoo -- -fp # -- stops the flag parsing. -{ foo: "Mr. Foo", argv: { remain: ["-fp"] } } - -$ node my-program.js --blatzk 1000 -fp # unknown opts are ok. -{ blatzk: 1000, flag: true, pick: true } - -$ node my-program.js --blatzk true -fp # but they need a value -{ blatzk: true, flag: true, pick: true } - -$ node my-program.js --no-blatzk -fp # unless they start with "no-" -{ blatzk: false, flag: true, pick: true } - -$ node my-program.js --baz b/a/z # known paths are resolved. -{ baz: "/Users/isaacs/b/a/z" } - -# if Array is one of the types, then it can take many -# values, and will always be an array. The other types provided -# specify what types are allowed in the list. - -$ node my-program.js --many 1 --many null --many foo -{ many: ["1", "null", "foo"] } - -$ node my-program.js --many foo -{ many: ["foo"] } -``` - -Read the tests at the bottom of `lib/nopt.js` for more examples of -what this puppy can do. - -## Types - -The following types are supported, and defined on `nopt.typeDefs` - -* String: A normal string. No parsing is done. -* path: A file system path. Gets resolved against cwd if not absolute. -* url: A url. If it doesn't parse, it isn't accepted. -* Number: Must be numeric. -* Date: Must parse as a date. If it does, and `Date` is one of the options, - then it will return a Date object, not a string. -* Boolean: Must be either `true` or `false`. If an option is a boolean, - then it does not need a value, and its presence will imply `true` as - the value. To negate boolean flags, do `--no-whatever` or `--whatever - false` -* NaN: Means that the option is strictly not allowed. Any value will - fail. -* Stream: An object matching the "Stream" class in node. Valuable - for use when validating programmatically. (npm uses this to let you - supply any WriteStream on the `outfd` and `logfd` config options.) -* Array: If `Array` is specified as one of the types, then the value - will be parsed as a list of options. This means that multiple values - can be specified, and that the value will always be an array. - -If a type is an array of values not on this list, then those are -considered valid values. For instance, in the example above, the -`--bloo` option can only be one of `"big"`, `"medium"`, or `"small"`, -and any other value will be rejected. - -When parsing unknown fields, `"true"`, `"false"`, and `"null"` will be -interpreted as their JavaScript equivalents, and numeric values will be -interpreted as a number. - -You can also mix types and values, or multiple types, in a list. For -instance `{ blah: [Number, null] }` would allow a value to be set to -either a Number or null. When types are ordered, this implies a -preference, and the first type that can be used to properly interpret -the value will be used. - -To define a new type, add it to `nopt.typeDefs`. Each item in that -hash is an object with a `type` member and a `validate` method. The -`type` member is an object that matches what goes in the type list. The -`validate` method is a function that gets called with `validate(data, -key, val)`. Validate methods should assign `data[key]` to the valid -value of `val` if it can be handled properly, or return boolean -`false` if it cannot. - -You can also call `nopt.clean(data, types, typeDefs)` to clean up a -config object and remove its invalid properties. - -## Error Handling - -By default, nopt outputs a warning to standard error when invalid -options are found. You can change this behavior by assigning a method -to `nopt.invalidHandler`. This method will be called with -the offending `nopt.invalidHandler(key, val, types)`. - -If no `nopt.invalidHandler` is assigned, then it will console.error -its whining. If it is assigned to boolean `false` then the warning is -suppressed. - -## Abbreviations - -Yes, they are supported. If you define options like this: - -```javascript -{ "foolhardyelephants" : Boolean -, "pileofmonkeys" : Boolean } -``` - -Then this will work: - -```bash -node program.js --foolhar --pil -node program.js --no-f --pileofmon -# etc. -``` - -## Shorthands - -Shorthands are a hash of shorter option names to a snippet of args that -they expand to. - -If multiple one-character shorthands are all combined, and the -combination does not unambiguously match any other option or shorthand, -then they will be broken up into their constituent parts. For example: - -```json -{ "s" : ["--loglevel", "silent"] -, "g" : "--global" -, "f" : "--force" -, "p" : "--parseable" -, "l" : "--long" -} -``` - -```bash -npm ls -sgflp -# just like doing this: -npm ls --loglevel silent --global --force --long --parseable -``` - -## The Rest of the args - -The config object returned by nopt is given a special member called -`argv`, which is an object with the following fields: - -* `remain`: The remaining args after all the parsing has occurred. -* `original`: The args as they originally appeared. -* `cooked`: The args after flags and shorthands are expanded. - -## Slicing - -Node programs are called with more or less the exact argv as it appears -in C land, after the v8 and node-specific options have been plucked off. -As such, `argv[0]` is always `node` and `argv[1]` is always the -JavaScript program being run. - -That's usually not very useful to you. So they're sliced off by -default. If you want them, then you can pass in `0` as the last -argument, or any other number that you'd like to slice off the start of -the list. diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/nopt/bin/nopt.js b/node_modules/nodeunit/node_modules/tap/node_modules/nopt/bin/nopt.js deleted file mode 100755 index 30e9fdb..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/nopt/bin/nopt.js +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env node -var nopt = require("../lib/nopt") - , types = { num: Number - , bool: Boolean - , help: Boolean - , list: Array - , "num-list": [Number, Array] - , "str-list": [String, Array] - , "bool-list": [Boolean, Array] - , str: String - , clear: Boolean - , config: Boolean - , length: Number - } - , shorthands = { s: [ "--str", "astring" ] - , b: [ "--bool" ] - , nb: [ "--no-bool" ] - , tft: [ "--bool-list", "--no-bool-list", "--bool-list", "true" ] - , "?": ["--help"] - , h: ["--help"] - , H: ["--help"] - , n: [ "--num", "125" ] - , c: ["--config"] - , l: ["--length"] - } - , parsed = nopt( types - , shorthands - , process.argv - , 2 ) - -console.log("parsed", parsed) - -if (parsed.help) { - console.log("") - console.log("nopt cli tester") - console.log("") - console.log("types") - console.log(Object.keys(types).map(function M (t) { - var type = types[t] - if (Array.isArray(type)) { - return [t, type.map(function (type) { return type.name })] - } - return [t, type && type.name] - }).reduce(function (s, i) { - s[i[0]] = i[1] - return s - }, {})) - console.log("") - console.log("shorthands") - console.log(shorthands) -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/nopt/examples/my-program.js b/node_modules/nodeunit/node_modules/tap/node_modules/nopt/examples/my-program.js deleted file mode 100755 index 142447e..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/nopt/examples/my-program.js +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env node - -//process.env.DEBUG_NOPT = 1 - -// my-program.js -var nopt = require("../lib/nopt") - , Stream = require("stream").Stream - , path = require("path") - , knownOpts = { "foo" : [String, null] - , "bar" : [Stream, Number] - , "baz" : path - , "bloo" : [ "big", "medium", "small" ] - , "flag" : Boolean - , "pick" : Boolean - } - , shortHands = { "foofoo" : ["--foo", "Mr. Foo"] - , "b7" : ["--bar", "7"] - , "m" : ["--bloo", "medium"] - , "p" : ["--pick"] - , "f" : ["--flag", "true"] - , "g" : ["--flag"] - , "s" : "--flag" - } - // everything is optional. - // knownOpts and shorthands default to {} - // arg list defaults to process.argv - // slice defaults to 2 - , parsed = nopt(knownOpts, shortHands, process.argv, 2) - -console.log("parsed =\n"+ require("util").inspect(parsed)) diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/nopt/lib/nopt.js b/node_modules/nodeunit/node_modules/tap/node_modules/nopt/lib/nopt.js deleted file mode 100644 index 0e4ebc4..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/nopt/lib/nopt.js +++ /dev/null @@ -1,602 +0,0 @@ -// info about each config option. - -var debug = process.env.DEBUG_NOPT || process.env.NOPT_DEBUG - ? function () { console.error.apply(console, arguments) } - : function () {} - -var url = require("url") - , path = require("path") - , Stream = require("stream").Stream - , abbrev = require("abbrev") - -module.exports = exports = nopt -exports.clean = clean - -exports.typeDefs = - { String : { type: String, validate: validateString } - , Boolean : { type: Boolean, validate: validateBoolean } - , url : { type: url, validate: validateUrl } - , Number : { type: Number, validate: validateNumber } - , path : { type: path, validate: validatePath } - , Stream : { type: Stream, validate: validateStream } - , Date : { type: Date, validate: validateDate } - } - -function nopt (types, shorthands, args, slice) { - args = args || process.argv - types = types || {} - shorthands = shorthands || {} - if (typeof slice !== "number") slice = 2 - - debug(types, shorthands, args, slice) - - args = args.slice(slice) - var data = {} - , key - , remain = [] - , cooked = args - , original = args.slice(0) - - parse(args, data, remain, types, shorthands) - // now data is full - clean(data, types, exports.typeDefs) - data.argv = {remain:remain,cooked:cooked,original:original} - Object.defineProperty(data.argv, 'toString', { value: function () { - return this.original.map(JSON.stringify).join(" ") - }, enumerable: false }) - return data -} - -function clean (data, types, typeDefs) { - typeDefs = typeDefs || exports.typeDefs - var remove = {} - , typeDefault = [false, true, null, String, Number, Array] - - Object.keys(data).forEach(function (k) { - if (k === "argv") return - var val = data[k] - , isArray = Array.isArray(val) - , type = types[k] - if (!isArray) val = [val] - if (!type) type = typeDefault - if (type === Array) type = typeDefault.concat(Array) - if (!Array.isArray(type)) type = [type] - - debug("val=%j", val) - debug("types=", type) - val = val.map(function (val) { - // if it's an unknown value, then parse false/true/null/numbers/dates - if (typeof val === "string") { - debug("string %j", val) - val = val.trim() - if ((val === "null" && ~type.indexOf(null)) - || (val === "true" && - (~type.indexOf(true) || ~type.indexOf(Boolean))) - || (val === "false" && - (~type.indexOf(false) || ~type.indexOf(Boolean)))) { - val = JSON.parse(val) - debug("jsonable %j", val) - } else if (~type.indexOf(Number) && !isNaN(val)) { - debug("convert to number", val) - val = +val - } else if (~type.indexOf(Date) && !isNaN(Date.parse(val))) { - debug("convert to date", val) - val = new Date(val) - } - } - - if (!types.hasOwnProperty(k)) { - return val - } - - // allow `--no-blah` to set 'blah' to null if null is allowed - if (val === false && ~type.indexOf(null) && - !(~type.indexOf(false) || ~type.indexOf(Boolean))) { - val = null - } - - var d = {} - d[k] = val - debug("prevalidated val", d, val, types[k]) - if (!validate(d, k, val, types[k], typeDefs)) { - if (exports.invalidHandler) { - exports.invalidHandler(k, val, types[k], data) - } else if (exports.invalidHandler !== false) { - debug("invalid: "+k+"="+val, types[k]) - } - return remove - } - debug("validated val", d, val, types[k]) - return d[k] - }).filter(function (val) { return val !== remove }) - - if (!val.length) delete data[k] - else if (isArray) { - debug(isArray, data[k], val) - data[k] = val - } else data[k] = val[0] - - debug("k=%s val=%j", k, val, data[k]) - }) -} - -function validateString (data, k, val) { - data[k] = String(val) -} - -function validatePath (data, k, val) { - data[k] = path.resolve(String(val)) - return true -} - -function validateNumber (data, k, val) { - debug("validate Number %j %j %j", k, val, isNaN(val)) - if (isNaN(val)) return false - data[k] = +val -} - -function validateDate (data, k, val) { - debug("validate Date %j %j %j", k, val, Date.parse(val)) - var s = Date.parse(val) - if (isNaN(s)) return false - data[k] = new Date(val) -} - -function validateBoolean (data, k, val) { - if (val instanceof Boolean) val = val.valueOf() - else if (typeof val === "string") { - if (!isNaN(val)) val = !!(+val) - else if (val === "null" || val === "false") val = false - else val = true - } else val = !!val - data[k] = val -} - -function validateUrl (data, k, val) { - val = url.parse(String(val)) - if (!val.host) return false - data[k] = val.href -} - -function validateStream (data, k, val) { - if (!(val instanceof Stream)) return false - data[k] = val -} - -function validate (data, k, val, type, typeDefs) { - // arrays are lists of types. - if (Array.isArray(type)) { - for (var i = 0, l = type.length; i < l; i ++) { - if (type[i] === Array) continue - if (validate(data, k, val, type[i], typeDefs)) return true - } - delete data[k] - return false - } - - // an array of anything? - if (type === Array) return true - - // NaN is poisonous. Means that something is not allowed. - if (type !== type) { - debug("Poison NaN", k, val, type) - delete data[k] - return false - } - - // explicit list of values - if (val === type) { - debug("Explicitly allowed %j", val) - // if (isArray) (data[k] = data[k] || []).push(val) - // else data[k] = val - data[k] = val - return true - } - - // now go through the list of typeDefs, validate against each one. - var ok = false - , types = Object.keys(typeDefs) - for (var i = 0, l = types.length; i < l; i ++) { - debug("test type %j %j %j", k, val, types[i]) - var t = typeDefs[types[i]] - if (t && type === t.type) { - var d = {} - ok = false !== t.validate(d, k, val) - val = d[k] - if (ok) { - // if (isArray) (data[k] = data[k] || []).push(val) - // else data[k] = val - data[k] = val - break - } - } - } - debug("OK? %j (%j %j %j)", ok, k, val, types[i]) - - if (!ok) delete data[k] - return ok -} - -function parse (args, data, remain, types, shorthands) { - debug("parse", args, data, remain) - - var key = null - , abbrevs = abbrev(Object.keys(types)) - , shortAbbr = abbrev(Object.keys(shorthands)) - - for (var i = 0; i < args.length; i ++) { - var arg = args[i] - debug("arg", arg) - - if (arg.match(/^-{2,}$/)) { - // done with keys. - // the rest are args. - remain.push.apply(remain, args.slice(i + 1)) - args[i] = "--" - break - } - var hadEq = false - if (arg.charAt(0) === "-") { - if (arg.indexOf("=") !== -1) { - hadEq = true - var v = arg.split("=") - arg = v.shift() - v = v.join("=") - args.splice.apply(args, [i, 1].concat([arg, v])) - } - - // see if it's a shorthand - // if so, splice and back up to re-parse it. - var shRes = resolveShort(arg, shorthands, shortAbbr, abbrevs) - debug("arg=%j shRes=%j", arg, shRes) - if (shRes) { - debug(arg, shRes) - args.splice.apply(args, [i, 1].concat(shRes)) - if (arg !== shRes[0]) { - i -- - continue - } - } - arg = arg.replace(/^-+/, "") - var no = null - while (arg.toLowerCase().indexOf("no-") === 0) { - no = !no - arg = arg.substr(3) - } - - if (abbrevs[arg]) arg = abbrevs[arg] - - var isArray = types[arg] === Array || - Array.isArray(types[arg]) && types[arg].indexOf(Array) !== -1 - - // allow unknown things to be arrays if specified multiple times. - if (!types.hasOwnProperty(arg) && data.hasOwnProperty(arg)) { - if (!Array.isArray(data[arg])) - data[arg] = [data[arg]] - isArray = true - } - - var val - , la = args[i + 1] - - var isBool = typeof no === 'boolean' || - types[arg] === Boolean || - Array.isArray(types[arg]) && types[arg].indexOf(Boolean) !== -1 || - (typeof types[arg] === 'undefined' && !hadEq) || - (la === "false" && - (types[arg] === null || - Array.isArray(types[arg]) && ~types[arg].indexOf(null))) - - if (isBool) { - // just set and move along - val = !no - // however, also support --bool true or --bool false - if (la === "true" || la === "false") { - val = JSON.parse(la) - la = null - if (no) val = !val - i ++ - } - - // also support "foo":[Boolean, "bar"] and "--foo bar" - if (Array.isArray(types[arg]) && la) { - if (~types[arg].indexOf(la)) { - // an explicit type - val = la - i ++ - } else if ( la === "null" && ~types[arg].indexOf(null) ) { - // null allowed - val = null - i ++ - } else if ( !la.match(/^-{2,}[^-]/) && - !isNaN(la) && - ~types[arg].indexOf(Number) ) { - // number - val = +la - i ++ - } else if ( !la.match(/^-[^-]/) && ~types[arg].indexOf(String) ) { - // string - val = la - i ++ - } - } - - if (isArray) (data[arg] = data[arg] || []).push(val) - else data[arg] = val - - continue - } - - if (la && la.match(/^-{2,}$/)) { - la = undefined - i -- - } - - val = la === undefined ? true : la - if (isArray) (data[arg] = data[arg] || []).push(val) - else data[arg] = val - - i ++ - continue - } - remain.push(arg) - } -} - -function resolveShort (arg, shorthands, shortAbbr, abbrevs) { - // handle single-char shorthands glommed together, like - // npm ls -glp, but only if there is one dash, and only if - // all of the chars are single-char shorthands, and it's - // not a match to some other abbrev. - arg = arg.replace(/^-+/, '') - - // if it's an exact known option, then don't go any further - if (abbrevs[arg] === arg) - return null - - // if it's an exact known shortopt, same deal - if (shorthands[arg]) { - // make it an array, if it's a list of words - if (shorthands[arg] && !Array.isArray(shorthands[arg])) - shorthands[arg] = shorthands[arg].split(/\s+/) - - return shorthands[arg] - } - - // first check to see if this arg is a set of single-char shorthands - var singles = shorthands.___singles - if (!singles) { - singles = Object.keys(shorthands).filter(function (s) { - return s.length === 1 - }).reduce(function (l,r) { - l[r] = true - return l - }, {}) - shorthands.___singles = singles - debug('shorthand singles', singles) - } - - var chrs = arg.split("").filter(function (c) { - return singles[c] - }) - - if (chrs.join("") === arg) return chrs.map(function (c) { - return shorthands[c] - }).reduce(function (l, r) { - return l.concat(r) - }, []) - - - // if it's an arg abbrev, and not a literal shorthand, then prefer the arg - if (abbrevs[arg] && !shorthands[arg]) - return null - - // if it's an abbr for a shorthand, then use that - if (shortAbbr[arg]) - arg = shortAbbr[arg] - - // make it an array, if it's a list of words - if (shorthands[arg] && !Array.isArray(shorthands[arg])) - shorthands[arg] = shorthands[arg].split(/\s+/) - - return shorthands[arg] -} - -if (module === require.main) { -var assert = require("assert") - , util = require("util") - - , shorthands = - { s : ["--loglevel", "silent"] - , d : ["--loglevel", "info"] - , dd : ["--loglevel", "verbose"] - , ddd : ["--loglevel", "silly"] - , noreg : ["--no-registry"] - , reg : ["--registry"] - , "no-reg" : ["--no-registry"] - , silent : ["--loglevel", "silent"] - , verbose : ["--loglevel", "verbose"] - , h : ["--usage"] - , H : ["--usage"] - , "?" : ["--usage"] - , help : ["--usage"] - , v : ["--version"] - , f : ["--force"] - , desc : ["--description"] - , "no-desc" : ["--no-description"] - , "local" : ["--no-global"] - , l : ["--long"] - , p : ["--parseable"] - , porcelain : ["--parseable"] - , g : ["--global"] - } - - , types = - { aoa: Array - , nullstream: [null, Stream] - , date: Date - , str: String - , browser : String - , cache : path - , color : ["always", Boolean] - , depth : Number - , description : Boolean - , dev : Boolean - , editor : path - , force : Boolean - , global : Boolean - , globalconfig : path - , group : [String, Number] - , gzipbin : String - , logfd : [Number, Stream] - , loglevel : ["silent","win","error","warn","info","verbose","silly"] - , long : Boolean - , "node-version" : [false, String] - , npaturl : url - , npat : Boolean - , "onload-script" : [false, String] - , outfd : [Number, Stream] - , parseable : Boolean - , pre: Boolean - , prefix: path - , proxy : url - , "rebuild-bundle" : Boolean - , registry : url - , searchopts : String - , searchexclude: [null, String] - , shell : path - , t: [Array, String] - , tag : String - , tar : String - , tmp : path - , "unsafe-perm" : Boolean - , usage : Boolean - , user : String - , username : String - , userconfig : path - , version : Boolean - , viewer: path - , _exit : Boolean - } - -; [["-v", {version:true}, []] - ,["---v", {version:true}, []] - ,["ls -s --no-reg connect -d", - {loglevel:"info",registry:null},["ls","connect"]] - ,["ls ---s foo",{loglevel:"silent"},["ls","foo"]] - ,["ls --registry blargle", {}, ["ls"]] - ,["--no-registry", {registry:null}, []] - ,["--no-color true", {color:false}, []] - ,["--no-color false", {color:true}, []] - ,["--no-color", {color:false}, []] - ,["--color false", {color:false}, []] - ,["--color --logfd 7", {logfd:7,color:true}, []] - ,["--color=true", {color:true}, []] - ,["--logfd=10", {logfd:10}, []] - ,["--tmp=/tmp -tar=gtar",{tmp:"/tmp",tar:"gtar"},[]] - ,["--tmp=tmp -tar=gtar", - {tmp:path.resolve(process.cwd(), "tmp"),tar:"gtar"},[]] - ,["--logfd x", {}, []] - ,["a -true -- -no-false", {true:true},["a","-no-false"]] - ,["a -no-false", {false:false},["a"]] - ,["a -no-no-true", {true:true}, ["a"]] - ,["a -no-no-no-false", {false:false}, ["a"]] - ,["---NO-no-No-no-no-no-nO-no-no"+ - "-No-no-no-no-no-no-no-no-no"+ - "-no-no-no-no-NO-NO-no-no-no-no-no-no"+ - "-no-body-can-do-the-boogaloo-like-I-do" - ,{"body-can-do-the-boogaloo-like-I-do":false}, []] - ,["we are -no-strangers-to-love "+ - "--you-know=the-rules --and=so-do-i "+ - "---im-thinking-of=a-full-commitment "+ - "--no-you-would-get-this-from-any-other-guy "+ - "--no-gonna-give-you-up "+ - "-no-gonna-let-you-down=true "+ - "--no-no-gonna-run-around false "+ - "--desert-you=false "+ - "--make-you-cry false "+ - "--no-tell-a-lie "+ - "--no-no-and-hurt-you false" - ,{"strangers-to-love":false - ,"you-know":"the-rules" - ,"and":"so-do-i" - ,"you-would-get-this-from-any-other-guy":false - ,"gonna-give-you-up":false - ,"gonna-let-you-down":false - ,"gonna-run-around":false - ,"desert-you":false - ,"make-you-cry":false - ,"tell-a-lie":false - ,"and-hurt-you":false - },["we", "are"]] - ,["-t one -t two -t three" - ,{t: ["one", "two", "three"]} - ,[]] - ,["-t one -t null -t three four five null" - ,{t: ["one", "null", "three"]} - ,["four", "five", "null"]] - ,["-t foo" - ,{t:["foo"]} - ,[]] - ,["--no-t" - ,{t:["false"]} - ,[]] - ,["-no-no-t" - ,{t:["true"]} - ,[]] - ,["-aoa one -aoa null -aoa 100" - ,{aoa:["one", null, 100]} - ,[]] - ,["-str 100" - ,{str:"100"} - ,[]] - ,["--color always" - ,{color:"always"} - ,[]] - ,["--no-nullstream" - ,{nullstream:null} - ,[]] - ,["--nullstream false" - ,{nullstream:null} - ,[]] - ,["--notadate=2011-01-25" - ,{notadate: "2011-01-25"} - ,[]] - ,["--date 2011-01-25" - ,{date: new Date("2011-01-25")} - ,[]] - ,["-cl 1" - ,{config: true, length: 1} - ,[] - ,{config: Boolean, length: Number, clear: Boolean} - ,{c: "--config", l: "--length"}] - ,["--acount bla" - ,{"acount":true} - ,["bla"] - ,{account: Boolean, credentials: Boolean, options: String} - ,{a:"--account", c:"--credentials",o:"--options"}] - ,["--clear" - ,{clear:true} - ,[] - ,{clear:Boolean,con:Boolean,len:Boolean,exp:Boolean,add:Boolean,rep:Boolean} - ,{c:"--con",l:"--len",e:"--exp",a:"--add",r:"--rep"}] - ].forEach(function (test) { - var argv = test[0].split(/\s+/) - , opts = test[1] - , rem = test[2] - , actual = nopt(test[3] || types, test[4] || shorthands, argv, 0) - , parsed = actual.argv - delete actual.argv - console.log(util.inspect(actual, false, 2, true), parsed.remain) - for (var i in opts) { - var e = JSON.stringify(opts[i]) - , a = JSON.stringify(actual[i] === undefined ? null : actual[i]) - if (e && typeof e === "object") { - assert.deepEqual(e, a) - } else { - assert.equal(e, a) - } - } - assert.deepEqual(rem, parsed.remain) - }) -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/nopt/node_modules/abbrev/LICENSE b/node_modules/nodeunit/node_modules/tap/node_modules/nopt/node_modules/abbrev/LICENSE deleted file mode 100644 index 05a4010..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/nopt/node_modules/abbrev/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright 2009, 2010, 2011 Isaac Z. Schlueter. -All rights reserved. - -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: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -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. diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/nopt/node_modules/abbrev/README.md b/node_modules/nodeunit/node_modules/tap/node_modules/nopt/node_modules/abbrev/README.md deleted file mode 100644 index 99746fe..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/nopt/node_modules/abbrev/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# abbrev-js - -Just like [ruby's Abbrev](http://apidock.com/ruby/Abbrev). - -Usage: - - var abbrev = require("abbrev"); - abbrev("foo", "fool", "folding", "flop"); - - // returns: - { fl: 'flop' - , flo: 'flop' - , flop: 'flop' - , fol: 'folding' - , fold: 'folding' - , foldi: 'folding' - , foldin: 'folding' - , folding: 'folding' - , foo: 'foo' - , fool: 'fool' - } - -This is handy for command-line scripts, or other cases where you want to be able to accept shorthands. diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/nopt/node_modules/abbrev/lib/abbrev.js b/node_modules/nodeunit/node_modules/tap/node_modules/nopt/node_modules/abbrev/lib/abbrev.js deleted file mode 100644 index bee4132..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/nopt/node_modules/abbrev/lib/abbrev.js +++ /dev/null @@ -1,111 +0,0 @@ - -module.exports = exports = abbrev.abbrev = abbrev - -abbrev.monkeyPatch = monkeyPatch - -function monkeyPatch () { - Object.defineProperty(Array.prototype, 'abbrev', { - value: function () { return abbrev(this) }, - enumerable: false, configurable: true, writable: true - }) - - Object.defineProperty(Object.prototype, 'abbrev', { - value: function () { return abbrev(Object.keys(this)) }, - enumerable: false, configurable: true, writable: true - }) -} - -function abbrev (list) { - if (arguments.length !== 1 || !Array.isArray(list)) { - list = Array.prototype.slice.call(arguments, 0) - } - for (var i = 0, l = list.length, args = [] ; i < l ; i ++) { - args[i] = typeof list[i] === "string" ? list[i] : String(list[i]) - } - - // sort them lexicographically, so that they're next to their nearest kin - args = args.sort(lexSort) - - // walk through each, seeing how much it has in common with the next and previous - var abbrevs = {} - , prev = "" - for (var i = 0, l = args.length ; i < l ; i ++) { - var current = args[i] - , next = args[i + 1] || "" - , nextMatches = true - , prevMatches = true - if (current === next) continue - for (var j = 0, cl = current.length ; j < cl ; j ++) { - var curChar = current.charAt(j) - nextMatches = nextMatches && curChar === next.charAt(j) - prevMatches = prevMatches && curChar === prev.charAt(j) - if (!nextMatches && !prevMatches) { - j ++ - break - } - } - prev = current - if (j === cl) { - abbrevs[current] = current - continue - } - for (var a = current.substr(0, j) ; j <= cl ; j ++) { - abbrevs[a] = current - a += current.charAt(j) - } - } - return abbrevs -} - -function lexSort (a, b) { - return a === b ? 0 : a > b ? 1 : -1 -} - - -// tests -if (module === require.main) { - -var assert = require("assert") -var util = require("util") - -console.log("running tests") -function test (list, expect) { - var actual = abbrev(list) - assert.deepEqual(actual, expect, - "abbrev("+util.inspect(list)+") === " + util.inspect(expect) + "\n"+ - "actual: "+util.inspect(actual)) - actual = abbrev.apply(exports, list) - assert.deepEqual(abbrev.apply(exports, list), expect, - "abbrev("+list.map(JSON.stringify).join(",")+") === " + util.inspect(expect) + "\n"+ - "actual: "+util.inspect(actual)) -} - -test([ "ruby", "ruby", "rules", "rules", "rules" ], -{ rub: 'ruby' -, ruby: 'ruby' -, rul: 'rules' -, rule: 'rules' -, rules: 'rules' -}) -test(["fool", "foom", "pool", "pope"], -{ fool: 'fool' -, foom: 'foom' -, poo: 'pool' -, pool: 'pool' -, pop: 'pope' -, pope: 'pope' -}) -test(["a", "ab", "abc", "abcd", "abcde", "acde"], -{ a: 'a' -, ab: 'ab' -, abc: 'abc' -, abcd: 'abcd' -, abcde: 'abcde' -, ac: 'acde' -, acd: 'acde' -, acde: 'acde' -}) - -console.log("pass") - -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/nopt/node_modules/abbrev/package.json b/node_modules/nodeunit/node_modules/tap/node_modules/nopt/node_modules/abbrev/package.json deleted file mode 100644 index 3056f1e..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/nopt/node_modules/abbrev/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "abbrev", - "version": "1.0.4", - "description": "Like ruby's abbrev module, but in js", - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me" - }, - "main": "./lib/abbrev.js", - "scripts": { - "test": "node lib/abbrev.js" - }, - "repository": { - "type": "git", - "url": "http://github.com/isaacs/abbrev-js" - }, - "license": { - "type": "MIT", - "url": "https://github.com/isaacs/abbrev-js/raw/master/LICENSE" - }, - "readme": "# abbrev-js\n\nJust like [ruby's Abbrev](http://apidock.com/ruby/Abbrev).\n\nUsage:\n\n var abbrev = require(\"abbrev\");\n abbrev(\"foo\", \"fool\", \"folding\", \"flop\");\n \n // returns:\n { fl: 'flop'\n , flo: 'flop'\n , flop: 'flop'\n , fol: 'folding'\n , fold: 'folding'\n , foldi: 'folding'\n , foldin: 'folding'\n , folding: 'folding'\n , foo: 'foo'\n , fool: 'fool'\n }\n\nThis is handy for command-line scripts, or other cases where you want to be able to accept shorthands.\n", - "readmeFilename": "README.md", - "_id": "abbrev@1.0.4", - "_from": "abbrev@1" -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/nopt/package.json b/node_modules/nodeunit/node_modules/tap/node_modules/nopt/package.json deleted file mode 100644 index fdfa9d7..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/nopt/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "nopt", - "version": "2.1.1", - "description": "Option parsing for Node, supporting types, shorthands, etc. Used by npm.", - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "main": "lib/nopt.js", - "scripts": { - "test": "node lib/nopt.js" - }, - "repository": { - "type": "git", - "url": "http://github.com/isaacs/nopt" - }, - "bin": { - "nopt": "./bin/nopt.js" - }, - "license": { - "type": "MIT", - "url": "https://github.com/isaacs/nopt/raw/master/LICENSE" - }, - "dependencies": { - "abbrev": "1" - }, - "readme": "If you want to write an option parser, and have it be good, there are\ntwo ways to do it. The Right Way, and the Wrong Way.\n\nThe Wrong Way is to sit down and write an option parser. We've all done\nthat.\n\nThe Right Way is to write some complex configurable program with so many\noptions that you go half-insane just trying to manage them all, and put\nit off with duct-tape solutions until you see exactly to the core of the\nproblem, and finally snap and write an awesome option parser.\n\nIf you want to write an option parser, don't write an option parser.\nWrite a package manager, or a source control system, or a service\nrestarter, or an operating system. You probably won't end up with a\ngood one of those, but if you don't give up, and you are relentless and\ndiligent enough in your procrastination, you may just end up with a very\nnice option parser.\n\n## USAGE\n\n // my-program.js\n var nopt = require(\"nopt\")\n , Stream = require(\"stream\").Stream\n , path = require(\"path\")\n , knownOpts = { \"foo\" : [String, null]\n , \"bar\" : [Stream, Number]\n , \"baz\" : path\n , \"bloo\" : [ \"big\", \"medium\", \"small\" ]\n , \"flag\" : Boolean\n , \"pick\" : Boolean\n , \"many\" : [String, Array]\n }\n , shortHands = { \"foofoo\" : [\"--foo\", \"Mr. Foo\"]\n , \"b7\" : [\"--bar\", \"7\"]\n , \"m\" : [\"--bloo\", \"medium\"]\n , \"p\" : [\"--pick\"]\n , \"f\" : [\"--flag\"]\n }\n // everything is optional.\n // knownOpts and shorthands default to {}\n // arg list defaults to process.argv\n // slice defaults to 2\n , parsed = nopt(knownOpts, shortHands, process.argv, 2)\n console.log(parsed)\n\nThis would give you support for any of the following:\n\n```bash\n$ node my-program.js --foo \"blerp\" --no-flag\n{ \"foo\" : \"blerp\", \"flag\" : false }\n\n$ node my-program.js ---bar 7 --foo \"Mr. Hand\" --flag\n{ bar: 7, foo: \"Mr. Hand\", flag: true }\n\n$ node my-program.js --foo \"blerp\" -f -----p\n{ foo: \"blerp\", flag: true, pick: true }\n\n$ node my-program.js -fp --foofoo\n{ foo: \"Mr. Foo\", flag: true, pick: true }\n\n$ node my-program.js --foofoo -- -fp # -- stops the flag parsing.\n{ foo: \"Mr. Foo\", argv: { remain: [\"-fp\"] } }\n\n$ node my-program.js --blatzk 1000 -fp # unknown opts are ok.\n{ blatzk: 1000, flag: true, pick: true }\n\n$ node my-program.js --blatzk true -fp # but they need a value\n{ blatzk: true, flag: true, pick: true }\n\n$ node my-program.js --no-blatzk -fp # unless they start with \"no-\"\n{ blatzk: false, flag: true, pick: true }\n\n$ node my-program.js --baz b/a/z # known paths are resolved.\n{ baz: \"/Users/isaacs/b/a/z\" }\n\n# if Array is one of the types, then it can take many\n# values, and will always be an array. The other types provided\n# specify what types are allowed in the list.\n\n$ node my-program.js --many 1 --many null --many foo\n{ many: [\"1\", \"null\", \"foo\"] }\n\n$ node my-program.js --many foo\n{ many: [\"foo\"] }\n```\n\nRead the tests at the bottom of `lib/nopt.js` for more examples of\nwhat this puppy can do.\n\n## Types\n\nThe following types are supported, and defined on `nopt.typeDefs`\n\n* String: A normal string. No parsing is done.\n* path: A file system path. Gets resolved against cwd if not absolute.\n* url: A url. If it doesn't parse, it isn't accepted.\n* Number: Must be numeric.\n* Date: Must parse as a date. If it does, and `Date` is one of the options,\n then it will return a Date object, not a string.\n* Boolean: Must be either `true` or `false`. If an option is a boolean,\n then it does not need a value, and its presence will imply `true` as\n the value. To negate boolean flags, do `--no-whatever` or `--whatever\n false`\n* NaN: Means that the option is strictly not allowed. Any value will\n fail.\n* Stream: An object matching the \"Stream\" class in node. Valuable\n for use when validating programmatically. (npm uses this to let you\n supply any WriteStream on the `outfd` and `logfd` config options.)\n* Array: If `Array` is specified as one of the types, then the value\n will be parsed as a list of options. This means that multiple values\n can be specified, and that the value will always be an array.\n\nIf a type is an array of values not on this list, then those are\nconsidered valid values. For instance, in the example above, the\n`--bloo` option can only be one of `\"big\"`, `\"medium\"`, or `\"small\"`,\nand any other value will be rejected.\n\nWhen parsing unknown fields, `\"true\"`, `\"false\"`, and `\"null\"` will be\ninterpreted as their JavaScript equivalents, and numeric values will be\ninterpreted as a number.\n\nYou can also mix types and values, or multiple types, in a list. For\ninstance `{ blah: [Number, null] }` would allow a value to be set to\neither a Number or null. When types are ordered, this implies a\npreference, and the first type that can be used to properly interpret\nthe value will be used.\n\nTo define a new type, add it to `nopt.typeDefs`. Each item in that\nhash is an object with a `type` member and a `validate` method. The\n`type` member is an object that matches what goes in the type list. The\n`validate` method is a function that gets called with `validate(data,\nkey, val)`. Validate methods should assign `data[key]` to the valid\nvalue of `val` if it can be handled properly, or return boolean\n`false` if it cannot.\n\nYou can also call `nopt.clean(data, types, typeDefs)` to clean up a\nconfig object and remove its invalid properties.\n\n## Error Handling\n\nBy default, nopt outputs a warning to standard error when invalid\noptions are found. You can change this behavior by assigning a method\nto `nopt.invalidHandler`. This method will be called with\nthe offending `nopt.invalidHandler(key, val, types)`.\n\nIf no `nopt.invalidHandler` is assigned, then it will console.error\nits whining. If it is assigned to boolean `false` then the warning is\nsuppressed.\n\n## Abbreviations\n\nYes, they are supported. If you define options like this:\n\n```javascript\n{ \"foolhardyelephants\" : Boolean\n, \"pileofmonkeys\" : Boolean }\n```\n\nThen this will work:\n\n```bash\nnode program.js --foolhar --pil\nnode program.js --no-f --pileofmon\n# etc.\n```\n\n## Shorthands\n\nShorthands are a hash of shorter option names to a snippet of args that\nthey expand to.\n\nIf multiple one-character shorthands are all combined, and the\ncombination does not unambiguously match any other option or shorthand,\nthen they will be broken up into their constituent parts. For example:\n\n```json\n{ \"s\" : [\"--loglevel\", \"silent\"]\n, \"g\" : \"--global\"\n, \"f\" : \"--force\"\n, \"p\" : \"--parseable\"\n, \"l\" : \"--long\"\n}\n```\n\n```bash\nnpm ls -sgflp\n# just like doing this:\nnpm ls --loglevel silent --global --force --long --parseable\n```\n\n## The Rest of the args\n\nThe config object returned by nopt is given a special member called\n`argv`, which is an object with the following fields:\n\n* `remain`: The remaining args after all the parsing has occurred.\n* `original`: The args as they originally appeared.\n* `cooked`: The args after flags and shorthands are expanded.\n\n## Slicing\n\nNode programs are called with more or less the exact argv as it appears\nin C land, after the v8 and node-specific options have been plucked off.\nAs such, `argv[0]` is always `node` and `argv[1]` is always the\nJavaScript program being run.\n\nThat's usually not very useful to you. So they're sliced off by\ndefault. If you want them, then you can pass in `0` as the last\nargument, or any other number that you'd like to slice off the start of\nthe list.\n", - "readmeFilename": "README.md", - "_id": "nopt@2.1.1", - "_from": "nopt@~2" -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/README.markdown b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/README.markdown deleted file mode 100644 index 1e56ebd..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/README.markdown +++ /dev/null @@ -1,56 +0,0 @@ -runforcover -====== - -Runforcover is a require-hook library that uses node-bunker to provide code coverage data -for your unit test library, whatever it might be. - -methods -======= -var runforcover = require('runforcover'); - -var coverage = runforcover.cover([RegExp | path]); -------- - -Attach runforcover to the global `require` object and patch `require.extensions['.js']` to -provide coverage metadata for all files required after this point. Returns a function -object that can be called to obtain a object keying files to `CoverageData` objects, with -a method for releasing control back to vanilla `require`. Usage: - -````javascript - -var coverage = runforcover.cover(/.*/g); - -require('some/library'); - -coverage(function(coverageData) { - // coverageData is an object keyed by filename. - var stats = coverageData['/full/path/to/file.js'].stats() - - // the percentage of lines run versus total lines in file - console.log(stats.percentage); - - // the number of missing lines - console.log(stats.missing); - - // the number of lines run (seen) - console.log(stats.seen); - - // an array of line objects representing 'missed' lines - stats.lines; - - stats.lines.forEach(function(line) { - // the line number of the line: - console.log(line.number); - - // returns a string containing the source data for the line: - console.log(line.source()); - }); - - // return control back to the original require function - coverage.release(); -}); -```` - -license -======= -new BSD. diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/index.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/index.js deleted file mode 100644 index b5318ac..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/index.js +++ /dev/null @@ -1,127 +0,0 @@ -var bunker = require('bunker'), - Module = require('module').Module, - path = require('path'), - fs = require('fs'), - vm = require('vm'); - -function CoverageData (filename, bunker) { - this.bunker = bunker; - this.filename = filename; - this.nodes = {}; -}; - -CoverageData.prototype.visit = function(node) { - ++(this.nodes[node.id] = this.nodes[node.id] || {node:node, count:0}).count; -}; - -CoverageData.prototype.missing = function() { - var nodes = this.nodes, - missing = this.bunker.nodes.filter(function(node) { - return !nodes[node.id]; - }); - - return missing; -}; - -CoverageData.prototype.stats = function() { - var missing = this.missing(), - filedata = fs.readFileSync(this.filename, 'utf8').split('\n'); - - var seenLines = [], - lines = - missing.sort(function(lhs, rhs) { - return lhs.node[0].start.line < rhs.node[0].start.line ? -1 : - lhs.node[0].start.line > rhs.node[0].start.line ? 1 : - 0; - }).filter(function(node) { - - var okay = (seenLines.indexOf(node.node[0].start.line) < 0); - if(okay) - seenLines.push(node.node[0].start.line); - return okay; - - }).map(function(node, idx, all) { - return { - lineno:node.node[0].start.line + 1, - source:function() { return filedata[node.node[0].start.line]; } - }; - }); - - return { - percentage:(filedata.length-seenLines.length)/filedata.length, - lines:lines, - missing:seenLines.length, - seen:(filedata.length-seenLines.length) - }; -}; - -module.exports.createEnvironment = function(module, filename) { - var req = function(path) { - return Module._load(path, module); - }; - req.resolve = function(request) { - return Module._resolveFilename(request, module)[1]; - } - req.paths = Module._paths; - req.main = process.mainModule; - req.extensions = Module._extensions; - req.registerExtension = function() { - throw new Error('require.registerExtension() removed. Use ' + - 'require.extensions instead.'); - } - require.cache = Module._cache; - - var ctxt = {}; - for(var k in global) - ctxt[k] = global[k]; - - ctxt.require = req; - ctxt.exports = module.exports; - ctxt.__filename = filename; - ctxt.__dirname = path.dirname(filename); - ctxt.process = process; - ctxt.console = console; - ctxt.module = module; - ctxt.global = ctxt; - - return ctxt; -}; - -module.exports.cover = function(fileRegex) { - var originalRequire = require.extensions['.js'], - coverageData = {}, - match = fileRegex instanceof RegExp ? - fileRegex : new RegExp( - fileRegex ? fileRegex.replace(/\//g, '\\/').replace(/\./g, '\\.') : '.*' - , 'g'), - target = this; - - require.extensions['.js'] = function(module, filename) { - if(!match.test(filename)) return originalRequire(module, filename); - - var context = target.createEnvironment(module, filename), - data = fs.readFileSync(filename, 'utf8'), - bunkerized = bunker(data), - coverage = coverageData[filename] = new CoverageData(filename, bunkerized); - - bunkerized.on('node', coverage.visit.bind(coverage)); - bunkerized.assign(context); - - var wrapper = '(function(ctxt) { with(ctxt) { return '+Module.wrap(bunkerized.compile())+'; } })', - compiledWrapper = vm.runInThisContext(wrapper, filename, true)(context); - - var args = [context.exports, context.require, module, filename, context.__dirname]; - return compiledWrapper.apply(module.exports, args); - }; - - var retval = function(ready) { - ready(coverageData); - }; - - retval.release = function() { - require.extensions['.js'] = originalRequire; - }; - - return retval; -}; - diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/.npmignore b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/.npmignore deleted file mode 100644 index 3c3629e..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/.travis.yml b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/.travis.yml deleted file mode 100644 index f1d0f13..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.4 - - 0.6 diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/README.markdown b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/README.markdown deleted file mode 100644 index 0d0c387..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/README.markdown +++ /dev/null @@ -1,82 +0,0 @@ -bunker -====== - -Bunker is a module to calculate code coverage using native javascript -[burrito](https://github.com/substack/node-burrito) AST trickery. - -[![build status](https://secure.travis-ci.org/substack/node-bunker.png)](http://travis-ci.org/substack/node-bunker) - -![code coverage](http://substack.net/images/code_coverage.png) - -examples -======== - -tiny ----- - -````javascript -var bunker = require('bunker'); -var b = bunker('var x = 0; for (var i = 0; i < 30; i++) { x++ }'); - -var counts = {}; - -b.on('node', function (node) { - if (!counts[node.id]) { - counts[node.id] = { times : 0, node : node }; - } - counts[node.id].times ++; -}); - -b.run(); - -Object.keys(counts).forEach(function (key) { - var count = counts[key]; - console.log(count.times + ' : ' + count.node.source()); -}); -```` - -output: - - $ node example/tiny.js - 1 : var x=0; - 31 : i<30 - 30 : i++ - 30 : x++; - 30 : x++ - -methods -======= - -var bunker = require('bunker'); - -var b = bunker(src) -------------------- - -Create a new bunker code coverageifier with some source `src`. - -The bunker object `b` is an `EventEmitter` that emits `'node'` events with two -parameters: - -* `node` - the [burrito](https://github.com/substack/node-burrito) node object -* `stack` - the stack, [stackedy](https://github.com/substack/node-stackedy) style - -b.include(src) --------------- - -Include some source into the bunker. - -b.compile() ------------ - -Return the source wrapped with burrito. - -b.assign(context={}) --------------------- - -Assign the statement-tracking functions into `context`. - -b.run(context={}) ------------------ - -Run the source using `vm.runInNewContext()` with some `context`. -The statement-tracking functions will be added to `context` by `assign()`. diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/example/prof.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/example/prof.js deleted file mode 100644 index 5cac4cc..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/example/prof.js +++ /dev/null @@ -1,51 +0,0 @@ -var bunker = require('bunker'); -var b = bunker('(' + function () { - function beep () { - var x = 0; - for (var i = 0; i < 1000; i++) { - for (var j = 0; j < 100; j++) { - x += j; - } - } - return x; - } - - beep(); - -} + ')()'); - -var counts = {}; - -b.on('node', function (node) { - if (!counts[node.id]) { - counts[node.id] = { times : 0, node : node, elapsed : 0 }; - } - counts[node.id].times ++; - - var now = Date.now(); - - if (last.id !== undefined) { - counts[last.id].elapsed += last. - } - - if (node.name === 'call') { - var start = now; - - last.id = node.id; - counts[node.id].elapsed += Date.now() - start; - } - else { - counts[node.id].elapsed += now - last; - last = now; - } -}); - -b.run(); - -Object.keys(counts).forEach(function (key) { - var count = counts[key]; - console.log( - [ count.times, count.node.source(), count.elapsed ] - .join(' : ') - ); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/example/tiny.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/example/tiny.js deleted file mode 100644 index aa5b034..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/example/tiny.js +++ /dev/null @@ -1,18 +0,0 @@ -var bunker = require('bunker'); -var b = bunker('var x = 0; for (var i = 0; i < 30; i++) { x++ }'); - -var counts = {}; - -b.on('node', function (node) { - if (!counts[node.id]) { - counts[node.id] = { times : 0, node : node }; - } - counts[node.id].times ++; -}); - -b.run(); - -Object.keys(counts).forEach(function (key) { - var count = counts[key]; - console.log(count.times + ' : ' + count.node.source()); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/example/top/run.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/example/top/run.js deleted file mode 100644 index d9eaa10..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/example/top/run.js +++ /dev/null @@ -1,31 +0,0 @@ -var bunker = require('bunker'); -var fs = require('fs'); -var src = fs.readFileSync(__dirname + '/src.js', 'utf8'); - -var counts = {}; - -var b = bunker(src); -b.on('node', function (node) { - if (!counts[node.id]) { - counts[node.id] = { times : 0, node : node }; - } - counts[node.id].times ++; -}); - -b.run({ - setInterval : setInterval, - clearInterval : clearInterval, - end : function () { - Object.keys(counts) - .sort(function (a, b) { - return counts[b].times - counts[a].times - }) - .forEach(function (key) { - var count = counts[key]; - console.log( - count.times + ' : ' + count.node.source() - ); - }) - ; - } -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/example/top/src.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/example/top/src.js deleted file mode 100644 index 0c92e48..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/example/top/src.js +++ /dev/null @@ -1,18 +0,0 @@ -function boop () { - for (var i = 0; i < 30; i++) { - nop(); - } -} - -function nop () { - return undefined; -} - -var times = 0; -var iv = setInterval(function () { - if (++times === 10) { - clearInterval(iv); - end(); - } - else boop() -}, 100); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/index.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/index.js deleted file mode 100644 index ed5d437..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/index.js +++ /dev/null @@ -1,116 +0,0 @@ -var burrito = require('burrito'); -var vm = require('vm'); -var EventEmitter = require('events').EventEmitter; - -module.exports = function (src) { - var b = new Bunker(); - if (src) b.include(src); - return b; -}; - -function Bunker () { - this.sources = []; - this.nodes = []; - - this.names = { - call : burrito.generateName(6), - expr : burrito.generateName(6), - stat : burrito.generateName(6), - return : burrito.generateName(6) - }; -} - -Bunker.prototype = new EventEmitter; - -Bunker.prototype.include = function (src) { - this.sources.push(src); - this.source = null; - return this; -}; - -Bunker.prototype.compile = function () { - var src = this.sources.join('\n'); - var nodes = this.nodes; - var names = this.names; - - return burrito(src, function (node) { - var i = nodes.length; - - if (node.name === 'call') { - nodes.push(node); - node.wrap(names.call + '(' + i + ')(%s)'); - } - else if (node.name === 'stat' || node.name === 'throw' - || node.name === 'var') { - nodes.push(node); - node.wrap('{' + names.stat + '(' + i + ');%s}'); - } - else if (node.name === 'return') { - nodes.push(node); - // We need to wrap the new source in a function definition - // so that UglifyJS will allow the presence of return - var stat = names.stat + '(' + i + ');'; - var wrapped = 'function ' + names.return + '() {' - + stat + node.source() - +'}' - ; - var parsed = burrito.parse(wrapped); - // Remove the function definition from the AST - parsed[1] = parsed[1][0][3]; - node.state.update(parsed, true); - } - else if (node.name === 'binary') { - nodes.push(node); - node.wrap(names.expr + '(' + i + ')(%s)'); - } - else if (node.name === 'unary-postfix' || node.name === 'unary-prefix') { - nodes.push(node); - node.wrap(names.expr + '(' + i + ')(%s)'); - } - - if (i !== nodes.length) { - node.id = i; - } - }); -}; - -Bunker.prototype.assign = function (context) { - if (!context) context = {}; - - var self = this; - var stack = []; - - context[self.names.call] = function (i) { - var node = self.nodes[i]; - stack.unshift(node); - self.emit('node', node, stack); - - return function (expr) { - stack.shift(); - return expr; - }; - }; - - context[self.names.expr] = function (i) { - var node = self.nodes[i]; - self.emit('node', node, stack); - - return function (expr) { - return expr; - }; - }; - - context[self.names.stat] = function (i) { - var node = self.nodes[i]; - self.emit('node', node, stack); - }; - - return context; -}; - -Bunker.prototype.run = function (context) { - var src = this.compile(); - vm.runInNewContext(src, this.assign(context)); - - return this; -}; diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/.npmignore b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/.npmignore deleted file mode 100644 index 3c3629e..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/.travis.yml b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/.travis.yml deleted file mode 100644 index f1d0f13..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.4 - - 0.6 diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/README.markdown b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/README.markdown deleted file mode 100644 index 7c9097c..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/README.markdown +++ /dev/null @@ -1,187 +0,0 @@ -burrito -======= - -Burrito makes it easy to do crazy stuff with the javascript AST. - -This is super useful if you want to roll your own stack traces or build a code -coverage tool. - -[![build status](https://secure.travis-ci.org/substack/node-burrito.png)](http://travis-ci.org/substack/node-burrito) - -![node.wrap("burrito")](http://substack.net/images/burrito.png) - -examples -======== - -microwave ---------- - -examples/microwave.js - -````javascript -var burrito = require('burrito'); - -var res = burrito.microwave('Math.sin(2)', function (node) { - if (node.name === 'num') node.wrap('Math.PI / %s'); -}); - -console.log(res); // sin(pi / 2) == 1 -```` - -output: - - 1 - -wrap ----- - -examples/wrap.js - -````javascript -var burrito = require('burrito'); - -var src = burrito('f() && g(h())\nfoo()', function (node) { - if (node.name === 'call') node.wrap('qqq(%s)'); -}); - -console.log(src); -```` - -output: - - qqq(f()) && qqq(g(qqq(h()))); - - qqq(foo()); - -methods -======= - - var burrito = require('burrito'); - -burrito(code, cb) ------------------ - -Given some source `code` and a function `trace`, walk the ast by expression. - -The `cb` gets called with a node object described below. - -If `code` is an Array then it is assumbed to be an AST which you can generate -yourself with `burrito.parse()`. The AST must be annotated, so make sure to -`burrito.parse(src, false, true)`. - -burrito.microwave(code, context={}, cb) ---------------------------------------- - -Like `burrito()` except the result is run using -`vm.runInNewContext(res, context)`. - -node object -=========== - -node.name ---------- - -Name is a string that contains the type of the expression as named by uglify. - -node.wrap(s) ------------- - -Wrap the current expression in `s`. - -If `s` is a string, `"%s"` will be replaced with the stringified current -expression. - -If `s` is a function, it is called with the stringified current expression and -should return a new stringified expression. - -If the `node.name === "binary"`, you get the subterms "%a" and "%b" to play with -too. These subterms are applied if `s` is a function too: `s(expr, a, b)`. - -Protip: to insert multiple statements you can use javascript's lesser-known block -syntax that it gets from C: - -````javascript -if (node.name === 'stat') node.wrap('{ foo(); %s }') -```` - -node.node ---------- - -raw ast data generated by uglify - -node.value ----------- - -`node.node.slice(1)` to skip the annotations - -node.start ----------- - -The start location of the expression, like this: - -````javascript -{ type: 'name', - value: 'b', - line: 0, - col: 3, - pos: 3, - nlb: false, - comments_before: [] } -```` - -node.end --------- - -The end location of the expression, formatted the same as `node.start`. - -node.state ----------- - -The state of the traversal using traverse. - -node.source() -------------- - -Returns a stringified version of the expression. - -node.parent() -------------- - -Returns the parent `node` or `null` if the node is the root element. - -node.label() ------------- - -Return the label of the present node or `null` if there is no label. - -Labels are returned for "call", "var", "defun", and "function" nodes. - -Returns an array for "var" nodes since `var` statements can -contain multiple labels in assignment. - -install -======= - -With [npm](http://npmjs.org) you can just: - - npm install burrito - -in the browser -============== - -Burrito works in browser with -[browserify](https://github.com/substack/node-browserify). - -It has been tested against: - -* Internet Explorer 5.5, 6.0, 7.0, 8.0, 9.0 -* Firefox 3.5 -* Chrome 6.0 -* Opera 10.6 -* Safari 5.0 - -kudos -===== - -Heavily inspired by (and previously mostly lifted outright from) isaacs's nifty -tmp/instrument.js thingy from uglify-js. diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/example/microwave.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/example/microwave.js deleted file mode 100644 index c6fcf45..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/example/microwave.js +++ /dev/null @@ -1,8 +0,0 @@ -var burrito = require('burrito'); - -var res = burrito.microwave('Math.sin(2)', function (node) { - console.dir(node); - if (node.name === 'num') node.wrap('Math.PI / %s'); -}); - -console.log(res); // sin(pi / 2) == 1 diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/example/web/bs.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/example/web/bs.js deleted file mode 100644 index 3583c7f..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/example/web/bs.js +++ /dev/null @@ -1,4832 +0,0 @@ -var require = function (file, cwd) { - var resolved = require.resolve(file, cwd || '/'); - var mod = require.modules[resolved]; - if (!mod) throw new Error( - 'Failed to resolve module ' + file + ', tried ' + resolved - ); - var res = mod._cached ? mod._cached : mod(); - return res; -} -var __require = require; - -require.paths = []; -require.modules = {}; -require.extensions = [".js",".coffee"]; - -require.resolve = (function () { - var core = { - 'assert': true, - 'events': true, - 'fs': true, - 'path': true, - 'vm': true - }; - - return function (x, cwd) { - if (!cwd) cwd = '/'; - - if (core[x]) return x; - var path = require.modules.path(); - var y = cwd || '.'; - - if (x.match(/^(?:\.\.?\/|\/)/)) { - var m = loadAsFileSync(path.resolve(y, x)) - || loadAsDirectorySync(path.resolve(y, x)); - if (m) return m; - } - - var n = loadNodeModulesSync(x, y); - if (n) return n; - - throw new Error("Cannot find module '" + x + "'"); - - function loadAsFileSync (x) { - if (require.modules[x]) { - return x; - } - - for (var i = 0; i < require.extensions.length; i++) { - var ext = require.extensions[i]; - if (require.modules[x + ext]) return x + ext; - } - } - - function loadAsDirectorySync (x) { - x = x.replace(/\/+$/, ''); - var pkgfile = x + '/package.json'; - if (require.modules[pkgfile]) { - var pkg = require.modules[pkgfile](); - var b = pkg.browserify; - if (typeof b === 'object' && b.main) { - var m = loadAsFileSync(path.resolve(x, b.main)); - if (m) return m; - } - else if (typeof b === 'string') { - var m = loadAsFileSync(path.resolve(x, b)); - if (m) return m; - } - else if (pkg.main) { - var m = loadAsFileSync(path.resolve(x, pkg.main)); - if (m) return m; - } - } - - return loadAsFileSync(x + '/index'); - } - - function loadNodeModulesSync (x, start) { - var dirs = nodeModulesPathsSync(start); - for (var i = 0; i < dirs.length; i++) { - var dir = dirs[i]; - var m = loadAsFileSync(dir + '/' + x); - if (m) return m; - var n = loadAsDirectorySync(dir + '/' + x); - if (n) return n; - } - - var m = loadAsFileSync(x); - if (m) return m; - } - - function nodeModulesPathsSync (start) { - var parts; - if (start === '/') parts = [ '' ]; - else parts = path.normalize(start).split('/'); - - var dirs = []; - for (var i = parts.length - 1; i >= 0; i--) { - if (parts[i] === 'node_modules') continue; - var dir = parts.slice(0, i + 1).join('/') + '/node_modules'; - dirs.push(dir); - } - - return dirs; - } - }; -})(); - -require.alias = function (from, to) { - var path = require.modules.path(); - var res = null; - try { - res = require.resolve(from + '/package.json', '/'); - } - catch (err) { - res = require.resolve(from, '/'); - } - var basedir = path.dirname(res); - - var keys = Object_keys(require.modules); - - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (key.slice(0, basedir.length + 1) === basedir + '/') { - var f = key.slice(basedir.length); - require.modules[to + f] = require.modules[basedir + f]; - } - else if (key === basedir) { - require.modules[to] = require.modules[basedir]; - } - } -}; - -var Object_keys = Object.keys || function (obj) { - var res = []; - for (var key in obj) res.push(key) - return res; -}; - -if (typeof process === 'undefined') process = {}; - -if (!process.nextTick) process.nextTick = function (fn) { - setTimeout(fn, 0); -}; - -if (!process.title) process.title = 'browser'; - -if (!process.binding) process.binding = function (name) { - if (name === 'evals') return require('vm') - else throw new Error('No such module') -}; - -if (!process.cwd) process.cwd = function () { return '.' }; - -require.modules["path"] = function () { - var module = { exports : {} }; - var exports = module.exports; - var __dirname = "."; - var __filename = "path"; - - var require = function (file) { - return __require(file, "."); - }; - - require.resolve = function (file) { - return __require.resolve(name, "."); - }; - - require.modules = __require.modules; - __require.modules["path"]._cached = module.exports; - - (function () { - function filter (xs, fn) { - var res = []; - for (var i = 0; i < xs.length; i++) { - if (fn(xs[i], i, xs)) res.push(xs[i]); - } - return res; -} - -// resolves . and .. elements in a path array with directory names there -// must be no slashes, empty elements, or device names (c:\) in the array -// (so also no leading and trailing slashes - it does not distinguish -// relative and absolute paths) -function normalizeArray(parts, allowAboveRoot) { - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = parts.length; i >= 0; i--) { - var last = parts[i]; - if (last == '.') { - parts.splice(i, 1); - } else if (last === '..') { - parts.splice(i, 1); - up++; - } else if (up) { - parts.splice(i, 1); - up--; - } - } - - // if the path is allowed to go above the root, restore leading ..s - if (allowAboveRoot) { - for (; up--; up) { - parts.unshift('..'); - } - } - - return parts; -} - -// Regex to split a filename into [*, dir, basename, ext] -// posix version -var splitPathRe = /^(.+\/(?!$)|\/)?((?:.+?)?(\.[^.]*)?)$/; - -// path.resolve([from ...], to) -// posix version -exports.resolve = function() { -var resolvedPath = '', - resolvedAbsolute = false; - -for (var i = arguments.length; i >= -1 && !resolvedAbsolute; i--) { - var path = (i >= 0) - ? arguments[i] - : process.cwd(); - - // Skip empty and invalid entries - if (typeof path !== 'string' || !path) { - continue; - } - - resolvedPath = path + '/' + resolvedPath; - resolvedAbsolute = path.charAt(0) === '/'; -} - -// At this point the path should be resolved to a full absolute path, but -// handle relative paths to be safe (might happen when process.cwd() fails) - -// Normalize the path -resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) { - return !!p; - }), !resolvedAbsolute).join('/'); - - return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; -}; - -// path.normalize(path) -// posix version -exports.normalize = function(path) { -var isAbsolute = path.charAt(0) === '/', - trailingSlash = path.slice(-1) === '/'; - -// Normalize the path -path = normalizeArray(filter(path.split('/'), function(p) { - return !!p; - }), !isAbsolute).join('/'); - - if (!path && !isAbsolute) { - path = '.'; - } - if (path && trailingSlash) { - path += '/'; - } - - return (isAbsolute ? '/' : '') + path; -}; - - -// posix version -exports.join = function() { - var paths = Array.prototype.slice.call(arguments, 0); - return exports.normalize(filter(paths, function(p, index) { - return p && typeof p === 'string'; - }).join('/')); -}; - - -exports.dirname = function(path) { - var dir = splitPathRe.exec(path)[1] || ''; - var isWindows = false; - if (!dir) { - // No dirname - return '.'; - } else if (dir.length === 1 || - (isWindows && dir.length <= 3 && dir.charAt(1) === ':')) { - // It is just a slash or a drive letter with a slash - return dir; - } else { - // It is a full dirname, strip trailing slash - return dir.substring(0, dir.length - 1); - } -}; - - -exports.basename = function(path, ext) { - var f = splitPathRe.exec(path)[2] || ''; - // TODO: make this comparison case-insensitive on windows? - if (ext && f.substr(-1 * ext.length) === ext) { - f = f.substr(0, f.length - ext.length); - } - return f; -}; - - -exports.extname = function(path) { - return splitPathRe.exec(path)[3] || ''; -}; -; - }).call(module.exports); - - __require.modules["path"]._cached = module.exports; - return module.exports; -}; - -require.modules["/node_modules/burrito/package.json"] = function () { - var module = { exports : {} }; - var exports = module.exports; - var __dirname = "/node_modules/burrito"; - var __filename = "/node_modules/burrito/package.json"; - - var require = function (file) { - return __require(file, "/node_modules/burrito"); - }; - - require.resolve = function (file) { - return __require.resolve(name, "/node_modules/burrito"); - }; - - require.modules = __require.modules; - __require.modules["/node_modules/burrito/package.json"]._cached = module.exports; - - (function () { - module.exports = {"name":"burrito","description":"Wrap up expressions with a trace function while walking the AST with rice and beans on the side","version":"0.2.8","repository":{"type":"git","url":"git://github.com/substack/node-burrito.git"},"main":"./index.js","keywords":["trace","ast","walk","syntax","source","tree","uglify"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{"test":"expresso"},"dependencies":{"traverse":">=0.5.1 <0.6","uglify-js":"1.0.4"},"devDependencies":{"expresso":"=0.7.x"},"engines":{"node":">=0.4.0"},"license":"BSD","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"}}; - }).call(module.exports); - - __require.modules["/node_modules/burrito/package.json"]._cached = module.exports; - return module.exports; -}; - -require.modules["/node_modules/burrito/node_modules/uglify-js/package.json"] = function () { - var module = { exports : {} }; - var exports = module.exports; - var __dirname = "/node_modules/burrito/node_modules/uglify-js"; - var __filename = "/node_modules/burrito/node_modules/uglify-js/package.json"; - - var require = function (file) { - return __require(file, "/node_modules/burrito/node_modules/uglify-js"); - }; - - require.resolve = function (file) { - return __require.resolve(name, "/node_modules/burrito/node_modules/uglify-js"); - }; - - require.modules = __require.modules; - __require.modules["/node_modules/burrito/node_modules/uglify-js/package.json"]._cached = module.exports; - - (function () { - module.exports = {"name":"uglify-js","author":{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com","url":"http://mihai.bazon.net/blog"},"version":"1.0.4","main":"./uglify-js.js","bin":{"uglifyjs":"./bin/uglifyjs"},"repository":{"type":"git","url":"git@github.com:mishoo/UglifyJS.git"}}; - }).call(module.exports); - - __require.modules["/node_modules/burrito/node_modules/uglify-js/package.json"]._cached = module.exports; - return module.exports; -}; - -require.modules["/node_modules/burrito/node_modules/uglify-js/uglify-js.js"] = function () { - var module = { exports : {} }; - var exports = module.exports; - var __dirname = "/node_modules/burrito/node_modules/uglify-js"; - var __filename = "/node_modules/burrito/node_modules/uglify-js/uglify-js.js"; - - var require = function (file) { - return __require(file, "/node_modules/burrito/node_modules/uglify-js"); - }; - - require.resolve = function (file) { - return __require.resolve(name, "/node_modules/burrito/node_modules/uglify-js"); - }; - - require.modules = __require.modules; - __require.modules["/node_modules/burrito/node_modules/uglify-js/uglify-js.js"]._cached = module.exports; - - (function () { - //convienence function(src, [options]); -function uglify(orig_code, options){ - options || (options = {}); - var jsp = uglify.parser; - var pro = uglify.uglify; - - var ast = jsp.parse(orig_code, options.strict_semicolons); // parse code and get the initial AST - ast = pro.ast_mangle(ast, options.mangle_options); // get a new AST with mangled names - ast = pro.ast_squeeze(ast, options.squeeze_options); // get an AST with compression optimizations - var final_code = pro.gen_code(ast, options.gen_options); // compressed code here - return final_code; -}; - -uglify.parser = require("./lib/parse-js"); -uglify.uglify = require("./lib/process"); - -module.exports = uglify; - }).call(module.exports); - - __require.modules["/node_modules/burrito/node_modules/uglify-js/uglify-js.js"]._cached = module.exports; - return module.exports; -}; - -require.modules["/node_modules/burrito/node_modules/uglify-js/lib/parse-js.js"] = function () { - var module = { exports : {} }; - var exports = module.exports; - var __dirname = "/node_modules/burrito/node_modules/uglify-js/lib"; - var __filename = "/node_modules/burrito/node_modules/uglify-js/lib/parse-js.js"; - - var require = function (file) { - return __require(file, "/node_modules/burrito/node_modules/uglify-js/lib"); - }; - - require.resolve = function (file) { - return __require.resolve(name, "/node_modules/burrito/node_modules/uglify-js/lib"); - }; - - require.modules = __require.modules; - __require.modules["/node_modules/burrito/node_modules/uglify-js/lib/parse-js.js"]._cached = module.exports; - - (function () { - /*********************************************************************** - - A JavaScript tokenizer / parser / beautifier / compressor. - - This version is suitable for Node.js. With minimal changes (the - exports stuff) it should work on any JS platform. - - This file contains the tokenizer/parser. It is a port to JavaScript - of parse-js [1], a JavaScript parser library written in Common Lisp - by Marijn Haverbeke. Thank you Marijn! - - [1] http://marijn.haverbeke.nl/parse-js/ - - Exported functions: - - - tokenizer(code) -- returns a function. Call the returned - function to fetch the next token. - - - parse(code) -- returns an AST of the given JavaScript code. - - -------------------------------- (C) --------------------------------- - - Author: Mihai Bazon - - http://mihai.bazon.net/blog - - Distributed under the BSD license: - - Copyright 2010 (c) Mihai Bazon - Based on parse-js (http://marijn.haverbeke.nl/parse-js/). - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above - copyright notice, this list of conditions and the following - disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials - provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF - THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. - - ***********************************************************************/ - -/* -----[ Tokenizer (constants) ]----- */ - -var KEYWORDS = array_to_hash([ - "break", - "case", - "catch", - "const", - "continue", - "default", - "delete", - "do", - "else", - "finally", - "for", - "function", - "if", - "in", - "instanceof", - "new", - "return", - "switch", - "throw", - "try", - "typeof", - "var", - "void", - "while", - "with" -]); - -var RESERVED_WORDS = array_to_hash([ - "abstract", - "boolean", - "byte", - "char", - "class", - "debugger", - "double", - "enum", - "export", - "extends", - "final", - "float", - "goto", - "implements", - "import", - "int", - "interface", - "long", - "native", - "package", - "private", - "protected", - "public", - "short", - "static", - "super", - "synchronized", - "throws", - "transient", - "volatile" -]); - -var KEYWORDS_BEFORE_EXPRESSION = array_to_hash([ - "return", - "new", - "delete", - "throw", - "else", - "case" -]); - -var KEYWORDS_ATOM = array_to_hash([ - "false", - "null", - "true", - "undefined" -]); - -var OPERATOR_CHARS = array_to_hash(characters("+-*&%=<>!?|~^")); - -var RE_HEX_NUMBER = /^0x[0-9a-f]+$/i; -var RE_OCT_NUMBER = /^0[0-7]+$/; -var RE_DEC_NUMBER = /^\d*\.?\d*(?:e[+-]?\d*(?:\d\.?|\.?\d)\d*)?$/i; - -var OPERATORS = array_to_hash([ - "in", - "instanceof", - "typeof", - "new", - "void", - "delete", - "++", - "--", - "+", - "-", - "!", - "~", - "&", - "|", - "^", - "*", - "/", - "%", - ">>", - "<<", - ">>>", - "<", - ">", - "<=", - ">=", - "==", - "===", - "!=", - "!==", - "?", - "=", - "+=", - "-=", - "/=", - "*=", - "%=", - ">>=", - "<<=", - ">>>=", - "|=", - "^=", - "&=", - "&&", - "||" -]); - -var WHITESPACE_CHARS = array_to_hash(characters(" \u00a0\n\r\t\f\v\u200b")); - -var PUNC_BEFORE_EXPRESSION = array_to_hash(characters("[{}(,.;:")); - -var PUNC_CHARS = array_to_hash(characters("[]{}(),;:")); - -var REGEXP_MODIFIERS = array_to_hash(characters("gmsiy")); - -/* -----[ Tokenizer ]----- */ - -// regexps adapted from http://xregexp.com/plugins/#unicode -var UNICODE = { - letter: new RegExp("[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0523\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0621-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971\\u0972\\u097B-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D28\\u0D2A-\\u0D39\\u0D3D\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC\\u0EDD\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8B\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10D0-\\u10FA\\u10FC\\u1100-\\u1159\\u115F-\\u11A2\\u11A8-\\u11F9\\u1200-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u1676\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19A9\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u2094\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2C6F\\u2C71-\\u2C7D\\u2C80-\\u2CE4\\u2D00-\\u2D25\\u2D30-\\u2D65\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31B7\\u31F0-\\u31FF\\u3400\\u4DB5\\u4E00\\u9FC3\\uA000-\\uA48C\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA65F\\uA662-\\uA66E\\uA67F-\\uA697\\uA717-\\uA71F\\uA722-\\uA788\\uA78B\\uA78C\\uA7FB-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA90A-\\uA925\\uA930-\\uA946\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAC00\\uD7A3\\uF900-\\uFA2D\\uFA30-\\uFA6A\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"), - non_spacing_mark: new RegExp("[\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065E\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0900-\\u0902\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F90-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1DC0-\\u1DE6\\u1DFD-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F\\uA67C\\uA67D\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE26]"), - space_combining_mark: new RegExp("[\\u0903\\u093E-\\u0940\\u0949-\\u094C\\u094E\\u0982\\u0983\\u09BE-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09D7\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0B02\\u0B03\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD7\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82\\u0C83\\u0CBE\\u0CC0-\\u0CC4\\u0CC7\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0D02\\u0D03\\u0D3E-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D57\\u0D82\\u0D83\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0F3E\\u0F3F\\u0F7F\\u102B\\u102C\\u1031\\u1038\\u103B\\u103C\\u1056\\u1057\\u1062-\\u1064\\u1067-\\u106D\\u1083\\u1084\\u1087-\\u108C\\u108F\\u109A-\\u109C\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A19-\\u1A1B\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1B04\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43\\u1B44\\u1B82\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1C24-\\u1C2B\\u1C34\\u1C35\\u1CE1\\u1CF2\\uA823\\uA824\\uA827\\uA880\\uA881\\uA8B4-\\uA8C3\\uA952\\uA953\\uA983\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BD-\\uA9C0\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA4D\\uAA7B\\uABE3\\uABE4\\uABE6\\uABE7\\uABE9\\uABEA\\uABEC]"), - connector_punctuation: new RegExp("[\\u005F\\u203F\\u2040\\u2054\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFF3F]") -}; - -function is_letter(ch) { - return UNICODE.letter.test(ch); -}; - -function is_digit(ch) { - ch = ch.charCodeAt(0); - return ch >= 48 && ch <= 57; //XXX: find out if "UnicodeDigit" means something else than 0..9 -}; - -function is_alphanumeric_char(ch) { - return is_digit(ch) || is_letter(ch); -}; - -function is_unicode_combining_mark(ch) { - return UNICODE.non_spacing_mark.test(ch) || UNICODE.space_combining_mark.test(ch); -}; - -function is_unicode_connector_punctuation(ch) { - return UNICODE.connector_punctuation.test(ch); -}; - -function is_identifier_start(ch) { - return ch == "$" || ch == "_" || is_letter(ch); -}; - -function is_identifier_char(ch) { - return is_identifier_start(ch) - || is_unicode_combining_mark(ch) - || is_digit(ch) - || is_unicode_connector_punctuation(ch) - || ch == "\u200c" // zero-width non-joiner - || ch == "\u200d" // zero-width joiner (in my ECMA-262 PDF, this is also 200c) - ; -}; - -function parse_js_number(num) { - if (RE_HEX_NUMBER.test(num)) { - return parseInt(num.substr(2), 16); - } else if (RE_OCT_NUMBER.test(num)) { - return parseInt(num.substr(1), 8); - } else if (RE_DEC_NUMBER.test(num)) { - return parseFloat(num); - } -}; - -function JS_Parse_Error(message, line, col, pos) { - this.message = message; - this.line = line; - this.col = col; - this.pos = pos; - try { - ({})(); - } catch(ex) { - this.stack = ex.stack; - }; -}; - -JS_Parse_Error.prototype.toString = function() { - return this.message + " (line: " + this.line + ", col: " + this.col + ", pos: " + this.pos + ")" + "\n\n" + this.stack; -}; - -function js_error(message, line, col, pos) { - throw new JS_Parse_Error(message, line, col, pos); -}; - -function is_token(token, type, val) { - return token.type == type && (val == null || token.value == val); -}; - -var EX_EOF = {}; - -function tokenizer($TEXT) { - - var S = { - text : $TEXT.replace(/\r\n?|[\n\u2028\u2029]/g, "\n").replace(/^\uFEFF/, ''), - pos : 0, - tokpos : 0, - line : 0, - tokline : 0, - col : 0, - tokcol : 0, - newline_before : false, - regex_allowed : false, - comments_before : [] - }; - - function peek() { return S.text.charAt(S.pos); }; - - function next(signal_eof) { - var ch = S.text.charAt(S.pos++); - if (signal_eof && !ch) - throw EX_EOF; - if (ch == "\n") { - S.newline_before = true; - ++S.line; - S.col = 0; - } else { - ++S.col; - } - return ch; - }; - - function eof() { - return !S.peek(); - }; - - function find(what, signal_eof) { - var pos = S.text.indexOf(what, S.pos); - if (signal_eof && pos == -1) throw EX_EOF; - return pos; - }; - - function start_token() { - S.tokline = S.line; - S.tokcol = S.col; - S.tokpos = S.pos; - }; - - function token(type, value, is_comment) { - S.regex_allowed = ((type == "operator" && !HOP(UNARY_POSTFIX, value)) || - (type == "keyword" && HOP(KEYWORDS_BEFORE_EXPRESSION, value)) || - (type == "punc" && HOP(PUNC_BEFORE_EXPRESSION, value))); - var ret = { - type : type, - value : value, - line : S.tokline, - col : S.tokcol, - pos : S.tokpos, - nlb : S.newline_before - }; - if (!is_comment) { - ret.comments_before = S.comments_before; - S.comments_before = []; - } - S.newline_before = false; - return ret; - }; - - function skip_whitespace() { - while (HOP(WHITESPACE_CHARS, peek())) - next(); - }; - - function read_while(pred) { - var ret = "", ch = peek(), i = 0; - while (ch && pred(ch, i++)) { - ret += next(); - ch = peek(); - } - return ret; - }; - - function parse_error(err) { - js_error(err, S.tokline, S.tokcol, S.tokpos); - }; - - function read_num(prefix) { - var has_e = false, after_e = false, has_x = false, has_dot = prefix == "."; - var num = read_while(function(ch, i){ - if (ch == "x" || ch == "X") { - if (has_x) return false; - return has_x = true; - } - if (!has_x && (ch == "E" || ch == "e")) { - if (has_e) return false; - return has_e = after_e = true; - } - if (ch == "-") { - if (after_e || (i == 0 && !prefix)) return true; - return false; - } - if (ch == "+") return after_e; - after_e = false; - if (ch == ".") { - if (!has_dot && !has_x) - return has_dot = true; - return false; - } - return is_alphanumeric_char(ch); - }); - if (prefix) - num = prefix + num; - var valid = parse_js_number(num); - if (!isNaN(valid)) { - return token("num", valid); - } else { - parse_error("Invalid syntax: " + num); - } - }; - - function read_escaped_char() { - var ch = next(true); - switch (ch) { - case "n" : return "\n"; - case "r" : return "\r"; - case "t" : return "\t"; - case "b" : return "\b"; - case "v" : return "\v"; - case "f" : return "\f"; - case "0" : return "\0"; - case "x" : return String.fromCharCode(hex_bytes(2)); - case "u" : return String.fromCharCode(hex_bytes(4)); - default : return ch; - } - }; - - function hex_bytes(n) { - var num = 0; - for (; n > 0; --n) { - var digit = parseInt(next(true), 16); - if (isNaN(digit)) - parse_error("Invalid hex-character pattern in string"); - num = (num << 4) | digit; - } - return num; - }; - - function read_string() { - return with_eof_error("Unterminated string constant", function(){ - var quote = next(), ret = ""; - for (;;) { - var ch = next(true); - if (ch == "\\") ch = read_escaped_char(); - else if (ch == quote) break; - ret += ch; - } - return token("string", ret); - }); - }; - - function read_line_comment() { - next(); - var i = find("\n"), ret; - if (i == -1) { - ret = S.text.substr(S.pos); - S.pos = S.text.length; - } else { - ret = S.text.substring(S.pos, i); - S.pos = i; - } - return token("comment1", ret, true); - }; - - function read_multiline_comment() { - next(); - return with_eof_error("Unterminated multiline comment", function(){ - var i = find("*/", true), - text = S.text.substring(S.pos, i), - tok = token("comment2", text, true); - S.pos = i + 2; - S.line += text.split("\n").length - 1; - S.newline_before = text.indexOf("\n") >= 0; - - // https://github.com/mishoo/UglifyJS/issues/#issue/100 - if (/^@cc_on/i.test(text)) { - warn("WARNING: at line " + S.line); - warn("*** Found \"conditional comment\": " + text); - warn("*** UglifyJS DISCARDS ALL COMMENTS. This means your code might no longer work properly in Internet Explorer."); - } - - return tok; - }); - }; - - function read_name() { - var backslash = false, name = "", ch; - while ((ch = peek()) != null) { - if (!backslash) { - if (ch == "\\") backslash = true, next(); - else if (is_identifier_char(ch)) name += next(); - else break; - } - else { - if (ch != "u") parse_error("Expecting UnicodeEscapeSequence -- uXXXX"); - ch = read_escaped_char(); - if (!is_identifier_char(ch)) parse_error("Unicode char: " + ch.charCodeAt(0) + " is not valid in identifier"); - name += ch; - backslash = false; - } - } - return name; - }; - - function read_regexp() { - return with_eof_error("Unterminated regular expression", function(){ - var prev_backslash = false, regexp = "", ch, in_class = false; - while ((ch = next(true))) if (prev_backslash) { - regexp += "\\" + ch; - prev_backslash = false; - } else if (ch == "[") { - in_class = true; - regexp += ch; - } else if (ch == "]" && in_class) { - in_class = false; - regexp += ch; - } else if (ch == "/" && !in_class) { - break; - } else if (ch == "\\") { - prev_backslash = true; - } else { - regexp += ch; - } - var mods = read_name(); - return token("regexp", [ regexp, mods ]); - }); - }; - - function read_operator(prefix) { - function grow(op) { - if (!peek()) return op; - var bigger = op + peek(); - if (HOP(OPERATORS, bigger)) { - next(); - return grow(bigger); - } else { - return op; - } - }; - return token("operator", grow(prefix || next())); - }; - - function handle_slash() { - next(); - var regex_allowed = S.regex_allowed; - switch (peek()) { - case "/": - S.comments_before.push(read_line_comment()); - S.regex_allowed = regex_allowed; - return next_token(); - case "*": - S.comments_before.push(read_multiline_comment()); - S.regex_allowed = regex_allowed; - return next_token(); - } - return S.regex_allowed ? read_regexp() : read_operator("/"); - }; - - function handle_dot() { - next(); - return is_digit(peek()) - ? read_num(".") - : token("punc", "."); - }; - - function read_word() { - var word = read_name(); - return !HOP(KEYWORDS, word) - ? token("name", word) - : HOP(OPERATORS, word) - ? token("operator", word) - : HOP(KEYWORDS_ATOM, word) - ? token("atom", word) - : token("keyword", word); - }; - - function with_eof_error(eof_error, cont) { - try { - return cont(); - } catch(ex) { - if (ex === EX_EOF) parse_error(eof_error); - else throw ex; - } - }; - - function next_token(force_regexp) { - if (force_regexp) - return read_regexp(); - skip_whitespace(); - start_token(); - var ch = peek(); - if (!ch) return token("eof"); - if (is_digit(ch)) return read_num(); - if (ch == '"' || ch == "'") return read_string(); - if (HOP(PUNC_CHARS, ch)) return token("punc", next()); - if (ch == ".") return handle_dot(); - if (ch == "/") return handle_slash(); - if (HOP(OPERATOR_CHARS, ch)) return read_operator(); - if (ch == "\\" || is_identifier_start(ch)) return read_word(); - parse_error("Unexpected character '" + ch + "'"); - }; - - next_token.context = function(nc) { - if (nc) S = nc; - return S; - }; - - return next_token; - -}; - -/* -----[ Parser (constants) ]----- */ - -var UNARY_PREFIX = array_to_hash([ - "typeof", - "void", - "delete", - "--", - "++", - "!", - "~", - "-", - "+" -]); - -var UNARY_POSTFIX = array_to_hash([ "--", "++" ]); - -var ASSIGNMENT = (function(a, ret, i){ - while (i < a.length) { - ret[a[i]] = a[i].substr(0, a[i].length - 1); - i++; - } - return ret; -})( - ["+=", "-=", "/=", "*=", "%=", ">>=", "<<=", ">>>=", "|=", "^=", "&="], - { "=": true }, - 0 -); - -var PRECEDENCE = (function(a, ret){ - for (var i = 0, n = 1; i < a.length; ++i, ++n) { - var b = a[i]; - for (var j = 0; j < b.length; ++j) { - ret[b[j]] = n; - } - } - return ret; -})( - [ - ["||"], - ["&&"], - ["|"], - ["^"], - ["&"], - ["==", "===", "!=", "!=="], - ["<", ">", "<=", ">=", "in", "instanceof"], - [">>", "<<", ">>>"], - ["+", "-"], - ["*", "/", "%"] - ], - {} -); - -var STATEMENTS_WITH_LABELS = array_to_hash([ "for", "do", "while", "switch" ]); - -var ATOMIC_START_TOKEN = array_to_hash([ "atom", "num", "string", "regexp", "name" ]); - -/* -----[ Parser ]----- */ - -function NodeWithToken(str, start, end) { - this.name = str; - this.start = start; - this.end = end; -}; - -NodeWithToken.prototype.toString = function() { return this.name; }; - -function parse($TEXT, exigent_mode, embed_tokens) { - - var S = { - input : typeof $TEXT == "string" ? tokenizer($TEXT, true) : $TEXT, - token : null, - prev : null, - peeked : null, - in_function : 0, - in_loop : 0, - labels : [] - }; - - S.token = next(); - - function is(type, value) { - return is_token(S.token, type, value); - }; - - function peek() { return S.peeked || (S.peeked = S.input()); }; - - function next() { - S.prev = S.token; - if (S.peeked) { - S.token = S.peeked; - S.peeked = null; - } else { - S.token = S.input(); - } - return S.token; - }; - - function prev() { - return S.prev; - }; - - function croak(msg, line, col, pos) { - var ctx = S.input.context(); - js_error(msg, - line != null ? line : ctx.tokline, - col != null ? col : ctx.tokcol, - pos != null ? pos : ctx.tokpos); - }; - - function token_error(token, msg) { - croak(msg, token.line, token.col); - }; - - function unexpected(token) { - if (token == null) - token = S.token; - token_error(token, "Unexpected token: " + token.type + " (" + token.value + ")"); - }; - - function expect_token(type, val) { - if (is(type, val)) { - return next(); - } - token_error(S.token, "Unexpected token " + S.token.type + ", expected " + type); - }; - - function expect(punc) { return expect_token("punc", punc); }; - - function can_insert_semicolon() { - return !exigent_mode && ( - S.token.nlb || is("eof") || is("punc", "}") - ); - }; - - function semicolon() { - if (is("punc", ";")) next(); - else if (!can_insert_semicolon()) unexpected(); - }; - - function as() { - return slice(arguments); - }; - - function parenthesised() { - expect("("); - var ex = expression(); - expect(")"); - return ex; - }; - - function add_tokens(str, start, end) { - return str instanceof NodeWithToken ? str : new NodeWithToken(str, start, end); - }; - - function maybe_embed_tokens(parser) { - if (embed_tokens) return function() { - var start = S.token; - var ast = parser.apply(this, arguments); - ast[0] = add_tokens(ast[0], start, prev()); - return ast; - }; - else return parser; - }; - - var statement = maybe_embed_tokens(function() { - if (is("operator", "/")) { - S.peeked = null; - S.token = S.input(true); // force regexp - } - switch (S.token.type) { - case "num": - case "string": - case "regexp": - case "operator": - case "atom": - return simple_statement(); - - case "name": - return is_token(peek(), "punc", ":") - ? labeled_statement(prog1(S.token.value, next, next)) - : simple_statement(); - - case "punc": - switch (S.token.value) { - case "{": - return as("block", block_()); - case "[": - case "(": - return simple_statement(); - case ";": - next(); - return as("block"); - default: - unexpected(); - } - - case "keyword": - switch (prog1(S.token.value, next)) { - case "break": - return break_cont("break"); - - case "continue": - return break_cont("continue"); - - case "debugger": - semicolon(); - return as("debugger"); - - case "do": - return (function(body){ - expect_token("keyword", "while"); - return as("do", prog1(parenthesised, semicolon), body); - })(in_loop(statement)); - - case "for": - return for_(); - - case "function": - return function_(true); - - case "if": - return if_(); - - case "return": - if (S.in_function == 0) - croak("'return' outside of function"); - return as("return", - is("punc", ";") - ? (next(), null) - : can_insert_semicolon() - ? null - : prog1(expression, semicolon)); - - case "switch": - return as("switch", parenthesised(), switch_block_()); - - case "throw": - return as("throw", prog1(expression, semicolon)); - - case "try": - return try_(); - - case "var": - return prog1(var_, semicolon); - - case "const": - return prog1(const_, semicolon); - - case "while": - return as("while", parenthesised(), in_loop(statement)); - - case "with": - return as("with", parenthesised(), statement()); - - default: - unexpected(); - } - } - }); - - function labeled_statement(label) { - S.labels.push(label); - var start = S.token, stat = statement(); - if (exigent_mode && !HOP(STATEMENTS_WITH_LABELS, stat[0])) - unexpected(start); - S.labels.pop(); - return as("label", label, stat); - }; - - function simple_statement() { - return as("stat", prog1(expression, semicolon)); - }; - - function break_cont(type) { - var name; - if (!can_insert_semicolon()) { - name = is("name") ? S.token.value : null; - } - if (name != null) { - next(); - if (!member(name, S.labels)) - croak("Label " + name + " without matching loop or statement"); - } - else if (S.in_loop == 0) - croak(type + " not inside a loop or switch"); - semicolon(); - return as(type, name); - }; - - function for_() { - expect("("); - var init = null; - if (!is("punc", ";")) { - init = is("keyword", "var") - ? (next(), var_(true)) - : expression(true, true); - if (is("operator", "in")) - return for_in(init); - } - return regular_for(init); - }; - - function regular_for(init) { - expect(";"); - var test = is("punc", ";") ? null : expression(); - expect(";"); - var step = is("punc", ")") ? null : expression(); - expect(")"); - return as("for", init, test, step, in_loop(statement)); - }; - - function for_in(init) { - var lhs = init[0] == "var" ? as("name", init[1][0]) : init; - next(); - var obj = expression(); - expect(")"); - return as("for-in", init, lhs, obj, in_loop(statement)); - }; - - var function_ = maybe_embed_tokens(function(in_statement) { - var name = is("name") ? prog1(S.token.value, next) : null; - if (in_statement && !name) - unexpected(); - expect("("); - return as(in_statement ? "defun" : "function", - name, - // arguments - (function(first, a){ - while (!is("punc", ")")) { - if (first) first = false; else expect(","); - if (!is("name")) unexpected(); - a.push(S.token.value); - next(); - } - next(); - return a; - })(true, []), - // body - (function(){ - ++S.in_function; - var loop = S.in_loop; - S.in_loop = 0; - var a = block_(); - --S.in_function; - S.in_loop = loop; - return a; - })()); - }); - - function if_() { - var cond = parenthesised(), body = statement(), belse; - if (is("keyword", "else")) { - next(); - belse = statement(); - } - return as("if", cond, body, belse); - }; - - function block_() { - expect("{"); - var a = []; - while (!is("punc", "}")) { - if (is("eof")) unexpected(); - a.push(statement()); - } - next(); - return a; - }; - - var switch_block_ = curry(in_loop, function(){ - expect("{"); - var a = [], cur = null; - while (!is("punc", "}")) { - if (is("eof")) unexpected(); - if (is("keyword", "case")) { - next(); - cur = []; - a.push([ expression(), cur ]); - expect(":"); - } - else if (is("keyword", "default")) { - next(); - expect(":"); - cur = []; - a.push([ null, cur ]); - } - else { - if (!cur) unexpected(); - cur.push(statement()); - } - } - next(); - return a; - }); - - function try_() { - var body = block_(), bcatch, bfinally; - if (is("keyword", "catch")) { - next(); - expect("("); - if (!is("name")) - croak("Name expected"); - var name = S.token.value; - next(); - expect(")"); - bcatch = [ name, block_() ]; - } - if (is("keyword", "finally")) { - next(); - bfinally = block_(); - } - if (!bcatch && !bfinally) - croak("Missing catch/finally blocks"); - return as("try", body, bcatch, bfinally); - }; - - function vardefs(no_in) { - var a = []; - for (;;) { - if (!is("name")) - unexpected(); - var name = S.token.value; - next(); - if (is("operator", "=")) { - next(); - a.push([ name, expression(false, no_in) ]); - } else { - a.push([ name ]); - } - if (!is("punc", ",")) - break; - next(); - } - return a; - }; - - function var_(no_in) { - return as("var", vardefs(no_in)); - }; - - function const_() { - return as("const", vardefs()); - }; - - function new_() { - var newexp = expr_atom(false), args; - if (is("punc", "(")) { - next(); - args = expr_list(")"); - } else { - args = []; - } - return subscripts(as("new", newexp, args), true); - }; - - var expr_atom = maybe_embed_tokens(function(allow_calls) { - if (is("operator", "new")) { - next(); - return new_(); - } - if (is("operator") && HOP(UNARY_PREFIX, S.token.value)) { - return make_unary("unary-prefix", - prog1(S.token.value, next), - expr_atom(allow_calls)); - } - if (is("punc")) { - switch (S.token.value) { - case "(": - next(); - return subscripts(prog1(expression, curry(expect, ")")), allow_calls); - case "[": - next(); - return subscripts(array_(), allow_calls); - case "{": - next(); - return subscripts(object_(), allow_calls); - } - unexpected(); - } - if (is("keyword", "function")) { - next(); - return subscripts(function_(false), allow_calls); - } - if (HOP(ATOMIC_START_TOKEN, S.token.type)) { - var atom = S.token.type == "regexp" - ? as("regexp", S.token.value[0], S.token.value[1]) - : as(S.token.type, S.token.value); - return subscripts(prog1(atom, next), allow_calls); - } - unexpected(); - }); - - function expr_list(closing, allow_trailing_comma, allow_empty) { - var first = true, a = []; - while (!is("punc", closing)) { - if (first) first = false; else expect(","); - if (allow_trailing_comma && is("punc", closing)) break; - if (is("punc", ",") && allow_empty) { - a.push([ "atom", "undefined" ]); - } else { - a.push(expression(false)); - } - } - next(); - return a; - }; - - function array_() { - return as("array", expr_list("]", !exigent_mode, true)); - }; - - function object_() { - var first = true, a = []; - while (!is("punc", "}")) { - if (first) first = false; else expect(","); - if (!exigent_mode && is("punc", "}")) - // allow trailing comma - break; - var type = S.token.type; - var name = as_property_name(); - if (type == "name" && (name == "get" || name == "set") && !is("punc", ":")) { - a.push([ as_name(), function_(false), name ]); - } else { - expect(":"); - a.push([ name, expression(false) ]); - } - } - next(); - return as("object", a); - }; - - function as_property_name() { - switch (S.token.type) { - case "num": - case "string": - return prog1(S.token.value, next); - } - return as_name(); - }; - - function as_name() { - switch (S.token.type) { - case "name": - case "operator": - case "keyword": - case "atom": - return prog1(S.token.value, next); - default: - unexpected(); - } - }; - - function subscripts(expr, allow_calls) { - if (is("punc", ".")) { - next(); - return subscripts(as("dot", expr, as_name()), allow_calls); - } - if (is("punc", "[")) { - next(); - return subscripts(as("sub", expr, prog1(expression, curry(expect, "]"))), allow_calls); - } - if (allow_calls && is("punc", "(")) { - next(); - return subscripts(as("call", expr, expr_list(")")), true); - } - if (allow_calls && is("operator") && HOP(UNARY_POSTFIX, S.token.value)) { - return prog1(curry(make_unary, "unary-postfix", S.token.value, expr), - next); - } - return expr; - }; - - function make_unary(tag, op, expr) { - if ((op == "++" || op == "--") && !is_assignable(expr)) - croak("Invalid use of " + op + " operator"); - return as(tag, op, expr); - }; - - function expr_op(left, min_prec, no_in) { - var op = is("operator") ? S.token.value : null; - if (op && op == "in" && no_in) op = null; - var prec = op != null ? PRECEDENCE[op] : null; - if (prec != null && prec > min_prec) { - next(); - var right = expr_op(expr_atom(true), prec, no_in); - return expr_op(as("binary", op, left, right), min_prec, no_in); - } - return left; - }; - - function expr_ops(no_in) { - return expr_op(expr_atom(true), 0, no_in); - }; - - function maybe_conditional(no_in) { - var expr = expr_ops(no_in); - if (is("operator", "?")) { - next(); - var yes = expression(false); - expect(":"); - return as("conditional", expr, yes, expression(false, no_in)); - } - return expr; - }; - - function is_assignable(expr) { - if (!exigent_mode) return true; - switch (expr[0]) { - case "dot": - case "sub": - case "new": - case "call": - return true; - case "name": - return expr[1] != "this"; - } - }; - - function maybe_assign(no_in) { - var left = maybe_conditional(no_in), val = S.token.value; - if (is("operator") && HOP(ASSIGNMENT, val)) { - if (is_assignable(left)) { - next(); - return as("assign", ASSIGNMENT[val], left, maybe_assign(no_in)); - } - croak("Invalid assignment"); - } - return left; - }; - - var expression = maybe_embed_tokens(function(commas, no_in) { - if (arguments.length == 0) - commas = true; - var expr = maybe_assign(no_in); - if (commas && is("punc", ",")) { - next(); - return as("seq", expr, expression(true, no_in)); - } - return expr; - }); - - function in_loop(cont) { - try { - ++S.in_loop; - return cont(); - } finally { - --S.in_loop; - } - }; - - return as("toplevel", (function(a){ - while (!is("eof")) - a.push(statement()); - return a; - })([])); - -}; - -/* -----[ Utilities ]----- */ - -function curry(f) { - var args = slice(arguments, 1); - return function() { return f.apply(this, args.concat(slice(arguments))); }; -}; - -function prog1(ret) { - if (ret instanceof Function) - ret = ret(); - for (var i = 1, n = arguments.length; --n > 0; ++i) - arguments[i](); - return ret; -}; - -function array_to_hash(a) { - var ret = {}; - for (var i = 0; i < a.length; ++i) - ret[a[i]] = true; - return ret; -}; - -function slice(a, start) { - return Array.prototype.slice.call(a, start == null ? 0 : start); -}; - -function characters(str) { - return str.split(""); -}; - -function member(name, array) { - for (var i = array.length; --i >= 0;) - if (array[i] === name) - return true; - return false; -}; - -function HOP(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); -}; - -var warn = function() {}; - -/* -----[ Exports ]----- */ - -exports.tokenizer = tokenizer; -exports.parse = parse; -exports.slice = slice; -exports.curry = curry; -exports.member = member; -exports.array_to_hash = array_to_hash; -exports.PRECEDENCE = PRECEDENCE; -exports.KEYWORDS_ATOM = KEYWORDS_ATOM; -exports.RESERVED_WORDS = RESERVED_WORDS; -exports.KEYWORDS = KEYWORDS; -exports.ATOMIC_START_TOKEN = ATOMIC_START_TOKEN; -exports.OPERATORS = OPERATORS; -exports.is_alphanumeric_char = is_alphanumeric_char; -exports.set_logger = function(logger) { - warn = logger; -}; -; - }).call(module.exports); - - __require.modules["/node_modules/burrito/node_modules/uglify-js/lib/parse-js.js"]._cached = module.exports; - return module.exports; -}; - -require.modules["/node_modules/burrito/node_modules/uglify-js/lib/process.js"] = function () { - var module = { exports : {} }; - var exports = module.exports; - var __dirname = "/node_modules/burrito/node_modules/uglify-js/lib"; - var __filename = "/node_modules/burrito/node_modules/uglify-js/lib/process.js"; - - var require = function (file) { - return __require(file, "/node_modules/burrito/node_modules/uglify-js/lib"); - }; - - require.resolve = function (file) { - return __require.resolve(name, "/node_modules/burrito/node_modules/uglify-js/lib"); - }; - - require.modules = __require.modules; - __require.modules["/node_modules/burrito/node_modules/uglify-js/lib/process.js"]._cached = module.exports; - - (function () { - /*********************************************************************** - - A JavaScript tokenizer / parser / beautifier / compressor. - - This version is suitable for Node.js. With minimal changes (the - exports stuff) it should work on any JS platform. - - This file implements some AST processors. They work on data built - by parse-js. - - Exported functions: - - - ast_mangle(ast, options) -- mangles the variable/function names - in the AST. Returns an AST. - - - ast_squeeze(ast) -- employs various optimizations to make the - final generated code even smaller. Returns an AST. - - - gen_code(ast, options) -- generates JS code from the AST. Pass - true (or an object, see the code for some options) as second - argument to get "pretty" (indented) code. - - -------------------------------- (C) --------------------------------- - - Author: Mihai Bazon - - http://mihai.bazon.net/blog - - Distributed under the BSD license: - - Copyright 2010 (c) Mihai Bazon - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above - copyright notice, this list of conditions and the following - disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials - provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF - THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. - - ***********************************************************************/ - -var jsp = require("./parse-js"), - slice = jsp.slice, - member = jsp.member, - PRECEDENCE = jsp.PRECEDENCE, - OPERATORS = jsp.OPERATORS; - -/* -----[ helper for AST traversal ]----- */ - -function ast_walker(ast) { - function _vardefs(defs) { - return [ this[0], MAP(defs, function(def){ - var a = [ def[0] ]; - if (def.length > 1) - a[1] = walk(def[1]); - return a; - }) ]; - }; - function _block(statements) { - var out = [ this[0] ]; - if (statements != null) - out.push(MAP(statements, walk)); - return out; - }; - var walkers = { - "string": function(str) { - return [ this[0], str ]; - }, - "num": function(num) { - return [ this[0], num ]; - }, - "name": function(name) { - return [ this[0], name ]; - }, - "toplevel": function(statements) { - return [ this[0], MAP(statements, walk) ]; - }, - "block": _block, - "splice": _block, - "var": _vardefs, - "const": _vardefs, - "try": function(t, c, f) { - return [ - this[0], - MAP(t, walk), - c != null ? [ c[0], MAP(c[1], walk) ] : null, - f != null ? MAP(f, walk) : null - ]; - }, - "throw": function(expr) { - return [ this[0], walk(expr) ]; - }, - "new": function(ctor, args) { - return [ this[0], walk(ctor), MAP(args, walk) ]; - }, - "switch": function(expr, body) { - return [ this[0], walk(expr), MAP(body, function(branch){ - return [ branch[0] ? walk(branch[0]) : null, - MAP(branch[1], walk) ]; - }) ]; - }, - "break": function(label) { - return [ this[0], label ]; - }, - "continue": function(label) { - return [ this[0], label ]; - }, - "conditional": function(cond, t, e) { - return [ this[0], walk(cond), walk(t), walk(e) ]; - }, - "assign": function(op, lvalue, rvalue) { - return [ this[0], op, walk(lvalue), walk(rvalue) ]; - }, - "dot": function(expr) { - return [ this[0], walk(expr) ].concat(slice(arguments, 1)); - }, - "call": function(expr, args) { - return [ this[0], walk(expr), MAP(args, walk) ]; - }, - "function": function(name, args, body) { - return [ this[0], name, args.slice(), MAP(body, walk) ]; - }, - "defun": function(name, args, body) { - return [ this[0], name, args.slice(), MAP(body, walk) ]; - }, - "if": function(conditional, t, e) { - return [ this[0], walk(conditional), walk(t), walk(e) ]; - }, - "for": function(init, cond, step, block) { - return [ this[0], walk(init), walk(cond), walk(step), walk(block) ]; - }, - "for-in": function(vvar, key, hash, block) { - return [ this[0], walk(vvar), walk(key), walk(hash), walk(block) ]; - }, - "while": function(cond, block) { - return [ this[0], walk(cond), walk(block) ]; - }, - "do": function(cond, block) { - return [ this[0], walk(cond), walk(block) ]; - }, - "return": function(expr) { - return [ this[0], walk(expr) ]; - }, - "binary": function(op, left, right) { - return [ this[0], op, walk(left), walk(right) ]; - }, - "unary-prefix": function(op, expr) { - return [ this[0], op, walk(expr) ]; - }, - "unary-postfix": function(op, expr) { - return [ this[0], op, walk(expr) ]; - }, - "sub": function(expr, subscript) { - return [ this[0], walk(expr), walk(subscript) ]; - }, - "object": function(props) { - return [ this[0], MAP(props, function(p){ - return p.length == 2 - ? [ p[0], walk(p[1]) ] - : [ p[0], walk(p[1]), p[2] ]; // get/set-ter - }) ]; - }, - "regexp": function(rx, mods) { - return [ this[0], rx, mods ]; - }, - "array": function(elements) { - return [ this[0], MAP(elements, walk) ]; - }, - "stat": function(stat) { - return [ this[0], walk(stat) ]; - }, - "seq": function() { - return [ this[0] ].concat(MAP(slice(arguments), walk)); - }, - "label": function(name, block) { - return [ this[0], name, walk(block) ]; - }, - "with": function(expr, block) { - return [ this[0], walk(expr), walk(block) ]; - }, - "atom": function(name) { - return [ this[0], name ]; - } - }; - - var user = {}; - var stack = []; - function walk(ast) { - if (ast == null) - return null; - try { - stack.push(ast); - var type = ast[0]; - var gen = user[type]; - if (gen) { - var ret = gen.apply(ast, ast.slice(1)); - if (ret != null) - return ret; - } - gen = walkers[type]; - return gen.apply(ast, ast.slice(1)); - } finally { - stack.pop(); - } - }; - - function with_walkers(walkers, cont){ - var save = {}, i; - for (i in walkers) if (HOP(walkers, i)) { - save[i] = user[i]; - user[i] = walkers[i]; - } - var ret = cont(); - for (i in save) if (HOP(save, i)) { - if (!save[i]) delete user[i]; - else user[i] = save[i]; - } - return ret; - }; - - return { - walk: walk, - with_walkers: with_walkers, - parent: function() { - return stack[stack.length - 2]; // last one is current node - }, - stack: function() { - return stack; - } - }; -}; - -/* -----[ Scope and mangling ]----- */ - -function Scope(parent) { - this.names = {}; // names defined in this scope - this.mangled = {}; // mangled names (orig.name => mangled) - this.rev_mangled = {}; // reverse lookup (mangled => orig.name) - this.cname = -1; // current mangled name - this.refs = {}; // names referenced from this scope - this.uses_with = false; // will become TRUE if with() is detected in this or any subscopes - this.uses_eval = false; // will become TRUE if eval() is detected in this or any subscopes - this.parent = parent; // parent scope - this.children = []; // sub-scopes - if (parent) { - this.level = parent.level + 1; - parent.children.push(this); - } else { - this.level = 0; - } -}; - -var base54 = (function(){ - var DIGITS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_"; - return function(num) { - var ret = ""; - do { - ret = DIGITS.charAt(num % 54) + ret; - num = Math.floor(num / 54); - } while (num > 0); - return ret; - }; -})(); - -Scope.prototype = { - has: function(name) { - for (var s = this; s; s = s.parent) - if (HOP(s.names, name)) - return s; - }, - has_mangled: function(mname) { - for (var s = this; s; s = s.parent) - if (HOP(s.rev_mangled, mname)) - return s; - }, - toJSON: function() { - return { - names: this.names, - uses_eval: this.uses_eval, - uses_with: this.uses_with - }; - }, - - next_mangled: function() { - // we must be careful that the new mangled name: - // - // 1. doesn't shadow a mangled name from a parent - // scope, unless we don't reference the original - // name from this scope OR from any sub-scopes! - // This will get slow. - // - // 2. doesn't shadow an original name from a parent - // scope, in the event that the name is not mangled - // in the parent scope and we reference that name - // here OR IN ANY SUBSCOPES! - // - // 3. doesn't shadow a name that is referenced but not - // defined (possibly global defined elsewhere). - for (;;) { - var m = base54(++this.cname), prior; - - // case 1. - prior = this.has_mangled(m); - if (prior && this.refs[prior.rev_mangled[m]] === prior) - continue; - - // case 2. - prior = this.has(m); - if (prior && prior !== this && this.refs[m] === prior && !prior.has_mangled(m)) - continue; - - // case 3. - if (HOP(this.refs, m) && this.refs[m] == null) - continue; - - // I got "do" once. :-/ - if (!is_identifier(m)) - continue; - - return m; - } - }, - set_mangle: function(name, m) { - this.rev_mangled[m] = name; - return this.mangled[name] = m; - }, - get_mangled: function(name, newMangle) { - if (this.uses_eval || this.uses_with) return name; // no mangle if eval or with is in use - var s = this.has(name); - if (!s) return name; // not in visible scope, no mangle - if (HOP(s.mangled, name)) return s.mangled[name]; // already mangled in this scope - if (!newMangle) return name; // not found and no mangling requested - return s.set_mangle(name, s.next_mangled()); - }, - define: function(name) { - if (name != null) - return this.names[name] = name; - } -}; - -function ast_add_scope(ast) { - - var current_scope = null; - var w = ast_walker(), walk = w.walk; - var having_eval = []; - - function with_new_scope(cont) { - current_scope = new Scope(current_scope); - var ret = current_scope.body = cont(); - ret.scope = current_scope; - current_scope = current_scope.parent; - return ret; - }; - - function define(name) { - return current_scope.define(name); - }; - - function reference(name) { - current_scope.refs[name] = true; - }; - - function _lambda(name, args, body) { - var is_defun = this[0] == "defun"; - return [ this[0], is_defun ? define(name) : name, args, with_new_scope(function(){ - if (!is_defun) define(name); - MAP(args, define); - return MAP(body, walk); - })]; - }; - - return with_new_scope(function(){ - // process AST - var ret = w.with_walkers({ - "function": _lambda, - "defun": _lambda, - "with": function(expr, block) { - for (var s = current_scope; s; s = s.parent) - s.uses_with = true; - }, - "var": function(defs) { - MAP(defs, function(d){ define(d[0]) }); - }, - "const": function(defs) { - MAP(defs, function(d){ define(d[0]) }); - }, - "try": function(t, c, f) { - if (c != null) return [ - this[0], - MAP(t, walk), - [ define(c[0]), MAP(c[1], walk) ], - f != null ? MAP(f, walk) : null - ]; - }, - "name": function(name) { - if (name == "eval") - having_eval.push(current_scope); - reference(name); - } - }, function(){ - return walk(ast); - }); - - // the reason why we need an additional pass here is - // that names can be used prior to their definition. - - // scopes where eval was detected and their parents - // are marked with uses_eval, unless they define the - // "eval" name. - MAP(having_eval, function(scope){ - if (!scope.has("eval")) while (scope) { - scope.uses_eval = true; - scope = scope.parent; - } - }); - - // for referenced names it might be useful to know - // their origin scope. current_scope here is the - // toplevel one. - function fixrefs(scope, i) { - // do children first; order shouldn't matter - for (i = scope.children.length; --i >= 0;) - fixrefs(scope.children[i]); - for (i in scope.refs) if (HOP(scope.refs, i)) { - // find origin scope and propagate the reference to origin - for (var origin = scope.has(i), s = scope; s; s = s.parent) { - s.refs[i] = origin; - if (s === origin) break; - } - } - }; - fixrefs(current_scope); - - return ret; - }); - -}; - -/* -----[ mangle names ]----- */ - -function ast_mangle(ast, options) { - var w = ast_walker(), walk = w.walk, scope; - options = options || {}; - - function get_mangled(name, newMangle) { - if (!options.toplevel && !scope.parent) return name; // don't mangle toplevel - if (options.except && member(name, options.except)) - return name; - return scope.get_mangled(name, newMangle); - }; - - function get_define(name) { - if (options.defines) { - // we always lookup a defined symbol for the current scope FIRST, so declared - // vars trump a DEFINE symbol, but if no such var is found, then match a DEFINE value - if (!scope.has(name)) { - if (HOP(options.defines, name)) { - return options.defines[name]; - } - } - return null; - } - }; - - function _lambda(name, args, body) { - var is_defun = this[0] == "defun", extra; - if (name) { - if (is_defun) name = get_mangled(name); - else { - extra = {}; - name = extra[name] = scope.next_mangled(); - } - } - body = with_scope(body.scope, function(){ - args = MAP(args, function(name){ return get_mangled(name) }); - return MAP(body, walk); - }, extra); - return [ this[0], name, args, body ]; - }; - - function with_scope(s, cont, extra) { - var _scope = scope; - scope = s; - if (extra) for (var i in extra) if (HOP(extra, i)) { - s.set_mangle(i, extra[i]); - } - for (var i in s.names) if (HOP(s.names, i)) { - get_mangled(i, true); - } - var ret = cont(); - ret.scope = s; - scope = _scope; - return ret; - }; - - function _vardefs(defs) { - return [ this[0], MAP(defs, function(d){ - return [ get_mangled(d[0]), walk(d[1]) ]; - }) ]; - }; - - return w.with_walkers({ - "function": _lambda, - "defun": function() { - // move function declarations to the top when - // they are not in some block. - var ast = _lambda.apply(this, arguments); - switch (w.parent()[0]) { - case "toplevel": - case "function": - case "defun": - return MAP.at_top(ast); - } - return ast; - }, - "var": _vardefs, - "const": _vardefs, - "name": function(name) { - return get_define(name) || [ this[0], get_mangled(name) ]; - }, - "try": function(t, c, f) { - return [ this[0], - MAP(t, walk), - c != null ? [ get_mangled(c[0]), MAP(c[1], walk) ] : null, - f != null ? MAP(f, walk) : null ]; - }, - "toplevel": function(body) { - var self = this; - return with_scope(self.scope, function(){ - return [ self[0], MAP(body, walk) ]; - }); - } - }, function() { - return walk(ast_add_scope(ast)); - }); -}; - -/* -----[ - - compress foo["bar"] into foo.bar, - - remove block brackets {} where possible - - join consecutive var declarations - - various optimizations for IFs: - - if (cond) foo(); else bar(); ==> cond?foo():bar(); - - if (cond) foo(); ==> cond&&foo(); - - if (foo) return bar(); else return baz(); ==> return foo?bar():baz(); // also for throw - - if (foo) return bar(); else something(); ==> {if(foo)return bar();something()} - ]----- */ - -var warn = function(){}; - -function best_of(ast1, ast2) { - return gen_code(ast1).length > gen_code(ast2[0] == "stat" ? ast2[1] : ast2).length ? ast2 : ast1; -}; - -function last_stat(b) { - if (b[0] == "block" && b[1] && b[1].length > 0) - return b[1][b[1].length - 1]; - return b; -} - -function aborts(t) { - if (t) { - t = last_stat(t); - if (t[0] == "return" || t[0] == "break" || t[0] == "continue" || t[0] == "throw") - return true; - } -}; - -function boolean_expr(expr) { - return ( (expr[0] == "unary-prefix" - && member(expr[1], [ "!", "delete" ])) || - - (expr[0] == "binary" - && member(expr[1], [ "in", "instanceof", "==", "!=", "===", "!==", "<", "<=", ">=", ">" ])) || - - (expr[0] == "binary" - && member(expr[1], [ "&&", "||" ]) - && boolean_expr(expr[2]) - && boolean_expr(expr[3])) || - - (expr[0] == "conditional" - && boolean_expr(expr[2]) - && boolean_expr(expr[3])) || - - (expr[0] == "assign" - && expr[1] === true - && boolean_expr(expr[3])) || - - (expr[0] == "seq" - && boolean_expr(expr[expr.length - 1])) - ); -}; - -function make_conditional(c, t, e) { - var make_real_conditional = function() { - if (c[0] == "unary-prefix" && c[1] == "!") { - return e ? [ "conditional", c[2], e, t ] : [ "binary", "||", c[2], t ]; - } else { - return e ? [ "conditional", c, t, e ] : [ "binary", "&&", c, t ]; - } - }; - // shortcut the conditional if the expression has a constant value - return when_constant(c, function(ast, val){ - warn_unreachable(val ? e : t); - return (val ? t : e); - }, make_real_conditional); -}; - -function empty(b) { - return !b || (b[0] == "block" && (!b[1] || b[1].length == 0)); -}; - -function is_string(node) { - return (node[0] == "string" || - node[0] == "unary-prefix" && node[1] == "typeof" || - node[0] == "binary" && node[1] == "+" && - (is_string(node[2]) || is_string(node[3]))); -}; - -var when_constant = (function(){ - - var $NOT_CONSTANT = {}; - - // this can only evaluate constant expressions. If it finds anything - // not constant, it throws $NOT_CONSTANT. - function evaluate(expr) { - switch (expr[0]) { - case "string": - case "num": - return expr[1]; - case "name": - case "atom": - switch (expr[1]) { - case "true": return true; - case "false": return false; - } - break; - case "unary-prefix": - switch (expr[1]) { - case "!": return !evaluate(expr[2]); - case "typeof": return typeof evaluate(expr[2]); - case "~": return ~evaluate(expr[2]); - case "-": return -evaluate(expr[2]); - case "+": return +evaluate(expr[2]); - } - break; - case "binary": - var left = expr[2], right = expr[3]; - switch (expr[1]) { - case "&&" : return evaluate(left) && evaluate(right); - case "||" : return evaluate(left) || evaluate(right); - case "|" : return evaluate(left) | evaluate(right); - case "&" : return evaluate(left) & evaluate(right); - case "^" : return evaluate(left) ^ evaluate(right); - case "+" : return evaluate(left) + evaluate(right); - case "*" : return evaluate(left) * evaluate(right); - case "/" : return evaluate(left) / evaluate(right); - case "-" : return evaluate(left) - evaluate(right); - case "<<" : return evaluate(left) << evaluate(right); - case ">>" : return evaluate(left) >> evaluate(right); - case ">>>" : return evaluate(left) >>> evaluate(right); - case "==" : return evaluate(left) == evaluate(right); - case "===" : return evaluate(left) === evaluate(right); - case "!=" : return evaluate(left) != evaluate(right); - case "!==" : return evaluate(left) !== evaluate(right); - case "<" : return evaluate(left) < evaluate(right); - case "<=" : return evaluate(left) <= evaluate(right); - case ">" : return evaluate(left) > evaluate(right); - case ">=" : return evaluate(left) >= evaluate(right); - case "in" : return evaluate(left) in evaluate(right); - case "instanceof" : return evaluate(left) instanceof evaluate(right); - } - } - throw $NOT_CONSTANT; - }; - - return function(expr, yes, no) { - try { - var val = evaluate(expr), ast; - switch (typeof val) { - case "string": ast = [ "string", val ]; break; - case "number": ast = [ "num", val ]; break; - case "boolean": ast = [ "name", String(val) ]; break; - default: throw new Error("Can't handle constant of type: " + (typeof val)); - } - return yes.call(expr, ast, val); - } catch(ex) { - if (ex === $NOT_CONSTANT) { - if (expr[0] == "binary" - && (expr[1] == "===" || expr[1] == "!==") - && ((is_string(expr[2]) && is_string(expr[3])) - || (boolean_expr(expr[2]) && boolean_expr(expr[3])))) { - expr[1] = expr[1].substr(0, 2); - } - else if (no && expr[0] == "binary" - && (expr[1] == "||" || expr[1] == "&&")) { - // the whole expression is not constant but the lval may be... - try { - var lval = evaluate(expr[2]); - expr = ((expr[1] == "&&" && (lval ? expr[3] : lval)) || - (expr[1] == "||" && (lval ? lval : expr[3])) || - expr); - } catch(ex2) { - // IGNORE... lval is not constant - } - } - return no ? no.call(expr, expr) : null; - } - else throw ex; - } - }; - -})(); - -function warn_unreachable(ast) { - if (!empty(ast)) - warn("Dropping unreachable code: " + gen_code(ast, true)); -}; - -function prepare_ifs(ast) { - var w = ast_walker(), walk = w.walk; - // In this first pass, we rewrite ifs which abort with no else with an - // if-else. For example: - // - // if (x) { - // blah(); - // return y; - // } - // foobar(); - // - // is rewritten into: - // - // if (x) { - // blah(); - // return y; - // } else { - // foobar(); - // } - function redo_if(statements) { - statements = MAP(statements, walk); - - for (var i = 0; i < statements.length; ++i) { - var fi = statements[i]; - if (fi[0] != "if") continue; - - if (fi[3] && walk(fi[3])) continue; - - var t = walk(fi[2]); - if (!aborts(t)) continue; - - var conditional = walk(fi[1]); - - var e_body = statements.slice(i + 1); - var e; - if (e_body.length == 1) e = e_body[0]; - else e = [ "block", e_body ]; - - var ret = statements.slice(0, i).concat([ [ - fi[0], // "if" - conditional, // conditional - t, // then - e // else - ] ]); - - return redo_if(ret); - } - - return statements; - }; - - function redo_if_lambda(name, args, body) { - body = redo_if(body); - return [ this[0], name, args.slice(), body ]; - }; - - function redo_if_block(statements) { - var out = [ this[0] ]; - if (statements != null) - out.push(redo_if(statements)); - return out; - }; - - return w.with_walkers({ - "defun": redo_if_lambda, - "function": redo_if_lambda, - "block": redo_if_block, - "splice": redo_if_block, - "toplevel": function(statements) { - return [ this[0], redo_if(statements) ]; - }, - "try": function(t, c, f) { - return [ - this[0], - redo_if(t), - c != null ? [ c[0], redo_if(c[1]) ] : null, - f != null ? redo_if(f) : null - ]; - }, - "with": function(expr, block) { - return [ this[0], walk(expr), redo_if(block) ]; - } - }, function() { - return walk(ast); - }); -}; - -function ast_squeeze(ast, options) { - options = defaults(options, { - make_seqs : true, - dead_code : true, - keep_comps : true, - no_warnings : false - }); - - var w = ast_walker(), walk = w.walk, scope; - - function negate(c) { - var not_c = [ "unary-prefix", "!", c ]; - switch (c[0]) { - case "unary-prefix": - return c[1] == "!" && boolean_expr(c[2]) ? c[2] : not_c; - case "seq": - c = slice(c); - c[c.length - 1] = negate(c[c.length - 1]); - return c; - case "conditional": - return best_of(not_c, [ "conditional", c[1], negate(c[2]), negate(c[3]) ]); - case "binary": - var op = c[1], left = c[2], right = c[3]; - if (!options.keep_comps) switch (op) { - case "<=" : return [ "binary", ">", left, right ]; - case "<" : return [ "binary", ">=", left, right ]; - case ">=" : return [ "binary", "<", left, right ]; - case ">" : return [ "binary", "<=", left, right ]; - } - switch (op) { - case "==" : return [ "binary", "!=", left, right ]; - case "!=" : return [ "binary", "==", left, right ]; - case "===" : return [ "binary", "!==", left, right ]; - case "!==" : return [ "binary", "===", left, right ]; - case "&&" : return best_of(not_c, [ "binary", "||", negate(left), negate(right) ]); - case "||" : return best_of(not_c, [ "binary", "&&", negate(left), negate(right) ]); - } - break; - } - return not_c; - }; - - function with_scope(s, cont) { - var _scope = scope; - scope = s; - var ret = cont(); - ret.scope = s; - scope = _scope; - return ret; - }; - - function rmblock(block) { - if (block != null && block[0] == "block" && block[1]) { - if (block[1].length == 1) - block = block[1][0]; - else if (block[1].length == 0) - block = [ "block" ]; - } - return block; - }; - - function _lambda(name, args, body) { - var is_defun = this[0] == "defun"; - body = with_scope(body.scope, function(){ - var ret = tighten(MAP(body, walk), "lambda"); - if (!is_defun && name && !HOP(scope.refs, name)) - name = null; - return ret; - }); - return [ this[0], name, args, body ]; - }; - - // we get here for blocks that have been already transformed. - // this function does a few things: - // 1. discard useless blocks - // 2. join consecutive var declarations - // 3. remove obviously dead code - // 4. transform consecutive statements using the comma operator - // 5. if block_type == "lambda" and it detects constructs like if(foo) return ... - rewrite like if (!foo) { ... } - function tighten(statements, block_type) { - statements = statements.reduce(function(a, stat){ - if (stat[0] == "block") { - if (stat[1]) { - a.push.apply(a, stat[1]); - } - } else { - a.push(stat); - } - return a; - }, []); - - statements = (function(a, prev){ - statements.forEach(function(cur){ - if (prev && ((cur[0] == "var" && prev[0] == "var") || - (cur[0] == "const" && prev[0] == "const"))) { - prev[1] = prev[1].concat(cur[1]); - } else { - a.push(cur); - prev = cur; - } - }); - return a; - })([]); - - if (options.dead_code) statements = (function(a, has_quit){ - statements.forEach(function(st){ - if (has_quit) { - if (member(st[0], [ "function", "defun" , "var", "const" ])) { - a.push(st); - } - else if (!options.no_warnings) - warn_unreachable(st); - } - else { - a.push(st); - if (member(st[0], [ "return", "throw", "break", "continue" ])) - has_quit = true; - } - }); - return a; - })([]); - - if (options.make_seqs) statements = (function(a, prev) { - statements.forEach(function(cur){ - if (prev && prev[0] == "stat" && cur[0] == "stat") { - prev[1] = [ "seq", prev[1], cur[1] ]; - } else { - a.push(cur); - prev = cur; - } - }); - return a; - })([]); - - if (block_type == "lambda") statements = (function(i, a, stat){ - while (i < statements.length) { - stat = statements[i++]; - if (stat[0] == "if" && !stat[3]) { - if (stat[2][0] == "return" && stat[2][1] == null) { - a.push(make_if(negate(stat[1]), [ "block", statements.slice(i) ])); - break; - } - var last = last_stat(stat[2]); - if (last[0] == "return" && last[1] == null) { - a.push(make_if(stat[1], [ "block", stat[2][1].slice(0, -1) ], [ "block", statements.slice(i) ])); - break; - } - } - a.push(stat); - } - return a; - })(0, []); - - return statements; - }; - - function make_if(c, t, e) { - return when_constant(c, function(ast, val){ - if (val) { - warn_unreachable(e); - return t; - } else { - warn_unreachable(t); - return e; - } - }, function() { - return make_real_if(c, t, e); - }); - }; - - function make_real_if(c, t, e) { - c = walk(c); - t = walk(t); - e = walk(e); - - if (empty(t)) { - c = negate(c); - t = e; - e = null; - } else if (empty(e)) { - e = null; - } else { - // if we have both else and then, maybe it makes sense to switch them? - (function(){ - var a = gen_code(c); - var n = negate(c); - var b = gen_code(n); - if (b.length < a.length) { - var tmp = t; - t = e; - e = tmp; - c = n; - } - })(); - } - if (empty(e) && empty(t)) - return [ "stat", c ]; - var ret = [ "if", c, t, e ]; - if (t[0] == "if" && empty(t[3]) && empty(e)) { - ret = best_of(ret, walk([ "if", [ "binary", "&&", c, t[1] ], t[2] ])); - } - else if (t[0] == "stat") { - if (e) { - if (e[0] == "stat") { - ret = best_of(ret, [ "stat", make_conditional(c, t[1], e[1]) ]); - } - } - else { - ret = best_of(ret, [ "stat", make_conditional(c, t[1]) ]); - } - } - else if (e && t[0] == e[0] && (t[0] == "return" || t[0] == "throw") && t[1] && e[1]) { - ret = best_of(ret, [ t[0], make_conditional(c, t[1], e[1] ) ]); - } - else if (e && aborts(t)) { - ret = [ [ "if", c, t ] ]; - if (e[0] == "block") { - if (e[1]) ret = ret.concat(e[1]); - } - else { - ret.push(e); - } - ret = walk([ "block", ret ]); - } - else if (t && aborts(e)) { - ret = [ [ "if", negate(c), e ] ]; - if (t[0] == "block") { - if (t[1]) ret = ret.concat(t[1]); - } else { - ret.push(t); - } - ret = walk([ "block", ret ]); - } - return ret; - }; - - function _do_while(cond, body) { - return when_constant(cond, function(cond, val){ - if (!val) { - warn_unreachable(body); - return [ "block" ]; - } else { - return [ "for", null, null, null, walk(body) ]; - } - }); - }; - - ast = prepare_ifs(ast); - ast = ast_add_scope(ast); - - return w.with_walkers({ - "sub": function(expr, subscript) { - if (subscript[0] == "string") { - var name = subscript[1]; - if (is_identifier(name)) - return [ "dot", walk(expr), name ]; - else if (/^[1-9][0-9]*$/.test(name) || name === "0") - return [ "sub", walk(expr), [ "num", parseInt(name, 10) ] ]; - } - }, - "if": make_if, - "toplevel": function(body) { - return [ "toplevel", with_scope(this.scope, function(){ - return tighten(MAP(body, walk)); - }) ]; - }, - "switch": function(expr, body) { - var last = body.length - 1; - return [ "switch", walk(expr), MAP(body, function(branch, i){ - var block = tighten(MAP(branch[1], walk)); - if (i == last && block.length > 0) { - var node = block[block.length - 1]; - if (node[0] == "break" && !node[1]) - block.pop(); - } - return [ branch[0] ? walk(branch[0]) : null, block ]; - }) ]; - }, - "function": _lambda, - "defun": _lambda, - "block": function(body) { - if (body) return rmblock([ "block", tighten(MAP(body, walk)) ]); - }, - "binary": function(op, left, right) { - return when_constant([ "binary", op, walk(left), walk(right) ], function yes(c){ - return best_of(walk(c), this); - }, function no() { - return this; - }); - }, - "conditional": function(c, t, e) { - return make_conditional(walk(c), walk(t), walk(e)); - }, - "try": function(t, c, f) { - return [ - "try", - tighten(MAP(t, walk)), - c != null ? [ c[0], tighten(MAP(c[1], walk)) ] : null, - f != null ? tighten(MAP(f, walk)) : null - ]; - }, - "unary-prefix": function(op, expr) { - expr = walk(expr); - var ret = [ "unary-prefix", op, expr ]; - if (op == "!") - ret = best_of(ret, negate(expr)); - return when_constant(ret, function(ast, val){ - return walk(ast); // it's either true or false, so minifies to !0 or !1 - }, function() { return ret }); - }, - "name": function(name) { - switch (name) { - case "true": return [ "unary-prefix", "!", [ "num", 0 ]]; - case "false": return [ "unary-prefix", "!", [ "num", 1 ]]; - } - }, - "new": function(ctor, args) { - if (ctor[0] == "name" && ctor[1] == "Array" && !scope.has("Array")) { - if (args.length != 1) { - return [ "array", args ]; - } else { - return [ "call", [ "name", "Array" ], args ]; - } - } - }, - "call": function(expr, args) { - if (expr[0] == "name" && expr[1] == "Array" && args.length != 1 && !scope.has("Array")) { - return [ "array", args ]; - } - }, - "while": _do_while - }, function() { - return walk(ast); - }); -}; - -/* -----[ re-generate code from the AST ]----- */ - -var DOT_CALL_NO_PARENS = jsp.array_to_hash([ - "name", - "array", - "object", - "string", - "dot", - "sub", - "call", - "regexp" -]); - -function make_string(str, ascii_only) { - var dq = 0, sq = 0; - str = str.replace(/[\\\b\f\n\r\t\x22\x27\u2028\u2029]/g, function(s){ - switch (s) { - case "\\": return "\\\\"; - case "\b": return "\\b"; - case "\f": return "\\f"; - case "\n": return "\\n"; - case "\r": return "\\r"; - case "\t": return "\\t"; - case "\u2028": return "\\u2028"; - case "\u2029": return "\\u2029"; - case '"': ++dq; return '"'; - case "'": ++sq; return "'"; - } - return s; - }); - if (ascii_only) str = to_ascii(str); - if (dq > sq) return "'" + str.replace(/\x27/g, "\\'") + "'"; - else return '"' + str.replace(/\x22/g, '\\"') + '"'; -}; - -function to_ascii(str) { - return str.replace(/[\u0080-\uffff]/g, function(ch) { - var code = ch.charCodeAt(0).toString(16); - while (code.length < 4) code = "0" + code; - return "\\u" + code; - }); -}; - -var SPLICE_NEEDS_BRACKETS = jsp.array_to_hash([ "if", "while", "do", "for", "for-in", "with" ]); - -function gen_code(ast, options) { - options = defaults(options, { - indent_start : 0, - indent_level : 4, - quote_keys : false, - space_colon : false, - beautify : false, - ascii_only : false - }); - var beautify = !!options.beautify; - var indentation = 0, - newline = beautify ? "\n" : "", - space = beautify ? " " : ""; - - function encode_string(str) { - return make_string(str, options.ascii_only); - }; - - function make_name(name) { - name = name.toString(); - if (options.ascii_only) - name = to_ascii(name); - return name; - }; - - function indent(line) { - if (line == null) - line = ""; - if (beautify) - line = repeat_string(" ", options.indent_start + indentation * options.indent_level) + line; - return line; - }; - - function with_indent(cont, incr) { - if (incr == null) incr = 1; - indentation += incr; - try { return cont.apply(null, slice(arguments, 1)); } - finally { indentation -= incr; } - }; - - function add_spaces(a) { - if (beautify) - return a.join(" "); - var b = []; - for (var i = 0; i < a.length; ++i) { - var next = a[i + 1]; - b.push(a[i]); - if (next && - ((/[a-z0-9_\x24]$/i.test(a[i].toString()) && /^[a-z0-9_\x24]/i.test(next.toString())) || - (/[\+\-]$/.test(a[i].toString()) && /^[\+\-]/.test(next.toString())))) { - b.push(" "); - } - } - return b.join(""); - }; - - function add_commas(a) { - return a.join("," + space); - }; - - function parenthesize(expr) { - var gen = make(expr); - for (var i = 1; i < arguments.length; ++i) { - var el = arguments[i]; - if ((el instanceof Function && el(expr)) || expr[0] == el) - return "(" + gen + ")"; - } - return gen; - }; - - function best_of(a) { - if (a.length == 1) { - return a[0]; - } - if (a.length == 2) { - var b = a[1]; - a = a[0]; - return a.length <= b.length ? a : b; - } - return best_of([ a[0], best_of(a.slice(1)) ]); - }; - - function needs_parens(expr) { - if (expr[0] == "function" || expr[0] == "object") { - // dot/call on a literal function requires the - // function literal itself to be parenthesized - // only if it's the first "thing" in a - // statement. This means that the parent is - // "stat", but it could also be a "seq" and - // we're the first in this "seq" and the - // parent is "stat", and so on. Messy stuff, - // but it worths the trouble. - var a = slice($stack), self = a.pop(), p = a.pop(); - while (p) { - if (p[0] == "stat") return true; - if (((p[0] == "seq" || p[0] == "call" || p[0] == "dot" || p[0] == "sub" || p[0] == "conditional") && p[1] === self) || - ((p[0] == "binary" || p[0] == "assign" || p[0] == "unary-postfix") && p[2] === self)) { - self = p; - p = a.pop(); - } else { - return false; - } - } - } - return !HOP(DOT_CALL_NO_PARENS, expr[0]); - }; - - function make_num(num) { - var str = num.toString(10), a = [ str.replace(/^0\./, ".") ], m; - if (Math.floor(num) === num) { - a.push("0x" + num.toString(16).toLowerCase(), // probably pointless - "0" + num.toString(8)); // same. - if ((m = /^(.*?)(0+)$/.exec(num))) { - a.push(m[1] + "e" + m[2].length); - } - } else if ((m = /^0?\.(0+)(.*)$/.exec(num))) { - a.push(m[2] + "e-" + (m[1].length + m[2].length), - str.substr(str.indexOf("."))); - } - return best_of(a); - }; - - var generators = { - "string": encode_string, - "num": make_num, - "name": make_name, - "toplevel": function(statements) { - return make_block_statements(statements) - .join(newline + newline); - }, - "splice": function(statements) { - var parent = $stack[$stack.length - 2][0]; - if (HOP(SPLICE_NEEDS_BRACKETS, parent)) { - // we need block brackets in this case - return make_block.apply(this, arguments); - } else { - return MAP(make_block_statements(statements, true), - function(line, i) { - // the first line is already indented - return i > 0 ? indent(line) : line; - }).join(newline); - } - }, - "block": make_block, - "var": function(defs) { - return "var " + add_commas(MAP(defs, make_1vardef)) + ";"; - }, - "const": function(defs) { - return "const " + add_commas(MAP(defs, make_1vardef)) + ";"; - }, - "try": function(tr, ca, fi) { - var out = [ "try", make_block(tr) ]; - if (ca) out.push("catch", "(" + ca[0] + ")", make_block(ca[1])); - if (fi) out.push("finally", make_block(fi)); - return add_spaces(out); - }, - "throw": function(expr) { - return add_spaces([ "throw", make(expr) ]) + ";"; - }, - "new": function(ctor, args) { - args = args.length > 0 ? "(" + add_commas(MAP(args, make)) + ")" : ""; - return add_spaces([ "new", parenthesize(ctor, "seq", "binary", "conditional", "assign", function(expr){ - var w = ast_walker(), has_call = {}; - try { - w.with_walkers({ - "call": function() { throw has_call }, - "function": function() { return this } - }, function(){ - w.walk(expr); - }); - } catch(ex) { - if (ex === has_call) - return true; - throw ex; - } - }) + args ]); - }, - "switch": function(expr, body) { - return add_spaces([ "switch", "(" + make(expr) + ")", make_switch_block(body) ]); - }, - "break": function(label) { - var out = "break"; - if (label != null) - out += " " + make_name(label); - return out + ";"; - }, - "continue": function(label) { - var out = "continue"; - if (label != null) - out += " " + make_name(label); - return out + ";"; - }, - "conditional": function(co, th, el) { - return add_spaces([ parenthesize(co, "assign", "seq", "conditional"), "?", - parenthesize(th, "seq"), ":", - parenthesize(el, "seq") ]); - }, - "assign": function(op, lvalue, rvalue) { - if (op && op !== true) op += "="; - else op = "="; - return add_spaces([ make(lvalue), op, parenthesize(rvalue, "seq") ]); - }, - "dot": function(expr) { - var out = make(expr), i = 1; - if (expr[0] == "num") { - if (!/\./.test(expr[1])) - out += "."; - } else if (needs_parens(expr)) - out = "(" + out + ")"; - while (i < arguments.length) - out += "." + make_name(arguments[i++]); - return out; - }, - "call": function(func, args) { - var f = make(func); - if (needs_parens(func)) - f = "(" + f + ")"; - return f + "(" + add_commas(MAP(args, function(expr){ - return parenthesize(expr, "seq"); - })) + ")"; - }, - "function": make_function, - "defun": make_function, - "if": function(co, th, el) { - var out = [ "if", "(" + make(co) + ")", el ? make_then(th) : make(th) ]; - if (el) { - out.push("else", make(el)); - } - return add_spaces(out); - }, - "for": function(init, cond, step, block) { - var out = [ "for" ]; - init = (init != null ? make(init) : "").replace(/;*\s*$/, ";" + space); - cond = (cond != null ? make(cond) : "").replace(/;*\s*$/, ";" + space); - step = (step != null ? make(step) : "").replace(/;*\s*$/, ""); - var args = init + cond + step; - if (args == "; ; ") args = ";;"; - out.push("(" + args + ")", make(block)); - return add_spaces(out); - }, - "for-in": function(vvar, key, hash, block) { - return add_spaces([ "for", "(" + - (vvar ? make(vvar).replace(/;+$/, "") : make(key)), - "in", - make(hash) + ")", make(block) ]); - }, - "while": function(condition, block) { - return add_spaces([ "while", "(" + make(condition) + ")", make(block) ]); - }, - "do": function(condition, block) { - return add_spaces([ "do", make(block), "while", "(" + make(condition) + ")" ]) + ";"; - }, - "return": function(expr) { - var out = [ "return" ]; - if (expr != null) out.push(make(expr)); - return add_spaces(out) + ";"; - }, - "binary": function(operator, lvalue, rvalue) { - var left = make(lvalue), right = make(rvalue); - // XXX: I'm pretty sure other cases will bite here. - // we need to be smarter. - // adding parens all the time is the safest bet. - if (member(lvalue[0], [ "assign", "conditional", "seq" ]) || - lvalue[0] == "binary" && PRECEDENCE[operator] > PRECEDENCE[lvalue[1]]) { - left = "(" + left + ")"; - } - if (member(rvalue[0], [ "assign", "conditional", "seq" ]) || - rvalue[0] == "binary" && PRECEDENCE[operator] >= PRECEDENCE[rvalue[1]] && - !(rvalue[1] == operator && member(operator, [ "&&", "||", "*" ]))) { - right = "(" + right + ")"; - } - return add_spaces([ left, operator, right ]); - }, - "unary-prefix": function(operator, expr) { - var val = make(expr); - if (!(expr[0] == "num" || (expr[0] == "unary-prefix" && !HOP(OPERATORS, operator + expr[1])) || !needs_parens(expr))) - val = "(" + val + ")"; - return operator + (jsp.is_alphanumeric_char(operator.charAt(0)) ? " " : "") + val; - }, - "unary-postfix": function(operator, expr) { - var val = make(expr); - if (!(expr[0] == "num" || (expr[0] == "unary-postfix" && !HOP(OPERATORS, operator + expr[1])) || !needs_parens(expr))) - val = "(" + val + ")"; - return val + operator; - }, - "sub": function(expr, subscript) { - var hash = make(expr); - if (needs_parens(expr)) - hash = "(" + hash + ")"; - return hash + "[" + make(subscript) + "]"; - }, - "object": function(props) { - if (props.length == 0) - return "{}"; - return "{" + newline + with_indent(function(){ - return MAP(props, function(p){ - if (p.length == 3) { - // getter/setter. The name is in p[0], the arg.list in p[1][2], the - // body in p[1][3] and type ("get" / "set") in p[2]. - return indent(make_function(p[0], p[1][2], p[1][3], p[2])); - } - var key = p[0], val = make(p[1]); - if (options.quote_keys) { - key = encode_string(key); - } else if ((typeof key == "number" || !beautify && +key + "" == key) - && parseFloat(key) >= 0) { - key = make_num(+key); - } else if (!is_identifier(key)) { - key = encode_string(key); - } - return indent(add_spaces(beautify && options.space_colon - ? [ key, ":", val ] - : [ key + ":", val ])); - }).join("," + newline); - }) + newline + indent("}"); - }, - "regexp": function(rx, mods) { - return "/" + rx + "/" + mods; - }, - "array": function(elements) { - if (elements.length == 0) return "[]"; - return add_spaces([ "[", add_commas(MAP(elements, function(el){ - if (!beautify && el[0] == "atom" && el[1] == "undefined") return ""; - return parenthesize(el, "seq"); - })), "]" ]); - }, - "stat": function(stmt) { - return make(stmt).replace(/;*\s*$/, ";"); - }, - "seq": function() { - return add_commas(MAP(slice(arguments), make)); - }, - "label": function(name, block) { - return add_spaces([ make_name(name), ":", make(block) ]); - }, - "with": function(expr, block) { - return add_spaces([ "with", "(" + make(expr) + ")", make(block) ]); - }, - "atom": function(name) { - return make_name(name); - } - }; - - // The squeezer replaces "block"-s that contain only a single - // statement with the statement itself; technically, the AST - // is correct, but this can create problems when we output an - // IF having an ELSE clause where the THEN clause ends in an - // IF *without* an ELSE block (then the outer ELSE would refer - // to the inner IF). This function checks for this case and - // adds the block brackets if needed. - function make_then(th) { - if (th[0] == "do") { - // https://github.com/mishoo/UglifyJS/issues/#issue/57 - // IE croaks with "syntax error" on code like this: - // if (foo) do ... while(cond); else ... - // we need block brackets around do/while - return make([ "block", [ th ]]); - } - var b = th; - while (true) { - var type = b[0]; - if (type == "if") { - if (!b[3]) - // no else, we must add the block - return make([ "block", [ th ]]); - b = b[3]; - } - else if (type == "while" || type == "do") b = b[2]; - else if (type == "for" || type == "for-in") b = b[4]; - else break; - } - return make(th); - }; - - function make_function(name, args, body, keyword) { - var out = keyword || "function"; - if (name) { - out += " " + make_name(name); - } - out += "(" + add_commas(MAP(args, make_name)) + ")"; - return add_spaces([ out, make_block(body) ]); - }; - - function make_block_statements(statements, noindent) { - for (var a = [], last = statements.length - 1, i = 0; i <= last; ++i) { - var stat = statements[i]; - var code = make(stat); - if (code != ";") { - if (!beautify && i == last) { - if ((stat[0] == "while" && empty(stat[2])) || - (member(stat[0], [ "for", "for-in"] ) && empty(stat[4])) || - (stat[0] == "if" && empty(stat[2]) && !stat[3]) || - (stat[0] == "if" && stat[3] && empty(stat[3]))) { - code = code.replace(/;*\s*$/, ";"); - } else { - code = code.replace(/;+\s*$/, ""); - } - } - a.push(code); - } - } - return noindent ? a : MAP(a, indent); - }; - - function make_switch_block(body) { - var n = body.length; - if (n == 0) return "{}"; - return "{" + newline + MAP(body, function(branch, i){ - var has_body = branch[1].length > 0, code = with_indent(function(){ - return indent(branch[0] - ? add_spaces([ "case", make(branch[0]) + ":" ]) - : "default:"); - }, 0.5) + (has_body ? newline + with_indent(function(){ - return make_block_statements(branch[1]).join(newline); - }) : ""); - if (!beautify && has_body && i < n - 1) - code += ";"; - return code; - }).join(newline) + newline + indent("}"); - }; - - function make_block(statements) { - if (!statements) return ";"; - if (statements.length == 0) return "{}"; - return "{" + newline + with_indent(function(){ - return make_block_statements(statements).join(newline); - }) + newline + indent("}"); - }; - - function make_1vardef(def) { - var name = def[0], val = def[1]; - if (val != null) - name = add_spaces([ make_name(name), "=", parenthesize(val, "seq") ]); - return name; - }; - - var $stack = []; - - function make(node) { - var type = node[0]; - var gen = generators[type]; - if (!gen) - throw new Error("Can't find generator for \"" + type + "\""); - $stack.push(node); - var ret = gen.apply(type, node.slice(1)); - $stack.pop(); - return ret; - }; - - return make(ast); -}; - -function split_lines(code, max_line_length) { - var splits = [ 0 ]; - jsp.parse(function(){ - var next_token = jsp.tokenizer(code); - var last_split = 0; - var prev_token; - function current_length(tok) { - return tok.pos - last_split; - }; - function split_here(tok) { - last_split = tok.pos; - splits.push(last_split); - }; - function custom(){ - var tok = next_token.apply(this, arguments); - out: { - if (prev_token) { - if (prev_token.type == "keyword") break out; - } - if (current_length(tok) > max_line_length) { - switch (tok.type) { - case "keyword": - case "atom": - case "name": - case "punc": - split_here(tok); - break out; - } - } - } - prev_token = tok; - return tok; - }; - custom.context = function() { - return next_token.context.apply(this, arguments); - }; - return custom; - }()); - return splits.map(function(pos, i){ - return code.substring(pos, splits[i + 1] || code.length); - }).join("\n"); -}; - -/* -----[ Utilities ]----- */ - -function repeat_string(str, i) { - if (i <= 0) return ""; - if (i == 1) return str; - var d = repeat_string(str, i >> 1); - d += d; - if (i & 1) d += str; - return d; -}; - -function defaults(args, defs) { - var ret = {}; - if (args === true) - args = {}; - for (var i in defs) if (HOP(defs, i)) { - ret[i] = (args && HOP(args, i)) ? args[i] : defs[i]; - } - return ret; -}; - -function is_identifier(name) { - return /^[a-z_$][a-z0-9_$]*$/i.test(name) - && name != "this" - && !HOP(jsp.KEYWORDS_ATOM, name) - && !HOP(jsp.RESERVED_WORDS, name) - && !HOP(jsp.KEYWORDS, name); -}; - -function HOP(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); -}; - -// some utilities - -var MAP; - -(function(){ - MAP = function(a, f, o) { - var ret = []; - for (var i = 0; i < a.length; ++i) { - var val = f.call(o, a[i], i); - if (val instanceof AtTop) ret.unshift(val.v); - else ret.push(val); - } - return ret; - }; - MAP.at_top = function(val) { return new AtTop(val) }; - function AtTop(val) { this.v = val }; -})(); - -/* -----[ Exports ]----- */ - -exports.ast_walker = ast_walker; -exports.ast_mangle = ast_mangle; -exports.ast_squeeze = ast_squeeze; -exports.gen_code = gen_code; -exports.ast_add_scope = ast_add_scope; -exports.set_logger = function(logger) { warn = logger }; -exports.make_string = make_string; -exports.split_lines = split_lines; -exports.MAP = MAP; - -// keep this last! -exports.ast_squeeze_more = require("./squeeze-more").ast_squeeze_more; -; - }).call(module.exports); - - __require.modules["/node_modules/burrito/node_modules/uglify-js/lib/process.js"]._cached = module.exports; - return module.exports; -}; - -require.modules["/node_modules/burrito/node_modules/uglify-js/lib/squeeze-more.js"] = function () { - var module = { exports : {} }; - var exports = module.exports; - var __dirname = "/node_modules/burrito/node_modules/uglify-js/lib"; - var __filename = "/node_modules/burrito/node_modules/uglify-js/lib/squeeze-more.js"; - - var require = function (file) { - return __require(file, "/node_modules/burrito/node_modules/uglify-js/lib"); - }; - - require.resolve = function (file) { - return __require.resolve(name, "/node_modules/burrito/node_modules/uglify-js/lib"); - }; - - require.modules = __require.modules; - __require.modules["/node_modules/burrito/node_modules/uglify-js/lib/squeeze-more.js"]._cached = module.exports; - - (function () { - var jsp = require("./parse-js"), - pro = require("./process"), - slice = jsp.slice, - member = jsp.member, - PRECEDENCE = jsp.PRECEDENCE, - OPERATORS = jsp.OPERATORS; - -function ast_squeeze_more(ast) { - var w = pro.ast_walker(), walk = w.walk; - return w.with_walkers({ - "call": function(expr, args) { - if (expr[0] == "dot" && expr[2] == "toString" && args.length == 0) { - // foo.toString() ==> foo+"" - return [ "binary", "+", expr[1], [ "string", "" ]]; - } - } - }, function() { - return walk(ast); - }); -}; - -exports.ast_squeeze_more = ast_squeeze_more; -; - }).call(module.exports); - - __require.modules["/node_modules/burrito/node_modules/uglify-js/lib/squeeze-more.js"]._cached = module.exports; - return module.exports; -}; - -require.modules["/node_modules/burrito/node_modules/traverse/package.json"] = function () { - var module = { exports : {} }; - var exports = module.exports; - var __dirname = "/node_modules/burrito/node_modules/traverse"; - var __filename = "/node_modules/burrito/node_modules/traverse/package.json"; - - var require = function (file) { - return __require(file, "/node_modules/burrito/node_modules/traverse"); - }; - - require.resolve = function (file) { - return __require.resolve(name, "/node_modules/burrito/node_modules/traverse"); - }; - - require.modules = __require.modules; - __require.modules["/node_modules/burrito/node_modules/traverse/package.json"]._cached = module.exports; - - (function () { - module.exports = {"name":"traverse","version":"0.5.0","description":"Traverse and transform objects by visiting every node on a recursive walk","author":"James Halliday","license":"MIT/X11","main":"./index","repository":{"type":"git","url":"http://github.com/substack/js-traverse.git"},"devDependencies":{"expresso":"0.7.x"},"scripts":{"test":"expresso"}}; - }).call(module.exports); - - __require.modules["/node_modules/burrito/node_modules/traverse/package.json"]._cached = module.exports; - return module.exports; -}; - -require.modules["/node_modules/burrito/node_modules/traverse/index.js"] = function () { - var module = { exports : {} }; - var exports = module.exports; - var __dirname = "/node_modules/burrito/node_modules/traverse"; - var __filename = "/node_modules/burrito/node_modules/traverse/index.js"; - - var require = function (file) { - return __require(file, "/node_modules/burrito/node_modules/traverse"); - }; - - require.resolve = function (file) { - return __require.resolve(name, "/node_modules/burrito/node_modules/traverse"); - }; - - require.modules = __require.modules; - __require.modules["/node_modules/burrito/node_modules/traverse/index.js"]._cached = module.exports; - - (function () { - module.exports = Traverse; -function Traverse (obj) { - if (!(this instanceof Traverse)) return new Traverse(obj); - this.value = obj; -} - -Traverse.prototype.get = function (ps) { - var node = this.value; - for (var i = 0; i < ps.length; i ++) { - var key = ps[i]; - if (!Object.hasOwnProperty.call(node, key)) { - node = undefined; - break; - } - node = node[key]; - } - return node; -}; - -Traverse.prototype.set = function (ps, value) { - var node = this.value; - for (var i = 0; i < ps.length - 1; i ++) { - var key = ps[i]; - if (!Object.hasOwnProperty.call(node, key)) node[key] = {}; - node = node[key]; - } - node[ps[i]] = value; - return value; -}; - -Traverse.prototype.map = function (cb) { - return walk(this.value, cb, true); -}; - -Traverse.prototype.forEach = function (cb) { - this.value = walk(this.value, cb, false); - return this.value; -}; - -Traverse.prototype.reduce = function (cb, init) { - var skip = arguments.length === 1; - var acc = skip ? this.value : init; - this.forEach(function (x) { - if (!this.isRoot || !skip) { - acc = cb.call(this, acc, x); - } - }); - return acc; -}; - -Traverse.prototype.paths = function () { - var acc = []; - this.forEach(function (x) { - acc.push(this.path); - }); - return acc; -}; - -Traverse.prototype.nodes = function () { - var acc = []; - this.forEach(function (x) { - acc.push(this.node); - }); - return acc; -}; - -Traverse.prototype.clone = function () { - var parents = [], nodes = []; - - return (function clone (src) { - for (var i = 0; i < parents.length; i++) { - if (parents[i] === src) { - return nodes[i]; - } - } - - if (typeof src === 'object' && src !== null) { - var dst = copy(src); - - parents.push(src); - nodes.push(dst); - - forEach(Object_keys(src), function (key) { - dst[key] = clone(src[key]); - }); - - parents.pop(); - nodes.pop(); - return dst; - } - else { - return src; - } - })(this.value); -}; - -function walk (root, cb, immutable) { - var path = []; - var parents = []; - var alive = true; - - return (function walker (node_) { - var node = immutable ? copy(node_) : node_; - var modifiers = {}; - - var keepGoing = true; - - var state = { - node : node, - node_ : node_, - path : [].concat(path), - parent : parents[parents.length - 1], - parents : parents, - key : path.slice(-1)[0], - isRoot : path.length === 0, - level : path.length, - circular : null, - update : function (x, stopHere) { - if (!state.isRoot) { - state.parent.node[state.key] = x; - } - state.node = x; - if (stopHere) keepGoing = false; - }, - 'delete' : function () { - delete state.parent.node[state.key]; - }, - remove : function () { - if (Array_isArray(state.parent.node)) { - state.parent.node.splice(state.key, 1); - } - else { - delete state.parent.node[state.key]; - } - }, - keys : null, - before : function (f) { modifiers.before = f }, - after : function (f) { modifiers.after = f }, - pre : function (f) { modifiers.pre = f }, - post : function (f) { modifiers.post = f }, - stop : function () { alive = false }, - block : function () { keepGoing = false } - }; - - if (!alive) return state; - - if (typeof node === 'object' && node !== null) { - state.keys = Object_keys(node); - - state.isLeaf = state.keys.length == 0; - - for (var i = 0; i < parents.length; i++) { - if (parents[i].node_ === node_) { - state.circular = parents[i]; - break; - } - } - } - else { - state.isLeaf = true; - } - - state.notLeaf = !state.isLeaf; - state.notRoot = !state.isRoot; - - // use return values to update if defined - var ret = cb.call(state, state.node); - if (ret !== undefined && state.update) state.update(ret); - - if (modifiers.before) modifiers.before.call(state, state.node); - - if (!keepGoing) return state; - - if (typeof state.node == 'object' - && state.node !== null && !state.circular) { - parents.push(state); - - forEach(state.keys, function (key, i) { - path.push(key); - - if (modifiers.pre) modifiers.pre.call(state, state.node[key], key); - - var child = walker(state.node[key]); - if (immutable && Object.hasOwnProperty.call(state.node, key)) { - state.node[key] = child.node; - } - - child.isLast = i == state.keys.length - 1; - child.isFirst = i == 0; - - if (modifiers.post) modifiers.post.call(state, child); - - path.pop(); - }); - parents.pop(); - } - - if (modifiers.after) modifiers.after.call(state, state.node); - - return state; - })(root).node; -} - -function copy (src) { - if (typeof src === 'object' && src !== null) { - var dst; - - if (Array_isArray(src)) { - dst = []; - } - else if (src instanceof Date) { - dst = new Date(src); - } - else if (src instanceof Boolean) { - dst = new Boolean(src); - } - else if (src instanceof Number) { - dst = new Number(src); - } - else if (src instanceof String) { - dst = new String(src); - } - else if (Object.create && Object.getPrototypeOf) { - dst = Object.create(Object.getPrototypeOf(src)); - } - else if (src.__proto__ || src.constructor.prototype) { - var proto = src.__proto__ || src.constructor.prototype || {}; - var T = function () {}; - T.prototype = proto; - dst = new T; - if (!dst.__proto__) dst.__proto__ = proto; - } - - forEach(Object_keys(src), function (key) { - dst[key] = src[key]; - }); - return dst; - } - else return src; -} - -var Object_keys = Object.keys || function keys (obj) { - var res = []; - for (var key in obj) res.push(key) - return res; -}; - -var Array_isArray = Array.isArray || function isArray (xs) { - return Object.prototype.toString.call(xs) === '[object Array]'; -}; - -var forEach = function (xs, fn) { - if (xs.forEach) return xs.forEach(fn) - else for (var i = 0; i < xs.length; i++) { - fn(xs[i], i, xs); - } -}; - -forEach(Object_keys(Traverse.prototype), function (key) { - Traverse[key] = function (obj) { - var args = [].slice.call(arguments, 1); - var t = Traverse(obj); - return t[key].apply(t, args); - }; -}); -; - }).call(module.exports); - - __require.modules["/node_modules/burrito/node_modules/traverse/index.js"]._cached = module.exports; - return module.exports; -}; - -require.modules["vm"] = function () { - var module = { exports : {} }; - var exports = module.exports; - var __dirname = "."; - var __filename = "vm"; - - var require = function (file) { - return __require(file, "."); - }; - - require.resolve = function (file) { - return __require.resolve(name, "."); - }; - - require.modules = __require.modules; - __require.modules["vm"]._cached = module.exports; - - (function () { - var Object_keys = function (obj) { - if (Object.keys) return Object.keys(obj) - else { - var res = []; - for (var key in obj) res.push(key) - return res; - } -}; - -var forEach = function (xs, fn) { - if (xs.forEach) return xs.forEach(fn) - else for (var i = 0; i < xs.length; i++) { - fn(xs[i], i, xs); - } -}; - -var Script = exports.Script = function NodeScript (code) { - if (!(this instanceof Script)) return new Script(code); - this.code = code; -}; - -var iframe = document.createElement('iframe'); -if (!iframe.style) iframe.style = {}; -iframe.style.display = 'none'; - -var iframeCapable = true; // until proven otherwise -if (navigator.appName === 'Microsoft Internet Explorer') { - var m = navigator.appVersion.match(/\bMSIE (\d+\.\d+);/); - if (m && parseFloat(m[1]) <= 9.0) { - iframeCapable = false; - } -} - -Script.prototype.runInNewContext = function (context) { - if (!context) context = {}; - - if (!iframeCapable) { - var keys = Object_keys(context); - var args = []; - for (var i = 0; i < keys.length; i++) { - args.push(context[keys[i]]); - } - - var fn = Function(keys, this.code); - return fn.apply(null, args); - } - - document.body.appendChild(iframe); - - var win = iframe.contentWindow - || (window.frames && window.frames[window.frames.length - 1]) - || window[window.length - 1] - ; - - forEach(Object_keys(context), function (key) { - win[key] = context[key]; - iframe[key] = context[key]; - }); - - if (win.eval) { - // chrome and ff can just .eval() - var res = win.eval(this.code); - } - else { - // this works in IE9 but not anything newer - iframe.setAttribute('src', - 'javascript:__browserifyVmResult=(' + this.code + ')' - ); - if ('__browserifyVmResult' in win) { - var res = win.__browserifyVmResult; - } - else { - iframeCapable = false; - res = this.runInThisContext(context); - } - } - - forEach(Object_keys(win), function (key) { - context[key] = win[key]; - }); - - document.body.removeChild(iframe); - - return res; -}; - -Script.prototype.runInThisContext = function () { - return eval(this.code); // maybe... -}; - -Script.prototype.runInContext = function (context) { - // seems to be just runInNewContext on magical context objects which are - // otherwise indistinguishable from objects except plain old objects - // for the parameter segfaults node - return this.runInNewContext(context); -}; - -forEach(Object_keys(Script.prototype), function (name) { - exports[name] = Script[name] = function (code) { - var s = Script(code); - return s[name].apply(s, [].slice.call(arguments, 1)); - }; -}); - -exports.createScript = function (code) { - return exports.Script(code); -}; - -exports.createContext = Script.createContext = function (context) { - // not really sure what this one does - // seems to just make a shallow copy - var copy = {}; - forEach(Object_keys(context), function (key) { - copy[key] = context[key]; - }); - return copy; -}; -; - }).call(module.exports); - - __require.modules["vm"]._cached = module.exports; - return module.exports; -}; - -require.modules["/node_modules/jsonify/package.json"] = function () { - var module = { exports : {} }; - var exports = module.exports; - var __dirname = "/node_modules/jsonify"; - var __filename = "/node_modules/jsonify/package.json"; - - var require = function (file) { - return __require(file, "/node_modules/jsonify"); - }; - - require.resolve = function (file) { - return __require.resolve(name, "/node_modules/jsonify"); - }; - - require.modules = __require.modules; - __require.modules["/node_modules/jsonify/package.json"]._cached = module.exports; - - (function () { - module.exports = {"name":"jsonify","version":"0.0.0","description":"JSON without touching any globals","main":"index.js","directories":{"lib":".","test":"test"},"devDependencies":{"tap":"0.0.x","garbage":"0.0.x"},"scripts":{"test":"tap test"},"repository":{"type":"git","url":"http://github.com/substack/jsonify.git"},"keywords":["json","browser"],"author":{"name":"Douglas Crockford","url":"http://crockford.com/"},"license":"Public Domain"}; - }).call(module.exports); - - __require.modules["/node_modules/jsonify/package.json"]._cached = module.exports; - return module.exports; -}; - -require.modules["/node_modules/jsonify/index.js"] = function () { - var module = { exports : {} }; - var exports = module.exports; - var __dirname = "/node_modules/jsonify"; - var __filename = "/node_modules/jsonify/index.js"; - - var require = function (file) { - return __require(file, "/node_modules/jsonify"); - }; - - require.resolve = function (file) { - return __require.resolve(name, "/node_modules/jsonify"); - }; - - require.modules = __require.modules; - __require.modules["/node_modules/jsonify/index.js"]._cached = module.exports; - - (function () { - exports.parse = require('./lib/parse'); -exports.stringify = require('./lib/stringify'); -; - }).call(module.exports); - - __require.modules["/node_modules/jsonify/index.js"]._cached = module.exports; - return module.exports; -}; - -require.modules["/node_modules/jsonify/lib/parse.js"] = function () { - var module = { exports : {} }; - var exports = module.exports; - var __dirname = "/node_modules/jsonify/lib"; - var __filename = "/node_modules/jsonify/lib/parse.js"; - - var require = function (file) { - return __require(file, "/node_modules/jsonify/lib"); - }; - - require.resolve = function (file) { - return __require.resolve(name, "/node_modules/jsonify/lib"); - }; - - require.modules = __require.modules; - __require.modules["/node_modules/jsonify/lib/parse.js"]._cached = module.exports; - - (function () { - var at, // The index of the current character - ch, // The current character - escapee = { - '"': '"', - '\\': '\\', - '/': '/', - b: '\b', - f: '\f', - n: '\n', - r: '\r', - t: '\t' - }, - text, - - error = function (m) { - // Call error when something is wrong. - throw { - name: 'SyntaxError', - message: m, - at: at, - text: text - }; - }, - - next = function (c) { - // If a c parameter is provided, verify that it matches the current character. - if (c && c !== ch) { - error("Expected '" + c + "' instead of '" + ch + "'"); - } - - // Get the next character. When there are no more characters, - // return the empty string. - - ch = text.charAt(at); - at += 1; - return ch; - }, - - number = function () { - // Parse a number value. - var number, - string = ''; - - if (ch === '-') { - string = '-'; - next('-'); - } - while (ch >= '0' && ch <= '9') { - string += ch; - next(); - } - if (ch === '.') { - string += '.'; - while (next() && ch >= '0' && ch <= '9') { - string += ch; - } - } - if (ch === 'e' || ch === 'E') { - string += ch; - next(); - if (ch === '-' || ch === '+') { - string += ch; - next(); - } - while (ch >= '0' && ch <= '9') { - string += ch; - next(); - } - } - number = +string; - if (!isFinite(number)) { - error("Bad number"); - } else { - return number; - } - }, - - string = function () { - // Parse a string value. - var hex, - i, - string = '', - uffff; - - // When parsing for string values, we must look for " and \ characters. - if (ch === '"') { - while (next()) { - if (ch === '"') { - next(); - return string; - } else if (ch === '\\') { - next(); - if (ch === 'u') { - uffff = 0; - for (i = 0; i < 4; i += 1) { - hex = parseInt(next(), 16); - if (!isFinite(hex)) { - break; - } - uffff = uffff * 16 + hex; - } - string += String.fromCharCode(uffff); - } else if (typeof escapee[ch] === 'string') { - string += escapee[ch]; - } else { - break; - } - } else { - string += ch; - } - } - } - error("Bad string"); - }, - - white = function () { - -// Skip whitespace. - - while (ch && ch <= ' ') { - next(); - } - }, - - word = function () { - -// true, false, or null. - - switch (ch) { - case 't': - next('t'); - next('r'); - next('u'); - next('e'); - return true; - case 'f': - next('f'); - next('a'); - next('l'); - next('s'); - next('e'); - return false; - case 'n': - next('n'); - next('u'); - next('l'); - next('l'); - return null; - } - error("Unexpected '" + ch + "'"); - }, - - value, // Place holder for the value function. - - array = function () { - -// Parse an array value. - - var array = []; - - if (ch === '[') { - next('['); - white(); - if (ch === ']') { - next(']'); - return array; // empty array - } - while (ch) { - array.push(value()); - white(); - if (ch === ']') { - next(']'); - return array; - } - next(','); - white(); - } - } - error("Bad array"); - }, - - object = function () { - -// Parse an object value. - - var key, - object = {}; - - if (ch === '{') { - next('{'); - white(); - if (ch === '}') { - next('}'); - return object; // empty object - } - while (ch) { - key = string(); - white(); - next(':'); - if (Object.hasOwnProperty.call(object, key)) { - error('Duplicate key "' + key + '"'); - } - object[key] = value(); - white(); - if (ch === '}') { - next('}'); - return object; - } - next(','); - white(); - } - } - error("Bad object"); - }; - -value = function () { - -// Parse a JSON value. It could be an object, an array, a string, a number, -// or a word. - - white(); - switch (ch) { - case '{': - return object(); - case '[': - return array(); - case '"': - return string(); - case '-': - return number(); - default: - return ch >= '0' && ch <= '9' ? number() : word(); - } -}; - -// Return the json_parse function. It will have access to all of the above -// functions and variables. - -module.exports = function (source, reviver) { - var result; - - text = source; - at = 0; - ch = ' '; - result = value(); - white(); - if (ch) { - error("Syntax error"); - } - - // If there is a reviver function, we recursively walk the new structure, - // passing each name/value pair to the reviver function for possible - // transformation, starting with a temporary root object that holds the result - // in an empty key. If there is not a reviver function, we simply return the - // result. - - return typeof reviver === 'function' ? (function walk(holder, key) { - var k, v, value = holder[key]; - if (value && typeof value === 'object') { - for (k in value) { - if (Object.prototype.hasOwnProperty.call(value, k)) { - v = walk(value, k); - if (v !== undefined) { - value[k] = v; - } else { - delete value[k]; - } - } - } - } - return reviver.call(holder, key, value); - }({'': result}, '')) : result; -}; -; - }).call(module.exports); - - __require.modules["/node_modules/jsonify/lib/parse.js"]._cached = module.exports; - return module.exports; -}; - -require.modules["/node_modules/jsonify/lib/stringify.js"] = function () { - var module = { exports : {} }; - var exports = module.exports; - var __dirname = "/node_modules/jsonify/lib"; - var __filename = "/node_modules/jsonify/lib/stringify.js"; - - var require = function (file) { - return __require(file, "/node_modules/jsonify/lib"); - }; - - require.resolve = function (file) { - return __require.resolve(name, "/node_modules/jsonify/lib"); - }; - - require.modules = __require.modules; - __require.modules["/node_modules/jsonify/lib/stringify.js"]._cached = module.exports; - - (function () { - var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - gap, - indent, - meta = { // table of character substitutions - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '"' : '\\"', - '\\': '\\\\' - }, - rep; - -function quote(string) { - // If the string contains no control characters, no quote characters, and no - // backslash characters, then we can safely slap some quotes around it. - // Otherwise we must also replace the offending characters with safe escape - // sequences. - - escapable.lastIndex = 0; - return escapable.test(string) ? '"' + string.replace(escapable, function (a) { - var c = meta[a]; - return typeof c === 'string' ? c : - '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }) + '"' : '"' + string + '"'; -} - -function str(key, holder) { - // Produce a string from holder[key]. - var i, // The loop counter. - k, // The member key. - v, // The member value. - length, - mind = gap, - partial, - value = holder[key]; - - // If the value has a toJSON method, call it to obtain a replacement value. - if (value && typeof value === 'object' && - typeof value.toJSON === 'function') { - value = value.toJSON(key); - } - - // If we were called with a replacer function, then call the replacer to - // obtain a replacement value. - if (typeof rep === 'function') { - value = rep.call(holder, key, value); - } - - // What happens next depends on the value's type. - switch (typeof value) { - case 'string': - return quote(value); - - case 'number': - // JSON numbers must be finite. Encode non-finite numbers as null. - return isFinite(value) ? String(value) : 'null'; - - case 'boolean': - case 'null': - // If the value is a boolean or null, convert it to a string. Note: - // typeof null does not produce 'null'. The case is included here in - // the remote chance that this gets fixed someday. - return String(value); - - case 'object': - if (!value) return 'null'; - gap += indent; - partial = []; - - // Array.isArray - if (Object.prototype.toString.apply(value) === '[object Array]') { - length = value.length; - for (i = 0; i < length; i += 1) { - partial[i] = str(i, value) || 'null'; - } - - // Join all of the elements together, separated with commas, and - // wrap them in brackets. - v = partial.length === 0 ? '[]' : gap ? - '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' : - '[' + partial.join(',') + ']'; - gap = mind; - return v; - } - - // If the replacer is an array, use it to select the members to be - // stringified. - if (rep && typeof rep === 'object') { - length = rep.length; - for (i = 0; i < length; i += 1) { - k = rep[i]; - if (typeof k === 'string') { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } - else { - // Otherwise, iterate through all of the keys in the object. - for (k in value) { - if (Object.prototype.hasOwnProperty.call(value, k)) { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } - - // Join all of the member texts together, separated with commas, - // and wrap them in braces. - - v = partial.length === 0 ? '{}' : gap ? - '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' : - '{' + partial.join(',') + '}'; - gap = mind; - return v; - } -} - -module.exports = function (value, replacer, space) { - var i; - gap = ''; - indent = ''; - - // If the space parameter is a number, make an indent string containing that - // many spaces. - if (typeof space === 'number') { - for (i = 0; i < space; i += 1) { - indent += ' '; - } - } - // If the space parameter is a string, it will be used as the indent string. - else if (typeof space === 'string') { - indent = space; - } - - // If there is a replacer, it must be a function or an array. - // Otherwise, throw an error. - rep = replacer; - if (replacer && typeof replacer !== 'function' - && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) { - throw new Error('JSON.stringify'); - } - - // Make a fake root object containing our value under the key of ''. - // Return the result of stringifying the value. - return str('', {'': value}); -}; -; - }).call(module.exports); - - __require.modules["/node_modules/jsonify/lib/stringify.js"]._cached = module.exports; - return module.exports; -}; - -require.modules["/node_modules/burrito/index.js"] = function () { - var module = { exports : {} }; - var exports = module.exports; - var __dirname = "/node_modules/burrito"; - var __filename = "/node_modules/burrito/index.js"; - - var require = function (file) { - return __require(file, "/node_modules/burrito"); - }; - - require.resolve = function (file) { - return __require.resolve(name, "/node_modules/burrito"); - }; - - require.modules = __require.modules; - __require.modules["/node_modules/burrito/index.js"]._cached = module.exports; - - (function () { - var uglify = require('uglify-js'); -var parser = uglify.parser; -var parse = function (expr) { - if (typeof expr !== 'string') throw 'expression should be a string'; - - //try { - var args = [].slice.call(arguments); - var ast = parser.parse.apply(null, args); - /* } - catch (err) { - if (err.message === undefined - || err.line === undefined - || err.col === undefined - || err.pos === undefined - ) { throw err } - - var e = new SyntaxError( - err.message - + '\n at line ' + err.line + ':' + err.col + ' in expression:\n\n' - + ' ' + expr.split(/\r?\n/)[err.line] - ); - - e.original = err; - e.line = err.line; - e.col = err.col; - e.pos = err.pos; - throw e; - } - */ - return ast; -}; - -var deparse = function (ast, b) { - return uglify.uglify.gen_code(ast, { beautify : b }); -}; - -var traverse = require('traverse'); -var vm = require('vm'); - -var burrito = module.exports = function (code, cb) { - var ast = Array_isArray(code) - ? code // already an ast - : parse(code.toString(), false, true) - ; - - var ast_ = traverse(ast).map(function mapper () { - wrapNode(this, cb); - }); - - return deparse(parse(deparse(ast_)), true); -}; - -var wrapNode = burrito.wrapNode = function (state, cb) { - var node = state.node; - - var ann = Array_isArray(node) && node[0] - && typeof node[0] === 'object' && node[0].name - ? node[0] - : null - ; - - if (!ann) return undefined; - - var self = { - name : ann.name, - node : node, - start : node[0].start, - end : node[0].end, - value : node.slice(1), - state : state - }; - - self.wrap = function (s) { - var subsrc = deparse( - traverse(node).map(function (x) { - if (!this.isRoot) wrapNode(this, cb) - }) - ); - - if (self.name === 'binary') { - var a = deparse(traverse(node[2]).map(function (x) { - if (!this.isRoot) wrapNode(this, cb) - })); - var b = deparse(traverse(node[3]).map(function (x) { - if (!this.isRoot) wrapNode(this, cb) - })); - } - - var src = ''; - - if (typeof s === 'function') { - if (self.name === 'binary') { - src = s(subsrc, a, b); - } - else { - src = s(subsrc); - } - } - else { - src = s.toString() - .replace(/%s/g, function () { - return subsrc - }) - ; - - if (self.name === 'binary') { - src = src - .replace(/%a/g, function () { return a }) - .replace(/%b/g, function () { return b }) - ; - } - } - - var expr = parse(src); - state.update(expr, true); - }; - - var cache = {}; - - self.parent = state.isRoot ? null : function () { - if (!cache.parent) { - var s = state; - var x; - do { - s = s.parent; - if (s) x = wrapNode(s); - } while (s && !x); - - cache.parent = x; - } - - return cache.parent; - }; - - self.source = function () { - if (!cache.source) cache.source = deparse(node); - return cache.source; - }; - - self.label = function () { - return burrito.label(self); - }; - - if (cb) cb.call(state, self); - - if (self.node[0].name === 'conditional') { - self.wrap('[%s][0]'); - } - - return self; -} - -burrito.microwave = function (code, context, cb) { - if (!cb) { cb = context; context = {} }; - if (!context) context = {}; - - var src = burrito(code, cb); - return vm.runInNewContext(src, context); -}; - -burrito.generateName = function (len) { - var name = ''; - var lower = '$'.charCodeAt(0); - var upper = 'z'.charCodeAt(0); - - while (name.length < len) { - var c = String.fromCharCode(Math.floor( - Math.random() * (upper - lower + 1) + lower - )); - if ((name + c).match(/^[A-Za-z_$][A-Za-z0-9_$]*$/)) name += c; - } - - return name; -}; - -burrito.parse = parse; -burrito.deparse = deparse; - -burrito.label = function (node) { - if (node.name === 'call') { - if (typeof node.value[0] === 'string') { - return node.value[0]; - } - else if (node.value[0] && typeof node.value[0][1] === 'string') { - return node.value[0][1]; - } - else { - return null; - } - } - else if (node.name === 'var') { - return node.value[0].map(function (x) { return x[0] }); - } - else if (node.name === 'defun') { - return node.value[0]; - } - else if (node.name === 'function') { - return node.value[0]; - } - else { - return null; - } -}; - -var Array_isArray = Array.isArray || function isArray (xs) { - return Object.prototype.toString.call(xs) === '[object Array]'; -}; -; - }).call(module.exports); - - __require.modules["/node_modules/burrito/index.js"]._cached = module.exports; - return module.exports; -}; - -process.nextTick(function () { - var module = { exports : {} }; - var exports = module.exports; - var __dirname = "/"; - var __filename = "//home/substack/projects/node-burrito/example/web"; - - var require = function (file) { - return __require(file, "/"); - }; - require.modules = __require.modules; - - var burrito = require('burrito'); -var json = require('jsonify'); - -var src = [ - 'function f () { g() }', - 'function g () { h() }', - 'function h () { throw "moo" + Array(x).join("!") }', - 'var x = 4', - 'f()' -].join('\r\n'); - -window.onload = function () { - burrito(src, function (node) { - document.body.innerHTML += node.name + '
\n'; - }); -}; -if (document.readyState === 'complete') window.onload(); -; -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/example/web/index.html b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/example/web/index.html deleted file mode 100644 index 66804fb..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/example/web/index.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - -

-
-
diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/example/web/main.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/example/web/main.js
deleted file mode 100644
index cc81a8b..0000000
--- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/example/web/main.js
+++ /dev/null
@@ -1,17 +0,0 @@
-var burrito = require('burrito');
-var json = require('jsonify');
-
-var src = [
-    'function f () { g() }',
-    'function g () { h() }',
-    'function h () { throw "moo" + Array(x).join("!") }',
-    'var x = 4',
-    'f()'
-].join('\r\n');
-
-window.onload = function () {
-    burrito(src, function (node) {
-        document.body.innerHTML += node.name + '
\n'; - }); -}; -if (document.readyState === 'complete') window.onload(); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/example/web/server.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/example/web/server.js deleted file mode 100644 index 6bce020..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/example/web/server.js +++ /dev/null @@ -1,12 +0,0 @@ -var express = require('express'); -var browserify = require('browserify'); - -var app = express.createServer(); -app.use(express.static(__dirname)); -app.use(browserify({ - entry : __dirname + '/main.js', - watch : true, -})); - -app.listen(8081); -console.log('Listening on :8081'); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/example/wrap.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/example/wrap.js deleted file mode 100644 index 1642401..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/example/wrap.js +++ /dev/null @@ -1,7 +0,0 @@ -var burrito = require('burrito'); - -var src = burrito('f() && g(h())\nfoo()', function (node) { - if (node.name === 'call') node.wrap('qqq(%s)'); -}); - -console.log(src); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/index.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/index.js deleted file mode 100644 index 60ef569..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/index.js +++ /dev/null @@ -1,208 +0,0 @@ -var uglify = require('uglify-js'); -var parser = uglify.parser; -var parse = function (expr) { - if (typeof expr !== 'string') throw 'expression should be a string'; - - try { - var ast = parser.parse.apply(null, arguments); - } - catch (err) { - if (err.message === undefined - || err.line === undefined - || err.col === undefined - || err.pos === undefined - ) { throw err } - - var e = new SyntaxError( - err.message - + '\n at line ' + err.line + ':' + err.col + ' in expression:\n\n' - + ' ' + expr.split(/\r?\n/)[err.line] - ); - - e.original = err; - e.line = err.line; - e.col = err.col; - e.pos = err.pos; - throw e; - } - return ast; -}; - -var deparse = function (ast, b) { - return uglify.uglify.gen_code(ast, { beautify : b }); -}; - -var traverse = require('traverse'); -var vm = require('vm'); - -var burrito = module.exports = function (code, cb) { - var ast = Array_isArray(code) - ? code // already an ast - : parse(code.toString(), false, true) - ; - - var ast_ = traverse(ast).map(function mapper () { - wrapNode(this, cb); - }); - - return deparse(parse(deparse(ast_)), true); -}; - -var wrapNode = burrito.wrapNode = function (state, cb) { - var node = state.node; - - var ann = Array_isArray(node) && node[0] - && typeof node[0] === 'object' && node[0].name - ? node[0] - : null - ; - - if (!ann) return undefined; - - var self = { - name : ann.name, - node : node, - start : node[0].start, - end : node[0].end, - value : node.slice(1), - state : state - }; - - self.wrap = function (s) { - var subsrc = deparse( - traverse(node).map(function (x) { - if (!this.isRoot) wrapNode(this, cb) - }) - ); - - if (self.name === 'binary') { - var a = deparse(traverse(node[2]).map(function (x) { - if (!this.isRoot) wrapNode(this, cb) - })); - var b = deparse(traverse(node[3]).map(function (x) { - if (!this.isRoot) wrapNode(this, cb) - })); - } - - var src = ''; - - if (typeof s === 'function') { - if (self.name === 'binary') { - src = s(subsrc, a, b); - } - else { - src = s(subsrc); - } - } - else { - src = s.toString() - .replace(/%s/g, function () { - return subsrc - }) - ; - - if (self.name === 'binary') { - src = src - .replace(/%a/g, function () { return a }) - .replace(/%b/g, function () { return b }) - ; - } - } - - var expr = parse(src); - state.update(expr, true); - }; - - var cache = {}; - - self.parent = state.isRoot ? null : function () { - if (!cache.parent) { - var s = state; - var x; - do { - s = s.parent; - if (s) x = wrapNode(s); - } while (s && !x); - - cache.parent = x; - } - - return cache.parent; - }; - - self.source = function () { - if (!cache.source) cache.source = deparse(node); - return cache.source; - }; - - self.label = function () { - return burrito.label(self); - }; - - if (cb) cb.call(state, self); - - if (self.node[0].name === 'conditional') { - self.wrap('[%s][0]'); - } - - return self; -} - -burrito.microwave = function (code, context, cb) { - if (!cb) { cb = context; context = {} }; - if (!context) context = {}; - - var src = burrito(code, cb); - return vm.runInNewContext(src, context); -}; - -burrito.generateName = function (len) { - var name = ''; - var lower = '$'.charCodeAt(0); - var upper = 'z'.charCodeAt(0); - - while (name.length < len) { - var c = String.fromCharCode(Math.floor( - Math.random() * (upper - lower + 1) + lower - )); - if ((name + c).match(/^[A-Za-z_$][A-Za-z0-9_$]*$/)) name += c; - } - - return name; -}; - -burrito.parse = parse; -burrito.deparse = deparse; - -burrito.label = function (node) { - if (node.name === 'call') { - if (typeof node.value[0] === 'string') { - return node.value[0]; - } - else if (node.value[0] && typeof node.value[0][1] === 'string') { - return node.value[0][1]; - } - else if (node.value[0][0] === 'dot') { - return node.value[0][node.value[0].length - 1]; - } - else { - return null; - } - } - else if (node.name === 'var') { - return node.value[0].map(function (x) { return x[0] }); - } - else if (node.name === 'defun') { - return node.value[0]; - } - else if (node.name === 'function') { - return node.value[0]; - } - else { - return null; - } -}; - -var Array_isArray = Array.isArray || function isArray (xs) { - return Object.prototype.toString.call(xs) === '[object Array]'; -}; diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/.bin/uglifyjs b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/.bin/uglifyjs deleted file mode 120000 index fef3468..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/.bin/uglifyjs +++ /dev/null @@ -1 +0,0 @@ -../uglify-js/bin/uglifyjs \ No newline at end of file diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/.npmignore b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/.npmignore deleted file mode 100644 index 3c3629e..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/LICENSE b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/LICENSE deleted file mode 100644 index 7b75500..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -Copyright 2010 James Halliday (mail@substack.net) - -This project is free software released under the MIT/X11 license: -http://www.opensource.org/licenses/mit-license.php - -Copyright 2010 James Halliday (mail@substack.net) - -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: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -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. diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/README.markdown b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/README.markdown deleted file mode 100644 index f86ef76..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/README.markdown +++ /dev/null @@ -1,237 +0,0 @@ -traverse -======== - -Traverse and transform objects by visiting every node on a recursive walk. - -examples -======== - -transform negative numbers in-place ------------------------------------ - -negative.js - -````javascript -var traverse = require('traverse'); -var obj = [ 5, 6, -3, [ 7, 8, -2, 1 ], { f : 10, g : -13 } ]; - -traverse(obj).forEach(function (x) { - if (x < 0) this.update(x + 128); -}); - -console.dir(obj); -```` - -Output: - - [ 5, 6, 125, [ 7, 8, 126, 1 ], { f: 10, g: 115 } ] - -collect leaf nodes ------------------- - -leaves.js - -````javascript -var traverse = require('traverse'); - -var obj = { - a : [1,2,3], - b : 4, - c : [5,6], - d : { e : [7,8], f : 9 }, -}; - -var leaves = traverse(obj).reduce(function (acc, x) { - if (this.isLeaf) acc.push(x); - return acc; -}, []); - -console.dir(leaves); -```` - -Output: - - [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ] - -scrub circular references -------------------------- - -scrub.js: - -````javascript -var traverse = require('traverse'); - -var obj = { a : 1, b : 2, c : [ 3, 4 ] }; -obj.c.push(obj); - -var scrubbed = traverse(obj).map(function (x) { - if (this.circular) this.remove() -}); -console.dir(scrubbed); -```` - -output: - - { a: 1, b: 2, c: [ 3, 4 ] } - -context -======= - -Each method that takes a callback has a context (its `this` object) with these -attributes: - -this.node ---------- - -The present node on the recursive walk - -this.path ---------- - -An array of string keys from the root to the present node - -this.parent ------------ - -The context of the node's parent. -This is `undefined` for the root node. - -this.key --------- - -The name of the key of the present node in its parent. -This is `undefined` for the root node. - -this.isRoot, this.notRoot -------------------------- - -Whether the present node is the root node - -this.isLeaf, this.notLeaf -------------------------- - -Whether or not the present node is a leaf node (has no children) - -this.level ----------- - -Depth of the node within the traversal - -this.circular -------------- - -If the node equals one of its parents, the `circular` attribute is set to the -context of that parent and the traversal progresses no deeper. - -this.update(value, stopHere=false) ----------------------------------- - -Set a new value for the present node. - -All the elements in `value` will be recursively traversed unless `stopHere` is -true. - -this.remove(stopHere=false) -------------- - -Remove the current element from the output. If the node is in an Array it will -be spliced off. Otherwise it will be deleted from its parent. - -this.delete(stopHere=false) -------------- - -Delete the current element from its parent in the output. Calls `delete` even on -Arrays. - -this.before(fn) ---------------- - -Call this function before any of the children are traversed. - -You can assign into `this.keys` here to traverse in a custom order. - -this.after(fn) --------------- - -Call this function after any of the children are traversed. - -this.pre(fn) ------------- - -Call this function before each of the children are traversed. - -this.post(fn) -------------- - -Call this function after each of the children are traversed. - -methods -======= - -.map(fn) --------- - -Execute `fn` for each node in the object and return a new object with the -results of the walk. To update nodes in the result use `this.update(value)`. - -.forEach(fn) ------------- - -Execute `fn` for each node in the object but unlike `.map()`, when -`this.update()` is called it updates the object in-place. - -.reduce(fn, acc) ----------------- - -For each node in the object, perform a -[left-fold](http://en.wikipedia.org/wiki/Fold_(higher-order_function)) -with the return value of `fn(acc, node)`. - -If `acc` isn't specified, `acc` is set to the root object for the first step -and the root element is skipped. - -.paths() --------- - -Return an `Array` of every possible non-cyclic path in the object. -Paths are `Array`s of string keys. - -.nodes() --------- - -Return an `Array` of every node in the object. - -.clone() --------- - -Create a deep clone of the object. - -install -======= - -Using [npm](http://npmjs.org) do: - - $ npm install traverse - -test -==== - -Using [expresso](http://github.com/visionmedia/expresso) do: - - $ expresso - - 100% wahoo, your stuff is not broken! - -in the browser -============== - -Use [browserify](https://github.com/substack/node-browserify) to run traverse in -the browser. - -traverse has been tested and works with: - -* Internet Explorer 5.5, 6.0, 7.0, 8.0, 9.0 -* Firefox 3.5 -* Chrome 6.0 -* Opera 10.6 -* Safari 5.0 diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/examples/json.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/examples/json.js deleted file mode 100755 index 50d612e..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/examples/json.js +++ /dev/null @@ -1,16 +0,0 @@ -var traverse = require('traverse'); - -var id = 54; -var callbacks = {}; -var obj = { moo : function () {}, foo : [2,3,4, function () {}] }; - -var scrubbed = traverse(obj).map(function (x) { - if (typeof x === 'function') { - callbacks[id] = { id : id, f : x, path : this.path }; - this.update('[Function]'); - id++; - } -}); - -console.dir(scrubbed); -console.dir(callbacks); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/examples/leaves.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/examples/leaves.js deleted file mode 100755 index c1b310b..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/examples/leaves.js +++ /dev/null @@ -1,15 +0,0 @@ -var traverse = require('traverse'); - -var obj = { - a : [1,2,3], - b : 4, - c : [5,6], - d : { e : [7,8], f : 9 }, -}; - -var leaves = traverse(obj).reduce(function (acc, x) { - if (this.isLeaf) acc.push(x); - return acc; -}, []); - -console.dir(leaves); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/examples/negative.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/examples/negative.js deleted file mode 100755 index 78608a0..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/examples/negative.js +++ /dev/null @@ -1,8 +0,0 @@ -var traverse = require('traverse'); -var obj = [ 5, 6, -3, [ 7, 8, -2, 1 ], { f : 10, g : -13 } ]; - -traverse(obj).forEach(function (x) { - if (x < 0) this.update(x + 128); -}); - -console.dir(obj); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/examples/scrub.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/examples/scrub.js deleted file mode 100755 index 5d15b91..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/examples/scrub.js +++ /dev/null @@ -1,10 +0,0 @@ -// scrub out circular references -var traverse = require('traverse'); - -var obj = { a : 1, b : 2, c : [ 3, 4 ] }; -obj.c.push(obj); - -var scrubbed = traverse(obj).map(function (x) { - if (this.circular) this.remove() -}); -console.dir(scrubbed); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/examples/stringify.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/examples/stringify.js deleted file mode 100755 index 167b68b..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/examples/stringify.js +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env node -var traverse = require('traverse'); - -var obj = [ 'five', 6, -3, [ 7, 8, -2, 1 ], { f : 10, g : -13 } ]; - -var s = ''; -traverse(obj).forEach(function to_s (node) { - if (Array.isArray(node)) { - this.before(function () { s += '[' }); - this.post(function (child) { - if (!child.isLast) s += ','; - }); - this.after(function () { s += ']' }); - } - else if (typeof node == 'object') { - this.before(function () { s += '{' }); - this.pre(function (x, key) { - to_s(key); - s += ':'; - }); - this.post(function (child) { - if (!child.isLast) s += ','; - }); - this.after(function () { s += '}' }); - } - else if (typeof node == 'string') { - s += '"' + node.toString().replace(/"/g, '\\"') + '"'; - } - else if (typeof node == 'function') { - s += 'null'; - } - else { - s += node.toString(); - } -}); - -console.log('JSON.stringify: ' + JSON.stringify(obj)); -console.log('this stringify: ' + s); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/index.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/index.js deleted file mode 100644 index 038a1ad..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/index.js +++ /dev/null @@ -1,267 +0,0 @@ -module.exports = Traverse; -function Traverse (obj) { - if (!(this instanceof Traverse)) return new Traverse(obj); - this.value = obj; -} - -Traverse.prototype.get = function (ps) { - var node = this.value; - for (var i = 0; i < ps.length; i ++) { - var key = ps[i]; - if (!Object.hasOwnProperty.call(node, key)) { - node = undefined; - break; - } - node = node[key]; - } - return node; -}; - -Traverse.prototype.set = function (ps, value) { - var node = this.value; - for (var i = 0; i < ps.length - 1; i ++) { - var key = ps[i]; - if (!Object.hasOwnProperty.call(node, key)) node[key] = {}; - node = node[key]; - } - node[ps[i]] = value; - return value; -}; - -Traverse.prototype.map = function (cb) { - return walk(this.value, cb, true); -}; - -Traverse.prototype.forEach = function (cb) { - this.value = walk(this.value, cb, false); - return this.value; -}; - -Traverse.prototype.reduce = function (cb, init) { - var skip = arguments.length === 1; - var acc = skip ? this.value : init; - this.forEach(function (x) { - if (!this.isRoot || !skip) { - acc = cb.call(this, acc, x); - } - }); - return acc; -}; - -Traverse.prototype.paths = function () { - var acc = []; - this.forEach(function (x) { - acc.push(this.path); - }); - return acc; -}; - -Traverse.prototype.nodes = function () { - var acc = []; - this.forEach(function (x) { - acc.push(this.node); - }); - return acc; -}; - -Traverse.prototype.clone = function () { - var parents = [], nodes = []; - - return (function clone (src) { - for (var i = 0; i < parents.length; i++) { - if (parents[i] === src) { - return nodes[i]; - } - } - - if (typeof src === 'object' && src !== null) { - var dst = copy(src); - - parents.push(src); - nodes.push(dst); - - forEach(Object_keys(src), function (key) { - dst[key] = clone(src[key]); - }); - - parents.pop(); - nodes.pop(); - return dst; - } - else { - return src; - } - })(this.value); -}; - -function walk (root, cb, immutable) { - var path = []; - var parents = []; - var alive = true; - - return (function walker (node_) { - var node = immutable ? copy(node_) : node_; - var modifiers = {}; - - var keepGoing = true; - - var state = { - node : node, - node_ : node_, - path : [].concat(path), - parent : parents[parents.length - 1], - parents : parents, - key : path.slice(-1)[0], - isRoot : path.length === 0, - level : path.length, - circular : null, - update : function (x, stopHere) { - if (!state.isRoot) { - state.parent.node[state.key] = x; - } - state.node = x; - if (stopHere) keepGoing = false; - }, - 'delete' : function (stopHere) { - delete state.parent.node[state.key]; - if (stopHere) keepGoing = false; - }, - remove : function (stopHere) { - if (Array_isArray(state.parent.node)) { - state.parent.node.splice(state.key, 1); - } - else { - delete state.parent.node[state.key]; - } - if (stopHere) keepGoing = false; - }, - keys : null, - before : function (f) { modifiers.before = f }, - after : function (f) { modifiers.after = f }, - pre : function (f) { modifiers.pre = f }, - post : function (f) { modifiers.post = f }, - stop : function () { alive = false }, - block : function () { keepGoing = false } - }; - - if (!alive) return state; - - if (typeof node === 'object' && node !== null) { - state.keys = Object_keys(node); - - state.isLeaf = state.keys.length == 0; - - for (var i = 0; i < parents.length; i++) { - if (parents[i].node_ === node_) { - state.circular = parents[i]; - break; - } - } - } - else { - state.isLeaf = true; - } - - state.notLeaf = !state.isLeaf; - state.notRoot = !state.isRoot; - - // use return values to update if defined - var ret = cb.call(state, state.node); - if (ret !== undefined && state.update) state.update(ret); - - if (modifiers.before) modifiers.before.call(state, state.node); - - if (!keepGoing) return state; - - if (typeof state.node == 'object' - && state.node !== null && !state.circular) { - parents.push(state); - - forEach(state.keys, function (key, i) { - path.push(key); - - if (modifiers.pre) modifiers.pre.call(state, state.node[key], key); - - var child = walker(state.node[key]); - if (immutable && Object.hasOwnProperty.call(state.node, key)) { - state.node[key] = child.node; - } - - child.isLast = i == state.keys.length - 1; - child.isFirst = i == 0; - - if (modifiers.post) modifiers.post.call(state, child); - - path.pop(); - }); - parents.pop(); - } - - if (modifiers.after) modifiers.after.call(state, state.node); - - return state; - })(root).node; -} - -function copy (src) { - if (typeof src === 'object' && src !== null) { - var dst; - - if (Array_isArray(src)) { - dst = []; - } - else if (src instanceof Date) { - dst = new Date(src); - } - else if (src instanceof Boolean) { - dst = new Boolean(src); - } - else if (src instanceof Number) { - dst = new Number(src); - } - else if (src instanceof String) { - dst = new String(src); - } - else if (Object.create && Object.getPrototypeOf) { - dst = Object.create(Object.getPrototypeOf(src)); - } - else if (src.__proto__ || src.constructor.prototype) { - var proto = src.__proto__ || src.constructor.prototype || {}; - var T = function () {}; - T.prototype = proto; - dst = new T; - if (!dst.__proto__) dst.__proto__ = proto; - } - - forEach(Object_keys(src), function (key) { - dst[key] = src[key]; - }); - return dst; - } - else return src; -} - -var Object_keys = Object.keys || function keys (obj) { - var res = []; - for (var key in obj) res.push(key) - return res; -}; - -var Array_isArray = Array.isArray || function isArray (xs) { - return Object.prototype.toString.call(xs) === '[object Array]'; -}; - -var forEach = function (xs, fn) { - if (xs.forEach) return xs.forEach(fn) - else for (var i = 0; i < xs.length; i++) { - fn(xs[i], i, xs); - } -}; - -forEach(Object_keys(Traverse.prototype), function (key) { - Traverse[key] = function (obj) { - var args = [].slice.call(arguments, 1); - var t = Traverse(obj); - return t[key].apply(t, args); - }; -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/main.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/main.js deleted file mode 100755 index d562d37..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/main.js +++ /dev/null @@ -1,10 +0,0 @@ -// scrub out circular references -var traverse = require('./index.js'); - -var obj = { a : 1, b : 2, c : [ 3, 4 ] }; -obj.c.push(obj); - -var scrubbed = traverse(obj).map(function (x) { - if (this.circular) this.remove() -}); -console.dir(scrubbed); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/package.json b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/package.json deleted file mode 100644 index c55d2d6..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "traverse", - "version": "0.5.2", - "description": "Traverse and transform objects by visiting every node on a recursive walk", - "author": { - "name": "James Halliday" - }, - "license": "MIT/X11", - "main": "./index", - "repository": { - "type": "git", - "url": "http://github.com/substack/js-traverse.git" - }, - "devDependencies": { - "expresso": "0.7.x" - }, - "scripts": { - "test": "expresso" - }, - "readme": "traverse\n========\n\nTraverse and transform objects by visiting every node on a recursive walk.\n\nexamples\n========\n\ntransform negative numbers in-place\n-----------------------------------\n\nnegative.js\n\n````javascript\nvar traverse = require('traverse');\nvar obj = [ 5, 6, -3, [ 7, 8, -2, 1 ], { f : 10, g : -13 } ];\n\ntraverse(obj).forEach(function (x) {\n if (x < 0) this.update(x + 128);\n});\n\nconsole.dir(obj);\n````\n\nOutput:\n\n [ 5, 6, 125, [ 7, 8, 126, 1 ], { f: 10, g: 115 } ]\n\ncollect leaf nodes\n------------------\n\nleaves.js\n\n````javascript\nvar traverse = require('traverse');\n\nvar obj = {\n a : [1,2,3],\n b : 4,\n c : [5,6],\n d : { e : [7,8], f : 9 },\n};\n\nvar leaves = traverse(obj).reduce(function (acc, x) {\n if (this.isLeaf) acc.push(x);\n return acc;\n}, []);\n\nconsole.dir(leaves);\n````\n\nOutput:\n\n [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]\n\nscrub circular references\n-------------------------\n\nscrub.js:\n\n````javascript\nvar traverse = require('traverse');\n\nvar obj = { a : 1, b : 2, c : [ 3, 4 ] };\nobj.c.push(obj);\n\nvar scrubbed = traverse(obj).map(function (x) {\n if (this.circular) this.remove()\n});\nconsole.dir(scrubbed);\n````\n\noutput:\n\n { a: 1, b: 2, c: [ 3, 4 ] }\n\ncontext\n=======\n\nEach method that takes a callback has a context (its `this` object) with these\nattributes:\n\nthis.node\n---------\n\nThe present node on the recursive walk\n\nthis.path\n---------\n\nAn array of string keys from the root to the present node\n\nthis.parent\n-----------\n\nThe context of the node's parent.\nThis is `undefined` for the root node.\n\nthis.key\n--------\n\nThe name of the key of the present node in its parent.\nThis is `undefined` for the root node.\n\nthis.isRoot, this.notRoot\n-------------------------\n\nWhether the present node is the root node\n\nthis.isLeaf, this.notLeaf\n-------------------------\n\nWhether or not the present node is a leaf node (has no children)\n\nthis.level\n----------\n\nDepth of the node within the traversal\n\nthis.circular\n-------------\n\nIf the node equals one of its parents, the `circular` attribute is set to the\ncontext of that parent and the traversal progresses no deeper.\n\nthis.update(value, stopHere=false)\n----------------------------------\n\nSet a new value for the present node.\n\nAll the elements in `value` will be recursively traversed unless `stopHere` is\ntrue.\n\nthis.remove(stopHere=false)\n-------------\n\nRemove the current element from the output. If the node is in an Array it will\nbe spliced off. Otherwise it will be deleted from its parent.\n\nthis.delete(stopHere=false)\n-------------\n\nDelete the current element from its parent in the output. Calls `delete` even on\nArrays.\n\nthis.before(fn)\n---------------\n\nCall this function before any of the children are traversed.\n\nYou can assign into `this.keys` here to traverse in a custom order.\n\nthis.after(fn)\n--------------\n\nCall this function after any of the children are traversed.\n\nthis.pre(fn)\n------------\n\nCall this function before each of the children are traversed.\n\nthis.post(fn)\n-------------\n\nCall this function after each of the children are traversed.\n\nmethods\n=======\n\n.map(fn)\n--------\n\nExecute `fn` for each node in the object and return a new object with the\nresults of the walk. To update nodes in the result use `this.update(value)`.\n\n.forEach(fn)\n------------\n\nExecute `fn` for each node in the object but unlike `.map()`, when\n`this.update()` is called it updates the object in-place.\n\n.reduce(fn, acc)\n----------------\n\nFor each node in the object, perform a\n[left-fold](http://en.wikipedia.org/wiki/Fold_(higher-order_function))\nwith the return value of `fn(acc, node)`.\n\nIf `acc` isn't specified, `acc` is set to the root object for the first step\nand the root element is skipped.\n\n.paths()\n--------\n\nReturn an `Array` of every possible non-cyclic path in the object.\nPaths are `Array`s of string keys.\n\n.nodes()\n--------\n\nReturn an `Array` of every node in the object.\n\n.clone()\n--------\n\nCreate a deep clone of the object.\n\ninstall\n=======\n\nUsing [npm](http://npmjs.org) do:\n\n $ npm install traverse\n\ntest\n====\n\nUsing [expresso](http://github.com/visionmedia/expresso) do:\n\n $ expresso\n \n 100% wahoo, your stuff is not broken!\n\nin the browser\n==============\n\nUse [browserify](https://github.com/substack/node-browserify) to run traverse in\nthe browser.\n\ntraverse has been tested and works with:\n\n* Internet Explorer 5.5, 6.0, 7.0, 8.0, 9.0\n* Firefox 3.5\n* Chrome 6.0\n* Opera 10.6\n* Safari 5.0\n", - "readmeFilename": "README.markdown", - "_id": "traverse@0.5.2", - "_from": "traverse@~0.5.1" -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/circular.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/circular.js deleted file mode 100644 index 9162601..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/circular.js +++ /dev/null @@ -1,115 +0,0 @@ -var assert = require('assert'); -var Traverse = require('../'); -var deepEqual = require('./lib/deep_equal'); -var util = require('util'); - -exports.circular = function () { - var obj = { x : 3 }; - obj.y = obj; - var foundY = false; - Traverse(obj).forEach(function (x) { - if (this.path.join('') == 'y') { - assert.equal( - util.inspect(this.circular.node), - util.inspect(obj) - ); - foundY = true; - } - }); - assert.ok(foundY); -}; - -exports.deepCirc = function () { - var obj = { x : [ 1, 2, 3 ], y : [ 4, 5 ] }; - obj.y[2] = obj; - - var times = 0; - Traverse(obj).forEach(function (x) { - if (this.circular) { - assert.deepEqual(this.circular.path, []); - assert.deepEqual(this.path, [ 'y', 2 ]); - times ++; - } - }); - - assert.deepEqual(times, 1); -}; - -exports.doubleCirc = function () { - var obj = { x : [ 1, 2, 3 ], y : [ 4, 5 ] }; - obj.y[2] = obj; - obj.x.push(obj.y); - - var circs = []; - Traverse(obj).forEach(function (x) { - if (this.circular) { - circs.push({ circ : this.circular, self : this, node : x }); - } - }); - - assert.deepEqual(circs[0].self.path, [ 'x', 3, 2 ]); - assert.deepEqual(circs[0].circ.path, []); - - assert.deepEqual(circs[1].self.path, [ 'y', 2 ]); - assert.deepEqual(circs[1].circ.path, []); - - assert.deepEqual(circs.length, 2); -}; - -exports.circDubForEach = function () { - var obj = { x : [ 1, 2, 3 ], y : [ 4, 5 ] }; - obj.y[2] = obj; - obj.x.push(obj.y); - - Traverse(obj).forEach(function (x) { - if (this.circular) this.update('...'); - }); - - assert.deepEqual(obj, { x : [ 1, 2, 3, [ 4, 5, '...' ] ], y : [ 4, 5, '...' ] }); -}; - -exports.circDubMap = function () { - var obj = { x : [ 1, 2, 3 ], y : [ 4, 5 ] }; - obj.y[2] = obj; - obj.x.push(obj.y); - - var c = Traverse(obj).map(function (x) { - if (this.circular) { - this.update('...'); - } - }); - - assert.deepEqual(c, { x : [ 1, 2, 3, [ 4, 5, '...' ] ], y : [ 4, 5, '...' ] }); -}; - -exports.circClone = function () { - var obj = { x : [ 1, 2, 3 ], y : [ 4, 5 ] }; - obj.y[2] = obj; - obj.x.push(obj.y); - - var clone = Traverse.clone(obj); - assert.ok(obj !== clone); - - assert.ok(clone.y[2] === clone); - assert.ok(clone.y[2] !== obj); - assert.ok(clone.x[3][2] === clone); - assert.ok(clone.x[3][2] !== obj); - assert.deepEqual(clone.x.slice(0,3), [1,2,3]); - assert.deepEqual(clone.y.slice(0,2), [4,5]); -}; - -exports.circMapScrub = function () { - var obj = { a : 1, b : 2 }; - obj.c = obj; - - var scrubbed = Traverse(obj).map(function (node) { - if (this.circular) this.remove(); - }); - assert.deepEqual( - Object.keys(scrubbed).sort(), - [ 'a', 'b' ] - ); - assert.ok(deepEqual(scrubbed, { a : 1, b : 2 })); - - assert.equal(obj.c, obj); -}; diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/date.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/date.js deleted file mode 100644 index 4ca06dc..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/date.js +++ /dev/null @@ -1,35 +0,0 @@ -var assert = require('assert'); -var Traverse = require('../'); - -exports.dateEach = function () { - var obj = { x : new Date, y : 10, z : 5 }; - - var counts = {}; - - Traverse(obj).forEach(function (node) { - var t = (node instanceof Date && 'Date') || typeof node; - counts[t] = (counts[t] || 0) + 1; - }); - - assert.deepEqual(counts, { - object : 1, - Date : 1, - number : 2, - }); -}; - -exports.dateMap = function () { - var obj = { x : new Date, y : 10, z : 5 }; - - var res = Traverse(obj).map(function (node) { - if (typeof node === 'number') this.update(node + 100); - }); - - assert.ok(obj.x !== res.x); - assert.deepEqual(res, { - x : obj.x, - y : 110, - z : 105, - }); -}; - diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/equal.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/equal.js deleted file mode 100644 index decc755..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/equal.js +++ /dev/null @@ -1,220 +0,0 @@ -var assert = require('assert'); -var traverse = require('../'); -var deepEqual = require('./lib/deep_equal'); - -exports.deepDates = function () { - assert.ok( - deepEqual( - { d : new Date, x : [ 1, 2, 3 ] }, - { d : new Date, x : [ 1, 2, 3 ] } - ), - 'dates should be equal' - ); - - var d0 = new Date; - setTimeout(function () { - assert.ok( - !deepEqual( - { d : d0, x : [ 1, 2, 3 ], }, - { d : new Date, x : [ 1, 2, 3 ] } - ), - 'microseconds should count in date equality' - ); - }, 5); -}; - -exports.deepCircular = function () { - var a = [1]; - a.push(a); // a = [ 1, *a ] - - var b = [1]; - b.push(a); // b = [ 1, [ 1, *a ] ] - - assert.ok( - !deepEqual(a, b), - 'circular ref mount points count towards equality' - ); - - var c = [1]; - c.push(c); // c = [ 1, *c ] - assert.ok( - deepEqual(a, c), - 'circular refs are structurally the same here' - ); - - var d = [1]; - d.push(a); // c = [ 1, [ 1, *d ] ] - assert.ok( - deepEqual(b, d), - 'non-root circular ref structural comparison' - ); -}; - -exports.deepInstances = function () { - assert.ok( - !deepEqual([ new Boolean(false) ], [ false ]), - 'boolean instances are not real booleans' - ); - - assert.ok( - !deepEqual([ new String('x') ], [ 'x' ]), - 'string instances are not real strings' - ); - - assert.ok( - !deepEqual([ new Number(4) ], [ 4 ]), - 'number instances are not real numbers' - ); - - assert.ok( - deepEqual([ new RegExp('x') ], [ /x/ ]), - 'regexp instances are real regexps' - ); - - assert.ok( - !deepEqual([ new RegExp(/./) ], [ /../ ]), - 'these regexps aren\'t the same' - ); - - assert.ok( - !deepEqual( - [ function (x) { return x * 2 } ], - [ function (x) { return x * 2 } ] - ), - 'functions with the same .toString() aren\'t necessarily the same' - ); - - var f = function (x) { return x * 2 }; - assert.ok( - deepEqual([ f ], [ f ]), - 'these functions are actually equal' - ); -}; - -exports.deepEqual = function () { - assert.ok( - !deepEqual([ 1, 2, 3 ], { 0 : 1, 1 : 2, 2 : 3 }), - 'arrays are not objects' - ); -}; - -exports.falsy = function () { - assert.ok( - !deepEqual([ undefined ], [ null ]), - 'null is not undefined!' - ); - - assert.ok( - !deepEqual([ null ], [ undefined ]), - 'undefined is not null!' - ); - - assert.ok( - !deepEqual( - { a : 1, b : 2, c : [ 3, undefined, 5 ] }, - { a : 1, b : 2, c : [ 3, null, 5 ] } - ), - 'undefined is not null, however deeply!' - ); - - assert.ok( - !deepEqual( - { a : 1, b : 2, c : [ 3, undefined, 5 ] }, - { a : 1, b : 2, c : [ 3, null, 5 ] } - ), - 'null is not undefined, however deeply!' - ); - - assert.ok( - !deepEqual( - { a : 1, b : 2, c : [ 3, undefined, 5 ] }, - { a : 1, b : 2, c : [ 3, null, 5 ] } - ), - 'null is not undefined, however deeply!' - ); -}; - -exports.deletedArrayEqual = function () { - var xs = [ 1, 2, 3, 4 ]; - delete xs[2]; - - var ys = Object.create(Array.prototype); - ys[0] = 1; - ys[1] = 2; - ys[3] = 4; - - assert.ok( - deepEqual(xs, ys), - 'arrays with deleted elements are only equal to' - + ' arrays with similarly deleted elements' - ); - - assert.ok( - !deepEqual(xs, [ 1, 2, undefined, 4 ]), - 'deleted array elements cannot be undefined' - ); - - assert.ok( - !deepEqual(xs, [ 1, 2, null, 4 ]), - 'deleted array elements cannot be null' - ); -}; - -exports.deletedObjectEqual = function () { - var obj = { a : 1, b : 2, c : 3 }; - delete obj.c; - - assert.ok( - deepEqual(obj, { a : 1, b : 2 }), - 'deleted object elements should not show up' - ); - - assert.ok( - !deepEqual(obj, { a : 1, b : 2, c : undefined }), - 'deleted object elements are not undefined' - ); - - assert.ok( - !deepEqual(obj, { a : 1, b : 2, c : null }), - 'deleted object elements are not null' - ); -}; - -exports.emptyKeyEqual = function () { - assert.ok(!deepEqual( - { a : 1 }, { a : 1, '' : 55 } - )); -}; - -exports.deepArguments = function () { - assert.ok( - !deepEqual( - [ 4, 5, 6 ], - (function () { return arguments })(4, 5, 6) - ), - 'arguments are not arrays' - ); - - assert.ok( - deepEqual( - (function () { return arguments })(4, 5, 6), - (function () { return arguments })(4, 5, 6) - ), - 'arguments should equal' - ); -}; - -exports.deepUn = function () { - assert.ok(!deepEqual({ a : 1, b : 2 }, undefined)); - assert.ok(!deepEqual({ a : 1, b : 2 }, {})); - assert.ok(!deepEqual(undefined, { a : 1, b : 2 })); - assert.ok(!deepEqual({}, { a : 1, b : 2 })); - assert.ok(deepEqual(undefined, undefined)); - assert.ok(deepEqual(null, null)); - assert.ok(!deepEqual(undefined, null)); -}; - -exports.deepLevels = function () { - var xs = [ 1, 2, [ 3, 4, [ 5, 6 ] ] ]; - assert.ok(!deepEqual(xs, [])); -}; diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/instance.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/instance.js deleted file mode 100644 index 8d73525..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/instance.js +++ /dev/null @@ -1,17 +0,0 @@ -var assert = require('assert'); -var Traverse = require('../'); -var EventEmitter = require('events').EventEmitter; - -exports['check instanceof on node elems'] = function () { - - var counts = { emitter : 0 }; - - Traverse([ new EventEmitter, 3, 4, { ev : new EventEmitter }]) - .forEach(function (node) { - if (node instanceof EventEmitter) counts.emitter ++; - }) - ; - - assert.equal(counts.emitter, 2); -}; - diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/interface.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/interface.js deleted file mode 100644 index fce5bf9..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/interface.js +++ /dev/null @@ -1,42 +0,0 @@ -var assert = require('assert'); -var Traverse = require('../'); - -exports['interface map'] = function () { - var obj = { a : [ 5,6,7 ], b : { c : [8] } }; - - assert.deepEqual( - Traverse.paths(obj) - .sort() - .map(function (path) { return path.join('/') }) - .slice(1) - .join(' ') - , - 'a a/0 a/1 a/2 b b/c b/c/0' - ); - - assert.deepEqual( - Traverse.nodes(obj), - [ - { a: [ 5, 6, 7 ], b: { c: [ 8 ] } }, - [ 5, 6, 7 ], 5, 6, 7, - { c: [ 8 ] }, [ 8 ], 8 - ] - ); - - assert.deepEqual( - Traverse.map(obj, function (node) { - if (typeof node == 'number') { - return node + 1000; - } - else if (Array.isArray(node)) { - return node.join(' '); - } - }), - { a: '5 6 7', b: { c: '8' } } - ); - - var nodes = 0; - Traverse.forEach(obj, function (node) { nodes ++ }); - assert.deepEqual(nodes, 8); -}; - diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/json.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/json.js deleted file mode 100644 index 0a04529..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/json.js +++ /dev/null @@ -1,47 +0,0 @@ -var assert = require('assert'); -var Traverse = require('../'); - -exports['json test'] = function () { - var id = 54; - var callbacks = {}; - var obj = { moo : function () {}, foo : [2,3,4, function () {}] }; - - var scrubbed = Traverse(obj).map(function (x) { - if (typeof x === 'function') { - callbacks[id] = { id : id, f : x, path : this.path }; - this.update('[Function]'); - id++; - } - }); - - assert.equal( - scrubbed.moo, '[Function]', - 'obj.moo replaced with "[Function]"' - ); - - assert.equal( - scrubbed.foo[3], '[Function]', - 'obj.foo[3] replaced with "[Function]"' - ); - - assert.deepEqual(scrubbed, { - moo : '[Function]', - foo : [ 2, 3, 4, "[Function]" ] - }, 'Full JSON string matches'); - - assert.deepEqual( - typeof obj.moo, 'function', - 'Original obj.moo still a function' - ); - - assert.deepEqual( - typeof obj.foo[3], 'function', - 'Original obj.foo[3] still a function' - ); - - assert.deepEqual(callbacks, { - 54: { id: 54, f : obj.moo, path: [ 'moo' ] }, - 55: { id: 55, f : obj.foo[3], path: [ 'foo', '3' ] }, - }, 'Check the generated callbacks list'); -}; - diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/keys.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/keys.js deleted file mode 100644 index 7ecd545..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/keys.js +++ /dev/null @@ -1,29 +0,0 @@ -var assert = require('assert'); -var Traverse = require('../'); - -exports['sort test'] = function () { - var acc = []; - Traverse({ - a: 30, - b: 22, - id: 9 - }).forEach(function (node) { - if ((! Array.isArray(node)) && typeof node === 'object') { - this.before(function(node) { - this.keys = Object.keys(node); - this.keys.sort(function(a, b) { - a = [a === "id" ? 0 : 1, a]; - b = [b === "id" ? 0 : 1, b]; - return a < b ? -1 : a > b ? 1 : 0; - }); - }); - } - if (this.isLeaf) acc.push(node); - }); - - assert.equal( - acc.join(' '), - '9 30 22', - 'Traversal in a custom order' - ); -}; diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/leaves.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/leaves.js deleted file mode 100644 index e520b72..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/leaves.js +++ /dev/null @@ -1,21 +0,0 @@ -var assert = require('assert'); -var Traverse = require('../'); - -exports['leaves test'] = function () { - var acc = []; - Traverse({ - a : [1,2,3], - b : 4, - c : [5,6], - d : { e : [7,8], f : 9 } - }).forEach(function (x) { - if (this.isLeaf) acc.push(x); - }); - - assert.equal( - acc.join(' '), - '1 2 3 4 5 6 7 8 9', - 'Traversal in the right(?) order' - ); -}; - diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/lib/deep_equal.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/lib/deep_equal.js deleted file mode 100644 index 4fa07bb..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/lib/deep_equal.js +++ /dev/null @@ -1,92 +0,0 @@ -var traverse = require('../../'); - -module.exports = function (a, b) { - if (arguments.length !== 2) { - throw new Error( - 'deepEqual requires exactly two objects to compare against' - ); - } - - var equal = true; - var node = b; - - traverse(a).forEach(function (y) { - var notEqual = (function () { - equal = false; - //this.stop(); - return undefined; - }).bind(this); - - //if (node === undefined || node === null) return notEqual(); - - if (!this.isRoot) { - /* - if (!Object.hasOwnProperty.call(node, this.key)) { - return notEqual(); - } - */ - if (typeof node !== 'object') return notEqual(); - node = node[this.key]; - } - - var x = node; - - this.post(function () { - node = x; - }); - - var toS = function (o) { - return Object.prototype.toString.call(o); - }; - - if (this.circular) { - if (traverse(b).get(this.circular.path) !== x) notEqual(); - } - else if (typeof x !== typeof y) { - notEqual(); - } - else if (x === null || y === null || x === undefined || y === undefined) { - if (x !== y) notEqual(); - } - else if (x.__proto__ !== y.__proto__) { - notEqual(); - } - else if (x === y) { - // nop - } - else if (typeof x === 'function') { - if (x instanceof RegExp) { - // both regexps on account of the __proto__ check - if (x.toString() != y.toString()) notEqual(); - } - else if (x !== y) notEqual(); - } - else if (typeof x === 'object') { - if (toS(y) === '[object Arguments]' - || toS(x) === '[object Arguments]') { - if (toS(x) !== toS(y)) { - notEqual(); - } - } - else if (x instanceof Date || y instanceof Date) { - if (!(x instanceof Date) || !(y instanceof Date) - || x.getTime() !== y.getTime()) { - notEqual(); - } - } - else { - var kx = Object.keys(x); - var ky = Object.keys(y); - if (kx.length !== ky.length) return notEqual(); - for (var i = 0; i < kx.length; i++) { - var k = kx[i]; - if (!Object.hasOwnProperty.call(y, k)) { - notEqual(); - } - } - } - } - }); - - return equal; -}; diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/mutability.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/mutability.js deleted file mode 100644 index 2236f56..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/mutability.js +++ /dev/null @@ -1,252 +0,0 @@ -var assert = require('assert'); -var Traverse = require('../'); -var deepEqual = require('./lib/deep_equal'); - -exports.mutate = function () { - var obj = { a : 1, b : 2, c : [ 3, 4 ] }; - var res = Traverse(obj).forEach(function (x) { - if (typeof x === 'number' && x % 2 === 0) { - this.update(x * 10); - } - }); - assert.deepEqual(obj, res); - assert.deepEqual(obj, { a : 1, b : 20, c : [ 3, 40 ] }); -}; - -exports.mutateT = function () { - var obj = { a : 1, b : 2, c : [ 3, 4 ] }; - var res = Traverse.forEach(obj, function (x) { - if (typeof x === 'number' && x % 2 === 0) { - this.update(x * 10); - } - }); - assert.deepEqual(obj, res); - assert.deepEqual(obj, { a : 1, b : 20, c : [ 3, 40 ] }); -}; - -exports.map = function () { - var obj = { a : 1, b : 2, c : [ 3, 4 ] }; - var res = Traverse(obj).map(function (x) { - if (typeof x === 'number' && x % 2 === 0) { - this.update(x * 10); - } - }); - assert.deepEqual(obj, { a : 1, b : 2, c : [ 3, 4 ] }); - assert.deepEqual(res, { a : 1, b : 20, c : [ 3, 40 ] }); -}; - -exports.mapT = function () { - var obj = { a : 1, b : 2, c : [ 3, 4 ] }; - var res = Traverse.map(obj, function (x) { - if (typeof x === 'number' && x % 2 === 0) { - this.update(x * 10); - } - }); - assert.deepEqual(obj, { a : 1, b : 2, c : [ 3, 4 ] }); - assert.deepEqual(res, { a : 1, b : 20, c : [ 3, 40 ] }); -}; - -exports.clone = function () { - var obj = { a : 1, b : 2, c : [ 3, 4 ] }; - var res = Traverse(obj).clone(); - assert.deepEqual(obj, res); - assert.ok(obj !== res); - obj.a ++; - assert.deepEqual(res.a, 1); - obj.c.push(5); - assert.deepEqual(res.c, [ 3, 4 ]); -}; - -exports.cloneT = function () { - var obj = { a : 1, b : 2, c : [ 3, 4 ] }; - var res = Traverse.clone(obj); - assert.deepEqual(obj, res); - assert.ok(obj !== res); - obj.a ++; - assert.deepEqual(res.a, 1); - obj.c.push(5); - assert.deepEqual(res.c, [ 3, 4 ]); -}; - -exports.reduce = function () { - var obj = { a : 1, b : 2, c : [ 3, 4 ] }; - var res = Traverse(obj).reduce(function (acc, x) { - if (this.isLeaf) acc.push(x); - return acc; - }, []); - assert.deepEqual(obj, { a : 1, b : 2, c : [ 3, 4 ] }); - assert.deepEqual(res, [ 1, 2, 3, 4 ]); -}; - -exports.reduceInit = function () { - var obj = { a : 1, b : 2, c : [ 3, 4 ] }; - var res = Traverse(obj).reduce(function (acc, x) { - if (this.isRoot) assert.fail('got root'); - return acc; - }); - assert.deepEqual(obj, { a : 1, b : 2, c : [ 3, 4 ] }); - assert.deepEqual(res, obj); -}; - -exports.remove = function () { - var obj = { a : 1, b : 2, c : [ 3, 4 ] }; - Traverse(obj).forEach(function (x) { - if (this.isLeaf && x % 2 == 0) this.remove(); - }); - - assert.deepEqual(obj, { a : 1, c : [ 3 ] }); -}; - -exports.removeNoStop = function() { - var obj = { a : 1, b : 2, c : { d: 3, e: 4 }, f: 5 }; - - var keys = []; - Traverse(obj).forEach(function (x) { - keys.push(this.key) - if (this.key == 'c') this.remove(); - }); - - assert.deepEqual(keys, [undefined, 'a', 'b', 'c', 'd', 'e', 'f']) -} - -exports.removeStop = function() { - var obj = { a : 1, b : 2, c : { d: 3, e: 4 }, f: 5 }; - - var keys = []; - Traverse(obj).forEach(function (x) { - keys.push(this.key) - if (this.key == 'c') this.remove(true); - }); - - assert.deepEqual(keys, [undefined, 'a', 'b', 'c', 'f']) -} - -exports.removeMap = function () { - var obj = { a : 1, b : 2, c : [ 3, 4 ] }; - var res = Traverse(obj).map(function (x) { - if (this.isLeaf && x % 2 == 0) this.remove(); - }); - - assert.deepEqual(obj, { a : 1, b : 2, c : [ 3, 4 ] }); - assert.deepEqual(res, { a : 1, c : [ 3 ] }); -}; - -exports.delete = function () { - var obj = { a : 1, b : 2, c : [ 3, 4 ] }; - Traverse(obj).forEach(function (x) { - if (this.isLeaf && x % 2 == 0) this.delete(); - }); - - assert.ok(!deepEqual( - obj, { a : 1, c : [ 3, undefined ] } - )); - - assert.ok(deepEqual( - obj, { a : 1, c : [ 3 ] } - )); - - assert.ok(!deepEqual( - obj, { a : 1, c : [ 3, null ] } - )); -}; - -exports.deleteNoStop = function() { - var obj = { a : 1, b : 2, c : { d: 3, e: 4 } }; - - var keys = []; - Traverse(obj).forEach(function (x) { - keys.push(this.key) - if (this.key == 'c') this.delete(); - }); - - assert.deepEqual(keys, [undefined, 'a', 'b', 'c', 'd', 'e']) -} - -exports.deleteStop = function() { - var obj = { a : 1, b : 2, c : { d: 3, e: 4 } }; - - var keys = []; - Traverse(obj).forEach(function (x) { - keys.push(this.key) - if (this.key == 'c') this.delete(true); - }); - - assert.deepEqual(keys, [undefined, 'a', 'b', 'c']) -} - -exports.deleteRedux = function () { - var obj = { a : 1, b : 2, c : [ 3, 4, 5 ] }; - Traverse(obj).forEach(function (x) { - if (this.isLeaf && x % 2 == 0) this.delete(); - }); - - assert.ok(!deepEqual( - obj, { a : 1, c : [ 3, undefined, 5 ] } - )); - - assert.ok(deepEqual( - obj, { a : 1, c : [ 3 ,, 5 ] } - )); - - assert.ok(!deepEqual( - obj, { a : 1, c : [ 3, null, 5 ] } - )); - - assert.ok(!deepEqual( - obj, { a : 1, c : [ 3, 5 ] } - )); -}; - -exports.deleteMap = function () { - var obj = { a : 1, b : 2, c : [ 3, 4 ] }; - var res = Traverse(obj).map(function (x) { - if (this.isLeaf && x % 2 == 0) this.delete(); - }); - - assert.ok(deepEqual( - obj, - { a : 1, b : 2, c : [ 3, 4 ] } - )); - - var xs = [ 3, 4 ]; - delete xs[1]; - - assert.ok(deepEqual( - res, { a : 1, c : xs } - )); - - assert.ok(deepEqual( - res, { a : 1, c : [ 3, ] } - )); - - assert.ok(deepEqual( - res, { a : 1, c : [ 3 ] } - )); -}; - -exports.deleteMapRedux = function () { - var obj = { a : 1, b : 2, c : [ 3, 4, 5 ] }; - var res = Traverse(obj).map(function (x) { - if (this.isLeaf && x % 2 == 0) this.delete(); - }); - - assert.ok(deepEqual( - obj, - { a : 1, b : 2, c : [ 3, 4, 5 ] } - )); - - var xs = [ 3, 4, 5 ]; - delete xs[1]; - - assert.ok(deepEqual( - res, { a : 1, c : xs } - )); - - assert.ok(!deepEqual( - res, { a : 1, c : [ 3, 5 ] } - )); - - assert.ok(deepEqual( - res, { a : 1, c : [ 3 ,, 5 ] } - )); -}; diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/negative.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/negative.js deleted file mode 100644 index f92dfb0..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/negative.js +++ /dev/null @@ -1,20 +0,0 @@ -var Traverse = require('../'); -var assert = require('assert'); - -exports['negative update test'] = function () { - var obj = [ 5, 6, -3, [ 7, 8, -2, 1 ], { f : 10, g : -13 } ]; - var fixed = Traverse.map(obj, function (x) { - if (x < 0) this.update(x + 128); - }); - - assert.deepEqual(fixed, - [ 5, 6, 125, [ 7, 8, 126, 1 ], { f: 10, g: 115 } ], - 'Negative values += 128' - ); - - assert.deepEqual(obj, - [ 5, 6, -3, [ 7, 8, -2, 1 ], { f: 10, g: -13 } ], - 'Original references not modified' - ); -} - diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/obj.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/obj.js deleted file mode 100644 index d46fd38..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/obj.js +++ /dev/null @@ -1,15 +0,0 @@ -var assert = require('assert'); -var Traverse = require('../'); - -exports['traverse an object with nested functions'] = function () { - var to = setTimeout(function () { - assert.fail('never ran'); - }, 1000); - - function Cons (x) { - clearTimeout(to); - assert.equal(x, 10); - }; - Traverse(new Cons(10)); -}; - diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/siblings.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/siblings.js deleted file mode 100644 index 99c0f1b..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/siblings.js +++ /dev/null @@ -1,35 +0,0 @@ -var assert = require('assert'); -var traverse = require('../'); - -exports.siblings = function () { - var obj = { a : 1, b : 2, c : [ 4, 5, 6 ] }; - - var res = traverse(obj).reduce(function (acc, x) { - var p = '/' + this.path.join('/'); - if (this.parent) { - acc[p] = { - siblings : this.parent.keys, - key : this.key, - index : this.parent.keys.indexOf(this.key) - }; - } - else { - acc[p] = { - siblings : [], - key : this.key, - index : -1 - } - } - return acc; - }, {}); - - assert.deepEqual(res, { - '/' : { siblings : [], key : undefined, index : -1 }, - '/a' : { siblings : [ 'a', 'b', 'c' ], key : 'a', index : 0 }, - '/b' : { siblings : [ 'a', 'b', 'c' ], key : 'b', index : 1 }, - '/c' : { siblings : [ 'a', 'b', 'c' ], key : 'c', index : 2 }, - '/c/0' : { siblings : [ '0', '1', '2' ], key : '0', index : 0 }, - '/c/1' : { siblings : [ '0', '1', '2' ], key : '1', index : 1 }, - '/c/2' : { siblings : [ '0', '1', '2' ], key : '2', index : 2 } - }); -}; diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/stop.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/stop.js deleted file mode 100644 index 3529847..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/stop.js +++ /dev/null @@ -1,41 +0,0 @@ -var assert = require('assert'); -var traverse = require('../'); - -exports.stop = function () { - var visits = 0; - traverse('abcdefghij'.split('')).forEach(function (node) { - if (typeof node === 'string') { - visits ++; - if (node === 'e') this.stop() - } - }); - - assert.equal(visits, 5); -}; - -exports.stopMap = function () { - var s = traverse('abcdefghij'.split('')).map(function (node) { - if (typeof node === 'string') { - if (node === 'e') this.stop() - return node.toUpperCase(); - } - }).join(''); - - assert.equal(s, 'ABCDEfghij'); -}; - -exports.stopReduce = function () { - var obj = { - a : [ 4, 5 ], - b : [ 6, [ 7, 8, 9 ] ] - }; - var xs = traverse(obj).reduce(function (acc, node) { - if (this.isLeaf) { - if (node === 7) this.stop(); - else acc.push(node) - } - return acc; - }, []); - - assert.deepEqual(xs, [ 4, 5, 6 ]); -}; diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/stringify.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/stringify.js deleted file mode 100644 index 932f5d3..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/stringify.js +++ /dev/null @@ -1,36 +0,0 @@ -var assert = require('assert'); -var Traverse = require('../'); - -exports.stringify = function () { - var obj = [ 5, 6, -3, [ 7, 8, -2, 1 ], { f : 10, g : -13 } ]; - - var s = ''; - Traverse(obj).forEach(function (node) { - if (Array.isArray(node)) { - this.before(function () { s += '[' }); - this.post(function (child) { - if (!child.isLast) s += ','; - }); - this.after(function () { s += ']' }); - } - else if (typeof node == 'object') { - this.before(function () { s += '{' }); - this.pre(function (x, key) { - s += '"' + key + '"' + ':'; - }); - this.post(function (child) { - if (!child.isLast) s += ','; - }); - this.after(function () { s += '}' }); - } - else if (typeof node == 'function') { - s += 'null'; - } - else { - s += node.toString(); - } - }); - - assert.equal(s, JSON.stringify(obj)); -} - diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/subexpr.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/subexpr.js deleted file mode 100644 index a217beb..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/subexpr.js +++ /dev/null @@ -1,34 +0,0 @@ -var traverse = require('../'); -var assert = require('assert'); - -exports.subexpr = function () { - var obj = [ 'a', 4, 'b', 5, 'c', 6 ]; - var r = traverse(obj).map(function (x) { - if (typeof x === 'number') { - this.update([ x - 0.1, x, x + 0.1 ], true); - } - }); - - assert.deepEqual(obj, [ 'a', 4, 'b', 5, 'c', 6 ]); - assert.deepEqual(r, [ - 'a', [ 3.9, 4, 4.1 ], - 'b', [ 4.9, 5, 5.1 ], - 'c', [ 5.9, 6, 6.1 ], - ]); -}; - -exports.block = function () { - var obj = [ [ 1 ], [ 2 ], [ 3 ] ]; - var r = traverse(obj).map(function (x) { - if (Array.isArray(x) && !this.isRoot) { - if (x[0] === 5) this.block() - else this.update([ [ x[0] + 1 ] ]) - } - }); - - assert.deepEqual(r, [ - [ [ [ [ [ 5 ] ] ] ] ], - [ [ [ [ 5 ] ] ] ], - [ [ [ 5 ] ] ], - ]); -}; diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/super_deep.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/super_deep.js deleted file mode 100644 index acac2fd..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/traverse/test/super_deep.js +++ /dev/null @@ -1,55 +0,0 @@ -var assert = require('assert'); -var traverse = require('../'); -var deepEqual = require('./lib/deep_equal'); - -exports.super_deep = function () { - var util = require('util'); - var a0 = make(); - var a1 = make(); - assert.ok(deepEqual(a0, a1)); - - a0.c.d.moo = true; - assert.ok(!deepEqual(a0, a1)); - - a1.c.d.moo = true; - assert.ok(deepEqual(a0, a1)); - - // TODO: this one - //a0.c.a = a1; - //assert.ok(!deepEqual(a0, a1)); -}; - -function make () { - var a = { self : 'a' }; - var b = { self : 'b' }; - var c = { self : 'c' }; - var d = { self : 'd' }; - var e = { self : 'e' }; - - a.a = a; - a.b = b; - a.c = c; - - b.a = a; - b.b = b; - b.c = c; - - c.a = a; - c.b = b; - c.c = c; - c.d = d; - - d.a = a; - d.b = b; - d.c = c; - d.d = d; - d.e = e; - - e.a = a; - e.b = b; - e.c = c; - e.d = d; - e.e = e; - - return a; -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/.npmignore b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/.npmignore deleted file mode 100644 index d97eaa0..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -.DS_Store -.tmp*~ -*.local.* -.pinf-* \ No newline at end of file diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/README.html b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/README.html deleted file mode 100644 index 8f5223f..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/README.html +++ /dev/null @@ -1,1026 +0,0 @@ - - - - -UglifyJS -- a JavaScript parser/compressor/beautifier - - - - - - - - - - - - -
- -

UglifyJS – a JavaScript parser/compressor/beautifier

- - - - -
-

1 UglifyJS — a JavaScript parser/compressor/beautifier

-
- - -

-This package implements a general-purpose JavaScript -parser/compressor/beautifier toolkit. It is developed on NodeJS, but it -should work on any JavaScript platform supporting the CommonJS module system -(and if your platform of choice doesn't support CommonJS, you can easily -implement it, or discard the exports.* lines from UglifyJS sources). -

-

-The tokenizer/parser generates an abstract syntax tree from JS code. You -can then traverse the AST to learn more about the code, or do various -manipulations on it. This part is implemented in parse-js.js and it's a -port to JavaScript of the excellent parse-js Common Lisp library from Marijn Haverbeke. -

-

-( See cl-uglify-js if you're looking for the Common Lisp version of -UglifyJS. ) -

-

-The second part of this package, implemented in process.js, inspects and -manipulates the AST generated by the parser to provide the following: -

-
    -
  • -ability to re-generate JavaScript code from the AST. Optionally -indented—you can use this if you want to “beautify” a program that has -been compressed, so that you can inspect the source. But you can also run -our code generator to print out an AST without any whitespace, so you -achieve compression as well. - -
  • -
  • -shorten variable names (usually to single characters). Our mangler will -analyze the code and generate proper variable names, depending on scope -and usage, and is smart enough to deal with globals defined elsewhere, or -with eval() calls or with{} statements. In short, if eval() or -with{} are used in some scope, then all variables in that scope and any -variables in the parent scopes will remain unmangled, and any references -to such variables remain unmangled as well. - -
  • -
  • -various small optimizations that may lead to faster code but certainly -lead to smaller code. Where possible, we do the following: - -
      -
    • -foo["bar"] ==> foo.bar - -
    • -
    • -remove block brackets {} - -
    • -
    • -join consecutive var declarations: -var a = 10; var b = 20; ==> var a=10,b=20; - -
    • -
    • -resolve simple constant expressions: 1 +2 * 3 ==> 7. We only do the -replacement if the result occupies less bytes; for example 1/3 would -translate to 0.333333333333, so in this case we don't replace it. - -
    • -
    • -consecutive statements in blocks are merged into a sequence; in many -cases, this leaves blocks with a single statement, so then we can remove -the block brackets. - -
    • -
    • -various optimizations for IF statements: - -
        -
      • -if (foo) bar(); else baz(); ==> foo?bar():baz(); -
      • -
      • -if (!foo) bar(); else baz(); ==> foo?baz():bar(); -
      • -
      • -if (foo) bar(); ==> foo&&bar(); -
      • -
      • -if (!foo) bar(); ==> foo||bar(); -
      • -
      • -if (foo) return bar(); else return baz(); ==> return foo?bar():baz(); -
      • -
      • -if (foo) return bar(); else something(); ==> {if(foo)return bar();something()} - -
      • -
      -
    • -
    • -remove some unreachable code and warn about it (code that follows a -return, throw, break or continue statement, except -function/variable declarations). - -
    • -
    • -act a limited version of a pre-processor (c.f. the pre-processor of -C/C++) to allow you to safely replace selected global symbols with -specified values. When combined with the optimisations above this can -make UglifyJS operate slightly more like a compilation process, in -that when certain symbols are replaced by constant values, entire code -blocks may be optimised away as unreachable. -
    • -
    -
  • -
- - - -
- -
-

1.1 Unsafe transformations

-
- - -

-The following transformations can in theory break code, although they're -probably safe in most practical cases. To enable them you need to pass the ---unsafe flag. -

- -
- -
-

1.1.1 Calls involving the global Array constructor

-
- - -

-The following transformations occur: -

- - - -
new Array(1, 2, 3, 4)  => [1,2,3,4]
-Array(a, b, c)         => [a,b,c]
-new Array(5)           => Array(5)
-new Array(a)           => Array(a)
-
- - - -

-These are all safe if the Array name isn't redefined. JavaScript does allow -one to globally redefine Array (and pretty much everything, in fact) but I -personally don't see why would anyone do that. -

-

-UglifyJS does handle the case where Array is redefined locally, or even -globally but with a function or var declaration. Therefore, in the -following cases UglifyJS doesn't touch calls or instantiations of Array: -

- - - -
// case 1.  globally declared variable
-  var Array;
-  new Array(1, 2, 3);
-  Array(a, b);
-
-  // or (can be declared later)
-  new Array(1, 2, 3);
-  var Array;
-
-  // or (can be a function)
-  new Array(1, 2, 3);
-  function Array() { ... }
-
-// case 2.  declared in a function
-  (function(){
-    a = new Array(1, 2, 3);
-    b = Array(5, 6);
-    var Array;
-  })();
-
-  // or
-  (function(Array){
-    return Array(5, 6, 7);
-  })();
-
-  // or
-  (function(){
-    return new Array(1, 2, 3, 4);
-    function Array() { ... }
-  })();
-
-  // etc.
-
- - - -
- -
- -
-

1.1.2 obj.toString() ==> obj+“”

-
- - -
-
- -
- -
-

1.2 Install (NPM)

-
- - -

-UglifyJS is now available through NPM — npm install uglify-js should do -the job. -

-
- -
- -
-

1.3 Install latest code from GitHub

-
- - - - - -
## clone the repository
-mkdir -p /where/you/wanna/put/it
-cd /where/you/wanna/put/it
-git clone git://github.com/mishoo/UglifyJS.git
-
-## make the module available to Node
-mkdir -p ~/.node_libraries/
-cd ~/.node_libraries/
-ln -s /where/you/wanna/put/it/UglifyJS/uglify-js.js
-
-## and if you want the CLI script too:
-mkdir -p ~/bin
-cd ~/bin
-ln -s /where/you/wanna/put/it/UglifyJS/bin/uglifyjs
-  # (then add ~/bin to your $PATH if it's not there already)
-
- - - -
- -
- -
-

1.4 Usage

-
- - -

-There is a command-line tool that exposes the functionality of this library -for your shell-scripting needs: -

- - - -
uglifyjs [ options... ] [ filename ]
-
- - - -

-filename should be the last argument and should name the file from which -to read the JavaScript code. If you don't specify it, it will read code -from STDIN. -

-

-Supported options: -

-
    -
  • --b or --beautify — output indented code; when passed, additional -options control the beautifier: - -
      -
    • --i N or --indent N — indentation level (number of spaces) - -
    • -
    • --q or --quote-keys — quote keys in literal objects (by default, -only keys that cannot be identifier names will be quotes). - -
    • -
    -
  • -
  • ---ascii — pass this argument to encode non-ASCII characters as -\uXXXX sequences. By default UglifyJS won't bother to do it and will -output Unicode characters instead. (the output is always encoded in UTF8, -but if you pass this option you'll only get ASCII). - -
  • -
  • --nm or --no-mangle — don't mangle variable names - -
  • -
  • --ns or --no-squeeze — don't call ast_squeeze() (which does various -optimizations that result in smaller, less readable code). - -
  • -
  • --mt or --mangle-toplevel — mangle names in the toplevel scope too -(by default we don't do this). - -
  • -
  • ---no-seqs — when ast_squeeze() is called (thus, unless you pass ---no-squeeze) it will reduce consecutive statements in blocks into a -sequence. For example, "a = 10; b = 20; foo();" will be written as -"a=10,b=20,foo();". In various occasions, this allows us to discard the -block brackets (since the block becomes a single statement). This is ON -by default because it seems safe and saves a few hundred bytes on some -libs that I tested it on, but pass --no-seqs to disable it. - -
  • -
  • ---no-dead-code — by default, UglifyJS will remove code that is -obviously unreachable (code that follows a return, throw, break or -continue statement and is not a function/variable declaration). Pass -this option to disable this optimization. - -
  • -
  • --nc or --no-copyright — by default, uglifyjs will keep the initial -comment tokens in the generated code (assumed to be copyright information -etc.). If you pass this it will discard it. - -
  • -
  • --o filename or --output filename — put the result in filename. If -this isn't given, the result goes to standard output (or see next one). - -
  • -
  • ---overwrite — if the code is read from a file (not from STDIN) and you -pass --overwrite then the output will be written in the same file. - -
  • -
  • ---ast — pass this if you want to get the Abstract Syntax Tree instead -of JavaScript as output. Useful for debugging or learning more about the -internals. - -
  • -
  • --v or --verbose — output some notes on STDERR (for now just how long -each operation takes). - -
  • -
  • --d SYMBOL[=VALUE] or --define SYMBOL[=VALUE] — will replace -all instances of the specified symbol where used as an identifier -(except where symbol has properly declared by a var declaration or -use as function parameter or similar) with the specified value. This -argument may be specified multiple times to define multiple -symbols - if no value is specified the symbol will be replaced with -the value true, or you can specify a numeric value (such as -1024), a quoted string value (such as ="object"= or -='https://github.com'), or the name of another symbol or keyword (such as =null or document). -This allows you, for example, to assign meaningful names to key -constant values but discard the symbolic names in the uglified -version for brevity/efficiency, or when used wth care, allows -UglifyJS to operate as a form of conditional compilation -whereby defining appropriate values may, by dint of the constant -folding and dead code removal features above, remove entire -superfluous code blocks (e.g. completely remove instrumentation or -trace code for production use). -Where string values are being defined, the handling of quotes are -likely to be subject to the specifics of your command shell -environment, so you may need to experiment with quoting styles -depending on your platform, or you may find the option ---define-from-module more suitable for use. - -
  • -
  • --define-from-module SOMEMODULE — will load the named module (as -per the NodeJS require() function) and iterate all the exported -properties of the module defining them as symbol names to be defined -(as if by the --define option) per the name of each property -(i.e. without the module name prefix) and given the value of the -property. This is a much easier way to handle and document groups of -symbols to be defined rather than a large number of --define -options. - -
  • -
  • ---unsafe — enable other additional optimizations that are known to be -unsafe in some contrived situations, but could still be generally useful. -For now only these: - -
      -
    • -foo.toString() ==> foo+"" -
    • -
    • -new Array(x,…) ==> [x,…] -
    • -
    • -new Array(x) ==> Array(x) - -
    • -
    -
  • -
  • ---max-line-len (default 32K characters) — add a newline after around -32K characters. I've seen both FF and Chrome croak when all the code was -on a single line of around 670K. Pass –max-line-len 0 to disable this -safety feature. - -
  • -
  • ---reserved-names — some libraries rely on certain names to be used, as -pointed out in issue #92 and #81, so this option allow you to exclude such -names from the mangler. For example, to keep names require and $super -intact you'd specify –reserved-names "require,$super". - -
  • -
  • ---inline-script – when you want to include the output literally in an -HTML <script> tag you can use this option to prevent </script from -showing up in the output. - -
  • -
  • ---lift-vars – when you pass this, UglifyJS will apply the following -transformations (see the notes in API, ast_lift_variables): - -
      -
    • -put all var declarations at the start of the scope -
    • -
    • -make sure a variable is declared only once -
    • -
    • -discard unused function arguments -
    • -
    • -discard unused inner (named) functions -
    • -
    • -finally, try to merge assignments into that one var declaration, if -possible. -
    • -
    -
  • -
- - - -
- -
-

1.4.1 API

-
- - -

-To use the library from JavaScript, you'd do the following (example for -NodeJS): -

- - - -
var jsp = require("uglify-js").parser;
-var pro = require("uglify-js").uglify;
-
-var orig_code = "... JS code here";
-var ast = jsp.parse(orig_code); // parse code and get the initial AST
-ast = pro.ast_mangle(ast); // get a new AST with mangled names
-ast = pro.ast_squeeze(ast); // get an AST with compression optimizations
-var final_code = pro.gen_code(ast); // compressed code here
-
- - - -

-The above performs the full compression that is possible right now. As you -can see, there are a sequence of steps which you can apply. For example if -you want compressed output but for some reason you don't want to mangle -variable names, you would simply skip the line that calls -pro.ast_mangle(ast). -

-

-Some of these functions take optional arguments. Here's a description: -

-
    -
  • -jsp.parse(code, strict_semicolons) – parses JS code and returns an AST. -strict_semicolons is optional and defaults to false. If you pass -true then the parser will throw an error when it expects a semicolon and -it doesn't find it. For most JS code you don't want that, but it's useful -if you want to strictly sanitize your code. - -
  • -
  • -pro.ast_lift_variables(ast) – merge and move var declarations to the -scop of the scope; discard unused function arguments or variables; discard -unused (named) inner functions. It also tries to merge assignments -following the var declaration into it. - -

    -If your code is very hand-optimized concerning var declarations, this -lifting variable declarations might actually increase size. For me it -helps out. On jQuery it adds 865 bytes (243 after gzip). YMMV. Also -note that (since it's not enabled by default) this operation isn't yet -heavily tested (please report if you find issues!). -

    -

    -Note that although it might increase the image size (on jQuery it gains -865 bytes, 243 after gzip) it's technically more correct: in certain -situations, dead code removal might drop variable declarations, which -would not happen if the variables are lifted in advance. -

    -

    -Here's an example of what it does: -

    -
  • -
- - - - -
function f(a, b, c, d, e) {
-    var q;
-    var w;
-    w = 10;
-    q = 20;
-    for (var i = 1; i < 10; ++i) {
-        var boo = foo(a);
-    }
-    for (var i = 0; i < 1; ++i) {
-        var boo = bar(c);
-    }
-    function foo(){ ... }
-    function bar(){ ... }
-    function baz(){ ... }
-}
-
-// transforms into ==>
-
-function f(a, b, c) {
-    var i, boo, w = 10, q = 20;
-    for (i = 1; i < 10; ++i) {
-        boo = foo(a);
-    }
-    for (i = 0; i < 1; ++i) {
-        boo = bar(c);
-    }
-    function foo() { ... }
-    function bar() { ... }
-}
-
- - - -
    -
  • -pro.ast_mangle(ast, options) – generates a new AST containing mangled -(compressed) variable and function names. It supports the following -options: - -
      -
    • -toplevel – mangle toplevel names (by default we don't touch them). -
    • -
    • -except – an array of names to exclude from compression. -
    • -
    • -defines – an object with properties named after symbols to -replace (see the --define option for the script) and the values -representing the AST replacement value. - -
    • -
    -
  • -
  • -pro.ast_squeeze(ast, options) – employs further optimizations designed -to reduce the size of the code that gen_code would generate from the -AST. Returns a new AST. options can be a hash; the supported options -are: - -
      -
    • -make_seqs (default true) which will cause consecutive statements in a -block to be merged using the "sequence" (comma) operator - -
    • -
    • -dead_code (default true) which will remove unreachable code. - -
    • -
    -
  • -
  • -pro.gen_code(ast, options) – generates JS code from the AST. By -default it's minified, but using the options argument you can get nicely -formatted output. options is, well, optional :-) and if you pass it it -must be an object and supports the following properties (below you can see -the default values): - -
      -
    • -beautify: false – pass true if you want indented output -
    • -
    • -indent_start: 0 (only applies when beautify is true) – initial -indentation in spaces -
    • -
    • -indent_level: 4 (only applies when beautify is true) -- -indentation level, in spaces (pass an even number) -
    • -
    • -quote_keys: false – if you pass true it will quote all keys in -literal objects -
    • -
    • -space_colon: false (only applies when beautify is true) – wether -to put a space before the colon in object literals -
    • -
    • -ascii_only: false – pass true if you want to encode non-ASCII -characters as \uXXXX. -
    • -
    • -inline_script: false – pass true to escape occurrences of -</script in strings -
    • -
    -
  • -
- - -
- -
- -
-

1.4.2 Beautifier shortcoming – no more comments

-
- - -

-The beautifier can be used as a general purpose indentation tool. It's -useful when you want to make a minified file readable. One limitation, -though, is that it discards all comments, so you don't really want to use it -to reformat your code, unless you don't have, or don't care about, comments. -

-

-In fact it's not the beautifier who discards comments — they are dumped at -the parsing stage, when we build the initial AST. Comments don't really -make sense in the AST, and while we could add nodes for them, it would be -inconvenient because we'd have to add special rules to ignore them at all -the processing stages. -

-
- -
- -
-

1.4.3 Use as a code pre-processor

-
- - -

-The --define option can be used, particularly when combined with the -constant folding logic, as a form of pre-processor to enable or remove -particular constructions, such as might be used for instrumenting -development code, or to produce variations aimed at a specific -platform. -

-

-The code below illustrates the way this can be done, and how the -symbol replacement is performed. -

- - - -
CLAUSE1: if (typeof DEVMODE === 'undefined') {
-    DEVMODE = true;
-}
-
-CLAUSE2: function init() {
-    if (DEVMODE) {
-        console.log("init() called");
-    }
-    ....
-    DEVMODE &amp;&amp; console.log("init() complete");
-}
-
-CLAUSE3: function reportDeviceStatus(device) {
-    var DEVMODE = device.mode, DEVNAME = device.name;
-    if (DEVMODE === 'open') {
-        ....
-    }
-}
-
- - - -

-When the above code is normally executed, the undeclared global -variable DEVMODE will be assigned the value true (see CLAUSE1) -and so the init() function (CLAUSE2) will write messages to the -console log when executed, but in CLAUSE3 a locally declared -variable will mask access to the DEVMODE global symbol. -

-

-If the above code is processed by UglifyJS with an argument of ---define DEVMODE=false then UglifyJS will replace DEVMODE with the -boolean constant value false within CLAUSE1 and CLAUSE2, but it -will leave CLAUSE3 as it stands because there DEVMODE resolves to -a validly declared variable. -

-

-And more so, the constant-folding features of UglifyJS will recognise -that the if condition of CLAUSE1 is thus always false, and so will -remove the test and body of CLAUSE1 altogether (including the -otherwise slightly problematical statement false = true; which it -will have formed by replacing DEVMODE in the body). Similarly, -within CLAUSE2 both calls to console.log() will be removed -altogether. -

-

-In this way you can mimic, to a limited degree, the functionality of -the C/C++ pre-processor to enable or completely remove blocks -depending on how certain symbols are defined - perhaps using UglifyJS -to generate different versions of source aimed at different -environments -

-

-It is recommmended (but not made mandatory) that symbols designed for -this purpose are given names consisting of UPPER_CASE_LETTERS to -distinguish them from other (normal) symbols and avoid the sort of -clash that CLAUSE3 above illustrates. -

-
-
- -
- -
-

1.5 Compression – how good is it?

-
- - -

-Here are updated statistics. (I also updated my Google Closure and YUI -installations). -

-

-We're still a lot better than YUI in terms of compression, though slightly -slower. We're still a lot faster than Closure, and compression after gzip -is comparable. -

- - -- - - - - - - - - - -
FileUglifyJSUglifyJS+gzipClosureClosure+gzipYUIYUI+gzip
jquery-1.6.2.js91001 (0:01.59)3189690678 (0:07.40)31979101527 (0:01.82)34646
paper.js142023 (0:01.65)43334134301 (0:07.42)42495173383 (0:01.58)48785
prototype.js88544 (0:01.09)2668086955 (0:06.97)2632692130 (0:00.79)28624
thelib-full.js (DynarchLIB)251939 (0:02.55)72535249911 (0:09.05)72696258869 (0:01.94)76584
- - -
- -
- -
-

1.6 Bugs?

-
- - -

-Unfortunately, for the time being there is no automated test suite. But I -ran the compressor manually on non-trivial code, and then I tested that the -generated code works as expected. A few hundred times. -

-

-DynarchLIB was started in times when there was no good JS minifier. -Therefore I was quite religious about trying to write short code manually, -and as such DL contains a lot of syntactic hacks1 such as “foo == bar ? a -= 10 : b = 20”, though the more readable version would clearly be to use -“if/else”. -

-

-Since the parser/compressor runs fine on DL and jQuery, I'm quite confident -that it's solid enough for production use. If you can identify any bugs, -I'd love to hear about them (use the Google Group or email me directly). -

-
- -
- -
-

1.7 Links

-
- - - - - -
- -
- -
-

1.8 License

-
- - -

-UglifyJS is released under the BSD license: -

- - - -
Copyright 2010 (c) Mihai Bazon <mihai.bazon@gmail.com>
-Based on parse-js (http://marijn.haverbeke.nl/parse-js/).
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-    * Redistributions of source code must retain the above
-      copyright notice, this list of conditions and the following
-      disclaimer.
-
-    * Redistributions in binary form must reproduce the above
-      copyright notice, this list of conditions and the following
-      disclaimer in the documentation and/or other materials
-      provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
-TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
-THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
- - - - -
-
-
-
-

Footnotes:

-
-

1 I even reported a few bugs and suggested some fixes in the original -parse-js library, and Marijn pushed fixes literally in minutes. -

-
-
-
-

Author: Mihai Bazon -

-

Date: 2011-08-29 19:17:55 EEST

-

HTML generated by org-mode 7.01trans in emacs 23

-
-
- - diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/README.org b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/README.org deleted file mode 100644 index 50c9c27..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/README.org +++ /dev/null @@ -1,571 +0,0 @@ -#+TITLE: UglifyJS -- a JavaScript parser/compressor/beautifier -#+KEYWORDS: javascript, js, parser, compiler, compressor, mangle, minify, minifier -#+DESCRIPTION: a JavaScript parser/compressor/beautifier in JavaScript -#+STYLE: -#+AUTHOR: Mihai Bazon -#+EMAIL: mihai.bazon@gmail.com - -* UglifyJS --- a JavaScript parser/compressor/beautifier - -This package implements a general-purpose JavaScript -parser/compressor/beautifier toolkit. It is developed on [[http://nodejs.org/][NodeJS]], but it -should work on any JavaScript platform supporting the CommonJS module system -(and if your platform of choice doesn't support CommonJS, you can easily -implement it, or discard the =exports.*= lines from UglifyJS sources). - -The tokenizer/parser generates an abstract syntax tree from JS code. You -can then traverse the AST to learn more about the code, or do various -manipulations on it. This part is implemented in [[../lib/parse-js.js][parse-js.js]] and it's a -port to JavaScript of the excellent [[http://marijn.haverbeke.nl/parse-js/][parse-js]] Common Lisp library from [[http://marijn.haverbeke.nl/][Marijn -Haverbeke]]. - -( See [[http://github.com/mishoo/cl-uglify-js][cl-uglify-js]] if you're looking for the Common Lisp version of -UglifyJS. ) - -The second part of this package, implemented in [[../lib/process.js][process.js]], inspects and -manipulates the AST generated by the parser to provide the following: - -- ability to re-generate JavaScript code from the AST. Optionally - indented---you can use this if you want to “beautify” a program that has - been compressed, so that you can inspect the source. But you can also run - our code generator to print out an AST without any whitespace, so you - achieve compression as well. - -- shorten variable names (usually to single characters). Our mangler will - analyze the code and generate proper variable names, depending on scope - and usage, and is smart enough to deal with globals defined elsewhere, or - with =eval()= calls or =with{}= statements. In short, if =eval()= or - =with{}= are used in some scope, then all variables in that scope and any - variables in the parent scopes will remain unmangled, and any references - to such variables remain unmangled as well. - -- various small optimizations that may lead to faster code but certainly - lead to smaller code. Where possible, we do the following: - - - foo["bar"] ==> foo.bar - - - remove block brackets ={}= - - - join consecutive var declarations: - var a = 10; var b = 20; ==> var a=10,b=20; - - - resolve simple constant expressions: 1 +2 * 3 ==> 7. We only do the - replacement if the result occupies less bytes; for example 1/3 would - translate to 0.333333333333, so in this case we don't replace it. - - - consecutive statements in blocks are merged into a sequence; in many - cases, this leaves blocks with a single statement, so then we can remove - the block brackets. - - - various optimizations for IF statements: - - - if (foo) bar(); else baz(); ==> foo?bar():baz(); - - if (!foo) bar(); else baz(); ==> foo?baz():bar(); - - if (foo) bar(); ==> foo&&bar(); - - if (!foo) bar(); ==> foo||bar(); - - if (foo) return bar(); else return baz(); ==> return foo?bar():baz(); - - if (foo) return bar(); else something(); ==> {if(foo)return bar();something()} - - - remove some unreachable code and warn about it (code that follows a - =return=, =throw=, =break= or =continue= statement, except - function/variable declarations). - - - act a limited version of a pre-processor (c.f. the pre-processor of - C/C++) to allow you to safely replace selected global symbols with - specified values. When combined with the optimisations above this can - make UglifyJS operate slightly more like a compilation process, in - that when certain symbols are replaced by constant values, entire code - blocks may be optimised away as unreachable. - -** <> - -The following transformations can in theory break code, although they're -probably safe in most practical cases. To enable them you need to pass the -=--unsafe= flag. - -*** Calls involving the global Array constructor - -The following transformations occur: - -#+BEGIN_SRC js -new Array(1, 2, 3, 4) => [1,2,3,4] -Array(a, b, c) => [a,b,c] -new Array(5) => Array(5) -new Array(a) => Array(a) -#+END_SRC - -These are all safe if the Array name isn't redefined. JavaScript does allow -one to globally redefine Array (and pretty much everything, in fact) but I -personally don't see why would anyone do that. - -UglifyJS does handle the case where Array is redefined locally, or even -globally but with a =function= or =var= declaration. Therefore, in the -following cases UglifyJS *doesn't touch* calls or instantiations of Array: - -#+BEGIN_SRC js -// case 1. globally declared variable - var Array; - new Array(1, 2, 3); - Array(a, b); - - // or (can be declared later) - new Array(1, 2, 3); - var Array; - - // or (can be a function) - new Array(1, 2, 3); - function Array() { ... } - -// case 2. declared in a function - (function(){ - a = new Array(1, 2, 3); - b = Array(5, 6); - var Array; - })(); - - // or - (function(Array){ - return Array(5, 6, 7); - })(); - - // or - (function(){ - return new Array(1, 2, 3, 4); - function Array() { ... } - })(); - - // etc. -#+END_SRC - -*** =obj.toString()= ==> =obj+“”= - -** Install (NPM) - -UglifyJS is now available through NPM --- =npm install uglify-js= should do -the job. - -** Install latest code from GitHub - -#+BEGIN_SRC sh -## clone the repository -mkdir -p /where/you/wanna/put/it -cd /where/you/wanna/put/it -git clone git://github.com/mishoo/UglifyJS.git - -## make the module available to Node -mkdir -p ~/.node_libraries/ -cd ~/.node_libraries/ -ln -s /where/you/wanna/put/it/UglifyJS/uglify-js.js - -## and if you want the CLI script too: -mkdir -p ~/bin -cd ~/bin -ln -s /where/you/wanna/put/it/UglifyJS/bin/uglifyjs - # (then add ~/bin to your $PATH if it's not there already) -#+END_SRC - -** Usage - -There is a command-line tool that exposes the functionality of this library -for your shell-scripting needs: - -#+BEGIN_SRC sh -uglifyjs [ options... ] [ filename ] -#+END_SRC - -=filename= should be the last argument and should name the file from which -to read the JavaScript code. If you don't specify it, it will read code -from STDIN. - -Supported options: - -- =-b= or =--beautify= --- output indented code; when passed, additional - options control the beautifier: - - - =-i N= or =--indent N= --- indentation level (number of spaces) - - - =-q= or =--quote-keys= --- quote keys in literal objects (by default, - only keys that cannot be identifier names will be quotes). - -- =--ascii= --- pass this argument to encode non-ASCII characters as - =\uXXXX= sequences. By default UglifyJS won't bother to do it and will - output Unicode characters instead. (the output is always encoded in UTF8, - but if you pass this option you'll only get ASCII). - -- =-nm= or =--no-mangle= --- don't mangle variable names - -- =-ns= or =--no-squeeze= --- don't call =ast_squeeze()= (which does various - optimizations that result in smaller, less readable code). - -- =-mt= or =--mangle-toplevel= --- mangle names in the toplevel scope too - (by default we don't do this). - -- =--no-seqs= --- when =ast_squeeze()= is called (thus, unless you pass - =--no-squeeze=) it will reduce consecutive statements in blocks into a - sequence. For example, "a = 10; b = 20; foo();" will be written as - "a=10,b=20,foo();". In various occasions, this allows us to discard the - block brackets (since the block becomes a single statement). This is ON - by default because it seems safe and saves a few hundred bytes on some - libs that I tested it on, but pass =--no-seqs= to disable it. - -- =--no-dead-code= --- by default, UglifyJS will remove code that is - obviously unreachable (code that follows a =return=, =throw=, =break= or - =continue= statement and is not a function/variable declaration). Pass - this option to disable this optimization. - -- =-nc= or =--no-copyright= --- by default, =uglifyjs= will keep the initial - comment tokens in the generated code (assumed to be copyright information - etc.). If you pass this it will discard it. - -- =-o filename= or =--output filename= --- put the result in =filename=. If - this isn't given, the result goes to standard output (or see next one). - -- =--overwrite= --- if the code is read from a file (not from STDIN) and you - pass =--overwrite= then the output will be written in the same file. - -- =--ast= --- pass this if you want to get the Abstract Syntax Tree instead - of JavaScript as output. Useful for debugging or learning more about the - internals. - -- =-v= or =--verbose= --- output some notes on STDERR (for now just how long - each operation takes). - -- =-d SYMBOL[=VALUE]= or =--define SYMBOL[=VALUE]= --- will replace - all instances of the specified symbol where used as an identifier - (except where symbol has properly declared by a var declaration or - use as function parameter or similar) with the specified value. This - argument may be specified multiple times to define multiple - symbols - if no value is specified the symbol will be replaced with - the value =true=, or you can specify a numeric value (such as - =1024=), a quoted string value (such as ="object"= or - ='https://github.com'=), or the name of another symbol or keyword - (such as =null= or =document=). - This allows you, for example, to assign meaningful names to key - constant values but discard the symbolic names in the uglified - version for brevity/efficiency, or when used wth care, allows - UglifyJS to operate as a form of *conditional compilation* - whereby defining appropriate values may, by dint of the constant - folding and dead code removal features above, remove entire - superfluous code blocks (e.g. completely remove instrumentation or - trace code for production use). - Where string values are being defined, the handling of quotes are - likely to be subject to the specifics of your command shell - environment, so you may need to experiment with quoting styles - depending on your platform, or you may find the option - =--define-from-module= more suitable for use. - -- =-define-from-module SOMEMODULE= --- will load the named module (as - per the NodeJS =require()= function) and iterate all the exported - properties of the module defining them as symbol names to be defined - (as if by the =--define= option) per the name of each property - (i.e. without the module name prefix) and given the value of the - property. This is a much easier way to handle and document groups of - symbols to be defined rather than a large number of =--define= - options. - -- =--unsafe= --- enable other additional optimizations that are known to be - unsafe in some contrived situations, but could still be generally useful. - For now only these: - - - foo.toString() ==> foo+"" - - new Array(x,...) ==> [x,...] - - new Array(x) ==> Array(x) - -- =--max-line-len= (default 32K characters) --- add a newline after around - 32K characters. I've seen both FF and Chrome croak when all the code was - on a single line of around 670K. Pass --max-line-len 0 to disable this - safety feature. - -- =--reserved-names= --- some libraries rely on certain names to be used, as - pointed out in issue #92 and #81, so this option allow you to exclude such - names from the mangler. For example, to keep names =require= and =$super= - intact you'd specify --reserved-names "require,$super". - -- =--inline-script= -- when you want to include the output literally in an - HTML =\n\n\n\n
\n\n

UglifyJS – a JavaScript parser/compressor/beautifier

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

1 UglifyJS — a JavaScript parser/compressor/beautifier

\n
\n\n\n

\nThis package implements a general-purpose JavaScript\nparser/compressor/beautifier toolkit. It is developed on NodeJS, but it\nshould work on any JavaScript platform supporting the CommonJS module system\n(and if your platform of choice doesn't support CommonJS, you can easily\nimplement it, or discard the exports.* lines from UglifyJS sources).\n

\n

\nThe tokenizer/parser generates an abstract syntax tree from JS code. You\ncan then traverse the AST to learn more about the code, or do various\nmanipulations on it. This part is implemented in parse-js.js and it's a\nport to JavaScript of the excellent parse-js Common Lisp library from Marijn Haverbeke.\n

\n

\n( See cl-uglify-js if you're looking for the Common Lisp version of\nUglifyJS. )\n

\n

\nThe second part of this package, implemented in process.js, inspects and\nmanipulates the AST generated by the parser to provide the following:\n

\n
    \n
  • \nability to re-generate JavaScript code from the AST. Optionally\nindented—you can use this if you want to “beautify” a program that has\nbeen compressed, so that you can inspect the source. But you can also run\nour code generator to print out an AST without any whitespace, so you\nachieve compression as well.\n\n
  • \n
  • \nshorten variable names (usually to single characters). Our mangler will\nanalyze the code and generate proper variable names, depending on scope\nand usage, and is smart enough to deal with globals defined elsewhere, or\nwith eval() calls or with{} statements. In short, if eval() or\nwith{} are used in some scope, then all variables in that scope and any\nvariables in the parent scopes will remain unmangled, and any references\nto such variables remain unmangled as well.\n\n
  • \n
  • \nvarious small optimizations that may lead to faster code but certainly\nlead to smaller code. Where possible, we do the following:\n\n
      \n
    • \nfoo[\"bar\"] ==> foo.bar\n\n
    • \n
    • \nremove block brackets {}\n\n
    • \n
    • \njoin consecutive var declarations:\nvar a = 10; var b = 20; ==> var a=10,b=20;\n\n
    • \n
    • \nresolve simple constant expressions: 1 +2 * 3 ==> 7. We only do the\nreplacement if the result occupies less bytes; for example 1/3 would\ntranslate to 0.333333333333, so in this case we don't replace it.\n\n
    • \n
    • \nconsecutive statements in blocks are merged into a sequence; in many\ncases, this leaves blocks with a single statement, so then we can remove\nthe block brackets.\n\n
    • \n
    • \nvarious optimizations for IF statements:\n\n
        \n
      • \nif (foo) bar(); else baz(); ==> foo?bar():baz();\n
      • \n
      • \nif (!foo) bar(); else baz(); ==> foo?baz():bar();\n
      • \n
      • \nif (foo) bar(); ==> foo&&bar();\n
      • \n
      • \nif (!foo) bar(); ==> foo||bar();\n
      • \n
      • \nif (foo) return bar(); else return baz(); ==> return foo?bar():baz();\n
      • \n
      • \nif (foo) return bar(); else something(); ==> {if(foo)return bar();something()}\n\n
      • \n
      \n
    • \n
    • \nremove some unreachable code and warn about it (code that follows a\nreturn, throw, break or continue statement, except\nfunction/variable declarations).\n\n
    • \n
    • \nact a limited version of a pre-processor (c.f. the pre-processor of\nC/C++) to allow you to safely replace selected global symbols with\nspecified values. When combined with the optimisations above this can\nmake UglifyJS operate slightly more like a compilation process, in\nthat when certain symbols are replaced by constant values, entire code\nblocks may be optimised away as unreachable.\n
    • \n
    \n
  • \n
\n\n\n\n
\n\n
\n

1.1 Unsafe transformations

\n
\n\n\n

\nThe following transformations can in theory break code, although they're\nprobably safe in most practical cases. To enable them you need to pass the\n--unsafe flag.\n

\n\n
\n\n
\n

1.1.1 Calls involving the global Array constructor

\n
\n\n\n

\nThe following transformations occur:\n

\n\n\n\n
new Array(1, 2, 3, 4)  => [1,2,3,4]\nArray(a, b, c)         => [a,b,c]\nnew Array(5)           => Array(5)\nnew Array(a)           => Array(a)\n
\n\n\n\n

\nThese are all safe if the Array name isn't redefined. JavaScript does allow\none to globally redefine Array (and pretty much everything, in fact) but I\npersonally don't see why would anyone do that.\n

\n

\nUglifyJS does handle the case where Array is redefined locally, or even\nglobally but with a function or var declaration. Therefore, in the\nfollowing cases UglifyJS doesn't touch calls or instantiations of Array:\n

\n\n\n\n
// case 1.  globally declared variable\n  var Array;\n  new Array(1, 2, 3);\n  Array(a, b);\n\n  // or (can be declared later)\n  new Array(1, 2, 3);\n  var Array;\n\n  // or (can be a function)\n  new Array(1, 2, 3);\n  function Array() { ... }\n\n// case 2.  declared in a function\n  (function(){\n    a = new Array(1, 2, 3);\n    b = Array(5, 6);\n    var Array;\n  })();\n\n  // or\n  (function(Array){\n    return Array(5, 6, 7);\n  })();\n\n  // or\n  (function(){\n    return new Array(1, 2, 3, 4);\n    function Array() { ... }\n  })();\n\n  // etc.\n
\n\n\n\n
\n\n
\n\n
\n

1.1.2 obj.toString() ==> obj+“”

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

1.2 Install (NPM)

\n
\n\n\n

\nUglifyJS is now available through NPM — npm install uglify-js should do\nthe job.\n

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

1.3 Install latest code from GitHub

\n
\n\n\n\n\n\n
## clone the repository\nmkdir -p /where/you/wanna/put/it\ncd /where/you/wanna/put/it\ngit clone git://github.com/mishoo/UglifyJS.git\n\n## make the module available to Node\nmkdir -p ~/.node_libraries/\ncd ~/.node_libraries/\nln -s /where/you/wanna/put/it/UglifyJS/uglify-js.js\n\n## and if you want the CLI script too:\nmkdir -p ~/bin\ncd ~/bin\nln -s /where/you/wanna/put/it/UglifyJS/bin/uglifyjs\n  # (then add ~/bin to your $PATH if it's not there already)\n
\n\n\n\n
\n\n
\n\n
\n

1.4 Usage

\n
\n\n\n

\nThere is a command-line tool that exposes the functionality of this library\nfor your shell-scripting needs:\n

\n\n\n\n
uglifyjs [ options... ] [ filename ]\n
\n\n\n\n

\nfilename should be the last argument and should name the file from which\nto read the JavaScript code. If you don't specify it, it will read code\nfrom STDIN.\n

\n

\nSupported options:\n

\n
    \n
  • \n-b or --beautify — output indented code; when passed, additional\noptions control the beautifier:\n\n
      \n
    • \n-i N or --indent N — indentation level (number of spaces)\n\n
    • \n
    • \n-q or --quote-keys — quote keys in literal objects (by default,\nonly keys that cannot be identifier names will be quotes).\n\n
    • \n
    \n
  • \n
  • \n--ascii — pass this argument to encode non-ASCII characters as\n\\uXXXX sequences. By default UglifyJS won't bother to do it and will\noutput Unicode characters instead. (the output is always encoded in UTF8,\nbut if you pass this option you'll only get ASCII).\n\n
  • \n
  • \n-nm or --no-mangle — don't mangle variable names\n\n
  • \n
  • \n-ns or --no-squeeze — don't call ast_squeeze() (which does various\noptimizations that result in smaller, less readable code).\n\n
  • \n
  • \n-mt or --mangle-toplevel — mangle names in the toplevel scope too\n(by default we don't do this).\n\n
  • \n
  • \n--no-seqs — when ast_squeeze() is called (thus, unless you pass\n--no-squeeze) it will reduce consecutive statements in blocks into a\nsequence. For example, \"a = 10; b = 20; foo();\" will be written as\n\"a=10,b=20,foo();\". In various occasions, this allows us to discard the\nblock brackets (since the block becomes a single statement). This is ON\nby default because it seems safe and saves a few hundred bytes on some\nlibs that I tested it on, but pass --no-seqs to disable it.\n\n
  • \n
  • \n--no-dead-code — by default, UglifyJS will remove code that is\nobviously unreachable (code that follows a return, throw, break or\ncontinue statement and is not a function/variable declaration). Pass\nthis option to disable this optimization.\n\n
  • \n
  • \n-nc or --no-copyright — by default, uglifyjs will keep the initial\ncomment tokens in the generated code (assumed to be copyright information\netc.). If you pass this it will discard it.\n\n
  • \n
  • \n-o filename or --output filename — put the result in filename. If\nthis isn't given, the result goes to standard output (or see next one).\n\n
  • \n
  • \n--overwrite — if the code is read from a file (not from STDIN) and you\npass --overwrite then the output will be written in the same file.\n\n
  • \n
  • \n--ast — pass this if you want to get the Abstract Syntax Tree instead\nof JavaScript as output. Useful for debugging or learning more about the\ninternals.\n\n
  • \n
  • \n-v or --verbose — output some notes on STDERR (for now just how long\neach operation takes).\n\n
  • \n
  • \n-d SYMBOL[=VALUE] or --define SYMBOL[=VALUE] — will replace\nall instances of the specified symbol where used as an identifier\n(except where symbol has properly declared by a var declaration or\nuse as function parameter or similar) with the specified value. This\nargument may be specified multiple times to define multiple\nsymbols - if no value is specified the symbol will be replaced with\nthe value true, or you can specify a numeric value (such as\n1024), a quoted string value (such as =\"object\"= or\n='https://github.com'), or the name of another symbol or keyword (such as =null or document). \nThis allows you, for example, to assign meaningful names to key\nconstant values but discard the symbolic names in the uglified\nversion for brevity/efficiency, or when used wth care, allows\nUglifyJS to operate as a form of conditional compilation\nwhereby defining appropriate values may, by dint of the constant\nfolding and dead code removal features above, remove entire\nsuperfluous code blocks (e.g. completely remove instrumentation or\ntrace code for production use).\nWhere string values are being defined, the handling of quotes are\nlikely to be subject to the specifics of your command shell\nenvironment, so you may need to experiment with quoting styles\ndepending on your platform, or you may find the option\n--define-from-module more suitable for use.\n\n
  • \n
  • \n-define-from-module SOMEMODULE — will load the named module (as\nper the NodeJS require() function) and iterate all the exported\nproperties of the module defining them as symbol names to be defined\n(as if by the --define option) per the name of each property\n(i.e. without the module name prefix) and given the value of the\nproperty. This is a much easier way to handle and document groups of\nsymbols to be defined rather than a large number of --define\noptions.\n\n
  • \n
  • \n--unsafe — enable other additional optimizations that are known to be\nunsafe in some contrived situations, but could still be generally useful.\nFor now only these:\n\n
      \n
    • \nfoo.toString() ==> foo+\"\"\n
    • \n
    • \nnew Array(x,…) ==> [x,…]\n
    • \n
    • \nnew Array(x) ==> Array(x)\n\n
    • \n
    \n
  • \n
  • \n--max-line-len (default 32K characters) — add a newline after around\n32K characters. I've seen both FF and Chrome croak when all the code was\non a single line of around 670K. Pass –max-line-len 0 to disable this\nsafety feature.\n\n
  • \n
  • \n--reserved-names — some libraries rely on certain names to be used, as\npointed out in issue #92 and #81, so this option allow you to exclude such\nnames from the mangler. For example, to keep names require and $super\nintact you'd specify –reserved-names \"require,$super\".\n\n
  • \n
  • \n--inline-script – when you want to include the output literally in an\nHTML <script> tag you can use this option to prevent </script from\nshowing up in the output.\n\n
  • \n
  • \n--lift-vars – when you pass this, UglifyJS will apply the following\ntransformations (see the notes in API, ast_lift_variables):\n\n
      \n
    • \nput all var declarations at the start of the scope\n
    • \n
    • \nmake sure a variable is declared only once\n
    • \n
    • \ndiscard unused function arguments\n
    • \n
    • \ndiscard unused inner (named) functions\n
    • \n
    • \nfinally, try to merge assignments into that one var declaration, if\npossible.\n
    • \n
    \n
  • \n
\n\n\n\n
\n\n
\n

1.4.1 API

\n
\n\n\n

\nTo use the library from JavaScript, you'd do the following (example for\nNodeJS):\n

\n\n\n\n
var jsp = require(\"uglify-js\").parser;\nvar pro = require(\"uglify-js\").uglify;\n\nvar orig_code = \"... JS code here\";\nvar ast = jsp.parse(orig_code); // parse code and get the initial AST\nast = pro.ast_mangle(ast); // get a new AST with mangled names\nast = pro.ast_squeeze(ast); // get an AST with compression optimizations\nvar final_code = pro.gen_code(ast); // compressed code here\n
\n\n\n\n

\nThe above performs the full compression that is possible right now. As you\ncan see, there are a sequence of steps which you can apply. For example if\nyou want compressed output but for some reason you don't want to mangle\nvariable names, you would simply skip the line that calls\npro.ast_mangle(ast).\n

\n

\nSome of these functions take optional arguments. Here's a description:\n

\n
    \n
  • \njsp.parse(code, strict_semicolons) – parses JS code and returns an AST.\nstrict_semicolons is optional and defaults to false. If you pass\ntrue then the parser will throw an error when it expects a semicolon and\nit doesn't find it. For most JS code you don't want that, but it's useful\nif you want to strictly sanitize your code.\n\n
  • \n
  • \npro.ast_lift_variables(ast) – merge and move var declarations to the\nscop of the scope; discard unused function arguments or variables; discard\nunused (named) inner functions. It also tries to merge assignments\nfollowing the var declaration into it.\n\n

    \nIf your code is very hand-optimized concerning var declarations, this\nlifting variable declarations might actually increase size. For me it\nhelps out. On jQuery it adds 865 bytes (243 after gzip). YMMV. Also\nnote that (since it's not enabled by default) this operation isn't yet\nheavily tested (please report if you find issues!).\n

    \n

    \nNote that although it might increase the image size (on jQuery it gains\n865 bytes, 243 after gzip) it's technically more correct: in certain\nsituations, dead code removal might drop variable declarations, which\nwould not happen if the variables are lifted in advance.\n

    \n

    \nHere's an example of what it does:\n

    \n
  • \n
\n\n\n\n\n
function f(a, b, c, d, e) {\n    var q;\n    var w;\n    w = 10;\n    q = 20;\n    for (var i = 1; i < 10; ++i) {\n        var boo = foo(a);\n    }\n    for (var i = 0; i < 1; ++i) {\n        var boo = bar(c);\n    }\n    function foo(){ ... }\n    function bar(){ ... }\n    function baz(){ ... }\n}\n\n// transforms into ==>\n\nfunction f(a, b, c) {\n    var i, boo, w = 10, q = 20;\n    for (i = 1; i < 10; ++i) {\n        boo = foo(a);\n    }\n    for (i = 0; i < 1; ++i) {\n        boo = bar(c);\n    }\n    function foo() { ... }\n    function bar() { ... }\n}\n
\n\n\n\n
    \n
  • \npro.ast_mangle(ast, options) – generates a new AST containing mangled\n(compressed) variable and function names. It supports the following\noptions:\n\n
      \n
    • \ntoplevel – mangle toplevel names (by default we don't touch them).\n
    • \n
    • \nexcept – an array of names to exclude from compression.\n
    • \n
    • \ndefines – an object with properties named after symbols to\nreplace (see the --define option for the script) and the values\nrepresenting the AST replacement value.\n\n
    • \n
    \n
  • \n
  • \npro.ast_squeeze(ast, options) – employs further optimizations designed\nto reduce the size of the code that gen_code would generate from the\nAST. Returns a new AST. options can be a hash; the supported options\nare:\n\n
      \n
    • \nmake_seqs (default true) which will cause consecutive statements in a\nblock to be merged using the \"sequence\" (comma) operator\n\n
    • \n
    • \ndead_code (default true) which will remove unreachable code.\n\n
    • \n
    \n
  • \n
  • \npro.gen_code(ast, options) – generates JS code from the AST. By\ndefault it's minified, but using the options argument you can get nicely\nformatted output. options is, well, optional :-) and if you pass it it\nmust be an object and supports the following properties (below you can see\nthe default values):\n\n
      \n
    • \nbeautify: false – pass true if you want indented output\n
    • \n
    • \nindent_start: 0 (only applies when beautify is true) – initial\nindentation in spaces\n
    • \n
    • \nindent_level: 4 (only applies when beautify is true) --\nindentation level, in spaces (pass an even number)\n
    • \n
    • \nquote_keys: false – if you pass true it will quote all keys in\nliteral objects\n
    • \n
    • \nspace_colon: false (only applies when beautify is true) – wether\nto put a space before the colon in object literals\n
    • \n
    • \nascii_only: false – pass true if you want to encode non-ASCII\ncharacters as \\uXXXX.\n
    • \n
    • \ninline_script: false – pass true to escape occurrences of\n</script in strings\n
    • \n
    \n
  • \n
\n\n\n
\n\n
\n\n
\n

1.4.2 Beautifier shortcoming – no more comments

\n
\n\n\n

\nThe beautifier can be used as a general purpose indentation tool. It's\nuseful when you want to make a minified file readable. One limitation,\nthough, is that it discards all comments, so you don't really want to use it\nto reformat your code, unless you don't have, or don't care about, comments.\n

\n

\nIn fact it's not the beautifier who discards comments — they are dumped at\nthe parsing stage, when we build the initial AST. Comments don't really\nmake sense in the AST, and while we could add nodes for them, it would be\ninconvenient because we'd have to add special rules to ignore them at all\nthe processing stages.\n

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

1.4.3 Use as a code pre-processor

\n
\n\n\n

\nThe --define option can be used, particularly when combined with the\nconstant folding logic, as a form of pre-processor to enable or remove\nparticular constructions, such as might be used for instrumenting\ndevelopment code, or to produce variations aimed at a specific\nplatform.\n

\n

\nThe code below illustrates the way this can be done, and how the\nsymbol replacement is performed.\n

\n\n\n\n
CLAUSE1: if (typeof DEVMODE === 'undefined') {\n    DEVMODE = true;\n}\n\nCLAUSE2: function init() {\n    if (DEVMODE) {\n        console.log(\"init() called\");\n    }\n    ....\n    DEVMODE &amp;&amp; console.log(\"init() complete\");\n}\n\nCLAUSE3: function reportDeviceStatus(device) {\n    var DEVMODE = device.mode, DEVNAME = device.name;\n    if (DEVMODE === 'open') {\n        ....\n    }\n}\n
\n\n\n\n

\nWhen the above code is normally executed, the undeclared global\nvariable DEVMODE will be assigned the value true (see CLAUSE1)\nand so the init() function (CLAUSE2) will write messages to the\nconsole log when executed, but in CLAUSE3 a locally declared\nvariable will mask access to the DEVMODE global symbol.\n

\n

\nIf the above code is processed by UglifyJS with an argument of\n--define DEVMODE=false then UglifyJS will replace DEVMODE with the\nboolean constant value false within CLAUSE1 and CLAUSE2, but it\nwill leave CLAUSE3 as it stands because there DEVMODE resolves to\na validly declared variable.\n

\n

\nAnd more so, the constant-folding features of UglifyJS will recognise\nthat the if condition of CLAUSE1 is thus always false, and so will\nremove the test and body of CLAUSE1 altogether (including the\notherwise slightly problematical statement false = true; which it\nwill have formed by replacing DEVMODE in the body). Similarly,\nwithin CLAUSE2 both calls to console.log() will be removed\naltogether.\n

\n

\nIn this way you can mimic, to a limited degree, the functionality of\nthe C/C++ pre-processor to enable or completely remove blocks\ndepending on how certain symbols are defined - perhaps using UglifyJS\nto generate different versions of source aimed at different\nenvironments\n

\n

\nIt is recommmended (but not made mandatory) that symbols designed for\nthis purpose are given names consisting of UPPER_CASE_LETTERS to\ndistinguish them from other (normal) symbols and avoid the sort of\nclash that CLAUSE3 above illustrates.\n

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

1.5 Compression – how good is it?

\n
\n\n\n

\nHere are updated statistics. (I also updated my Google Closure and YUI\ninstallations).\n

\n

\nWe're still a lot better than YUI in terms of compression, though slightly\nslower. We're still a lot faster than Closure, and compression after gzip\nis comparable.\n

\n\n\n\n\n\n\n\n\n\n\n\n\n\n
FileUglifyJSUglifyJS+gzipClosureClosure+gzipYUIYUI+gzip
jquery-1.6.2.js91001 (0:01.59)3189690678 (0:07.40)31979101527 (0:01.82)34646
paper.js142023 (0:01.65)43334134301 (0:07.42)42495173383 (0:01.58)48785
prototype.js88544 (0:01.09)2668086955 (0:06.97)2632692130 (0:00.79)28624
thelib-full.js (DynarchLIB)251939 (0:02.55)72535249911 (0:09.05)72696258869 (0:01.94)76584
\n\n\n
\n\n
\n\n
\n

1.6 Bugs?

\n
\n\n\n

\nUnfortunately, for the time being there is no automated test suite. But I\nran the compressor manually on non-trivial code, and then I tested that the\ngenerated code works as expected. A few hundred times.\n

\n

\nDynarchLIB was started in times when there was no good JS minifier.\nTherefore I was quite religious about trying to write short code manually,\nand as such DL contains a lot of syntactic hacks1 such as “foo == bar ? a\n= 10 : b = 20”, though the more readable version would clearly be to use\n“if/else”.\n

\n

\nSince the parser/compressor runs fine on DL and jQuery, I'm quite confident\nthat it's solid enough for production use. If you can identify any bugs,\nI'd love to hear about them (use the Google Group or email me directly).\n

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

1.7 Links

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

1.8 License

\n
\n\n\n

\nUglifyJS is released under the BSD license:\n

\n\n\n\n
Copyright 2010 (c) Mihai Bazon <mihai.bazon@gmail.com>\nBased on parse-js (http://marijn.haverbeke.nl/parse-js/).\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions\nare met:\n\n    * Redistributions of source code must retain the above\n      copyright notice, this list of conditions and the following\n      disclaimer.\n\n    * Redistributions in binary form must reproduce the above\n      copyright notice, this list of conditions and the following\n      disclaimer in the documentation and/or other materials\n      provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY\nEXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE\nLIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,\nOR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\nPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR\nTORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF\nTHE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGE.\n
\n\n\n\n\n
\n
\n
\n
\n

Footnotes:

\n
\n

1 I even reported a few bugs and suggested some fixes in the original\nparse-js library, and Marijn pushed fixes literally in minutes.\n

\n
\n
\n
\n

Author: Mihai Bazon\n

\n

Date: 2011-08-29 19:17:55 EEST

\n

HTML generated by org-mode 7.01trans in emacs 23

\n
\n
\n\n\n", - "readmeFilename": "README.html", - "_id": "uglify-js@1.1.1", - "_from": "uglify-js@~1.1.1" -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/beautify.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/beautify.js deleted file mode 100755 index f19369e..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/beautify.js +++ /dev/null @@ -1,28 +0,0 @@ -#! /usr/bin/env node - -global.sys = require("sys"); -var fs = require("fs"); - -var jsp = require("../lib/parse-js"); -var pro = require("../lib/process"); - -var filename = process.argv[2]; -fs.readFile(filename, "utf8", function(err, text){ - try { - var ast = time_it("parse", function(){ return jsp.parse(text); }); - ast = time_it("mangle", function(){ return pro.ast_mangle(ast); }); - ast = time_it("squeeze", function(){ return pro.ast_squeeze(ast); }); - var gen = time_it("generate", function(){ return pro.gen_code(ast, false); }); - sys.puts(gen); - } catch(ex) { - sys.debug(ex.stack); - sys.debug(sys.inspect(ex)); - sys.debug(JSON.stringify(ex)); - } -}); - -function time_it(name, cont) { - var t1 = new Date().getTime(); - try { return cont(); } - finally { sys.debug("// " + name + ": " + ((new Date().getTime() - t1) / 1000).toFixed(3) + " sec."); } -}; diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/testparser.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/testparser.js deleted file mode 100755 index 02c19a9..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/testparser.js +++ /dev/null @@ -1,403 +0,0 @@ -#! /usr/bin/env node - -var parseJS = require("../lib/parse-js"); -var sys = require("sys"); - -// write debug in a very straightforward manner -var debug = function(){ - sys.log(Array.prototype.slice.call(arguments).join(', ')); -}; - -ParserTestSuite(function(i, input, desc){ - try { - parseJS.parse(input); - debug("ok " + i + ": " + desc); - } catch(e){ - debug("FAIL " + i + " " + desc + " (" + e + ")"); - } -}); - -function ParserTestSuite(callback){ - var inps = [ - ["var abc;", "Regular variable statement w/o assignment"], - ["var abc = 5;", "Regular variable statement with assignment"], - ["/* */;", "Multiline comment"], - ['/** **/;', 'Double star multiline comment'], - ["var f = function(){;};", "Function expression in var assignment"], - ['hi; // moo\n;', 'single line comment'], - ['var varwithfunction;', 'Dont match keywords as substrings'], // difference between `var withsomevar` and `"str"` (local search and lits) - ['a + b;', 'addition'], - ["'a';", 'single string literal'], - ["'a\\n';", 'single string literal with escaped return'], - ['"a";', 'double string literal'], - ['"a\\n";', 'double string literal with escaped return'], - ['"var";', 'string is a keyword'], - ['"variable";', 'string starts with a keyword'], - ['"somevariable";', 'string contains a keyword'], - ['"somevar";', 'string ends with a keyword'], - ['500;', 'int literal'], - ['500.;', 'float literal w/o decimals'], - ['500.432;', 'float literal with decimals'], - ['.432432;', 'float literal w/o int'], - ['(a,b,c);', 'parens and comma'], - ['[1,2,abc];', 'array literal'], - ['var o = {a:1};', 'object literal unquoted key'], - ['var o = {"b":2};', 'object literal quoted key'], // opening curly may not be at the start of a statement... - ['var o = {c:c};', 'object literal keyname is identifier'], - ['var o = {a:1,"b":2,c:c};', 'object literal combinations'], - ['var x;\nvar y;', 'two lines'], - ['var x;\nfunction n(){; }', 'function def'], - ['var x;\nfunction n(abc){; }', 'function def with arg'], - ['var x;\nfunction n(abc, def){ ;}', 'function def with args'], - ['function n(){ "hello"; }', 'function def with body'], - ['/a/;', 'regex literal'], - ['/a/b;', 'regex literal with flag'], - ['/a/ / /b/;', 'regex div regex'], - ['a/b/c;', 'triple division looks like regex'], - ['+function(){/regex/;};', 'regex at start of function body'], - // http://code.google.com/p/es-lab/source/browse/trunk/tests/parser/parsertests.js?r=86 - // http://code.google.com/p/es-lab/source/browse/trunk/tests/parser/parsertests.js?r=430 - - // first tests for the lexer, should also parse as program (when you append a semi) - - // comments - ['//foo!@#^&$1234\nbar;', 'single line comment'], - ['/* abcd!@#@$* { } && null*/;', 'single line multi line comment'], - ['/*foo\nbar*/;','multi line comment'], - ['/*x*x*/;','multi line comment with *'], - ['/**/;','empty comment'], - // identifiers - ["x;",'1 identifier'], - ["_x;",'2 identifier'], - ["xyz;",'3 identifier'], - ["$x;",'4 identifier'], - ["x$;",'5 identifier'], - ["_;",'6 identifier'], - ["x5;",'7 identifier'], - ["x_y;",'8 identifier'], - ["x+5;",'9 identifier'], - ["xyz123;",'10 identifier'], - ["x1y1z1;",'11 identifier'], - ["foo\\u00D8bar;",'12 identifier unicode escape'], - //["foo�bar;",'13 identifier unicode embedded (might fail)'], - // numbers - ["5;", '1 number'], - ["5.5;", '2 number'], - ["0;", '3 number'], - ["0.0;", '4 number'], - ["0.001;", '5 number'], - ["1.e2;", '6 number'], - ["1.e-2;", '7 number'], - ["1.E2;", '8 number'], - ["1.E-2;", '9 number'], - [".5;", '10 number'], - [".5e3;", '11 number'], - [".5e-3;", '12 number'], - ["0.5e3;", '13 number'], - ["55;", '14 number'], - ["123;", '15 number'], - ["55.55;", '16 number'], - ["55.55e10;", '17 number'], - ["123.456;", '18 number'], - ["1+e;", '20 number'], - ["0x01;", '22 number'], - ["0XCAFE;", '23 number'], - ["0x12345678;", '24 number'], - ["0x1234ABCD;", '25 number'], - ["0x0001;", '26 number'], - // strings - ["\"foo\";", '1 string'], - ["\'foo\';", '2 string'], - ["\"x\";", '3 string'], - ["\'\';", '4 string'], - ["\"foo\\tbar\";", '5 string'], - ["\"!@#$%^&*()_+{}[]\";", '6 string'], - ["\"/*test*/\";", '7 string'], - ["\"//test\";", '8 string'], - ["\"\\\\\";", '9 string'], - ["\"\\u0001\";", '10 string'], - ["\"\\uFEFF\";", '11 string'], - ["\"\\u10002\";", '12 string'], - ["\"\\x55\";", '13 string'], - ["\"\\x55a\";", '14 string'], - ["\"a\\\\nb\";", '15 string'], - ['";"', '16 string: semi in a string'], - ['"a\\\nb";', '17 string: line terminator escape'], - // literals - ["null;", "null"], - ["true;", "true"], - ["false;", "false"], - // regex - ["/a/;", "1 regex"], - ["/abc/;", "2 regex"], - ["/abc[a-z]*def/g;", "3 regex"], - ["/\\b/;", "4 regex"], - ["/[a-zA-Z]/;", "5 regex"], - - // program tests (for as far as they havent been covered above) - - // regexp - ["/foo(.*)/g;", "another regexp"], - // arrays - ["[];", "1 array"], - ["[ ];", "2 array"], - ["[1];", "3 array"], - ["[1,2];", "4 array"], - ["[1,2,,];", "5 array"], - ["[1,2,3];", "6 array"], - ["[1,2,3,,,];", "7 array"], - // objects - ["{};", "1 object"], - ["({x:5});", "2 object"], - ["({x:5,y:6});", "3 object"], - ["({x:5,});", "4 object"], - ["({if:5});", "5 object"], - ["({ get x() {42;} });", "6 object"], - ["({ set y(a) {1;} });", "7 object"], - // member expression - ["o.m;", "1 member expression"], - ["o['m'];", "2 member expression"], - ["o['n']['m'];", "3 member expression"], - ["o.n.m;", "4 member expression"], - ["o.if;", "5 member expression"], - // call and invoke expressions - ["f();", "1 call/invoke expression"], - ["f(x);", "2 call/invoke expression"], - ["f(x,y);", "3 call/invoke expression"], - ["o.m();", "4 call/invoke expression"], - ["o['m'];", "5 call/invoke expression"], - ["o.m(x);", "6 call/invoke expression"], - ["o['m'](x);", "7 call/invoke expression"], - ["o.m(x,y);", "8 call/invoke expression"], - ["o['m'](x,y);", "9 call/invoke expression"], - ["f(x)(y);", "10 call/invoke expression"], - ["f().x;", "11 call/invoke expression"], - - // eval - ["eval('x');", "1 eval"], - ["(eval)('x');", "2 eval"], - ["(1,eval)('x');", "3 eval"], - ["eval(x,y);", "4 eval"], - // new expression - ["new f();", "1 new expression"], - ["new o;", "2 new expression"], - ["new o.m;", "3 new expression"], - ["new o.m(x);", "4 new expression"], - ["new o.m(x,y);", "5 new expression"], - // prefix/postfix - ["++x;", "1 pre/postfix"], - ["x++;", "2 pre/postfix"], - ["--x;", "3 pre/postfix"], - ["x--;", "4 pre/postfix"], - ["x ++;", "5 pre/postfix"], - ["x /* comment */ ++;", "6 pre/postfix"], - ["++ /* comment */ x;", "7 pre/postfix"], - // unary operators - ["delete x;", "1 unary operator"], - ["void x;", "2 unary operator"], - ["+ x;", "3 unary operator"], - ["-x;", "4 unary operator"], - ["~x;", "5 unary operator"], - ["!x;", "6 unary operator"], - // meh - ["new Date++;", "new date ++"], - ["+x++;", " + x ++"], - // expression expressions - ["1 * 2;", "1 expression expressions"], - ["1 / 2;", "2 expression expressions"], - ["1 % 2;", "3 expression expressions"], - ["1 + 2;", "4 expression expressions"], - ["1 - 2;", "5 expression expressions"], - ["1 << 2;", "6 expression expressions"], - ["1 >>> 2;", "7 expression expressions"], - ["1 >> 2;", "8 expression expressions"], - ["1 * 2 + 3;", "9 expression expressions"], - ["(1+2)*3;", "10 expression expressions"], - ["1*(2+3);", "11 expression expressions"], - ["xy;", "13 expression expressions"], - ["x<=y;", "14 expression expressions"], - ["x>=y;", "15 expression expressions"], - ["x instanceof y;", "16 expression expressions"], - ["x in y;", "17 expression expressions"], - ["x&y;", "18 expression expressions"], - ["x^y;", "19 expression expressions"], - ["x|y;", "20 expression expressions"], - ["x+y>>= y;", "1 assignment"], - ["x <<= y;", "2 assignment"], - ["x = y;", "3 assignment"], - ["x += y;", "4 assignment"], - ["x /= y;", "5 assignment"], - // comma - ["x, y;", "comma"], - // block - ["{};", "1 block"], - ["{x;};", "2 block"], - ["{x;y;};", "3 block"], - // vars - ["var x;", "1 var"], - ["var x,y;", "2 var"], - ["var x=1,y=2;", "3 var"], - ["var x,y=2;", "4 var"], - // empty - [";", "1 empty"], - ["\n;", "2 empty"], - // expression statement - ["x;", "1 expression statement"], - ["5;", "2 expression statement"], - ["1+2;", "3 expression statement"], - // if - ["if (c) x; else y;", "1 if statement"], - ["if (c) x;", "2 if statement"], - ["if (c) {} else {};", "3 if statement"], - ["if (c1) if (c2) s1; else s2;", "4 if statement"], - // while - ["do s; while (e);", "1 while statement"], - ["do { s; } while (e);", "2 while statement"], - ["while (e) s;", "3 while statement"], - ["while (e) { s; };", "4 while statement"], - // for - ["for (;;) ;", "1 for statement"], - ["for (;c;x++) x;", "2 for statement"], - ["for (i;i> 1; -var c = 8 >>> 1; \ No newline at end of file diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue34.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue34.js deleted file mode 100644 index 022f7a3..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue34.js +++ /dev/null @@ -1,3 +0,0 @@ -var a = {}; -a["this"] = 1; -a["that"] = 2; \ No newline at end of file diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue4.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue4.js deleted file mode 100644 index 0b76103..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue4.js +++ /dev/null @@ -1,3 +0,0 @@ -var a = 2e3; -var b = 2e-3; -var c = 2e-5; \ No newline at end of file diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue48.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue48.js deleted file mode 100644 index 031e85b..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue48.js +++ /dev/null @@ -1 +0,0 @@ -var s, i; s = ''; i = 0; \ No newline at end of file diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue50.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue50.js deleted file mode 100644 index 060f9df..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue50.js +++ /dev/null @@ -1,9 +0,0 @@ -function bar(a) { - try { - foo(); - } catch(e) { - alert("Exception caught (foo not defined)"); - } - alert(a); // 10 in FF, "[object Error]" in IE -} -bar(10); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue53.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue53.js deleted file mode 100644 index 4f8b32f..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue53.js +++ /dev/null @@ -1 +0,0 @@ -x = (y, z) diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue54.1.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue54.1.js deleted file mode 100644 index 967052e..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue54.1.js +++ /dev/null @@ -1,3 +0,0 @@ -foo.toString(); -a.toString(16); -b.toString.call(c); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue68.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue68.js deleted file mode 100644 index 14054d0..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue68.js +++ /dev/null @@ -1,5 +0,0 @@ -function f() { - if (a) return; - g(); - function g(){} -}; diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue69.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue69.js deleted file mode 100644 index d25ecd6..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue69.js +++ /dev/null @@ -1 +0,0 @@ -[(a,b)] diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue9.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue9.js deleted file mode 100644 index 6158861..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue9.js +++ /dev/null @@ -1,4 +0,0 @@ -var a = { - a: 1, - b: 2, // <-- trailing comma -}; diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/mangle.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/mangle.js deleted file mode 100644 index c271a26..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/mangle.js +++ /dev/null @@ -1,5 +0,0 @@ -(function() { - var x = function fun(a, fun, b) { - return fun; - }; -}()); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/null_string.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/null_string.js deleted file mode 100644 index a675b1c..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/null_string.js +++ /dev/null @@ -1 +0,0 @@ -var nullString = "\0" \ No newline at end of file diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/strict-equals.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/strict-equals.js deleted file mode 100644 index b631f4c..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/strict-equals.js +++ /dev/null @@ -1,3 +0,0 @@ -typeof a === 'string' -b + "" !== c + "" -d < e === f < g diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/var.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/var.js deleted file mode 100644 index 609a35d..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/var.js +++ /dev/null @@ -1,3 +0,0 @@ -// var declarations after each other should be combined -var a = 1; -var b = 2; \ No newline at end of file diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/whitespace.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/whitespace.js deleted file mode 100644 index 6a15c46..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/whitespace.js +++ /dev/null @@ -1,21 +0,0 @@ -function id(a) { - // Form-Feed - // Vertical Tab - // No-Break Space - ᠎// Mongolian Vowel Separator -  // En quad -  // Em quad -  // En space -  // Em space -  // Three-Per-Em Space -  // Four-Per-Em Space -  // Six-Per-Em Space -  // Figure Space -  // Punctuation Space -  // Thin Space -  // Hair Space -  // Narrow No-Break Space -  // Medium Mathematical Space -  // Ideographic Space - return a; -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/with.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/with.js deleted file mode 100644 index de266ed..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/with.js +++ /dev/null @@ -1,2 +0,0 @@ -with({}) { -}; diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/scripts.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/scripts.js deleted file mode 100644 index 9fdd96c..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/test/unit/scripts.js +++ /dev/null @@ -1,55 +0,0 @@ -var fs = require('fs'), - uglify = require('uglify-js'), - jsp = uglify.parser, - nodeunit = require('nodeunit'), - path = require('path'), - pro = uglify.uglify; - -var Script = process.binding('evals').Script; - -var scriptsPath = __dirname; - -function compress(code) { - var ast = jsp.parse(code); - ast = pro.ast_mangle(ast); - ast = pro.ast_squeeze(ast, { no_warnings: true }); - ast = pro.ast_squeeze_more(ast); - return pro.gen_code(ast); -}; - -var testDir = path.join(scriptsPath, "compress", "test"); -var expectedDir = path.join(scriptsPath, "compress", "expected"); - -function getTester(script) { - return function(test) { - var testPath = path.join(testDir, script); - var expectedPath = path.join(expectedDir, script); - var content = fs.readFileSync(testPath, 'utf-8'); - var outputCompress = compress(content); - - // Check if the noncompressdata is larger or same size as the compressed data - test.ok(content.length >= outputCompress.length); - - // Check that a recompress gives the same result - var outputReCompress = compress(content); - test.equal(outputCompress, outputReCompress); - - // Check if the compressed output is what is expected - var expected = fs.readFileSync(expectedPath, 'utf-8'); - test.equal(outputCompress, expected.replace(/(\r?\n)+$/, "")); - - test.done(); - }; -}; - -var tests = {}; - -var scripts = fs.readdirSync(testDir); -for (var i in scripts) { - var script = scripts[i]; - if (/\.js$/.test(script)) { - tests[script] = getTester(script); - } -} - -module.exports = nodeunit.testCase(tests); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/tmp/hoist.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/tmp/hoist.js deleted file mode 100644 index 4bf2b94..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/tmp/hoist.js +++ /dev/null @@ -1,33 +0,0 @@ -function foo(arg1, arg2, arg3, arg4, arg5, arg6) { - var a = 5; - { - var d = 10, mak = 20, buz = 30; - var q = buz * 2; - } - if (moo) { - var a, b, c; - } - for (var arg1 = 0, d = 20; arg1 < 10; ++arg1) - console.log(arg3); - for (var i in mak) {} - for (j in d) {} - var d; - - function test() { - - }; - - //test(); - - (function moo(first, second){ - console.log(first); - })(1); - - (function moo(first, second){ - console.log(moo()); - })(1); -} - - -var foo; -var bar; diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/tmp/instrument.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/tmp/instrument.js deleted file mode 100644 index c6a9d79..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/tmp/instrument.js +++ /dev/null @@ -1,97 +0,0 @@ -// sample on how to use the parser and walker API to instrument some code - -var jsp = require("uglify-js").parser; -var pro = require("uglify-js").uglify; - -function instrument(code) { - var ast = jsp.parse(code, false, true); // true for the third arg specifies that we want - // to have start/end tokens embedded in the - // statements - var w = pro.ast_walker(); - - // we're gonna need this to push elements that we're currently looking at, to avoid - // endless recursion. - var analyzing = []; - function do_stat() { - var ret; - if (this[0].start && analyzing.indexOf(this) < 0) { - // without the `analyzing' hack, w.walk(this) would re-enter here leading - // to infinite recursion - analyzing.push(this); - ret = [ "splice", // XXX: "block" is safer - [ [ "stat", - [ "call", [ "name", "trace" ], - [ [ "string", this[0].toString() ], - [ "num", this[0].start.line ], - [ "num", this[0].start.col ], - [ "num", this[0].end.line ], - [ "num", this[0].end.col ]]]], - w.walk(this) ]]; - analyzing.pop(this); - } - return ret; - }; - var new_ast = w.with_walkers({ - "stat" : do_stat, - "label" : do_stat, - "break" : do_stat, - "continue" : do_stat, - "debugger" : do_stat, - "var" : do_stat, - "const" : do_stat, - "return" : do_stat, - "throw" : do_stat, - "try" : do_stat, - "defun" : do_stat, - "if" : do_stat, - "while" : do_stat, - "do" : do_stat, - "for" : do_stat, - "for-in" : do_stat, - "switch" : do_stat, - "with" : do_stat - }, function(){ - return w.walk(ast); - }); - return pro.gen_code(new_ast, { beautify: true }); -} - - - - -////// test code follows. - -var code = instrument(test.toString()); -console.log(code); - -function test() { - // simple stats - a = 5; - c += a + b; - "foo"; - - // var - var foo = 5; - const bar = 6, baz = 7; - - // switch block. note we can't track case lines the same way. - switch ("foo") { - case "foo": - return 1; - case "bar": - return 2; - } - - // for/for in - for (var i = 0; i < 5; ++i) { - console.log("Hello " + i); - } - for (var i in [ 1, 2, 3]) { - console.log(i); - } - - // note however that the following is broken. I guess we - // should add the block brackets in this case... - for (var i = 0; i < 5; ++i) - console.log("foo"); -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/tmp/instrument2.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/tmp/instrument2.js deleted file mode 100644 index 6aee5f3..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/tmp/instrument2.js +++ /dev/null @@ -1,138 +0,0 @@ -// sample on how to use the parser and walker API to instrument some code - -var jsp = require("uglify-js").parser; -var pro = require("uglify-js").uglify; - -function instrument(code) { - var ast = jsp.parse(code, false, true); // true for the third arg specifies that we want - // to have start/end tokens embedded in the - // statements - var w = pro.ast_walker(); - - function trace (line, comment) { - var code = pro.gen_code(line, { beautify: true }); - var data = line[0] - - var args = [] - if (!comment) comment = "" - if (typeof data === "object") { - code = code.split(/\n/).shift() - args = [ [ "string", data.toString() ], - [ "string", code ], - [ "num", data.start.line ], - [ "num", data.start.col ], - [ "num", data.end.line ], - [ "num", data.end.col ]] - } else { - args = [ [ "string", data ], - [ "string", code ]] - - } - return [ "call", [ "name", "trace" ], args ]; - } - - // we're gonna need this to push elements that we're currently looking at, to avoid - // endless recursion. - var analyzing = []; - function do_stat() { - var ret; - if (this[0].start && analyzing.indexOf(this) < 0) { - // without the `analyzing' hack, w.walk(this) would re-enter here leading - // to infinite recursion - analyzing.push(this); - ret = [ "splice", - [ [ "stat", trace(this) ], - w.walk(this) ]]; - analyzing.pop(this); - } - return ret; - } - - function do_cond(c, t, f) { - return [ this[0], w.walk(c), - ["seq", trace(t), w.walk(t) ], - ["seq", trace(f), w.walk(f) ]]; - } - - function do_binary(c, l, r) { - if (c !== "&&" && c !== "||") { - return [this[0], c, w.walk(l), w.walk(r)]; - } - return [ this[0], c, - ["seq", trace(l), w.walk(l) ], - ["seq", trace(r), w.walk(r) ]]; - } - - var new_ast = w.with_walkers({ - "stat" : do_stat, - "label" : do_stat, - "break" : do_stat, - "continue" : do_stat, - "debugger" : do_stat, - "var" : do_stat, - "const" : do_stat, - "return" : do_stat, - "throw" : do_stat, - "try" : do_stat, - "defun" : do_stat, - "if" : do_stat, - "while" : do_stat, - "do" : do_stat, - "for" : do_stat, - "for-in" : do_stat, - "switch" : do_stat, - "with" : do_stat, - "conditional" : do_cond, - "binary" : do_binary - }, function(){ - return w.walk(ast); - }); - return pro.gen_code(new_ast, { beautify: true }); -} - - -////// test code follows. - -var code = instrument(test.toString()); -console.log(code); - -function test() { - // simple stats - a = 5; - c += a + b; - "foo"; - - // var - var foo = 5; - const bar = 6, baz = 7; - - // switch block. note we can't track case lines the same way. - switch ("foo") { - case "foo": - return 1; - case "bar": - return 2; - } - - // for/for in - for (var i = 0; i < 5; ++i) { - console.log("Hello " + i); - } - for (var i in [ 1, 2, 3]) { - console.log(i); - } - - for (var i = 0; i < 5; ++i) - console.log("foo"); - - for (var i = 0; i < 5; ++i) { - console.log("foo"); - } - - var k = plurp() ? 1 : 0; - var x = a ? doX(y) && goZoo("zoo") - : b ? blerg({ x: y }) - : null; - - var x = X || Y; -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/tmp/test.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/tmp/test.js deleted file mode 100755 index f295fba..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/tmp/test.js +++ /dev/null @@ -1,30 +0,0 @@ -#! /usr/bin/env node - -global.sys = require(/^v0\.[012]/.test(process.version) ? "sys" : "util"); -var fs = require("fs"); -var uglify = require("uglify-js"), // symlink ~/.node_libraries/uglify-js.js to ../uglify-js.js - jsp = uglify.parser, - pro = uglify.uglify; - -var code = fs.readFileSync("hoist.js", "utf8"); -var ast = jsp.parse(code); - -ast = pro.ast_lift_variables(ast); - -var w = pro.ast_walker(); -ast = w.with_walkers({ - "function": function() { - var node = w.dive(this); // walk depth first - console.log(pro.gen_code(node, { beautify: true })); - return node; - }, - "name": function(name) { - return [ this[0], "X" ]; - } -}, function(){ - return w.walk(ast); -}); - -console.log(pro.gen_code(ast, { - beautify: true -})); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/uglify-js.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/uglify-js.js deleted file mode 100644 index 4305e23..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/node_modules/uglify-js/uglify-js.js +++ /dev/null @@ -1,17 +0,0 @@ -//convienence function(src, [options]); -function uglify(orig_code, options){ - options || (options = {}); - var jsp = uglify.parser; - var pro = uglify.uglify; - - var ast = jsp.parse(orig_code, options.strict_semicolons); // parse code and get the initial AST - ast = pro.ast_mangle(ast, options.mangle_options); // get a new AST with mangled names - ast = pro.ast_squeeze(ast, options.squeeze_options); // get an AST with compression optimizations - var final_code = pro.gen_code(ast, options.gen_options); // compressed code here - return final_code; -}; - -uglify.parser = require("./lib/parse-js"); -uglify.uglify = require("./lib/process"); - -module.exports = uglify \ No newline at end of file diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/package.json b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/package.json deleted file mode 100644 index 48510d5..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/package.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "burrito", - "description": "Wrap up expressions with a trace function while walking the AST with rice and beans on the side", - "version": "0.2.12", - "repository": { - "type": "git", - "url": "git://github.com/substack/node-burrito.git" - }, - "main": "./index.js", - "keywords": [ - "trace", - "ast", - "walk", - "syntax", - "source", - "tree", - "uglify" - ], - "directories": { - "lib": ".", - "example": "example", - "test": "test" - }, - "scripts": { - "test": "tap test/*.js" - }, - "dependencies": { - "traverse": "~0.5.1", - "uglify-js": "~1.1.1" - }, - "devDependencies": { - "tap": "~0.2.5" - }, - "engines": { - "node": ">=0.4.0" - }, - "license": "BSD", - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "readme": "burrito\n=======\n\nBurrito makes it easy to do crazy stuff with the javascript AST.\n\nThis is super useful if you want to roll your own stack traces or build a code\ncoverage tool.\n\n[![build status](https://secure.travis-ci.org/substack/node-burrito.png)](http://travis-ci.org/substack/node-burrito)\n\n![node.wrap(\"burrito\")](http://substack.net/images/burrito.png)\n\nexamples\n========\n\nmicrowave\n---------\n\nexamples/microwave.js\n\n````javascript\nvar burrito = require('burrito');\n\nvar res = burrito.microwave('Math.sin(2)', function (node) {\n if (node.name === 'num') node.wrap('Math.PI / %s');\n});\n\nconsole.log(res); // sin(pi / 2) == 1\n````\n\noutput:\n\n 1\n\nwrap\n----\n\nexamples/wrap.js\n\n````javascript\nvar burrito = require('burrito');\n\nvar src = burrito('f() && g(h())\\nfoo()', function (node) {\n if (node.name === 'call') node.wrap('qqq(%s)');\n});\n\nconsole.log(src);\n````\n\noutput:\n\n qqq(f()) && qqq(g(qqq(h())));\n\n qqq(foo());\n\nmethods\n=======\n\n var burrito = require('burrito');\n\nburrito(code, cb)\n-----------------\n\nGiven some source `code` and a function `trace`, walk the ast by expression.\n\nThe `cb` gets called with a node object described below.\n\nIf `code` is an Array then it is assumbed to be an AST which you can generate\nyourself with `burrito.parse()`. The AST must be annotated, so make sure to\n`burrito.parse(src, false, true)`.\n\nburrito.microwave(code, context={}, cb)\n---------------------------------------\n\nLike `burrito()` except the result is run using\n`vm.runInNewContext(res, context)`.\n\nnode object\n===========\n\nnode.name\n---------\n\nName is a string that contains the type of the expression as named by uglify.\n\nnode.wrap(s)\n------------\n\nWrap the current expression in `s`.\n\nIf `s` is a string, `\"%s\"` will be replaced with the stringified current\nexpression.\n\nIf `s` is a function, it is called with the stringified current expression and\nshould return a new stringified expression.\n\nIf the `node.name === \"binary\"`, you get the subterms \"%a\" and \"%b\" to play with\ntoo. These subterms are applied if `s` is a function too: `s(expr, a, b)`.\n\nProtip: to insert multiple statements you can use javascript's lesser-known block\nsyntax that it gets from C:\n\n````javascript\nif (node.name === 'stat') node.wrap('{ foo(); %s }')\n````\n\nnode.node\n---------\n\nraw ast data generated by uglify\n\nnode.value\n----------\n\n`node.node.slice(1)` to skip the annotations\n\nnode.start\n----------\n\nThe start location of the expression, like this:\n\n````javascript\n{ type: 'name',\n value: 'b',\n line: 0,\n col: 3,\n pos: 3,\n nlb: false,\n comments_before: [] }\n````\n\nnode.end\n--------\n\nThe end location of the expression, formatted the same as `node.start`.\n\nnode.state\n----------\n\nThe state of the traversal using traverse.\n\nnode.source()\n-------------\n\nReturns a stringified version of the expression.\n\nnode.parent()\n-------------\n\nReturns the parent `node` or `null` if the node is the root element.\n\nnode.label()\n------------\n\nReturn the label of the present node or `null` if there is no label.\n\nLabels are returned for \"call\", \"var\", \"defun\", and \"function\" nodes.\n\nReturns an array for \"var\" nodes since `var` statements can\ncontain multiple labels in assignment.\n\ninstall\n=======\n\nWith [npm](http://npmjs.org) you can just:\n\n npm install burrito\n\nin the browser\n==============\n\nBurrito works in browser with\n[browserify](https://github.com/substack/node-browserify).\n\nIt has been tested against:\n\n* Internet Explorer 5.5, 6.0, 7.0, 8.0, 9.0\n* Firefox 3.5\n* Chrome 6.0\n* Opera 10.6\n* Safari 5.0\n\nkudos\n=====\n\nHeavily inspired by (and previously mostly lifted outright from) isaacs's nifty\ntmp/instrument.js thingy from uglify-js.\n", - "readmeFilename": "README.markdown", - "_id": "burrito@0.2.12", - "_from": "burrito@>=0.2.5 <0.3" -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/ast.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/ast.js deleted file mode 100644 index 503b5ab..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/ast.js +++ /dev/null @@ -1,31 +0,0 @@ -var test = require('tap').test; -var burrito = require('../'); -var vm = require('vm'); - -test('ast', function (t) { - t.plan(2); - - var ast = burrito.parse('f(g(h(5)))', false, true); - var src = burrito(ast, function (node) { - if (node.name === 'call') { - node.wrap(function (s) { - return 'z(' + s + ')'; - }); - } - }); - - var times = 0; - t.equal( - vm.runInNewContext(src, { - f : function (x) { return x + 1 }, - g : function (x) { return x + 2 }, - h : function (x) { return x + 3 }, - z : function (x) { - times ++; - return x * 10; - }, - }), - (((((5 + 3) * 10) + 2) * 10) + 1) * 10 - ); - t.equal(times, 3); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/err.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/err.js deleted file mode 100644 index af1611d..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/err.js +++ /dev/null @@ -1,52 +0,0 @@ -var test = require('tap').test; -var burrito = require('../'); - -test('wrap error', function (t) { - t.plan(6); - - try { - var src = burrito('f() && g()', function (node) { - if (node.name === 'binary') node.wrap('h(%a, %b') - }); - t.fail('should have blown up'); - } - catch (err) { - t.ok(err.message.match(/unexpected/i)); - t.ok(err instanceof SyntaxError); - t.ok(!err.stack.match(/uglify-js/)); - t.equal(err.line, 0); - t.equal(err.col, 10); - t.equal(err.pos, 10); - } -}); - -test('non string', function (t) { - t.plan(3); - - t.throws(function () { - burrito.parse(new Buffer('[]')); - }); - - t.throws(function () { - burrito.parse(new String('[]')); - }); - - t.throws(function () { - burrito.parse(); - }); -}); - -test('syntax error', function (t) { - t.plan(3); - try { - var src = burrito('f() && g())', function (node) { - if (node.name === 'binary') node.wrap('h(%a, %b)') - }); - assert.fail('should have blown up'); - } - catch (err) { - t.ok(err.message.match(/unexpected/i)); - t.ok(err instanceof SyntaxError); - t.ok(!err.stack.match(/uglify-js/)); - } -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/fail.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/fail.js deleted file mode 100644 index 70d453f..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/fail.js +++ /dev/null @@ -1,9 +0,0 @@ -var burrito = require('../'); -var test = require('tap').test; -var fs = require('fs'); -var src = fs.readFileSync(__dirname + '/fail/src.js', 'utf8'); - -test('fail', function (t) { - burrito(src, function (node) {}); - t.end(); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/fail/src.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/fail/src.js deleted file mode 100644 index eb02736..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/fail/src.js +++ /dev/null @@ -1,60 +0,0 @@ -var path = require('path') - -module.exports = function(fs, ready) { - var global_files = {} - - var recurse = function(dir, okay) { - fs.readdir(dir, function(err, dir_files) { - var countdown = 0 - , files = [] - , dirs = [] - , checked = 0 - dir_files.forEach(function(file, idx, all) { - fs.stat(path.join(dir, file), function(err, stat) { - if(stat.isDirectory() && !/node_modules/g.test(dir)) { - dirs.push(file) - } else if(/\.js$/g.test(file)) { - files.push(file) - } - - if(++checked >= dir_files.length) - recurse_dirs() - }) - }) - - function recurse_dirs() { - var total = 0 - dirs.forEach(function(this_dir) { - recurse(path.join(dir, this_dir), function(err, data) { - if(++total >= dirs.length) - recurse_files() - }) - }) - - if(!dirs.length) - recurse_files() - } - - function recurse_files() { - var total = 0 - files.forEach(function(file) { - fs.readFile(path.join(dir, file), 'utf8', function(err, src) { - global_files[path.join(dir, file)] = src - ++total >= files.length && - okay(null, global_files) - }) - }) - - if(!files.length) - okay(null, global_files) - } - - if(!dir_files.length) - okay(null, global_files) - }) - } - - recurse('.', ready) -} - - diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/label.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/label.js deleted file mode 100644 index 368d7c4..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/label.js +++ /dev/null @@ -1,92 +0,0 @@ -var test = require('tap').test; -var burrito = require('../'); - -test('call label', function (t) { - t.plan(1); - - burrito('foo(10)', function (node) { - if (node.name === 'call') { - t.equal(node.label(), 'foo'); - } - }); -}); - -test('var label', function (t) { - t.plan(1); - - burrito('var x = 2', function (node) { - if (node.name === 'var') { - t.same(node.label(), [ 'x' ]); - } - }); -}); - -test('vars label', function (t) { - t.plan(1); - - burrito('var x = 2, y = 3', function (node) { - if (node.name === 'var') { - t.same(node.label(), [ 'x', 'y' ]); - } - }); -}); - -test('defun label', function (t) { - t.plan(1); - - burrito('function moo () {}', function (node) { - if (node.name === 'defun') { - t.same(node.label(), 'moo'); - } - }); -}); - -test('function label', function (t) { - t.plan(1); - - burrito('(function zzz () {})()', function (node) { - if (node.name === 'function') { - t.same(node.label(), 'zzz'); - } - }); -}); - -test('anon function label', function (t) { - t.plan(1); - - burrito('(function () {})()', function (node) { - if (node.name === 'function') { - t.equal(node.label(), null); - } - }); -}); - -test('dot call label', function (t) { - t.plan(1); - - burrito('process.nextTick(fn)', function (node) { - if (node.name === 'call') { - t.equal(node.label(), 'nextTick'); - } - }); -}); - -test('triple dot label', function (t) { - t.plan(1); - - burrito('a.b.c(fn)', function (node) { - if (node.name === 'call') { - t.equal(node.label(), 'c'); - } - }); -}); - -test('expr label', function (t) { - t.plan(1); - - burrito('a.b[x+1](fn)', function (node) { - if (node.name === 'call') { - t.ok(node.label() === null); - } - }); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/microwave.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/microwave.js deleted file mode 100644 index 43f80a7..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/microwave.js +++ /dev/null @@ -1,34 +0,0 @@ -var test = require('tap').test; -var burrito = require('../'); - -test('microwave', function (t) { - t.plan(4); - - var context = { - f : function (x) { return x + 1 }, - g : function (x) { return x + 2 }, - h : function (x) { return x + 3 }, - z : function (x) { - t.ok(true); // 3 times - return x * 10; - }, - }; - - var res = burrito.microwave('f(g(h(5)))', context, function (node) { - if (node.name === 'call') { - node.wrap(function (s) { - return 'z(' + s + ')'; - }); - } - }); - - t.equal(res, (((((5 + 3) * 10) + 2) * 10) + 1) * 10); -}); - -test('empty context', function (t) { - var res = burrito.microwave('Math.sin(2)', function (node) { - if (node.name === 'num') node.wrap('Math.PI / %s'); - }); - t.equal(res, 1); - t.end(); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/parent.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/parent.js deleted file mode 100644 index 2d613af..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/parent.js +++ /dev/null @@ -1,27 +0,0 @@ -var test = require('tap').test; -var burrito = require('../'); - -test('check parent', function (t) { - t.plan(5); - var src = 'Math.tan(0) + Math.sin(0)'; - - var res = burrito.microwave(src, function (node) { - if (node.name === 'binary') { - node.wrap('%a - %b'); - } - else if (node.name === 'num') { - t.equal(node.parent().value[0][0], 'dot'); - - var fn = node.parent().value[0][2]; - if (fn === 'sin') { - node.wrap('Math.PI / 2'); - } - else if (fn === 'tan') { - node.wrap('Math.PI / 4'); - } - else t.fail('Unknown fn'); - } - }); - - t.equal(res, Math.tan(Math.PI / 4) - Math.sin(Math.PI / 2)); // ~ 0 -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/wrap.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/wrap.js deleted file mode 100644 index b9eda49..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/node_modules/burrito/test/wrap.js +++ /dev/null @@ -1,159 +0,0 @@ -var test = require('tap').test; -var burrito = require('../'); -var vm = require('vm'); - -test('preserve ternary parentheses', function (t) { - var originalSource = '"anything" + (x ? y : z) + "anything"'; - var burritoSource = burrito(originalSource, function (node) { - // do nothing. we just want to check that ternary parens are persisted - }); - - var ctxt = { - x : false, - y : 'y_'+~~(Math.random()*10), - z : 'z_'+~~(Math.random()*10) - }; - - var expectedOutput = vm.runInNewContext(originalSource, ctxt); - var burritoOutput = vm.runInNewContext(burritoSource, ctxt); - - t.equal(burritoOutput, expectedOutput); - - ctxt.x = true; - - expectedOutput = vm.runInNewContext(originalSource, ctxt); - burritoOutput = vm.runInNewContext(burritoSource, ctxt); - - t.equal(burritoOutput, expectedOutput); - t.end(); -}); - -test('wrap calls', function (t) { - t.plan(20); - var src = burrito('f() && g(h())\nfoo()', function (node) { - if (node.name === 'call') node.wrap('qqq(%s)'); - if (node.name === 'binary') node.wrap('bbb(%s)'); - t.ok(node.state); - t.equal(this, node.state); - }); - - var times = { bbb : 0, qqq : 0 }; - - var res = []; - vm.runInNewContext(src, { - bbb : function (x) { - times.bbb ++; - res.push(x); - return x; - }, - qqq : function (x) { - times.qqq ++; - res.push(x); - return x; - }, - f : function () { return true }, - g : function (h) { - t.equal(h, 7); - return h !== 7 - }, - h : function () { return 7 }, - foo : function () { return 'foo!' }, - }); - - t.same(res, [ - true, // f() - 7, // h() - false, // g(h()) - false, // f() && g(h()) - 'foo!', // foo() - ]); - t.equal(times.bbb, 1); - t.equal(times.qqq, 4); - t.end(); -}); - -test('wrap fn', function (t) { - var src = burrito('f(g(h(5)))', function (node) { - if (node.name === 'call') { - node.wrap(function (s) { - return 'z(' + s + ')'; - }); - } - }); - - var times = 0; - t.equal( - vm.runInNewContext(src, { - f : function (x) { return x + 1 }, - g : function (x) { return x + 2 }, - h : function (x) { return x + 3 }, - z : function (x) { - times ++; - return x * 10; - }, - }), - (((((5 + 3) * 10) + 2) * 10) + 1) * 10 - ); - t.equal(times, 3); - t.end(); -}); - -test('binary string', function (t) { - var src = 'z(x + y)'; - var context = { - x : 3, - y : 4, - z : function (n) { return n * 10 }, - }; - - var res = burrito.microwave(src, context, function (node) { - if (node.name === 'binary') { - node.wrap('%a*2 - %b*2'); - } - }); - - t.equal(res, 10 * (3*2 - 4*2)); - t.end(); -}); - -test('binary fn', function (t) { - var src = 'z(x + y)'; - var context = { - x : 3, - y : 4, - z : function (n) { return n * 10 }, - }; - - var res = burrito.microwave(src, context, function (node) { - if (node.name === 'binary') { - node.wrap(function (expr, a, b) { - return '(' + a + ')*2 - ' + '(' + b + ')*2'; - }); - } - }); - - t.equal(res, 10 * (3*2 - 4*2)); - t.end(); -}); - -test('intersperse', function (t) { - var src = '(' + (function () { - f(); - g(); - }).toString() + ')()'; - - var times = { f : 0, g : 0, zzz : 0 }; - - var context = { - f : function () { times.f ++ }, - g : function () { times.g ++ }, - zzz : function () { times.zzz ++ }, - }; - - burrito.microwave(src, context, function (node) { - if (node.name === 'stat') node.wrap('{ zzz(); %s }'); - }); - - t.same(times, { f : 1, g : 1, zzz : 3 }); - t.end(); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/package.json b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/package.json deleted file mode 100644 index b03ceea..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "bunker", - "version": "0.1.2", - "description": "code coverage in native javascript", - "main": "index.js", - "directories": { - "lib": ".", - "example": "example", - "test": "test" - }, - "dependencies": { - "burrito": ">=0.2.5 <0.3" - }, - "devDependencies": { - "tap": "~0.2.4" - }, - "scripts": { - "test": "tap test/*.js" - }, - "repository": { - "type": "git", - "url": "http://github.com/substack/node-bunker.git" - }, - "keywords": [ - "code", - "coverage" - ], - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "license": "MIT/X11", - "engine": { - "node": ">=0.4" - }, - "readme": "bunker\n======\n\nBunker is a module to calculate code coverage using native javascript\n[burrito](https://github.com/substack/node-burrito) AST trickery.\n\n[![build status](https://secure.travis-ci.org/substack/node-bunker.png)](http://travis-ci.org/substack/node-bunker)\n\n![code coverage](http://substack.net/images/code_coverage.png)\n\nexamples\n========\n\ntiny\n----\n\n````javascript\nvar bunker = require('bunker');\nvar b = bunker('var x = 0; for (var i = 0; i < 30; i++) { x++ }');\n\nvar counts = {};\n\nb.on('node', function (node) {\n if (!counts[node.id]) {\n counts[node.id] = { times : 0, node : node };\n }\n counts[node.id].times ++;\n});\n\nb.run();\n\nObject.keys(counts).forEach(function (key) {\n var count = counts[key];\n console.log(count.times + ' : ' + count.node.source());\n});\n````\n\noutput:\n\n $ node example/tiny.js \n 1 : var x=0;\n 31 : i<30\n 30 : i++\n 30 : x++;\n 30 : x++\n\nmethods\n=======\n\nvar bunker = require('bunker');\n\nvar b = bunker(src)\n-------------------\n\nCreate a new bunker code coverageifier with some source `src`.\n\nThe bunker object `b` is an `EventEmitter` that emits `'node'` events with two\nparameters:\n\n* `node` - the [burrito](https://github.com/substack/node-burrito) node object\n* `stack` - the stack, [stackedy](https://github.com/substack/node-stackedy) style\n\nb.include(src)\n--------------\n\nInclude some source into the bunker.\n\nb.compile()\n-----------\n\nReturn the source wrapped with burrito.\n\nb.assign(context={})\n--------------------\n\nAssign the statement-tracking functions into `context`.\n\nb.run(context={})\n-----------------\n\nRun the source using `vm.runInNewContext()` with some `context`.\nThe statement-tracking functions will be added to `context` by `assign()`.\n", - "readmeFilename": "README.markdown", - "_id": "bunker@0.1.2", - "_from": "bunker@0.1.X" -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/test/cover.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/test/cover.js deleted file mode 100644 index b04795d..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/test/cover.js +++ /dev/null @@ -1,36 +0,0 @@ -var test = require('tap').test; -var bunker = require('../'); -var fs = require('fs'); - -var src = fs.readdirSync(__dirname + '/src').reduce(function (acc, file) { - acc[file] = fs.readFileSync(__dirname + '/src/' + file, 'utf8'); - return acc; -}, {}); - -test('cover', function (t) { - t.plan(1); - - var b = bunker(src['cover.js']); - var counts = {}; - - b.on('node', function (node) { - counts[node.name] = (counts[node.name] || 0) + 1; - }); - - b.run({ - setInterval : setInterval, - clearInterval : function () { - process.nextTick(function () { - t.same(counts, { - binary : 11, - 'unary-postfix' : 11, - 'var' : 2, - call : 2, // setInterval and clearInterval - stat : 1, // clearInterval - }); - }); - - return clearInterval.apply(this, arguments); - }, - }); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/test/return.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/test/return.js deleted file mode 100644 index 9be1700..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/test/return.js +++ /dev/null @@ -1,29 +0,0 @@ -var test = require('tap').test; -var bunker = require('../'); - -test('cover', function (t) { - t.plan(1); - - var b = bunker('(' + function () { - function foo () {} - function bar () {} - - (function () { - return foo(); - })(); - } + ')()'); - var counts = {}; - - b.on('node', function (node) { - counts[node.name] = (counts[node.name] || 0) + 1; - }); - b.run(); - - process.nextTick(function () { - t.same(counts, { - stat : 2, - call : 2, - return : 1, - }); - }); -}); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/test/src/cover.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/test/src/cover.js deleted file mode 100644 index e640151..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/node_modules/bunker/test/src/cover.js +++ /dev/null @@ -1,6 +0,0 @@ -var i = 0; -var iv = setInterval(function () { - if (i++ === 10) { - clearInterval(iv); - } -}, 10); diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/package.json b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/package.json deleted file mode 100644 index 66cc184..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "runforcover", - "version": "0.0.2", - "description": "require plugin for js code coverage using bunker", - "main": "index.js", - "directories": { - "lib": ".", - "test": "test" - }, - "dependencies": { - "bunker": "0.1.X" - }, - "scripts": { - "test": "node test/index.js" - }, - "repository": { - "type": "git", - "url": "http://github.com/chrisdickinson/node-runforcover.git" - }, - "keywords": [ - "code", - "coverage", - "bunker" - ], - "author": { - "name": "Chris Dickinson", - "email": "chris@neversaw.us", - "url": "http://neversaw.us" - }, - "license": "new BSD", - "engine": { - "node": ">=0.4" - }, - "readme": "runforcover\n======\n\nRunforcover is a require-hook library that uses node-bunker to provide code coverage data\nfor your unit test library, whatever it might be.\n\nmethods\n=======\nvar runforcover = require('runforcover');\n\nvar coverage = runforcover.cover([RegExp | path]);\n-------\n\nAttach runforcover to the global `require` object and patch `require.extensions['.js']` to\nprovide coverage metadata for all files required after this point. Returns a function\nobject that can be called to obtain a object keying files to `CoverageData` objects, with \na method for releasing control back to vanilla `require`. Usage:\n\n````javascript\n\nvar coverage = runforcover.cover(/.*/g);\n\nrequire('some/library');\n\ncoverage(function(coverageData) {\n // coverageData is an object keyed by filename.\n var stats = coverageData['/full/path/to/file.js'].stats()\n\n // the percentage of lines run versus total lines in file\n console.log(stats.percentage);\n\n // the number of missing lines\n console.log(stats.missing);\n\n // the number of lines run (seen)\n console.log(stats.seen);\n\n // an array of line objects representing 'missed' lines\n stats.lines;\n\n stats.lines.forEach(function(line) {\n // the line number of the line:\n console.log(line.number);\n\n // returns a string containing the source data for the line:\n console.log(line.source()); \n }); \n \n // return control back to the original require function\n coverage.release(); \n});\n````\n\nlicense\n=======\nnew BSD.\n", - "readmeFilename": "README.markdown", - "_id": "runforcover@0.0.2", - "_from": "runforcover@~0.0.2" -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/test/index.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/test/index.js deleted file mode 100644 index ea59662..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/test/index.js +++ /dev/null @@ -1 +0,0 @@ -require('./interface').coverageInterface() diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/test/interface.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/test/interface.js deleted file mode 100644 index a6455ed..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/test/interface.js +++ /dev/null @@ -1,50 +0,0 @@ -var assert = require('assert'); -var runforcover = require('../'); - -exports.coverageInterface = function() { - assert.ok(runforcover.cover); - - var originalRequire = require.extensions['.js']; - - var coverage = runforcover.cover(); - - assert.notEqual(originalRequire, require.extensions['.js']); - - var file = require('./src/coverage'); - - coverage(function(coverageData) { - assert.equal(Object.keys(coverageData).length, 1); - assert.equal(Object.keys(coverageData)[0], __dirname + '/src/coverage.js'); - - var fileCoverageData = coverageData[Object.keys(coverageData)[0]]; - - assert.ok(fileCoverageData.stats); - assert.ok(fileCoverageData.missing); - - var stats = fileCoverageData.stats(); - - assert.ok(stats.percentage !== undefined); - assert.ok(stats.lines !== undefined); - assert.ok(stats.missing !== undefined); - assert.ok(stats.seen !== undefined); - - assert.equal(stats.lines.length, 3); - assert.equal(stats.lines[0].source(), ' if(a > 0) {'); - assert.equal(stats.lines[1].source(), ' return a + 1;'); - assert.equal(stats.lines[2].source(), ' return a - 1;'); - - file.something(1); - stats = fileCoverageData.stats(); - - assert.equal(stats.lines.length, 1); - assert.equal(stats.lines[0].source(), ' return a - 1;'); - - file.something(-1); - stats = fileCoverageData.stats(); - - assert.equal(stats.lines.length, 0); - - coverage.release(); - assert.equal(require.extensions['.js'], originalRequire); - }); -}; diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/test/src/coverage.js b/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/test/src/coverage.js deleted file mode 100644 index 5b88dfe..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/runforcover/test/src/coverage.js +++ /dev/null @@ -1,7 +0,0 @@ -exports.something = function(a) { - if(a > 0) { - return a + 1; - } else { - return a - 1; - } -}; diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/slide/README.md b/node_modules/nodeunit/node_modules/tap/node_modules/slide/README.md deleted file mode 100644 index ed0905f..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/slide/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# Slide - a tiny flow control library - -Callbacks are simple and easy if you keep the pattern consistent. - -Check out the [slide presentation](http://github.com/isaacs/slide-flow-control/raw/master/nodejs-controlling-flow.pdf). - -You'll laugh when you see how little code is actually in this thing. -It's so not-enterprisey, you won't believe it. It does almost nothing, -but it's super handy. - -I actually use an earlier version of this util in -[a real world program](http://npmjs.org/). - -## Installation - -Just copy the files into your project, and use them that way, or -you can do this: - - npm install slide - -and then: - - var asyncMap = require("slide").asyncMap - , chain = require("slide").chain - // use the power! - -Enjoy! diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/slide/index.js b/node_modules/nodeunit/node_modules/tap/node_modules/slide/index.js deleted file mode 100644 index 0a9277f..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/slide/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports=require("./lib/slide") diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/slide/lib/async-map-ordered.js b/node_modules/nodeunit/node_modules/tap/node_modules/slide/lib/async-map-ordered.js deleted file mode 100644 index 5cca79a..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/slide/lib/async-map-ordered.js +++ /dev/null @@ -1,65 +0,0 @@ - -throw new Error("TODO: Not yet implemented.") - -/* -usage: - -Like asyncMap, but only can take a single cb, and guarantees -the order of the results. -*/ - -module.exports = asyncMapOrdered - -function asyncMapOrdered (list, fn, cb_) { - if (typeof cb_ !== "function") throw new Error( - "No callback provided to asyncMapOrdered") - - if (typeof fn !== "function") throw new Error( - "No map function provided to asyncMapOrdered") - - if (list === undefined || list === null) return cb_(null, []) - if (!Array.isArray(list)) list = [list] - if (!list.length) return cb_(null, []) - - var errState = null - , l = list.length - , a = l - , res = [] - , resCount = 0 - , maxArgLen = 0 - - function cb (index) { return function () { - if (errState) return - var er = arguments[0] - var argLen = arguments.length - maxArgLen = Math.max(maxArgLen, argLen) - res[index] = argLen === 1 ? [er] : Array.apply(null, arguments) - - // see if any new things have been added. - if (list.length > l) { - var newList = list.slice(l) - a += (list.length - l) - var oldLen = l - l = list.length - process.nextTick(function () { - newList.forEach(function (ar, i) { fn(ar, cb(i + oldLen)) }) - }) - } - - if (er || --a === 0) { - errState = er - cb_.apply(null, [errState].concat(flip(res, resCount, maxArgLen))) - } - }} - // expect the supplied cb function to be called - // "n" times for each thing in the array. - list.forEach(function (ar) { - steps.forEach(function (fn, i) { fn(ar, cb(i)) }) - }) -} - -function flip (res, resCount, argLen) { - var flat = [] - // res = [[er, x, y], [er, x1, y1], [er, x2, y2, z2]] - // return [[x, x1, x2], [y, y1, y2], [undefined, undefined, z2]] - diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/slide/lib/async-map.js b/node_modules/nodeunit/node_modules/tap/node_modules/slide/lib/async-map.js deleted file mode 100644 index 1ced158..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/slide/lib/async-map.js +++ /dev/null @@ -1,56 +0,0 @@ - -/* -usage: - -// do something to a list of things -asyncMap(myListOfStuff, function (thing, cb) { doSomething(thing.foo, cb) }, cb) -// do more than one thing to each item -asyncMap(list, fooFn, barFn, cb) - -*/ - -module.exports = asyncMap - -function asyncMap () { - var steps = Array.prototype.slice.call(arguments) - , list = steps.shift() || [] - , cb_ = steps.pop() - if (typeof cb_ !== "function") throw new Error( - "No callback provided to asyncMap") - if (!list) return cb_(null, []) - if (!Array.isArray(list)) list = [list] - var n = steps.length - , data = [] // 2d array - , errState = null - , l = list.length - , a = l * n - if (!a) return cb_(null, []) - function cb (er) { - if (errState) return - var argLen = arguments.length - for (var i = 1; i < argLen; i ++) if (arguments[i] !== undefined) { - data[i - 1] = (data[i - 1] || []).concat(arguments[i]) - } - // see if any new things have been added. - if (list.length > l) { - var newList = list.slice(l) - a += (list.length - l) * n - l = list.length - process.nextTick(function () { - newList.forEach(function (ar) { - steps.forEach(function (fn) { fn(ar, cb) }) - }) - }) - } - - if (er || --a === 0) { - errState = er - cb_.apply(null, [errState].concat(data)) - } - } - // expect the supplied cb function to be called - // "n" times for each thing in the array. - list.forEach(function (ar) { - steps.forEach(function (fn) { fn(ar, cb) }) - }) -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/slide/lib/bind-actor.js b/node_modules/nodeunit/node_modules/tap/node_modules/slide/lib/bind-actor.js deleted file mode 100644 index 6a37072..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/slide/lib/bind-actor.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = bindActor -function bindActor () { - var args = - Array.prototype.slice.call - (arguments) // jswtf. - , obj = null - , fn - if (typeof args[0] === "object") { - obj = args.shift() - fn = args.shift() - if (typeof fn === "string") - fn = obj[ fn ] - } else fn = args.shift() - return function (cb) { - fn.apply(obj, args.concat(cb)) } -} diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/slide/lib/chain.js b/node_modules/nodeunit/node_modules/tap/node_modules/slide/lib/chain.js deleted file mode 100644 index 17b3711..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/slide/lib/chain.js +++ /dev/null @@ -1,20 +0,0 @@ -module.exports = chain -var bindActor = require("./bind-actor.js") -chain.first = {} ; chain.last = {} -function chain (things, cb) { - var res = [] - ;(function LOOP (i, len) { - if (i >= len) return cb(null,res) - if (Array.isArray(things[i])) - things[i] = bindActor.apply(null, - things[i].map(function(i){ - return (i===chain.first) ? res[0] - : (i===chain.last) - ? res[res.length - 1] : i })) - if (!things[i]) return LOOP(i + 1, len) - things[i](function (er, data) { - if (er) return cb(er, res) - if (data !== undefined) res = res.concat(data) - LOOP(i + 1, len) - }) - })(0, things.length) } diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/slide/lib/slide.js b/node_modules/nodeunit/node_modules/tap/node_modules/slide/lib/slide.js deleted file mode 100644 index 6e9ec23..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/slide/lib/slide.js +++ /dev/null @@ -1,3 +0,0 @@ -exports.asyncMap = require("./async-map") -exports.bindActor = require("./bind-actor") -exports.chain = require("./chain") diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/slide/nodejs-controlling-flow.pdf b/node_modules/nodeunit/node_modules/tap/node_modules/slide/nodejs-controlling-flow.pdf deleted file mode 100644 index ca12d60cb2e25177f94d07364bf172a5fd4066d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167502 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[M-agNJQiojy^|IsvlBQ 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%0D9}jH}h$8;8 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 - -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: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -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. diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/yamlish/README.md b/node_modules/nodeunit/node_modules/tap/node_modules/yamlish/README.md deleted file mode 100644 index 954d063..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/yamlish/README.md +++ /dev/null @@ -1,20 +0,0 @@ -This is a thingie to parse the "yamlish" format used to serialize -objects in the TAP format. - -It's like yaml, but just a tiny little bit smaller. - -Usage: - - var yamlish = require("yamlish") - // returns a string like: - /* - some: - object: - - full - - of - pretty: things - */ - yamlish.encode({some:{object:["full", "of"]}, pretty:"things"}) - - // returns the object - yamlish.decode(someYamlishString) diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/yamlish/package.json b/node_modules/nodeunit/node_modules/tap/node_modules/yamlish/package.json deleted file mode 100644 index 359300d..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/yamlish/package.json +++ /dev/null @@ -1,9 +0,0 @@ -{ "name" : "yamlish" -, "description" : "Parser/encoder for the yamlish format" -, "repository":"https://github.com/isaacs/yamlish" -, "version" : "0.0.5" -, "main" : "yamlish.js" -, "keywords" : [ "yaml", "yamlish", "test", "anything", "protocol", "tap"] -, "license" : { "type" : "MIT" - , "url" : "http://github.com/isaacs/yamlish/raw/master/LICENSE" } -, "author" : "Isaac Z. Schlueter (http://blog.izs.me/)" } diff --git a/node_modules/nodeunit/node_modules/tap/node_modules/yamlish/yamlish.js b/node_modules/nodeunit/node_modules/tap/node_modules/yamlish/yamlish.js deleted file mode 100644 index dd8c370..0000000 --- a/node_modules/nodeunit/node_modules/tap/node_modules/yamlish/yamlish.js +++ /dev/null @@ -1,260 +0,0 @@ -exports.encode = encode -exports.decode = decode - -var seen = [] -function encode (obj, indent) { - var deep = arguments[2] - if (!indent) indent = " " - - if (obj instanceof String || - Object.prototype.toString.call(obj) === "[object String]") { - obj = obj.toString() - } - - if (obj instanceof Number || - Object.prototype.toString.call(obj) === "[object Number]") { - obj = obj.valueOf() - } - - // take out the easy ones. - switch (typeof obj) { - case "string": - obj = obj.trim() - if (obj.indexOf("\n") !== -1) { - return "|\n" + indent + obj.split(/\r?\n/).join("\n"+indent) - } else { - return (obj) - } - - case "number": - return obj.toString(10) - - case "function": - return encode(obj.toString(), indent, true) - - case "boolean": - return obj.toString() - - case "undefined": - // fallthrough - case "object": - // at this point we know it types as an object - if (!obj) return "~" - - if (obj instanceof Date || - Object.prototype.toString.call(obj) === "[object Date]") { - return JSON.stringify("[Date " + obj.toISOString() + "]") - } - - if (obj instanceof RegExp || - Object.prototype.toString.call(obj) === "[object RegExp]") { - return JSON.stringify(obj.toString()) - } - - if (obj instanceof Boolean || - Object.prototype.toString.call(obj) === "[object Boolean]") { - return obj.toString() - } - - if (seen.indexOf(obj) !== -1) { - return "[Circular]" - } - seen.push(obj) - - if (typeof Buffer === "function" && - typeof Buffer.isBuffer === "function" && - Buffer.isBuffer(obj)) return obj.inspect() - - if (obj instanceof Error) { - var o = { name: obj.name - , message: obj.message - , type: obj.type } - - if (obj.code) o.code = obj.code - if (obj.errno) o.errno = obj.errno - if (obj.type) o.type = obj.type - obj = o - } - - var out = "" - - if (Array.isArray(obj)) { - var out = "\n" + indent + "- " +obj.map(function (item) { - return encode(item, indent + " ", true) - }).join("\n"+indent + "- ") - break - } - - // an actual object - var keys = Object.keys(obj) - , niceKeys = keys.map(function (k) { - return (k.match(/^[a-zA-Z0-9_]+$/) ? k : JSON.stringify(k)) + ": " - }) - //console.error(keys, niceKeys, obj) - var maxLength = Math.max.apply(Math, niceKeys.map(function (k) { - return k.length - }).concat(0)) - //console.error(niceKeys, maxLength) - - var spaces = new Array(maxLength + 1).join(" ") - - if (!deep) indent += " " - out = "\n" + indent + keys.map(function (k, i) { - var niceKey = niceKeys[i] - return niceKey + spaces.substr(niceKey.length) - + encode(obj[k], indent + " ", true) - }).join("\n" + indent) - break - - default: return "" - } - if (!deep) seen.length = 0 - return out -} - -function decode (str) { - var v = str.trim() - , d - , dateRe = /^\[Date ([0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}(?::[0-9]{2})?(?:\.[0-9]{3})?(?:[A-Z]+)?)\]$/ - - if (v === "~") return null - - try { - var jp = JSON.parse(str) - } catch (e) { - var jp = "" - } - - if (jp && - typeof jp === "string" && - (d = jp.match(dateRe)) && - (d = Date.parse(d[1]))) { - return new Date(d) - } - - if (typeof jp === "boolean") return jp - if (v && !isNaN(v)) return parseInt(v, 10) - - // something interesting. - var lines = str.split(/\r?\n/) - // check if it's some kind of string or something. - // if the first line is > or | then it's a wrapping indented string. - // if the first line is blank, and there are many lines, - // then it's an array or object. - // otherwise, it's just "" - var first = lines.shift().trim() - if (lines.length) lines = undent(lines) - switch (first) { - case "|": - return lines.join("\n") - case ">": - return lines.join("\n").split(/\n{2,}/).map(function (l) { - return l.split(/\n/).join(" ") - }).join("\n") - default: - if (!lines.length) return first - // array or object. - // the first line will be either "- value" or "key: value" - return lines[0].charAt(0) === "-" ? decodeArr(lines) : decodeObj(lines) - } -} - -function decodeArr (lines) { - var out = [] - , key = 0 - , val = [] - for (var i = 0, l = lines.length; i < l; i ++) { - // if it starts with a -, then it's a new thing - var line = lines[i] - if (line.charAt(0) === "-") { - if (val.length) { - out[key ++] = decode(val.join("\n")) - val.length = 0 - } - val.push(line.substr(1).trim()) - } else if (line.charAt(0) === " ") { - val.push(line) - } else return [] - } - if (val.length) { - out[key ++] = decode(val.join("\n")) - } - return out -} - -function decodeObj (lines) { - var out = {} - , val = [] - , key = null - - for (var i = 0, l = lines.length; i < l; i ++) { - var line = lines[i] - if (line.charAt(0) === " ") { - val.push(line) - continue - } - // some key:val - if (val.length) { - out[key] = decode(val.join("\n")) - val.length = 0 - } - // parse out the quoted key - var first - if (line.charAt(0) === "\"") { - for (var ii = 1, ll = line.length, esc = false; ii < ll; ii ++) { - var c = line.charAt(ii) - if (c === "\\") { - esc = !esc - } else if (c === "\"" && !esc) { - break - } - } - key = JSON.parse(line.substr(0, ii + 1)) - line = line.substr(ii + 1) - first = line.substr(line.indexOf(":") + 1).trim() - } else { - var kv = line.split(":") - key = kv.shift() - first = kv.join(":").trim() - } - // now we've set a key, and "first" has the first line of the value. - val.push(first.trim()) - } - if (val.length) out[key] = decode(val.join("\n")) - return out -} - -function undent (lines) { - var i = lines[0].match(/^\s*/)[0].length - return lines.map(function (line) { - return line.substr(i) - }) -} - - -// XXX Turn this into proper tests. -if (require.main === module) { -var obj = [{"bigstring":new Error().stack} - ,{ar:[{list:"of"},{some:"objects"}]} - ,{date:new Date()} - ,{"super huge string":new Error().stack} - ] - -Date.prototype.toJSON = function (k, val) { - console.error(k, val, this) - return this.toISOString() + " (it's a date)" -} - -var enc = encode(obj) - , dec = decode(enc) - , encDec = encode(dec) - -console.error(JSON.stringify({ obj : obj - , enc : enc.split(/\n/) - , dec : dec }, null, 2), encDec === enc) - -var num = 100 - , encNum = encode(num) - , decEncNum = decode(encNum) -console.error([num, encNum, decEncNum]) -} diff --git a/node_modules/nodeunit/node_modules/tap/package.json b/node_modules/nodeunit/node_modules/tap/package.json deleted file mode 100644 index 9ab90e6..0000000 --- a/node_modules/nodeunit/node_modules/tap/package.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "name": "tap", - "version": "0.4.0", - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me" - }, - "description": "A Test-Anything-Protocol library", - "bin": { - "tap": "bin/tap.js" - }, - "main": "lib/main.js", - "dependencies": { - "inherits": "*", - "yamlish": "*", - "slide": "*", - "runforcover": "~0.0.2", - "nopt": "~2", - "mkdirp": "~0.3", - "difflet": "~0.2.0", - "deep-equal": "~0.0.0", - "buffer-equal": "~0.0.0", - "glob": "~3.1.14" - }, - "keywords": [ - "assert", - "test", - "tap" - ], - "contributors": [ - { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me" - }, - { - "name": "baudehlo", - "email": "helpme+github@gmail.com" - } - ], - "license": { - "type": "MIT", - "url": "https://github.com/isaacs/node-tap/raw/master/LICENSE" - }, - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-tap.git" - }, - "scripts": { - "test": "bin/tap.js test/*.js" - }, - "readme": "This is a mix-and-match set of utilities that you can use to write test\nharnesses and frameworks that communicate with one another using the\nTest Anything Protocol.\n\nIf you don't yet know what TAP is, [you better ask\nsomebody](http://testanything.org/).\n\nDefault Usage:\n\n1. Make a directory. Maybe call it 'test'. That'd be nice and obvious.\n2. Put a bunch of test scripts in there. If they're node programs, then\n they should be \".js\". Anything else is assumed to be some kind of shell\n script, which should have a shebang line.\n3. `npm install tap`\n4. Update package.json scripts.test to include `tap ./test` [example\n gist](https://gist.github.com/4469613)\n5. `npm test`\n\nThe output will be TAP-compliant.\n\nFor extra special bonus points, you can do something like this:\n\n var test = require(\"tap\").test\n test(\"make sure the thingie is a thing\", function (t) {\n t.equal(thingie, \"thing\", \"thingie should be thing\")\n t.type(thingie, \"string\", \"type of thingie is string\")\n t.ok(true, \"this is always true\")\n t.notOk(false, \"this is never true\")\n t.test(\"a child test\", function (t) {\n t.equal(this, superEasy, \"right!?\")\n t.similar(7, 2, \"ever notice 7 is kinda like 2?\", {todo: true})\n t.test(\"so skippable\", {skip: true}, function (t) {\n t.plan(1) // only one test in this block\n t.ok(true, \"but when the flag changes, it'll pass\")\n // no need to end, since we had a plan.\n })\n t.end()\n })\n t.ok(99, \"can also skip individual assertions\", {skip: true})\n // end lets it know it's over.\n t.end()\n })\n test(\"another one\", function (t) {\n t.plan(1)\n t.ok(true, \"It's ok to plan, and also end. Watch.\")\n t.end() // but it must match the plan!\n })\n\nNode-tap is actually a collection of several modules, any of which may be\nmixed and matched however you please.\n\nIf you don't like this test framework, and think you can do much much\nbetter, *I strongly encourage you to do so!* If you use this library,\nhowever, at least to output TAP-compliant results when `process.env.TAP`\nis set, then the data coming out of your framework will be much more\nconsumable by machines.\n\nYou can also use this to build programs that *consume* the TAP data, so\nthis is very useful for CI systems and such.\n\n* tap-assert: A collection of assert functions that return TAP result\n objects.\n* tap-consumer: A stream interface for consuming TAP data.\n* tap-producer: A class that produces a TAP stream by taking in result\n objects.\n* tap-results: A class for keeping track of TAP result objects as they\n pass by, counting up skips, passes, fails, and so on.\n* tap-runner: A program that runs through a directory running all the\n tests in it. (Tests which may or may not be TAP-outputting tests. But\n it's better if they are.)\n* tap-test: A class for actually running tests.\n* tap-harness: A class that runs tests. (Tests are also Harnesses,\n which is how sub-tests run.)\n* tap-global-harness: A default harness that provides the top-level\n support for running TAP tests.\n\n## Experimental Code Coverage with runforcover & bunker:\n\n```\nTAP_COV=1 tap ./test [--cover=./lib,foo.js] [--cover-dir=./coverage]\n```\n\nThis feature is experimental, and will most likely change somewhat\nbefore being finalized. Feedback welcome.\n", - "readmeFilename": "README.md", - "_id": "tap@0.4.0", - "bundleDependencies": [ - "inherits", - "tap-consumer", - "yamlish" - ], - "_from": "tap@>=0.2.3" -} diff --git a/node_modules/nodeunit/node_modules/tap/test-disabled/bailout.js b/node_modules/nodeunit/node_modules/tap/test-disabled/bailout.js deleted file mode 100644 index 498035c..0000000 --- a/node_modules/nodeunit/node_modules/tap/test-disabled/bailout.js +++ /dev/null @@ -1,36 +0,0 @@ -var tap = require("tap") - , test = tap.test - -test("bailout test", { skip: false }, function (t) { - - // t.once("bailout", function () { - // console.error("bailout event")//, t) - // t.clear() - // }) - - // t.once("end", function () { - // console.error("end event") - // }) - - // simulate three tests where the second bails out. - t.test("first", function (t) { - t.pass("this is ok") - t.end() - }) - - t.test("bailout", function (t) { - console.error("bailout test") - t.pass("pass") - t.bailout("bail out message") - t.fail("fail") - t.end() - }) - - t.test("second (should not happen)", function (t) { - t.fail("this should not happen") - t.end() - }) - - t.end() - -}) diff --git a/node_modules/nodeunit/node_modules/tap/test-disabled/foo.js b/node_modules/nodeunit/node_modules/tap/test-disabled/foo.js deleted file mode 100644 index 6360156..0000000 --- a/node_modules/nodeunit/node_modules/tap/test-disabled/foo.js +++ /dev/null @@ -1 +0,0 @@ -process.stdin diff --git a/node_modules/nodeunit/node_modules/tap/test-disabled/t.js b/node_modules/nodeunit/node_modules/tap/test-disabled/t.js deleted file mode 100644 index 581d24b..0000000 --- a/node_modules/nodeunit/node_modules/tap/test-disabled/t.js +++ /dev/null @@ -1,16 +0,0 @@ -var test = require('tap').test; - -function foo() { - throw new Error('one'); -} - -test('demonstrate bug in t.throws', function (t) { - t.throws( - function () { - foo(); - }, - new Error('two')), - // "this should throw", - // {}); // not 'one'! - t.end(); -}); diff --git a/node_modules/nodeunit/node_modules/tap/test/buffer_compare.js b/node_modules/nodeunit/node_modules/tap/test/buffer_compare.js deleted file mode 100644 index b1e1505..0000000 --- a/node_modules/nodeunit/node_modules/tap/test/buffer_compare.js +++ /dev/null @@ -1,11 +0,0 @@ -var test = require("../").test - -test("same buffers", function (t) { - t.same(new Buffer([3,4,243]), new Buffer([3,4,243])) - t.end() -}) - -test("not same buffers", function (t) { - t.notSame(new Buffer([3,5,243]), new Buffer([3,4,243])) - t.end() -}) diff --git a/node_modules/nodeunit/node_modules/tap/test/common.js b/node_modules/nodeunit/node_modules/tap/test/common.js deleted file mode 100644 index 7cc43c1..0000000 --- a/node_modules/nodeunit/node_modules/tap/test/common.js +++ /dev/null @@ -1,32 +0,0 @@ -exports.taps = ["Tests for the foo module" - ,{ok:true, name:"test that the foo is fooish" - ,file:"foo.js", line:8, name:"fooish test" - ,stack:new Error("fooish").stack} - ,{ok:false, name:"a test that the bar is barish" - ,file:"bar.js", line:25 - ,expected:"bar\nbar\nbaz", actual:"rab\nrib\nzib" - ,hash:{more:"\nstuff\nhere\n",regexp:/asdf/}} - ,"Quux module tests" - ,"This is a longer comment" - ,{ok:true, name:"an easy one."} - ,{ok:false, name:"bloooooo" - ,expected:"blerggeyyy" - ,actual:"blorggeyy"} - ,{ok:false, name:"array test" - ,expected:[{ok:true},{ok:true},{stack:new Error().stack}] - ,actual:[1234567890,123456789,{error:new Error("yikes")}]} - ,{ok:true, name:"nulltest" - ,expected:undefined, actual:null} - ,{ok:true, name:"weird key test" - ,expected:"weird key" - ,actual:"weird key" - ,"this object":{"has a ":"weird key" - ,"and a looooooooonnnnnnnnnggg":"jacket"}} - ,{ok:true, name:"regexp test" - ,regexp:/asdf/,function:function (a,b) { return a + b }} - ] - -if (require.main === module) { - console.log("1..1") - console.log("ok 1 - just setup, nothing relevant") -} diff --git a/node_modules/nodeunit/node_modules/tap/test/deep.js b/node_modules/nodeunit/node_modules/tap/test/deep.js deleted file mode 100644 index 52b6110..0000000 --- a/node_modules/nodeunit/node_modules/tap/test/deep.js +++ /dev/null @@ -1,43 +0,0 @@ -var tap = require("../") - , test = tap.test - -test("deepEquals shouldn't care about key order", function (t) { - t.deepEqual({ a : 1, b : 2 }, { b : 2, a : 1 }) - t.end() -}) - -test("deepEquals shouldn't care about key order recursively", function (t) { - t.deepEqual( - { x : { a : 1, b : 2 }, y : { c : 3, d : 4 } }, - { y : { d : 4, c : 3 }, x : { b : 2, a : 1 } } - ) - t.end() -}) - -test("deepEquals shoudn't care about key order but still might", function (t) { - t.deepEqual( - [ { foo: - { z: 100 - , y: 200 - , x: 300 } } - , "bar" - , 11 - , { baz: - { d : 4 - , a: 1 - , b: 2 - , c: 3 } } ] - , [ { foo : - { z: 100 - , y: 200 - , x: 300 } } - , "bar" - , 11 - , { baz: - { a: 1 - , b: 2 - , c: 3 - , d: 4 } } ] - ) - t.end() -}); diff --git a/node_modules/nodeunit/node_modules/tap/test/end-exception/t.js b/node_modules/nodeunit/node_modules/tap/test/end-exception/t.js deleted file mode 100644 index eaa5b46..0000000 --- a/node_modules/nodeunit/node_modules/tap/test/end-exception/t.js +++ /dev/null @@ -1,12 +0,0 @@ -var test = require("../../").test - -test(function (t) { - t.plan(1) - - t.on('end', function () { - console.log('end()') - throw new Error('beep') - }) - - t.equal(3, 3) -}) diff --git a/node_modules/nodeunit/node_modules/tap/test/executed.sh b/node_modules/nodeunit/node_modules/tap/test/executed.sh deleted file mode 100755 index 7300937..0000000 --- a/node_modules/nodeunit/node_modules/tap/test/executed.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh - -echo "1..1" -echo "ok 1 File with executable bit should be executed" diff --git a/node_modules/nodeunit/node_modules/tap/test/expose-gc-test.js b/node_modules/nodeunit/node_modules/tap/test/expose-gc-test.js deleted file mode 100644 index 87377c1..0000000 --- a/node_modules/nodeunit/node_modules/tap/test/expose-gc-test.js +++ /dev/null @@ -1,46 +0,0 @@ -var tap = require("../") - , fs = require("fs") - , cp = require("child_process") - -fs.writeFileSync("gc-script.js", "console.log(!!global.gc)", "utf8") - -tap.test("gc test when the gc isn't there", function (t) { - console.error("gc test") - t.plan(1) - console.error("t.plan="+t._plan) - - cp.exec("../bin/tap.js ./gc-script", function (err, stdo, stde) { - console.error("assert gc does not exist") - t.ok("false", stdo) - }) -}) - -tap.test("gc test when the gc should be there", function (t) { - console.error("gc test") - t.plan(2) - console.error("t.plan="+t._plan) - - t.test("test for gc using --gc", function (t) { - console.error("gc test using --gc") - t.plan(1) - console.error("t.plan="+t._plan) - - cp.exec("../bin/tap.js --gc ./gc-script", function (err, stdo, stde) { - console.error("assert gc exists") - t.ok("true", stdo) - }) - }) - - t.test("test for gc using --expose-gc", function (t) { - console.error("gc test using --expose-gc") - t.plan(1) - console.error("t.plan="+t._plan) - - cp.exec("../bin/tap.js --expose-gc ./gc-script", function (err, stdo) { - console.error("assert gc exists") - t.ok("true", stdo) - }) - }) -}) - -fs.unlinkSync("gc-script.js"); diff --git a/node_modules/nodeunit/node_modules/tap/test/independent-timeouts.js b/node_modules/nodeunit/node_modules/tap/test/independent-timeouts.js deleted file mode 100644 index 5a35e61..0000000 --- a/node_modules/nodeunit/node_modules/tap/test/independent-timeouts.js +++ /dev/null @@ -1,16 +0,0 @@ -// https://github.com/isaacs/node-tap/issues/23 - -var tap = require("../") - , test = tap.test - -test("finishes in time", {timeout: 500}, function(t) { - setTimeout(function () { - t.end(); - }, 300); -}) -test("finishes in time too", {timeout: 500}, function(t) { - setTimeout(function () { - t.end(); - }, 300); -}) - diff --git a/node_modules/nodeunit/node_modules/tap/test/isolated-conf-test.js b/node_modules/nodeunit/node_modules/tap/test/isolated-conf-test.js deleted file mode 100644 index d8bfae6..0000000 --- a/node_modules/nodeunit/node_modules/tap/test/isolated-conf-test.js +++ /dev/null @@ -1,16 +0,0 @@ -// https://github.com/isaacs/node-tap/issues/24 - -var tap = require("../") - , test = tap.test - -var config = {foo: "bar"} -test("one", config, function(t) { - t.equal(t.conf.foo, "bar") - t.equal(t.conf.name, "one") // before fix this would be "two" - t.end() -}) -test("two", config, function(t) { - t.equal(t.conf.foo, "bar") - t.equal(t.conf.name, "two") - t.end() -}) diff --git a/node_modules/nodeunit/node_modules/tap/test/meta-test.js b/node_modules/nodeunit/node_modules/tap/test/meta-test.js deleted file mode 100644 index 8f56f26..0000000 --- a/node_modules/nodeunit/node_modules/tap/test/meta-test.js +++ /dev/null @@ -1,73 +0,0 @@ -var tap = require("../") - , test = tap.test - -test("meta test", { skip: false }, function (t) { - - function thr0w() { throw new Error('raburt') } - function noop () {} - - // this also tests the ok/notOk functions - t.once("end", section2) - t.ok(true, "true is ok") - t.ok(noop, "function is ok") - t.ok({}, "object is ok") - t.ok(t, "t is ok") - t.ok(100, "number is ok") - t.ok("asdf", "string is ok") - t.notOk(false, "false is notOk") - t.notOk(0, "0 is notOk") - t.notOk(null, "null is notOk") - t.notOk(undefined, "undefined is notOk") - t.notOk(NaN, "NaN is notOk") - t.notOk("", "empty string is notOk") - t.throws(thr0w, "Thrower throws"); - t.doesNotThrow(noop, "noop does not throw"); - t.similar({foo:"bar", bar:"foo"}, {foo:"bar"}, "similar objects are ok"); - t.dissimilar({}, {mandatory:"value"}, "dissimilar objects are ok"); - t.dissimilar(null, {}, "null is dissimilar from an object, even with no keys"); - - // a few failures. - t.ifError(new Error("this is an error")) - t.ifError({ message: "this is a custom error" }) - t.ok(false, "false is not ok") - t.notOk(true, "true is not not ok") - t.similar(null, {}, "Null is not similar to an object, even with no keys"); - t.throws(noop, "noop does not throw"); - t.throws(noop, new Error("Whoops!"), "noop does not throw an Error"); - t.throws(noop, {name:"MyError", message:"Whoops!"}, "noop does not throw a MyError"); - t.doesNotThrow(thr0w, "thrower does throw"); - - // things that are like other things - t.like("asdf", "asdf") - t.like("asdf", /^a.*f$/) - t.like(100, 100) - t.like(100, '100') - t.like(100, 100.0) - t.unlike("asdf", "fdsa") - t.unlike("asdf", /^you jelly, bro?/) - t.unlike(100, 100.1) - t.like(true, 1) - t.like(null, undefined) - t.like(true, [1]) - t.like(false, []) - t.like('', []) - t.end() - - function section2 () { - var results = t.results - t.clear() - t.ok(true, "sanity check") - t.notOk(results.ok, "not ok") - t.equal(results.tests, 39, "total test count") - t.equal(results.passTotal, 30, "tests passed") - t.equal(results.fail, 9, "tests failed") - t.type(results.ok, "boolean", "ok is boolean") - t.type(results.skip, "number", "skip is number") - t.type(results, "Results", "results isa Results") - t.type(t, "Test", "test isa Test") - t.type(t, "Harness", "test isa Harness") - t.end() - } -}) - - diff --git a/node_modules/nodeunit/node_modules/tap/test/nested-test.js b/node_modules/nodeunit/node_modules/tap/test/nested-test.js deleted file mode 100644 index 493f13a..0000000 --- a/node_modules/nodeunit/node_modules/tap/test/nested-test.js +++ /dev/null @@ -1,23 +0,0 @@ -var tap = require("../"), - test = tap.test, - util = require('util'); - -test("parent", function (t) { - // TODO: Make grandchildren tests count? - t.plan(3); - t.ok(true, 'p test'); - t.test("subtest", function (t) { - t.ok(true, 'ch test'); - t.test('nested subtest', function(t) { - t.ok(true, 'grch test'); - t.end(); - }); - t.end(); - }); - t.test('another subtest', function(t) { - t.ok(true, 'ch test 2'); - t.end(); - }); - t.end(); -}) - diff --git a/node_modules/nodeunit/node_modules/tap/test/non-tap-output.js b/node_modules/nodeunit/node_modules/tap/test/non-tap-output.js deleted file mode 100644 index 929e9aa..0000000 --- a/node_modules/nodeunit/node_modules/tap/test/non-tap-output.js +++ /dev/null @@ -1,12 +0,0 @@ -console.log("everything is fine\n" - +"there are no errors\n" - +"this output is not haiku.\n\n" - +"is 8 ok?\n" - +"ok, 8 can stay.\n" - +"ok 100 might be confusing\n" - +" but: nevertheless, here we are\n" - +" this: is indented\n" - +" and: it\n" - +" might: ~\n" - +" be: yaml?\n" - +"ok done now, exiting") diff --git a/node_modules/nodeunit/node_modules/tap/test/not-executed.sh b/node_modules/nodeunit/node_modules/tap/test/not-executed.sh deleted file mode 100644 index de46caa..0000000 --- a/node_modules/nodeunit/node_modules/tap/test/not-executed.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh - -echo "1..1" -echo "not ok 1 File without executable bit should not be run" diff --git a/node_modules/nodeunit/node_modules/tap/test/output-childtest-description.js b/node_modules/nodeunit/node_modules/tap/test/output-childtest-description.js deleted file mode 100644 index e025ba8..0000000 --- a/node_modules/nodeunit/node_modules/tap/test/output-childtest-description.js +++ /dev/null @@ -1,50 +0,0 @@ -var tap = require("../") - , fs = require("fs") - , path = require('path') - , cp = require("child_process") - , nestedTests = - [ "var test = require('..').test" - , "test('parent test description', function (t) {" - , " t.plan(2)" - , " t.ok(true, 'test in parent')" - , " t.test('child test description', function (t) {" - , " t.plan(1)" - , " t.ok(true, 'test in child') " - , " })" - , "})" - ].join("\n") - , nestedTestsFile = path.join(__dirname, "nested-tests-fixture.js") - -fs.writeFileSync(nestedTestsFile, nestedTests, "utf8") -console.log(nestedTestsFile); - -tap.test("nested tests, parent and child pass", function (t) { - /* - * Ensure the output includes the following lines in the right order: - * '# parent test description' - * 'ok 1 test in parent' - * '# child test description' - * 'ok 2 test in child' - */ - - t.plan(5) - - cp.exec("node " + nestedTestsFile, function (err, stdo, stde) { - var lines = stdo.split("\n") - , parentDes = lines.indexOf("# parent test description") - , parentRes = lines.indexOf("ok 1 test in parent") - , childDes = lines.indexOf("# child test description") - , childRes = lines.indexOf("ok 2 test in child") - - t.notEqual(parentDes, -1, "outputs parent description") - t.notEqual(childDes, -1, "outputs child description") - - t.ok(parentDes < parentRes , "outputs parent description before parent result") - t.ok(parentRes < childDes , "outputs parent result before child description") - t.ok(childDes < childRes , "outputs child description before child result") - - fs.unlinkSync(nestedTestsFile); - t.end() - }) -}) - diff --git a/node_modules/nodeunit/node_modules/tap/test/result-trap.js b/node_modules/nodeunit/node_modules/tap/test/result-trap.js deleted file mode 100644 index 1ac600f..0000000 --- a/node_modules/nodeunit/node_modules/tap/test/result-trap.js +++ /dev/null @@ -1,25 +0,0 @@ -var tap = require("../") - -tap.test("trap result #TODO", function (t0) { - - console.log("not ok 1 result event trapping #TODO") - return t0.end() - - t0.plan(3) - - var t1 = new(tap.Harness)(tap.Test).test() - - t1.plan(1) - - t1.on("result", function (res) { - if (res.wanted === 4) { - t0.equal(res.found, 3) - t0.equal(res.wanted, 4) - - t0.end() - t1.end() - } - }) - - t1.equal(1 + 2, 4) -}) diff --git a/node_modules/nodeunit/node_modules/tap/test/segv.js b/node_modules/nodeunit/node_modules/tap/test/segv.js deleted file mode 100644 index cb2c371..0000000 --- a/node_modules/nodeunit/node_modules/tap/test/segv.js +++ /dev/null @@ -1,62 +0,0 @@ -var test = require('../').test -var Runner = require('../lib/tap-runner.js') -var TC = require('../lib/tap-consumer.js') - -var fs = require('fs') -var spawn = require('child_process').spawn -var segv = - 'int main (void) {\n' + - ' char *s = "hello world";\n' + - ' *s = \'H\';\n' + - '}\n' -var compiled = false - -test('setup', function (t) { - fs.writeFile('segv.c', segv, 'utf8', function (er) { - if (er) - throw er - var cp = spawn('gcc', ['segv.c', '-o', 'segv']) - cp.on('exit', function (code, sig) { - if (code !== 0) { - t.bailout('failed to compile segv program') - return - } - t.pass('compiled seg faulter') - t.end() - }) - }) -}) - -test('segv', function (t) { - var r = new Runner({argv:{remain:['./segv']}}) - var tc = new TC() - var expect = - [ 'TAP version 13' - , './segv' - , { 'id': 1, - 'ok': false, - 'name': ' ././segv', - 'exit': null, - 'timedOut': true, - 'signal': 'SIGBUS', - 'command': '"./segv"' } - , 'tests 1' - , 'fail 1' ] - r.pipe(tc) - tc.on('data', function (d) { - t.same(d, expect.shift()) - }) - tc.on('end', function () { - t.equal(expect.length, 0) - t.end() - }) -}) - -test('cleanup', function (t) { - fs.unlink('segv.c', function () { - fs.unlink('segv', function () { - t.pass('cleaned up') - t.end() - }) - }) -}) diff --git a/node_modules/nodeunit/node_modules/tap/test/simple-harness-test-with-plan.js b/node_modules/nodeunit/node_modules/tap/test/simple-harness-test-with-plan.js deleted file mode 100644 index 813c4cf..0000000 --- a/node_modules/nodeunit/node_modules/tap/test/simple-harness-test-with-plan.js +++ /dev/null @@ -1,16 +0,0 @@ -var tap = require("../") - , test = tap.test - , plan = tap.plan - -plan(2) - -test("trivial success", function (t) { - t.ok(true, "it works") - t.end() -}) - -test("two tests", function (t) { - t.equal(255, 0xFF, "math should work") - t.notOk(false, "false should not be ok") - t.end() -}) diff --git a/node_modules/nodeunit/node_modules/tap/test/simple-harness-test.js b/node_modules/nodeunit/node_modules/tap/test/simple-harness-test.js deleted file mode 100644 index 64451ae..0000000 --- a/node_modules/nodeunit/node_modules/tap/test/simple-harness-test.js +++ /dev/null @@ -1,13 +0,0 @@ -var tap = require("../") - , test = tap.test - -test("trivial success", function (t) { - t.ok(true, "it works") - t.end() -}) - -test("two tests", function (t) { - t.equal(255, 0xFF, "math should work") - t.notOk(false, "false should not be ok") - t.end() -}) diff --git a/node_modules/nodeunit/node_modules/tap/test/test-test.js b/node_modules/nodeunit/node_modules/tap/test/test-test.js deleted file mode 100644 index f383941..0000000 --- a/node_modules/nodeunit/node_modules/tap/test/test-test.js +++ /dev/null @@ -1,91 +0,0 @@ -var tap = require("../") - , test = tap.test - , Test = require("../lib/tap-test") - , Harness = require("../lib/tap-harness") - -test("testing the test object", function (t) { - - t.isa(t, Test, "test object should be instanceof Test") - t.isa(t, Harness, "test object should be instanceof Harness") - t.is(t._Test, Test, "test._Test should be the Test class") - - // now test all the methods. - ; [ "isNotDeepEqual" - , "equals" - , "inequivalent" - , "threw" - , "strictEqual" - , "emit" - , "fail" - , "strictEquals" - , "notLike" - , "dissimilar" - , "true" - , "assert" - , "is" - , "ok" - , "isEqual" - , "isDeeply" - , "deepEqual" - , "deepEquals" - , "pass" - , "length" - , "skip" - , "isNotEqual" - , "looseEquals" - , "false" - , "notDeeply" - , "ifErr" - , "hasFields" - , "isNotDeeply" - , "like" - , "similar" - , "notOk" - , "isDissimilar" - , "isEquivalent" - , "doesNotEqual" - , "isSimilar" - , "notDeepEqual" - , "type" - , "notok" - , "isInequivalent" - , "isNot" - , "same" - , "isInequal" - , "_endNice" - , "ifError" - , "iferror" - , "clear" - , "has" - , "not" - , "timeout" - , "notSimilar" - , "isUnlike" - , "notEquals" - , "unsimilar" - , "result" - , "doesNotThrow" - , "error" - , "constructor" - , "notEqual" - , "throws" - , "isLike" - , "isNotSimilar" - , "isNotEquivalent" - , "inequal" - , "notEquivalent" - , "isNotLike" - , "equivalent" - , "looseEqual" - , "equal" - , "unlike" - , "doesNotHave" - , "comment" - , "isa" - ].forEach(function (method) { - t.ok(t[method], "should have "+method+" method") - t.isa(t[method], "function", method+" method should be a function") - }) - t.end() -}) - diff --git a/node_modules/nodeunit/node_modules/tap/test/timeout.js b/node_modules/nodeunit/node_modules/tap/test/timeout.js deleted file mode 100644 index 4ee409c..0000000 --- a/node_modules/nodeunit/node_modules/tap/test/timeout.js +++ /dev/null @@ -1,33 +0,0 @@ -var tap = require("../") - -tap.test("timeout test with plan only", function (t) { - console.error("timeout test") - t.plan(2) - console.error("t.plan="+t._plan) - setTimeout(function () { - console.error("a assert") - t.ok(true, "a") - }, 1000) - setTimeout(function () { - console.error("b assert") - t.ok(true, "b") - }, 1000) -}) - -tap.test("timeout test with plan and end", function (t) { - console.error("timeout test") - t.plan(2) - - var tc = 2 - console.error("t.plan="+t._plan) - setTimeout(function () { - console.error("a assert") - t.ok(true, "a") - if (-- tc === 0) t.end() - }, 1000) - setTimeout(function () { - console.error("b assert") - t.ok(true, "b") - if (-- tc === 0) t.end() - }, 1000) -}) diff --git a/node_modules/nodeunit/node_modules/tap/test/trivial-success.js b/node_modules/nodeunit/node_modules/tap/test/trivial-success.js deleted file mode 100644 index e69de29..0000000 diff --git a/node_modules/nodeunit/node_modules/tap/test/undefined_indented.js b/node_modules/nodeunit/node_modules/tap/test/undefined_indented.js deleted file mode 100644 index 98abe02..0000000 --- a/node_modules/nodeunit/node_modules/tap/test/undefined_indented.js +++ /dev/null @@ -1,27 +0,0 @@ -var tap = require("../") - -tap.test("consume yaml", function (t) { - t.plan(1) - - var s = - [ "not ok 1 beep boop" - , " ---" - , " stack:" - , " - rawr" - , " - dinosaurs" - , " ..." - ].join("\n") - , c = tap.createConsumer() - - c.on("data", function (res) { - t.same(res, { - id: 1 - , ok: false - , name: " beep boop" // <-- should perhaps .trim() this? - , stack: [ "rawr", "dinosaurs" ] - }) - t.end() - }) - c.write(s) - c.end() -}) diff --git a/node_modules/nodeunit/nodelint.cfg b/node_modules/nodeunit/nodelint.cfg deleted file mode 100644 index d6a3aad..0000000 --- a/node_modules/nodeunit/nodelint.cfg +++ /dev/null @@ -1,7 +0,0 @@ -//See: http://www.jslint.com/lint.html#options -var options = { - //white: false, // if false, strict whitespace rules should be enforced. - indent: 4, - onevar: false, - vars: true // allow multiple var statement per function. -}; diff --git a/node_modules/nodeunit/package.json b/node_modules/nodeunit/package.json deleted file mode 100644 index 85fdcd1..0000000 --- a/node_modules/nodeunit/package.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "name": "nodeunit", - "description": "Easy unit testing for node.js and the browser.", - "maintainers": [ - { - "name": "Caolan McMahon", - "url": "https://github.com/caolan" - } - ], - "contributors": [ - { - "name": "Romain Beauxis", - "url": "https://github.com/toots" - }, - { - "name": "Alex Gorbatchev", - "url": "https://github.com/alexgorbatchev" - }, - { - "name": "Alex Wolfe", - "url": "https://github.com/alexkwolfe" - }, - { - "name": "Carl Fürstenberg", - "url": "https://github.com/azatoth" - }, - { - "name": "Gerad Suyderhoud", - "url": "https://github.com/gerad" - }, - { - "name": "Kadir Pekel", - "url": "https://github.com/coffeemate" - }, - { - "name": "Oleg Efimov", - "url": "https://github.com/Sannis" - }, - { - "name": "Orlando Vazquez", - "url": "https://github.com/orlandov" - }, - { - "name": "Ryan Dahl", - "url": "https://github.com/ry" - }, - { - "name": "Sam Stephenson", - "url": "https://github.com/sstephenson" - }, - { - "name": "Thomas Mayfield", - "url": "https://github.com/thegreatape" - }, - { - "name": "Elijah Insua", - "email": "tmpvar@gmail.com", - "url": "http://tmpvar.com" - } - ], - "version": "0.7.4", - "repository": { - "type": "git", - "url": "http://github.com/caolan/nodeunit.git" - }, - "devDependencies": { - "uglify-js": ">=1.1.0", - "should": ">=0.4.2" - }, - "bugs": { - "url": "http://github.com/caolan/nodeunit/issues" - }, - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/caolan/nodeunit/raw/master/LICENSE" - } - ], - "directories": { - "lib": "./lib", - "doc": "./doc", - "man": "./man1" - }, - "bin": { - "nodeunit": "./bin/nodeunit" - }, - "dependencies": { - "tap": ">=0.2.3" - }, - "man": [ - "/Users/iangraham/.npm/nodeunit/0.7.4/package/man1/nodeunit.1" - ], - "readme": "Nodeunit\n========\n\nSimple syntax, powerful tools. Nodeunit provides easy async unit testing for\nnode.js and the browser.\n\n* Simple to use\n* Just export the tests from a module\n* Works with node.js and in the browser.\n* Helps you avoid common pitfalls when testing asynchronous code\n* Easy to add test cases with setUp and tearDown functions if you wish\n* Flexible reporters for custom output, built-in support for HTML and jUnit XML\n* Allows the use of mocks and stubs\n\n__Contributors__\n\n* [alexgorbatchev](https://github.com/alexgorbatchev)\n* [alexkwolfe](https://github.com/alexkwolfe)\n* [azatoth](https://github.com/azatoth)\n* [kadirpekel](https://github.com/kadirpekel)\n* [lambdalisue](https://github.com/lambdalisue)\n* [luebken](https://github.com/luebken)\n* [orlandov](https://github.com/orlandov)\n* [Sannis](https://github.com/Sannis)\n* [sstephenson](https://github.com/sstephenson)\n* [thegreatape](https://github.com/thegreatape)\n* [mmalecki](https://github.com/mmalecki)\n* and thanks to [cjohansen](https://github.com/cjohansen) for input and advice\n on implementing setUp and tearDown functions. See\n [cjohansen's fork](https://github.com/cjohansen/nodeunit).\n\nAlso, check out gerad's [nodeunit-dsl](https://github.com/gerad/nodeunit-dsl)\nproject, which implements a 'pretty dsl on top of nodeunit'.\n\nMore contributor information can be found in the\n[CONTRIBUTORS.md](https://github.com/caolan/nodeunit/blob/master/CONTRIBUTORS.md)\nfile.\n\nUsage\n-----\n\nHere is an example unit test module:\n\n exports.testSomething = function(test){\n test.expect(1);\n test.ok(true, \"this assertion should pass\");\n test.done();\n };\n\n exports.testSomethingElse = function(test){\n test.ok(false, \"this assertion should fail\");\n test.done();\n };\n\nWhen run using the included test runner, this will output the following:\n\n\n\nInstallation\n------------\n\nThere are two options for installing nodeunit:\n\n1. Clone / download nodeunit from [github](https://github.com/caolan/nodeunit),\n then:\n\n make && sudo make install\n\n2. Install via npm:\n\n npm install nodeunit\n\nAPI Documentation\n-----------------\n\nNodeunit uses the functions available in the node.js\n[assert module](http://nodejs.org/docs/v0.4.2/api/assert.html):\n\n* __ok(value, [message])__ - Tests if value is a true value.\n* __equal(actual, expected, [message])__ - Tests shallow, coercive equality\n with the equal comparison operator ( == ).\n* __notEqual(actual, expected, [message])__ - Tests shallow, coercive\n non-equality with the not equal comparison operator ( != ).\n* __deepEqual(actual, expected, [message])__ - Tests for deep equality.\n* __notDeepEqual(actual, expected, [message])__ - Tests for any deep\n inequality.\n* __strictEqual(actual, expected, [message])__ - Tests strict equality, as\n determined by the strict equality operator ( === )\n* __notStrictEqual(actual, expected, [message])__ - Tests strict non-equality,\n as determined by the strict not equal operator ( !== )\n* __throws(block, [error], [message])__ - Expects block to throw an error.\n* __doesNotThrow(block, [error], [message])__ - Expects block not to throw an\n error.\n* __ifError(value)__ - Tests if value is not a false value, throws if it is a\n true value. Useful when testing the first argument, error in callbacks.\n\nNodeunit also provides the following functions within tests:\n\n* __expect(amount)__ - Specify how many assertions are expected to run within a\n test. Very useful for ensuring that all your callbacks and assertions are\n run.\n* __done()__ - Finish the current test function, and move on to the next. ALL\n tests should call this!\n\nNodeunit aims to be simple and easy to learn. This is achieved through using\nexisting structures (such as node.js modules) to maximum effect, and reducing\nthe API where possible, to make it easier to digest.\n\nTests are simply exported from a module, but they are still run in the order\nthey are defined.\n\n__Note:__ Users of old nodeunit versions may remember using ok, equals and same\nin the style of qunit, instead of the assert functions above. These functions\nstill exist for backwards compatibility, and are simply aliases to their assert\nmodule counterparts.\n\n\nAsynchronous Testing\n--------------------\n\nWhen testing asynchronous code, there are a number of sharp edges to watch out\nfor. Thankfully, nodeunit is designed to help you avoid as many of these\npitfalls as possible. For the most part, testing asynchronous code in nodeunit\n_just works_.\n\n\n### Tests run in series\n\nWhile running tests in parallel seems like a good idea for speeding up your\ntest suite, in practice I've found it means writing much more complicated\ntests. Because of node's module cache, running tests in parallel means mocking\nand stubbing is pretty much impossible. One of the nicest things about testing\nin javascript is the ease of doing stubs:\n\n var _readFile = fs.readFile;\n fs.readFile = function(path, callback){\n // its a stub!\n };\n // test function that uses fs.readFile\n\n // we're done\n fs.readFile = _readFile;\n\nYou cannot do this when running tests in parallel. In order to keep testing as\nsimple as possible, nodeunit avoids it. Thankfully, most unit-test suites run\nfast anyway.\n\n\n### Explicit ending of tests\n\nWhen testing async code its important that tests end at the correct point, not\njust after a given number of assertions. Otherwise your tests can run short,\nending before all assertions have completed. Its important to detect too\nmany assertions as well as too few. Combining explicit ending of tests with\nan expected number of assertions helps to avoid false test passes, so be sure\nto use the test.expect() method at the start of your test functions, and\ntest.done() when finished.\n\n\nGroups, setUp and tearDown\n--------------------------\n\nNodeunit allows the nesting of test functions:\n\n exports.test1 = function (test) {\n ...\n }\n\n exports.group = {\n test2: function (test) {\n ...\n },\n test3: function (test) {\n ...\n }\n }\n\nThis would be run as:\n\n test1\n group - test2\n group - test3\n\nUsing these groups, Nodeunit allows you to define a `setUp` function, which is\nrun before each test, and a `tearDown` function, which is run after each test\ncalls `test.done()`:\n\n module.exports = {\n setUp: function (callback) {\n this.foo = 'bar';\n callback();\n },\n tearDown: function (callback) {\n // clean up\n callback();\n },\n test1: function (test) {\n test.equals(this.foo, 'bar');\n test.done();\n }\n };\n\nIn this way, its possible to have multiple groups of tests in a module, each\ngroup with its own setUp and tearDown functions.\n\n\nRunning Tests\n-------------\n\nNodeunit comes with a basic command-line test runner, which can be installed\nusing 'sudo make install'. Example usage:\n\n nodeunit testmodule1.js testfolder [...]\n\nThe default test reporter uses color output, because I think that's more fun :) I\nintend to add a no-color option in future. To give you a feeling of the fun you'll\nbe having writing tests, lets fix the example at the start of the README:\n\n\n\nAhhh, Doesn't that feel better?\n\nWhen using the included test runner, it will exit using the failed number of\nassertions as the exit code. Exiting with 0 when all tests pass.\n\n\n### Command-line Options\n\n* __--reporter FILE__ - you can set the test reporter to a custom module or\non of the modules in nodeunit/lib/reporters, when omitted, the default test runner\nis used.\n* __--list-reporters__ - list available build-in reporters.\n* __--config FILE__ - load config options from a JSON file, allows\nthe customisation of color schemes for the default test reporter etc. See\nbin/nodeunit.json for current available options.\n* __--version__ or __-v__ - report nodeunit version\n* __--help__ - show nodeunit help\n\n\nRunning tests in the browser\n----------------------------\n\nNodeunit tests can also be run inside the browser. For example usage, see\nthe examples/browser folder. The basic syntax is as follows:\n\n__test.html__\n\n \n \n Example Test Suite\n \n \n \n \n \n \n

Example Test Suite

\n \n \n \n\nHere, suite1 and suite2 are just object literals containing test functions or\ngroups, as would be returned if you did require('test-suite') in node.js:\n\n__suite1.js__\n\n this.suite1 = {\n 'example test': function (test) {\n test.ok(true, 'everything is ok');\n test.done();\n }\n };\n\nIf you wish to use a commonjs format for your test suites (using exports), it is\nup to you to define the commonjs tools for the browser. There are a number of\nalternatives and its important it fits with your existing code, which is\nwhy nodeunit does not currently provide this out of the box.\n\nIn the example above, the tests will run when the page is loaded.\n\nThe browser-version of nodeunit.js is created in dist/browser when you do, 'make\nbrowser'. You'll need [UglifyJS](https://github.com/mishoo/UglifyJS) installed in\norder for it to automatically create nodeunit.min.js.\n\n\nAdding nodeunit to Your Projects\n--------------------------------\n\nIf you don't want people to have to install the nodeunit command-line tool,\nyou'll want to create a script that runs the tests for your project with the\ncorrect require paths set up. Here's an example test script, that assumes you\nhave nodeunit in a suitably located node_modules directory.\n\n #!/usr/bin/env node\n var reporter = require('nodeunit').reporters.default;\n reporter.run(['test']);\n\nIf you're using git, you might find it useful to include nodeunit as a\nsubmodule. Using submodules makes it easy for developers to download nodeunit\nand run your test suite, without cluttering up your repository with\nthe source code. To add nodeunit as a git submodule do the following:\n\n git submodule add git://github.com/caolan/nodeunit.git node_modules/nodeunit\n\nThis will add nodeunit to the node_modules folder of your project. Now, when\ncloning the repository, nodeunit can be downloaded by doing the following:\n\n git submodule init\n git submodule update\n\nLet's update the test script above with a helpful hint on how to get nodeunit,\nif its missing:\n\n #!/usr/bin/env node\n try {\n var reporter = require('nodeunit').reporters.default;\n }\n catch(e) {\n console.log(\"Cannot find nodeunit module.\");\n console.log(\"You can download submodules for this project by doing:\");\n console.log(\"\");\n console.log(\" git submodule init\");\n console.log(\" git submodule update\");\n console.log(\"\");\n process.exit();\n }\n\n process.chdir(__dirname);\n reporter.run(['test']);\n\nNow if someone attempts to run your test suite without nodeunit installed they\nwill be prompted to download the submodules for your project.\n\n\nBuilt-in Test Reporters\n-----------------------\n\n* __default__ - The standard reporter seen in the nodeunit screenshots\n* __minimal__ - Pretty, minimal output, shows errors and progress only\n* __html__ - Outputs a HTML report to stdout\n* __junit__ - Creates jUnit compatible XML reports, which can be used with\n continuous integration tools such as [Hudson](http://hudson-ci.org/).\n* __machineout__ - Simple reporter for machine analysis. There is [nodeunit.vim](https://github.com/lambdalisue/nodeunit.vim)\n which is useful for TDD on VIM\n\n\nWriting a Test Reporter\n---------------------\n\nNodeunit exports runTest(fn, options), runModule(mod, options) and\nrunFiles(paths, options). You'll most likely want to run test suites from\nfiles, which can be done using the latter function. The _options_ argument can\ncontain callbacks which run during testing. Nodeunit provides the following\ncallbacks:\n\n* __moduleStart(name)__ - called before a module is tested\n* __moduleDone(name, assertions)__ - called once all test functions within the\n module have completed (see assertions object reference below)\n ALL tests within the module\n* __testStart(name)__ - called before a test function is run\n* __testDone(name, assertions)__ - called once a test function has completed\n (by calling test.done())\n* __log(assertion)__ - called whenever an assertion is made (see assertion\n object reference below)\n* __done(assertions)__ - called after all tests/modules are complete\n\nThe __assertion__ object:\n\n* __passed()__ - did the assertion pass?\n* __failed()__ - did the assertion fail?\n* __error__ - the AssertionError if the assertion failed\n* __method__ - the nodeunit assertion method used (ok, same, equals...)\n* __message__ - the message the assertion method was called with (optional)\n\nThe __assertionList__ object:\n\n* An array-like object with the following new attributes:\n * __failures()__ - the number of assertions which failed\n * __duration__ - the time taken for the test to complete in msecs\n\nFor a reference implementation of a test reporter, see lib/reporters/default.js in\nthe nodeunit project directory.\n\n\nSandbox utility\n---------------\n\nThis is a function which evaluates JavaScript files in a sandbox and returns the\ncontext. The sandbox function can be used for testing client-side code or private\nun-exported functions within a module.\n\n var sandbox = require('nodeunit').utils.sandbox;\n var example = sandbox('example.js');\n\n__sandbox(files, sandbox)__ - Evaluates JavaScript files in a sandbox, returning\nthe context. The first argument can either be a single filename or an array of\nfilenames. If multiple filenames are given their contents are concatenated before\nevalution. The second argument is an optional context to use for the sandbox.\n\n\nRunning the nodeunit Tests\n--------------------------\n\nThe tests for nodeunit are written using nodeunit itself as the test framework.\nHowever, the module test-base.js first does some basic tests using the assert\nmodule to ensure that test functions are actually run, and a basic level of\nnodeunit functionality is available.\n\nTo run the nodeunit tests do:\n\n make test\n\n__Note:__ There was a bug in node v0.2.0 causing the tests to hang, upgrading\nto v0.2.1 fixes this.\n\n\n__machineout__ reporter\n----------------------------------------------\n\nThe default reporter is really readable for human but for machinally analysis. \nWhen you want to analyze the output of nodeunit, use __machineout__ reporter and you will get\n\n\n\n\nnodeunit with vim\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nThere is [nodeunit.vim](https://github.com/lambdalisue/nodeunit.vim) so you can use nodeunit with VIM.\nThat compiler use __machineout__ reporter and it is useful to use with [vim-makegreen](https://github.com/reinh/vim-makegreen)\n\n \n\nContributing\n------------\n\nContributions to the project are most welcome, so feel free to fork and improve.\nWhen submitting a pull request, please run 'make lint' first to ensure\nwe're following a consistent coding style.\n", - "readmeFilename": "README.md", - "_id": "nodeunit@0.7.4", - "_from": "nodeunit@latest" -} diff --git a/node_modules/nodeunit/share/junit.xml.ejs b/node_modules/nodeunit/share/junit.xml.ejs deleted file mode 100644 index c1db5bb..0000000 --- a/node_modules/nodeunit/share/junit.xml.ejs +++ /dev/null @@ -1,19 +0,0 @@ - -<% for (var i=0; i < suites.length; i++) { %> - <% var suite=suites[i]; %> - - <% for (var j=0; j < suite.testcases.length; j++) { %> - <% var testcase=suites[i].testcases[j]; %> - - <% if (testcase.failure) { %> - - <% if (testcase.failure.backtrace) { %><%= testcase.failure.backtrace %><% } %> - - <% } %> - - <% } %> - -<% } %> diff --git a/node_modules/nodeunit/share/license.js b/node_modules/nodeunit/share/license.js deleted file mode 100644 index f0f326f..0000000 --- a/node_modules/nodeunit/share/license.js +++ /dev/null @@ -1,11 +0,0 @@ -/*! - * Nodeunit - * https://github.com/caolan/nodeunit - * Copyright (c) 2010 Caolan McMahon - * MIT Licensed - * - * json2.js - * http://www.JSON.org/json2.js - * Public Domain. - * NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. - */ diff --git a/node_modules/nodeunit/share/nodeunit.css b/node_modules/nodeunit/share/nodeunit.css deleted file mode 100644 index 274434a..0000000 --- a/node_modules/nodeunit/share/nodeunit.css +++ /dev/null @@ -1,70 +0,0 @@ -/*! - * Styles taken from qunit.css - */ - -h1#nodeunit-header, h1.nodeunit-header { - padding: 15px; - font-size: large; - background-color: #06b; - color: white; - font-family: 'trebuchet ms', verdana, arial; - margin: 0; -} - -h1#nodeunit-header a { - color: white; -} - -h2#nodeunit-banner { - height: 2em; - border-bottom: 1px solid white; - background-color: #eee; - margin: 0; - font-family: 'trebuchet ms', verdana, arial; -} -h2#nodeunit-banner.pass { - background-color: green; -} -h2#nodeunit-banner.fail { - background-color: red; -} - -h2#nodeunit-userAgent, h2.nodeunit-userAgent { - padding: 10px; - background-color: #eee; - color: black; - margin: 0; - font-size: small; - font-weight: normal; - font-family: 'trebuchet ms', verdana, arial; - font-size: 10pt; -} - -div#nodeunit-testrunner-toolbar { - background: #eee; - border-top: 1px solid black; - padding: 10px; - font-family: 'trebuchet ms', verdana, arial; - margin: 0; - font-size: 10pt; -} - -ol#nodeunit-tests { - font-family: 'trebuchet ms', verdana, arial; - font-size: 10pt; -} -ol#nodeunit-tests li strong { - cursor:pointer; -} -ol#nodeunit-tests .pass { - color: green; -} -ol#nodeunit-tests .fail { - color: red; -} - -p#nodeunit-testresult { - margin-left: 1em; - font-size: 10pt; - font-family: 'trebuchet ms', verdana, arial; -} diff --git a/node_modules/nodeunit/test/fixtures/coffee/mock_coffee_module.coffee b/node_modules/nodeunit/test/fixtures/coffee/mock_coffee_module.coffee deleted file mode 100644 index a1c069b..0000000 --- a/node_modules/nodeunit/test/fixtures/coffee/mock_coffee_module.coffee +++ /dev/null @@ -1,4 +0,0 @@ -j = 0 -j += i for i in [0..5] - -exports.name = "mock_coffee_#{j}" diff --git a/node_modules/nodeunit/test/fixtures/dir/mock_module3.js b/node_modules/nodeunit/test/fixtures/dir/mock_module3.js deleted file mode 100644 index 3021776..0000000 --- a/node_modules/nodeunit/test/fixtures/dir/mock_module3.js +++ /dev/null @@ -1 +0,0 @@ -exports.name = 'mock_module3'; diff --git a/node_modules/nodeunit/test/fixtures/dir/mock_module4.js b/node_modules/nodeunit/test/fixtures/dir/mock_module4.js deleted file mode 100644 index 876f9ca..0000000 --- a/node_modules/nodeunit/test/fixtures/dir/mock_module4.js +++ /dev/null @@ -1 +0,0 @@ -exports.name = 'mock_module4'; diff --git a/node_modules/nodeunit/test/fixtures/mock_module1.js b/node_modules/nodeunit/test/fixtures/mock_module1.js deleted file mode 100644 index 4c093ad..0000000 --- a/node_modules/nodeunit/test/fixtures/mock_module1.js +++ /dev/null @@ -1 +0,0 @@ -exports.name = 'mock_module1'; diff --git a/node_modules/nodeunit/test/fixtures/mock_module2.js b/node_modules/nodeunit/test/fixtures/mock_module2.js deleted file mode 100644 index a63d012..0000000 --- a/node_modules/nodeunit/test/fixtures/mock_module2.js +++ /dev/null @@ -1 +0,0 @@ -exports.name = 'mock_module2'; diff --git a/node_modules/nodeunit/test/fixtures/raw_jscode1.js b/node_modules/nodeunit/test/fixtures/raw_jscode1.js deleted file mode 100644 index 2ef7115..0000000 --- a/node_modules/nodeunit/test/fixtures/raw_jscode1.js +++ /dev/null @@ -1,3 +0,0 @@ -function hello_world(arg) { - return "_" + arg + "_"; -} diff --git a/node_modules/nodeunit/test/fixtures/raw_jscode2.js b/node_modules/nodeunit/test/fixtures/raw_jscode2.js deleted file mode 100644 index 55a764e..0000000 --- a/node_modules/nodeunit/test/fixtures/raw_jscode2.js +++ /dev/null @@ -1,3 +0,0 @@ -function get_a_variable() { - return typeof a_variable; -} diff --git a/node_modules/nodeunit/test/fixtures/raw_jscode3.js b/node_modules/nodeunit/test/fixtures/raw_jscode3.js deleted file mode 100644 index 1fd1e78..0000000 --- a/node_modules/nodeunit/test/fixtures/raw_jscode3.js +++ /dev/null @@ -1 +0,0 @@ -var t=t?t+1:1; diff --git a/node_modules/nodeunit/test/test-base.js b/node_modules/nodeunit/test/test-base.js deleted file mode 100644 index 5335046..0000000 --- a/node_modules/nodeunit/test/test-base.js +++ /dev/null @@ -1,239 +0,0 @@ -/* - * This module is not a plain nodeunit test suite, but instead uses the - * assert module to ensure a basic level of functionality is present, - * allowing the rest of the tests to be written using nodeunit itself. - * - * THIS FILE SHOULD BE BROWSER-COMPATIBLE JS! - * You can use @REMOVE_LINE_FOR_BROWSER to remove code from the browser build. - * Only code on that line will be removed, its mostly to avoid requiring code - * that is node specific - */ - -var assert = require('assert'), // @REMOVE_LINE_FOR_BROWSER - async = require('../deps/async'), // @REMOVE_LINE_FOR_BROWSER - nodeunit = require('../lib/nodeunit'); // @REMOVE_LINE_FOR_BROWSER - - -// NOT A TEST - util function to make testing faster. -// retries the assertion until it passes or the timeout is reached, -// at which point it throws the assertion error -var waitFor = function (fn, timeout, callback, start) { - start = start || new Date().getTime(); - callback = callback || function () {}; - try { - fn(); - callback(); - } - catch (e) { - if (e instanceof assert.AssertionError) { - var now = new Date().getTime(); - if (now - start >= timeout) { - throw e; - } - else { - async.nextTick(function () { - waitFor(fn, timeout, callback, start); - }); - } - } - else { - throw e; - } - } -}; - - -// TESTS: - -// Are exported tests actually run? - store completed tests in this variable -// for checking later -var tests_called = {}; - -// most basic test that should run, the tests_called object is tested -// at the end of this module to ensure the tests were actually run by nodeunit -exports.testCalled = function (test) { - tests_called.testCalled = true; - test.done(); -}; - -// generates test functions for nodeunit assertions -var makeTest = function (method, args_pass, args_fail) { - return function (test) { - var test1_called = false; - var test2_called = false; - - // test pass - nodeunit.runTest( - 'testname', - function (test) { - test[method].apply(test, args_pass); - test.done(); - }, - {testDone: function (name, assertions) { - assert.equal(assertions.length, 1); - assert.equal(assertions.failures(), 0); - }}, - function () { - test1_called = true; - } - ); - - // test failure - nodeunit.runTest( - 'testname', - function (test) { - test[method].apply(test, args_fail); - test.done(); - }, - {testDone: function (name, assertions) { - assert.equal(assertions.length, 1); - assert.equal(assertions.failures(), 1); - }}, - function () { - test2_called = true; - } - ); - - // ensure tests were run - waitFor(function () { - assert.ok(test1_called); - assert.ok(test2_called); - tests_called[method] = true; - }, 500, test.done); - }; -}; - -// ensure basic assertions are working: -exports.testOk = makeTest('ok', [true], [false]); -exports.testEquals = makeTest('equals', [1, 1], [1, 2]); -exports.testSame = makeTest('same', - [{test: 'test'}, {test: 'test'}], - [{test: 'test'}, {monkey: 'penguin'}] -); - -// from the assert module: -exports.testEqual = makeTest('equal', [1, 1], [1, 2]); -exports.testNotEqual = makeTest('notEqual', [1, 2], [1, 1]); -exports.testDeepEqual = makeTest('deepEqual', - [{one: 1}, {one: 1}], [{one: 1}, {two: 2}] -); -exports.testNotDeepEqual = makeTest('notDeepEqual', - [{one: 1}, {two: 2}], [{one: 1}, {one: 1}] -); -exports.testStrictEqual = makeTest('strictEqual', [1, 1], [1, true]); -exports.testNotStrictEqual = makeTest('notStrictEqual', [true, 1], [1, 1]); -exports.testThrows = makeTest('throws', - [function () { - throw new Error('test'); - }], - [function () { - return; - }] -); -exports.testThrowsWithReGex = makeTest('throws', - [function () { - throw new Error('test'); - }, /test/], - [function () { - throw new Error('test'); - }, /fail/] -); -exports.testThrowsWithErrorValidation = makeTest('throws', - [function () { - throw new Error('test'); - }, function(err) { - return true; - }], - [function () { - throw new Error('test'); - }, function(err) { - return false; - }] -); -exports.testDoesNotThrows = makeTest('doesNotThrow', - [function () { - return; - }], - [function () { - throw new Error('test'); - }] -); -exports.testIfError = makeTest('ifError', [false], [new Error('test')]); - - -exports.testExpect = function (test) { - var test1_called = false, - test2_called = false, - test3_called = false; - - // correct number of tests run - nodeunit.runTest( - 'testname', - function (test) { - test.expect(2); - test.ok(true); - test.ok(true); - test.done(); - }, - {testDone: function (name, assertions) { - test.equals(assertions.length, 2); - test.equals(assertions.failures(), 0); - }}, - function () { - test1_called = true; - } - ); - - // no tests run - nodeunit.runTest( - 'testname', - function (test) { - test.expect(2); - test.done(); - }, - {testDone: function (name, assertions) { - test.equals(assertions.length, 1); - test.equals(assertions.failures(), 1); - }}, - function () { - test2_called = true; - } - ); - - // incorrect number of tests run - nodeunit.runTest( - 'testname', - function (test) { - test.expect(2); - test.ok(true); - test.ok(true); - test.ok(true); - test.done(); - }, - {testDone: function (name, assertions) { - test.equals(assertions.length, 4); - test.equals(assertions.failures(), 1); - }}, - function () { - test3_called = true; - } - ); - - // ensure callbacks fired - waitFor(function () { - assert.ok(test1_called); - assert.ok(test2_called); - assert.ok(test3_called); - tests_called.expect = true; - }, 1000, test.done); -}; - - -// tests are async, so wait for them to be called -waitFor(function () { - assert.ok(tests_called.testCalled); - assert.ok(tests_called.ok); - assert.ok(tests_called.equals); - assert.ok(tests_called.same); - assert.ok(tests_called.expect); -}, 10000); diff --git a/node_modules/nodeunit/test/test-bettererrors.js b/node_modules/nodeunit/test/test-bettererrors.js deleted file mode 100644 index d20ca24..0000000 --- a/node_modules/nodeunit/test/test-bettererrors.js +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Test utils.betterErrors. utils.betterErrors should provide sensible error messages even when the error does not - * contain expected, actual or operator. - */ -var assert = require("../lib/assert"); -var should = require("should"); -var types = require("../lib/types"); -var util = require('util'); -var utils = require("../lib/utils"); - -function betterErrorStringFromError(error) { - var assertion = types.assertion({error: error}); - var better = utils.betterErrors(assertion); - return better.error.stack.toString(); -} - -function performBasicChecks(betterErrorString) { - betterErrorString.should.include("AssertionError"); - betterErrorString.should.include("test-bettererrors"); - betterErrorString.should.not.include("undefined"); -} - -/** - * Control test. Provide an AssertionError that contains actual, expected operator values. - * @param test the test object from nodeunit - */ -exports.testEqual = function (test) { - try { - assert.equal(true, false); - } catch (error) { - var betterErrorString = betterErrorStringFromError(error); - performBasicChecks(betterErrorString); - betterErrorString.should.include("true"); - betterErrorString.should.include("false"); - betterErrorString.should.include("=="); - test.done(); - } -}; - -/** - * Test an AssertionError that does not contain actual, expected or operator values. - * @param test the test object from nodeunit - */ -exports.testAssertThrows = function (test) { - try { - assert.throws(function () { - }); - } catch (error) { - var betterErrorString = betterErrorStringFromError(error); - performBasicChecks(betterErrorString); - test.done(); - } -}; - -/** - * Test with an error that is not an AssertionError. - * @param test the test object from nodeunit - */ -exports.testNonAssertionError = function (test) { - try { - throw new Error("test error"); - } catch (error) { - var betterErrorString = betterErrorStringFromError(error); - betterErrorString.should.not.include("AssertionError"); - betterErrorString.should.include("Error"); - betterErrorString.should.include("test error"); - betterErrorString.should.include("test-bettererrors"); - betterErrorString.should.not.include("undefined"); - test.done(); - } -}; diff --git a/node_modules/nodeunit/test/test-failing-callbacks.js b/node_modules/nodeunit/test/test-failing-callbacks.js deleted file mode 100644 index 08f7eb5..0000000 --- a/node_modules/nodeunit/test/test-failing-callbacks.js +++ /dev/null @@ -1,114 +0,0 @@ -var nodeunit = require('../lib/nodeunit'); - - -exports.testFailingLog = function (test) { - test.expect(3); - - // this is meant to bubble to the top, and will be ignored for the purposes - // of testing: - var ignored_error = new Error('ignore this callback error'); - var err_handler = function (err) { - if (err && err.message !== ignored_error.message) { - throw err; - } - }; - process.addListener('uncaughtException', err_handler); - - // A failing callback should not affect the test outcome - var testfn = function (test) { - test.ok(true, 'test.ok'); - test.done(); - }; - nodeunit.runTest('testname', testfn, { - log: function (assertion) { - test.ok(true, 'log called'); - throw ignored_error; - }, - testDone: function (name, assertions) { - test.equals(assertions.failures(), 0, 'failures'); - test.equals(assertions.length, 1, 'total'); - process.removeListener('uncaughtException', err_handler); - } - }, test.done); -}; - -exports.testFailingTestDone = function (test) { - test.expect(2); - - var ignored_error = new Error('ignore this callback error'); - var err_handler = function (err) { - if (err && err.message !== ignored_error.message) { - throw err; - } - }; - process.addListener('uncaughtException', err_handler); - - // A failing callback should not affect the test outcome - var testfn = function (test) { - test.done(); - }; - nodeunit.runTest('testname', testfn, { - log: function (assertion) { - test.ok(false, 'log should not be called'); - }, - testDone: function (name, assertions) { - test.equals(assertions.failures(), 0, 'failures'); - test.equals(assertions.length, 0, 'total'); - process.nextTick(function () { - process.removeListener('uncaughtException', err_handler); - test.done(); - }); - throw ignored_error; - } - }, function () {}); -}; - -exports.testAssertionObj = function (test) { - test.expect(4); - var testfn = function (test) { - test.ok(true, 'ok true'); - test.done(); - }; - nodeunit.runTest('testname', testfn, { - log: function (assertion) { - test.ok(assertion.passed() === true, 'assertion.passed'); - test.ok(assertion.failed() === false, 'assertion.failed'); - }, - testDone: function (name, assertions) { - test.equals(assertions.failures(), 0, 'failures'); - test.equals(assertions.length, 1, 'total'); - } - }, test.done); -}; - -exports.testLogOptional = function (test) { - test.expect(2); - var testfn = function (test) { - test.ok(true, 'ok true'); - test.done(); - }; - nodeunit.runTest('testname', testfn, { - testDone: function (name, assertions) { - test.equals(assertions.failures(), 0, 'failures'); - test.equals(assertions.length, 1, 'total'); - } - }, test.done); -}; - -exports.testExpectWithFailure = function (test) { - test.expect(3); - var testfn = function (test) { - test.expect(1); - test.ok(false, 'test.ok'); - test.done(); - }; - nodeunit.runTest('testname', testfn, { - log: function (assertion) { - test.equals(assertion.method, 'ok', 'assertion.method'); - }, - testDone: function (name, assertions) { - test.equals(assertions.failures(), 1, 'failures'); - test.equals(assertions.length, 1, 'total'); - } - }, test.done); -}; diff --git a/node_modules/nodeunit/test/test-httputil.js b/node_modules/nodeunit/test/test-httputil.js deleted file mode 100644 index e5ee25c..0000000 --- a/node_modules/nodeunit/test/test-httputil.js +++ /dev/null @@ -1,55 +0,0 @@ -var nodeunit = require('../lib/nodeunit'); -var httputil = require('../lib/utils').httputil; - -exports.testHttpUtilBasics = function (test) { - - test.expect(6); - - httputil(function (req, resp) { - test.equal(req.method, 'PUT'); - test.equal(req.url, '/newpair'); - test.equal(req.headers.foo, 'bar'); - - resp.writeHead(500, {'content-type': 'text/plain'}); - resp.end('failed'); - }, function (server, client) { - client.fetch('PUT', '/newpair', {'foo': 'bar'}, function (resp) { - test.equal(resp.statusCode, 500); - test.equal(resp.headers['content-type'], 'text/plain'); - test.equal(resp.body, 'failed'); - - server.close(); - test.done(); - }); - }); -}; - -exports.testHttpUtilJsonHandling = function (test) { - - test.expect(9); - - httputil(function (req, resp) { - test.equal(req.method, 'GET'); - test.equal(req.url, '/'); - test.equal(req.headers.foo, 'bar'); - - var testdata = {foo1: 'bar', foo2: 'baz'}; - - resp.writeHead(200, {'content-type': 'application/json'}); - resp.end(JSON.stringify(testdata)); - - }, function (server, client) { - client.fetch('GET', '/', {'foo': 'bar'}, function (resp) { - test.equal(resp.statusCode, 200); - test.equal(resp.headers['content-type'], 'application/json'); - - test.ok(resp.bodyAsObject); - test.equal(typeof resp.bodyAsObject, 'object'); - test.equal(resp.bodyAsObject.foo1, 'bar'); - test.equal(resp.bodyAsObject.foo2, 'baz'); - - server.close(); - test.done(); - }); - }); -}; diff --git a/node_modules/nodeunit/test/test-runfiles.js b/node_modules/nodeunit/test/test-runfiles.js deleted file mode 100644 index ce1a4cd..0000000 --- a/node_modules/nodeunit/test/test-runfiles.js +++ /dev/null @@ -1,214 +0,0 @@ -var assert = require('assert'), - fs = require('fs'), - path = require('path'), - nodeunit = require('../lib/nodeunit'); - - -var setup = function (fn) { - return function (test) { - process.chdir(__dirname); - var env = { - mock_module1: require(__dirname + '/fixtures/mock_module1'), - mock_module2: require(__dirname + '/fixtures/mock_module2'), - mock_module3: require(__dirname + '/fixtures/dir/mock_module3'), - mock_module4: require(__dirname + '/fixtures/dir/mock_module4') - }; - fn.call(env, test); - }; -}; - - -exports.testRunFiles = setup(function (test) { - test.expect(24); - var runModule_copy = nodeunit.runModule; - - var runModule_calls = []; - var modules = []; - - var opts = { - moduleStart: function () { - return 'moduleStart'; - }, - testDone: function () { - return 'testDone'; - }, - testStart: function () { - return 'testStart'; - }, - log: function () { - return 'log'; - }, - done: function (assertions) { - test.equals(assertions.failures(), 0, 'failures'); - test.equals(assertions.length, 4, 'length'); - test.ok(typeof assertions.duration === "number"); - - var called_with = function (name) { - return runModule_calls.some(function (m) { - return m.name === name; - }); - }; - test.ok(called_with('mock_module1'), 'mock_module1 ran'); - test.ok(called_with('mock_module2'), 'mock_module2 ran'); - test.ok(called_with('mock_module3'), 'mock_module3 ran'); - test.ok(called_with('mock_module4'), 'mock_module4 ran'); - test.equals(runModule_calls.length, 4); - - nodeunit.runModule = runModule_copy; - test.done(); - } - }; - - nodeunit.runModule = function (name, mod, options, callback) { - test.equals(options.testDone, opts.testDone); - test.equals(options.testStart, opts.testStart); - test.equals(options.log, opts.log); - test.ok(typeof name === "string"); - runModule_calls.push(mod); - var m = [{failed: function () { - return false; - }}]; - modules.push(m); - callback(null, m); - }; - - nodeunit.runFiles( - [__dirname + '/fixtures/mock_module1.js', - __dirname + '/fixtures/mock_module2.js', - __dirname + '/fixtures/dir'], - opts - ); -}); - -exports.testRunFilesEmpty = function (test) { - test.expect(3); - nodeunit.runFiles([], { - moduleStart: function () { - test.ok(false, 'should not be called'); - }, - testDone: function () { - test.ok(false, 'should not be called'); - }, - testStart: function () { - test.ok(false, 'should not be called'); - }, - log: function () { - test.ok(false, 'should not be called'); - }, - done: function (assertions) { - test.equals(assertions.failures(), 0, 'failures'); - test.equals(assertions.length, 0, 'length'); - test.ok(typeof assertions.duration === "number"); - test.done(); - } - }); -}; - - -exports.testEmptyDir = function (test) { - var dir2 = __dirname + '/fixtures/dir2'; - - // git doesn't like empty directories, so we have to create one - path.exists(dir2, function (exists) { - if (!exists) { - fs.mkdirSync(dir2, 0777); - } - - // runFiles on empty directory: - nodeunit.runFiles([dir2], { - moduleStart: function () { - test.ok(false, 'should not be called'); - }, - testDone: function () { - test.ok(false, 'should not be called'); - }, - testStart: function () { - test.ok(false, 'should not be called'); - }, - log: function () { - test.ok(false, 'should not be called'); - }, - done: function (assertions) { - test.equals(assertions.failures(), 0, 'failures'); - test.equals(assertions.length, 0, 'length'); - test.ok(typeof assertions.duration === "number"); - test.done(); - } - }); - }); -}; - - -var CoffeeScript; -try { - CoffeeScript = require('coffee-script'); -} catch (e) { -} - -if (CoffeeScript) { - exports.testCoffeeScript = function (test) { - process.chdir(__dirname); - var env = { - mock_coffee_module: require(__dirname + - '/fixtures/coffee/mock_coffee_module') - }; - - test.expect(9); - var runModule_copy = nodeunit.runModule; - - var runModule_calls = []; - var modules = []; - - var opts = { - moduleStart: function () { - return 'moduleStart'; - }, - testDone: function () { - return 'testDone'; - }, - testStart: function () { - return 'testStart'; - }, - log: function () { - return 'log'; - }, - done: function (assertions) { - test.equals(assertions.failures(), 0, 'failures'); - test.equals(assertions.length, 1, 'length'); - test.ok(typeof assertions.duration === "number"); - - var called_with = function (name) { - return runModule_calls.some(function (m) { - return m.name === name; - }); - }; - test.ok( - called_with('mock_coffee_15'), - 'mock_coffee_module ran' - ); - test.equals(runModule_calls.length, 1); - - nodeunit.runModule = runModule_copy; - test.done(); - } - }; - - nodeunit.runModule = function (name, mod, options, callback) { - test.equals(options.testDone, opts.testDone); - test.equals(options.testStart, opts.testStart); - test.equals(options.log, opts.log); - test.ok(typeof name === "string"); - runModule_calls.push(mod); - var m = [{failed: function () { - return false; - }}]; - modules.push(m); - callback(null, m); - }; - - nodeunit.runFiles( - [__dirname + 'fixtures/coffee/mock_coffee_module.coffee'], - opts - ); - }; -} diff --git a/node_modules/nodeunit/test/test-runmodule.js b/node_modules/nodeunit/test/test-runmodule.js deleted file mode 100644 index 19fe5c7..0000000 --- a/node_modules/nodeunit/test/test-runmodule.js +++ /dev/null @@ -1,177 +0,0 @@ -/* THIS FILE SHOULD BE BROWSER-COMPATIBLE JS! - * You can use @REMOVE_LINE_FOR_BROWSER to remove code from the browser build. - * Only code on that line will be removed, its mostly to avoid requiring code - * that is node specific - */ - -var nodeunit = require('../lib/nodeunit'); // @REMOVE_LINE_FOR_BROWSER - - -exports.testRunModule = function (test) { - test.expect(11); - var call_order = []; - var testmodule = { - test1: function (test) { - call_order.push('test1'); - test.ok(true, 'ok true'); - test.done(); - }, - test2: function (test) { - call_order.push('test2'); - test.ok(false, 'ok false'); - test.ok(false, 'ok false'); - test.done(); - }, - test3: function (test) { - call_order.push('test3'); - test.done(); - } - }; - nodeunit.runModule('testmodule', testmodule, { - log: function (assertion) { - call_order.push('log'); - }, - testStart: function (name) { - call_order.push('testStart'); - test.ok( - name.toString() === 'test1' || - name.toString() === 'test2' || - name.toString() === 'test3', - 'testStart called with test name ' - ); - }, - testDone: function (name, assertions) { - call_order.push('testDone'); - test.ok( - name.toString() === 'test1' || - name.toString() === 'test2' || - name.toString() === 'test3', - 'testDone called with test name' - ); - }, - moduleDone: function (name, assertions) { - call_order.push('moduleDone'); - test.equals(assertions.length, 3); - test.equals(assertions.failures(), 2); - test.equals(name, 'testmodule'); - test.ok(typeof assertions.duration === "number"); - test.same(call_order, [ - 'testStart', 'test1', 'log', 'testDone', - 'testStart', 'test2', 'log', 'log', 'testDone', - 'testStart', 'test3', 'testDone', - 'moduleDone' - ]); - } - }, test.done); -}; - - -exports.testRunModuleTestSpec = function (test) { - test.expect(6); - var call_order = []; - var testmodule = { - test1: function (test) { - test.ok(true, 'ok true'); - test.done(); - }, - test2: function (test) { - call_order.push('test2'); - test.ok(false, 'ok false'); - test.ok(false, 'ok false'); - test.done(); - }, - test3: function (test) { - test.done(); - } - }; - nodeunit.runModule('testmodule', testmodule, { - testspec: "test2", - log: function (assertion) { - call_order.push('log'); - }, - testStart: function (name) { - call_order.push('testStart'); - test.equals( - name,'test2', - 'testStart called with test name ' - ); - }, - testDone: function (name, assertions) { - call_order.push('testDone'); - test.equal( - name, 'test2', - 'testDone called with test name' - ); - }, - moduleDone: function (name, assertions) { - call_order.push('moduleDone'); - test.equals(assertions.length, 2); - test.equals(name, 'testmodule'); - test.ok(typeof assertions.duration === "number"); - test.same(call_order, [ - 'testStart', 'test2', 'log', 'log', 'testDone', - 'moduleDone' - ]); - } - }, test.done); -}; - -exports.testRunModuleEmpty = function (test) { - nodeunit.runModule('module with no exports', {}, { - log: function (assertion) { - test.ok(false, 'log should not be called'); - }, - testStart: function (name) { - test.ok(false, 'testStart should not be called'); - }, - testDone: function (name, assertions) { - test.ok(false, 'testDone should not be called'); - }, - moduleDone: function (name, assertions) { - test.equals(assertions.length, 0); - test.equals(assertions.failures(), 0); - test.equals(name, 'module with no exports'); - test.ok(typeof assertions.duration === "number"); - } - }, test.done); -}; - - -exports.testNestedTests = function (test) { - var call_order = []; - var m = { - test1: function (test) { - test.done(); - }, - suite: { - t1: function (test) { - test.done(); - }, - t2: function (test) { - test.done(); - }, - another_suite: { - t3: function (test) { - test.done(); - } - } - } - }; - nodeunit.runModule('modulename', m, { - testStart: function (name) { - call_order.push(['testStart'].concat(name)); - }, - testDone: function (name, assertions) { - call_order.push(['testDone'].concat(name)); - } - }, function () { - test.same(call_order, [ - ['testStart', 'test1'], ['testDone', 'test1'], - ['testStart', 'suite', 't1'], ['testDone', 'suite', 't1'], - ['testStart', 'suite', 't2'], ['testDone', 'suite', 't2'], - ['testStart', 'suite', 'another_suite', 't3'], - ['testDone', 'suite', 'another_suite', 't3'] - ]); - test.done(); - }); -}; diff --git a/node_modules/nodeunit/test/test-runtest.js b/node_modules/nodeunit/test/test-runtest.js deleted file mode 100644 index 8fc3d52..0000000 --- a/node_modules/nodeunit/test/test-runtest.js +++ /dev/null @@ -1,46 +0,0 @@ -/* THIS FILE SHOULD BE BROWSER-COMPATIBLE JS! - * You can use @REMOVE_LINE_FOR_BROWSER to remove code from the browser build. - * Only code on that line will be removed, its mostly to avoid requiring code - * that is node specific - */ - -var nodeunit = require('../lib/nodeunit'); // @REMOVE_LINE_FOR_BROWSER - - -exports.testArgs = function (test) { - test.ok(test.expect instanceof Function, 'test.expect'); - test.ok(test.done instanceof Function, 'test.done'); - test.ok(test.ok instanceof Function, 'test.ok'); - test.ok(test.same instanceof Function, 'test.same'); - test.ok(test.equals instanceof Function, 'test.equals'); - test.done(); -}; - -exports.testDoneCallback = function (test) { - test.expect(4); - nodeunit.runTest('testname', exports.testArgs, { - testDone: function (name, assertions) { - test.equals(assertions.failures(), 0, 'failures'); - test.equals(assertions.length, 5, 'length'); - test.ok(typeof assertions.duration === "number"); - test.equals(name, 'testname'); - } - }, test.done); -}; - -exports.testThrowError = function (test) { - test.expect(3); - var err = new Error('test'); - var testfn = function (test) { - throw err; - }; - nodeunit.runTest('testname', testfn, { - log: function (assertion) { - test.same(assertion.error, err, 'assertion.error'); - }, - testDone: function (name, assertions) { - test.equals(assertions.failures(), 1); - test.equals(assertions.length, 1); - } - }, test.done); -}; diff --git a/node_modules/nodeunit/test/test-sandbox.js b/node_modules/nodeunit/test/test-sandbox.js deleted file mode 100644 index 1b249d7..0000000 --- a/node_modules/nodeunit/test/test-sandbox.js +++ /dev/null @@ -1,31 +0,0 @@ -var nodeunit = require('../lib/nodeunit'); -var sandbox = require('../lib/utils').sandbox; -var testCase = nodeunit.testCase; - -exports.testSimpleSandbox = function (test) { - var raw_jscode1 = sandbox(__dirname + '/fixtures/raw_jscode1.js'); - test.equal(raw_jscode1.hello_world('foo'), '_foo_', 'evaluation ok'); - test.done(); -}; - -exports.testSandboxContext = function (test) { - var a_variable = 42; // should not be visible in the sandbox - var raw_jscode2 = sandbox(__dirname + '/fixtures/raw_jscode2.js'); - a_variable = 42; // again for the win - test.equal( - raw_jscode2.get_a_variable(), - 'undefined', - 'the variable should not be defined' - ); - test.done(); -}; - -exports.testSandboxMultiple = function (test) { - var raw_jscode3 = sandbox([ - __dirname + '/fixtures/raw_jscode3.js', - __dirname + '/fixtures/raw_jscode3.js', - __dirname + '/fixtures/raw_jscode3.js' - ]); - test.equal(raw_jscode3.t, 3, 'two files loaded'); - test.done(); -}; diff --git a/node_modules/nodeunit/test/test-testcase-legacy.js b/node_modules/nodeunit/test/test-testcase-legacy.js deleted file mode 100644 index 1dfd9a7..0000000 --- a/node_modules/nodeunit/test/test-testcase-legacy.js +++ /dev/null @@ -1,257 +0,0 @@ -/* THIS FILE SHOULD BE BROWSER-COMPATIBLE JS! - * You can use @REMOVE_LINE_FOR_BROWSER to remove code from the browser build. - * Only code on that line will be removed, its mostly to avoid requiring code - * that is node specific - */ - -var nodeunit = require('../lib/nodeunit'); // @REMOVE_LINE_FOR_BROWSER -var testCase = nodeunit.testCase; - -exports.testTestCase = function (test) { - test.expect(7); - var call_order = []; - var s = testCase({ - setUp: function (callback) { - call_order.push('setUp'); - test.equals(this.one, undefined); - this.one = 1; - callback(); - }, - tearDown: function (callback) { - call_order.push('tearDown'); - test.ok(true, 'tearDown called'); - callback(); - }, - test1: function (t) { - call_order.push('test1'); - test.equals(this.one, 1); - this.one = 2; - t.done(); - }, - test2: function (t) { - call_order.push('test2'); - test.equals(this.one, 1); - t.done(); - } - }); - nodeunit.runSuite(null, s, {}, function () { - test.same(call_order, [ - 'setUp', 'test1', 'tearDown', - 'setUp', 'test2', 'tearDown' - ]); - test.done(); - }); -}; - -exports.tearDownAfterError = function (test) { - test.expect(1); - var s = testCase({ - tearDown: function (callback) { - test.ok(true, 'tearDown called'); - callback(); - }, - test: function (t) { - throw new Error('some error'); - } - }); - nodeunit.runSuite(null, s, {}, function () { - test.done(); - }); -}; - -exports.catchSetUpError = function (test) { - test.expect(2); - var test_error = new Error('test error'); - var s = testCase({ - setUp: function (callback) { - throw test_error; - }, - test: function (t) { - test.ok(false, 'test function should not be called'); - t.done(); - } - }); - nodeunit.runSuite(null, s, {}, function (err, assertions) { - test.equal(assertions.length, 1); - test.equal(assertions[0].error, test_error); - test.done(); - }); -}; - -exports.setUpErrorCallback = function (test) { - test.expect(2); - var test_error = new Error('test error'); - var s = testCase({ - setUp: function (callback) { - callback(test_error); - }, - test: function (t) { - test.ok(false, 'test function should not be called'); - t.done(); - } - }); - nodeunit.runSuite(null, s, {}, function (err, assertions) { - test.equal(assertions.length, 1); - test.equal(assertions[0].error, test_error); - test.done(); - }); -}; - -exports.catchTearDownError = function (test) { - test.expect(2); - var test_error = new Error('test error'); - var s = testCase({ - tearDown: function (callback) { - throw test_error; - }, - test: function (t) { - t.done(); - } - }); - nodeunit.runSuite(null, s, {}, function (err, assertions) { - test.equal(assertions.length, 1); - test.equal(assertions[0].error, test_error); - test.done(); - }); -}; - -exports.tearDownErrorCallback = function (test) { - test.expect(2); - var test_error = new Error('test error'); - var s = testCase({ - tearDown: function (callback) { - callback(test_error); - }, - test: function (t) { - t.done(); - } - }); - nodeunit.runSuite(null, s, {}, function (err, assertions) { - test.equal(assertions.length, 1); - test.equal(assertions[0].error, test_error); - test.done(); - }); -}; - -exports.testErrorAndtearDownError = function (test) { - test.expect(3); - var error1 = new Error('test error one'); - var error2 = new Error('test error two'); - var s = testCase({ - tearDown: function (callback) { - callback(error2); - }, - test: function (t) { - t.done(error1); - } - }); - nodeunit.runSuite(null, s, {}, function (err, assertions) { - test.equal(assertions.length, 2); - test.equal(assertions[0].error, error1); - test.equal(assertions[1].error, error2); - test.done(); - }); -}; - -exports.testCaseGroups = function (test) { - var call_order = []; - var s = testCase({ - setUp: function (callback) { - call_order.push('setUp'); - callback(); - }, - tearDown: function (callback) { - call_order.push('tearDown'); - callback(); - }, - test1: function (test) { - call_order.push('test1'); - test.done(); - }, - group1: { - test2: function (test) { - call_order.push('group1.test2'); - test.done(); - } - } - }); - nodeunit.runSuite(null, s, {}, function (err, assertions) { - test.same(call_order, [ - 'setUp', - 'test1', - 'tearDown', - 'setUp', - 'group1.test2', - 'tearDown' - ]); - test.done(); - }); -}; - -exports.nestedTestCases = function (test) { - var call_order = []; - var s = testCase({ - setUp: function (callback) { - call_order.push('setUp'); - callback(); - }, - tearDown: function (callback) { - call_order.push('tearDown'); - callback(); - }, - test1: function (test) { - call_order.push('test1'); - test.done(); - }, - group1: testCase({ - setUp: function (callback) { - call_order.push('group1.setUp'); - callback(); - }, - tearDown: function (callback) { - call_order.push('group1.tearDown'); - callback(); - }, - test2: function (test) { - call_order.push('group1.test2'); - test.done(); - } - }) - }); - nodeunit.runSuite(null, s, {}, function (err, assertions) { - test.same(call_order, [ - 'setUp', - 'test1', - 'tearDown', - 'setUp', - 'group1.setUp', - 'group1.test2', - 'group1.tearDown', - 'tearDown' - ]); - test.done(); - }); -}; - -exports.deepNestedTestCases = function (test) { - var val = 'foo'; - var s = testCase({ - setUp: function (callback) { - val = 'bar'; - callback(); - }, - group1: testCase({ - test: testCase({ - test2: function (test) { - test.equal(val, 'bar'); - test.done(); - } - }) - }) - }); - nodeunit.runSuite(null, s, {}, function (err, assertions) { - test.ok(!assertions[0].failed()); - test.equal(assertions.length, 1); - test.done(); - }); -}; diff --git a/node_modules/nodeunit/test/test-testcase.js b/node_modules/nodeunit/test/test-testcase.js deleted file mode 100644 index 5d33b0b..0000000 --- a/node_modules/nodeunit/test/test-testcase.js +++ /dev/null @@ -1,256 +0,0 @@ -/* THIS FILE SHOULD BE BROWSER-COMPATIBLE JS! - * You can use @REMOVE_LINE_FOR_BROWSER to remove code from the browser build. - * Only code on that line will be removed, its mostly to avoid requiring code - * that is node specific - */ - -var nodeunit = require('../lib/nodeunit'); // @REMOVE_LINE_FOR_BROWSER - -exports.testTestCase = function (test) { - test.expect(7); - var call_order = []; - var s = { - setUp: function (callback) { - call_order.push('setUp'); - test.equals(this.one, undefined, 'in setUp, this.one not set'); - this.one = 1; - callback(); - }, - tearDown: function (callback) { - call_order.push('tearDown'); - test.ok(true, 'tearDown called'); - callback(); - }, - test1: function (t) { - call_order.push('test1'); - test.equals(this.one, 1, 'in test1, this.one is 1'); - this.one = 2; - t.done(); - }, - test2: function (t) { - call_order.push('test2'); - test.equals(this.one, 1, 'in test2, this.one is still 1'); - t.done(); - } - }; - nodeunit.runSuite(null, s, {}, function () { - test.same(call_order, [ - 'setUp', 'test1', 'tearDown', - 'setUp', 'test2', 'tearDown' - ]); - test.done(); - }); -}; - -exports.tearDownAfterError = function (test) { - test.expect(1); - var s = { - tearDown: function (callback) { - test.ok(true, 'tearDown called'); - callback(); - }, - test: function (t) { - throw new Error('some error'); - } - }; - nodeunit.runSuite(null, s, {}, function () { - test.done(); - }); -}; - -exports.catchSetUpError = function (test) { - test.expect(2); - var test_error = new Error('test error'); - var s = { - setUp: function (callback) { - throw test_error; - }, - test: function (t) { - test.ok(false, 'test function should not be called'); - t.done(); - } - }; - nodeunit.runSuite(null, s, {}, function (err, assertions) { - test.equal(assertions.length, 1); - test.equal(assertions[0].error, test_error); - test.done(); - }); -}; - -exports.setUpErrorCallback = function (test) { - test.expect(2); - var test_error = new Error('test error'); - var s = { - setUp: function (callback) { - callback(test_error); - }, - test: function (t) { - test.ok(false, 'test function should not be called'); - t.done(); - } - }; - nodeunit.runSuite(null, s, {}, function (err, assertions) { - test.equal(assertions.length, 1); - test.equal(assertions[0].error, test_error); - test.done(); - }); -}; - -exports.catchTearDownError = function (test) { - test.expect(2); - var test_error = new Error('test error'); - var s = { - tearDown: function (callback) { - throw test_error; - }, - test: function (t) { - t.done(); - } - }; - nodeunit.runSuite(null, s, {}, function (err, assertions) { - test.equal(assertions.length, 1); - test.equal(assertions[0].error, test_error); - test.done(); - }); -}; - -exports.tearDownErrorCallback = function (test) { - test.expect(2); - var test_error = new Error('test error'); - var s = { - tearDown: function (callback) { - callback(test_error); - }, - test: function (t) { - t.done(); - } - }; - nodeunit.runSuite(null, s, {}, function (err, assertions) { - test.equal(assertions.length, 1); - test.equal(assertions[0].error, test_error); - test.done(); - }); -}; - -exports.testErrorAndtearDownError = function (test) { - test.expect(3); - var error1 = new Error('test error one'); - var error2 = new Error('test error two'); - var s = { - tearDown: function (callback) { - callback(error2); - }, - test: function (t) { - t.done(error1); - } - }; - nodeunit.runSuite(null, s, {}, function (err, assertions) { - test.equal(assertions.length, 2); - test.equal(assertions[0].error, error1); - test.equal(assertions[1].error, error2); - test.done(); - }); -}; - -exports.testCaseGroups = function (test) { - var call_order = []; - var s = { - setUp: function (callback) { - call_order.push('setUp'); - callback(); - }, - tearDown: function (callback) { - call_order.push('tearDown'); - callback(); - }, - test1: function (test) { - call_order.push('test1'); - test.done(); - }, - group1: { - test2: function (test) { - call_order.push('group1.test2'); - test.done(); - } - } - }; - nodeunit.runSuite(null, s, {}, function (err, assertions) { - test.same(call_order, [ - 'setUp', - 'test1', - 'tearDown', - 'setUp', - 'group1.test2', - 'tearDown' - ]); - test.done(); - }); -}; - -exports.nestedTestCases = function (test) { - var call_order = []; - var s = { - setUp: function (callback) { - call_order.push('setUp'); - callback(); - }, - tearDown: function (callback) { - call_order.push('tearDown'); - callback(); - }, - test1: function (test) { - call_order.push('test1'); - test.done(); - }, - group1: { - setUp: function (callback) { - call_order.push('group1.setUp'); - callback(); - }, - tearDown: function (callback) { - call_order.push('group1.tearDown'); - callback(); - }, - test2: function (test) { - call_order.push('group1.test2'); - test.done(); - } - } - }; - nodeunit.runSuite(null, s, {}, function (err, assertions) { - test.same(call_order, [ - 'setUp', - 'test1', - 'tearDown', - 'setUp', - 'group1.setUp', - 'group1.test2', - 'group1.tearDown', - 'tearDown' - ]); - test.done(); - }); -}; - -exports.deepNestedTestCases = function (test) { - var val = 'foo'; - var s = { - setUp: function (callback) { - val = 'bar'; - callback(); - }, - group1: { - test: { - test2: function (test) { - test.equal(val, 'bar'); - test.done(); - } - } - } - }; - nodeunit.runSuite(null, s, {}, function (err, assertions) { - test.ok(!assertions[0].failed()); - test.equal(assertions.length, 1); - test.done(); - }); -}; diff --git a/node_modules/nodeunit/test/test.html b/node_modules/nodeunit/test/test.html deleted file mode 100644 index e0826de..0000000 --- a/node_modules/nodeunit/test/test.html +++ /dev/null @@ -1,28 +0,0 @@ - - - Nodeunit Test Suite - - - - - - - - - - -

Nodeunit Test Suite

- - - diff --git a/node_modules/underscore/.npmignore b/node_modules/underscore/.npmignore deleted file mode 100644 index 4e5886d..0000000 --- a/node_modules/underscore/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -test/ -Rakefile -docs/ -raw/ diff --git a/node_modules/underscore/.travis.yml b/node_modules/underscore/.travis.yml deleted file mode 100644 index 99dc771..0000000 --- a/node_modules/underscore/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - 0.8 -notifications: - email: false diff --git a/node_modules/underscore/CNAME b/node_modules/underscore/CNAME deleted file mode 100644 index a007e65..0000000 --- a/node_modules/underscore/CNAME +++ /dev/null @@ -1 +0,0 @@ -underscorejs.org diff --git a/node_modules/underscore/CONTRIBUTING.md b/node_modules/underscore/CONTRIBUTING.md deleted file mode 100644 index de5d562..0000000 --- a/node_modules/underscore/CONTRIBUTING.md +++ /dev/null @@ -1,9 +0,0 @@ -## How to contribute to Underscore.js - -* Before you open a ticket or send a pull request, [search](https://github.com/documentcloud/underscore/issues) for previous discussions about the same feature or issue. Add to the earlier ticket if you find one. - -* Before sending a pull request for a feature, be sure to have [tests](http://underscorejs.org/test/). - -* Use the same coding style as the rest of the [codebase](https://github.com/documentcloud/underscore/blob/master/underscore.js). - -* In your pull request, do not add documentation or re-build the minified `underscore-min.js` file. We'll do those things before cutting a new release. diff --git a/node_modules/underscore/LICENSE b/node_modules/underscore/LICENSE deleted file mode 100644 index 0d8dbe4..0000000 --- a/node_modules/underscore/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2009-2013 Jeremy Ashkenas, DocumentCloud - -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: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -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. diff --git a/node_modules/underscore/README.md b/node_modules/underscore/README.md deleted file mode 100644 index b1f3e50..0000000 --- a/node_modules/underscore/README.md +++ /dev/null @@ -1,19 +0,0 @@ - __ - /\ \ __ - __ __ ___ \_\ \ __ _ __ ____ ___ ___ _ __ __ /\_\ ____ - /\ \/\ \ /' _ `\ /'_ \ /'__`\/\ __\/ ,__\ / ___\ / __`\/\ __\/'__`\ \/\ \ /',__\ - \ \ \_\ \/\ \/\ \/\ \ \ \/\ __/\ \ \//\__, `\/\ \__//\ \ \ \ \ \//\ __/ __ \ \ \/\__, `\ - \ \____/\ \_\ \_\ \___,_\ \____\\ \_\\/\____/\ \____\ \____/\ \_\\ \____\/\_\ _\ \ \/\____/ - \/___/ \/_/\/_/\/__,_ /\/____/ \/_/ \/___/ \/____/\/___/ \/_/ \/____/\/_//\ \_\ \/___/ - \ \____/ - \/___/ - -Underscore.js is a utility-belt library for JavaScript that provides -support for the usual functional suspects (each, map, reduce, filter...) -without extending any core JavaScript objects. - -For Docs, License, Tests, and pre-packed downloads, see: -http://underscorejs.org - -Many thanks to our contributors: -https://github.com/documentcloud/underscore/contributors diff --git a/node_modules/underscore/favicon.ico b/node_modules/underscore/favicon.ico deleted file mode 100644 index 03049683875ee7207b4ee62241fc6977956723c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1406 zcmZQzU<5(|0R|w+!H~hqz#zuJz@P!dKp_SNAO?x!16vCj7#y|msTh?T4S~@R7;Yi( a|NnmmMkru{0(Aax^D{300E2>o91H*{%ptM> diff --git a/node_modules/underscore/index.html b/node_modules/underscore/index.html deleted file mode 100644 index 8c5793a..0000000 --- a/node_modules/underscore/index.html +++ /dev/null @@ -1,2467 +0,0 @@ - - - - - - - - - Underscore.js - - - - - - -
- -

- -

- -

- Underscore is a - utility-belt library for JavaScript that provides a lot of the - functional programming support that you would expect in - Prototype.js - (or Ruby), - but without extending any of the built-in JavaScript objects. It's the - tie to go along with jQuery's tux, - and Backbone.js's suspenders. -

- -

- Underscore provides 80-odd functions that support both the usual - functional suspects: map, select, invoke — - as well as more specialized helpers: function binding, javascript - templating, deep equality testing, and so on. It delegates to built-in - functions, if present, so modern browsers will use the - native implementations of forEach, map, reduce, - filter, every, some and indexOf. -

- -

- A complete Test & Benchmark Suite - is included for your perusal. -

- -

- You may also read through the annotated source code. -

- -

- The project is - hosted on GitHub. - You can report bugs and discuss features on the - issues page, - on Freenode in the #documentcloud channel, - or send tweets to @documentcloud. -

- -

- Underscore is an open-source component of DocumentCloud. -

- -

Downloads (Right-click, and use "Save As")

- - - - - - - - - - - - - - - - - -
Development Version (1.4.4)40kb, Uncompressed with Plentiful Comments
Production Version (1.4.4)4kb, Minified and Gzipped
Edge VersionUnreleased, current master, use at your own risk
- -
- -

Collection Functions (Arrays or Objects)

- -

- each_.each(list, iterator, [context]) - Alias: forEach -
- Iterates over a list of elements, yielding each in turn to an iterator - function. The iterator is bound to the context object, if one is - passed. Each invocation of iterator is called with three arguments: - (element, index, list). If list is a JavaScript object, iterator's - arguments will be (value, key, list). Delegates to the native - forEach function if it exists. -

-
-_.each([1, 2, 3], alert);
-=> alerts each number in turn...
-_.each({one : 1, two : 2, three : 3}, alert);
-=> alerts each number value in turn...
- -

- map_.map(list, iterator, [context]) - Alias: collect -
- Produces a new array of values by mapping each value in list - through a transformation function (iterator). If the native map method - exists, it will be used instead. If list is a JavaScript object, - iterator's arguments will be (value, key, list). -

-
-_.map([1, 2, 3], function(num){ return num * 3; });
-=> [3, 6, 9]
-_.map({one : 1, two : 2, three : 3}, function(num, key){ return num * 3; });
-=> [3, 6, 9]
- -

- reduce_.reduce(list, iterator, memo, [context]) - Aliases: inject, foldl -
- Also known as inject and foldl, reduce boils down a - list of values into a single value. Memo is the initial state - of the reduction, and each successive step of it should be returned by - iterator. The iterator is passed four arguments: the memo, - then the value and index (or key) of the iteration, - and finally a reference to the entire list. -

-
-var sum = _.reduce([1, 2, 3], function(memo, num){ return memo + num; }, 0);
-=> 6
-
- -

- reduceRight_.reduceRight(list, iterator, memo, [context]) - Alias: foldr -
- The right-associative version of reduce. Delegates to the - JavaScript 1.8 version of reduceRight, if it exists. Foldr - is not as useful in JavaScript as it would be in a language with lazy - evaluation. -

-
-var list = [[0, 1], [2, 3], [4, 5]];
-var flat = _.reduceRight(list, function(a, b) { return a.concat(b); }, []);
-=> [4, 5, 2, 3, 0, 1]
-
- -

- find_.find(list, iterator, [context]) - Alias: detect -
- Looks through each value in the list, returning the first one that - passes a truth test (iterator). The function returns as - soon as it finds an acceptable element, and doesn't traverse the - entire list. -

-
-var even = _.find([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; });
-=> 2
-
- -

- filter_.filter(list, iterator, [context]) - Alias: select -
- Looks through each value in the list, returning an array of all - the values that pass a truth test (iterator). Delegates to the - native filter method, if it exists. -

-
-var evens = _.filter([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; });
-=> [2, 4, 6]
-
- -

- where_.where(list, properties) -
- Looks through each value in the list, returning an array of all - the values that contain all of the key-value pairs listed in properties. -

-
-_.where(listOfPlays, {author: "Shakespeare", year: 1611});
-=> [{title: "Cymbeline", author: "Shakespeare", year: 1611},
-    {title: "The Tempest", author: "Shakespeare", year: 1611}]
-
- -

- findWhere_.findWhere(list, properties) -
- Looks through the list and returns the first value that matches - all of the key-value pairs listed in properties. -

-
-_.findWhere(publicServicePulitzers, {newsroom: "The New York Times"});
-=> {year: 1918, newsroom: "The New York Times",
-  reason: "For its public service in publishing in full so many official reports,
-  documents and speeches by European statesmen relating to the progress and
-  conduct of the war."}
-
- -

- reject_.reject(list, iterator, [context]) -
- Returns the values in list without the elements that the truth - test (iterator) passes. The opposite of filter. -

-
-var odds = _.reject([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; });
-=> [1, 3, 5]
-
- -

- every_.every(list, iterator, [context]) - Alias: all -
- Returns true if all of the values in the list pass the iterator - truth test. Delegates to the native method every, if present. -

-
-_.every([true, 1, null, 'yes'], _.identity);
-=> false
-
- -

- some_.some(list, [iterator], [context]) - Alias: any -
- Returns true if any of the values in the list pass the - iterator truth test. Short-circuits and stops traversing the list - if a true element is found. Delegates to the native method some, - if present. -

-
-_.some([null, 0, 'yes', false]);
-=> true
-
- -

- contains_.contains(list, value) - Alias: include -
- Returns true if the value is present in the list. - Uses indexOf internally, if list is an Array. -

-
-_.contains([1, 2, 3], 3);
-=> true
-
- -

- invoke_.invoke(list, methodName, [*arguments]) -
- Calls the method named by methodName on each value in the list. - Any extra arguments passed to invoke will be forwarded on to the - method invocation. -

-
-_.invoke([[5, 1, 7], [3, 2, 1]], 'sort');
-=> [[1, 5, 7], [1, 2, 3]]
-
- -

- pluck_.pluck(list, propertyName) -
- A convenient version of what is perhaps the most common use-case for - map: extracting a list of property values. -

-
-var stooges = [{name : 'moe', age : 40}, {name : 'larry', age : 50}, {name : 'curly', age : 60}];
-_.pluck(stooges, 'name');
-=> ["moe", "larry", "curly"]
-
- -

- max_.max(list, [iterator], [context]) -
- Returns the maximum value in list. If iterator is passed, - it will be used on each value to generate the criterion by which the - value is ranked. -

-
-var stooges = [{name : 'moe', age : 40}, {name : 'larry', age : 50}, {name : 'curly', age : 60}];
-_.max(stooges, function(stooge){ return stooge.age; });
-=> {name : 'curly', age : 60};
-
- -

- min_.min(list, [iterator], [context]) -
- Returns the minimum value in list. If iterator is passed, - it will be used on each value to generate the criterion by which the - value is ranked. -

-
-var numbers = [10, 5, 100, 2, 1000];
-_.min(numbers);
-=> 2
-
- -

- sortBy_.sortBy(list, iterator, [context]) -
- Returns a sorted copy of list, ranked in ascending order by the - results of running each value through iterator. Iterator may - also be the string name of the property to sort by (eg. length). -

-
-_.sortBy([1, 2, 3, 4, 5, 6], function(num){ return Math.sin(num); });
-=> [5, 4, 6, 3, 1, 2]
-
- -

- groupBy_.groupBy(list, iterator, [context]) -
- Splits a collection into sets, grouped by the result of running each - value through iterator. If iterator is a string instead of - a function, groups by the property named by iterator on each of - the values. -

-
-_.groupBy([1.3, 2.1, 2.4], function(num){ return Math.floor(num); });
-=> {1: [1.3], 2: [2.1, 2.4]}
-
-_.groupBy(['one', 'two', 'three'], 'length');
-=> {3: ["one", "two"], 5: ["three"]}
-
- -

- countBy_.countBy(list, iterator, [context]) -
- Sorts a list into groups and returns a count for the number of objects - in each group. - Similar to groupBy, but instead of returning a list of values, - returns a count for the number of values in that group. -

-
-_.countBy([1, 2, 3, 4, 5], function(num) {
-  return num % 2 == 0 ? 'even' : 'odd';
-});
-=> {odd: 3, even: 2}
-
- -

- shuffle_.shuffle(list) -
- Returns a shuffled copy of the list, using a version of the - Fisher-Yates shuffle. -

-
-_.shuffle([1, 2, 3, 4, 5, 6]);
-=> [4, 1, 6, 3, 5, 2]
-
- -

- toArray_.toArray(list) -
- Converts the list (anything that can be iterated over), into a - real Array. Useful for transmuting the arguments object. -

-
-(function(){ return _.toArray(arguments).slice(1); })(1, 2, 3, 4);
-=> [2, 3, 4]
-
- -

- size_.size(list) -
- Return the number of values in the list. -

-
-_.size({one : 1, two : 2, three : 3});
-=> 3
-
- -

Array Functions

- -

- - Note: All array functions will also work on the arguments object. - However, Underscore functions are not designed to work on "sparse" arrays. - -

- -

- first_.first(array, [n]) - Alias: head, take -
- Returns the first element of an array. Passing n will - return the first n elements of the array. -

-
-_.first([5, 4, 3, 2, 1]);
-=> 5
-
- -

- initial_.initial(array, [n]) -
- Returns everything but the last entry of the array. Especially useful on - the arguments object. Pass n to exclude the last n elements - from the result. -

-
-_.initial([5, 4, 3, 2, 1]);
-=> [5, 4, 3, 2]
-
- -

- last_.last(array, [n]) -
- Returns the last element of an array. Passing n will return - the last n elements of the array. -

-
-_.last([5, 4, 3, 2, 1]);
-=> 1
-
- -

- rest_.rest(array, [index]) - Alias: tail, drop -
- Returns the rest of the elements in an array. Pass an index - to return the values of the array from that index onward. -

-
-_.rest([5, 4, 3, 2, 1]);
-=> [4, 3, 2, 1]
-
- -

- compact_.compact(array) -
- Returns a copy of the array with all falsy values removed. - In JavaScript, false, null, 0, "", - undefined and NaN are all falsy. -

-
-_.compact([0, 1, false, 2, '', 3]);
-=> [1, 2, 3]
-
- -

- flatten_.flatten(array, [shallow]) -
- Flattens a nested array (the nesting can be to any depth). If you - pass shallow, the array will only be flattened a single level. -

-
-_.flatten([1, [2], [3, [[4]]]]);
-=> [1, 2, 3, 4];
-
-_.flatten([1, [2], [3, [[4]]]], true);
-=> [1, 2, 3, [[4]]];
-
- -

- without_.without(array, [*values]) -
- Returns a copy of the array with all instances of the values - removed. -

-
-_.without([1, 2, 1, 0, 3, 1, 4], 0, 1);
-=> [2, 3, 4]
-
- -

- union_.union(*arrays) -
- Computes the union of the passed-in arrays: the list of unique items, - in order, that are present in one or more of the arrays. -

-
-_.union([1, 2, 3], [101, 2, 1, 10], [2, 1]);
-=> [1, 2, 3, 101, 10]
-
- -

- intersection_.intersection(*arrays) -
- Computes the list of values that are the intersection of all the arrays. - Each value in the result is present in each of the arrays. -

-
-_.intersection([1, 2, 3], [101, 2, 1, 10], [2, 1]);
-=> [1, 2]
-
- -

- difference_.difference(array, *others) -
- Similar to without, but returns the values from array that - are not present in the other arrays. -

-
-_.difference([1, 2, 3, 4, 5], [5, 2, 10]);
-=> [1, 3, 4]
-
- -

- uniq_.uniq(array, [isSorted], [iterator]) - Alias: unique -
- Produces a duplicate-free version of the array, using === to test - object equality. If you know in advance that the array is sorted, - passing true for isSorted will run a much faster algorithm. - If you want to compute unique items based on a transformation, pass an - iterator function. -

-
-_.uniq([1, 2, 1, 3, 1, 4]);
-=> [1, 2, 3, 4]
-
- -

- zip_.zip(*arrays) -
- Merges together the values of each of the arrays with the - values at the corresponding position. Useful when you have separate - data sources that are coordinated through matching array indexes. - If you're working with a matrix of nested arrays, zip.apply - can transpose the matrix in a similar fashion. -

-
-_.zip(['moe', 'larry', 'curly'], [30, 40, 50], [true, false, false]);
-=> [["moe", 30, true], ["larry", 40, false], ["curly", 50, false]]
-
- -

- object_.object(list, [values]) -
- Converts arrays into objects. Pass either a single list of - [key, value] pairs, or a list of keys, and a list of values. -

-
-_.object(['moe', 'larry', 'curly'], [30, 40, 50]);
-=> {moe: 30, larry: 40, curly: 50}
-
-_.object([['moe', 30], ['larry', 40], ['curly', 50]]);
-=> {moe: 30, larry: 40, curly: 50}
-
- -

- indexOf_.indexOf(array, value, [isSorted]) -
- Returns the index at which value can be found in the array, - or -1 if value is not present in the array. Uses the native - indexOf function unless it's missing. If you're working with a - large array, and you know that the array is already sorted, pass true - for isSorted to use a faster binary search ... or, pass a number as - the third argument in order to look for the first matching value in the - array after the given index. -

-
-_.indexOf([1, 2, 3], 2);
-=> 1
-
- -

- lastIndexOf_.lastIndexOf(array, value, [fromIndex]) -
- Returns the index of the last occurrence of value in the array, - or -1 if value is not present. Uses the native lastIndexOf - function if possible. Pass fromIndex to start your search at a - given index. -

-
-_.lastIndexOf([1, 2, 3, 1, 2, 3], 2);
-=> 4
-
- -

- sortedIndex_.sortedIndex(list, value, [iterator], [context]) -
- Uses a binary search to determine the index at which the value - should be inserted into the list in order to maintain the list's - sorted order. If an iterator is passed, it will be used to compute - the sort ranking of each value, including the value you pass. -

-
-_.sortedIndex([10, 20, 30, 40, 50], 35);
-=> 3
-
- -

- range_.range([start], stop, [step]) -
- A function to create flexibly-numbered lists of integers, handy for - each and map loops. start, if omitted, defaults - to 0; step defaults to 1. Returns a list of integers - from start to stop, incremented (or decremented) by step, - exclusive. -

-
-_.range(10);
-=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
-_.range(1, 11);
-=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
-_.range(0, 30, 5);
-=> [0, 5, 10, 15, 20, 25]
-_.range(0, -10, -1);
-=> [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
-_.range(0);
-=> []
-
- -

Function (uh, ahem) Functions

- -

- bind_.bind(function, object, [*arguments]) -
- Bind a function to an object, meaning that whenever - the function is called, the value of this will be the object. - Optionally, pass arguments to the function to pre-fill them, - also known as partial application. -

-
-var func = function(greeting){ return greeting + ': ' + this.name };
-func = _.bind(func, {name : 'moe'}, 'hi');
-func();
-=> 'hi: moe'
-
- -

- bindAll_.bindAll(object, [*methodNames]) -
- Binds a number of methods on the object, specified by - methodNames, to be run in the context of that object whenever they - are invoked. Very handy for binding functions that are going to be used - as event handlers, which would otherwise be invoked with a fairly useless - this. If no methodNames are provided, all of the object's - function properties will be bound to it. -

-
-var buttonView = {
-  label   : 'underscore',
-  onClick : function(){ alert('clicked: ' + this.label); },
-  onHover : function(){ console.log('hovering: ' + this.label); }
-};
-_.bindAll(buttonView);
-jQuery('#underscore_button').bind('click', buttonView.onClick);
-=> When the button is clicked, this.label will have the correct value...
-
- -

- partial_.partial(function, [*arguments]) -
- Partially apply a function by filling in any number of its arguments, - without changing its dynamic this value. A close cousin - of bind. -

-
-var add = function(a, b) { return a + b; };
-add5 = _.partial(add, 5);
-add5(10);
-=> 15
-
- -

- memoize_.memoize(function, [hashFunction]) -
- Memoizes a given function by caching the computed result. Useful - for speeding up slow-running computations. If passed an optional - hashFunction, it will be used to compute the hash key for storing - the result, based on the arguments to the original function. The default - hashFunction just uses the first argument to the memoized function - as the key. -

-
-var fibonacci = _.memoize(function(n) {
-  return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2);
-});
-
- -

- delay_.delay(function, wait, [*arguments]) -
- Much like setTimeout, invokes function after wait - milliseconds. If you pass the optional arguments, they will be - forwarded on to the function when it is invoked. -

-
-var log = _.bind(console.log, console);
-_.delay(log, 1000, 'logged later');
-=> 'logged later' // Appears after one second.
-
- -

- defer_.defer(function, [*arguments]) -
- Defers invoking the function until the current call stack has cleared, - similar to using setTimeout with a delay of 0. Useful for performing - expensive computations or HTML rendering in chunks without blocking the UI thread - from updating. If you pass the optional arguments, they will be - forwarded on to the function when it is invoked. -

-
-_.defer(function(){ alert('deferred'); });
-// Returns from the function before the alert runs.
-
- -

- throttle_.throttle(function, wait) -
- Creates and returns a new, throttled version of the passed function, - that, when invoked repeatedly, will only actually call the original function - at most once per every wait - milliseconds. Useful for rate-limiting events that occur faster than you - can keep up with. -

-
-var throttled = _.throttle(updatePosition, 100);
-$(window).scroll(throttled);
-
- -

- debounce_.debounce(function, wait, [immediate]) -
- Creates and returns a new debounced version of the passed function that - will postpone its execution until after - wait milliseconds have elapsed since the last time it - was invoked. Useful for implementing behavior that should only happen - after the input has stopped arriving. For example: rendering a - preview of a Markdown comment, recalculating a layout after the window - has stopped being resized, and so on. -

- -

- Pass true for the immediate parameter to cause - debounce to trigger the function on the leading instead of the - trailing edge of the wait interval. Useful in circumstances like - preventing accidental double-clicks on a "submit" button from firing a - second time. -

- -
-var lazyLayout = _.debounce(calculateLayout, 300);
-$(window).resize(lazyLayout);
-
- -

- once_.once(function) -
- Creates a version of the function that can only be called one time. - Repeated calls to the modified function will have no effect, returning - the value from the original call. Useful for initialization functions, - instead of having to set a boolean flag and then check it later. -

-
-var initialize = _.once(createApplication);
-initialize();
-initialize();
-// Application is only created once.
-
- -

- after_.after(count, function) -
- Creates a version of the function that will only be run after first - being called count times. Useful for grouping asynchronous responses, - where you want to be sure that all the async calls have finished, before - proceeding. -

-
-var renderNotes = _.after(notes.length, render);
-_.each(notes, function(note) {
-  note.asyncSave({success: renderNotes});
-});
-// renderNotes is run once, after all notes have saved.
-
- -

- wrap_.wrap(function, wrapper) -
- Wraps the first function inside of the wrapper function, - passing it as the first argument. This allows the wrapper to - execute code before and after the function runs, adjust the arguments, - and execute it conditionally. -

-
-var hello = function(name) { return "hello: " + name; };
-hello = _.wrap(hello, function(func) {
-  return "before, " + func("moe") + ", after";
-});
-hello();
-=> 'before, hello: moe, after'
-
- -

- compose_.compose(*functions) -
- Returns the composition of a list of functions, where each function - consumes the return value of the function that follows. In math terms, - composing the functions f(), g(), and h() produces - f(g(h())). -

-
-var greet    = function(name){ return "hi: " + name; };
-var exclaim  = function(statement){ return statement + "!"; };
-var welcome = _.compose(exclaim, greet);
-welcome('moe');
-=> 'hi: moe!'
-
- -

Object Functions

- -

- keys_.keys(object) -
- Retrieve all the names of the object's properties. -

-
-_.keys({one : 1, two : 2, three : 3});
-=> ["one", "two", "three"]
-
- -

- values_.values(object) -
- Return all of the values of the object's properties. -

-
-_.values({one : 1, two : 2, three : 3});
-=> [1, 2, 3]
-
- -

- pairs_.pairs(object) -
- Convert an object into a list of [key, value] pairs. -

-
-_.pairs({one: 1, two: 2, three: 3});
-=> [["one", 1], ["two", 2], ["three", 3]]
-
- -

- invert_.invert(object) -
- Returns a copy of the object where the keys have become the values - and the values the keys. For this to work, all of your object's values - should be unique and string serializable. -

-
-_.invert({Moe: "Moses", Larry: "Louis", Curly: "Jerome"});
-=> {Moses: "Moe", Louis: "Larry", Jerome: "Curly"};
-
- -

- functions_.functions(object) - Alias: methods -
- Returns a sorted list of the names of every method in an object — - that is to say, the name of every function property of the object. -

-
-_.functions(_);
-=> ["all", "any", "bind", "bindAll", "clone", "compact", "compose" ...
-
- -

- extend_.extend(destination, *sources) -
- Copy all of the properties in the source objects over to the - destination object, and return the destination object. - It's in-order, so the last source will override properties of the same - name in previous arguments. -

-
-_.extend({name : 'moe'}, {age : 50});
-=> {name : 'moe', age : 50}
-
- -

- pick_.pick(object, *keys) -
- Return a copy of the object, filtered to only have values for - the whitelisted keys (or array of valid keys). -

-
-_.pick({name : 'moe', age: 50, userid : 'moe1'}, 'name', 'age');
-=> {name : 'moe', age : 50}
-
- -

- omit_.omit(object, *keys) -
- Return a copy of the object, filtered to omit the blacklisted - keys (or array of keys). -

-
-_.omit({name : 'moe', age : 50, userid : 'moe1'}, 'userid');
-=> {name : 'moe', age : 50}
-
- -

- defaults_.defaults(object, *defaults) -
- Fill in null and undefined properties in object with values from the - defaults objects, and return the object. As soon as the - property is filled, further defaults will have no effect. -

-
-var iceCream = {flavor : "chocolate"};
-_.defaults(iceCream, {flavor : "vanilla", sprinkles : "lots"});
-=> {flavor : "chocolate", sprinkles : "lots"}
-
- -

- clone_.clone(object) -
- Create a shallow-copied clone of the object. Any nested objects - or arrays will be copied by reference, not duplicated. -

-
-_.clone({name : 'moe'});
-=> {name : 'moe'};
-
- -

- tap_.tap(object, interceptor) -
- Invokes interceptor with the object, and then returns object. - The primary purpose of this method is to "tap into" a method chain, in order to perform operations on intermediate results within the chain. -

-
-_.chain([1,2,3,200])
-  .filter(function(num) { return num % 2 == 0; })
-  .tap(alert)
-  .map(function(num) { return num * num })
-  .value();
-=> // [2, 200] (alerted)
-=> [4, 40000]
-
- -

- has_.has(object, key) -
- Does the object contain the given key? Identical to - object.hasOwnProperty(key), but uses a safe reference to the - hasOwnProperty function, in case it's been - overridden accidentally. -

-
-_.has({a: 1, b: 2, c: 3}, "b");
-=> true
-
- -

- isEqual_.isEqual(object, other) -
- Performs an optimized deep comparison between the two objects, to determine - if they should be considered equal. -

-
-var moe   = {name : 'moe', luckyNumbers : [13, 27, 34]};
-var clone = {name : 'moe', luckyNumbers : [13, 27, 34]};
-moe == clone;
-=> false
-_.isEqual(moe, clone);
-=> true
-
- -

- isEmpty_.isEmpty(object) -
- Returns true if object contains no values. -

-
-_.isEmpty([1, 2, 3]);
-=> false
-_.isEmpty({});
-=> true
-
- -

- isElement_.isElement(object) -
- Returns true if object is a DOM element. -

-
-_.isElement(jQuery('body')[0]);
-=> true
-
- -

- isArray_.isArray(object) -
- Returns true if object is an Array. -

-
-(function(){ return _.isArray(arguments); })();
-=> false
-_.isArray([1,2,3]);
-=> true
-
- -

- isObject_.isObject(value) -
- Returns true if value is an Object. Note that JavaScript - arrays and functions are objects, while (normal) strings and numbers are not. -

-
-_.isObject({});
-=> true
-_.isObject(1);
-=> false
-
- -

- isArguments_.isArguments(object) -
- Returns true if object is an Arguments object. -

-
-(function(){ return _.isArguments(arguments); })(1, 2, 3);
-=> true
-_.isArguments([1,2,3]);
-=> false
-
- -

- isFunction_.isFunction(object) -
- Returns true if object is a Function. -

-
-_.isFunction(alert);
-=> true
-
- -

- isString_.isString(object) -
- Returns true if object is a String. -

-
-_.isString("moe");
-=> true
-
- -

- isNumber_.isNumber(object) -
- Returns true if object is a Number (including NaN). -

-
-_.isNumber(8.4 * 5);
-=> true
-
- -

- isFinite_.isFinite(object) -
- Returns true if object is a finite Number. -

-
-_.isFinite(-101);
-=> true
-
-_.isFinite(-Infinity);
-=> false
-
- -

- isBoolean_.isBoolean(object) -
- Returns true if object is either true or false. -

-
-_.isBoolean(null);
-=> false
-
- -

- isDate_.isDate(object) -
- Returns true if object is a Date. -

-
-_.isDate(new Date());
-=> true
-
- -

- isRegExp_.isRegExp(object) -
- Returns true if object is a RegExp. -

-
-_.isRegExp(/moe/);
-=> true
-
- -

- isNaN_.isNaN(object) -
- Returns true if object is NaN.
Note: this is not - the same as the native isNaN function, which will also return - true if the variable is undefined. -

-
-_.isNaN(NaN);
-=> true
-isNaN(undefined);
-=> true
-_.isNaN(undefined);
-=> false
-
- -

- isNull_.isNull(object) -
- Returns true if the value of object is null. -

-
-_.isNull(null);
-=> true
-_.isNull(undefined);
-=> false
-
- -

- isUndefined_.isUndefined(value) -
- Returns true if value is undefined. -

-
-_.isUndefined(window.missingVariable);
-=> true
-
- -

Utility Functions

- -

- noConflict_.noConflict() -
- Give control of the "_" variable back to its previous owner. Returns - a reference to the Underscore object. -

-
-var underscore = _.noConflict();
- -

- identity_.identity(value) -
- Returns the same value that is used as the argument. In math: - f(x) = x
- This function looks useless, but is used throughout Underscore as - a default iterator. -

-
-var moe = {name : 'moe'};
-moe === _.identity(moe);
-=> true
- -

- times_.times(n, iterator, [context]) -
- Invokes the given iterator function n times. Each invocation of - iterator is called with an index argument. -
- Note: this example uses the chaining syntax. -

-
-_(3).times(function(n){ genie.grantWishNumber(n); });
- -

- random_.random(min, max) -
- Returns a random integer between min and max, inclusive. - If you only pass one argument, it will return a number between 0 - and that number. -

-
-_.random(0, 100);
-=> 42
- -

- mixin_.mixin(object) -
- Allows you to extend Underscore with your own utility functions. Pass - a hash of {name: function} definitions to have your functions - added to the Underscore object, as well as the OOP wrapper. -

-
-_.mixin({
-  capitalize : function(string) {
-    return string.charAt(0).toUpperCase() + string.substring(1).toLowerCase();
-  }
-});
-_("fabio").capitalize();
-=> "Fabio"
-
- -

- uniqueId_.uniqueId([prefix]) -
- Generate a globally-unique id for client-side models or DOM elements - that need one. If prefix is passed, the id will be appended to it. -

-
-_.uniqueId('contact_');
-=> 'contact_104'
- -

- escape_.escape(string) -
- Escapes a string for insertion into HTML, replacing - &, <, >, ", ', and / characters. -

-
-_.escape('Curly, Larry & Moe');
-=> "Curly, Larry &amp; Moe"
- -

- unescape_.unescape(string) -
- The opposite of escape, replaces - &amp;, &lt;, &gt;, - &quot;, &#x27;, and &#x2F; - with their unescaped counterparts. -

-
-_.unescape('Curly, Larry &amp; Moe');
-=> "Curly, Larry & Moe"
- -

- result_.result(object, property) -
- If the value of the named property is a function then invoke it; otherwise, return it. -

-
-var object = {cheese: 'crumpets', stuff: function(){ return 'nonsense'; }};
-_.result(object, 'cheese');
-=> "crumpets"
-_.result(object, 'stuff');
-=> "nonsense"
- -

- template_.template(templateString, [data], [settings]) -
- Compiles JavaScript templates into functions that can be evaluated - for rendering. Useful for rendering complicated bits of HTML from JSON - data sources. Template functions can both interpolate variables, using - <%= … %>, as well as execute arbitrary JavaScript code, with - <% … %>. If you wish to interpolate a value, and have - it be HTML-escaped, use <%- … %> When you evaluate a template function, pass in a - data object that has properties corresponding to the template's free - variables. If you're writing a one-off, you can pass the data - object as the second parameter to template in order to render - immediately instead of returning a template function. The settings argument - should be a hash containing any _.templateSettings that should be overridden. -

- -
-var compiled = _.template("hello: <%= name %>");
-compiled({name : 'moe'});
-=> "hello: moe"
-
-var list = "<% _.each(people, function(name) { %> <li><%= name %></li> <% }); %>";
-_.template(list, {people : ['moe', 'curly', 'larry']});
-=> "<li>moe</li><li>curly</li><li>larry</li>"
-
-var template = _.template("<b><%- value %></b>");
-template({value : '<script>'});
-=> "<b>&lt;script&gt;</b>"
- -

- You can also use print from within JavaScript code. This is - sometimes more convenient than using <%= ... %>. -

- -
-var compiled = _.template("<% print('Hello ' + epithet); %>");
-compiled({epithet: "stooge"});
-=> "Hello stooge."
- -

- If ERB-style delimiters aren't your cup of tea, you can change Underscore's - template settings to use different symbols to set off interpolated code. - Define an interpolate regex to match expressions that should be - interpolated verbatim, an escape regex to match expressions that should - be inserted after being HTML escaped, and an evaluate regex to match - expressions that should be evaluated without insertion into the resulting - string. You may define or omit any combination of the three. - For example, to perform - Mustache.js - style templating: -

- -
-_.templateSettings = {
-  interpolate : /\{\{(.+?)\}\}/g
-};
-
-var template = _.template("Hello {{ name }}!");
-template({name : "Mustache"});
-=> "Hello Mustache!"
- -

- By default, template places the values from your data in the local scope - via the with statement. However, you can specify a single variable name - with the variable setting. This can significantly improve the speed - at which a template is able to render. -

- -
-_.template("Using 'with': <%= data.answer %>", {answer: 'no'}, {variable: 'data'});
-=> "Using 'with': no"
- -

- Precompiling your templates can be a big help when debugging errors you can't - reproduce. This is because precompiled templates can provide line numbers and - a stack trace, something that is not possible when compiling templates on the client. - The source property is available on the compiled template - function for easy precompilation. -

- -
<script>
-  JST.project = <%= _.template(jstText).source %>;
-</script>
- - -

Chaining

- -

- You can use Underscore in either an object-oriented or a functional style, - depending on your preference. The following two lines of code are - identical ways to double a list of numbers. -

- -
-_.map([1, 2, 3], function(n){ return n * 2; });
-_([1, 2, 3]).map(function(n){ return n * 2; });
- -

- Calling chain will cause all future method calls to return - wrapped objects. When you've finished the computation, use - value to retrieve the final value. Here's an example of chaining - together a map/flatten/reduce, in order to get the word count of - every word in a song. -

- -
-var lyrics = [
-  {line : 1, words : "I'm a lumberjack and I'm okay"},
-  {line : 2, words : "I sleep all night and I work all day"},
-  {line : 3, words : "He's a lumberjack and he's okay"},
-  {line : 4, words : "He sleeps all night and he works all day"}
-];
-
-_.chain(lyrics)
-  .map(function(line) { return line.words.split(' '); })
-  .flatten()
-  .reduce(function(counts, word) {
-    counts[word] = (counts[word] || 0) + 1;
-    return counts;
-  }, {})
-  .value();
-
-=> {lumberjack : 2, all : 4, night : 2 ... }
- -

- In addition, the - Array prototype's methods - are proxied through the chained Underscore object, so you can slip a - reverse or a push into your chain, and continue to - modify the array. -

- -

- chain_.chain(obj) -
- Returns a wrapped object. Calling methods on this object will continue - to return wrapped objects until value is used. -

-
-var stooges = [{name : 'curly', age : 25}, {name : 'moe', age : 21}, {name : 'larry', age : 23}];
-var youngest = _.chain(stooges)
-  .sortBy(function(stooge){ return stooge.age; })
-  .map(function(stooge){ return stooge.name + ' is ' + stooge.age; })
-  .first()
-  .value();
-=> "moe is 21"
-
- -

- value_(obj).value() -
- Extracts the value of a wrapped object. -

-
-_([1, 2, 3]).value();
-=> [1, 2, 3]
-
- - - -

- The Underscore documentation is also available in - Simplified Chinese. -

- -

- Underscore.lua, - a Lua port of the functions that are applicable in both languages. - Includes OOP-wrapping and chaining. - (source) -

- -

- Underscore.m, an Objective-C port - of many of the Underscore.js functions, using a syntax that encourages - chaining. - (source) -

- -

- _.m, an alternative - Objective-C port that tries to stick a little closer to the original - Underscore.js API. - (source) -

- -

- Underscore.php, - a PHP port of the functions that are applicable in both languages. - Includes OOP-wrapping and chaining. - (source) -

- -

- Underscore-perl, - a Perl port of many of the Underscore.js functions, - aimed at on Perl hashes and arrays. - (source) -

- -

- Underscore.cfc, - a Coldfusion port of many of the Underscore.js functions. - (source) -

- -

- Underscore.string, - an Underscore extension that adds functions for string-manipulation: - trim, startsWith, contains, capitalize, - reverse, sprintf, and more. -

- -

- Ruby's Enumerable module. -

- -

- Prototype.js, which provides - JavaScript with collection functions in the manner closest to Ruby's Enumerable. -

- -

- Oliver Steele's - Functional JavaScript, - which includes comprehensive higher-order function support as well as string lambdas. -

- -

- Michael Aufreiter's Data.js, - a data manipulation + persistence library for JavaScript. -

- -

- Python's itertools. -

- -

Change Log

- -

- 1.4.4Jan. 30, 2013Diff
-

    -
  • - Added _.findWhere, for finding the first element in a list - that matches a particular set of keys and values. -
  • -
  • - Added _.partial, for partially applying a function without - changing its dynamic reference to this. -
  • -
  • - Simplified bind by removing some edge cases involving - constructor functions. In short: don't _.bind your - constructors. -
  • -
  • - A minor optimization to invoke. -
  • -
  • - Fix bug in the minified version due to the minifier incorrectly - optimizing-away isFunction. -
  • -
-

- -

- 1.4.3Dec. 4, 2012Diff
-

    -
  • - Improved Underscore compatibility with Adobe's JS engine that can be - used to script Illustrator, Photoshop, and friends. -
  • -
  • - Added a default _.identity iterator to countBy and - groupBy. -
  • -
  • - The uniq function can now take array, iterator, context - as the argument list. -
  • -
  • - The times function now returns the mapped array of iterator - results. -
  • -
  • - Simplified and fixed bugs in throttle. -
  • -
-

- -

- 1.4.2Oct. 1, 2012Diff
-

    -
  • - For backwards compatibility, returned to pre-1.4.0 behavior when - passing null to iteration functions. They now become no-ops - again. -
  • -
-

- -

- 1.4.1Oct. 1, 2012Diff
-

    -
  • - Fixed a 1.4.0 regression in the lastIndexOf function. -
  • -
-

- -

- 1.4.0Sept. 27, 2012Diff
-

    -
  • - Added a pairs function, for turning a JavaScript object - into [key, value] pairs ... as well as an object - function, for converting an array of [key, value] pairs - into an object. -
  • -
  • - Added a countBy function, for counting the number of objects - in a list that match a certain criteria. -
  • -
  • - Added an invert function, for performing a simple inversion - of the keys and values in an object. -
  • -
  • - Added a where function, for easy cases of filtering a list - for objects with specific values. -
  • -
  • - Added an omit function, for filtering an object to remove - certain keys. -
  • -
  • - Added a random function, to return a random number in a - given range. -
  • -
  • - _.debounce'd functions now return their last updated value, - just like _.throttle'd functions do. -
  • -
  • - The sortBy function now runs a stable sort algorithm. -
  • -
  • - Added the optional fromIndex option to indexOf and - lastIndexOf. -
  • -
  • - "Sparse" arrays are no longer supported in Underscore iteration - functions. Use a for loop instead (or better yet, an object). -
  • -
  • - The min and max functions may now be called on - very large arrays. -
  • -
  • - Interpolation in templates now represents null and - undefined as the empty string. -
  • -
  • - Underscore iteration functions no longer accept null values - as a no-op argument. You'll get an early error instead. -
  • -
  • - A number of edge-cases fixes and tweaks, which you can spot in the - diff. - Depending on how you're using Underscore, 1.4.0 may be more - backwards-incompatible than usual — please test when you upgrade. -
  • -
-

- -

- 1.3.3April 10, 2012
-

    -
  • - Many improvements to _.template, which now provides the - source of the template function as a property, for potentially - even more efficient pre-compilation on the server-side. You may now - also set the variable option when creating a template, - which will cause your passed-in data to be made available under the - variable you named, instead of using a with statement — - significantly improving the speed of rendering the template. -
  • -
  • - Added the pick function, which allows you to filter an - object literal with a whitelist of allowed property names. -
  • -
  • - Added the result function, for convenience when working - with APIs that allow either functions or raw properties. -
  • -
  • - Added the isFinite function, because sometimes knowing that - a value is a number just ain't quite enough. -
  • -
  • - The sortBy function may now also be passed the string name - of a property to use as the sort order on each object. -
  • -
  • - Fixed uniq to work with sparse arrays. -
  • -
  • - The difference function now performs a shallow flatten - instead of a deep one when computing array differences. -
  • -
  • - The debounce function now takes an immediate - parameter, which will cause the callback to fire on the leading - instead of the trailing edge. -
  • -
-

- -

- 1.3.1Jan. 23, 2012
-

    -
  • - Added an _.has function, as a safer way to use hasOwnProperty. -
  • -
  • - Added _.collect as an alias for _.map. Smalltalkers, rejoice. -
  • -
  • - Reverted an old change so that _.extend will correctly copy - over keys with undefined values again. -
  • -
  • - Bugfix to stop escaping slashes within interpolations in _.template. -
  • -
-

- -

- 1.3.0Jan. 11, 2012
-

    -
  • - Removed AMD (RequireJS) support from Underscore. If you'd like to use - Underscore with RequireJS, you can load it as a normal script, wrap - or patch your copy, or download a forked version. -
  • -
-

- -

- 1.2.4Jan. 4, 2012
-

    -
  • - You now can (and probably should, as it's simpler) - write _.chain(list) - instead of _(list).chain(). -
  • -
  • - Fix for escaped characters in Underscore templates, and for supporting - customizations of _.templateSettings that only define one or - two of the required regexes. -
  • -
  • - Fix for passing an array as the first argument to an _.wrap'd function. -
  • -
  • - Improved compatibility with ClojureScript, which adds a call - function to String.prototype. -
  • -
-

- -

- 1.2.3Dec. 7, 2011
-

    -
  • - Dynamic scope is now preserved for compiled _.template functions, - so you can use the value of this if you like. -
  • -
  • - Sparse array support of _.indexOf, _.lastIndexOf. -
  • -
  • - Both _.reduce and _.reduceRight can now be passed an - explicitly undefined value. (There's no reason why you'd - want to do this.) -
  • -
-

- -

- 1.2.2Nov. 14, 2011
-

    -
  • - Continued tweaks to _.isEqual semantics. Now JS primitives are - considered equivalent to their wrapped versions, and arrays are compared - by their numeric properties only (#351). -
  • -
  • - _.escape no longer tries to be smart about not double-escaping - already-escaped HTML entities. Now it just escapes regardless (#350). -
  • -
  • - In _.template, you may now leave semicolons out of evaluated - statements if you wish: <% }) %> (#369). -
  • -
  • - _.after(callback, 0) will now trigger the callback immediately, - making "after" easier to use with asynchronous APIs (#366). -
  • -
-

- -

- 1.2.1Oct. 24, 2011
-

    -
  • - Several important bug fixes for _.isEqual, which should now - do better on mutated Arrays, and on non-Array objects with - length properties. (#329) -
  • -
  • - jrburke contributed Underscore exporting for AMD module loaders, - and tonylukasavage for Appcelerator Titanium. - (#335, #338) -
  • -
  • - You can now _.groupBy(list, 'property') as a shortcut for - grouping values by a particular common property. -
  • -
  • - _.throttle'd functions now fire immediately upon invocation, - and are rate-limited thereafter (#170, #266). -
  • -
  • - Most of the _.is[Type] checks no longer ducktype. -
  • -
  • - The _.bind function now also works on constructors, a-la - ES5 ... but you would never want to use _.bind on a - constructor function. -
  • -
  • - _.clone no longer wraps non-object types in Objects. -
  • -
  • - _.find and _.filter are now the preferred names for - _.detect and _.select. -
  • -
-

- -

- 1.2.0Oct. 5, 2011
-

    -
  • - The _.isEqual function now - supports true deep equality comparisons, with checks for cyclic structures, - thanks to Kit Cambridge. -
  • -
  • - Underscore templates now support HTML escaping interpolations, using - <%- ... %> syntax. -
  • -
  • - Ryan Tenney contributed _.shuffle, which uses a modified - Fisher-Yates to give you a shuffled copy of an array. -
  • -
  • - _.uniq can now be passed an optional iterator, to determine by - what criteria an object should be considered unique. -
  • -
  • - _.last now takes an optional argument which will return the last - N elements of the list. -
  • -
  • - A new _.initial function was added, as a mirror of _.rest, - which returns all the initial values of a list (except the last N). -
  • -
-

- -

- 1.1.7July 13, 2011
- Added _.groupBy, which aggregates a collection into groups of like items. - Added _.union and _.difference, to complement the - (re-named) _.intersection. - Various improvements for support of sparse arrays. - _.toArray now returns a clone, if directly passed an array. - _.functions now also returns the names of functions that are present - in the prototype chain. -

- -

- 1.1.6April 18, 2011
- Added _.after, which will return a function that only runs after - first being called a specified number of times. - _.invoke can now take a direct function reference. - _.every now requires an iterator function to be passed, which - mirrors the ECMA5 API. - _.extend no longer copies keys when the value is undefined. - _.bind now errors when trying to bind an undefined value. -

- -

- 1.1.5Mar 20, 2011
- Added an _.defaults function, for use merging together JS objects - representing default options. - Added an _.once function, for manufacturing functions that should - only ever execute a single time. - _.bind now delegates to the native ECMAScript 5 version, - where available. - _.keys now throws an error when used on non-Object values, as in - ECMAScript 5. - Fixed a bug with _.keys when used over sparse arrays. -

- -

- 1.1.4Jan 9, 2011
- Improved compliance with ES5's Array methods when passing null - as a value. _.wrap now correctly sets this for the - wrapped function. _.indexOf now takes an optional flag for - finding the insertion index in an array that is guaranteed to already - be sorted. Avoiding the use of .callee, to allow _.isArray - to work properly in ES5's strict mode. -

- -

- 1.1.3Dec 1, 2010
- In CommonJS, Underscore may now be required with just:
- var _ = require("underscore"). - Added _.throttle and _.debounce functions. - Removed _.breakLoop, in favor of an ECMA5-style un-break-able - each implementation — this removes the try/catch, and you'll now have - better stack traces for exceptions that are thrown within an Underscore iterator. - Improved the isType family of functions for better interoperability - with Internet Explorer host objects. - _.template now correctly escapes backslashes in templates. - Improved _.reduce compatibility with the ECMA5 version: - if you don't pass an initial value, the first item in the collection is used. - _.each no longer returns the iterated collection, for improved - consistency with ES5's forEach. -

- -

- 1.1.2
- Fixed _.contains, which was mistakenly pointing at - _.intersect instead of _.include, like it should - have been. Added _.unique as an alias for _.uniq. -

- -

- 1.1.1
- Improved the speed of _.template, and its handling of multiline - interpolations. Ryan Tenney contributed optimizations to many Underscore - functions. An annotated version of the source code is now available. -

- -

- 1.1.0
- The method signature of _.reduce has been changed to match - the ECMAScript 5 signature, instead of the Ruby/Prototype.js version. - This is a backwards-incompatible change. _.template may now be - called with no arguments, and preserves whitespace. _.contains - is a new alias for _.include. -

- -

- 1.0.4
- Andri Möll contributed the _.memoize - function, which can be used to speed up expensive repeated computations - by caching the results. -

- -

- 1.0.3
- Patch that makes _.isEqual return false if any property - of the compared object has a NaN value. Technically the correct - thing to do, but of questionable semantics. Watch out for NaN comparisons. -

- -

- 1.0.2
- Fixes _.isArguments in recent versions of Opera, which have - arguments objects as real Arrays. -

- -

- 1.0.1
- Bugfix for _.isEqual, when comparing two objects with the same - number of undefined keys, but with different names. -

- -

- 1.0.0
- Things have been stable for many months now, so Underscore is now - considered to be out of beta, at 1.0. Improvements since 0.6 - include _.isBoolean, and the ability to have _.extend - take multiple source objects. -

- -

- 0.6.0
- Major release. Incorporates a number of - Mile Frawley's refactors for - safer duck-typing on collection functions, and cleaner internals. A new - _.mixin method that allows you to extend Underscore with utility - functions of your own. Added _.times, which works the same as in - Ruby or Prototype.js. Native support for ECMAScript 5's Array.isArray, - and Object.keys. -

- -

- 0.5.8
- Fixed Underscore's collection functions to work on - NodeLists and - HTMLCollections - once more, thanks to - Justin Tulloss. -

- -

- 0.5.7
- A safer implementation of _.isArguments, and a - faster _.isNumber,
thanks to - Jed Schmidt. -

- -

- 0.5.6
- Customizable delimiters for _.template, contributed by - Noah Sloan. -

- -

- 0.5.5
- Fix for a bug in MobileSafari's OOP-wrapper, with the arguments object. -

- -

- 0.5.4
- Fix for multiple single quotes within a template string for - _.template. See: - Rick Strahl's blog post. -

- -

- 0.5.2
- New implementations of isArray, isDate, isFunction, - isNumber, isRegExp, and isString, thanks to - a suggestion from - Robert Kieffer. - Instead of doing Object#toString - comparisons, they now check for expected properties, which is less safe, - but more than an order of magnitude faster. Most other Underscore - functions saw minor speed improvements as a result. - Evgeniy Dolzhenko - contributed _.tap, - similar to Ruby 1.9's, - which is handy for injecting side effects (like logging) into chained calls. -

- -

- 0.5.1
- Added an _.isArguments function. Lots of little safety checks - and optimizations contributed by - Noah Sloan and - Andri Möll. -

- -

- 0.5.0
- [API Changes] _.bindAll now takes the context object as - its first parameter. If no method names are passed, all of the context - object's methods are bound to it, enabling chaining and easier binding. - _.functions now takes a single argument and returns the names - of its Function properties. Calling _.functions(_) will get you - the previous behavior. - Added _.isRegExp so that isEqual can now test for RegExp equality. - All of the "is" functions have been shrunk down into a single definition. - Karl Guertin contributed patches. -

- -

- 0.4.7
- Added isDate, isNaN, and isNull, for completeness. - Optimizations for isEqual when checking equality between Arrays - or Dates. _.keys is now 25%–2X faster (depending on your - browser) which speeds up the functions that rely on it, such as _.each. -

- -

- 0.4.6
- Added the range function, a port of the - Python - function of the same name, for generating flexibly-numbered lists - of integers. Original patch contributed by - Kirill Ishanov. -

- -

- 0.4.5
- Added rest for Arrays and arguments objects, and aliased - first as head, and rest as tail, - thanks to Luke Sutton's patches. - Added tests ensuring that all Underscore Array functions also work on - arguments objects. -

- -

- 0.4.4
- Added isString, and isNumber, for consistency. Fixed - _.isEqual(NaN, NaN) to return true (which is debatable). -

- -

- 0.4.3
- Started using the native StopIteration object in browsers that support it. - Fixed Underscore setup for CommonJS environments. -

- -

- 0.4.2
- Renamed the unwrapping function to value, for clarity. -

- -

- 0.4.1
- Chained Underscore objects now support the Array prototype methods, so - that you can perform the full range of operations on a wrapped array - without having to break your chain. Added a breakLoop method - to break in the middle of any Underscore iteration. Added an - isEmpty function that works on arrays and objects. -

- -

- 0.4.0
- All Underscore functions can now be called in an object-oriented style, - like so: _([1, 2, 3]).map(...);. Original patch provided by - Marc-André Cournoyer. - Wrapped objects can be chained through multiple - method invocations. A functions method - was added, providing a sorted list of all the functions in Underscore. -

- -

- 0.3.3
- Added the JavaScript 1.8 function reduceRight. Aliased it - as foldr, and aliased reduce as foldl. -

- -

- 0.3.2
- Now runs on stock Rhino - interpreters with: load("underscore.js"). - Added identity as a utility function. -

- -

- 0.3.1
- All iterators are now passed in the original collection as their third - argument, the same as JavaScript 1.6's forEach. Iterating over - objects is now called with (value, key, collection), for details - see _.each. -

- -

- 0.3.0
- Added Dmitry Baranovskiy's - comprehensive optimizations, merged in - Kris Kowal's patches to make Underscore - CommonJS and - Narwhal compliant. -

- -

- 0.2.0
- Added compose and lastIndexOf, renamed inject to - reduce, added aliases for inject, filter, - every, some, and forEach. -

- -

- 0.1.1
- Added noConflict, so that the "Underscore" object can be assigned to - other variables. -

- -

- 0.1.0
- Initial release of Underscore.js. -

- -

- - A DocumentCloud Project - -

- -
- -
- - - - - - diff --git a/node_modules/underscore/index.js b/node_modules/underscore/index.js deleted file mode 100644 index 2cf0ca5..0000000 --- a/node_modules/underscore/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./underscore'); diff --git a/node_modules/underscore/package.json b/node_modules/underscore/package.json deleted file mode 100644 index 00fd661..0000000 --- a/node_modules/underscore/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "underscore", - "description": "JavaScript's functional programming helper library.", - "homepage": "http://underscorejs.org", - "keywords": [ - "util", - "functional", - "server", - "client", - "browser" - ], - "author": { - "name": "Jeremy Ashkenas", - "email": "jeremy@documentcloud.org" - }, - "repository": { - "type": "git", - "url": "git://github.com/documentcloud/underscore.git" - }, - "main": "underscore.js", - "version": "1.4.4", - "devDependencies": { - "phantomjs": "0.2.2" - }, - "scripts": { - "test": "phantomjs test/vendor/runner.js test/index.html?noglobals=true" - }, - "readme": " __\n /\\ \\ __\n __ __ ___ \\_\\ \\ __ _ __ ____ ___ ___ _ __ __ /\\_\\ ____\n /\\ \\/\\ \\ /' _ `\\ /'_ \\ /'__`\\/\\ __\\/ ,__\\ / ___\\ / __`\\/\\ __\\/'__`\\ \\/\\ \\ /',__\\\n \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\ __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\ __/ __ \\ \\ \\/\\__, `\\\n \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n \\/___/ \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/ \\/____/\\/___/ \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/\n \\ \\____/\n \\/___/\n\nUnderscore.js is a utility-belt library for JavaScript that provides\nsupport for the usual functional suspects (each, map, reduce, filter...)\nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://underscorejs.org\n\nMany thanks to our contributors:\nhttps://github.com/documentcloud/underscore/contributors\n", - "readmeFilename": "README.md", - "_id": "underscore@1.4.4", - "_from": "underscore@latest" -} diff --git a/node_modules/underscore/underscore-min.js b/node_modules/underscore/underscore-min.js deleted file mode 100644 index c1d9d3a..0000000 --- a/node_modules/underscore/underscore-min.js +++ /dev/null @@ -1 +0,0 @@ -(function(){var n=this,t=n._,r={},e=Array.prototype,u=Object.prototype,i=Function.prototype,a=e.push,o=e.slice,c=e.concat,l=u.toString,f=u.hasOwnProperty,s=e.forEach,p=e.map,h=e.reduce,v=e.reduceRight,d=e.filter,g=e.every,m=e.some,y=e.indexOf,b=e.lastIndexOf,x=Array.isArray,_=Object.keys,j=i.bind,w=function(n){return n instanceof w?n:this instanceof w?(this._wrapped=n,void 0):new w(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=w),exports._=w):n._=w,w.VERSION="1.4.4";var A=w.each=w.forEach=function(n,t,e){if(null!=n)if(s&&n.forEach===s)n.forEach(t,e);else if(n.length===+n.length){for(var u=0,i=n.length;i>u;u++)if(t.call(e,n[u],u,n)===r)return}else for(var a in n)if(w.has(n,a)&&t.call(e,n[a],a,n)===r)return};w.map=w.collect=function(n,t,r){var e=[];return null==n?e:p&&n.map===p?n.map(t,r):(A(n,function(n,u,i){e[e.length]=t.call(r,n,u,i)}),e)};var O="Reduce of empty array with no initial value";w.reduce=w.foldl=w.inject=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),h&&n.reduce===h)return e&&(t=w.bind(t,e)),u?n.reduce(t,r):n.reduce(t);if(A(n,function(n,i,a){u?r=t.call(e,r,n,i,a):(r=n,u=!0)}),!u)throw new TypeError(O);return r},w.reduceRight=w.foldr=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),v&&n.reduceRight===v)return e&&(t=w.bind(t,e)),u?n.reduceRight(t,r):n.reduceRight(t);var i=n.length;if(i!==+i){var a=w.keys(n);i=a.length}if(A(n,function(o,c,l){c=a?a[--i]:--i,u?r=t.call(e,r,n[c],c,l):(r=n[c],u=!0)}),!u)throw new TypeError(O);return r},w.find=w.detect=function(n,t,r){var e;return E(n,function(n,u,i){return t.call(r,n,u,i)?(e=n,!0):void 0}),e},w.filter=w.select=function(n,t,r){var e=[];return null==n?e:d&&n.filter===d?n.filter(t,r):(A(n,function(n,u,i){t.call(r,n,u,i)&&(e[e.length]=n)}),e)},w.reject=function(n,t,r){return w.filter(n,function(n,e,u){return!t.call(r,n,e,u)},r)},w.every=w.all=function(n,t,e){t||(t=w.identity);var u=!0;return null==n?u:g&&n.every===g?n.every(t,e):(A(n,function(n,i,a){return(u=u&&t.call(e,n,i,a))?void 0:r}),!!u)};var E=w.some=w.any=function(n,t,e){t||(t=w.identity);var u=!1;return null==n?u:m&&n.some===m?n.some(t,e):(A(n,function(n,i,a){return u||(u=t.call(e,n,i,a))?r:void 0}),!!u)};w.contains=w.include=function(n,t){return null==n?!1:y&&n.indexOf===y?n.indexOf(t)!=-1:E(n,function(n){return n===t})},w.invoke=function(n,t){var r=o.call(arguments,2),e=w.isFunction(t);return w.map(n,function(n){return(e?t:n[t]).apply(n,r)})},w.pluck=function(n,t){return w.map(n,function(n){return n[t]})},w.where=function(n,t,r){return w.isEmpty(t)?r?null:[]:w[r?"find":"filter"](n,function(n){for(var r in t)if(t[r]!==n[r])return!1;return!0})},w.findWhere=function(n,t){return w.where(n,t,!0)},w.max=function(n,t,r){if(!t&&w.isArray(n)&&n[0]===+n[0]&&65535>n.length)return Math.max.apply(Math,n);if(!t&&w.isEmpty(n))return-1/0;var e={computed:-1/0,value:-1/0};return A(n,function(n,u,i){var a=t?t.call(r,n,u,i):n;a>=e.computed&&(e={value:n,computed:a})}),e.value},w.min=function(n,t,r){if(!t&&w.isArray(n)&&n[0]===+n[0]&&65535>n.length)return Math.min.apply(Math,n);if(!t&&w.isEmpty(n))return 1/0;var e={computed:1/0,value:1/0};return A(n,function(n,u,i){var a=t?t.call(r,n,u,i):n;e.computed>a&&(e={value:n,computed:a})}),e.value},w.shuffle=function(n){var t,r=0,e=[];return A(n,function(n){t=w.random(r++),e[r-1]=e[t],e[t]=n}),e};var k=function(n){return w.isFunction(n)?n:function(t){return t[n]}};w.sortBy=function(n,t,r){var e=k(t);return w.pluck(w.map(n,function(n,t,u){return{value:n,index:t,criteria:e.call(r,n,t,u)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.indexi;){var o=i+a>>>1;u>r.call(e,n[o])?i=o+1:a=o}return i},w.toArray=function(n){return n?w.isArray(n)?o.call(n):n.length===+n.length?w.map(n,w.identity):w.values(n):[]},w.size=function(n){return null==n?0:n.length===+n.length?n.length:w.keys(n).length},w.first=w.head=w.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:o.call(n,0,t)},w.initial=function(n,t,r){return o.call(n,0,n.length-(null==t||r?1:t))},w.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:o.call(n,Math.max(n.length-t,0))},w.rest=w.tail=w.drop=function(n,t,r){return o.call(n,null==t||r?1:t)},w.compact=function(n){return w.filter(n,w.identity)};var R=function(n,t,r){return A(n,function(n){w.isArray(n)?t?a.apply(r,n):R(n,t,r):r.push(n)}),r};w.flatten=function(n,t){return R(n,t,[])},w.without=function(n){return w.difference(n,o.call(arguments,1))},w.uniq=w.unique=function(n,t,r,e){w.isFunction(t)&&(e=r,r=t,t=!1);var u=r?w.map(n,r,e):n,i=[],a=[];return A(u,function(r,e){(t?e&&a[a.length-1]===r:w.contains(a,r))||(a.push(r),i.push(n[e]))}),i},w.union=function(){return w.uniq(c.apply(e,arguments))},w.intersection=function(n){var t=o.call(arguments,1);return w.filter(w.uniq(n),function(n){return w.every(t,function(t){return w.indexOf(t,n)>=0})})},w.difference=function(n){var t=c.apply(e,o.call(arguments,1));return w.filter(n,function(n){return!w.contains(t,n)})},w.zip=function(){for(var n=o.call(arguments),t=w.max(w.pluck(n,"length")),r=Array(t),e=0;t>e;e++)r[e]=w.pluck(n,""+e);return r},w.object=function(n,t){if(null==n)return{};for(var r={},e=0,u=n.length;u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},w.indexOf=function(n,t,r){if(null==n)return-1;var e=0,u=n.length;if(r){if("number"!=typeof r)return e=w.sortedIndex(n,t),n[e]===t?e:-1;e=0>r?Math.max(0,u+r):r}if(y&&n.indexOf===y)return n.indexOf(t,r);for(;u>e;e++)if(n[e]===t)return e;return-1},w.lastIndexOf=function(n,t,r){if(null==n)return-1;var e=null!=r;if(b&&n.lastIndexOf===b)return e?n.lastIndexOf(t,r):n.lastIndexOf(t);for(var u=e?r:n.length;u--;)if(n[u]===t)return u;return-1},w.range=function(n,t,r){1>=arguments.length&&(t=n||0,n=0),r=arguments[2]||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=0,i=Array(e);e>u;)i[u++]=n,n+=r;return i},w.bind=function(n,t){if(n.bind===j&&j)return j.apply(n,o.call(arguments,1));var r=o.call(arguments,2);return function(){return n.apply(t,r.concat(o.call(arguments)))}},w.partial=function(n){var t=o.call(arguments,1);return function(){return n.apply(this,t.concat(o.call(arguments)))}},w.bindAll=function(n){var t=o.call(arguments,1);return 0===t.length&&(t=w.functions(n)),A(t,function(t){n[t]=w.bind(n[t],n)}),n},w.memoize=function(n,t){var r={};return t||(t=w.identity),function(){var e=t.apply(this,arguments);return w.has(r,e)?r[e]:r[e]=n.apply(this,arguments)}},w.delay=function(n,t){var r=o.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},w.defer=function(n){return w.delay.apply(w,[n,1].concat(o.call(arguments,1)))},w.throttle=function(n,t){var r,e,u,i,a=0,o=function(){a=new Date,u=null,i=n.apply(r,e)};return function(){var c=new Date,l=t-(c-a);return r=this,e=arguments,0>=l?(clearTimeout(u),u=null,a=c,i=n.apply(r,e)):u||(u=setTimeout(o,l)),i}},w.debounce=function(n,t,r){var e,u;return function(){var i=this,a=arguments,o=function(){e=null,r||(u=n.apply(i,a))},c=r&&!e;return clearTimeout(e),e=setTimeout(o,t),c&&(u=n.apply(i,a)),u}},w.once=function(n){var t,r=!1;return function(){return r?t:(r=!0,t=n.apply(this,arguments),n=null,t)}},w.wrap=function(n,t){return function(){var r=[n];return a.apply(r,arguments),t.apply(this,r)}},w.compose=function(){var n=arguments;return function(){for(var t=arguments,r=n.length-1;r>=0;r--)t=[n[r].apply(this,t)];return t[0]}},w.after=function(n,t){return 0>=n?t():function(){return 1>--n?t.apply(this,arguments):void 0}},w.keys=_||function(n){if(n!==Object(n))throw new TypeError("Invalid object");var t=[];for(var r in n)w.has(n,r)&&(t[t.length]=r);return t},w.values=function(n){var t=[];for(var r in n)w.has(n,r)&&t.push(n[r]);return t},w.pairs=function(n){var t=[];for(var r in n)w.has(n,r)&&t.push([r,n[r]]);return t},w.invert=function(n){var t={};for(var r in n)w.has(n,r)&&(t[n[r]]=r);return t},w.functions=w.methods=function(n){var t=[];for(var r in n)w.isFunction(n[r])&&t.push(r);return t.sort()},w.extend=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]=t[r]}),n},w.pick=function(n){var t={},r=c.apply(e,o.call(arguments,1));return A(r,function(r){r in n&&(t[r]=n[r])}),t},w.omit=function(n){var t={},r=c.apply(e,o.call(arguments,1));for(var u in n)w.contains(r,u)||(t[u]=n[u]);return t},w.defaults=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)null==n[r]&&(n[r]=t[r])}),n},w.clone=function(n){return w.isObject(n)?w.isArray(n)?n.slice():w.extend({},n):n},w.tap=function(n,t){return t(n),n};var I=function(n,t,r,e){if(n===t)return 0!==n||1/n==1/t;if(null==n||null==t)return n===t;n instanceof w&&(n=n._wrapped),t instanceof w&&(t=t._wrapped);var u=l.call(n);if(u!=l.call(t))return!1;switch(u){case"[object String]":return n==t+"";case"[object Number]":return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case"[object Date]":case"[object Boolean]":return+n==+t;case"[object RegExp]":return n.source==t.source&&n.global==t.global&&n.multiline==t.multiline&&n.ignoreCase==t.ignoreCase}if("object"!=typeof n||"object"!=typeof t)return!1;for(var i=r.length;i--;)if(r[i]==n)return e[i]==t;r.push(n),e.push(t);var a=0,o=!0;if("[object Array]"==u){if(a=n.length,o=a==t.length)for(;a--&&(o=I(n[a],t[a],r,e)););}else{var c=n.constructor,f=t.constructor;if(c!==f&&!(w.isFunction(c)&&c instanceof c&&w.isFunction(f)&&f instanceof f))return!1;for(var s in n)if(w.has(n,s)&&(a++,!(o=w.has(t,s)&&I(n[s],t[s],r,e))))break;if(o){for(s in t)if(w.has(t,s)&&!a--)break;o=!a}}return r.pop(),e.pop(),o};w.isEqual=function(n,t){return I(n,t,[],[])},w.isEmpty=function(n){if(null==n)return!0;if(w.isArray(n)||w.isString(n))return 0===n.length;for(var t in n)if(w.has(n,t))return!1;return!0},w.isElement=function(n){return!(!n||1!==n.nodeType)},w.isArray=x||function(n){return"[object Array]"==l.call(n)},w.isObject=function(n){return n===Object(n)},A(["Arguments","Function","String","Number","Date","RegExp"],function(n){w["is"+n]=function(t){return l.call(t)=="[object "+n+"]"}}),w.isArguments(arguments)||(w.isArguments=function(n){return!(!n||!w.has(n,"callee"))}),"function"!=typeof/./&&(w.isFunction=function(n){return"function"==typeof n}),w.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},w.isNaN=function(n){return w.isNumber(n)&&n!=+n},w.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"==l.call(n)},w.isNull=function(n){return null===n},w.isUndefined=function(n){return n===void 0},w.has=function(n,t){return f.call(n,t)},w.noConflict=function(){return n._=t,this},w.identity=function(n){return n},w.times=function(n,t,r){for(var e=Array(n),u=0;n>u;u++)e[u]=t.call(r,u);return e},w.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))};var M={escape:{"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"}};M.unescape=w.invert(M.escape);var S={escape:RegExp("["+w.keys(M.escape).join("")+"]","g"),unescape:RegExp("("+w.keys(M.unescape).join("|")+")","g")};w.each(["escape","unescape"],function(n){w[n]=function(t){return null==t?"":(""+t).replace(S[n],function(t){return M[n][t]})}}),w.result=function(n,t){if(null==n)return null;var r=n[t];return w.isFunction(r)?r.call(n):r},w.mixin=function(n){A(w.functions(n),function(t){var r=w[t]=n[t];w.prototype[t]=function(){var n=[this._wrapped];return a.apply(n,arguments),D.call(this,r.apply(w,n))}})};var N=0;w.uniqueId=function(n){var t=++N+"";return n?n+t:t},w.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var T=/(.)^/,q={"'":"'","\\":"\\","\r":"r","\n":"n"," ":"t","\u2028":"u2028","\u2029":"u2029"},B=/\\|'|\r|\n|\t|\u2028|\u2029/g;w.template=function(n,t,r){var e;r=w.defaults({},r,w.templateSettings);var u=RegExp([(r.escape||T).source,(r.interpolate||T).source,(r.evaluate||T).source].join("|")+"|$","g"),i=0,a="__p+='";n.replace(u,function(t,r,e,u,o){return a+=n.slice(i,o).replace(B,function(n){return"\\"+q[n]}),r&&(a+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'"),e&&(a+="'+\n((__t=("+e+"))==null?'':__t)+\n'"),u&&(a+="';\n"+u+"\n__p+='"),i=o+t.length,t}),a+="';\n",r.variable||(a="with(obj||{}){\n"+a+"}\n"),a="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+a+"return __p;\n";try{e=Function(r.variable||"obj","_",a)}catch(o){throw o.source=a,o}if(t)return e(t,w);var c=function(n){return e.call(this,n,w)};return c.source="function("+(r.variable||"obj")+"){\n"+a+"}",c},w.chain=function(n){return w(n).chain()};var D=function(n){return this._chain?w(n).chain():n};w.mixin(w),A(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=e[n];w.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!=n&&"splice"!=n||0!==r.length||delete r[0],D.call(this,r)}}),A(["concat","join","slice"],function(n){var t=e[n];w.prototype[n]=function(){return D.call(this,t.apply(this._wrapped,arguments))}}),w.extend(w.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}})}).call(this); \ No newline at end of file diff --git a/node_modules/underscore/underscore.js b/node_modules/underscore/underscore.js deleted file mode 100644 index a12f0d9..0000000 --- a/node_modules/underscore/underscore.js +++ /dev/null @@ -1,1226 +0,0 @@ -// Underscore.js 1.4.4 -// http://underscorejs.org -// (c) 2009-2013 Jeremy Ashkenas, DocumentCloud Inc. -// Underscore may be freely distributed under the MIT license. - -(function() { - - // Baseline setup - // -------------- - - // Establish the root object, `window` in the browser, or `global` on the server. - var root = this; - - // Save the previous value of the `_` variable. - var previousUnderscore = root._; - - // Establish the object that gets returned to break out of a loop iteration. - var breaker = {}; - - // Save bytes in the minified (but not gzipped) version: - var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype; - - // Create quick reference variables for speed access to core prototypes. - var push = ArrayProto.push, - slice = ArrayProto.slice, - concat = ArrayProto.concat, - toString = ObjProto.toString, - hasOwnProperty = ObjProto.hasOwnProperty; - - // All **ECMAScript 5** native function implementations that we hope to use - // are declared here. - var - nativeForEach = ArrayProto.forEach, - nativeMap = ArrayProto.map, - nativeReduce = ArrayProto.reduce, - nativeReduceRight = ArrayProto.reduceRight, - nativeFilter = ArrayProto.filter, - nativeEvery = ArrayProto.every, - nativeSome = ArrayProto.some, - nativeIndexOf = ArrayProto.indexOf, - nativeLastIndexOf = ArrayProto.lastIndexOf, - nativeIsArray = Array.isArray, - nativeKeys = Object.keys, - nativeBind = FuncProto.bind; - - // Create a safe reference to the Underscore object for use below. - var _ = function(obj) { - if (obj instanceof _) return obj; - if (!(this instanceof _)) return new _(obj); - this._wrapped = obj; - }; - - // Export the Underscore object for **Node.js**, with - // backwards-compatibility for the old `require()` API. If we're in - // the browser, add `_` as a global object via a string identifier, - // for Closure Compiler "advanced" mode. - if (typeof exports !== 'undefined') { - if (typeof module !== 'undefined' && module.exports) { - exports = module.exports = _; - } - exports._ = _; - } else { - root._ = _; - } - - // Current version. - _.VERSION = '1.4.4'; - - // Collection Functions - // -------------------- - - // The cornerstone, an `each` implementation, aka `forEach`. - // Handles objects with the built-in `forEach`, arrays, and raw objects. - // Delegates to **ECMAScript 5**'s native `forEach` if available. - var each = _.each = _.forEach = function(obj, iterator, context) { - if (obj == null) return; - if (nativeForEach && obj.forEach === nativeForEach) { - obj.forEach(iterator, context); - } else if (obj.length === +obj.length) { - for (var i = 0, l = obj.length; i < l; i++) { - if (iterator.call(context, obj[i], i, obj) === breaker) return; - } - } else { - for (var key in obj) { - if (_.has(obj, key)) { - if (iterator.call(context, obj[key], key, obj) === breaker) return; - } - } - } - }; - - // Return the results of applying the iterator to each element. - // Delegates to **ECMAScript 5**'s native `map` if available. - _.map = _.collect = function(obj, iterator, context) { - var results = []; - if (obj == null) return results; - if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context); - each(obj, function(value, index, list) { - results[results.length] = iterator.call(context, value, index, list); - }); - return results; - }; - - var reduceError = 'Reduce of empty array with no initial value'; - - // **Reduce** builds up a single result from a list of values, aka `inject`, - // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available. - _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) { - var initial = arguments.length > 2; - if (obj == null) obj = []; - if (nativeReduce && obj.reduce === nativeReduce) { - if (context) iterator = _.bind(iterator, context); - return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator); - } - each(obj, function(value, index, list) { - if (!initial) { - memo = value; - initial = true; - } else { - memo = iterator.call(context, memo, value, index, list); - } - }); - if (!initial) throw new TypeError(reduceError); - return memo; - }; - - // The right-associative version of reduce, also known as `foldr`. - // Delegates to **ECMAScript 5**'s native `reduceRight` if available. - _.reduceRight = _.foldr = function(obj, iterator, memo, context) { - var initial = arguments.length > 2; - if (obj == null) obj = []; - if (nativeReduceRight && obj.reduceRight === nativeReduceRight) { - if (context) iterator = _.bind(iterator, context); - return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator); - } - var length = obj.length; - if (length !== +length) { - var keys = _.keys(obj); - length = keys.length; - } - each(obj, function(value, index, list) { - index = keys ? keys[--length] : --length; - if (!initial) { - memo = obj[index]; - initial = true; - } else { - memo = iterator.call(context, memo, obj[index], index, list); - } - }); - if (!initial) throw new TypeError(reduceError); - return memo; - }; - - // Return the first value which passes a truth test. Aliased as `detect`. - _.find = _.detect = function(obj, iterator, context) { - var result; - any(obj, function(value, index, list) { - if (iterator.call(context, value, index, list)) { - result = value; - return true; - } - }); - return result; - }; - - // Return all the elements that pass a truth test. - // Delegates to **ECMAScript 5**'s native `filter` if available. - // Aliased as `select`. - _.filter = _.select = function(obj, iterator, context) { - var results = []; - if (obj == null) return results; - if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context); - each(obj, function(value, index, list) { - if (iterator.call(context, value, index, list)) results[results.length] = value; - }); - return results; - }; - - // Return all the elements for which a truth test fails. - _.reject = function(obj, iterator, context) { - return _.filter(obj, function(value, index, list) { - return !iterator.call(context, value, index, list); - }, context); - }; - - // Determine whether all of the elements match a truth test. - // Delegates to **ECMAScript 5**'s native `every` if available. - // Aliased as `all`. - _.every = _.all = function(obj, iterator, context) { - iterator || (iterator = _.identity); - var result = true; - if (obj == null) return result; - if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context); - each(obj, function(value, index, list) { - if (!(result = result && iterator.call(context, value, index, list))) return breaker; - }); - return !!result; - }; - - // Determine if at least one element in the object matches a truth test. - // Delegates to **ECMAScript 5**'s native `some` if available. - // Aliased as `any`. - var any = _.some = _.any = function(obj, iterator, context) { - iterator || (iterator = _.identity); - var result = false; - if (obj == null) return result; - if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context); - each(obj, function(value, index, list) { - if (result || (result = iterator.call(context, value, index, list))) return breaker; - }); - return !!result; - }; - - // Determine if the array or object contains a given value (using `===`). - // Aliased as `include`. - _.contains = _.include = function(obj, target) { - if (obj == null) return false; - if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1; - return any(obj, function(value) { - return value === target; - }); - }; - - // Invoke a method (with arguments) on every item in a collection. - _.invoke = function(obj, method) { - var args = slice.call(arguments, 2); - var isFunc = _.isFunction(method); - return _.map(obj, function(value) { - return (isFunc ? method : value[method]).apply(value, args); - }); - }; - - // Convenience version of a common use case of `map`: fetching a property. - _.pluck = function(obj, key) { - return _.map(obj, function(value){ return value[key]; }); - }; - - // Convenience version of a common use case of `filter`: selecting only objects - // containing specific `key:value` pairs. - _.where = function(obj, attrs, first) { - if (_.isEmpty(attrs)) return first ? null : []; - return _[first ? 'find' : 'filter'](obj, function(value) { - for (var key in attrs) { - if (attrs[key] !== value[key]) return false; - } - return true; - }); - }; - - // Convenience version of a common use case of `find`: getting the first object - // containing specific `key:value` pairs. - _.findWhere = function(obj, attrs) { - return _.where(obj, attrs, true); - }; - - // Return the maximum element or (element-based computation). - // Can't optimize arrays of integers longer than 65,535 elements. - // See: https://bugs.webkit.org/show_bug.cgi?id=80797 - _.max = function(obj, iterator, context) { - if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) { - return Math.max.apply(Math, obj); - } - if (!iterator && _.isEmpty(obj)) return -Infinity; - var result = {computed : -Infinity, value: -Infinity}; - each(obj, function(value, index, list) { - var computed = iterator ? iterator.call(context, value, index, list) : value; - computed >= result.computed && (result = {value : value, computed : computed}); - }); - return result.value; - }; - - // Return the minimum element (or element-based computation). - _.min = function(obj, iterator, context) { - if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) { - return Math.min.apply(Math, obj); - } - if (!iterator && _.isEmpty(obj)) return Infinity; - var result = {computed : Infinity, value: Infinity}; - each(obj, function(value, index, list) { - var computed = iterator ? iterator.call(context, value, index, list) : value; - computed < result.computed && (result = {value : value, computed : computed}); - }); - return result.value; - }; - - // Shuffle an array. - _.shuffle = function(obj) { - var rand; - var index = 0; - var shuffled = []; - each(obj, function(value) { - rand = _.random(index++); - shuffled[index - 1] = shuffled[rand]; - shuffled[rand] = value; - }); - return shuffled; - }; - - // An internal function to generate lookup iterators. - var lookupIterator = function(value) { - return _.isFunction(value) ? value : function(obj){ return obj[value]; }; - }; - - // Sort the object's values by a criterion produced by an iterator. - _.sortBy = function(obj, value, context) { - var iterator = lookupIterator(value); - return _.pluck(_.map(obj, function(value, index, list) { - return { - value : value, - index : index, - criteria : iterator.call(context, value, index, list) - }; - }).sort(function(left, right) { - var a = left.criteria; - var b = right.criteria; - if (a !== b) { - if (a > b || a === void 0) return 1; - if (a < b || b === void 0) return -1; - } - return left.index < right.index ? -1 : 1; - }), 'value'); - }; - - // An internal function used for aggregate "group by" operations. - var group = function(obj, value, context, behavior) { - var result = {}; - var iterator = lookupIterator(value || _.identity); - each(obj, function(value, index) { - var key = iterator.call(context, value, index, obj); - behavior(result, key, value); - }); - return result; - }; - - // Groups the object's values by a criterion. Pass either a string attribute - // to group by, or a function that returns the criterion. - _.groupBy = function(obj, value, context) { - return group(obj, value, context, function(result, key, value) { - (_.has(result, key) ? result[key] : (result[key] = [])).push(value); - }); - }; - - // Counts instances of an object that group by a certain criterion. Pass - // either a string attribute to count by, or a function that returns the - // criterion. - _.countBy = function(obj, value, context) { - return group(obj, value, context, function(result, key) { - if (!_.has(result, key)) result[key] = 0; - result[key]++; - }); - }; - - // Use a comparator function to figure out the smallest index at which - // an object should be inserted so as to maintain order. Uses binary search. - _.sortedIndex = function(array, obj, iterator, context) { - iterator = iterator == null ? _.identity : lookupIterator(iterator); - var value = iterator.call(context, obj); - var low = 0, high = array.length; - while (low < high) { - var mid = (low + high) >>> 1; - iterator.call(context, array[mid]) < value ? low = mid + 1 : high = mid; - } - return low; - }; - - // Safely convert anything iterable into a real, live array. - _.toArray = function(obj) { - if (!obj) return []; - if (_.isArray(obj)) return slice.call(obj); - if (obj.length === +obj.length) return _.map(obj, _.identity); - return _.values(obj); - }; - - // Return the number of elements in an object. - _.size = function(obj) { - if (obj == null) return 0; - return (obj.length === +obj.length) ? obj.length : _.keys(obj).length; - }; - - // Array Functions - // --------------- - - // Get the first element of an array. Passing **n** will return the first N - // values in the array. Aliased as `head` and `take`. The **guard** check - // allows it to work with `_.map`. - _.first = _.head = _.take = function(array, n, guard) { - if (array == null) return void 0; - return (n != null) && !guard ? slice.call(array, 0, n) : array[0]; - }; - - // Returns everything but the last entry of the array. Especially useful on - // the arguments object. Passing **n** will return all the values in - // the array, excluding the last N. The **guard** check allows it to work with - // `_.map`. - _.initial = function(array, n, guard) { - return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n)); - }; - - // Get the last element of an array. Passing **n** will return the last N - // values in the array. The **guard** check allows it to work with `_.map`. - _.last = function(array, n, guard) { - if (array == null) return void 0; - if ((n != null) && !guard) { - return slice.call(array, Math.max(array.length - n, 0)); - } else { - return array[array.length - 1]; - } - }; - - // Returns everything but the first entry of the array. Aliased as `tail` and `drop`. - // Especially useful on the arguments object. Passing an **n** will return - // the rest N values in the array. The **guard** - // check allows it to work with `_.map`. - _.rest = _.tail = _.drop = function(array, n, guard) { - return slice.call(array, (n == null) || guard ? 1 : n); - }; - - // Trim out all falsy values from an array. - _.compact = function(array) { - return _.filter(array, _.identity); - }; - - // Internal implementation of a recursive `flatten` function. - var flatten = function(input, shallow, output) { - each(input, function(value) { - if (_.isArray(value)) { - shallow ? push.apply(output, value) : flatten(value, shallow, output); - } else { - output.push(value); - } - }); - return output; - }; - - // Return a completely flattened version of an array. - _.flatten = function(array, shallow) { - return flatten(array, shallow, []); - }; - - // Return a version of the array that does not contain the specified value(s). - _.without = function(array) { - return _.difference(array, slice.call(arguments, 1)); - }; - - // Produce a duplicate-free version of the array. If the array has already - // been sorted, you have the option of using a faster algorithm. - // Aliased as `unique`. - _.uniq = _.unique = function(array, isSorted, iterator, context) { - if (_.isFunction(isSorted)) { - context = iterator; - iterator = isSorted; - isSorted = false; - } - var initial = iterator ? _.map(array, iterator, context) : array; - var results = []; - var seen = []; - each(initial, function(value, index) { - if (isSorted ? (!index || seen[seen.length - 1] !== value) : !_.contains(seen, value)) { - seen.push(value); - results.push(array[index]); - } - }); - return results; - }; - - // Produce an array that contains the union: each distinct element from all of - // the passed-in arrays. - _.union = function() { - return _.uniq(concat.apply(ArrayProto, arguments)); - }; - - // Produce an array that contains every item shared between all the - // passed-in arrays. - _.intersection = function(array) { - var rest = slice.call(arguments, 1); - return _.filter(_.uniq(array), function(item) { - return _.every(rest, function(other) { - return _.indexOf(other, item) >= 0; - }); - }); - }; - - // Take the difference between one array and a number of other arrays. - // Only the elements present in just the first array will remain. - _.difference = function(array) { - var rest = concat.apply(ArrayProto, slice.call(arguments, 1)); - return _.filter(array, function(value){ return !_.contains(rest, value); }); - }; - - // Zip together multiple lists into a single array -- elements that share - // an index go together. - _.zip = function() { - var args = slice.call(arguments); - var length = _.max(_.pluck(args, 'length')); - var results = new Array(length); - for (var i = 0; i < length; i++) { - results[i] = _.pluck(args, "" + i); - } - return results; - }; - - // Converts lists into objects. Pass either a single array of `[key, value]` - // pairs, or two parallel arrays of the same length -- one of keys, and one of - // the corresponding values. - _.object = function(list, values) { - if (list == null) return {}; - var result = {}; - for (var i = 0, l = list.length; i < l; i++) { - if (values) { - result[list[i]] = values[i]; - } else { - result[list[i][0]] = list[i][1]; - } - } - return result; - }; - - // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**), - // we need this function. Return the position of the first occurrence of an - // item in an array, or -1 if the item is not included in the array. - // Delegates to **ECMAScript 5**'s native `indexOf` if available. - // If the array is large and already in sort order, pass `true` - // for **isSorted** to use binary search. - _.indexOf = function(array, item, isSorted) { - if (array == null) return -1; - var i = 0, l = array.length; - if (isSorted) { - if (typeof isSorted == 'number') { - i = (isSorted < 0 ? Math.max(0, l + isSorted) : isSorted); - } else { - i = _.sortedIndex(array, item); - return array[i] === item ? i : -1; - } - } - if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item, isSorted); - for (; i < l; i++) if (array[i] === item) return i; - return -1; - }; - - // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available. - _.lastIndexOf = function(array, item, from) { - if (array == null) return -1; - var hasIndex = from != null; - if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) { - return hasIndex ? array.lastIndexOf(item, from) : array.lastIndexOf(item); - } - var i = (hasIndex ? from : array.length); - while (i--) if (array[i] === item) return i; - return -1; - }; - - // Generate an integer Array containing an arithmetic progression. A port of - // the native Python `range()` function. See - // [the Python documentation](http://docs.python.org/library/functions.html#range). - _.range = function(start, stop, step) { - if (arguments.length <= 1) { - stop = start || 0; - start = 0; - } - step = arguments[2] || 1; - - var len = Math.max(Math.ceil((stop - start) / step), 0); - var idx = 0; - var range = new Array(len); - - while(idx < len) { - range[idx++] = start; - start += step; - } - - return range; - }; - - // Function (ahem) Functions - // ------------------ - - // Create a function bound to a given object (assigning `this`, and arguments, - // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if - // available. - _.bind = function(func, context) { - if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); - var args = slice.call(arguments, 2); - return function() { - return func.apply(context, args.concat(slice.call(arguments))); - }; - }; - - // Partially apply a function by creating a version that has had some of its - // arguments pre-filled, without changing its dynamic `this` context. - _.partial = function(func) { - var args = slice.call(arguments, 1); - return function() { - return func.apply(this, args.concat(slice.call(arguments))); - }; - }; - - // Bind all of an object's methods to that object. Useful for ensuring that - // all callbacks defined on an object belong to it. - _.bindAll = function(obj) { - var funcs = slice.call(arguments, 1); - if (funcs.length === 0) funcs = _.functions(obj); - each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); }); - return obj; - }; - - // Memoize an expensive function by storing its results. - _.memoize = function(func, hasher) { - var memo = {}; - hasher || (hasher = _.identity); - return function() { - var key = hasher.apply(this, arguments); - return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments)); - }; - }; - - // Delays a function for the given number of milliseconds, and then calls - // it with the arguments supplied. - _.delay = function(func, wait) { - var args = slice.call(arguments, 2); - return setTimeout(function(){ return func.apply(null, args); }, wait); - }; - - // Defers a function, scheduling it to run after the current call stack has - // cleared. - _.defer = function(func) { - return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1))); - }; - - // Returns a function, that, when invoked, will only be triggered at most once - // during a given window of time. - _.throttle = function(func, wait) { - var context, args, timeout, result; - var previous = 0; - var later = function() { - previous = new Date; - timeout = null; - result = func.apply(context, args); - }; - return function() { - var now = new Date; - var remaining = wait - (now - previous); - context = this; - args = arguments; - if (remaining <= 0) { - clearTimeout(timeout); - timeout = null; - previous = now; - result = func.apply(context, args); - } else if (!timeout) { - timeout = setTimeout(later, remaining); - } - return result; - }; - }; - - // Returns a function, that, as long as it continues to be invoked, will not - // be triggered. The function will be called after it stops being called for - // N milliseconds. If `immediate` is passed, trigger the function on the - // leading edge, instead of the trailing. - _.debounce = function(func, wait, immediate) { - var timeout, result; - return function() { - var context = this, args = arguments; - var later = function() { - timeout = null; - if (!immediate) result = func.apply(context, args); - }; - var callNow = immediate && !timeout; - clearTimeout(timeout); - timeout = setTimeout(later, wait); - if (callNow) result = func.apply(context, args); - return result; - }; - }; - - // Returns a function that will be executed at most one time, no matter how - // often you call it. Useful for lazy initialization. - _.once = function(func) { - var ran = false, memo; - return function() { - if (ran) return memo; - ran = true; - memo = func.apply(this, arguments); - func = null; - return memo; - }; - }; - - // Returns the first function passed as an argument to the second, - // allowing you to adjust arguments, run code before and after, and - // conditionally execute the original function. - _.wrap = function(func, wrapper) { - return function() { - var args = [func]; - push.apply(args, arguments); - return wrapper.apply(this, args); - }; - }; - - // Returns a function that is the composition of a list of functions, each - // consuming the return value of the function that follows. - _.compose = function() { - var funcs = arguments; - return function() { - var args = arguments; - for (var i = funcs.length - 1; i >= 0; i--) { - args = [funcs[i].apply(this, args)]; - } - return args[0]; - }; - }; - - // Returns a function that will only be executed after being called N times. - _.after = function(times, func) { - if (times <= 0) return func(); - return function() { - if (--times < 1) { - return func.apply(this, arguments); - } - }; - }; - - // Object Functions - // ---------------- - - // Retrieve the names of an object's properties. - // Delegates to **ECMAScript 5**'s native `Object.keys` - _.keys = nativeKeys || function(obj) { - if (obj !== Object(obj)) throw new TypeError('Invalid object'); - var keys = []; - for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key; - return keys; - }; - - // Retrieve the values of an object's properties. - _.values = function(obj) { - var values = []; - for (var key in obj) if (_.has(obj, key)) values.push(obj[key]); - return values; - }; - - // Convert an object into a list of `[key, value]` pairs. - _.pairs = function(obj) { - var pairs = []; - for (var key in obj) if (_.has(obj, key)) pairs.push([key, obj[key]]); - return pairs; - }; - - // Invert the keys and values of an object. The values must be serializable. - _.invert = function(obj) { - var result = {}; - for (var key in obj) if (_.has(obj, key)) result[obj[key]] = key; - return result; - }; - - // Return a sorted list of the function names available on the object. - // Aliased as `methods` - _.functions = _.methods = function(obj) { - var names = []; - for (var key in obj) { - if (_.isFunction(obj[key])) names.push(key); - } - return names.sort(); - }; - - // Extend a given object with all the properties in passed-in object(s). - _.extend = function(obj) { - each(slice.call(arguments, 1), function(source) { - if (source) { - for (var prop in source) { - obj[prop] = source[prop]; - } - } - }); - return obj; - }; - - // Return a copy of the object only containing the whitelisted properties. - _.pick = function(obj) { - var copy = {}; - var keys = concat.apply(ArrayProto, slice.call(arguments, 1)); - each(keys, function(key) { - if (key in obj) copy[key] = obj[key]; - }); - return copy; - }; - - // Return a copy of the object without the blacklisted properties. - _.omit = function(obj) { - var copy = {}; - var keys = concat.apply(ArrayProto, slice.call(arguments, 1)); - for (var key in obj) { - if (!_.contains(keys, key)) copy[key] = obj[key]; - } - return copy; - }; - - // Fill in a given object with default properties. - _.defaults = function(obj) { - each(slice.call(arguments, 1), function(source) { - if (source) { - for (var prop in source) { - if (obj[prop] == null) obj[prop] = source[prop]; - } - } - }); - return obj; - }; - - // Create a (shallow-cloned) duplicate of an object. - _.clone = function(obj) { - if (!_.isObject(obj)) return obj; - return _.isArray(obj) ? obj.slice() : _.extend({}, obj); - }; - - // Invokes interceptor with the obj, and then returns obj. - // The primary purpose of this method is to "tap into" a method chain, in - // order to perform operations on intermediate results within the chain. - _.tap = function(obj, interceptor) { - interceptor(obj); - return obj; - }; - - // Internal recursive comparison function for `isEqual`. - var eq = function(a, b, aStack, bStack) { - // Identical objects are equal. `0 === -0`, but they aren't identical. - // See the Harmony `egal` proposal: http://wiki.ecmascript.org/doku.php?id=harmony:egal. - if (a === b) return a !== 0 || 1 / a == 1 / b; - // A strict comparison is necessary because `null == undefined`. - if (a == null || b == null) return a === b; - // Unwrap any wrapped objects. - if (a instanceof _) a = a._wrapped; - if (b instanceof _) b = b._wrapped; - // Compare `[[Class]]` names. - var className = toString.call(a); - if (className != toString.call(b)) return false; - switch (className) { - // Strings, numbers, dates, and booleans are compared by value. - case '[object String]': - // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is - // equivalent to `new String("5")`. - return a == String(b); - case '[object Number]': - // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for - // other numeric values. - return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b); - case '[object Date]': - case '[object Boolean]': - // Coerce dates and booleans to numeric primitive values. Dates are compared by their - // millisecond representations. Note that invalid dates with millisecond representations - // of `NaN` are not equivalent. - return +a == +b; - // RegExps are compared by their source patterns and flags. - case '[object RegExp]': - return a.source == b.source && - a.global == b.global && - a.multiline == b.multiline && - a.ignoreCase == b.ignoreCase; - } - if (typeof a != 'object' || typeof b != 'object') return false; - // Assume equality for cyclic structures. The algorithm for detecting cyclic - // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. - var length = aStack.length; - while (length--) { - // Linear search. Performance is inversely proportional to the number of - // unique nested structures. - if (aStack[length] == a) return bStack[length] == b; - } - // Add the first object to the stack of traversed objects. - aStack.push(a); - bStack.push(b); - var size = 0, result = true; - // Recursively compare objects and arrays. - if (className == '[object Array]') { - // Compare array lengths to determine if a deep comparison is necessary. - size = a.length; - result = size == b.length; - if (result) { - // Deep compare the contents, ignoring non-numeric properties. - while (size--) { - if (!(result = eq(a[size], b[size], aStack, bStack))) break; - } - } - } else { - // Objects with different constructors are not equivalent, but `Object`s - // from different frames are. - var aCtor = a.constructor, bCtor = b.constructor; - if (aCtor !== bCtor && !(_.isFunction(aCtor) && (aCtor instanceof aCtor) && - _.isFunction(bCtor) && (bCtor instanceof bCtor))) { - return false; - } - // Deep compare objects. - for (var key in a) { - if (_.has(a, key)) { - // Count the expected number of properties. - size++; - // Deep compare each member. - if (!(result = _.has(b, key) && eq(a[key], b[key], aStack, bStack))) break; - } - } - // Ensure that both objects contain the same number of properties. - if (result) { - for (key in b) { - if (_.has(b, key) && !(size--)) break; - } - result = !size; - } - } - // Remove the first object from the stack of traversed objects. - aStack.pop(); - bStack.pop(); - return result; - }; - - // Perform a deep comparison to check if two objects are equal. - _.isEqual = function(a, b) { - return eq(a, b, [], []); - }; - - // Is a given array, string, or object empty? - // An "empty" object has no enumerable own-properties. - _.isEmpty = function(obj) { - if (obj == null) return true; - if (_.isArray(obj) || _.isString(obj)) return obj.length === 0; - for (var key in obj) if (_.has(obj, key)) return false; - return true; - }; - - // Is a given value a DOM element? - _.isElement = function(obj) { - return !!(obj && obj.nodeType === 1); - }; - - // Is a given value an array? - // Delegates to ECMA5's native Array.isArray - _.isArray = nativeIsArray || function(obj) { - return toString.call(obj) == '[object Array]'; - }; - - // Is a given variable an object? - _.isObject = function(obj) { - return obj === Object(obj); - }; - - // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp. - each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) { - _['is' + name] = function(obj) { - return toString.call(obj) == '[object ' + name + ']'; - }; - }); - - // Define a fallback version of the method in browsers (ahem, IE), where - // there isn't any inspectable "Arguments" type. - if (!_.isArguments(arguments)) { - _.isArguments = function(obj) { - return !!(obj && _.has(obj, 'callee')); - }; - } - - // Optimize `isFunction` if appropriate. - if (typeof (/./) !== 'function') { - _.isFunction = function(obj) { - return typeof obj === 'function'; - }; - } - - // Is a given object a finite number? - _.isFinite = function(obj) { - return isFinite(obj) && !isNaN(parseFloat(obj)); - }; - - // Is the given value `NaN`? (NaN is the only number which does not equal itself). - _.isNaN = function(obj) { - return _.isNumber(obj) && obj != +obj; - }; - - // Is a given value a boolean? - _.isBoolean = function(obj) { - return obj === true || obj === false || toString.call(obj) == '[object Boolean]'; - }; - - // Is a given value equal to null? - _.isNull = function(obj) { - return obj === null; - }; - - // Is a given variable undefined? - _.isUndefined = function(obj) { - return obj === void 0; - }; - - // Shortcut function for checking if an object has a given property directly - // on itself (in other words, not on a prototype). - _.has = function(obj, key) { - return hasOwnProperty.call(obj, key); - }; - - // Utility Functions - // ----------------- - - // Run Underscore.js in *noConflict* mode, returning the `_` variable to its - // previous owner. Returns a reference to the Underscore object. - _.noConflict = function() { - root._ = previousUnderscore; - return this; - }; - - // Keep the identity function around for default iterators. - _.identity = function(value) { - return value; - }; - - // Run a function **n** times. - _.times = function(n, iterator, context) { - var accum = Array(n); - for (var i = 0; i < n; i++) accum[i] = iterator.call(context, i); - return accum; - }; - - // Return a random integer between min and max (inclusive). - _.random = function(min, max) { - if (max == null) { - max = min; - min = 0; - } - return min + Math.floor(Math.random() * (max - min + 1)); - }; - - // List of HTML entities for escaping. - var entityMap = { - escape: { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', - '/': '/' - } - }; - entityMap.unescape = _.invert(entityMap.escape); - - // Regexes containing the keys and values listed immediately above. - var entityRegexes = { - escape: new RegExp('[' + _.keys(entityMap.escape).join('') + ']', 'g'), - unescape: new RegExp('(' + _.keys(entityMap.unescape).join('|') + ')', 'g') - }; - - // Functions for escaping and unescaping strings to/from HTML interpolation. - _.each(['escape', 'unescape'], function(method) { - _[method] = function(string) { - if (string == null) return ''; - return ('' + string).replace(entityRegexes[method], function(match) { - return entityMap[method][match]; - }); - }; - }); - - // If the value of the named property is a function then invoke it; - // otherwise, return it. - _.result = function(object, property) { - if (object == null) return null; - var value = object[property]; - return _.isFunction(value) ? value.call(object) : value; - }; - - // Add your own custom functions to the Underscore object. - _.mixin = function(obj) { - each(_.functions(obj), function(name){ - var func = _[name] = obj[name]; - _.prototype[name] = function() { - var args = [this._wrapped]; - push.apply(args, arguments); - return result.call(this, func.apply(_, args)); - }; - }); - }; - - // Generate a unique integer id (unique within the entire client session). - // Useful for temporary DOM ids. - var idCounter = 0; - _.uniqueId = function(prefix) { - var id = ++idCounter + ''; - return prefix ? prefix + id : id; - }; - - // By default, Underscore uses ERB-style template delimiters, change the - // following template settings to use alternative delimiters. - _.templateSettings = { - evaluate : /<%([\s\S]+?)%>/g, - interpolate : /<%=([\s\S]+?)%>/g, - escape : /<%-([\s\S]+?)%>/g - }; - - // When customizing `templateSettings`, if you don't want to define an - // interpolation, evaluation or escaping regex, we need one that is - // guaranteed not to match. - var noMatch = /(.)^/; - - // Certain characters need to be escaped so that they can be put into a - // string literal. - var escapes = { - "'": "'", - '\\': '\\', - '\r': 'r', - '\n': 'n', - '\t': 't', - '\u2028': 'u2028', - '\u2029': 'u2029' - }; - - var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g; - - // JavaScript micro-templating, similar to John Resig's implementation. - // Underscore templating handles arbitrary delimiters, preserves whitespace, - // and correctly escapes quotes within interpolated code. - _.template = function(text, data, settings) { - var render; - settings = _.defaults({}, settings, _.templateSettings); - - // Combine delimiters into one regular expression via alternation. - var matcher = new RegExp([ - (settings.escape || noMatch).source, - (settings.interpolate || noMatch).source, - (settings.evaluate || noMatch).source - ].join('|') + '|$', 'g'); - - // Compile the template source, escaping string literals appropriately. - var index = 0; - var source = "__p+='"; - text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { - source += text.slice(index, offset) - .replace(escaper, function(match) { return '\\' + escapes[match]; }); - - if (escape) { - source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; - } - if (interpolate) { - source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; - } - if (evaluate) { - source += "';\n" + evaluate + "\n__p+='"; - } - index = offset + match.length; - return match; - }); - source += "';\n"; - - // If a variable is not specified, place data values in local scope. - if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; - - source = "var __t,__p='',__j=Array.prototype.join," + - "print=function(){__p+=__j.call(arguments,'');};\n" + - source + "return __p;\n"; - - try { - render = new Function(settings.variable || 'obj', '_', source); - } catch (e) { - e.source = source; - throw e; - } - - if (data) return render(data, _); - var template = function(data) { - return render.call(this, data, _); - }; - - // Provide the compiled function source as a convenience for precompilation. - template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}'; - - return template; - }; - - // Add a "chain" function, which will delegate to the wrapper. - _.chain = function(obj) { - return _(obj).chain(); - }; - - // OOP - // --------------- - // If Underscore is called as a function, it returns a wrapped object that - // can be used OO-style. This wrapper holds altered versions of all the - // underscore functions. Wrapped objects may be chained. - - // Helper function to continue chaining intermediate results. - var result = function(obj) { - return this._chain ? _(obj).chain() : obj; - }; - - // Add all of the Underscore functions to the wrapper object. - _.mixin(_); - - // Add all mutator Array functions to the wrapper. - each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { - var method = ArrayProto[name]; - _.prototype[name] = function() { - var obj = this._wrapped; - method.apply(obj, arguments); - if ((name == 'shift' || name == 'splice') && obj.length === 0) delete obj[0]; - return result.call(this, obj); - }; - }); - - // Add all accessor Array functions to the wrapper. - each(['concat', 'join', 'slice'], function(name) { - var method = ArrayProto[name]; - _.prototype[name] = function() { - return result.call(this, method.apply(this._wrapped, arguments)); - }; - }); - - _.extend(_.prototype, { - - // Start chaining a wrapped Underscore object. - chain: function() { - this._chain = true; - return this; - }, - - // Extracts the result from a wrapped and chained object. - value: function() { - return this._wrapped; - } - - }); - -}).call(this); diff --git a/node_modules/xml2json/.npmignore b/node_modules/xml2json/.npmignore deleted file mode 100644 index 3c3629e..0000000 --- a/node_modules/xml2json/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/node_modules/xml2json/README.md b/node_modules/xml2json/README.md deleted file mode 100644 index 311974c..0000000 --- a/node_modules/xml2json/README.md +++ /dev/null @@ -1,91 +0,0 @@ -# Simple SAX-based XML2JSON Parser. - -It does not parse the following elements: - -* CDATA sections (*) -* Processing instructions -* XML declarations -* Entity declarations -* Comments - -## Installation -``` -$ npm install xml2json -``` - -## Usage -```javascript -var parser = require('xml2json'); - -var xml = "bar"; -var json = parser.toJson(xml); //returns a string containing the JSON structure by default -console.log(json); -``` -## API - -```javascript -parser.toJson(xml, options); -``` -```javascript -parser.toXml(json, options); -``` - -### Options object - -Default values: -```javascript -var options = { - object: false, - reversible: false, - coerce: true, - sanitize: true, - trim: true -}; -``` - -* **object:** Returns a Javascript object instead of a JSON string -* **reversible:** Makes the JSON reversible to XML (*) -* **coerce:** Makes type coercion. i.e.: numbers and booleans present in attributes and element values are converted from string to its correspondent data types. -* **trim:** Removes leading and trailing whitespaces as well as line terminators in element values. -* **sanitize:** Sanitizes the following characters present in element values: - -```javascript -var chars = { - '<': '<', - '>': '>', - '(': '(', - ')': ')', - '#': '#', - '&': '&', - '"': '"', - "'": ''' -}; -``` - - - - -(*) xml2json tranforms CDATA content to JSON, but it doesn't generate a reversible structure. - -## License -(The MIT License) - -Copyright 2012 BugLabs. All rights reserved. - -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: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -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. \ No newline at end of file diff --git a/node_modules/xml2json/index.js b/node_modules/xml2json/index.js deleted file mode 100644 index bb0a047..0000000 --- a/node_modules/xml2json/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib'); diff --git a/node_modules/xml2json/lib/index.js b/node_modules/xml2json/lib/index.js deleted file mode 100644 index cf5c57c..0000000 --- a/node_modules/xml2json/lib/index.js +++ /dev/null @@ -1,4 +0,0 @@ -var exports = module.exports; - -exports.toJson = require('./xml2json'); -exports.toXml = require('./json2xml'); diff --git a/node_modules/xml2json/lib/json2xml.js b/node_modules/xml2json/lib/json2xml.js deleted file mode 100644 index 186b25f..0000000 --- a/node_modules/xml2json/lib/json2xml.js +++ /dev/null @@ -1,55 +0,0 @@ -module.exports = function toXml(json, xml) { - var xml = xml || ''; - if (json instanceof Buffer) { - json = json.toString(); - } - - var obj = null; - if (typeof(json) == 'string') { - try { - obj = JSON.parse(json); - } catch(e) { - throw new Error("The JSON structure is invalid"); - } - } else { - obj = json; - } - - var keys = Object.keys(obj); - var len = keys.length; - - // First pass, extract strings only - for (var i = 0; i < len; i++) { - var key = keys[i]; - if (typeof(obj[key]) == 'string') { - if (key == '$t') { - xml += obj[key]; - } else { - xml = xml.replace(/>$/, ''); - xml += ' ' + key + '="' + obj[key] + '">'; - } - } - } - - // Second path, now handle sub-objects and arrays - for (var i = 0; i < len; i++) { - var key = keys[i]; - - if (Array.isArray(obj[key])) { - var elems = obj[key]; - var l = elems.length; - for (var j = 0; j < l; j++) { - xml += '<' + key + '>'; - xml = toXml(elems[j], xml); - xml += ''; - } - } else if (typeof(obj[key]) == 'object') { - xml += '<' + key + '>'; - xml = toXml(obj[key], xml); - xml += ''; - } - } - - return xml; -}; - diff --git a/node_modules/xml2json/lib/xml2json.js b/node_modules/xml2json/lib/xml2json.js deleted file mode 100644 index f9a5548..0000000 --- a/node_modules/xml2json/lib/xml2json.js +++ /dev/null @@ -1,196 +0,0 @@ -var expat = require('node-expat'); -var fs = require('fs'); - -// This object will hold the final result. -var obj = {}; -var currentObject = {}; -var ancestors = []; -var currentElementName = null; - -var options = {}; //configuration options -function startElement(name, attrs) { - currentElementName = name; - if(options.coerce) { - // Looping here in stead of making coerce generic as object walk is unnecessary - Object.keys(attrs).forEach(function(key) { - attrs[key] = coerce(attrs[key]); - }); - } - - if (! (name in currentObject)) { - currentObject[name] = attrs; - } else if (! (currentObject[name] instanceof Array)) { - // Put the existing object in an array. - var newArray = [currentObject[name]]; - // Add the new object to the array. - newArray.push(attrs); - // Point to the new array. - currentObject[name] = newArray; - } else { - // An array already exists, push the attributes on to it. - currentObject[name].push(attrs); - } - - // Store the current (old) parent. - ancestors.push(currentObject); - - // We are now working with this object, so it becomes the current parent. - if (currentObject[name] instanceof Array) { - // If it is an array, get the last element of the array. - currentObject = currentObject[name][currentObject[name].length - 1]; - } else { - // Otherwise, use the object itself. - currentObject = currentObject[name]; - } -} - -function text(data) { - //console.log('->' + data + '<-'); - /*if (!data.trim().length) { - return; - }*/ - - if (options.trim) { - data = data.trim(); - } - - if (options.sanitize) { - data = sanitize(data); - } - - currentObject['$t'] = coerce((currentObject['$t'] || '') + data); -} - -function endElement(name) { - if (currentElementName !== name) { - delete currentObject['$t']; - } - // This should check to make sure that the name we're ending - // matches the name we started on. - var ancestor = ancestors.pop(); - if (!options.reversible) { - if ((Object.keys(currentObject).length == 1) && ('$t' in currentObject)) { - if (ancestor[name] instanceof Array) { - ancestor[name].push(ancestor[name].pop()['$t']); - } else { - ancestor[name] = currentObject['$t']; - } - } - } - - currentObject = ancestor; -} - -function coerce(value) { - if (!options.coerce) { - return value; - } - - var num = Number(value); - if (!isNaN(num)) { - return num; - } - - var _value = value.toLowerCase(); - - if (_value == 'true' || _value == 'yes') { - return true; - } - - if (_value == 'false' || _value == 'no') { - return false; - } - - return value; -} - - -/** - * Simple sanitization. It is not intended to sanitize - * malicious element values. - * - * character | escaped - * < < - * > > - * ( ( - * ) ) - * # # - * & & - * " " - * ' ' - */ -var chars = { '<': '<', - '>': '>', - '(': '(', - ')': ')', - '#': '#', - '&': '&', - '"': '"', - "'": ''' }; - -function sanitize(value) { - if (typeof value !== 'string') { - return value; - } - - Object.keys(chars).forEach(function(key) { - value = value.replace(key, chars[key]); - }); - - return value; -} - -/** - * Parses xml to json using node-expat. - * @param {String|Buffer} xml The xml to be parsed to json. - * @param {Object} _options An object with options provided by the user. - * The available options are: - * - object: If true, the parser returns a Javascript object instead of - * a JSON string. - * - reversible: If true, the parser generates a reversible JSON, mainly - * characterized by the presence of the property $t. - * - sanitize_values: If true, the parser escapes any element value in the xml - * that has any of the following characters: <, >, (, ), #, #, &, ", '. - * - * @return {String|Object} A String or an Object with the JSON representation - * of the XML. - */ -module.exports = function(xml, _options) { - var parser = new expat.Parser('UTF-8'); - - parser.on('startElement', startElement); - parser.on('text', text); - parser.on('endElement', endElement); - - obj = currentObject = {}; - ancestors = []; - currentElementName = null; - - options = { - object: false, - reversible: false, - coerce: true, - sanitize: true, - trim: true - }; - - for (var opt in _options) { - options[opt] = _options[opt]; - } - - if (!parser.parse(xml)) { - throw new Error('There are errors in your xml file: ' + parser.getError()); - } - - if (options.object) { - return obj; - } - - var json = JSON.stringify(obj); - - //See: http://timelessrepo.com/json-isnt-a-javascript-subset - json = json.replace(/\u2028/g, '\\u2028').replace(/\u2029/g, '\\u2029'); - - return json; -}; - diff --git a/node_modules/xml2json/node_modules/node-expat/.npmignore b/node_modules/xml2json/node_modules/node-expat/.npmignore deleted file mode 100644 index 5c68e8c..0000000 --- a/node_modules/xml2json/node_modules/node-expat/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -.lock-wscript -node_modules -build -*.swp diff --git a/node_modules/xml2json/node_modules/node-expat/.travis.yml b/node_modules/xml2json/node_modules/node-expat/.travis.yml deleted file mode 100644 index 895dbd3..0000000 --- a/node_modules/xml2json/node_modules/node-expat/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 diff --git a/node_modules/xml2json/node_modules/node-expat/LICENSE b/node_modules/xml2json/node_modules/node-expat/LICENSE deleted file mode 100644 index 907e293..0000000 --- a/node_modules/xml2json/node_modules/node-expat/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2010 Stephan Maka - -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: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -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. - diff --git a/node_modules/xml2json/node_modules/node-expat/README.markdown b/node_modules/xml2json/node_modules/node-expat/README.markdown deleted file mode 100644 index 4900f25..0000000 --- a/node_modules/xml2json/node_modules/node-expat/README.markdown +++ /dev/null @@ -1,51 +0,0 @@ -# node-expat # - -## Motivation ## - -You use [node.js](http://github.com/ry/node) for speed? You process -XML streams? Then you want the fastest XML parser: [libexpat](http://expat.sourceforge.net/)! - -## Speed ## - -A stupid speed test is supplied in `bench.js`. We measure how many -25-byte elements a SAX parser can process: - -- [node-xml](http://github.com/robrighter/node-xml) (pure JavaScript): 23,000 el/s -- [libxmljs](http://github.com/polotek/libxmljs) (libxml2 binding): 77,000 el/s -- [node-expat](http://github.com/astro/node-expat) (libexpat binding, this): 113,000 el/s - -These numbers were recorded on a Core 2 2400 MHz. - -## Instructions ## - -Install node-expat: - - npm i node-expat - -## Usage ## - -Important events emitted by a parser: - -- *startElement* with `name, attrs` -- *endElement* with `name` -- *text* with `string` - -There are more. Use `test.js` for reference. - -It's possible to stop and resume the parser from within element handlers using the parsers -stop() and resume() methods. - -## Error handling ## - -We don't emit an error event because libexpat doesn't use a callback -either. Instead, check that `parse()` returns `true`. A descriptive -string can be obtained via `getError()` to provide user feedback. - -Alternatively, use the Parser like a node Stream. `write()` will emit -error events. - -## Namespace handling ## - -A word about special parsing of *xmlns:* this is not neccessary in a -bare SAX parser like this, given that the DOM replacement you are -using (if any) is not relevant to the parser. diff --git a/node_modules/xml2json/node_modules/node-expat/bench.js b/node_modules/xml2json/node_modules/node-expat/bench.js deleted file mode 100644 index c7e74a9..0000000 --- a/node_modules/xml2json/node_modules/node-expat/bench.js +++ /dev/null @@ -1,60 +0,0 @@ -var util = require('util'); -var node_xml = require("node-xml"); -var libxml = require("libxmljs"); -var expat = require('node-expat'); -var sax = require('sax'); - -function NodeXmlParser() { - var parser = new node_xml.SaxParser(function(cb) { }); - this.parse = function(s) { - parser.parseString(s); - }; -} -function LibXmlJsParser() { - var parser = new libxml.SaxPushParser(function(cb) { }); - this.parse = function(s) { - parser.push(s, false); - }; -} -function SaxParser() { - var parser = sax.parser(); - this.parse = function(s) { - parser.write(s).close(); - } -} -function ExpatParser() { - var parser = new expat.Parser(); - this.parse = function(s) { - parser.parse(s, false); - }; -} - -//var p = new NodeXmlParser(); -//var p = new LibXmlJsParser(); -//var p = new SaxParser(); -var p = new ExpatParser(); -p.parse(""); -var nEl = 0; -function d() { - p.parse("quux"); - nEl++; - setTimeout(d, 0); -} -d(); - -var its =[]; -setInterval(function() { - util.puts(nEl + " el/s"); - its.push(nEl); - nEl = 0; -}, 1000); - -process.on('SIGINT', function () { - var average = 0; - its.forEach(function (v){ - average += v; - }); - average /= its.length; - util.puts("Average: " + average + " el/s"); - process.exit(0); -}); \ No newline at end of file diff --git a/node_modules/xml2json/node_modules/node-expat/binding.gyp b/node_modules/xml2json/node_modules/node-expat/binding.gyp deleted file mode 100644 index 317efa7..0000000 --- a/node_modules/xml2json/node_modules/node-expat/binding.gyp +++ /dev/null @@ -1,11 +0,0 @@ -{ - 'targets': [ - { - 'target_name': 'node_expat', - 'sources': [ 'node-expat.cc' ], - 'dependencies': [ - 'deps/libexpat/libexpat.gyp:expat' - ] - } - ] -} diff --git a/node_modules/xml2json/node_modules/node-expat/build/Makefile b/node_modules/xml2json/node_modules/node-expat/build/Makefile deleted file mode 100644 index 15060fe..0000000 --- a/node_modules/xml2json/node_modules/node-expat/build/Makefile +++ /dev/null @@ -1,365 +0,0 @@ -# We borrow heavily from the kernel build setup, though we are simpler since -# we don't have Kconfig tweaking settings on us. - -# The implicit make rules have it looking for RCS files, among other things. -# We instead explicitly write all the rules we care about. -# It's even quicker (saves ~200ms) to pass -r on the command line. -MAKEFLAGS=-r - -# The source directory tree. -srcdir := .. -abs_srcdir := $(abspath $(srcdir)) - -# The name of the builddir. -builddir_name ?= . - -# The V=1 flag on command line makes us verbosely print command lines. -ifdef V - quiet= -else - quiet=quiet_ -endif - -# Specify BUILDTYPE=Release on the command line for a release build. -BUILDTYPE ?= Release - -# Directory all our build output goes into. -# Note that this must be two directories beneath src/ for unit tests to pass, -# as they reach into the src/ directory for data with relative paths. -builddir ?= $(builddir_name)/$(BUILDTYPE) -abs_builddir := $(abspath $(builddir)) -depsdir := $(builddir)/.deps - -# Object output directory. -obj := $(builddir)/obj -abs_obj := $(abspath $(obj)) - -# We build up a list of every single one of the targets so we can slurp in the -# generated dependency rule Makefiles in one pass. -all_deps := - - - -# C++ apps need to be linked with g++. -# -# Note: flock is used to seralize linking. Linking is a memory-intensive -# process so running parallel links can often lead to thrashing. To disable -# the serialization, override LINK via an envrionment variable as follows: -# -# export LINK=g++ -# -# This will allow make to invoke N linker processes as specified in -jN. -LINK ?= ./gyp-mac-tool flock $(builddir)/linker.lock $(CXX) - -CC.target ?= $(CC) -CFLAGS.target ?= $(CFLAGS) -CXX.target ?= $(CXX) -CXXFLAGS.target ?= $(CXXFLAGS) -LINK.target ?= $(LINK) -LDFLAGS.target ?= $(LDFLAGS) -AR.target ?= $(AR) - -# TODO(evan): move all cross-compilation logic to gyp-time so we don't need -# to replicate this environment fallback in make as well. -CC.host ?= gcc -CFLAGS.host ?= -CXX.host ?= g++ -CXXFLAGS.host ?= -LINK.host ?= g++ -LDFLAGS.host ?= -AR.host ?= ar - -# Define a dir function that can handle spaces. -# http://www.gnu.org/software/make/manual/make.html#Syntax-of-Functions -# "leading spaces cannot appear in the text of the first argument as written. -# These characters can be put into the argument value by variable substitution." -empty := -space := $(empty) $(empty) - -# http://stackoverflow.com/questions/1189781/using-make-dir-or-notdir-on-a-path-with-spaces -replace_spaces = $(subst $(space),?,$1) -unreplace_spaces = $(subst ?,$(space),$1) -dirx = $(call unreplace_spaces,$(dir $(call replace_spaces,$1))) - -# Flags to make gcc output dependency info. Note that you need to be -# careful here to use the flags that ccache and distcc can understand. -# We write to a dep file on the side first and then rename at the end -# so we can't end up with a broken dep file. -depfile = $(depsdir)/$(call replace_spaces,$@).d -DEPFLAGS = -MMD -MF $(depfile).raw - -# We have to fixup the deps output in a few ways. -# (1) the file output should mention the proper .o file. -# ccache or distcc lose the path to the target, so we convert a rule of -# the form: -# foobar.o: DEP1 DEP2 -# into -# path/to/foobar.o: DEP1 DEP2 -# (2) we want missing files not to cause us to fail to build. -# We want to rewrite -# foobar.o: DEP1 DEP2 \ -# DEP3 -# to -# DEP1: -# DEP2: -# DEP3: -# so if the files are missing, they're just considered phony rules. -# We have to do some pretty insane escaping to get those backslashes -# and dollar signs past make, the shell, and sed at the same time. -# Doesn't work with spaces, but that's fine: .d files have spaces in -# their names replaced with other characters. -define fixup_dep -# The depfile may not exist if the input file didn't have any #includes. -touch $(depfile).raw -# Fixup path as in (1). -sed -e "s|^$(notdir $@)|$@|" $(depfile).raw >> $(depfile) -# Add extra rules as in (2). -# We remove slashes and replace spaces with new lines; -# remove blank lines; -# delete the first line and append a colon to the remaining lines. -sed -e 's|\\||' -e 'y| |\n|' $(depfile).raw |\ - grep -v '^$$' |\ - sed -e 1d -e 's|$$|:|' \ - >> $(depfile) -rm $(depfile).raw -endef - -# Command definitions: -# - cmd_foo is the actual command to run; -# - quiet_cmd_foo is the brief-output summary of the command. - -quiet_cmd_cc = CC($(TOOLSET)) $@ -cmd_cc = $(CC.$(TOOLSET)) $(GYP_CFLAGS) $(DEPFLAGS) $(CFLAGS.$(TOOLSET)) -c -o $@ $< - -quiet_cmd_cxx = CXX($(TOOLSET)) $@ -cmd_cxx = $(CXX.$(TOOLSET)) $(GYP_CXXFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLSET)) -c -o $@ $< - -quiet_cmd_objc = CXX($(TOOLSET)) $@ -cmd_objc = $(CC.$(TOOLSET)) $(GYP_OBJCFLAGS) $(DEPFLAGS) -c -o $@ $< - -quiet_cmd_objcxx = CXX($(TOOLSET)) $@ -cmd_objcxx = $(CXX.$(TOOLSET)) $(GYP_OBJCXXFLAGS) $(DEPFLAGS) -c -o $@ $< - -# Commands for precompiled header files. -quiet_cmd_pch_c = CXX($(TOOLSET)) $@ -cmd_pch_c = $(CC.$(TOOLSET)) $(GYP_PCH_CFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLSET)) -c -o $@ $< -quiet_cmd_pch_cc = CXX($(TOOLSET)) $@ -cmd_pch_cc = $(CC.$(TOOLSET)) $(GYP_PCH_CXXFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLSET)) -c -o $@ $< -quiet_cmd_pch_m = CXX($(TOOLSET)) $@ -cmd_pch_m = $(CC.$(TOOLSET)) $(GYP_PCH_OBJCFLAGS) $(DEPFLAGS) -c -o $@ $< -quiet_cmd_pch_mm = CXX($(TOOLSET)) $@ -cmd_pch_mm = $(CC.$(TOOLSET)) $(GYP_PCH_OBJCXXFLAGS) $(DEPFLAGS) -c -o $@ $< - -# gyp-mac-tool is written next to the root Makefile by gyp. -# Use $(4) for the command, since $(2) and $(3) are used as flag by do_cmd -# already. -quiet_cmd_mac_tool = MACTOOL $(4) $< -cmd_mac_tool = ./gyp-mac-tool $(4) $< "$@" - -quiet_cmd_mac_package_framework = PACKAGE FRAMEWORK $@ -cmd_mac_package_framework = ./gyp-mac-tool package-framework "$@" $(4) - -quiet_cmd_infoplist = INFOPLIST $@ -cmd_infoplist = $(CC.$(TOOLSET)) -E -P -Wno-trigraphs -x c $(INFOPLIST_DEFINES) "$<" -o "$@" - -quiet_cmd_touch = TOUCH $@ -cmd_touch = touch $@ - -quiet_cmd_copy = COPY $@ -# send stderr to /dev/null to ignore messages when linking directories. -cmd_copy = ln -f "$<" "$@" 2>/dev/null || (rm -rf "$@" && cp -af "$<" "$@") - -quiet_cmd_alink = LIBTOOL-STATIC $@ -cmd_alink = rm -f $@ && ./gyp-mac-tool filter-libtool libtool $(GYP_LIBTOOLFLAGS) -static -o $@ $(filter %.o,$^) - -quiet_cmd_link = LINK($(TOOLSET)) $@ -cmd_link = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o "$@" $(LD_INPUTS) $(LIBS) - -# TODO(thakis): Find out and document the difference between shared_library and -# loadable_module on mac. -quiet_cmd_solink = SOLINK($(TOOLSET)) $@ -cmd_solink = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o "$@" $(LD_INPUTS) $(LIBS) - -# TODO(thakis): The solink_module rule is likely wrong. Xcode seems to pass -# -bundle -single_module here (for osmesa.so). -quiet_cmd_solink_module = SOLINK_MODULE($(TOOLSET)) $@ -cmd_solink_module = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ $(filter-out FORCE_DO_CMD, $^) $(LIBS) - - -# Define an escape_quotes function to escape single quotes. -# This allows us to handle quotes properly as long as we always use -# use single quotes and escape_quotes. -escape_quotes = $(subst ','\'',$(1)) -# This comment is here just to include a ' to unconfuse syntax highlighting. -# Define an escape_vars function to escape '$' variable syntax. -# This allows us to read/write command lines with shell variables (e.g. -# $LD_LIBRARY_PATH), without triggering make substitution. -escape_vars = $(subst $$,$$$$,$(1)) -# Helper that expands to a shell command to echo a string exactly as it is in -# make. This uses printf instead of echo because printf's behaviour with respect -# to escape sequences is more portable than echo's across different shells -# (e.g., dash, bash). -exact_echo = printf '%s\n' '$(call escape_quotes,$(1))' - -# Helper to compare the command we're about to run against the command -# we logged the last time we ran the command. Produces an empty -# string (false) when the commands match. -# Tricky point: Make has no string-equality test function. -# The kernel uses the following, but it seems like it would have false -# positives, where one string reordered its arguments. -# arg_check = $(strip $(filter-out $(cmd_$(1)), $(cmd_$@)) \ -# $(filter-out $(cmd_$@), $(cmd_$(1)))) -# We instead substitute each for the empty string into the other, and -# say they're equal if both substitutions produce the empty string. -# .d files contain ? instead of spaces, take that into account. -command_changed = $(or $(subst $(cmd_$(1)),,$(cmd_$(call replace_spaces,$@))),\ - $(subst $(cmd_$(call replace_spaces,$@)),,$(cmd_$(1)))) - -# Helper that is non-empty when a prerequisite changes. -# Normally make does this implicitly, but we force rules to always run -# so we can check their command lines. -# $? -- new prerequisites -# $| -- order-only dependencies -prereq_changed = $(filter-out FORCE_DO_CMD,$(filter-out $|,$?)) - -# Helper that executes all postbuilds, and deletes the output file when done -# if any of the postbuilds failed. -define do_postbuilds - @E=0;\ - for p in $(POSTBUILDS); do\ - eval $$p;\ - F=$$?;\ - if [ $$F -ne 0 ]; then\ - E=$$F;\ - fi;\ - done;\ - if [ $$E -ne 0 ]; then\ - rm -rf "$@";\ - exit $$E;\ - fi -endef - -# do_cmd: run a command via the above cmd_foo names, if necessary. -# Should always run for a given target to handle command-line changes. -# Second argument, if non-zero, makes it do asm/C/C++ dependency munging. -# Third argument, if non-zero, makes it do POSTBUILDS processing. -# Note: We intentionally do NOT call dirx for depfile, since it contains ? for -# spaces already and dirx strips the ? characters. -define do_cmd -$(if $(or $(command_changed),$(prereq_changed)), - @$(call exact_echo, $($(quiet)cmd_$(1))) - @mkdir -p "$(call dirx,$@)" "$(dir $(depfile))" - $(if $(findstring flock,$(word 2,$(cmd_$1))), - @$(cmd_$(1)) - @echo " $(quiet_cmd_$(1)): Finished", - @$(cmd_$(1)) - ) - @$(call exact_echo,$(call escape_vars,cmd_$(call replace_spaces,$@) := $(cmd_$(1)))) > $(depfile) - @$(if $(2),$(fixup_dep)) - $(if $(and $(3), $(POSTBUILDS)), - $(call do_postbuilds) - ) -) -endef - -# Declare the "all" target first so it is the default, -# even though we don't have the deps yet. -.PHONY: all -all: - -# make looks for ways to re-generate included makefiles, but in our case, we -# don't have a direct way. Explicitly telling make that it has nothing to do -# for them makes it go faster. -%.d: ; - -# Use FORCE_DO_CMD to force a target to run. Should be coupled with -# do_cmd. -.PHONY: FORCE_DO_CMD -FORCE_DO_CMD: - -TOOLSET := target -# Suffix rules, putting all outputs into $(obj). -$(obj).$(TOOLSET)/%.o: $(srcdir)/%.c FORCE_DO_CMD - @$(call do_cmd,cc,1) -$(obj).$(TOOLSET)/%.o: $(srcdir)/%.cc FORCE_DO_CMD - @$(call do_cmd,cxx,1) -$(obj).$(TOOLSET)/%.o: $(srcdir)/%.cpp FORCE_DO_CMD - @$(call do_cmd,cxx,1) -$(obj).$(TOOLSET)/%.o: $(srcdir)/%.cxx FORCE_DO_CMD - @$(call do_cmd,cxx,1) -$(obj).$(TOOLSET)/%.o: $(srcdir)/%.m FORCE_DO_CMD - @$(call do_cmd,objc,1) -$(obj).$(TOOLSET)/%.o: $(srcdir)/%.mm FORCE_DO_CMD - @$(call do_cmd,objcxx,1) -$(obj).$(TOOLSET)/%.o: $(srcdir)/%.S FORCE_DO_CMD - @$(call do_cmd,cc,1) -$(obj).$(TOOLSET)/%.o: $(srcdir)/%.s FORCE_DO_CMD - @$(call do_cmd,cc,1) - -# Try building from generated source, too. -$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.c FORCE_DO_CMD - @$(call do_cmd,cc,1) -$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.cc FORCE_DO_CMD - @$(call do_cmd,cxx,1) -$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.cpp FORCE_DO_CMD - @$(call do_cmd,cxx,1) -$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.cxx FORCE_DO_CMD - @$(call do_cmd,cxx,1) -$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.m FORCE_DO_CMD - @$(call do_cmd,objc,1) -$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.mm FORCE_DO_CMD - @$(call do_cmd,objcxx,1) -$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.S FORCE_DO_CMD - @$(call do_cmd,cc,1) -$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.s FORCE_DO_CMD - @$(call do_cmd,cc,1) - -$(obj).$(TOOLSET)/%.o: $(obj)/%.c FORCE_DO_CMD - @$(call do_cmd,cc,1) -$(obj).$(TOOLSET)/%.o: $(obj)/%.cc FORCE_DO_CMD - @$(call do_cmd,cxx,1) -$(obj).$(TOOLSET)/%.o: $(obj)/%.cpp FORCE_DO_CMD - @$(call do_cmd,cxx,1) -$(obj).$(TOOLSET)/%.o: $(obj)/%.cxx FORCE_DO_CMD - @$(call do_cmd,cxx,1) -$(obj).$(TOOLSET)/%.o: $(obj)/%.m FORCE_DO_CMD - @$(call do_cmd,objc,1) -$(obj).$(TOOLSET)/%.o: $(obj)/%.mm FORCE_DO_CMD - @$(call do_cmd,objcxx,1) -$(obj).$(TOOLSET)/%.o: $(obj)/%.S FORCE_DO_CMD - @$(call do_cmd,cc,1) -$(obj).$(TOOLSET)/%.o: $(obj)/%.s FORCE_DO_CMD - @$(call do_cmd,cc,1) - - -ifeq ($(strip $(foreach prefix,$(NO_LOAD),\ - $(findstring $(join ^,$(prefix)),\ - $(join ^,deps/libexpat/expat.target.mk)))),) - include deps/libexpat/expat.target.mk -endif -ifeq ($(strip $(foreach prefix,$(NO_LOAD),\ - $(findstring $(join ^,$(prefix)),\ - $(join ^,deps/libexpat/version.target.mk)))),) - include deps/libexpat/version.target.mk -endif -ifeq ($(strip $(foreach prefix,$(NO_LOAD),\ - $(findstring $(join ^,$(prefix)),\ - $(join ^,node_expat.target.mk)))),) - include node_expat.target.mk -endif - -quiet_cmd_regen_makefile = ACTION Regenerating $@ -cmd_regen_makefile = /usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp -fmake --ignore-environment "--toplevel-dir=." -I/Users/iangraham/Code/node/modules/nomniture/node_modules/xml2json/node_modules/node-expat/build/config.gypi -I/usr/local/lib/node_modules/npm/node_modules/node-gyp/addon.gypi -I/Users/iangraham/.node-gyp/0.8.21/common.gypi "--depth=." "-Goutput_dir=." "--generator-output=build" "-Dlibrary=shared_library" "-Dvisibility=default" "-Dnode_root_dir=/Users/iangraham/.node-gyp/0.8.21" "-Dmodule_root_dir=/Users/iangraham/Code/node/modules/nomniture/node_modules/xml2json/node_modules/node-expat" binding.gyp -Makefile: $(srcdir)/binding.gyp $(srcdir)/../../../../../../../../.node-gyp/0.8.21/common.gypi $(srcdir)/build/config.gypi $(srcdir)/deps/libexpat/libexpat.gyp $(srcdir)/../../../../../../../../../../usr/local/lib/node_modules/npm/node_modules/node-gyp/addon.gypi - $(call do_cmd,regen_makefile) - -# "all" is a concatenation of the "all" targets from all the included -# sub-makefiles. This is just here to clarify. -all: - -# Add in dependency-tracking rules. $(all_deps) is the list of every single -# target in our tree. Only consider the ones with .d (dependency) info: -d_files := $(wildcard $(foreach f,$(all_deps),$(depsdir)/$(f).d)) -ifneq ($(d_files),) - include $(d_files) -endif diff --git a/node_modules/xml2json/node_modules/node-expat/build/Release/.deps/Release/libexpat.a.d b/node_modules/xml2json/node_modules/node-expat/build/Release/.deps/Release/libexpat.a.d deleted file mode 100644 index 8672391..0000000 --- a/node_modules/xml2json/node_modules/node-expat/build/Release/.deps/Release/libexpat.a.d +++ /dev/null @@ -1 +0,0 @@ -cmd_Release/libexpat.a := rm -f Release/libexpat.a && ./gyp-mac-tool filter-libtool libtool -static -o Release/libexpat.a Release/obj.target/expat/deps/libexpat/lib/xmlparse.o Release/obj.target/expat/deps/libexpat/lib/xmltok.o Release/obj.target/expat/deps/libexpat/lib/xmlrole.o diff --git a/node_modules/xml2json/node_modules/node-expat/build/Release/.deps/Release/node_expat.node.d b/node_modules/xml2json/node_modules/node-expat/build/Release/.deps/Release/node_expat.node.d deleted file mode 100644 index 0786ce4..0000000 --- a/node_modules/xml2json/node_modules/node-expat/build/Release/.deps/Release/node_expat.node.d +++ /dev/null @@ -1 +0,0 @@ -cmd_Release/node_expat.node := ./gyp-mac-tool flock ./Release/linker.lock c++ -shared -Wl,-search_paths_first -mmacosx-version-min=10.5 -arch x86_64 -L./Release -install_name @rpath/node_expat.node -o Release/node_expat.node Release/obj.target/node_expat/node-expat.o Release/libexpat.a -undefined dynamic_lookup diff --git a/node_modules/xml2json/node_modules/node-expat/build/Release/.deps/Release/obj.target/expat/deps/libexpat/lib/xmlparse.o.d b/node_modules/xml2json/node_modules/node-expat/build/Release/.deps/Release/obj.target/expat/deps/libexpat/lib/xmlparse.o.d deleted file mode 100644 index b02c69f..0000000 --- a/node_modules/xml2json/node_modules/node-expat/build/Release/.deps/Release/obj.target/expat/deps/libexpat/lib/xmlparse.o.d +++ /dev/null @@ -1,14 +0,0 @@ -cmd_Release/obj.target/expat/deps/libexpat/lib/xmlparse.o := cc '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DPIC' '-DHAVE_EXPAT_CONFIG_H' '-DNDEBUG' -I/Users/iangraham/.node-gyp/0.8.21/src -I/Users/iangraham/.node-gyp/0.8.21/deps/uv/include -I/Users/iangraham/.node-gyp/0.8.21/deps/v8/include -I../deps/libexpat -I../deps/libexpat/lib -Os -gdwarf-2 -mmacosx-version-min=10.5 -arch x86_64 -Wall -Wendif-labels -W -Wno-unused-parameter -fno-strict-aliasing -MMD -MF ./Release/.deps/Release/obj.target/expat/deps/libexpat/lib/xmlparse.o.d.raw -c -o Release/obj.target/expat/deps/libexpat/lib/xmlparse.o ../deps/libexpat/lib/xmlparse.c -Release/obj.target/expat/deps/libexpat/lib/xmlparse.o: \ - ../deps/libexpat/lib/xmlparse.c ../deps/libexpat/expat_config.h \ - ../deps/libexpat/lib/ascii.h ../deps/libexpat/lib/expat.h \ - ../deps/libexpat/lib/expat_external.h ../deps/libexpat/lib/internal.h \ - ../deps/libexpat/lib/xmltok.h ../deps/libexpat/lib/xmlrole.h -../deps/libexpat/lib/xmlparse.c: -../deps/libexpat/expat_config.h: -../deps/libexpat/lib/ascii.h: -../deps/libexpat/lib/expat.h: -../deps/libexpat/lib/expat_external.h: -../deps/libexpat/lib/internal.h: -../deps/libexpat/lib/xmltok.h: -../deps/libexpat/lib/xmlrole.h: diff --git a/node_modules/xml2json/node_modules/node-expat/build/Release/.deps/Release/obj.target/expat/deps/libexpat/lib/xmlrole.o.d b/node_modules/xml2json/node_modules/node-expat/build/Release/.deps/Release/obj.target/expat/deps/libexpat/lib/xmlrole.o.d deleted file mode 100644 index f54a2ef..0000000 --- a/node_modules/xml2json/node_modules/node-expat/build/Release/.deps/Release/obj.target/expat/deps/libexpat/lib/xmlrole.o.d +++ /dev/null @@ -1,13 +0,0 @@ -cmd_Release/obj.target/expat/deps/libexpat/lib/xmlrole.o := cc '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DPIC' '-DHAVE_EXPAT_CONFIG_H' '-DNDEBUG' -I/Users/iangraham/.node-gyp/0.8.21/src -I/Users/iangraham/.node-gyp/0.8.21/deps/uv/include -I/Users/iangraham/.node-gyp/0.8.21/deps/v8/include -I../deps/libexpat -I../deps/libexpat/lib -Os -gdwarf-2 -mmacosx-version-min=10.5 -arch x86_64 -Wall -Wendif-labels -W -Wno-unused-parameter -fno-strict-aliasing -MMD -MF ./Release/.deps/Release/obj.target/expat/deps/libexpat/lib/xmlrole.o.d.raw -c -o Release/obj.target/expat/deps/libexpat/lib/xmlrole.o ../deps/libexpat/lib/xmlrole.c -Release/obj.target/expat/deps/libexpat/lib/xmlrole.o: \ - ../deps/libexpat/lib/xmlrole.c ../deps/libexpat/expat_config.h \ - ../deps/libexpat/lib/expat_external.h ../deps/libexpat/lib/internal.h \ - ../deps/libexpat/lib/xmlrole.h ../deps/libexpat/lib/xmltok.h \ - ../deps/libexpat/lib/ascii.h -../deps/libexpat/lib/xmlrole.c: -../deps/libexpat/expat_config.h: -../deps/libexpat/lib/expat_external.h: -../deps/libexpat/lib/internal.h: -../deps/libexpat/lib/xmlrole.h: -../deps/libexpat/lib/xmltok.h: -../deps/libexpat/lib/ascii.h: diff --git a/node_modules/xml2json/node_modules/node-expat/build/Release/.deps/Release/obj.target/expat/deps/libexpat/lib/xmltok.o.d b/node_modules/xml2json/node_modules/node-expat/build/Release/.deps/Release/obj.target/expat/deps/libexpat/lib/xmltok.o.d deleted file mode 100644 index 1228a7b..0000000 --- a/node_modules/xml2json/node_modules/node-expat/build/Release/.deps/Release/obj.target/expat/deps/libexpat/lib/xmltok.o.d +++ /dev/null @@ -1,23 +0,0 @@ -cmd_Release/obj.target/expat/deps/libexpat/lib/xmltok.o := cc '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DPIC' '-DHAVE_EXPAT_CONFIG_H' '-DNDEBUG' -I/Users/iangraham/.node-gyp/0.8.21/src -I/Users/iangraham/.node-gyp/0.8.21/deps/uv/include -I/Users/iangraham/.node-gyp/0.8.21/deps/v8/include -I../deps/libexpat -I../deps/libexpat/lib -Os -gdwarf-2 -mmacosx-version-min=10.5 -arch x86_64 -Wall -Wendif-labels -W -Wno-unused-parameter -fno-strict-aliasing -MMD -MF ./Release/.deps/Release/obj.target/expat/deps/libexpat/lib/xmltok.o.d.raw -c -o Release/obj.target/expat/deps/libexpat/lib/xmltok.o ../deps/libexpat/lib/xmltok.c -Release/obj.target/expat/deps/libexpat/lib/xmltok.o: \ - ../deps/libexpat/lib/xmltok.c ../deps/libexpat/expat_config.h \ - ../deps/libexpat/lib/expat_external.h ../deps/libexpat/lib/internal.h \ - ../deps/libexpat/lib/xmltok.h ../deps/libexpat/lib/nametab.h \ - ../deps/libexpat/lib/xmltok_impl.h ../deps/libexpat/lib/ascii.h \ - ../deps/libexpat/lib/xmltok_impl.c ../deps/libexpat/lib/asciitab.h \ - ../deps/libexpat/lib/utf8tab.h ../deps/libexpat/lib/iasciitab.h \ - ../deps/libexpat/lib/latin1tab.h ../deps/libexpat/lib/xmltok_ns.c -../deps/libexpat/lib/xmltok.c: -../deps/libexpat/expat_config.h: -../deps/libexpat/lib/expat_external.h: -../deps/libexpat/lib/internal.h: -../deps/libexpat/lib/xmltok.h: -../deps/libexpat/lib/nametab.h: -../deps/libexpat/lib/xmltok_impl.h: -../deps/libexpat/lib/ascii.h: -../deps/libexpat/lib/xmltok_impl.c: -../deps/libexpat/lib/asciitab.h: -../deps/libexpat/lib/utf8tab.h: -../deps/libexpat/lib/iasciitab.h: -../deps/libexpat/lib/latin1tab.h: -../deps/libexpat/lib/xmltok_ns.c: diff --git a/node_modules/xml2json/node_modules/node-expat/build/Release/.deps/Release/obj.target/node_expat/node-expat.o.d b/node_modules/xml2json/node_modules/node-expat/build/Release/.deps/Release/obj.target/node_expat/node-expat.o.d deleted file mode 100644 index 73d9f21..0000000 --- a/node_modules/xml2json/node_modules/node-expat/build/Release/.deps/Release/obj.target/node_expat/node-expat.o.d +++ /dev/null @@ -1,36 +0,0 @@ -cmd_Release/obj.target/node_expat/node-expat.o := c++ '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DBUILDING_NODE_EXTENSION' -I/Users/iangraham/.node-gyp/0.8.21/src -I/Users/iangraham/.node-gyp/0.8.21/deps/uv/include -I/Users/iangraham/.node-gyp/0.8.21/deps/v8/include -I../deps/libexpat -I../deps/libexpat/lib -Os -gdwarf-2 -mmacosx-version-min=10.5 -arch x86_64 -Wall -Wendif-labels -W -Wno-unused-parameter -fno-rtti -fno-exceptions -fno-threadsafe-statics -fno-strict-aliasing -MMD -MF ./Release/.deps/Release/obj.target/node_expat/node-expat.o.d.raw -c -o Release/obj.target/node_expat/node-expat.o ../node-expat.cc -Release/obj.target/node_expat/node-expat.o: ../node-expat.cc \ - /Users/iangraham/.node-gyp/0.8.21/src/node.h \ - /Users/iangraham/.node-gyp/0.8.21/deps/uv/include/uv.h \ - /Users/iangraham/.node-gyp/0.8.21/deps/uv/include/ares.h \ - /Users/iangraham/.node-gyp/0.8.21/deps/uv/include/ares_version.h \ - /Users/iangraham/.node-gyp/0.8.21/deps/uv/include/uv-private/uv-unix.h \ - /Users/iangraham/.node-gyp/0.8.21/deps/uv/include/uv-private/ngx-queue.h \ - /Users/iangraham/.node-gyp/0.8.21/deps/uv/include/uv-private/ev.h \ - /Users/iangraham/.node-gyp/0.8.21/deps/uv/include/uv-private/eio.h \ - /Users/iangraham/.node-gyp/0.8.21/deps/v8/include/v8.h \ - /Users/iangraham/.node-gyp/0.8.21/deps/v8/include/v8stdint.h \ - /Users/iangraham/.node-gyp/0.8.21/src/node_object_wrap.h \ - /Users/iangraham/.node-gyp/0.8.21/src/ev-emul.h \ - /Users/iangraham/.node-gyp/0.8.21/src/eio-emul.h \ - /Users/iangraham/.node-gyp/0.8.21/src/node_version.h \ - /Users/iangraham/.node-gyp/0.8.21/src/node_buffer.h \ - ../deps/libexpat/lib/expat.h ../deps/libexpat/lib/expat_external.h -../node-expat.cc: -/Users/iangraham/.node-gyp/0.8.21/src/node.h: -/Users/iangraham/.node-gyp/0.8.21/deps/uv/include/uv.h: -/Users/iangraham/.node-gyp/0.8.21/deps/uv/include/ares.h: -/Users/iangraham/.node-gyp/0.8.21/deps/uv/include/ares_version.h: -/Users/iangraham/.node-gyp/0.8.21/deps/uv/include/uv-private/uv-unix.h: -/Users/iangraham/.node-gyp/0.8.21/deps/uv/include/uv-private/ngx-queue.h: -/Users/iangraham/.node-gyp/0.8.21/deps/uv/include/uv-private/ev.h: -/Users/iangraham/.node-gyp/0.8.21/deps/uv/include/uv-private/eio.h: -/Users/iangraham/.node-gyp/0.8.21/deps/v8/include/v8.h: -/Users/iangraham/.node-gyp/0.8.21/deps/v8/include/v8stdint.h: -/Users/iangraham/.node-gyp/0.8.21/src/node_object_wrap.h: -/Users/iangraham/.node-gyp/0.8.21/src/ev-emul.h: -/Users/iangraham/.node-gyp/0.8.21/src/eio-emul.h: -/Users/iangraham/.node-gyp/0.8.21/src/node_version.h: -/Users/iangraham/.node-gyp/0.8.21/src/node_buffer.h: -../deps/libexpat/lib/expat.h: -../deps/libexpat/lib/expat_external.h: diff --git a/node_modules/xml2json/node_modules/node-expat/build/Release/libexpat.a b/node_modules/xml2json/node_modules/node-expat/build/Release/libexpat.a deleted file mode 100644 index ecab83700d5f905cb9f84887b776e792b2d493d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 522808 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%0A>1UMNDWDIV#a|jL?&$k3MRdYN#}IO+~bg( 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%0A51y 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

ciAeOLZEV9UeHo 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ΠllN1*iF(Ao?Rw4MS7S{uND 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

0{vc2xUz@#^IlJr>mVY3phz>+Z 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 Ms^Fu!{w&k~0n0!J?*IS* diff --git a/node_modules/xml2json/node_modules/node-expat/build/Release/obj.target/node_expat/node-expat.o b/node_modules/xml2json/node_modules/node-expat/build/Release/obj.target/node_expat/node-expat.o deleted file mode 100644 index d98d72a799914a2720a210f6c7a58b99eb17c103..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 143188 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
d1-&_4VSX0f^ikie#xpcenOmIM{U5Z-3e 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 diff --git a/node_modules/xml2json/node_modules/node-expat/build/binding.Makefile b/node_modules/xml2json/node_modules/node-expat/build/binding.Makefile deleted file mode 100644 index f10c9a8..0000000 --- a/node_modules/xml2json/node_modules/node-expat/build/binding.Makefile +++ /dev/null @@ -1,6 +0,0 @@ -# This file is generated by gyp; do not edit. - -export builddir_name ?= build/./. -.PHONY: all -all: - $(MAKE) node_expat diff --git a/node_modules/xml2json/node_modules/node-expat/build/config.gypi b/node_modules/xml2json/node_modules/node-expat/build/config.gypi deleted file mode 100644 index 350c0ad..0000000 --- a/node_modules/xml2json/node_modules/node-expat/build/config.gypi +++ /dev/null @@ -1,107 +0,0 @@ -# Do not edit. File was generated by node-gyp's "configure" step -{ - "target_defaults": { - "cflags": [], - "default_configuration": "Release", - "defines": [], - "include_dirs": [], - "libraries": [] - }, - "variables": { - "clang": 0, - "gcc_version": 42, - "host_arch": "x64", - "node_install_npm": "true", - "node_install_waf": "true", - "node_prefix": "out/dist-osx/usr/local", - "node_shared_openssl": "false", - "node_shared_v8": "false", - "node_shared_zlib": "false", - "node_tag": "", - "node_unsafe_optimizations": 0, - "node_use_dtrace": "false", - "node_use_etw": "false", - "node_use_openssl": "true", - "target_arch": "x64", - "v8_no_strict_aliasing": 1, - "v8_use_snapshot": "false", - "nodedir": "/Users/iangraham/.node-gyp/0.8.21", - "copy_dev_lib": "true", - "save_dev": "", - "browser": "", - "viewer": "man", - "rollback": "true", - "usage": "", - "globalignorefile": "/usr/local/etc/npmignore", - "init_author_url": "", - "shell": "/bin/bash", - "parseable": "", - "email": "imartingraham@gmail.com", - "userignorefile": "/Users/iangraham/.npmignore", - "cache_max": "null", - "init_author_email": "", - "sign_git_tag": "", - "ignore": "", - "long": "", - "registry": "https://registry.npmjs.org/", - "fetch_retries": "2", - "npat": "", - "message": "%s", - "versions": "", - "globalconfig": "/usr/local/etc/npmrc", - "always_auth": "", - "cache_lock_retries": "10", - "fetch_retry_mintimeout": "10000", - "proprietary_attribs": "true", - "coverage": "", - "json": "", - "pre": "", - "description": "true", - "engine_strict": "", - "https_proxy": "", - "init_module": "/Users/iangraham/.npm-init.js", - "userconfig": "/Users/iangraham/.npmrc", - "npaturl": "http://npat.npmjs.org/", - "node_version": "v0.8.21", - "user": "", - "editor": "vi", - "save": "", - "tag": "latest", - "global": "", - "username": "igraham", - "optional": "true", - "bin_links": "true", - "force": "", - "searchopts": "", - "depth": "null", - "rebuild_bundle": "true", - "searchsort": "name", - "unicode": "true", - "yes": "", - "fetch_retry_maxtimeout": "60000", - "strict_ssl": "true", - "dev": "", - "fetch_retry_factor": "10", - "group": "20", - "cache_lock_stale": "60000", - "version": "", - "cache_min": "10", - "cache": "/Users/iangraham/.npm", - "searchexclude": "", - "color": "true", - "save_optional": "", - "user_agent": "node/v0.8.21 darwin x64", - "cache_lock_wait": "10000", - "production": "", - "save_bundle": "", - "init_version": "0.0.0", - "umask": "18", - "git": "git", - "init_author_name": "", - "onload_script": "", - "tmp": "/var/folders/25/ypq6w93j7379x7hs2xkbm_6w0000gn/T/", - "unsafe_perm": "true", - "link": "", - "prefix": "/usr/local" - } -} diff --git a/node_modules/xml2json/node_modules/node-expat/build/deps/libexpat/expat.target.mk b/node_modules/xml2json/node_modules/node-expat/build/deps/libexpat/expat.target.mk deleted file mode 100644 index a41e3c4..0000000 --- a/node_modules/xml2json/node_modules/node-expat/build/deps/libexpat/expat.target.mk +++ /dev/null @@ -1,155 +0,0 @@ -# This file is generated by gyp; do not edit. - -TOOLSET := target -TARGET := expat -DEFS_Debug := \ - '-D_DARWIN_USE_64_BIT_INODE=1' \ - '-D_LARGEFILE_SOURCE' \ - '-D_FILE_OFFSET_BITS=64' \ - '-DPIC' \ - '-DHAVE_EXPAT_CONFIG_H' \ - '-DDEBUG' \ - '-D_DEBUG' - -# Flags passed to all source files. -CFLAGS_Debug := \ - -Os \ - -gdwarf-2 \ - -mmacosx-version-min=10.5 \ - -arch x86_64 \ - -Wall \ - -Wendif-labels \ - -W \ - -Wno-unused-parameter - -# Flags passed to only C files. -CFLAGS_C_Debug := \ - -fno-strict-aliasing - -# Flags passed to only C++ files. -CFLAGS_CC_Debug := \ - -fno-rtti \ - -fno-exceptions \ - -fno-threadsafe-statics \ - -fno-strict-aliasing - -# Flags passed to only ObjC files. -CFLAGS_OBJC_Debug := - -# Flags passed to only ObjC++ files. -CFLAGS_OBJCC_Debug := - -INCS_Debug := \ - -I/Users/iangraham/.node-gyp/0.8.21/src \ - -I/Users/iangraham/.node-gyp/0.8.21/deps/uv/include \ - -I/Users/iangraham/.node-gyp/0.8.21/deps/v8/include \ - -I$(srcdir)/deps/libexpat \ - -I$(srcdir)/deps/libexpat/lib - -DEFS_Release := \ - '-D_DARWIN_USE_64_BIT_INODE=1' \ - '-D_LARGEFILE_SOURCE' \ - '-D_FILE_OFFSET_BITS=64' \ - '-DPIC' \ - '-DHAVE_EXPAT_CONFIG_H' \ - '-DNDEBUG' - -# Flags passed to all source files. -CFLAGS_Release := \ - -Os \ - -gdwarf-2 \ - -mmacosx-version-min=10.5 \ - -arch x86_64 \ - -Wall \ - -Wendif-labels \ - -W \ - -Wno-unused-parameter - -# Flags passed to only C files. -CFLAGS_C_Release := \ - -fno-strict-aliasing - -# Flags passed to only C++ files. -CFLAGS_CC_Release := \ - -fno-rtti \ - -fno-exceptions \ - -fno-threadsafe-statics \ - -fno-strict-aliasing - -# Flags passed to only ObjC files. -CFLAGS_OBJC_Release := - -# Flags passed to only ObjC++ files. -CFLAGS_OBJCC_Release := - -INCS_Release := \ - -I/Users/iangraham/.node-gyp/0.8.21/src \ - -I/Users/iangraham/.node-gyp/0.8.21/deps/uv/include \ - -I/Users/iangraham/.node-gyp/0.8.21/deps/v8/include \ - -I$(srcdir)/deps/libexpat \ - -I$(srcdir)/deps/libexpat/lib - -OBJS := \ - $(obj).target/$(TARGET)/deps/libexpat/lib/xmlparse.o \ - $(obj).target/$(TARGET)/deps/libexpat/lib/xmltok.o \ - $(obj).target/$(TARGET)/deps/libexpat/lib/xmlrole.o - -# Add to the list of files we specially track dependencies for. -all_deps += $(OBJS) - -# CFLAGS et al overrides must be target-local. -# See "Target-specific Variable Values" in the GNU Make manual. -$(OBJS): TOOLSET := $(TOOLSET) -$(OBJS): GYP_CFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE)) -$(OBJS): GYP_CXXFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_CC_$(BUILDTYPE)) -$(OBJS): GYP_OBJCFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE)) $(CFLAGS_OBJC_$(BUILDTYPE)) -$(OBJS): GYP_OBJCXXFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_CC_$(BUILDTYPE)) $(CFLAGS_OBJCC_$(BUILDTYPE)) - -# Suffix rules, putting all outputs into $(obj). - -$(obj).$(TOOLSET)/$(TARGET)/%.o: $(srcdir)/%.c FORCE_DO_CMD - @$(call do_cmd,cc,1) - -# Try building from generated source, too. - -$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj).$(TOOLSET)/%.c FORCE_DO_CMD - @$(call do_cmd,cc,1) - -$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj)/%.c FORCE_DO_CMD - @$(call do_cmd,cc,1) - -# End of this set of suffix rules -### Rules for final target. -LDFLAGS_Debug := \ - -mmacosx-version-min=10.5 \ - -arch x86_64 \ - -L$(builddir) - -LIBTOOLFLAGS_Debug := - -LDFLAGS_Release := \ - -mmacosx-version-min=10.5 \ - -arch x86_64 \ - -L$(builddir) - -LIBTOOLFLAGS_Release := - -LIBS := \ - -undefined dynamic_lookup - -$(builddir)/libexpat.a: GYP_LDFLAGS := $(LDFLAGS_$(BUILDTYPE)) -$(builddir)/libexpat.a: LIBS := $(LIBS) -$(builddir)/libexpat.a: GYP_LIBTOOLFLAGS := $(LIBTOOLFLAGS_$(BUILDTYPE)) -$(builddir)/libexpat.a: TOOLSET := $(TOOLSET) -$(builddir)/libexpat.a: $(OBJS) FORCE_DO_CMD - $(call do_cmd,alink) - -all_deps += $(builddir)/libexpat.a -# Add target alias -.PHONY: expat -expat: $(builddir)/libexpat.a - -# Add target alias to "all" target. -.PHONY: all -all: expat - diff --git a/node_modules/xml2json/node_modules/node-expat/build/deps/libexpat/libexpat.Makefile b/node_modules/xml2json/node_modules/node-expat/build/deps/libexpat/libexpat.Makefile deleted file mode 100644 index 02fb590..0000000 --- a/node_modules/xml2json/node_modules/node-expat/build/deps/libexpat/libexpat.Makefile +++ /dev/null @@ -1,6 +0,0 @@ -# This file is generated by gyp; do not edit. - -export builddir_name ?= build/./deps/libexpat/. -.PHONY: all -all: - $(MAKE) -C ../.. expat diff --git a/node_modules/xml2json/node_modules/node-expat/build/deps/libexpat/version.target.mk b/node_modules/xml2json/node_modules/node-expat/build/deps/libexpat/version.target.mk deleted file mode 100644 index b51d792..0000000 --- a/node_modules/xml2json/node_modules/node-expat/build/deps/libexpat/version.target.mk +++ /dev/null @@ -1,153 +0,0 @@ -# This file is generated by gyp; do not edit. - -TOOLSET := target -TARGET := version -DEFS_Debug := \ - '-D_DARWIN_USE_64_BIT_INODE=1' \ - '-D_LARGEFILE_SOURCE' \ - '-D_FILE_OFFSET_BITS=64' \ - '-DDEBUG' \ - '-D_DEBUG' - -# Flags passed to all source files. -CFLAGS_Debug := \ - -Os \ - -gdwarf-2 \ - -mmacosx-version-min=10.5 \ - -arch x86_64 \ - -Wall \ - -Wendif-labels \ - -W \ - -Wno-unused-parameter - -# Flags passed to only C files. -CFLAGS_C_Debug := \ - -fno-strict-aliasing - -# Flags passed to only C++ files. -CFLAGS_CC_Debug := \ - -fno-rtti \ - -fno-exceptions \ - -fno-threadsafe-statics \ - -fno-strict-aliasing - -# Flags passed to only ObjC files. -CFLAGS_OBJC_Debug := - -# Flags passed to only ObjC++ files. -CFLAGS_OBJCC_Debug := - -INCS_Debug := \ - -I/Users/iangraham/.node-gyp/0.8.21/src \ - -I/Users/iangraham/.node-gyp/0.8.21/deps/uv/include \ - -I/Users/iangraham/.node-gyp/0.8.21/deps/v8/include \ - -I$(srcdir)/deps/libexpat \ - -I$(srcdir)/deps/libexpat/lib - -DEFS_Release := \ - '-D_DARWIN_USE_64_BIT_INODE=1' \ - '-D_LARGEFILE_SOURCE' \ - '-D_FILE_OFFSET_BITS=64' \ - '-DNDEBUG' - -# Flags passed to all source files. -CFLAGS_Release := \ - -Os \ - -gdwarf-2 \ - -mmacosx-version-min=10.5 \ - -arch x86_64 \ - -Wall \ - -Wendif-labels \ - -W \ - -Wno-unused-parameter - -# Flags passed to only C files. -CFLAGS_C_Release := \ - -fno-strict-aliasing - -# Flags passed to only C++ files. -CFLAGS_CC_Release := \ - -fno-rtti \ - -fno-exceptions \ - -fno-threadsafe-statics \ - -fno-strict-aliasing - -# Flags passed to only ObjC files. -CFLAGS_OBJC_Release := - -# Flags passed to only ObjC++ files. -CFLAGS_OBJCC_Release := - -INCS_Release := \ - -I/Users/iangraham/.node-gyp/0.8.21/src \ - -I/Users/iangraham/.node-gyp/0.8.21/deps/uv/include \ - -I/Users/iangraham/.node-gyp/0.8.21/deps/v8/include \ - -I$(srcdir)/deps/libexpat \ - -I$(srcdir)/deps/libexpat/lib - -OBJS := \ - $(obj).target/$(TARGET)/deps/libexpat/version.o - -# Add to the list of files we specially track dependencies for. -all_deps += $(OBJS) - -# Make sure our dependencies are built before any of us. -$(OBJS): | $(builddir)/libexpat.a - -# CFLAGS et al overrides must be target-local. -# See "Target-specific Variable Values" in the GNU Make manual. -$(OBJS): TOOLSET := $(TOOLSET) -$(OBJS): GYP_CFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE)) -$(OBJS): GYP_CXXFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_CC_$(BUILDTYPE)) -$(OBJS): GYP_OBJCFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE)) $(CFLAGS_OBJC_$(BUILDTYPE)) -$(OBJS): GYP_OBJCXXFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_CC_$(BUILDTYPE)) $(CFLAGS_OBJCC_$(BUILDTYPE)) - -# Suffix rules, putting all outputs into $(obj). - -$(obj).$(TOOLSET)/$(TARGET)/%.o: $(srcdir)/%.c FORCE_DO_CMD - @$(call do_cmd,cc,1) - -# Try building from generated source, too. - -$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj).$(TOOLSET)/%.c FORCE_DO_CMD - @$(call do_cmd,cc,1) - -$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj)/%.c FORCE_DO_CMD - @$(call do_cmd,cc,1) - -# End of this set of suffix rules -### Rules for final target. -LDFLAGS_Debug := \ - -Wl,-search_paths_first \ - -mmacosx-version-min=10.5 \ - -arch x86_64 \ - -L$(builddir) - -LIBTOOLFLAGS_Debug := \ - -Wl,-search_paths_first - -LDFLAGS_Release := \ - -Wl,-search_paths_first \ - -mmacosx-version-min=10.5 \ - -arch x86_64 \ - -L$(builddir) - -LIBTOOLFLAGS_Release := \ - -Wl,-search_paths_first - -LIBS := \ - -undefined dynamic_lookup - -$(builddir)/version: GYP_LDFLAGS := $(LDFLAGS_$(BUILDTYPE)) -$(builddir)/version: LIBS := $(LIBS) -$(builddir)/version: GYP_LIBTOOLFLAGS := $(LIBTOOLFLAGS_$(BUILDTYPE)) -$(builddir)/version: LD_INPUTS := $(OBJS) $(builddir)/libexpat.a -$(builddir)/version: TOOLSET := $(TOOLSET) -$(builddir)/version: $(OBJS) $(builddir)/libexpat.a FORCE_DO_CMD - $(call do_cmd,link) - -all_deps += $(builddir)/version -# Add target alias -.PHONY: version -version: $(builddir)/version - diff --git a/node_modules/xml2json/node_modules/node-expat/build/gyp-mac-tool b/node_modules/xml2json/node_modules/node-expat/build/gyp-mac-tool deleted file mode 100755 index bf059c3..0000000 --- a/node_modules/xml2json/node_modules/node-expat/build/gyp-mac-tool +++ /dev/null @@ -1,211 +0,0 @@ -#!/usr/bin/env python -# Generated by gyp. Do not edit. -# Copyright (c) 2012 Google Inc. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -"""Utility functions to perform Xcode-style build steps. - -These functions are executed via gyp-mac-tool when using the Makefile generator. -""" - -import fcntl -import os -import plistlib -import re -import shutil -import string -import subprocess -import sys - - -def main(args): - executor = MacTool() - exit_code = executor.Dispatch(args) - if exit_code is not None: - sys.exit(exit_code) - - -class MacTool(object): - """This class performs all the Mac tooling steps. The methods can either be - executed directly, or dispatched from an argument list.""" - - def Dispatch(self, args): - """Dispatches a string command to a method.""" - if len(args) < 1: - raise Exception("Not enough arguments") - - method = "Exec%s" % self._CommandifyName(args[0]) - return getattr(self, method)(*args[1:]) - - def _CommandifyName(self, name_string): - """Transforms a tool name like copy-info-plist to CopyInfoPlist""" - return name_string.title().replace('-', '') - - def ExecCopyBundleResource(self, source, dest): - """Copies a resource file to the bundle/Resources directory, performing any - necessary compilation on each resource.""" - extension = os.path.splitext(source)[1].lower() - if os.path.isdir(source): - # Copy tree. - if os.path.exists(dest): - shutil.rmtree(dest) - shutil.copytree(source, dest) - elif extension == '.xib': - return self._CopyXIBFile(source, dest) - elif extension == '.strings': - self._CopyStringsFile(source, dest) - else: - shutil.copyfile(source, dest) - - def _CopyXIBFile(self, source, dest): - """Compiles a XIB file with ibtool into a binary plist in the bundle.""" - tools_dir = os.environ.get('DEVELOPER_BIN_DIR', '/usr/bin') - args = [os.path.join(tools_dir, 'ibtool'), '--errors', '--warnings', - '--notices', '--output-format', 'human-readable-text', '--compile', - dest, source] - ibtool_section_re = re.compile(r'/\*.*\*/') - ibtool_re = re.compile(r'.*note:.*is clipping its content') - ibtoolout = subprocess.Popen(args, stdout=subprocess.PIPE) - current_section_header = None - for line in ibtoolout.stdout: - if ibtool_section_re.match(line): - current_section_header = line - elif not ibtool_re.match(line): - if current_section_header: - sys.stdout.write(current_section_header) - current_section_header = None - sys.stdout.write(line) - return ibtoolout.returncode - - def _CopyStringsFile(self, source, dest): - """Copies a .strings file using iconv to reconvert the input into UTF-16.""" - input_code = self._DetectInputEncoding(source) or "UTF-8" - fp = open(dest, 'w') - args = ['/usr/bin/iconv', '--from-code', input_code, '--to-code', - 'UTF-16', source] - subprocess.call(args, stdout=fp) - fp.close() - - def _DetectInputEncoding(self, file_name): - """Reads the first few bytes from file_name and tries to guess the text - encoding. Returns None as a guess if it can't detect it.""" - fp = open(file_name, 'rb') - try: - header = fp.read(3) - except e: - fp.close() - return None - fp.close() - if header.startswith("\xFE\xFF"): - return "UTF-16BE" - elif header.startswith("\xFF\xFE"): - return "UTF-16LE" - elif header.startswith("\xEF\xBB\xBF"): - return "UTF-8" - else: - return None - - def ExecCopyInfoPlist(self, source, dest): - """Copies the |source| Info.plist to the destination directory |dest|.""" - # Read the source Info.plist into memory. - fd = open(source, 'r') - lines = fd.read() - fd.close() - - # Go through all the environment variables and replace them as variables in - # the file. - for key in os.environ: - if key.startswith('_'): - continue - evar = '${%s}' % key - lines = string.replace(lines, evar, os.environ[key]) - - # Write out the file with variables replaced. - fd = open(dest, 'w') - fd.write(lines) - fd.close() - - # Now write out PkgInfo file now that the Info.plist file has been - # "compiled". - self._WritePkgInfo(dest) - - def _WritePkgInfo(self, info_plist): - """This writes the PkgInfo file from the data stored in Info.plist.""" - plist = plistlib.readPlist(info_plist) - if not plist: - return - - # Only create PkgInfo for executable types. - package_type = plist['CFBundlePackageType'] - if package_type != 'APPL': - return - - # The format of PkgInfo is eight characters, representing the bundle type - # and bundle signature, each four characters. If that is missing, four - # '?' characters are used instead. - signature_code = plist.get('CFBundleSignature', '????') - if len(signature_code) != 4: # Wrong length resets everything, too. - signature_code = '?' * 4 - - dest = os.path.join(os.path.dirname(info_plist), 'PkgInfo') - fp = open(dest, 'w') - fp.write('%s%s' % (package_type, signature_code)) - fp.close() - - def ExecFlock(self, lockfile, *cmd_list): - """Emulates the most basic behavior of Linux's flock(1).""" - # Rely on exception handling to report errors. - fd = os.open(lockfile, os.O_RDONLY|os.O_NOCTTY|os.O_CREAT, 0o666) - fcntl.flock(fd, fcntl.LOCK_EX) - return subprocess.call(cmd_list) - - def ExecFilterLibtool(self, *cmd_list): - """Calls libtool and filters out 'libtool: file: foo.o has no symbols'.""" - libtool_re = re.compile(r'^libtool: file: .* has no symbols$') - libtoolout = subprocess.Popen(cmd_list, stderr=subprocess.PIPE) - _, err = libtoolout.communicate() - for line in err.splitlines(): - if not libtool_re.match(line): - print >>sys.stderr, line - return libtoolout.returncode - - def ExecPackageFramework(self, framework, version): - """Takes a path to Something.framework and the Current version of that and - sets up all the symlinks.""" - # Find the name of the binary based on the part before the ".framework". - binary = os.path.basename(framework).split('.')[0] - - CURRENT = 'Current' - RESOURCES = 'Resources' - VERSIONS = 'Versions' - - if not os.path.exists(os.path.join(framework, VERSIONS, version, binary)): - # Binary-less frameworks don't seem to contain symlinks (see e.g. - # chromium's out/Debug/org.chromium.Chromium.manifest/ bundle). - return - - # Move into the framework directory to set the symlinks correctly. - pwd = os.getcwd() - os.chdir(framework) - - # Set up the Current version. - self._Relink(version, os.path.join(VERSIONS, CURRENT)) - - # Set up the root symlinks. - self._Relink(os.path.join(VERSIONS, CURRENT, binary), binary) - self._Relink(os.path.join(VERSIONS, CURRENT, RESOURCES), RESOURCES) - - # Back to where we were before! - os.chdir(pwd) - - def _Relink(self, dest, link): - """Creates a symlink to |dest| named |link|. If |link| already exists, - it is overwritten.""" - if os.path.lexists(link): - os.remove(link) - os.symlink(dest, link) - - -if __name__ == '__main__': - sys.exit(main(sys.argv[1:])) diff --git a/node_modules/xml2json/node_modules/node-expat/build/node_expat.target.mk b/node_modules/xml2json/node_modules/node-expat/build/node_expat.target.mk deleted file mode 100644 index e2db42b..0000000 --- a/node_modules/xml2json/node_modules/node-expat/build/node_expat.target.mk +++ /dev/null @@ -1,163 +0,0 @@ -# This file is generated by gyp; do not edit. - -TOOLSET := target -TARGET := node_expat -DEFS_Debug := \ - '-D_DARWIN_USE_64_BIT_INODE=1' \ - '-D_LARGEFILE_SOURCE' \ - '-D_FILE_OFFSET_BITS=64' \ - '-DBUILDING_NODE_EXTENSION' \ - '-DDEBUG' \ - '-D_DEBUG' - -# Flags passed to all source files. -CFLAGS_Debug := \ - -Os \ - -gdwarf-2 \ - -mmacosx-version-min=10.5 \ - -arch x86_64 \ - -Wall \ - -Wendif-labels \ - -W \ - -Wno-unused-parameter - -# Flags passed to only C files. -CFLAGS_C_Debug := \ - -fno-strict-aliasing - -# Flags passed to only C++ files. -CFLAGS_CC_Debug := \ - -fno-rtti \ - -fno-exceptions \ - -fno-threadsafe-statics \ - -fno-strict-aliasing - -# Flags passed to only ObjC files. -CFLAGS_OBJC_Debug := - -# Flags passed to only ObjC++ files. -CFLAGS_OBJCC_Debug := - -INCS_Debug := \ - -I/Users/iangraham/.node-gyp/0.8.21/src \ - -I/Users/iangraham/.node-gyp/0.8.21/deps/uv/include \ - -I/Users/iangraham/.node-gyp/0.8.21/deps/v8/include \ - -I$(srcdir)/deps/libexpat \ - -I$(srcdir)/deps/libexpat/lib - -DEFS_Release := \ - '-D_DARWIN_USE_64_BIT_INODE=1' \ - '-D_LARGEFILE_SOURCE' \ - '-D_FILE_OFFSET_BITS=64' \ - '-DBUILDING_NODE_EXTENSION' - -# Flags passed to all source files. -CFLAGS_Release := \ - -Os \ - -gdwarf-2 \ - -mmacosx-version-min=10.5 \ - -arch x86_64 \ - -Wall \ - -Wendif-labels \ - -W \ - -Wno-unused-parameter - -# Flags passed to only C files. -CFLAGS_C_Release := \ - -fno-strict-aliasing - -# Flags passed to only C++ files. -CFLAGS_CC_Release := \ - -fno-rtti \ - -fno-exceptions \ - -fno-threadsafe-statics \ - -fno-strict-aliasing - -# Flags passed to only ObjC files. -CFLAGS_OBJC_Release := - -# Flags passed to only ObjC++ files. -CFLAGS_OBJCC_Release := - -INCS_Release := \ - -I/Users/iangraham/.node-gyp/0.8.21/src \ - -I/Users/iangraham/.node-gyp/0.8.21/deps/uv/include \ - -I/Users/iangraham/.node-gyp/0.8.21/deps/v8/include \ - -I$(srcdir)/deps/libexpat \ - -I$(srcdir)/deps/libexpat/lib - -OBJS := \ - $(obj).target/$(TARGET)/node-expat.o - -# Add to the list of files we specially track dependencies for. -all_deps += $(OBJS) - -# Make sure our dependencies are built before any of us. -$(OBJS): | $(builddir)/libexpat.a - -# CFLAGS et al overrides must be target-local. -# See "Target-specific Variable Values" in the GNU Make manual. -$(OBJS): TOOLSET := $(TOOLSET) -$(OBJS): GYP_CFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE)) -$(OBJS): GYP_CXXFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_CC_$(BUILDTYPE)) -$(OBJS): GYP_OBJCFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE)) $(CFLAGS_OBJC_$(BUILDTYPE)) -$(OBJS): GYP_OBJCXXFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_CC_$(BUILDTYPE)) $(CFLAGS_OBJCC_$(BUILDTYPE)) - -# Suffix rules, putting all outputs into $(obj). - -$(obj).$(TOOLSET)/$(TARGET)/%.o: $(srcdir)/%.cc FORCE_DO_CMD - @$(call do_cmd,cxx,1) - -# Try building from generated source, too. - -$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj).$(TOOLSET)/%.cc FORCE_DO_CMD - @$(call do_cmd,cxx,1) - -$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj)/%.cc FORCE_DO_CMD - @$(call do_cmd,cxx,1) - -# End of this set of suffix rules -### Rules for final target. -LDFLAGS_Debug := \ - -Wl,-search_paths_first \ - -mmacosx-version-min=10.5 \ - -arch x86_64 \ - -L$(builddir) \ - -install_name @rpath/node_expat.node - -LIBTOOLFLAGS_Debug := \ - -Wl,-search_paths_first - -LDFLAGS_Release := \ - -Wl,-search_paths_first \ - -mmacosx-version-min=10.5 \ - -arch x86_64 \ - -L$(builddir) \ - -install_name @rpath/node_expat.node - -LIBTOOLFLAGS_Release := \ - -Wl,-search_paths_first - -LIBS := \ - -undefined dynamic_lookup - -$(builddir)/node_expat.node: GYP_LDFLAGS := $(LDFLAGS_$(BUILDTYPE)) -$(builddir)/node_expat.node: LIBS := $(LIBS) -$(builddir)/node_expat.node: GYP_LIBTOOLFLAGS := $(LIBTOOLFLAGS_$(BUILDTYPE)) -$(builddir)/node_expat.node: TOOLSET := $(TOOLSET) -$(builddir)/node_expat.node: $(OBJS) $(builddir)/libexpat.a FORCE_DO_CMD - $(call do_cmd,solink_module) - -all_deps += $(builddir)/node_expat.node -# Add target alias -.PHONY: node_expat -node_expat: $(builddir)/node_expat.node - -# Short alias for building this executable. -.PHONY: node_expat.node -node_expat.node: $(builddir)/node_expat.node - -# Add executable to "all" target. -.PHONY: all -all: $(builddir)/node_expat.node - diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/CMake.README b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/CMake.README deleted file mode 100755 index 4db6399..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/CMake.README +++ /dev/null @@ -1,42 +0,0 @@ -== How to build expat with cmake (experimental) == - -The cmake based buildsystem for expat works on Windows (cygwin, mingw, Visual -Studio) and should work on all other platform cmake supports. - -Assuming ~/expat-2.1.0 is the source directory of expat, add a subdirectory -build and change into that directory: -~/expat-2.1.0$ mkdir build && cd build -~/expat-2.1.0/build$ - -From that directory, call cmake first, then call make, make test and -make install in the usual way: -~/expat-2.1.0/build$ cmake .. --- The C compiler identification is GNU --- The CXX compiler identification is GNU -.... --- Configuring done --- Generating done --- Build files have been written to: /home/patrick/expat-2.1.0/build - -If you want to specify the install location for your files, append --DCMAKE_INSTALL_PREFIX=/your/install/path to the cmake call. - -~/expat-2.1.0/build$ make && make test && make install -Scanning dependencies of target expat -[ 5%] Building C object CMakeFiles/expat.dir/lib/xmlparse.c.o -[ 11%] Building C object CMakeFiles/expat.dir/lib/xmlrole.c.o -.... --- Installing: /usr/local/lib/pkgconfig/expat.pc --- Installing: /usr/local/bin/xmlwf --- Installing: /usr/local/share/man/man1/xmlwf.1 - -For Windows builds, you must make sure to call cmake from an environment where -your compiler is reachable, that means either you call it from the -Visual Studio Command Prompt or when using mingw, you must open a cmd.exe and -make sure that gcc can be called. On Windows, you also might want to specify a -special Generator for CMake: -for Visual Studio builds do: -cmake .. -G "Visual Studio 10" && vcexpress expat.sln -for mingw builds do: -cmake .. -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX=D:\expat-install - && gmake && gmake install diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/CMakeLists.txt b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/CMakeLists.txt deleted file mode 100755 index 0c923ba..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/CMakeLists.txt +++ /dev/null @@ -1,111 +0,0 @@ -# This file is copyrighted under the BSD-license for buildsystem files of KDE -# copyright 2010, Patrick Spendrin - -project(expat) - -cmake_minimum_required(VERSION 2.6) -set(PACKAGE_BUGREPORT "expat-bugs@libexpat.org") -set(PACKAGE_NAME "expat") -set(PACKAGE_VERSION "2.1.0") -set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}") -set(PACKAGE_TARNAME "${PACKAGE_NAME}") - -option(BUILD_tools "build the xmlwf tool for expat library" ON) -option(BUILD_examples "build the examples for expat library" ON) -option(BUILD_tests "build the tests for expat library" ON) -option(BUILD_shared "build a shared expat library" ON) - -# configuration options -set(XML_CONTEXT_BYTES 1024 CACHE STRING "Define to specify how much context to retain around the current parse point") -option(XML_DTD "Define to make parameter entity parsing functionality available" ON) -option(XML_NS "Define to make XML Namespaces functionality available" ON) - -if(XML_DTD) - set(XML_DTD 1) -else(XML_DTD) - set(XML_DTD 0) -endif(XML_DTD) -if(XML_NS) - set(XML_NS 1) -else(XML_NS) - set(XML_NS 0) -endif(XML_NS) - -if(BUILD_tests) - enable_testing() -endif(BUILD_tests) - -include(ConfigureChecks.cmake) - -include_directories(${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/lib) -if(MSVC) - add_definitions(-D_CRT_SECURE_NO_WARNINGS -wd4996) -endif(MSVC) - -set(expat_SRCS - lib/xmlparse.c - lib/xmlrole.c - lib/xmltok.c - lib/xmltok_impl.c - lib/xmltok_ns.c -) - -if(WIN32 AND BUILD_shared) - set(expat_SRCS ${expat_SRCS} lib/libexpat.def) -endif(WIN32 AND BUILD_shared) - -if(BUILD_shared) - set(_SHARED SHARED) -else(BUILD_shared) - set(_SHARED STATIC) -endif(BUILD_shared) - -add_library(expat ${_SHARED} ${expat_SRCS}) - -install(TARGETS expat RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib) - -set(prefix ${CMAKE_INSTALL_PREFIX}) -set(exec_prefix "\${prefix}/bin") -set(libdir "\${prefix}/lib") -set(includedir "\${prefix}/include") -configure_file(expat.pc.in ${CMAKE_CURRENT_BINARY_DIR}/expat.pc) - -install(FILES lib/expat.h lib/expat_external.h DESTINATION include) -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION lib/pkgconfig) - - - -if(BUILD_tools AND NOT WINCE) - set(xmlwf_SRCS - xmlwf/xmlwf.c - xmlwf/xmlfile.c - xmlwf/codepage.c - xmlwf/readfilemap.c - ) - - add_executable(xmlwf ${xmlwf_SRCS}) - target_link_libraries(xmlwf expat) - install(TARGETS xmlwf DESTINATION bin) - install(FILES doc/xmlwf.1 DESTINATION share/man/man1) -endif(BUILD_tools AND NOT WINCE) - -if(BUILD_examples) - add_executable(elements examples/elements.c) - target_link_libraries(elements expat) - - add_executable(outline examples/outline.c) - target_link_libraries(outline expat) -endif(BUILD_examples) - -if(BUILD_tests) - ## these are unittests that can be run on any platform - add_executable(runtests tests/runtests.c tests/chardata.c tests/minicheck.c) - target_link_libraries(runtests expat) - add_test(runtests runtests) - - add_executable(runtestspp tests/runtestspp.cpp tests/chardata.c tests/minicheck.c) - target_link_libraries(runtestspp expat) - add_test(runtestspp runtestspp) -endif(BUILD_tests) diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/COPYING b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/COPYING deleted file mode 100644 index dcb4506..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/COPYING +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd - and Clark Cooper -Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers. - -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: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -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. diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/Changes b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/Changes deleted file mode 100644 index 08897b9..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/Changes +++ /dev/null @@ -1,205 +0,0 @@ -Release 2.1.0 Sat March 24 2012 - - Bug Fixes: - #1742315: Harmful XML_ParserCreateNS suggestion. - #2895533: CVE-2012-1147 - Resource leak in readfilemap.c. - #1785430: Expat build fails on linux-amd64 with gcc version>=4.1 -O3. - #1983953, 2517952, 2517962, 2649838: - Build modifications using autoreconf instead of buildconf.sh. - #2815947, #2884086: OBJEXT and EXEEXT support while building. - #1990430: CVE-2009-3720 - Parser crash with special UTF-8 sequences. - #2517938: xmlwf should return non-zero exit status if not well-formed. - #2517946: Wrong statement about XMLDecl in xmlwf.1 and xmlwf.sgml. - #2855609: Dangling positionPtr after error. - #2894085: CVE-2009-3560 - Buffer over-read and crash in big2_toUtf8(). - #2958794: CVE-2012-1148 - Memory leak in poolGrow. - #2990652: CMake support. - #3010819: UNEXPECTED_STATE with a trailing "%" in entity value. - #3206497: Unitialized memory returned from XML_Parse. - #3287849: make check fails on mingw-w64. - #3496608: CVE-2012-0876 - Hash DOS attack. - - Patches: - #1749198: pkg-config support. - #3010222: Fix for bug #3010819. - #3312568: CMake support. - #3446384: Report byte offsets for attr names and values. - - New Features / API changes: - Added new API member XML_SetHashSalt() that allows setting an intial - value (salt) for hash calculations. This is part of the fix for - bug #3496608 to randomize hash parameters. - When compiled with XML_ATTR_INFO defined, adds new API member - XML_GetAttributeInfo() that allows retrieving the byte - offsets for attribute names and values (patch #3446384). - Added CMake build system. - See bug #2990652 and patch #3312568. - Added run-benchmark target to Makefile.in - relies on testdata module - present in the same relative location as in the repository. - -Release 2.0.1 Tue June 5 2007 - - Fixed bugs #1515266, #1515600: The character data handler's calling - of XML_StopParser() was not handled properly; if the parser was - stopped and the handler set to NULL, the parser would segfault. - - Fixed bug #1690883: Expat failed on EBCDIC systems as it assumed - some character constants to be ASCII encoded. - - Minor cleanups of the test harness. - - Fixed xmlwf bug #1513566: "out of memory" error on file size zero. - - Fixed outline.c bug #1543233: missing a final XML_ParserFree() call. - - Fixes and improvements for Windows platform: - bugs #1409451, #1476160, #1548182, #1602769, #1717322. - - Build fixes for various platforms: - HP-UX, Tru64, Solaris 9: patch #1437840, bug #1196180. - All Unix: #1554618 (refreshed config.sub/config.guess). - #1490371, #1613457: support both, DESTDIR and INSTALL_ROOT, - without relying on GNU-Make specific features. - #1647805: Patched configure.in to work better with Intel compiler. - - Fixes to Makefile.in to have make check work correctly: - bugs #1408143, #1535603, #1536684. - - Added Open Watcom support: patch #1523242. - -Release 2.0.0 Wed Jan 11 2006 - - We no longer use the "check" library for C unit testing; we - always use the (partial) internal implementation of the API. - - Report XML_NS setting via XML_GetFeatureList(). - - Fixed headers for use from C++. - - XML_GetCurrentLineNumber() and XML_GetCurrentColumnNumber() - now return unsigned integers. - - Added XML_LARGE_SIZE switch to enable 64-bit integers for - byte indexes and line/column numbers. - - Updated to use libtool 1.5.22 (the most recent). - - Added support for AmigaOS. - - Some mostly minor bug fixes. SF issues include: #1006708, - #1021776, #1023646, #1114960, #1156398, #1221160, #1271642. - -Release 1.95.8 Fri Jul 23 2004 - - Major new feature: suspend/resume. Handlers can now request - that a parse be suspended for later resumption or aborted - altogether. See "Temporarily Stopping Parsing" in the - documentation for more details. - - Some mostly minor bug fixes, but compilation should no - longer generate warnings on most platforms. SF issues - include: #827319, #840173, #846309, #888329, #896188, #923913, - #928113, #961698, #985192. - -Release 1.95.7 Mon Oct 20 2003 - - Fixed enum XML_Status issue (reported on SourceForge many - times), so compilers that are properly picky will be happy. - - Introduced an XMLCALL macro to control the calling - convention used by the Expat API; this macro should be used - to annotate prototypes and definitions of callback - implementations in code compiled with a calling convention - other than the default convention for the host platform. - - Improved ability to build without the configure-generated - expat_config.h header. This is useful for applications - which embed Expat rather than linking in the library. - - Fixed a variety of bugs: see SF issues #458907, #609603, - #676844, #679754, #692878, #692964, #695401, #699323, #699487, - #820946. - - Improved hash table lookups. - - Added more regression tests and improved documentation. - -Release 1.95.6 Tue Jan 28 2003 - - Added XML_FreeContentModel(). - - Added XML_MemMalloc(), XML_MemRealloc(), XML_MemFree(). - - Fixed a variety of bugs: see SF issues #615606, #616863, - #618199, #653180, #673791. - - Enhanced the regression test suite. - - Man page improvements: includes SF issue #632146. - -Release 1.95.5 Fri Sep 6 2002 - - Added XML_UseForeignDTD() for improved SAX2 support. - - Added XML_GetFeatureList(). - - Defined XML_Bool type and the values XML_TRUE and XML_FALSE. - - Use an incomplete struct instead of a void* for the parser - (may not retain). - - Fixed UTF-8 decoding bug that caused legal UTF-8 to be rejected. - - Finally fixed bug where default handler would report DTD - events that were already handled by another handler. - Initial patch contributed by Darryl Miles. - - Removed unnecessary DllMain() function that caused static - linking into a DLL to be difficult. - - Added VC++ projects for building static libraries. - - Reduced line-length for all source code and headers to be - no longer than 80 characters, to help with AS/400 support. - - Reduced memory copying during parsing (SF patch #600964). - - Fixed a variety of bugs: see SF issues #580793, #434664, - #483514, #580503, #581069, #584041, #584183, #584832, #585537, - #596555, #596678, #598352, #598944, #599715, #600479, #600971. - -Release 1.95.4 Fri Jul 12 2002 - - Added support for VMS, contributed by Craig Berry. See - vms/README.vms for more information. - - Added Mac OS (classic) support, with a makefile for MPW, - contributed by Thomas Wegner and Daryle Walker. - - Added Borland C++ Builder 5 / BCC 5.5 support, contributed - by Patrick McConnell (SF patch #538032). - - Fixed a variety of bugs: see SF issues #441449, #563184, - #564342, #566334, #566901, #569461, #570263, #575168, #579196. - - Made skippedEntityHandler conform to SAX2 (see source comment) - - Re-implemented WFC: Entity Declared from XML 1.0 spec and - added a new error "entity declared in parameter entity": - see SF bug report #569461 and SF patch #578161 - - Re-implemented section 5.1 from XML 1.0 spec: - see SF bug report #570263 and SF patch #578161 - -Release 1.95.3 Mon Jun 3 2002 - - Added a project to the MSVC workspace to create a wchar_t - version of the library; the DLLs are named libexpatw.dll. - - Changed the name of the Windows DLLs from expat.dll to - libexpat.dll; this fixes SF bug #432456. - - Added the XML_ParserReset() API function. - - Fixed XML_SetReturnNSTriplet() to work for element names. - - Made the XML_UNICODE builds usable (thanks, Karl!). - - Allow xmlwf to read from standard input. - - Install a man page for xmlwf on Unix systems. - - Fixed many bugs; see SF bug reports #231864, #461380, #464837, - #466885, #469226, #477667, #484419, #487840, #494749, #496505, - #547350. Other bugs which we can't test as easily may also - have been fixed, especially in the area of build support. - -Release 1.95.2 Fri Jul 27 2001 - - More changes to make MSVC happy with the build; add a single - workspace to support both the library and xmlwf application. - - Added a Windows installer for Windows users; includes - xmlwf.exe. - - Added compile-time constants that can be used to determine the - Expat version - - Removed a lot of GNU-specific dependencies to aide portability - among the various Unix flavors. - - Fix the UTF-8 BOM bug. - - Cleaned up warning messages for several compilers. - - Added the -Wall, -Wstrict-prototypes options for GCC. - -Release 1.95.1 Sun Oct 22 15:11:36 EDT 2000 - - Changes to get expat to build under Microsoft compiler - - Removed all aborts and instead return an UNEXPECTED_STATE error. - - Fixed a bug where a stray '%' in an entity value would cause an - abort. - - Defined XML_SetEndNamespaceDeclHandler. Thanks to Darryl Miles for - finding this oversight. - - Changed default patterns in lib/Makefile.in to fit non-GNU makes - Thanks to robin@unrated.net for reporting and providing an - account to test on. - - The reference had the wrong label for XML_SetStartNamespaceDecl. - Reported by an anonymous user. - -Release 1.95.0 Fri Sep 29 2000 - - XML_ParserCreate_MM - Allows you to set a memory management suite to replace the - standard malloc,realloc, and free. - - XML_SetReturnNSTriplet - If you turn this feature on when namespace processing is in - effect, then qualified, prefixed element and attribute names - are returned as "uri|name|prefix" where '|' is whatever - separator character is used in namespace processing. - - Merged in features from perl-expat - o XML_SetElementDeclHandler - o XML_SetAttlistDeclHandler - o XML_SetXmlDeclHandler - o XML_SetEntityDeclHandler - o StartDoctypeDeclHandler takes 3 additional parameters: - sysid, pubid, has_internal_subset - o Many paired handler setters (like XML_SetElementHandler) - now have corresponding individual handler setters - o XML_GetInputContext for getting the input context of - the current parse position. - - Added reference material - - Packaged into a distribution that builds a sharable library diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/ConfigureChecks.cmake b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/ConfigureChecks.cmake deleted file mode 100755 index 5cdf01e..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/ConfigureChecks.cmake +++ /dev/null @@ -1,44 +0,0 @@ -include(CheckIncludeFile) -include(CheckIncludeFiles) -include(CheckFunctionExists) -include(CheckSymbolExists) -include(TestBigEndian) - -check_include_file("dlfcn.h" HAVE_DLFCN_H) -check_include_file("fcntl.h" HAVE_FCNTL_H) -check_include_file("inttypes.h" HAVE_INTTYPES_H) -check_include_file("memory.h" HAVE_MEMORY_H) -check_include_file("stdint.h" HAVE_STDINT_H) -check_include_file("stdlib.h" HAVE_STDLIB_H) -check_include_file("strings.h" HAVE_STRINGS_H) -check_include_file("string.h" HAVE_STRING_H) -check_include_file("sys/stat.h" HAVE_SYS_STAT_H) -check_include_file("sys/types.h" HAVE_SYS_TYPES_H) -check_include_file("unistd.h" HAVE_UNISTD_H) - -check_function_exists("getpagesize" HAVE_GETPAGESIZE) -check_function_exists("bcopy" HAVE_BCOPY) -check_symbol_exists("memmove" "string.h" HAVE_MEMMOVE) -check_function_exists("mmap" HAVE_MMAP) - -#/* Define to 1 if you have the ANSI C header files. */ -check_include_files("stdlib.h;stdarg.h;string.h;float.h" STDC_HEADERS) - -test_big_endian(WORDS_BIGENDIAN) -#/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */ -if(WORDS_BIGENDIAN) - set(BYTEORDER 4321) -else(WORDS_BIGENDIAN) - set(BYTEORDER 1234) -endif(WORDS_BIGENDIAN) - -if(HAVE_SYS_TYPES_H) - check_symbol_exists("off_t" "sys/types.h" OFF_T) - check_symbol_exists("size_t" "sys/types.h" SIZE_T) -else(HAVE_SYS_TYPES_H) - set(OFF_T "long") - set(SIZE_T "unsigned") -endif(HAVE_SYS_TYPES_H) - -configure_file(expat_config.h.cmake expat_config.h) -add_definitions(-DHAVE_EXPAT_CONFIG_H) diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/MANIFEST b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/MANIFEST deleted file mode 100644 index 7a020dc..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/MANIFEST +++ /dev/null @@ -1,141 +0,0 @@ -amiga/launch.c -amiga/expat_68k.c -amiga/expat_68k.h -amiga/expat_68k_handler_stubs.c -amiga/expat_base.h -amiga/expat_vectors.c -amiga/expat_lib.c -amiga/expat.xml -amiga/README.txt -amiga/Makefile -amiga/include/proto/expat.h -amiga/include/libraries/expat.h -amiga/include/interfaces/expat.h -amiga/include/inline4/expat.h -bcb5/README.txt -bcb5/all_projects.bpg -bcb5/elements.bpf -bcb5/elements.bpr -bcb5/elements.mak -bcb5/expat.bpf -bcb5/expat.bpr -bcb5/expat.mak -bcb5/expat_static.bpf -bcb5/expat_static.bpr -bcb5/expat_static.mak -bcb5/expatw.bpf -bcb5/expatw.bpr -bcb5/expatw.mak -bcb5/expatw_static.bpf -bcb5/expatw_static.bpr -bcb5/expatw_static.mak -bcb5/libexpat_mtd.def -bcb5/libexpatw_mtd.def -bcb5/makefile.mak -bcb5/outline.bpf -bcb5/outline.bpr -bcb5/outline.mak -bcb5/setup.bat -bcb5/xmlwf.bpf -bcb5/xmlwf.bpr -bcb5/xmlwf.mak -doc/expat.png -doc/reference.html -doc/style.css -doc/valid-xhtml10.png -doc/xmlwf.1 -doc/xmlwf.sgml -CMakeLists.txt -CMake.README -COPYING -Changes -ConfigureChecks.cmake -MANIFEST -Makefile.in -README -configure -configure.in -expat_config.h.in -expat_config.h.cmake -expat.pc.in -expat.dsw -aclocal.m4 -conftools/PrintPath -conftools/ac_c_bigendian_cross.m4 -conftools/expat.m4 -conftools/get-version.sh -conftools/mkinstalldirs -conftools/config.guess -conftools/config.sub -conftools/install-sh -conftools/ltmain.sh -m4/libtool.m4 -m4/ltversion.m4 -m4/ltoptions.m4 -m4/ltsugar.m4 -m4/lt~obsolete.m4 -examples/elements.c -examples/elements.dsp -examples/outline.c -examples/outline.dsp -lib/Makefile.MPW -lib/amigaconfig.h -lib/ascii.h -lib/asciitab.h -lib/expat.dsp -lib/expat.h -lib/expat_external.h -lib/expat_static.dsp -lib/expatw.dsp -lib/expatw_static.dsp -lib/iasciitab.h -lib/internal.h -lib/latin1tab.h -lib/libexpat.def -lib/libexpatw.def -lib/macconfig.h -lib/nametab.h -lib/utf8tab.h -lib/winconfig.h -lib/xmlparse.c -lib/xmlrole.c -lib/xmlrole.h -lib/xmltok.c -lib/xmltok.h -lib/xmltok_impl.c -lib/xmltok_impl.h -lib/xmltok_ns.c -tests/benchmark/README.txt -tests/benchmark/benchmark.c -tests/benchmark/benchmark.dsp -tests/benchmark/benchmark.dsw -tests/README.txt -tests/chardata.c -tests/chardata.h -tests/minicheck.c -tests/minicheck.h -tests/runtests.c -tests/runtestspp.cpp -tests/xmltest.sh -vms/README.vms -vms/descrip.mms -vms/expat_config.h -win32/MANIFEST.txt -win32/README.txt -win32/expat.iss -xmlwf/codepage.c -xmlwf/codepage.h -xmlwf/ct.c -xmlwf/filemap.h -xmlwf/readfilemap.c -xmlwf/unixfilemap.c -xmlwf/win32filemap.c -xmlwf/xmlfile.c -xmlwf/xmlfile.h -xmlwf/xmlmime.c -xmlwf/xmlmime.h -xmlwf/xmltchar.h -xmlwf/xmlurl.h -xmlwf/xmlwf.c -xmlwf/xmlwf.dsp -xmlwf/xmlwin32url.cxx diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/Makefile.in b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/Makefile.in deleted file mode 100644 index 9c0f5d4..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/Makefile.in +++ /dev/null @@ -1,201 +0,0 @@ -################################################################ -# Process this file with top-level configure script to produce Makefile -# -# Copyright 2000 Clark Cooper -# -# This file is part of EXPAT. -# -# EXPAT is free software; you can redistribute it and/or modify it -# under the terms of the License (based on the MIT/X license) contained -# in the file COPYING that comes with this distribution. -# -# EXPAT 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 EXPAT. -# - -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -libdir = @libdir@ -includedir = @includedir@ -man1dir = @mandir@/man1 -pkgconfigdir = $(libdir)/pkgconfig - -top_builddir = . - - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -mkinstalldirs = $(SHELL) $(top_srcdir)/conftools/mkinstalldirs - -MANFILE = $(srcdir)/doc/xmlwf.1 -APIHEADER = $(srcdir)/lib/expat.h $(srcdir)/lib/expat_external.h -LIBRARY = libexpat.la - -DESTDIR = $(INSTALL_ROOT) - -default: buildlib xmlwf/xmlwf@EXEEXT@ - -buildlib: $(LIBRARY) expat.pc - -all: $(LIBRARY) expat.pc xmlwf/xmlwf@EXEEXT@ examples/elements examples/outline - -clean: - cd lib && rm -f $(LIBRARY) *.@OBJEXT@ *.lo && rm -rf .libs _libs - cd xmlwf && rm -f xmlwf *.@OBJEXT@ *.lo && rm -rf .libs _libs - cd examples && rm -f elements outline *.@OBJEXT@ *.lo && rm -rf .libs _libs - cd tests && rm -rf .libs runtests runtests.@OBJEXT@ runtestspp runtestspp.@OBJEXT@ - cd tests && rm -f chardata.@OBJEXT@ minicheck.@OBJEXT@ - rm -rf .libs libexpat.la - rm -f examples/core tests/core xmlwf/core - -clobber: clean - -distclean: clean - rm -f expat_config.h config.status config.log config.cache libtool - rm -f Makefile expat.pc - -extraclean: distclean - rm -f expat_config.h.in configure - rm -f aclocal.m4 m4/* - rm -f conftools/ltmain.sh conftools/install-sh conftools/config.guess conftools/config.sub - -check: tests/runtests tests/runtestspp - tests/runtests - tests/runtestspp - -install: xmlwf/xmlwf@EXEEXT@ installlib - $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(man1dir) - $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) xmlwf/xmlwf@EXEEXT@ $(DESTDIR)$(bindir)/xmlwf - $(INSTALL_DATA) $(MANFILE) $(DESTDIR)$(man1dir) - -installlib: $(LIBRARY) $(APIHEADER) expat.pc - $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir) $(DESTDIR)$(pkgconfigdir) - $(LIBTOOL) --mode=install $(INSTALL) $(LIBRARY) $(DESTDIR)$(libdir)/$(LIBRARY) - for FN in $(APIHEADER) ; do $(INSTALL_DATA) $$FN $(DESTDIR)$(includedir) ; done - $(INSTALL_DATA) expat.pc $(DESTDIR)$(pkgconfigdir)/expat.pc - -uninstall: uninstalllib - $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(bindir)/xmlwf@EXEEXT@ - rm -f $(DESTDIR)$(man1dir)/xmlwf.1 - -uninstalllib: - $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$(LIBRARY) - rm -f $(DESTDIR)$(includedir)/expat.h - rm -f $(DESTDIR)$(includedir)/expat_external.h - rm -f $(DESTDIR)$(pkgconfigdir)/expat.pc - -# for VPATH builds (invoked by configure) -mkdir-init: - @for d in lib xmlwf examples tests ; do \ - (mkdir $$d 2> /dev/null || test 1) ; \ - done - -CC = @CC@ -CXX = @CXX@ -LIBTOOL = @LIBTOOL@ - -INCLUDES = -I$(srcdir)/lib -I. -LDFLAGS = @LDFLAGS@ -CPPFLAGS = @CPPFLAGS@ -DHAVE_EXPAT_CONFIG_H -CFLAGS = @CFLAGS@ -CXXFLAGS = @CXXFLAGS@ -VSNFLAG = -version-info @LIBCURRENT@:@LIBREVISION@:@LIBAGE@ - -### autoconf this? -LTFLAGS = --silent - -COMPILE = $(CC) $(INCLUDES) $(CFLAGS) $(DEFS) $(CPPFLAGS) -CXXCOMPILE = $(CXX) $(INCLUDES) $(CXXFLAGS) $(DEFS) $(CPPFLAGS) -LTCOMPILE = $(LIBTOOL) $(LTFLAGS) --mode=compile $(COMPILE) -LINK_LIB = $(LIBTOOL) $(LTFLAGS) --mode=link $(COMPILE) -no-undefined $(VSNFLAG) -rpath $(libdir) $(LDFLAGS) -o $@ -LINK_EXE = $(LIBTOOL) $(LTFLAGS) --mode=link $(COMPILE) $(LDFLAGS) -o $@ -LINK_CXX_EXE = $(LIBTOOL) $(LTFLAGS) --mode=link $(CXXCOMPILE) $(LDFLAGS) -o $@ - -LIB_OBJS = lib/xmlparse.lo lib/xmltok.lo lib/xmlrole.lo -$(LIBRARY): $(LIB_OBJS) - $(LINK_LIB) $(LIB_OBJS) - -expat.pc: $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $@ - -lib/xmlparse.lo: lib/xmlparse.c lib/expat.h lib/xmlrole.h lib/xmltok.h \ - $(top_builddir)/expat_config.h lib/expat_external.h lib/internal.h - -lib/xmlrole.lo: lib/xmlrole.c lib/ascii.h lib/xmlrole.h \ - $(top_builddir)/expat_config.h lib/expat_external.h lib/internal.h - -lib/xmltok.lo: lib/xmltok.c lib/xmltok_impl.c lib/xmltok_ns.c \ - lib/ascii.h lib/asciitab.h lib/iasciitab.h lib/latin1tab.h \ - lib/nametab.h lib/utf8tab.h lib/xmltok.h lib/xmltok_impl.h \ - $(top_builddir)/expat_config.h lib/expat_external.h lib/internal.h - - -XMLWF_OBJS = xmlwf/xmlwf.@OBJEXT@ xmlwf/xmlfile.@OBJEXT@ xmlwf/codepage.@OBJEXT@ xmlwf/@FILEMAP@.@OBJEXT@ -xmlwf/xmlwf.@OBJEXT@: xmlwf/xmlwf.c -xmlwf/xmlfile.@OBJEXT@: xmlwf/xmlfile.c -xmlwf/codepage.@OBJEXT@: xmlwf/codepage.c -xmlwf/@FILEMAP@.@OBJEXT@: xmlwf/@FILEMAP@.c -xmlwf/xmlwf@EXEEXT@: $(XMLWF_OBJS) $(LIBRARY) - $(LINK_EXE) $(XMLWF_OBJS) $(LIBRARY) - -examples/elements.@OBJEXT@: examples/elements.c -examples/elements: examples/elements.@OBJEXT@ $(LIBRARY) - $(LINK_EXE) $< $(LIBRARY) - -examples/outline.@OBJEXT@: examples/outline.c -examples/outline: examples/outline.@OBJEXT@ $(LIBRARY) - $(LINK_EXE) $< $(LIBRARY) - -tests/chardata.@OBJEXT@: tests/chardata.c tests/chardata.h -tests/minicheck.@OBJEXT@: tests/minicheck.c tests/minicheck.h -tests/runtests.@OBJEXT@: tests/runtests.c tests/chardata.h -tests/runtests: tests/runtests.@OBJEXT@ tests/chardata.@OBJEXT@ tests/minicheck.@OBJEXT@ $(LIBRARY) - $(LINK_EXE) tests/runtests.@OBJEXT@ tests/chardata.@OBJEXT@ tests/minicheck.@OBJEXT@ $(LIBRARY) -tests/runtestspp.@OBJEXT@: tests/runtestspp.cpp tests/runtests.c tests/chardata.h -tests/runtestspp: tests/runtestspp.@OBJEXT@ tests/chardata.@OBJEXT@ tests/minicheck.@OBJEXT@ $(LIBRARY) - $(LINK_CXX_EXE) tests/runtestspp.@OBJEXT@ tests/chardata.@OBJEXT@ tests/minicheck.@OBJEXT@ $(LIBRARY) - -tests/benchmark/benchmark.@OBJEXT@: tests/benchmark/benchmark.c -tests/benchmark/benchmark: tests/benchmark/benchmark.@OBJEXT@ $(LIBRARY) - $(LINK_EXE) tests/benchmark/benchmark.@OBJEXT@ $(LIBRARY) - -run-benchmark: tests/benchmark/benchmark - tests/benchmark/benchmark@EXEEXT@ -n $(top_srcdir)/../testdata/largefiles/recset.xml 65535 3 - -tests/xmlts.zip: - wget --output-document=tests/xmlts.zip \ - http://www.w3.org/XML/Test/xmlts20080827.zip - -tests/XML-Test-Suite: tests/xmlts.zip - cd tests && unzip -q xmlts.zip - -run-xmltest: xmlwf/xmlwf@EXEEXT@ tests/XML-Test-Suite - tests/xmltest.sh - -.SUFFIXES: .c .cpp .lo .@OBJEXT@ - -.cpp.@OBJEXT@: - $(CXXCOMPILE) -o $@ -c $< -.c.@OBJEXT@: - $(COMPILE) -o $@ -c $< -.c.lo: - $(LTCOMPILE) -o $@ -c $< - -.PHONY: buildlib all \ - clean distclean extraclean maintainer-clean \ - dist distdir \ - install uninstall diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/README b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/README deleted file mode 100644 index 1f88467..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/README +++ /dev/null @@ -1,139 +0,0 @@ - - Expat, Release 2.1.0 - -This is Expat, a C library for parsing XML, written by James Clark. -Expat is a stream-oriented XML parser. This means that you register -handlers with the parser before starting the parse. These handlers -are called when the parser discovers the associated structures in the -document being parsed. A start tag is an example of the kind of -structures for which you may register handlers. - -Windows users should use the expat_win32bin package, which includes -both precompiled libraries and executables, and source code for -developers. - -Expat is free software. You may copy, distribute, and modify it under -the terms of the License contained in the file COPYING distributed -with this package. This license is the same as the MIT/X Consortium -license. - -Versions of Expat that have an odd minor version (the middle number in -the release above), are development releases and should be considered -as beta software. Releases with even minor version numbers are -intended to be production grade software. - -If you are building Expat from a check-out from the CVS repository, -you need to run a script that generates the configure script using the -GNU autoconf and libtool tools. To do this, you need to have -autoconf 2.58 or newer. Run the script like this: - - ./buildconf.sh - -Once this has been done, follow the same instructions as for building -from a source distribution. - -To build Expat from a source distribution, you first run the -configuration shell script in the top level distribution directory: - - ./configure - -There are many options which you may provide to configure (which you -can discover by running configure with the --help option). But the -one of most interest is the one that sets the installation directory. -By default, the configure script will set things up to install -libexpat into /usr/local/lib, expat.h into /usr/local/include, and -xmlwf into /usr/local/bin. If, for example, you'd prefer to install -into /home/me/mystuff/lib, /home/me/mystuff/include, and -/home/me/mystuff/bin, you can tell configure about that with: - - ./configure --prefix=/home/me/mystuff - -Another interesting option is to enable 64-bit integer support for -line and column numbers and the over-all byte index: - - ./configure CPPFLAGS=-DXML_LARGE_SIZE - -However, such a modification would be a breaking change to the ABI -and is therefore not recommended for general use - e.g. as part of -a Linux distribution - but rather for builds with special requirements. - -After running the configure script, the "make" command will build -things and "make install" will install things into their proper -location. Have a look at the "Makefile" to learn about additional -"make" options. Note that you need to have write permission into -the directories into which things will be installed. - -If you are interested in building Expat to provide document -information in UTF-16 encoding rather than the default UTF-8, follow -these instructions (after having run "make distclean"): - - 1. For UTF-16 output as unsigned short (and version/error - strings as char), run: - - ./configure CPPFLAGS=-DXML_UNICODE - - For UTF-16 output as wchar_t (incl. version/error strings), - run: - - ./configure CFLAGS="-g -O2 -fshort-wchar" \ - CPPFLAGS=-DXML_UNICODE_WCHAR_T - - 2. Edit the MakeFile, changing: - - LIBRARY = libexpat.la - - to: - - LIBRARY = libexpatw.la - - (Note the additional "w" in the library name.) - - 3. Run "make buildlib" (which builds the library only). - Or, to save step 2, run "make buildlib LIBRARY=libexpatw.la". - - 4. Run "make installlib" (which installs the library only). - Or, if step 2 was omitted, run "make installlib LIBRARY=libexpatw.la". - -Using DESTDIR or INSTALL_ROOT is enabled, with INSTALL_ROOT being the default -value for DESTDIR, and the rest of the make file using only DESTDIR. -It works as follows: - $ make install DESTDIR=/path/to/image -overrides the in-makefile set DESTDIR, while both - $ INSTALL_ROOT=/path/to/image make install - $ make install INSTALL_ROOT=/path/to/image -use DESTDIR=$(INSTALL_ROOT), even if DESTDIR eventually is defined in the -environment, because variable-setting priority is -1) commandline -2) in-makefile -3) environment - -Note: This only applies to the Expat library itself, building UTF-16 versions -of xmlwf and the tests is currently not supported. - -Note for Solaris users: The "ar" command is usually located in -"/usr/ccs/bin", which is not in the default PATH. You will need to -add this to your path for the "make" command, and probably also switch -to GNU make (the "make" found in /usr/ccs/bin does not seem to work -properly -- appearantly it does not understand .PHONY directives). If -you're using ksh or bash, use this command to build: - - PATH=/usr/ccs/bin:$PATH make - -When using Expat with a project using autoconf for configuration, you -can use the probing macro in conftools/expat.m4 to determine how to -include Expat. See the comments at the top of that file for more -information. - -A reference manual is available in the file doc/reference.html in this -distribution. - -The homepage for this project is http://www.libexpat.org/. There -are links there to connect you to the bug reports page. If you need -to report a bug when you don't have access to a browser, you may also -send a bug report by email to expat-bugs@mail.libexpat.org. - -Discussion related to the direction of future expat development takes -place on expat-discuss@mail.libexpat.org. Archives of this list and -other Expat-related lists may be found at: - - http://mail.libexpat.org/mailman/listinfo/ diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/aclocal.m4 b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/aclocal.m4 deleted file mode 100644 index 6fe5ffd..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/aclocal.m4 +++ /dev/null @@ -1,8460 +0,0 @@ -# generated automatically by aclocal 1.11.1 -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -m4_define([_LT_COPYING], [dnl -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -]) - -# serial 57 LT_INIT - - -# LT_PREREQ(VERSION) -# ------------------ -# Complain and exit if this libtool version is less that VERSION. -m4_defun([LT_PREREQ], -[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, - [m4_default([$3], - [m4_fatal([Libtool version $1 or higher is required], - 63)])], - [$2])]) - - -# _LT_CHECK_BUILDDIR -# ------------------ -# Complain if the absolute build directory name contains unusual characters -m4_defun([_LT_CHECK_BUILDDIR], -[case `pwd` in - *\ * | *\ *) - AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; -esac -]) - - -# LT_INIT([OPTIONS]) -# ------------------ -AC_DEFUN([LT_INIT], -[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT -AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -AC_BEFORE([$0], [LT_LANG])dnl -AC_BEFORE([$0], [LT_OUTPUT])dnl -AC_BEFORE([$0], [LTDL_INIT])dnl -m4_require([_LT_CHECK_BUILDDIR])dnl - -dnl Autoconf doesn't catch unexpanded LT_ macros by default: -m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl -m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl -dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 -dnl unless we require an AC_DEFUNed macro: -AC_REQUIRE([LTOPTIONS_VERSION])dnl -AC_REQUIRE([LTSUGAR_VERSION])dnl -AC_REQUIRE([LTVERSION_VERSION])dnl -AC_REQUIRE([LTOBSOLETE_VERSION])dnl -m4_require([_LT_PROG_LTMAIN])dnl - -_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) - -dnl Parse OPTIONS -_LT_SET_OPTIONS([$0], [$1]) - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -_LT_SETUP - -# Only expand once: -m4_define([LT_INIT]) -])# LT_INIT - -# Old names: -AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) -AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PROG_LIBTOOL], []) -dnl AC_DEFUN([AM_PROG_LIBTOOL], []) - - -# _LT_CC_BASENAME(CC) -# ------------------- -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -m4_defun([_LT_CC_BASENAME], -[for cc_temp in $1""; do - case $cc_temp in - compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; - distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -]) - - -# _LT_FILEUTILS_DEFAULTS -# ---------------------- -# It is okay to use these file commands and assume they have been set -# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. -m4_defun([_LT_FILEUTILS_DEFAULTS], -[: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} -])# _LT_FILEUTILS_DEFAULTS - - -# _LT_SETUP -# --------- -m4_defun([_LT_SETUP], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl - -_LT_DECL([], [host_alias], [0], [The host system])dnl -_LT_DECL([], [host], [0])dnl -_LT_DECL([], [host_os], [0])dnl -dnl -_LT_DECL([], [build_alias], [0], [The build system])dnl -_LT_DECL([], [build], [0])dnl -_LT_DECL([], [build_os], [0])dnl -dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -dnl -AC_REQUIRE([AC_PROG_LN_S])dnl -test -z "$LN_S" && LN_S="ln -s" -_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl -dnl -AC_REQUIRE([LT_CMD_MAX_LEN])dnl -_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl -_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl -dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl -m4_require([_LT_CMD_RELOAD])dnl -m4_require([_LT_CHECK_MAGIC_METHOD])dnl -m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl -m4_require([_LT_CMD_OLD_ARCHIVE])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_WITH_SYSROOT])dnl - -_LT_CONFIG_LIBTOOL_INIT([ -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi -]) -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -_LT_CHECK_OBJDIR - -m4_require([_LT_TAG_COMPILER])dnl - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -_LT_CC_BASENAME([$compiler]) - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - _LT_PATH_MAGIC - fi - ;; -esac - -# Use C for the default configuration in the libtool script -LT_SUPPORTED_TAG([CC]) -_LT_LANG_C_CONFIG -_LT_LANG_DEFAULT_CONFIG -_LT_CONFIG_COMMANDS -])# _LT_SETUP - - -# _LT_PREPARE_SED_QUOTE_VARS -# -------------------------- -# Define a few sed substitution that help us do robust quoting. -m4_defun([_LT_PREPARE_SED_QUOTE_VARS], -[# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\([["`\\]]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' -]) - -# _LT_PROG_LTMAIN -# --------------- -# Note that this code is called both from `configure', and `config.status' -# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, -# `config.status' has no value for ac_aux_dir unless we are using Automake, -# so we pass a copy along to make sure it has a sensible value anyway. -m4_defun([_LT_PROG_LTMAIN], -[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl -_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) -ltmain="$ac_aux_dir/ltmain.sh" -])# _LT_PROG_LTMAIN - - - -# So that we can recreate a full libtool script including additional -# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS -# in macros and then make a single call at the end using the `libtool' -# label. - - -# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) -# ---------------------------------------- -# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL_INIT], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_INIT], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_INIT]) - - -# _LT_CONFIG_LIBTOOL([COMMANDS]) -# ------------------------------ -# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) - - -# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) -# ----------------------------------------------------- -m4_defun([_LT_CONFIG_SAVE_COMMANDS], -[_LT_CONFIG_LIBTOOL([$1]) -_LT_CONFIG_LIBTOOL_INIT([$2]) -]) - - -# _LT_FORMAT_COMMENT([COMMENT]) -# ----------------------------- -# Add leading comment marks to the start of each line, and a trailing -# full-stop to the whole comment if one is not present already. -m4_define([_LT_FORMAT_COMMENT], -[m4_ifval([$1], [ -m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], - [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) -)]) - - - - - -# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) -# ------------------------------------------------------------------- -# CONFIGNAME is the name given to the value in the libtool script. -# VARNAME is the (base) name used in the configure script. -# VALUE may be 0, 1 or 2 for a computed quote escaped value based on -# VARNAME. Any other value will be used directly. -m4_define([_LT_DECL], -[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], - [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], - [m4_ifval([$1], [$1], [$2])]) - lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) - m4_ifval([$4], - [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) - lt_dict_add_subkey([lt_decl_dict], [$2], - [tagged?], [m4_ifval([$5], [yes], [no])])]) -]) - - -# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) -# -------------------------------------------------------- -m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) - - -# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_tag_varnames], -[_lt_decl_filter([tagged?], [yes], $@)]) - - -# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) -# --------------------------------------------------------- -m4_define([_lt_decl_filter], -[m4_case([$#], - [0], [m4_fatal([$0: too few arguments: $#])], - [1], [m4_fatal([$0: too few arguments: $#: $1])], - [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], - [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], - [lt_dict_filter([lt_decl_dict], $@)])[]dnl -]) - - -# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) -# -------------------------------------------------- -m4_define([lt_decl_quote_varnames], -[_lt_decl_filter([value], [1], $@)]) - - -# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_dquote_varnames], -[_lt_decl_filter([value], [2], $@)]) - - -# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_varnames_tagged], -[m4_assert([$# <= 2])dnl -_$0(m4_quote(m4_default([$1], [[, ]])), - m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), - m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) -m4_define([_lt_decl_varnames_tagged], -[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) - - -# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_all_varnames], -[_$0(m4_quote(m4_default([$1], [[, ]])), - m4_if([$2], [], - m4_quote(lt_decl_varnames), - m4_quote(m4_shift($@))))[]dnl -]) -m4_define([_lt_decl_all_varnames], -[lt_join($@, lt_decl_varnames_tagged([$1], - lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl -]) - - -# _LT_CONFIG_STATUS_DECLARE([VARNAME]) -# ------------------------------------ -# Quote a variable value, and forward it to `config.status' so that its -# declaration there will have the same value as in `configure'. VARNAME -# must have a single quote delimited value for this to work. -m4_define([_LT_CONFIG_STATUS_DECLARE], -[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) - - -# _LT_CONFIG_STATUS_DECLARATIONS -# ------------------------------ -# We delimit libtool config variables with single quotes, so when -# we write them to config.status, we have to be sure to quote all -# embedded single quotes properly. In configure, this macro expands -# each variable declared with _LT_DECL (and _LT_TAGDECL) into: -# -# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' -m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], -[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), - [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAGS -# ---------------- -# Output comment and list of tags supported by the script -m4_defun([_LT_LIBTOOL_TAGS], -[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl -available_tags="_LT_TAGS"dnl -]) - - -# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) -# ----------------------------------- -# Extract the dictionary values for VARNAME (optionally with TAG) and -# expand to a commented shell variable setting: -# -# # Some comment about what VAR is for. -# visible_name=$lt_internal_name -m4_define([_LT_LIBTOOL_DECLARE], -[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], - [description])))[]dnl -m4_pushdef([_libtool_name], - m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl -m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), - [0], [_libtool_name=[$]$1], - [1], [_libtool_name=$lt_[]$1], - [2], [_libtool_name=$lt_[]$1], - [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl -m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl -]) - - -# _LT_LIBTOOL_CONFIG_VARS -# ----------------------- -# Produce commented declarations of non-tagged libtool config variables -# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' -# script. Tagged libtool config variables (even for the LIBTOOL CONFIG -# section) are produced by _LT_LIBTOOL_TAG_VARS. -m4_defun([_LT_LIBTOOL_CONFIG_VARS], -[m4_foreach([_lt_var], - m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAG_VARS(TAG) -# ------------------------- -m4_define([_LT_LIBTOOL_TAG_VARS], -[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) - - -# _LT_TAGVAR(VARNAME, [TAGNAME]) -# ------------------------------ -m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) - - -# _LT_CONFIG_COMMANDS -# ------------------- -# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of -# variables for single and double quote escaping we saved from calls -# to _LT_DECL, we can put quote escaped variables declarations -# into `config.status', and then the shell code to quote escape them in -# for loops in `config.status'. Finally, any additional code accumulated -# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. -m4_defun([_LT_CONFIG_COMMANDS], -[AC_PROVIDE_IFELSE([LT_OUTPUT], - dnl If the libtool generation code has been placed in $CONFIG_LT, - dnl instead of duplicating it all over again into config.status, - dnl then we will have config.status run $CONFIG_LT later, so it - dnl needs to know what name is stored there: - [AC_CONFIG_COMMANDS([libtool], - [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], - dnl If the libtool generation code is destined for config.status, - dnl expand the accumulated commands and init code now: - [AC_CONFIG_COMMANDS([libtool], - [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) -])#_LT_CONFIG_COMMANDS - - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], -[ - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -_LT_CONFIG_STATUS_DECLARATIONS -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$[]1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_quote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_dquote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -_LT_OUTPUT_LIBTOOL_INIT -]) - -# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) -# ------------------------------------ -# Generate a child script FILE with all initialization necessary to -# reuse the environment learned by the parent script, and make the -# file executable. If COMMENT is supplied, it is inserted after the -# `#!' sequence but before initialization text begins. After this -# macro, additional text can be appended to FILE to form the body of -# the child script. The macro ends with non-zero status if the -# file could not be fully written (such as if the disk is full). -m4_ifdef([AS_INIT_GENERATED], -[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], -[m4_defun([_LT_GENERATED_FILE_INIT], -[m4_require([AS_PREPARE])]dnl -[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl -[lt_write_fail=0 -cat >$1 <<_ASEOF || lt_write_fail=1 -#! $SHELL -# Generated by $as_me. -$2 -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$1 <<\_ASEOF || lt_write_fail=1 -AS_SHELL_SANITIZE -_AS_PREPARE -exec AS_MESSAGE_FD>&1 -_ASEOF -test $lt_write_fail = 0 && chmod +x $1[]dnl -m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT - -# LT_OUTPUT -# --------- -# This macro allows early generation of the libtool script (before -# AC_OUTPUT is called), incase it is used in configure for compilation -# tests. -AC_DEFUN([LT_OUTPUT], -[: ${CONFIG_LT=./config.lt} -AC_MSG_NOTICE([creating $CONFIG_LT]) -_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], -[# Run this file to recreate a libtool stub with the current configuration.]) - -cat >>"$CONFIG_LT" <<\_LTEOF -lt_cl_silent=false -exec AS_MESSAGE_LOG_FD>>config.log -{ - echo - AS_BOX([Running $as_me.]) -} >&AS_MESSAGE_LOG_FD - -lt_cl_help="\ -\`$as_me' creates a local libtool stub from the current configuration, -for use in further configure time tests before the real libtool is -generated. - -Usage: $[0] [[OPTIONS]] - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - -Report bugs to ." - -lt_cl_version="\ -m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl -m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) -configured by $[0], generated by m4_PACKAGE_STRING. - -Copyright (C) 2010 Free Software Foundation, Inc. -This config.lt script is free software; the Free Software Foundation -gives unlimited permision to copy, distribute and modify it." - -while test $[#] != 0 -do - case $[1] in - --version | --v* | -V ) - echo "$lt_cl_version"; exit 0 ;; - --help | --h* | -h ) - echo "$lt_cl_help"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --quiet | --q* | --silent | --s* | -q ) - lt_cl_silent=: ;; - - -*) AC_MSG_ERROR([unrecognized option: $[1] -Try \`$[0] --help' for more information.]) ;; - - *) AC_MSG_ERROR([unrecognized argument: $[1] -Try \`$[0] --help' for more information.]) ;; - esac - shift -done - -if $lt_cl_silent; then - exec AS_MESSAGE_FD>/dev/null -fi -_LTEOF - -cat >>"$CONFIG_LT" <<_LTEOF -_LT_OUTPUT_LIBTOOL_COMMANDS_INIT -_LTEOF - -cat >>"$CONFIG_LT" <<\_LTEOF -AC_MSG_NOTICE([creating $ofile]) -_LT_OUTPUT_LIBTOOL_COMMANDS -AS_EXIT(0) -_LTEOF -chmod +x "$CONFIG_LT" - -# configure is writing to config.log, but config.lt does its own redirection, -# appending to config.log, which fails on DOS, as config.log is still kept -# open by configure. Here we exec the FD to /dev/null, effectively closing -# config.log, so it can be properly (re)opened and appended to by config.lt. -lt_cl_success=: -test "$silent" = yes && - lt_config_lt_args="$lt_config_lt_args --quiet" -exec AS_MESSAGE_LOG_FD>/dev/null -$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false -exec AS_MESSAGE_LOG_FD>>config.log -$lt_cl_success || AS_EXIT(1) -])# LT_OUTPUT - - -# _LT_CONFIG(TAG) -# --------------- -# If TAG is the built-in tag, create an initial libtool script with a -# default configuration from the untagged config vars. Otherwise add code -# to config.status for appending the configuration named by TAG from the -# matching tagged config vars. -m4_defun([_LT_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_CONFIG_SAVE_COMMANDS([ - m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl - m4_if(_LT_TAG, [C], [ - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -_LT_COPYING -_LT_LIBTOOL_TAGS - -# ### BEGIN LIBTOOL CONFIG -_LT_LIBTOOL_CONFIG_VARS -_LT_LIBTOOL_TAG_VARS -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - _LT_PROG_LTMAIN - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - _LT_PROG_REPLACE_SHELLFNS - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" -], -[cat <<_LT_EOF >> "$ofile" - -dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded -dnl in a comment (ie after a #). -# ### BEGIN LIBTOOL TAG CONFIG: $1 -_LT_LIBTOOL_TAG_VARS(_LT_TAG) -# ### END LIBTOOL TAG CONFIG: $1 -_LT_EOF -])dnl /m4_if -], -[m4_if([$1], [], [ - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile'], []) -])dnl /_LT_CONFIG_SAVE_COMMANDS -])# _LT_CONFIG - - -# LT_SUPPORTED_TAG(TAG) -# --------------------- -# Trace this macro to discover what tags are supported by the libtool -# --tag option, using: -# autoconf --trace 'LT_SUPPORTED_TAG:$1' -AC_DEFUN([LT_SUPPORTED_TAG], []) - - -# C support is built-in for now -m4_define([_LT_LANG_C_enabled], []) -m4_define([_LT_TAGS], []) - - -# LT_LANG(LANG) -# ------------- -# Enable libtool support for the given language if not already enabled. -AC_DEFUN([LT_LANG], -[AC_BEFORE([$0], [LT_OUTPUT])dnl -m4_case([$1], - [C], [_LT_LANG(C)], - [C++], [_LT_LANG(CXX)], - [Java], [_LT_LANG(GCJ)], - [Fortran 77], [_LT_LANG(F77)], - [Fortran], [_LT_LANG(FC)], - [Windows Resource], [_LT_LANG(RC)], - [m4_ifdef([_LT_LANG_]$1[_CONFIG], - [_LT_LANG($1)], - [m4_fatal([$0: unsupported language: "$1"])])])dnl -])# LT_LANG - - -# _LT_LANG(LANGNAME) -# ------------------ -m4_defun([_LT_LANG], -[m4_ifdef([_LT_LANG_]$1[_enabled], [], - [LT_SUPPORTED_TAG([$1])dnl - m4_append([_LT_TAGS], [$1 ])dnl - m4_define([_LT_LANG_]$1[_enabled], [])dnl - _LT_LANG_$1_CONFIG($1)])dnl -])# _LT_LANG - - -# _LT_LANG_DEFAULT_CONFIG -# ----------------------- -m4_defun([_LT_LANG_DEFAULT_CONFIG], -[AC_PROVIDE_IFELSE([AC_PROG_CXX], - [LT_LANG(CXX)], - [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) - -AC_PROVIDE_IFELSE([AC_PROG_F77], - [LT_LANG(F77)], - [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) - -AC_PROVIDE_IFELSE([AC_PROG_FC], - [LT_LANG(FC)], - [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) - -dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal -dnl pulling things in needlessly. -AC_PROVIDE_IFELSE([AC_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([LT_PROG_GCJ], - [LT_LANG(GCJ)], - [m4_ifdef([AC_PROG_GCJ], - [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([A][M_PROG_GCJ], - [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([LT_PROG_GCJ], - [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) - -AC_PROVIDE_IFELSE([LT_PROG_RC], - [LT_LANG(RC)], - [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) -])# _LT_LANG_DEFAULT_CONFIG - -# Obsolete macros: -AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) -AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) -AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) -AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) -AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_CXX], []) -dnl AC_DEFUN([AC_LIBTOOL_F77], []) -dnl AC_DEFUN([AC_LIBTOOL_FC], []) -dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) -dnl AC_DEFUN([AC_LIBTOOL_RC], []) - - -# _LT_TAG_COMPILER -# ---------------- -m4_defun([_LT_TAG_COMPILER], -[AC_REQUIRE([AC_PROG_CC])dnl - -_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl -_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl -_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl -_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC -])# _LT_TAG_COMPILER - - -# _LT_COMPILER_BOILERPLATE -# ------------------------ -# Check for compiler boilerplate output or warnings with -# the simple compiler test code. -m4_defun([_LT_COMPILER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* -])# _LT_COMPILER_BOILERPLATE - - -# _LT_LINKER_BOILERPLATE -# ---------------------- -# Check for linker boilerplate output or warnings with -# the simple link test code. -m4_defun([_LT_LINKER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* -])# _LT_LINKER_BOILERPLATE - -# _LT_REQUIRED_DARWIN_CHECKS -# ------------------------- -m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ - case $host_os in - rhapsody* | darwin*) - AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) - AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) - AC_CHECK_TOOL([LIPO], [lipo], [:]) - AC_CHECK_TOOL([OTOOL], [otool], [:]) - AC_CHECK_TOOL([OTOOL64], [otool64], [:]) - _LT_DECL([], [DSYMUTIL], [1], - [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) - _LT_DECL([], [NMEDIT], [1], - [Tool to change global to local symbols on Mac OS X]) - _LT_DECL([], [LIPO], [1], - [Tool to manipulate fat objects and archives on Mac OS X]) - _LT_DECL([], [OTOOL], [1], - [ldd/readelf like tool for Mach-O binaries on Mac OS X]) - _LT_DECL([], [OTOOL64], [1], - [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) - - AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], - [lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi]) - AC_CACHE_CHECK([for -exported_symbols_list linker flag], - [lt_cv_ld_exported_symbols_list], - [lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [lt_cv_ld_exported_symbols_list=yes], - [lt_cv_ld_exported_symbols_list=no]) - LDFLAGS="$save_LDFLAGS" - ]) - AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], - [lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD - echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD - $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD - echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD - $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - ]) - case $host_os in - rhapsody* | darwin1.[[012]]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[[012]]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac -]) - - -# _LT_DARWIN_LINKER_FEATURES -# -------------------------- -# Checks for linker and compiler features on darwin -m4_defun([_LT_DARWIN_LINKER_FEATURES], -[ - m4_require([_LT_REQUIRED_DARWIN_CHECKS]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_automatic, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='' - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - m4_if([$1], [CXX], -[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then - _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" - fi -],[]) - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi -]) - -# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) -# ---------------------------------- -# Links a minimal program and checks the executable -# for the system default hardcoded library path. In most cases, -# this is /usr/lib:/lib, but when the MPI compilers are used -# the location of the communication and MPI libs are included too. -# If we don't find anything, use the default library path according -# to the aix ld manual. -# Store the results from the different compilers for each TAGNAME. -# Allow to override them for all tags through lt_cv_aix_libpath. -m4_defun([_LT_SYS_MODULE_PATH_AIX], -[m4_require([_LT_DECL_SED])dnl -if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], - [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ - lt_aix_libpath_sed='[ - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }]' - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi],[]) - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" - fi - ]) - aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) -fi -])# _LT_SYS_MODULE_PATH_AIX - - -# _LT_SHELL_INIT(ARG) -# ------------------- -m4_define([_LT_SHELL_INIT], -[m4_divert_text([M4SH-INIT], [$1 -])])# _LT_SHELL_INIT - - - -# _LT_PROG_ECHO_BACKSLASH -# ----------------------- -# Find how we can fake an echo command that does not interpret backslash. -# In particular, with Autoconf 2.60 or later we add some code to the start -# of the generated configure script which will find a shell with a builtin -# printf (which we can use as an echo command). -m4_defun([_LT_PROG_ECHO_BACKSLASH], -[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -AC_MSG_CHECKING([how to print strings]) -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$[]1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - -case "$ECHO" in - printf*) AC_MSG_RESULT([printf]) ;; - print*) AC_MSG_RESULT([print -r]) ;; - *) AC_MSG_RESULT([cat]) ;; -esac - -m4_ifdef([_AS_DETECT_SUGGESTED], -[_AS_DETECT_SUGGESTED([ - test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test "X`printf %s $ECHO`" = "X$ECHO" \ - || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) - -_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) -_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) -])# _LT_PROG_ECHO_BACKSLASH - - -# _LT_WITH_SYSROOT -# ---------------- -AC_DEFUN([_LT_WITH_SYSROOT], -[AC_MSG_CHECKING([for sysroot]) -AC_ARG_WITH([sysroot], -[ --with-sysroot[=DIR] Search for dependent libraries within DIR - (or the compiler's sysroot if not specified).], -[], [with_sysroot=no]) - -dnl lt_sysroot will always be passed unquoted. We quote it here -dnl in case the user passed a directory name. -lt_sysroot= -case ${with_sysroot} in #( - yes) - if test "$GCC" = yes; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - AC_MSG_RESULT([${with_sysroot}]) - AC_MSG_ERROR([The sysroot must be an absolute path.]) - ;; -esac - - AC_MSG_RESULT([${lt_sysroot:-no}]) -_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl -[dependent libraries, and in which our libraries should be installed.])]) - -# _LT_ENABLE_LOCK -# --------------- -m4_defun([_LT_ENABLE_LOCK], -[AC_ARG_ENABLE([libtool-lock], - [AS_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, - [AC_LANG_PUSH(C) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) - AC_LANG_POP]) - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -sparc*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks="$enable_libtool_lock" -])# _LT_ENABLE_LOCK - - -# _LT_PROG_AR -# ----------- -m4_defun([_LT_PROG_AR], -[AC_CHECK_TOOLS(AR, [ar], false) -: ${AR=ar} -: ${AR_FLAGS=cru} -_LT_DECL([], [AR], [1], [The archiver]) -_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) - -AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], - [lt_cv_ar_at_file=no - AC_COMPILE_IFELSE([AC_LANG_PROGRAM], - [echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' - AC_TRY_EVAL([lt_ar_try]) - if test "$ac_status" -eq 0; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - AC_TRY_EVAL([lt_ar_try]) - if test "$ac_status" -ne 0; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - ]) - ]) - -if test "x$lt_cv_ar_at_file" = xno; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi -_LT_DECL([], [archiver_list_spec], [1], - [How to feed a file listing to the archiver]) -])# _LT_PROG_AR - - -# _LT_CMD_OLD_ARCHIVE -# ------------------- -m4_defun([_LT_CMD_OLD_ARCHIVE], -[_LT_PROG_AR - -AC_CHECK_TOOL(STRIP, strip, :) -test -z "$STRIP" && STRIP=: -_LT_DECL([], [STRIP], [1], [A symbol stripping program]) - -AC_CHECK_TOOL(RANLIB, ranlib, :) -test -z "$RANLIB" && RANLIB=: -_LT_DECL([], [RANLIB], [1], - [Commands used to install an old-style archive]) - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac -_LT_DECL([], [old_postinstall_cmds], [2]) -_LT_DECL([], [old_postuninstall_cmds], [2]) -_LT_TAGDECL([], [old_archive_cmds], [2], - [Commands used to build an old-style archive]) -_LT_DECL([], [lock_old_archive_extraction], [0], - [Whether to use a lock for old archive extraction]) -])# _LT_CMD_OLD_ARCHIVE - - -# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------------------- -# Check whether the given compiler option works -AC_DEFUN([_LT_COMPILER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - fi - $RM conftest* -]) - -if test x"[$]$2" = xyes; then - m4_if([$5], , :, [$5]) -else - m4_if([$6], , :, [$6]) -fi -])# _LT_COMPILER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) - - -# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------- -# Check whether the given linker option works -AC_DEFUN([_LT_LINKER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $3" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&AS_MESSAGE_LOG_FD - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - else - $2=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" -]) - -if test x"[$]$2" = xyes; then - m4_if([$4], , :, [$4]) -else - m4_if([$5], , :, [$5]) -fi -])# _LT_LINKER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) - - -# LT_CMD_MAX_LEN -#--------------- -AC_DEFUN([LT_CMD_MAX_LEN], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -# find the maximum length of command line arguments -AC_MSG_CHECKING([the maximum length of command line arguments]) -AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac -]) -if test -n $lt_cv_sys_max_cmd_len ; then - AC_MSG_RESULT($lt_cv_sys_max_cmd_len) -else - AC_MSG_RESULT(none) -fi -max_cmd_len=$lt_cv_sys_max_cmd_len -_LT_DECL([], [max_cmd_len], [0], - [What is the maximum length of a command?]) -])# LT_CMD_MAX_LEN - -# Old name: -AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) - - -# _LT_HEADER_DLFCN -# ---------------- -m4_defun([_LT_HEADER_DLFCN], -[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl -])# _LT_HEADER_DLFCN - - -# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# ---------------------------------------------------------------- -m4_defun([_LT_TRY_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test "$cross_compiling" = yes; then : - [$4] -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -[#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -}] -_LT_EOF - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) $1 ;; - x$lt_dlneed_uscore) $2 ;; - x$lt_dlunknown|x*) $3 ;; - esac - else : - # compilation failed - $3 - fi -fi -rm -fr conftest* -])# _LT_TRY_DLOPEN_SELF - - -# LT_SYS_DLOPEN_SELF -# ------------------ -AC_DEFUN([LT_SYS_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ]) - ;; - - *) - AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen="shl_load"], - [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], - [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen="dlopen"], - [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], - [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], - [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) - ]) - ]) - ]) - ]) - ]) - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - AC_CACHE_CHECK([whether a program can dlopen itself], - lt_cv_dlopen_self, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, - lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) - ]) - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - AC_CACHE_CHECK([whether a statically linked program can dlopen itself], - lt_cv_dlopen_self_static, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, - lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) - ]) - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi -_LT_DECL([dlopen_support], [enable_dlopen], [0], - [Whether dlopen is supported]) -_LT_DECL([dlopen_self], [enable_dlopen_self], [0], - [Whether dlopen of programs is supported]) -_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], - [Whether dlopen of statically linked programs is supported]) -])# LT_SYS_DLOPEN_SELF - -# Old name: -AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) - - -# _LT_COMPILER_C_O([TAGNAME]) -# --------------------------- -# Check to see if options -c and -o are simultaneously supported by compiler. -# This macro does not hard code the compiler like AC_PROG_CC_C_O. -m4_defun([_LT_COMPILER_C_O], -[m4_require([_LT_DECL_SED])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - fi - fi - chmod u+w . 2>&AS_MESSAGE_LOG_FD - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* -]) -_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], - [Does compiler simultaneously support -c and -o options?]) -])# _LT_COMPILER_C_O - - -# _LT_COMPILER_FILE_LOCKS([TAGNAME]) -# ---------------------------------- -# Check to see if we can do hard links to lock some files if needed -m4_defun([_LT_COMPILER_FILE_LOCKS], -[m4_require([_LT_ENABLE_LOCK])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_COMPILER_C_O([$1]) - -hard_links="nottested" -if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - AC_MSG_CHECKING([if we can lock with hard links]) - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - AC_MSG_RESULT([$hard_links]) - if test "$hard_links" = no; then - AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) - need_locks=warn - fi -else - need_locks=no -fi -_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) -])# _LT_COMPILER_FILE_LOCKS - - -# _LT_CHECK_OBJDIR -# ---------------- -m4_defun([_LT_CHECK_OBJDIR], -[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], -[rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null]) -objdir=$lt_cv_objdir -_LT_DECL([], [objdir], [0], - [The name of the directory that contains temporary libtool files])dnl -m4_pattern_allow([LT_OBJDIR])dnl -AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", - [Define to the sub-directory in which libtool stores uninstalled libraries.]) -])# _LT_CHECK_OBJDIR - - -# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) -# -------------------------------------- -# Check hardcoding attributes. -m4_defun([_LT_LINKER_HARDCODE_LIBPATH], -[AC_MSG_CHECKING([how to hardcode library paths into programs]) -_LT_TAGVAR(hardcode_action, $1)= -if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || - test -n "$_LT_TAGVAR(runpath_var, $1)" || - test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && - test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then - # Linking always hardcodes the temporary library directory. - _LT_TAGVAR(hardcode_action, $1)=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - _LT_TAGVAR(hardcode_action, $1)=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - _LT_TAGVAR(hardcode_action, $1)=unsupported -fi -AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) - -if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || - test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi -_LT_TAGDECL([], [hardcode_action], [0], - [How to hardcode a shared library path into an executable]) -])# _LT_LINKER_HARDCODE_LIBPATH - - -# _LT_CMD_STRIPLIB -# ---------------- -m4_defun([_LT_CMD_STRIPLIB], -[m4_require([_LT_DECL_EGREP]) -striplib= -old_striplib= -AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac -fi -_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) -_LT_DECL([], [striplib], [1]) -])# _LT_CMD_STRIPLIB - - -# _LT_SYS_DYNAMIC_LINKER([TAG]) -# ----------------------------- -# PORTME Fill in your ld.so characteristics -m4_defun([_LT_SYS_DYNAMIC_LINKER], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_OBJDUMP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -AC_MSG_CHECKING([dynamic linker characteristics]) -m4_if([$1], - [], [ -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[[lt_foo]]++; } - if (lt_freq[[lt_foo]] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi]) -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[[4-9]]*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[[01]] | aix4.[[01]].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[[45]]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec="$LIB" - if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[[123]]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[[01]]* | freebsdelf3.[[01]]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ - freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -haiku*) - version_type=linux - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[[3-9]]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], - [lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ - LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], - [lt_cv_shlibpath_overrides_runpath=yes])]) - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - ]) - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[[89]] | openbsd2.[[89]].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -AC_MSG_RESULT([$dynamic_linker]) -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - -_LT_DECL([], [variables_saved_for_relink], [1], - [Variables whose values should be saved in libtool wrapper scripts and - restored at link time]) -_LT_DECL([], [need_lib_prefix], [0], - [Do we need the "lib" prefix for modules?]) -_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) -_LT_DECL([], [version_type], [0], [Library versioning type]) -_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) -_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) -_LT_DECL([], [shlibpath_overrides_runpath], [0], - [Is shlibpath searched before the hard-coded library search path?]) -_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) -_LT_DECL([], [library_names_spec], [1], - [[List of archive names. First name is the real one, the rest are links. - The last name is the one that the linker finds with -lNAME]]) -_LT_DECL([], [soname_spec], [1], - [[The coded name of the library, if different from the real name]]) -_LT_DECL([], [install_override_mode], [1], - [Permission mode override for installation of shared libraries]) -_LT_DECL([], [postinstall_cmds], [2], - [Command to use after installation of a shared archive]) -_LT_DECL([], [postuninstall_cmds], [2], - [Command to use after uninstallation of a shared archive]) -_LT_DECL([], [finish_cmds], [2], - [Commands used to finish a libtool library installation in a directory]) -_LT_DECL([], [finish_eval], [1], - [[As "finish_cmds", except a single script fragment to be evaled but - not shown]]) -_LT_DECL([], [hardcode_into_libs], [0], - [Whether we should hardcode library paths into libraries]) -_LT_DECL([], [sys_lib_search_path_spec], [2], - [Compile-time system search path for libraries]) -_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], - [Run-time system search path for libraries]) -])# _LT_SYS_DYNAMIC_LINKER - - -# _LT_PATH_TOOL_PREFIX(TOOL) -# -------------------------- -# find a file program which can recognize shared library -AC_DEFUN([_LT_PATH_TOOL_PREFIX], -[m4_require([_LT_DECL_EGREP])dnl -AC_MSG_CHECKING([for $1]) -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, -[case $MAGIC_CMD in -[[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -dnl $ac_dummy forces splitting on constant user-supplied paths. -dnl POSIX.2 word splitting is done only on the output of word expansions, -dnl not every word. This closes a longstanding sh security hole. - ac_dummy="m4_if([$2], , $PATH, [$2])" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$1; then - lt_cv_path_MAGIC_CMD="$ac_dir/$1" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac]) -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - AC_MSG_RESULT($MAGIC_CMD) -else - AC_MSG_RESULT(no) -fi -_LT_DECL([], [MAGIC_CMD], [0], - [Used to examine libraries when file_magic_cmd begins with "file"])dnl -])# _LT_PATH_TOOL_PREFIX - -# Old name: -AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) - - -# _LT_PATH_MAGIC -# -------------- -# find a file program which can recognize a shared library -m4_defun([_LT_PATH_MAGIC], -[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) - else - MAGIC_CMD=: - fi -fi -])# _LT_PATH_MAGIC - - -# LT_PATH_LD -# ---------- -# find the pathname to the GNU or non-GNU linker -AC_DEFUN([LT_PATH_LD], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PROG_ECHO_BACKSLASH])dnl - -AC_ARG_WITH([gnu-ld], - [AS_HELP_STRING([--with-gnu-ld], - [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test "$withval" = no || with_gnu_ld=yes], - [with_gnu_ld=no])dnl - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by $CC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]]* | ?:[[\\/]]*) - re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(lt_cv_path_LD, -[if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[[3-9]]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -esac -]) - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - -_LT_DECL([], [deplibs_check_method], [1], - [Method to check whether dependent libraries are shared objects]) -_LT_DECL([], [file_magic_cmd], [1], - [Command to use when deplibs_check_method = "file_magic"]) -_LT_DECL([], [file_magic_glob], [1], - [How to find potential files when deplibs_check_method = "file_magic"]) -_LT_DECL([], [want_nocaseglob], [1], - [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) -])# _LT_CHECK_MAGIC_METHOD - - -# LT_PATH_NM -# ---------- -# find the pathname to a BSD- or MS-compatible name lister -AC_DEFUN([LT_PATH_NM], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, -[if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} -fi]) -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols" - ;; - *) - DUMPBIN=: - ;; - esac - fi - AC_SUBST([DUMPBIN]) - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi -fi -test -z "$NM" && NM=nm -AC_SUBST([NM]) -_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl - -AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], - [lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) - cat conftest.out >&AS_MESSAGE_LOG_FD - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest*]) -])# LT_PATH_NM - -# Old names: -AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) -AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_PROG_NM], []) -dnl AC_DEFUN([AC_PROG_NM], []) - -# _LT_CHECK_SHAREDLIB_FROM_LINKLIB -# -------------------------------- -# how to determine the name of the shared library -# associated with a specific link library. -# -- PORTME fill in with the dynamic library characteristics -m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], -[m4_require([_LT_DECL_EGREP]) -m4_require([_LT_DECL_OBJDUMP]) -m4_require([_LT_DECL_DLLTOOL]) -AC_CACHE_CHECK([how to associate runtime and link libraries], -lt_cv_sharedlib_from_linklib_cmd, -[lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh - # decide which to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd="$ECHO" - ;; -esac -]) -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - -_LT_DECL([], [sharedlib_from_linklib_cmd], [1], - [Command to associate shared and link libraries]) -])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB - - -# _LT_PATH_MANIFEST_TOOL -# ---------------------- -# locate the manifest tool -m4_defun([_LT_PATH_MANIFEST_TOOL], -[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], - [lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&AS_MESSAGE_LOG_FD - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest*]) -if test "x$lt_cv_path_mainfest_tool" != xyes; then - MANIFEST_TOOL=: -fi -_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl -])# _LT_PATH_MANIFEST_TOOL - - -# LT_LIB_M -# -------- -# check for math library -AC_DEFUN([LT_LIB_M], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -LIBM= -case $host in -*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; -*-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") - AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") - ;; -*) - AC_CHECK_LIB(m, cos, LIBM="-lm") - ;; -esac -AC_SUBST([LIBM]) -])# LT_LIB_M - -# Old name: -AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_CHECK_LIBM], []) - - -# _LT_COMPILER_NO_RTTI([TAGNAME]) -# ------------------------------- -m4_defun([_LT_COMPILER_NO_RTTI], -[m4_require([_LT_TAG_COMPILER])dnl - -_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - -if test "$GCC" = yes; then - case $cc_basename in - nvcc*) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; - *) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; - esac - - _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], - lt_cv_prog_compiler_rtti_exceptions, - [-fno-rtti -fno-exceptions], [], - [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -fi -_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], - [Compiler flag to turn off builtin functions]) -])# _LT_COMPILER_NO_RTTI - - -# _LT_CMD_GLOBAL_SYMBOLS -# ---------------------- -m4_defun([_LT_CMD_GLOBAL_SYMBOLS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([LT_PATH_NM])dnl -AC_REQUIRE([LT_PATH_LD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_TAG_COMPILER])dnl - -# Check for command to grab the raw symbol name followed by C symbol from nm. -AC_MSG_CHECKING([command to parse $NM output from $compiler object]) -AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], -[ -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[[BCDEGRST]]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[[BCDT]]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[[ABCDGISTW]]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[[ABCDEGRST]]' - fi - ;; -irix* | nonstopux*) - symcode='[[BCDEGRST]]' - ;; -osf*) - symcode='[[BCDEGQRST]]' - ;; -solaris*) - symcode='[[BDRT]]' - ;; -sco3.2v5*) - symcode='[[DT]]' - ;; -sysv4.2uw2*) - symcode='[[DT]]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[[ABDT]]' - ;; -sysv4) - symcode='[[DFNSTU]]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[[ABCDGIRSTW]]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK ['"\ -" {last_section=section; section=\$ 3};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx]" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if AC_TRY_EVAL(ac_compile); then - # Now try to grab the symbols. - nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT@&t@_DLSYM_CONST -#elif defined(__osf__) -/* This system does not cope well with relocations in const data. */ -# define LT@&t@_DLSYM_CONST -#else -# define LT@&t@_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT@&t@_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[[]] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD - fi - else - echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done -]) -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - AC_MSG_RESULT(failed) -else - AC_MSG_RESULT(ok) -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - -_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], - [Take the output of nm and produce a listing of raw symbols and C names]) -_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], - [Transform the output of nm in a proper C declaration]) -_LT_DECL([global_symbol_to_c_name_address], - [lt_cv_sys_global_symbol_to_c_name_address], [1], - [Transform the output of nm in a C name address pair]) -_LT_DECL([global_symbol_to_c_name_address_lib_prefix], - [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], - [Transform the output of nm in a C name address pair when lib prefix is needed]) -_LT_DECL([], [nm_file_list_spec], [1], - [Specify filename containing input files for $NM]) -]) # _LT_CMD_GLOBAL_SYMBOLS - - -# _LT_COMPILER_PIC([TAGNAME]) -# --------------------------- -m4_defun([_LT_COMPILER_PIC], -[m4_require([_LT_TAG_COMPILER])dnl -_LT_TAGVAR(lt_prog_compiler_wl, $1)= -_LT_TAGVAR(lt_prog_compiler_pic, $1)= -_LT_TAGVAR(lt_prog_compiler_static, $1)= - -m4_if([$1], [CXX], [ - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - case $host_os in - aix[[4-9]]*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - dgux*) - case $cc_basename in - ec++*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - if test "$host_cpu" != ia64; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - fi - ;; - aCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # KAI C++ Compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd* | netbsdelf*-gnu) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - cxx*) - # Digital/Compaq C++ - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - lcc*) - # Lucid - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -], -[ - if test "$GCC" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - hpux9* | hpux10* | hpux11*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC (with -KPIC) is the default. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' - _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' - ;; - nagfor*) - # NAG Fortran compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - ccc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All Alpha code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ F* | *Sun*Fortran*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='' - ;; - *Sun\ C*) - # Sun C 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - ;; - esac - ;; - esac - ;; - - newsos6) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All OSF/1 code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - rdos*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - solaris*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; - *) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; - esac - ;; - - sunos4*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - unicos*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - - uts4*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -]) -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" - ;; -esac - -AC_CACHE_CHECK([for $compiler option to produce PIC], - [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) -_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then - _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], - [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], - [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], - [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in - "" | " "*) ;; - *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; - esac], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) -fi -_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], - [Additional compiler flags for building library objects]) - -_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], - [How to pass a linker flag through the compiler]) -# -# Check to make sure the static flag actually works. -# -wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" -_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], - _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), - $lt_tmp_static_flag, - [], - [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) -_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], - [Compiler flag to prevent dynamic linking]) -])# _LT_COMPILER_PIC - - -# _LT_LINKER_SHLIBS([TAGNAME]) -# ---------------------------- -# See if the linker supports building shared libraries. -m4_defun([_LT_LINKER_SHLIBS], -[AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -m4_if([$1], [CXX], [ - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - case $host_os in - aix[[4-9]]*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global defined - # symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" - ;; - cygwin* | mingw* | cegcc*) - case $cc_basename in - cl*) ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - ;; - esac - ;; - linux* | k*bsd*-gnu | gnu*) - _LT_TAGVAR(link_all_deplibs, $1)=no - ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac -], [ - runpath_var= - _LT_TAGVAR(allow_undefined_flag, $1)= - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(archive_cmds, $1)= - _LT_TAGVAR(archive_expsym_cmds, $1)= - _LT_TAGVAR(compiler_needs_object, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(hardcode_automatic, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= - _LT_TAGVAR(hardcode_libdir_separator, $1)= - _LT_TAGVAR(hardcode_minus_L, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_TAGVAR(inherit_rpath, $1)=no - _LT_TAGVAR(link_all_deplibs, $1)=unknown - _LT_TAGVAR(module_cmds, $1)= - _LT_TAGVAR(module_expsym_cmds, $1)= - _LT_TAGVAR(old_archive_from_new_cmds, $1)= - _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= - _LT_TAGVAR(thread_safe_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - _LT_TAGVAR(include_expsyms, $1)= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. -dnl Note also adjust exclude_expsyms for C++ above. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - linux* | k*bsd*-gnu | gnu*) - _LT_TAGVAR(link_all_deplibs, $1)=no - ;; - esac - - _LT_TAGVAR(ld_shlibs, $1)=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; - *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test "$lt_use_gnu_ld_interface" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[[3-9]]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - _LT_TAGVAR(whole_archive_flag_spec, $1)= - tmp_sharedflag='--shared' ;; - xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' - _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - sunos4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - - if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then - runpath_var= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - _LT_TAGVAR(hardcode_direct, $1)=unsupported - fi - ;; - - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - _LT_TAGVAR(link_all_deplibs, $1)=no - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - bsdi[[45]]*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - # FIXME: Should let the user specify the lib program. - _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - esac - ;; - - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - freebsd1*) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - hpux9*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - fi - ;; - - hpux11*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - m4_if($1, [], [ - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - _LT_LINKER_OPTION([if $CC understands -b], - _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], - [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) - ;; - esac - fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], - [lt_cv_irix_exported_symbol], - [save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - AC_LINK_IFELSE( - [AC_LANG_SOURCE( - [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], - [C++], [[int foo (void) { return 0; }]], - [Fortran 77], [[ - subroutine foo - end]], - [Fortran], [[ - subroutine foo - end]])])], - [lt_cv_irix_exported_symbol=yes], - [lt_cv_irix_exported_symbol=no]) - LDFLAGS="$save_LDFLAGS"]) - if test "$lt_cv_irix_exported_symbol" = yes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - fi - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - newsos6) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - else - case $host_os in - openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - ;; - esac - fi - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - solaris*) - _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - fi - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4) - case $host_vendor in - sni) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' - _LT_TAGVAR(hardcode_direct, $1)=no - ;; - motorola) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4.3*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - _LT_TAGVAR(ld_shlibs, $1)=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' - ;; - esac - fi - fi -]) -AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) -test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld - -_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl -_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl -_LT_DECL([], [extract_expsyms_cmds], [2], - [The commands to extract the exported symbol list from a shared archive]) - -# -# Do we need to explicitly link libc? -# -case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in -x|xyes) - # Assume -lc should be added - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $_LT_TAGVAR(archive_cmds, $1) in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - AC_CACHE_CHECK([whether -lc should be explicitly linked in], - [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), - [$RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if AC_TRY_EVAL(ac_compile) 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) - pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) - _LT_TAGVAR(allow_undefined_flag, $1)= - if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) - then - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no - else - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes - fi - _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - ]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) - ;; - esac - fi - ;; -esac - -_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], - [Whether or not to add -lc for building shared libraries]) -_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], - [enable_shared_with_static_runtimes], [0], - [Whether or not to disallow shared libs when runtime libs are static]) -_LT_TAGDECL([], [export_dynamic_flag_spec], [1], - [Compiler flag to allow reflexive dlopens]) -_LT_TAGDECL([], [whole_archive_flag_spec], [1], - [Compiler flag to generate shared objects directly from archives]) -_LT_TAGDECL([], [compiler_needs_object], [1], - [Whether the compiler copes with passing no objects directly]) -_LT_TAGDECL([], [old_archive_from_new_cmds], [2], - [Create an old-style archive from a shared archive]) -_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], - [Create a temporary old-style archive to link instead of a shared archive]) -_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) -_LT_TAGDECL([], [archive_expsym_cmds], [2]) -_LT_TAGDECL([], [module_cmds], [2], - [Commands used to build a loadable module if different from building - a shared archive.]) -_LT_TAGDECL([], [module_expsym_cmds], [2]) -_LT_TAGDECL([], [with_gnu_ld], [1], - [Whether we are building with GNU ld or not]) -_LT_TAGDECL([], [allow_undefined_flag], [1], - [Flag that allows shared libraries with undefined symbols to be built]) -_LT_TAGDECL([], [no_undefined_flag], [1], - [Flag that enforces no undefined symbols]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], - [Flag to hardcode $libdir into a binary during linking. - This must work even if $libdir does not exist]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], - [[If ld is used when linking, flag to hardcode $libdir into a binary - during linking. This must work even if $libdir does not exist]]) -_LT_TAGDECL([], [hardcode_libdir_separator], [1], - [Whether we need a single "-rpath" flag with a separated argument]) -_LT_TAGDECL([], [hardcode_direct], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary]) -_LT_TAGDECL([], [hardcode_direct_absolute], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary and the resulting library dependency is - "absolute", i.e impossible to change by setting ${shlibpath_var} if the - library is relocated]) -_LT_TAGDECL([], [hardcode_minus_L], [0], - [Set to "yes" if using the -LDIR flag during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_shlibpath_var], [0], - [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_automatic], [0], - [Set to "yes" if building a shared library automatically hardcodes DIR - into the library and all subsequent libraries and executables linked - against it]) -_LT_TAGDECL([], [inherit_rpath], [0], - [Set to yes if linker adds runtime paths of dependent libraries - to runtime path list]) -_LT_TAGDECL([], [link_all_deplibs], [0], - [Whether libtool must link a program against all its dependency libraries]) -_LT_TAGDECL([], [always_export_symbols], [0], - [Set to "yes" if exported symbols are required]) -_LT_TAGDECL([], [export_symbols_cmds], [2], - [The commands to list exported symbols]) -_LT_TAGDECL([], [exclude_expsyms], [1], - [Symbols that should not be listed in the preloaded symbols]) -_LT_TAGDECL([], [include_expsyms], [1], - [Symbols that must always be exported]) -_LT_TAGDECL([], [prelink_cmds], [2], - [Commands necessary for linking programs (against libraries) with templates]) -_LT_TAGDECL([], [postlink_cmds], [2], - [Commands necessary for finishing linking programs]) -_LT_TAGDECL([], [file_list_spec], [1], - [Specify filename containing input files]) -dnl FIXME: Not yet implemented -dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], -dnl [Compiler flag to generate thread safe objects]) -])# _LT_LINKER_SHLIBS - - -# _LT_LANG_C_CONFIG([TAG]) -# ------------------------ -# Ensure that the configuration variables for a C compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_defun([_LT_LANG_C_CONFIG], -[m4_require([_LT_DECL_EGREP])dnl -lt_save_CC="$CC" -AC_LANG_PUSH(C) - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - -_LT_TAG_COMPILER -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - LT_SYS_DLOPEN_SELF - _LT_CMD_STRIPLIB - - # Report which library types will actually be built - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_CONFIG($1) -fi -AC_LANG_POP -CC="$lt_save_CC" -])# _LT_LANG_C_CONFIG - - -# _LT_LANG_CXX_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a C++ compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_defun([_LT_LANG_CXX_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - AC_PROG_CXXCPP -else - _lt_caught_CXX_error=yes -fi - -AC_LANG_PUSH(C++) -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(compiler_needs_object, $1)=no -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_CFLAGS=$CFLAGS - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - else - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - fi - - if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - LT_PATH_LD - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) - _LT_TAGVAR(ld_shlibs, $1)=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - if test "$GXX" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty - # executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared - # libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # g++ - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - freebsd[[12]]*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - freebsd-elf*) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - gnu*) - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - hpux9*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' - fi - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) - _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - ;; - cxx*) - # Compaq C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - openbsd2*) - # C++ shared libraries are fairly broken - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - cxx*) - case $host in - osf3*) - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - ;; - *) - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ - $RM $lib.exp' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - case $host in - osf3*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(archive_cmds_need_lc,$1)=yes - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ - '"$_LT_TAGVAR(old_archive_cmds, $1)" - _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ - '"$_LT_TAGVAR(reload_cmds, $1)" - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) - test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - - _LT_TAGVAR(GCC, $1)="$GXX" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test "$_lt_caught_CXX_error" != yes - -AC_LANG_POP -])# _LT_LANG_CXX_CONFIG - - -# _LT_FUNC_STRIPNAME_CNF -# ---------------------- -# func_stripname_cnf prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# -# This function is identical to the (non-XSI) version of func_stripname, -# except this one can be used by m4 code that may be executed by configure, -# rather than the libtool script. -m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl -AC_REQUIRE([_LT_DECL_SED]) -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) -func_stripname_cnf () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname_cnf -])# _LT_FUNC_STRIPNAME_CNF - -# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) -# --------------------------------- -# Figure out "hidden" library dependencies from verbose -# compiler output when linking a shared library. -# Parse the compiler output and extract the necessary -# objects, libraries and library flags. -m4_defun([_LT_SYS_HIDDEN_LIBDEPS], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl -# Dependencies to place before and after the object being linked: -_LT_TAGVAR(predep_objects, $1)= -_LT_TAGVAR(postdep_objects, $1)= -_LT_TAGVAR(predeps, $1)= -_LT_TAGVAR(postdeps, $1)= -_LT_TAGVAR(compiler_lib_search_path, $1)= - -dnl we can't use the lt_simple_compile_test_code here, -dnl because it contains code intended for an executable, -dnl not a library. It's possible we should let each -dnl tag define a new lt_????_link_test_code variable, -dnl but it's only used here... -m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF -int a; -void foo (void) { a = 0; } -_LT_EOF -], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF -], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer*4 a - a=0 - return - end -_LT_EOF -], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer a - a=0 - return - end -_LT_EOF -], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF -public class foo { - private int a; - public void bar (void) { - a = 0; - } -}; -_LT_EOF -]) - -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -esac - -dnl Parse the compiler output and extract the necessary -dnl objects, libraries and library flags. -if AC_TRY_EVAL(ac_compile); then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case ${prev}${p} in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" || - test $p = "-R"; then - prev=$p - continue - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test "$pre_test_object_deps_done" = no; then - case ${prev} in - -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" - else - _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$_LT_TAGVAR(postdeps, $1)"; then - _LT_TAGVAR(postdeps, $1)="${prev}${p}" - else - _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" - fi - fi - prev= - ;; - - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$_LT_TAGVAR(predep_objects, $1)"; then - _LT_TAGVAR(predep_objects, $1)="$p" - else - _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" - fi - else - if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then - _LT_TAGVAR(postdep_objects, $1)="$p" - else - _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling $1 test program" -fi - -$RM -f confest.$objext -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -m4_if([$1], [CXX], -[case $host_os in -interix[[3-9]]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - _LT_TAGVAR(predep_objects,$1)= - _LT_TAGVAR(postdep_objects,$1)= - _LT_TAGVAR(postdeps,$1)= - ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC* | sunCC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -esac -]) - -case " $_LT_TAGVAR(postdeps, $1) " in -*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; -esac - _LT_TAGVAR(compiler_lib_search_dirs, $1)= -if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then - _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` -fi -_LT_TAGDECL([], [compiler_lib_search_dirs], [1], - [The directories searched by this compiler when creating a shared library]) -_LT_TAGDECL([], [predep_objects], [1], - [Dependencies to place before and after the objects being linked to - create a shared library]) -_LT_TAGDECL([], [postdep_objects], [1]) -_LT_TAGDECL([], [predeps], [1]) -_LT_TAGDECL([], [postdeps], [1]) -_LT_TAGDECL([], [compiler_lib_search_path], [1], - [The library search path used internally by the compiler when linking - a shared library]) -])# _LT_SYS_HIDDEN_LIBDEPS - - -# _LT_LANG_F77_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a Fortran 77 compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_F77_CONFIG], -[AC_LANG_PUSH(Fortran 77) -if test -z "$F77" || test "X$F77" = "Xno"; then - _lt_disable_F77=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for f77 test sources. -ac_ext=f - -# Object file extension for compiled f77 test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the F77 compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_F77" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC="$CC" - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${F77-"f77"} - CFLAGS=$FFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - GCC=$G77 - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$G77" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC="$lt_save_CC" - CFLAGS="$lt_save_CFLAGS" -fi # test "$_lt_disable_F77" != yes - -AC_LANG_POP -])# _LT_LANG_F77_CONFIG - - -# _LT_LANG_FC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for a Fortran compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_FC_CONFIG], -[AC_LANG_PUSH(Fortran) - -if test -z "$FC" || test "X$FC" = "Xno"; then - _lt_disable_FC=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for fc test sources. -ac_ext=${ac_fc_srcext-f} - -# Object file extension for compiled fc test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the FC compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_FC" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC="$CC" - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${FC-"f95"} - CFLAGS=$FCFLAGS - compiler=$CC - GCC=$ac_cv_fc_compiler_gnu - - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS -fi # test "$_lt_disable_FC" != yes - -AC_LANG_POP -])# _LT_LANG_FC_CONFIG - - -# _LT_LANG_GCJ_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Java Compiler compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_GCJ_CONFIG], -[AC_REQUIRE([LT_PROG_GCJ])dnl -AC_LANG_SAVE - -# Source file extension for Java test sources. -ac_ext=java - -# Object file extension for compiled Java test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="class foo {}" - -# Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC=yes -CC=${GCJ-"gcj"} -CFLAGS=$GCJFLAGS -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)="$LD" -_LT_CC_BASENAME([$compiler]) - -# GCJ did not exist at the time GCC didn't implicitly link libc in. -_LT_TAGVAR(archive_cmds_need_lc, $1)=no - -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds - -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) -fi - -AC_LANG_RESTORE - -GCC=$lt_save_GCC -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_GCJ_CONFIG - - -# _LT_LANG_RC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for the Windows resource compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_RC_CONFIG], -[AC_REQUIRE([LT_PROG_RC])dnl -AC_LANG_SAVE - -# Source file extension for RC test sources. -ac_ext=rc - -# Object file extension for compiled RC test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' - -# Code to be used in simple link tests -lt_simple_link_test_code="$lt_simple_compile_test_code" - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC= -CC=${RC-"windres"} -CFLAGS= -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) -_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - -if test -n "$compiler"; then - : - _LT_CONFIG($1) -fi - -GCC=$lt_save_GCC -AC_LANG_RESTORE -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_RC_CONFIG - - -# LT_PROG_GCJ -# ----------- -AC_DEFUN([LT_PROG_GCJ], -[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], - [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], - [AC_CHECK_TOOL(GCJ, gcj,) - test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" - AC_SUBST(GCJFLAGS)])])[]dnl -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_GCJ], []) - - -# LT_PROG_RC -# ---------- -AC_DEFUN([LT_PROG_RC], -[AC_CHECK_TOOL(RC, windres,) -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_RC], []) - - -# _LT_DECL_EGREP -# -------------- -# If we don't have a new enough Autoconf to choose the best grep -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_EGREP], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_REQUIRE([AC_PROG_FGREP])dnl -test -z "$GREP" && GREP=grep -_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) -_LT_DECL([], [EGREP], [1], [An ERE matcher]) -_LT_DECL([], [FGREP], [1], [A literal string matcher]) -dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too -AC_SUBST([GREP]) -]) - - -# _LT_DECL_OBJDUMP -# -------------- -# If we don't have a new enough Autoconf to choose the best objdump -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_OBJDUMP], -[AC_CHECK_TOOL(OBJDUMP, objdump, false) -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) -AC_SUBST([OBJDUMP]) -]) - -# _LT_DECL_DLLTOOL -# ---------------- -# Ensure DLLTOOL variable is set. -m4_defun([_LT_DECL_DLLTOOL], -[AC_CHECK_TOOL(DLLTOOL, dlltool, false) -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) -AC_SUBST([DLLTOOL]) -]) - -# _LT_DECL_SED -# ------------ -# Check for a fully-functional sed program, that truncates -# as few characters as possible. Prefer GNU sed if found. -m4_defun([_LT_DECL_SED], -[AC_PROG_SED -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" -_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) -_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], - [Sed that helps us avoid accidentally triggering echo(1) options like -n]) -])# _LT_DECL_SED - -m4_ifndef([AC_PROG_SED], [ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_SED. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # - -m4_defun([AC_PROG_SED], -[AC_MSG_CHECKING([for a sed that does not truncate output]) -AC_CACHE_VAL(lt_cv_path_SED, -[# Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -IFS=$as_save_IFS -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && continue - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test $lt_ac_count -gt 10 && break - lt_ac_count=`expr $lt_ac_count + 1` - if test $lt_ac_count -gt $lt_ac_max; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -]) -SED=$lt_cv_path_SED -AC_SUBST([SED]) -AC_MSG_RESULT([$SED]) -])#AC_PROG_SED -])#m4_ifndef - -# Old name: -AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_SED], []) - - -# _LT_CHECK_SHELL_FEATURES -# ------------------------ -# Find out whether the shell is Bourne or XSI compatible, -# or has some other useful features. -m4_defun([_LT_CHECK_SHELL_FEATURES], -[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,b/c, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -AC_MSG_RESULT([$xsi_shell]) -_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) - -AC_MSG_CHECKING([whether the shell understands "+="]) -lt_shell_append=no -( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -AC_MSG_RESULT([$lt_shell_append]) -_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi -_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac -_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl -_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl -])# _LT_CHECK_SHELL_FEATURES - - -# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) -# ------------------------------------------------------ -# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and -# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. -m4_defun([_LT_PROG_FUNCTION_REPLACE], -[dnl { -sed -e '/^$1 ()$/,/^} # $1 /c\ -$1 ()\ -{\ -m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) -} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: -]) - - -# _LT_PROG_REPLACE_SHELLFNS -# ------------------------- -# Replace existing portable implementations of several shell functions with -# equivalent extended shell implementations where those features are available.. -m4_defun([_LT_PROG_REPLACE_SHELLFNS], -[if test x"$xsi_shell" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl - func_basename_result="${1##*/}"]) - - _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}"]) - - _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"}]) - - _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl - func_split_long_opt_name=${1%%=*} - func_split_long_opt_arg=${1#*=}]) - - _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl - func_split_short_opt_arg=${1#??} - func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) - - _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) - - _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) - - _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) -fi - -if test x"$lt_shell_append" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) - - _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl - func_quote_for_eval "${2}" -dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ - eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) - - # Save a `func_append' function call where possible by direct use of '+=' - sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -else - # Save a `func_append' function call even when '+=' is not available - sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -fi - -if test x"$_lt_function_replace_fail" = x":"; then - AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) -fi -]) - -# _LT_PATH_CONVERSION_FUNCTIONS -# ----------------------------- -# Determine which file name conversion functions should be used by -# func_to_host_file (and, implicitly, by func_to_host_path). These are needed -# for certain cross-compile configurations and native mingw. -m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_MSG_CHECKING([how to convert $build file names to $host format]) -AC_CACHE_VAL(lt_cv_to_host_file_cmd, -[case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac -]) -to_host_file_cmd=$lt_cv_to_host_file_cmd -AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) -_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], - [0], [convert $build file names to $host format])dnl - -AC_MSG_CHECKING([how to convert $build file names to toolchain format]) -AC_CACHE_VAL(lt_cv_to_tool_file_cmd, -[#assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac -]) -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) -_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], - [0], [convert $build files to toolchain format])dnl -])# _LT_PATH_CONVERSION_FUNCTIONS - -# Helper functions for option handling. -*- Autoconf -*- -# -# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 7 ltoptions.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) - - -# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) -# ------------------------------------------ -m4_define([_LT_MANGLE_OPTION], -[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) - - -# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) -# --------------------------------------- -# Set option OPTION-NAME for macro MACRO-NAME, and if there is a -# matching handler defined, dispatch to it. Other OPTION-NAMEs are -# saved as a flag. -m4_define([_LT_SET_OPTION], -[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl -m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), - _LT_MANGLE_DEFUN([$1], [$2]), - [m4_warning([Unknown $1 option `$2'])])[]dnl -]) - - -# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) -# ------------------------------------------------------------ -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -m4_define([_LT_IF_OPTION], -[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) - - -# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) -# ------------------------------------------------------- -# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME -# are set. -m4_define([_LT_UNLESS_OPTIONS], -[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), - [m4_define([$0_found])])])[]dnl -m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 -])[]dnl -]) - - -# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) -# ---------------------------------------- -# OPTION-LIST is a space-separated list of Libtool options associated -# with MACRO-NAME. If any OPTION has a matching handler declared with -# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about -# the unknown option and exit. -m4_defun([_LT_SET_OPTIONS], -[# Set options -m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [_LT_SET_OPTION([$1], _LT_Option)]) - -m4_if([$1],[LT_INIT],[ - dnl - dnl Simply set some default values (i.e off) if boolean options were not - dnl specified: - _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no - ]) - _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no - ]) - dnl - dnl If no reference was made to various pairs of opposing options, then - dnl we run the default mode handler for the pair. For example, if neither - dnl `shared' nor `disable-shared' was passed, we enable building of shared - dnl archives by default: - _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) - _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], - [_LT_ENABLE_FAST_INSTALL]) - ]) -])# _LT_SET_OPTIONS - - - -# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) -# ----------------------------------------- -m4_define([_LT_MANGLE_DEFUN], -[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) - - -# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) -# ----------------------------------------------- -m4_define([LT_OPTION_DEFINE], -[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl -])# LT_OPTION_DEFINE - - -# dlopen -# ------ -LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes -]) - -AU_DEFUN([AC_LIBTOOL_DLOPEN], -[_LT_SET_OPTION([LT_INIT], [dlopen]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `dlopen' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) - - -# win32-dll -# --------- -# Declare package support for building win32 dll's. -LT_OPTION_DEFINE([LT_INIT], [win32-dll], -[enable_win32_dll=yes - -case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; -esac - -test -z "$AS" && AS=as -_LT_DECL([], [AS], [1], [Assembler program])dnl - -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl - -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl -])# win32-dll - -AU_DEFUN([AC_LIBTOOL_WIN32_DLL], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -_LT_SET_OPTION([LT_INIT], [win32-dll]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `win32-dll' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) - - -# _LT_ENABLE_SHARED([DEFAULT]) -# ---------------------------- -# implement the --enable-shared flag, and supports the `shared' and -# `disable-shared' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_SHARED], -[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([shared], - [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], - [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) - - _LT_DECL([build_libtool_libs], [enable_shared], [0], - [Whether or not to build shared libraries]) -])# _LT_ENABLE_SHARED - -LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) -]) - -AC_DEFUN([AC_DISABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], [disable-shared]) -]) - -AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_SHARED], []) -dnl AC_DEFUN([AM_DISABLE_SHARED], []) - - - -# _LT_ENABLE_STATIC([DEFAULT]) -# ---------------------------- -# implement the --enable-static flag, and support the `static' and -# `disable-static' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_STATIC], -[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([static], - [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], - [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_static=]_LT_ENABLE_STATIC_DEFAULT) - - _LT_DECL([build_old_libs], [enable_static], [0], - [Whether or not to build static libraries]) -])# _LT_ENABLE_STATIC - -LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) -]) - -AC_DEFUN([AC_DISABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], [disable-static]) -]) - -AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_STATIC], []) -dnl AC_DEFUN([AM_DISABLE_STATIC], []) - - - -# _LT_ENABLE_FAST_INSTALL([DEFAULT]) -# ---------------------------------- -# implement the --enable-fast-install flag, and support the `fast-install' -# and `disable-fast-install' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_FAST_INSTALL], -[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([fast-install], - [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], - [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) - -_LT_DECL([fast_install], [enable_fast_install], [0], - [Whether or not to optimize for fast installation])dnl -])# _LT_ENABLE_FAST_INSTALL - -LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) - -# Old names: -AU_DEFUN([AC_ENABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `fast-install' option into LT_INIT's first parameter.]) -]) - -AU_DEFUN([AC_DISABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `disable-fast-install' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) -dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) - - -# _LT_WITH_PIC([MODE]) -# -------------------- -# implement the --with-pic flag, and support the `pic-only' and `no-pic' -# LT_INIT options. -# MODE is either `yes' or `no'. If omitted, it defaults to `both'. -m4_define([_LT_WITH_PIC], -[AC_ARG_WITH([pic], - [AS_HELP_STRING([--with-pic], - [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [pic_mode="$withval"], - [pic_mode=default]) - -test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) - -_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl -])# _LT_WITH_PIC - -LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) - -# Old name: -AU_DEFUN([AC_LIBTOOL_PICMODE], -[_LT_SET_OPTION([LT_INIT], [pic-only]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `pic-only' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) - - -m4_define([_LTDL_MODE], []) -LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], - [m4_define([_LTDL_MODE], [nonrecursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [recursive], - [m4_define([_LTDL_MODE], [recursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [subproject], - [m4_define([_LTDL_MODE], [subproject])]) - -m4_define([_LTDL_TYPE], []) -LT_OPTION_DEFINE([LTDL_INIT], [installable], - [m4_define([_LTDL_TYPE], [installable])]) -LT_OPTION_DEFINE([LTDL_INIT], [convenience], - [m4_define([_LTDL_TYPE], [convenience])]) - -# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 6 ltsugar.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) - - -# lt_join(SEP, ARG1, [ARG2...]) -# ----------------------------- -# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their -# associated separator. -# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier -# versions in m4sugar had bugs. -m4_define([lt_join], -[m4_if([$#], [1], [], - [$#], [2], [[$2]], - [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) -m4_define([_lt_join], -[m4_if([$#$2], [2], [], - [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) - - -# lt_car(LIST) -# lt_cdr(LIST) -# ------------ -# Manipulate m4 lists. -# These macros are necessary as long as will still need to support -# Autoconf-2.59 which quotes differently. -m4_define([lt_car], [[$1]]) -m4_define([lt_cdr], -[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], - [$#], 1, [], - [m4_dquote(m4_shift($@))])]) -m4_define([lt_unquote], $1) - - -# lt_append(MACRO-NAME, STRING, [SEPARATOR]) -# ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. -# Note that neither SEPARATOR nor STRING are expanded; they are appended -# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). -# No SEPARATOR is output if MACRO-NAME was previously undefined (different -# than defined and empty). -# -# This macro is needed until we can rely on Autoconf 2.62, since earlier -# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. -m4_define([lt_append], -[m4_define([$1], - m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) - - - -# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) -# ---------------------------------------------------------- -# Produce a SEP delimited list of all paired combinations of elements of -# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list -# has the form PREFIXmINFIXSUFFIXn. -# Needed until we can rely on m4_combine added in Autoconf 2.62. -m4_define([lt_combine], -[m4_if(m4_eval([$# > 3]), [1], - [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl -[[m4_foreach([_Lt_prefix], [$2], - [m4_foreach([_Lt_suffix], - ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, - [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) - - -# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) -# ----------------------------------------------------------------------- -# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited -# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. -m4_define([lt_if_append_uniq], -[m4_ifdef([$1], - [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], - [lt_append([$1], [$2], [$3])$4], - [$5])], - [lt_append([$1], [$2], [$3])$4])]) - - -# lt_dict_add(DICT, KEY, VALUE) -# ----------------------------- -m4_define([lt_dict_add], -[m4_define([$1($2)], [$3])]) - - -# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) -# -------------------------------------------- -m4_define([lt_dict_add_subkey], -[m4_define([$1($2:$3)], [$4])]) - - -# lt_dict_fetch(DICT, KEY, [SUBKEY]) -# ---------------------------------- -m4_define([lt_dict_fetch], -[m4_ifval([$3], - m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), - m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) - - -# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) -# ----------------------------------------------------------------- -m4_define([lt_if_dict_fetch], -[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], - [$5], - [$6])]) - - -# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) -# -------------------------------------------------------------- -m4_define([lt_dict_filter], -[m4_if([$5], [], [], - [lt_join(m4_quote(m4_default([$4], [[, ]])), - lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), - [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl -]) - -# ltversion.m4 -- version numbers -*- Autoconf -*- -# -# Copyright (C) 2004 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# @configure_input@ - -# serial 3293 ltversion.m4 -# This file is part of GNU Libtool - -m4_define([LT_PACKAGE_VERSION], [2.4]) -m4_define([LT_PACKAGE_REVISION], [1.3293]) - -AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.4' -macro_revision='1.3293' -_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) -_LT_DECL(, macro_revision, 0) -]) - -# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004. -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 5 lt~obsolete.m4 - -# These exist entirely to fool aclocal when bootstrapping libtool. -# -# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) -# which have later been changed to m4_define as they aren't part of the -# exported API, or moved to Autoconf or Automake where they belong. -# -# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN -# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us -# using a macro with the same name in our local m4/libtool.m4 it'll -# pull the old libtool.m4 in (it doesn't see our shiny new m4_define -# and doesn't know about Autoconf macros at all.) -# -# So we provide this file, which has a silly filename so it's always -# included after everything else. This provides aclocal with the -# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything -# because those macros already exist, or will be overwritten later. -# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. -# -# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. -# Yes, that means every name once taken will need to remain here until -# we give up compatibility with versions before 1.7, at which point -# we need to keep only those names which we still refer to. - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) - -m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) -m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) -m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) -m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) -m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) -m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) -m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) -m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) -m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) -m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) -m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) -m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) -m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) -m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) -m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) -m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) -m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) -m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) -m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) -m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) -m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) -m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) -m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) -m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) -m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) -m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) -m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) -m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) -m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) -m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) -m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) -m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) -m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) -m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) -m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) -m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) -m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) -m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) -m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) -m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) -m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) -m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) -m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) -m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) -m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) -m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) -m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) -m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) -m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) -m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) -m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) - diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/Makefile b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/Makefile deleted file mode 100644 index c6d1261..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/Makefile +++ /dev/null @@ -1,336 +0,0 @@ -# -# Makefile for AmigaOS -# - -.PHONY: help all check clean package -.PHONY: clib2 newlib library so - -vpath %.c ../lib ../examples ../xmlwf ../tests ../tests/benchmark -vpath %.h ../lib ../tests - -############################################################################# - -help: - @echo "Requires:" - @echo " AmigaOS 4.x" - @echo " SDK 53.13" - @echo "" - @echo "Targets:" - @echo " all - make libraries, xmlwf, examples and runs tests" - @echo " install - install expat libraries and tools into SDK" - @echo " clean - clean object files" - @echo " check - run all the tests" - @echo " package - prepare distribution archive" - -all: clib2 newlib library so check - -clib2: clib2/libexpat.a clib2/xmlwf clib2/elements clib2/outline clib2/runtests clib2/benchmark - -newlib: newlib/libexpat.a newlib/xmlwf newlib/elements newlib/outline newlib/runtests newlib/benchmark - -library: libs/expat.library libs/xmlwf libs/elements libs/outline libs/runtests libs/benchmark - -so: so/libexpat.so so/xmlwf so/elements so/outline so/runtests so/benchmark - -check: clib2/runtests newlib/runtests libs/runtests so/runtests - clib2/runtests - newlib/runtests - libs/runtests - so/runtests - -clean: - -delete clib2/#?.o quiet - -delete newlib/#?.o quiet - -delete libs/#?.o quiet - -delete so/#?.o quiet - -package: - $(MAKE) all - -delete T:expat all force quiet - makedir all T:expat/Workbench/Libs - copy clone libs/expat.library T:expat/Workbench/Libs - makedir all T:expat/Workbench/SObjs - copy clone so/libexpat.so T:expat/Workbench/SObjs - makedir all T:expat/SDK/Local/C - copy clone libs/xmlwf T:expat/SDK/Local/C - makedir all T:expat/SDK/Local/clib2/lib - copy clone clib2/libexpat.a T:expat/SDK/Local/clib2/lib - makedir all T:expat/SDK/Local/newlib/lib - copy clone newlib/libexpat.a T:expat/SDK/Local/newlib/lib - makedir all T:expat/SDK/Local/common/include - copy clone /lib/expat.h /lib/expat_external.h T:expat/SDK/Local/common/include - makedir all T:expat/SDK/Include/include_h/inline4 - copy clone include/inline4/expat.h T:expat/SDK/Include/include_h/inline4 - makedir all T:expat/SDK/Include/include_h/interfaces - copy clone include/interfaces/expat.h T:expat/SDK/Include/include_h/interfaces - makedir all T:expat/SDK/Include/include_h/libraries - copy clone include/libraries/expat.h T:expat/SDK/Include/include_h/libraries - makedir all T:expat/SDK/Include/include_h/proto - copy clone include/proto/expat.h T:expat/SDK/Include/include_h/proto - makedir all T:expat/SDK/Documentation/Libs/Expat - copy clone /COPYING T:expat/SDK/Documentation/Libs/Expat - copy clone /README T:expat/SDK/Documentation/Libs/Expat - copy clone README.txt T:expat/SDK/Documentation/Libs/Expat/README.AmigaOS - -delete expat.lha - lha -r a expat.lha T:expat - -############################################################################# - -CC := gcc -LIBTOOL := ar -STRIP := strip - -CFLAGS := -DNDEBUG -O3 -LTFLAGS := -crs -STRIPFLAGS := -R.comment - -############################################################################# - -clib2/libexpat.a: clib2/xmlparse.o clib2/xmltok.o clib2/xmlrole.o - $(LIBTOOL) $(LTFLAGS) $@ $^ - protect $@ -e - -clib2/xmlparse.o: xmlparse.c expat.h xmlrole.h xmltok.h \ - expat_external.h internal.h amigaconfig.h - -clib2/xmlrole.o: xmlrole.c ascii.h xmlrole.h expat_external.h \ - internal.h amigaconfig.h - -clib2/xmltok.o: xmltok.c xmltok_impl.c xmltok_ns.c ascii.h asciitab.h \ - iasciitab.h latin1tab.h nametab.h utf8tab.h xmltok.h xmltok_impl.h \ - expat_external.h internal.h amigaconfig.h - -############################################################################# - -clib2/xmlwf: clib2/xmlwf.o clib2/xmlfile.o clib2/codepage.o clib2/readfilemap.o - $(CC) -mcrt=clib2 $^ -o $@ clib2/libexpat.a - $(STRIP) $(STRIPFLAGS) $@ - -clib2/xmlwf.o: xmlwf.c - -clib2/xmlfile.o: xmlfile.c - -clib2/codepage.o: codepage.c - -clib2/readfilemap.o: readfilemap.c - -############################################################################# - -clib2/elements: clib2/elements.o - $(CC) -mcrt=clib2 $^ -o $@ clib2/libexpat.a - $(STRIP) $(STRIPFLAGS) $@ - -clib2/elements.o: elements.c - -############################################################################# - -clib2/outline: clib2/outline.o - $(CC) -mcrt=clib2 $^ -o $@ clib2/libexpat.a - $(STRIP) $(STRIPFLAGS) $@ - -clib2/outline.o: outline.c - -############################################################################# - -clib2/runtests: clib2/runtests.o clib2/chardata.o clib2/minicheck.o - $(CC) -mcrt=clib2 $^ -o $@ clib2/libexpat.a - -clib2/chardata.o: chardata.c chardata.h - -clib2/minicheck.o: minicheck.c minicheck.h - -clib2/runtests.o: runtests.c chardata.h - -############################################################################# - -clib2/benchmark: clib2/benchmark.o - $(CC) -mcrt=clib2 $^ -o $@ clib2/libexpat.a -lm - -clib2/benchmark.o: benchmark.c - -############################################################################# - -newlib/libexpat.a: newlib/xmlparse.o newlib/xmltok.o newlib/xmlrole.o - $(LIBTOOL) $(LTFLAGS) $@ $^ - protect $@ -e - -newlib/xmlparse.o: xmlparse.c expat.h xmlrole.h xmltok.h \ - expat_external.h internal.h amigaconfig.h - -newlib/xmlrole.o: xmlrole.c ascii.h xmlrole.h expat_external.h \ - internal.h amigaconfig.h - -newlib/xmltok.o: xmltok.c xmltok_impl.c xmltok_ns.c ascii.h asciitab.h \ - iasciitab.h latin1tab.h nametab.h utf8tab.h xmltok.h xmltok_impl.h \ - expat_external.h internal.h amigaconfig.h - -############################################################################# - -newlib/xmlwf: newlib/xmlwf.o newlib/xmlfile.o newlib/codepage.o newlib/readfilemap.o - $(CC) -mcrt=newlib $^ -o $@ newlib/libexpat.a - $(STRIP) $(STRIPFLAGS) $@ - -newlib/xmlwf.o: xmlwf.c - -newlib/xmlfile.o: xmlfile.c - -newlib/codepage.o: codepage.c - -newlib/readfilemap.o: readfilemap.c - -############################################################################# - -newlib/elements: newlib/elements.o - $(CC) -mcrt=newlib $^ -o $@ newlib/libexpat.a - $(STRIP) $(STRIPFLAGS) $@ - -newlib/elements.o: elements.c - -############################################################################# - -newlib/outline: newlib/outline.o - $(CC) -mcrt=newlib $^ -o $@ newlib/libexpat.a - $(STRIP) $(STRIPFLAGS) $@ - -newlib/outline.o: outline.c - -############################################################################# - -newlib/runtests: newlib/runtests.o newlib/chardata.o newlib/minicheck.o - $(CC) -mcrt=newlib $^ -o $@ newlib/libexpat.a - -newlib/chardata.o: chardata.c chardata.h - -newlib/minicheck.o: minicheck.c minicheck.h - -newlib/runtests.o: runtests.c chardata.h - -############################################################################# - -newlib/benchmark: newlib/benchmark.o - $(CC) -mcrt=newlib $^ -o $@ newlib/libexpat.a - -newlib/benchmark.o: benchmark.c - -############################################################################# - -libs/expat.library: libs/expat_lib.o libs/expat_68k.o libs/expat_68k_handler_stubs.o libs/expat_vectors.o newlib/libexpat.a - $(CC) -mcrt=newlib -nostartfiles $^ -o $@ newlib/libexpat.a -Wl,--cref,-M,-Map=$@.map - protect $@ -e - $(STRIP) $(STRIPFLAGS) $@ - -libs/expat_lib.o: expat_lib.c expat_base.h - -libs/expat_68k.o: expat_68k.c expat_68k.h expat_base.h - -libs/expat_68k_handler_stubs.o: expat_68k_handler_stubs.c expat_68k.h - -libs/expat_vectors.o: expat_vectors.c - -libs/launch.o: launch.c - -############################################################################# - -libs/xmlwf: libs/xmlwf.o libs/xmlfile.o libs/codepage.o libs/readfilemap.o libs/launch.o - $(CC) -mcrt=newlib $^ -o $@ - $(STRIP) $(STRIPFLAGS) $@ - -libs/xmlwf.o: xmlwf.c - -libs/xmlfile.o: xmlfile.c - -libs/codepage.o: codepage.c - -libs/readfilemap.o: readfilemap.c - -############################################################################# - -libs/elements: libs/elements.o libs/launch.o - $(CC) -mcrt=newlib $^ -o $@ - $(STRIP) $(STRIPFLAGS) $@ - -libs/elements.o: elements.c - -############################################################################# - -libs/outline: libs/outline.o libs/launch.o - $(CC) -mcrt=newlib $^ -o $@ - $(STRIP) $(STRIPFLAGS) $@ - -libs/outline.o: outline.c - -############################################################################# - -libs/runtests: libs/runtests.o libs/chardata.o libs/minicheck.o libs/launch.o - $(CC) -mcrt=newlib $^ -o $@ - -libs/chardata.o: chardata.c chardata.h - -libs/minicheck.o: minicheck.c minicheck.h - -libs/runtests.o: runtests.c chardata.h - -############################################################################# - -libs/benchmark: libs/benchmark.o libs/launch.o - $(CC) -mcrt=newlib $^ -o $@ - -libs/benchmark.o: benchmark.c - -############################################################################# - -so/libexpat.so: so/xmlparse.o so/xmltok.o so/xmlrole.o - $(CC) -mcrt=newlib -shared -o $@ $^ - protect $@ -e - -so/xmlparse.o: xmlparse.c expat.h xmlrole.h xmltok.h \ - expat_external.h internal.h amigaconfig.h - -so/xmlrole.o: xmlrole.c ascii.h xmlrole.h expat_external.h \ - internal.h amigaconfig.h - -so/xmltok.o: xmltok.c xmltok_impl.c xmltok_ns.c ascii.h asciitab.h \ - iasciitab.h latin1tab.h nametab.h utf8tab.h xmltok.h xmltok_impl.h \ - expat_external.h internal.h amigaconfig.h - -############################################################################# - -so/xmlwf: newlib/xmlwf.o newlib/xmlfile.o newlib/codepage.o newlib/readfilemap.o - $(CC) -mcrt=newlib -use-dynld $^ -o $@ -Lso -lexpat - $(STRIP) $(STRIPFLAGS) $@ - -############################################################################# - -so/elements: newlib/elements.o - $(CC) -mcrt=newlib -use-dynld $^ -o $@ -Lso -lexpat - $(STRIP) $(STRIPFLAGS) $@ - -############################################################################# - -so/outline: newlib/outline.o - $(CC) -mcrt=newlib -use-dynld $^ -o $@ -Lso -lexpat - $(STRIP) $(STRIPFLAGS) $@ - -############################################################################# - -so/runtests: newlib/runtests.o newlib/chardata.o newlib/minicheck.o - $(CC) -mcrt=newlib -use-dynld $^ -o $@ -Lso -lexpat - -############################################################################# - -so/benchmark: newlib/benchmark.o - $(CC) -mcrt=newlib -use-dynld $^ -o $@ -Lso -lexpat - -############################################################################# - -clib2/%.o: %.c - $(CC) -mcrt=clib2 $(CFLAGS) -I../lib -c $< -o $@ - -newlib/%.o: %.c - $(CC) -mcrt=newlib $(CFLAGS) -I../lib -c $< -o $@ - -libs/%.o: %.c - $(CC) -mcrt=newlib $(CFLAGS) -D__USE_INLINE__ -I. -Iinclude -Iinclude/libraries -I../lib -c $< -o $@ - -so/%.o: %.c - $(CC) -mcrt=newlib $(CFLAGS) -fPIC -I../lib -c $< -o $@ diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/README.txt b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/README.txt deleted file mode 100644 index 3ba9267..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/README.txt +++ /dev/null @@ -1,98 +0,0 @@ -SUMMARY -======= -This is a port of expat for AmigaOS 4.x which includes the -SDK, some XML tools and the libraries. - -Four library flavours are supported: -1. static clib2 (libexpat.a) -2. static newlib (libexpat.a) -3. AmigaOS library (expat.library) -4. AmigaOS shared object library (libexpat.so) - -The AmigaOS library version is based on the work of Fredrik Wikstrom. - - -BUILDING -======== -To build all the library flavours, all the tools, examples and run the -test suite, simply type 'make all' in the amiga subdirectory. - - -INSTALLATION -============ -To install expat into the standard AmigaOS SDK type 'make install' -in the amiga subdirectory. - - -CONFIGURATION -============= -You may want to edit the lib/amigaconfig.h file to remove -DTD and/or XML namespace support if they are not required by your -specific application for a smaller and faster implementation. - - -SOURCE CODE -=========== -The source code is actively maintained and merged with the official -Expat repository available at http://expat.sourceforge.net/ - - -HISTORY -======= -53.1 - bumped version to match AmigaOS streaming - - modified to remove all global variables (except INewLib) - - removed replacements for malloc(), etc. which are now - handled by the respective C library - - compiled with the latest binutils which bumps the - AMIGAOS_DYNVERSION to 2 for the libexpat.so target - - now strips the expat.library binary - -5.2 - fixed XML_Parse 68k stub which enables xmlviewer to work - without crashing - - added some new functions to the 68k jump table available - in the latest expat.library for AmigaOS 3.x - - patches provided by Fredrik Wikstrom - -5.1 - fixed package archive which was missing libexpat.so - - fixed library protection bits - - fixed up copyright notices - -5.0 - integrated 68k patches from Fredrik Wikstrom which means - expat.library is now callable from 68k code - - bumped version for the addition of the 68k interface so - executables can explicitly ask for version 5 and know - it includes the 68k interface - - refactored Makefile to avoid recursive make calls and - build all the library flavours - - added static newlib version - - added shared objects version - - added package target to Makefile - - compiled with SDK 53.13 (GCC 4.2.4) at -O3 - -4.2 - updated to correspond to Expat 2.0.1 release - - bumped copyright banners and versions - - simplified amigaconfig.h - - updated include/libraries/expat.h file - - modified launch.c to use contructor/deconstructor - - removed need for amiga_main() from expat utilities - -4.1 - fixed memory freeing bug in shared library version - - now allocates shared memory - -4.0 - updated for corresponding Expat 2.0 release - - some minor CVS related changes - -3.1 - removed obsolete sfd file - - added library description xml file - - refactored Makefile - - removed extraneous VARARGS68K keywords - - reworked default memory handling functions in shared lib - - updated amigaconfig.h - -3.0 - initial release - - based on expat 1.95.8 - - -TO DO -===== -- wide character support (UTF-16) diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/expat.xml b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/expat.xml deleted file mode 100644 index d6aeae2..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/expat.xml +++ /dev/null @@ -1,264 +0,0 @@ - - - - - libraries/expat.h - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/expat_68k.c b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/expat_68k.c deleted file mode 100644 index aa4c6e2..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/expat_68k.c +++ /dev/null @@ -1,939 +0,0 @@ -/* -** Copyright (c) 2001-2009 Expat maintainers. -** -** 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: -** -** The above copyright notice and this permission notice shall be included -** in all copies or substantial portions of the Software. -** -** 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. -*/ - -/* -** Note: This file was originally automatically generated by fdtrans. -*/ - -#ifdef __USE_INLINE__ -#undef __USE_INLINE__ -#endif - -#include -#include -#include -#include -#include -#include "expat_68k.h" -#include "expat_base.h" - - -STATIC ULONG stub_OpenPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct LibraryManagerInterface *Self = (struct LibraryManagerInterface *) ExtLib->ILibrary; - - return (ULONG) Self->Open(0); -} -struct EmuTrap stub_Open = { TRAPINST, TRAPTYPE, stub_OpenPPC }; - -STATIC ULONG stub_ClosePPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct LibraryManagerInterface *Self = (struct LibraryManagerInterface *) ExtLib->ILibrary; - - return (ULONG) Self->Close(); -} -struct EmuTrap stub_Close = { TRAPINST, TRAPTYPE, stub_ClosePPC }; - -STATIC ULONG stub_ExpungePPC(ULONG *regarray) -{ - return 0UL; -} -struct EmuTrap stub_Expunge = { TRAPINST, TRAPTYPE, stub_ExpungePPC }; - -STATIC ULONG stub_ReservedPPC(ULONG *regarray) -{ - return 0UL; -} -struct EmuTrap stub_Reserved = { TRAPINST, TRAPTYPE, stub_ReservedPPC }; - -static M68kXML_Parser stub_XML_ParserCreatePPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - struct ExecIFace *IExec = ((struct ExpatBase *)Self->Data.LibBase)->IExec; - - M68kXML_Parser p; - p = IExec->AllocVec(sizeof(*p), MEMF_SHARED|MEMF_CLEAR); - if (p) { - p->p = Self->XML_ParserCreate((const XML_Char *)regarray[8]); - if (p->p) { - p->IExec = IExec; - Self->XML_SetUserData(p->p, p); - return p; - } - IExec->FreeVec(p); - } - return NULL; -} -struct EmuTrap stub_XML_ParserCreate = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_ParserCreatePPC }; - -static M68kXML_Parser stub_XML_ParserCreateNSPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - struct ExecIFace *IExec = ((struct ExpatBase *)Self->Data.LibBase)->IExec; - - M68kXML_Parser p; - p = IExec->AllocVec(sizeof(*p), MEMF_SHARED|MEMF_CLEAR); - if (p) { - p->p = Self->XML_ParserCreateNS((const XML_Char *)regarray[8], (XML_Char)regarray[0]); - if (p->p) { - p->IExec = IExec; - Self->XML_SetUserData(p->p, p); - return p; - } - IExec->FreeVec(p); - } - return NULL; -} -struct EmuTrap stub_XML_ParserCreateNS = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_ParserCreateNSPPC }; - -static M68kXML_Parser stub_XML_ParserCreate_MMPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - struct ExecIFace *IExec = ((struct ExpatBase *)Self->Data.LibBase)->IExec; - - M68kXML_Parser p; - p = IExec->AllocVec(sizeof(*p), MEMF_SHARED|MEMF_CLEAR); - if (p) { - p->p = Self->XML_ParserCreate_MM((const XML_Char *)regarray[8], - (const XML_Memory_Handling_Suite *)regarray[9], - (const XML_Char *)regarray[10]); - if (p->p) { - p->IExec = IExec; - Self->XML_SetUserData(p->p, p); - return p; - } - IExec->FreeVec(p); - } - return NULL; -} -struct EmuTrap stub_XML_ParserCreate_MM = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_ParserCreate_MMPPC }; - -static M68kXML_Parser stub_XML_ExternalEntityParserCreatePPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - struct ExecIFace *IExec = ((struct ExpatBase *)Self->Data.LibBase)->IExec; - - M68kXML_Parser p; - p = IExec->AllocVec(sizeof(*p), MEMF_SHARED|MEMF_CLEAR); - if (p) { - p->p = Self->XML_ExternalEntityParserCreate((XML_Parser)regarray[8], - (const XML_Char *)regarray[9], (const XML_Char *)regarray[10]); - if (p->p) { - p->IExec = IExec; - Self->XML_SetUserData(p->p, p); - return p; - } - IExec->FreeVec(p); - } - return NULL; -} -struct EmuTrap stub_XML_ExternalEntityParserCreate = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_ExternalEntityParserCreatePPC }; - -static void stub_XML_ParserFreePPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - struct ExecIFace *IExec = ((struct ExpatBase *)Self->Data.LibBase)->IExec; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - if (p) { - Self->XML_ParserFree(p->p); - IExec->FreeVec(p); - } -} -struct EmuTrap stub_XML_ParserFree = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_ParserFreePPC }; - -static int stub_XML_ParsePPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - Self->XML_SetUserData(p->p, p); - return Self->XML_Parse(p->p, (const char *)regarray[9], (int)regarray[0], (int)regarray[1]); -} -struct EmuTrap stub_XML_Parse = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_ParsePPC }; - -static int stub_XML_ParseBufferPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - return Self->XML_ParseBuffer(p->p, (int)regarray[0], (int)regarray[1]); -} -struct EmuTrap stub_XML_ParseBuffer = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_ParseBufferPPC }; - -static void * stub_XML_GetBufferPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - return Self->XML_GetBuffer(p->p, (int)regarray[0]); -} -struct EmuTrap stub_XML_GetBuffer = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_GetBufferPPC }; - -static void stub_XML_SetStartElementHandlerPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - p->startelementhandler = (void *)regarray[9]; - Self->XML_SetStartElementHandler(p->p, _68k_startelementhandler); -} -struct EmuTrap stub_XML_SetStartElementHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetStartElementHandlerPPC }; - -static void stub_XML_SetEndElementHandlerPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - p->endelementhandler = (void *)regarray[9]; - Self->XML_SetEndElementHandler(p->p, _68k_endelementhandler); -} -struct EmuTrap stub_XML_SetEndElementHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetEndElementHandlerPPC }; - -static void stub_XML_SetElementHandlerPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - p->startelementhandler = (void *)regarray[9]; - p->endelementhandler = (void *)regarray[10]; - Self->XML_SetElementHandler(p->p, _68k_startelementhandler, _68k_endelementhandler); -} -struct EmuTrap stub_XML_SetElementHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetElementHandlerPPC }; - -static void stub_XML_SetCharacterDataHandlerPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - p->chardatahandler = (void *)regarray[9]; - Self->XML_SetCharacterDataHandler(p->p, _68k_chardatahandler); -} -struct EmuTrap stub_XML_SetCharacterDataHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetCharacterDataHandlerPPC }; - -static void stub_XML_SetProcessingInstructionHandlerPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - p->procinsthandler = (void *)regarray[9]; - Self->XML_SetProcessingInstructionHandler(p->p, _68k_procinsthandler); -} -struct EmuTrap stub_XML_SetProcessingInstructionHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetProcessingInstructionHandlerPPC }; - -static void stub_XML_SetCommentHandlerPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - p->commenthandler = (void *)regarray[9]; - Self->XML_SetCommentHandler(p->p, _68k_commenthandler); -} -struct EmuTrap stub_XML_SetCommentHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetCommentHandlerPPC }; - -static void stub_XML_SetStartCdataSectionHandlerPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - p->startcdatahandler = (void *)regarray[9]; - Self->XML_SetStartCdataSectionHandler(p->p, _68k_startcdatahandler); -} -struct EmuTrap stub_XML_SetStartCdataSectionHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetStartCdataSectionHandlerPPC }; - -static void stub_XML_SetEndCdataSectionHandlerPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - p->endcdatahandler = (void *)regarray[9]; - Self->XML_SetEndCdataSectionHandler(p->p, _68k_endcdatahandler); -} -struct EmuTrap stub_XML_SetEndCdataSectionHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetEndCdataSectionHandlerPPC }; - -static void stub_XML_SetCdataSectionHandlerPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - p->startcdatahandler = (void *)regarray[9]; - p->endcdatahandler = (void *)regarray[10]; - Self->XML_SetCdataSectionHandler(p->p, _68k_startcdatahandler, _68k_endcdatahandler); -} -struct EmuTrap stub_XML_SetCdataSectionHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetCdataSectionHandlerPPC }; - -static void stub_XML_SetDefaultHandlerPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - p->defaulthandler = (void *)regarray[9]; - Self->XML_SetDefaultHandler(p->p, _68k_defaulthandler); -} -struct EmuTrap stub_XML_SetDefaultHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetDefaultHandlerPPC }; - -static void stub_XML_SetDefaultHandlerExpandPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - p->defaulthandlerexp = (void *)regarray[9]; - Self->XML_SetDefaultHandlerExpand(p->p, _68k_defaulthandlerexp); -} -struct EmuTrap stub_XML_SetDefaultHandlerExpand = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetDefaultHandlerExpandPPC }; - -static void stub_XML_SetExternalEntityRefHandlerPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - p->extentrefhandler = (void *)regarray[9]; - Self->XML_SetExternalEntityRefHandler(p->p, _68k_extentrefhandler); -} -struct EmuTrap stub_XML_SetExternalEntityRefHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetExternalEntityRefHandlerPPC }; - -static void stub_XML_SetExternalEntityRefHandlerArgPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - p->extenthandlerarg = (void *)regarray[9]; -} -struct EmuTrap stub_XML_SetExternalEntityRefHandlerArg = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetExternalEntityRefHandlerArgPPC }; - -static void stub_XML_SetUnknownEncodingHandlerPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - p->unknownenchandler = (void *)regarray[9]; - p->enchandlerarg = (void *)regarray[10]; - Self->XML_SetUnknownEncodingHandler(p->p, _68k_unknownenchandler, p); -} -struct EmuTrap stub_XML_SetUnknownEncodingHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetUnknownEncodingHandlerPPC }; - -static void stub_XML_SetStartNamespaceDeclHandlerPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - p->startnamespacehandler = (void *)regarray[9]; - Self->XML_SetStartNamespaceDeclHandler(p->p, _68k_startnamespacehandler); -} -struct EmuTrap stub_XML_SetStartNamespaceDeclHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetStartNamespaceDeclHandlerPPC }; - -static void stub_XML_SetEndNamespaceDeclHandlerPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - p->endnamespacehandler = (void *)regarray[9]; - Self->XML_SetEndNamespaceDeclHandler(p->p, _68k_endnamespacehandler); -} -struct EmuTrap stub_XML_SetEndNamespaceDeclHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetEndNamespaceDeclHandlerPPC }; - -static void stub_XML_SetNamespaceDeclHandlerPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - p->startnamespacehandler = (void *)regarray[9]; - p->endnamespacehandler = (void *)regarray[10]; - Self->XML_SetNamespaceDeclHandler(p->p, _68k_startnamespacehandler, _68k_endnamespacehandler); -} -struct EmuTrap stub_XML_SetNamespaceDeclHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetNamespaceDeclHandlerPPC }; - -static void stub_XML_SetXmlDeclHandlerPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - p->xmldeclhandler = (void *)regarray[9]; - Self->XML_SetXmlDeclHandler(p->p, _68k_xmldeclhandler); -} -struct EmuTrap stub_XML_SetXmlDeclHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetXmlDeclHandlerPPC }; - -static void stub_XML_SetStartDoctypeDeclHandlerPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - p->startdoctypehandler = (void *)regarray[9]; - Self->XML_SetStartDoctypeDeclHandler(p->p, _68k_startdoctypehandler); -} -struct EmuTrap stub_XML_SetStartDoctypeDeclHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetStartDoctypeDeclHandlerPPC }; - -static void stub_XML_SetEndDoctypeDeclHandlerPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - p->enddoctypehandler = (void *)regarray[9]; - Self->XML_SetEndDoctypeDeclHandler(p->p, _68k_enddoctypehandler); -} -struct EmuTrap stub_XML_SetEndDoctypeDeclHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetEndDoctypeDeclHandlerPPC }; - -static void stub_XML_SetDoctypeDeclHandlerPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - p->startdoctypehandler = (void *)regarray[9]; - p->enddoctypehandler = (void *)regarray[10]; - Self->XML_SetDoctypeDeclHandler(p->p, _68k_startdoctypehandler, _68k_enddoctypehandler); -} -struct EmuTrap stub_XML_SetDoctypeDeclHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetDoctypeDeclHandlerPPC }; - -static void stub_XML_SetElementDeclHandlerPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - p->elementdeclhandler = (void *)regarray[9]; - Self->XML_SetElementDeclHandler(p->p, _68k_elementdeclhandler); -} -struct EmuTrap stub_XML_SetElementDeclHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetElementDeclHandlerPPC }; - -static void stub_XML_SetAttlistDeclHandlerPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - p->attlistdeclhandler = (void *)regarray[9]; - Self->XML_SetAttlistDeclHandler(p->p, _68k_attlistdeclhandler); -} -struct EmuTrap stub_XML_SetAttlistDeclHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetAttlistDeclHandlerPPC }; - -static void stub_XML_SetEntityDeclHandlerPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - p->entitydeclhandler = (void *)regarray[9]; - Self->XML_SetEntityDeclHandler(p->p, _68k_entitydeclhandler); -} -struct EmuTrap stub_XML_SetEntityDeclHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetEntityDeclHandlerPPC }; - -static void stub_XML_SetUnparsedEntityDeclHandlerPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - p->unparseddeclhandler = (void *)regarray[9]; - Self->XML_SetUnparsedEntityDeclHandler(p->p, _68k_unparseddeclhandler); -} -struct EmuTrap stub_XML_SetUnparsedEntityDeclHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetUnparsedEntityDeclHandlerPPC }; - -static void stub_XML_SetNotationDeclHandlerPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - p->notationdeclhandler = (void *)regarray[9]; - Self->XML_SetNotationDeclHandler(p->p, _68k_notationdeclhandler); -} -struct EmuTrap stub_XML_SetNotationDeclHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetNotationDeclHandlerPPC }; - -static void stub_XML_SetNotStandaloneHandlerPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - p->notstandalonehandler = (void *)regarray[9]; - Self->XML_SetNotStandaloneHandler(p->p, _68k_notstandalonehandler); -} -struct EmuTrap stub_XML_SetNotStandaloneHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetNotStandaloneHandlerPPC }; - -static int stub_XML_GetErrorCodePPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - return Self->XML_GetErrorCode(p->p); -} -struct EmuTrap stub_XML_GetErrorCode = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_GetErrorCodePPC }; - -static const XML_LChar * stub_XML_ErrorStringPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - return Self->XML_ErrorString((int)regarray[0]); -} -struct EmuTrap stub_XML_ErrorString = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_ErrorStringPPC }; - -static long stub_XML_GetCurrentByteIndexPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - return Self->XML_GetCurrentByteIndex(p->p); -} -struct EmuTrap stub_XML_GetCurrentByteIndex = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_GetCurrentByteIndexPPC }; - -static int stub_XML_GetCurrentLineNumberPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - return Self->XML_GetCurrentLineNumber(p->p); -} -struct EmuTrap stub_XML_GetCurrentLineNumber = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_GetCurrentLineNumberPPC }; - -static int stub_XML_GetCurrentColumnNumberPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - return Self->XML_GetCurrentColumnNumber(p->p); -} -struct EmuTrap stub_XML_GetCurrentColumnNumber = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_GetCurrentColumnNumberPPC }; - -static int stub_XML_GetCurrentByteCountPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - return Self->XML_GetCurrentByteCount(p->p); -} -struct EmuTrap stub_XML_GetCurrentByteCount = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_GetCurrentByteCountPPC }; - -static const char * stub_XML_GetInputContextPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - return Self->XML_GetInputContext(p->p, (int *)regarray[9], (int *)regarray[10]); -} -struct EmuTrap stub_XML_GetInputContext = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_GetInputContextPPC }; - -static void stub_XML_SetUserDataPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - p->handlerarg = (void *)regarray[9]; -} -struct EmuTrap stub_XML_SetUserData = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetUserDataPPC }; - -static void stub_XML_DefaultCurrentPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - Self->XML_DefaultCurrent(p->p); -} -struct EmuTrap stub_XML_DefaultCurrent = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_DefaultCurrentPPC }; - -static void stub_XML_UseParserAsHandlerArgPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - p->handlerarg = p; -} -struct EmuTrap stub_XML_UseParserAsHandlerArg = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_UseParserAsHandlerArgPPC }; - -static int stub_XML_SetBasePPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - return Self->XML_SetBase(p->p, (const XML_Char *)regarray[9]); -} -struct EmuTrap stub_XML_SetBase = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetBasePPC }; - -static const XML_Char * stub_XML_GetBasePPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - return Self->XML_GetBase(p->p); -} -struct EmuTrap stub_XML_GetBase = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_GetBasePPC }; - -static int stub_XML_GetSpecifiedAttributeCountPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - return Self->XML_GetSpecifiedAttributeCount(p->p); -} -struct EmuTrap stub_XML_GetSpecifiedAttributeCount = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_GetSpecifiedAttributeCountPPC }; - -static int stub_XML_GetIdAttributeIndexPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - return Self->XML_GetIdAttributeIndex(p->p); -} -struct EmuTrap stub_XML_GetIdAttributeIndex = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_GetIdAttributeIndexPPC }; - -static int stub_XML_SetEncodingPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - return Self->XML_SetEncoding(p->p, (const XML_Char *)regarray[9]); -} -struct EmuTrap stub_XML_SetEncoding = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetEncodingPPC }; - -static int stub_XML_SetParamEntityParsingPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - return Self->XML_SetParamEntityParsing(p->p, (enum XML_ParamEntityParsing)regarray[9]); -} -struct EmuTrap stub_XML_SetParamEntityParsing = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetParamEntityParsingPPC }; - -static void stub_XML_SetReturnNSTripletPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - Self->XML_SetReturnNSTriplet(p->p, (int)regarray[0]); -} -struct EmuTrap stub_XML_SetReturnNSTriplet = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetReturnNSTripletPPC }; - -static const XML_LChar * stub_XML_ExpatVersionPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - return Self->XML_ExpatVersion(); -} -struct EmuTrap stub_XML_ExpatVersion = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_ExpatVersionPPC }; - -static XML_Expat_Version stub_XML_ExpatVersionInfoPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - return Self->XML_ExpatVersionInfo(); -} -struct EmuTrap stub_XML_ExpatVersionInfo = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_ExpatVersionInfoPPC }; - -static int stub_XML_ParserResetPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - return Self->XML_ParserReset(p->p, (const XML_Char *)regarray[9]); -} -struct EmuTrap stub_XML_ParserReset = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_ParserResetPPC }; - -static void stub_XML_SetSkippedEntityHandlerPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - p->skippedentityhandler = (void *)regarray[9]; - Self->XML_SetSkippedEntityHandler(p->p, _68k_skippedentityhandler); -} -struct EmuTrap stub_XML_SetSkippedEntityHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetSkippedEntityHandlerPPC }; - -static int stub_XML_UseForeignDTDPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - return Self->XML_UseForeignDTD(p->p, (XML_Bool)regarray[0]); -} -struct EmuTrap stub_XML_UseForeignDTD = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_UseForeignDTDPPC }; - -static const XML_Feature * stub_XML_GetFeatureListPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - return Self->XML_GetFeatureList(); -} -struct EmuTrap stub_XML_GetFeatureList = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_GetFeatureListPPC }; - -static int stub_XML_StopParserPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - return Self->XML_StopParser(p->p, (XML_Bool)regarray[0]); -} -struct EmuTrap stub_XML_StopParser = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_StopParserPPC }; - -static int stub_XML_ResumeParserPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - return Self->XML_ResumeParser(p->p); -} -struct EmuTrap stub_XML_ResumeParser = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_ResumeParserPPC }; - -static void stub_XML_GetParsingStatusPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - Self->XML_GetParsingStatus(p->p, (XML_ParsingStatus *)regarray[9]); -} -struct EmuTrap stub_XML_GetParsingStatus = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_GetParsingStatusPPC }; - -static void stub_XML_FreeContentModelPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - Self->XML_FreeContentModel(p->p, (XML_Content *)regarray[9]); -} -struct EmuTrap stub_XML_FreeContentModel = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_FreeContentModelPPC }; - -static void *stub_XML_MemMallocPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - return Self->XML_MemMalloc(p->p, (size_t)regarray[0]); -} -struct EmuTrap stub_XML_MemMalloc = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_MemMallocPPC }; - -static void *stub_XML_MemReallocPPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - return Self->XML_MemRealloc(p->p, (void *)regarray[9], (size_t)regarray[0]); -} -struct EmuTrap stub_XML_MemRealloc = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_MemReallocPPC }; - -static void stub_XML_MemFreePPC(ULONG *regarray) -{ - struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; - struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); - struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; - - M68kXML_Parser p = (M68kXML_Parser)regarray[8]; - Self->XML_MemFree(p->p, (void *)regarray[9]); -} -struct EmuTrap stub_XML_MemFree = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_MemFreePPC }; - -ULONG VecTable68K[] = { - (ULONG)&stub_Open, - (ULONG)&stub_Close, - (ULONG)&stub_Expunge, - (ULONG)&stub_Reserved, - (ULONG)&stub_XML_ParserCreate, - (ULONG)&stub_XML_ParserCreateNS, - (ULONG)&stub_XML_ParserCreate_MM, - (ULONG)&stub_XML_ExternalEntityParserCreate, - (ULONG)&stub_XML_ParserFree, - (ULONG)&stub_XML_Parse, - (ULONG)&stub_XML_ParseBuffer, - (ULONG)&stub_XML_GetBuffer, - (ULONG)&stub_XML_SetStartElementHandler, - (ULONG)&stub_XML_SetEndElementHandler, - (ULONG)&stub_XML_SetElementHandler, - (ULONG)&stub_XML_SetCharacterDataHandler, - (ULONG)&stub_XML_SetProcessingInstructionHandler, - (ULONG)&stub_XML_SetCommentHandler, - (ULONG)&stub_XML_SetStartCdataSectionHandler, - (ULONG)&stub_XML_SetEndCdataSectionHandler, - (ULONG)&stub_XML_SetCdataSectionHandler, - (ULONG)&stub_XML_SetDefaultHandler, - (ULONG)&stub_XML_SetDefaultHandlerExpand, - (ULONG)&stub_XML_SetExternalEntityRefHandler, - (ULONG)&stub_XML_SetExternalEntityRefHandlerArg, - (ULONG)&stub_XML_SetUnknownEncodingHandler, - (ULONG)&stub_XML_SetStartNamespaceDeclHandler, - (ULONG)&stub_XML_SetEndNamespaceDeclHandler, - (ULONG)&stub_XML_SetNamespaceDeclHandler, - (ULONG)&stub_XML_SetXmlDeclHandler, - (ULONG)&stub_XML_SetStartDoctypeDeclHandler, - (ULONG)&stub_XML_SetEndDoctypeDeclHandler, - (ULONG)&stub_XML_SetDoctypeDeclHandler, - (ULONG)&stub_XML_SetElementDeclHandler, - (ULONG)&stub_XML_SetAttlistDeclHandler, - (ULONG)&stub_XML_SetEntityDeclHandler, - (ULONG)&stub_XML_SetUnparsedEntityDeclHandler, - (ULONG)&stub_XML_SetNotationDeclHandler, - (ULONG)&stub_XML_SetNotStandaloneHandler, - (ULONG)&stub_XML_GetErrorCode, - (ULONG)&stub_XML_ErrorString, - (ULONG)&stub_XML_GetCurrentByteIndex, - (ULONG)&stub_XML_GetCurrentLineNumber, - (ULONG)&stub_XML_GetCurrentColumnNumber, - (ULONG)&stub_XML_GetCurrentByteCount, - (ULONG)&stub_XML_GetInputContext, - (ULONG)&stub_XML_SetUserData, - (ULONG)&stub_XML_DefaultCurrent, - (ULONG)&stub_XML_UseParserAsHandlerArg, - (ULONG)&stub_XML_SetBase, - (ULONG)&stub_XML_GetBase, - (ULONG)&stub_XML_GetSpecifiedAttributeCount, - (ULONG)&stub_XML_GetIdAttributeIndex, - (ULONG)&stub_XML_SetEncoding, - (ULONG)&stub_XML_SetParamEntityParsing, - (ULONG)&stub_XML_SetReturnNSTriplet, - (ULONG)&stub_XML_ExpatVersion, - (ULONG)&stub_XML_ExpatVersionInfo, - (ULONG)&stub_XML_ParserReset, - (ULONG)&stub_XML_SetSkippedEntityHandler, - (ULONG)&stub_XML_UseForeignDTD, - (ULONG)&stub_XML_GetFeatureList, - (ULONG)&stub_XML_StopParser, - (ULONG)&stub_XML_ResumeParser, - (ULONG)&stub_XML_GetParsingStatus, - (ULONG)&stub_XML_FreeContentModel, - (ULONG)&stub_XML_MemMalloc, - (ULONG)&stub_XML_MemRealloc, - (ULONG)&stub_XML_MemFree, - (ULONG)-1 -}; diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/expat_68k.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/expat_68k.h deleted file mode 100755 index 6f1aac5..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/expat_68k.h +++ /dev/null @@ -1,94 +0,0 @@ -/* -** Copyright (c) 2001-2009 Expat maintainers. -** -** 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: -** -** The above copyright notice and this permission notice shall be included -** in all copies or substantial portions of the Software. -** -** 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. -*/ - -#ifndef EXPAT_68K_H -#define EXPAT_68K_H - -#ifndef LIBRARIES_EXPAT_H -#include -#endif - -typedef struct M68kXML_ParserStruct { - XML_Parser p; - struct ExecIFace *IExec; - void *handlerarg; - void *extenthandlerarg; - void *enchandlerarg; - void *startelementhandler; - void *endelementhandler; - void *chardatahandler; - void *procinsthandler; - void *commenthandler; - void *startcdatahandler; - void *endcdatahandler; - void *defaulthandler; - void *defaulthandlerexp; - void *extentrefhandler; - void *unknownenchandler; - void *startnamespacehandler; - void *endnamespacehandler; - void *xmldeclhandler; - void *startdoctypehandler; - void *enddoctypehandler; - void *elementdeclhandler; - void *attlistdeclhandler; - void *entitydeclhandler; - void *unparseddeclhandler; - void *notationdeclhandler; - void *notstandalonehandler; - void *skippedentityhandler; -} *M68kXML_Parser; - -/* expat_68k_handler_stubs.c */ -void _68k_startelementhandler(void *userdata, const char *name, const char **attrs); -void _68k_endelementhandler(void *userdata, const char *name); -void _68k_chardatahandler(void *userdata, const char *s, int len); -void _68k_procinsthandler(void *userdata, const char *target, const char *data); -void _68k_commenthandler(void *userdata, const char *data); -void _68k_startcdatahandler(void *userdata); -void _68k_endcdatahandler(void *userdata); -void _68k_defaulthandler(void *userdata, const char *s, int len); -void _68k_defaulthandlerexp(void *userdata, const char *s, int len); -int _68k_extentrefhandler(XML_Parser parser, const char *context, const char *base, - const char *sysid, const char *pubid); -int _68k_unknownenchandler(void *enchandlerdata, const char *name, XML_Encoding *info); -void _68k_startnamespacehandler(void *userdata, const char *prefix, const char *uri); -void _68k_endnamespacehandler(void *userdata, const char *prefix); -void _68k_xmldeclhandler(void *userdata, const char *version, const char *encoding, int standalone); -void _68k_startdoctypehandler(void *userdata, const char *doctypename, - const char *sysid, const char *pubid, int has_internal_subset); -void _68k_enddoctypehandler(void *userdata); -void _68k_elementdeclhandler(void *userdata, const char *name, XML_Content *model); -void _68k_attlistdeclhandler(void *userdata, const char *elname, const char *attname, - const char *att_type, const char *dflt, int isrequired); -void _68k_entitydeclhandler(void *userdata, const char *entityname, int is_param_entity, - const char *value, int value_length, const char *base, const char *sysid, const char *pubid, - const char *notationname); -void _68k_unparseddeclhandler(void *userdata, const char *entityname, const char *base, - const char *sysid, const char *pubid, const char *notationname); -void _68k_notationdeclhandler(void *userdata, const char *notationname, const char *base, - const char *sysid, const char *pubid); -int _68k_notstandalonehandler(void *userdata); -void _68k_skippedentityhandler(void *userdata, const char *entityname, int is_param_entity); - -#endif diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/expat_68k_handler_stubs.c b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/expat_68k_handler_stubs.c deleted file mode 100755 index aca33c6..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/expat_68k_handler_stubs.c +++ /dev/null @@ -1,185 +0,0 @@ -/* -** Copyright (c) 2001-2009 Expat maintainers. -** -** 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: -** -** The above copyright notice and this permission notice shall be included -** in all copies or substantial portions of the Software. -** -** 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. -*/ - -#ifdef __USE_INLINE__ -#undef __USE_INLINE__ -#endif - -#include "expat_68k.h" -#include -#include -#include - -static uint32 VARARGS68K call_68k_code (struct ExecIFace *IExec, void *code, int num_args, ...) { - uint32 res = 0; - - va_list vargs; - va_startlinear(vargs, num_args); - uint32 *args = va_getlinearva(vargs, uint32 *); - - uint8 *stack = IExec->AllocVec(4096, MEMF_SHARED); - if (stack) { - uint32 *sp = (uint32 *)(stack + 4096); - args += num_args; - while (num_args--) { - *--sp = *--args; - } - - res = IExec->EmulateTags(code, ET_StackPtr, sp, TAG_END); - IExec->FreeVec(stack); - } - - va_end(vargs); - - return res; -} - -void _68k_startelementhandler(void *userdata, const char *name, const char **attrs) { - M68kXML_Parser p = userdata; - call_68k_code(p->IExec, p->startelementhandler, 3, p->handlerarg, name, attrs); -} - -void _68k_endelementhandler(void *userdata, const char *name) { - M68kXML_Parser p = userdata; - call_68k_code(p->IExec, p->endelementhandler, 2, p->handlerarg, name); -} - -void _68k_chardatahandler(void *userdata, const char *s, int len) { - M68kXML_Parser p = userdata; - call_68k_code(p->IExec, p->chardatahandler, 3, p->handlerarg, s, len); -} - -void _68k_procinsthandler(void *userdata, const char *target, const char *data) { - M68kXML_Parser p = userdata; - call_68k_code(p->IExec, p->procinsthandler, 3, p->handlerarg, target, data); -} - -void _68k_commenthandler(void *userdata, const char *data) { - M68kXML_Parser p = userdata; - call_68k_code(p->IExec, p->commenthandler, 2, p->handlerarg, data); -} - -void _68k_startcdatahandler(void *userdata) { - M68kXML_Parser p = userdata; - call_68k_code(p->IExec, p->startcdatahandler, 1, p->handlerarg); -} - -void _68k_endcdatahandler(void *userdata) { - M68kXML_Parser p = userdata; - call_68k_code(p->IExec, p->endcdatahandler, 1, p->handlerarg); -} - -void _68k_defaulthandler(void *userdata, const char *s, int len) { - M68kXML_Parser p = userdata; - call_68k_code(p->IExec, p->defaulthandler, 3, p->handlerarg, s, len); -} - -void _68k_defaulthandlerexp(void *userdata, const char *s, int len) { - M68kXML_Parser p = userdata; - call_68k_code(p->IExec, p->defaulthandlerexp, 3, p->handlerarg, s, len); -} - -int _68k_extentrefhandler(XML_Parser parser, const char *context, const char *base, - const char *sysid, const char *pubid) -{ - M68kXML_Parser p = XML_GetUserData(parser); - void *arg = p->extenthandlerarg; - return (int)call_68k_code(p->IExec, p->extentrefhandler, 5, arg ? arg : p, context, base, sysid, pubid); -} - -int _68k_unknownenchandler(void *enchandlerdata, const char *name, XML_Encoding *info) { - M68kXML_Parser p = enchandlerdata; - return (int)call_68k_code(p->IExec, p->unknownenchandler, 3, p->enchandlerarg, name, info); -} - -void _68k_startnamespacehandler(void *userdata, const char *prefix, const char *uri) { - M68kXML_Parser p = userdata; - call_68k_code(p->IExec, p->startnamespacehandler, 3, p->handlerarg, prefix, uri); -} - -void _68k_endnamespacehandler(void *userdata, const char *prefix) { - M68kXML_Parser p = userdata; - call_68k_code(p->IExec, p->endnamespacehandler, 2, p->handlerarg, prefix); -} - -void _68k_xmldeclhandler(void *userdata, const char *version, const char *encoding, int standalone) { - M68kXML_Parser p = userdata; - call_68k_code(p->IExec, p->xmldeclhandler, 4, p->handlerarg, version, encoding, standalone); -} - -void _68k_startdoctypehandler(void *userdata, const char *doctypename, - const char *sysid, const char *pubid, int has_internal_subset) -{ - M68kXML_Parser p = userdata; - call_68k_code(p->IExec, p->startdoctypehandler, 5, p->handlerarg, doctypename, sysid, pubid, has_internal_subset); -} - -void _68k_enddoctypehandler(void *userdata) { - M68kXML_Parser p = userdata; - call_68k_code(p->IExec, p->enddoctypehandler, 1, p->handlerarg); -} - -void _68k_elementdeclhandler(void *userdata, const char *name, XML_Content *model) { - M68kXML_Parser p = userdata; - call_68k_code(p->IExec, p->elementdeclhandler, 3, p->handlerarg, name, model); -} - -void _68k_attlistdeclhandler(void *userdata, const char *elname, const char *attname, - const char *att_type, const char *dflt, int isrequired) -{ - M68kXML_Parser p = userdata; - call_68k_code(p->IExec, p->attlistdeclhandler, 6, p->handlerarg, elname, attname, att_type, dflt, isrequired); -} - -void _68k_entitydeclhandler(void *userdata, const char *entityname, int is_param_entity, - const char *value, int value_length, const char *base, const char *sysid, const char *pubid, - const char *notationname) -{ - M68kXML_Parser p = userdata; - call_68k_code(p->IExec, p->entitydeclhandler, 9, p->handlerarg, entityname, is_param_entity, - value, value_length, base, sysid, pubid, notationname); -} - -void _68k_unparseddeclhandler(void *userdata, const char *entityname, const char *base, - const char *sysid, const char *pubid, const char *notationname) -{ - M68kXML_Parser p = userdata; - call_68k_code(p->IExec, p->unparseddeclhandler, 6, p->handlerarg, entityname, base, sysid, pubid, notationname); -} - -void _68k_notationdeclhandler(void *userdata, const char *notationname, const char *base, - const char *sysid, const char *pubid) -{ - M68kXML_Parser p = userdata; - call_68k_code(p->IExec, p->notationdeclhandler, 5, p->handlerarg, notationname, base, sysid, pubid); -} - -int _68k_notstandalonehandler(void *userdata) { - M68kXML_Parser p = userdata; - return (int)call_68k_code(p->IExec, p->notstandalonehandler, 1, p->handlerarg); -} - -void _68k_skippedentityhandler(void *userdata, const char *entityname, int is_param_entity) { - M68kXML_Parser p = userdata; - call_68k_code(p->IExec, p->skippedentityhandler, 3, p->handlerarg, entityname, is_param_entity); -} diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/expat_base.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/expat_base.h deleted file mode 100644 index 2663639..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/expat_base.h +++ /dev/null @@ -1,40 +0,0 @@ -/* -** Copyright (c) 2001-2009 Expat maintainers. -** -** 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: -** -** The above copyright notice and this permission notice shall be included -** in all copies or substantial portions of the Software. -** -** 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. -*/ - -#ifndef EXPAT_BASE_H -#define EXPAT_BASE_H - -#include -#include -#include -#include - - -struct ExpatBase { - struct Library libNode; - uint16 pad; - BPTR SegList; - struct ExecIFace *IExec; -}; - -#endif diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/expat_lib.c b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/expat_lib.c deleted file mode 100755 index 70e91b1..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/expat_lib.c +++ /dev/null @@ -1,247 +0,0 @@ -/* -** Copyright (c) 2001-2009 Expat maintainers. -** -** 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: -** -** The above copyright notice and this permission notice shall be included -** in all copies or substantial portions of the Software. -** -** 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. -*/ - -#ifdef __USE_INLINE__ -#undef __USE_INLINE__ -#endif - -#define __NOLIBBASE__ -#define __NOGLOBALIFACE__ - -#include -#include - -#include "expat_base.h" - - -#define LIBNAME "expat.library" -#define LIBPRI 0 -#define VERSION 53 -#define REVISION 1 -#define VSTRING "expat.library 53.1 (7.8.2009)" /* dd.mm.yyyy */ - - -static const char* __attribute__((used)) verstag = "\0$VER: " VSTRING; - - -struct Interface *INewlib = 0; - - -struct ExpatBase * libInit(struct ExpatBase *libBase, BPTR seglist, struct ExecIFace *ISys); -uint32 libObtain (struct LibraryManagerInterface *Self); -uint32 libRelease (struct LibraryManagerInterface *Self); -struct ExpatBase *libOpen (struct LibraryManagerInterface *Self, uint32 version); -BPTR libClose (struct LibraryManagerInterface *Self); -BPTR libExpunge (struct LibraryManagerInterface *Self); -struct Interface *openInterface(struct ExecIFace *IExec, CONST_STRPTR libName, uint32 libVer); -void closeInterface(struct ExecIFace *IExec, struct Interface *iface); - - -static APTR lib_manager_vectors[] = { - libObtain, - libRelease, - NULL, - NULL, - libOpen, - libClose, - libExpunge, - NULL, - (APTR)-1, -}; - - -static struct TagItem lib_managerTags[] = { - { MIT_Name, (uint32)"__library" }, - { MIT_VectorTable, (uint32)lib_manager_vectors }, - { MIT_Version, 1 }, - { TAG_END, 0 } -}; - - -extern void *main_vectors[]; - -static struct TagItem lib_mainTags[] = { - { MIT_Name, (uint32)"main" }, - { MIT_VectorTable, (uint32)main_vectors }, - { MIT_Version, 1 }, - { TAG_END, 0 } -}; - - -static APTR libInterfaces[] = { - lib_managerTags, - lib_mainTags, - NULL -}; - - -extern void *VecTable68K[]; - -static struct TagItem libCreateTags[] = { - { CLT_DataSize, sizeof(struct ExpatBase) }, - { CLT_InitFunc, (uint32)libInit }, - { CLT_Interfaces, (uint32)libInterfaces }, - { CLT_Vector68K, (uint32)VecTable68K }, - { TAG_END, 0 } -}; - - -static struct Resident __attribute__((used)) lib_res = { - RTC_MATCHWORD, // rt_MatchWord - &lib_res, // rt_MatchTag - &lib_res+1, // rt_EndSkip - RTF_NATIVE | RTF_AUTOINIT, // rt_Flags - VERSION, // rt_Version - NT_LIBRARY, // rt_Type - LIBPRI, // rt_Pri - LIBNAME, // rt_Name - VSTRING, // rt_IdString - libCreateTags // rt_Init -}; - - -int32 _start() -{ - return RETURN_FAIL; -} - - -struct ExpatBase *libInit(struct ExpatBase *libBase, BPTR seglist, struct ExecIFace *iexec) -{ - libBase->libNode.lib_Node.ln_Type = NT_LIBRARY; - libBase->libNode.lib_Node.ln_Pri = LIBPRI; - libBase->libNode.lib_Node.ln_Name = LIBNAME; - libBase->libNode.lib_Flags = LIBF_SUMUSED|LIBF_CHANGED; - libBase->libNode.lib_Version = VERSION; - libBase->libNode.lib_Revision = REVISION; - libBase->libNode.lib_IdString = VSTRING; - - libBase->SegList = seglist; - - libBase->IExec = iexec; - INewlib = openInterface(iexec, "newlib.library", 0); - - if ( INewlib != 0 ) { - return libBase; - } - - closeInterface(iexec, INewlib); - INewlib = 0; - - iexec->DeleteLibrary(&libBase->libNode); - - return NULL; -} - - -uint32 libObtain( struct LibraryManagerInterface *Self ) -{ - ++Self->Data.RefCount; - return Self->Data.RefCount; -} - - -uint32 libRelease( struct LibraryManagerInterface *Self ) -{ - --Self->Data.RefCount; - return Self->Data.RefCount; -} - - -struct ExpatBase *libOpen( struct LibraryManagerInterface *Self, uint32 version ) -{ - struct ExpatBase *libBase; - - libBase = (struct ExpatBase *)Self->Data.LibBase; - - ++libBase->libNode.lib_OpenCnt; - libBase->libNode.lib_Flags &= ~LIBF_DELEXP; - - return libBase; -} - - -BPTR libClose( struct LibraryManagerInterface *Self ) -{ - struct ExpatBase *libBase; - - libBase = (struct ExpatBase *)Self->Data.LibBase; - - --libBase->libNode.lib_OpenCnt; - if ( libBase->libNode.lib_OpenCnt ) { - return 0; - } - - if ( libBase->libNode.lib_Flags & LIBF_DELEXP ) { - return (BPTR)Self->LibExpunge(); - } - else { - return ZERO; - } -} - - -BPTR libExpunge( struct LibraryManagerInterface *Self ) -{ - struct ExpatBase *libBase = (struct ExpatBase *)Self->Data.LibBase; - BPTR result = ZERO; - - if (libBase->libNode.lib_OpenCnt == 0) { - libBase->IExec->Remove(&libBase->libNode.lib_Node); - - result = libBase->SegList; - - closeInterface(libBase->IExec, INewlib); - INewlib = 0; - - libBase->IExec->DeleteLibrary(&libBase->libNode); - } - else { - libBase->libNode.lib_Flags |= LIBF_DELEXP; - } - - return result; -} - - -struct Interface *openInterface(struct ExecIFace *IExec, CONST_STRPTR libName, uint32 libVer) -{ - struct Library *base = IExec->OpenLibrary(libName, libVer); - struct Interface *iface = IExec->GetInterface(base, "main", 1, 0); - if (iface == 0) { - IExec->CloseLibrary(base); - } - - return iface; -} - - -void closeInterface(struct ExecIFace *IExec, struct Interface *iface) -{ - if (iface != 0) - { - struct Library *base = iface->Data.LibBase; - IExec->DropInterface(iface); - IExec->CloseLibrary(base); - } -} diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/expat_vectors.c b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/expat_vectors.c deleted file mode 100644 index cf48950..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/expat_vectors.c +++ /dev/null @@ -1,505 +0,0 @@ -/* -** Copyright (c) 2001-2009 Expat maintainers. -** -** 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: -** -** The above copyright notice and this permission notice shall be included -** in all copies or substantial portions of the Software. -** -** 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. -*/ - -#include -#include -#include -#include - -extern uint32 _Expat_Obtain(struct ExpatIFace *); -extern uint32 _Expat_Release(struct ExpatIFace *); -extern XML_Parser _Expat_XML_ParserCreate(struct ExpatIFace *, const XML_Char * encodingName); -extern XML_Parser _Expat_XML_ParserCreateNS(struct ExpatIFace *, const XML_Char * encodingName, XML_Char nsSep); -extern XML_Parser _Expat_XML_ParserCreate_MM(struct ExpatIFace *, const XML_Char * encoding, const XML_Memory_Handling_Suite * memsuite, const XML_Char * namespaceSeparator); -extern XML_Parser _Expat_XML_ExternalEntityParserCreate(struct ExpatIFace *, XML_Parser parser, const XML_Char * context, const XML_Char * encoding); -extern void _Expat_XML_ParserFree(struct ExpatIFace *, XML_Parser parser); -extern enum XML_Status _Expat_XML_Parse(struct ExpatIFace *, XML_Parser parser, const char * s, int len, int isFinal); -extern enum XML_Status _Expat_XML_ParseBuffer(struct ExpatIFace *, XML_Parser parser, int len, int isFinal); -extern void * _Expat_XML_GetBuffer(struct ExpatIFace *, XML_Parser parser, int len); -extern void _Expat_XML_SetStartElementHandler(struct ExpatIFace *, XML_Parser parser, XML_StartElementHandler start); -extern void _Expat_XML_SetEndElementHandler(struct ExpatIFace *, XML_Parser parser, XML_EndElementHandler end); -extern void _Expat_XML_SetElementHandler(struct ExpatIFace *, XML_Parser parser, XML_StartElementHandler start, XML_EndElementHandler end); -extern void _Expat_XML_SetCharacterDataHandler(struct ExpatIFace *, XML_Parser parser, XML_CharacterDataHandler handler); -extern void _Expat_XML_SetProcessingInstructionHandler(struct ExpatIFace *, XML_Parser parser, XML_ProcessingInstructionHandler handler); -extern void _Expat_XML_SetCommentHandler(struct ExpatIFace *, XML_Parser parser, XML_CommentHandler handler); -extern void _Expat_XML_SetStartCdataSectionHandler(struct ExpatIFace *, XML_Parser parser, XML_StartCdataSectionHandler start); -extern void _Expat_XML_SetEndCdataSectionHandler(struct ExpatIFace *, XML_Parser parser, XML_EndCdataSectionHandler end); -extern void _Expat_XML_SetCdataSectionHandler(struct ExpatIFace *, XML_Parser parser, XML_StartCdataSectionHandler start, XML_EndCdataSectionHandler end); -extern void _Expat_XML_SetDefaultHandler(struct ExpatIFace *, XML_Parser parser, XML_DefaultHandler handler); -extern void _Expat_XML_SetDefaultHandlerExpand(struct ExpatIFace *, XML_Parser parser, XML_DefaultHandler handler); -extern void _Expat_XML_SetExternalEntityRefHandler(struct ExpatIFace *, XML_Parser parser, XML_ExternalEntityRefHandler handler); -extern void _Expat_XML_SetExternalEntityRefHandlerArg(struct ExpatIFace *, XML_Parser parser, void * arg); -extern void _Expat_XML_SetUnknownEncodingHandler(struct ExpatIFace *, XML_Parser parser, XML_UnknownEncodingHandler handler, void * data); -extern void _Expat_XML_SetStartNamespaceDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_StartNamespaceDeclHandler start); -extern void _Expat_XML_SetEndNamespaceDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_EndNamespaceDeclHandler end); -extern void _Expat_XML_SetNamespaceDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_StartNamespaceDeclHandler start, XML_EndNamespaceDeclHandler end); -extern void _Expat_XML_SetXmlDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_XmlDeclHandler handler); -extern void _Expat_XML_SetStartDoctypeDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_StartDoctypeDeclHandler start); -extern void _Expat_XML_SetEndDoctypeDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_EndDoctypeDeclHandler end); -extern void _Expat_XML_SetDoctypeDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_StartDoctypeDeclHandler start, XML_EndDoctypeDeclHandler end); -extern void _Expat_XML_SetElementDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_ElementDeclHandler eldecl); -extern void _Expat_XML_SetAttlistDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_AttlistDeclHandler attdecl); -extern void _Expat_XML_SetEntityDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_EntityDeclHandler handler); -extern void _Expat_XML_SetUnparsedEntityDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_UnparsedEntityDeclHandler handler); -extern void _Expat_XML_SetNotationDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_NotationDeclHandler handler); -extern void _Expat_XML_SetNotStandaloneHandler(struct ExpatIFace *, XML_Parser parser, XML_NotStandaloneHandler handler); -extern enum XML_Error _Expat_XML_GetErrorCode(struct ExpatIFace *, XML_Parser parser); -extern const XML_LChar * _Expat_XML_ErrorString(struct ExpatIFace *, enum XML_Error code); -extern long _Expat_XML_GetCurrentByteIndex(struct ExpatIFace *, XML_Parser parser); -extern int _Expat_XML_GetCurrentLineNumber(struct ExpatIFace *, XML_Parser parser); -extern int _Expat_XML_GetCurrentColumnNumber(struct ExpatIFace *, XML_Parser parser); -extern int _Expat_XML_GetCurrentByteCount(struct ExpatIFace *, XML_Parser parser); -extern const char * _Expat_XML_GetInputContext(struct ExpatIFace *, XML_Parser parser, int * offset, int * size); -extern void _Expat_XML_SetUserData(struct ExpatIFace *, XML_Parser parser, void * userData); -extern void _Expat_XML_DefaultCurrent(struct ExpatIFace *, XML_Parser parser); -extern void _Expat_XML_UseParserAsHandlerArg(struct ExpatIFace *, XML_Parser parser); -extern enum XML_Status _Expat_XML_SetBase(struct ExpatIFace *, XML_Parser parser, const XML_Char * base); -extern const XML_Char * _Expat_XML_GetBase(struct ExpatIFace *, XML_Parser parser); -extern int _Expat_XML_GetSpecifiedAttributeCount(struct ExpatIFace *, XML_Parser parser); -extern int _Expat_XML_GetIdAttributeIndex(struct ExpatIFace *, XML_Parser parser); -extern enum XML_Status _Expat_XML_SetEncoding(struct ExpatIFace *, XML_Parser parser, const XML_Char * encoding); -extern int _Expat_XML_SetParamEntityParsing(struct ExpatIFace *, XML_Parser parser, enum XML_ParamEntityParsing parsing); -extern void _Expat_XML_SetReturnNSTriplet(struct ExpatIFace *, XML_Parser parser, int do_nst); -extern const XML_LChar * _Expat_XML_ExpatVersion(struct ExpatIFace *); -extern XML_Expat_Version _Expat_XML_ExpatVersionInfo(struct ExpatIFace *); -extern XML_Bool _Expat_XML_ParserReset(struct ExpatIFace *, XML_Parser parser, const XML_Char * encoding); -extern void _Expat_XML_SetSkippedEntityHandler(struct ExpatIFace *, XML_Parser parser, XML_SkippedEntityHandler handler); -extern enum XML_Error _Expat_XML_UseForeignDTD(struct ExpatIFace *, XML_Parser parser, XML_Bool useDTD); -extern const XML_Feature * _Expat_XML_GetFeatureList(struct ExpatIFace *); -extern enum XML_Status _Expat_XML_StopParser(struct ExpatIFace *, XML_Parser parser, XML_Bool resumable); -extern enum XML_Status _Expat_XML_ResumeParser(struct ExpatIFace *, XML_Parser parser); -extern void _Expat_XML_GetParsingStatus(struct ExpatIFace *, XML_Parser parser, XML_ParsingStatus * status); -extern void _Expat_XML_FreeContentModel(struct ExpatIFace *, XML_Parser parser, XML_Content * model); -extern void * _Expat_XML_MemMalloc(struct ExpatIFace *, XML_Parser parser, size_t size); -extern void * _Expat_XML_MemRealloc(struct ExpatIFace *, XML_Parser parser, void * ptr, size_t size); -extern void _Expat_XML_MemFree(struct ExpatIFace *, XML_Parser parser, void * ptr); - - -CONST APTR main_vectors[] = -{ - _Expat_Obtain, - _Expat_Release, - NULL, - NULL, - _Expat_XML_ParserCreate, - _Expat_XML_ParserCreateNS, - _Expat_XML_ParserCreate_MM, - _Expat_XML_ExternalEntityParserCreate, - _Expat_XML_ParserFree, - _Expat_XML_Parse, - _Expat_XML_ParseBuffer, - _Expat_XML_GetBuffer, - _Expat_XML_SetStartElementHandler, - _Expat_XML_SetEndElementHandler, - _Expat_XML_SetElementHandler, - _Expat_XML_SetCharacterDataHandler, - _Expat_XML_SetProcessingInstructionHandler, - _Expat_XML_SetCommentHandler, - _Expat_XML_SetStartCdataSectionHandler, - _Expat_XML_SetEndCdataSectionHandler, - _Expat_XML_SetCdataSectionHandler, - _Expat_XML_SetDefaultHandler, - _Expat_XML_SetDefaultHandlerExpand, - _Expat_XML_SetExternalEntityRefHandler, - _Expat_XML_SetExternalEntityRefHandlerArg, - _Expat_XML_SetUnknownEncodingHandler, - _Expat_XML_SetStartNamespaceDeclHandler, - _Expat_XML_SetEndNamespaceDeclHandler, - _Expat_XML_SetNamespaceDeclHandler, - _Expat_XML_SetXmlDeclHandler, - _Expat_XML_SetStartDoctypeDeclHandler, - _Expat_XML_SetEndDoctypeDeclHandler, - _Expat_XML_SetDoctypeDeclHandler, - _Expat_XML_SetElementDeclHandler, - _Expat_XML_SetAttlistDeclHandler, - _Expat_XML_SetEntityDeclHandler, - _Expat_XML_SetUnparsedEntityDeclHandler, - _Expat_XML_SetNotationDeclHandler, - _Expat_XML_SetNotStandaloneHandler, - _Expat_XML_GetErrorCode, - _Expat_XML_ErrorString, - _Expat_XML_GetCurrentByteIndex, - _Expat_XML_GetCurrentLineNumber, - _Expat_XML_GetCurrentColumnNumber, - _Expat_XML_GetCurrentByteCount, - _Expat_XML_GetInputContext, - _Expat_XML_SetUserData, - _Expat_XML_DefaultCurrent, - _Expat_XML_UseParserAsHandlerArg, - _Expat_XML_SetBase, - _Expat_XML_GetBase, - _Expat_XML_GetSpecifiedAttributeCount, - _Expat_XML_GetIdAttributeIndex, - _Expat_XML_SetEncoding, - _Expat_XML_SetParamEntityParsing, - _Expat_XML_SetReturnNSTriplet, - _Expat_XML_ExpatVersion, - _Expat_XML_ExpatVersionInfo, - _Expat_XML_ParserReset, - _Expat_XML_SetSkippedEntityHandler, - _Expat_XML_UseForeignDTD, - _Expat_XML_GetFeatureList, - _Expat_XML_StopParser, - _Expat_XML_ResumeParser, - _Expat_XML_GetParsingStatus, - _Expat_XML_FreeContentModel, - _Expat_XML_MemMalloc, - _Expat_XML_MemRealloc, - _Expat_XML_MemFree, - (APTR)-1 -}; - -uint32 _Expat_Obtain(struct ExpatIFace *Self) -{ - return ++Self->Data.RefCount; -} - -uint32 _Expat_Release(struct ExpatIFace *Self) -{ - return --Self->Data.RefCount; -} - -XML_Parser _Expat_XML_ParserCreate(struct ExpatIFace * Self, const XML_Char *encoding) -{ - return XML_ParserCreate(encoding); -} - -XML_Parser _Expat_XML_ParserCreateNS(struct ExpatIFace * Self, const XML_Char *encoding, XML_Char nsSep) -{ - return XML_ParserCreateNS(encoding, nsSep); -} - -XML_Parser _Expat_XML_ParserCreate_MM(struct ExpatIFace * Self, const XML_Char *encoding, const XML_Memory_Handling_Suite *memsuite, const XML_Char *namespaceSeparator) -{ - return XML_ParserCreate_MM(encoding, memsuite, namespaceSeparator); -} - -XML_Parser _Expat_XML_ExternalEntityParserCreate(struct ExpatIFace * Self, XML_Parser parser, const XML_Char *context, const XML_Char *encoding) -{ - return XML_ExternalEntityParserCreate(parser, context, encoding); -} - -void _Expat_XML_ParserFree(struct ExpatIFace *Self, XML_Parser parser) -{ - XML_ParserFree(parser); -} - -enum XML_Status _Expat_XML_Parse(struct ExpatIFace * Self, XML_Parser parser, const char * s, int len, int isFinal) -{ - return XML_Parse(parser, s, len, isFinal); -} - -enum XML_Status _Expat_XML_ParseBuffer(struct ExpatIFace * Self, XML_Parser parser, int len, int isFinal) -{ - return XML_ParseBuffer(parser, len, isFinal); -} - -void * _Expat_XML_GetBuffer(struct ExpatIFace * Self, XML_Parser parser, int len) -{ - return XML_GetBuffer(parser, len); -} - -void _Expat_XML_SetStartElementHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartElementHandler start) -{ - XML_SetStartElementHandler(parser, start); -} - -void _Expat_XML_SetEndElementHandler(struct ExpatIFace * Self, XML_Parser parser, XML_EndElementHandler end) -{ - XML_SetEndElementHandler(parser, end); -} - -void _Expat_XML_SetElementHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartElementHandler start, XML_EndElementHandler end) -{ - XML_SetElementHandler(parser, start, end); -} - -void _Expat_XML_SetCharacterDataHandler(struct ExpatIFace * Self, XML_Parser parser, XML_CharacterDataHandler handler) -{ - XML_SetCharacterDataHandler(parser, handler); -} - -void _Expat_XML_SetProcessingInstructionHandler(struct ExpatIFace * Self, XML_Parser parser, XML_ProcessingInstructionHandler handler) -{ - XML_SetProcessingInstructionHandler(parser, handler); -} - -void _Expat_XML_SetCommentHandler(struct ExpatIFace * Self, XML_Parser parser, XML_CommentHandler handler) -{ - XML_SetCommentHandler(parser, handler); -} - -void _Expat_XML_SetStartCdataSectionHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartCdataSectionHandler start) -{ - XML_SetStartCdataSectionHandler(parser, start); -} - -void _Expat_XML_SetEndCdataSectionHandler(struct ExpatIFace * Self, XML_Parser parser, XML_EndCdataSectionHandler end) -{ - XML_SetEndCdataSectionHandler(parser, end); -} - -void _Expat_XML_SetCdataSectionHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartCdataSectionHandler start, XML_EndCdataSectionHandler end) -{ - XML_SetCdataSectionHandler(parser, start, end); -} - -void _Expat_XML_SetDefaultHandler(struct ExpatIFace * Self, XML_Parser parser, XML_DefaultHandler handler) -{ - XML_SetDefaultHandler(parser, handler); -} - -void _Expat_XML_SetDefaultHandlerExpand(struct ExpatIFace * Self, XML_Parser parser, XML_DefaultHandler handler) -{ - XML_SetDefaultHandlerExpand(parser, handler); -} - -void _Expat_XML_SetExternalEntityRefHandler(struct ExpatIFace * Self, XML_Parser parser, XML_ExternalEntityRefHandler handler) -{ - XML_SetExternalEntityRefHandler(parser, handler); -} - -void _Expat_XML_SetExternalEntityRefHandlerArg(struct ExpatIFace * Self, XML_Parser parser, void * arg) -{ - XML_SetExternalEntityRefHandlerArg(parser, arg); -} - -void _Expat_XML_SetUnknownEncodingHandler(struct ExpatIFace * Self, XML_Parser parser, XML_UnknownEncodingHandler handler, void * data) -{ - XML_SetUnknownEncodingHandler(parser, handler, data); -} - -void _Expat_XML_SetStartNamespaceDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartNamespaceDeclHandler start) -{ - XML_SetStartNamespaceDeclHandler(parser, start); -} - -void _Expat_XML_SetEndNamespaceDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_EndNamespaceDeclHandler end) -{ - XML_SetEndNamespaceDeclHandler(parser, end); -} - -void _Expat_XML_SetNamespaceDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartNamespaceDeclHandler start, XML_EndNamespaceDeclHandler end) -{ - XML_SetNamespaceDeclHandler(parser, start, end); -} - -void _Expat_XML_SetXmlDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_XmlDeclHandler handler) -{ - XML_SetXmlDeclHandler(parser, handler); -} - -void _Expat_XML_SetStartDoctypeDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartDoctypeDeclHandler start) -{ - XML_SetStartDoctypeDeclHandler(parser, start); -} - -void _Expat_XML_SetEndDoctypeDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_EndDoctypeDeclHandler end) -{ - XML_SetEndDoctypeDeclHandler(parser, end); -} - -void _Expat_XML_SetDoctypeDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartDoctypeDeclHandler start, XML_EndDoctypeDeclHandler end) -{ - XML_SetDoctypeDeclHandler(parser, start, end); -} - -void _Expat_XML_SetElementDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_ElementDeclHandler eldecl) -{ - XML_SetElementDeclHandler(parser, eldecl); -} - -void _Expat_XML_SetAttlistDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_AttlistDeclHandler attdecl) -{ - XML_SetAttlistDeclHandler(parser, attdecl); -} - -void _Expat_XML_SetEntityDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_EntityDeclHandler handler) -{ - XML_SetEntityDeclHandler(parser, handler); -} - -void _Expat_XML_SetUnparsedEntityDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_UnparsedEntityDeclHandler handler) -{ - XML_SetUnparsedEntityDeclHandler(parser, handler); -} - -void _Expat_XML_SetNotationDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_NotationDeclHandler handler) -{ - XML_SetNotationDeclHandler(parser, handler); -} - -void _Expat_XML_SetNotStandaloneHandler(struct ExpatIFace * Self, XML_Parser parser, XML_NotStandaloneHandler handler) -{ - XML_SetNotStandaloneHandler(parser, handler); -} - -enum XML_Error _Expat_XML_GetErrorCode(struct ExpatIFace * Self, XML_Parser parser) -{ - return XML_GetErrorCode(parser); -} - -const XML_LChar * _Expat_XML_ErrorString(struct ExpatIFace * Self, enum XML_Error code) -{ - return XML_ErrorString(code); -} - -long _Expat_XML_GetCurrentByteIndex(struct ExpatIFace * Self, XML_Parser parser) -{ - return XML_GetCurrentByteIndex(parser); -} - -int _Expat_XML_GetCurrentLineNumber(struct ExpatIFace * Self, XML_Parser parser) -{ - return XML_GetCurrentLineNumber(parser); -} - -int _Expat_XML_GetCurrentColumnNumber(struct ExpatIFace * Self, XML_Parser parser) -{ - return XML_GetCurrentColumnNumber(parser); -} - -int _Expat_XML_GetCurrentByteCount(struct ExpatIFace * Self, XML_Parser parser) -{ - return XML_GetCurrentByteCount(parser); -} - -const char * _Expat_XML_GetInputContext(struct ExpatIFace * Self, XML_Parser parser, int * offset, int * size) -{ - return XML_GetInputContext(parser, offset, size); -} - -void _Expat_XML_SetUserData(struct ExpatIFace * Self, XML_Parser parser, void * userData) -{ - XML_SetUserData(parser, userData); -} - -void _Expat_XML_DefaultCurrent(struct ExpatIFace * Self, XML_Parser parser) -{ - XML_DefaultCurrent(parser); -} - -void _Expat_XML_UseParserAsHandlerArg(struct ExpatIFace * Self, XML_Parser parser) -{ - XML_UseParserAsHandlerArg(parser); -} - -enum XML_Status _Expat_XML_SetBase(struct ExpatIFace * Self, XML_Parser parser, const XML_Char *p) -{ - return XML_SetBase(parser, p); -} - -const XML_Char * _Expat_XML_GetBase(struct ExpatIFace * Self, XML_Parser parser) -{ - return XML_GetBase(parser); -} - -int _Expat_XML_GetSpecifiedAttributeCount(struct ExpatIFace * Self, XML_Parser parser) -{ - return XML_GetSpecifiedAttributeCount(parser); -} - -int _Expat_XML_GetIdAttributeIndex(struct ExpatIFace * Self, XML_Parser parser) -{ - return XML_GetIdAttributeIndex(parser); -} - -enum XML_Status _Expat_XML_SetEncoding(struct ExpatIFace * Self, XML_Parser parser, const XML_Char *encoding) -{ - return XML_SetEncoding(parser, encoding); -} - -int _Expat_XML_SetParamEntityParsing(struct ExpatIFace * Self, XML_Parser parser, enum XML_ParamEntityParsing parsing) -{ - return XML_SetParamEntityParsing(parser, parsing); -} - -void _Expat_XML_SetReturnNSTriplet(struct ExpatIFace * Self, XML_Parser parser, int do_nst) -{ - XML_SetReturnNSTriplet(parser, do_nst); -} - -const XML_LChar * _Expat_XML_ExpatVersion(struct ExpatIFace * Self) -{ - return XML_ExpatVersion(); -} - -XML_Expat_Version _Expat_XML_ExpatVersionInfo(struct ExpatIFace * Self) -{ - return XML_ExpatVersionInfo(); -} - -XML_Bool _Expat_XML_ParserReset(struct ExpatIFace * Self, XML_Parser parser, const XML_Char *encoding) -{ - return XML_ParserReset(parser, encoding); -} - -void _Expat_XML_SetSkippedEntityHandler(struct ExpatIFace * Self, XML_Parser parser, XML_SkippedEntityHandler handler) -{ - XML_SetSkippedEntityHandler(parser, handler); -} - -enum XML_Error _Expat_XML_UseForeignDTD(struct ExpatIFace * Self, XML_Parser parser, XML_Bool useDTD) -{ - return XML_UseForeignDTD(parser, useDTD); -} - -const XML_Feature * _Expat_XML_GetFeatureList(struct ExpatIFace * Self) -{ - return XML_GetFeatureList(); -} - -enum XML_Status _Expat_XML_StopParser(struct ExpatIFace * Self, XML_Parser parser, XML_Bool resumable) -{ - return XML_StopParser(parser, resumable); -} - -enum XML_Status _Expat_XML_ResumeParser(struct ExpatIFace * Self, XML_Parser parser) -{ - return XML_ResumeParser(parser); -} - -void _Expat_XML_GetParsingStatus(struct ExpatIFace * Self, XML_Parser parser, XML_ParsingStatus * status) -{ - XML_GetParsingStatus(parser, status); -} - -void _Expat_XML_FreeContentModel(struct ExpatIFace * Self, XML_Parser parser, XML_Content * model) -{ - XML_FreeContentModel(parser, model); -} - -void * _Expat_XML_MemMalloc(struct ExpatIFace * Self, XML_Parser parser, size_t size) -{ - return XML_MemMalloc(parser, size); -} - -void * _Expat_XML_MemRealloc(struct ExpatIFace * Self, XML_Parser parser, void * ptr, size_t size) -{ - XML_MemRealloc(parser, ptr, size); -} - -void _Expat_XML_MemFree(struct ExpatIFace * Self, XML_Parser parser, void * ptr) -{ - XML_MemFree(parser, ptr); -} diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/include/inline4/expat.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/include/inline4/expat.h deleted file mode 100644 index 1e3105d..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/include/inline4/expat.h +++ /dev/null @@ -1,94 +0,0 @@ -#ifndef INLINE4_EXPAT_H -#define INLINE4_EXPAT_H - -/* -** This file was auto generated by idltool 51.6. -** -** It provides compatibility to OS3 style library -** calls by substituting functions. -** -** Do not edit manually. -*/ - -#ifndef EXEC_TYPES_H -#include -#endif -#ifndef EXEC_EXEC_H -#include -#endif -#ifndef EXEC_INTERFACES_H -#include -#endif - -#ifndef LIBRARIES_EXPAT_H -#include -#endif - -/* Inline macros for Interface "main" */ -#define XML_ParserCreate(encodingName) IExpat->XML_ParserCreate(encodingName) -#define XML_ParserCreateNS(encodingName, nsSep) IExpat->XML_ParserCreateNS(encodingName, nsSep) -#define XML_ParserCreate_MM(encoding, memsuite, namespaceSeparator) IExpat->XML_ParserCreate_MM(encoding, memsuite, namespaceSeparator) -#define XML_ExternalEntityParserCreate(parser, context, encoding) IExpat->XML_ExternalEntityParserCreate(parser, context, encoding) -#define XML_ParserFree(parser) IExpat->XML_ParserFree(parser) -#define XML_Parse(parser, s, len, isFinal) IExpat->XML_Parse(parser, s, len, isFinal) -#define XML_ParseBuffer(parser, len, isFinal) IExpat->XML_ParseBuffer(parser, len, isFinal) -#define XML_GetBuffer(parser, len) IExpat->XML_GetBuffer(parser, len) -#define XML_SetStartElementHandler(parser, start) IExpat->XML_SetStartElementHandler(parser, start) -#define XML_SetEndElementHandler(parser, end) IExpat->XML_SetEndElementHandler(parser, end) -#define XML_SetElementHandler(parser, start, end) IExpat->XML_SetElementHandler(parser, start, end) -#define XML_SetCharacterDataHandler(parser, handler) IExpat->XML_SetCharacterDataHandler(parser, handler) -#define XML_SetProcessingInstructionHandler(parser, handler) IExpat->XML_SetProcessingInstructionHandler(parser, handler) -#define XML_SetCommentHandler(parser, handler) IExpat->XML_SetCommentHandler(parser, handler) -#define XML_SetStartCdataSectionHandler(parser, start) IExpat->XML_SetStartCdataSectionHandler(parser, start) -#define XML_SetEndCdataSectionHandler(parser, end) IExpat->XML_SetEndCdataSectionHandler(parser, end) -#define XML_SetCdataSectionHandler(parser, start, end) IExpat->XML_SetCdataSectionHandler(parser, start, end) -#define XML_SetDefaultHandler(parser, handler) IExpat->XML_SetDefaultHandler(parser, handler) -#define XML_SetDefaultHandlerExpand(parser, handler) IExpat->XML_SetDefaultHandlerExpand(parser, handler) -#define XML_SetExternalEntityRefHandler(parser, handler) IExpat->XML_SetExternalEntityRefHandler(parser, handler) -#define XML_SetExternalEntityRefHandlerArg(parser, arg) IExpat->XML_SetExternalEntityRefHandlerArg(parser, arg) -#define XML_SetUnknownEncodingHandler(parser, handler, data) IExpat->XML_SetUnknownEncodingHandler(parser, handler, data) -#define XML_SetStartNamespaceDeclHandler(parser, start) IExpat->XML_SetStartNamespaceDeclHandler(parser, start) -#define XML_SetEndNamespaceDeclHandler(parser, end) IExpat->XML_SetEndNamespaceDeclHandler(parser, end) -#define XML_SetNamespaceDeclHandler(parser, start, end) IExpat->XML_SetNamespaceDeclHandler(parser, start, end) -#define XML_SetXmlDeclHandler(parser, handler) IExpat->XML_SetXmlDeclHandler(parser, handler) -#define XML_SetStartDoctypeDeclHandler(parser, start) IExpat->XML_SetStartDoctypeDeclHandler(parser, start) -#define XML_SetEndDoctypeDeclHandler(parser, end) IExpat->XML_SetEndDoctypeDeclHandler(parser, end) -#define XML_SetDoctypeDeclHandler(parser, start, end) IExpat->XML_SetDoctypeDeclHandler(parser, start, end) -#define XML_SetElementDeclHandler(parser, eldecl) IExpat->XML_SetElementDeclHandler(parser, eldecl) -#define XML_SetAttlistDeclHandler(parser, attdecl) IExpat->XML_SetAttlistDeclHandler(parser, attdecl) -#define XML_SetEntityDeclHandler(parser, handler) IExpat->XML_SetEntityDeclHandler(parser, handler) -#define XML_SetUnparsedEntityDeclHandler(parser, handler) IExpat->XML_SetUnparsedEntityDeclHandler(parser, handler) -#define XML_SetNotationDeclHandler(parser, handler) IExpat->XML_SetNotationDeclHandler(parser, handler) -#define XML_SetNotStandaloneHandler(parser, handler) IExpat->XML_SetNotStandaloneHandler(parser, handler) -#define XML_GetErrorCode(parser) IExpat->XML_GetErrorCode(parser) -#define XML_ErrorString(code) IExpat->XML_ErrorString(code) -#define XML_GetCurrentByteIndex(parser) IExpat->XML_GetCurrentByteIndex(parser) -#define XML_GetCurrentLineNumber(parser) IExpat->XML_GetCurrentLineNumber(parser) -#define XML_GetCurrentColumnNumber(parser) IExpat->XML_GetCurrentColumnNumber(parser) -#define XML_GetCurrentByteCount(parser) IExpat->XML_GetCurrentByteCount(parser) -#define XML_GetInputContext(parser, offset, size) IExpat->XML_GetInputContext(parser, offset, size) -#define XML_SetUserData(parser, userData) IExpat->XML_SetUserData(parser, userData) -#define XML_DefaultCurrent(parser) IExpat->XML_DefaultCurrent(parser) -#define XML_UseParserAsHandlerArg(parser) IExpat->XML_UseParserAsHandlerArg(parser) -#define XML_SetBase(parser, base) IExpat->XML_SetBase(parser, base) -#define XML_GetBase(parser) IExpat->XML_GetBase(parser) -#define XML_GetSpecifiedAttributeCount(parser) IExpat->XML_GetSpecifiedAttributeCount(parser) -#define XML_GetIdAttributeIndex(parser) IExpat->XML_GetIdAttributeIndex(parser) -#define XML_SetEncoding(parser, encoding) IExpat->XML_SetEncoding(parser, encoding) -#define XML_SetParamEntityParsing(parser, parsing) IExpat->XML_SetParamEntityParsing(parser, parsing) -#define XML_SetReturnNSTriplet(parser, do_nst) IExpat->XML_SetReturnNSTriplet(parser, do_nst) -#define XML_ExpatVersion() IExpat->XML_ExpatVersion() -#define XML_ExpatVersionInfo() IExpat->XML_ExpatVersionInfo() -#define XML_ParserReset(parser, encoding) IExpat->XML_ParserReset(parser, encoding) -#define XML_SetSkippedEntityHandler(parser, handler) IExpat->XML_SetSkippedEntityHandler(parser, handler) -#define XML_UseForeignDTD(parser, useDTD) IExpat->XML_UseForeignDTD(parser, useDTD) -#define XML_GetFeatureList() IExpat->XML_GetFeatureList() -#define XML_StopParser(parser, resumable) IExpat->XML_StopParser(parser, resumable) -#define XML_ResumeParser(parser) IExpat->XML_ResumeParser(parser) -#define XML_GetParsingStatus(parser, status) IExpat->XML_GetParsingStatus(parser, status) -#define XML_FreeContentModel(parser, model) IExpat->XML_FreeContentModel(parser, model) -#define XML_MemMalloc(parser, size) IExpat->XML_MemMalloc(parser, size) -#define XML_MemRealloc(parser, ptr, size) IExpat->XML_MemRealloc(parser, ptr, size) -#define XML_MemFree(parser, ptr) IExpat->XML_MemFree(parser, ptr) - -#endif /* INLINE4_EXPAT_H */ diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/include/interfaces/expat.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/include/interfaces/expat.h deleted file mode 100644 index e9bdf4a..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/include/interfaces/expat.h +++ /dev/null @@ -1,98 +0,0 @@ -#ifndef EXPAT_INTERFACE_DEF_H -#define EXPAT_INTERFACE_DEF_H - -/* -** This file was machine generated by idltool 51.6. -** Do not edit -*/ - -#ifndef EXEC_TYPES_H -#include -#endif -#ifndef EXEC_EXEC_H -#include -#endif -#ifndef EXEC_INTERFACES_H -#include -#endif - -#ifndef LIBRARIES_EXPAT_H -#include -#endif - -struct ExpatIFace -{ - struct InterfaceData Data; - - uint32 APICALL (*Obtain)(struct ExpatIFace *Self); - uint32 APICALL (*Release)(struct ExpatIFace *Self); - void APICALL (*Expunge)(struct ExpatIFace *Self); - struct Interface * APICALL (*Clone)(struct ExpatIFace *Self); - XML_Parser APICALL (*XML_ParserCreate)(struct ExpatIFace *Self, const XML_Char * encodingName); - XML_Parser APICALL (*XML_ParserCreateNS)(struct ExpatIFace *Self, const XML_Char * encodingName, XML_Char nsSep); - XML_Parser APICALL (*XML_ParserCreate_MM)(struct ExpatIFace *Self, const XML_Char * encoding, const XML_Memory_Handling_Suite * memsuite, const XML_Char * namespaceSeparator); - XML_Parser APICALL (*XML_ExternalEntityParserCreate)(struct ExpatIFace *Self, XML_Parser parser, const XML_Char * context, const XML_Char * encoding); - void APICALL (*XML_ParserFree)(struct ExpatIFace *Self, XML_Parser parser); - enum XML_Status APICALL (*XML_Parse)(struct ExpatIFace *Self, XML_Parser parser, const char * s, int len, int isFinal); - enum XML_Status APICALL (*XML_ParseBuffer)(struct ExpatIFace *Self, XML_Parser parser, int len, int isFinal); - void * APICALL (*XML_GetBuffer)(struct ExpatIFace *Self, XML_Parser parser, int len); - void APICALL (*XML_SetStartElementHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_StartElementHandler start); - void APICALL (*XML_SetEndElementHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_EndElementHandler end); - void APICALL (*XML_SetElementHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_StartElementHandler start, XML_EndElementHandler end); - void APICALL (*XML_SetCharacterDataHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_CharacterDataHandler handler); - void APICALL (*XML_SetProcessingInstructionHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_ProcessingInstructionHandler handler); - void APICALL (*XML_SetCommentHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_CommentHandler handler); - void APICALL (*XML_SetStartCdataSectionHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_StartCdataSectionHandler start); - void APICALL (*XML_SetEndCdataSectionHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_EndCdataSectionHandler end); - void APICALL (*XML_SetCdataSectionHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_StartCdataSectionHandler start, XML_EndCdataSectionHandler end); - void APICALL (*XML_SetDefaultHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_DefaultHandler handler); - void APICALL (*XML_SetDefaultHandlerExpand)(struct ExpatIFace *Self, XML_Parser parser, XML_DefaultHandler handler); - void APICALL (*XML_SetExternalEntityRefHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_ExternalEntityRefHandler handler); - void APICALL (*XML_SetExternalEntityRefHandlerArg)(struct ExpatIFace *Self, XML_Parser parser, void * arg); - void APICALL (*XML_SetUnknownEncodingHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_UnknownEncodingHandler handler, void * data); - void APICALL (*XML_SetStartNamespaceDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_StartNamespaceDeclHandler start); - void APICALL (*XML_SetEndNamespaceDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_EndNamespaceDeclHandler end); - void APICALL (*XML_SetNamespaceDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_StartNamespaceDeclHandler start, XML_EndNamespaceDeclHandler end); - void APICALL (*XML_SetXmlDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_XmlDeclHandler handler); - void APICALL (*XML_SetStartDoctypeDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_StartDoctypeDeclHandler start); - void APICALL (*XML_SetEndDoctypeDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_EndDoctypeDeclHandler end); - void APICALL (*XML_SetDoctypeDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_StartDoctypeDeclHandler start, XML_EndDoctypeDeclHandler end); - void APICALL (*XML_SetElementDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_ElementDeclHandler eldecl); - void APICALL (*XML_SetAttlistDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_AttlistDeclHandler attdecl); - void APICALL (*XML_SetEntityDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_EntityDeclHandler handler); - void APICALL (*XML_SetUnparsedEntityDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_UnparsedEntityDeclHandler handler); - void APICALL (*XML_SetNotationDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_NotationDeclHandler handler); - void APICALL (*XML_SetNotStandaloneHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_NotStandaloneHandler handler); - enum XML_Error APICALL (*XML_GetErrorCode)(struct ExpatIFace *Self, XML_Parser parser); - const XML_LChar * APICALL (*XML_ErrorString)(struct ExpatIFace *Self, enum XML_Error code); - long APICALL (*XML_GetCurrentByteIndex)(struct ExpatIFace *Self, XML_Parser parser); - int APICALL (*XML_GetCurrentLineNumber)(struct ExpatIFace *Self, XML_Parser parser); - int APICALL (*XML_GetCurrentColumnNumber)(struct ExpatIFace *Self, XML_Parser parser); - int APICALL (*XML_GetCurrentByteCount)(struct ExpatIFace *Self, XML_Parser parser); - const char * APICALL (*XML_GetInputContext)(struct ExpatIFace *Self, XML_Parser parser, int * offset, int * size); - void APICALL (*XML_SetUserData)(struct ExpatIFace *Self, XML_Parser parser, void * userData); - void APICALL (*XML_DefaultCurrent)(struct ExpatIFace *Self, XML_Parser parser); - void APICALL (*XML_UseParserAsHandlerArg)(struct ExpatIFace *Self, XML_Parser parser); - enum XML_Status APICALL (*XML_SetBase)(struct ExpatIFace *Self, XML_Parser parser, const XML_Char * base); - const XML_Char * APICALL (*XML_GetBase)(struct ExpatIFace *Self, XML_Parser parser); - int APICALL (*XML_GetSpecifiedAttributeCount)(struct ExpatIFace *Self, XML_Parser parser); - int APICALL (*XML_GetIdAttributeIndex)(struct ExpatIFace *Self, XML_Parser parser); - enum XML_Status APICALL (*XML_SetEncoding)(struct ExpatIFace *Self, XML_Parser parser, const XML_Char * encoding); - int APICALL (*XML_SetParamEntityParsing)(struct ExpatIFace *Self, XML_Parser parser, enum XML_ParamEntityParsing parsing); - void APICALL (*XML_SetReturnNSTriplet)(struct ExpatIFace *Self, XML_Parser parser, int do_nst); - const XML_LChar * APICALL (*XML_ExpatVersion)(struct ExpatIFace *Self); - XML_Expat_Version APICALL (*XML_ExpatVersionInfo)(struct ExpatIFace *Self); - XML_Bool APICALL (*XML_ParserReset)(struct ExpatIFace *Self, XML_Parser parser, const XML_Char * encoding); - void APICALL (*XML_SetSkippedEntityHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_SkippedEntityHandler handler); - enum XML_Error APICALL (*XML_UseForeignDTD)(struct ExpatIFace *Self, XML_Parser parser, XML_Bool useDTD); - const XML_Feature * APICALL (*XML_GetFeatureList)(struct ExpatIFace *Self); - enum XML_Status APICALL (*XML_StopParser)(struct ExpatIFace *Self, XML_Parser parser, XML_Bool resumable); - enum XML_Status APICALL (*XML_ResumeParser)(struct ExpatIFace *Self, XML_Parser parser); - void APICALL (*XML_GetParsingStatus)(struct ExpatIFace *Self, XML_Parser parser, XML_ParsingStatus * status); - void APICALL (*XML_FreeContentModel)(struct ExpatIFace *Self, XML_Parser parser, XML_Content * model); - void * APICALL (*XML_MemMalloc)(struct ExpatIFace *Self, XML_Parser parser, size_t size); - void * APICALL (*XML_MemRealloc)(struct ExpatIFace *Self, XML_Parser parser, void * ptr, size_t size); - void APICALL (*XML_MemFree)(struct ExpatIFace *Self, XML_Parser parser, void * ptr); -}; - -#endif /* EXPAT_INTERFACE_DEF_H */ diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/include/libraries/expat.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/include/libraries/expat.h deleted file mode 100644 index 1b57387..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/include/libraries/expat.h +++ /dev/null @@ -1,566 +0,0 @@ -#ifndef LIBRARIES_EXPAT_H -#define LIBRARIES_EXPAT_H - -/* -** Copyright (c) 2001-2007 Expat maintainers. -** -** 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: -** -** The above copyright notice and this permission notice shall be included -** in all copies or substantial portions of the Software. -** -** 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. -*/ - - -/****************************************************************************/ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __GNUC__ - #ifdef __PPC__ - #pragma pack(2) - #endif -#elif defined(__VBCC__) - #pragma amiga-align -#endif - -/****************************************************************************/ - - -#include - -#ifndef XMLCALL -#define XMLCALL -#endif - -typedef char XML_Char; -typedef char XML_LChar; -typedef long XML_Index; -typedef unsigned long XML_Size; - -struct XML_ParserStruct; -typedef struct XML_ParserStruct *XML_Parser; - -typedef unsigned char XML_Bool; -#define XML_TRUE ((XML_Bool) 1) -#define XML_FALSE ((XML_Bool) 0) - -enum XML_Status { - XML_STATUS_ERROR = 0, -#define XML_STATUS_ERROR XML_STATUS_ERROR - XML_STATUS_OK = 1, -#define XML_STATUS_OK XML_STATUS_OK - XML_STATUS_SUSPENDED = 2, -#define XML_STATUS_SUSPENDED XML_STATUS_SUSPENDED -}; - -enum XML_Error { - XML_ERROR_NONE, - XML_ERROR_NO_MEMORY, - XML_ERROR_SYNTAX, - XML_ERROR_NO_ELEMENTS, - XML_ERROR_INVALID_TOKEN, - XML_ERROR_UNCLOSED_TOKEN, - XML_ERROR_PARTIAL_CHAR, - XML_ERROR_TAG_MISMATCH, - XML_ERROR_DUPLICATE_ATTRIBUTE, - XML_ERROR_JUNK_AFTER_DOC_ELEMENT, - XML_ERROR_PARAM_ENTITY_REF, - XML_ERROR_UNDEFINED_ENTITY, - XML_ERROR_RECURSIVE_ENTITY_REF, - XML_ERROR_ASYNC_ENTITY, - XML_ERROR_BAD_CHAR_REF, - XML_ERROR_BINARY_ENTITY_REF, - XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF, - XML_ERROR_MISPLACED_XML_PI, - XML_ERROR_UNKNOWN_ENCODING, - XML_ERROR_INCORRECT_ENCODING, - XML_ERROR_UNCLOSED_CDATA_SECTION, - XML_ERROR_EXTERNAL_ENTITY_HANDLING, - XML_ERROR_NOT_STANDALONE, - XML_ERROR_UNEXPECTED_STATE, - XML_ERROR_ENTITY_DECLARED_IN_PE, - XML_ERROR_FEATURE_REQUIRES_XML_DTD, - XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING, - XML_ERROR_UNBOUND_PREFIX, - XML_ERROR_UNDECLARING_PREFIX, - XML_ERROR_INCOMPLETE_PE, - XML_ERROR_XML_DECL, - XML_ERROR_TEXT_DECL, - XML_ERROR_PUBLICID, - XML_ERROR_SUSPENDED, - XML_ERROR_NOT_SUSPENDED, - XML_ERROR_ABORTED, - XML_ERROR_FINISHED, - XML_ERROR_SUSPEND_PE, - XML_ERROR_RESERVED_PREFIX_XML, - XML_ERROR_RESERVED_PREFIX_XMLNS, - XML_ERROR_RESERVED_NAMESPACE_URI -}; - -enum XML_Content_Type { - XML_CTYPE_EMPTY = 1, - XML_CTYPE_ANY, - XML_CTYPE_MIXED, - XML_CTYPE_NAME, - XML_CTYPE_CHOICE, - XML_CTYPE_SEQ -}; - -enum XML_Content_Quant { - XML_CQUANT_NONE, - XML_CQUANT_OPT, - XML_CQUANT_REP, - XML_CQUANT_PLUS -}; - -typedef struct XML_cp XML_Content; - -struct XML_cp { - enum XML_Content_Type type; - enum XML_Content_Quant quant; - XML_Char * name; - unsigned int numchildren; - XML_Content * children; -}; - - -typedef void (*XML_ElementDeclHandler) (void *userData, - const XML_Char *name, - XML_Content *model); - -void -XML_SetElementDeclHandler(XML_Parser parser, - XML_ElementDeclHandler eldecl); - -typedef void (*XML_AttlistDeclHandler) ( - void *userData, - const XML_Char *elname, - const XML_Char *attname, - const XML_Char *att_type, - const XML_Char *dflt, - int isrequired); - -void -XML_SetAttlistDeclHandler(XML_Parser parser, - XML_AttlistDeclHandler attdecl); - -typedef void (*XML_XmlDeclHandler) (void *userData, - const XML_Char *version, - const XML_Char *encoding, - int standalone); - -void -XML_SetXmlDeclHandler(XML_Parser parser, - XML_XmlDeclHandler xmldecl); - - -typedef struct { - void *(*malloc_fcn)(size_t size); - void *(*realloc_fcn)(void *ptr, size_t size); - void (*free_fcn)(void *ptr); -} XML_Memory_Handling_Suite; - -XML_Parser -XML_ParserCreate(const XML_Char *encoding); - -XML_Parser -XML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator); - - -XML_Parser -XML_ParserCreate_MM(const XML_Char *encoding, - const XML_Memory_Handling_Suite *memsuite, - const XML_Char *namespaceSeparator); - -XML_Bool -XML_ParserReset(XML_Parser parser, const XML_Char *encoding); - -typedef void (*XML_StartElementHandler) (void *userData, - const XML_Char *name, - const XML_Char **atts); - -typedef void (*XML_EndElementHandler) (void *userData, - const XML_Char *name); - - -typedef void (*XML_CharacterDataHandler) (void *userData, - const XML_Char *s, - int len); - -typedef void (*XML_ProcessingInstructionHandler) ( - void *userData, - const XML_Char *target, - const XML_Char *data); - -typedef void (*XML_CommentHandler) (void *userData, - const XML_Char *data); - -typedef void (*XML_StartCdataSectionHandler) (void *userData); -typedef void (*XML_EndCdataSectionHandler) (void *userData); - -typedef void (*XML_DefaultHandler) (void *userData, - const XML_Char *s, - int len); - -typedef void (*XML_StartDoctypeDeclHandler) ( - void *userData, - const XML_Char *doctypeName, - const XML_Char *sysid, - const XML_Char *pubid, - int has_internal_subset); - -typedef void (*XML_EndDoctypeDeclHandler)(void *userData); - -typedef void (*XML_EntityDeclHandler) ( - void *userData, - const XML_Char *entityName, - int is_parameter_entity, - const XML_Char *value, - int value_length, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId, - const XML_Char *notationName); - -void -XML_SetEntityDeclHandler(XML_Parser parser, - XML_EntityDeclHandler handler); - -typedef void (*XML_UnparsedEntityDeclHandler) ( - void *userData, - const XML_Char *entityName, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId, - const XML_Char *notationName); - -typedef void (*XML_NotationDeclHandler) ( - void *userData, - const XML_Char *notationName, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId); - -typedef void (*XML_StartNamespaceDeclHandler) ( - void *userData, - const XML_Char *prefix, - const XML_Char *uri); - -typedef void (*XML_EndNamespaceDeclHandler) ( - void *userData, - const XML_Char *prefix); - -typedef int (*XML_NotStandaloneHandler) (void *userData); - -typedef int (*XML_ExternalEntityRefHandler) ( - XML_Parser parser, - const XML_Char *context, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId); - -typedef void (*XML_SkippedEntityHandler) ( - void *userData, - const XML_Char *entityName, - int is_parameter_entity); - -typedef struct { - int map[256]; - void *data; - int (*convert)(void *data, const char *s); - void (*release)(void *data); -} XML_Encoding; - -typedef int (*XML_UnknownEncodingHandler) ( - void *encodingHandlerData, - const XML_Char *name, - XML_Encoding *info); - -void -XML_SetElementHandler(XML_Parser parser, - XML_StartElementHandler start, - XML_EndElementHandler end); - -void -XML_SetStartElementHandler(XML_Parser parser, - XML_StartElementHandler handler); - -void -XML_SetEndElementHandler(XML_Parser parser, - XML_EndElementHandler handler); - -void -XML_SetCharacterDataHandler(XML_Parser parser, - XML_CharacterDataHandler handler); - -void -XML_SetProcessingInstructionHandler(XML_Parser parser, - XML_ProcessingInstructionHandler handler); -void -XML_SetCommentHandler(XML_Parser parser, - XML_CommentHandler handler); - -void -XML_SetCdataSectionHandler(XML_Parser parser, - XML_StartCdataSectionHandler start, - XML_EndCdataSectionHandler end); - -void -XML_SetStartCdataSectionHandler(XML_Parser parser, - XML_StartCdataSectionHandler start); - -void -XML_SetEndCdataSectionHandler(XML_Parser parser, - XML_EndCdataSectionHandler end); - -void -XML_SetDefaultHandler(XML_Parser parser, - XML_DefaultHandler handler); - -void -XML_SetDefaultHandlerExpand(XML_Parser parser, - XML_DefaultHandler handler); - -void -XML_SetDoctypeDeclHandler(XML_Parser parser, - XML_StartDoctypeDeclHandler start, - XML_EndDoctypeDeclHandler end); - -void -XML_SetStartDoctypeDeclHandler(XML_Parser parser, - XML_StartDoctypeDeclHandler start); - -void -XML_SetEndDoctypeDeclHandler(XML_Parser parser, - XML_EndDoctypeDeclHandler end); - -void -XML_SetUnparsedEntityDeclHandler(XML_Parser parser, - XML_UnparsedEntityDeclHandler handler); - -void -XML_SetNotationDeclHandler(XML_Parser parser, - XML_NotationDeclHandler handler); - -void -XML_SetNamespaceDeclHandler(XML_Parser parser, - XML_StartNamespaceDeclHandler start, - XML_EndNamespaceDeclHandler end); - -void -XML_SetStartNamespaceDeclHandler(XML_Parser parser, - XML_StartNamespaceDeclHandler start); - -void -XML_SetEndNamespaceDeclHandler(XML_Parser parser, - XML_EndNamespaceDeclHandler end); - -void -XML_SetNotStandaloneHandler(XML_Parser parser, - XML_NotStandaloneHandler handler); - -void -XML_SetExternalEntityRefHandler(XML_Parser parser, - XML_ExternalEntityRefHandler handler); - -void -XML_SetExternalEntityRefHandlerArg(XML_Parser parser, - void *arg); - -void -XML_SetSkippedEntityHandler(XML_Parser parser, - XML_SkippedEntityHandler handler); - -void -XML_SetUnknownEncodingHandler(XML_Parser parser, - XML_UnknownEncodingHandler handler, - void *encodingHandlerData); - -void -XML_DefaultCurrent(XML_Parser parser); - -void -XML_SetReturnNSTriplet(XML_Parser parser, int do_nst); - -void -XML_SetUserData(XML_Parser parser, void *userData); - -#define XML_GetUserData(parser) (*(void **)(parser)) - -enum XML_Status -XML_SetEncoding(XML_Parser parser, const XML_Char *encoding); - -void -XML_UseParserAsHandlerArg(XML_Parser parser); - -enum XML_Error -XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD); - - -enum XML_Status -XML_SetBase(XML_Parser parser, const XML_Char *base); - -const XML_Char * -XML_GetBase(XML_Parser parser); - -int -XML_GetSpecifiedAttributeCount(XML_Parser parser); - -int -XML_GetIdAttributeIndex(XML_Parser parser); - -enum XML_Status -XML_Parse(XML_Parser parser, const char *s, int len, int isFinal); - -void * -XML_GetBuffer(XML_Parser parser, int len); - -enum XML_Status -XML_ParseBuffer(XML_Parser parser, int len, int isFinal); - -enum XML_Status -XML_StopParser(XML_Parser parser, XML_Bool resumable); - -enum XML_Status -XML_ResumeParser(XML_Parser parser); - -enum XML_Parsing { - XML_INITIALIZED, - XML_PARSING, - XML_FINISHED, - XML_SUSPENDED -}; - -typedef struct { - enum XML_Parsing parsing; - XML_Bool finalBuffer; -} XML_ParsingStatus; - -void -XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status); - -XML_Parser -XML_ExternalEntityParserCreate(XML_Parser parser, - const XML_Char *context, - const XML_Char *encoding); - -enum XML_ParamEntityParsing { - XML_PARAM_ENTITY_PARSING_NEVER, - XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE, - XML_PARAM_ENTITY_PARSING_ALWAYS -}; - -int -XML_SetParamEntityParsing(XML_Parser parser, - enum XML_ParamEntityParsing parsing); - -enum XML_Error -XML_GetErrorCode(XML_Parser parser); - -int XML_GetCurrentLineNumber(XML_Parser parser); -int XML_GetCurrentColumnNumber(XML_Parser parser); -long XML_GetCurrentByteIndex(XML_Parser parser); - -int -XML_GetCurrentByteCount(XML_Parser parser); - -const char * -XML_GetInputContext(XML_Parser parser, - int *offset, - int *size); - -#define XML_GetErrorLineNumber XML_GetCurrentLineNumber -#define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber -#define XML_GetErrorByteIndex XML_GetCurrentByteIndex - -void -XML_FreeContentModel(XML_Parser parser, XML_Content *model); - -void * -XML_MemMalloc(XML_Parser parser, size_t size); - -void * -XML_MemRealloc(XML_Parser parser, void *ptr, size_t size); - -void -XML_MemFree(XML_Parser parser, void *ptr); - -void -XML_ParserFree(XML_Parser parser); - -const XML_LChar * -XML_ErrorString(enum XML_Error code); - -const XML_LChar * -XML_ExpatVersion(void); - -typedef struct { - int major; - int minor; - int micro; -} XML_Expat_Version; - -XML_Expat_Version -XML_ExpatVersionInfo(void); - -enum XML_FeatureEnum { - XML_FEATURE_END = 0, - XML_FEATURE_UNICODE, - XML_FEATURE_UNICODE_WCHAR_T, - XML_FEATURE_DTD, - XML_FEATURE_CONTEXT_BYTES, - XML_FEATURE_MIN_SIZE, - XML_FEATURE_SIZEOF_XML_CHAR, - XML_FEATURE_SIZEOF_XML_LCHAR, - XML_FEATURE_NS, - XML_FEATURE_LARGE_SIZE -}; - -typedef struct { - enum XML_FeatureEnum feature; - const XML_LChar *name; - long int value; -} XML_Feature; - -const XML_Feature * -XML_GetFeatureList(void); - - -#define XML_MAJOR_VERSION 2 -#define XML_MINOR_VERSION 0 -#define XML_MICRO_VERSION 1 - - -/****************************************************************************/ - -#ifdef __GNUC__ - #ifdef __PPC__ - #pragma pack() - #endif -#elif defined(__VBCC__) - #pragma default-align -#endif - -#ifdef __cplusplus -} -#endif - -/****************************************************************************/ - -#endif /* EXPAT_EXPAT_H */ diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/include/proto/expat.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/include/proto/expat.h deleted file mode 100644 index 90bf62c..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/include/proto/expat.h +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef PROTO_EXPAT_H -#define PROTO_EXPAT_H - -#ifndef LIBRARIES_EXPAT_H -#include -#endif - -/****************************************************************************/ - -#ifndef __NOLIBBASE__ - #ifndef __USE_BASETYPE__ - extern struct Library * ExpatBase; - #else - extern struct Library * ExpatBase; - #endif /* __USE_BASETYPE__ */ -#endif /* __NOLIBBASE__ */ - -/****************************************************************************/ - -#ifdef __amigaos4__ - #include - #ifdef __USE_INLINE__ - #include - #endif /* __USE_INLINE__ */ - #ifndef CLIB_EXPAT_PROTOS_H - #define CLIB_EXPAT_PROTOS_H 1 - #endif /* CLIB_EXPAT_PROTOS_H */ - #ifndef __NOGLOBALIFACE__ - extern struct ExpatIFace *IExpat; - #endif /* __NOGLOBALIFACE__ */ -#else /* __amigaos4__ */ - #ifndef CLIB_EXPAT_PROTOS_H - #include - #endif /* CLIB_EXPAT_PROTOS_H */ - #if defined(__GNUC__) - #ifndef __PPC__ - #include - #else - #include - #endif /* __PPC__ */ - #elif defined(__VBCC__) - #ifndef __PPC__ - #include - #endif /* __PPC__ */ - #else - #include - #endif /* __GNUC__ */ -#endif /* __amigaos4__ */ - -/****************************************************************************/ - -#endif /* PROTO_EXPAT_H */ diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/launch.c b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/launch.c deleted file mode 100755 index 20b069c..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/amiga/launch.c +++ /dev/null @@ -1,57 +0,0 @@ -/* -** Copyright (c) 2001-2009 Expat maintainers. -** -** 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: -** -** The above copyright notice and this permission notice shall be included -** in all copies or substantial portions of the Software. -** -** 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. -*/ - -#ifdef __USE_INLINE__ -#undef __USE_INLINE__ -#endif - -#include -#include - -struct Library* ExpatBase = 0; -struct ExpatIFace* IExpat = 0; - - -void setup() __attribute__((constructor)); -void cleanup() __attribute__((destructor)); - - -void setup() -{ - ExpatBase = IExec->OpenLibrary("expat.library", 53); - IExpat = (struct ExpatIFace*)IExec->GetInterface(ExpatBase, "main", 1, NULL); - - if ( IExpat == 0 ) { - IExec->DebugPrintF("Can't open expat.library\n"); - } -} - - -void cleanup() -{ - IExec->DropInterface((struct Interface*)IExpat); - IExpat = 0; - - IExec->CloseLibrary(ExpatBase); - ExpatBase = 0; -} diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/README.txt b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/README.txt deleted file mode 100644 index 486f1ca..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/README.txt +++ /dev/null @@ -1,87 +0,0 @@ - - Using a Borland compiler product - -The files in this directory support using both the free Borland command-line -compiler tools and the Borland C++ Builder IDE. The project files have been -tested with both versions 5 and 6 of the C++ Builder product. - - Using the free BCC32 command line compiler - -After downloading and installing the free C++ Builder commandline version, -perform the following steps (assuming it was installed under C:\Borland\BCC55): - -1) Add "C:\Borland\BCC55\BIN" to your path -2) Set the environment variable BCB to "C:\Borland\BCC55". -3) edit makefile.mak: enable or comment out the appropriate commands under - clean & distclean, depending on whether your OS can use deltree /y or - del /s/f/q. - -After that, you should simply cd to the bcb5 directory in your Expat directory -tree (same structure as CVS) and run "make all" or just "make". - - Naming - -The libraries have the base name "libexpat" followed optionally by an "s" -(static) or a "w" (unicode version), then an underscore and optionally -"mt" (multi-threaded) and "d" (dynamic RTL). - -To change the name of the library a project file produces, edit the project -option source (see step 1 under Unicode below) and change the name contained in -the PROJECT tag. In a make file, change the value assigned to the PROJECT -variable. Also, the LIBRARY entry in the .def file has to be changed to -correspond to the new executable name. - - - Unicode Considerations - -There are no facilities in the BCB 5 GUI to create a unicode-enabled -application. Fortunately, it is not hard to do by hand. - -1. The startup .obj system file must be changed to the unicode version. - Go to Project|Edit Option Source, and scroll down to the ALLOBJ tag. Change - c0x32.obj to c0x32w.obj. Editing this file can be quirky, but usually the - following kludge will make the change stick. Close and save the file - (CTRL-F4) then open the options dialog (CTRL-Shift-F11), then click OK on - the dialog immediately without changing anything in it. If this doesn't work, - you will have to close the project completely and edit the .bpr file by hand. - - If you are using a make file, just change the startup .obj file assigned - to the ALLOBJ variable. - -2. Add the macro define XML_UNICODE_WCHAR_T. In the GUI that goes in the options - dialog, Directories/Conditionals tab, in the Conditional define box. In a - make file, put it in the USERDEFINES variable. - -3. Of course, your code has to be written for unicode. As a start, the "main" - function is called "wmain". The tchar macros are an interesting way to - write code that can easily switch between unicode and utf-8. If these macros - are used, then simply adding the conditional define _UNICODE as well as - XML_UNICODE_WCHAR_T will bring in the unicode versions of the tchar macros. - Otherwise the utf-8 versions are used. xmlwf uses its own versions of the - tchar macros which are switched on and off by the XML_UNICODE macro, which - itself is set by the XML_UNICODE_WCHAR_T define. - - Threading - -The libexpat libraries are all built to link with the multi-threaded dynamic RTL's. -That means they require CC32xxMT.DLL present on the installation target. -To create single-threaded libs, do the following: - -1. The compiler option for multi-threading must be turned off. Following the - instructions above to edit the option source, remove the -tWM option from - the CFLAG1 tag. In a make file, remove it from the CFLAG1 variable. - -2. The single threaded RTL must be called. change the RTL in the ALLLIB tag or - variable (GUI or makefile repectively) to the version without the "mt" in the - name. For example, change cw32mti.lib to cw32i.lib. - - Static RTL's - -To build the libs with static RTL's do the following, - -1. For the static expatlibs, in the Tlib tab on the options dialog, uncheck the - "Use dynamic RTL" box. For the dynamic expatlibs, in the Linker tab on the - options dialog, uncheck "Use dynamic RTL". If you are using a make file, - remove the _RTLDLL assignment to the SYSDEFINES variable, and change the RTL - to the version without an "i" in the ALLLIB variable. For example, - cw32mti.lib would become cw32mt.lib. diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/all_projects.bpg b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/all_projects.bpg deleted file mode 100644 index 27c9a1c..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/all_projects.bpg +++ /dev/null @@ -1,49 +0,0 @@ -#------------------------------------------------------------------------------ -VERSION = BWS.01 -#------------------------------------------------------------------------------ -!ifndef ROOT -ROOT = $(MAKEDIR)\.. -!endif -#------------------------------------------------------------------------------ -MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** -DCC = $(ROOT)\bin\dcc32.exe $** -BRCC = $(ROOT)\bin\brcc32.exe $** -#------------------------------------------------------------------------------ -PROJECTS = setup libexpat_mtd.dll libexpats_mtd.lib libexpatw_mtd.dll \ - libexpatws_mtd.lib elements.exe outline.exe xmlwf.exe -#------------------------------------------------------------------------------ -default: $(PROJECTS) -#------------------------------------------------------------------------------ - -libexpat_mtd.dll: expat.bpr - $(ROOT)\bin\bpr2mak $** - $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak - -libexpats_mtd.lib: expat_static.bpr - $(ROOT)\bin\bpr2mak -t$(ROOT)\bin\deflib.bmk $** - $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak - -libexpatw_mtd.dll: expatw.bpr - $(ROOT)\bin\bpr2mak $** - $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak - -libexpatws_mtd.lib: expatw_static.bpr - $(ROOT)\bin\bpr2mak -t$(ROOT)\bin\deflib.bmk $** - $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak - -elements.exe: elements.bpr - $(ROOT)\bin\bpr2mak $** - $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak - -outline.exe: outline.bpr - $(ROOT)\bin\bpr2mak $** - $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak - -xmlwf.exe: xmlwf.bpr - $(ROOT)\bin\bpr2mak $** - $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak - -setup: setup.bat - call $** - - diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/elements.bpf b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/elements.bpf deleted file mode 100644 index 5c1e878..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/elements.bpf +++ /dev/null @@ -1,4 +0,0 @@ -USEUNIT("..\examples\elements.c"); -USELIB("Release\libexpats_mtd.lib"); -//--------------------------------------------------------------------------- -main diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/elements.bpr b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/elements.bpr deleted file mode 100644 index c21c0f5..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/elements.bpr +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[Version Info] -IncludeVerInfo=0 -AutoIncBuild=0 -MajorVer=1 -MinorVer=0 -Release=0 -Build=0 -Debug=0 -PreRelease=0 -Special=0 -Private=0 -DLL=0 -Locale=1033 -CodePage=1252 - -[Version Info Keys] -CompanyName= -FileDescription= -FileVersion=1.0.0.0 -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename= -ProductName= -ProductVersion=1.0.0.0 -Comments= - -[HistoryLists\hlIncludePath] -Count=4 -Item0=..\examples;$(BCB)\include -Item1=$(BCB)\include -Item2=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl -Item3=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl; - -[HistoryLists\hlLibraryPath] -Count=8 -Item0=..\examples;$(BCB)\lib;$(RELEASELIBPATH) -Item1=..\examples;$(BCB)\lib;..\examples\$(RELEASELIBPATH) -Item2=$(BCB)\lib;$(RELEASELIBPATH) -Item3=$(BCB)\lib;$(RELEASELIBPATH);..\lib\Release-w_static -Item4=$(BCB)\lib;$(RELEASELIBPATH);..\lib\Release_static -Item5=$(BCB)\lib;$(RELEASELIBPATH);C:\src\expat\lib\Release_static -Item6=$(BCB)\lib;$(RELEASELIBPATH);$(BCB)\lib\psdk -Item7=$(BCB)\lib;$(RELEASELIBPATH);;$(BCB)\lib\psdk; - -[HistoryLists\hlDebugSourcePath] -Count=1 -Item0=$(BCB)\source\vcl - -[HistoryLists\hlConditionals] -Count=17 -Item0=WIN32;NDEBUG;_CONSOLE;XML_STATIC -Item1=WIN32;NDEBUG;_CONSOLE;_DEBUG;XML_STATIC -Item2=WIN32;NDEBUG;_CONSOLE;_DEBUG;XML_UNICODE_WCHAR_T;_UNICODE;XML_STATIC -Item3=WIN32;NDEBUG;_CONSOLE;_DEBUG;XML_UNICODE_WCHAR_T;_UNICODE -Item4=WIN32;NDEBUG;_CONSOLE;_DEBUG -Item5=WIN32;NDEBUG;_CONSOLE;XML_STATIC;_DEBUG -Item6=WIN32;NDEBUG;_CONSOLE;XML_STATIC;_DEBUG;_UNICODE -Item7=WIN32;NDEBUG;_CONSOLE;XML_STATIC;_DEBUG;XML_UNICODE_WCHAR_T -Item8=WIN32;NDEBUG;_CONSOLE;_MBCS;XML_STATIC;_DEBUG;XML_UNICODE_WCHAR_T -Item9=WIN32;NDEBUG;_CONSOLE;_UNICODE;XML_STATIC;_DEBUG;XML_UNICODE_WCHAR_T -Item10=WIN32;NDEBUG;_CONSOLE;_UNICODE;XML_STATIC;_DEBUG;XML_UNICODE -Item11=WIN32;NDEBUG;_CONSOLE;_MBCS;XML_STATIC;_DEBUG;XML_UNICODE_WCHAR_T;__WCHAR_T -Item12=WIN32;NDEBUG;_CONSOLE;_MBCS;XML_STATIC;_DEBUG;XML_UNICODE_WCHAR_T;_UNICODE -Item13=WIN32;NDEBUG;_CONSOLE;_MBCS;XML_STATIC;_DEBUG;XML_UNICODE;_UNICODE -Item14=WIN32;NDEBUG;_CONSOLE;_MBCS;XML_STATIC;_DEBUG;XML_UNICODE -Item15=WIN32;NDEBUG;_CONSOLE;_MBCS;XML_STATIC;_DEBUG -Item16=WIN32;NDEBUG;_CONSOLE;_MBCS;XML_STATIC - -[HistoryLists\hlIntOutputDir] -Count=5 -Item0=Release\obj\examples -Item1=Release\obj\elements -Item2=Release\obj\mts -Item3=..\examples\Release -Item4=Release - -[HistoryLists\hlFinalOutputDir] -Count=1 -Item0=Release\ - -[Debugging] -DebugSourceDirs= - -[Parameters] -RunParams= -HostApplication= -RemoteHost= -RemotePath= -RemoteDebug=0 - -[Compiler] -ShowInfoMsgs=0 -LinkDebugVcl=0 -LinkCGLIB=0 - -[Language] -ActiveLang= -ProjectLang= -RootDir= - - \ No newline at end of file diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/elements.mak b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/elements.mak deleted file mode 100644 index d4427fd..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/elements.mak +++ /dev/null @@ -1,186 +0,0 @@ -# --------------------------------------------------------------------------- -!if !$d(BCB) -BCB = $(MAKEDIR)\.. -!endif - -# --------------------------------------------------------------------------- -# IDE SECTION -# --------------------------------------------------------------------------- -# The following section of the project makefile is managed by the BCB IDE. -# It is recommended to use the IDE to change any of the values in this -# section. -# --------------------------------------------------------------------------- - -VERSION = BCB.05.03 -# --------------------------------------------------------------------------- -PROJECT = Release\elements.exe -OBJFILES = Release\obj\examples\elements.obj -RESFILES = -MAINSOURCE = elements.bpf -RESDEPEN = $(RESFILES) -LIBFILES = Release\libexpats_mtd.lib -IDLFILES = -IDLGENFILES = -LIBRARIES = -PACKAGES = VCL50.bpi VCLX50.bpi bcbsmp50.bpi QRPT50.bpi VCLDB50.bpi VCLBDE50.bpi \ - ibsmp50.bpi VCLDBX50.bpi TEEUI50.bpi TEEDB50.bpi TEE50.bpi TEEQR50.bpi \ - VCLIB50.bpi bcbie50.bpi VCLIE50.bpi INETDB50.bpi INET50.bpi NMFAST50.bpi \ - dclocx50.bpi bcb2kaxserver50.bpi dclusr50.bpi -SPARELIBS = -DEFFILE = -# --------------------------------------------------------------------------- -PATHCPP = .;..\examples -PATHASM = .; -PATHPAS = .; -PATHRC = .; -DEBUGLIBPATH = $(BCB)\lib\debug -RELEASELIBPATH = $(BCB)\lib\release -USERDEFINES = WIN32;NDEBUG;_CONSOLE;XML_STATIC -SYSDEFINES = _NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL -INCLUDEPATH = ..\examples;$(BCB)\include -LIBPATH = ..\examples;$(BCB)\lib;$(RELEASELIBPATH) -WARNINGS= -w-par -w-8027 -w-8026 -# --------------------------------------------------------------------------- -CFLAG1 = -O2 -X- -a8 -b -k- -vi -q -I..\lib -c -IDLCFLAGS = -I$(BCB)\include -PFLAGS = -N2Release\obj\examples -N0Release\obj\examples -$Y- -$L- -$D- -RFLAGS = /l 0x409 /d "NDEBUG" /i$(BCB)\include -AFLAGS = /mx /w2 /zn -LFLAGS = -IRelease\obj\examples -D"" -ap -Tpe -x -Gn -q -L..\LIB\RELEASE_STATIC -# --------------------------------------------------------------------------- -ALLOBJ = c0x32.obj $(OBJFILES) -ALLRES = $(RESFILES) -ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cw32mti.lib -# --------------------------------------------------------------------------- -!ifdef IDEOPTIONS - -[Version Info] -IncludeVerInfo=0 -AutoIncBuild=0 -MajorVer=1 -MinorVer=0 -Release=0 -Build=0 -Debug=0 -PreRelease=0 -Special=0 -Private=0 -DLL=0 - -[Version Info Keys] -CompanyName= -FileDescription= -FileVersion=1.0.0.0 -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename= -ProductName= -ProductVersion=1.0.0.0 -Comments= - -[Debugging] -DebugSourceDirs=$(BCB)\source\vcl - -!endif - - - - - -# --------------------------------------------------------------------------- -# MAKE SECTION -# --------------------------------------------------------------------------- -# This section of the project file is not used by the BCB IDE. It is for -# the benefit of building from the command-line using the MAKE utility. -# --------------------------------------------------------------------------- - -.autodepend -# --------------------------------------------------------------------------- -!if "$(USERDEFINES)" != "" -AUSERDEFINES = -d$(USERDEFINES:;= -d) -!else -AUSERDEFINES = -!endif - -!if !$d(BCC32) -BCC32 = bcc32 -!endif - -!if !$d(CPP32) -CPP32 = cpp32 -!endif - -!if !$d(DCC32) -DCC32 = dcc32 -!endif - -!if !$d(TASM32) -TASM32 = tasm32 -!endif - -!if !$d(LINKER) -LINKER = ilink32 -!endif - -!if !$d(BRCC32) -BRCC32 = brcc32 -!endif - - -# --------------------------------------------------------------------------- -!if $d(PATHCPP) -.PATH.CPP = $(PATHCPP) -.PATH.C = $(PATHCPP) -!endif - -!if $d(PATHPAS) -.PATH.PAS = $(PATHPAS) -!endif - -!if $d(PATHASM) -.PATH.ASM = $(PATHASM) -!endif - -!if $d(PATHRC) -.PATH.RC = $(PATHRC) -!endif -# --------------------------------------------------------------------------- -$(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) - $(BCB)\BIN\$(LINKER) @&&! - $(LFLAGS) -L$(LIBPATH) + - $(ALLOBJ), + - $(PROJECT),, + - $(ALLLIB), + - $(DEFFILE), + - $(ALLRES) -! -# --------------------------------------------------------------------------- -.pas.hpp: - $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } - -.pas.obj: - $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } - -.cpp.obj: - $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } - -.c.obj: - $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } - -.c.i: - $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } - -.cpp.i: - $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } - -.asm.obj: - $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ - -.rc.res: - $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< -# --------------------------------------------------------------------------- - - - - diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expat.bpf b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expat.bpf deleted file mode 100644 index 2c42328..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expat.bpf +++ /dev/null @@ -1,6 +0,0 @@ -USEUNIT("..\lib\xmlparse.c"); -USEUNIT("..\lib\xmlrole.c"); -USEUNIT("..\lib\xmltok.c"); -USEDEF("libexpat_mtd.def"); -//--------------------------------------------------------------------------- -#define DllEntryPoint diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expat.bpr b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expat.bpr deleted file mode 100644 index 291b8ca..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expat.bpr +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[Version Info] -IncludeVerInfo=0 -AutoIncBuild=0 -MajorVer=1 -MinorVer=0 -Release=0 -Build=0 -Debug=0 -PreRelease=0 -Special=0 -Private=0 -DLL=0 -Locale=1033 -CodePage=1252 - -[Version Info Keys] -CompanyName= -FileDescription= -FileVersion=1.0.0.0 -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename= -ProductName= -ProductVersion=1.0.0.0 -Comments= - -[HistoryLists\hlIncludePath] -Count=4 -Item0=..\lib;$(BCB)\include -Item1=$(BCB)\include -Item2=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl -Item3=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl; - -[HistoryLists\hlLibraryPath] -Count=5 -Item0=..\lib;$(BCB)\lib;$(RELEASELIBPATH) -Item1=..\lib;$(BCB)\lib;..\lib\$(RELEASELIBPATH) -Item2=$(BCB)\lib;$(RELEASELIBPATH) -Item3=$(BCB)\lib;$(RELEASELIBPATH);$(BCB)\lib\psdk -Item4=$(BCB)\lib;$(RELEASELIBPATH);;$(BCB)\lib\psdk; - -[HistoryLists\hlDebugSourcePath] -Count=1 -Item0=$(BCB)\source\vcl - -[HistoryLists\hlConditionals] -Count=8 -Item0=_WINDOWS;WIN32;NDEBUG;_USRDLL;COMPILED_FROM_DSP;EXPAT_EXPORTS -Item1=_WINDOWS;WIN32;NDEBUG;_DEBUG;_USRDLL;COMPILED_FROM_DSP;EXPAT_EXPORTS -Item2=WIN32;_WINDOWS;NDEBUG;_DEBUG;_USRDLL;COMPILED_FROM_DSP;EXPAT_EXPORTS -Item3=WIN32;_WINDOWS;NDEBUG;_DEBUG;_USRDLL;EXPAT_EXPORTS;COMPILED_FROM_DSP -Item4=NDEBUG;WIN32;_WINDOWS;_USRDLL;_DEBUG;EXPAT_EXPORTS;COMPILED_FROM_DSP -Item5=NDEBUG;WIN32;_WINDOWS;_USRDLL;EXPAT_EXPORTS;COMPILED_FROM_DSP;_DEBUG -Item6=NDEBUG;WIN32;_WINDOWS;_MBCS;_USRDLL;EXPAT_EXPORTS;COMPILED_FROM_DSP;_DEBUG -Item7=NDEBUG;WIN32;_WINDOWS;_MBCS;_USRDLL;EXPAT_EXPORTS;COMPILED_FROM_DSP - -[HistoryLists\hlIntOutputDir] -Count=7 -Item0=Release\obj\libexpat -Item1=Release\obj\libexpat_static -Item2=Release\obj\mtd -Item3=Release\obj\mt -Item4=Release\obj -Item5=Release -Item6=..\lib\Release - -[HistoryLists\hlFinalOutputDir] -Count=1 -Item0=Release\ - -[Debugging] -DebugSourceDirs= - -[Parameters] -RunParams= -HostApplication= -RemoteHost= -RemotePath= -RemoteDebug=0 - -[Compiler] -ShowInfoMsgs=0 -LinkDebugVcl=0 -LinkCGLIB=0 - -[Language] -ActiveLang= -ProjectLang= -RootDir= - - \ No newline at end of file diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expat.mak b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expat.mak deleted file mode 100644 index 7c9c23f..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expat.mak +++ /dev/null @@ -1,187 +0,0 @@ -# --------------------------------------------------------------------------- -!if !$d(BCB) -BCB = $(MAKEDIR)\.. -!endif - -# --------------------------------------------------------------------------- -# IDE SECTION -# --------------------------------------------------------------------------- -# The following section of the project makefile is managed by the BCB IDE. -# It is recommended to use the IDE to change any of the values in this -# section. -# --------------------------------------------------------------------------- - -VERSION = BCB.05.03 -# --------------------------------------------------------------------------- -PROJECT = Release\libexpat_mtd.dll -OBJFILES = Release\obj\libexpat\xmlparse.obj Release\obj\libexpat\xmlrole.obj \ - Release\obj\libexpat\xmltok.obj -RESFILES = -MAINSOURCE = expat.bpf -RESDEPEN = $(RESFILES) -LIBFILES = -IDLFILES = -IDLGENFILES = -LIBRARIES = -PACKAGES = VCL50.bpi VCLX50.bpi bcbsmp50.bpi QRPT50.bpi VCLDB50.bpi VCLBDE50.bpi \ - ibsmp50.bpi VCLDBX50.bpi TEEUI50.bpi TEEDB50.bpi TEE50.bpi TEEQR50.bpi \ - VCLIB50.bpi bcbie50.bpi VCLIE50.bpi INETDB50.bpi INET50.bpi NMFAST50.bpi \ - dclocx50.bpi bcb2kaxserver50.bpi dclusr50.bpi -SPARELIBS = -DEFFILE = libexpat_mtd.def -# --------------------------------------------------------------------------- -PATHCPP = .;..\lib -PATHASM = .; -PATHPAS = .; -PATHRC = .; -DEBUGLIBPATH = $(BCB)\lib\debug -RELEASELIBPATH = $(BCB)\lib\release -USERDEFINES = _WINDOWS;WIN32;NDEBUG;_USRDLL;COMPILED_FROM_DSP -SYSDEFINES = _NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL -INCLUDEPATH = ..\lib;$(BCB)\include -LIBPATH = ..\lib;$(BCB)\lib;$(RELEASELIBPATH) -WARNINGS= -w-rch -w-par -w-8027 -w-8026 -w-ccc -# --------------------------------------------------------------------------- -CFLAG1 = -WD -O2 -X- -a8 -b -k- -vi -q -tWM -c -tWD -IDLCFLAGS = -I$(BCB)\include -PFLAGS = -N2Release\obj\libexpat -N0Release\obj\libexpat -$Y- -$L- -$D- -RFLAGS = /l 0x409 /d "NDEBUG" /i$(BCB)\include -AFLAGS = /mx /w2 /zn -LFLAGS = -IRelease\obj\libexpat -D"" -aa -Tpd -x -Gn -Gi -q -# --------------------------------------------------------------------------- -ALLOBJ = c0d32.obj $(OBJFILES) -ALLRES = $(RESFILES) -ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cw32mti.lib -# --------------------------------------------------------------------------- -!ifdef IDEOPTIONS - -[Version Info] -IncludeVerInfo=0 -AutoIncBuild=0 -MajorVer=1 -MinorVer=0 -Release=0 -Build=0 -Debug=0 -PreRelease=0 -Special=0 -Private=0 -DLL=0 - -[Version Info Keys] -CompanyName= -FileDescription= -FileVersion=1.0.0.0 -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename= -ProductName= -ProductVersion=1.0.0.0 -Comments= - -[Debugging] -DebugSourceDirs=$(BCB)\source\vcl - -!endif - - - - - -# --------------------------------------------------------------------------- -# MAKE SECTION -# --------------------------------------------------------------------------- -# This section of the project file is not used by the BCB IDE. It is for -# the benefit of building from the command-line using the MAKE utility. -# --------------------------------------------------------------------------- - -.autodepend -# --------------------------------------------------------------------------- -!if "$(USERDEFINES)" != "" -AUSERDEFINES = -d$(USERDEFINES:;= -d) -!else -AUSERDEFINES = -!endif - -!if !$d(BCC32) -BCC32 = bcc32 -!endif - -!if !$d(CPP32) -CPP32 = cpp32 -!endif - -!if !$d(DCC32) -DCC32 = dcc32 -!endif - -!if !$d(TASM32) -TASM32 = tasm32 -!endif - -!if !$d(LINKER) -LINKER = ilink32 -!endif - -!if !$d(BRCC32) -BRCC32 = brcc32 -!endif - - -# --------------------------------------------------------------------------- -!if $d(PATHCPP) -.PATH.CPP = $(PATHCPP) -.PATH.C = $(PATHCPP) -!endif - -!if $d(PATHPAS) -.PATH.PAS = $(PATHPAS) -!endif - -!if $d(PATHASM) -.PATH.ASM = $(PATHASM) -!endif - -!if $d(PATHRC) -.PATH.RC = $(PATHRC) -!endif -# --------------------------------------------------------------------------- -$(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) - $(BCB)\BIN\$(LINKER) @&&! - $(LFLAGS) -L$(LIBPATH) + - $(ALLOBJ), + - $(PROJECT),, + - $(ALLLIB), + - $(DEFFILE), + - $(ALLRES) -! -# --------------------------------------------------------------------------- -.pas.hpp: - $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } - -.pas.obj: - $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } - -.cpp.obj: - $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } - -.c.obj: - $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } - -.c.i: - $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } - -.cpp.i: - $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } - -.asm.obj: - $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ - -.rc.res: - $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< -# --------------------------------------------------------------------------- - - - - diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expat_static.bpf b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expat_static.bpf deleted file mode 100644 index 5ca458e..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expat_static.bpf +++ /dev/null @@ -1,5 +0,0 @@ -USEUNIT("..\lib\xmlparse.c"); -USEUNIT("..\lib\xmlrole.c"); -USEUNIT("..\lib\xmltok.c"); -//--------------------------------------------------------------------------- -#define Library diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expat_static.bpr b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expat_static.bpr deleted file mode 100644 index 2f6ec4d..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expat_static.bpr +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[Version Info] -IncludeVerInfo=0 -AutoIncBuild=0 -MajorVer=1 -MinorVer=0 -Release=0 -Build=0 -Debug=0 -PreRelease=0 -Special=0 -Private=0 -DLL=0 -Locale=1033 -CodePage=1252 - -[Version Info Keys] -CompanyName= -FileDescription= -FileVersion=1.0.0.0 -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename= -ProductName= -ProductVersion=1.0.0.0 -Comments= - -[HistoryLists\hlIncludePath] -Count=4 -Item0=..\lib;$(BCB)\include -Item1=$(BCB)\include -Item2=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl -Item3=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl; - -[HistoryLists\hlLibraryPath] -Count=5 -Item0=..\lib;$(BCB)\lib;$(RELEASELIBPATH) -Item1=..\lib;$(BCB)\lib;..\lib\$(RELEASELIBPATH) -Item2=$(BCB)\lib;$(RELEASELIBPATH) -Item3=$(BCB)\lib;$(RELEASELIBPATH);$(BCB)\lib\psdk -Item4=$(BCB)\lib;$(RELEASELIBPATH);;$(BCB)\lib\psdk; - -[HistoryLists\hlDebugSourcePath] -Count=1 -Item0=$(BCB)\source\vcl - -[HistoryLists\hlConditionals] -Count=7 -Item0=_WINDOWS;WIN32;NDEBUG;_LIB;COMPILED_FROM_DSP;XML_STATIC -Item1=_WINDOWS;WIN32;NDEBUG;_DEBUG;_LIB;COMPILED_FROM_DSP;XML_STATIC -Item2=WIN32;_WINDOWS;NDEBUG;_DEBUG;_LIB;COMPILED_FROM_DSP;XML_STATIC -Item3=WIN32;_WINDOWS;NDEBUG;_LIB;COMPILED_FROM_DSP;_DEBUG -Item4=WIN32;_WINDOWS;NDEBUG;_LIB;COMPILED_FROM_DSP -Item5=WIN32;_WINDOWS;NDEBUG;_LIB;COMPILED_FROM_DSP;_MBCS -Item6=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILED_FROM_DSP - -[HistoryLists\hlIntOutputDir] -Count=6 -Item0=Release\obj\libexpat_static -Item1=Release\obj\mts -Item2=Release\obj\mt -Item3=Release -Item4=..\lib\Release_static -Item5=Release_static - -[HistoryLists\hlFinalOutputDir] -Count=3 -Item0=Release\ -Item1=Release -Item2=Release_static\ - -[HistoryLists\hlTlibPageSize] -Count=1 -Item0=0x0010 - -[Debugging] -DebugSourceDirs= - -[Parameters] -RunParams= -HostApplication= -RemoteHost= -RemotePath= -RemoteDebug=0 - -[Compiler] -ShowInfoMsgs=0 -LinkDebugVcl=0 -LinkCGLIB=0 - -[Language] -ActiveLang= -ProjectLang= -RootDir= - - \ No newline at end of file diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expat_static.mak b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expat_static.mak deleted file mode 100644 index 9137d3b..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expat_static.mak +++ /dev/null @@ -1,189 +0,0 @@ -# --------------------------------------------------------------------------- -!if !$d(BCB) -BCB = $(MAKEDIR)\.. -!endif - -# --------------------------------------------------------------------------- -# IDE SECTION -# --------------------------------------------------------------------------- -# The following section of the project makefile is managed by the BCB IDE. -# It is recommended to use the IDE to change any of the values in this -# section. -# --------------------------------------------------------------------------- - -VERSION = BCB.05.03 -# --------------------------------------------------------------------------- -PROJECT = Release\libexpats_mtd.lib -OBJFILES = Release\obj\libexpat_static\xmlparse.obj \ - Release\obj\libexpat_static\xmlrole.obj \ - Release\obj\libexpat_static\xmltok.obj -RESFILES = -MAINSOURCE = expat_static.bpf -RESDEPEN = $(RESFILES) -LIBFILES = -IDLFILES = -IDLGENFILES = -LIBRARIES = -PACKAGES = -SPARELIBS = -DEFFILE = -# --------------------------------------------------------------------------- -PATHCPP = .;..\lib -PATHASM = .; -PATHPAS = .; -PATHRC = .; -LINKER = TLib -DEBUGLIBPATH = $(BCB)\lib\debug -RELEASELIBPATH = $(BCB)\lib\release -USERDEFINES = _WINDOWS;WIN32;NDEBUG;_LIB;COMPILED_FROM_DSP;XML_STATIC -SYSDEFINES = _NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL -INCLUDEPATH = ..\lib;$(BCB)\include -LIBPATH = ..\lib;$(BCB)\lib;$(RELEASELIBPATH) -WARNINGS = -w-rch -w-par -w-8027 -w-8026 -w-ccc -LISTFILE = -# --------------------------------------------------------------------------- -CFLAG1 = -O2 -X- -a8 -b -k- -vi -q -tWM -c -IDLCFLAGS = -I$(BCB)\include -PFLAGS = -N2Release\obj\libexpat_static -N0Release\obj\libexpat_static -$Y- -$L- -$D- -RFLAGS = /l 0x409 /d "NDEBUG" /i$(BCB)\include -AFLAGS = /mx /w2 /zn -LFLAGS = -# --------------------------------------------------------------------------- -ALLOBJ = $(OBJFILES) -ALLRES = $(RESFILES) -ALLLIB = $(LIBFILES) $(LIBRARIES) -# --------------------------------------------------------------------------- -!ifdef IDEOPTIONS - -[Version Info] -IncludeVerInfo=0 -AutoIncBuild=0 -MajorVer=1 -MinorVer=0 -Release=0 -Build=0 -Debug=0 -PreRelease=0 -Special=0 -Private=0 -DLL=0 - -[Version Info Keys] -CompanyName= -FileDescription= -FileVersion=1.0.0.0 -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename= -ProductName= -ProductVersion=1.0.0.0 -Comments= - -[Debugging] -DebugSourceDirs=$(BCB)\source\vcl - -!endif - - - - - -# --------------------------------------------------------------------------- -# MAKE SECTION -# --------------------------------------------------------------------------- -# This section of the project file is not used by the BCB IDE. It is for -# the benefit of building from the command-line using the MAKE utility. -# --------------------------------------------------------------------------- - -.autodepend -# --------------------------------------------------------------------------- -!if "$(USERDEFINES)" != "" -AUSERDEFINES = -d$(USERDEFINES:;= -d) -!else -AUSERDEFINES = -!endif - -!if !$d(BCC32) -BCC32 = bcc32 -!endif - -!if !$d(CPP32) -CPP32 = cpp32 -!endif - -!if !$d(DCC32) -DCC32 = dcc32 -!endif - -!if !$d(TASM32) -TASM32 = tasm32 -!endif - -!if !$d(LINKER) -LINKER = TLib -!endif - -!if !$d(BRCC32) -BRCC32 = brcc32 -!endif - - -# --------------------------------------------------------------------------- -!if $d(PATHCPP) -.PATH.CPP = $(PATHCPP) -.PATH.C = $(PATHCPP) -!endif - -!if $d(PATHPAS) -.PATH.PAS = $(PATHPAS) -!endif - -!if $d(PATHASM) -.PATH.ASM = $(PATHASM) -!endif - -!if $d(PATHRC) -.PATH.RC = $(PATHRC) -!endif -# --------------------------------------------------------------------------- -!if "$(LISTFILE)" == "" -COMMA = -!else -COMMA = , -!endif - -$(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) - $(BCB)\BIN\$(LINKER) /u $@ @&&! - $(LFLAGS) $? $(COMMA) $(LISTFILE) - -! -# --------------------------------------------------------------------------- -.pas.hpp: - $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } - -.pas.obj: - $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } - -.cpp.obj: - $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } - -.c.obj: - $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } - -.c.i: - $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } - -.cpp.i: - $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } - -.asm.obj: - $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ - -.rc.res: - $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< -# --------------------------------------------------------------------------- - - - - diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expatw.bpf b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expatw.bpf deleted file mode 100644 index 188a6d5..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expatw.bpf +++ /dev/null @@ -1,6 +0,0 @@ -USEUNIT("..\lib\xmlparse.c"); -USEUNIT("..\lib\xmlrole.c"); -USEUNIT("..\lib\xmltok.c"); -USEDEF("libexpatw_mtd.def"); -//--------------------------------------------------------------------------- -#define DllEntryPoint diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expatw.bpr b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expatw.bpr deleted file mode 100644 index 9ec5001..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expatw.bpr +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[Version Info] -IncludeVerInfo=0 -AutoIncBuild=0 -MajorVer=1 -MinorVer=0 -Release=0 -Build=0 -Debug=0 -PreRelease=0 -Special=0 -Private=0 -DLL=0 -Locale=1033 -CodePage=1252 - -[Version Info Keys] -CompanyName= -FileDescription= -FileVersion=1.0.0.0 -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename= -ProductName= -ProductVersion=1.0.0.0 -Comments= - -[HistoryLists\hlIncludePath] -Count=4 -Item0=..\lib;$(BCB)\include -Item1=$(BCB)\include -Item2=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl -Item3=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl; - -[HistoryLists\hlLibraryPath] -Count=5 -Item0=..\lib;$(BCB)\lib;$(RELEASELIBPATH) -Item1=..\lib;$(BCB)\lib;..\lib\$(RELEASELIBPATH) -Item2=$(BCB)\lib;$(RELEASELIBPATH) -Item3=$(BCB)\lib;$(RELEASELIBPATH);$(BCB)\lib\psdk -Item4=$(BCB)\lib;$(RELEASELIBPATH);;$(BCB)\lib\psdk; - -[HistoryLists\hlDebugSourcePath] -Count=1 -Item0=$(BCB)\source\vcl - -[HistoryLists\hlConditionals] -Count=9 -Item0=_WINDOWS;WIN32;NDEBUG;_USRDLL;COMPILED_FROM_DSP;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T -Item1=_WINDOWS;WIN32;NDEBUG;_DEBUG;_USRDLL;COMPILED_FROM_DSP;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T -Item2=_WINDOWS;WIN32;NDEBUG;_DEBUG;_USRDLL;EXPAT_EXPORTS;COMPILED_FROM_DSP;XML_UNICODE_WCHAR_T -Item3=NDEBUG;COMPILED_FROM_DSP;WIN32;_WINDOWS;_USRDLL;EXPAT_EXPORTS;_DEBUG;XML_UNICODE_WCHAR_T -Item4=NDEBUG;COMPILED_FROM_DSP;WIN32;_WINDOWS;_USRDLL;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T;_DEBUG -Item5=NDEBUG;COMPILED_FROM_DSP;WIN32;_WINDOWS;_UNICODE;_USRDLL;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T;_DEBUG -Item6=NDEBUG;COMPILED_FROM_DSP;WIN32;_WINDOWS;_UNICODE;_USRDLL;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T -Item7=NDEBUG;COMPILED_FROM_DSP;WIN32;_WINDOWS;_MBCS;_USRDLL;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T;XML_UNICODE -Item8=NDEBUG;COMPILED_FROM_DSP;WIN32;_WINDOWS;_MBCS;_USRDLL;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T - -[HistoryLists\hlIntOutputDir] -Count=8 -Item0=Release\obj\libexpatw -Item1=Release\obj\libexpat -Item2=Release\obj\mtd -Item3=Release\obj\mt -Item4=Release_w\obj -Item5=Release-w\obj -Item6=Release-w -Item7=..\lib\Release-w - -[HistoryLists\hlFinalOutputDir] -Count=5 -Item0=Release\ -Item1=Release -Item2=Release_w\ -Item3=Release-w\ -Item4=Release-w - -[Debugging] -DebugSourceDirs= - -[Parameters] -RunParams= -HostApplication= -RemoteHost= -RemotePath= -RemoteDebug=0 - -[Compiler] -ShowInfoMsgs=0 -LinkDebugVcl=0 -LinkCGLIB=0 - -[Language] -ActiveLang= -ProjectLang= -RootDir= - - \ No newline at end of file diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expatw.mak b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expatw.mak deleted file mode 100644 index 08e17d0..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expatw.mak +++ /dev/null @@ -1,187 +0,0 @@ -# --------------------------------------------------------------------------- -!if !$d(BCB) -BCB = $(MAKEDIR)\.. -!endif - -# --------------------------------------------------------------------------- -# IDE SECTION -# --------------------------------------------------------------------------- -# The following section of the project makefile is managed by the BCB IDE. -# It is recommended to use the IDE to change any of the values in this -# section. -# --------------------------------------------------------------------------- - -VERSION = BCB.05.03 -# --------------------------------------------------------------------------- -PROJECT = Release\libexpatw_mtd.dll -OBJFILES = Release\obj\libexpatw\xmlparse.obj Release\obj\libexpatw\xmlrole.obj \ - Release\obj\libexpatw\xmltok.obj -RESFILES = -MAINSOURCE = expatw.bpf -RESDEPEN = $(RESFILES) -LIBFILES = -IDLFILES = -IDLGENFILES = -LIBRARIES = -PACKAGES = VCL50.bpi VCLX50.bpi bcbsmp50.bpi QRPT50.bpi VCLDB50.bpi VCLBDE50.bpi \ - ibsmp50.bpi VCLDBX50.bpi TEEUI50.bpi TEEDB50.bpi TEE50.bpi TEEQR50.bpi \ - VCLIB50.bpi bcbie50.bpi VCLIE50.bpi INETDB50.bpi INET50.bpi NMFAST50.bpi \ - dclocx50.bpi bcb2kaxserver50.bpi dclusr50.bpi -SPARELIBS = -DEFFILE = libexpatw_mtd.def -# --------------------------------------------------------------------------- -PATHCPP = .;..\lib -PATHASM = .; -PATHPAS = .; -PATHRC = .; -DEBUGLIBPATH = $(BCB)\lib\debug -RELEASELIBPATH = $(BCB)\lib\release -USERDEFINES = _WINDOWS;WIN32;NDEBUG;_USRDLL;COMPILED_FROM_DSP;XML_UNICODE_WCHAR_T -SYSDEFINES = _NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL -INCLUDEPATH = ..\lib;$(BCB)\include -LIBPATH = ..\lib;$(BCB)\lib;$(RELEASELIBPATH) -WARNINGS= -w-rch -w-par -w-8027 -w-8026 -w-ccc -# --------------------------------------------------------------------------- -CFLAG1 = -WD -O2 -X- -a8 -b -k- -vi -q -tWM -c -tWD -IDLCFLAGS = -I$(BCB)\include -PFLAGS = -N2Release\obj\libexpatw -N0Release\obj\libexpatw -$Y- -$L- -$D- -RFLAGS = /l 0x409 /d "NDEBUG" /i$(BCB)\include -AFLAGS = /mx /w2 /zn -LFLAGS = -IRelease\obj\libexpatw -D"" -aa -Tpd -x -Gn -Gi -w -q -# --------------------------------------------------------------------------- -ALLOBJ = c0d32w.obj $(OBJFILES) -ALLRES = $(RESFILES) -ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cw32mti.lib -# --------------------------------------------------------------------------- -!ifdef IDEOPTIONS - -[Version Info] -IncludeVerInfo=0 -AutoIncBuild=0 -MajorVer=1 -MinorVer=0 -Release=0 -Build=0 -Debug=0 -PreRelease=0 -Special=0 -Private=0 -DLL=0 - -[Version Info Keys] -CompanyName= -FileDescription= -FileVersion=1.0.0.0 -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename= -ProductName= -ProductVersion=1.0.0.0 -Comments= - -[Debugging] -DebugSourceDirs=$(BCB)\source\vcl - -!endif - - - - - -# --------------------------------------------------------------------------- -# MAKE SECTION -# --------------------------------------------------------------------------- -# This section of the project file is not used by the BCB IDE. It is for -# the benefit of building from the command-line using the MAKE utility. -# --------------------------------------------------------------------------- - -.autodepend -# --------------------------------------------------------------------------- -!if "$(USERDEFINES)" != "" -AUSERDEFINES = -d$(USERDEFINES:;= -d) -!else -AUSERDEFINES = -!endif - -!if !$d(BCC32) -BCC32 = bcc32 -!endif - -!if !$d(CPP32) -CPP32 = cpp32 -!endif - -!if !$d(DCC32) -DCC32 = dcc32 -!endif - -!if !$d(TASM32) -TASM32 = tasm32 -!endif - -!if !$d(LINKER) -LINKER = ilink32 -!endif - -!if !$d(BRCC32) -BRCC32 = brcc32 -!endif - - -# --------------------------------------------------------------------------- -!if $d(PATHCPP) -.PATH.CPP = $(PATHCPP) -.PATH.C = $(PATHCPP) -!endif - -!if $d(PATHPAS) -.PATH.PAS = $(PATHPAS) -!endif - -!if $d(PATHASM) -.PATH.ASM = $(PATHASM) -!endif - -!if $d(PATHRC) -.PATH.RC = $(PATHRC) -!endif -# --------------------------------------------------------------------------- -$(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) - $(BCB)\BIN\$(LINKER) @&&! - $(LFLAGS) -L$(LIBPATH) + - $(ALLOBJ), + - $(PROJECT),, + - $(ALLLIB), + - $(DEFFILE), + - $(ALLRES) -! -# --------------------------------------------------------------------------- -.pas.hpp: - $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } - -.pas.obj: - $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } - -.cpp.obj: - $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } - -.c.obj: - $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } - -.c.i: - $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } - -.cpp.i: - $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } - -.asm.obj: - $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ - -.rc.res: - $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< -# --------------------------------------------------------------------------- - - - - diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expatw_static.bpf b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expatw_static.bpf deleted file mode 100644 index 5ca458e..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expatw_static.bpf +++ /dev/null @@ -1,5 +0,0 @@ -USEUNIT("..\lib\xmlparse.c"); -USEUNIT("..\lib\xmlrole.c"); -USEUNIT("..\lib\xmltok.c"); -//--------------------------------------------------------------------------- -#define Library diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expatw_static.bpr b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expatw_static.bpr deleted file mode 100644 index 3f12644..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expatw_static.bpr +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[Version Info] -IncludeVerInfo=0 -AutoIncBuild=0 -MajorVer=1 -MinorVer=0 -Release=0 -Build=0 -Debug=0 -PreRelease=0 -Special=0 -Private=0 -DLL=0 -Locale=1033 -CodePage=1252 - -[Version Info Keys] -CompanyName= -FileDescription= -FileVersion=1.0.0.0 -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename= -ProductName= -ProductVersion=1.0.0.0 -Comments= - -[HistoryLists\hlIncludePath] -Count=4 -Item0=..\lib;$(BCB)\include -Item1=$(BCB)\include -Item2=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl -Item3=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl; - -[HistoryLists\hlLibraryPath] -Count=5 -Item0=..\lib;$(BCB)\lib;$(RELEASELIBPATH) -Item1=..\lib;$(BCB)\lib;..\lib\$(RELEASELIBPATH) -Item2=$(BCB)\lib;$(RELEASELIBPATH) -Item3=$(BCB)\lib;$(RELEASELIBPATH);$(BCB)\lib\psdk -Item4=$(BCB)\lib;$(RELEASELIBPATH);;$(BCB)\lib\psdk; - -[HistoryLists\hlDebugSourcePath] -Count=1 -Item0=$(BCB)\source\vcl - -[HistoryLists\hlConditionals] -Count=15 -Item0=_WINDOWS;WIN32;NDEBUG;_LIB;COMPILED_FROM_DSP;XML_STATIC;XML_UNICODE_WCHAR_T -Item1=_WINDOWS;WIN32;NDEBUG;_DEBUG;_LIB;COMPILED_FROM_DSP;XML_STATIC;XML_UNICODE_WCHAR_T -Item2=WIN32;_WINDOWS;NDEBUG;_DEBUG;_LIB;COMPILED_FROM_DSP;XML_STATIC;XML_UNICODE_WCHAR_T -Item3=WIN32;_WINDOWS;NDEBUG;_DEBUG;_LIB;XML_STATIC;COMPILED_FROM_DSP;XML_UNICODE_WCHAR_T -Item4=WIN32;_WINDOWS;NDEBUG;_LIB;COMPILED_FROM_DSP;_DEBUG;XML_UNICODE_WCHAR_T -Item5=WIN32;_WINDOWS;NDEBUG;_UNICODE;_LIB;COMPILED_FROM_DSP;XML_UNICODE_WCHAR_T;_DEBUG -Item6=WIN32;_WINDOWS;NDEBUG;_UNICODE;_LIB;COMPILED_FROM_DSP;XML_UNICODE_WCHAR_T;_DEBUG;__cplusplus -Item7=WIN32;_WINDOWS;NDEBUG;_UNICODE;_LIB;COMPILED_FROM_DSP;XML_UNICODE;_DEBUG -Item8=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILED_FROM_DSP;XML_UNICODE;_DEBUG -Item9=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILED_FROM_DSP;XML_UNICODE_WCHAR_T;_DEBUG;__WCHAR_T -Item10=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILED_FROM_DSP;XML_UNICODE_WCHAR_T;_DEBUG;_UNICODE -Item11=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILED_FROM_DSP;XML_UNICODE;_DEBUG;_UNICODE -Item12=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILED_FROM_DSP;XML_UNICODE_WCHAR_T;_DEBUG -Item13=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILED_FROM_DSP;XML_UNICODE_WCHAR_T -Item14=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILED_FROM_DSP;XML_UNICODE_WCHAR_T;XML_UNICODE - -[HistoryLists\hlIntOutputDir] -Count=6 -Item0=Release\obj\libexpatw_static -Item1=Release\obj\libexpat_static -Item2=Release\obj\mts -Item3=Release\obj\mt -Item4=..\lib\Release-w_static -Item5=Release-w_static - -[HistoryLists\hlFinalOutputDir] -Count=3 -Item0=Release\ -Item1=Release -Item2=Release-w_static\ - -[HistoryLists\hlTlibPageSize] -Count=1 -Item0=0x0010 - -[Debugging] -DebugSourceDirs= - -[Parameters] -RunParams= -HostApplication= -RemoteHost= -RemotePath= -RemoteDebug=0 - -[Compiler] -ShowInfoMsgs=0 -LinkDebugVcl=0 -LinkCGLIB=0 - -[Language] -ActiveLang= -ProjectLang= -RootDir= - - \ No newline at end of file diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expatw_static.mak b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expatw_static.mak deleted file mode 100644 index 16b7e5b..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/expatw_static.mak +++ /dev/null @@ -1,190 +0,0 @@ -# --------------------------------------------------------------------------- -!if !$d(BCB) -BCB = $(MAKEDIR)\.. -!endif - -# --------------------------------------------------------------------------- -# IDE SECTION -# --------------------------------------------------------------------------- -# The following section of the project makefile is managed by the BCB IDE. -# It is recommended to use the IDE to change any of the values in this -# section. -# --------------------------------------------------------------------------- - -VERSION = BCB.05.03 -# --------------------------------------------------------------------------- -PROJECT = Release\libexpatws_mtd.lib -OBJFILES = Release\obj\libexpatw_static\xmlparse.obj \ - Release\obj\libexpatw_static\xmlrole.obj \ - Release\obj\libexpatw_static\xmltok.obj -RESFILES = -MAINSOURCE = expatw_static.bpf -RESDEPEN = $(RESFILES) -LIBFILES = -IDLFILES = -IDLGENFILES = -LIBRARIES = -PACKAGES = -SPARELIBS = -DEFFILE = -# --------------------------------------------------------------------------- -PATHCPP = .;..\lib -PATHASM = .; -PATHPAS = .; -PATHRC = .; -LINKER = TLib -DEBUGLIBPATH = $(BCB)\lib\debug -RELEASELIBPATH = $(BCB)\lib\release -USERDEFINES = _WINDOWS;WIN32;NDEBUG;_LIB;COMPILED_FROM_DSP;XML_STATIC;XML_UNICODE_WCHAR_T -SYSDEFINES = _NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL -INCLUDEPATH = ..\lib;$(BCB)\include -LIBPATH = ..\lib;$(BCB)\lib;$(RELEASELIBPATH) -WARNINGS = -w-rch -w-par -w-8027 -w-8026 -w-ccc -LISTFILE = -# --------------------------------------------------------------------------- -CFLAG1 = -O2 -X- -a8 -b -k- -vi -q -tWM -c -IDLCFLAGS = -I$(BCB)\include -PFLAGS = -N2Release\obj\libexpatw_static -N0Release\obj\libexpatw_static -$Y- -$L- \ - -$D- -RFLAGS = /l 0x409 /d "NDEBUG" /i$(BCB)\include -AFLAGS = /mx /w2 /zn -LFLAGS = -# --------------------------------------------------------------------------- -ALLOBJ = $(OBJFILES) -ALLRES = $(RESFILES) -ALLLIB = $(LIBFILES) $(LIBRARIES) -# --------------------------------------------------------------------------- -!ifdef IDEOPTIONS - -[Version Info] -IncludeVerInfo=0 -AutoIncBuild=0 -MajorVer=1 -MinorVer=0 -Release=0 -Build=0 -Debug=0 -PreRelease=0 -Special=0 -Private=0 -DLL=0 - -[Version Info Keys] -CompanyName= -FileDescription= -FileVersion=1.0.0.0 -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename= -ProductName= -ProductVersion=1.0.0.0 -Comments= - -[Debugging] -DebugSourceDirs=$(BCB)\source\vcl - -!endif - - - - - -# --------------------------------------------------------------------------- -# MAKE SECTION -# --------------------------------------------------------------------------- -# This section of the project file is not used by the BCB IDE. It is for -# the benefit of building from the command-line using the MAKE utility. -# --------------------------------------------------------------------------- - -.autodepend -# --------------------------------------------------------------------------- -!if "$(USERDEFINES)" != "" -AUSERDEFINES = -d$(USERDEFINES:;= -d) -!else -AUSERDEFINES = -!endif - -!if !$d(BCC32) -BCC32 = bcc32 -!endif - -!if !$d(CPP32) -CPP32 = cpp32 -!endif - -!if !$d(DCC32) -DCC32 = dcc32 -!endif - -!if !$d(TASM32) -TASM32 = tasm32 -!endif - -!if !$d(LINKER) -LINKER = TLib -!endif - -!if !$d(BRCC32) -BRCC32 = brcc32 -!endif - - -# --------------------------------------------------------------------------- -!if $d(PATHCPP) -.PATH.CPP = $(PATHCPP) -.PATH.C = $(PATHCPP) -!endif - -!if $d(PATHPAS) -.PATH.PAS = $(PATHPAS) -!endif - -!if $d(PATHASM) -.PATH.ASM = $(PATHASM) -!endif - -!if $d(PATHRC) -.PATH.RC = $(PATHRC) -!endif -# --------------------------------------------------------------------------- -!if "$(LISTFILE)" == "" -COMMA = -!else -COMMA = , -!endif - -$(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) - $(BCB)\BIN\$(LINKER) /u $@ @&&! - $(LFLAGS) $? $(COMMA) $(LISTFILE) - -! -# --------------------------------------------------------------------------- -.pas.hpp: - $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } - -.pas.obj: - $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } - -.cpp.obj: - $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } - -.c.obj: - $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } - -.c.i: - $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } - -.cpp.i: - $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } - -.asm.obj: - $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ - -.rc.res: - $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< -# --------------------------------------------------------------------------- - - - - diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/libexpat_mtd.def b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/libexpat_mtd.def deleted file mode 100644 index fc1cb95..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/libexpat_mtd.def +++ /dev/null @@ -1,141 +0,0 @@ -; DEF file for BCB5 -LIBRARY LIBEXPAT_MTD -DESCRIPTION "Implements an XML parser." -EXPORTS - _XML_DefaultCurrent @1 - _XML_ErrorString @2 - _XML_ExpatVersion @3 - _XML_ExpatVersionInfo @4 - _XML_ExternalEntityParserCreate @5 - _XML_GetBase @6 - _XML_GetBuffer @7 - _XML_GetCurrentByteCount @8 - _XML_GetCurrentByteIndex @9 - _XML_GetCurrentColumnNumber @10 - _XML_GetCurrentLineNumber @11 - _XML_GetErrorCode @12 - _XML_GetIdAttributeIndex @13 - _XML_GetInputContext @14 - _XML_GetSpecifiedAttributeCount @15 - _XML_Parse @16 - _XML_ParseBuffer @17 - _XML_ParserCreate @18 - _XML_ParserCreateNS @19 - _XML_ParserCreate_MM @20 - _XML_ParserFree @21 - _XML_SetAttlistDeclHandler @22 - _XML_SetBase @23 - _XML_SetCdataSectionHandler @24 - _XML_SetCharacterDataHandler @25 - _XML_SetCommentHandler @26 - _XML_SetDefaultHandler @27 - _XML_SetDefaultHandlerExpand @28 - _XML_SetDoctypeDeclHandler @29 - _XML_SetElementDeclHandler @30 - _XML_SetElementHandler @31 - _XML_SetEncoding @32 - _XML_SetEndCdataSectionHandler @33 - _XML_SetEndDoctypeDeclHandler @34 - _XML_SetEndElementHandler @35 - _XML_SetEndNamespaceDeclHandler @36 - _XML_SetEntityDeclHandler @37 - _XML_SetExternalEntityRefHandler @38 - _XML_SetExternalEntityRefHandlerArg @39 - _XML_SetNamespaceDeclHandler @40 - _XML_SetNotStandaloneHandler @41 - _XML_SetNotationDeclHandler @42 - _XML_SetParamEntityParsing @43 - _XML_SetProcessingInstructionHandler @44 - _XML_SetReturnNSTriplet @45 - _XML_SetStartCdataSectionHandler @46 - _XML_SetStartDoctypeDeclHandler @47 - _XML_SetStartElementHandler @48 - _XML_SetStartNamespaceDeclHandler @49 - _XML_SetUnknownEncodingHandler @50 - _XML_SetUnparsedEntityDeclHandler @51 - _XML_SetUserData @52 - _XML_SetXmlDeclHandler @53 - _XML_UseParserAsHandlerArg @54 -; added with version 1.95.3 - _XML_ParserReset @55 - _XML_SetSkippedEntityHandler @56 -; added with version 1.95.5 - _XML_GetFeatureList @57 - _XML_UseForeignDTD @58 -; added with version 1.95.6 - _XML_FreeContentModel @59 - _XML_MemMalloc @60 - _XML_MemRealloc @61 - _XML_MemFree @62 -; added with version 1.95.8 - _XML_StopParser @63 - _XML_ResumeParser @64 - _XML_GetParsingStatus @65 - -; Aliases for MS compatible names - XML_DefaultCurrent = _XML_DefaultCurrent - XML_ErrorString = _XML_ErrorString - XML_ExpatVersion = _XML_ExpatVersion - XML_ExpatVersionInfo = _XML_ExpatVersionInfo - XML_ExternalEntityParserCreate = _XML_ExternalEntityParserCreate - XML_GetBase = _XML_GetBase - XML_GetBuffer = _XML_GetBuffer - XML_GetCurrentByteCount = _XML_GetCurrentByteCount - XML_GetCurrentByteIndex = _XML_GetCurrentByteIndex - XML_GetCurrentColumnNumber = _XML_GetCurrentColumnNumber - XML_GetCurrentLineNumber = _XML_GetCurrentLineNumber - XML_GetErrorCode = _XML_GetErrorCode - XML_GetIdAttributeIndex = _XML_GetIdAttributeIndex - XML_GetInputContext = _XML_GetInputContext - XML_GetSpecifiedAttributeCount = _XML_GetSpecifiedAttributeCount - XML_Parse = _XML_Parse - XML_ParseBuffer = _XML_ParseBuffer - XML_ParserCreate = _XML_ParserCreate - XML_ParserCreateNS = _XML_ParserCreateNS - XML_ParserCreate_MM = _XML_ParserCreate_MM - XML_ParserFree = _XML_ParserFree - XML_SetAttlistDeclHandler = _XML_SetAttlistDeclHandler - XML_SetBase = _XML_SetBase - XML_SetCdataSectionHandler = _XML_SetCdataSectionHandler - XML_SetCharacterDataHandler = _XML_SetCharacterDataHandler - XML_SetCommentHandler = _XML_SetCommentHandler - XML_SetDefaultHandler = _XML_SetDefaultHandler - XML_SetDefaultHandlerExpand = _XML_SetDefaultHandlerExpand - XML_SetDoctypeDeclHandler = _XML_SetDoctypeDeclHandler - XML_SetElementDeclHandler = _XML_SetElementDeclHandler - XML_SetElementHandler = _XML_SetElementHandler - XML_SetEncoding = _XML_SetEncoding - XML_SetEndCdataSectionHandler = _XML_SetEndCdataSectionHandler - XML_SetEndDoctypeDeclHandler = _XML_SetEndDoctypeDeclHandler - XML_SetEndElementHandler = _XML_SetEndElementHandler - XML_SetEndNamespaceDeclHandler = _XML_SetEndNamespaceDeclHandler - XML_SetEntityDeclHandler = _XML_SetEntityDeclHandler - XML_SetExternalEntityRefHandler = _XML_SetExternalEntityRefHandler - XML_SetExternalEntityRefHandlerArg = _XML_SetExternalEntityRefHandlerArg - XML_SetNamespaceDeclHandler = _XML_SetNamespaceDeclHandler - XML_SetNotStandaloneHandler = _XML_SetNotStandaloneHandler - XML_SetNotationDeclHandler = _XML_SetNotationDeclHandler - XML_SetParamEntityParsing = _XML_SetParamEntityParsing - XML_SetProcessingInstructionHandler = _XML_SetProcessingInstructionHandler - XML_SetReturnNSTriplet = _XML_SetReturnNSTriplet - XML_SetStartCdataSectionHandler = _XML_SetStartCdataSectionHandler - XML_SetStartDoctypeDeclHandler = _XML_SetStartDoctypeDeclHandler - XML_SetStartElementHandler = _XML_SetStartElementHandler - XML_SetStartNamespaceDeclHandler = _XML_SetStartNamespaceDeclHandler - XML_SetUnknownEncodingHandler = _XML_SetUnknownEncodingHandler - XML_SetUnparsedEntityDeclHandler = _XML_SetUnparsedEntityDeclHandler - XML_SetUserData = _XML_SetUserData - XML_SetXmlDeclHandler = _XML_SetXmlDeclHandler - XML_UseParserAsHandlerArg = _XML_UseParserAsHandlerArg - XML_ParserReset = _XML_ParserReset - XML_SetSkippedEntityHandler = _XML_SetSkippedEntityHandler - XML_GetFeatureList = _XML_GetFeatureList - XML_UseForeignDTD = _XML_UseForeignDTD - XML_FreeContentModel = _XML_FreeContentModel - XML_MemMalloc = _XML_MemMalloc - XML_MemRealloc = _XML_MemRealloc - XML_MemFree = _XML_MemFree - XML_StopParser = _XML_StopParser - XML_ResumeParser = _XML_ResumeParser - XML_GetParsingStatus = _XML_GetParsingStatus - diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/libexpatw_mtd.def b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/libexpatw_mtd.def deleted file mode 100644 index 418462d..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/libexpatw_mtd.def +++ /dev/null @@ -1,140 +0,0 @@ -; DEF file for BCB5 -LIBRARY LIBEXPATW_MTD -DESCRIPTION "Implements an XML parser." -EXPORTS - _XML_DefaultCurrent @1 - _XML_ErrorString @2 - _XML_ExpatVersion @3 - _XML_ExpatVersionInfo @4 - _XML_ExternalEntityParserCreate @5 - _XML_GetBase @6 - _XML_GetBuffer @7 - _XML_GetCurrentByteCount @8 - _XML_GetCurrentByteIndex @9 - _XML_GetCurrentColumnNumber @10 - _XML_GetCurrentLineNumber @11 - _XML_GetErrorCode @12 - _XML_GetIdAttributeIndex @13 - _XML_GetInputContext @14 - _XML_GetSpecifiedAttributeCount @15 - _XML_Parse @16 - _XML_ParseBuffer @17 - _XML_ParserCreate @18 - _XML_ParserCreateNS @19 - _XML_ParserCreate_MM @20 - _XML_ParserFree @21 - _XML_SetAttlistDeclHandler @22 - _XML_SetBase @23 - _XML_SetCdataSectionHandler @24 - _XML_SetCharacterDataHandler @25 - _XML_SetCommentHandler @26 - _XML_SetDefaultHandler @27 - _XML_SetDefaultHandlerExpand @28 - _XML_SetDoctypeDeclHandler @29 - _XML_SetElementDeclHandler @30 - _XML_SetElementHandler @31 - _XML_SetEncoding @32 - _XML_SetEndCdataSectionHandler @33 - _XML_SetEndDoctypeDeclHandler @34 - _XML_SetEndElementHandler @35 - _XML_SetEndNamespaceDeclHandler @36 - _XML_SetEntityDeclHandler @37 - _XML_SetExternalEntityRefHandler @38 - _XML_SetExternalEntityRefHandlerArg @39 - _XML_SetNamespaceDeclHandler @40 - _XML_SetNotStandaloneHandler @41 - _XML_SetNotationDeclHandler @42 - _XML_SetParamEntityParsing @43 - _XML_SetProcessingInstructionHandler @44 - _XML_SetReturnNSTriplet @45 - _XML_SetStartCdataSectionHandler @46 - _XML_SetStartDoctypeDeclHandler @47 - _XML_SetStartElementHandler @48 - _XML_SetStartNamespaceDeclHandler @49 - _XML_SetUnknownEncodingHandler @50 - _XML_SetUnparsedEntityDeclHandler @51 - _XML_SetUserData @52 - _XML_SetXmlDeclHandler @53 - _XML_UseParserAsHandlerArg @54 -; added with version 1.95.3 - _XML_ParserReset @55 - _XML_SetSkippedEntityHandler @56 -; added with version 1.95.5 - _XML_GetFeatureList @57 - _XML_UseForeignDTD @58 -; added with version 1.95.6 - _XML_FreeContentModel @59 - _XML_MemMalloc @60 - _XML_MemRealloc @61 - _XML_MemFree @62 -; added with version 1.95.8 - _XML_StopParser @63 - _XML_ResumeParser @64 - _XML_GetParsingStatus @65 - -; Aliases for MS compatible names - XML_DefaultCurrent = _XML_DefaultCurrent - XML_ErrorString = _XML_ErrorString - XML_ExpatVersion = _XML_ExpatVersion - XML_ExpatVersionInfo = _XML_ExpatVersionInfo - XML_ExternalEntityParserCreate = _XML_ExternalEntityParserCreate - XML_GetBase = _XML_GetBase - XML_GetBuffer = _XML_GetBuffer - XML_GetCurrentByteCount = _XML_GetCurrentByteCount - XML_GetCurrentByteIndex = _XML_GetCurrentByteIndex - XML_GetCurrentColumnNumber = _XML_GetCurrentColumnNumber - XML_GetCurrentLineNumber = _XML_GetCurrentLineNumber - XML_GetErrorCode = _XML_GetErrorCode - XML_GetIdAttributeIndex = _XML_GetIdAttributeIndex - XML_GetInputContext = _XML_GetInputContext - XML_GetSpecifiedAttributeCount = _XML_GetSpecifiedAttributeCount - XML_Parse = _XML_Parse - XML_ParseBuffer = _XML_ParseBuffer - XML_ParserCreate = _XML_ParserCreate - XML_ParserCreateNS = _XML_ParserCreateNS - XML_ParserCreate_MM = _XML_ParserCreate_MM - XML_ParserFree = _XML_ParserFree - XML_SetAttlistDeclHandler = _XML_SetAttlistDeclHandler - XML_SetBase = _XML_SetBase - XML_SetCdataSectionHandler = _XML_SetCdataSectionHandler - XML_SetCharacterDataHandler = _XML_SetCharacterDataHandler - XML_SetCommentHandler = _XML_SetCommentHandler - XML_SetDefaultHandler = _XML_SetDefaultHandler - XML_SetDefaultHandlerExpand = _XML_SetDefaultHandlerExpand - XML_SetDoctypeDeclHandler = _XML_SetDoctypeDeclHandler - XML_SetElementDeclHandler = _XML_SetElementDeclHandler - XML_SetElementHandler = _XML_SetElementHandler - XML_SetEncoding = _XML_SetEncoding - XML_SetEndCdataSectionHandler = _XML_SetEndCdataSectionHandler - XML_SetEndDoctypeDeclHandler = _XML_SetEndDoctypeDeclHandler - XML_SetEndElementHandler = _XML_SetEndElementHandler - XML_SetEndNamespaceDeclHandler = _XML_SetEndNamespaceDeclHandler - XML_SetEntityDeclHandler = _XML_SetEntityDeclHandler - XML_SetExternalEntityRefHandler = _XML_SetExternalEntityRefHandler - XML_SetExternalEntityRefHandlerArg = _XML_SetExternalEntityRefHandlerArg - XML_SetNamespaceDeclHandler = _XML_SetNamespaceDeclHandler - XML_SetNotStandaloneHandler = _XML_SetNotStandaloneHandler - XML_SetNotationDeclHandler = _XML_SetNotationDeclHandler - XML_SetParamEntityParsing = _XML_SetParamEntityParsing - XML_SetProcessingInstructionHandler = _XML_SetProcessingInstructionHandler - XML_SetReturnNSTriplet = _XML_SetReturnNSTriplet - XML_SetStartCdataSectionHandler = _XML_SetStartCdataSectionHandler - XML_SetStartDoctypeDeclHandler = _XML_SetStartDoctypeDeclHandler - XML_SetStartElementHandler = _XML_SetStartElementHandler - XML_SetStartNamespaceDeclHandler = _XML_SetStartNamespaceDeclHandler - XML_SetUnknownEncodingHandler = _XML_SetUnknownEncodingHandler - XML_SetUnparsedEntityDeclHandler = _XML_SetUnparsedEntityDeclHandler - XML_SetUserData = _XML_SetUserData - XML_SetXmlDeclHandler = _XML_SetXmlDeclHandler - XML_UseParserAsHandlerArg = _XML_UseParserAsHandlerArg - XML_ParserReset = _XML_ParserReset - XML_SetSkippedEntityHandler = _XML_SetSkippedEntityHandler - XML_GetFeatureList = _XML_GetFeatureList - XML_UseForeignDTD = _XML_UseForeignDTD - XML_FreeContentModel = _XML_FreeContentModel - XML_MemMalloc = _XML_MemMalloc - XML_MemRealloc = _XML_MemRealloc - XML_MemFree = _XML_MemFree - XML_StopParser = _XML_StopParser - XML_ResumeParser = _XML_ResumeParser - XML_GetParsingStatus = _XML_GetParsingStatus diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/makefile.mak b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/makefile.mak deleted file mode 100644 index 548815e..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/makefile.mak +++ /dev/null @@ -1,37 +0,0 @@ -all: setup expat expatw expat_static expatw_static elements outline xmlwf - -setup: - setup - -expat: - make -l -fexpat.mak - -expatw: - make -l -fexpatw.mak - -expat_static: - make -l -fexpat_static.mak - -expatw_static: - make -l -fexpatw_static.mak - -elements: - make -l -felements.mak - -outline: - make -l -foutline.mak - -xmlwf: - make -l -fxmlwf.mak - -clean: -# works on Win98/ME -# deltree /y release\obj -# works on WinNT/2000 - del /s/f/q release\obj - -distclean: -# works on Win98/ME -# deltree /y release\*.* -# works on WinNT/2000 - del /s/f/q release\* diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/outline.bpf b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/outline.bpf deleted file mode 100644 index 52dce83..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/outline.bpf +++ /dev/null @@ -1,4 +0,0 @@ -USEUNIT("..\examples\outline.c"); -USELIB("Release\libexpat_mtd.lib"); -//--------------------------------------------------------------------------- -main diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/outline.bpr b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/outline.bpr deleted file mode 100644 index e0ae5cd..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/outline.bpr +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[Version Info] -IncludeVerInfo=0 -AutoIncBuild=0 -MajorVer=1 -MinorVer=0 -Release=0 -Build=0 -Debug=0 -PreRelease=0 -Special=0 -Private=0 -DLL=0 -Locale=1033 -CodePage=1252 - -[Version Info Keys] -CompanyName= -FileDescription= -FileVersion=1.0.0.0 -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename= -ProductName= -ProductVersion=1.0.0.0 -Comments= - -[HistoryLists\hlIncludePath] -Count=3 -Item0=..\examples;$(BCB)\include -Item1=$(BCB)\include -Item2=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl; - -[HistoryLists\hlLibraryPath] -Count=4 -Item0=..\examples;$(BCB)\lib;$(RELEASELIBPATH) -Item1=..\examples;$(BCB)\lib;..\examples\$(RELEASELIBPATH) -Item2=$(BCB)\lib;$(RELEASELIBPATH) -Item3=$(BCB)\lib;$(RELEASELIBPATH);;$(BCB)\lib\psdk; - -[HistoryLists\hlDebugSourcePath] -Count=1 -Item0=$(BCB)\source\vcl - -[HistoryLists\hlConditionals] -Count=6 -Item0=WIN32;NDEBUG;_CONSOLE -Item1=WIN32;NDEBUG;_CONSOLE;XML_STATIC -Item2=WIN32;NDEBUG;_CONSOLE;_DEBUG;XML_STATIC -Item3=WIN32;NDEBUG;_CONSOLE;_DEBUG;XML_UNICODE_WCHAR_T;_UNICODE;XML_STATIC -Item4=WIN32;NDEBUG;_CONSOLE;_DEBUG;XML_UNICODE_WCHAR_T;_UNICODE -Item5=WIN32;NDEBUG;_CONSOLE;_DEBUG - -[HistoryLists\hlIntOutputDir] -Count=4 -Item0=Release\obj\examples -Item1=Release\obj\outline -Item2=..\examples\Release -Item3=Release - -[HistoryLists\hlFinalOutputDir] -Count=1 -Item0=Release\ - -[Debugging] -DebugSourceDirs= - -[Parameters] -RunParams= -HostApplication= -RemoteHost= -RemotePath= -RemoteDebug=0 - -[Compiler] -ShowInfoMsgs=0 -LinkDebugVcl=0 -LinkCGLIB=0 - -[Language] -ActiveLang= -ProjectLang= -RootDir= - - \ No newline at end of file diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/outline.mak b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/outline.mak deleted file mode 100644 index 510b541..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/outline.mak +++ /dev/null @@ -1,186 +0,0 @@ -# --------------------------------------------------------------------------- -!if !$d(BCB) -BCB = $(MAKEDIR)\.. -!endif - -# --------------------------------------------------------------------------- -# IDE SECTION -# --------------------------------------------------------------------------- -# The following section of the project makefile is managed by the BCB IDE. -# It is recommended to use the IDE to change any of the values in this -# section. -# --------------------------------------------------------------------------- - -VERSION = BCB.05.03 -# --------------------------------------------------------------------------- -PROJECT = Release\outline.exe -OBJFILES = Release\obj\examples\outline.obj -RESFILES = -MAINSOURCE = outline.bpf -RESDEPEN = $(RESFILES) -LIBFILES = Release\libexpat_mtd.lib -IDLFILES = -IDLGENFILES = -LIBRARIES = -PACKAGES = VCL50.bpi VCLX50.bpi bcbsmp50.bpi QRPT50.bpi VCLDB50.bpi VCLBDE50.bpi \ - ibsmp50.bpi VCLDBX50.bpi TEEUI50.bpi TEEDB50.bpi TEE50.bpi TEEQR50.bpi \ - VCLIB50.bpi bcbie50.bpi VCLIE50.bpi INETDB50.bpi INET50.bpi NMFAST50.bpi \ - dclocx50.bpi bcb2kaxserver50.bpi dclusr50.bpi -SPARELIBS = -DEFFILE = -# --------------------------------------------------------------------------- -PATHCPP = .;..\examples -PATHASM = .; -PATHPAS = .; -PATHRC = .; -DEBUGLIBPATH = $(BCB)\lib\debug -RELEASELIBPATH = $(BCB)\lib\release -USERDEFINES = WIN32;NDEBUG;_CONSOLE -SYSDEFINES = _NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL -INCLUDEPATH = ..\examples;$(BCB)\include -LIBPATH = ..\examples;$(BCB)\lib;$(RELEASELIBPATH) -WARNINGS= -w-par -w-8027 -w-8026 -# --------------------------------------------------------------------------- -CFLAG1 = -O2 -X- -a8 -b -k- -vi -q -tWM -I..\lib -c -IDLCFLAGS = -I$(BCB)\include -PFLAGS = -N2Release\obj\examples -N0Release\obj\examples -$Y- -$L- -$D- -RFLAGS = /l 0x409 /d "NDEBUG" /i$(BCB)\include -AFLAGS = /mx /w2 /zn -LFLAGS = -IRelease\obj\examples -D"" -ap -Tpe -x -Gn -q -# --------------------------------------------------------------------------- -ALLOBJ = c0x32.obj $(OBJFILES) -ALLRES = $(RESFILES) -ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cw32mti.lib -# --------------------------------------------------------------------------- -!ifdef IDEOPTIONS - -[Version Info] -IncludeVerInfo=0 -AutoIncBuild=0 -MajorVer=1 -MinorVer=0 -Release=0 -Build=0 -Debug=0 -PreRelease=0 -Special=0 -Private=0 -DLL=0 - -[Version Info Keys] -CompanyName= -FileDescription= -FileVersion=1.0.0.0 -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename= -ProductName= -ProductVersion=1.0.0.0 -Comments= - -[Debugging] -DebugSourceDirs=$(BCB)\source\vcl - -!endif - - - - - -# --------------------------------------------------------------------------- -# MAKE SECTION -# --------------------------------------------------------------------------- -# This section of the project file is not used by the BCB IDE. It is for -# the benefit of building from the command-line using the MAKE utility. -# --------------------------------------------------------------------------- - -.autodepend -# --------------------------------------------------------------------------- -!if "$(USERDEFINES)" != "" -AUSERDEFINES = -d$(USERDEFINES:;= -d) -!else -AUSERDEFINES = -!endif - -!if !$d(BCC32) -BCC32 = bcc32 -!endif - -!if !$d(CPP32) -CPP32 = cpp32 -!endif - -!if !$d(DCC32) -DCC32 = dcc32 -!endif - -!if !$d(TASM32) -TASM32 = tasm32 -!endif - -!if !$d(LINKER) -LINKER = ilink32 -!endif - -!if !$d(BRCC32) -BRCC32 = brcc32 -!endif - - -# --------------------------------------------------------------------------- -!if $d(PATHCPP) -.PATH.CPP = $(PATHCPP) -.PATH.C = $(PATHCPP) -!endif - -!if $d(PATHPAS) -.PATH.PAS = $(PATHPAS) -!endif - -!if $d(PATHASM) -.PATH.ASM = $(PATHASM) -!endif - -!if $d(PATHRC) -.PATH.RC = $(PATHRC) -!endif -# --------------------------------------------------------------------------- -$(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) - $(BCB)\BIN\$(LINKER) @&&! - $(LFLAGS) -L$(LIBPATH) + - $(ALLOBJ), + - $(PROJECT),, + - $(ALLLIB), + - $(DEFFILE), + - $(ALLRES) -! -# --------------------------------------------------------------------------- -.pas.hpp: - $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } - -.pas.obj: - $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } - -.cpp.obj: - $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } - -.c.obj: - $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } - -.c.i: - $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } - -.cpp.i: - $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } - -.asm.obj: - $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ - -.rc.res: - $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< -# --------------------------------------------------------------------------- - - - - diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/setup.bat b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/setup.bat deleted file mode 100644 index 6f4b573..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/setup.bat +++ /dev/null @@ -1,9 +0,0 @@ -REM CommandInterpreter: $(COMSPEC) -if not exist .\release\nul mkdir release -if not exist .\release\obj\nul mkdir release\obj -if not exist .\release\obj\libexpat\nul mkdir release\obj\libexpat -if not exist .\release\obj\libexpatw\nul mkdir release\obj\libexpatw -if not exist .\release\obj\libexpat_static\nul mkdir release\obj\libexpat_static -if not exist .\release\obj\libexpatw_static\nul mkdir release\obj\libexpatw_static -if not exist .\release\obj\examples\nul mkdir release\obj\examples -if not exist .\release\obj\xmlwf\nul mkdir release\obj\xmlwf diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/xmlwf.bpf b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/xmlwf.bpf deleted file mode 100644 index d06208e..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/xmlwf.bpf +++ /dev/null @@ -1,7 +0,0 @@ -USEUNIT("..\xmlwf\codepage.c"); -USEUNIT("..\xmlwf\win32filemap.c"); -USEUNIT("..\xmlwf\xmlfile.c"); -USEUNIT("..\xmlwf\xmlwf.c"); -USELIB("Release\libexpat_mtd.lib"); -//--------------------------------------------------------------------------- -main diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/xmlwf.bpr b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/xmlwf.bpr deleted file mode 100644 index d33a153..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/xmlwf.bpr +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[Version Info] -IncludeVerInfo=0 -AutoIncBuild=0 -MajorVer=1 -MinorVer=0 -Release=0 -Build=0 -Debug=0 -PreRelease=0 -Special=0 -Private=0 -DLL=0 -Locale=1033 -CodePage=1252 - -[Version Info Keys] -CompanyName= -FileDescription= -FileVersion=1.0.0.0 -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename= -ProductName= -ProductVersion=1.0.0.0 -Comments= - -[HistoryLists\hlIncludePath] -Count=4 -Item0=..\xmlwf;$(BCB)\include -Item1=$(BCB)\include -Item2=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl -Item3=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl; - -[HistoryLists\hlLibraryPath] -Count=5 -Item0=..\xmlwf;$(BCB)\lib;$(RELEASELIBPATH) -Item1=..\xmlwf;$(BCB)\lib;..\xmlwf\$(RELEASELIBPATH) -Item2=$(BCB)\lib;$(RELEASELIBPATH) -Item3=$(BCB)\lib;$(RELEASELIBPATH);$(BCB)\lib\psdk -Item4=$(BCB)\lib;$(RELEASELIBPATH);;$(BCB)\lib\psdk; - -[HistoryLists\hlDebugSourcePath] -Count=1 -Item0=$(BCB)\source\vcl - -[HistoryLists\hlConditionals] -Count=6 -Item0=NDEBUG;WIN32;_CONSOLE;COMPILED_FROM_DSP -Item1=NDEBUG;WIN32;_CONSOLE;COMPILED_FROM_DSP;_DEBUG;XML_UNICODE_WCHAR_T;_UNICODE -Item2=NDEBUG;WIN32;_CONSOLE;COMPILED_FROM_DSP;_DEBUG;XML_UNICODE_WCHAR_T -Item3=NDEBUG;WIN32;_CONSOLE;COMPILED_FROM_DSP;_DEBUG -Item4=NDEBUG;WIN32;_CONSOLE;COMPILED_FROM_DSP;_DEBUG;_UNICODE;XML_UNICODE_WCHAR_T -Item5=NDEBUG;WIN32;_CONSOLE;COMPILED_FROM_DSP;_DEBUG;_UNICODE - -[HistoryLists\hlIntOutputDir] -Count=3 -Item0=Release\obj\xmlwf -Item1=..\xmlwf\Release -Item2=Release - -[HistoryLists\hlFinalOutputDir] -Count=3 -Item0=Release\ -Item1=Release -Item2=.\Release\ - -[Debugging] -DebugSourceDirs= - -[Parameters] -RunParams=sample.xml -HostApplication= -RemoteHost= -RemotePath= -RemoteDebug=0 - -[Compiler] -ShowInfoMsgs=0 -LinkDebugVcl=0 -LinkCGLIB=0 - -[Language] -ActiveLang= -ProjectLang= -RootDir= - - \ No newline at end of file diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/xmlwf.mak b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/xmlwf.mak deleted file mode 100644 index f74126e..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/bcb5/xmlwf.mak +++ /dev/null @@ -1,187 +0,0 @@ -# --------------------------------------------------------------------------- -!if !$d(BCB) -BCB = $(MAKEDIR)\.. -!endif - -# --------------------------------------------------------------------------- -# IDE SECTION -# --------------------------------------------------------------------------- -# The following section of the project makefile is managed by the BCB IDE. -# It is recommended to use the IDE to change any of the values in this -# section. -# --------------------------------------------------------------------------- - -VERSION = BCB.05.03 -# --------------------------------------------------------------------------- -PROJECT = Release\xmlwf.exe -OBJFILES = Release\obj\xmlwf\codepage.obj Release\obj\xmlwf\win32filemap.obj \ - Release\obj\xmlwf\xmlfile.obj Release\obj\xmlwf\xmlwf.obj -RESFILES = -MAINSOURCE = xmlwf.bpf -RESDEPEN = $(RESFILES) -LIBFILES = Release\libexpat_mtd.lib -IDLFILES = -IDLGENFILES = -LIBRARIES = -PACKAGES = VCL50.bpi VCLX50.bpi bcbsmp50.bpi QRPT50.bpi VCLDB50.bpi VCLBDE50.bpi \ - ibsmp50.bpi VCLDBX50.bpi TEEUI50.bpi TEEDB50.bpi TEE50.bpi TEEQR50.bpi \ - VCLIB50.bpi bcbie50.bpi VCLIE50.bpi INETDB50.bpi INET50.bpi NMFAST50.bpi \ - dclocx50.bpi bcb2kaxserver50.bpi dclusr50.bpi -SPARELIBS = -DEFFILE = -# --------------------------------------------------------------------------- -PATHCPP = .;..\xmlwf -PATHASM = .; -PATHPAS = .; -PATHRC = .; -DEBUGLIBPATH = $(BCB)\lib\debug -RELEASELIBPATH = $(BCB)\lib\release -USERDEFINES = NDEBUG;WIN32;_CONSOLE;COMPILED_FROM_DSP -SYSDEFINES = _NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL -INCLUDEPATH = ..\xmlwf;$(BCB)\include -LIBPATH = ..\xmlwf;$(BCB)\lib;$(RELEASELIBPATH) -WARNINGS= -w-8065 -w-par -w-8027 -w-8026 -# --------------------------------------------------------------------------- -CFLAG1 = -O2 -X- -a8 -b -k- -vi -q -tWM -I..\lib -c -IDLCFLAGS = -I$(BCB)\include -PFLAGS = -N2Release\obj\xmlwf -N0Release\obj\xmlwf -$Y- -$L- -$D- -RFLAGS = /l 0x409 /d "NDEBUG" /i$(BCB)\include -AFLAGS = /mx /w2 /zn -LFLAGS = -IRelease\obj\xmlwf -D"" -ap -Tpe -x -Gn -q -# --------------------------------------------------------------------------- -ALLOBJ = c0x32.obj $(OBJFILES) -ALLRES = $(RESFILES) -ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cw32mti.lib -# --------------------------------------------------------------------------- -!ifdef IDEOPTIONS - -[Version Info] -IncludeVerInfo=0 -AutoIncBuild=0 -MajorVer=1 -MinorVer=0 -Release=0 -Build=0 -Debug=0 -PreRelease=0 -Special=0 -Private=0 -DLL=0 - -[Version Info Keys] -CompanyName= -FileDescription= -FileVersion=1.0.0.0 -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename= -ProductName= -ProductVersion=1.0.0.0 -Comments= - -[Debugging] -DebugSourceDirs=$(BCB)\source\vcl - -!endif - - - - - -# --------------------------------------------------------------------------- -# MAKE SECTION -# --------------------------------------------------------------------------- -# This section of the project file is not used by the BCB IDE. It is for -# the benefit of building from the command-line using the MAKE utility. -# --------------------------------------------------------------------------- - -.autodepend -# --------------------------------------------------------------------------- -!if "$(USERDEFINES)" != "" -AUSERDEFINES = -d$(USERDEFINES:;= -d) -!else -AUSERDEFINES = -!endif - -!if !$d(BCC32) -BCC32 = bcc32 -!endif - -!if !$d(CPP32) -CPP32 = cpp32 -!endif - -!if !$d(DCC32) -DCC32 = dcc32 -!endif - -!if !$d(TASM32) -TASM32 = tasm32 -!endif - -!if !$d(LINKER) -LINKER = ilink32 -!endif - -!if !$d(BRCC32) -BRCC32 = brcc32 -!endif - - -# --------------------------------------------------------------------------- -!if $d(PATHCPP) -.PATH.CPP = $(PATHCPP) -.PATH.C = $(PATHCPP) -!endif - -!if $d(PATHPAS) -.PATH.PAS = $(PATHPAS) -!endif - -!if $d(PATHASM) -.PATH.ASM = $(PATHASM) -!endif - -!if $d(PATHRC) -.PATH.RC = $(PATHRC) -!endif -# --------------------------------------------------------------------------- -$(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) - $(BCB)\BIN\$(LINKER) @&&! - $(LFLAGS) -L$(LIBPATH) + - $(ALLOBJ), + - $(PROJECT),, + - $(ALLLIB), + - $(DEFFILE), + - $(ALLRES) -! -# --------------------------------------------------------------------------- -.pas.hpp: - $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } - -.pas.obj: - $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } - -.cpp.obj: - $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } - -.c.obj: - $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } - -.c.i: - $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } - -.cpp.i: - $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } - -.asm.obj: - $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ - -.rc.res: - $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< -# --------------------------------------------------------------------------- - - - - diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/configure b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/configure deleted file mode 100755 index 247d0ef..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/configure +++ /dev/null @@ -1,18632 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for expat 2.1.0. -# -# Report bugs to . -# -# -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software -# Foundation, Inc. -# -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 - - test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ - || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - # We cannot yet assume a decent shell, so we have to provide a - # neutralization value for shells without unset; and this also - # works around shells that cannot unset nonexistent variables. - # Preserve -v and -x to the replacement shell. - BASH_ENV=/dev/null - ENV=/dev/null - (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV - export CONFIG_SHELL - case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; - esac - exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org and -$0: expat-bugs@libexpat.org about your system, including -$0: any error possibly output before this message. Then -$0: install a modern shell, or manually run the script -$0: under such a shell if you do have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - -SHELL=${CONFIG_SHELL-/bin/sh} - - -test -n "$DJDIR" || exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME='expat' -PACKAGE_TARNAME='expat' -PACKAGE_VERSION='2.1.0' -PACKAGE_STRING='expat 2.1.0' -PACKAGE_BUGREPORT='expat-bugs@libexpat.org' -PACKAGE_URL='' - -ac_unique_file="Makefile.in" -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_header_list= -ac_subst_vars='LTLIBOBJS -LIBOBJS -FILEMAP -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -CXXCPP -ac_ct_CXX -CXXFLAGS -CXX -LIBAGE -LIBREVISION -LIBCURRENT -CPP -OTOOL64 -OTOOL -LIPO -NMEDIT -DSYMUTIL -MANIFEST_TOOL -AWK -RANLIB -STRIP -ac_ct_AR -AR -LN_S -NM -ac_ct_DUMPBIN -DUMPBIN -LD -FGREP -EGREP -GREP -SED -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -LIBTOOL -OBJDUMP -DLLTOOL -AS -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_shared -enable_static -with_pic -enable_fast_install -with_gnu_ld -with_sysroot -enable_libtool_lock -' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CPP -CXX -CXXFLAGS -CCC -CXXCPP' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used" >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures expat 2.1.0 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/expat] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of expat 2.1.0:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-shared[=PKGS] build shared libraries [default=yes] - --enable-static[=PKGS] build static libraries [default=yes] - --enable-fast-install[=PKGS] - optimize for fast installation [default=yes] - --disable-libtool-lock avoid locking (might break parallel builds) - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-pic try to use only PIC/non-PIC objects [default=use - both] - --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --with-sysroot=DIR Search for dependent libraries within DIR - (or the compiler's sysroot if not specified). - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - CPP C preprocessor - CXX C++ compiler command - CXXFLAGS C++ compiler flags - CXXCPP C++ preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to . -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -expat configure 2.1.0 -generated by GNU Autoconf 2.68 - -Copyright (C) 2010 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_link - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_func - -# ac_fn_cxx_try_compile LINENO -# ---------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_compile - -# ac_fn_cxx_try_cpp LINENO -# ------------------------ -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_cpp - -# ac_fn_cxx_try_link LINENO -# ------------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_link - -# ac_fn_c_check_type LINENO TYPE VAR INCLUDES -# ------------------------------------------- -# Tests whether TYPE exists after having included INCLUDES, setting cache -# variable VAR accordingly. -ac_fn_c_check_type () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=no" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof ($2)) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof (($2))) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - eval "$3=yes" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_type - -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -( $as_echo "## -------------------------------------- ## -## Report this to expat-bugs@libexpat.org ## -## -------------------------------------- ##" - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_mongrel -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by expat $as_me 2.1.0, which was -generated by GNU Autoconf 2.68. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - $as_echo "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - $as_echo "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - $as_echo "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -$as_echo "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special files - # actually), so we avoid doing that. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -as_fn_append ac_header_list " stdlib.h" -as_fn_append ac_header_list " unistd.h" -as_fn_append ac_header_list " sys/param.h" -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - -ac_aux_dir= -for ac_dir in conftools "$srcdir"/conftools; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in conftools \"$srcdir\"/conftools" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - - - - - -LIBCURRENT=7 -LIBREVISION=0 -LIBAGE=6 - -ac_config_headers="$ac_config_headers expat_config.h" - - - - - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - -enable_win32_dll=yes - -case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. -set dummy ${ac_tool_prefix}as; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AS+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AS"; then - ac_cv_prog_AS="$AS" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AS="${ac_tool_prefix}as" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AS=$ac_cv_prog_AS -if test -n "$AS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 -$as_echo "$AS" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_AS"; then - ac_ct_AS=$AS - # Extract the first word of "as", so it can be a program name with args. -set dummy as; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AS+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AS"; then - ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_AS="as" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AS=$ac_cv_prog_ac_ct_AS -if test -n "$ac_ct_AS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 -$as_echo "$ac_ct_AS" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_AS" = x; then - AS="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AS=$ac_ct_AS - fi -else - AS="$ac_cv_prog_AS" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DLLTOOL"; then - ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DLLTOOL=$ac_cv_prog_DLLTOOL -if test -n "$DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DLLTOOL"; then - ac_ct_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DLLTOOL"; then - ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL -if test -n "$ac_ct_DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DLLTOOL" = x; then - DLLTOOL="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DLLTOOL=$ac_ct_DLLTOOL - fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - - ;; -esac - -test -z "$AS" && AS=as - - - - - -test -z "$DLLTOOL" && DLLTOOL=dlltool - - - - - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - - -case `pwd` in - *\ * | *\ *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; -esac - - - -macro_version='2.4' -macro_revision='1.3293' - - - - - - - - - - - - - -ltmain="$ac_aux_dir/ltmain.sh" - -# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\(["`$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 -$as_echo_n "checking how to print strings... " >&6; } -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "" -} - -case "$ECHO" in - printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 -$as_echo "printf" >&6; } ;; - print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 -$as_echo "print -r" >&6; } ;; - *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 -$as_echo "cat" >&6; } ;; -esac - - - - - - - - - - - - - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -$as_echo_n "checking for fgrep... " >&6; } -if ${ac_cv_path_FGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 - then ac_cv_path_FGREP="$GREP -F" - else - if test -z "$FGREP"; then - ac_path_FGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue -# Check for GNU ac_path_FGREP and select it if it is found. - # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in -*GNU*) - ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'FGREP' >> "conftest.nl" - "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_FGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_FGREP="$ac_path_FGREP" - ac_path_FGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_FGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_FGREP"; then - as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_FGREP=$FGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -$as_echo "$ac_cv_path_FGREP" >&6; } - FGREP="$ac_cv_path_FGREP" - - -test -z "$GREP" && GREP=grep - - - - - - - - - - - - - - - - - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -if ${lt_cv_path_NM+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -$as_echo "$lt_cv_path_NM" >&6; } -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - if test -n "$ac_tool_prefix"; then - for ac_prog in dumpbin "link -dump" - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DUMPBIN"; then - ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DUMPBIN=$ac_cv_prog_DUMPBIN -if test -n "$DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -$as_echo "$DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$DUMPBIN" && break - done -fi -if test -z "$DUMPBIN"; then - ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in dumpbin "link -dump" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DUMPBIN"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN -if test -n "$ac_ct_DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -$as_echo "$ac_ct_DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_DUMPBIN" && break -done - - if test "x$ac_ct_DUMPBIN" = x; then - DUMPBIN=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DUMPBIN=$ac_ct_DUMPBIN - fi -fi - - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols" - ;; - *) - DUMPBIN=: - ;; - esac - fi - - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi -fi -test -z "$NM" && NM=nm - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -$as_echo_n "checking the name lister ($NM) interface... " >&6; } -if ${lt_cv_nm_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: output\"" >&5) - cat conftest.out >&5 - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -$as_echo "$lt_cv_nm_interface" >&6; } - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } -fi - -# find the maximum length of command line arguments -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -$as_echo_n "checking the maximum length of command line arguments... " >&6; } -if ${lt_cv_sys_max_cmd_len+:} false; then : - $as_echo_n "(cached) " >&6 -else - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac - -fi - -if test -n $lt_cv_sys_max_cmd_len ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -$as_echo "$lt_cv_sys_max_cmd_len" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } -fi -max_cmd_len=$lt_cv_sys_max_cmd_len - - - - - - -: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 -$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,b/c, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 -$as_echo "$xsi_shell" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 -$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } -lt_shell_append=no -( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 -$as_echo "$lt_shell_append" >&6; } - - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi - - - - - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 -$as_echo_n "checking how to convert $build file names to $host format... " >&6; } -if ${lt_cv_to_host_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac - -fi - -to_host_file_cmd=$lt_cv_to_host_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 -$as_echo "$lt_cv_to_host_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 -$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } -if ${lt_cv_to_tool_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - #assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac - -fi - -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 -$as_echo "$lt_cv_to_tool_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 -$as_echo_n "checking for $LD option to reload object files... " >&6; } -if ${lt_cv_ld_reload_flag+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_reload_flag='-r' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -$as_echo "$lt_cv_ld_reload_flag" >&6; } -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' -case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - if test "$GCC" != yes; then - reload_cmds=false - fi - ;; - darwin*) - if test "$GCC" = yes; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -$as_echo_n "checking how to recognize dependent libraries... " >&6; } -if ${lt_cv_deplibs_check_method+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[4-9]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[45]*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. - if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[3-9]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -$as_echo "$lt_cv_deplibs_check_method" >&6; } - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - - - - - - - - - - - - - - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DLLTOOL"; then - ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DLLTOOL=$ac_cv_prog_DLLTOOL -if test -n "$DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DLLTOOL"; then - ac_ct_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DLLTOOL"; then - ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL -if test -n "$ac_ct_DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DLLTOOL" = x; then - DLLTOOL="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DLLTOOL=$ac_ct_DLLTOOL - fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" -fi - -test -z "$DLLTOOL" && DLLTOOL=dlltool - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 -$as_echo_n "checking how to associate runtime and link libraries... " >&6; } -if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh - # decide which to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd="$ECHO" - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 -$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - - - - - - - - -if test -n "$ac_tool_prefix"; then - for ac_prog in ar - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AR" && break - done -fi -if test -z "$AR"; then - ac_ct_AR=$AR - for ac_prog in ar -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_AR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_AR" && break -done - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -fi - -: ${AR=ar} -: ${AR_FLAGS=cru} - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 -$as_echo_n "checking for archiver @FILE support... " >&6; } -if ${lt_cv_ar_at_file+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ar_at_file=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test "$ac_status" -eq 0; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test "$ac_status" -ne 0; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 -$as_echo "$lt_cv_ar_at_file" >&6; } - -if test "x$lt_cv_ar_at_file" = xno; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -test -z "$STRIP" && STRIP=: - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -test -z "$RANLIB" && RANLIB=: - - - - - - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac - - - - - - - - - - - - - - - - - - - - - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AWK" && break -done - - - - - - - - - - - - - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# Check for command to grab the raw symbol name followed by C symbol from nm. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } -if ${lt_cv_sys_global_symbol_pipe+:} false; then : - $as_echo_n "(cached) " >&6 -else - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[BCDEGRST]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[BCDT]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[ABCDGISTW]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[ABCDEGRST]' - fi - ;; -irix* | nonstopux*) - symcode='[BCDEGRST]' - ;; -osf*) - symcode='[BCDEGQRST]' - ;; -solaris*) - symcode='[BDRT]' - ;; -sco3.2v5*) - symcode='[DT]' - ;; -sysv4.2uw2*) - symcode='[DT]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[ABDT]' - ;; -sysv4) - symcode='[DFNSTU]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[ABCDGIRSTW]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK '"\ -" {last_section=section; section=\$ 3};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Now try to grab the symbols. - nlist=conftest.nm - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 - (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT_DLSYM_CONST -#elif defined(__osf__) -/* This system does not cope well with relocations in const data. */ -# define LT_DLSYM_CONST -#else -# define LT_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done - -fi - -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; } -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 -$as_echo_n "checking for sysroot... " >&6; } - -# Check whether --with-sysroot was given. -if test "${with_sysroot+set}" = set; then : - withval=$with_sysroot; -else - with_sysroot=no -fi - - -lt_sysroot= -case ${with_sysroot} in #( - yes) - if test "$GCC" = yes; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 -$as_echo "${with_sysroot}" >&6; } - as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 - ;; -esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 -$as_echo "${lt_sysroot:-no}" >&6; } - - - - - -# Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then : - enableval=$enable_libtool_lock; -fi - -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -$as_echo_n "checking whether the C compiler needs -belf... " >&6; } -if ${lt_cv_cc_needs_belf+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_cc_needs_belf=yes -else - lt_cv_cc_needs_belf=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -$as_echo "$lt_cv_cc_needs_belf" >&6; } - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -sparc*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks="$enable_libtool_lock" - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. -set dummy ${ac_tool_prefix}mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$MANIFEST_TOOL"; then - ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL -if test -n "$MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 -$as_echo "$MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_MANIFEST_TOOL"; then - ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL - # Extract the first word of "mt", so it can be a program name with args. -set dummy mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_MANIFEST_TOOL"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL -if test -n "$ac_ct_MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 -$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_MANIFEST_TOOL" = x; then - MANIFEST_TOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL - fi -else - MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" -fi - -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 -$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } -if ${lt_cv_path_mainfest_tool+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&5 - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 -$as_echo "$lt_cv_path_mainfest_tool" >&6; } -if test "x$lt_cv_path_mainfest_tool" != xyes; then - MANIFEST_TOOL=: -fi - - - - - - - case $host_os in - rhapsody* | darwin*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. -set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DSYMUTIL"; then - ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DSYMUTIL=$ac_cv_prog_DSYMUTIL -if test -n "$DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -$as_echo "$DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DSYMUTIL"; then - ac_ct_DSYMUTIL=$DSYMUTIL - # Extract the first word of "dsymutil", so it can be a program name with args. -set dummy dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DSYMUTIL"; then - ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL -if test -n "$ac_ct_DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -$as_echo "$ac_ct_DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DSYMUTIL" = x; then - DSYMUTIL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DSYMUTIL=$ac_ct_DSYMUTIL - fi -else - DSYMUTIL="$ac_cv_prog_DSYMUTIL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. -set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NMEDIT"; then - ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -NMEDIT=$ac_cv_prog_NMEDIT -if test -n "$NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -$as_echo "$NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_NMEDIT"; then - ac_ct_NMEDIT=$NMEDIT - # Extract the first word of "nmedit", so it can be a program name with args. -set dummy nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_NMEDIT"; then - ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_NMEDIT="nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT -if test -n "$ac_ct_NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -$as_echo "$ac_ct_NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_NMEDIT" = x; then - NMEDIT=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - NMEDIT=$ac_ct_NMEDIT - fi -else - NMEDIT="$ac_cv_prog_NMEDIT" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. -set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$LIPO"; then - ac_cv_prog_LIPO="$LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -LIPO=$ac_cv_prog_LIPO -if test -n "$LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -$as_echo "$LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_LIPO"; then - ac_ct_LIPO=$LIPO - # Extract the first word of "lipo", so it can be a program name with args. -set dummy lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_LIPO"; then - ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_LIPO="lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO -if test -n "$ac_ct_LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -$as_echo "$ac_ct_LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_LIPO" = x; then - LIPO=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - LIPO=$ac_ct_LIPO - fi -else - LIPO="$ac_cv_prog_LIPO" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL"; then - ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL=$ac_cv_prog_OTOOL -if test -n "$OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -$as_echo "$OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL"; then - ac_ct_OTOOL=$OTOOL - # Extract the first word of "otool", so it can be a program name with args. -set dummy otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL"; then - ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OTOOL="otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL -if test -n "$ac_ct_OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -$as_echo "$ac_ct_OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL" = x; then - OTOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL=$ac_ct_OTOOL - fi -else - OTOOL="$ac_cv_prog_OTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL64"; then - ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL64=$ac_cv_prog_OTOOL64 -if test -n "$OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -$as_echo "$OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL64"; then - ac_ct_OTOOL64=$OTOOL64 - # Extract the first word of "otool64", so it can be a program name with args. -set dummy otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL64"; then - ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OTOOL64="otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 -if test -n "$ac_ct_OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -$as_echo "$ac_ct_OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL64" = x; then - OTOOL64=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL64=$ac_ct_OTOOL64 - fi -else - OTOOL64="$ac_cv_prog_OTOOL64" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -$as_echo_n "checking for -single_module linker flag... " >&6; } -if ${lt_cv_apple_cc_single_mod+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&5 - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -$as_echo "$lt_cv_apple_cc_single_mod" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 -$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } -if ${lt_cv_ld_exported_symbols_list+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_ld_exported_symbols_list=yes -else - lt_cv_ld_exported_symbols_list=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 -$as_echo_n "checking for -force_load linker flag... " >&6; } -if ${lt_cv_ld_force_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 - echo "$AR cru libconftest.a conftest.o" >&5 - $AR cru libconftest.a conftest.o 2>&5 - echo "$RANLIB libconftest.a" >&5 - $RANLIB libconftest.a 2>&5 - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&5 - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 -$as_echo "$lt_cv_ld_force_load" >&6; } - case $host_os in - rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[012]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -for ac_header in dlfcn.h -do : - ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default -" -if test "x$ac_cv_header_dlfcn_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DLFCN_H 1 -_ACEOF - -fi - -done - - - - - -# Set options - - - - enable_dlopen=no - - - - # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : - enableval=$enable_shared; p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_shared=yes -fi - - - - - - - - - - # Check whether --enable-static was given. -if test "${enable_static+set}" = set; then : - enableval=$enable_static; p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_static=yes -fi - - - - - - - - - - -# Check whether --with-pic was given. -if test "${with_pic+set}" = set; then : - withval=$with_pic; pic_mode="$withval" -else - pic_mode=default -fi - - -test -z "$pic_mode" && pic_mode=default - - - - - - - - # Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then : - enableval=$enable_fast_install; p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_fast_install=yes -fi - - - - - - - - - - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - - - - - - - - - - - - - - - - - - - - - - - - - - -test -z "$LN_S" && LN_S="ln -s" - - - - - - - - - - - - - - -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -$as_echo_n "checking for objdir... " >&6; } -if ${lt_cv_objdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -$as_echo "$lt_cv_objdir" >&6; } -objdir=$lt_cv_objdir - - - - - -cat >>confdefs.h <<_ACEOF -#define LT_OBJDIR "$lt_cv_objdir/" -_ACEOF - - - - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/${ac_tool_prefix}file; then - lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -$as_echo_n "checking for file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/file; then - lt_cv_path_MAGIC_CMD="$ac_dir/file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -# Use C for the default configuration in the libtool script - -lt_save_CC="$CC" -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -objext=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - -if test -n "$compiler"; then - -lt_prog_compiler_no_builtin_flag= - -if test "$GCC" = yes; then - case $cc_basename in - nvcc*) - lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; - *) - lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } -if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_rtti_exceptions=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } - -if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then - lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" -else - : -fi - -fi - - - - - - - lt_prog_compiler_wl= -lt_prog_compiler_pic= -lt_prog_compiler_static= - - - if test "$GCC" = yes; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - ;; - - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - lt_prog_compiler_can_build_shared=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic=-Kconform_pic - fi - ;; - - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - lt_prog_compiler_wl='-Xlinker ' - lt_prog_compiler_pic='-Xcompiler -fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - else - lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - hpux9* | hpux10* | hpux11*) - lt_prog_compiler_wl='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='--shared' - lt_prog_compiler_static='--static' - ;; - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - ccc*) - lt_prog_compiler_wl='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-qpic' - lt_prog_compiler_static='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ F* | *Sun*Fortran*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='' - ;; - *Sun\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; - esac - ;; - esac - ;; - - newsos6) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - - rdos*) - lt_prog_compiler_static='-non_shared' - ;; - - solaris*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - lt_prog_compiler_wl='-Qoption ld ';; - *) - lt_prog_compiler_wl='-Wl,';; - esac - ;; - - sunos4*) - lt_prog_compiler_wl='-Qoption ld ' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - lt_prog_compiler_pic='-Kconform_pic' - lt_prog_compiler_static='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - unicos*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_can_build_shared=no - ;; - - uts4*) - lt_prog_compiler_pic='-pic' - lt_prog_compiler_static='-Bstatic' - ;; - - *) - lt_prog_compiler_can_build_shared=no - ;; - esac - fi - -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic= - ;; - *) - lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" - ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic=$lt_prog_compiler_pic -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 -$as_echo "$lt_cv_prog_compiler_pic" >&6; } -lt_prog_compiler_pic=$lt_cv_prog_compiler_pic - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -if ${lt_cv_prog_compiler_pic_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } - -if test x"$lt_cv_prog_compiler_pic_works" = xyes; then - case $lt_prog_compiler_pic in - "" | " "*) ;; - *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; - esac -else - lt_prog_compiler_pic= - lt_prog_compiler_can_build_shared=no -fi - -fi - - - - - - - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works=yes - fi - else - lt_cv_prog_compiler_static_works=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -$as_echo "$lt_cv_prog_compiler_static_works" >&6; } - -if test x"$lt_cv_prog_compiler_static_works" = xyes; then - : -else - lt_prog_compiler_static= -fi - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - runpath_var= - allow_undefined_flag= - always_export_symbols=no - archive_cmds= - archive_expsym_cmds= - compiler_needs_object=no - enable_shared_with_static_runtimes=no - export_dynamic_flag_spec= - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - hardcode_automatic=no - hardcode_direct=no - hardcode_direct_absolute=no - hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld= - hardcode_libdir_separator= - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - inherit_rpath=no - link_all_deplibs=unknown - module_cmds= - module_expsym_cmds= - old_archive_from_new_cmds= - old_archive_from_expsyms_cmds= - thread_safe_flag_spec= - whole_archive_flag_spec= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - linux* | k*bsd*-gnu | gnu*) - link_all_deplibs=no - ;; - esac - - ld_shlibs=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; - *\ \(GNU\ Binutils\)\ [3-9]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test "$lt_use_gnu_ld_interface" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[3-9]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - export_dynamic_flag_spec='${wl}--export-all-symbols' - allow_undefined_flag=unsupported - always_export_symbols=no - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs=no - fi - ;; - - haiku*) - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - link_all_deplibs=yes - ;; - - interix[3-9]*) - hardcode_direct=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - whole_archive_flag_spec= - tmp_sharedflag='--shared' ;; - xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld='-rpath $libdir' - archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - ld_shlibs=no - fi - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test "$ld_shlibs" = no; then - runpath_var= - hardcode_libdir_flag_spec= - export_dynamic_flag_spec= - whole_archive_flag_spec= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix[4-9]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds='' - hardcode_direct=yes - hardcode_direct_absolute=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes - file_list_spec='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - link_all_deplibs=no - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - export_dynamic_flag_spec='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag=' ${wl}-bernotok' - allow_undefined_flag=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec='$convenience' - fi - archive_cmds_need_lc=yes - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - bsdi[45]*) - export_dynamic_flag_spec=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - always_export_symbols=yes - file_list_spec='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, )='true' - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - old_postinstall_cmds='chmod 644 $oldlib' - postlink_cmds='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_from_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' - enable_shared_with_static_runtimes=yes - ;; - esac - ;; - - darwin* | rhapsody*) - - - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - else - whole_archive_flag_spec='' - fi - link_all_deplibs=yes - allow_undefined_flag="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - - else - ld_shlibs=no - fi - - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - freebsd1*) - ld_shlibs=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - if test "$GCC" = yes; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - export_dynamic_flag_spec='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_flag_spec_ld='+b $libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - fi - ;; - - hpux11*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 -$as_echo_n "checking if $CC understands -b... " >&6; } -if ${lt_cv_prog_compiler__b+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler__b=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -b" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler__b=yes - fi - else - lt_cv_prog_compiler__b=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 -$as_echo "$lt_cv_prog_compiler__b" >&6; } - -if test x"$lt_cv_prog_compiler__b" = xyes; then - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -fi - - ;; - esac - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct=no - hardcode_shlibpath_var=no - ;; - *) - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 -$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } -if ${lt_cv_irix_exported_symbol+:} false; then : - $as_echo_n "(cached) " >&6 -else - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int foo (void) { return 0; } -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_irix_exported_symbol=yes -else - lt_cv_irix_exported_symbol=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 -$as_echo "$lt_cv_irix_exported_symbol" >&6; } - if test "$lt_cv_irix_exported_symbol" = yes; then - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - fi - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - inherit_rpath=yes - link_all_deplibs=yes - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - newsos6) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_shlibpath_var=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - hardcode_direct=yes - hardcode_shlibpath_var=no - hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - else - case $host_os in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-R$libdir' - ;; - *) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - ;; - esac - fi - else - ld_shlibs=no - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - archive_cmds_need_lc='no' - hardcode_libdir_separator=: - ;; - - solaris*) - no_undefined_flag=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='${wl}' - archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' - fi - ;; - esac - link_all_deplibs=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds='$CC -r -o $output$reload_objs' - hardcode_direct=no - ;; - motorola) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='${wl}-z,text' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag='${wl}-z,text' - allow_undefined_flag='${wl}-z,nodefs' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-R,$libdir' - hardcode_libdir_separator=':' - link_all_deplibs=yes - export_dynamic_flag_spec='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='${wl}-Blargedynsym' - ;; - esac - fi - fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -$as_echo "$ld_shlibs" >&6; } -test "$ld_shlibs" = no && can_build_shared=no - -with_gnu_ld=$with_gnu_ld - - - - - - - - - - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl - pic_flag=$lt_prog_compiler_pic - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag - allow_undefined_flag= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc=no - else - lt_cv_archive_cmds_need_lc=yes - fi - allow_undefined_flag=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } - archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[lt_foo]++; } - if (lt_freq[lt_foo] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([A-Za-z]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[4-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec="$LIB" - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[123]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -haiku*) - version_type=linux - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || - test -n "$runpath_var" || - test "X$hardcode_automatic" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$hardcode_direct" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && - test "$hardcode_minus_L" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } - -if test "$hardcode_action" = relink || - test "$inherit_rpath" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - *) - ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -if test "x$ac_cv_func_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_shl_load=yes -else - ac_cv_lib_dld_shl_load=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" -else - ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -$as_echo_n "checking for dlopen in -lsvld... " >&6; } -if ${ac_cv_lib_svld_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_svld_dlopen=yes -else - ac_cv_lib_svld_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -$as_echo "$ac_cv_lib_svld_dlopen" >&6; } -if test "x$ac_cv_lib_svld_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -$as_echo_n "checking for dld_link in -ldld... " >&6; } -if ${ac_cv_lib_dld_dld_link+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dld_link (); -int -main () -{ -return dld_link (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_dld_link=yes -else - ac_cv_lib_dld_dld_link=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -$as_echo "$ac_cv_lib_dld_dld_link" >&6; } -if test "x$ac_cv_lib_dld_dld_link" = xyes; then : - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -$as_echo_n "checking whether a program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -$as_echo "$lt_cv_dlopen_self" >&6; } - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self_static+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -$as_echo "$lt_cv_dlopen_self_static" >&6; } - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - - - - - - - - - - - - - - - - - -striplib= -old_striplib= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -$as_echo_n "checking whether stripping libraries is possible... " >&6; } -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - esac -fi - - - - - - - - - - - - - # Report which library types will actually be built - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -$as_echo_n "checking if libtool supports shared libraries... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -$as_echo "$can_build_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -$as_echo_n "checking whether to build shared libraries... " >&6; } - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[4-9]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -$as_echo "$enable_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -$as_echo_n "checking whether to build static libraries... " >&6; } - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -$as_echo "$enable_static" >&6; } - - - - -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC="$lt_save_CC" - - - - - - - - - - - - - - ac_config_commands="$ac_config_commands libtool" - - - - -# Only expand once: - - - - - - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test -z "$CXX"; then - if test -n "$CCC"; then - CXX=$CCC - else - if test -n "$ac_tool_prefix"; then - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CXX"; then - ac_cv_prog_CXX="$CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CXX=$ac_cv_prog_CXX -if test -n "$CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -$as_echo "$CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CXX" && break - done -fi -if test -z "$CXX"; then - ac_ct_CXX=$CXX - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CXX"; then - ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CXX="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CXX=$ac_cv_prog_ac_ct_CXX -if test -n "$ac_ct_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 -$as_echo "$ac_ct_CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CXX" && break -done - - if test "x$ac_ct_CXX" = x; then - CXX="g++" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CXX=$ac_ct_CXX - fi -fi - - fi -fi -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 -$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } -if ${ac_cv_cxx_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_cxx_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 -$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GXX=yes -else - GXX= -fi -ac_test_CXXFLAGS=${CXXFLAGS+set} -ac_save_CXXFLAGS=$CXXFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 -$as_echo_n "checking whether $CXX accepts -g... " >&6; } -if ${ac_cv_prog_cxx_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_cxx_werror_flag=$ac_cxx_werror_flag - ac_cxx_werror_flag=yes - ac_cv_prog_cxx_g=no - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_prog_cxx_g=yes -else - CXXFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - -else - ac_cxx_werror_flag=$ac_save_cxx_werror_flag - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_prog_cxx_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cxx_werror_flag=$ac_save_cxx_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 -$as_echo "$ac_cv_prog_cxx_g" >&6; } -if test "$ac_test_CXXFLAGS" = set; then - CXXFLAGS=$ac_save_CXXFLAGS -elif test $ac_cv_prog_cxx_g = yes; then - if test "$GXX" = yes; then - CXXFLAGS="-g -O2" - else - CXXFLAGS="-g" - fi -else - if test "$GXX" = yes; then - CXXFLAGS="-O2" - else - CXXFLAGS= - fi -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - -func_stripname_cnf () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname_cnf - - if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 -$as_echo_n "checking how to run the C++ preprocessor... " >&6; } -if test -z "$CXXCPP"; then - if ${ac_cv_prog_CXXCPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CXXCPP needs to be expanded - for CXXCPP in "$CXX -E" "/lib/cpp" - do - ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CXXCPP=$CXXCPP - -fi - CXXCPP=$ac_cv_prog_CXXCPP -else - ac_cv_prog_CXXCPP=$CXXCPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 -$as_echo "$CXXCPP" >&6; } -ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -else - _lt_caught_CXX_error=yes -fi - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - -archive_cmds_need_lc_CXX=no -allow_undefined_flag_CXX= -always_export_symbols_CXX=no -archive_expsym_cmds_CXX= -compiler_needs_object_CXX=no -export_dynamic_flag_spec_CXX= -hardcode_direct_CXX=no -hardcode_direct_absolute_CXX=no -hardcode_libdir_flag_spec_CXX= -hardcode_libdir_flag_spec_ld_CXX= -hardcode_libdir_separator_CXX= -hardcode_minus_L_CXX=no -hardcode_shlibpath_var_CXX=unsupported -hardcode_automatic_CXX=no -inherit_rpath_CXX=no -module_cmds_CXX= -module_expsym_cmds_CXX= -link_all_deplibs_CXX=unknown -old_archive_cmds_CXX=$old_archive_cmds -reload_flag_CXX=$reload_flag -reload_cmds_CXX=$reload_cmds -no_undefined_flag_CXX= -whole_archive_flag_spec_CXX= -enable_shared_with_static_runtimes_CXX=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -objext_CXX=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - - # save warnings/boilerplate of simple test code - ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - - ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_CFLAGS=$CFLAGS - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - compiler_CXX=$CC - for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test "$GXX" = yes; then - lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' - else - lt_prog_compiler_no_builtin_flag_CXX= - fi - - if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec_CXX= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - ld_shlibs_CXX=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aix[4-9]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds_CXX='' - hardcode_direct_CXX=yes - hardcode_direct_absolute_CXX=yes - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - file_list_spec_CXX='${wl}-f,' - - if test "$GXX" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct_CXX=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L_CXX=yes - hardcode_libdir_flag_spec_CXX='-L$libdir' - hardcode_libdir_separator_CXX= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - export_dynamic_flag_spec_CXX='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - always_export_symbols_CXX=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag_CXX='-berok' - # Determine the default libpath from the value encoded in an empty - # executable. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath__CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath__CXX -fi - - hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" - - archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag_CXX="-z nodefs" - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath__CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath__CXX -fi - - hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag_CXX=' ${wl}-bernotok' - allow_undefined_flag_CXX=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_CXX='$convenience' - fi - archive_cmds_need_lc_CXX=yes - # This is similar to how AIX traditionally builds its shared - # libraries. - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag_CXX=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs_CXX=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec_CXX=' ' - allow_undefined_flag_CXX=unsupported - always_export_symbols_CXX=yes - file_list_spec_CXX='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' - enable_shared_with_static_runtimes_CXX=yes - # Don't use ranlib - old_postinstall_cmds_CXX='chmod 644 $oldlib' - postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # g++ - # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec_CXX='-L$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-all-symbols' - allow_undefined_flag_CXX=unsupported - always_export_symbols_CXX=no - enable_shared_with_static_runtimes_CXX=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs_CXX=no - fi - ;; - esac - ;; - darwin* | rhapsody*) - - - archive_cmds_need_lc_CXX=no - hardcode_direct_CXX=no - hardcode_automatic_CXX=yes - hardcode_shlibpath_var_CXX=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - else - whole_archive_flag_spec_CXX='' - fi - link_all_deplibs_CXX=yes - allow_undefined_flag_CXX="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - if test "$lt_cv_apple_cc_single_mod" != "yes"; then - archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" - archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" - fi - - else - ld_shlibs_CXX=no - fi - - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - freebsd[12]*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - ld_shlibs_CXX=no - ;; - - freebsd-elf*) - archive_cmds_need_lc_CXX=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - ld_shlibs_CXX=yes - ;; - - gnu*) - ;; - - haiku*) - archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - link_all_deplibs_CXX=yes - ;; - - hpux9*) - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_CXX=: - export_dynamic_flag_spec_CXX='${wl}-E' - hardcode_direct_CXX=yes - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aCC*) - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_CXX=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - export_dynamic_flag_spec_CXX='${wl}-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - ;; - *) - hardcode_direct_CXX=yes - hardcode_direct_absolute_CXX=yes - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case $host_cpu in - hppa*64*) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - interix[3-9]*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' - fi - fi - link_all_deplibs_CXX=yes - ;; - esac - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_CXX=: - inherit_rpath_CXX=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - archive_cmds_need_lc_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [1-5].* | *pgcpp\ [1-5].*) - prelink_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - old_archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - archive_expsym_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - esac - - hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - ;; - cxx*) - # Compaq C++ - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec_CXX='-rpath $libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' - hardcode_libdir_flag_spec_CXX='-R$libdir' - whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object_CXX=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - hardcode_libdir_flag_spec_CXX='-R$libdir' - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - ld_shlibs_CXX=yes - ;; - - openbsd2*) - # C++ shared libraries are fairly broken - ld_shlibs_CXX=no - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - hardcode_direct_absolute_CXX=yes - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - export_dynamic_flag_spec_CXX='${wl}-E' - whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - ld_shlibs_CXX=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - hardcode_libdir_separator_CXX=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - cxx*) - case $host in - osf3*) - allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - ;; - *) - allow_undefined_flag_CXX=' -expect_unresolved \*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ - $RM $lib.exp' - hardcode_libdir_flag_spec_CXX='-rpath $libdir' - ;; - esac - - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - case $host in - osf3*) - archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - *) - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - esac - - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - archive_cmds_need_lc_CXX=yes - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - hardcode_libdir_flag_spec_CXX='-R$libdir' - hardcode_shlibpath_var_CXX=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' - ;; - esac - link_all_deplibs_CXX=yes - - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - no_undefined_flag_CXX=' ${wl}-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi - - hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag_CXX='${wl}-z,text' - archive_cmds_need_lc_CXX=no - hardcode_shlibpath_var_CXX=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag_CXX='${wl}-z,text' - allow_undefined_flag_CXX='${wl}-z,nodefs' - archive_cmds_need_lc_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - export_dynamic_flag_spec_CXX='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ - '"$old_archive_cmds_CXX" - reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ - '"$reload_cmds_CXX" - ;; - *) - archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } - test "$ld_shlibs_CXX" = no && can_build_shared=no - - GCC_CXX="$GXX" - LD_CXX="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - # Dependencies to place before and after the object being linked: -predep_objects_CXX= -postdep_objects_CXX= -predeps_CXX= -postdeps_CXX= -compiler_lib_search_path_CXX= - -cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF - - -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -esac - -if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case ${prev}${p} in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" || - test $p = "-R"; then - prev=$p - continue - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test "$pre_test_object_deps_done" = no; then - case ${prev} in - -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$compiler_lib_search_path_CXX"; then - compiler_lib_search_path_CXX="${prev}${p}" - else - compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$postdeps_CXX"; then - postdeps_CXX="${prev}${p}" - else - postdeps_CXX="${postdeps_CXX} ${prev}${p}" - fi - fi - prev= - ;; - - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$predep_objects_CXX"; then - predep_objects_CXX="$p" - else - predep_objects_CXX="$predep_objects_CXX $p" - fi - else - if test -z "$postdep_objects_CXX"; then - postdep_objects_CXX="$p" - else - postdep_objects_CXX="$postdep_objects_CXX $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling CXX test program" -fi - -$RM -f confest.$objext -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -case $host_os in -interix[3-9]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - predep_objects_CXX= - postdep_objects_CXX= - postdeps_CXX= - ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test "$solaris_use_stlport4" != yes; then - postdeps_CXX='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC* | sunCC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - postdeps_CXX='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -esac - - -case " $postdeps_CXX " in -*" -lc "*) archive_cmds_need_lc_CXX=no ;; -esac - compiler_lib_search_dirs_CXX= -if test -n "${compiler_lib_search_path_CXX}"; then - compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lt_prog_compiler_wl_CXX= -lt_prog_compiler_pic_CXX= -lt_prog_compiler_static_CXX= - - - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic_CXX='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic_CXX='-DDLL_EXPORT' - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic_CXX='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - lt_prog_compiler_pic_CXX= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static_CXX= - ;; - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic_CXX=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic_CXX='-fPIC -shared' - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - else - case $host_os in - aix[4-9]*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - else - lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic_CXX='-DDLL_EXPORT' - ;; - dgux*) - case $cc_basename in - ec++*) - lt_prog_compiler_pic_CXX='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - lt_prog_compiler_pic_CXX='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' - if test "$host_cpu" != ia64; then - lt_prog_compiler_pic_CXX='+Z' - fi - ;; - aCC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic_CXX='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # KAI C++ Compiler - lt_prog_compiler_wl_CXX='--backend -Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - lt_prog_compiler_static_CXX='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fpic' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - lt_prog_compiler_pic_CXX= - lt_prog_compiler_static_CXX='-non_shared' - ;; - xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-qpic' - lt_prog_compiler_static_CXX='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - lt_prog_compiler_wl_CXX='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - lt_prog_compiler_pic_CXX='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd* | netbsdelf*-gnu) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic_CXX='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - lt_prog_compiler_wl_CXX='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - lt_prog_compiler_pic_CXX='-pic' - ;; - cxx*) - # Digital/Compaq C++ - lt_prog_compiler_wl_CXX='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - lt_prog_compiler_pic_CXX= - lt_prog_compiler_static_CXX='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - lt_prog_compiler_wl_CXX='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - lt_prog_compiler_pic_CXX='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - lt_prog_compiler_pic_CXX='-pic' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - lcc*) - # Lucid - lt_prog_compiler_pic_CXX='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - lt_prog_compiler_pic_CXX='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - lt_prog_compiler_can_build_shared_CXX=no - ;; - esac - fi - -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic_CXX= - ;; - *) - lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" - ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } -lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } -if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works_CXX=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works_CXX=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } - -if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then - case $lt_prog_compiler_pic_CXX in - "" | " "*) ;; - *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; - esac -else - lt_prog_compiler_pic_CXX= - lt_prog_compiler_can_build_shared_CXX=no -fi - -fi - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works_CXX=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works_CXX=yes - fi - else - lt_cv_prog_compiler_static_works_CXX=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } - -if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then - : -else - lt_prog_compiler_static_CXX= -fi - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o_CXX=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o_CXX=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - - - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - case $host_os in - aix[4-9]*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global defined - # symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - export_symbols_cmds_CXX="$ltdll_cmds" - ;; - cygwin* | mingw* | cegcc*) - case $cc_basename in - cl*) ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - ;; - esac - ;; - linux* | k*bsd*-gnu | gnu*) - link_all_deplibs_CXX=no - ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } -test "$ld_shlibs_CXX" = no && can_build_shared=no - -with_gnu_ld_CXX=$with_gnu_ld - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc_CXX" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc_CXX=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds_CXX in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl_CXX - pic_flag=$lt_prog_compiler_pic_CXX - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag_CXX - allow_undefined_flag_CXX= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc_CXX=no - else - lt_cv_archive_cmds_need_lc_CXX=yes - fi - allow_undefined_flag_CXX=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } - archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[4-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec="$LIB" - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[123]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -haiku*) - version_type=linux - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action_CXX= -if test -n "$hardcode_libdir_flag_spec_CXX" || - test -n "$runpath_var_CXX" || - test "X$hardcode_automatic_CXX" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$hardcode_direct_CXX" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && - test "$hardcode_minus_L_CXX" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action_CXX=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action_CXX=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action_CXX=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 -$as_echo "$hardcode_action_CXX" >&6; } - -if test "$hardcode_action_CXX" = relink || - test "$inherit_rpath_CXX" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test "$_lt_caught_CXX_error" != yes - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - - -if test "$GCC" = yes ; then - OLDCFLAGS="$CFLAGS -Wall -Wmissing-prototypes -Wstrict-prototypes" - CFLAGS="$OLDCFLAGS -fexceptions" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -fexceptions" >&5 -$as_echo_n "checking whether $CC accepts -fexceptions... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; CFLAGS="$OLDCFLAGS" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - CXXFLAGS=`echo "$CFLAGS" | sed 's/ -Wmissing-prototypes -Wstrict-prototypes//'` -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 -$as_echo_n "checking whether byte ordering is bigendian... " >&6; } -if ${ac_cv_c_bigendian+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_c_bigendian=unknown -# See if sys/param.h defines the BYTE_ORDER macro. -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -int -main () -{ - -#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN - bogus endian macros -#endif - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - # It does; now see whether it defined to BIG_ENDIAN or not. -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -int -main () -{ - -#if BYTE_ORDER != BIG_ENDIAN - not big endian -#endif - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_bigendian=yes -else - ac_cv_c_bigendian=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -if test $ac_cv_c_bigendian = unknown; then -if test "$cross_compiling" = yes; then : - echo $ac_n "cross-compiling... " 2>&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -main () { - /* Are we little or big endian? From Harbison&Steele. */ - union - { - long l; - char c[sizeof (long)]; - } u; - u.l = 1; - exit (u.c[sizeof (long) - 1] == 1); -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_c_bigendian=no -else - ac_cv_c_bigendian=yes -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 -$as_echo "$ac_cv_c_bigendian" >&6; } -if test $ac_cv_c_bigendian = unknown; then -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking to probe for byte ordering" >&5 -$as_echo_n "checking to probe for byte ordering... " >&6; } - -cat >conftest.c <&6 - ac_cv_c_bigendian=yes - fi - if test `grep -l LiTTleEnDian conftest.o` ; then - echo $ac_n ' little endian probe OK, ' 1>&6 - if test $ac_cv_c_bigendian = yes ; then - ac_cv_c_bigendian=unknown; - else - ac_cv_c_bigendian=no - fi - fi - echo $ac_n 'guessing bigendian ... ' >&6 - fi - fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 -$as_echo "$ac_cv_c_bigendian" >&6; } -fi -if test $ac_cv_c_bigendian = yes; then - -$as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h - - BYTEORDER=4321 -else - BYTEORDER=1234 -fi - -cat >>confdefs.h <<_ACEOF -#define BYTEORDER $BYTEORDER -_ACEOF - -if test $ac_cv_c_bigendian = unknown; then - as_fn_error please pre-set ac_cv_c_bigendian "unknown endianess - sorry" "$LINENO" 5 -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 -$as_echo_n "checking for an ANSI C-conforming const... " >&6; } -if ${ac_cv_c_const+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -/* FIXME: Include the comments suggested by Paul. */ -#ifndef __cplusplus - /* Ultrix mips cc rejects this. */ - typedef int charset[2]; - const charset cs; - /* SunOS 4.1.1 cc rejects this. */ - char const *const *pcpcc; - char **ppc; - /* NEC SVR4.0.2 mips cc rejects this. */ - struct point {int x, y;}; - static struct point const zero = {0,0}; - /* AIX XL C 1.02.0.0 rejects this. - It does not let you subtract one const X* pointer from another in - an arm of an if-expression whose if-part is not a constant - expression */ - const char *g = "string"; - pcpcc = &g + (g ? g-g : 0); - /* HPUX 7.0 cc rejects these. */ - ++pcpcc; - ppc = (char**) pcpcc; - pcpcc = (char const *const *) ppc; - { /* SCO 3.2v4 cc rejects this. */ - char *t; - char const *s = 0 ? (char *) 0 : (char const *) 0; - - *t++ = 0; - if (s) return 0; - } - { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ - int x[] = {25, 17}; - const int *foo = &x[0]; - ++foo; - } - { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ - typedef const int *iptr; - iptr p = 0; - ++p; - } - { /* AIX XL C 1.02.0.0 rejects this saying - "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ - struct s { int j; const int *ap[3]; }; - struct s *b; b->j = 5; - } - { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; - if (!foo) return 0; - } - return !cs[0] && !zero.x; -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_const=yes -else - ac_cv_c_const=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 -$as_echo "$ac_cv_c_const" >&6; } -if test $ac_cv_c_const = no; then - -$as_echo "#define const /**/" >>confdefs.h - -fi - -ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -if test "x$ac_cv_type_size_t" = xyes; then : - -else - -cat >>confdefs.h <<_ACEOF -#define size_t unsigned int -_ACEOF - -fi - -for ac_func in memmove bcopy -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - -for ac_header in fcntl.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" -if test "x$ac_cv_type_off_t" = xyes; then : - -else - -cat >>confdefs.h <<_ACEOF -#define off_t long int -_ACEOF - -fi - - - - - for ac_header in $ac_header_list -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - - - - - -for ac_func in getpagesize -do : - ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize" -if test "x$ac_cv_func_getpagesize" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_GETPAGESIZE 1 -_ACEOF - -fi -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 -$as_echo_n "checking for working mmap... " >&6; } -if ${ac_cv_func_mmap_fixed_mapped+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_func_mmap_fixed_mapped=no -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -/* malloc might have been renamed as rpl_malloc. */ -#undef malloc - -/* Thanks to Mike Haertel and Jim Avera for this test. - Here is a matrix of mmap possibilities: - mmap private not fixed - mmap private fixed at somewhere currently unmapped - mmap private fixed at somewhere already mapped - mmap shared not fixed - mmap shared fixed at somewhere currently unmapped - mmap shared fixed at somewhere already mapped - For private mappings, we should verify that changes cannot be read() - back from the file, nor mmap's back from the file at a different - address. (There have been systems where private was not correctly - implemented like the infamous i386 svr4.0, and systems where the - VM page cache was not coherent with the file system buffer cache - like early versions of FreeBSD and possibly contemporary NetBSD.) - For shared mappings, we should conversely verify that changes get - propagated back to all the places they're supposed to be. - - Grep wants private fixed already mapped. - The main things grep needs to know about mmap are: - * does it exist and is it safe to write into the mmap'd area - * how to use it (BSD variants) */ - -#include -#include - -#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H -char *malloc (); -#endif - -/* This mess was copied from the GNU getpagesize.h. */ -#ifndef HAVE_GETPAGESIZE -# ifdef _SC_PAGESIZE -# define getpagesize() sysconf(_SC_PAGESIZE) -# else /* no _SC_PAGESIZE */ -# ifdef HAVE_SYS_PARAM_H -# include -# ifdef EXEC_PAGESIZE -# define getpagesize() EXEC_PAGESIZE -# else /* no EXEC_PAGESIZE */ -# ifdef NBPG -# define getpagesize() NBPG * CLSIZE -# ifndef CLSIZE -# define CLSIZE 1 -# endif /* no CLSIZE */ -# else /* no NBPG */ -# ifdef NBPC -# define getpagesize() NBPC -# else /* no NBPC */ -# ifdef PAGESIZE -# define getpagesize() PAGESIZE -# endif /* PAGESIZE */ -# endif /* no NBPC */ -# endif /* no NBPG */ -# endif /* no EXEC_PAGESIZE */ -# else /* no HAVE_SYS_PARAM_H */ -# define getpagesize() 8192 /* punt totally */ -# endif /* no HAVE_SYS_PARAM_H */ -# endif /* no _SC_PAGESIZE */ - -#endif /* no HAVE_GETPAGESIZE */ - -int -main () -{ - char *data, *data2, *data3; - const char *cdata2; - int i, pagesize; - int fd, fd2; - - pagesize = getpagesize (); - - /* First, make a file with some known garbage in it. */ - data = (char *) malloc (pagesize); - if (!data) - return 1; - for (i = 0; i < pagesize; ++i) - *(data + i) = rand (); - umask (0); - fd = creat ("conftest.mmap", 0600); - if (fd < 0) - return 2; - if (write (fd, data, pagesize) != pagesize) - return 3; - close (fd); - - /* Next, check that the tail of a page is zero-filled. File must have - non-zero length, otherwise we risk SIGBUS for entire page. */ - fd2 = open ("conftest.txt", O_RDWR | O_CREAT | O_TRUNC, 0600); - if (fd2 < 0) - return 4; - cdata2 = ""; - if (write (fd2, cdata2, 1) != 1) - return 5; - data2 = (char *) mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L); - if (data2 == MAP_FAILED) - return 6; - for (i = 0; i < pagesize; ++i) - if (*(data2 + i)) - return 7; - close (fd2); - if (munmap (data2, pagesize)) - return 8; - - /* Next, try to mmap the file at a fixed address which already has - something else allocated at it. If we can, also make sure that - we see the same garbage. */ - fd = open ("conftest.mmap", O_RDWR); - if (fd < 0) - return 9; - if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_FIXED, fd, 0L)) - return 10; - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data2 + i)) - return 11; - - /* Finally, make sure that changes to the mapped area do not - percolate back to the file as seen by read(). (This is a bug on - some variants of i386 svr4.0.) */ - for (i = 0; i < pagesize; ++i) - *(data2 + i) = *(data2 + i) + 1; - data3 = (char *) malloc (pagesize); - if (!data3) - return 12; - if (read (fd, data3, pagesize) != pagesize) - return 13; - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data3 + i)) - return 14; - close (fd); - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_func_mmap_fixed_mapped=yes -else - ac_cv_func_mmap_fixed_mapped=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5 -$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; } -if test $ac_cv_func_mmap_fixed_mapped = yes; then - -$as_echo "#define HAVE_MMAP 1" >>confdefs.h - -fi -rm -f conftest.mmap conftest.txt - - -if test "$ac_cv_func_mmap_fixed_mapped" = "yes"; then - FILEMAP=unixfilemap -else - FILEMAP=readfilemap -fi - - - -# AC_CPP_FUNC -# ------------------ # -# Checks to see if ANSI C99 CPP variable __func__ works. -# If not, perhaps __FUNCTION__ works instead. -# If not, we'll just define __func__ to "". -# AC_CPP_FUNC - - case $ac_cv_prog_cc_stdc in #( - no) : - ac_cv_prog_cc_c99=no; ac_cv_prog_cc_c89=no ;; #( - *) : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 -$as_echo_n "checking for $CC option to accept ISO C99... " >&6; } -if ${ac_cv_prog_cc_c99+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c99=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include -#include - -// Check varargs macros. These examples are taken from C99 6.10.3.5. -#define debug(...) fprintf (stderr, __VA_ARGS__) -#define showlist(...) puts (#__VA_ARGS__) -#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) -static void -test_varargs_macros (void) -{ - int x = 1234; - int y = 5678; - debug ("Flag"); - debug ("X = %d\n", x); - showlist (The first, second, and third items.); - report (x>y, "x is %d but y is %d", x, y); -} - -// Check long long types. -#define BIG64 18446744073709551615ull -#define BIG32 4294967295ul -#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) -#if !BIG_OK - your preprocessor is broken; -#endif -#if BIG_OK -#else - your preprocessor is broken; -#endif -static long long int bignum = -9223372036854775807LL; -static unsigned long long int ubignum = BIG64; - -struct incomplete_array -{ - int datasize; - double data[]; -}; - -struct named_init { - int number; - const wchar_t *name; - double average; -}; - -typedef const char *ccp; - -static inline int -test_restrict (ccp restrict text) -{ - // See if C++-style comments work. - // Iterate through items via the restricted pointer. - // Also check for declarations in for loops. - for (unsigned int i = 0; *(text+i) != '\0'; ++i) - continue; - return 0; -} - -// Check varargs and va_copy. -static void -test_varargs (const char *format, ...) -{ - va_list args; - va_start (args, format); - va_list args_copy; - va_copy (args_copy, args); - - const char *str; - int number; - float fnumber; - - while (*format) - { - switch (*format++) - { - case 's': // string - str = va_arg (args_copy, const char *); - break; - case 'd': // int - number = va_arg (args_copy, int); - break; - case 'f': // float - fnumber = va_arg (args_copy, double); - break; - default: - break; - } - } - va_end (args_copy); - va_end (args); -} - -int -main () -{ - - // Check bool. - _Bool success = false; - - // Check restrict. - if (test_restrict ("String literal") == 0) - success = true; - char *restrict newvar = "Another string"; - - // Check varargs. - test_varargs ("s, d' f .", "string", 65, 34.234); - test_varargs_macros (); - - // Check flexible array members. - struct incomplete_array *ia = - malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); - ia->datasize = 10; - for (int i = 0; i < ia->datasize; ++i) - ia->data[i] = i * 1.234; - - // Check named initializers. - struct named_init ni = { - .number = 34, - .name = L"Test wide string", - .average = 543.34343, - }; - - ni.number = 58; - - int dynamic_array[ni.number]; - dynamic_array[ni.number - 1] = 543; - - // work around unused variable warnings - return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' - || dynamic_array[ni.number - 1] != 543); - - ; - return 0; -} -_ACEOF -for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -xc99=all -qlanglvl=extc99 -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c99=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c99" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c99" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c99" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 -$as_echo "$ac_cv_prog_cc_c99" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c99" != xno; then : - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 -else - ac_cv_prog_cc_stdc=no -fi - -fi - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO Standard C" >&5 -$as_echo_n "checking for $CC option to accept ISO Standard C... " >&6; } - if ${ac_cv_prog_cc_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -fi - - case $ac_cv_prog_cc_stdc in #( - no) : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; #( - '') : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; #( - *) : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_stdc" >&5 -$as_echo "$ac_cv_prog_cc_stdc" >&6; } ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C99-conforming __func__" >&5 -$as_echo_n "checking for an ANSI C99-conforming __func__... " >&6; } -if ${ac_cv_cpp_func+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -char *foo = __func__; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_cpp_func=yes -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -char *foo = __FUNCTION__; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_cpp_func=__FUNCTION__ -else - ac_cv_cpp_func=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cpp_func" >&5 -$as_echo "$ac_cv_cpp_func" >&6; } -if test $ac_cv_cpp_func = __FUNCTION__; then - -$as_echo "#define __func__ __FUNCTION__" >>confdefs.h - -elif test $ac_cv_cpp_func = no; then - -$as_echo "#define __func__ \"\"" >>confdefs.h - -fi - - - - -$as_echo "#define XML_NS 1" >>confdefs.h - - -$as_echo "#define XML_DTD 1" >>confdefs.h - - -$as_echo "#define XML_CONTEXT_BYTES 1024" >>confdefs.h - - -ac_config_files="$ac_config_files Makefile expat.pc" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by expat $as_me 2.1.0, which was -generated by GNU Autoconf 2.68. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - -case $ac_config_headers in *" -"*) set x $ac_config_headers; shift; ac_config_headers=$*;; -esac - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to ." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -ac_cs_version="\\ -expat config.status 2.1.0 -configured by $0, generated by GNU Autoconf 2.68, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2010 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -AWK='$AWK' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error $? "ambiguous option: \`$1' -Try \`$0 --help' for more information.";; - --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# - - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`' -DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' -OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' -macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' -macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' -enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' -enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' -pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' -SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' -ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' -host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' -host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' -host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' -build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' -build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' -build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' -SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' -Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' -GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' -EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' -FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' -LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' -NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' -LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' -max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' -ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' -exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' -lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' -lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' -lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' -lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' -lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' -reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' -reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' -deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' -file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' -file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' -want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' -sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' -AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' -archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' -STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' -RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' -old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' -old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' -lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' -CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' -CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' -compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' -GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' -nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' -lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' -objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' -MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' -need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' -MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' -DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' -NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' -LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' -OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' -OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' -libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' -shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' -extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' -compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' -module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' -with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' -no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' -hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' -hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' -inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' -link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' -always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' -exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' -include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' -prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' -postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' -file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' -variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' -need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' -need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' -version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' -runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' -libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' -library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' -soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' -install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' -postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' -postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' -finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' -hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' -sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' -sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' -hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' -enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' -old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' -striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' -predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' -postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' -predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' -postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' -LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' -reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' -reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' -compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' -GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' -archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' -module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' -with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' -no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_ld_CXX='`$ECHO "$hardcode_libdir_flag_spec_ld_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' -inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' -link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' -always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' -exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' -include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' -prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' -postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' -file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' -predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' -postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' -predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' -postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' - -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in AS \ -DLLTOOL \ -OBJDUMP \ -SHELL \ -ECHO \ -SED \ -GREP \ -EGREP \ -FGREP \ -LD \ -NM \ -LN_S \ -lt_SP2NL \ -lt_NL2SP \ -reload_flag \ -deplibs_check_method \ -file_magic_cmd \ -file_magic_glob \ -want_nocaseglob \ -sharedlib_from_linklib_cmd \ -AR \ -AR_FLAGS \ -archiver_list_spec \ -STRIP \ -RANLIB \ -CC \ -CFLAGS \ -compiler \ -lt_cv_sys_global_symbol_pipe \ -lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_c_name_address \ -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -nm_file_list_spec \ -lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_pic \ -lt_prog_compiler_wl \ -lt_prog_compiler_static \ -lt_cv_prog_compiler_c_o \ -need_locks \ -MANIFEST_TOOL \ -DSYMUTIL \ -NMEDIT \ -LIPO \ -OTOOL \ -OTOOL64 \ -shrext_cmds \ -export_dynamic_flag_spec \ -whole_archive_flag_spec \ -compiler_needs_object \ -with_gnu_ld \ -allow_undefined_flag \ -no_undefined_flag \ -hardcode_libdir_flag_spec \ -hardcode_libdir_flag_spec_ld \ -hardcode_libdir_separator \ -exclude_expsyms \ -include_expsyms \ -file_list_spec \ -variables_saved_for_relink \ -libname_spec \ -library_names_spec \ -soname_spec \ -install_override_mode \ -finish_eval \ -old_striplib \ -striplib \ -compiler_lib_search_dirs \ -predep_objects \ -postdep_objects \ -predeps \ -postdeps \ -compiler_lib_search_path \ -LD_CXX \ -reload_flag_CXX \ -compiler_CXX \ -lt_prog_compiler_no_builtin_flag_CXX \ -lt_prog_compiler_pic_CXX \ -lt_prog_compiler_wl_CXX \ -lt_prog_compiler_static_CXX \ -lt_cv_prog_compiler_c_o_CXX \ -export_dynamic_flag_spec_CXX \ -whole_archive_flag_spec_CXX \ -compiler_needs_object_CXX \ -with_gnu_ld_CXX \ -allow_undefined_flag_CXX \ -no_undefined_flag_CXX \ -hardcode_libdir_flag_spec_CXX \ -hardcode_libdir_flag_spec_ld_CXX \ -hardcode_libdir_separator_CXX \ -exclude_expsyms_CXX \ -include_expsyms_CXX \ -file_list_spec_CXX \ -compiler_lib_search_dirs_CXX \ -predep_objects_CXX \ -postdep_objects_CXX \ -predeps_CXX \ -postdeps_CXX \ -compiler_lib_search_path_CXX; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in reload_cmds \ -old_postinstall_cmds \ -old_postuninstall_cmds \ -old_archive_cmds \ -extract_expsyms_cmds \ -old_archive_from_new_cmds \ -old_archive_from_expsyms_cmds \ -archive_cmds \ -archive_expsym_cmds \ -module_cmds \ -module_expsym_cmds \ -export_symbols_cmds \ -prelink_cmds \ -postlink_cmds \ -postinstall_cmds \ -postuninstall_cmds \ -finish_cmds \ -sys_lib_search_path_spec \ -sys_lib_dlsearch_path_spec \ -reload_cmds_CXX \ -old_archive_cmds_CXX \ -old_archive_from_new_cmds_CXX \ -old_archive_from_expsyms_cmds_CXX \ -archive_cmds_CXX \ -archive_expsym_cmds_CXX \ -module_cmds_CXX \ -module_expsym_cmds_CXX \ -export_symbols_cmds_CXX \ -prelink_cmds_CXX \ -postlink_cmds_CXX; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -ac_aux_dir='$ac_aux_dir' -xsi_shell='$xsi_shell' -lt_shell_append='$lt_shell_append' - -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - - - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile' - - - - - - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "expat_config.h") CONFIG_HEADERS="$CONFIG_HEADERS expat_config.h" ;; - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "expat.pc") CONFIG_FILES="$CONFIG_FILES expat.pc" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with `./config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$ac_tmp/defines.awk" <<\_ACAWK || -BEGIN { -_ACEOF - -# Transform confdefs.h into an awk script `defines.awk', embedded as -# here-document in config.status, that substitutes the proper values into -# config.h.in to produce config.h. - -# Create a delimiter string that does not exist in confdefs.h, to ease -# handling of long lines. -ac_delim='%!_!# ' -for ac_last_try in false false :; do - ac_tt=`sed -n "/$ac_delim/p" confdefs.h` - if test -z "$ac_tt"; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -# For the awk script, D is an array of macro values keyed by name, -# likewise P contains macro parameters if any. Preserve backslash -# newline sequences. - -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -sed -n ' -s/.\{148\}/&'"$ac_delim"'/g -t rset -:rset -s/^[ ]*#[ ]*define[ ][ ]*/ / -t def -d -:def -s/\\$// -t bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3"/p -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p -d -:bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3\\\\\\n"\\/p -t cont -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p -t cont -d -:cont -n -s/.\{148\}/&'"$ac_delim"'/g -t clear -:clear -s/\\$// -t bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/"/p -d -:bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p -b cont -' >$CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { - line = \$ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #undef with comments. This is necessary, for example, - # in the case of _POSIX_SOURCE, which is predefined and required - # on some systems where configure will not decide to define it. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" - } >"$ac_tmp/config.h" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$ac_tmp/config.h" "$ac_file" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - fi - else - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error $? "could not create -" "$LINENO" 5 - fi - ;; - - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "libtool":C) - - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - -# The names of the tagged configurations supported by this script. -available_tags="CXX " - -# ### BEGIN LIBTOOL CONFIG - -# Assembler program. -AS=$lt_AS - -# DLL creation program. -DLLTOOL=$lt_DLLTOOL - -# Object dumper program. -OBJDUMP=$lt_OBJDUMP - -# Which release of libtool.m4 was used? -macro_version=$macro_version -macro_revision=$macro_revision - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# What type of objects to build. -pic_mode=$pic_mode - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that protects backslashes. -ECHO=$lt_ECHO - -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="\$SED -e 1s/^X//" - -# A grep program that handles long lines. -GREP=$lt_GREP - -# An ERE matcher. -EGREP=$lt_EGREP - -# A literal string matcher. -FGREP=$lt_FGREP - -# A BSD- or MS-compatible name lister. -NM=$lt_NM - -# Whether we need soft or hard links. -LN_S=$lt_LN_S - -# What is the maximum length of a command? -max_cmd_len=$max_cmd_len - -# Object file suffix (normally "o"). -objext=$ac_objext - -# Executable file suffix (normally ""). -exeext=$exeext - -# whether the shell understands "unset". -lt_unset=$lt_unset - -# turn spaces into newlines. -SP2NL=$lt_lt_SP2NL - -# turn newlines into spaces. -NL2SP=$lt_lt_NL2SP - -# convert \$build file names to \$host format. -to_host_file_cmd=$lt_cv_to_host_file_cmd - -# convert \$build files to toolchain format. -to_tool_file_cmd=$lt_cv_to_tool_file_cmd - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method = "file_magic". -file_magic_cmd=$lt_file_magic_cmd - -# How to find potential files when deplibs_check_method = "file_magic". -file_magic_glob=$lt_file_magic_glob - -# Find potential files using nocaseglob when deplibs_check_method = "file_magic". -want_nocaseglob=$lt_want_nocaseglob - -# Command to associate shared and link libraries. -sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd - -# The archiver. -AR=$lt_AR - -# Flags to create an archive. -AR_FLAGS=$lt_AR_FLAGS - -# How to feed a file listing to the archiver. -archiver_list_spec=$lt_archiver_list_spec - -# A symbol stripping program. -STRIP=$lt_STRIP - -# Commands used to install an old-style archive. -RANLIB=$lt_RANLIB -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Whether to use a lock for old archive extraction. -lock_old_archive_extraction=$lock_old_archive_extraction - -# A C compiler. -LTCC=$lt_CC - -# LTCC compiler flags. -LTCFLAGS=$lt_CFLAGS - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration. -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm in a C name address pair. -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - -# Specify filename containing input files for \$NM. -nm_file_list_spec=$lt_nm_file_list_spec - -# The root where to search for dependent libraries,and in which our libraries should be installed. -lt_sysroot=$lt_sysroot - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=$MAGIC_CMD - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Manifest tool. -MANIFEST_TOOL=$lt_MANIFEST_TOOL - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL=$lt_DSYMUTIL - -# Tool to change global to local symbols on Mac OS X. -NMEDIT=$lt_NMEDIT - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO=$lt_LIPO - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL=$lt_OTOOL - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64=$lt_OTOOL64 - -# Old archive suffix (normally "a"). -libext=$libext - -# Shared library suffix (normally ".so"). -shrext_cmds=$lt_shrext_cmds - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink=$lt_variables_saved_for_relink - -# Do we need the "lib" prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Library versioning type. -version_type=$version_type - -# Shared library runtime path variable. -runpath_var=$runpath_var - -# Shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Permission mode override for installation of shared libraries. -install_override_mode=$lt_install_override_mode - -# Command to use after installation of a shared archive. -postinstall_cmds=$lt_postinstall_cmds - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval=$lt_finish_eval - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Compile-time system search path for libraries. -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - - -# The linker used to build libraries. -LD=$lt_LD - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds - -# A language specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU compiler? -with_gcc=$GCC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec - -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects -postdep_objects=$lt_postdep_objects -predeps=$lt_predeps -postdeps=$lt_postdeps - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path - -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - -ltmain="$ac_aux_dir/ltmain.sh" - - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - if test x"$xsi_shell" = xyes; then - sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ -func_dirname ()\ -{\ -\ case ${1} in\ -\ */*) func_dirname_result="${1%/*}${2}" ;;\ -\ * ) func_dirname_result="${3}" ;;\ -\ esac\ -} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_basename ()$/,/^} # func_basename /c\ -func_basename ()\ -{\ -\ func_basename_result="${1##*/}"\ -} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ -func_dirname_and_basename ()\ -{\ -\ case ${1} in\ -\ */*) func_dirname_result="${1%/*}${2}" ;;\ -\ * ) func_dirname_result="${3}" ;;\ -\ esac\ -\ func_basename_result="${1##*/}"\ -} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ -func_stripname ()\ -{\ -\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ -\ # positional parameters, so assign one to ordinary parameter first.\ -\ func_stripname_result=${3}\ -\ func_stripname_result=${func_stripname_result#"${1}"}\ -\ func_stripname_result=${func_stripname_result%"${2}"}\ -} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ -func_split_long_opt ()\ -{\ -\ func_split_long_opt_name=${1%%=*}\ -\ func_split_long_opt_arg=${1#*=}\ -} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ -func_split_short_opt ()\ -{\ -\ func_split_short_opt_arg=${1#??}\ -\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ -} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ -func_lo2o ()\ -{\ -\ case ${1} in\ -\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ -\ *) func_lo2o_result=${1} ;;\ -\ esac\ -} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_xform ()$/,/^} # func_xform /c\ -func_xform ()\ -{\ - func_xform_result=${1%.*}.lo\ -} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_arith ()$/,/^} # func_arith /c\ -func_arith ()\ -{\ - func_arith_result=$(( $* ))\ -} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_len ()$/,/^} # func_len /c\ -func_len ()\ -{\ - func_len_result=${#1}\ -} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - -fi - -if test x"$lt_shell_append" = xyes; then - sed -e '/^func_append ()$/,/^} # func_append /c\ -func_append ()\ -{\ - eval "${1}+=\\${2}"\ -} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ -func_append_quoted ()\ -{\ -\ func_quote_for_eval "${2}"\ -\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ -} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - # Save a `func_append' function call where possible by direct use of '+=' - sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -else - # Save a `func_append' function call even when '+=' is not available - sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -fi - -if test x"$_lt_function_replace_fail" = x":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 -$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} -fi - - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" - - - cat <<_LT_EOF >> "$ofile" - -# ### BEGIN LIBTOOL TAG CONFIG: CXX - -# The linker used to build libraries. -LD=$lt_LD_CXX - -# How to create reloadable object files. -reload_flag=$lt_reload_flag_CXX -reload_cmds=$lt_reload_cmds_CXX - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds_CXX - -# A language specific compiler. -CC=$lt_compiler_CXX - -# Is the compiler the GNU compiler? -with_gcc=$GCC_CXX - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic_CXX - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_CXX - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static_CXX - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc_CXX - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object_CXX - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds_CXX -archive_expsym_cmds=$lt_archive_expsym_cmds_CXX - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds_CXX -module_expsym_cmds=$lt_module_expsym_cmds_CXX - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld_CXX - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag_CXX - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag_CXX - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX - -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct_CXX - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute_CXX - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L_CXX - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic_CXX - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath_CXX - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs_CXX - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols_CXX - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds_CXX - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms_CXX - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms_CXX - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds_CXX - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds_CXX - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec_CXX - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action_CXX - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects_CXX -postdep_objects=$lt_postdep_objects_CXX -predeps=$lt_predeps_CXX -postdeps=$lt_postdeps_CXX - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path_CXX - -# ### END LIBTOOL TAG CONFIG: CXX -_LT_EOF - - ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - - -abs_srcdir="`cd $srcdir && pwd`" -abs_builddir="`pwd`" -if test "$abs_srcdir" != "$abs_builddir"; then - make mkdir-init -fi diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/configure.in b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/configure.in deleted file mode 100644 index 7e968c4..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/configure.in +++ /dev/null @@ -1,155 +0,0 @@ -dnl configuration script for expat -dnl Process this file with autoconf to produce a configure script. -dnl -dnl Copyright 2000 Clark Cooper -dnl -dnl This file is part of EXPAT. -dnl -dnl EXPAT is free software; you can redistribute it and/or modify it -dnl under the terms of the License (based on the MIT/X license) contained -dnl in the file COPYING that comes with this distribution. -dnl - -dnl Ensure that Expat is configured with autoconf 2.58 or newer -AC_PREREQ(2.58) - -dnl Get the version number of Expat, using m4's esyscmd() command to run -dnl the command at m4-generation time. This allows us to create an m4 -dnl symbol holding the correct version number. AC_INIT() requires the -dnl version number at m4-time, rather than when ./configure is run, so -dnl all this must happen as part of m4, not as part of the shell code -dnl contained in ./configure. -dnl -dnl NOTE: esyscmd() is a GNU M4 extension. Thus, we wrap it in an appropriate -dnl test. I believe this test will work, but I don't have a place with non- -dnl GNU M4 to test it right now. -define([expat_version], ifdef([__gnu__], - [esyscmd(conftools/get-version.sh lib/expat.h)], - [2.1.x])) -AC_INIT(expat, expat_version, expat-bugs@libexpat.org) -undefine([expat_version]) - -AC_CONFIG_SRCDIR(Makefile.in) -AC_CONFIG_AUX_DIR(conftools) -AC_CONFIG_MACRO_DIR([m4]) - - -dnl -dnl Increment LIBREVISION if source code has changed at all -dnl -dnl If the API has changed, increment LIBCURRENT and set LIBREVISION to 0 -dnl -dnl If the API changes compatibly (i.e. simply adding a new function -dnl without changing or removing earlier interfaces), then increment LIBAGE. -dnl -dnl If the API changes incompatibly set LIBAGE back to 0 -dnl - -LIBCURRENT=7 -LIBREVISION=0 -LIBAGE=6 - -AC_CONFIG_HEADER(expat_config.h) - -sinclude(conftools/ac_c_bigendian_cross.m4) - -AC_LIBTOOL_WIN32_DLL -AC_PROG_LIBTOOL - -AC_SUBST(LIBCURRENT) -AC_SUBST(LIBREVISION) -AC_SUBST(LIBAGE) - -dnl Checks for programs. -AC_PROG_CC -AC_PROG_CXX -AC_PROG_INSTALL - -if test "$GCC" = yes ; then - dnl - dnl Be careful about adding the -fexceptions option; some versions of - dnl GCC don't support it and it causes extra warnings that are only - dnl distracting; avoid. - dnl - OLDCFLAGS="$CFLAGS -Wall -Wmissing-prototypes -Wstrict-prototypes" - CFLAGS="$OLDCFLAGS -fexceptions" - AC_MSG_CHECKING(whether $CC accepts -fexceptions) - AC_TRY_LINK( , , - AC_MSG_RESULT(yes), - AC_MSG_RESULT(no); CFLAGS="$OLDCFLAGS") - CXXFLAGS=`echo "$CFLAGS" | sed 's/ -Wmissing-prototypes -Wstrict-prototypes//'` -fi - -dnl Checks for header files. -AC_HEADER_STDC - -dnl Checks for typedefs, structures, and compiler characteristics. - -dnl Note: Avoid using AC_C_BIGENDIAN because it does not -dnl work in a cross compile. -AC_C_BIGENDIAN_CROSS - -AC_C_CONST -AC_TYPE_SIZE_T -AC_CHECK_FUNCS(memmove bcopy) - -dnl Only needed for xmlwf: -AC_CHECK_HEADERS(fcntl.h unistd.h) -AC_TYPE_OFF_T -AC_FUNC_MMAP - -if test "$ac_cv_func_mmap_fixed_mapped" = "yes"; then - FILEMAP=unixfilemap -else - FILEMAP=readfilemap -fi -AC_SUBST(FILEMAP) - -dnl Needed for the test support code; this was found at -dnl http://lists.gnu.org/archive/html/bug-autoconf/2002-07/msg00028.html - -# AC_CPP_FUNC -# ------------------ # -# Checks to see if ANSI C99 CPP variable __func__ works. -# If not, perhaps __FUNCTION__ works instead. -# If not, we'll just define __func__ to "". -AC_DEFUN([AC_CPP_FUNC], -[AC_REQUIRE([AC_PROG_CC_STDC])dnl -AC_CACHE_CHECK([for an ANSI C99-conforming __func__], ac_cv_cpp_func, -[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], -[[char *foo = __func__;]])], - [ac_cv_cpp_func=yes], - [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], -[[char *foo = __FUNCTION__;]])], - [ac_cv_cpp_func=__FUNCTION__], - [ac_cv_cpp_func=no])])]) -if test $ac_cv_cpp_func = __FUNCTION__; then - AC_DEFINE(__func__,__FUNCTION__, - [Define to __FUNCTION__ or "" if `__func__' does not conform to -ANSI C.]) -elif test $ac_cv_cpp_func = no; then - AC_DEFINE(__func__,"", - [Define to __FUNCTION__ or "" if `__func__' does not conform to -ANSI C.]) -fi -])# AC_CPP_FUNC - -AC_CPP_FUNC - - -dnl Some basic configuration: -AC_DEFINE([XML_NS], 1, - [Define to make XML Namespaces functionality available.]) -AC_DEFINE([XML_DTD], 1, - [Define to make parameter entity parsing functionality available.]) -AC_DEFINE([XML_CONTEXT_BYTES], 1024, - [Define to specify how much context to retain around the current parse point.]) - -AC_CONFIG_FILES([Makefile expat.pc]) -AC_OUTPUT - -abs_srcdir="`cd $srcdir && pwd`" -abs_builddir="`pwd`" -if test "$abs_srcdir" != "$abs_builddir"; then - make mkdir-init -fi diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/PrintPath b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/PrintPath deleted file mode 100755 index e8559a3..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/PrintPath +++ /dev/null @@ -1,116 +0,0 @@ -#!/bin/sh -# Look for program[s] somewhere in $PATH. -# -# Options: -# -s -# Do not print out full pathname. (silent) -# -pPATHNAME -# Look in PATHNAME instead of $PATH -# -# Usage: -# PrintPath [-s] [-pPATHNAME] program [program ...] -# -# Initially written by Jim Jagielski for the Apache configuration mechanism -# (with kudos to Kernighan/Pike) -# -# This script falls under the Apache License. -# See http://www.apache.org/licenses/LICENSE - -## -# Some "constants" -## -pathname=$PATH -echo="yes" - -## -# Find out what OS we are running for later on -## -os=`(uname) 2>/dev/null` - -## -# Parse command line -## -for args in $* -do - case $args in - -s ) echo="no" ;; - -p* ) pathname="`echo $args | sed 's/^..//'`" ;; - * ) programs="$programs $args" ;; - esac -done - -## -# Now we make the adjustments required for OS/2 and everyone -# else :) -# -# First of all, all OS/2 programs have the '.exe' extension. -# Next, we adjust PATH (or what was given to us as PATH) to -# be whitespace separated directories. -# Finally, we try to determine the best flag to use for -# test/[] to look for an executable file. OS/2 just has '-r' -# but with other OSs, we do some funny stuff to check to see -# if test/[] knows about -x, which is the preferred flag. -## - -if [ "x$os" = "xOS/2" ] -then - ext=".exe" - pathname=`echo -E $pathname | - sed 's/^;/.;/ - s/;;/;.;/g - s/;$/;./ - s/;/ /g - s/\\\\/\\//g' ` - test_exec_flag="-r" -else - ext="" # No default extensions - pathname=`echo $pathname | - sed 's/^:/.:/ - s/::/:.:/g - s/:$/:./ - s/:/ /g' ` - # Here is how we test to see if test/[] can handle -x - testfile="pp.t.$$" - - cat > $testfile </dev/null`; then - test_exec_flag="-x" - else - test_exec_flag="-r" - fi - rm -f $testfile -fi - -for program in $programs -do - for path in $pathname - do - if [ $test_exec_flag $path/${program}${ext} ] && \ - [ ! -d $path/${program}${ext} ]; then - if [ "x$echo" = "xyes" ]; then - echo $path/${program}${ext} - fi - exit 0 - fi - -# Next try without extension (if one was used above) - if [ "x$ext" != "x" ]; then - if [ $test_exec_flag $path/${program} ] && \ - [ ! -d $path/${program} ]; then - if [ "x$echo" = "xyes" ]; then - echo $path/${program} - fi - exit 0 - fi - fi - done -done -exit 1 - diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/ac_c_bigendian_cross.m4 b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/ac_c_bigendian_cross.m4 deleted file mode 100644 index 8ed3edb..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/ac_c_bigendian_cross.m4 +++ /dev/null @@ -1,81 +0,0 @@ -dnl @synopsis AC_C_BIGENDIAN_CROSS -dnl -dnl Check endianess even when crosscompiling -dnl (partially based on the original AC_C_BIGENDIAN). -dnl -dnl The implementation will create a binary, and instead of running -dnl the binary it will be grep'ed for some symbols that will look -dnl different for different endianess of the binary. -dnl -dnl @version $Id: ac_c_bigendian_cross.m4,v 1.2 2001/10/01 20:03:13 fdrake Exp $ -dnl @author Guido Draheim -dnl -AC_DEFUN([AC_C_BIGENDIAN_CROSS], -[AC_CACHE_CHECK(whether byte ordering is bigendian, ac_cv_c_bigendian, -[ac_cv_c_bigendian=unknown -# See if sys/param.h defines the BYTE_ORDER macro. -AC_TRY_COMPILE([#include -#include ], [ -#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN - bogus endian macros -#endif], [# It does; now see whether it defined to BIG_ENDIAN or not. -AC_TRY_COMPILE([#include -#include ], [ -#if BYTE_ORDER != BIG_ENDIAN - not big endian -#endif], ac_cv_c_bigendian=yes, ac_cv_c_bigendian=no)]) -if test $ac_cv_c_bigendian = unknown; then -AC_TRY_RUN([main () { - /* Are we little or big endian? From Harbison&Steele. */ - union - { - long l; - char c[sizeof (long)]; - } u; - u.l = 1; - exit (u.c[sizeof (long) - 1] == 1); -}], ac_cv_c_bigendian=no, ac_cv_c_bigendian=yes, -[ echo $ac_n "cross-compiling... " 2>&AC_FD_MSG ]) -fi]) -if test $ac_cv_c_bigendian = unknown; then -AC_MSG_CHECKING(to probe for byte ordering) -[ -cat >conftest.c <&AC_FD_MSG - ac_cv_c_bigendian=yes - fi - if test `grep -l LiTTleEnDian conftest.o` ; then - echo $ac_n ' little endian probe OK, ' 1>&AC_FD_MSG - if test $ac_cv_c_bigendian = yes ; then - ac_cv_c_bigendian=unknown; - else - ac_cv_c_bigendian=no - fi - fi - echo $ac_n 'guessing bigendian ... ' >&AC_FD_MSG - fi - fi -AC_MSG_RESULT($ac_cv_c_bigendian) -fi -if test $ac_cv_c_bigendian = yes; then - AC_DEFINE(WORDS_BIGENDIAN, 1, [whether byteorder is bigendian]) - BYTEORDER=4321 -else - BYTEORDER=1234 -fi -AC_DEFINE_UNQUOTED(BYTEORDER, $BYTEORDER, [1234 = LIL_ENDIAN, 4321 = BIGENDIAN]) -if test $ac_cv_c_bigendian = unknown; then - AC_MSG_ERROR(unknown endianess - sorry, please pre-set ac_cv_c_bigendian) -fi -]) diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/config.guess b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/config.guess deleted file mode 100755 index 40eaed4..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/config.guess +++ /dev/null @@ -1,1517 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -# 2011 Free Software Foundation, Inc. - -timestamp='2011-05-11' - -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - - -# Originally written by Per Bothner. Please send patches (context -# diff format) to and include a ChangeLog -# entry. -# -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. -# -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] - -Output the configuration name of the system \`$me' is run on. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.guess ($timestamp) - -Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free -Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" >&2 - exit 1 ;; - * ) - break ;; - esac -done - -if test $# != 0; then - echo "$me: too many arguments$help" >&2 - exit 1 -fi - -trap 'exit 1' 1 2 15 - -# CC_FOR_BUILD -- compiler used by this script. Note that the use of a -# compiler to aid in system detection is discouraged as it requires -# temporary files to be created and, as you can see below, it is a -# headache to deal with in a portable fashion. - -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. - -# Portable tmp directory creation inspired by the Autoconf team. - -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; - for c in cc gcc c89 c99 ; do - if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; set_cc_for_build= ;' - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward - # compatibility and a consistent mechanism for selecting the - # object file format. - # - # Note: NetBSD doesn't particularly care about the vendor - # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` - case "${UNAME_MACHINE_ARCH}" in - armeb) machine=armeb-unknown ;; - arm*) machine=arm-unknown ;; - sh3el) machine=shl-unknown ;; - sh3eb) machine=sh-unknown ;; - sh5el) machine=sh5le-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; - esac - # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE_ARCH}" in - arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ELF__ - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi - ;; - *) - os=netbsd - ;; - esac - # The OS release - # Debian GNU/NetBSD machines have a different userland, and - # thus, need a distinct triplet. However, they do not need - # kernel version information, so it can be replaced with a - # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in - Debian*) - release='-gnu' - ;; - *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - ;; - esac - # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" - exit ;; - *:OpenBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} - exit ;; - *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} - exit ;; - *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} - exit ;; - macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd${UNAME_RELEASE} - exit ;; - *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} - exit ;; - alpha:OSF1:*:*) - case $UNAME_RELEASE in - *4.0) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - ;; - *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` - ;; - esac - # According to Compaq, /usr/sbin/psrinfo has been available on - # OSF/1 and Tru64 systems produced since 1995. I hope that - # covers most systems running today. This code pipes the CPU - # types through head -n 1, so we only detect the type of CPU 0. - ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in - "EV4 (21064)") - UNAME_MACHINE="alpha" ;; - "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; - "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; - "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; - "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; - "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; - "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; - "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; - "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; - "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; - "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; - "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; - "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; - esac - # A Pn.n version is a patched version. - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - exitcode=$? - trap '' 0 - exit $exitcode ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit ;; - *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos - exit ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; - *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; - *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit ;; - arm:riscos:*:*|arm:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; - DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; - DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) - case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; - s390x:SunOS:*:*) - echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux${UNAME_RELEASE} - exit ;; - i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - eval $set_cc_for_build - SUN_ARCH="i386" - # If there is a compiler, see if it is configured for 64-bit objects. - # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. - # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - SUN_ARCH="x86_64" - fi - fi - echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit ;; - m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} - exit ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus -#include /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && - dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`$dummy $dummyarg` && - { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos${UNAME_RELEASE} - exit ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; - Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] - then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else - echo i586-dg-dgux${UNAME_RELEASE} - fi - exit ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; - ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` - then - echo "$SYSTEM_NAME" - else - echo rs6000-ibm-aix3.2.5 - fi - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit ;; - *:AIX:*:[4567]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; - 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac - fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include - #include - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` - test -z "$HP_ARCH" && HP_ARCH=hppa - fi ;; - esac - if [ ${HP_ARCH} = "hppa2.0w" ] - then - eval $set_cc_for_build - - # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating - # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler - # generating 64-bit code. GNU and HP use different nomenclature: - # - # $ CC_FOR_BUILD=cc ./config.guess - # => hppa2.0w-hp-hpux11.23 - # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess - # => hppa64-hp-hpux11.23 - - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | - grep -q __LP64__ - then - HP_ARCH="hppa2.0w" - else - HP_ARCH="hppa64" - fi - fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} - exit ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ - -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:FreeBSD:*:*) - case ${UNAME_MACHINE} in - pc98) - echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - esac - exit ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit ;; - *:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 - exit ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit ;; - *:Interix*:*) - case ${UNAME_MACHINE} in - x86) - echo i586-pc-interix${UNAME_RELEASE} - exit ;; - authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix${UNAME_RELEASE} - exit ;; - IA64) - echo ia64-unknown-interix${UNAME_RELEASE} - exit ;; - esac ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; - 8664:Windows_NT:*) - echo x86_64-pc-mks - exit ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit ;; - amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin - exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - *:GNU:*:*) - # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit ;; - *:GNU/*:*:*) - # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu - exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} - exit ;; - arm*:Linux:*:*) - eval $set_cc_for_build - if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_EABI__ - then - echo ${UNAME_MACHINE}-unknown-linux-gnu - else - if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_PCS_VFP - then - echo ${UNAME_MACHINE}-unknown-linux-gnueabi - else - echo ${UNAME_MACHINE}-unknown-linux-gnueabihf - fi - fi - exit ;; - avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - cris:Linux:*:*) - echo cris-axis-linux-gnu - exit ;; - crisv32:Linux:*:*) - echo crisv32-axis-linux-gnu - exit ;; - frv:Linux:*:*) - echo frv-unknown-linux-gnu - exit ;; - i*86:Linux:*:*) - LIBC=gnu - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #ifdef __dietlibc__ - LIBC=dietlibc - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` - echo "${UNAME_MACHINE}-pc-linux-${LIBC}" - exit ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - mips:Linux:*:* | mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef ${UNAME_MACHINE} - #undef ${UNAME_MACHINE}el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=${UNAME_MACHINE}el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=${UNAME_MACHINE} - #else - CPU= - #endif - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } - ;; - or32:Linux:*:*) - echo or32-unknown-linux-gnu - exit ;; - padre:Linux:*:*) - echo sparc-unknown-linux-gnu - exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu - exit ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-gnu ;; - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; - esac - exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu - exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu - exit ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux - exit ;; - sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - tile*:Linux:*:*) - echo ${UNAME_MACHINE}-tilera-linux-gnu - exit ;; - vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-gnu - exit ;; - x86_64:Linux:*:*) - echo x86_64-unknown-linux-gnu - exit ;; - xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - i*86:DYNIX/ptx:4*:*) - # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. - # earlier versions are messed up and put the nodename in both - # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; - i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit ;; - i*86:syllable:*:*) - echo ${UNAME_MACHINE}-pc-syllable - exit ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi - exit ;; - i*86:*:5:[678]*) - # UnixWare 7.x, OpenUNIX and OpenServer 6. - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; - *Pent*|*Celeron) UNAME_MACHINE=i686 ;; - esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit ;; - i*86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` - (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit ;; - pc:*:*:*) - # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i586. - # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that - # this is a cross-build. - echo i586-pc-msdosdjgpp - exit ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit ;; - mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; - M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; - M68*:*:R3V[5678]*:*) - test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; - 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4; exit; } ;; - NCR*:*:4.2:* | MPRAS*:*:4.2:*) - OS_REL='.3' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; - i*86:VOS:*:*) - # From Paul.Green@stratus.com. - echo ${UNAME_MACHINE}-stratus-vos - exit ;; - *:VOS:*:*) - # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; - BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit ;; - SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} - exit ;; - SX-7:SUPER-UX:*:*) - echo sx7-nec-superux${UNAME_RELEASE} - exit ;; - SX-8:SUPER-UX:*:*) - echo sx8-nec-superux${UNAME_RELEASE} - exit ;; - SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux${UNAME_RELEASE} - exit ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - case $UNAME_PROCESSOR in - i386) - eval $set_cc_for_build - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - UNAME_PROCESSOR="x86_64" - fi - fi ;; - unknown) UNAME_PROCESSOR=powerpc ;; - esac - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then - UNAME_PROCESSOR=i386 - UNAME_MACHINE=pc - fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit ;; - NEO-?:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk${UNAME_RELEASE} - exit ;; - NSE-?:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} - exit ;; - NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 - # operating systems. - if test "$cputype" = "386"; then - UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 - exit ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; - *:ITS:*:*) - echo pdp10-unknown-its - exit ;; - SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} - exit ;; - *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit ;; - *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "${UNAME_MACHINE}" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; - esac ;; - *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; - i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' - exit ;; - i*86:rdos:*:*) - echo ${UNAME_MACHINE}-pc-rdos - exit ;; - i*86:AROS:*:*) - echo ${UNAME_MACHINE}-pc-aros - exit ;; -esac - -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - -eval $set_cc_for_build -cat >$dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix\n"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - c34*) - echo c34-convex-bsd - exit ;; - c38*) - echo c38-convex-bsd - exit ;; - c4*) - echo c4-convex-bsd - exit ;; - esac -fi - -cat >&2 < in order to provide the needed -information to handle your system. - -config.guess timestamp = $timestamp - -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` - -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} -EOF - -exit 1 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/config.sub b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/config.sub deleted file mode 100755 index 30fdca8..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/config.sub +++ /dev/null @@ -1,1760 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -# 2011 Free Software Foundation, Inc. - -timestamp='2011-03-23' - -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# This file is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - - -# Please send patches to . Submit a context -# diff and a properly formatted GNU ChangeLog entry. -# -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS - -Canonicalize a configuration name. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.sub ($timestamp) - -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free -Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" - exit 1 ;; - - *local*) - # First pass through any local machine types. - echo $1 - exit ;; - - * ) - break ;; - esac -done - -case $# in - 0) echo "$me: missing argument$help" >&2 - exit 1;; - 1) ;; - *) echo "$me: too many arguments$help" >&2 - exit 1;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ - linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | \ - kopensolaris*-gnu* | \ - storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray | -microblaze) - os= - basic_machine=$1 - ;; - -bluegene*) - os=-cnk - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco6) - os=-sco5v6 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5v6*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ - | bfin \ - | c4x | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | fido | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ - | lm32 \ - | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | mcore | mep | metag \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64octeon | mips64octeonel \ - | mips64orion | mips64orionel \ - | mips64r5900 | mips64r5900el \ - | mips64vr | mips64vrel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | moxie \ - | mt \ - | msp430 \ - | nds32 | nds32le | nds32be \ - | nios | nios2 \ - | ns16k | ns32k \ - | open8 \ - | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle \ - | pyramid \ - | rx \ - | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu \ - | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ - | ubicom32 \ - | v850 | v850e \ - | we32k \ - | x86 | xc16x | xstormy16 | xtensa \ - | z8k | z80) - basic_machine=$basic_machine-unknown - ;; - c54x) - basic_machine=tic54x-unknown - ;; - c55x) - basic_machine=tic55x-unknown - ;; - c6x) - basic_machine=tic6x-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12 | picochip) - # Motorola 68HC11/12. - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - ms1) - basic_machine=mt-unknown - ;; - - strongarm | thumb | xscale) - basic_machine=arm-unknown - ;; - - xscaleeb) - basic_machine=armeb-unknown - ;; - - xscaleel) - basic_machine=armel-unknown - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* | avr32-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | clipper-* | craynv-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* | iq2000-* \ - | lm32-* \ - | m32c-* | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64octeon-* | mips64octeonel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64r5900-* | mips64r5900el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mips64vr5900-* | mips64vr5900el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipstx39-* | mipstx39el-* \ - | mmix-* \ - | mt-* \ - | msp430-* \ - | nds32-* | nds32le-* | nds32be-* \ - | nios-* | nios2-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | open8-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ - | pyramid-* \ - | romp-* | rs6000-* | rx-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ - | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ - | tahoe-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tile-* | tilegx-* \ - | tron-* \ - | ubicom32-* \ - | v850-* | v850e-* | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* \ - | xstormy16-* | xtensa*-* \ - | ymp-* \ - | z8k-* | z80-*) - ;; - # Recognize the basic CPU types without company name, with glob match. - xtensa*) - basic_machine=$basic_machine-unknown - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - abacus) - basic_machine=abacus-unknown - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amd64) - basic_machine=x86_64-pc - ;; - amd64-*) - basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aros) - basic_machine=i386-pc - os=-aros - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - blackfin) - basic_machine=bfin-unknown - os=-linux - ;; - blackfin-*) - basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - bluegene*) - basic_machine=powerpc-ibm - os=-cnk - ;; - c54x-*) - basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c55x-*) - basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c6x-*) - basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - cegcc) - basic_machine=arm-unknown - os=-cegcc - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - craynv) - basic_machine=craynv-cray - os=-unicosmp - ;; - cr16 | cr16-*) - basic_machine=cr16-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - crisv32 | crisv32-* | etraxfs*) - basic_machine=crisv32-axis - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - crx) - basic_machine=crx-unknown - os=-elf - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 - ;; - decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dicos) - basic_machine=i686-pc - os=-dicos - ;; - djgpp) - basic_machine=i586-pc - os=-msdosdjgpp - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; -# I'm not sure what "Sysv32" means. Should this be sysv3.2? - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m68knommu) - basic_machine=m68k-unknown - os=-linux - ;; - m68knommu-*) - basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - microblaze) - basic_machine=microblaze-xilinx - ;; - mingw32) - basic_machine=i386-pc - os=-mingw32 - ;; - mingw32ce) - basic_machine=arm-unknown - os=-mingw32ce - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - ms1-*) - basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - neo-tandem) - basic_machine=neo-tandem - ;; - nse-tandem) - basic_machine=nse-tandem - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - openrisc | openrisc-*) - basic_machine=or32-unknown - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - parisc) - basic_machine=hppa-unknown - os=-linux - ;; - parisc-*) - basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pc98) - basic_machine=i386-pc - ;; - pc98-*) - basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc - ;; - pentium4) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc | ppcbe) basic_machine=powerpc-unknown - ;; - ppc-* | ppcbe-*) - basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rdos) - basic_machine=i386-pc - os=-rdos - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - s390 | s390-*) - basic_machine=s390-ibm - ;; - s390x | s390x-*) - basic_machine=s390x-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sb1) - basic_machine=mipsisa64sb1-unknown - ;; - sb1el) - basic_machine=mipsisa64sb1el-unknown - ;; - sde) - basic_machine=mipsisa32-sde - os=-elf - ;; - sei) - basic_machine=mips-sei - os=-seiux - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sh5el) - basic_machine=sh5le-unknown - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - strongarm-* | thumb-*) - basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=alphaev5-cray - os=-unicos - ;; - t90) - basic_machine=t90-cray - os=-unicos - ;; - # This must be matched before tile*. - tilegx*) - basic_machine=tilegx-unknown - os=-linux-gnu - ;; - tile*) - basic_machine=tile-unknown - os=-linux-gnu - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - tpf) - basic_machine=s390x-ibm - os=-tpf - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - xbox) - basic_machine=i686-pc - os=-mingw32 - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - xscale-* | xscalee[bl]-*) - basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - z80-*-coff) - basic_machine=z80-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - romp) - basic_machine=romp-ibm - ;; - mmix) - basic_machine=mmix-knuth - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown - ;; - sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -auroraux) - os=-auroraux - ;; - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ - | -sym* | -kopensolaris* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -openbsd* | -solidbsd* \ - | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ - | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* | -cegcc* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -linux-android* \ - | -linux-newlib* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) - ;; - *) - os=-nto$os - ;; - esac - ;; - -nto-qnx*) - ;; - -nto*) - os=`echo $os | sed -e 's|nto|nto-qnx|'` - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux-dietlibc) - os=-linux-dietlibc - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -os400*) - os=-os400 - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -atheos*) - os=-atheos - ;; - -syllable*) - os=-syllable - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -nova*) - os=-rtmk-nova - ;; - -ns2 ) - os=-nextstep2 - ;; - -nsk*) - os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -tpf*) - os=-tpf - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -aros*) - os=-aros - ;; - -kaos*) - os=-kaos - ;; - -zvmoe) - os=-zvmoe - ;; - -dicos*) - os=-dicos - ;; - -nacl*) - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - score-*) - os=-elf - ;; - spu-*) - os=-elf - ;; - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - c4x-* | tic4x-*) - os=-coff - ;; - tic54x-*) - os=-coff - ;; - tic55x-*) - os=-coff - ;; - tic6x-*) - os=-coff - ;; - # This must come before the *-dec entry. - pdp10-*) - os=-tops20 - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - # This also exists in the configure program, but was not the - # default. - # os=-sunos4 - ;; - m68*-cisco) - os=-aout - ;; - mep-*) - os=-elf - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - or32-*) - os=-coff - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-haiku) - os=-haiku - ;; - *-ibm) - os=-aix - ;; - *-knuth) - os=-mmixware - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -cnk*|-aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs* | -opened*) - vendor=ibm - ;; - -os400*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -tpf*) - vendor=ibm - ;; - -vxsim* | -vxworks* | -windiss*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; - -vos*) - vendor=stratus - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os -exit - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/expat.m4 b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/expat.m4 deleted file mode 100644 index 57e579b..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/expat.m4 +++ /dev/null @@ -1,43 +0,0 @@ -dnl Check if --with-expat[=PREFIX] is specified and -dnl Expat >= 1.95.0 is installed in the system. -dnl If yes, substitute EXPAT_CFLAGS, EXPAT_LIBS with regard to -dnl the specified PREFIX and set with_expat to PREFIX, or 'yes' if PREFIX -dnl has not been specified. Also HAVE_LIBEXPAT, HAVE_EXPAT_H are defined. -dnl If --with-expat has not been specified, set with_expat to 'no'. -dnl In addition, an Automake conditional EXPAT_INSTALLED is set accordingly. -dnl This is necessary to adapt a whole lot of packages that have expat -dnl bundled as a static library. -AC_DEFUN([AM_WITH_EXPAT], -[ AC_ARG_WITH(expat, - [ --with-expat=PREFIX Use system Expat library], - , with_expat=no) - - AM_CONDITIONAL(EXPAT_INSTALLED, test $with_expat != no) - - EXPAT_CFLAGS= - EXPAT_LIBS= - if test $with_expat != no; then - if test $with_expat != yes; then - EXPAT_CFLAGS="-I$with_expat/include" - EXPAT_LIBS="-L$with_expat/lib" - fi - AC_CHECK_LIB(expat, XML_ParserCreate, - [ EXPAT_LIBS="$EXPAT_LIBS -lexpat" - expat_found=yes ], - [ expat_found=no ], - "$EXPAT_LIBS") - if test $expat_found = no; then - AC_MSG_ERROR([Could not find the Expat library]) - fi - expat_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $EXPAT_CFLAGS" - AC_CHECK_HEADERS(expat.h, , expat_found=no) - if test $expat_found = no; then - AC_MSG_ERROR([Could not find expat.h]) - fi - CFLAGS="$expat_save_CFLAGS" - fi - - AC_SUBST(EXPAT_CFLAGS) - AC_SUBST(EXPAT_LIBS) -]) diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/get-version.sh b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/get-version.sh deleted file mode 100755 index a70e0fb..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/get-version.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/sh -# -# USAGE: get-version.sh path/to/expat.h -# -# This script will print Expat's version number on stdout. For example: -# -# $ ./conftools/get-version.sh ./lib/expat.h -# 1.95.3 -# $ -# - -if test $# = 0; then - echo "ERROR: pathname for expat.h was not provided." - echo "" - echo "USAGE: $0 path/to/expat.h" - exit 1 -fi -if test $# != 1; then - echo "ERROR: too many arguments were provided." - echo "" - echo "USAGE: $0 path/to/expat.h" - exit 1 -fi - -hdr="$1" -if test ! -r "$hdr"; then - echo "ERROR: '$hdr' does not exist, or is not readable." - exit 1 -fi - -MAJOR_VERSION="`sed -n -e '/MAJOR_VERSION/s/[^0-9]*//gp' $hdr`" -MINOR_VERSION="`sed -n -e '/MINOR_VERSION/s/[^0-9]*//gp' $hdr`" -MICRO_VERSION="`sed -n -e '/MICRO_VERSION/s/[^0-9]*//gp' $hdr`" - -# Determine how to tell echo not to print the trailing \n. This is -# similar to Autoconf's @ECHO_C@ and @ECHO_N@; however, we don't -# generate this file via autoconf (in fact, get-version.sh is used -# to *create* ./configure), so we just do something similar inline. -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ;; - *c*,* ) ECHO_N=-n ECHO_C= ;; - *) ECHO_N= ECHO_C='\c' ;; -esac - -echo $ECHO_N "$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$ECHO_C" diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/install-sh b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/install-sh deleted file mode 100755 index 6781b98..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/install-sh +++ /dev/null @@ -1,520 +0,0 @@ -#!/bin/sh -# install - install a program, script, or datafile - -scriptversion=2009-04-28.21; # UTC - -# This originates from X11R5 (mit/util/scripts/install.sh), which was -# later released in X11R6 (xc/config/util/install.sh) with the -# following copyright and license. -# -# Copyright (C) 1994 X Consortium -# -# 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: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# 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 -# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- -# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# -# Except as contained in this notice, the name of the X Consortium shall not -# be used in advertising or otherwise to promote the sale, use or other deal- -# ings in this Software without prior written authorization from the X Consor- -# tium. -# -# -# FSF changes to this file are in the public domain. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. - -nl=' -' -IFS=" "" $nl" - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit=${DOITPROG-} -if test -z "$doit"; then - doit_exec=exec -else - doit_exec=$doit -fi - -# Put in absolute file names if you don't have them in your path; -# or use environment vars. - -chgrpprog=${CHGRPPROG-chgrp} -chmodprog=${CHMODPROG-chmod} -chownprog=${CHOWNPROG-chown} -cmpprog=${CMPPROG-cmp} -cpprog=${CPPROG-cp} -mkdirprog=${MKDIRPROG-mkdir} -mvprog=${MVPROG-mv} -rmprog=${RMPROG-rm} -stripprog=${STRIPPROG-strip} - -posix_glob='?' -initialize_posix_glob=' - test "$posix_glob" != "?" || { - if (set -f) 2>/dev/null; then - posix_glob= - else - posix_glob=: - fi - } -' - -posix_mkdir= - -# Desired mode of installed file. -mode=0755 - -chgrpcmd= -chmodcmd=$chmodprog -chowncmd= -mvcmd=$mvprog -rmcmd="$rmprog -f" -stripcmd= - -src= -dst= -dir_arg= -dst_arg= - -copy_on_change=false -no_target_directory= - -usage="\ -Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE - or: $0 [OPTION]... SRCFILES... DIRECTORY - or: $0 [OPTION]... -t DIRECTORY SRCFILES... - or: $0 [OPTION]... -d DIRECTORIES... - -In the 1st form, copy SRCFILE to DSTFILE. -In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. -In the 4th, create DIRECTORIES. - -Options: - --help display this help and exit. - --version display version info and exit. - - -c (ignored) - -C install only if different (preserve the last data modification time) - -d create directories instead of installing files. - -g GROUP $chgrpprog installed files to GROUP. - -m MODE $chmodprog installed files to MODE. - -o USER $chownprog installed files to USER. - -s $stripprog installed files. - -t DIRECTORY install into DIRECTORY. - -T report an error if DSTFILE is a directory. - -Environment variables override the default commands: - CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG - RMPROG STRIPPROG -" - -while test $# -ne 0; do - case $1 in - -c) ;; - - -C) copy_on_change=true;; - - -d) dir_arg=true;; - - -g) chgrpcmd="$chgrpprog $2" - shift;; - - --help) echo "$usage"; exit $?;; - - -m) mode=$2 - case $mode in - *' '* | *' '* | *' -'* | *'*'* | *'?'* | *'['*) - echo "$0: invalid mode: $mode" >&2 - exit 1;; - esac - shift;; - - -o) chowncmd="$chownprog $2" - shift;; - - -s) stripcmd=$stripprog;; - - -t) dst_arg=$2 - shift;; - - -T) no_target_directory=true;; - - --version) echo "$0 $scriptversion"; exit $?;; - - --) shift - break;; - - -*) echo "$0: invalid option: $1" >&2 - exit 1;; - - *) break;; - esac - shift -done - -if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then - # When -d is used, all remaining arguments are directories to create. - # When -t is used, the destination is already specified. - # Otherwise, the last argument is the destination. Remove it from $@. - for arg - do - if test -n "$dst_arg"; then - # $@ is not empty: it contains at least $arg. - set fnord "$@" "$dst_arg" - shift # fnord - fi - shift # arg - dst_arg=$arg - done -fi - -if test $# -eq 0; then - if test -z "$dir_arg"; then - echo "$0: no input file specified." >&2 - exit 1 - fi - # It's OK to call `install-sh -d' without argument. - # This can happen when creating conditional directories. - exit 0 -fi - -if test -z "$dir_arg"; then - trap '(exit $?); exit' 1 2 13 15 - - # Set umask so as not to create temps with too-generous modes. - # However, 'strip' requires both read and write access to temps. - case $mode in - # Optimize common cases. - *644) cp_umask=133;; - *755) cp_umask=22;; - - *[0-7]) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw='% 200' - fi - cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; - *) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw=,u+rw - fi - cp_umask=$mode$u_plus_rw;; - esac -fi - -for src -do - # Protect names starting with `-'. - case $src in - -*) src=./$src;; - esac - - if test -n "$dir_arg"; then - dst=$src - dstdir=$dst - test -d "$dstdir" - dstdir_status=$? - else - - # Waiting for this to be detected by the "$cpprog $src $dsttmp" command - # might cause directories to be created, which would be especially bad - # if $src (and thus $dsttmp) contains '*'. - if test ! -f "$src" && test ! -d "$src"; then - echo "$0: $src does not exist." >&2 - exit 1 - fi - - if test -z "$dst_arg"; then - echo "$0: no destination specified." >&2 - exit 1 - fi - - dst=$dst_arg - # Protect names starting with `-'. - case $dst in - -*) dst=./$dst;; - esac - - # If destination is a directory, append the input filename; won't work - # if double slashes aren't ignored. - if test -d "$dst"; then - if test -n "$no_target_directory"; then - echo "$0: $dst_arg: Is a directory" >&2 - exit 1 - fi - dstdir=$dst - dst=$dstdir/`basename "$src"` - dstdir_status=0 - else - # Prefer dirname, but fall back on a substitute if dirname fails. - dstdir=` - (dirname "$dst") 2>/dev/null || - expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$dst" : 'X\(//\)[^/]' \| \ - X"$dst" : 'X\(//\)$' \| \ - X"$dst" : 'X\(/\)' \| . 2>/dev/null || - echo X"$dst" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q' - ` - - test -d "$dstdir" - dstdir_status=$? - fi - fi - - obsolete_mkdir_used=false - - if test $dstdir_status != 0; then - case $posix_mkdir in - '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - - # With -d, create the new directory with the user-specified mode. - # Otherwise, rely on $mkdir_umask. - if test -n "$dir_arg"; then - mkdir_mode=-m$mode - else - mkdir_mode= - fi - - posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 - - if (umask $mkdir_umask && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writeable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - ls_ld_tmpdir=`ls -ld "$tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/d" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null - fi - trap '' 0;; - esac;; - esac - - if - $posix_mkdir && ( - umask $mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" - ) - then : - else - - # The umask is ridiculous, or mkdir does not conform to POSIX, - # or it failed possibly due to a race condition. Create the - # directory the slow way, step by step, checking for races as we go. - - case $dstdir in - /*) prefix='/';; - -*) prefix='./';; - *) prefix='';; - esac - - eval "$initialize_posix_glob" - - oIFS=$IFS - IFS=/ - $posix_glob set -f - set fnord $dstdir - shift - $posix_glob set +f - IFS=$oIFS - - prefixes= - - for d - do - test -z "$d" && continue - - prefix=$prefix$d - if test -d "$prefix"; then - prefixes= - else - if $posix_mkdir; then - (umask=$mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break - # Don't fail if two instances are running concurrently. - test -d "$prefix" || exit 1 - else - case $prefix in - *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; - *) qprefix=$prefix;; - esac - prefixes="$prefixes '$qprefix'" - fi - fi - prefix=$prefix/ - done - - if test -n "$prefixes"; then - # Don't fail if two instances are running concurrently. - (umask $mkdir_umask && - eval "\$doit_exec \$mkdirprog $prefixes") || - test -d "$dstdir" || exit 1 - obsolete_mkdir_used=true - fi - fi - fi - - if test -n "$dir_arg"; then - { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && - { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || - test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 - else - - # Make a couple of temp file names in the proper directory. - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ - - # Trap to clean up those temp files at exit. - trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 - - # Copy the file name to the temp name. - (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && - - # and set any options; do chmod last to preserve setuid bits. - # - # If any of these fail, we abort the whole thing. If we want to - # ignore errors from any of these, just make sure not to ignore - # errors from the above "$doit $cpprog $src $dsttmp" command. - # - { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && - { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && - { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && - - # If -C, don't bother to copy if it wouldn't change the file. - if $copy_on_change && - old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && - new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - - eval "$initialize_posix_glob" && - $posix_glob set -f && - set X $old && old=:$2:$4:$5:$6 && - set X $new && new=:$2:$4:$5:$6 && - $posix_glob set +f && - - test "$old" = "$new" && - $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 - then - rm -f "$dsttmp" - else - # Rename the file to the real destination. - $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || - - # The rename failed, perhaps because mv can't rename something else - # to itself, or perhaps because mv is so ancient that it does not - # support -f. - { - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || - { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } - } || - { echo "$0: cannot unlink or rename $dst" >&2 - (exit 1); exit 1 - } - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" - } - fi || exit 1 - - trap '' 0 - fi -done - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/ltmain.sh b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/ltmain.sh deleted file mode 100755 index b4a3231..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/ltmain.sh +++ /dev/null @@ -1,9642 +0,0 @@ - -# libtool (GNU libtool) 2.4 -# Written by Gordon Matzigkeit , 1996 - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, -# 2007, 2008, 2009, 2010 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# GNU Libtool is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, -# or obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -# Usage: $progname [OPTION]... [MODE-ARG]... -# -# Provide generalized library-building support services. -# -# --config show all configuration variables -# --debug enable verbose shell tracing -# -n, --dry-run display commands without modifying any files -# --features display basic configuration information and exit -# --mode=MODE use operation mode MODE -# --preserve-dup-deps don't remove duplicate dependency libraries -# --quiet, --silent don't print informational messages -# --no-quiet, --no-silent -# print informational messages (default) -# --tag=TAG use configuration variables from tag TAG -# -v, --verbose print more informational messages than default -# --no-verbose don't print the extra informational messages -# --version print version information -# -h, --help, --help-all print short, long, or detailed help message -# -# MODE must be one of the following: -# -# clean remove files from the build directory -# compile compile a source file into a libtool object -# execute automatically set library path, then run a program -# finish complete the installation of libtool libraries -# install install libraries or executables -# link create a library or an executable -# uninstall remove libraries from an installed directory -# -# MODE-ARGS vary depending on the MODE. When passed as first option, -# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. -# Try `$progname --help --mode=MODE' for a more detailed description of MODE. -# -# When reporting a bug, please describe a test case to reproduce it and -# include the following information: -# -# host-triplet: $host -# shell: $SHELL -# compiler: $LTCC -# compiler flags: $LTCFLAGS -# linker: $LD (gnu? $with_gnu_ld) -# $progname: (GNU libtool) 2.4 Debian-2.4-2ubuntu1 -# automake: $automake_version -# autoconf: $autoconf_version -# -# Report bugs to . -# GNU libtool home page: . -# General help using GNU software: . - -PROGRAM=libtool -PACKAGE=libtool -VERSION="2.4 Debian-2.4-2ubuntu1" -TIMESTAMP="" -package_revision=1.3293 - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' -} - -# NLS nuisances: We save the old values to restore during execute mode. -lt_user_locale= -lt_safe_locale= -for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES -do - eval "if test \"\${$lt_var+set}\" = set; then - save_$lt_var=\$$lt_var - $lt_var=C - export $lt_var - lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" - lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" - fi" -done -LC_ALL=C -LANGUAGE=C -export LANGUAGE LC_ALL - -$lt_unset CDPATH - - -# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -# is ksh but when the shell is invoked as "sh" and the current value of -# the _XPG environment variable is not equal to 1 (one), the special -# positional parameter $0, within a function call, is the name of the -# function. -progpath="$0" - - - -: ${CP="cp -f"} -test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} -: ${EGREP="/bin/grep -E"} -: ${FGREP="/bin/grep -F"} -: ${GREP="/bin/grep"} -: ${LN_S="ln -s"} -: ${MAKE="make"} -: ${MKDIR="mkdir"} -: ${MV="mv -f"} -: ${RM="rm -f"} -: ${SED="/bin/sed"} -: ${SHELL="${CONFIG_SHELL-/bin/sh}"} -: ${Xsed="$SED -e 1s/^X//"} - -# Global variables: -EXIT_SUCCESS=0 -EXIT_FAILURE=1 -EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. -EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. - -exit_status=$EXIT_SUCCESS - -# Make sure IFS has a sensible default -lt_nl=' -' -IFS=" $lt_nl" - -dirname="s,/[^/]*$,," -basename="s,^.*/,," - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi -} # func_dirname may be replaced by extended shell implementation - - -# func_basename file -func_basename () -{ - func_basename_result=`$ECHO "${1}" | $SED "$basename"` -} # func_basename may be replaced by extended shell implementation - - -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi - func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` -} # func_dirname_and_basename may be replaced by extended shell implementation - - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# func_strip_suffix prefix name -func_stripname () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname may be replaced by extended shell implementation - - -# These SED scripts presuppose an absolute path with a trailing slash. -pathcar='s,^/\([^/]*\).*$,\1,' -pathcdr='s,^/[^/]*,,' -removedotparts=':dotsl - s@/\./@/@g - t dotsl - s,/\.$,/,' -collapseslashes='s@/\{1,\}@/@g' -finalslash='s,/*$,/,' - -# func_normal_abspath PATH -# Remove doubled-up and trailing slashes, "." path components, -# and cancel out any ".." path components in PATH after making -# it an absolute path. -# value returned in "$func_normal_abspath_result" -func_normal_abspath () -{ - # Start from root dir and reassemble the path. - func_normal_abspath_result= - func_normal_abspath_tpath=$1 - func_normal_abspath_altnamespace= - case $func_normal_abspath_tpath in - "") - # Empty path, that just means $cwd. - func_stripname '' '/' "`pwd`" - func_normal_abspath_result=$func_stripname_result - return - ;; - # The next three entries are used to spot a run of precisely - # two leading slashes without using negated character classes; - # we take advantage of case's first-match behaviour. - ///*) - # Unusual form of absolute path, do nothing. - ;; - //*) - # Not necessarily an ordinary path; POSIX reserves leading '//' - # and for example Cygwin uses it to access remote file shares - # over CIFS/SMB, so we conserve a leading double slash if found. - func_normal_abspath_altnamespace=/ - ;; - /*) - # Absolute path, do nothing. - ;; - *) - # Relative path, prepend $cwd. - func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath - ;; - esac - # Cancel out all the simple stuff to save iterations. We also want - # the path to end with a slash for ease of parsing, so make sure - # there is one (and only one) here. - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` - while :; do - # Processed it all yet? - if test "$func_normal_abspath_tpath" = / ; then - # If we ascended to the root using ".." the result may be empty now. - if test -z "$func_normal_abspath_result" ; then - func_normal_abspath_result=/ - fi - break - fi - func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$pathcar"` - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$pathcdr"` - # Figure out what to do with it - case $func_normal_abspath_tcomponent in - "") - # Trailing empty path component, ignore it. - ;; - ..) - # Parent dir; strip last assembled component from result. - func_dirname "$func_normal_abspath_result" - func_normal_abspath_result=$func_dirname_result - ;; - *) - # Actual path component, append it. - func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent - ;; - esac - done - # Restore leading double-slash if one was found on entry. - func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result -} - -# func_relative_path SRCDIR DSTDIR -# generates a relative path from SRCDIR to DSTDIR, with a trailing -# slash if non-empty, suitable for immediately appending a filename -# without needing to append a separator. -# value returned in "$func_relative_path_result" -func_relative_path () -{ - func_relative_path_result= - func_normal_abspath "$1" - func_relative_path_tlibdir=$func_normal_abspath_result - func_normal_abspath "$2" - func_relative_path_tbindir=$func_normal_abspath_result - - # Ascend the tree starting from libdir - while :; do - # check if we have found a prefix of bindir - case $func_relative_path_tbindir in - $func_relative_path_tlibdir) - # found an exact match - func_relative_path_tcancelled= - break - ;; - $func_relative_path_tlibdir*) - # found a matching prefix - func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" - func_relative_path_tcancelled=$func_stripname_result - if test -z "$func_relative_path_result"; then - func_relative_path_result=. - fi - break - ;; - *) - func_dirname $func_relative_path_tlibdir - func_relative_path_tlibdir=${func_dirname_result} - if test "x$func_relative_path_tlibdir" = x ; then - # Have to descend all the way to the root! - func_relative_path_result=../$func_relative_path_result - func_relative_path_tcancelled=$func_relative_path_tbindir - break - fi - func_relative_path_result=../$func_relative_path_result - ;; - esac - done - - # Now calculate path; take care to avoid doubling-up slashes. - func_stripname '' '/' "$func_relative_path_result" - func_relative_path_result=$func_stripname_result - func_stripname '/' '/' "$func_relative_path_tcancelled" - if test "x$func_stripname_result" != x ; then - func_relative_path_result=${func_relative_path_result}/${func_stripname_result} - fi - - # Normalisation. If bindir is libdir, return empty string, - # else relative path ending with a slash; either way, target - # file name can be directly appended. - if test ! -z "$func_relative_path_result"; then - func_stripname './' '' "$func_relative_path_result/" - func_relative_path_result=$func_stripname_result - fi -} - -# The name of this program: -func_dirname_and_basename "$progpath" -progname=$func_basename_result - -# Make sure we have an absolute path for reexecution: -case $progpath in - [\\/]*|[A-Za-z]:\\*) ;; - *[\\/]*) - progdir=$func_dirname_result - progdir=`cd "$progdir" && pwd` - progpath="$progdir/$progname" - ;; - *) - save_IFS="$IFS" - IFS=: - for progdir in $PATH; do - IFS="$save_IFS" - test -x "$progdir/$progname" && break - done - IFS="$save_IFS" - test -n "$progdir" || progdir=`pwd` - progpath="$progdir/$progname" - ;; -esac - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed="${SED}"' -e 1s/^X//' -sed_quote_subst='s/\([`"$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution that turns a string into a regex matching for the -# string literally. -sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' - -# Sed substitution that converts a w32 file name or path -# which contains forward slashes, into one that contains -# (escaped) backslashes. A very naive implementation. -lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' - -# Re-`\' parameter expansions in output of double_quote_subst that were -# `\'-ed in input to the same. If an odd number of `\' preceded a '$' -# in input to double_quote_subst, that '$' was protected from expansion. -# Since each input `\' is now two `\'s, look for any number of runs of -# four `\'s followed by two `\'s and then a '$'. `\' that '$'. -bs='\\' -bs2='\\\\' -bs4='\\\\\\\\' -dollar='\$' -sed_double_backslash="\ - s/$bs4/&\\ -/g - s/^$bs2$dollar/$bs&/ - s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g - s/\n//g" - -# Standard options: -opt_dry_run=false -opt_help=false -opt_quiet=false -opt_verbose=false -opt_warning=: - -# func_echo arg... -# Echo program name prefixed message, along with the current mode -# name if it has been set yet. -func_echo () -{ - $ECHO "$progname: ${opt_mode+$opt_mode: }$*" -} - -# func_verbose arg... -# Echo program name prefixed message in verbose mode only. -func_verbose () -{ - $opt_verbose && func_echo ${1+"$@"} - - # A bug in bash halts the script if the last line of a function - # fails when set -e is in force, so we need another command to - # work around that: - : -} - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - -# func_error arg... -# Echo program name prefixed message to standard error. -func_error () -{ - $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 -} - -# func_warning arg... -# Echo program name prefixed warning message to standard error. -func_warning () -{ - $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 - - # bash bug again: - : -} - -# func_fatal_error arg... -# Echo program name prefixed message to standard error, and exit. -func_fatal_error () -{ - func_error ${1+"$@"} - exit $EXIT_FAILURE -} - -# func_fatal_help arg... -# Echo program name prefixed message to standard error, followed by -# a help hint, and exit. -func_fatal_help () -{ - func_error ${1+"$@"} - func_fatal_error "$help" -} -help="Try \`$progname --help' for more information." ## default - - -# func_grep expression filename -# Check whether EXPRESSION matches any line of FILENAME, without output. -func_grep () -{ - $GREP "$1" "$2" >/dev/null 2>&1 -} - - -# func_mkdir_p directory-path -# Make sure the entire path to DIRECTORY-PATH is available. -func_mkdir_p () -{ - my_directory_path="$1" - my_dir_list= - - if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then - - # Protect directory names starting with `-' - case $my_directory_path in - -*) my_directory_path="./$my_directory_path" ;; - esac - - # While some portion of DIR does not yet exist... - while test ! -d "$my_directory_path"; do - # ...make a list in topmost first order. Use a colon delimited - # list incase some portion of path contains whitespace. - my_dir_list="$my_directory_path:$my_dir_list" - - # If the last portion added has no slash in it, the list is done - case $my_directory_path in */*) ;; *) break ;; esac - - # ...otherwise throw away the child directory and loop - my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` - done - my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` - - save_mkdir_p_IFS="$IFS"; IFS=':' - for my_dir in $my_dir_list; do - IFS="$save_mkdir_p_IFS" - # mkdir can fail with a `File exist' error if two processes - # try to create one of the directories concurrently. Don't - # stop in that case! - $MKDIR "$my_dir" 2>/dev/null || : - done - IFS="$save_mkdir_p_IFS" - - # Bail out if we (or some other process) failed to create a directory. - test -d "$my_directory_path" || \ - func_fatal_error "Failed to create \`$1'" - fi -} - - -# func_mktempdir [string] -# Make a temporary directory that won't clash with other running -# libtool processes, and avoids race conditions if possible. If -# given, STRING is the basename for that directory. -func_mktempdir () -{ - my_template="${TMPDIR-/tmp}/${1-$progname}" - - if test "$opt_dry_run" = ":"; then - # Return a directory name, but don't create it in dry-run mode - my_tmpdir="${my_template}-$$" - else - - # If mktemp works, use that first and foremost - my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` - - if test ! -d "$my_tmpdir"; then - # Failing that, at least try and use $RANDOM to avoid a race - my_tmpdir="${my_template}-${RANDOM-0}$$" - - save_mktempdir_umask=`umask` - umask 0077 - $MKDIR "$my_tmpdir" - umask $save_mktempdir_umask - fi - - # If we're not in dry-run mode, bomb out on failure - test -d "$my_tmpdir" || \ - func_fatal_error "cannot create temporary directory \`$my_tmpdir'" - fi - - $ECHO "$my_tmpdir" -} - - -# func_quote_for_eval arg -# Aesthetically quote ARG to be evaled later. -# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT -# is double-quoted, suitable for a subsequent eval, whereas -# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters -# which are still active within double quotes backslashified. -func_quote_for_eval () -{ - case $1 in - *[\\\`\"\$]*) - func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; - *) - func_quote_for_eval_unquoted_result="$1" ;; - esac - - case $func_quote_for_eval_unquoted_result in - # Double-quote args containing shell metacharacters to delay - # word splitting, command substitution and and variable - # expansion for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" - ;; - *) - func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" - esac -} - - -# func_quote_for_expand arg -# Aesthetically quote ARG to be evaled later; same as above, -# but do not quote variable references. -func_quote_for_expand () -{ - case $1 in - *[\\\`\"]*) - my_arg=`$ECHO "$1" | $SED \ - -e "$double_quote_subst" -e "$sed_double_backslash"` ;; - *) - my_arg="$1" ;; - esac - - case $my_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting and command substitution for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - my_arg="\"$my_arg\"" - ;; - esac - - func_quote_for_expand_result="$my_arg" -} - - -# func_show_eval cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. -func_show_eval () -{ - my_cmd="$1" - my_fail_exp="${2-:}" - - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - if ${opt_dry_run-false}; then :; else - eval "$my_cmd" - my_status=$? - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi -} - - -# func_show_eval_locale cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. Use the saved locale for evaluation. -func_show_eval_locale () -{ - my_cmd="$1" - my_fail_exp="${2-:}" - - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - if ${opt_dry_run-false}; then :; else - eval "$lt_user_locale - $my_cmd" - my_status=$? - eval "$lt_safe_locale" - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi -} - -# func_tr_sh -# Turn $1 into a string suitable for a shell variable name. -# Result is stored in $func_tr_sh_result. All characters -# not in the set a-zA-Z0-9_ are replaced with '_'. Further, -# if $1 begins with a digit, a '_' is prepended as well. -func_tr_sh () -{ - case $1 in - [0-9]* | *[!a-zA-Z0-9_]*) - func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` - ;; - * ) - func_tr_sh_result=$1 - ;; - esac -} - - -# func_version -# Echo version message to standard output and exit. -func_version () -{ - $opt_debug - - $SED -n '/(C)/!b go - :more - /\./!{ - N - s/\n# / / - b more - } - :go - /^# '$PROGRAM' (GNU /,/# warranty; / { - s/^# // - s/^# *$// - s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ - p - }' < "$progpath" - exit $? -} - -# func_usage -# Echo short help message to standard output and exit. -func_usage () -{ - $opt_debug - - $SED -n '/^# Usage:/,/^# *.*--help/ { - s/^# // - s/^# *$// - s/\$progname/'$progname'/ - p - }' < "$progpath" - echo - $ECHO "run \`$progname --help | more' for full usage" - exit $? -} - -# func_help [NOEXIT] -# Echo long help message to standard output and exit, -# unless 'noexit' is passed as argument. -func_help () -{ - $opt_debug - - $SED -n '/^# Usage:/,/# Report bugs to/ { - :print - s/^# // - s/^# *$// - s*\$progname*'$progname'* - s*\$host*'"$host"'* - s*\$SHELL*'"$SHELL"'* - s*\$LTCC*'"$LTCC"'* - s*\$LTCFLAGS*'"$LTCFLAGS"'* - s*\$LD*'"$LD"'* - s/\$with_gnu_ld/'"$with_gnu_ld"'/ - s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ - s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ - p - d - } - /^# .* home page:/b print - /^# General help using/b print - ' < "$progpath" - ret=$? - if test -z "$1"; then - exit $ret - fi -} - -# func_missing_arg argname -# Echo program name prefixed message to standard error and set global -# exit_cmd. -func_missing_arg () -{ - $opt_debug - - func_error "missing argument for $1." - exit_cmd=exit -} - - -# func_split_short_opt shortopt -# Set func_split_short_opt_name and func_split_short_opt_arg shell -# variables after splitting SHORTOPT after the 2nd character. -func_split_short_opt () -{ - my_sed_short_opt='1s/^\(..\).*$/\1/;q' - my_sed_short_rest='1s/^..\(.*\)$/\1/;q' - - func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` - func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` -} # func_split_short_opt may be replaced by extended shell implementation - - -# func_split_long_opt longopt -# Set func_split_long_opt_name and func_split_long_opt_arg shell -# variables after splitting LONGOPT at the `=' sign. -func_split_long_opt () -{ - my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' - my_sed_long_arg='1s/^--[^=]*=//' - - func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` - func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` -} # func_split_long_opt may be replaced by extended shell implementation - -exit_cmd=: - - - - - -magic="%%%MAGIC variable%%%" -magic_exe="%%%MAGIC EXE variable%%%" - -# Global variables. -nonopt= -preserve_args= -lo2o="s/\\.lo\$/.${objext}/" -o2lo="s/\\.${objext}\$/.lo/" -extracted_archives= -extracted_serial=0 - -# If this variable is set in any of the actions, the command in it -# will be execed at the end. This prevents here-documents from being -# left over by shells. -exec_cmd= - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "${1}=\$${1}\${2}" -} # func_append may be replaced by extended shell implementation - -# func_append_quoted var value -# Quote VALUE and append to the end of shell variable VAR, separated -# by a space. -func_append_quoted () -{ - func_quote_for_eval "${2}" - eval "${1}=\$${1}\\ \$func_quote_for_eval_result" -} # func_append_quoted may be replaced by extended shell implementation - - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=`expr "${@}"` -} # func_arith may be replaced by extended shell implementation - - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` -} # func_len may be replaced by extended shell implementation - - -# func_lo2o object -func_lo2o () -{ - func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` -} # func_lo2o may be replaced by extended shell implementation - - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` -} # func_xform may be replaced by extended shell implementation - - -# func_fatal_configuration arg... -# Echo program name prefixed message to standard error, followed by -# a configuration failure hint, and exit. -func_fatal_configuration () -{ - func_error ${1+"$@"} - func_error "See the $PACKAGE documentation for more information." - func_fatal_error "Fatal configuration error." -} - - -# func_config -# Display the configuration for all the tags in this script. -func_config () -{ - re_begincf='^# ### BEGIN LIBTOOL' - re_endcf='^# ### END LIBTOOL' - - # Default configuration. - $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" - - # Now print the configurations for the tags. - for tagname in $taglist; do - $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" - done - - exit $? -} - -# func_features -# Display the features supported by this script. -func_features () -{ - echo "host: $host" - if test "$build_libtool_libs" = yes; then - echo "enable shared libraries" - else - echo "disable shared libraries" - fi - if test "$build_old_libs" = yes; then - echo "enable static libraries" - else - echo "disable static libraries" - fi - - exit $? -} - -# func_enable_tag tagname -# Verify that TAGNAME is valid, and either flag an error and exit, or -# enable the TAGNAME tag. We also add TAGNAME to the global $taglist -# variable here. -func_enable_tag () -{ - # Global variable: - tagname="$1" - - re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" - re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" - sed_extractcf="/$re_begincf/,/$re_endcf/p" - - # Validate tagname. - case $tagname in - *[!-_A-Za-z0-9,/]*) - func_fatal_error "invalid tag name: $tagname" - ;; - esac - - # Don't test for the "default" C tag, as we know it's - # there but not specially marked. - case $tagname in - CC) ;; - *) - if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then - taglist="$taglist $tagname" - - # Evaluate the configuration. Be careful to quote the path - # and the sed script, to avoid splitting on whitespace, but - # also don't use non-portable quotes within backquotes within - # quotes we have to do it in 2 steps: - extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` - eval "$extractedcf" - else - func_error "ignoring unknown tag $tagname" - fi - ;; - esac -} - -# func_check_version_match -# Ensure that we are using m4 macros, and libtool script from the same -# release of libtool. -func_check_version_match () -{ - if test "$package_revision" != "$macro_revision"; then - if test "$VERSION" != "$macro_version"; then - if test -z "$macro_version"; then - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from an older release. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - fi - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, -$progname: but the definition of this LT_INIT comes from revision $macro_revision. -$progname: You should recreate aclocal.m4 with macros from revision $package_revision -$progname: of $PACKAGE $VERSION and run autoconf again. -_LT_EOF - fi - - exit $EXIT_MISMATCH - fi -} - - -# Shorthand for --mode=foo, only valid as the first argument -case $1 in -clean|clea|cle|cl) - shift; set dummy --mode clean ${1+"$@"}; shift - ;; -compile|compil|compi|comp|com|co|c) - shift; set dummy --mode compile ${1+"$@"}; shift - ;; -execute|execut|execu|exec|exe|ex|e) - shift; set dummy --mode execute ${1+"$@"}; shift - ;; -finish|finis|fini|fin|fi|f) - shift; set dummy --mode finish ${1+"$@"}; shift - ;; -install|instal|insta|inst|ins|in|i) - shift; set dummy --mode install ${1+"$@"}; shift - ;; -link|lin|li|l) - shift; set dummy --mode link ${1+"$@"}; shift - ;; -uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) - shift; set dummy --mode uninstall ${1+"$@"}; shift - ;; -esac - - - -# Option defaults: -opt_debug=: -opt_dry_run=false -opt_config=false -opt_preserve_dup_deps=false -opt_features=false -opt_finish=false -opt_help=false -opt_help_all=false -opt_silent=: -opt_verbose=: -opt_silent=false -opt_verbose=false - - -# Parse options once, thoroughly. This comes as soon as possible in the -# script to make things like `--version' happen as quickly as we can. -{ - # this just eases exit handling - while test $# -gt 0; do - opt="$1" - shift - case $opt in - --debug|-x) opt_debug='set -x' - func_echo "enabling shell trace mode" - $opt_debug - ;; - --dry-run|--dryrun|-n) - opt_dry_run=: - ;; - --config) - opt_config=: -func_config - ;; - --dlopen|-dlopen) - optarg="$1" - opt_dlopen="${opt_dlopen+$opt_dlopen -}$optarg" - shift - ;; - --preserve-dup-deps) - opt_preserve_dup_deps=: - ;; - --features) - opt_features=: -func_features - ;; - --finish) - opt_finish=: -set dummy --mode finish ${1+"$@"}; shift - ;; - --help) - opt_help=: - ;; - --help-all) - opt_help_all=: -opt_help=': help-all' - ;; - --mode) - test $# = 0 && func_missing_arg $opt && break - optarg="$1" - opt_mode="$optarg" -case $optarg in - # Valid mode arguments: - clean|compile|execute|finish|install|link|relink|uninstall) ;; - - # Catch anything else as an error - *) func_error "invalid argument for $opt" - exit_cmd=exit - break - ;; -esac - shift - ;; - --no-silent|--no-quiet) - opt_silent=false -func_append preserve_args " $opt" - ;; - --no-verbose) - opt_verbose=false -func_append preserve_args " $opt" - ;; - --silent|--quiet) - opt_silent=: -func_append preserve_args " $opt" - opt_verbose=false - ;; - --verbose|-v) - opt_verbose=: -func_append preserve_args " $opt" -opt_silent=false - ;; - --tag) - test $# = 0 && func_missing_arg $opt && break - optarg="$1" - opt_tag="$optarg" -func_append preserve_args " $opt $optarg" -func_enable_tag "$optarg" - shift - ;; - - -\?|-h) func_usage ;; - --help) func_help ;; - --version) func_version ;; - - # Separate optargs to long options: - --*=*) - func_split_long_opt "$opt" - set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} - shift - ;; - - # Separate non-argument short options: - -\?*|-h*|-n*|-v*) - func_split_short_opt "$opt" - set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} - shift - ;; - - --) break ;; - -*) func_fatal_help "unrecognized option \`$opt'" ;; - *) set dummy "$opt" ${1+"$@"}; shift; break ;; - esac - done - - # Validate options: - - # save first non-option argument - if test "$#" -gt 0; then - nonopt="$opt" - shift - fi - - # preserve --debug - test "$opt_debug" = : || func_append preserve_args " --debug" - - case $host in - *cygwin* | *mingw* | *pw32* | *cegcc*) - # don't eliminate duplications in $postdeps and $predeps - opt_duplicate_compiler_generated_deps=: - ;; - *) - opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps - ;; - esac - - $opt_help || { - # Sanity checks first: - func_check_version_match - - if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then - func_fatal_configuration "not configured to build any kind of library" - fi - - # Darwin sucks - eval std_shrext=\"$shrext_cmds\" - - # Only execute mode is allowed to have -dlopen flags. - if test -n "$opt_dlopen" && test "$opt_mode" != execute; then - func_error "unrecognized option \`-dlopen'" - $ECHO "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Change the help message to a mode-specific one. - generic_help="$help" - help="Try \`$progname --help --mode=$opt_mode' for more information." - } - - - # Bail if the options were screwed - $exit_cmd $EXIT_FAILURE -} - - - - -## ----------- ## -## Main. ## -## ----------- ## - -# func_lalib_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_lalib_p () -{ - test -f "$1" && - $SED -e 4q "$1" 2>/dev/null \ - | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 -} - -# func_lalib_unsafe_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. -# This function implements the same check as func_lalib_p without -# resorting to external programs. To this end, it redirects stdin and -# closes it afterwards, without saving the original file descriptor. -# As a safety measure, use it only where a negative result would be -# fatal anyway. Works if `file' does not exist. -func_lalib_unsafe_p () -{ - lalib_p=no - if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then - for lalib_p_l in 1 2 3 4 - do - read lalib_p_line - case "$lalib_p_line" in - \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; - esac - done - exec 0<&5 5<&- - fi - test "$lalib_p" = yes -} - -# func_ltwrapper_script_p file -# True iff FILE is a libtool wrapper script -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_script_p () -{ - func_lalib_p "$1" -} - -# func_ltwrapper_executable_p file -# True iff FILE is a libtool wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_executable_p () -{ - func_ltwrapper_exec_suffix= - case $1 in - *.exe) ;; - *) func_ltwrapper_exec_suffix=.exe ;; - esac - $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 -} - -# func_ltwrapper_scriptname file -# Assumes file is an ltwrapper_executable -# uses $file to determine the appropriate filename for a -# temporary ltwrapper_script. -func_ltwrapper_scriptname () -{ - func_dirname_and_basename "$1" "" "." - func_stripname '' '.exe' "$func_basename_result" - func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" -} - -# func_ltwrapper_p file -# True iff FILE is a libtool wrapper script or wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_p () -{ - func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" -} - - -# func_execute_cmds commands fail_cmd -# Execute tilde-delimited COMMANDS. -# If FAIL_CMD is given, eval that upon failure. -# FAIL_CMD may read-access the current command in variable CMD! -func_execute_cmds () -{ - $opt_debug - save_ifs=$IFS; IFS='~' - for cmd in $1; do - IFS=$save_ifs - eval cmd=\"$cmd\" - func_show_eval "$cmd" "${2-:}" - done - IFS=$save_ifs -} - - -# func_source file -# Source FILE, adding directory component if necessary. -# Note that it is not necessary on cygwin/mingw to append a dot to -# FILE even if both FILE and FILE.exe exist: automatic-append-.exe -# behavior happens only for exec(3), not for open(2)! Also, sourcing -# `FILE.' does not work on cygwin managed mounts. -func_source () -{ - $opt_debug - case $1 in - */* | *\\*) . "$1" ;; - *) . "./$1" ;; - esac -} - - -# func_resolve_sysroot PATH -# Replace a leading = in PATH with a sysroot. Store the result into -# func_resolve_sysroot_result -func_resolve_sysroot () -{ - func_resolve_sysroot_result=$1 - case $func_resolve_sysroot_result in - =*) - func_stripname '=' '' "$func_resolve_sysroot_result" - func_resolve_sysroot_result=$lt_sysroot$func_stripname_result - ;; - esac -} - -# func_replace_sysroot PATH -# If PATH begins with the sysroot, replace it with = and -# store the result into func_replace_sysroot_result. -func_replace_sysroot () -{ - case "$lt_sysroot:$1" in - ?*:"$lt_sysroot"*) - func_stripname "$lt_sysroot" '' "$1" - func_replace_sysroot_result="=$func_stripname_result" - ;; - *) - # Including no sysroot. - func_replace_sysroot_result=$1 - ;; - esac -} - -# func_infer_tag arg -# Infer tagged configuration to use if any are available and -# if one wasn't chosen via the "--tag" command line option. -# Only attempt this if the compiler in the base compile -# command doesn't match the default compiler. -# arg is usually of the form 'gcc ...' -func_infer_tag () -{ - $opt_debug - if test -n "$available_tags" && test -z "$tagname"; then - CC_quoted= - for arg in $CC; do - func_append_quoted CC_quoted "$arg" - done - CC_expanded=`func_echo_all $CC` - CC_quoted_expanded=`func_echo_all $CC_quoted` - case $@ in - # Blanks in the command may have been stripped by the calling shell, - # but not from the CC environment variable when configure was run. - " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ - " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; - # Blanks at the start of $base_compile will cause this to fail - # if we don't check for them as well. - *) - for z in $available_tags; do - if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" - CC_quoted= - for arg in $CC; do - # Double-quote args containing other shell metacharacters. - func_append_quoted CC_quoted "$arg" - done - CC_expanded=`func_echo_all $CC` - CC_quoted_expanded=`func_echo_all $CC_quoted` - case "$@ " in - " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ - " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) - # The compiler in the base compile command matches - # the one in the tagged configuration. - # Assume this is the tagged configuration we want. - tagname=$z - break - ;; - esac - fi - done - # If $tagname still isn't set, then no tagged configuration - # was found and let the user know that the "--tag" command - # line option must be used. - if test -z "$tagname"; then - func_echo "unable to infer tagged configuration" - func_fatal_error "specify a tag with \`--tag'" -# else -# func_verbose "using $tagname tagged configuration" - fi - ;; - esac - fi -} - - - -# func_write_libtool_object output_name pic_name nonpic_name -# Create a libtool object file (analogous to a ".la" file), -# but don't create it if we're doing a dry run. -func_write_libtool_object () -{ - write_libobj=${1} - if test "$build_libtool_libs" = yes; then - write_lobj=\'${2}\' - else - write_lobj=none - fi - - if test "$build_old_libs" = yes; then - write_oldobj=\'${3}\' - else - write_oldobj=none - fi - - $opt_dry_run || { - cat >${write_libobj}T </dev/null` - if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then - func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | - $SED -e "$lt_sed_naive_backslashify"` - else - func_convert_core_file_wine_to_w32_result= - fi - fi -} -# end: func_convert_core_file_wine_to_w32 - - -# func_convert_core_path_wine_to_w32 ARG -# Helper function used by path conversion functions when $build is *nix, and -# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly -# configured wine environment available, with the winepath program in $build's -# $PATH. Assumes ARG has no leading or trailing path separator characters. -# -# ARG is path to be converted from $build format to win32. -# Result is available in $func_convert_core_path_wine_to_w32_result. -# Unconvertible file (directory) names in ARG are skipped; if no directory names -# are convertible, then the result may be empty. -func_convert_core_path_wine_to_w32 () -{ - $opt_debug - # unfortunately, winepath doesn't convert paths, only file names - func_convert_core_path_wine_to_w32_result="" - if test -n "$1"; then - oldIFS=$IFS - IFS=: - for func_convert_core_path_wine_to_w32_f in $1; do - IFS=$oldIFS - func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" - if test -n "$func_convert_core_file_wine_to_w32_result" ; then - if test -z "$func_convert_core_path_wine_to_w32_result"; then - func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" - else - func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" - fi - fi - done - IFS=$oldIFS - fi -} -# end: func_convert_core_path_wine_to_w32 - - -# func_cygpath ARGS... -# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when -# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) -# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or -# (2), returns the Cygwin file name or path in func_cygpath_result (input -# file name or path is assumed to be in w32 format, as previously converted -# from $build's *nix or MSYS format). In case (3), returns the w32 file name -# or path in func_cygpath_result (input file name or path is assumed to be in -# Cygwin format). Returns an empty string on error. -# -# ARGS are passed to cygpath, with the last one being the file name or path to -# be converted. -# -# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH -# environment variable; do not put it in $PATH. -func_cygpath () -{ - $opt_debug - if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then - func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` - if test "$?" -ne 0; then - # on failure, ensure result is empty - func_cygpath_result= - fi - else - func_cygpath_result= - func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" - fi -} -#end: func_cygpath - - -# func_convert_core_msys_to_w32 ARG -# Convert file name or path ARG from MSYS format to w32 format. Return -# result in func_convert_core_msys_to_w32_result. -func_convert_core_msys_to_w32 () -{ - $opt_debug - # awkward: cmd appends spaces to result - func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | - $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` -} -#end: func_convert_core_msys_to_w32 - - -# func_convert_file_check ARG1 ARG2 -# Verify that ARG1 (a file name in $build format) was converted to $host -# format in ARG2. Otherwise, emit an error message, but continue (resetting -# func_to_host_file_result to ARG1). -func_convert_file_check () -{ - $opt_debug - if test -z "$2" && test -n "$1" ; then - func_error "Could not determine host file name corresponding to" - func_error " \`$1'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback: - func_to_host_file_result="$1" - fi -} -# end func_convert_file_check - - -# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH -# Verify that FROM_PATH (a path in $build format) was converted to $host -# format in TO_PATH. Otherwise, emit an error message, but continue, resetting -# func_to_host_file_result to a simplistic fallback value (see below). -func_convert_path_check () -{ - $opt_debug - if test -z "$4" && test -n "$3"; then - func_error "Could not determine the host path corresponding to" - func_error " \`$3'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback. This is a deliberately simplistic "conversion" and - # should not be "improved". See libtool.info. - if test "x$1" != "x$2"; then - lt_replace_pathsep_chars="s|$1|$2|g" - func_to_host_path_result=`echo "$3" | - $SED -e "$lt_replace_pathsep_chars"` - else - func_to_host_path_result="$3" - fi - fi -} -# end func_convert_path_check - - -# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG -# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT -# and appending REPL if ORIG matches BACKPAT. -func_convert_path_front_back_pathsep () -{ - $opt_debug - case $4 in - $1 ) func_to_host_path_result="$3$func_to_host_path_result" - ;; - esac - case $4 in - $2 ) func_append func_to_host_path_result "$3" - ;; - esac -} -# end func_convert_path_front_back_pathsep - - -################################################## -# $build to $host FILE NAME CONVERSION FUNCTIONS # -################################################## -# invoked via `$to_host_file_cmd ARG' -# -# In each case, ARG is the path to be converted from $build to $host format. -# Result will be available in $func_to_host_file_result. - - -# func_to_host_file ARG -# Converts the file name ARG from $build format to $host format. Return result -# in func_to_host_file_result. -func_to_host_file () -{ - $opt_debug - $to_host_file_cmd "$1" -} -# end func_to_host_file - - -# func_to_tool_file ARG LAZY -# converts the file name ARG from $build format to toolchain format. Return -# result in func_to_tool_file_result. If the conversion in use is listed -# in (the comma separated) LAZY, no conversion takes place. -func_to_tool_file () -{ - $opt_debug - case ,$2, in - *,"$to_tool_file_cmd",*) - func_to_tool_file_result=$1 - ;; - *) - $to_tool_file_cmd "$1" - func_to_tool_file_result=$func_to_host_file_result - ;; - esac -} -# end func_to_tool_file - - -# func_convert_file_noop ARG -# Copy ARG to func_to_host_file_result. -func_convert_file_noop () -{ - func_to_host_file_result="$1" -} -# end func_convert_file_noop - - -# func_convert_file_msys_to_w32 ARG -# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic -# conversion to w32 is not available inside the cwrapper. Returns result in -# func_to_host_file_result. -func_convert_file_msys_to_w32 () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - func_convert_core_msys_to_w32 "$1" - func_to_host_file_result="$func_convert_core_msys_to_w32_result" - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_msys_to_w32 - - -# func_convert_file_cygwin_to_w32 ARG -# Convert file name ARG from Cygwin to w32 format. Returns result in -# func_to_host_file_result. -func_convert_file_cygwin_to_w32 () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - # because $build is cygwin, we call "the" cygpath in $PATH; no need to use - # LT_CYGPATH in this case. - func_to_host_file_result=`cygpath -m "$1"` - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_cygwin_to_w32 - - -# func_convert_file_nix_to_w32 ARG -# Convert file name ARG from *nix to w32 format. Requires a wine environment -# and a working winepath. Returns result in func_to_host_file_result. -func_convert_file_nix_to_w32 () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - func_convert_core_file_wine_to_w32 "$1" - func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_nix_to_w32 - - -# func_convert_file_msys_to_cygwin ARG -# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. -# Returns result in func_to_host_file_result. -func_convert_file_msys_to_cygwin () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - func_convert_core_msys_to_w32 "$1" - func_cygpath -u "$func_convert_core_msys_to_w32_result" - func_to_host_file_result="$func_cygpath_result" - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_msys_to_cygwin - - -# func_convert_file_nix_to_cygwin ARG -# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed -# in a wine environment, working winepath, and LT_CYGPATH set. Returns result -# in func_to_host_file_result. -func_convert_file_nix_to_cygwin () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. - func_convert_core_file_wine_to_w32 "$1" - func_cygpath -u "$func_convert_core_file_wine_to_w32_result" - func_to_host_file_result="$func_cygpath_result" - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_nix_to_cygwin - - -############################################# -# $build to $host PATH CONVERSION FUNCTIONS # -############################################# -# invoked via `$to_host_path_cmd ARG' -# -# In each case, ARG is the path to be converted from $build to $host format. -# The result will be available in $func_to_host_path_result. -# -# Path separators are also converted from $build format to $host format. If -# ARG begins or ends with a path separator character, it is preserved (but -# converted to $host format) on output. -# -# All path conversion functions are named using the following convention: -# file name conversion function : func_convert_file_X_to_Y () -# path conversion function : func_convert_path_X_to_Y () -# where, for any given $build/$host combination the 'X_to_Y' value is the -# same. If conversion functions are added for new $build/$host combinations, -# the two new functions must follow this pattern, or func_init_to_host_path_cmd -# will break. - - -# func_init_to_host_path_cmd -# Ensures that function "pointer" variable $to_host_path_cmd is set to the -# appropriate value, based on the value of $to_host_file_cmd. -to_host_path_cmd= -func_init_to_host_path_cmd () -{ - $opt_debug - if test -z "$to_host_path_cmd"; then - func_stripname 'func_convert_file_' '' "$to_host_file_cmd" - to_host_path_cmd="func_convert_path_${func_stripname_result}" - fi -} - - -# func_to_host_path ARG -# Converts the path ARG from $build format to $host format. Return result -# in func_to_host_path_result. -func_to_host_path () -{ - $opt_debug - func_init_to_host_path_cmd - $to_host_path_cmd "$1" -} -# end func_to_host_path - - -# func_convert_path_noop ARG -# Copy ARG to func_to_host_path_result. -func_convert_path_noop () -{ - func_to_host_path_result="$1" -} -# end func_convert_path_noop - - -# func_convert_path_msys_to_w32 ARG -# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic -# conversion to w32 is not available inside the cwrapper. Returns result in -# func_to_host_path_result. -func_convert_path_msys_to_w32 () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # Remove leading and trailing path separator characters from ARG. MSYS - # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; - # and winepath ignores them completely. - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result="$func_convert_core_msys_to_w32_result" - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_msys_to_w32 - - -# func_convert_path_cygwin_to_w32 ARG -# Convert path ARG from Cygwin to w32 format. Returns result in -# func_to_host_file_result. -func_convert_path_cygwin_to_w32 () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_cygwin_to_w32 - - -# func_convert_path_nix_to_w32 ARG -# Convert path ARG from *nix to w32 format. Requires a wine environment and -# a working winepath. Returns result in func_to_host_file_result. -func_convert_path_nix_to_w32 () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_nix_to_w32 - - -# func_convert_path_msys_to_cygwin ARG -# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. -# Returns result in func_to_host_file_result. -func_convert_path_msys_to_cygwin () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" - func_cygpath -u -p "$func_convert_core_msys_to_w32_result" - func_to_host_path_result="$func_cygpath_result" - func_convert_path_check : : \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" : "$1" - fi -} -# end func_convert_path_msys_to_cygwin - - -# func_convert_path_nix_to_cygwin ARG -# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a -# a wine environment, working winepath, and LT_CYGPATH set. Returns result in -# func_to_host_file_result. -func_convert_path_nix_to_cygwin () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # Remove leading and trailing path separator characters from - # ARG. msys behavior is inconsistent here, cygpath turns them - # into '.;' and ';.', and winepath ignores them completely. - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" - func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" - func_to_host_path_result="$func_cygpath_result" - func_convert_path_check : : \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" : "$1" - fi -} -# end func_convert_path_nix_to_cygwin - - -# func_mode_compile arg... -func_mode_compile () -{ - $opt_debug - # Get the compilation command and the source file. - base_compile= - srcfile="$nonopt" # always keep a non-empty value in "srcfile" - suppress_opt=yes - suppress_output= - arg_mode=normal - libobj= - later= - pie_flag= - - for arg - do - case $arg_mode in - arg ) - # do not "continue". Instead, add this to base_compile - lastarg="$arg" - arg_mode=normal - ;; - - target ) - libobj="$arg" - arg_mode=normal - continue - ;; - - normal ) - # Accept any command-line options. - case $arg in - -o) - test -n "$libobj" && \ - func_fatal_error "you cannot specify \`-o' more than once" - arg_mode=target - continue - ;; - - -pie | -fpie | -fPIE) - func_append pie_flag " $arg" - continue - ;; - - -shared | -static | -prefer-pic | -prefer-non-pic) - func_append later " $arg" - continue - ;; - - -no-suppress) - suppress_opt=no - continue - ;; - - -Xcompiler) - arg_mode=arg # the next one goes into the "base_compile" arg list - continue # The current "srcfile" will either be retained or - ;; # replaced later. I would guess that would be a bug. - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - lastarg= - save_ifs="$IFS"; IFS=',' - for arg in $args; do - IFS="$save_ifs" - func_append_quoted lastarg "$arg" - done - IFS="$save_ifs" - func_stripname ' ' '' "$lastarg" - lastarg=$func_stripname_result - - # Add the arguments to base_compile. - func_append base_compile " $lastarg" - continue - ;; - - *) - # Accept the current argument as the source file. - # The previous "srcfile" becomes the current argument. - # - lastarg="$srcfile" - srcfile="$arg" - ;; - esac # case $arg - ;; - esac # case $arg_mode - - # Aesthetically quote the previous argument. - func_append_quoted base_compile "$lastarg" - done # for arg - - case $arg_mode in - arg) - func_fatal_error "you must specify an argument for -Xcompile" - ;; - target) - func_fatal_error "you must specify a target with \`-o'" - ;; - *) - # Get the name of the library object. - test -z "$libobj" && { - func_basename "$srcfile" - libobj="$func_basename_result" - } - ;; - esac - - # Recognize several different file suffixes. - # If the user specifies -o file.o, it is replaced with file.lo - case $libobj in - *.[cCFSifmso] | \ - *.ada | *.adb | *.ads | *.asm | \ - *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ - *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup) - func_xform "$libobj" - libobj=$func_xform_result - ;; - esac - - case $libobj in - *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; - *) - func_fatal_error "cannot determine name of library object from \`$libobj'" - ;; - esac - - func_infer_tag $base_compile - - for arg in $later; do - case $arg in - -shared) - test "$build_libtool_libs" != yes && \ - func_fatal_configuration "can not build a shared library" - build_old_libs=no - continue - ;; - - -static) - build_libtool_libs=no - build_old_libs=yes - continue - ;; - - -prefer-pic) - pic_mode=yes - continue - ;; - - -prefer-non-pic) - pic_mode=no - continue - ;; - esac - done - - func_quote_for_eval "$libobj" - test "X$libobj" != "X$func_quote_for_eval_result" \ - && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ - && func_warning "libobj name \`$libobj' may not contain shell special characters." - func_dirname_and_basename "$obj" "/" "" - objname="$func_basename_result" - xdir="$func_dirname_result" - lobj=${xdir}$objdir/$objname - - test -z "$base_compile" && \ - func_fatal_help "you must specify a compilation command" - - # Delete any leftover library objects. - if test "$build_old_libs" = yes; then - removelist="$obj $lobj $libobj ${libobj}T" - else - removelist="$lobj $libobj ${libobj}T" - fi - - # On Cygwin there's no "real" PIC flag so we must build both object types - case $host_os in - cygwin* | mingw* | pw32* | os2* | cegcc*) - pic_mode=default - ;; - esac - if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then - # non-PIC code in shared libraries is not supported - pic_mode=default - fi - - # Calculate the filename of the output object if compiler does - # not support -o with -c - if test "$compiler_c_o" = no; then - output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} - lockfile="$output_obj.lock" - else - output_obj= - need_locks=no - lockfile= - fi - - # Lock this critical section if it is needed - # We use this script file to make the link, it avoids creating a new file - if test "$need_locks" = yes; then - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - elif test "$need_locks" = warn; then - if test -f "$lockfile"; then - $ECHO "\ -*** ERROR, $lockfile exists and contains: -`cat $lockfile 2>/dev/null` - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - func_append removelist " $output_obj" - $ECHO "$srcfile" > "$lockfile" - fi - - $opt_dry_run || $RM $removelist - func_append removelist " $lockfile" - trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 - - func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 - srcfile=$func_to_tool_file_result - func_quote_for_eval "$srcfile" - qsrcfile=$func_quote_for_eval_result - - # Only build a PIC object if we are building libtool libraries. - if test "$build_libtool_libs" = yes; then - # Without this assignment, base_compile gets emptied. - fbsd_hideous_sh_bug=$base_compile - - if test "$pic_mode" != no; then - command="$base_compile $qsrcfile $pic_flag" - else - # Don't build PIC code - command="$base_compile $qsrcfile" - fi - - func_mkdir_p "$xdir$objdir" - - if test -z "$output_obj"; then - # Place PIC objects in $objdir - func_append command " -o $lobj" - fi - - func_show_eval_locale "$command" \ - 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' - - if test "$need_locks" = warn && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed, then go on to compile the next one - if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then - func_show_eval '$MV "$output_obj" "$lobj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - - # Allow error messages only from the first compilation. - if test "$suppress_opt" = yes; then - suppress_output=' >/dev/null 2>&1' - fi - fi - - # Only build a position-dependent object if we build old libraries. - if test "$build_old_libs" = yes; then - if test "$pic_mode" != yes; then - # Don't build PIC code - command="$base_compile $qsrcfile$pie_flag" - else - command="$base_compile $qsrcfile $pic_flag" - fi - if test "$compiler_c_o" = yes; then - func_append command " -o $obj" - fi - - # Suppress compiler output if we already did a PIC compilation. - func_append command "$suppress_output" - func_show_eval_locale "$command" \ - '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' - - if test "$need_locks" = warn && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed - if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then - func_show_eval '$MV "$output_obj" "$obj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - fi - - $opt_dry_run || { - func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" - - # Unlock the critical section if it was locked - if test "$need_locks" != no; then - removelist=$lockfile - $RM "$lockfile" - fi - } - - exit $EXIT_SUCCESS -} - -$opt_help || { - test "$opt_mode" = compile && func_mode_compile ${1+"$@"} -} - -func_mode_help () -{ - # We need to display help for each of the modes. - case $opt_mode in - "") - # Generic help is extracted from the usage comments - # at the start of this file. - func_help - ;; - - clean) - $ECHO \ -"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... - -Remove files from the build directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, object or program, all the files associated -with it are deleted. Otherwise, only FILE itself is deleted using RM." - ;; - - compile) - $ECHO \ -"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE - -Compile a source file into a libtool library object. - -This mode accepts the following additional options: - - -o OUTPUT-FILE set the output file name to OUTPUT-FILE - -no-suppress do not suppress compiler output for multiple passes - -prefer-pic try to build PIC objects only - -prefer-non-pic try to build non-PIC objects only - -shared do not build a \`.o' file suitable for static linking - -static only build a \`.o' file suitable for static linking - -Wc,FLAG pass FLAG directly to the compiler - -COMPILE-COMMAND is a command to be used in creating a \`standard' object file -from the given SOURCEFILE. - -The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix \`.c' with the -library object suffix, \`.lo'." - ;; - - execute) - $ECHO \ -"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... - -Automatically set library path, then run a program. - -This mode accepts the following additional options: - - -dlopen FILE add the directory containing FILE to the library path - -This mode sets the library path environment variable according to \`-dlopen' -flags. - -If any of the ARGS are libtool executable wrappers, then they are translated -into their corresponding uninstalled binary, and any of their required library -directories are added to the library path. - -Then, COMMAND is executed, with ARGS as arguments." - ;; - - finish) - $ECHO \ -"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... - -Complete the installation of libtool libraries. - -Each LIBDIR is a directory that contains libtool libraries. - -The commands that this mode executes may require superuser privileges. Use -the \`--dry-run' option if you just want to see what would be executed." - ;; - - install) - $ECHO \ -"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... - -Install executables or libraries. - -INSTALL-COMMAND is the installation command. The first component should be -either the \`install' or \`cp' program. - -The following components of INSTALL-COMMAND are treated specially: - - -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation - -The rest of the components are interpreted as arguments to that command (only -BSD-compatible install options are recognized)." - ;; - - link) - $ECHO \ -"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... - -Link object files or libraries together to form another library, or to -create an executable program. - -LINK-COMMAND is a command using the C compiler that you would use to create -a program from several object files. - -The following components of LINK-COMMAND are treated specially: - - -all-static do not do any dynamic linking at all - -avoid-version do not add a version suffix if possible - -bindir BINDIR specify path to binaries directory (for systems where - libraries must be found in the PATH setting at runtime) - -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime - -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols - -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) - -export-symbols SYMFILE - try to export only the symbols listed in SYMFILE - -export-symbols-regex REGEX - try to export only the symbols matching REGEX - -LLIBDIR search LIBDIR for required installed libraries - -lNAME OUTPUT-FILE requires the installed library libNAME - -module build a library that can dlopened - -no-fast-install disable the fast-install mode - -no-install link a not-installable executable - -no-undefined declare that a library does not refer to external symbols - -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -objectlist FILE Use a list of object files found in FILE to specify objects - -precious-files-regex REGEX - don't remove output files matching REGEX - -release RELEASE specify package release information - -rpath LIBDIR the created library will eventually be installed in LIBDIR - -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries - -shared only do dynamic linking of libtool libraries - -shrext SUFFIX override the standard shared library file extension - -static do not do any dynamic linking of uninstalled libtool libraries - -static-libtool-libs - do not do any dynamic linking of libtool libraries - -version-info CURRENT[:REVISION[:AGE]] - specify library version info [each variable defaults to 0] - -weak LIBNAME declare that the target provides the LIBNAME interface - -Wc,FLAG - -Xcompiler FLAG pass linker-specific FLAG directly to the compiler - -Wl,FLAG - -Xlinker FLAG pass linker-specific FLAG directly to the linker - -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) - -All other options (arguments beginning with \`-') are ignored. - -Every other argument is treated as a filename. Files ending in \`.la' are -treated as uninstalled libtool libraries, other files are standard or library -object files. - -If the OUTPUT-FILE ends in \`.la', then a libtool library is created, -only library objects (\`.lo' files) may be specified, and \`-rpath' is -required, except when creating a convenience library. - -If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created -using \`ar' and \`ranlib', or on Windows using \`lib'. - -If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file -is created, otherwise an executable program is created." - ;; - - uninstall) - $ECHO \ -"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... - -Remove libraries from an installation directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, all the files associated with it are deleted. -Otherwise, only FILE itself is deleted using RM." - ;; - - *) - func_fatal_help "invalid operation mode \`$opt_mode'" - ;; - esac - - echo - $ECHO "Try \`$progname --help' for more information about other modes." -} - -# Now that we've collected a possible --mode arg, show help if necessary -if $opt_help; then - if test "$opt_help" = :; then - func_mode_help - else - { - func_help noexit - for opt_mode in compile link execute install finish uninstall clean; do - func_mode_help - done - } | sed -n '1p; 2,$s/^Usage:/ or: /p' - { - func_help noexit - for opt_mode in compile link execute install finish uninstall clean; do - echo - func_mode_help - done - } | - sed '1d - /^When reporting/,/^Report/{ - H - d - } - $x - /information about other modes/d - /more detailed .*MODE/d - s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' - fi - exit $? -fi - - -# func_mode_execute arg... -func_mode_execute () -{ - $opt_debug - # The first argument is the command name. - cmd="$nonopt" - test -z "$cmd" && \ - func_fatal_help "you must specify a COMMAND" - - # Handle -dlopen flags immediately. - for file in $opt_dlopen; do - test -f "$file" \ - || func_fatal_help "\`$file' is not a file" - - dir= - case $file in - *.la) - func_resolve_sysroot "$file" - file=$func_resolve_sysroot_result - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "\`$lib' is not a valid libtool archive" - - # Read the libtool library. - dlname= - library_names= - func_source "$file" - - # Skip this library if it cannot be dlopened. - if test -z "$dlname"; then - # Warn if it was a shared library. - test -n "$library_names" && \ - func_warning "\`$file' was not linked with \`-export-dynamic'" - continue - fi - - func_dirname "$file" "" "." - dir="$func_dirname_result" - - if test -f "$dir/$objdir/$dlname"; then - func_append dir "/$objdir" - else - if test ! -f "$dir/$dlname"; then - func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" - fi - fi - ;; - - *.lo) - # Just add the directory containing the .lo file. - func_dirname "$file" "" "." - dir="$func_dirname_result" - ;; - - *) - func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" - continue - ;; - esac - - # Get the absolute pathname. - absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir="$absdir" - - # Now add the directory to shlibpath_var. - if eval "test -z \"\$$shlibpath_var\""; then - eval "$shlibpath_var=\"\$dir\"" - else - eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" - fi - done - - # This variable tells wrapper scripts just to set shlibpath_var - # rather than running their programs. - libtool_execute_magic="$magic" - - # Check if any of the arguments is a wrapper script. - args= - for file - do - case $file in - -* | *.la | *.lo ) ;; - *) - # Do a test to see if this is really a libtool program. - if func_ltwrapper_script_p "$file"; then - func_source "$file" - # Transform arg to wrapped name. - file="$progdir/$program" - elif func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - func_source "$func_ltwrapper_scriptname_result" - # Transform arg to wrapped name. - file="$progdir/$program" - fi - ;; - esac - # Quote arguments (to preserve shell metacharacters). - func_append_quoted args "$file" - done - - if test "X$opt_dry_run" = Xfalse; then - if test -n "$shlibpath_var"; then - # Export the shlibpath_var. - eval "export $shlibpath_var" - fi - - # Restore saved environment variables - for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES - do - eval "if test \"\${save_$lt_var+set}\" = set; then - $lt_var=\$save_$lt_var; export $lt_var - else - $lt_unset $lt_var - fi" - done - - # Now prepare to actually exec the command. - exec_cmd="\$cmd$args" - else - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" - echo "export $shlibpath_var" - fi - $ECHO "$cmd$args" - exit $EXIT_SUCCESS - fi -} - -test "$opt_mode" = execute && func_mode_execute ${1+"$@"} - - -# func_mode_finish arg... -func_mode_finish () -{ - $opt_debug - libs= - libdirs= - admincmds= - - for opt in "$nonopt" ${1+"$@"} - do - if test -d "$opt"; then - func_append libdirs " $opt" - - elif test -f "$opt"; then - if func_lalib_unsafe_p "$opt"; then - func_append libs " $opt" - else - func_warning "\`$opt' is not a valid libtool archive" - fi - - else - func_fatal_error "invalid argument \`$opt'" - fi - done - - if test -n "$libs"; then - if test -n "$lt_sysroot"; then - sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` - sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" - else - sysroot_cmd= - fi - - # Remove sysroot references - if $opt_dry_run; then - for lib in $libs; do - echo "removing references to $lt_sysroot and \`=' prefixes from $lib" - done - else - tmpdir=`func_mktempdir` - for lib in $libs; do - sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ - > $tmpdir/tmp-la - mv -f $tmpdir/tmp-la $lib - done - ${RM}r "$tmpdir" - fi - fi - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - for libdir in $libdirs; do - if test -n "$finish_cmds"; then - # Do each command in the finish commands. - func_execute_cmds "$finish_cmds" 'admincmds="$admincmds -'"$cmd"'"' - fi - if test -n "$finish_eval"; then - # Do the single finish_eval. - eval cmds=\"$finish_eval\" - $opt_dry_run || eval "$cmds" || func_append admincmds " - $cmds" - fi - done - fi - - # Exit here if they wanted silent mode. - $opt_silent && exit $EXIT_SUCCESS - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - echo "----------------------------------------------------------------------" - echo "Libraries have been installed in:" - for libdir in $libdirs; do - $ECHO " $libdir" - done - echo - echo "If you ever happen to want to link against installed libraries" - echo "in a given directory, LIBDIR, you must either use libtool, and" - echo "specify the full pathname of the library, or use the \`-LLIBDIR'" - echo "flag during linking and do at least one of the following:" - if test -n "$shlibpath_var"; then - echo " - add LIBDIR to the \`$shlibpath_var' environment variable" - echo " during execution" - fi - if test -n "$runpath_var"; then - echo " - add LIBDIR to the \`$runpath_var' environment variable" - echo " during linking" - fi - if test -n "$hardcode_libdir_flag_spec"; then - libdir=LIBDIR - eval flag=\"$hardcode_libdir_flag_spec\" - - $ECHO " - use the \`$flag' linker flag" - fi - if test -n "$admincmds"; then - $ECHO " - have your system administrator run these commands:$admincmds" - fi - if test -f /etc/ld.so.conf; then - echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" - fi - echo - - echo "See any operating system documentation about shared libraries for" - case $host in - solaris2.[6789]|solaris2.1[0-9]) - echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" - echo "pages." - ;; - *) - echo "more information, such as the ld(1) and ld.so(8) manual pages." - ;; - esac - echo "----------------------------------------------------------------------" - fi - exit $EXIT_SUCCESS -} - -test "$opt_mode" = finish && func_mode_finish ${1+"$@"} - - -# func_mode_install arg... -func_mode_install () -{ - $opt_debug - # There may be an optional sh(1) argument at the beginning of - # install_prog (especially on Windows NT). - if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || - # Allow the use of GNU shtool's install command. - case $nonopt in *shtool*) :;; *) false;; esac; then - # Aesthetically quote it. - func_quote_for_eval "$nonopt" - install_prog="$func_quote_for_eval_result " - arg=$1 - shift - else - install_prog= - arg=$nonopt - fi - - # The real first argument should be the name of the installation program. - # Aesthetically quote it. - func_quote_for_eval "$arg" - func_append install_prog "$func_quote_for_eval_result" - install_shared_prog=$install_prog - case " $install_prog " in - *[\\\ /]cp\ *) install_cp=: ;; - *) install_cp=false ;; - esac - - # We need to accept at least all the BSD install flags. - dest= - files= - opts= - prev= - install_type= - isdir=no - stripme= - no_mode=: - for arg - do - arg2= - if test -n "$dest"; then - func_append files " $dest" - dest=$arg - continue - fi - - case $arg in - -d) isdir=yes ;; - -f) - if $install_cp; then :; else - prev=$arg - fi - ;; - -g | -m | -o) - prev=$arg - ;; - -s) - stripme=" -s" - continue - ;; - -*) - ;; - *) - # If the previous option needed an argument, then skip it. - if test -n "$prev"; then - if test "x$prev" = x-m && test -n "$install_override_mode"; then - arg2=$install_override_mode - no_mode=false - fi - prev= - else - dest=$arg - continue - fi - ;; - esac - - # Aesthetically quote the argument. - func_quote_for_eval "$arg" - func_append install_prog " $func_quote_for_eval_result" - if test -n "$arg2"; then - func_quote_for_eval "$arg2" - fi - func_append install_shared_prog " $func_quote_for_eval_result" - done - - test -z "$install_prog" && \ - func_fatal_help "you must specify an install program" - - test -n "$prev" && \ - func_fatal_help "the \`$prev' option requires an argument" - - if test -n "$install_override_mode" && $no_mode; then - if $install_cp; then :; else - func_quote_for_eval "$install_override_mode" - func_append install_shared_prog " -m $func_quote_for_eval_result" - fi - fi - - if test -z "$files"; then - if test -z "$dest"; then - func_fatal_help "no file or destination specified" - else - func_fatal_help "you must specify a destination" - fi - fi - - # Strip any trailing slash from the destination. - func_stripname '' '/' "$dest" - dest=$func_stripname_result - - # Check to see that the destination is a directory. - test -d "$dest" && isdir=yes - if test "$isdir" = yes; then - destdir="$dest" - destname= - else - func_dirname_and_basename "$dest" "" "." - destdir="$func_dirname_result" - destname="$func_basename_result" - - # Not a directory, so check to see that there is only one file specified. - set dummy $files; shift - test "$#" -gt 1 && \ - func_fatal_help "\`$dest' is not a directory" - fi - case $destdir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - for file in $files; do - case $file in - *.lo) ;; - *) - func_fatal_help "\`$destdir' must be an absolute directory name" - ;; - esac - done - ;; - esac - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - staticlibs= - future_libdirs= - current_libdirs= - for file in $files; do - - # Do each installation. - case $file in - *.$libext) - # Do the static libraries later. - func_append staticlibs " $file" - ;; - - *.la) - func_resolve_sysroot "$file" - file=$func_resolve_sysroot_result - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "\`$file' is not a valid libtool archive" - - library_names= - old_library= - relink_command= - func_source "$file" - - # Add the libdir to current_libdirs if it is the destination. - if test "X$destdir" = "X$libdir"; then - case "$current_libdirs " in - *" $libdir "*) ;; - *) func_append current_libdirs " $libdir" ;; - esac - else - # Note the libdir as a future libdir. - case "$future_libdirs " in - *" $libdir "*) ;; - *) func_append future_libdirs " $libdir" ;; - esac - fi - - func_dirname "$file" "/" "" - dir="$func_dirname_result" - func_append dir "$objdir" - - if test -n "$relink_command"; then - # Determine the prefix the user has applied to our future dir. - inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` - - # Don't allow the user to place us outside of our expected - # location b/c this prevents finding dependent libraries that - # are installed to the same prefix. - # At present, this check doesn't affect windows .dll's that - # are installed into $libdir/../bin (currently, that works fine) - # but it's something to keep an eye on. - test "$inst_prefix_dir" = "$destdir" && \ - func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" - - if test -n "$inst_prefix_dir"; then - # Stick the inst_prefix_dir data into the link command. - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` - else - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` - fi - - func_warning "relinking \`$file'" - func_show_eval "$relink_command" \ - 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' - fi - - # See the names of the shared library. - set dummy $library_names; shift - if test -n "$1"; then - realname="$1" - shift - - srcname="$realname" - test -n "$relink_command" && srcname="$realname"T - - # Install the shared library and build the symlinks. - func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ - 'exit $?' - tstripme="$stripme" - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - case $realname in - *.dll.a) - tstripme="" - ;; - esac - ;; - esac - if test -n "$tstripme" && test -n "$striplib"; then - func_show_eval "$striplib $destdir/$realname" 'exit $?' - fi - - if test "$#" -gt 0; then - # Delete the old symlinks, and create new ones. - # Try `ln -sf' first, because the `ln' binary might depend on - # the symlink we replace! Solaris /bin/ln does not understand -f, - # so we also need to try rm && ln -s. - for linkname - do - test "$linkname" != "$realname" \ - && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" - done - fi - - # Do each command in the postinstall commands. - lib="$destdir/$realname" - func_execute_cmds "$postinstall_cmds" 'exit $?' - fi - - # Install the pseudo-library for information purposes. - func_basename "$file" - name="$func_basename_result" - instname="$dir/$name"i - func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' - - # Maybe install the static library, too. - test -n "$old_library" && func_append staticlibs " $dir/$old_library" - ;; - - *.lo) - # Install (i.e. copy) a libtool object. - - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" - fi - - # Deduce the name of the destination old-style object file. - case $destfile in - *.lo) - func_lo2o "$destfile" - staticdest=$func_lo2o_result - ;; - *.$objext) - staticdest="$destfile" - destfile= - ;; - *) - func_fatal_help "cannot copy a libtool object to \`$destfile'" - ;; - esac - - # Install the libtool object if requested. - test -n "$destfile" && \ - func_show_eval "$install_prog $file $destfile" 'exit $?' - - # Install the old object if enabled. - if test "$build_old_libs" = yes; then - # Deduce the name of the old-style object file. - func_lo2o "$file" - staticobj=$func_lo2o_result - func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' - fi - exit $EXIT_SUCCESS - ;; - - *) - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" - fi - - # If the file is missing, and there is a .exe on the end, strip it - # because it is most likely a libtool script we actually want to - # install - stripped_ext="" - case $file in - *.exe) - if test ! -f "$file"; then - func_stripname '' '.exe' "$file" - file=$func_stripname_result - stripped_ext=".exe" - fi - ;; - esac - - # Do a test to see if this is really a libtool program. - case $host in - *cygwin* | *mingw*) - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - wrapper=$func_ltwrapper_scriptname_result - else - func_stripname '' '.exe' "$file" - wrapper=$func_stripname_result - fi - ;; - *) - wrapper=$file - ;; - esac - if func_ltwrapper_script_p "$wrapper"; then - notinst_deplibs= - relink_command= - - func_source "$wrapper" - - # Check the variables that should have been set. - test -z "$generated_by_libtool_version" && \ - func_fatal_error "invalid libtool wrapper script \`$wrapper'" - - finalize=yes - for lib in $notinst_deplibs; do - # Check to see that each library is installed. - libdir= - if test -f "$lib"; then - func_source "$lib" - fi - libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test - if test -n "$libdir" && test ! -f "$libfile"; then - func_warning "\`$lib' has not been installed in \`$libdir'" - finalize=no - fi - done - - relink_command= - func_source "$wrapper" - - outputname= - if test "$fast_install" = no && test -n "$relink_command"; then - $opt_dry_run || { - if test "$finalize" = yes; then - tmpdir=`func_mktempdir` - func_basename "$file$stripped_ext" - file="$func_basename_result" - outputname="$tmpdir/$file" - # Replace the output file specification. - relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` - - $opt_silent || { - func_quote_for_expand "$relink_command" - eval "func_echo $func_quote_for_expand_result" - } - if eval "$relink_command"; then : - else - func_error "error: relink \`$file' with the above command before installing it" - $opt_dry_run || ${RM}r "$tmpdir" - continue - fi - file="$outputname" - else - func_warning "cannot relink \`$file'" - fi - } - else - # Install the binary that we compiled earlier. - file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` - fi - fi - - # remove .exe since cygwin /usr/bin/install will append another - # one anyway - case $install_prog,$host in - */usr/bin/install*,*cygwin*) - case $file:$destfile in - *.exe:*.exe) - # this is ok - ;; - *.exe:*) - destfile=$destfile.exe - ;; - *:*.exe) - func_stripname '' '.exe' "$destfile" - destfile=$func_stripname_result - ;; - esac - ;; - esac - func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' - $opt_dry_run || if test -n "$outputname"; then - ${RM}r "$tmpdir" - fi - ;; - esac - done - - for file in $staticlibs; do - func_basename "$file" - name="$func_basename_result" - - # Set up the ranlib parameters. - oldlib="$destdir/$name" - - func_show_eval "$install_prog \$file \$oldlib" 'exit $?' - - if test -n "$stripme" && test -n "$old_striplib"; then - func_show_eval "$old_striplib $oldlib" 'exit $?' - fi - - # Do each command in the postinstall commands. - func_execute_cmds "$old_postinstall_cmds" 'exit $?' - done - - test -n "$future_libdirs" && \ - func_warning "remember to run \`$progname --finish$future_libdirs'" - - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - $opt_dry_run && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' - else - exit $EXIT_SUCCESS - fi -} - -test "$opt_mode" = install && func_mode_install ${1+"$@"} - - -# func_generate_dlsyms outputname originator pic_p -# Extract symbols from dlprefiles and create ${outputname}S.o with -# a dlpreopen symbol table. -func_generate_dlsyms () -{ - $opt_debug - my_outputname="$1" - my_originator="$2" - my_pic_p="${3-no}" - my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` - my_dlsyms= - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - if test -n "$NM" && test -n "$global_symbol_pipe"; then - my_dlsyms="${my_outputname}S.c" - else - func_error "not configured to extract global symbols from dlpreopened files" - fi - fi - - if test -n "$my_dlsyms"; then - case $my_dlsyms in - "") ;; - *.c) - # Discover the nlist of each of the dlfiles. - nlist="$output_objdir/${my_outputname}.nm" - - func_show_eval "$RM $nlist ${nlist}S ${nlist}T" - - # Parse the name list into a source file. - func_verbose "creating $output_objdir/$my_dlsyms" - - $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ -/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ -/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ - -#ifdef __cplusplus -extern \"C\" { -#endif - -#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) -#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" -#endif - -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT_DLSYM_CONST -#elif defined(__osf__) -/* This system does not cope well with relocations in const data. */ -# define LT_DLSYM_CONST -#else -# define LT_DLSYM_CONST const -#endif - -/* External symbol declarations for the compiler. */\ -" - - if test "$dlself" = yes; then - func_verbose "generating symbol list for \`$output'" - - $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" - - # Add our own program objects to the symbol list. - progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` - for progfile in $progfiles; do - func_to_tool_file "$progfile" func_convert_file_msys_to_w32 - func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" - $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" - done - - if test -n "$exclude_expsyms"; then - $opt_dry_run || { - eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - if test -n "$export_symbols_regex"; then - $opt_dry_run || { - eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - export_symbols="$output_objdir/$outputname.exp" - $opt_dry_run || { - $RM $export_symbols - eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' - ;; - esac - } - else - $opt_dry_run || { - eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' - eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' - ;; - esac - } - fi - fi - - for dlprefile in $dlprefiles; do - func_verbose "extracting global C symbols from \`$dlprefile'" - func_basename "$dlprefile" - name="$func_basename_result" - case $host in - *cygwin* | *mingw* | *cegcc* ) - # if an import library, we need to obtain dlname - if func_win32_import_lib_p "$dlprefile"; then - func_tr_sh "$dlprefile" - eval "curr_lafile=\$libfile_$func_tr_sh_result" - dlprefile_dlbasename="" - if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then - # Use subshell, to avoid clobbering current variable values - dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` - if test -n "$dlprefile_dlname" ; then - func_basename "$dlprefile_dlname" - dlprefile_dlbasename="$func_basename_result" - else - # no lafile. user explicitly requested -dlpreopen . - $sharedlib_from_linklib_cmd "$dlprefile" - dlprefile_dlbasename=$sharedlib_from_linklib_result - fi - fi - $opt_dry_run || { - if test -n "$dlprefile_dlbasename" ; then - eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' - else - func_warning "Could not compute DLL name from $name" - eval '$ECHO ": $name " >> "$nlist"' - fi - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | - $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" - } - else # not an import lib - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } - fi - ;; - *) - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } - ;; - esac - done - - $opt_dry_run || { - # Make sure we have at least an empty file. - test -f "$nlist" || : > "$nlist" - - if test -n "$exclude_expsyms"; then - $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T - $MV "$nlist"T "$nlist" - fi - - # Try sorting and uniquifying the output. - if $GREP -v "^: " < "$nlist" | - if sort -k 3 /dev/null 2>&1; then - sort -k 3 - else - sort +2 - fi | - uniq > "$nlist"S; then - : - else - $GREP -v "^: " < "$nlist" > "$nlist"S - fi - - if test -f "$nlist"S; then - eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' - else - echo '/* NONE */' >> "$output_objdir/$my_dlsyms" - fi - - echo >> "$output_objdir/$my_dlsyms" "\ - -/* The mapping between symbol names and symbols. */ -typedef struct { - const char *name; - void *address; -} lt_dlsymlist; -extern LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[]; -LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[] = -{\ - { \"$my_originator\", (void *) 0 }," - - case $need_lib_prefix in - no) - eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - *) - eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - esac - echo >> "$output_objdir/$my_dlsyms" "\ - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt_${my_prefix}_LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif\ -" - } # !$opt_dry_run - - pic_flag_for_symtable= - case "$compile_command " in - *" -static "*) ;; - *) - case $host in - # compiling the symbol table file with pic_flag works around - # a FreeBSD bug that causes programs to crash when -lm is - # linked before any other PIC object. But we must not use - # pic_flag when linking with -static. The problem exists in - # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) - pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; - *-*-hpux*) - pic_flag_for_symtable=" $pic_flag" ;; - *) - if test "X$my_pic_p" != Xno; then - pic_flag_for_symtable=" $pic_flag" - fi - ;; - esac - ;; - esac - symtab_cflags= - for arg in $LTCFLAGS; do - case $arg in - -pie | -fpie | -fPIE) ;; - *) func_append symtab_cflags " $arg" ;; - esac - done - - # Now compile the dynamic symbol file. - func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' - - # Clean up the generated files. - func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' - - # Transform the symbol file into the correct name. - symfileobj="$output_objdir/${my_outputname}S.$objext" - case $host in - *cygwin* | *mingw* | *cegcc* ) - if test -f "$output_objdir/$my_outputname.def"; then - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - else - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - fi - ;; - *) - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - ;; - esac - ;; - *) - func_fatal_error "unknown suffix for \`$my_dlsyms'" - ;; - esac - else - # We keep going just in case the user didn't refer to - # lt_preloaded_symbols. The linker will fail if global_symbol_pipe - # really was required. - - # Nullify the symbol file. - compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` - fi -} - -# func_win32_libid arg -# return the library type of file 'arg' -# -# Need a lot of goo to handle *both* DLLs and import libs -# Has to be a shell function in order to 'eat' the argument -# that is supplied when $file_magic_command is called. -# Despite the name, also deal with 64 bit binaries. -func_win32_libid () -{ - $opt_debug - win32_libid_type="unknown" - win32_fileres=`file -L $1 2>/dev/null` - case $win32_fileres in - *ar\ archive\ import\ library*) # definitely import - win32_libid_type="x86 archive import" - ;; - *ar\ archive*) # could be an import, or static - # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. - if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | - $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then - func_to_tool_file "$1" func_convert_file_msys_to_w32 - win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | - $SED -n -e ' - 1,100{ - / I /{ - s,.*,import, - p - q - } - }'` - case $win32_nmres in - import*) win32_libid_type="x86 archive import";; - *) win32_libid_type="x86 archive static";; - esac - fi - ;; - *DLL*) - win32_libid_type="x86 DLL" - ;; - *executable*) # but shell scripts are "executable" too... - case $win32_fileres in - *MS\ Windows\ PE\ Intel*) - win32_libid_type="x86 DLL" - ;; - esac - ;; - esac - $ECHO "$win32_libid_type" -} - -# func_cygming_dll_for_implib ARG -# -# Platform-specific function to extract the -# name of the DLL associated with the specified -# import library ARG. -# Invoked by eval'ing the libtool variable -# $sharedlib_from_linklib_cmd -# Result is available in the variable -# $sharedlib_from_linklib_result -func_cygming_dll_for_implib () -{ - $opt_debug - sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` -} - -# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs -# -# The is the core of a fallback implementation of a -# platform-specific function to extract the name of the -# DLL associated with the specified import library LIBNAME. -# -# SECTION_NAME is either .idata$6 or .idata$7, depending -# on the platform and compiler that created the implib. -# -# Echos the name of the DLL associated with the -# specified import library. -func_cygming_dll_for_implib_fallback_core () -{ - $opt_debug - match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` - $OBJDUMP -s --section "$1" "$2" 2>/dev/null | - $SED '/^Contents of section '"$match_literal"':/{ - # Place marker at beginning of archive member dllname section - s/.*/====MARK====/ - p - d - } - # These lines can sometimes be longer than 43 characters, but - # are always uninteresting - /:[ ]*file format pe[i]\{,1\}-/d - /^In archive [^:]*:/d - # Ensure marker is printed - /^====MARK====/p - # Remove all lines with less than 43 characters - /^.\{43\}/!d - # From remaining lines, remove first 43 characters - s/^.\{43\}//' | - $SED -n ' - # Join marker and all lines until next marker into a single line - /^====MARK====/ b para - H - $ b para - b - :para - x - s/\n//g - # Remove the marker - s/^====MARK====// - # Remove trailing dots and whitespace - s/[\. \t]*$// - # Print - /./p' | - # we now have a list, one entry per line, of the stringified - # contents of the appropriate section of all members of the - # archive which possess that section. Heuristic: eliminate - # all those which have a first or second character that is - # a '.' (that is, objdump's representation of an unprintable - # character.) This should work for all archives with less than - # 0x302f exports -- but will fail for DLLs whose name actually - # begins with a literal '.' or a single character followed by - # a '.'. - # - # Of those that remain, print the first one. - $SED -e '/^\./d;/^.\./d;q' -} - -# func_cygming_gnu_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is a GNU/binutils-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_gnu_implib_p () -{ - $opt_debug - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` - test -n "$func_cygming_gnu_implib_tmp" -} - -# func_cygming_ms_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is an MS-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_ms_implib_p () -{ - $opt_debug - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` - test -n "$func_cygming_ms_implib_tmp" -} - -# func_cygming_dll_for_implib_fallback ARG -# Platform-specific function to extract the -# name of the DLL associated with the specified -# import library ARG. -# -# This fallback implementation is for use when $DLLTOOL -# does not support the --identify-strict option. -# Invoked by eval'ing the libtool variable -# $sharedlib_from_linklib_cmd -# Result is available in the variable -# $sharedlib_from_linklib_result -func_cygming_dll_for_implib_fallback () -{ - $opt_debug - if func_cygming_gnu_implib_p "$1" ; then - # binutils import library - sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` - elif func_cygming_ms_implib_p "$1" ; then - # ms-generated import library - sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` - else - # unknown - sharedlib_from_linklib_result="" - fi -} - - -# func_extract_an_archive dir oldlib -func_extract_an_archive () -{ - $opt_debug - f_ex_an_ar_dir="$1"; shift - f_ex_an_ar_oldlib="$1" - if test "$lock_old_archive_extraction" = yes; then - lockfile=$f_ex_an_ar_oldlib.lock - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - fi - func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ - 'stat=$?; rm -f "$lockfile"; exit $stat' - if test "$lock_old_archive_extraction" = yes; then - $opt_dry_run || rm -f "$lockfile" - fi - if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then - : - else - func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" - fi -} - - -# func_extract_archives gentop oldlib ... -func_extract_archives () -{ - $opt_debug - my_gentop="$1"; shift - my_oldlibs=${1+"$@"} - my_oldobjs="" - my_xlib="" - my_xabs="" - my_xdir="" - - for my_xlib in $my_oldlibs; do - # Extract the objects. - case $my_xlib in - [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; - *) my_xabs=`pwd`"/$my_xlib" ;; - esac - func_basename "$my_xlib" - my_xlib="$func_basename_result" - my_xlib_u=$my_xlib - while :; do - case " $extracted_archives " in - *" $my_xlib_u "*) - func_arith $extracted_serial + 1 - extracted_serial=$func_arith_result - my_xlib_u=lt$extracted_serial-$my_xlib ;; - *) break ;; - esac - done - extracted_archives="$extracted_archives $my_xlib_u" - my_xdir="$my_gentop/$my_xlib_u" - - func_mkdir_p "$my_xdir" - - case $host in - *-darwin*) - func_verbose "Extracting $my_xabs" - # Do not bother doing anything if just a dry run - $opt_dry_run || { - darwin_orig_dir=`pwd` - cd $my_xdir || exit $? - darwin_archive=$my_xabs - darwin_curdir=`pwd` - darwin_base_archive=`basename "$darwin_archive"` - darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` - if test -n "$darwin_arches"; then - darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` - darwin_arch= - func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" - for darwin_arch in $darwin_arches ; do - func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" - $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" - cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" - func_extract_an_archive "`pwd`" "${darwin_base_archive}" - cd "$darwin_curdir" - $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" - done # $darwin_arches - ## Okay now we've a bunch of thin objects, gotta fatten them up :) - darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` - darwin_file= - darwin_files= - for darwin_file in $darwin_filelist; do - darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` - $LIPO -create -output "$darwin_file" $darwin_files - done # $darwin_filelist - $RM -rf unfat-$$ - cd "$darwin_orig_dir" - else - cd $darwin_orig_dir - func_extract_an_archive "$my_xdir" "$my_xabs" - fi # $darwin_arches - } # !$opt_dry_run - ;; - *) - func_extract_an_archive "$my_xdir" "$my_xabs" - ;; - esac - my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` - done - - func_extract_archives_result="$my_oldobjs" -} - - -# func_emit_wrapper [arg=no] -# -# Emit a libtool wrapper script on stdout. -# Don't directly open a file because we may want to -# incorporate the script contents within a cygwin/mingw -# wrapper executable. Must ONLY be called from within -# func_mode_link because it depends on a number of variables -# set therein. -# -# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR -# variable will take. If 'yes', then the emitted script -# will assume that the directory in which it is stored is -# the $objdir directory. This is a cygwin/mingw-specific -# behavior. -func_emit_wrapper () -{ - func_emit_wrapper_arg1=${1-no} - - $ECHO "\ -#! $SHELL - -# $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -# -# The $output program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='$sed_quote_subst' - -# Be Bourne compatible -if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -relink_command=\"$relink_command\" - -# This environment variable determines our operation mode. -if test \"\$libtool_install_magic\" = \"$magic\"; then - # install mode needs the following variables: - generated_by_libtool_version='$macro_version' - notinst_deplibs='$notinst_deplibs' -else - # When we are sourced in execute mode, \$file and \$ECHO are already set. - if test \"\$libtool_execute_magic\" != \"$magic\"; then - file=\"\$0\"" - - qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` - $ECHO "\ - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - ECHO=\"$qECHO\" - fi - -# Very basic option parsing. These options are (a) specific to -# the libtool wrapper, (b) are identical between the wrapper -# /script/ and the wrapper /executable/ which is used only on -# windows platforms, and (c) all begin with the string "--lt-" -# (application programs are unlikely to have options which match -# this pattern). -# -# There are only two supported options: --lt-debug and -# --lt-dump-script. There is, deliberately, no --lt-help. -# -# The first argument to this parsing function should be the -# script's $0 value, followed by "$@". -lt_option_debug= -func_parse_lt_options () -{ - lt_script_arg0=\$0 - shift - for lt_opt - do - case \"\$lt_opt\" in - --lt-debug) lt_option_debug=1 ;; - --lt-dump-script) - lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` - test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. - lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` - cat \"\$lt_dump_D/\$lt_dump_F\" - exit 0 - ;; - --lt-*) - \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 - exit 1 - ;; - esac - done - - # Print the debug banner immediately: - if test -n \"\$lt_option_debug\"; then - echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 - fi -} - -# Used when --lt-debug. Prints its arguments to stdout -# (redirection is the responsibility of the caller) -func_lt_dump_args () -{ - lt_dump_args_N=1; - for lt_arg - do - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" - lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` - done -} - -# Core function for launching the target application -func_exec_program_core () -{ -" - case $host in - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2* | *-cegcc*) - $ECHO "\ - if test -n \"\$lt_option_debug\"; then - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 - func_lt_dump_args \${1+\"\$@\"} 1>&2 - fi - exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} -" - ;; - - *) - $ECHO "\ - if test -n \"\$lt_option_debug\"; then - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 - func_lt_dump_args \${1+\"\$@\"} 1>&2 - fi - exec \"\$progdir/\$program\" \${1+\"\$@\"} -" - ;; - esac - $ECHO "\ - \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 - exit 1 -} - -# A function to encapsulate launching the target application -# Strips options in the --lt-* namespace from \$@ and -# launches target application with the remaining arguments. -func_exec_program () -{ - for lt_wr_arg - do - case \$lt_wr_arg in - --lt-*) ;; - *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; - esac - shift - done - func_exec_program_core \${1+\"\$@\"} -} - - # Parse options - func_parse_lt_options \"\$0\" \${1+\"\$@\"} - - # Find the directory that this script lives in. - thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` - test \"x\$thisdir\" = \"x\$file\" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. - file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` - while test -n \"\$file\"; do - destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` - - # If there was a directory component, then change thisdir. - if test \"x\$destdir\" != \"x\$file\"; then - case \"\$destdir\" in - [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; - *) thisdir=\"\$thisdir/\$destdir\" ;; - esac - fi - - file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` - done - - # Usually 'no', except on cygwin/mingw when embedded into - # the cwrapper. - WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 - if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then - # special case for '.' - if test \"\$thisdir\" = \".\"; then - thisdir=\`pwd\` - fi - # remove .libs from thisdir - case \"\$thisdir\" in - *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; - $objdir ) thisdir=. ;; - esac - fi - - # Try to get the absolute directory name. - absdir=\`cd \"\$thisdir\" && pwd\` - test -n \"\$absdir\" && thisdir=\"\$absdir\" -" - - if test "$fast_install" = yes; then - $ECHO "\ - program=lt-'$outputname'$exeext - progdir=\"\$thisdir/$objdir\" - - if test ! -f \"\$progdir/\$program\" || - { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ - test \"X\$file\" != \"X\$progdir/\$program\"; }; then - - file=\"\$\$-\$program\" - - if test ! -d \"\$progdir\"; then - $MKDIR \"\$progdir\" - else - $RM \"\$progdir/\$file\" - fi" - - $ECHO "\ - - # relink executable if necessary - if test -n \"\$relink_command\"; then - if relink_command_output=\`eval \$relink_command 2>&1\`; then : - else - $ECHO \"\$relink_command_output\" >&2 - $RM \"\$progdir/\$file\" - exit 1 - fi - fi - - $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || - { $RM \"\$progdir/\$program\"; - $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } - $RM \"\$progdir/\$file\" - fi" - else - $ECHO "\ - program='$outputname' - progdir=\"\$thisdir/$objdir\" -" - fi - - $ECHO "\ - - if test -f \"\$progdir/\$program\"; then" - - # fixup the dll searchpath if we need to. - # - # Fix the DLL searchpath if we need to. Do this before prepending - # to shlibpath, because on Windows, both are PATH and uninstalled - # libraries must come first. - if test -n "$dllsearchpath"; then - $ECHO "\ - # Add the dll search path components to the executable PATH - PATH=$dllsearchpath:\$PATH -" - fi - - # Export our shlibpath_var if we have one. - if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then - $ECHO "\ - # Add our own library path to $shlibpath_var - $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" - - # Some systems cannot cope with colon-terminated $shlibpath_var - # The second colon is a workaround for a bug in BeOS R4 sed - $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` - - export $shlibpath_var -" - fi - - $ECHO "\ - if test \"\$libtool_execute_magic\" != \"$magic\"; then - # Run the actual program with our arguments. - func_exec_program \${1+\"\$@\"} - fi - else - # The program doesn't exist. - \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 - \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 - \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 - exit 1 - fi -fi\ -" -} - - -# func_emit_cwrapperexe_src -# emit the source code for a wrapper executable on stdout -# Must ONLY be called from within func_mode_link because -# it depends on a number of variable set therein. -func_emit_cwrapperexe_src () -{ - cat < -#include -#ifdef _MSC_VER -# include -# include -# include -#else -# include -# include -# ifdef __CYGWIN__ -# include -# endif -#endif -#include -#include -#include -#include -#include -#include -#include -#include - -/* declarations of non-ANSI functions */ -#if defined(__MINGW32__) -# ifdef __STRICT_ANSI__ -int _putenv (const char *); -# endif -#elif defined(__CYGWIN__) -# ifdef __STRICT_ANSI__ -char *realpath (const char *, char *); -int putenv (char *); -int setenv (const char *, const char *, int); -# endif -/* #elif defined (other platforms) ... */ -#endif - -/* portability defines, excluding path handling macros */ -#if defined(_MSC_VER) -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -# define S_IXUSR _S_IEXEC -# ifndef _INTPTR_T_DEFINED -# define _INTPTR_T_DEFINED -# define intptr_t int -# endif -#elif defined(__MINGW32__) -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -#elif defined(__CYGWIN__) -# define HAVE_SETENV -# define FOPEN_WB "wb" -/* #elif defined (other platforms) ... */ -#endif - -#if defined(PATH_MAX) -# define LT_PATHMAX PATH_MAX -#elif defined(MAXPATHLEN) -# define LT_PATHMAX MAXPATHLEN -#else -# define LT_PATHMAX 1024 -#endif - -#ifndef S_IXOTH -# define S_IXOTH 0 -#endif -#ifndef S_IXGRP -# define S_IXGRP 0 -#endif - -/* path handling portability macros */ -#ifndef DIR_SEPARATOR -# define DIR_SEPARATOR '/' -# define PATH_SEPARATOR ':' -#endif - -#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ - defined (__OS2__) -# define HAVE_DOS_BASED_FILE_SYSTEM -# define FOPEN_WB "wb" -# ifndef DIR_SEPARATOR_2 -# define DIR_SEPARATOR_2 '\\' -# endif -# ifndef PATH_SEPARATOR_2 -# define PATH_SEPARATOR_2 ';' -# endif -#endif - -#ifndef DIR_SEPARATOR_2 -# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -#else /* DIR_SEPARATOR_2 */ -# define IS_DIR_SEPARATOR(ch) \ - (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -#endif /* DIR_SEPARATOR_2 */ - -#ifndef PATH_SEPARATOR_2 -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) -#else /* PATH_SEPARATOR_2 */ -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) -#endif /* PATH_SEPARATOR_2 */ - -#ifndef FOPEN_WB -# define FOPEN_WB "w" -#endif -#ifndef _O_BINARY -# define _O_BINARY 0 -#endif - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free ((void *) stale); stale = 0; } \ -} while (0) - -#if defined(LT_DEBUGWRAPPER) -static int lt_debug = 1; -#else -static int lt_debug = 0; -#endif - -const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ - -void *xmalloc (size_t num); -char *xstrdup (const char *string); -const char *base_name (const char *name); -char *find_executable (const char *wrapper); -char *chase_symlinks (const char *pathspec); -int make_executable (const char *path); -int check_executable (const char *path); -char *strendzap (char *str, const char *pat); -void lt_debugprintf (const char *file, int line, const char *fmt, ...); -void lt_fatal (const char *file, int line, const char *message, ...); -static const char *nonnull (const char *s); -static const char *nonempty (const char *s); -void lt_setenv (const char *name, const char *value); -char *lt_extend_str (const char *orig_value, const char *add, int to_end); -void lt_update_exe_path (const char *name, const char *value); -void lt_update_lib_path (const char *name, const char *value); -char **prepare_spawn (char **argv); -void lt_dump_script (FILE *f); -EOF - - cat <= 0) - && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) - return 1; - else - return 0; -} - -int -make_executable (const char *path) -{ - int rval = 0; - struct stat st; - - lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", - nonempty (path)); - if ((!path) || (!*path)) - return 0; - - if (stat (path, &st) >= 0) - { - rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); - } - return rval; -} - -/* Searches for the full path of the wrapper. Returns - newly allocated full path name if found, NULL otherwise - Does not chase symlinks, even on platforms that support them. -*/ -char * -find_executable (const char *wrapper) -{ - int has_slash = 0; - const char *p; - const char *p_next; - /* static buffer for getcwd */ - char tmp[LT_PATHMAX + 1]; - int tmp_len; - char *concat_name; - - lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", - nonempty (wrapper)); - - if ((wrapper == NULL) || (*wrapper == '\0')) - return NULL; - - /* Absolute path? */ -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - else - { -#endif - if (IS_DIR_SEPARATOR (wrapper[0])) - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - } -#endif - - for (p = wrapper; *p; p++) - if (*p == '/') - { - has_slash = 1; - break; - } - if (!has_slash) - { - /* no slashes; search PATH */ - const char *path = getenv ("PATH"); - if (path != NULL) - { - for (p = path; *p; p = p_next) - { - const char *q; - size_t p_len; - for (q = p; *q; q++) - if (IS_PATH_SEPARATOR (*q)) - break; - p_len = q - p; - p_next = (*q == '\0' ? q : q + 1); - if (p_len == 0) - { - /* empty path: current directory */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = - XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - } - else - { - concat_name = - XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, p, p_len); - concat_name[p_len] = '/'; - strcpy (concat_name + p_len + 1, wrapper); - } - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - } - /* not found in PATH; assume curdir */ - } - /* Relative path | not found in path: prepend cwd */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - return NULL; -} - -char * -chase_symlinks (const char *pathspec) -{ -#ifndef S_ISLNK - return xstrdup (pathspec); -#else - char buf[LT_PATHMAX]; - struct stat s; - char *tmp_pathspec = xstrdup (pathspec); - char *p; - int has_symlinks = 0; - while (strlen (tmp_pathspec) && !has_symlinks) - { - lt_debugprintf (__FILE__, __LINE__, - "checking path component for symlinks: %s\n", - tmp_pathspec); - if (lstat (tmp_pathspec, &s) == 0) - { - if (S_ISLNK (s.st_mode) != 0) - { - has_symlinks = 1; - break; - } - - /* search backwards for last DIR_SEPARATOR */ - p = tmp_pathspec + strlen (tmp_pathspec) - 1; - while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - p--; - if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - { - /* no more DIR_SEPARATORS left */ - break; - } - *p = '\0'; - } - else - { - lt_fatal (__FILE__, __LINE__, - "error accessing file \"%s\": %s", - tmp_pathspec, nonnull (strerror (errno))); - } - } - XFREE (tmp_pathspec); - - if (!has_symlinks) - { - return xstrdup (pathspec); - } - - tmp_pathspec = realpath (pathspec, buf); - if (tmp_pathspec == 0) - { - lt_fatal (__FILE__, __LINE__, - "could not follow symlinks for %s", pathspec); - } - return xstrdup (tmp_pathspec); -#endif -} - -char * -strendzap (char *str, const char *pat) -{ - size_t len, patlen; - - assert (str != NULL); - assert (pat != NULL); - - len = strlen (str); - patlen = strlen (pat); - - if (patlen <= len) - { - str += len - patlen; - if (strcmp (str, pat) == 0) - *str = '\0'; - } - return str; -} - -void -lt_debugprintf (const char *file, int line, const char *fmt, ...) -{ - va_list args; - if (lt_debug) - { - (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); - va_start (args, fmt); - (void) vfprintf (stderr, fmt, args); - va_end (args); - } -} - -static void -lt_error_core (int exit_status, const char *file, - int line, const char *mode, - const char *message, va_list ap) -{ - fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); - vfprintf (stderr, message, ap); - fprintf (stderr, ".\n"); - - if (exit_status >= 0) - exit (exit_status); -} - -void -lt_fatal (const char *file, int line, const char *message, ...) -{ - va_list ap; - va_start (ap, message); - lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); - va_end (ap); -} - -static const char * -nonnull (const char *s) -{ - return s ? s : "(null)"; -} - -static const char * -nonempty (const char *s) -{ - return (s && !*s) ? "(empty)" : nonnull (s); -} - -void -lt_setenv (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_setenv) setting '%s' to '%s'\n", - nonnull (name), nonnull (value)); - { -#ifdef HAVE_SETENV - /* always make a copy, for consistency with !HAVE_SETENV */ - char *str = xstrdup (value); - setenv (name, str, 1); -#else - int len = strlen (name) + 1 + strlen (value) + 1; - char *str = XMALLOC (char, len); - sprintf (str, "%s=%s", name, value); - if (putenv (str) != EXIT_SUCCESS) - { - XFREE (str); - } -#endif - } -} - -char * -lt_extend_str (const char *orig_value, const char *add, int to_end) -{ - char *new_value; - if (orig_value && *orig_value) - { - int orig_value_len = strlen (orig_value); - int add_len = strlen (add); - new_value = XMALLOC (char, add_len + orig_value_len + 1); - if (to_end) - { - strcpy (new_value, orig_value); - strcpy (new_value + orig_value_len, add); - } - else - { - strcpy (new_value, add); - strcpy (new_value + add_len, orig_value); - } - } - else - { - new_value = xstrdup (add); - } - return new_value; -} - -void -lt_update_exe_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - /* some systems can't cope with a ':'-terminated path #' */ - int len = strlen (new_value); - while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) - { - new_value[len-1] = '\0'; - } - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -void -lt_update_lib_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -EOF - case $host_os in - mingw*) - cat <<"EOF" - -/* Prepares an argument vector before calling spawn(). - Note that spawn() does not by itself call the command interpreter - (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : - ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - GetVersionEx(&v); - v.dwPlatformId == VER_PLATFORM_WIN32_NT; - }) ? "cmd.exe" : "command.com"). - Instead it simply concatenates the arguments, separated by ' ', and calls - CreateProcess(). We must quote the arguments since Win32 CreateProcess() - interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a - special way: - - Space and tab are interpreted as delimiters. They are not treated as - delimiters if they are surrounded by double quotes: "...". - - Unescaped double quotes are removed from the input. Their only effect is - that within double quotes, space and tab are treated like normal - characters. - - Backslashes not followed by double quotes are not special. - - But 2*n+1 backslashes followed by a double quote become - n backslashes followed by a double quote (n >= 0): - \" -> " - \\\" -> \" - \\\\\" -> \\" - */ -#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -char ** -prepare_spawn (char **argv) -{ - size_t argc; - char **new_argv; - size_t i; - - /* Count number of arguments. */ - for (argc = 0; argv[argc] != NULL; argc++) - ; - - /* Allocate new argument vector. */ - new_argv = XMALLOC (char *, argc + 1); - - /* Put quoted arguments into the new argument vector. */ - for (i = 0; i < argc; i++) - { - const char *string = argv[i]; - - if (string[0] == '\0') - new_argv[i] = xstrdup ("\"\""); - else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) - { - int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); - size_t length; - unsigned int backslashes; - const char *s; - char *quoted_string; - char *p; - - length = 0; - backslashes = 0; - if (quote_around) - length++; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - length += backslashes + 1; - length++; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - length += backslashes + 1; - - quoted_string = XMALLOC (char, length + 1); - - p = quoted_string; - backslashes = 0; - if (quote_around) - *p++ = '"'; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - { - unsigned int j; - for (j = backslashes + 1; j > 0; j--) - *p++ = '\\'; - } - *p++ = c; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - { - unsigned int j; - for (j = backslashes; j > 0; j--) - *p++ = '\\'; - *p++ = '"'; - } - *p = '\0'; - - new_argv[i] = quoted_string; - } - else - new_argv[i] = (char *) string; - } - new_argv[argc] = NULL; - - return new_argv; -} -EOF - ;; - esac - - cat <<"EOF" -void lt_dump_script (FILE* f) -{ -EOF - func_emit_wrapper yes | - $SED -e 's/\([\\"]\)/\\\1/g' \ - -e 's/^/ fputs ("/' -e 's/$/\\n", f);/' - - cat <<"EOF" -} -EOF -} -# end: func_emit_cwrapperexe_src - -# func_win32_import_lib_p ARG -# True if ARG is an import lib, as indicated by $file_magic_cmd -func_win32_import_lib_p () -{ - $opt_debug - case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in - *import*) : ;; - *) false ;; - esac -} - -# func_mode_link arg... -func_mode_link () -{ - $opt_debug - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - # It is impossible to link a dll without this setting, and - # we shouldn't force the makefile maintainer to figure out - # which system we are compiling for in order to pass an extra - # flag for every libtool invocation. - # allow_undefined=no - - # FIXME: Unfortunately, there are problems with the above when trying - # to make a dll which has undefined symbols, in which case not - # even a static library is built. For now, we need to specify - # -no-undefined on the libtool link line when we can be certain - # that all symbols are satisfied, otherwise we get a static library. - allow_undefined=yes - ;; - *) - allow_undefined=yes - ;; - esac - libtool_args=$nonopt - base_compile="$nonopt $@" - compile_command=$nonopt - finalize_command=$nonopt - - compile_rpath= - finalize_rpath= - compile_shlibpath= - finalize_shlibpath= - convenience= - old_convenience= - deplibs= - old_deplibs= - compiler_flags= - linker_flags= - dllsearchpath= - lib_search_path=`pwd` - inst_prefix_dir= - new_inherited_linker_flags= - - avoid_version=no - bindir= - dlfiles= - dlprefiles= - dlself=no - export_dynamic=no - export_symbols= - export_symbols_regex= - generated= - libobjs= - ltlibs= - module=no - no_install=no - objs= - non_pic_objects= - precious_files_regex= - prefer_static_libs=no - preload=no - prev= - prevarg= - release= - rpath= - xrpath= - perm_rpath= - temp_rpath= - thread_safe=no - vinfo= - vinfo_number=no - weak_libs= - single_module="${wl}-single_module" - func_infer_tag $base_compile - - # We need to know -static, to get the right output filenames. - for arg - do - case $arg in - -shared) - test "$build_libtool_libs" != yes && \ - func_fatal_configuration "can not build a shared library" - build_old_libs=no - break - ;; - -all-static | -static | -static-libtool-libs) - case $arg in - -all-static) - if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then - func_warning "complete static linking is impossible in this configuration" - fi - if test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - -static) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=built - ;; - -static-libtool-libs) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - esac - build_libtool_libs=no - build_old_libs=yes - break - ;; - esac - done - - # See if our shared archives depend on static archives. - test -n "$old_archive_from_new_cmds" && build_old_libs=yes - - # Go through the arguments, transforming them on the way. - while test "$#" -gt 0; do - arg="$1" - shift - func_quote_for_eval "$arg" - qarg=$func_quote_for_eval_unquoted_result - func_append libtool_args " $func_quote_for_eval_result" - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - output) - func_append compile_command " @OUTPUT@" - func_append finalize_command " @OUTPUT@" - ;; - esac - - case $prev in - bindir) - bindir="$arg" - prev= - continue - ;; - dlfiles|dlprefiles) - if test "$preload" = no; then - # Add the symbol object into the linking commands. - func_append compile_command " @SYMFILE@" - func_append finalize_command " @SYMFILE@" - preload=yes - fi - case $arg in - *.la | *.lo) ;; # We handle these cases below. - force) - if test "$dlself" = no; then - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - self) - if test "$prev" = dlprefiles; then - dlself=yes - elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then - dlself=yes - else - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - *) - if test "$prev" = dlfiles; then - func_append dlfiles " $arg" - else - func_append dlprefiles " $arg" - fi - prev= - continue - ;; - esac - ;; - expsyms) - export_symbols="$arg" - test -f "$arg" \ - || func_fatal_error "symbol file \`$arg' does not exist" - prev= - continue - ;; - expsyms_regex) - export_symbols_regex="$arg" - prev= - continue - ;; - framework) - case $host in - *-*-darwin*) - case "$deplibs " in - *" $qarg.ltframework "*) ;; - *) func_append deplibs " $qarg.ltframework" # this is fixed later - ;; - esac - ;; - esac - prev= - continue - ;; - inst_prefix) - inst_prefix_dir="$arg" - prev= - continue - ;; - objectlist) - if test -f "$arg"; then - save_arg=$arg - moreargs= - for fil in `cat "$save_arg"` - do -# func_append moreargs " $fil" - arg=$fil - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - func_append dlfiles " $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - func_append dlprefiles " $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "\`$arg' is not a valid libtool object" - fi - fi - done - else - func_fatal_error "link input file \`$arg' does not exist" - fi - arg=$save_arg - prev= - continue - ;; - precious_regex) - precious_files_regex="$arg" - prev= - continue - ;; - release) - release="-$arg" - prev= - continue - ;; - rpath | xrpath) - # We need an absolute path. - case $arg in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - if test "$prev" = rpath; then - case "$rpath " in - *" $arg "*) ;; - *) func_append rpath " $arg" ;; - esac - else - case "$xrpath " in - *" $arg "*) ;; - *) func_append xrpath " $arg" ;; - esac - fi - prev= - continue - ;; - shrext) - shrext_cmds="$arg" - prev= - continue - ;; - weak) - func_append weak_libs " $arg" - prev= - continue - ;; - xcclinker) - func_append linker_flags " $qarg" - func_append compiler_flags " $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xcompiler) - func_append compiler_flags " $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xlinker) - func_append linker_flags " $qarg" - func_append compiler_flags " $wl$qarg" - prev= - func_append compile_command " $wl$qarg" - func_append finalize_command " $wl$qarg" - continue - ;; - *) - eval "$prev=\"\$arg\"" - prev= - continue - ;; - esac - fi # test -n "$prev" - - prevarg="$arg" - - case $arg in - -all-static) - if test -n "$link_static_flag"; then - # See comment for -static flag below, for more details. - func_append compile_command " $link_static_flag" - func_append finalize_command " $link_static_flag" - fi - continue - ;; - - -allow-undefined) - # FIXME: remove this flag sometime in the future. - func_fatal_error "\`-allow-undefined' must not be used because it is the default" - ;; - - -avoid-version) - avoid_version=yes - continue - ;; - - -bindir) - prev=bindir - continue - ;; - - -dlopen) - prev=dlfiles - continue - ;; - - -dlpreopen) - prev=dlprefiles - continue - ;; - - -export-dynamic) - export_dynamic=yes - continue - ;; - - -export-symbols | -export-symbols-regex) - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - func_fatal_error "more than one -exported-symbols argument is not allowed" - fi - if test "X$arg" = "X-export-symbols"; then - prev=expsyms - else - prev=expsyms_regex - fi - continue - ;; - - -framework) - prev=framework - continue - ;; - - -inst-prefix-dir) - prev=inst_prefix - continue - ;; - - # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* - # so, if we see these flags be careful not to treat them like -L - -L[A-Z][A-Z]*:*) - case $with_gcc/$host in - no/*-*-irix* | /*-*-irix*) - func_append compile_command " $arg" - func_append finalize_command " $arg" - ;; - esac - continue - ;; - - -L*) - func_stripname "-L" '' "$arg" - if test -z "$func_stripname_result"; then - if test "$#" -gt 0; then - func_fatal_error "require no space between \`-L' and \`$1'" - else - func_fatal_error "need path for \`-L' option" - fi - fi - func_resolve_sysroot "$func_stripname_result" - dir=$func_resolve_sysroot_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - absdir=`cd "$dir" && pwd` - test -z "$absdir" && \ - func_fatal_error "cannot determine absolute directory name of \`$dir'" - dir="$absdir" - ;; - esac - case "$deplibs " in - *" -L$dir "* | *" $arg "*) - # Will only happen for absolute or sysroot arguments - ;; - *) - # Preserve sysroot, but never include relative directories - case $dir in - [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; - *) func_append deplibs " -L$dir" ;; - esac - func_append lib_search_path " $dir" - ;; - esac - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$dir:"*) ;; - ::) dllsearchpath=$dir;; - *) func_append dllsearchpath ":$dir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) func_append dllsearchpath ":$testbindir";; - esac - ;; - esac - continue - ;; - - -l*) - if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) - # These systems don't actually have a C or math library (as such) - continue - ;; - *-*-os2*) - # These systems don't actually have a C library (as such) - test "X$arg" = "X-lc" && continue - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - test "X$arg" = "X-lc" && continue - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C and math libraries are in the System framework - func_append deplibs " System.ltframework" - continue - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - test "X$arg" = "X-lc" && continue - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - test "X$arg" = "X-lc" && continue - ;; - esac - elif test "X$arg" = "X-lc_r"; then - case $host in - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc_r directly, use -pthread flag. - continue - ;; - esac - fi - func_append deplibs " $arg" - continue - ;; - - -module) - module=yes - continue - ;; - - # Tru64 UNIX uses -model [arg] to determine the layout of C++ - # classes, name mangling, and exception handling. - # Darwin uses the -arch flag to determine output architecture. - -model|-arch|-isysroot|--sysroot) - func_append compiler_flags " $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - prev=xcompiler - continue - ;; - - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) - func_append compiler_flags " $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - case "$new_inherited_linker_flags " in - *" $arg "*) ;; - * ) func_append new_inherited_linker_flags " $arg" ;; - esac - continue - ;; - - -multi_module) - single_module="${wl}-multi_module" - continue - ;; - - -no-fast-install) - fast_install=no - continue - ;; - - -no-install) - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) - # The PATH hackery in wrapper scripts is required on Windows - # and Darwin in order for the loader to find any dlls it needs. - func_warning "\`-no-install' is ignored for $host" - func_warning "assuming \`-no-fast-install' instead" - fast_install=no - ;; - *) no_install=yes ;; - esac - continue - ;; - - -no-undefined) - allow_undefined=no - continue - ;; - - -objectlist) - prev=objectlist - continue - ;; - - -o) prev=output ;; - - -precious-files-regex) - prev=precious_regex - continue - ;; - - -release) - prev=release - continue - ;; - - -rpath) - prev=rpath - continue - ;; - - -R) - prev=xrpath - continue - ;; - - -R*) - func_stripname '-R' '' "$arg" - dir=$func_stripname_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - =*) - func_stripname '=' '' "$dir" - dir=$lt_sysroot$func_stripname_result - ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - case "$xrpath " in - *" $dir "*) ;; - *) func_append xrpath " $dir" ;; - esac - continue - ;; - - -shared) - # The effects of -shared are defined in a previous loop. - continue - ;; - - -shrext) - prev=shrext - continue - ;; - - -static | -static-libtool-libs) - # The effects of -static are defined in a previous loop. - # We used to do the same as -all-static on platforms that - # didn't have a PIC flag, but the assumption that the effects - # would be equivalent was wrong. It would break on at least - # Digital Unix and AIX. - continue - ;; - - -thread-safe) - thread_safe=yes - continue - ;; - - -version-info) - prev=vinfo - continue - ;; - - -version-number) - prev=vinfo - vinfo_number=yes - continue - ;; - - -weak) - prev=weak - continue - ;; - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - func_quote_for_eval "$flag" - func_append arg " $func_quote_for_eval_result" - func_append compiler_flags " $func_quote_for_eval_result" - done - IFS="$save_ifs" - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Wl,*) - func_stripname '-Wl,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - func_quote_for_eval "$flag" - func_append arg " $wl$func_quote_for_eval_result" - func_append compiler_flags " $wl$func_quote_for_eval_result" - func_append linker_flags " $func_quote_for_eval_result" - done - IFS="$save_ifs" - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Xcompiler) - prev=xcompiler - continue - ;; - - -Xlinker) - prev=xlinker - continue - ;; - - -XCClinker) - prev=xcclinker - continue - ;; - - # -msg_* for osf cc - -msg_*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - - # Flags to be passed through unchanged, with rationale: - # -64, -mips[0-9] enable 64-bit mode for the SGI compiler - # -r[0-9][0-9]* specify processor for the SGI compiler - # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler - # +DA*, +DD* enable 64-bit mode for the HP compiler - # -q* compiler args for the IBM compiler - # -m*, -t[45]*, -txscale* architecture-specific flags for GCC - # -F/path path to uninstalled frameworks, gcc on darwin - # -p, -pg, --coverage, -fprofile-* profiling flags for GCC - # @file GCC response files - # -tp=* Portland pgcc target processor selection - # --sysroot=* for sysroot support - # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization - -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ - -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ - -O*|-flto*|-fwhopr*|-fuse-linker-plugin) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - func_append compile_command " $arg" - func_append finalize_command " $arg" - func_append compiler_flags " $arg" - continue - ;; - - # Some other compiler flag. - -* | +*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - - *.$objext) - # A standard object. - func_append objs " $arg" - ;; - - *.lo) - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - func_append dlfiles " $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - func_append dlprefiles " $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "\`$arg' is not a valid libtool object" - fi - fi - ;; - - *.$libext) - # An archive. - func_append deplibs " $arg" - func_append old_deplibs " $arg" - continue - ;; - - *.la) - # A libtool-controlled library. - - func_resolve_sysroot "$arg" - if test "$prev" = dlfiles; then - # This library was specified with -dlopen. - func_append dlfiles " $func_resolve_sysroot_result" - prev= - elif test "$prev" = dlprefiles; then - # The library was specified with -dlpreopen. - func_append dlprefiles " $func_resolve_sysroot_result" - prev= - else - func_append deplibs " $func_resolve_sysroot_result" - fi - continue - ;; - - # Some other compiler argument. - *) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - esac # arg - - # Now actually substitute the argument into the commands. - if test -n "$arg"; then - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - done # argument parsing loop - - test -n "$prev" && \ - func_fatal_help "the \`$prevarg' option requires an argument" - - if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then - eval arg=\"$export_dynamic_flag_spec\" - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - - oldlibs= - # calculate the name of the file, without its directory - func_basename "$output" - outputname="$func_basename_result" - libobjs_save="$libobjs" - - if test -n "$shlibpath_var"; then - # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` - else - shlib_search_path= - fi - eval sys_lib_search_path=\"$sys_lib_search_path_spec\" - eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" - - func_dirname "$output" "/" "" - output_objdir="$func_dirname_result$objdir" - func_to_tool_file "$output_objdir/" - tool_output_objdir=$func_to_tool_file_result - # Create the object directory. - func_mkdir_p "$output_objdir" - - # Determine the type of output - case $output in - "") - func_fatal_help "you must specify an output file" - ;; - *.$libext) linkmode=oldlib ;; - *.lo | *.$objext) linkmode=obj ;; - *.la) linkmode=lib ;; - *) linkmode=prog ;; # Anything else should be a program. - esac - - specialdeplibs= - - libs= - # Find all interdependent deplibs by searching for libraries - # that are linked more than once (e.g. -la -lb -la) - for deplib in $deplibs; do - if $opt_preserve_dup_deps ; then - case "$libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append libs " $deplib" - done - - if test "$linkmode" = lib; then - libs="$predeps $libs $compiler_lib_search_path $postdeps" - - # Compute libraries that are listed more than once in $predeps - # $postdeps and mark them as special (i.e., whose duplicates are - # not to be eliminated). - pre_post_deps= - if $opt_duplicate_compiler_generated_deps; then - for pre_post_dep in $predeps $postdeps; do - case "$pre_post_deps " in - *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; - esac - func_append pre_post_deps " $pre_post_dep" - done - fi - pre_post_deps= - fi - - deplibs= - newdependency_libs= - newlib_search_path= - need_relink=no # whether we're linking any uninstalled libtool libraries - notinst_deplibs= # not-installed libtool libraries - notinst_path= # paths that contain not-installed libtool libraries - - case $linkmode in - lib) - passes="conv dlpreopen link" - for file in $dlfiles $dlprefiles; do - case $file in - *.la) ;; - *) - func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" - ;; - esac - done - ;; - prog) - compile_deplibs= - finalize_deplibs= - alldeplibs=no - newdlfiles= - newdlprefiles= - passes="conv scan dlopen dlpreopen link" - ;; - *) passes="conv" - ;; - esac - - for pass in $passes; do - # The preopen pass in lib mode reverses $deplibs; put it back here - # so that -L comes before libs that need it for instance... - if test "$linkmode,$pass" = "lib,link"; then - ## FIXME: Find the place where the list is rebuilt in the wrong - ## order, and fix it there properly - tmp_deplibs= - for deplib in $deplibs; do - tmp_deplibs="$deplib $tmp_deplibs" - done - deplibs="$tmp_deplibs" - fi - - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan"; then - libs="$deplibs" - deplibs= - fi - if test "$linkmode" = prog; then - case $pass in - dlopen) libs="$dlfiles" ;; - dlpreopen) libs="$dlprefiles" ;; - link) - libs="$deplibs %DEPLIBS%" - test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" - ;; - esac - fi - if test "$linkmode,$pass" = "lib,dlpreopen"; then - # Collect and forward deplibs of preopened libtool libs - for lib in $dlprefiles; do - # Ignore non-libtool-libs - dependency_libs= - func_resolve_sysroot "$lib" - case $lib in - *.la) func_source "$func_resolve_sysroot_result" ;; - esac - - # Collect preopened libtool deplibs, except any this library - # has declared as weak libs - for deplib in $dependency_libs; do - func_basename "$deplib" - deplib_base=$func_basename_result - case " $weak_libs " in - *" $deplib_base "*) ;; - *) func_append deplibs " $deplib" ;; - esac - done - done - libs="$dlprefiles" - fi - if test "$pass" = dlopen; then - # Collect dlpreopened libraries - save_deplibs="$deplibs" - deplibs= - fi - - for deplib in $libs; do - lib= - found=no - case $deplib in - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - func_append compiler_flags " $deplib" - if test "$linkmode" = lib ; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) func_append new_inherited_linker_flags " $deplib" ;; - esac - fi - fi - continue - ;; - -l*) - if test "$linkmode" != lib && test "$linkmode" != prog; then - func_warning "\`-l' is ignored for archives/objects" - continue - fi - func_stripname '-l' '' "$deplib" - name=$func_stripname_result - if test "$linkmode" = lib; then - searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" - else - searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" - fi - for searchdir in $searchdirs; do - for search_ext in .la $std_shrext .so .a; do - # Search the libtool library - lib="$searchdir/lib${name}${search_ext}" - if test -f "$lib"; then - if test "$search_ext" = ".la"; then - found=yes - else - found=no - fi - break 2 - fi - done - done - if test "$found" != yes; then - # deplib doesn't seem to be a libtool library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - else # deplib is a libtool library - # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, - # We need to do some special things here, and not later. - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $deplib "*) - if func_lalib_p "$lib"; then - library_names= - old_library= - func_source "$lib" - for l in $old_library $library_names; do - ll="$l" - done - if test "X$ll" = "X$old_library" ; then # only static version available - found=no - func_dirname "$lib" "" "." - ladir="$func_dirname_result" - lib=$ladir/$old_library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - fi - fi - ;; - *) ;; - esac - fi - fi - ;; # -l - *.ltframework) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - if test "$linkmode" = lib ; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) func_append new_inherited_linker_flags " $deplib" ;; - esac - fi - fi - continue - ;; - -L*) - case $linkmode in - lib) - deplibs="$deplib $deplibs" - test "$pass" = conv && continue - newdependency_libs="$deplib $newdependency_libs" - func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - prog) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - if test "$pass" = scan; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - *) - func_warning "\`-L' is ignored for archives/objects" - ;; - esac # linkmode - continue - ;; # -L - -R*) - if test "$pass" = link; then - func_stripname '-R' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - dir=$func_resolve_sysroot_result - # Make sure the xrpath contains only unique directories. - case "$xrpath " in - *" $dir "*) ;; - *) func_append xrpath " $dir" ;; - esac - fi - deplibs="$deplib $deplibs" - continue - ;; - *.la) - func_resolve_sysroot "$deplib" - lib=$func_resolve_sysroot_result - ;; - *.$libext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - case $linkmode in - lib) - # Linking convenience modules into shared libraries is allowed, - # but linking other static libraries is non-portable. - case " $dlpreconveniencelibs " in - *" $deplib "*) ;; - *) - valid_a_lib=no - case $deplibs_check_method in - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ - | $EGREP "$match_pattern_regex" > /dev/null; then - valid_a_lib=yes - fi - ;; - pass_all) - valid_a_lib=yes - ;; - esac - if test "$valid_a_lib" != yes; then - echo - $ECHO "*** Warning: Trying to link with static lib archive $deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because the file extensions .$libext of this argument makes me believe" - echo "*** that it is just a static archive that I should not use here." - else - echo - $ECHO "*** Warning: Linking the shared library $output against the" - $ECHO "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" - fi - ;; - esac - continue - ;; - prog) - if test "$pass" != link; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - continue - ;; - esac # linkmode - ;; # *.$libext - *.lo | *.$objext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - elif test "$linkmode" = prog; then - if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then - # If there is no dlopen support or we're linking statically, - # we need to preload. - func_append newdlprefiles " $deplib" - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - func_append newdlfiles " $deplib" - fi - fi - continue - ;; - %DEPLIBS%) - alldeplibs=yes - continue - ;; - esac # case $deplib - - if test "$found" = yes || test -f "$lib"; then : - else - func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" - fi - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$lib" \ - || func_fatal_error "\`$lib' is not a valid libtool archive" - - func_dirname "$lib" "" "." - ladir="$func_dirname_result" - - dlname= - dlopen= - dlpreopen= - libdir= - library_names= - old_library= - inherited_linker_flags= - # If the library was installed with an old release of libtool, - # it will not redefine variables installed, or shouldnotlink - installed=yes - shouldnotlink=no - avoidtemprpath= - - - # Read the .la file - func_source "$lib" - - # Convert "-framework foo" to "foo.ltframework" - if test -n "$inherited_linker_flags"; then - tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` - for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do - case " $new_inherited_linker_flags " in - *" $tmp_inherited_linker_flag "*) ;; - *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; - esac - done - fi - dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan" || - { test "$linkmode" != prog && test "$linkmode" != lib; }; then - test -n "$dlopen" && func_append dlfiles " $dlopen" - test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" - fi - - if test "$pass" = conv; then - # Only check for convenience libraries - deplibs="$lib $deplibs" - if test -z "$libdir"; then - if test -z "$old_library"; then - func_fatal_error "cannot find name of link library for \`$lib'" - fi - # It is a libtool convenience library, so add in its objects. - func_append convenience " $ladir/$objdir/$old_library" - func_append old_convenience " $ladir/$objdir/$old_library" - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if $opt_preserve_dup_deps ; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done - elif test "$linkmode" != prog && test "$linkmode" != lib; then - func_fatal_error "\`$lib' is not a convenience library" - fi - continue - fi # $pass = conv - - - # Get the name of the library we link against. - linklib= - if test -n "$old_library" && - { test "$prefer_static_libs" = yes || - test "$prefer_static_libs,$installed" = "built,no"; }; then - linklib=$old_library - else - for l in $old_library $library_names; do - linklib="$l" - done - fi - if test -z "$linklib"; then - func_fatal_error "cannot find name of link library for \`$lib'" - fi - - # This library was specified with -dlopen. - if test "$pass" = dlopen; then - if test -z "$libdir"; then - func_fatal_error "cannot -dlopen a convenience library: \`$lib'" - fi - if test -z "$dlname" || - test "$dlopen_support" != yes || - test "$build_libtool_libs" = no; then - # If there is no dlname, no dlopen support or we're linking - # statically, we need to preload. We also need to preload any - # dependent libraries so libltdl's deplib preloader doesn't - # bomb out in the load deplibs phase. - func_append dlprefiles " $lib $dependency_libs" - else - func_append newdlfiles " $lib" - fi - continue - fi # $pass = dlopen - - # We need an absolute path. - case $ladir in - [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; - *) - abs_ladir=`cd "$ladir" && pwd` - if test -z "$abs_ladir"; then - func_warning "cannot determine absolute directory name of \`$ladir'" - func_warning "passing it literally to the linker, although it might fail" - abs_ladir="$ladir" - fi - ;; - esac - func_basename "$lib" - laname="$func_basename_result" - - # Find the relevant object directory and library name. - if test "X$installed" = Xyes; then - if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then - func_warning "library \`$lib' was moved." - dir="$ladir" - absdir="$abs_ladir" - libdir="$abs_ladir" - else - dir="$lt_sysroot$libdir" - absdir="$lt_sysroot$libdir" - fi - test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes - else - if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then - dir="$ladir" - absdir="$abs_ladir" - # Remove this search path later - func_append notinst_path " $abs_ladir" - else - dir="$ladir/$objdir" - absdir="$abs_ladir/$objdir" - # Remove this search path later - func_append notinst_path " $abs_ladir" - fi - fi # $installed = yes - func_stripname 'lib' '.la' "$laname" - name=$func_stripname_result - - # This library was specified with -dlpreopen. - if test "$pass" = dlpreopen; then - if test -z "$libdir" && test "$linkmode" = prog; then - func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" - fi - case "$host" in - # special handling for platforms with PE-DLLs. - *cygwin* | *mingw* | *cegcc* ) - # Linker will automatically link against shared library if both - # static and shared are present. Therefore, ensure we extract - # symbols from the import library if a shared library is present - # (otherwise, the dlopen module name will be incorrect). We do - # this by putting the import library name into $newdlprefiles. - # We recover the dlopen module name by 'saving' the la file - # name in a special purpose variable, and (later) extracting the - # dlname from the la file. - if test -n "$dlname"; then - func_tr_sh "$dir/$linklib" - eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" - func_append newdlprefiles " $dir/$linklib" - else - func_append newdlprefiles " $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - func_append dlpreconveniencelibs " $dir/$old_library" - fi - ;; - * ) - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). - if test -n "$old_library"; then - func_append newdlprefiles " $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - func_append dlpreconveniencelibs " $dir/$old_library" - # Otherwise, use the dlname, so that lt_dlopen finds it. - elif test -n "$dlname"; then - func_append newdlprefiles " $dir/$dlname" - else - func_append newdlprefiles " $dir/$linklib" - fi - ;; - esac - fi # $pass = dlpreopen - - if test -z "$libdir"; then - # Link the convenience library - if test "$linkmode" = lib; then - deplibs="$dir/$old_library $deplibs" - elif test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$dir/$old_library $compile_deplibs" - finalize_deplibs="$dir/$old_library $finalize_deplibs" - else - deplibs="$lib $deplibs" # used for prog,scan pass - fi - continue - fi - - - if test "$linkmode" = prog && test "$pass" != link; then - func_append newlib_search_path " $ladir" - deplibs="$lib $deplibs" - - linkalldeplibs=no - if test "$link_all_deplibs" != no || test -z "$library_names" || - test "$build_libtool_libs" = no; then - linkalldeplibs=yes - fi - - tmp_libs= - for deplib in $dependency_libs; do - case $deplib in - -L*) func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - esac - # Need to link against all dependency_libs? - if test "$linkalldeplibs" = yes; then - deplibs="$deplib $deplibs" - else - # Need to hardcode shared library paths - # or/and link against static libraries - newdependency_libs="$deplib $newdependency_libs" - fi - if $opt_preserve_dup_deps ; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done # for deplib - continue - fi # $linkmode = prog... - - if test "$linkmode,$pass" = "prog,link"; then - if test -n "$library_names" && - { { test "$prefer_static_libs" = no || - test "$prefer_static_libs,$installed" = "built,yes"; } || - test -z "$old_library"; }; then - # We need to hardcode the library path - if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then - # Make sure the rpath contains only unique directories. - case "$temp_rpath:" in - *"$absdir:"*) ;; - *) func_append temp_rpath "$absdir:" ;; - esac - fi - - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) func_append compile_rpath " $absdir" ;; - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - ;; - esac - fi # $linkmode,$pass = prog,link... - - if test "$alldeplibs" = yes && - { test "$deplibs_check_method" = pass_all || - { test "$build_libtool_libs" = yes && - test -n "$library_names"; }; }; then - # We only need to search for static libraries - continue - fi - fi - - link_static=no # Whether the deplib will be linked statically - use_static_libs=$prefer_static_libs - if test "$use_static_libs" = built && test "$installed" = yes; then - use_static_libs=no - fi - if test -n "$library_names" && - { test "$use_static_libs" = no || test -z "$old_library"; }; then - case $host in - *cygwin* | *mingw* | *cegcc*) - # No point in relinking DLLs because paths are not encoded - func_append notinst_deplibs " $lib" - need_relink=no - ;; - *) - if test "$installed" = no; then - func_append notinst_deplibs " $lib" - need_relink=yes - fi - ;; - esac - # This is a shared library - - # Warn about portability, can't link against -module's on some - # systems (darwin). Don't bleat about dlopened modules though! - dlopenmodule="" - for dlpremoduletest in $dlprefiles; do - if test "X$dlpremoduletest" = "X$lib"; then - dlopenmodule="$dlpremoduletest" - break - fi - done - if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then - echo - if test "$linkmode" = prog; then - $ECHO "*** Warning: Linking the executable $output against the loadable module" - else - $ECHO "*** Warning: Linking the shared library $output against the loadable module" - fi - $ECHO "*** $linklib is not portable!" - fi - if test "$linkmode" = lib && - test "$hardcode_into_libs" = yes; then - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) func_append compile_rpath " $absdir" ;; - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - ;; - esac - fi - - if test -n "$old_archive_from_expsyms_cmds"; then - # figure out the soname - set dummy $library_names - shift - realname="$1" - shift - libname=`eval "\\$ECHO \"$libname_spec\""` - # use dlname if we got it. it's perfectly good, no? - if test -n "$dlname"; then - soname="$dlname" - elif test -n "$soname_spec"; then - # bleh windows - case $host in - *cygwin* | mingw* | *cegcc*) - func_arith $current - $age - major=$func_arith_result - versuffix="-$major" - ;; - esac - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - - # Make a new name for the extract_expsyms_cmds to use - soroot="$soname" - func_basename "$soroot" - soname="$func_basename_result" - func_stripname 'lib' '.dll' "$soname" - newlib=libimp-$func_stripname_result.a - - # If the library has no export list, then create one now - if test -f "$output_objdir/$soname-def"; then : - else - func_verbose "extracting exported symbol list from \`$soname'" - func_execute_cmds "$extract_expsyms_cmds" 'exit $?' - fi - - # Create $newlib - if test -f "$output_objdir/$newlib"; then :; else - func_verbose "generating import library for \`$soname'" - func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' - fi - # make sure the library variables are pointing to the new library - dir=$output_objdir - linklib=$newlib - fi # test -n "$old_archive_from_expsyms_cmds" - - if test "$linkmode" = prog || test "$opt_mode" != relink; then - add_shlibpath= - add_dir= - add= - lib_linked=yes - case $hardcode_action in - immediate | unsupported) - if test "$hardcode_direct" = no; then - add="$dir/$linklib" - case $host in - *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; - *-*-sysv4*uw2*) add_dir="-L$dir" ;; - *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ - *-*-unixware7*) add_dir="-L$dir" ;; - *-*-darwin* ) - # if the lib is a (non-dlopened) module then we can not - # link against it, someone is ignoring the earlier warnings - if /usr/bin/file -L $add 2> /dev/null | - $GREP ": [^:]* bundle" >/dev/null ; then - if test "X$dlopenmodule" != "X$lib"; then - $ECHO "*** Warning: lib $linklib is a module, not a shared library" - if test -z "$old_library" ; then - echo - echo "*** And there doesn't seem to be a static archive available" - echo "*** The link will probably fail, sorry" - else - add="$dir/$old_library" - fi - elif test -n "$old_library"; then - add="$dir/$old_library" - fi - fi - esac - elif test "$hardcode_minus_L" = no; then - case $host in - *-*-sunos*) add_shlibpath="$dir" ;; - esac - add_dir="-L$dir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = no; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - relink) - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$dir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$dir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - func_append add_dir " -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - *) lib_linked=no ;; - esac - - if test "$lib_linked" != yes; then - func_fatal_configuration "unsupported hardcode properties" - fi - - if test -n "$add_shlibpath"; then - case :$compile_shlibpath: in - *":$add_shlibpath:"*) ;; - *) func_append compile_shlibpath "$add_shlibpath:" ;; - esac - fi - if test "$linkmode" = prog; then - test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" - test -n "$add" && compile_deplibs="$add $compile_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - if test "$hardcode_direct" != yes && - test "$hardcode_minus_L" != yes && - test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) func_append finalize_shlibpath "$libdir:" ;; - esac - fi - fi - fi - - if test "$linkmode" = prog || test "$opt_mode" = relink; then - add_shlibpath= - add_dir= - add= - # Finalize command for both is simple: just hardcode it. - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$libdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$libdir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) func_append finalize_shlibpath "$libdir:" ;; - esac - add="-l$name" - elif test "$hardcode_automatic" = yes; then - if test -n "$inst_prefix_dir" && - test -f "$inst_prefix_dir$libdir/$linklib" ; then - add="$inst_prefix_dir$libdir/$linklib" - else - add="$libdir/$linklib" - fi - else - # We cannot seem to hardcode it, guess we'll fake it. - add_dir="-L$libdir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - func_append add_dir " -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - fi - - if test "$linkmode" = prog; then - test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" - test -n "$add" && finalize_deplibs="$add $finalize_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - fi - fi - elif test "$linkmode" = prog; then - # Here we assume that one of hardcode_direct or hardcode_minus_L - # is not unsupported. This is valid on all known static and - # shared platforms. - if test "$hardcode_direct" != unsupported; then - test -n "$old_library" && linklib="$old_library" - compile_deplibs="$dir/$linklib $compile_deplibs" - finalize_deplibs="$dir/$linklib $finalize_deplibs" - else - compile_deplibs="-l$name -L$dir $compile_deplibs" - finalize_deplibs="-l$name -L$dir $finalize_deplibs" - fi - elif test "$build_libtool_libs" = yes; then - # Not a shared library - if test "$deplibs_check_method" != pass_all; then - # We're trying link a shared library against a static one - # but the system doesn't support it. - - # Just print a warning and add the library to dependency_libs so - # that the program can be linked against the static library. - echo - $ECHO "*** Warning: This system can not link to static lib archive $lib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have." - if test "$module" = yes; then - echo "*** But as you try to build a module library, libtool will still create " - echo "*** a static module, that should work as long as the dlopening application" - echo "*** is linked with the -dlopen flag to resolve symbols at runtime." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - else - deplibs="$dir/$old_library $deplibs" - link_static=yes - fi - fi # link shared/static library? - - if test "$linkmode" = lib; then - if test -n "$dependency_libs" && - { test "$hardcode_into_libs" != yes || - test "$build_old_libs" = yes || - test "$link_static" = yes; }; then - # Extract -R from dependency_libs - temp_deplibs= - for libdir in $dependency_libs; do - case $libdir in - -R*) func_stripname '-R' '' "$libdir" - temp_xrpath=$func_stripname_result - case " $xrpath " in - *" $temp_xrpath "*) ;; - *) func_append xrpath " $temp_xrpath";; - esac;; - *) func_append temp_deplibs " $libdir";; - esac - done - dependency_libs="$temp_deplibs" - fi - - func_append newlib_search_path " $absdir" - # Link against this library - test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" - # ... and its dependency_libs - tmp_libs= - for deplib in $dependency_libs; do - newdependency_libs="$deplib $newdependency_libs" - case $deplib in - -L*) func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result";; - *) func_resolve_sysroot "$deplib" ;; - esac - if $opt_preserve_dup_deps ; then - case "$tmp_libs " in - *" $func_resolve_sysroot_result "*) - func_append specialdeplibs " $func_resolve_sysroot_result" ;; - esac - fi - func_append tmp_libs " $func_resolve_sysroot_result" - done - - if test "$link_all_deplibs" != no; then - # Add the search paths of all dependency libraries - for deplib in $dependency_libs; do - path= - case $deplib in - -L*) path="$deplib" ;; - *.la) - func_resolve_sysroot "$deplib" - deplib=$func_resolve_sysroot_result - func_dirname "$deplib" "" "." - dir=$func_dirname_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - func_warning "cannot determine absolute directory name of \`$dir'" - absdir="$dir" - fi - ;; - esac - if $GREP "^installed=no" $deplib > /dev/null; then - case $host in - *-*-darwin*) - depdepl= - eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` - if test -n "$deplibrary_names" ; then - for tmp in $deplibrary_names ; do - depdepl=$tmp - done - if test -f "$absdir/$objdir/$depdepl" ; then - depdepl="$absdir/$objdir/$depdepl" - darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - if test -z "$darwin_install_name"; then - darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - fi - func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" - func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" - path= - fi - fi - ;; - *) - path="-L$absdir/$objdir" - ;; - esac - else - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" - test "$absdir" != "$libdir" && \ - func_warning "\`$deplib' seems to be moved" - - path="-L$absdir" - fi - ;; - esac - case " $deplibs " in - *" $path "*) ;; - *) deplibs="$path $deplibs" ;; - esac - done - fi # link_all_deplibs != no - fi # linkmode = lib - done # for deplib in $libs - if test "$pass" = link; then - if test "$linkmode" = "prog"; then - compile_deplibs="$new_inherited_linker_flags $compile_deplibs" - finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" - else - compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - fi - fi - dependency_libs="$newdependency_libs" - if test "$pass" = dlpreopen; then - # Link the dlpreopened libraries before other libraries - for deplib in $save_deplibs; do - deplibs="$deplib $deplibs" - done - fi - if test "$pass" != dlopen; then - if test "$pass" != conv; then - # Make sure lib_search_path contains only unique directories. - lib_search_path= - for dir in $newlib_search_path; do - case "$lib_search_path " in - *" $dir "*) ;; - *) func_append lib_search_path " $dir" ;; - esac - done - newlib_search_path= - fi - - if test "$linkmode,$pass" != "prog,link"; then - vars="deplibs" - else - vars="compile_deplibs finalize_deplibs" - fi - for var in $vars dependency_libs; do - # Add libraries to $var in reverse order - eval tmp_libs=\"\$$var\" - new_libs= - for deplib in $tmp_libs; do - # FIXME: Pedantically, this is the right thing to do, so - # that some nasty dependency loop isn't accidentally - # broken: - #new_libs="$deplib $new_libs" - # Pragmatically, this seems to cause very few problems in - # practice: - case $deplib in - -L*) new_libs="$deplib $new_libs" ;; - -R*) ;; - *) - # And here is the reason: when a library appears more - # than once as an explicit dependence of a library, or - # is implicitly linked in more than once by the - # compiler, it is considered special, and multiple - # occurrences thereof are not removed. Compare this - # with having the same library being listed as a - # dependency of multiple other libraries: in this case, - # we know (pedantically, we assume) the library does not - # need to be listed more than once, so we keep only the - # last copy. This is not always right, but it is rare - # enough that we require users that really mean to play - # such unportable linking tricks to link the library - # using -Wl,-lname, so that libtool does not consider it - # for duplicate removal. - case " $specialdeplibs " in - *" $deplib "*) new_libs="$deplib $new_libs" ;; - *) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$deplib $new_libs" ;; - esac - ;; - esac - ;; - esac - done - tmp_libs= - for deplib in $new_libs; do - case $deplib in - -L*) - case " $tmp_libs " in - *" $deplib "*) ;; - *) func_append tmp_libs " $deplib" ;; - esac - ;; - *) func_append tmp_libs " $deplib" ;; - esac - done - eval $var=\"$tmp_libs\" - done # for var - fi - # Last step: remove runtime libs from dependency_libs - # (they stay in deplibs) - tmp_libs= - for i in $dependency_libs ; do - case " $predeps $postdeps $compiler_lib_search_path " in - *" $i "*) - i="" - ;; - esac - if test -n "$i" ; then - func_append tmp_libs " $i" - fi - done - dependency_libs=$tmp_libs - done # for pass - if test "$linkmode" = prog; then - dlfiles="$newdlfiles" - fi - if test "$linkmode" = prog || test "$linkmode" = lib; then - dlprefiles="$newdlprefiles" - fi - - case $linkmode in - oldlib) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for archives" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for archives" ;; - esac - - test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for archives" - - test -n "$xrpath" && \ - func_warning "\`-R' is ignored for archives" - - test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for archives" - - test -n "$release" && \ - func_warning "\`-release' is ignored for archives" - - test -n "$export_symbols$export_symbols_regex" && \ - func_warning "\`-export-symbols' is ignored for archives" - - # Now set the variables for building old libraries. - build_libtool_libs=no - oldlibs="$output" - func_append objs "$old_deplibs" - ;; - - lib) - # Make sure we only generate libraries of the form `libNAME.la'. - case $outputname in - lib*) - func_stripname 'lib' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - ;; - *) - test "$module" = no && \ - func_fatal_help "libtool library \`$output' must begin with \`lib'" - - if test "$need_lib_prefix" != no; then - # Add the "lib" prefix for modules if required - func_stripname '' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - else - func_stripname '' '.la' "$outputname" - libname=$func_stripname_result - fi - ;; - esac - - if test -n "$objs"; then - if test "$deplibs_check_method" != pass_all; then - func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" - else - echo - $ECHO "*** Warning: Linking the shared library $output against the non-libtool" - $ECHO "*** objects $objs is not portable!" - func_append libobjs " $objs" - fi - fi - - test "$dlself" != no && \ - func_warning "\`-dlopen self' is ignored for libtool libraries" - - set dummy $rpath - shift - test "$#" -gt 1 && \ - func_warning "ignoring multiple \`-rpath's for a libtool library" - - install_libdir="$1" - - oldlibs= - if test -z "$rpath"; then - if test "$build_libtool_libs" = yes; then - # Building a libtool convenience library. - # Some compilers have problems with a `.al' extension so - # convenience libraries should have the same extension an - # archive normally would. - oldlibs="$output_objdir/$libname.$libext $oldlibs" - build_libtool_libs=convenience - build_old_libs=yes - fi - - test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for convenience libraries" - - test -n "$release" && \ - func_warning "\`-release' is ignored for convenience libraries" - else - - # Parse the version information argument. - save_ifs="$IFS"; IFS=':' - set dummy $vinfo 0 0 0 - shift - IFS="$save_ifs" - - test -n "$7" && \ - func_fatal_help "too many parameters to \`-version-info'" - - # convert absolute version numbers to libtool ages - # this retains compatibility with .la files and attempts - # to make the code below a bit more comprehensible - - case $vinfo_number in - yes) - number_major="$1" - number_minor="$2" - number_revision="$3" - # - # There are really only two kinds -- those that - # use the current revision as the major version - # and those that subtract age and use age as - # a minor version. But, then there is irix - # which has an extra 1 added just for fun - # - case $version_type in - darwin|linux|osf|windows|none) - func_arith $number_major + $number_minor - current=$func_arith_result - age="$number_minor" - revision="$number_revision" - ;; - freebsd-aout|freebsd-elf|qnx|sunos) - current="$number_major" - revision="$number_minor" - age="0" - ;; - irix|nonstopux) - func_arith $number_major + $number_minor - current=$func_arith_result - age="$number_minor" - revision="$number_minor" - lt_irix_increment=no - ;; - *) - func_fatal_configuration "$modename: unknown library version type \`$version_type'" - ;; - esac - ;; - no) - current="$1" - revision="$2" - age="$3" - ;; - esac - - # Check that each of the things are valid numbers. - case $current in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "CURRENT \`$current' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - case $revision in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "REVISION \`$revision' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - case $age in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "AGE \`$age' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - if test "$age" -gt "$current"; then - func_error "AGE \`$age' is greater than the current interface number \`$current'" - func_fatal_error "\`$vinfo' is not valid version information" - fi - - # Calculate the version variables. - major= - versuffix= - verstring= - case $version_type in - none) ;; - - darwin) - # Like Linux, but with the current version available in - # verstring for coding it into the library header - func_arith $current - $age - major=.$func_arith_result - versuffix="$major.$age.$revision" - # Darwin ld doesn't like 0 for these options... - func_arith $current + 1 - minor_current=$func_arith_result - xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" - verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" - ;; - - freebsd-aout) - major=".$current" - versuffix=".$current.$revision"; - ;; - - freebsd-elf) - major=".$current" - versuffix=".$current" - ;; - - irix | nonstopux) - if test "X$lt_irix_increment" = "Xno"; then - func_arith $current - $age - else - func_arith $current - $age + 1 - fi - major=$func_arith_result - - case $version_type in - nonstopux) verstring_prefix=nonstopux ;; - *) verstring_prefix=sgi ;; - esac - verstring="$verstring_prefix$major.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$revision - while test "$loop" -ne 0; do - func_arith $revision - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring="$verstring_prefix$major.$iface:$verstring" - done - - # Before this point, $major must not contain `.'. - major=.$major - versuffix="$major.$revision" - ;; - - linux) - func_arith $current - $age - major=.$func_arith_result - versuffix="$major.$age.$revision" - ;; - - osf) - func_arith $current - $age - major=.$func_arith_result - versuffix=".$current.$age.$revision" - verstring="$current.$age.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$age - while test "$loop" -ne 0; do - func_arith $current - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring="$verstring:${iface}.0" - done - - # Make executables depend on our current version. - func_append verstring ":${current}.0" - ;; - - qnx) - major=".$current" - versuffix=".$current" - ;; - - sunos) - major=".$current" - versuffix=".$current.$revision" - ;; - - windows) - # Use '-' rather than '.', since we only want one - # extension on DOS 8.3 filesystems. - func_arith $current - $age - major=$func_arith_result - versuffix="-$major" - ;; - - *) - func_fatal_configuration "unknown library version type \`$version_type'" - ;; - esac - - # Clear the version info if we defaulted, and they specified a release. - if test -z "$vinfo" && test -n "$release"; then - major= - case $version_type in - darwin) - # we can't check for "0.0" in archive_cmds due to quoting - # problems, so we reset it completely - verstring= - ;; - *) - verstring="0.0" - ;; - esac - if test "$need_version" = no; then - versuffix= - else - versuffix=".0.0" - fi - fi - - # Remove version info from name if versioning should be avoided - if test "$avoid_version" = yes && test "$need_version" = no; then - major= - versuffix= - verstring="" - fi - - # Check to see if the archive will have undefined symbols. - if test "$allow_undefined" = yes; then - if test "$allow_undefined_flag" = unsupported; then - func_warning "undefined symbols not allowed in $host shared libraries" - build_libtool_libs=no - build_old_libs=yes - fi - else - # Don't allow undefined symbols. - allow_undefined_flag="$no_undefined_flag" - fi - - fi - - func_generate_dlsyms "$libname" "$libname" "yes" - func_append libobjs " $symfileobj" - test "X$libobjs" = "X " && libobjs= - - if test "$opt_mode" != relink; then - # Remove our outputs, but don't remove object files since they - # may have been created when compiling PIC objects. - removelist= - tempremovelist=`$ECHO "$output_objdir/*"` - for p in $tempremovelist; do - case $p in - *.$objext | *.gcno) - ;; - $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) - if test "X$precious_files_regex" != "X"; then - if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 - then - continue - fi - fi - func_append removelist " $p" - ;; - *) ;; - esac - done - test -n "$removelist" && \ - func_show_eval "${RM}r \$removelist" - fi - - # Now set the variables for building old libraries. - if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then - func_append oldlibs " $output_objdir/$libname.$libext" - - # Transform .lo files to .o files. - oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` - fi - - # Eliminate all temporary directories. - #for path in $notinst_path; do - # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` - # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` - # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` - #done - - if test -n "$xrpath"; then - # If the user specified any rpath flags, then add them. - temp_xrpath= - for libdir in $xrpath; do - func_replace_sysroot "$libdir" - func_append temp_xrpath " -R$func_replace_sysroot_result" - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - done - if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then - dependency_libs="$temp_xrpath $dependency_libs" - fi - fi - - # Make sure dlfiles contains only unique files that won't be dlpreopened - old_dlfiles="$dlfiles" - dlfiles= - for lib in $old_dlfiles; do - case " $dlprefiles $dlfiles " in - *" $lib "*) ;; - *) func_append dlfiles " $lib" ;; - esac - done - - # Make sure dlprefiles contains only unique files - old_dlprefiles="$dlprefiles" - dlprefiles= - for lib in $old_dlprefiles; do - case "$dlprefiles " in - *" $lib "*) ;; - *) func_append dlprefiles " $lib" ;; - esac - done - - if test "$build_libtool_libs" = yes; then - if test -n "$rpath"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) - # these systems don't actually have a c library (as such)! - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C library is in the System framework - func_append deplibs " System.ltframework" - ;; - *-*-netbsd*) - # Don't link with libc until the a.out ld.so is fixed. - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - ;; - *) - # Add libc to deplibs on all other systems if necessary. - if test "$build_libtool_need_lc" = "yes"; then - func_append deplibs " -lc" - fi - ;; - esac - fi - - # Transform deplibs into only deplibs that can be linked in shared. - name_save=$name - libname_save=$libname - release_save=$release - versuffix_save=$versuffix - major_save=$major - # I'm not sure if I'm treating the release correctly. I think - # release should show up in the -l (ie -lgmp5) so we don't want to - # add it in twice. Is that correct? - release="" - versuffix="" - major="" - newdeplibs= - droppeddeps=no - case $deplibs_check_method in - pass_all) - # Don't check for shared/static. Everything works. - # This might be a little naive. We might want to check - # whether the library exists or not. But this is on - # osf3 & osf4 and I'm not really sure... Just - # implementing what was already the behavior. - newdeplibs=$deplibs - ;; - test_compile) - # This code stresses the "libraries are programs" paradigm to its - # limits. Maybe even breaks it. We compile a program, linking it - # against the deplibs as a proxy for the library. Then we can check - # whether they linked in statically or dynamically with ldd. - $opt_dry_run || $RM conftest.c - cat > conftest.c </dev/null` - $nocaseglob - else - potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` - fi - for potent_lib in $potential_libs; do - # Follow soft links. - if ls -lLd "$potent_lib" 2>/dev/null | - $GREP " -> " >/dev/null; then - continue - fi - # The statement above tries to avoid entering an - # endless loop below, in case of cyclic links. - # We might still enter an endless loop, since a link - # loop can be closed while we follow links, - # but so what? - potlib="$potent_lib" - while test -h "$potlib" 2>/dev/null; do - potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` - case $potliblink in - [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; - *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; - esac - done - if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | - $SED -e 10q | - $EGREP "$file_magic_regex" > /dev/null; then - func_append newdeplibs " $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $ECHO "*** with $libname but no candidates were found. (...for file magic test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a file magic. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - func_append newdeplibs " $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - for a_deplib in $deplibs; do - case $a_deplib in - -l*) - func_stripname -l '' "$a_deplib" - name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $a_deplib "*) - func_append newdeplibs " $a_deplib" - a_deplib="" - ;; - esac - fi - if test -n "$a_deplib" ; then - libname=`eval "\\$ECHO \"$libname_spec\""` - for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` - for potent_lib in $potential_libs; do - potlib="$potent_lib" # see symlink-check above in file_magic test - if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ - $EGREP "$match_pattern_regex" > /dev/null; then - func_append newdeplibs " $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a regex pattern. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - func_append newdeplibs " $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - none | unknown | *) - newdeplibs="" - tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - for i in $predeps $postdeps ; do - # can't use Xsed below, because $i might contain '/' - tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` - done - fi - case $tmp_deplibs in - *[!\ \ ]*) - echo - if test "X$deplibs_check_method" = "Xnone"; then - echo "*** Warning: inter-library dependencies are not supported in this platform." - else - echo "*** Warning: inter-library dependencies are not known to be supported." - fi - echo "*** All declared inter-library dependencies are being dropped." - droppeddeps=yes - ;; - esac - ;; - esac - versuffix=$versuffix_save - major=$major_save - release=$release_save - libname=$libname_save - name=$name_save - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library with the System framework - newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - if test "$droppeddeps" = yes; then - if test "$module" = yes; then - echo - echo "*** Warning: libtool could not satisfy all declared inter-library" - $ECHO "*** dependencies of module $libname. Therefore, libtool will create" - echo "*** a static module, that should work as long as the dlopening" - echo "*** application is linked with the -dlopen flag." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - else - echo "*** The inter-library dependencies that have been dropped here will be" - echo "*** automatically added whenever a program is linked with this library" - echo "*** or is declared to -dlopen it." - - if test "$allow_undefined" = no; then - echo - echo "*** Since this library must not contain undefined symbols," - echo "*** because either the platform does not support them or" - echo "*** it was explicitly requested with -no-undefined," - echo "*** libtool will only create a static version of it." - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - fi - fi - # Done checking deplibs! - deplibs=$newdeplibs - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - case $host in - *-*-darwin*) - newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $deplibs " in - *" -L$path/$objdir "*) - func_append new_libs " -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) func_append new_libs " $deplib" ;; - esac - ;; - *) func_append new_libs " $deplib" ;; - esac - done - deplibs="$new_libs" - - # All the library-specific variables (install_libdir is set above). - library_names= - old_library= - dlname= - - # Test again, we may have decided not to build it any more - if test "$build_libtool_libs" = yes; then - if test "$hardcode_into_libs" = yes; then - # Hardcode the library paths - hardcode_libdirs= - dep_rpath= - rpath="$finalize_rpath" - test "$opt_mode" != relink && rpath="$compile_rpath$rpath" - for libdir in $rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - func_replace_sysroot "$libdir" - libdir=$func_replace_sysroot_result - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append dep_rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) func_apped perm_rpath " $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - if test -n "$hardcode_libdir_flag_spec_ld"; then - eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" - else - eval dep_rpath=\"$hardcode_libdir_flag_spec\" - fi - fi - if test -n "$runpath_var" && test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - func_append rpath "$dir:" - done - eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" - fi - test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" - fi - - shlibpath="$finalize_shlibpath" - test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" - if test -n "$shlibpath"; then - eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" - fi - - # Get the real and link names of the library. - eval shared_ext=\"$shrext_cmds\" - eval library_names=\"$library_names_spec\" - set dummy $library_names - shift - realname="$1" - shift - - if test -n "$soname_spec"; then - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - if test -z "$dlname"; then - dlname=$soname - fi - - lib="$output_objdir/$realname" - linknames= - for link - do - func_append linknames " $link" - done - - # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` - test "X$libobjs" = "X " && libobjs= - - delfiles= - if test -n "$export_symbols" && test -n "$include_expsyms"; then - $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" - export_symbols="$output_objdir/$libname.uexp" - func_append delfiles " $export_symbols" - fi - - orig_export_symbols= - case $host_os in - cygwin* | mingw* | cegcc*) - if test -n "$export_symbols" && test -z "$export_symbols_regex"; then - # exporting using user supplied symfile - if test "x`$SED 1q $export_symbols`" != xEXPORTS; then - # and it's NOT already a .def file. Must figure out - # which of the given symbols are data symbols and tag - # them as such. So, trigger use of export_symbols_cmds. - # export_symbols gets reassigned inside the "prepare - # the list of exported symbols" if statement, so the - # include_expsyms logic still works. - orig_export_symbols="$export_symbols" - export_symbols= - always_export_symbols=yes - fi - fi - ;; - esac - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $opt_dry_run || $RM $export_symbols - cmds=$export_symbols_cmds - save_ifs="$IFS"; IFS='~' - for cmd1 in $cmds; do - IFS="$save_ifs" - # Take the normal branch if the nm_file_list_spec branch - # doesn't work or if tool conversion is not needed. - case $nm_file_list_spec~$to_tool_file_cmd in - *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) - try_normal_branch=yes - eval cmd=\"$cmd1\" - func_len " $cmd" - len=$func_len_result - ;; - *) - try_normal_branch=no - ;; - esac - if test "$try_normal_branch" = yes \ - && { test "$len" -lt "$max_cmd_len" \ - || test "$max_cmd_len" -le -1; } - then - func_show_eval "$cmd" 'exit $?' - skipped_export=false - elif test -n "$nm_file_list_spec"; then - func_basename "$output" - output_la=$func_basename_result - save_libobjs=$libobjs - save_output=$output - output=${output_objdir}/${output_la}.nm - func_to_tool_file "$output" - libobjs=$nm_file_list_spec$func_to_tool_file_result - func_append delfiles " $output" - func_verbose "creating $NM input file list: $output" - for obj in $save_libobjs; do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" - done > "$output" - eval cmd=\"$cmd1\" - func_show_eval "$cmd" 'exit $?' - output=$save_output - libobjs=$save_libobjs - skipped_export=false - else - # The command line is too long to execute in one step. - func_verbose "using reloadable object file for export list..." - skipped_export=: - # Break out early, otherwise skipped_export may be - # set to false by a later but shorter cmd. - break - fi - done - IFS="$save_ifs" - if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - fi - - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols="$export_symbols" - test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" - $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - func_append delfiles " $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - - tmp_deplibs= - for test_deplib in $deplibs; do - case " $convenience " in - *" $test_deplib "*) ;; - *) - func_append tmp_deplibs " $test_deplib" - ;; - esac - done - deplibs="$tmp_deplibs" - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec" && - test "$compiler_needs_object" = yes && - test -z "$libobjs"; then - # extract the archives, so we have objects to list. - # TODO: could optimize this to just extract one archive. - whole_archive_flag_spec= - fi - if test -n "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - else - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $convenience - func_append libobjs " $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - fi - - if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then - eval flag=\"$thread_safe_flag_spec\" - func_append linker_flags " $flag" - fi - - # Make a backup of the uninstalled library when relinking - if test "$opt_mode" = relink; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? - fi - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - eval test_cmds=\"$module_expsym_cmds\" - cmds=$module_expsym_cmds - else - eval test_cmds=\"$module_cmds\" - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval test_cmds=\"$archive_expsym_cmds\" - cmds=$archive_expsym_cmds - else - eval test_cmds=\"$archive_cmds\" - cmds=$archive_cmds - fi - fi - - if test "X$skipped_export" != "X:" && - func_len " $test_cmds" && - len=$func_len_result && - test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - : - else - # The command line is too long to link in one step, link piecewise - # or, if using GNU ld and skipped_export is not :, use a linker - # script. - - # Save the value of $output and $libobjs because we want to - # use them later. If we have whole_archive_flag_spec, we - # want to use save_libobjs as it was before - # whole_archive_flag_spec was expanded, because we can't - # assume the linker understands whole_archive_flag_spec. - # This may have to be revisited, in case too many - # convenience libraries get linked in and end up exceeding - # the spec. - if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - fi - save_output=$output - func_basename "$output" - output_la=$func_basename_result - - # Clear the reloadable object creation command queue and - # initialize k to one. - test_cmds= - concat_cmds= - objlist= - last_robj= - k=1 - - if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then - output=${output_objdir}/${output_la}.lnkscript - func_verbose "creating GNU ld script: $output" - echo 'INPUT (' > $output - for obj in $save_libobjs - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" >> $output - done - echo ')' >> $output - func_append delfiles " $output" - func_to_tool_file "$output" - output=$func_to_tool_file_result - elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then - output=${output_objdir}/${output_la}.lnk - func_verbose "creating linker input file list: $output" - : > $output - set x $save_libobjs - shift - firstobj= - if test "$compiler_needs_object" = yes; then - firstobj="$1 " - shift - fi - for obj - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" >> $output - done - func_append delfiles " $output" - func_to_tool_file "$output" - output=$firstobj\"$file_list_spec$func_to_tool_file_result\" - else - if test -n "$save_libobjs"; then - func_verbose "creating reloadable object files..." - output=$output_objdir/$output_la-${k}.$objext - eval test_cmds=\"$reload_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - - # Loop over the list of objects to be linked. - for obj in $save_libobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - if test "X$objlist" = X || - test "$len" -lt "$max_cmd_len"; then - func_append objlist " $obj" - else - # The command $test_cmds is almost too long, add a - # command to the queue. - if test "$k" -eq 1 ; then - # The first file doesn't have a previous command to add. - reload_objs=$objlist - eval concat_cmds=\"$reload_cmds\" - else - # All subsequent reloadable object files will link in - # the last one created. - reload_objs="$objlist $last_robj" - eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" - fi - last_robj=$output_objdir/$output_la-${k}.$objext - func_arith $k + 1 - k=$func_arith_result - output=$output_objdir/$output_la-${k}.$objext - objlist=" $obj" - func_len " $last_robj" - func_arith $len0 + $func_len_result - len=$func_arith_result - fi - done - # Handle the remaining objects by creating one last - # reloadable object file. All subsequent reloadable object - # files will link in the last one created. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - reload_objs="$objlist $last_robj" - eval concat_cmds=\"\${concat_cmds}$reload_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" - fi - func_append delfiles " $output" - - else - output= - fi - - if ${skipped_export-false}; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $opt_dry_run || $RM $export_symbols - libobjs=$output - # Append the command to create the export file. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" - fi - fi - - test -n "$save_libobjs" && - func_verbose "creating a temporary reloadable object file: $output" - - # Loop through the commands generated above and execute them. - save_ifs="$IFS"; IFS='~' - for cmd in $concat_cmds; do - IFS="$save_ifs" - $opt_silent || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - - if test -n "$export_symbols_regex" && ${skipped_export-false}; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - - if ${skipped_export-false}; then - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols="$export_symbols" - test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" - $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - func_append delfiles " $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - fi - - libobjs=$output - # Restore the value of output. - output=$save_output - - if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - fi - # Expand the library linking commands again to reset the - # value of $libobjs for piecewise linking. - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - cmds=$module_expsym_cmds - else - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - cmds=$archive_expsym_cmds - else - cmds=$archive_cmds - fi - fi - fi - - if test -n "$delfiles"; then - # Append the command to remove temporary files to $cmds. - eval cmds=\"\$cmds~\$RM $delfiles\" - fi - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $dlprefiles - func_append libobjs " $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $opt_silent || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - - # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? - - if test -n "$convenience"; then - if test -z "$whole_archive_flag_spec"; then - func_show_eval '${RM}r "$gentop"' - fi - fi - - exit $EXIT_SUCCESS - fi - - # Create links to the real library. - for linkname in $linknames; do - if test "$realname" != "$linkname"; then - func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' - fi - done - - # If -module or -export-dynamic was specified, set the dlname. - if test "$module" = yes || test "$export_dynamic" = yes; then - # On all known operating systems, these are identical. - dlname="$soname" - fi - fi - ;; - - obj) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for objects" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for objects" ;; - esac - - test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for objects" - - test -n "$xrpath" && \ - func_warning "\`-R' is ignored for objects" - - test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for objects" - - test -n "$release" && \ - func_warning "\`-release' is ignored for objects" - - case $output in - *.lo) - test -n "$objs$old_deplibs" && \ - func_fatal_error "cannot build library object \`$output' from non-libtool objects" - - libobj=$output - func_lo2o "$libobj" - obj=$func_lo2o_result - ;; - *) - libobj= - obj="$output" - ;; - esac - - # Delete the old objects. - $opt_dry_run || $RM $obj $libobj - - # Objects from convenience libraries. This assumes - # single-version convenience libraries. Whenever we create - # different ones for PIC/non-PIC, this we'll have to duplicate - # the extraction. - reload_conv_objs= - gentop= - # reload_cmds runs $LD directly, so let us get rid of - # -Wl from whole_archive_flag_spec and hope we can get by with - # turning comma into space.. - wl= - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" - reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` - else - gentop="$output_objdir/${obj}x" - func_append generated " $gentop" - - func_extract_archives $gentop $convenience - reload_conv_objs="$reload_objs $func_extract_archives_result" - fi - fi - - # If we're not building shared, we need to use non_pic_objs - test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" - - # Create the old-style object. - reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test - - output="$obj" - func_execute_cmds "$reload_cmds" 'exit $?' - - # Exit if we aren't doing a library object file. - if test -z "$libobj"; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - fi - - if test "$build_libtool_libs" != yes; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - # Create an invalid libtool object if no PIC, so that we don't - # accidentally link it into a program. - # $show "echo timestamp > $libobj" - # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? - exit $EXIT_SUCCESS - fi - - if test -n "$pic_flag" || test "$pic_mode" != default; then - # Only do commands if we really have different PIC objects. - reload_objs="$libobjs $reload_conv_objs" - output="$libobj" - func_execute_cmds "$reload_cmds" 'exit $?' - fi - - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - ;; - - prog) - case $host in - *cygwin*) func_stripname '' '.exe' "$output" - output=$func_stripname_result.exe;; - esac - test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for programs" - - test -n "$release" && \ - func_warning "\`-release' is ignored for programs" - - test "$preload" = yes \ - && test "$dlopen_support" = unknown \ - && test "$dlopen_self" = unknown \ - && test "$dlopen_self_static" = unknown && \ - func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - case $host in - *-*-darwin*) - # Don't allow lazy linking, it breaks C++ global constructors - # But is supposedly fixed on 10.4 or later (yay!). - if test "$tagname" = CXX ; then - case ${MACOSX_DEPLOYMENT_TARGET-10.0} in - 10.[0123]) - func_append compile_command " ${wl}-bind_at_load" - func_append finalize_command " ${wl}-bind_at_load" - ;; - esac - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $compile_deplibs " in - *" -L$path/$objdir "*) - func_append new_libs " -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $compile_deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) func_append new_libs " $deplib" ;; - esac - ;; - *) func_append new_libs " $deplib" ;; - esac - done - compile_deplibs="$new_libs" - - - func_append compile_command " $compile_deplibs" - func_append finalize_command " $finalize_deplibs" - - if test -n "$rpath$xrpath"; then - # If the user specified any rpath flags, then add them. - for libdir in $rpath $xrpath; do - # This is the magic to use -rpath. - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - done - fi - - # Now hardcode the library paths - rpath= - hardcode_libdirs= - for libdir in $compile_rpath $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) func_append perm_rpath " $libdir" ;; - esac - fi - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$libdir:"*) ;; - ::) dllsearchpath=$libdir;; - *) func_append dllsearchpath ":$libdir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) func_append dllsearchpath ":$testbindir";; - esac - ;; - esac - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - compile_rpath="$rpath" - - rpath= - hardcode_libdirs= - for libdir in $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$finalize_perm_rpath " in - *" $libdir "*) ;; - *) func_append finalize_perm_rpath " $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - finalize_rpath="$rpath" - - if test -n "$libobjs" && test "$build_old_libs" = yes; then - # Transform all the library objects into standard objects. - compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - fi - - func_generate_dlsyms "$outputname" "@PROGRAM@" "no" - - # template prelinking step - if test -n "$prelink_cmds"; then - func_execute_cmds "$prelink_cmds" 'exit $?' - fi - - wrappers_required=yes - case $host in - *cegcc* | *mingw32ce*) - # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. - wrappers_required=no - ;; - *cygwin* | *mingw* ) - if test "$build_libtool_libs" != yes; then - wrappers_required=no - fi - ;; - *) - if test "$need_relink" = no || test "$build_libtool_libs" != yes; then - wrappers_required=no - fi - ;; - esac - if test "$wrappers_required" = no; then - # Replace the output file specification. - compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - link_command="$compile_command$compile_rpath" - - # We have no uninstalled library dependencies, so finalize right now. - exit_status=0 - func_show_eval "$link_command" 'exit_status=$?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - # Delete the generated files. - if test -f "$output_objdir/${outputname}S.${objext}"; then - func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' - fi - - exit $exit_status - fi - - if test -n "$compile_shlibpath$finalize_shlibpath"; then - compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" - fi - if test -n "$finalize_shlibpath"; then - finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" - fi - - compile_var= - finalize_var= - if test -n "$runpath_var"; then - if test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - func_append rpath "$dir:" - done - compile_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - if test -n "$finalize_perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $finalize_perm_rpath; do - func_append rpath "$dir:" - done - finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - fi - - if test "$no_install" = yes; then - # We don't need to create a wrapper script. - link_command="$compile_var$compile_command$compile_rpath" - # Replace the output file specification. - link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - # Delete the old output file. - $opt_dry_run || $RM $output - # Link the executable and exit - func_show_eval "$link_command" 'exit $?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - exit $EXIT_SUCCESS - fi - - if test "$hardcode_action" = relink; then - # Fast installation is not supported - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - - func_warning "this platform does not like uninstalled shared libraries" - func_warning "\`$output' will be relinked during installation" - else - if test "$fast_install" != no; then - link_command="$finalize_var$compile_command$finalize_rpath" - if test "$fast_install" = yes; then - relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` - else - # fast_install is set to needless - relink_command= - fi - else - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - fi - fi - - # Replace the output file specification. - link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` - - # Delete the old output files. - $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname - - func_show_eval "$link_command" 'exit $?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output_objdir/$outputname" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - # Now create the wrapper script. - func_verbose "creating $output" - - # Quote the relink command for shipping. - if test -n "$relink_command"; then - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - relink_command="(cd `pwd`; $relink_command)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - fi - - # Only actually do things if not in dry run mode. - $opt_dry_run || { - # win32 will think the script is a binary if it has - # a .exe suffix, so we strip it off here. - case $output in - *.exe) func_stripname '' '.exe' "$output" - output=$func_stripname_result ;; - esac - # test for cygwin because mv fails w/o .exe extensions - case $host in - *cygwin*) - exeext=.exe - func_stripname '' '.exe' "$outputname" - outputname=$func_stripname_result ;; - *) exeext= ;; - esac - case $host in - *cygwin* | *mingw* ) - func_dirname_and_basename "$output" "" "." - output_name=$func_basename_result - output_path=$func_dirname_result - cwrappersource="$output_path/$objdir/lt-$output_name.c" - cwrapper="$output_path/$output_name.exe" - $RM $cwrappersource $cwrapper - trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 - - func_emit_cwrapperexe_src > $cwrappersource - - # The wrapper executable is built using the $host compiler, - # because it contains $host paths and files. If cross- - # compiling, it, like the target executable, must be - # executed on the $host or under an emulation environment. - $opt_dry_run || { - $LTCC $LTCFLAGS -o $cwrapper $cwrappersource - $STRIP $cwrapper - } - - # Now, create the wrapper script for func_source use: - func_ltwrapper_scriptname $cwrapper - $RM $func_ltwrapper_scriptname_result - trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 - $opt_dry_run || { - # note: this script will not be executed, so do not chmod. - if test "x$build" = "x$host" ; then - $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result - else - func_emit_wrapper no > $func_ltwrapper_scriptname_result - fi - } - ;; - * ) - $RM $output - trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 - - func_emit_wrapper no > $output - chmod +x $output - ;; - esac - } - exit $EXIT_SUCCESS - ;; - esac - - # See if we need to build an old-fashioned archive. - for oldlib in $oldlibs; do - - if test "$build_libtool_libs" = convenience; then - oldobjs="$libobjs_save $symfileobj" - addlibs="$convenience" - build_libtool_libs=no - else - if test "$build_libtool_libs" = module; then - oldobjs="$libobjs_save" - build_libtool_libs=no - else - oldobjs="$old_deplibs $non_pic_objects" - if test "$preload" = yes && test -f "$symfileobj"; then - func_append oldobjs " $symfileobj" - fi - fi - addlibs="$old_convenience" - fi - - if test -n "$addlibs"; then - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $addlibs - func_append oldobjs " $func_extract_archives_result" - fi - - # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then - cmds=$old_archive_from_new_cmds - else - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $dlprefiles - func_append oldobjs " $func_extract_archives_result" - fi - - # POSIX demands no paths to be encoded in archives. We have - # to avoid creating archives with duplicate basenames if we - # might have to extract them afterwards, e.g., when creating a - # static archive out of a convenience library, or when linking - # the entirety of a libtool archive into another (currently - # not supported by libtool). - if (for obj in $oldobjs - do - func_basename "$obj" - $ECHO "$func_basename_result" - done | sort | sort -uc >/dev/null 2>&1); then - : - else - echo "copying selected object files to avoid basename conflicts..." - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - func_mkdir_p "$gentop" - save_oldobjs=$oldobjs - oldobjs= - counter=1 - for obj in $save_oldobjs - do - func_basename "$obj" - objbase="$func_basename_result" - case " $oldobjs " in - " ") oldobjs=$obj ;; - *[\ /]"$objbase "*) - while :; do - # Make sure we don't pick an alternate name that also - # overlaps. - newobj=lt$counter-$objbase - func_arith $counter + 1 - counter=$func_arith_result - case " $oldobjs " in - *[\ /]"$newobj "*) ;; - *) if test ! -f "$gentop/$newobj"; then break; fi ;; - esac - done - func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" - func_append oldobjs " $gentop/$newobj" - ;; - *) func_append oldobjs " $obj" ;; - esac - done - fi - eval cmds=\"$old_archive_cmds\" - - func_len " $cmds" - len=$func_len_result - if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - cmds=$old_archive_cmds - elif test -n "$archiver_list_spec"; then - func_verbose "using command file archive linking..." - for obj in $oldobjs - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" - done > $output_objdir/$libname.libcmd - func_to_tool_file "$output_objdir/$libname.libcmd" - oldobjs=" $archiver_list_spec$func_to_tool_file_result" - cmds=$old_archive_cmds - else - # the command line is too long to link in one step, link in parts - func_verbose "using piecewise archive linking..." - save_RANLIB=$RANLIB - RANLIB=: - objlist= - concat_cmds= - save_oldobjs=$oldobjs - oldobjs= - # Is there a better way of finding the last object in the list? - for obj in $save_oldobjs - do - last_oldobj=$obj - done - eval test_cmds=\"$old_archive_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - for obj in $save_oldobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - func_append objlist " $obj" - if test "$len" -lt "$max_cmd_len"; then - : - else - # the above command should be used before it gets too long - oldobjs=$objlist - if test "$obj" = "$last_oldobj" ; then - RANLIB=$save_RANLIB - fi - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" - objlist= - len=$len0 - fi - done - RANLIB=$save_RANLIB - oldobjs=$objlist - if test "X$oldobjs" = "X" ; then - eval cmds=\"\$concat_cmds\" - else - eval cmds=\"\$concat_cmds~\$old_archive_cmds\" - fi - fi - fi - func_execute_cmds "$cmds" 'exit $?' - done - - test -n "$generated" && \ - func_show_eval "${RM}r$generated" - - # Now create the libtool archive. - case $output in - *.la) - old_library= - test "$build_old_libs" = yes && old_library="$libname.$libext" - func_verbose "creating $output" - - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - # Quote the link command for shipping. - relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - if test "$hardcode_automatic" = yes ; then - relink_command= - fi - - # Only create the output if not a dry run. - $opt_dry_run || { - for installed in no yes; do - if test "$installed" = yes; then - if test -z "$install_libdir"; then - break - fi - output="$output_objdir/$outputname"i - # Replace all uninstalled libtool libraries with the installed ones - newdependency_libs= - for deplib in $dependency_libs; do - case $deplib in - *.la) - func_basename "$deplib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" - func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" - ;; - -L*) - func_stripname -L '' "$deplib" - func_replace_sysroot "$func_stripname_result" - func_append newdependency_libs " -L$func_replace_sysroot_result" - ;; - -R*) - func_stripname -R '' "$deplib" - func_replace_sysroot "$func_stripname_result" - func_append newdependency_libs " -R$func_replace_sysroot_result" - ;; - *) func_append newdependency_libs " $deplib" ;; - esac - done - dependency_libs="$newdependency_libs" - newdlfiles= - - for lib in $dlfiles; do - case $lib in - *.la) - func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" - func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" - ;; - *) func_append newdlfiles " $lib" ;; - esac - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - *.la) - # Only pass preopened files to the pseudo-archive (for - # eventual linking with the app. that links it) if we - # didn't already link the preopened objects directly into - # the library: - func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" - func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" - ;; - esac - done - dlprefiles="$newdlprefiles" - else - newdlfiles= - for lib in $dlfiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - func_append newdlfiles " $abs" - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - func_append newdlprefiles " $abs" - done - dlprefiles="$newdlprefiles" - fi - $RM $output - # place dlname in correct position for cygwin - # In fact, it would be nice if we could use this code for all target - # systems that can't hard-code library paths into their executables - # and that have no shared library path variable independent of PATH, - # but it turns out we can't easily determine that from inspecting - # libtool variables, so we have to hard-code the OSs to which it - # applies here; at the moment, that means platforms that use the PE - # object format with DLL files. See the long comment at the top of - # tests/bindir.at for full details. - tdlname=$dlname - case $host,$output,$installed,$module,$dlname in - *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) - # If a -bindir argument was supplied, place the dll there. - if test "x$bindir" != x ; - then - func_relative_path "$install_libdir" "$bindir" - tdlname=$func_relative_path_result$dlname - else - # Otherwise fall back on heuristic. - tdlname=../bin/$dlname - fi - ;; - esac - $ECHO > $output "\ -# $outputname - a libtool library file -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# The name that we can dlopen(3). -dlname='$tdlname' - -# Names of this library. -library_names='$library_names' - -# The name of the static archive. -old_library='$old_library' - -# Linker flags that can not go in dependency_libs. -inherited_linker_flags='$new_inherited_linker_flags' - -# Libraries that this one depends upon. -dependency_libs='$dependency_libs' - -# Names of additional weak libraries provided by this library -weak_library_names='$weak_libs' - -# Version information for $libname. -current=$current -age=$age -revision=$revision - -# Is this an already installed library? -installed=$installed - -# Should we warn about portability when linking against -modules? -shouldnotlink=$module - -# Files to dlopen/dlpreopen -dlopen='$dlfiles' -dlpreopen='$dlprefiles' - -# Directory that this library needs to be installed in: -libdir='$install_libdir'" - if test "$installed" = no && test "$need_relink" = yes; then - $ECHO >> $output "\ -relink_command=\"$relink_command\"" - fi - done - } - - # Do a symbolic link so that the libtool archive can be found in - # LD_LIBRARY_PATH before the program is installed. - func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' - ;; - esac - exit $EXIT_SUCCESS -} - -{ test "$opt_mode" = link || test "$opt_mode" = relink; } && - func_mode_link ${1+"$@"} - - -# func_mode_uninstall arg... -func_mode_uninstall () -{ - $opt_debug - RM="$nonopt" - files= - rmforce= - exit_status=0 - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - for arg - do - case $arg in - -f) func_append RM " $arg"; rmforce=yes ;; - -*) func_append RM " $arg" ;; - *) func_append files " $arg" ;; - esac - done - - test -z "$RM" && \ - func_fatal_help "you must specify an RM program" - - rmdirs= - - for file in $files; do - func_dirname "$file" "" "." - dir="$func_dirname_result" - if test "X$dir" = X.; then - odir="$objdir" - else - odir="$dir/$objdir" - fi - func_basename "$file" - name="$func_basename_result" - test "$opt_mode" = uninstall && odir="$dir" - - # Remember odir for removal later, being careful to avoid duplicates - if test "$opt_mode" = clean; then - case " $rmdirs " in - *" $odir "*) ;; - *) func_append rmdirs " $odir" ;; - esac - fi - - # Don't error if the file doesn't exist and rm -f was used. - if { test -L "$file"; } >/dev/null 2>&1 || - { test -h "$file"; } >/dev/null 2>&1 || - test -f "$file"; then - : - elif test -d "$file"; then - exit_status=1 - continue - elif test "$rmforce" = yes; then - continue - fi - - rmfiles="$file" - - case $name in - *.la) - # Possibly a libtool archive, so verify it. - if func_lalib_p "$file"; then - func_source $dir/$name - - # Delete the libtool libraries and symlinks. - for n in $library_names; do - func_append rmfiles " $odir/$n" - done - test -n "$old_library" && func_append rmfiles " $odir/$old_library" - - case "$opt_mode" in - clean) - case " $library_names " in - *" $dlname "*) ;; - *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; - esac - test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" - ;; - uninstall) - if test -n "$library_names"; then - # Do each command in the postuninstall commands. - func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' - fi - - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. - func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' - fi - # FIXME: should reinstall the best remaining shared library. - ;; - esac - fi - ;; - - *.lo) - # Possibly a libtool object, so verify it. - if func_lalib_p "$file"; then - - # Read the .lo file - func_source $dir/$name - - # Add PIC object to the list of files to remove. - if test -n "$pic_object" && - test "$pic_object" != none; then - func_append rmfiles " $dir/$pic_object" - fi - - # Add non-PIC object to the list of files to remove. - if test -n "$non_pic_object" && - test "$non_pic_object" != none; then - func_append rmfiles " $dir/$non_pic_object" - fi - fi - ;; - - *) - if test "$opt_mode" = clean ; then - noexename=$name - case $file in - *.exe) - func_stripname '' '.exe' "$file" - file=$func_stripname_result - func_stripname '' '.exe' "$name" - noexename=$func_stripname_result - # $file with .exe has already been added to rmfiles, - # add $file without .exe - func_append rmfiles " $file" - ;; - esac - # Do a test to see if this is a libtool program. - if func_ltwrapper_p "$file"; then - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - relink_command= - func_source $func_ltwrapper_scriptname_result - func_append rmfiles " $func_ltwrapper_scriptname_result" - else - relink_command= - func_source $dir/$noexename - fi - - # note $name still contains .exe if it was in $file originally - # as does the version of $file that was added into $rmfiles - func_append rmfiles " $odir/$name $odir/${name}S.${objext}" - if test "$fast_install" = yes && test -n "$relink_command"; then - func_append rmfiles " $odir/lt-$name" - fi - if test "X$noexename" != "X$name" ; then - func_append rmfiles " $odir/lt-${noexename}.c" - fi - fi - fi - ;; - esac - func_show_eval "$RM $rmfiles" 'exit_status=1' - done - - # Try to remove the ${objdir}s in the directories where we deleted files - for dir in $rmdirs; do - if test -d "$dir"; then - func_show_eval "rmdir $dir >/dev/null 2>&1" - fi - done - - exit $exit_status -} - -{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && - func_mode_uninstall ${1+"$@"} - -test -z "$opt_mode" && { - help="$generic_help" - func_fatal_help "you must specify a MODE" -} - -test -z "$exec_cmd" && \ - func_fatal_help "invalid operation mode \`$opt_mode'" - -if test -n "$exec_cmd"; then - eval exec "$exec_cmd" - exit $EXIT_FAILURE -fi - -exit $exit_status - - -# The TAGs below are defined such that we never get into a situation -# in which we disable both kinds of libraries. Given conflicting -# choices, we go for a static library, that is the most portable, -# since we can't tell whether shared libraries were disabled because -# the user asked for that or because the platform doesn't support -# them. This is particularly important on AIX, because we don't -# support having both static and shared libraries enabled at the same -# time on that platform, so we default to a shared-only configuration. -# If a disable-shared tag is given, we'll fallback to a static-only -# configuration. But we'll never go from static-only to shared-only. - -# ### BEGIN LIBTOOL TAG CONFIG: disable-shared -build_libtool_libs=no -build_old_libs=yes -# ### END LIBTOOL TAG CONFIG: disable-shared - -# ### BEGIN LIBTOOL TAG CONFIG: disable-static -build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` -# ### END LIBTOOL TAG CONFIG: disable-static - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: -# vi:sw=2 - diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/mkinstalldirs b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/mkinstalldirs deleted file mode 100755 index c5291db..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/conftools/mkinstalldirs +++ /dev/null @@ -1,40 +0,0 @@ -#! /bin/sh -# mkinstalldirs --- make directory hierarchy -# Author: Noah Friedman -# Created: 1993-05-16 -# Public domain - -# $Id: mkinstalldirs,v 1.1 2000/09/18 16:26:21 coopercc Exp $ - -errstatus=0 - -for file -do - set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` - shift - - pathcomp= - for d - do - pathcomp="$pathcomp$d" - case "$pathcomp" in - -* ) pathcomp=./$pathcomp ;; - esac - - if test ! -d "$pathcomp"; then - echo "mkdir $pathcomp" - - mkdir "$pathcomp" || lasterr=$? - - if test ! -d "$pathcomp"; then - errstatus=$lasterr - fi - fi - - pathcomp="$pathcomp/" - done -done - -exit $errstatus - -# mkinstalldirs ends here diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/doc/expat.png b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/doc/expat.png deleted file mode 100644 index 5bc0726cfd8508d0aa53cf53486b0330780b5f21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1027 zcmV+e1pNDnP)=T+4e4Js00002VoOIv z0RM-N%)bBt1B6LLK~!ko?U>t@>mUq8)d+=9h#H{~3Q;2}M1^oacv#|LJI>6kWL^9- zPA0}%;&3E@^wk$^{EffyH~z-o_#1!YZ~TqF@i+dTUID;=F}?$c-;2)xAis?t0001j zNt%-%z{k7Vc?VxI{*k8u0Q6v>*t5c2?Yt$PXw%PjDsGSBpo5^>+Idg=&ZOT1xQ8it zs-5@nP5R^goLSTX|Gswa;GZ!0BmMHiOV9CN(9ShJdpvizl70_>=|}LJc3hA*@uO2z zLWqbY!`nd;DbHjK5iuo30Ps=$p3nn;LpsB6(+B{8pW{n(01aP?QUJX4<{6R$U_JW) zX;SU{%D(ckm??#nEW+ z3XW&yX|=z!mNR^r^i4H@$tv#fdGSjnZ?aNtwTnA^*7%yJESEWc9BQ!gKqH75e#shWuW7Wm8RR|3FG{7K8MEuu4uR_# zIO{m=qZz|-nH=gjrMh+%n?(}|gI&XArp#V9+VyqWuwC@~LFu(Nx`=H{PAXZfYFBIY zQ3qA-5y2@Xwk09?Ct)b{@%e5`!m-=JzG#W*bQEdEk6k^Jw%aL2m93!;i=%cfH!C;x zy3t|V1A - - - - - Expat XML Parser - - - - - - - - - - - - - - -
(Expat logo)
Release 2.0.1
-

- -

Expat is a library, written in C, for parsing XML documents. It's -the underlying XML parser for the open source Mozilla project, Perl's -XML::Parser, Python's xml.parsers.expat, and -other open-source XML parsers.

- -

This library is the creation of James Clark, who's also given us -groff (an nroff look-alike), Jade (an implemention of ISO's DSSSL -stylesheet language for SGML), XP (a Java XML parser package), XT (a -Java XSL engine). James was also the technical lead on the XML -Working Group at W3C that produced the XML specification.

- -

This is free software, licensed under the MIT/X Consortium license. You may download it -from the Expat home page. -

- -

The bulk of this document was originally commissioned as an article -by XML.com. They graciously allowed -Clark Cooper to retain copyright and to distribute it with Expat. -This version has been substantially extended to include documentation -on features which have been added since the original article was -published, and additional information on using the original -interface.

- -
-

Table of Contents

- - -
-

Overview

- -

Expat is a stream-oriented parser. You register callback (or -handler) functions with the parser and then start feeding it the -document. As the parser recognizes parts of the document, it will -call the appropriate handler for that part (if you've registered one.) -The document is fed to the parser in pieces, so you can start parsing -before you have all the document. This also allows you to parse really -huge documents that won't fit into memory.

- -

Expat can be intimidating due to the many kinds of handlers and -options you can set. But you only need to learn four functions in -order to do 90% of what you'll want to do with it:

- -
- -
XML_ParserCreate
-
Create a new parser object.
- -
XML_SetElementHandler
-
Set handlers for start and end tags.
- -
XML_SetCharacterDataHandler
-
Set handler for text.
- -
XML_Parse
-
Pass a buffer full of document to the parser
-
- -

These functions and others are described in the reference part of this document. The reference -section also describes in detail the parameters passed to the -different types of handlers.

- -

Let's look at a very simple example program that only uses 3 of the -above functions (it doesn't need to set a character handler.) The -program outline.c prints an -element outline, indenting child elements to distinguish them from the -parent element that contains them. The start handler does all the -work. It prints two indenting spaces for every level of ancestor -elements, then it prints the element and attribute -information. Finally it increments the global Depth -variable.

- -
-int Depth;
-
-void XMLCALL
-start(void *data, const char *el, const char **attr) {
-  int i;
-
-  for (i = 0; i < Depth; i++)
-    printf("  ");
-
-  printf("%s", el);
-
-  for (i = 0; attr[i]; i += 2) {
-    printf(" %s='%s'", attr[i], attr[i + 1]);
-  }
-
-  printf("\n");
-  Depth++;
-}  /* End of start handler */
-
- -

The end tag simply does the bookkeeping work of decrementing -Depth.

-
-void XMLCALL
-end(void *data, const char *el) {
-  Depth--;
-}  /* End of end handler */
-
- -

Note the XMLCALL annotation used for the callbacks. -This is used to ensure that the Expat and the callbacks are using the -same calling convention in case the compiler options used for Expat -itself and the client code are different. Expat tries not to care -what the default calling convention is, though it may require that it -be compiled with a default convention of "cdecl" on some platforms. -For code which uses Expat, however, the calling convention is -specified by the XMLCALL annotation on most platforms; -callbacks should be defined using this annotation.

- -

The XMLCALL annotation was added in Expat 1.95.7, but -existing working Expat applications don't need to add it (since they -are already using the "cdecl" calling convention, or they wouldn't be -working). The annotation is only needed if the default calling -convention may be something other than "cdecl". To use the annotation -safely with older versions of Expat, you can conditionally define it -after including Expat's header file:

- -
-#include <expat.h>
-
-#ifndef XMLCALL
-#if defined(_MSC_EXTENSIONS) && !defined(__BEOS__) && !defined(__CYGWIN__)
-#define XMLCALL __cdecl
-#elif defined(__GNUC__)
-#define XMLCALL __attribute__((cdecl))
-#else
-#define XMLCALL
-#endif
-#endif
-
- -

After creating the parser, the main program just has the job of -shoveling the document to the parser so that it can do its work.

- -
-

Building and Installing Expat

- -

The Expat distribution comes as a compressed (with GNU gzip) tar -file. You may download the latest version from Source Forge. After -unpacking this, cd into the directory. Then follow either the Win32 -directions or Unix directions below.

- -

Building under Win32

- -

If you're using the GNU compiler under cygwin, follow the Unix -directions in the next section. Otherwise if you have Microsoft's -Developer Studio installed, then from Windows Explorer double-click on -"expat.dsp" in the lib directory and build and install in the usual -manner.

- -

Alternatively, you may download the Win32 binary package that -contains the "expat.h" include file and a pre-built DLL.

- -

Building under Unix (or GNU)

- -

First you'll need to run the configure shell script in order to -configure the Makefiles and headers for your system.

- -

If you're happy with all the defaults that configure picks for you, -and you have permission on your system to install into /usr/local, you -can install Expat with this sequence of commands:

- -
-./configure
-make
-make install
-
- -

There are some options that you can provide to this script, but the -only one we'll mention here is the --prefix option. You -can find out all the options available by running configure with just -the --help option.

- -

By default, the configure script sets things up so that the library -gets installed in /usr/local/lib and the associated -header file in /usr/local/include. But if you were to -give the option, --prefix=/home/me/mystuff, then the -library and header would get installed in -/home/me/mystuff/lib and -/home/me/mystuff/include respectively.

- -

Configuring Expat Using the Pre-Processor

- -

Expat's feature set can be configured using a small number of -pre-processor definitions. The definition of this symbols does not -affect the set of entry points for Expat, only the behavior of the API -and the definition of character types in the case of -XML_UNICODE_WCHAR_T. The symbols are:

- -
-
XML_DTD
-
Include support for using and reporting DTD-based content. If -this is defined, default attribute values from an external DTD subset -are reported and attribute value normalization occurs based on the -type of attributes defined in the external subset. Without -this, Expat has a smaller memory footprint and can be faster, but will -not load external entities or process conditional sections. This does -not affect the set of functions available in the API.
- -
XML_NS
-
When defined, support for the Namespaces in XML -specification is included.
- -
XML_UNICODE
-
When defined, character data reported to the application is -encoded in UTF-16 using wide characters of the type -XML_Char. This is implied if -XML_UNICODE_WCHAR_T is defined.
- -
XML_UNICODE_WCHAR_T
-
If defined, causes the XML_Char character type to be -defined using the wchar_t type; otherwise, unsigned -short is used. Defining this implies -XML_UNICODE.
- -
XML_LARGE_SIZE
-
If defined, causes the XML_Size and XML_Index -integer types to be at least 64 bits in size. This is intended to support -processing of very large input streams, where the return values of -XML_GetCurrentByteIndex, -XML_GetCurrentLineNumber and -XML_GetCurrentColumnNumber -could overflow. It may not be supported by all compilers, and is turned -off by default.
- -
XML_CONTEXT_BYTES
-
The number of input bytes of markup context which the parser will -ensure are available for reporting via XML_GetInputContext. This is -normally set to 1024, and must be set to a positive interger. If this -is not defined, the input context will not be available and XML_GetInputContext will -always report NULL. Without this, Expat has a smaller memory -footprint and can be faster.
- -
XML_STATIC
-
On Windows, this should be set if Expat is going to be linked -statically with the code that calls it; this is required to get all -the right MSVC magic annotations correct. This is ignored on other -platforms.
- -
XML_ATTR_INFO
-
If defined, makes the the additional function XML_GetAttributeInfo available -for reporting attribute byte offsets.
-
- -
-

Using Expat

- -

Compiling and Linking Against Expat

- -

Unless you installed Expat in a location not expected by your -compiler and linker, all you have to do to use Expat in your programs -is to include the Expat header (#include <expat.h>) -in your files that make calls to it and to tell the linker that it -needs to link against the Expat library. On Unix systems, this would -usually be done with the -lexpat argument. Otherwise, -you'll need to tell the compiler where to look for the Expat header -and the linker where to find the Expat library. You may also need to -take steps to tell the operating system where to find this library at -run time.

- -

On a Unix-based system, here's what a Makefile might look like when -Expat is installed in a standard location:

- -
-CC=cc
-LDFLAGS=
-LIBS= -lexpat
-xmlapp: xmlapp.o
-        $(CC) $(LDFLAGS) -o xmlapp xmlapp.o $(LIBS)
-
- -

If you installed Expat in, say, /home/me/mystuff, then -the Makefile would look like this:

- -
-CC=cc
-CFLAGS= -I/home/me/mystuff/include
-LDFLAGS=
-LIBS= -L/home/me/mystuff/lib -lexpat
-xmlapp: xmlapp.o
-        $(CC) $(LDFLAGS) -o xmlapp xmlapp.o $(LIBS)
-
- -

You'd also have to set the environment variable -LD_LIBRARY_PATH to /home/me/mystuff/lib (or -to ${LD_LIBRARY_PATH}:/home/me/mystuff/lib if -LD_LIBRARY_PATH already has some directories in it) in order to run -your application.

- -

Expat Basics

- -

As we saw in the example in the overview, the first step in parsing -an XML document with Expat is to create a parser object. There are three functions in the Expat API for creating a -parser object. However, only two of these (XML_ParserCreate and XML_ParserCreateNS) can be used for -constructing a parser for a top-level document. The object returned -by these functions is an opaque pointer (i.e. "expat.h" declares it as -void *) to data with further internal structure. In order to free the -memory associated with this object you must call XML_ParserFree. Note that if you have -provided any user data that gets stored in the -parser, then your application is responsible for freeing it prior to -calling XML_ParserFree.

- -

The objects returned by the parser creation functions are good for -parsing only one XML document or external parsed entity. If your -application needs to parse many XML documents, then it needs to create -a parser object for each one. The best way to deal with this is to -create a higher level object that contains all the default -initialization you want for your parser objects.

- -

Walking through a document hierarchy with a stream oriented parser -will require a good stack mechanism in order to keep track of current -context. For instance, to answer the simple question, "What element -does this text belong to?" requires a stack, since the parser may have -descended into other elements that are children of the current one and -has encountered this text on the way out.

- -

The things you're likely to want to keep on a stack are the -currently opened element and it's attributes. You push this -information onto the stack in the start handler and you pop it off in -the end handler.

- -

For some tasks, it is sufficient to just keep information on what -the depth of the stack is (or would be if you had one.) The outline -program shown above presents one example. Another such task would be -skipping over a complete element. When you see the start tag for the -element you want to skip, you set a skip flag and record the depth at -which the element started. When the end tag handler encounters the -same depth, the skipped element has ended and the flag may be -cleared. If you follow the convention that the root element starts at -1, then you can use the same variable for skip flag and skip -depth.

- -
-void
-init_info(Parseinfo *info) {
-  info->skip = 0;
-  info->depth = 1;
-  /* Other initializations here */
-}  /* End of init_info */
-
-void XMLCALL
-rawstart(void *data, const char *el, const char **attr) {
-  Parseinfo *inf = (Parseinfo *) data;
-
-  if (! inf->skip) {
-    if (should_skip(inf, el, attr)) {
-      inf->skip = inf->depth;
-    }
-    else
-      start(inf, el, attr);     /* This does rest of start handling */
-  }
-
-  inf->depth++;
-}  /* End of rawstart */
-
-void XMLCALL
-rawend(void *data, const char *el) {
-  Parseinfo *inf = (Parseinfo *) data;
-
-  inf->depth--;
-
-  if (! inf->skip)
-    end(inf, el);              /* This does rest of end handling */
-
-  if (inf->skip == inf->depth)
-    inf->skip = 0;
-}  /* End rawend */
-
- -

Notice in the above example the difference in how depth is -manipulated in the start and end handlers. The end tag handler should -be the mirror image of the start tag handler. This is necessary to -properly model containment. Since, in the start tag handler, we -incremented depth after the main body of start tag code, then -in the end handler, we need to manipulate it before the main -body. If we'd decided to increment it first thing in the start -handler, then we'd have had to decrement it last thing in the end -handler.

- -

Communicating between handlers

- -

In order to be able to pass information between different handlers -without using globals, you'll need to define a data structure to hold -the shared variables. You can then tell Expat (with the XML_SetUserData function) to pass a -pointer to this structure to the handlers. This is the first -argument received by most handlers. In the reference section, an argument to a callback function is named -userData and have type void * if the user -data is passed; it will have the type XML_Parser if the -parser itself is passed. When the parser is passed, the user data may -be retrieved using XML_GetUserData.

- -

One common case where multiple calls to a single handler may need -to communicate using an application data structure is the case when -content passed to the character data handler (set by XML_SetCharacterDataHandler) needs to be accumulated. A -common first-time mistake with any of the event-oriented interfaces to -an XML parser is to expect all the text contained in an element to be -reported by a single call to the character data handler. Expat, like -many other XML parsers, reports such data as a sequence of calls; -there's no way to know when the end of the sequence is reached until a -different callback is made. A buffer referenced by the user data -structure proves both an effective and convenient place to accumulate -character data.

- - - - -

XML Version

- -

Expat is an XML 1.0 parser, and as such never complains based on -the value of the version pseudo-attribute in the XML -declaration, if present.

- -

If an application needs to check the version number (to support -alternate processing), it should use the XML_SetXmlDeclHandler function to -set a handler that uses the information in the XML declaration to -determine what to do. This example shows how to check that only a -version number of "1.0" is accepted:

- -
-static int wrong_version;
-static XML_Parser parser;
-
-static void XMLCALL
-xmldecl_handler(void            *userData,
-                const XML_Char  *version,
-                const XML_Char  *encoding,
-                int              standalone)
-{
-  static const XML_Char Version_1_0[] = {'1', '.', '0', 0};
-
-  int i;
-
-  for (i = 0; i < (sizeof(Version_1_0) / sizeof(Version_1_0[0])); ++i) {
-    if (version[i] != Version_1_0[i]) {
-      wrong_version = 1;
-      /* also clear all other handlers: */
-      XML_SetCharacterDataHandler(parser, NULL);
-      ...
-      return;
-    }
-  }
-  ...
-}
-
- -

Namespace Processing

- -

When the parser is created using the XML_ParserCreateNS, function, Expat -performs namespace processing. Under namespace processing, Expat -consumes xmlns and xmlns:... attributes, -which declare namespaces for the scope of the element in which they -occur. This means that your start handler will not see these -attributes. Your application can still be informed of these -declarations by setting namespace declaration handlers with XML_SetNamespaceDeclHandler.

- -

Element type and attribute names that belong to a given namespace -are passed to the appropriate handler in expanded form. By default -this expanded form is a concatenation of the namespace URI, the -separator character (which is the 2nd argument to XML_ParserCreateNS), and the local -name (i.e. the part after the colon). Names with undeclared prefixes -are not well-formed when namespace processing is enabled, and will -trigger an error. Unprefixed attribute names are never expanded, -and unprefixed element names are only expanded when they are in the -scope of a default namespace.

- -

However if XML_SetReturnNSTriplet has been called with a non-zero -do_nst parameter, then the expanded form for names with -an explicit prefix is a concatenation of: URI, separator, local name, -separator, prefix.

- -

You can set handlers for the start of a namespace declaration and -for the end of a scope of a declaration with the XML_SetNamespaceDeclHandler -function. The StartNamespaceDeclHandler is called prior to the start -tag handler and the EndNamespaceDeclHandler is called after the -corresponding end tag that ends the namespace's scope. The namespace -start handler gets passed the prefix and URI for the namespace. For a -default namespace declaration (xmlns='...'), the prefix will be null. -The URI will be null for the case where the default namespace is being -unset. The namespace end handler just gets the prefix for the closing -scope.

- -

These handlers are called for each declaration. So if, for -instance, a start tag had three namespace declarations, then the -StartNamespaceDeclHandler would be called three times before the start -tag handler is called, once for each declaration.

- -

Character Encodings

- -

While XML is based on Unicode, and every XML processor is required -to recognized UTF-8 and UTF-16 (1 and 2 byte encodings of Unicode), -other encodings may be declared in XML documents or entities. For the -main document, an XML declaration may contain an encoding -declaration:

-
-<?xml version="1.0" encoding="ISO-8859-2"?>
-
- -

External parsed entities may begin with a text declaration, which -looks like an XML declaration with just an encoding declaration:

-
-<?xml encoding="Big5"?>
-
- -

With Expat, you may also specify an encoding at the time of -creating a parser. This is useful when the encoding information may -come from a source outside the document itself (like a higher level -protocol.)

- -

There are four built-in encodings -in Expat:

-
    -
  • UTF-8
  • -
  • UTF-16
  • -
  • ISO-8859-1
  • -
  • US-ASCII
  • -
- -

Anything else discovered in an encoding declaration or in the -protocol encoding specified in the parser constructor, triggers a call -to the UnknownEncodingHandler. This handler gets passed -the encoding name and a pointer to an XML_Encoding data -structure. Your handler must fill in this structure and return -XML_STATUS_OK if it knows how to deal with the -encoding. Otherwise the handler should return -XML_STATUS_ERROR. The handler also gets passed a pointer -to an optional application data structure that you may indicate when -you set the handler.

- -

Expat places restrictions on character encodings that it can -support by filling in the XML_Encoding structure. -include file:

-
    -
  1. Every ASCII character that can appear in a well-formed XML document -must be represented by a single byte, and that byte must correspond to -it's ASCII encoding (except for the characters $@\^'{}~)
  2. -
  3. Characters must be encoded in 4 bytes or less.
  4. -
  5. All characters encoded must have Unicode scalar values less than or -equal to 65535 (0xFFFF)This does not apply to the built-in support -for UTF-16 and UTF-8
  6. -
  7. No character may be encoded by more that one distinct sequence of -bytes
  8. -
- -

XML_Encoding contains an array of integers that -correspond to the 1st byte of an encoding sequence. If the value in -the array for a byte is zero or positive, then the byte is a single -byte encoding that encodes the Unicode scalar value contained in the -array. A -1 in this array indicates a malformed byte. If the value is --2, -3, or -4, then the byte is the beginning of a 2, 3, or 4 byte -sequence respectively. Multi-byte sequences are sent to the convert -function pointed at in the XML_Encoding structure. This -function should return the Unicode scalar value for the sequence or -1 -if the sequence is malformed.

- -

One pitfall that novice Expat users are likely to fall into is that -although Expat may accept input in various encodings, the strings that -it passes to the handlers are always encoded in UTF-8 or UTF-16 -(depending on how Expat was compiled). Your application is responsible -for any translation of these strings into other encodings.

- -

Handling External Entity References

- -

Expat does not read or parse external entities directly. Note that -any external DTD is a special case of an external entity. If you've -set no ExternalEntityRefHandler, then external entity -references are silently ignored. Otherwise, it calls your handler with -the information needed to read and parse the external entity.

- -

Your handler isn't actually responsible for parsing the entity, but -it is responsible for creating a subsidiary parser with XML_ExternalEntityParserCreate that will do the job. This -returns an instance of XML_Parser that has handlers and -other data structures initialized from the parent parser. You may then -use XML_Parse or XML_ParseBuffer calls against this -parser. Since external entities my refer to other external entities, -your handler should be prepared to be called recursively.

- -

Parsing DTDs

- -

In order to parse parameter entities, before starting the parse, -you must call XML_SetParamEntityParsing with one of the following -arguments:

-
-
XML_PARAM_ENTITY_PARSING_NEVER
-
Don't parse parameter entities or the external subset
-
XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE
-
Parse parameter entites and the external subset unless -standalone was set to "yes" in the XML declaration.
-
XML_PARAM_ENTITY_PARSING_ALWAYS
-
Always parse parameter entities and the external subset
-
- -

In order to read an external DTD, you also have to set an external -entity reference handler as described above.

- -

Temporarily Stopping Parsing

- -

Expat 1.95.8 introduces a new feature: its now possible to stop -parsing temporarily from within a handler function, even if more data -has already been passed into the parser. Applications for this -include

- -
    -
  • Supporting the XInclude specification.
  • - -
  • Delaying further processing until additional information is - available from some other source.
  • - -
  • Adjusting processor load as task priorities shift within an - application.
  • - -
  • Stopping parsing completely (simply free or reset the parser - instead of resuming in the outer parsing loop). This can be useful - if a application-domain error is found in the XML being parsed or if - the result of the parse is determined not to be useful after - all.
  • -
- -

To take advantage of this feature, the main parsing loop of an -application needs to support this specifically. It cannot be -supported with a parsing loop compatible with Expat 1.95.7 or -earlier (though existing loops will continue to work without -supporting the stop/resume feature).

- -

An application that uses this feature for a single parser will have -the rough structure (in pseudo-code):

- -
-fd = open_input()
-p = create_parser()
-
-if parse_xml(p, fd) {
-  /* suspended */
-
-  int suspended = 1;
-
-  while (suspended) {
-    do_something_else()
-    if ready_to_resume() {
-      suspended = continue_parsing(p, fd);
-    }
-  }
-}
-
- -

An application that may resume any of several parsers based on -input (either from the XML being parsed or some other source) will -certainly have more interesting control structures.

- -

This C function could be used for the parse_xml -function mentioned in the pseudo-code above:

- -
-#define BUFF_SIZE 10240
-
-/* Parse a document from the open file descriptor 'fd' until the parse
-   is complete (the document has been completely parsed, or there's
-   been an error), or the parse is stopped.  Return non-zero when
-   the parse is merely suspended.
-*/
-int
-parse_xml(XML_Parser p, int fd)
-{
-  for (;;) {
-    int last_chunk;
-    int bytes_read;
-    enum XML_Status status;
-
-    void *buff = XML_GetBuffer(p, BUFF_SIZE);
-    if (buff == NULL) {
-      /* handle error... */
-      return 0;
-    }
-    bytes_read = read(fd, buff, BUFF_SIZE);
-    if (bytes_read < 0) {
-      /* handle error... */
-      return 0;
-    }
-    status = XML_ParseBuffer(p, bytes_read, bytes_read == 0);
-    switch (status) {
-      case XML_STATUS_ERROR:
-        /* handle error... */
-        return 0;
-      case XML_STATUS_SUSPENDED:
-        return 1;
-    }
-    if (bytes_read == 0)
-      return 0;
-  }
-}
-
- -

The corresponding continue_parsing function is -somewhat simpler, since it only need deal with the return code from -XML_ResumeParser; it can -delegate the input handling to the parse_xml -function:

- -
-/* Continue parsing a document which had been suspended.  The 'p' and
-   'fd' arguments are the same as passed to parse_xml().  Return
-   non-zero when the parse is suspended.
-*/
-int
-continue_parsing(XML_Parser p, int fd)
-{
-  enum XML_Status status = XML_ResumeParser(p);
-  switch (status) {
-    case XML_STATUS_ERROR:
-      /* handle error... */
-      return 0;
-    case XML_ERROR_NOT_SUSPENDED:
-      /* handle error... */
-      return 0;.
-    case XML_STATUS_SUSPENDED:
-      return 1;
-  }
-  return parse_xml(p, fd);
-}
-
- -

Now that we've seen what a mess the top-level parsing loop can -become, what have we gained? Very simply, we can now use the XML_StopParser function to stop -parsing, without having to go to great lengths to avoid additional -processing that we're expecting to ignore. As a bonus, we get to stop -parsing temporarily, and come back to it when we're -ready.

- -

To stop parsing from a handler function, use the XML_StopParser function. This function -takes two arguments; the parser being stopped and a flag indicating -whether the parse can be resumed in the future.

- - - - -
- - -

Expat Reference

- -

Parser Creation

- -
-XML_Parser XMLCALL
-XML_ParserCreate(const XML_Char *encoding);
-
-
-Construct a new parser. If encoding is non-null, it specifies a -character encoding to use for the document. This overrides the document -encoding declaration. There are four built-in encodings: -
    -
  • US-ASCII
  • -
  • UTF-8
  • -
  • UTF-16
  • -
  • ISO-8859-1
  • -
-Any other value will invoke a call to the UnknownEncodingHandler. -
- -
-XML_Parser XMLCALL
-XML_ParserCreateNS(const XML_Char *encoding,
-                   XML_Char sep);
-
-
-Constructs a new parser that has namespace processing in effect. Namespace -expanded element names and attribute names are returned as a concatenation -of the namespace URI, sep, and the local part of the name. This -means that you should pick a character for sep that can't be part -of an URI. Since Expat does not check namespace URIs for conformance, the -only safe choice for a namespace separator is a character that is illegal -in XML. For instance, '\xFF' is not legal in UTF-8, and -'\xFFFF' is not legal in UTF-16. There is a special case when -sep is the null character '\0': the namespace URI and -the local part will be concatenated without any separator - this is intended -to support RDF processors. It is a programming error to use the null separator -with namespace triplets.
- -
-XML_Parser XMLCALL
-XML_ParserCreate_MM(const XML_Char *encoding,
-                    const XML_Memory_Handling_Suite *ms,
-		    const XML_Char *sep);
-
-
-typedef struct {
-  void *(XMLCALL *malloc_fcn)(size_t size);
-  void *(XMLCALL *realloc_fcn)(void *ptr, size_t size);
-  void (XMLCALL *free_fcn)(void *ptr);
-} XML_Memory_Handling_Suite;
-
-
-

Construct a new parser using the suite of memory handling functions -specified in ms. If ms is NULL, then use the -standard set of memory management functions. If sep is -non NULL, then namespace processing is enabled in the created parser -and the character pointed at by sep is used as the separator between -the namespace URI and the local part of the name.

-
- -
-XML_Parser XMLCALL
-XML_ExternalEntityParserCreate(XML_Parser p,
-                               const XML_Char *context,
-                               const XML_Char *encoding);
-
-
-Construct a new XML_Parser object for parsing an external -general entity. Context is the context argument passed in a call to a -ExternalEntityRefHandler. Other state information such as handlers, -user data, namespace processing is inherited from the parser passed as -the 1st argument. So you shouldn't need to call any of the behavior -changing functions on this parser (unless you want it to act -differently than the parent parser). -
- -
-void XMLCALL
-XML_ParserFree(XML_Parser p);
-
-
-Free memory used by the parser. Your application is responsible for -freeing any memory associated with user data. -
- -
-XML_Bool XMLCALL
-XML_ParserReset(XML_Parser p,
-                const XML_Char *encoding);
-
-
-Clean up the memory structures maintained by the parser so that it may -be used again. After this has been called, parser is -ready to start parsing a new document. All handlers are cleared from -the parser, except for the unknownEncodingHandler. The parser's external -state is re-initialized except for the values of ns and ns_triplets. -This function may not be used on a parser created using XML_ExternalEntityParserCreate; it will return XML_FALSE in that case. Returns -XML_TRUE on success. Your application is responsible for -dealing with any memory associated with user data. -
- -

Parsing

- -

To state the obvious: the three parsing functions XML_Parse, -XML_ParseBuffer and -XML_GetBuffer must not be called from within a handler -unless they operate on a separate parser instance, that is, one that -did not call the handler. For example, it is OK to call the parsing -functions from within an XML_ExternalEntityRefHandler, -if they apply to the parser created by -XML_ExternalEntityParserCreate.

- -

Note: the len argument passed to these functions -should be considerably less than the maximum value for an integer, -as it could create an integer overflow situation if the added -lengths of a buffer and the unprocessed portion of the previous buffer -exceed the maximum integer value. Input data at the end of a buffer -will remain unprocessed if it is part of an XML token for which the -end is not part of that buffer.

- -
-enum XML_Status XMLCALL
-XML_Parse(XML_Parser p,
-          const char *s,
-          int len,
-          int isFinal);
-
-
-enum XML_Status {
-  XML_STATUS_ERROR = 0,
-  XML_STATUS_OK = 1
-};
-
-
-Parse some more of the document. The string s is a buffer -containing part (or perhaps all) of the document. The number of bytes of s -that are part of the document is indicated by len. This means -that s doesn't have to be null terminated. It also means that -if len is larger than the number of bytes in the block of -memory that s points at, then a memory fault is likely. The -isFinal parameter informs the parser that this is the last -piece of the document. Frequently, the last piece is empty (i.e. -len is zero.) -If a parse error occurred, it returns XML_STATUS_ERROR. -Otherwise it returns XML_STATUS_OK value. -
- -
-enum XML_Status XMLCALL
-XML_ParseBuffer(XML_Parser p,
-                int len,
-                int isFinal);
-
-
-This is just like XML_Parse, -except in this case Expat provides the buffer. By obtaining the -buffer from Expat with the XML_GetBuffer function, the application can avoid double -copying of the input. -
- -
-void * XMLCALL
-XML_GetBuffer(XML_Parser p,
-              int len);
-
-
-Obtain a buffer of size len to read a piece of the document -into. A NULL value is returned if Expat can't allocate enough memory for -this buffer. This has to be called prior to every call to -XML_ParseBuffer. A -typical use would look like this: - -
-for (;;) {
-  int bytes_read;
-  void *buff = XML_GetBuffer(p, BUFF_SIZE);
-  if (buff == NULL) {
-    /* handle error */
-  }
-
-  bytes_read = read(docfd, buff, BUFF_SIZE);
-  if (bytes_read < 0) {
-    /* handle error */
-  }
-
-  if (! XML_ParseBuffer(p, bytes_read, bytes_read == 0)) {
-    /* handle parse error */
-  }
-
-  if (bytes_read == 0)
-    break;
-}
-
-
- -
-enum XML_Status XMLCALL
-XML_StopParser(XML_Parser p,
-               XML_Bool resumable);
-
-
- -

Stops parsing, causing XML_Parse or XML_ParseBuffer to return. Must be called from within a -call-back handler, except when aborting (when resumable -is XML_FALSE) an already suspended parser. Some -call-backs may still follow because they would otherwise get -lost, including -

    -
  • the end element handler for empty elements when stopped in the - start element handler,
  • -
  • the end namespace declaration handler when stopped in the end - element handler,
  • -
  • the character data handler when stopped in the character data handler - while making multiple call-backs on a contiguous chunk of characters,
  • -
-and possibly others.

- -

This can be called from most handlers, including DTD related -call-backs, except when parsing an external parameter entity and -resumable is XML_TRUE. Returns -XML_STATUS_OK when successful, -XML_STATUS_ERROR otherwise. The possible error codes -are:

-
-
XML_ERROR_SUSPENDED
-
when suspending an already suspended parser.
-
XML_ERROR_FINISHED
-
when the parser has already finished.
-
XML_ERROR_SUSPEND_PE
-
when suspending while parsing an external PE.
-
- -

Since the stop/resume feature requires application support in the -outer parsing loop, it is an error to call this function for a parser -not being handled appropriately; see Temporarily Stopping Parsing for more information.

- -

When resumable is XML_TRUE then parsing -is suspended, that is, XML_Parse and XML_ParseBuffer return XML_STATUS_SUSPENDED. -Otherwise, parsing is aborted, that is, XML_Parse and XML_ParseBuffer return -XML_STATUS_ERROR with error code -XML_ERROR_ABORTED.

- -

Note: -This will be applied to the current parser instance only, that is, if -there is a parent parser then it will continue parsing when the -external entity reference handler returns. It is up to the -implementation of that handler to call XML_StopParser on the parent parser -(recursively), if one wants to stop parsing altogether.

- -

When suspended, parsing can be resumed by calling XML_ResumeParser.

- -

New in Expat 1.95.8.

-
- -
-enum XML_Status XMLCALL
-XML_ResumeParser(XML_Parser p);
-
-
-

Resumes parsing after it has been suspended with XML_StopParser. Must not be called from -within a handler call-back. Returns same status codes as XML_Parse or XML_ParseBuffer. An additional error -code, XML_ERROR_NOT_SUSPENDED, will be returned if the -parser was not currently suspended.

- -

Note: -This must be called on the most deeply nested child parser instance -first, and on its parent parser only after the child parser has -finished, to be applied recursively until the document entity's parser -is restarted. That is, the parent parser will not resume by itself -and it is up to the application to call XML_ResumeParser on it at the -appropriate moment.

- -

New in Expat 1.95.8.

-
- -
-void XMLCALL
-XML_GetParsingStatus(XML_Parser p,
-                     XML_ParsingStatus *status);
-
-
-enum XML_Parsing {
-  XML_INITIALIZED,
-  XML_PARSING,
-  XML_FINISHED,
-  XML_SUSPENDED
-};
-
-typedef struct {
-  enum XML_Parsing parsing;
-  XML_Bool finalBuffer;
-} XML_ParsingStatus;
-
-
-

Returns status of parser with respect to being initialized, -parsing, finished, or suspended, and whether the final buffer is being -processed. The status parameter must not be -NULL.

- -

New in Expat 1.95.8.

-
- - -

Handler Setting

- -

Although handlers are typically set prior to parsing and left alone, an -application may choose to set or change the handler for a parsing event -while the parse is in progress. For instance, your application may choose -to ignore all text not descended from a para element. One -way it could do this is to set the character handler when a para start tag -is seen, and unset it for the corresponding end tag.

- -

A handler may be unset by providing a NULL pointer to the -appropriate handler setter. None of the handler setting functions have -a return value.

- -

Your handlers will be receiving strings in arrays of type -XML_Char. This type is conditionally defined in expat.h as -either char, wchar_t or unsigned short. -The former implies UTF-8 encoding, the latter two imply UTF-16 encoding. -Note that you'll receive them in this form independent of the original -encoding of the document.

- -
-
-void XMLCALL
-XML_SetStartElementHandler(XML_Parser p,
-                           XML_StartElementHandler start);
-
-
-typedef void
-(XMLCALL *XML_StartElementHandler)(void *userData,
-                                   const XML_Char *name,
-                                   const XML_Char **atts);
-
-

Set handler for start (and empty) tags. Attributes are passed to the start -handler as a pointer to a vector of char pointers. Each attribute seen in -a start (or empty) tag occupies 2 consecutive places in this vector: the -attribute name followed by the attribute value. These pairs are terminated -by a null pointer.

-

Note that an empty tag generates a call to both start and end handlers -(in that order).

-
- -
-
-void XMLCALL
-XML_SetEndElementHandler(XML_Parser p,
-                         XML_EndElementHandler);
-
-
-typedef void
-(XMLCALL *XML_EndElementHandler)(void *userData,
-                                 const XML_Char *name);
-
-

Set handler for end (and empty) tags. As noted above, an empty tag -generates a call to both start and end handlers.

-
- -
-
-void XMLCALL
-XML_SetElementHandler(XML_Parser p,
-                      XML_StartElementHandler start,
-                      XML_EndElementHandler end);
-
-

Set handlers for start and end tags with one call.

-
- -
-
-void XMLCALL
-XML_SetCharacterDataHandler(XML_Parser p,
-                            XML_CharacterDataHandler charhndl)
-
-
-typedef void
-(XMLCALL *XML_CharacterDataHandler)(void *userData,
-                                    const XML_Char *s,
-                                    int len);
-
-

Set a text handler. The string your handler receives -is NOT nul-terminated. You have to use the length argument -to deal with the end of the string. A single block of contiguous text -free of markup may still result in a sequence of calls to this handler. -In other words, if you're searching for a pattern in the text, it may -be split across calls to this handler. Note: Setting this handler to NULL -may NOT immediately terminate call-backs if the parser is currently -processing such a single block of contiguous markup-free text, as the parser -will continue calling back until the end of the block is reached.

-
- -
-
-void XMLCALL
-XML_SetProcessingInstructionHandler(XML_Parser p,
-                                    XML_ProcessingInstructionHandler proc)
-
-
-typedef void
-(XMLCALL *XML_ProcessingInstructionHandler)(void *userData,
-                                            const XML_Char *target,
-                                            const XML_Char *data);
-
-
-

Set a handler for processing instructions. The target is the first word -in the processing instruction. The data is the rest of the characters in -it after skipping all whitespace after the initial word.

-
- -
-
-void XMLCALL
-XML_SetCommentHandler(XML_Parser p,
-                      XML_CommentHandler cmnt)
-
-
-typedef void
-(XMLCALL *XML_CommentHandler)(void *userData,
-                              const XML_Char *data);
-
-

Set a handler for comments. The data is all text inside the comment -delimiters.

-
- -
-
-void XMLCALL
-XML_SetStartCdataSectionHandler(XML_Parser p,
-                                XML_StartCdataSectionHandler start);
-
-
-typedef void
-(XMLCALL *XML_StartCdataSectionHandler)(void *userData);
-
-

Set a handler that gets called at the beginning of a CDATA section.

-
- -
-
-void XMLCALL
-XML_SetEndCdataSectionHandler(XML_Parser p,
-                              XML_EndCdataSectionHandler end);
-
-
-typedef void
-(XMLCALL *XML_EndCdataSectionHandler)(void *userData);
-
-

Set a handler that gets called at the end of a CDATA section.

-
- -
-
-void XMLCALL
-XML_SetCdataSectionHandler(XML_Parser p,
-                           XML_StartCdataSectionHandler start,
-                           XML_EndCdataSectionHandler end)
-
-

Sets both CDATA section handlers with one call.

-
- -
-
-void XMLCALL
-XML_SetDefaultHandler(XML_Parser p,
-                      XML_DefaultHandler hndl)
-
-
-typedef void
-(XMLCALL *XML_DefaultHandler)(void *userData,
-                              const XML_Char *s,
-                              int len);
-
- -

Sets a handler for any characters in the document which wouldn't -otherwise be handled. This includes both data for which no handlers -can be set (like some kinds of DTD declarations) and data which could -be reported but which currently has no handler set. The characters -are passed exactly as they were present in the XML document except -that they will be encoded in UTF-8 or UTF-16. Line boundaries are not -normalized. Note that a byte order mark character is not passed to the -default handler. There are no guarantees about how characters are -divided between calls to the default handler: for example, a comment -might be split between multiple calls. Setting the handler with -this call has the side effect of turning off expansion of references -to internally defined general entities. Instead these references are -passed to the default handler.

- -

See also XML_DefaultCurrent.

-
- -
-
-void XMLCALL
-XML_SetDefaultHandlerExpand(XML_Parser p,
-                            XML_DefaultHandler hndl)
-
-
-typedef void
-(XMLCALL *XML_DefaultHandler)(void *userData,
-                              const XML_Char *s,
-                              int len);
-
-

This sets a default handler, but doesn't inhibit the expansion of -internal entity references. The entity reference will not be passed -to the default handler.

- -

See also XML_DefaultCurrent.

-
- -
-
-void XMLCALL
-XML_SetExternalEntityRefHandler(XML_Parser p,
-                                XML_ExternalEntityRefHandler hndl)
-
-
-typedef int
-(XMLCALL *XML_ExternalEntityRefHandler)(XML_Parser p,
-                                        const XML_Char *context,
-                                        const XML_Char *base,
-                                        const XML_Char *systemId,
-                                        const XML_Char *publicId);
-
-

Set an external entity reference handler. This handler is also -called for processing an external DTD subset if parameter entity parsing -is in effect. (See -XML_SetParamEntityParsing.)

- -

The context parameter specifies the parsing context in -the format expected by the context argument to XML_ExternalEntityParserCreate. code is -valid only until the handler returns, so if the referenced entity is -to be parsed later, it must be copied. context is NULL -only when the entity is a parameter entity, which is how one can -differentiate between general and parameter entities.

- -

The base parameter is the base to use for relative -system identifiers. It is set by XML_SetBase and may be NULL. The -publicId parameter is the public id given in the entity -declaration and may be NULL. systemId is the system -identifier specified in the entity declaration and is never NULL.

- -

There are a couple of ways in which this handler differs from -others. First, this handler returns a status indicator (an -integer). XML_STATUS_OK should be returned for successful -handling of the external entity reference. Returning -XML_STATUS_ERROR indicates failure, and causes the -calling parser to return an -XML_ERROR_EXTERNAL_ENTITY_HANDLING error.

- -

Second, instead of having the user data as its first argument, it -receives the parser that encountered the entity reference. This, along -with the context parameter, may be used as arguments to a call to -XML_ExternalEntityParserCreate. Using the returned -parser, the body of the external entity can be recursively parsed.

- -

Since this handler may be called recursively, it should not be saving -information into global or static variables.

-
- -
-void XMLCALL
-XML_SetExternalEntityRefHandlerArg(XML_Parser p,
-                                   void *arg)
-
-
-

Set the argument passed to the ExternalEntityRefHandler. If -arg is not NULL, it is the new value passed to the -handler set using XML_SetExternalEntityRefHandler; if arg is -NULL, the argument passed to the handler function will be the parser -object itself.

- -

Note: -The type of arg and the type of the first argument to the -ExternalEntityRefHandler do not match. This function takes a -void * to be passed to the handler, while the handler -accepts an XML_Parser. This is a historical accident, -but will not be corrected before Expat 2.0 (at the earliest) to avoid -causing compiler warnings for code that's known to work with this -API. It is the responsibility of the application code to know the -actual type of the argument passed to the handler and to manage it -properly.

-
- -
-
-void XMLCALL
-XML_SetSkippedEntityHandler(XML_Parser p,
-                            XML_SkippedEntityHandler handler)
-
-
-typedef void
-(XMLCALL *XML_SkippedEntityHandler)(void *userData,
-                                    const XML_Char *entityName,
-                                    int is_parameter_entity);
-
-

Set a skipped entity handler. This is called in two situations:

-
    -
  1. An entity reference is encountered for which no declaration - has been read and this is not an error.
  2. -
  3. An internal entity reference is read, but not expanded, because - XML_SetDefaultHandler - has been called.
  4. -
-

The is_parameter_entity argument will be non-zero for -a parameter entity and zero for a general entity.

Note: skipped -parameter entities in declarations and skipped general entities in -attribute values cannot be reported, because the event would be out of -sync with the reporting of the declarations or attribute values

-
- -
-
-void XMLCALL
-XML_SetUnknownEncodingHandler(XML_Parser p,
-                              XML_UnknownEncodingHandler enchandler,
-			      void *encodingHandlerData)
-
-
-typedef int
-(XMLCALL *XML_UnknownEncodingHandler)(void *encodingHandlerData,
-                                      const XML_Char *name,
-                                      XML_Encoding *info);
-
-typedef struct {
-  int map[256];
-  void *data;
-  int (XMLCALL *convert)(void *data, const char *s);
-  void (XMLCALL *release)(void *data);
-} XML_Encoding;
-
-

Set a handler to deal with encodings other than the built in set. This should be done before -XML_Parse or XML_ParseBuffer have been called on the -given parser.

If the handler knows how to deal with an encoding -with the given name, it should fill in the info data -structure and return XML_STATUS_OK. Otherwise it -should return XML_STATUS_ERROR. The handler will be called -at most once per parsed (external) entity. The optional application -data pointer encodingHandlerData will be passed back to -the handler.

- -

The map array contains information for every possible possible leading -byte in a byte sequence. If the corresponding value is >= 0, then it's -a single byte sequence and the byte encodes that Unicode value. If the -value is -1, then that byte is invalid as the initial byte in a sequence. -If the value is -n, where n is an integer > 1, then n is the number of -bytes in the sequence and the actual conversion is accomplished by a -call to the function pointed at by convert. This function may return -1 -if the sequence itself is invalid. The convert pointer may be null if -there are only single byte codes. The data parameter passed to the convert -function is the data pointer from XML_Encoding. The -string s is NOT nul-terminated and points at the sequence of -bytes to be converted.

- -

The function pointed at by release is called by the -parser when it is finished with the encoding. It may be NULL.

-
- -
-
-void XMLCALL
-XML_SetStartNamespaceDeclHandler(XML_Parser p,
-			         XML_StartNamespaceDeclHandler start);
-
-
-typedef void
-(XMLCALL *XML_StartNamespaceDeclHandler)(void *userData,
-                                         const XML_Char *prefix,
-                                         const XML_Char *uri);
-
-

Set a handler to be called when a namespace is declared. Namespace -declarations occur inside start tags. But the namespace declaration start -handler is called before the start tag handler for each namespace declared -in that start tag.

-
- -
-
-void XMLCALL
-XML_SetEndNamespaceDeclHandler(XML_Parser p,
-			       XML_EndNamespaceDeclHandler end);
-
-
-typedef void
-(XMLCALL *XML_EndNamespaceDeclHandler)(void *userData,
-                                       const XML_Char *prefix);
-
-

Set a handler to be called when leaving the scope of a namespace -declaration. This will be called, for each namespace declaration, -after the handler for the end tag of the element in which the -namespace was declared.

-
- -
-
-void XMLCALL
-XML_SetNamespaceDeclHandler(XML_Parser p,
-                            XML_StartNamespaceDeclHandler start,
-                            XML_EndNamespaceDeclHandler end)
-
-

Sets both namespace declaration handlers with a single call.

-
- -
-
-void XMLCALL
-XML_SetXmlDeclHandler(XML_Parser p,
-		      XML_XmlDeclHandler xmldecl);
-
-
-typedef void
-(XMLCALL *XML_XmlDeclHandler)(void            *userData,
-                              const XML_Char  *version,
-                              const XML_Char  *encoding,
-                              int             standalone);
-
-

Sets a handler that is called for XML declarations and also for -text declarations discovered in external entities. The way to -distinguish is that the version parameter will be NULL -for text declarations. The encoding parameter may be NULL -for an XML declaration. The standalone argument will -contain -1, 0, or 1 indicating respectively that there was no -standalone parameter in the declaration, that it was given as no, or -that it was given as yes.

-
- -
-
-void XMLCALL
-XML_SetStartDoctypeDeclHandler(XML_Parser p,
-			       XML_StartDoctypeDeclHandler start);
-
-
-typedef void
-(XMLCALL *XML_StartDoctypeDeclHandler)(void           *userData,
-                                       const XML_Char *doctypeName,
-                                       const XML_Char *sysid,
-                                       const XML_Char *pubid,
-                                       int            has_internal_subset);
-
-

Set a handler that is called at the start of a DOCTYPE declaration, -before any external or internal subset is parsed. Both sysid -and pubid may be NULL. The has_internal_subset -will be non-zero if the DOCTYPE declaration has an internal subset.

-
- -
-
-void XMLCALL
-XML_SetEndDoctypeDeclHandler(XML_Parser p,
-			     XML_EndDoctypeDeclHandler end);
-
-
-typedef void
-(XMLCALL *XML_EndDoctypeDeclHandler)(void *userData);
-
-

Set a handler that is called at the end of a DOCTYPE declaration, -after parsing any external subset.

-
- -
-
-void XMLCALL
-XML_SetDoctypeDeclHandler(XML_Parser p,
-			  XML_StartDoctypeDeclHandler start,
-			  XML_EndDoctypeDeclHandler end);
-
-

Set both doctype handlers with one call.

-
- -
-
-void XMLCALL
-XML_SetElementDeclHandler(XML_Parser p,
-			  XML_ElementDeclHandler eldecl);
-
-
-typedef void
-(XMLCALL *XML_ElementDeclHandler)(void *userData,
-                                  const XML_Char *name,
-                                  XML_Content *model);
-
-
-enum XML_Content_Type {
-  XML_CTYPE_EMPTY = 1,
-  XML_CTYPE_ANY,
-  XML_CTYPE_MIXED,
-  XML_CTYPE_NAME,
-  XML_CTYPE_CHOICE,
-  XML_CTYPE_SEQ
-};
-
-enum XML_Content_Quant {
-  XML_CQUANT_NONE,
-  XML_CQUANT_OPT,
-  XML_CQUANT_REP,
-  XML_CQUANT_PLUS
-};
-
-typedef struct XML_cp XML_Content;
-
-struct XML_cp {
-  enum XML_Content_Type		type;
-  enum XML_Content_Quant	quant;
-  const XML_Char *		name;
-  unsigned int			numchildren;
-  XML_Content *			children;
-};
-
-

Sets a handler for element declarations in a DTD. The handler gets -called with the name of the element in the declaration and a pointer -to a structure that contains the element model. It is the -application's responsibility to free this data structure using -XML_FreeContentModel.

- -

The model argument is the root of a tree of -XML_Content nodes. If type equals -XML_CTYPE_EMPTY or XML_CTYPE_ANY, then -quant will be XML_CQUANT_NONE, and the other -fields will be zero or NULL. If type is -XML_CTYPE_MIXED, then quant will be -XML_CQUANT_NONE or XML_CQUANT_REP and -numchildren will contain the number of elements that are -allowed to be mixed in and children points to an array of -XML_Content structures that will all have type -XML_CTYPE_NAME with no quantification. Only the root node can be type -XML_CTYPE_EMPTY, XML_CTYPE_ANY, or -XML_CTYPE_MIXED.

- -

For type XML_CTYPE_NAME, the name field -points to the name and the numchildren and -children fields will be zero and NULL. The -quant field will indicate any quantifiers placed on the -name.

- -

Types XML_CTYPE_CHOICE and XML_CTYPE_SEQ -indicate a choice or sequence respectively. The -numchildren field indicates how many nodes in the choice -or sequence and children points to the nodes.

-
- -
-
-void XMLCALL
-XML_SetAttlistDeclHandler(XML_Parser p,
-                          XML_AttlistDeclHandler attdecl);
-
-
-typedef void
-(XMLCALL *XML_AttlistDeclHandler)(void           *userData,
-                                  const XML_Char *elname,
-                                  const XML_Char *attname,
-                                  const XML_Char *att_type,
-                                  const XML_Char *dflt,
-                                  int            isrequired);
-
-

Set a handler for attlist declarations in the DTD. This handler is -called for each attribute. So a single attlist declaration -with multiple attributes declared will generate multiple calls to this -handler. The elname parameter returns the name of the -element for which the attribute is being declared. The attribute name -is in the attname parameter. The attribute type is in the -att_type parameter. It is the string representing the -type in the declaration with whitespace removed.

- -

The dflt parameter holds the default value. It will be -NULL in the case of "#IMPLIED" or "#REQUIRED" attributes. You can -distinguish these two cases by checking the isrequired -parameter, which will be true in the case of "#REQUIRED" attributes. -Attributes which are "#FIXED" will have also have a true -isrequired, but they will have the non-NULL fixed value -in the dflt parameter.

-
- -
-
-void XMLCALL
-XML_SetEntityDeclHandler(XML_Parser p,
-			 XML_EntityDeclHandler handler);
-
-
-typedef void
-(XMLCALL *XML_EntityDeclHandler)(void           *userData,
-                                 const XML_Char *entityName,
-                                 int            is_parameter_entity,
-                                 const XML_Char *value,
-                                 int            value_length, 
-                                 const XML_Char *base,
-                                 const XML_Char *systemId,
-                                 const XML_Char *publicId,
-                                 const XML_Char *notationName);
-
-

Sets a handler that will be called for all entity declarations. -The is_parameter_entity argument will be non-zero in the -case of parameter entities and zero otherwise.

- -

For internal entities (<!ENTITY foo "bar">), -value will be non-NULL and systemId, -publicId, and notationName will all be NULL. -The value string is not NULL terminated; the length is -provided in the value_length parameter. Do not use -value_length to test for internal entities, since it is -legal to have zero-length values. Instead check for whether or not -value is NULL.

The notationName -argument will have a non-NULL value only for unparsed entity -declarations.

-
- -
-
-void XMLCALL
-XML_SetUnparsedEntityDeclHandler(XML_Parser p,
-                                 XML_UnparsedEntityDeclHandler h)
-
-
-typedef void
-(XMLCALL *XML_UnparsedEntityDeclHandler)(void *userData,
-                                         const XML_Char *entityName, 
-                                         const XML_Char *base,
-                                         const XML_Char *systemId,
-                                         const XML_Char *publicId,
-                                         const XML_Char *notationName);
-
-

Set a handler that receives declarations of unparsed entities. These -are entity declarations that have a notation (NDATA) field:

- -
-<!ENTITY logo SYSTEM "images/logo.gif" NDATA gif>
-
-

This handler is obsolete and is provided for backwards -compatibility. Use instead XML_SetEntityDeclHandler.

-
- -
-
-void XMLCALL
-XML_SetNotationDeclHandler(XML_Parser p,
-                           XML_NotationDeclHandler h)
-
-
-typedef void
-(XMLCALL *XML_NotationDeclHandler)(void *userData, 
-                                   const XML_Char *notationName,
-                                   const XML_Char *base,
-                                   const XML_Char *systemId,
-                                   const XML_Char *publicId);
-
-

Set a handler that receives notation declarations.

-
- -
-
-void XMLCALL
-XML_SetNotStandaloneHandler(XML_Parser p,
-                            XML_NotStandaloneHandler h)
-
-
-typedef int 
-(XMLCALL *XML_NotStandaloneHandler)(void *userData);
-
-

Set a handler that is called if the document is not "standalone". -This happens when there is an external subset or a reference to a -parameter entity, but does not have standalone set to "yes" in an XML -declaration. If this handler returns XML_STATUS_ERROR, -then the parser will throw an XML_ERROR_NOT_STANDALONE -error.

-
- -

Parse position and error reporting functions

- -

These are the functions you'll want to call when the parse -functions return XML_STATUS_ERROR (a parse error has -occurred), although the position reporting functions are useful outside -of errors. The position reported is the byte position (in the original -document or entity encoding) of the first of the sequence of -characters that generated the current event (or the error that caused -the parse functions to return XML_STATUS_ERROR.) The -exceptions are callbacks trigged by declarations in the document -prologue, in which case they exact position reported is somewhere in the -relevant markup, but not necessarily as meaningful as for other -events.

- -

The position reporting functions are accurate only outside of the -DTD. In other words, they usually return bogus information when -called from within a DTD declaration handler.

- -
-enum XML_Error XMLCALL
-XML_GetErrorCode(XML_Parser p);
-
-
-Return what type of error has occurred. -
- -
-const XML_LChar * XMLCALL
-XML_ErrorString(enum XML_Error code);
-
-
-Return a string describing the error corresponding to code. -The code should be one of the enums that can be returned from -XML_GetErrorCode. -
- -
-XML_Index XMLCALL
-XML_GetCurrentByteIndex(XML_Parser p);
-
-
-Return the byte offset of the position. This always corresponds to -the values returned by XML_GetCurrentLineNumber and XML_GetCurrentColumnNumber. -
- -
-XML_Size XMLCALL
-XML_GetCurrentLineNumber(XML_Parser p);
-
-
-Return the line number of the position. The first line is reported as -1. -
- -
-XML_Size XMLCALL
-XML_GetCurrentColumnNumber(XML_Parser p);
-
-
-Return the offset, from the beginning of the current line, of -the position. -
- -
-int XMLCALL
-XML_GetCurrentByteCount(XML_Parser p);
-
-
-Return the number of bytes in the current event. Returns -0 if the event is inside a reference to an internal -entity and for the end-tag event for empty element tags (the later can -be used to distinguish empty-element tags from empty elements using -separate start and end tags). -
- -
-const char * XMLCALL
-XML_GetInputContext(XML_Parser p,
-                    int *offset,
-                    int *size);
-
-
- -

Returns the parser's input buffer, sets the integer pointed at by -offset to the offset within this buffer of the current -parse position, and set the integer pointed at by size to -the size of the returned buffer.

- -

This should only be called from within a handler during an active -parse and the returned buffer should only be referred to from within -the handler that made the call. This input buffer contains the -untranslated bytes of the input.

- -

Only a limited amount of context is kept, so if the event -triggering a call spans over a very large amount of input, the actual -parse position may be before the beginning of the buffer.

- -

If XML_CONTEXT_BYTES is not defined, this will always -return NULL.

-
- -

Miscellaneous functions

- -

The functions in this section either obtain state information from -the parser or can be used to dynamicly set parser options.

- -
-void XMLCALL
-XML_SetUserData(XML_Parser p,
-                void *userData);
-
-
-This sets the user data pointer that gets passed to handlers. It -overwrites any previous value for this pointer. Note that the -application is responsible for freeing the memory associated with -userData when it is finished with the parser. So if you -call this when there's already a pointer there, and you haven't freed -the memory associated with it, then you've probably just leaked -memory. -
- -
-void * XMLCALL
-XML_GetUserData(XML_Parser p);
-
-
-This returns the user data pointer that gets passed to handlers. -It is actually implemented as a macro. -
- -
-void XMLCALL
-XML_UseParserAsHandlerArg(XML_Parser p);
-
-
-After this is called, handlers receive the parser in their -userData arguments. The user data can still be obtained -using the XML_GetUserData function. -
- -
-enum XML_Status XMLCALL
-XML_SetBase(XML_Parser p,
-            const XML_Char *base);
-
-
-Set the base to be used for resolving relative URIs in system -identifiers. The return value is XML_STATUS_ERROR if -there's no memory to store base, otherwise it's -XML_STATUS_OK. -
- -
-const XML_Char * XMLCALL
-XML_GetBase(XML_Parser p);
-
-
-Return the base for resolving relative URIs. -
- -
-int XMLCALL
-XML_GetSpecifiedAttributeCount(XML_Parser p);
-
-
-When attributes are reported to the start handler in the atts vector, -attributes that were explicitly set in the element occur before any -attributes that receive their value from default information in an -ATTLIST declaration. This function returns the number of attributes -that were explicitly set times two, thus giving the offset in the -atts array passed to the start tag handler of the first -attribute set due to defaults. It supplies information for the last -call to a start handler. If called inside a start handler, then that -means the current call. -
- -
-int XMLCALL
-XML_GetIdAttributeIndex(XML_Parser p);
-
-
-Returns the index of the ID attribute passed in the atts array in the -last call to XML_StartElementHandler, or -1 if there is no ID -attribute. If called inside a start handler, then that means the -current call. -
- -
-const XML_AttrInfo * XMLCALL
-XML_GetAttributeInfo(XML_Parser parser);
-
-
-typedef struct {
-  XML_Index  nameStart;  /* Offset to beginning of the attribute name. */
-  XML_Index  nameEnd;    /* Offset after the attribute name's last byte. */
-  XML_Index  valueStart; /* Offset to beginning of the attribute value. */
-  XML_Index  valueEnd;   /* Offset after the attribute value's last byte. */
-} XML_AttrInfo;
-
-
-Returns an array of XML_AttrInfo structures for the -attribute/value pairs passed in the last call to the -XML_StartElementHandler that were specified -in the start-tag rather than defaulted. Each attribute/value pair counts -as 1; thus the number of entries in the array is -XML_GetSpecifiedAttributeCount(parser) / 2. -
- -
-enum XML_Status XMLCALL
-XML_SetEncoding(XML_Parser p,
-                const XML_Char *encoding);
-
-
-Set the encoding to be used by the parser. It is equivalent to -passing a non-null encoding argument to the parser creation functions. -It must not be called after XML_Parse or XML_ParseBuffer have been called on the given parser. -Returns XML_STATUS_OK on success or -XML_STATUS_ERROR on error. -
- -
-int XMLCALL
-XML_SetParamEntityParsing(XML_Parser p,
-                          enum XML_ParamEntityParsing code);
-
-
-This enables parsing of parameter entities, including the external -parameter entity that is the external DTD subset, according to -code. -The choices for code are: -
    -
  • XML_PARAM_ENTITY_PARSING_NEVER
  • -
  • XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE
  • -
  • XML_PARAM_ENTITY_PARSING_ALWAYS
  • -
-Note: If XML_SetParamEntityParsing is called after -XML_Parse or XML_ParseBuffer, then it has -no effect and will always return 0. -
- -
-int XMLCALL
-XML_SetHashSalt(XML_Parser p,
-                unsigned long hash_salt);
-
-
-Sets the hash salt to use for internal hash calculations. -Helps in preventing DoS attacks based on predicting hash -function behavior. In order to have an effect this must be called -before parsing has started. Returns 1 if successful, 0 when called -after XML_Parse or XML_ParseBuffer. -

Note: This call is optional, as the parser will auto-generate a new -random salt value if no value has been set at the start of parsing.

-
- -
-enum XML_Error XMLCALL
-XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD);
-
-
-

This function allows an application to provide an external subset -for the document type declaration for documents which do not specify -an external subset of their own. For documents which specify an -external subset in their DOCTYPE declaration, the application-provided -subset will be ignored. If the document does not contain a DOCTYPE -declaration at all and useDTD is true, the -application-provided subset will be parsed, but the -startDoctypeDeclHandler and -endDoctypeDeclHandler functions, if set, will not be -called. The setting of parameter entity parsing, controlled using -XML_SetParamEntityParsing, will be honored.

- -

The application-provided external subset is read by calling the -external entity reference handler set via XML_SetExternalEntityRefHandler with both -publicId and systemId set to NULL.

- -

If this function is called after parsing has begun, it returns -XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING and ignores -useDTD. If called when Expat has been compiled without -DTD support, it returns -XML_ERROR_FEATURE_REQUIRES_XML_DTD. Otherwise, it -returns XML_ERROR_NONE.

- -

Note: For the purpose of checking WFC: Entity Declared, passing -useDTD == XML_TRUE will make the parser behave as if -the document had a DTD with an external subset. This holds true even if -the external entity reference handler returns without action.

-
- -
-void XMLCALL
-XML_SetReturnNSTriplet(XML_Parser parser,
-                       int        do_nst);
-
-
-

-This function only has an effect when using a parser created with -XML_ParserCreateNS, -i.e. when namespace processing is in effect. The do_nst -sets whether or not prefixes are returned with names qualified with a -namespace prefix. If this function is called with do_nst -non-zero, then afterwards namespace qualified names (that is qualified -with a prefix as opposed to belonging to a default namespace) are -returned as a triplet with the three parts separated by the namespace -separator specified when the parser was created. The order of -returned parts is URI, local name, and prefix.

If -do_nst is zero, then namespaces are reported in the -default manner, URI then local_name separated by the namespace -separator.

-
- -
-void XMLCALL
-XML_DefaultCurrent(XML_Parser parser);
-
-
-This can be called within a handler for a start element, end element, -processing instruction or character data. It causes the corresponding -markup to be passed to the default handler set by XML_SetDefaultHandler or -XML_SetDefaultHandlerExpand. It does nothing if there is -not a default handler. -
- -
-XML_LChar * XMLCALL
-XML_ExpatVersion();
-
-
-Return the library version as a string (e.g. "expat_1.95.1"). -
- -
-struct XML_Expat_Version XMLCALL
-XML_ExpatVersionInfo();
-
-
-typedef struct {
-  int major;
-  int minor;
-  int micro;
-} XML_Expat_Version;
-
-
-Return the library version information as a structure. -Some macros are also defined that support compile-time tests of the -library version: -
    -
  • XML_MAJOR_VERSION
  • -
  • XML_MINOR_VERSION
  • -
  • XML_MICRO_VERSION
  • -
-Testing these constants is currently the best way to determine if -particular parts of the Expat API are available. -
- -
-const XML_Feature * XMLCALL
-XML_GetFeatureList();
-
-
-enum XML_FeatureEnum {
-  XML_FEATURE_END = 0,
-  XML_FEATURE_UNICODE,
-  XML_FEATURE_UNICODE_WCHAR_T,
-  XML_FEATURE_DTD,
-  XML_FEATURE_CONTEXT_BYTES,
-  XML_FEATURE_MIN_SIZE,
-  XML_FEATURE_SIZEOF_XML_CHAR,
-  XML_FEATURE_SIZEOF_XML_LCHAR,
-  XML_FEATURE_NS,
-  XML_FEATURE_LARGE_SIZE
-};
-
-typedef struct {
-  enum XML_FeatureEnum  feature;
-  XML_LChar            *name;
-  long int              value;
-} XML_Feature;
-
-
-

Returns a list of "feature" records, providing details on how -Expat was configured at compile time. Most applications should not -need to worry about this, but this information is otherwise not -available from Expat. This function allows code that does need to -check these features to do so at runtime.

- -

The return value is an array of XML_Feature, -terminated by a record with a feature of -XML_FEATURE_END and name of NULL, -identifying the feature-test macros Expat was compiled with. Since an -application that requires this kind of information needs to determine -the type of character the name points to, records for the -XML_FEATURE_SIZEOF_XML_CHAR and -XML_FEATURE_SIZEOF_XML_LCHAR will be located at the -beginning of the list, followed by XML_FEATURE_UNICODE -and XML_FEATURE_UNICODE_WCHAR_T, if they are present at -all.

- -

Some features have an associated value. If there isn't an -associated value, the value field is set to 0. At this -time, the following features have been defined to have values:

- -
-
XML_FEATURE_SIZEOF_XML_CHAR
-
The number of bytes occupied by one XML_Char - character.
-
XML_FEATURE_SIZEOF_XML_LCHAR
-
The number of bytes occupied by one XML_LChar - character.
-
XML_FEATURE_CONTEXT_BYTES
-
The maximum number of characters of context which can be - reported by XML_GetInputContext.
-
-
- -
-void XMLCALL
-XML_FreeContentModel(XML_Parser parser, XML_Content *model);
-
-
-Function to deallocate the model argument passed to the -XML_ElementDeclHandler callback set using XML_ElementDeclHandler. -This function should not be used for any other purpose. -
- -

The following functions allow external code to share the memory -allocator an XML_Parser has been configured to use. This -is especially useful for third-party libraries that interact with a -parser object created by application code, or heavily layered -applications. This can be essential when using dynamically loaded -libraries which use different C standard libraries (this can happen on -Windows, at least).

- -
-void * XMLCALL
-XML_MemMalloc(XML_Parser parser, size_t size);
-
-
-Allocate size bytes of memory using the allocator the -parser object has been configured to use. Returns a -pointer to the memory or NULL on failure. Memory allocated in this -way must be freed using XML_MemFree. -
- -
-void * XMLCALL
-XML_MemRealloc(XML_Parser parser, void *ptr, size_t size);
-
-
-Allocate size bytes of memory using the allocator the -parser object has been configured to use. -ptr must point to a block of memory allocated by XML_MemMalloc or -XML_MemRealloc, or be NULL. This function tries to -expand the block pointed to by ptr if possible. Returns -a pointer to the memory or NULL on failure. On success, the original -block has either been expanded or freed. On failure, the original -block has not been freed; the caller is responsible for freeing the -original block. Memory allocated in this way must be freed using -XML_MemFree. -
- -
-void XMLCALL
-XML_MemFree(XML_Parser parser, void *ptr);
-
-
-Free a block of memory pointed to by ptr. The block must -have been allocated by XML_MemMalloc or XML_MemRealloc, or be NULL. -
- -
-

Valid XHTML 1.0!

-
- - diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/doc/style.css b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/doc/style.css deleted file mode 100644 index 69df30b..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/doc/style.css +++ /dev/null @@ -1,101 +0,0 @@ -body { - background-color: white; - border: 0px; - margin: 0px; - padding: 0px; -} - -.corner { - width: 200px; - height: 80px; - text-align: center; -} - -.banner { - background-color: rgb(110,139,61); - color: rgb(255,236,176); - padding-left: 2em; -} - -.banner h1 { - font-size: 200%; -} - -.content { - padding: 0em 2em 1em 2em; -} - -.releaseno { - background-color: rgb(110,139,61); - color: rgb(255,236,176); - padding-bottom: 0.3em; - padding-top: 0.5em; - text-align: center; - font-weight: bold; -} - -.noborder { - border-width: 0px; -} - -.eg { - padding-left: 1em; - padding-top: .5em; - padding-bottom: .5em; - border: solid thin; - margin: 1em 0; - background-color: tan; - margin-left: 2em; - margin-right: 10%; -} - -.pseudocode { - padding-left: 1em; - padding-top: .5em; - padding-bottom: .5em; - border: solid thin; - margin: 1em 0; - background-color: rgb(250,220,180); - margin-left: 2em; - margin-right: 10%; -} - -.handler { - width: 100%; - border-top-width: thin; - margin-bottom: 1em; -} - -.handler p { - margin-left: 2em; -} - -.setter { - font-weight: bold; -} - -.signature { - color: navy; -} - -.fcndec { - width: 100%; - border-top-width: thin; - font-weight: bold; -} - -.fcndef { - margin-left: 2em; - margin-bottom: 2em; -} - -dd { - margin-bottom: 2em; -} - -.cpp-symbols dt { - font-family: monospace; -} -.cpp-symbols dd { - margin-bottom: 1em; -} diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/doc/valid-xhtml10.png b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/doc/valid-xhtml10.png deleted file mode 100644 index 4c23f48fe02a58fbb3d1088e6a7d372568830b53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2368 zcmbVNX;2f{7H-8QAWIODU~n{oVqipj2Gj;zXrn-jfGsLCqYzsnPDF&p1zT|;Y|_rS zG$U$6T%rydH;kg#qJRP9(E@6_VH9x;sL%+GanDQ5do}fb&5w6(-TKbG-???Zuj*9Y zyvXoiJDXuP007v9hR9G0MqBm>ffWGsad*5W1AxA{kzr9YEtdwPktHFmR%@VOjSA)& zoWU@I3T8>tpwXyl(x5~21YyvkYJtGSU^GS0B#P4v2q8Gd&;Y=2MoP=_T2#YuoPk$q z^sK?iaz>G*Rw`f+2}zO|h6sfMihzU&g`o&R5IPzW2mqB5l!z<{sBloJRB9=hBOtvR zG4ni*7aZszoQI$?fGZ2KRb(~rN=#@$}0O&Ostz&hN2!bFDDiw(YGzpP7C=v>2 z0s=vhQ6pN3&|okCAj!~(PykR$5Rj5msZ>K@9LMP>m}OZbZ_?}aj0RIdQYo$`)C{9j zV=5i1!OSMk(%j5*I4Z>vDFCT>Jq~~>H3_Lz7)^j$8Y2mdY>cL9t=?cVn@uJ&Oln~S zVf1=Jt>=t9OlT>Jf?=WC}BuMC{d|INMN9uQ^KH#u(V^9Mg~J+ z39CUZq)~^NSX@P*COwW}m_-@{BYI4#qcH(OqbRCl4H8TZAe8y90F@eADFt8(A+-pC zkQNO(++gH!3^n}~oEC>+*r3%K8Jy>N2oxDD1v-ln6qE{SnnWNGsYF4Ekfulsk#Jgz zLIHtEdCO$L5;KQ$8k8a}I&rfeSE3S?mKBLaW}dLP6=Jm6NHA(lh|)SlA`}W4*1#|f zL}&yEg`x4lr}-7+3wMlqyF={n!T4V9EeMwS$Ii;hQ-5s#b|B-& z^0k*l@0<7rwu{X$l~;V6qOf-+-Z)Obd4U}D_8z_2@7au-G3OHKvyQVoL<7(6Uzppk z&GDM}&q#-oZcXiiH?z__HO>^+cSHCYkr=Oj&KaDoWCQW3U`x!sK~)9g$gdf2c4&Ni z?6=WkP3)S+*n-#grETtop`{*2LPpDF8)Qz_c*KyCEn~xuQKh&4dZx!4%?5Owj^wrHZNb`-KoZWZr0n-NbZyfPpZP1Pz?!j)p zA#oS|y0+~LvYk?~u6l_hboP3aXoT0Hw7?UOS4@4m` zla;1?MUFD#{O8zftHeEci3}{h+c~lNmhggf`n3v&y@|`E=jTjwLd9e9YqP9EV)CU) zn@SJ+9>=t`+i@5$X& zOBeezmLz^$vA#foB1=_E@Ao0R%F|+I8Gov(yZ3Q&SW#lM(4RXnpD#9yYOsxaJxM$y z!78@1s^M0))$*){Wwl6sfVzb#J$3rbsg#S$j!*Irnj5h`wOj1E^@G#F_+K+86-CPL z%Uc~9oW5ksb3cT&ZZGOL?COAJw|(2MPM^B7%KG!lfXg}Od>zV$*0=3@{poe$n^>oZ zH7nwKpNQl2p5eCpI?G<#NJPyiteboLKe@fVcwt0+AknetuD;JtT+6%#w>HfU{m$*$7tbeM1BWUc?BhDKavT?o_Xm$VDzO{fhUl-g4+v}5J?CesCp7o}6bHRC@XBLld<~&;{ zY{J|{xm6nB^Wdszc1HftOZyrR(@Pf>h7I=V*!!$-#`B8rd*^lCZw{ypv>cHaiN!w>szMg{>z%h_f_Id>mx^<^GRN#Xz zCqC>xeER9jv|qL-R{9b4JLfIx#IJOt(M<|J`QG|Uz9BR{&|p2tcDuvG#-?KT)_rZa zgRl!rLYIhNJ)ip0)hqc{Q&z$L;7##mN4{QF@IUf40qL1fh9Zpi|Xcd6q+U5hJ@_A^g(aNKfk|iGsv=R1`YZs oi4;OEvV%bfcgjD_ar)+RxUQtjXTTPP<@*6bXNJp8!|_}H4I+HVz5oCK diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/doc/xmlwf.1 b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/doc/xmlwf.1 deleted file mode 100644 index 174719a..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/doc/xmlwf.1 +++ /dev/null @@ -1,251 +0,0 @@ -.\" This manpage has been automatically generated by docbook2man -.\" from a DocBook document. This tool can be found at: -.\" -.\" Please send any bug reports, improvements, comments, patches, -.\" etc. to Steve Cheng . -.TH "XMLWF" "1" "24 January 2003" "" "" -.SH NAME -xmlwf \- Determines if an XML document is well-formed -.SH SYNOPSIS - -\fBxmlwf\fR [ \fB-s\fR] [ \fB-n\fR] [ \fB-p\fR] [ \fB-x\fR] [ \fB-e \fIencoding\fB\fR] [ \fB-w\fR] [ \fB-d \fIoutput-dir\fB\fR] [ \fB-c\fR] [ \fB-m\fR] [ \fB-r\fR] [ \fB-t\fR] [ \fB-v\fR] [ \fBfile ...\fR] - -.SH "DESCRIPTION" -.PP -\fBxmlwf\fR uses the Expat library to -determine if an XML document is well-formed. It is -non-validating. -.PP -If you do not specify any files on the command-line, and you -have a recent version of \fBxmlwf\fR, the -input file will be read from standard input. -.SH "WELL-FORMED DOCUMENTS" -.PP -A well-formed document must adhere to the -following rules: -.TP 0.2i -\(bu -The file begins with an XML declaration. For instance, -. -\fBNOTE:\fR -\fBxmlwf\fR does not currently -check for a valid XML declaration. -.TP 0.2i -\(bu -Every start tag is either empty () -or has a corresponding end tag. -.TP 0.2i -\(bu -There is exactly one root element. This element must contain -all other elements in the document. Only comments, white -space, and processing instructions may come after the close -of the root element. -.TP 0.2i -\(bu -All elements nest properly. -.TP 0.2i -\(bu -All attribute values are enclosed in quotes (either single -or double). -.PP -If the document has a DTD, and it strictly complies with that -DTD, then the document is also considered \fBvalid\fR. -\fBxmlwf\fR is a non-validating parser -- -it does not check the DTD. However, it does support -external entities (see the \fB-x\fR option). -.SH "OPTIONS" -.PP -When an option includes an argument, you may specify the argument either -separately ("\fB-d\fR output") or concatenated with the -option ("\fB-d\fRoutput"). \fBxmlwf\fR -supports both. -.TP -\fB-c\fR -If the input file is well-formed and \fBxmlwf\fR -doesn't encounter any errors, the input file is simply copied to -the output directory unchanged. -This implies no namespaces (turns off \fB-n\fR) and -requires \fB-d\fR to specify an output file. -.TP -\fB-d output-dir\fR -Specifies a directory to contain transformed -representations of the input files. -By default, \fB-d\fR outputs a canonical representation -(described below). -You can select different output formats using \fB-c\fR -and \fB-m\fR. - -The output filenames will -be exactly the same as the input filenames or "STDIN" if the input is -coming from standard input. Therefore, you must be careful that the -output file does not go into the same directory as the input -file. Otherwise, \fBxmlwf\fR will delete the -input file before it generates the output file (just like running -cat < file > file in most shells). - -Two structurally equivalent XML documents have a byte-for-byte -identical canonical XML representation. -Note that ignorable white space is considered significant and -is treated equivalently to data. -More on canonical XML can be found at -http://www.jclark.com/xml/canonxml.html . -.TP -\fB-e encoding\fR -Specifies the character encoding for the document, overriding -any document encoding declaration. \fBxmlwf\fR -supports four built-in encodings: -US-ASCII, -UTF-8, -UTF-16, and -ISO-8859-1. -Also see the \fB-w\fR option. -.TP -\fB-m\fR -Outputs some strange sort of XML file that completely -describes the input file, including character positions. -Requires \fB-d\fR to specify an output file. -.TP -\fB-n\fR -Turns on namespace processing. (describe namespaces) -\fB-c\fR disables namespaces. -.TP -\fB-p\fR -Tells xmlwf to process external DTDs and parameter -entities. - -Normally \fBxmlwf\fR never parses parameter -entities. \fB-p\fR tells it to always parse them. -\fB-p\fR implies \fB-x\fR. -.TP -\fB-r\fR -Normally \fBxmlwf\fR memory-maps the XML file -before parsing; this can result in faster parsing on many -platforms. -\fB-r\fR turns off memory-mapping and uses normal file -IO calls instead. -Of course, memory-mapping is automatically turned off -when reading from standard input. - -Use of memory-mapping can cause some platforms to report -substantially higher memory usage for -\fBxmlwf\fR, but this appears to be a matter of -the operating system reporting memory in a strange way; there is -not a leak in \fBxmlwf\fR. -.TP -\fB-s\fR -Prints an error if the document is not standalone. -A document is standalone if it has no external subset and no -references to parameter entities. -.TP -\fB-t\fR -Turns on timings. This tells Expat to parse the entire file, -but not perform any processing. -This gives a fairly accurate idea of the raw speed of Expat itself -without client overhead. -\fB-t\fR turns off most of the output options -(\fB-d\fR, \fB-m\fR, \fB-c\fR, -\&...). -.TP -\fB-v\fR -Prints the version of the Expat library being used, including some -information on the compile-time configuration of the library, and -then exits. -.TP -\fB-w\fR -Enables support for Windows code pages. -Normally, \fBxmlwf\fR will throw an error if it -runs across an encoding that it is not equipped to handle itself. With -\fB-w\fR, xmlwf will try to use a Windows code -page. See also \fB-e\fR. -.TP -\fB-x\fR -Turns on parsing external entities. - -Non-validating parsers are not required to resolve external -entities, or even expand entities at all. -Expat always expands internal entities (?), -but external entity parsing must be enabled explicitly. - -External entities are simply entities that obtain their -data from outside the XML file currently being parsed. - -This is an example of an internal entity: - -.nf - -.fi - -And here are some examples of external entities: - -.nf - (parsed) - (unparsed) -.fi -.TP -\fB--\fR -(Two hyphens.) -Terminates the list of options. This is only needed if a filename -starts with a hyphen. For example: - -.nf -xmlwf -- -myfile.xml -.fi - -will run \fBxmlwf\fR on the file -\fI-myfile.xml\fR. -.PP -Older versions of \fBxmlwf\fR do not support -reading from standard input. -.SH "OUTPUT" -.PP -If an input file is not well-formed, -\fBxmlwf\fR prints a single line describing -the problem to standard output. If a file is well formed, -\fBxmlwf\fR outputs nothing. -Note that the result code is \fBnot\fR set. -.SH "BUGS" -.PP -According to the W3C standard, an XML file without a -declaration at the beginning is not considered well-formed. -However, \fBxmlwf\fR allows this to pass. -.PP -\fBxmlwf\fR returns a 0 - noerr result, -even if the file is not well-formed. There is no good way for -a program to use \fBxmlwf\fR to quickly -check a file -- it must parse \fBxmlwf\fR's -standard output. -.PP -The errors should go to standard error, not standard output. -.PP -There should be a way to get \fB-d\fR to send its -output to standard output rather than forcing the user to send -it to a file. -.PP -I have no idea why anyone would want to use the -\fB-d\fR, \fB-c\fR, and -\fB-m\fR options. If someone could explain it to -me, I'd like to add this information to this manpage. -.SH "ALTERNATIVES" -.PP -Here are some XML validators on the web: - -.nf -http://www.hcrc.ed.ac.uk/~richard/xml-check.html -http://www.stg.brown.edu/service/xmlvalid/ -http://www.scripting.com/frontier5/xml/code/xmlValidator.html -http://www.xml.com/pub/a/tools/ruwf/check.html -.fi -.SH "SEE ALSO" -.PP - -.nf -The Expat home page: http://www.libexpat.org/ -The W3 XML specification: http://www.w3.org/TR/REC-xml -.fi -.SH "AUTHOR" -.PP -This manual page was written by Scott Bronson for -the Debian GNU/Linux system (but may be used by others). Permission is -granted to copy, distribute and/or modify this document under -the terms of the GNU Free Documentation -License, Version 1.1. diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/doc/xmlwf.sgml b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/doc/xmlwf.sgml deleted file mode 100644 index 313cfbc..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/doc/xmlwf.sgml +++ /dev/null @@ -1,468 +0,0 @@ - manpage.1'. You may view - the manual page with: `docbook-to-man manpage.sgml | nroff -man | - less'. A typical entry in a Makefile or Makefile.am is: - -manpage.1: manpage.sgml - docbook-to-man $< > $@ - --> - - - Scott"> - Bronson"> - - December 5, 2001"> - - 1"> - bronson@rinspin.com"> - - XMLWF"> - - - Debian GNU/Linux"> - GNU"> -]> - - - -
- &dhemail; -
- - &dhfirstname; - &dhsurname; - - - 2001 - &dhusername; - - &dhdate; -
- - &dhucpackage; - - &dhsection; - - - &dhpackage; - - Determines if an XML document is well-formed - - - - &dhpackage; - - - - - - - - - - - - - - - - - - file ... - - - - - DESCRIPTION - - - &dhpackage; uses the Expat library to - determine if an XML document is well-formed. It is - non-validating. - - - - If you do not specify any files on the command-line, and you - have a recent version of &dhpackage;, the - input file will be read from standard input. - - - - - - WELL-FORMED DOCUMENTS - - - A well-formed document must adhere to the - following rules: - - - - - The file begins with an XML declaration. For instance, - <?xml version="1.0" standalone="yes"?>. - NOTE: - &dhpackage; does not currently - check for a valid XML declaration. - - - Every start tag is either empty (<tag/>) - or has a corresponding end tag. - - - There is exactly one root element. This element must contain - all other elements in the document. Only comments, white - space, and processing instructions may come after the close - of the root element. - - - All elements nest properly. - - - All attribute values are enclosed in quotes (either single - or double). - - - - - If the document has a DTD, and it strictly complies with that - DTD, then the document is also considered valid. - &dhpackage; is a non-validating parser -- - it does not check the DTD. However, it does support - external entities (see the option). - - - - - OPTIONS - - -When an option includes an argument, you may specify the argument either -separately (" output") or concatenated with the -option ("output"). &dhpackage; -supports both. - - - - - - - - - If the input file is well-formed and &dhpackage; - doesn't encounter any errors, the input file is simply copied to - the output directory unchanged. - This implies no namespaces (turns off ) and - requires to specify an output file. - - - - - - - - - Specifies a directory to contain transformed - representations of the input files. - By default, outputs a canonical representation - (described below). - You can select different output formats using - and . - - - The output filenames will - be exactly the same as the input filenames or "STDIN" if the input is - coming from standard input. Therefore, you must be careful that the - output file does not go into the same directory as the input - file. Otherwise, &dhpackage; will delete the - input file before it generates the output file (just like running - cat < file > file in most shells). - - - Two structurally equivalent XML documents have a byte-for-byte - identical canonical XML representation. - Note that ignorable white space is considered significant and - is treated equivalently to data. - More on canonical XML can be found at - http://www.jclark.com/xml/canonxml.html . - - - - - - - - - Specifies the character encoding for the document, overriding - any document encoding declaration. &dhpackage; - supports four built-in encodings: - US-ASCII, - UTF-8, - UTF-16, and - ISO-8859-1. - Also see the option. - - - - - - - - - Outputs some strange sort of XML file that completely - describes the the input file, including character postitions. - Requires to specify an output file. - - - - - - - - - Turns on namespace processing. (describe namespaces) - disables namespaces. - - - - - - - - - Tells xmlwf to process external DTDs and parameter - entities. - - - Normally &dhpackage; never parses parameter - entities. tells it to always parse them. - implies . - - - - - - - - - Normally &dhpackage; memory-maps the XML file - before parsing; this can result in faster parsing on many - platforms. - turns off memory-mapping and uses normal file - IO calls instead. - Of course, memory-mapping is automatically turned off - when reading from standard input. - - - Use of memory-mapping can cause some platforms to report - substantially higher memory usage for - &dhpackage;, but this appears to be a matter of - the operating system reporting memory in a strange way; there is - not a leak in &dhpackage;. - - - - - - - - - Prints an error if the document is not standalone. - A document is standalone if it has no external subset and no - references to parameter entities. - - - - - - - - - Turns on timings. This tells Expat to parse the entire file, - but not perform any processing. - This gives a fairly accurate idea of the raw speed of Expat itself - without client overhead. - turns off most of the output options - (, , , - ...). - - - - - - - - - Prints the version of the Expat library being used, including some - information on the compile-time configuration of the library, and - then exits. - - - - - - - - - Enables support for Windows code pages. - Normally, &dhpackage; will throw an error if it - runs across an encoding that it is not equipped to handle itself. With - , &dhpackage; will try to use a Windows code - page. See also . - - - - - - - - - Turns on parsing external entities. - - - Non-validating parsers are not required to resolve external - entities, or even expand entities at all. - Expat always expands internal entities (?), - but external entity parsing must be enabled explicitly. - - - External entities are simply entities that obtain their - data from outside the XML file currently being parsed. - - - This is an example of an internal entity: - -<!ENTITY vers '1.0.2'> - - - - And here are some examples of external entities: - - -<!ENTITY header SYSTEM "header-&vers;.xml"> (parsed) -<!ENTITY logo SYSTEM "logo.png" PNG> (unparsed) - - - - - - - - - - - (Two hyphens.) - Terminates the list of options. This is only needed if a filename - starts with a hyphen. For example: - - -&dhpackage; -- -myfile.xml - - - will run &dhpackage; on the file - -myfile.xml. - - - - - - - Older versions of &dhpackage; do not support - reading from standard input. - - - - - OUTPUT - - If an input file is not well-formed, - &dhpackage; prints a single line describing - the problem to standard output. If a file is well formed, - &dhpackage; outputs nothing. - Note that the result code is not set. - - - - - BUGS - - &dhpackage; returns a 0 - noerr result, - even if the file is not well-formed. There is no good way for - a program to use &dhpackage; to quickly - check a file -- it must parse &dhpackage;'s - standard output. - - - The errors should go to standard error, not standard output. - - - There should be a way to get to send its - output to standard output rather than forcing the user to send - it to a file. - - - I have no idea why anyone would want to use the - , , and - options. If someone could explain it to - me, I'd like to add this information to this manpage. - - - - - ALTERNATIVES - - Here are some XML validators on the web: - - -http://www.hcrc.ed.ac.uk/~richard/xml-check.html -http://www.stg.brown.edu/service/xmlvalid/ -http://www.scripting.com/frontier5/xml/code/xmlValidator.html -http://www.xml.com/pub/a/tools/ruwf/check.html - - - - - - - SEE ALSO - - - -The Expat home page: http://www.libexpat.org/ -The W3 XML specification: http://www.w3.org/TR/REC-xml - - - - - - - AUTHOR - - This manual page was written by &dhusername; &dhemail; for - the &debian; system (but may be used by others). Permission is - granted to copy, distribute and/or modify this document under - the terms of the GNU Free Documentation - License, Version 1.1. - - -
- - diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/examples/elements.c b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/examples/elements.c deleted file mode 100644 index 6b8f855..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/examples/elements.c +++ /dev/null @@ -1,65 +0,0 @@ -/* This is simple demonstration of how to use expat. This program - reads an XML document from standard input and writes a line with - the name of each element to standard output indenting child - elements by one tab stop more than their parent element. - It must be used with Expat compiled for UTF-8 output. -*/ - -#include -#include "expat.h" - -#if defined(__amigaos__) && defined(__USE_INLINE__) -#include -#endif - -#ifdef XML_LARGE_SIZE -#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400 -#define XML_FMT_INT_MOD "I64" -#else -#define XML_FMT_INT_MOD "ll" -#endif -#else -#define XML_FMT_INT_MOD "l" -#endif - -static void XMLCALL -startElement(void *userData, const char *name, const char **atts) -{ - int i; - int *depthPtr = (int *)userData; - for (i = 0; i < *depthPtr; i++) - putchar('\t'); - puts(name); - *depthPtr += 1; -} - -static void XMLCALL -endElement(void *userData, const char *name) -{ - int *depthPtr = (int *)userData; - *depthPtr -= 1; -} - -int -main(int argc, char *argv[]) -{ - char buf[BUFSIZ]; - XML_Parser parser = XML_ParserCreate(NULL); - int done; - int depth = 0; - XML_SetUserData(parser, &depth); - XML_SetElementHandler(parser, startElement, endElement); - do { - int len = (int)fread(buf, 1, sizeof(buf), stdin); - done = len < sizeof(buf); - if (XML_Parse(parser, buf, len, done) == XML_STATUS_ERROR) { - fprintf(stderr, - "%s at line %" XML_FMT_INT_MOD "u\n", - XML_ErrorString(XML_GetErrorCode(parser)), - XML_GetCurrentLineNumber(parser)); - return 1; - } - } while (!done); - XML_ParserFree(parser); - return 0; -} diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/examples/elements.dsp b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/examples/elements.dsp deleted file mode 100644 index d3fa368..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/examples/elements.dsp +++ /dev/null @@ -1,103 +0,0 @@ -# Microsoft Developer Studio Project File - Name="elements" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=elements - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "elements.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "elements.mak" CFG="elements - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "elements - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "elements - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "elements - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "..\win32\bin\Release" -# PROP Intermediate_Dir "..\win32\tmp\Release-elements" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\lib" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "XML_STATIC" /FD /c -# SUBTRACT CPP /X /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 /nologo /subsystem:console /machine:I386 -# ADD LINK32 libexpatMT.lib /nologo /subsystem:console /pdb:none /machine:I386 /libpath:"..\win32\bin\Release" /out:"..\win32\bin\Release\elements.exe" - -!ELSEIF "$(CFG)" == "elements - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "..\win32\bin\Debug" -# PROP Intermediate_Dir "..\win32\tmp\Debug-elements" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /I "..\lib" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "XML_STATIC" /FR /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 libexpatMT.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /libpath:"..\win32\bin\Debug" /out:"..\win32\bin\Debug\elements.exe" - -!ENDIF - -# Begin Target - -# Name "elements - Win32 Release" -# Name "elements - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\elements.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/examples/outline.c b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/examples/outline.c deleted file mode 100644 index 3a3c838..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/examples/outline.c +++ /dev/null @@ -1,106 +0,0 @@ -/***************************************************************** - * outline.c - * - * Copyright 1999, Clark Cooper - * All rights reserved. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the license contained in the - * COPYING file that comes with the expat distribution. - * - * 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. - * - * Read an XML document from standard input and print an element - * outline on standard output. - * Must be used with Expat compiled for UTF-8 output. - */ - - -#include -#include - -#if defined(__amigaos__) && defined(__USE_INLINE__) -#include -#endif - -#ifdef XML_LARGE_SIZE -#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400 -#define XML_FMT_INT_MOD "I64" -#else -#define XML_FMT_INT_MOD "ll" -#endif -#else -#define XML_FMT_INT_MOD "l" -#endif - -#define BUFFSIZE 8192 - -char Buff[BUFFSIZE]; - -int Depth; - -static void XMLCALL -start(void *data, const char *el, const char **attr) -{ - int i; - - for (i = 0; i < Depth; i++) - printf(" "); - - printf("%s", el); - - for (i = 0; attr[i]; i += 2) { - printf(" %s='%s'", attr[i], attr[i + 1]); - } - - printf("\n"); - Depth++; -} - -static void XMLCALL -end(void *data, const char *el) -{ - Depth--; -} - -int -main(int argc, char *argv[]) -{ - XML_Parser p = XML_ParserCreate(NULL); - if (! p) { - fprintf(stderr, "Couldn't allocate memory for parser\n"); - exit(-1); - } - - XML_SetElementHandler(p, start, end); - - for (;;) { - int done; - int len; - - len = (int)fread(Buff, 1, BUFFSIZE, stdin); - if (ferror(stdin)) { - fprintf(stderr, "Read error\n"); - exit(-1); - } - done = feof(stdin); - - if (XML_Parse(p, Buff, len, done) == XML_STATUS_ERROR) { - fprintf(stderr, "Parse error at line %" XML_FMT_INT_MOD "u:\n%s\n", - XML_GetCurrentLineNumber(p), - XML_ErrorString(XML_GetErrorCode(p))); - exit(-1); - } - - if (done) - break; - } - XML_ParserFree(p); - return 0; -} diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/examples/outline.dsp b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/examples/outline.dsp deleted file mode 100644 index 0c063fd..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/examples/outline.dsp +++ /dev/null @@ -1,103 +0,0 @@ -# Microsoft Developer Studio Project File - Name="outline" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=outline - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "outline.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "outline.mak" CFG="outline - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "outline - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "outline - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "outline - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "..\win32\bin\Release" -# PROP Intermediate_Dir "..\win32\tmp\Release-outline" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\lib" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c -# SUBTRACT CPP /X /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 /nologo /subsystem:console /machine:I386 -# ADD LINK32 libexpat.lib /nologo /subsystem:console /pdb:none /machine:I386 /libpath:"..\win32\bin\Release" /out:"..\win32\bin\Release\outline.exe" - -!ELSEIF "$(CFG)" == "outline - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "..\win32\bin\Debug" -# PROP Intermediate_Dir "..\win32\tmp\Debug-outline" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\lib" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 libexpat.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /libpath:"..\win32\bin\Debug" /out:"..\win32\bin\Debug\outline.exe" - -!ENDIF - -# Begin Target - -# Name "outline - Win32 Release" -# Name "outline - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\outline.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/expat.dsw b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/expat.dsw deleted file mode 100755 index 9282da5..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/expat.dsw +++ /dev/null @@ -1,110 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "elements"=.\examples\elements.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name expat_static - End Project Dependency -}}} - -############################################################################### - -Project: "expat"=.\lib\expat.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "expat_static"=.\lib\expat_static.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "expatw"=.\lib\expatw.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "expatw_static"=.\lib\expatw_static.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "outline"=.\examples\outline.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name expat - End Project Dependency -}}} - -############################################################################### - -Project: "xmlwf"=.\xmlwf\xmlwf.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name expat - End Project Dependency -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/expat.pc.in b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/expat.pc.in deleted file mode 100644 index 5207e3e..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/expat.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ - -Name: expat -Version: @PACKAGE_VERSION@ -Description: expat XML parser -URL: http://www.libexpat.org -Libs: -L${libdir} -lexpat -Cflags: -I${includedir} diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/expat_config.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/expat_config.h deleted file mode 100644 index 724f47f..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/expat_config.h +++ /dev/null @@ -1,103 +0,0 @@ -/* expat_config.h. Generated from expat_config.h.in by configure. */ -/* expat_config.h.in. Generated from configure.in by autoheader. */ - -/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */ -#define BYTEORDER 1234 - -/* Define to 1 if you have the `bcopy' function. */ -#define HAVE_BCOPY 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_DLFCN_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_FCNTL_H 1 - -/* Define to 1 if you have the `getpagesize' function. */ -#define HAVE_GETPAGESIZE 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_INTTYPES_H 1 - -/* Define to 1 if you have the `memmove' function. */ -#define HAVE_MEMMOVE 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_MEMORY_H 1 - -/* Define to 1 if you have a working `mmap' system call. */ -#define HAVE_MMAP 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDLIB_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRINGS_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRING_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_PARAM_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_UNISTD_H 1 - -/* Define to the sub-directory in which libtool stores uninstalled libraries. - */ -#define LT_OBJDIR ".libs/" - -/* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "expat-bugs@libexpat.org" - -/* Define to the full name of this package. */ -#define PACKAGE_NAME "expat" - -/* Define to the full name and version of this package. */ -#define PACKAGE_STRING "expat 2.1.0" - -/* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "expat" - -/* Define to the home page for this package. */ -#define PACKAGE_URL "" - -/* Define to the version of this package. */ -#define PACKAGE_VERSION "2.1.0" - -/* Define to 1 if you have the ANSI C header files. */ -#define STDC_HEADERS 1 - -/* whether byteorder is bigendian */ -/* #undef WORDS_BIGENDIAN */ - -/* Define to specify how much context to retain around the current parse - point. */ -#define XML_CONTEXT_BYTES 1024 - -/* Define to make parameter entity parsing functionality available. */ -#define XML_DTD 1 - -/* Define to make XML Namespaces functionality available. */ -#define XML_NS 1 - -/* Define to __FUNCTION__ or "" if `__func__' does not conform to ANSI C. */ -/* #undef __func__ */ - -/* Define to empty if `const' does not conform to ANSI C. */ -/* #undef const */ - -/* Define to `long int' if does not define. */ -/* #undef off_t */ - -/* Define to `unsigned int' if does not define. */ -/* #undef size_t */ diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/expat_config.h.cmake b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/expat_config.h.cmake deleted file mode 100755 index e514791..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/expat_config.h.cmake +++ /dev/null @@ -1,91 +0,0 @@ -/* expat_config.h.in. Generated from configure.in by autoheader. */ - -/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */ -#cmakedefine BYTEORDER @BYTEORDER@ - -/* Define to 1 if you have the `bcopy' function. */ -#cmakedefine HAVE_BCOPY - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_DLFCN_H - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_FCNTL_H - -/* Define to 1 if you have the `getpagesize' function. */ -#cmakedefine HAVE_GETPAGESIZE - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_INTTYPES_H - -/* Define to 1 if you have the `memmove' function. */ -#cmakedefine HAVE_MEMMOVE - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_MEMORY_H - -/* Define to 1 if you have a working `mmap' system call. */ -#cmakedefine HAVE_MMAP - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_STDINT_H - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_STDLIB_H - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_STRINGS_H - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_STRING_H - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_SYS_STAT_H - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_SYS_TYPES_H - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_UNISTD_H - -/* Define to the address where bug reports for this package should be sent. */ -#cmakedefine PACKAGE_BUGREPORT - -/* Define to the full name of this package. */ -#cmakedefine PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#cmakedefine PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#cmakedefine PACKAGE_TARNAME - -/* Define to the version of this package. */ -#cmakedefine PACKAGE_VERSION - -/* Define to 1 if you have the ANSI C header files. */ -#cmakedefine STDC_HEADERS - -/* whether byteorder is bigendian */ -#cmakedefine WORDS_BIGENDIAN - -/* Define to specify how much context to retain around the current parse - point. */ -#cmakedefine XML_CONTEXT_BYTES @XML_CONTEXT_BYTES@ - -/* Define to make parameter entity parsing functionality available. */ -#cmakedefine XML_DTD - -/* Define to make XML Namespaces functionality available. */ -#cmakedefine XML_NS - -/* Define to __FUNCTION__ or "" if `__func__' does not conform to ANSI C. */ -#ifdef _MSC_VER -# define __func__ __FUNCTION__ -#endif - -/* Define to `long' if does not define. */ -#cmakedefine off_t @OFF_T@ - -/* Define to `unsigned' if does not define. */ -#cmakedefine size_t @SIZE_T@ diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/expat_config.h.in b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/expat_config.h.in deleted file mode 100644 index 8c6e514..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/expat_config.h.in +++ /dev/null @@ -1,102 +0,0 @@ -/* expat_config.h.in. Generated from configure.in by autoheader. */ - -/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */ -#undef BYTEORDER - -/* Define to 1 if you have the `bcopy' function. */ -#undef HAVE_BCOPY - -/* Define to 1 if you have the header file. */ -#undef HAVE_DLFCN_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_FCNTL_H - -/* Define to 1 if you have the `getpagesize' function. */ -#undef HAVE_GETPAGESIZE - -/* Define to 1 if you have the header file. */ -#undef HAVE_INTTYPES_H - -/* Define to 1 if you have the `memmove' function. */ -#undef HAVE_MEMMOVE - -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H - -/* Define to 1 if you have a working `mmap' system call. */ -#undef HAVE_MMAP - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDINT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRING_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_PARAM_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_STAT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_UNISTD_H - -/* Define to the sub-directory in which libtool stores uninstalled libraries. - */ -#undef LT_OBJDIR - -/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT - -/* Define to the full name of this package. */ -#undef PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME - -/* Define to the home page for this package. */ -#undef PACKAGE_URL - -/* Define to the version of this package. */ -#undef PACKAGE_VERSION - -/* Define to 1 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* whether byteorder is bigendian */ -#undef WORDS_BIGENDIAN - -/* Define to specify how much context to retain around the current parse - point. */ -#undef XML_CONTEXT_BYTES - -/* Define to make parameter entity parsing functionality available. */ -#undef XML_DTD - -/* Define to make XML Namespaces functionality available. */ -#undef XML_NS - -/* Define to __FUNCTION__ or "" if `__func__' does not conform to ANSI C. */ -#undef __func__ - -/* Define to empty if `const' does not conform to ANSI C. */ -#undef const - -/* Define to `long int' if does not define. */ -#undef off_t - -/* Define to `unsigned int' if does not define. */ -#undef size_t diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/Makefile.MPW b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/Makefile.MPW deleted file mode 100644 index 046af00..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/Makefile.MPW +++ /dev/null @@ -1,206 +0,0 @@ -# File: Makefile.MPW -# Targets: All, Dynamic, Static (and Clean, Clean-All) -# Created: Tuesday, July 02, 2002 -# -# MPW Makefile for building expat under the "classic" (i.e. pre-X) Mac OS -# Copyright 2002 Daryle Walker -# Portions Copyright 2002 Thomas Wegner -# See the COPYING file for distribution information -# -# Description: -# This Makefile lets you build static, dynamic (i.e. shared) and stub -# versions of the expat library as well as the elements.c and outline.c -# examples (built as tools for MPW). This is for PPC only; it should be -# no problem to build a 68K version of the expat library, though. -# -# Usage: -# Buildprogram All -# or Buildprogram Dynamic -# or Buildprogram Static -# -# Note: You first have to rename this file to "Makefile", or the Buildprogram -# commando will not recognize it. -# - -MAKEFILE = Makefile -MondoBuild = {MAKEFILE} # Make blank to avoid rebuilds when makefile is modified - -ObjDir = : -SrcDir = : -HdrDir = : - -ToolDir = ::examples: - -Includes = -i {HdrDir} - -Sym-PPC = -sym off - -Defines = -d MACOS_CLASSIC - -PPCCOptions = {Includes} {Sym-PPC} -w 35 {Defines} - -FragName = libexpat - - -### Source Files ### - -SrcFiles = - "{SrcDir}xmlparse.c" - "{SrcDir}xmlrole.c" - "{SrcDir}xmltok.c" - -ToolSrcFiles = - "{ToolDir}elements.c" - "{ToolDir}outline.c" - - -### Object Files ### - -ObjFiles-PPC = - "{ObjDir}xmlparse.c.o" - "{ObjDir}xmlrole.c.o" - "{ObjDir}xmltok.c.o" - -ElementToolObjFile = "{ObjDir}elements.c.o" - -OutlineToolObjFile = "{ObjDir}outline.c.o" - - -### Libraries ### - -StLibFiles-PPC = - "{PPCLibraries}StdCRuntime.o" - "{PPCLibraries}PPCCRuntime.o" - "{PPCLibraries}PPCToolLibs.o" - -ShLibFiles-PPC = - "{SharedLibraries}InterfaceLib" - "{SharedLibraries}StdCLib" - "{SharedLibraries}MathLib" - -LibFiles-PPC = - {StLibFiles-PPC} - {ShLibFiles-PPC} - - -### Special Files ### - -ExportFile = "{ObjDir}{FragName}.exp" - -StLibFile = "{ObjDir}{FragName}.MrC.o" - -ShLibFile = "{ObjDir}{FragName}" - -StubFile = "{ObjDir}{FragName}.stub" - -ElementsTool = "{ToolDir}elements" - -OutlineTool = "{ToolDir}outline" - - -### Default Rules ### - -.c.o .c {MondoBuild} - {PPCC} {depDir}{default}.c -o {targDir}{default}.c.o {PPCCOptions} - - -### Build Rules ### - -All Dynamic {ElementsTool} {OutlineTool} - -Static {StLibFile} - -Dynamic Static {ShLibFile} {StubFile} - -{StLibFile} {ObjFiles-PPC} {StLibFiles-PPC} {MondoBuild} - PPCLink - -o {Targ} - {ObjFiles-PPC} - {StLibFiles-PPC} - {Sym-PPC} - -mf -d - -t 'XCOF' - -c 'MPS ' - -xm l - -{ShLibFile} {StLibFile} {ShLibFiles-PPC} {ExportFile} {MondoBuild} - PPCLink - -o {Targ} - {StLibFile} - {ShLibFiles-PPC} - {Sym-PPC} - -@export {ExportFile} - -fragname {FragName} - -mf -d - -t 'shlb' - -c '????' - -xm s - -{StubFile} {ShLibFile} {MondoBuild} - shlb2stub -o {Targ} {ShLibFile} - -{ElementsTool} {ElementToolObjFile} {StubFile} {LibFiles-PPC} {MondoBuild} - PPCLink - -o {Targ} - {ElementToolObjFile} - {StLibFile} - {LibFiles-PPC} - {Sym-PPC} - -mf -d - -t 'MPST' - -c 'MPS ' - -{OutlineTool} {OutlineToolObjFile} {StubFile} {LibFiles-PPC} {MondoBuild} - PPCLink - -o {Targ} - {OutlineToolObjFile} - {StLibFile} - {LibFiles-PPC} - {Sym-PPC} - -mf -d - -t 'MPST' - -c 'MPS ' - - -### Special Rules ### - -{ExportFile} "{HdrDir}expat.h" {MondoBuild} - StreamEdit -d - -e "/('XMLPARSEAPI('') ')0,1'XML_'([A-Za-z0-9_]+)1'('/ Print 'XML_' 1" - "{HdrDir}expat.h" > {Targ} - - -### Required Dependencies ### - -"{ObjDir}xmlparse.c.o" "{SrcDir}xmlparse.c" -"{ObjDir}xmlrole.c.o" "{SrcDir}xmlrole.c" -"{ObjDir}xmltok.c.o" "{SrcDir}xmltok.c" - -"{ObjDir}elements.c.o" "{ToolDir}elements.c" -"{ObjDir}outline.c.o" "{ToolDir}outline.c" - - -### Optional Dependencies ### -### Build this target to clean out generated intermediate files. ### - -Clean - Delete {ObjFiles-PPC} {ExportFile} {ElementToolObjFile} {OutlineToolObjFile} - -### Build this target to clean out all generated files. ### - -Clean-All Clean - Delete {StLibFile} {ShLibFile} {StubFile} {ElementsTool} {OutlineTool} - -### Build this target to generate "include file" dependencies. ### - -Dependencies $OutOfDate - MakeDepend - -append {MAKEFILE} - -ignore "{CIncludes}" - -objdir "{ObjDir}" - -objext .o - {Defines} - {Includes} - {SrcFiles} - - diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/amigaconfig.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/amigaconfig.h deleted file mode 100644 index 86c6115..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/amigaconfig.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef AMIGACONFIG_H -#define AMIGACONFIG_H - -/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */ -#define BYTEORDER 4321 - -/* Define to 1 if you have the `bcopy' function. */ -#define HAVE_BCOPY 1 - -/* Define to 1 if you have the header file. */ -#undef HAVE_CHECK_H - -/* Define to 1 if you have the `memmove' function. */ -#define HAVE_MEMMOVE 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_UNISTD_H 1 - -/* whether byteorder is bigendian */ -#define WORDS_BIGENDIAN - -/* Define to specify how much context to retain around the current parse - point. */ -#define XML_CONTEXT_BYTES 1024 - -/* Define to make parameter entity parsing functionality available. */ -#define XML_DTD - -/* Define to make XML Namespaces functionality available. */ -#define XML_NS - -#endif /* AMIGACONFIG_H */ diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/ascii.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/ascii.h deleted file mode 100644 index d10530b..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/ascii.h +++ /dev/null @@ -1,92 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -#define ASCII_A 0x41 -#define ASCII_B 0x42 -#define ASCII_C 0x43 -#define ASCII_D 0x44 -#define ASCII_E 0x45 -#define ASCII_F 0x46 -#define ASCII_G 0x47 -#define ASCII_H 0x48 -#define ASCII_I 0x49 -#define ASCII_J 0x4A -#define ASCII_K 0x4B -#define ASCII_L 0x4C -#define ASCII_M 0x4D -#define ASCII_N 0x4E -#define ASCII_O 0x4F -#define ASCII_P 0x50 -#define ASCII_Q 0x51 -#define ASCII_R 0x52 -#define ASCII_S 0x53 -#define ASCII_T 0x54 -#define ASCII_U 0x55 -#define ASCII_V 0x56 -#define ASCII_W 0x57 -#define ASCII_X 0x58 -#define ASCII_Y 0x59 -#define ASCII_Z 0x5A - -#define ASCII_a 0x61 -#define ASCII_b 0x62 -#define ASCII_c 0x63 -#define ASCII_d 0x64 -#define ASCII_e 0x65 -#define ASCII_f 0x66 -#define ASCII_g 0x67 -#define ASCII_h 0x68 -#define ASCII_i 0x69 -#define ASCII_j 0x6A -#define ASCII_k 0x6B -#define ASCII_l 0x6C -#define ASCII_m 0x6D -#define ASCII_n 0x6E -#define ASCII_o 0x6F -#define ASCII_p 0x70 -#define ASCII_q 0x71 -#define ASCII_r 0x72 -#define ASCII_s 0x73 -#define ASCII_t 0x74 -#define ASCII_u 0x75 -#define ASCII_v 0x76 -#define ASCII_w 0x77 -#define ASCII_x 0x78 -#define ASCII_y 0x79 -#define ASCII_z 0x7A - -#define ASCII_0 0x30 -#define ASCII_1 0x31 -#define ASCII_2 0x32 -#define ASCII_3 0x33 -#define ASCII_4 0x34 -#define ASCII_5 0x35 -#define ASCII_6 0x36 -#define ASCII_7 0x37 -#define ASCII_8 0x38 -#define ASCII_9 0x39 - -#define ASCII_TAB 0x09 -#define ASCII_SPACE 0x20 -#define ASCII_EXCL 0x21 -#define ASCII_QUOT 0x22 -#define ASCII_AMP 0x26 -#define ASCII_APOS 0x27 -#define ASCII_MINUS 0x2D -#define ASCII_PERIOD 0x2E -#define ASCII_COLON 0x3A -#define ASCII_SEMI 0x3B -#define ASCII_LT 0x3C -#define ASCII_EQUALS 0x3D -#define ASCII_GT 0x3E -#define ASCII_LSQB 0x5B -#define ASCII_RSQB 0x5D -#define ASCII_UNDERSCORE 0x5F -#define ASCII_LPAREN 0x28 -#define ASCII_RPAREN 0x29 -#define ASCII_FF 0x0C -#define ASCII_SLASH 0x2F -#define ASCII_HASH 0x23 -#define ASCII_PIPE 0x7C -#define ASCII_COMMA 0x2C diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/asciitab.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/asciitab.h deleted file mode 100644 index 79a15c2..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/asciitab.h +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -/* 0x00 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x04 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x08 */ BT_NONXML, BT_S, BT_LF, BT_NONXML, -/* 0x0C */ BT_NONXML, BT_CR, BT_NONXML, BT_NONXML, -/* 0x10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x14 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x18 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x1C */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x20 */ BT_S, BT_EXCL, BT_QUOT, BT_NUM, -/* 0x24 */ BT_OTHER, BT_PERCNT, BT_AMP, BT_APOS, -/* 0x28 */ BT_LPAR, BT_RPAR, BT_AST, BT_PLUS, -/* 0x2C */ BT_COMMA, BT_MINUS, BT_NAME, BT_SOL, -/* 0x30 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, -/* 0x34 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, -/* 0x38 */ BT_DIGIT, BT_DIGIT, BT_COLON, BT_SEMI, -/* 0x3C */ BT_LT, BT_EQUALS, BT_GT, BT_QUEST, -/* 0x40 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, -/* 0x44 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, -/* 0x48 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x4C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x50 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x58 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_LSQB, -/* 0x5C */ BT_OTHER, BT_RSQB, BT_OTHER, BT_NMSTRT, -/* 0x60 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, -/* 0x64 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, -/* 0x68 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x6C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x78 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, -/* 0x7C */ BT_VERBAR, BT_OTHER, BT_OTHER, BT_OTHER, diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/expat.dsp b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/expat.dsp deleted file mode 100644 index 6440d37..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/expat.dsp +++ /dev/null @@ -1,185 +0,0 @@ -# Microsoft Developer Studio Project File - Name="expat" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=expat - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "expat.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "expat.mak" CFG="expat - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "expat - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "expat - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "expat - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "..\win32\bin\Release" -# PROP Intermediate_Dir "..\win32\tmp\Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXPAT_EXPORTS" /Yu"stdafx.h" /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "COMPILED_FROM_DSP" /FD /c -# SUBTRACT CPP /YX /Yc /Yu -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 /nologo /dll /machine:I386 -# ADD LINK32 /nologo /dll /pdb:none /machine:I386 /out:"..\win32\bin\Release\libexpat.dll" - -!ELSEIF "$(CFG)" == "expat - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "..\win32\bin\Debug" -# PROP Intermediate_Dir "..\win32\tmp\Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXPAT_EXPORTS" /Yu"stdafx.h" /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /D "_DEBUG" /D "COMPILED_FROM_DSP" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /FR /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 /nologo /dll /pdb:none /debug /machine:I386 /out:"..\win32\bin\Debug\libexpat.dll" - -!ENDIF - -# Begin Target - -# Name "expat - Win32 Release" -# Name "expat - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\libexpat.def -# End Source File -# Begin Source File - -SOURCE=.\xmlparse.c - -!IF "$(CFG)" == "expat - Win32 Release" - -!ELSEIF "$(CFG)" == "expat - Win32 Debug" - -# ADD CPP /GX- /Od - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\xmlrole.c -# End Source File -# Begin Source File - -SOURCE=.\xmltok.c -# End Source File -# Begin Source File - -SOURCE=.\xmltok_impl.c -# End Source File -# Begin Source File - -SOURCE=.\xmltok_ns.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\ascii.h -# End Source File -# Begin Source File - -SOURCE=.\asciitab.h -# End Source File -# Begin Source File - -SOURCE=.\expat.h -# End Source File -# Begin Source File - -SOURCE=.\expat_external.h -# End Source File -# Begin Source File - -SOURCE=.\iasciitab.h -# End Source File -# Begin Source File - -SOURCE=.\internal.h -# End Source File -# Begin Source File - -SOURCE=.\latin1tab.h -# End Source File -# Begin Source File - -SOURCE=.\nametab.h -# End Source File -# Begin Source File - -SOURCE=.\utf8tab.h -# End Source File -# Begin Source File - -SOURCE=.\xmlrole.h -# End Source File -# Begin Source File - -SOURCE=.\xmltok.h -# End Source File -# Begin Source File - -SOURCE=.\xmltok_impl.h -# End Source File -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/expat.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/expat.h deleted file mode 100644 index 9a21680..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/expat.h +++ /dev/null @@ -1,1047 +0,0 @@ -/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -#ifndef Expat_INCLUDED -#define Expat_INCLUDED 1 - -#ifdef __VMS -/* 0 1 2 3 0 1 2 3 - 1234567890123456789012345678901 1234567890123456789012345678901 */ -#define XML_SetProcessingInstructionHandler XML_SetProcessingInstrHandler -#define XML_SetUnparsedEntityDeclHandler XML_SetUnparsedEntDeclHandler -#define XML_SetStartNamespaceDeclHandler XML_SetStartNamespcDeclHandler -#define XML_SetExternalEntityRefHandlerArg XML_SetExternalEntRefHandlerArg -#endif - -#include -#include "expat_external.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct XML_ParserStruct; -typedef struct XML_ParserStruct *XML_Parser; - -/* Should this be defined using stdbool.h when C99 is available? */ -typedef unsigned char XML_Bool; -#define XML_TRUE ((XML_Bool) 1) -#define XML_FALSE ((XML_Bool) 0) - -/* The XML_Status enum gives the possible return values for several - API functions. The preprocessor #defines are included so this - stanza can be added to code that still needs to support older - versions of Expat 1.95.x: - - #ifndef XML_STATUS_OK - #define XML_STATUS_OK 1 - #define XML_STATUS_ERROR 0 - #endif - - Otherwise, the #define hackery is quite ugly and would have been - dropped. -*/ -enum XML_Status { - XML_STATUS_ERROR = 0, -#define XML_STATUS_ERROR XML_STATUS_ERROR - XML_STATUS_OK = 1, -#define XML_STATUS_OK XML_STATUS_OK - XML_STATUS_SUSPENDED = 2 -#define XML_STATUS_SUSPENDED XML_STATUS_SUSPENDED -}; - -enum XML_Error { - XML_ERROR_NONE, - XML_ERROR_NO_MEMORY, - XML_ERROR_SYNTAX, - XML_ERROR_NO_ELEMENTS, - XML_ERROR_INVALID_TOKEN, - XML_ERROR_UNCLOSED_TOKEN, - XML_ERROR_PARTIAL_CHAR, - XML_ERROR_TAG_MISMATCH, - XML_ERROR_DUPLICATE_ATTRIBUTE, - XML_ERROR_JUNK_AFTER_DOC_ELEMENT, - XML_ERROR_PARAM_ENTITY_REF, - XML_ERROR_UNDEFINED_ENTITY, - XML_ERROR_RECURSIVE_ENTITY_REF, - XML_ERROR_ASYNC_ENTITY, - XML_ERROR_BAD_CHAR_REF, - XML_ERROR_BINARY_ENTITY_REF, - XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF, - XML_ERROR_MISPLACED_XML_PI, - XML_ERROR_UNKNOWN_ENCODING, - XML_ERROR_INCORRECT_ENCODING, - XML_ERROR_UNCLOSED_CDATA_SECTION, - XML_ERROR_EXTERNAL_ENTITY_HANDLING, - XML_ERROR_NOT_STANDALONE, - XML_ERROR_UNEXPECTED_STATE, - XML_ERROR_ENTITY_DECLARED_IN_PE, - XML_ERROR_FEATURE_REQUIRES_XML_DTD, - XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING, - /* Added in 1.95.7. */ - XML_ERROR_UNBOUND_PREFIX, - /* Added in 1.95.8. */ - XML_ERROR_UNDECLARING_PREFIX, - XML_ERROR_INCOMPLETE_PE, - XML_ERROR_XML_DECL, - XML_ERROR_TEXT_DECL, - XML_ERROR_PUBLICID, - XML_ERROR_SUSPENDED, - XML_ERROR_NOT_SUSPENDED, - XML_ERROR_ABORTED, - XML_ERROR_FINISHED, - XML_ERROR_SUSPEND_PE, - /* Added in 2.0. */ - XML_ERROR_RESERVED_PREFIX_XML, - XML_ERROR_RESERVED_PREFIX_XMLNS, - XML_ERROR_RESERVED_NAMESPACE_URI -}; - -enum XML_Content_Type { - XML_CTYPE_EMPTY = 1, - XML_CTYPE_ANY, - XML_CTYPE_MIXED, - XML_CTYPE_NAME, - XML_CTYPE_CHOICE, - XML_CTYPE_SEQ -}; - -enum XML_Content_Quant { - XML_CQUANT_NONE, - XML_CQUANT_OPT, - XML_CQUANT_REP, - XML_CQUANT_PLUS -}; - -/* If type == XML_CTYPE_EMPTY or XML_CTYPE_ANY, then quant will be - XML_CQUANT_NONE, and the other fields will be zero or NULL. - If type == XML_CTYPE_MIXED, then quant will be NONE or REP and - numchildren will contain number of elements that may be mixed in - and children point to an array of XML_Content cells that will be - all of XML_CTYPE_NAME type with no quantification. - - If type == XML_CTYPE_NAME, then the name points to the name, and - the numchildren field will be zero and children will be NULL. The - quant fields indicates any quantifiers placed on the name. - - CHOICE and SEQ will have name NULL, the number of children in - numchildren and children will point, recursively, to an array - of XML_Content cells. - - The EMPTY, ANY, and MIXED types will only occur at top level. -*/ - -typedef struct XML_cp XML_Content; - -struct XML_cp { - enum XML_Content_Type type; - enum XML_Content_Quant quant; - XML_Char * name; - unsigned int numchildren; - XML_Content * children; -}; - - -/* This is called for an element declaration. See above for - description of the model argument. It's the caller's responsibility - to free model when finished with it. -*/ -typedef void (XMLCALL *XML_ElementDeclHandler) (void *userData, - const XML_Char *name, - XML_Content *model); - -XMLPARSEAPI(void) -XML_SetElementDeclHandler(XML_Parser parser, - XML_ElementDeclHandler eldecl); - -/* The Attlist declaration handler is called for *each* attribute. So - a single Attlist declaration with multiple attributes declared will - generate multiple calls to this handler. The "default" parameter - may be NULL in the case of the "#IMPLIED" or "#REQUIRED" - keyword. The "isrequired" parameter will be true and the default - value will be NULL in the case of "#REQUIRED". If "isrequired" is - true and default is non-NULL, then this is a "#FIXED" default. -*/ -typedef void (XMLCALL *XML_AttlistDeclHandler) ( - void *userData, - const XML_Char *elname, - const XML_Char *attname, - const XML_Char *att_type, - const XML_Char *dflt, - int isrequired); - -XMLPARSEAPI(void) -XML_SetAttlistDeclHandler(XML_Parser parser, - XML_AttlistDeclHandler attdecl); - -/* The XML declaration handler is called for *both* XML declarations - and text declarations. The way to distinguish is that the version - parameter will be NULL for text declarations. The encoding - parameter may be NULL for XML declarations. The standalone - parameter will be -1, 0, or 1 indicating respectively that there - was no standalone parameter in the declaration, that it was given - as no, or that it was given as yes. -*/ -typedef void (XMLCALL *XML_XmlDeclHandler) (void *userData, - const XML_Char *version, - const XML_Char *encoding, - int standalone); - -XMLPARSEAPI(void) -XML_SetXmlDeclHandler(XML_Parser parser, - XML_XmlDeclHandler xmldecl); - - -typedef struct { - void *(*malloc_fcn)(size_t size); - void *(*realloc_fcn)(void *ptr, size_t size); - void (*free_fcn)(void *ptr); -} XML_Memory_Handling_Suite; - -/* Constructs a new parser; encoding is the encoding specified by the - external protocol or NULL if there is none specified. -*/ -XMLPARSEAPI(XML_Parser) -XML_ParserCreate(const XML_Char *encoding); - -/* Constructs a new parser and namespace processor. Element type - names and attribute names that belong to a namespace will be - expanded; unprefixed attribute names are never expanded; unprefixed - element type names are expanded only if there is a default - namespace. The expanded name is the concatenation of the namespace - URI, the namespace separator character, and the local part of the - name. If the namespace separator is '\0' then the namespace URI - and the local part will be concatenated without any separator. - It is a programming error to use the separator '\0' with namespace - triplets (see XML_SetReturnNSTriplet). -*/ -XMLPARSEAPI(XML_Parser) -XML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator); - - -/* Constructs a new parser using the memory management suite referred to - by memsuite. If memsuite is NULL, then use the standard library memory - suite. If namespaceSeparator is non-NULL it creates a parser with - namespace processing as described above. The character pointed at - will serve as the namespace separator. - - All further memory operations used for the created parser will come from - the given suite. -*/ -XMLPARSEAPI(XML_Parser) -XML_ParserCreate_MM(const XML_Char *encoding, - const XML_Memory_Handling_Suite *memsuite, - const XML_Char *namespaceSeparator); - -/* Prepare a parser object to be re-used. This is particularly - valuable when memory allocation overhead is disproportionatly high, - such as when a large number of small documnents need to be parsed. - All handlers are cleared from the parser, except for the - unknownEncodingHandler. The parser's external state is re-initialized - except for the values of ns and ns_triplets. - - Added in Expat 1.95.3. -*/ -XMLPARSEAPI(XML_Bool) -XML_ParserReset(XML_Parser parser, const XML_Char *encoding); - -/* atts is array of name/value pairs, terminated by 0; - names and values are 0 terminated. -*/ -typedef void (XMLCALL *XML_StartElementHandler) (void *userData, - const XML_Char *name, - const XML_Char **atts); - -typedef void (XMLCALL *XML_EndElementHandler) (void *userData, - const XML_Char *name); - - -/* s is not 0 terminated. */ -typedef void (XMLCALL *XML_CharacterDataHandler) (void *userData, - const XML_Char *s, - int len); - -/* target and data are 0 terminated */ -typedef void (XMLCALL *XML_ProcessingInstructionHandler) ( - void *userData, - const XML_Char *target, - const XML_Char *data); - -/* data is 0 terminated */ -typedef void (XMLCALL *XML_CommentHandler) (void *userData, - const XML_Char *data); - -typedef void (XMLCALL *XML_StartCdataSectionHandler) (void *userData); -typedef void (XMLCALL *XML_EndCdataSectionHandler) (void *userData); - -/* This is called for any characters in the XML document for which - there is no applicable handler. This includes both characters that - are part of markup which is of a kind that is not reported - (comments, markup declarations), or characters that are part of a - construct which could be reported but for which no handler has been - supplied. The characters are passed exactly as they were in the XML - document except that they will be encoded in UTF-8 or UTF-16. - Line boundaries are not normalized. Note that a byte order mark - character is not passed to the default handler. There are no - guarantees about how characters are divided between calls to the - default handler: for example, a comment might be split between - multiple calls. -*/ -typedef void (XMLCALL *XML_DefaultHandler) (void *userData, - const XML_Char *s, - int len); - -/* This is called for the start of the DOCTYPE declaration, before - any DTD or internal subset is parsed. -*/ -typedef void (XMLCALL *XML_StartDoctypeDeclHandler) ( - void *userData, - const XML_Char *doctypeName, - const XML_Char *sysid, - const XML_Char *pubid, - int has_internal_subset); - -/* This is called for the start of the DOCTYPE declaration when the - closing > is encountered, but after processing any external - subset. -*/ -typedef void (XMLCALL *XML_EndDoctypeDeclHandler)(void *userData); - -/* This is called for entity declarations. The is_parameter_entity - argument will be non-zero if the entity is a parameter entity, zero - otherwise. - - For internal entities (), value will - be non-NULL and systemId, publicID, and notationName will be NULL. - The value string is NOT nul-terminated; the length is provided in - the value_length argument. Since it is legal to have zero-length - values, do not use this argument to test for internal entities. - - For external entities, value will be NULL and systemId will be - non-NULL. The publicId argument will be NULL unless a public - identifier was provided. The notationName argument will have a - non-NULL value only for unparsed entity declarations. - - Note that is_parameter_entity can't be changed to XML_Bool, since - that would break binary compatibility. -*/ -typedef void (XMLCALL *XML_EntityDeclHandler) ( - void *userData, - const XML_Char *entityName, - int is_parameter_entity, - const XML_Char *value, - int value_length, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId, - const XML_Char *notationName); - -XMLPARSEAPI(void) -XML_SetEntityDeclHandler(XML_Parser parser, - XML_EntityDeclHandler handler); - -/* OBSOLETE -- OBSOLETE -- OBSOLETE - This handler has been superceded by the EntityDeclHandler above. - It is provided here for backward compatibility. - - This is called for a declaration of an unparsed (NDATA) entity. - The base argument is whatever was set by XML_SetBase. The - entityName, systemId and notationName arguments will never be - NULL. The other arguments may be. -*/ -typedef void (XMLCALL *XML_UnparsedEntityDeclHandler) ( - void *userData, - const XML_Char *entityName, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId, - const XML_Char *notationName); - -/* This is called for a declaration of notation. The base argument is - whatever was set by XML_SetBase. The notationName will never be - NULL. The other arguments can be. -*/ -typedef void (XMLCALL *XML_NotationDeclHandler) ( - void *userData, - const XML_Char *notationName, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId); - -/* When namespace processing is enabled, these are called once for - each namespace declaration. The call to the start and end element - handlers occur between the calls to the start and end namespace - declaration handlers. For an xmlns attribute, prefix will be - NULL. For an xmlns="" attribute, uri will be NULL. -*/ -typedef void (XMLCALL *XML_StartNamespaceDeclHandler) ( - void *userData, - const XML_Char *prefix, - const XML_Char *uri); - -typedef void (XMLCALL *XML_EndNamespaceDeclHandler) ( - void *userData, - const XML_Char *prefix); - -/* This is called if the document is not standalone, that is, it has an - external subset or a reference to a parameter entity, but does not - have standalone="yes". If this handler returns XML_STATUS_ERROR, - then processing will not continue, and the parser will return a - XML_ERROR_NOT_STANDALONE error. - If parameter entity parsing is enabled, then in addition to the - conditions above this handler will only be called if the referenced - entity was actually read. -*/ -typedef int (XMLCALL *XML_NotStandaloneHandler) (void *userData); - -/* This is called for a reference to an external parsed general - entity. The referenced entity is not automatically parsed. The - application can parse it immediately or later using - XML_ExternalEntityParserCreate. - - The parser argument is the parser parsing the entity containing the - reference; it can be passed as the parser argument to - XML_ExternalEntityParserCreate. The systemId argument is the - system identifier as specified in the entity declaration; it will - not be NULL. - - The base argument is the system identifier that should be used as - the base for resolving systemId if systemId was relative; this is - set by XML_SetBase; it may be NULL. - - The publicId argument is the public identifier as specified in the - entity declaration, or NULL if none was specified; the whitespace - in the public identifier will have been normalized as required by - the XML spec. - - The context argument specifies the parsing context in the format - expected by the context argument to XML_ExternalEntityParserCreate; - context is valid only until the handler returns, so if the - referenced entity is to be parsed later, it must be copied. - context is NULL only when the entity is a parameter entity. - - The handler should return XML_STATUS_ERROR if processing should not - continue because of a fatal error in the handling of the external - entity. In this case the calling parser will return an - XML_ERROR_EXTERNAL_ENTITY_HANDLING error. - - Note that unlike other handlers the first argument is the parser, - not userData. -*/ -typedef int (XMLCALL *XML_ExternalEntityRefHandler) ( - XML_Parser parser, - const XML_Char *context, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId); - -/* This is called in two situations: - 1) An entity reference is encountered for which no declaration - has been read *and* this is not an error. - 2) An internal entity reference is read, but not expanded, because - XML_SetDefaultHandler has been called. - Note: skipped parameter entities in declarations and skipped general - entities in attribute values cannot be reported, because - the event would be out of sync with the reporting of the - declarations or attribute values -*/ -typedef void (XMLCALL *XML_SkippedEntityHandler) ( - void *userData, - const XML_Char *entityName, - int is_parameter_entity); - -/* This structure is filled in by the XML_UnknownEncodingHandler to - provide information to the parser about encodings that are unknown - to the parser. - - The map[b] member gives information about byte sequences whose - first byte is b. - - If map[b] is c where c is >= 0, then b by itself encodes the - Unicode scalar value c. - - If map[b] is -1, then the byte sequence is malformed. - - If map[b] is -n, where n >= 2, then b is the first byte of an - n-byte sequence that encodes a single Unicode scalar value. - - The data member will be passed as the first argument to the convert - function. - - The convert function is used to convert multibyte sequences; s will - point to a n-byte sequence where map[(unsigned char)*s] == -n. The - convert function must return the Unicode scalar value represented - by this byte sequence or -1 if the byte sequence is malformed. - - The convert function may be NULL if the encoding is a single-byte - encoding, that is if map[b] >= -1 for all bytes b. - - When the parser is finished with the encoding, then if release is - not NULL, it will call release passing it the data member; once - release has been called, the convert function will not be called - again. - - Expat places certain restrictions on the encodings that are supported - using this mechanism. - - 1. Every ASCII character that can appear in a well-formed XML document, - other than the characters - - $@\^`{}~ - - must be represented by a single byte, and that byte must be the - same byte that represents that character in ASCII. - - 2. No character may require more than 4 bytes to encode. - - 3. All characters encoded must have Unicode scalar values <= - 0xFFFF, (i.e., characters that would be encoded by surrogates in - UTF-16 are not allowed). Note that this restriction doesn't - apply to the built-in support for UTF-8 and UTF-16. - - 4. No Unicode character may be encoded by more than one distinct - sequence of bytes. -*/ -typedef struct { - int map[256]; - void *data; - int (XMLCALL *convert)(void *data, const char *s); - void (XMLCALL *release)(void *data); -} XML_Encoding; - -/* This is called for an encoding that is unknown to the parser. - - The encodingHandlerData argument is that which was passed as the - second argument to XML_SetUnknownEncodingHandler. - - The name argument gives the name of the encoding as specified in - the encoding declaration. - - If the callback can provide information about the encoding, it must - fill in the XML_Encoding structure, and return XML_STATUS_OK. - Otherwise it must return XML_STATUS_ERROR. - - If info does not describe a suitable encoding, then the parser will - return an XML_UNKNOWN_ENCODING error. -*/ -typedef int (XMLCALL *XML_UnknownEncodingHandler) ( - void *encodingHandlerData, - const XML_Char *name, - XML_Encoding *info); - -XMLPARSEAPI(void) -XML_SetElementHandler(XML_Parser parser, - XML_StartElementHandler start, - XML_EndElementHandler end); - -XMLPARSEAPI(void) -XML_SetStartElementHandler(XML_Parser parser, - XML_StartElementHandler handler); - -XMLPARSEAPI(void) -XML_SetEndElementHandler(XML_Parser parser, - XML_EndElementHandler handler); - -XMLPARSEAPI(void) -XML_SetCharacterDataHandler(XML_Parser parser, - XML_CharacterDataHandler handler); - -XMLPARSEAPI(void) -XML_SetProcessingInstructionHandler(XML_Parser parser, - XML_ProcessingInstructionHandler handler); -XMLPARSEAPI(void) -XML_SetCommentHandler(XML_Parser parser, - XML_CommentHandler handler); - -XMLPARSEAPI(void) -XML_SetCdataSectionHandler(XML_Parser parser, - XML_StartCdataSectionHandler start, - XML_EndCdataSectionHandler end); - -XMLPARSEAPI(void) -XML_SetStartCdataSectionHandler(XML_Parser parser, - XML_StartCdataSectionHandler start); - -XMLPARSEAPI(void) -XML_SetEndCdataSectionHandler(XML_Parser parser, - XML_EndCdataSectionHandler end); - -/* This sets the default handler and also inhibits expansion of - internal entities. These entity references will be passed to the - default handler, or to the skipped entity handler, if one is set. -*/ -XMLPARSEAPI(void) -XML_SetDefaultHandler(XML_Parser parser, - XML_DefaultHandler handler); - -/* This sets the default handler but does not inhibit expansion of - internal entities. The entity reference will not be passed to the - default handler. -*/ -XMLPARSEAPI(void) -XML_SetDefaultHandlerExpand(XML_Parser parser, - XML_DefaultHandler handler); - -XMLPARSEAPI(void) -XML_SetDoctypeDeclHandler(XML_Parser parser, - XML_StartDoctypeDeclHandler start, - XML_EndDoctypeDeclHandler end); - -XMLPARSEAPI(void) -XML_SetStartDoctypeDeclHandler(XML_Parser parser, - XML_StartDoctypeDeclHandler start); - -XMLPARSEAPI(void) -XML_SetEndDoctypeDeclHandler(XML_Parser parser, - XML_EndDoctypeDeclHandler end); - -XMLPARSEAPI(void) -XML_SetUnparsedEntityDeclHandler(XML_Parser parser, - XML_UnparsedEntityDeclHandler handler); - -XMLPARSEAPI(void) -XML_SetNotationDeclHandler(XML_Parser parser, - XML_NotationDeclHandler handler); - -XMLPARSEAPI(void) -XML_SetNamespaceDeclHandler(XML_Parser parser, - XML_StartNamespaceDeclHandler start, - XML_EndNamespaceDeclHandler end); - -XMLPARSEAPI(void) -XML_SetStartNamespaceDeclHandler(XML_Parser parser, - XML_StartNamespaceDeclHandler start); - -XMLPARSEAPI(void) -XML_SetEndNamespaceDeclHandler(XML_Parser parser, - XML_EndNamespaceDeclHandler end); - -XMLPARSEAPI(void) -XML_SetNotStandaloneHandler(XML_Parser parser, - XML_NotStandaloneHandler handler); - -XMLPARSEAPI(void) -XML_SetExternalEntityRefHandler(XML_Parser parser, - XML_ExternalEntityRefHandler handler); - -/* If a non-NULL value for arg is specified here, then it will be - passed as the first argument to the external entity ref handler - instead of the parser object. -*/ -XMLPARSEAPI(void) -XML_SetExternalEntityRefHandlerArg(XML_Parser parser, - void *arg); - -XMLPARSEAPI(void) -XML_SetSkippedEntityHandler(XML_Parser parser, - XML_SkippedEntityHandler handler); - -XMLPARSEAPI(void) -XML_SetUnknownEncodingHandler(XML_Parser parser, - XML_UnknownEncodingHandler handler, - void *encodingHandlerData); - -/* This can be called within a handler for a start element, end - element, processing instruction or character data. It causes the - corresponding markup to be passed to the default handler. -*/ -XMLPARSEAPI(void) -XML_DefaultCurrent(XML_Parser parser); - -/* If do_nst is non-zero, and namespace processing is in effect, and - a name has a prefix (i.e. an explicit namespace qualifier) then - that name is returned as a triplet in a single string separated by - the separator character specified when the parser was created: URI - + sep + local_name + sep + prefix. - - If do_nst is zero, then namespace information is returned in the - default manner (URI + sep + local_name) whether or not the name - has a prefix. - - Note: Calling XML_SetReturnNSTriplet after XML_Parse or - XML_ParseBuffer has no effect. -*/ - -XMLPARSEAPI(void) -XML_SetReturnNSTriplet(XML_Parser parser, int do_nst); - -/* This value is passed as the userData argument to callbacks. */ -XMLPARSEAPI(void) -XML_SetUserData(XML_Parser parser, void *userData); - -/* Returns the last value set by XML_SetUserData or NULL. */ -#define XML_GetUserData(parser) (*(void **)(parser)) - -/* This is equivalent to supplying an encoding argument to - XML_ParserCreate. On success XML_SetEncoding returns non-zero, - zero otherwise. - Note: Calling XML_SetEncoding after XML_Parse or XML_ParseBuffer - has no effect and returns XML_STATUS_ERROR. -*/ -XMLPARSEAPI(enum XML_Status) -XML_SetEncoding(XML_Parser parser, const XML_Char *encoding); - -/* If this function is called, then the parser will be passed as the - first argument to callbacks instead of userData. The userData will - still be accessible using XML_GetUserData. -*/ -XMLPARSEAPI(void) -XML_UseParserAsHandlerArg(XML_Parser parser); - -/* If useDTD == XML_TRUE is passed to this function, then the parser - will assume that there is an external subset, even if none is - specified in the document. In such a case the parser will call the - externalEntityRefHandler with a value of NULL for the systemId - argument (the publicId and context arguments will be NULL as well). - Note: For the purpose of checking WFC: Entity Declared, passing - useDTD == XML_TRUE will make the parser behave as if the document - had a DTD with an external subset. - Note: If this function is called, then this must be done before - the first call to XML_Parse or XML_ParseBuffer, since it will - have no effect after that. Returns - XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING. - Note: If the document does not have a DOCTYPE declaration at all, - then startDoctypeDeclHandler and endDoctypeDeclHandler will not - be called, despite an external subset being parsed. - Note: If XML_DTD is not defined when Expat is compiled, returns - XML_ERROR_FEATURE_REQUIRES_XML_DTD. -*/ -XMLPARSEAPI(enum XML_Error) -XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD); - - -/* Sets the base to be used for resolving relative URIs in system - identifiers in declarations. Resolving relative identifiers is - left to the application: this value will be passed through as the - base argument to the XML_ExternalEntityRefHandler, - XML_NotationDeclHandler and XML_UnparsedEntityDeclHandler. The base - argument will be copied. Returns XML_STATUS_ERROR if out of memory, - XML_STATUS_OK otherwise. -*/ -XMLPARSEAPI(enum XML_Status) -XML_SetBase(XML_Parser parser, const XML_Char *base); - -XMLPARSEAPI(const XML_Char *) -XML_GetBase(XML_Parser parser); - -/* Returns the number of the attribute/value pairs passed in last call - to the XML_StartElementHandler that were specified in the start-tag - rather than defaulted. Each attribute/value pair counts as 2; thus - this correspondds to an index into the atts array passed to the - XML_StartElementHandler. -*/ -XMLPARSEAPI(int) -XML_GetSpecifiedAttributeCount(XML_Parser parser); - -/* Returns the index of the ID attribute passed in the last call to - XML_StartElementHandler, or -1 if there is no ID attribute. Each - attribute/value pair counts as 2; thus this correspondds to an - index into the atts array passed to the XML_StartElementHandler. -*/ -XMLPARSEAPI(int) -XML_GetIdAttributeIndex(XML_Parser parser); - -#ifdef XML_ATTR_INFO -/* Source file byte offsets for the start and end of attribute names and values. - The value indices are exclusive of surrounding quotes; thus in a UTF-8 source - file an attribute value of "blah" will yield: - info->valueEnd - info->valueStart = 4 bytes. -*/ -typedef struct { - XML_Index nameStart; /* Offset to beginning of the attribute name. */ - XML_Index nameEnd; /* Offset after the attribute name's last byte. */ - XML_Index valueStart; /* Offset to beginning of the attribute value. */ - XML_Index valueEnd; /* Offset after the attribute value's last byte. */ -} XML_AttrInfo; - -/* Returns an array of XML_AttrInfo structures for the attribute/value pairs - passed in last call to the XML_StartElementHandler that were specified - in the start-tag rather than defaulted. Each attribute/value pair counts - as 1; thus the number of entries in the array is - XML_GetSpecifiedAttributeCount(parser) / 2. -*/ -XMLPARSEAPI(const XML_AttrInfo *) -XML_GetAttributeInfo(XML_Parser parser); -#endif - -/* Parses some input. Returns XML_STATUS_ERROR if a fatal error is - detected. The last call to XML_Parse must have isFinal true; len - may be zero for this call (or any other). - - Though the return values for these functions has always been - described as a Boolean value, the implementation, at least for the - 1.95.x series, has always returned exactly one of the XML_Status - values. -*/ -XMLPARSEAPI(enum XML_Status) -XML_Parse(XML_Parser parser, const char *s, int len, int isFinal); - -XMLPARSEAPI(void *) -XML_GetBuffer(XML_Parser parser, int len); - -XMLPARSEAPI(enum XML_Status) -XML_ParseBuffer(XML_Parser parser, int len, int isFinal); - -/* Stops parsing, causing XML_Parse() or XML_ParseBuffer() to return. - Must be called from within a call-back handler, except when aborting - (resumable = 0) an already suspended parser. Some call-backs may - still follow because they would otherwise get lost. Examples: - - endElementHandler() for empty elements when stopped in - startElementHandler(), - - endNameSpaceDeclHandler() when stopped in endElementHandler(), - and possibly others. - - Can be called from most handlers, including DTD related call-backs, - except when parsing an external parameter entity and resumable != 0. - Returns XML_STATUS_OK when successful, XML_STATUS_ERROR otherwise. - Possible error codes: - - XML_ERROR_SUSPENDED: when suspending an already suspended parser. - - XML_ERROR_FINISHED: when the parser has already finished. - - XML_ERROR_SUSPEND_PE: when suspending while parsing an external PE. - - When resumable != 0 (true) then parsing is suspended, that is, - XML_Parse() and XML_ParseBuffer() return XML_STATUS_SUSPENDED. - Otherwise, parsing is aborted, that is, XML_Parse() and XML_ParseBuffer() - return XML_STATUS_ERROR with error code XML_ERROR_ABORTED. - - *Note*: - This will be applied to the current parser instance only, that is, if - there is a parent parser then it will continue parsing when the - externalEntityRefHandler() returns. It is up to the implementation of - the externalEntityRefHandler() to call XML_StopParser() on the parent - parser (recursively), if one wants to stop parsing altogether. - - When suspended, parsing can be resumed by calling XML_ResumeParser(). -*/ -XMLPARSEAPI(enum XML_Status) -XML_StopParser(XML_Parser parser, XML_Bool resumable); - -/* Resumes parsing after it has been suspended with XML_StopParser(). - Must not be called from within a handler call-back. Returns same - status codes as XML_Parse() or XML_ParseBuffer(). - Additional error code XML_ERROR_NOT_SUSPENDED possible. - - *Note*: - This must be called on the most deeply nested child parser instance - first, and on its parent parser only after the child parser has finished, - to be applied recursively until the document entity's parser is restarted. - That is, the parent parser will not resume by itself and it is up to the - application to call XML_ResumeParser() on it at the appropriate moment. -*/ -XMLPARSEAPI(enum XML_Status) -XML_ResumeParser(XML_Parser parser); - -enum XML_Parsing { - XML_INITIALIZED, - XML_PARSING, - XML_FINISHED, - XML_SUSPENDED -}; - -typedef struct { - enum XML_Parsing parsing; - XML_Bool finalBuffer; -} XML_ParsingStatus; - -/* Returns status of parser with respect to being initialized, parsing, - finished, or suspended and processing the final buffer. - XXX XML_Parse() and XML_ParseBuffer() should return XML_ParsingStatus, - XXX with XML_FINISHED_OK or XML_FINISHED_ERROR replacing XML_FINISHED -*/ -XMLPARSEAPI(void) -XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status); - -/* Creates an XML_Parser object that can parse an external general - entity; context is a '\0'-terminated string specifying the parse - context; encoding is a '\0'-terminated string giving the name of - the externally specified encoding, or NULL if there is no - externally specified encoding. The context string consists of a - sequence of tokens separated by formfeeds (\f); a token consisting - of a name specifies that the general entity of the name is open; a - token of the form prefix=uri specifies the namespace for a - particular prefix; a token of the form =uri specifies the default - namespace. This can be called at any point after the first call to - an ExternalEntityRefHandler so longer as the parser has not yet - been freed. The new parser is completely independent and may - safely be used in a separate thread. The handlers and userData are - initialized from the parser argument. Returns NULL if out of memory. - Otherwise returns a new XML_Parser object. -*/ -XMLPARSEAPI(XML_Parser) -XML_ExternalEntityParserCreate(XML_Parser parser, - const XML_Char *context, - const XML_Char *encoding); - -enum XML_ParamEntityParsing { - XML_PARAM_ENTITY_PARSING_NEVER, - XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE, - XML_PARAM_ENTITY_PARSING_ALWAYS -}; - -/* Controls parsing of parameter entities (including the external DTD - subset). If parsing of parameter entities is enabled, then - references to external parameter entities (including the external - DTD subset) will be passed to the handler set with - XML_SetExternalEntityRefHandler. The context passed will be 0. - - Unlike external general entities, external parameter entities can - only be parsed synchronously. If the external parameter entity is - to be parsed, it must be parsed during the call to the external - entity ref handler: the complete sequence of - XML_ExternalEntityParserCreate, XML_Parse/XML_ParseBuffer and - XML_ParserFree calls must be made during this call. After - XML_ExternalEntityParserCreate has been called to create the parser - for the external parameter entity (context must be 0 for this - call), it is illegal to make any calls on the old parser until - XML_ParserFree has been called on the newly created parser. - If the library has been compiled without support for parameter - entity parsing (ie without XML_DTD being defined), then - XML_SetParamEntityParsing will return 0 if parsing of parameter - entities is requested; otherwise it will return non-zero. - Note: If XML_SetParamEntityParsing is called after XML_Parse or - XML_ParseBuffer, then it has no effect and will always return 0. -*/ -XMLPARSEAPI(int) -XML_SetParamEntityParsing(XML_Parser parser, - enum XML_ParamEntityParsing parsing); - -/* Sets the hash salt to use for internal hash calculations. - Helps in preventing DoS attacks based on predicting hash - function behavior. This must be called before parsing is started. - Returns 1 if successful, 0 when called after parsing has started. -*/ -XMLPARSEAPI(int) -XML_SetHashSalt(XML_Parser parser, - unsigned long hash_salt); - -/* If XML_Parse or XML_ParseBuffer have returned XML_STATUS_ERROR, then - XML_GetErrorCode returns information about the error. -*/ -XMLPARSEAPI(enum XML_Error) -XML_GetErrorCode(XML_Parser parser); - -/* These functions return information about the current parse - location. They may be called from any callback called to report - some parse event; in this case the location is the location of the - first of the sequence of characters that generated the event. When - called from callbacks generated by declarations in the document - prologue, the location identified isn't as neatly defined, but will - be within the relevant markup. When called outside of the callback - functions, the position indicated will be just past the last parse - event (regardless of whether there was an associated callback). - - They may also be called after returning from a call to XML_Parse - or XML_ParseBuffer. If the return value is XML_STATUS_ERROR then - the location is the location of the character at which the error - was detected; otherwise the location is the location of the last - parse event, as described above. -*/ -XMLPARSEAPI(XML_Size) XML_GetCurrentLineNumber(XML_Parser parser); -XMLPARSEAPI(XML_Size) XML_GetCurrentColumnNumber(XML_Parser parser); -XMLPARSEAPI(XML_Index) XML_GetCurrentByteIndex(XML_Parser parser); - -/* Return the number of bytes in the current event. - Returns 0 if the event is in an internal entity. -*/ -XMLPARSEAPI(int) -XML_GetCurrentByteCount(XML_Parser parser); - -/* If XML_CONTEXT_BYTES is defined, returns the input buffer, sets - the integer pointed to by offset to the offset within this buffer - of the current parse position, and sets the integer pointed to by size - to the size of this buffer (the number of input bytes). Otherwise - returns a NULL pointer. Also returns a NULL pointer if a parse isn't - active. - - NOTE: The character pointer returned should not be used outside - the handler that makes the call. -*/ -XMLPARSEAPI(const char *) -XML_GetInputContext(XML_Parser parser, - int *offset, - int *size); - -/* For backwards compatibility with previous versions. */ -#define XML_GetErrorLineNumber XML_GetCurrentLineNumber -#define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber -#define XML_GetErrorByteIndex XML_GetCurrentByteIndex - -/* Frees the content model passed to the element declaration handler */ -XMLPARSEAPI(void) -XML_FreeContentModel(XML_Parser parser, XML_Content *model); - -/* Exposing the memory handling functions used in Expat */ -XMLPARSEAPI(void *) -XML_MemMalloc(XML_Parser parser, size_t size); - -XMLPARSEAPI(void *) -XML_MemRealloc(XML_Parser parser, void *ptr, size_t size); - -XMLPARSEAPI(void) -XML_MemFree(XML_Parser parser, void *ptr); - -/* Frees memory used by the parser. */ -XMLPARSEAPI(void) -XML_ParserFree(XML_Parser parser); - -/* Returns a string describing the error. */ -XMLPARSEAPI(const XML_LChar *) -XML_ErrorString(enum XML_Error code); - -/* Return a string containing the version number of this expat */ -XMLPARSEAPI(const XML_LChar *) -XML_ExpatVersion(void); - -typedef struct { - int major; - int minor; - int micro; -} XML_Expat_Version; - -/* Return an XML_Expat_Version structure containing numeric version - number information for this version of expat. -*/ -XMLPARSEAPI(XML_Expat_Version) -XML_ExpatVersionInfo(void); - -/* Added in Expat 1.95.5. */ -enum XML_FeatureEnum { - XML_FEATURE_END = 0, - XML_FEATURE_UNICODE, - XML_FEATURE_UNICODE_WCHAR_T, - XML_FEATURE_DTD, - XML_FEATURE_CONTEXT_BYTES, - XML_FEATURE_MIN_SIZE, - XML_FEATURE_SIZEOF_XML_CHAR, - XML_FEATURE_SIZEOF_XML_LCHAR, - XML_FEATURE_NS, - XML_FEATURE_LARGE_SIZE, - XML_FEATURE_ATTR_INFO - /* Additional features must be added to the end of this enum. */ -}; - -typedef struct { - enum XML_FeatureEnum feature; - const XML_LChar *name; - long int value; -} XML_Feature; - -XMLPARSEAPI(const XML_Feature *) -XML_GetFeatureList(void); - - -/* Expat follows the GNU/Linux convention of odd number minor version for - beta/development releases and even number minor version for stable - releases. Micro is bumped with each release, and set to 0 with each - change to major or minor version. -*/ -#define XML_MAJOR_VERSION 2 -#define XML_MINOR_VERSION 1 -#define XML_MICRO_VERSION 0 - -#ifdef __cplusplus -} -#endif - -#endif /* not Expat_INCLUDED */ diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/expat_external.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/expat_external.h deleted file mode 100644 index 2c03284..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/expat_external.h +++ /dev/null @@ -1,115 +0,0 @@ -/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -#ifndef Expat_External_INCLUDED -#define Expat_External_INCLUDED 1 - -/* External API definitions */ - -#if defined(_MSC_EXTENSIONS) && !defined(__BEOS__) && !defined(__CYGWIN__) -#define XML_USE_MSC_EXTENSIONS 1 -#endif - -/* Expat tries very hard to make the API boundary very specifically - defined. There are two macros defined to control this boundary; - each of these can be defined before including this header to - achieve some different behavior, but doing so it not recommended or - tested frequently. - - XMLCALL - The calling convention to use for all calls across the - "library boundary." This will default to cdecl, and - try really hard to tell the compiler that's what we - want. - - XMLIMPORT - Whatever magic is needed to note that a function is - to be imported from a dynamically loaded library - (.dll, .so, or .sl, depending on your platform). - - The XMLCALL macro was added in Expat 1.95.7. The only one which is - expected to be directly useful in client code is XMLCALL. - - Note that on at least some Unix versions, the Expat library must be - compiled with the cdecl calling convention as the default since - system headers may assume the cdecl convention. -*/ -#ifndef XMLCALL -#if defined(_MSC_VER) -#define XMLCALL __cdecl -#elif defined(__GNUC__) && defined(__i386) && !defined(__INTEL_COMPILER) -#define XMLCALL __attribute__((cdecl)) -#else -/* For any platform which uses this definition and supports more than - one calling convention, we need to extend this definition to - declare the convention used on that platform, if it's possible to - do so. - - If this is the case for your platform, please file a bug report - with information on how to identify your platform via the C - pre-processor and how to specify the same calling convention as the - platform's malloc() implementation. -*/ -#define XMLCALL -#endif -#endif /* not defined XMLCALL */ - - -#if !defined(XML_STATIC) && !defined(XMLIMPORT) -#ifndef XML_BUILDING_EXPAT -/* using Expat from an application */ - -#ifdef XML_USE_MSC_EXTENSIONS -#define XMLIMPORT __declspec(dllimport) -#endif - -#endif -#endif /* not defined XML_STATIC */ - - -/* If we didn't define it above, define it away: */ -#ifndef XMLIMPORT -#define XMLIMPORT -#endif - - -#define XMLPARSEAPI(type) XMLIMPORT type XMLCALL - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef XML_UNICODE_WCHAR_T -#define XML_UNICODE -#endif - -#ifdef XML_UNICODE /* Information is UTF-16 encoded. */ -#ifdef XML_UNICODE_WCHAR_T -typedef wchar_t XML_Char; -typedef wchar_t XML_LChar; -#else -typedef unsigned short XML_Char; -typedef char XML_LChar; -#endif /* XML_UNICODE_WCHAR_T */ -#else /* Information is UTF-8 encoded. */ -typedef char XML_Char; -typedef char XML_LChar; -#endif /* XML_UNICODE */ - -#ifdef XML_LARGE_SIZE /* Use large integers for file/stream positions. */ -#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400 -typedef __int64 XML_Index; -typedef unsigned __int64 XML_Size; -#else -typedef long long XML_Index; -typedef unsigned long long XML_Size; -#endif -#else -typedef long XML_Index; -typedef unsigned long XML_Size; -#endif /* XML_LARGE_SIZE */ - -#ifdef __cplusplus -} -#endif - -#endif /* not Expat_External_INCLUDED */ diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/expat_static.dsp b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/expat_static.dsp deleted file mode 100644 index ca39bc0..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/expat_static.dsp +++ /dev/null @@ -1,162 +0,0 @@ -# Microsoft Developer Studio Project File - Name="expat_static" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=expat_static - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "expat_static.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "expat_static.mak" CFG="expat_static - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "expat_static - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "expat_static - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "expat_static - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "expat_static___Win32_Release" -# PROP BASE Intermediate_Dir "expat_static___Win32_Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "..\win32\bin\Release" -# PROP Intermediate_Dir "..\win32\tmp\Release_static" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "_WINDOWS" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "COMPILED_FROM_DSP" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x1009 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\win32\bin\Release\libexpatMT.lib" - -!ELSEIF "$(CFG)" == "expat_static - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "expat_static___Win32_Debug" -# PROP BASE Intermediate_Dir "expat_static___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "..\win32\bin\Debug" -# PROP Intermediate_Dir "..\win32\tmp\Debug_static" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "COMPILED_FROM_DSP" /D "_MBCS" /D "_LIB" /FR /FD /GZ /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x1009 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\win32\bin\Debug\libexpatMT.lib" - -!ENDIF - -# Begin Target - -# Name "expat_static - Win32 Release" -# Name "expat_static - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\xmlparse.c -# End Source File -# Begin Source File - -SOURCE=.\xmlrole.c -# End Source File -# Begin Source File - -SOURCE=.\xmltok.c -# End Source File -# Begin Source File - -SOURCE=.\xmltok_impl.c -# End Source File -# Begin Source File - -SOURCE=.\xmltok_ns.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\ascii.h -# End Source File -# Begin Source File - -SOURCE=.\asciitab.h -# End Source File -# Begin Source File - -SOURCE=.\expat.h -# End Source File -# Begin Source File - -SOURCE=.\expat_external.h -# End Source File -# Begin Source File - -SOURCE=.\iasciitab.h -# End Source File -# Begin Source File - -SOURCE=.\internal.h -# End Source File -# Begin Source File - -SOURCE=.\latin1tab.h -# End Source File -# Begin Source File - -SOURCE=.\nametab.h -# End Source File -# Begin Source File - -SOURCE=.\utf8tab.h -# End Source File -# Begin Source File - -SOURCE=.\xmlrole.h -# End Source File -# Begin Source File - -SOURCE=.\xmltok.h -# End Source File -# Begin Source File - -SOURCE=.\xmltok_impl.h -# End Source File -# End Group -# End Target -# End Project diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/expatw.dsp b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/expatw.dsp deleted file mode 100644 index 77497b5..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/expatw.dsp +++ /dev/null @@ -1,185 +0,0 @@ -# Microsoft Developer Studio Project File - Name="expatw" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=expatw - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "expatw.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "expatw.mak" CFG="expatw - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "expatw - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "expatw - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "expatw - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "..\win32\bin\Release" -# PROP Intermediate_Dir "..\win32\tmp\Release-w" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXPAT_EXPORTS" /Yu"stdafx.h" /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "COMPILED_FROM_DSP" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XML_UNICODE_WCHAR_T" /FD /c -# SUBTRACT CPP /YX /Yc /Yu -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 /nologo /dll /machine:I386 -# ADD LINK32 /nologo /dll /pdb:none /machine:I386 /out:"..\win32\bin\Release\libexpatw.dll" - -!ELSEIF "$(CFG)" == "expatw - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "..\win32\bin\Debug" -# PROP Intermediate_Dir "..\win32\tmp\Debug-w" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXPAT_EXPORTS" /Yu"stdafx.h" /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /D "_DEBUG" /D "COMPILED_FROM_DSP" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XML_UNICODE_WCHAR_T" /FR /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 /nologo /dll /pdb:none /debug /machine:I386 /out:"..\win32\bin\Debug\libexpatw.dll" - -!ENDIF - -# Begin Target - -# Name "expatw - Win32 Release" -# Name "expatw - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\libexpatw.def -# End Source File -# Begin Source File - -SOURCE=.\xmlparse.c - -!IF "$(CFG)" == "expatw - Win32 Release" - -!ELSEIF "$(CFG)" == "expatw - Win32 Debug" - -# ADD CPP /GX- /Od - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\xmlrole.c -# End Source File -# Begin Source File - -SOURCE=.\xmltok.c -# End Source File -# Begin Source File - -SOURCE=.\xmltok_impl.c -# End Source File -# Begin Source File - -SOURCE=.\xmltok_ns.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\ascii.h -# End Source File -# Begin Source File - -SOURCE=.\asciitab.h -# End Source File -# Begin Source File - -SOURCE=.\expat.h -# End Source File -# Begin Source File - -SOURCE=.\expat_external.h -# End Source File -# Begin Source File - -SOURCE=.\iasciitab.h -# End Source File -# Begin Source File - -SOURCE=.\internal.h -# End Source File -# Begin Source File - -SOURCE=.\latin1tab.h -# End Source File -# Begin Source File - -SOURCE=.\nametab.h -# End Source File -# Begin Source File - -SOURCE=.\utf8tab.h -# End Source File -# Begin Source File - -SOURCE=.\xmlrole.h -# End Source File -# Begin Source File - -SOURCE=.\xmltok.h -# End Source File -# Begin Source File - -SOURCE=.\xmltok_impl.h -# End Source File -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/expatw_static.dsp b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/expatw_static.dsp deleted file mode 100644 index f13dd72..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/expatw_static.dsp +++ /dev/null @@ -1,162 +0,0 @@ -# Microsoft Developer Studio Project File - Name="expatw_static" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=expatw_static - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "expatw_static.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "expatw_static.mak" CFG="expatw_static - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "expatw_static - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "expatw_static - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "expatw_static - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "expatw_static___Win32_Release" -# PROP BASE Intermediate_Dir "expatw_static___Win32_Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "..\win32\bin\Release" -# PROP Intermediate_Dir "..\win32\tmp\Release-w_static" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "_WINDOWS" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "COMPILED_FROM_DSP" /D "XML_UNICODE_WCHAR_T" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x1009 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\win32\bin\Release\libexpatwMT.lib" - -!ELSEIF "$(CFG)" == "expatw_static - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "expatw_static___Win32_Debug" -# PROP BASE Intermediate_Dir "expatw_static___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "..\win32\bin\Debug" -# PROP Intermediate_Dir "..\win32\tmp\Debug-w_static" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_LIB" /D "COMPILED_FROM_DSP" /D "XML_UNICODE_WCHAR_T" /FR /FD /GZ /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x1009 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\win32\bin\Debug\libexpatwMT.lib" - -!ENDIF - -# Begin Target - -# Name "expatw_static - Win32 Release" -# Name "expatw_static - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\xmlparse.c -# End Source File -# Begin Source File - -SOURCE=.\xmlrole.c -# End Source File -# Begin Source File - -SOURCE=.\xmltok.c -# End Source File -# Begin Source File - -SOURCE=.\xmltok_impl.c -# End Source File -# Begin Source File - -SOURCE=.\xmltok_ns.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\ascii.h -# End Source File -# Begin Source File - -SOURCE=.\asciitab.h -# End Source File -# Begin Source File - -SOURCE=.\expat.h -# End Source File -# Begin Source File - -SOURCE=.\expat_external.h -# End Source File -# Begin Source File - -SOURCE=.\iasciitab.h -# End Source File -# Begin Source File - -SOURCE=.\internal.h -# End Source File -# Begin Source File - -SOURCE=.\latin1tab.h -# End Source File -# Begin Source File - -SOURCE=.\nametab.h -# End Source File -# Begin Source File - -SOURCE=.\utf8tab.h -# End Source File -# Begin Source File - -SOURCE=.\xmlrole.h -# End Source File -# Begin Source File - -SOURCE=.\xmltok.h -# End Source File -# Begin Source File - -SOURCE=.\xmltok_impl.h -# End Source File -# End Group -# End Target -# End Project diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/iasciitab.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/iasciitab.h deleted file mode 100644 index 24a1d5c..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/iasciitab.h +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -/* Like asciitab.h, except that 0xD has code BT_S rather than BT_CR */ -/* 0x00 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x04 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x08 */ BT_NONXML, BT_S, BT_LF, BT_NONXML, -/* 0x0C */ BT_NONXML, BT_S, BT_NONXML, BT_NONXML, -/* 0x10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x14 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x18 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x1C */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x20 */ BT_S, BT_EXCL, BT_QUOT, BT_NUM, -/* 0x24 */ BT_OTHER, BT_PERCNT, BT_AMP, BT_APOS, -/* 0x28 */ BT_LPAR, BT_RPAR, BT_AST, BT_PLUS, -/* 0x2C */ BT_COMMA, BT_MINUS, BT_NAME, BT_SOL, -/* 0x30 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, -/* 0x34 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, -/* 0x38 */ BT_DIGIT, BT_DIGIT, BT_COLON, BT_SEMI, -/* 0x3C */ BT_LT, BT_EQUALS, BT_GT, BT_QUEST, -/* 0x40 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, -/* 0x44 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, -/* 0x48 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x4C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x50 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x58 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_LSQB, -/* 0x5C */ BT_OTHER, BT_RSQB, BT_OTHER, BT_NMSTRT, -/* 0x60 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, -/* 0x64 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, -/* 0x68 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x6C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x78 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, -/* 0x7C */ BT_VERBAR, BT_OTHER, BT_OTHER, BT_OTHER, diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/internal.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/internal.h deleted file mode 100644 index dd54548..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/internal.h +++ /dev/null @@ -1,73 +0,0 @@ -/* internal.h - - Internal definitions used by Expat. This is not needed to compile - client code. - - The following calling convention macros are defined for frequently - called functions: - - FASTCALL - Used for those internal functions that have a simple - body and a low number of arguments and local variables. - - PTRCALL - Used for functions called though function pointers. - - PTRFASTCALL - Like PTRCALL, but for low number of arguments. - - inline - Used for selected internal functions for which inlining - may improve performance on some platforms. - - Note: Use of these macros is based on judgement, not hard rules, - and therefore subject to change. -*/ - -#if defined(__GNUC__) && defined(__i386__) && !defined(__MINGW32__) -/* We'll use this version by default only where we know it helps. - - regparm() generates warnings on Solaris boxes. See SF bug #692878. - - Instability reported with egcs on a RedHat Linux 7.3. - Let's comment out: - #define FASTCALL __attribute__((stdcall, regparm(3))) - and let's try this: -*/ -#define FASTCALL __attribute__((regparm(3))) -#define PTRFASTCALL __attribute__((regparm(3))) -#endif - -/* Using __fastcall seems to have an unexpected negative effect under - MS VC++, especially for function pointers, so we won't use it for - now on that platform. It may be reconsidered for a future release - if it can be made more effective. - Likely reason: __fastcall on Windows is like stdcall, therefore - the compiler cannot perform stack optimizations for call clusters. -*/ - -/* Make sure all of these are defined if they aren't already. */ - -#ifndef FASTCALL -#define FASTCALL -#endif - -#ifndef PTRCALL -#define PTRCALL -#endif - -#ifndef PTRFASTCALL -#define PTRFASTCALL -#endif - -#ifndef XML_MIN_SIZE -#if !defined(__cplusplus) && !defined(inline) -#ifdef __GNUC__ -#define inline __inline -#endif /* __GNUC__ */ -#endif -#endif /* XML_MIN_SIZE */ - -#ifdef __cplusplus -#define inline inline -#else -#ifndef inline -#define inline -#endif -#endif diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/latin1tab.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/latin1tab.h deleted file mode 100644 index 53c25d7..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/latin1tab.h +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -/* 0x80 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0x84 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0x88 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0x8C */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0x90 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0x94 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0x98 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0x9C */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0xA0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0xA4 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0xA8 */ BT_OTHER, BT_OTHER, BT_NMSTRT, BT_OTHER, -/* 0xAC */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0xB0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0xB4 */ BT_OTHER, BT_NMSTRT, BT_OTHER, BT_NAME, -/* 0xB8 */ BT_OTHER, BT_OTHER, BT_NMSTRT, BT_OTHER, -/* 0xBC */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0xC0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xC4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xC8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xCC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xD0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xD4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, -/* 0xD8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xDC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xE0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xE4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xE8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xEC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xF0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xF4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, -/* 0xF8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xFC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/libexpat.def b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/libexpat.def deleted file mode 100644 index 3920bbc..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/libexpat.def +++ /dev/null @@ -1,73 +0,0 @@ -; DEF file for MS VC++ - -LIBRARY -EXPORTS - XML_DefaultCurrent @1 - XML_ErrorString @2 - XML_ExpatVersion @3 - XML_ExpatVersionInfo @4 - XML_ExternalEntityParserCreate @5 - XML_GetBase @6 - XML_GetBuffer @7 - XML_GetCurrentByteCount @8 - XML_GetCurrentByteIndex @9 - XML_GetCurrentColumnNumber @10 - XML_GetCurrentLineNumber @11 - XML_GetErrorCode @12 - XML_GetIdAttributeIndex @13 - XML_GetInputContext @14 - XML_GetSpecifiedAttributeCount @15 - XML_Parse @16 - XML_ParseBuffer @17 - XML_ParserCreate @18 - XML_ParserCreateNS @19 - XML_ParserCreate_MM @20 - XML_ParserFree @21 - XML_SetAttlistDeclHandler @22 - XML_SetBase @23 - XML_SetCdataSectionHandler @24 - XML_SetCharacterDataHandler @25 - XML_SetCommentHandler @26 - XML_SetDefaultHandler @27 - XML_SetDefaultHandlerExpand @28 - XML_SetDoctypeDeclHandler @29 - XML_SetElementDeclHandler @30 - XML_SetElementHandler @31 - XML_SetEncoding @32 - XML_SetEndCdataSectionHandler @33 - XML_SetEndDoctypeDeclHandler @34 - XML_SetEndElementHandler @35 - XML_SetEndNamespaceDeclHandler @36 - XML_SetEntityDeclHandler @37 - XML_SetExternalEntityRefHandler @38 - XML_SetExternalEntityRefHandlerArg @39 - XML_SetNamespaceDeclHandler @40 - XML_SetNotStandaloneHandler @41 - XML_SetNotationDeclHandler @42 - XML_SetParamEntityParsing @43 - XML_SetProcessingInstructionHandler @44 - XML_SetReturnNSTriplet @45 - XML_SetStartCdataSectionHandler @46 - XML_SetStartDoctypeDeclHandler @47 - XML_SetStartElementHandler @48 - XML_SetStartNamespaceDeclHandler @49 - XML_SetUnknownEncodingHandler @50 - XML_SetUnparsedEntityDeclHandler @51 - XML_SetUserData @52 - XML_SetXmlDeclHandler @53 - XML_UseParserAsHandlerArg @54 -; added with version 1.95.3 - XML_ParserReset @55 - XML_SetSkippedEntityHandler @56 -; added with version 1.95.5 - XML_GetFeatureList @57 - XML_UseForeignDTD @58 -; added with version 1.95.6 - XML_FreeContentModel @59 - XML_MemMalloc @60 - XML_MemRealloc @61 - XML_MemFree @62 -; added with version 1.95.8 - XML_StopParser @63 - XML_ResumeParser @64 - XML_GetParsingStatus @65 diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/libexpatw.def b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/libexpatw.def deleted file mode 100644 index 3920bbc..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/libexpatw.def +++ /dev/null @@ -1,73 +0,0 @@ -; DEF file for MS VC++ - -LIBRARY -EXPORTS - XML_DefaultCurrent @1 - XML_ErrorString @2 - XML_ExpatVersion @3 - XML_ExpatVersionInfo @4 - XML_ExternalEntityParserCreate @5 - XML_GetBase @6 - XML_GetBuffer @7 - XML_GetCurrentByteCount @8 - XML_GetCurrentByteIndex @9 - XML_GetCurrentColumnNumber @10 - XML_GetCurrentLineNumber @11 - XML_GetErrorCode @12 - XML_GetIdAttributeIndex @13 - XML_GetInputContext @14 - XML_GetSpecifiedAttributeCount @15 - XML_Parse @16 - XML_ParseBuffer @17 - XML_ParserCreate @18 - XML_ParserCreateNS @19 - XML_ParserCreate_MM @20 - XML_ParserFree @21 - XML_SetAttlistDeclHandler @22 - XML_SetBase @23 - XML_SetCdataSectionHandler @24 - XML_SetCharacterDataHandler @25 - XML_SetCommentHandler @26 - XML_SetDefaultHandler @27 - XML_SetDefaultHandlerExpand @28 - XML_SetDoctypeDeclHandler @29 - XML_SetElementDeclHandler @30 - XML_SetElementHandler @31 - XML_SetEncoding @32 - XML_SetEndCdataSectionHandler @33 - XML_SetEndDoctypeDeclHandler @34 - XML_SetEndElementHandler @35 - XML_SetEndNamespaceDeclHandler @36 - XML_SetEntityDeclHandler @37 - XML_SetExternalEntityRefHandler @38 - XML_SetExternalEntityRefHandlerArg @39 - XML_SetNamespaceDeclHandler @40 - XML_SetNotStandaloneHandler @41 - XML_SetNotationDeclHandler @42 - XML_SetParamEntityParsing @43 - XML_SetProcessingInstructionHandler @44 - XML_SetReturnNSTriplet @45 - XML_SetStartCdataSectionHandler @46 - XML_SetStartDoctypeDeclHandler @47 - XML_SetStartElementHandler @48 - XML_SetStartNamespaceDeclHandler @49 - XML_SetUnknownEncodingHandler @50 - XML_SetUnparsedEntityDeclHandler @51 - XML_SetUserData @52 - XML_SetXmlDeclHandler @53 - XML_UseParserAsHandlerArg @54 -; added with version 1.95.3 - XML_ParserReset @55 - XML_SetSkippedEntityHandler @56 -; added with version 1.95.5 - XML_GetFeatureList @57 - XML_UseForeignDTD @58 -; added with version 1.95.6 - XML_FreeContentModel @59 - XML_MemMalloc @60 - XML_MemRealloc @61 - XML_MemFree @62 -; added with version 1.95.8 - XML_StopParser @63 - XML_ResumeParser @64 - XML_GetParsingStatus @65 diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/macconfig.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/macconfig.h deleted file mode 100644 index 2725caa..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/macconfig.h +++ /dev/null @@ -1,53 +0,0 @@ -/*================================================================ -** Copyright 2000, Clark Cooper -** All rights reserved. -** -** This is free software. You are permitted to copy, distribute, or modify -** it under the terms of the MIT/X license (contained in the COPYING file -** with this distribution.) -** -*/ - -#ifndef MACCONFIG_H -#define MACCONFIG_H - - -/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */ -#define BYTEORDER 4321 - -/* Define to 1 if you have the `bcopy' function. */ -#undef HAVE_BCOPY - -/* Define to 1 if you have the `memmove' function. */ -#define HAVE_MEMMOVE - -/* Define to 1 if you have a working `mmap' system call. */ -#undef HAVE_MMAP - -/* Define to 1 if you have the header file. */ -#undef HAVE_UNISTD_H - -/* whether byteorder is bigendian */ -#define WORDS_BIGENDIAN - -/* Define to specify how much context to retain around the current parse - point. */ -#undef XML_CONTEXT_BYTES - -/* Define to make parameter entity parsing functionality available. */ -#define XML_DTD - -/* Define to make XML Namespaces functionality available. */ -#define XML_NS - -/* Define to empty if `const' does not conform to ANSI C. */ -#undef const - -/* Define to `long' if does not define. */ -#define off_t long - -/* Define to `unsigned' if does not define. */ -#undef size_t - - -#endif /* ifndef MACCONFIG_H */ diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/nametab.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/nametab.h deleted file mode 100644 index b05e62c..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/nametab.h +++ /dev/null @@ -1,150 +0,0 @@ -static const unsigned namingBitmap[] = { -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -0x00000000, 0x04000000, 0x87FFFFFE, 0x07FFFFFE, -0x00000000, 0x00000000, 0xFF7FFFFF, 0xFF7FFFFF, -0xFFFFFFFF, 0x7FF3FFFF, 0xFFFFFDFE, 0x7FFFFFFF, -0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE00F, 0xFC31FFFF, -0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF, -0xFFFFFFFF, 0xF80001FF, 0x00000003, 0x00000000, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0xFFFFD740, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD, -0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF, -0xFFFF0003, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF, -0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE, -0x0000007F, 0x00000000, 0xFFFF0000, 0x000707FF, -0x00000000, 0x07FFFFFE, 0x000007FE, 0xFFFE0000, -0xFFFFFFFF, 0x7CFFFFFF, 0x002F7FFF, 0x00000060, -0xFFFFFFE0, 0x23FFFFFF, 0xFF000000, 0x00000003, -0xFFF99FE0, 0x03C5FDFF, 0xB0000000, 0x00030003, -0xFFF987E0, 0x036DFDFF, 0x5E000000, 0x001C0000, -0xFFFBAFE0, 0x23EDFDFF, 0x00000000, 0x00000001, -0xFFF99FE0, 0x23CDFDFF, 0xB0000000, 0x00000003, -0xD63DC7E0, 0x03BFC718, 0x00000000, 0x00000000, -0xFFFDDFE0, 0x03EFFDFF, 0x00000000, 0x00000003, -0xFFFDDFE0, 0x03EFFDFF, 0x40000000, 0x00000003, -0xFFFDDFE0, 0x03FFFDFF, 0x00000000, 0x00000003, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0xFFFFFFFE, 0x000D7FFF, 0x0000003F, 0x00000000, -0xFEF02596, 0x200D6CAE, 0x0000001F, 0x00000000, -0x00000000, 0x00000000, 0xFFFFFEFF, 0x000003FF, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0x00000000, 0xFFFFFFFF, 0xFFFF003F, 0x007FFFFF, -0x0007DAED, 0x50000000, 0x82315001, 0x002C62AB, -0x40000000, 0xF580C900, 0x00000007, 0x02010800, -0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -0x0FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF, -0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF, -0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF, -0x00000000, 0x00004C40, 0x00000000, 0x00000000, -0x00000007, 0x00000000, 0x00000000, 0x00000000, -0x00000080, 0x000003FE, 0xFFFFFFFE, 0xFFFFFFFF, -0x001FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x07FFFFFF, -0xFFFFFFE0, 0x00001FFF, 0x00000000, 0x00000000, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -0xFFFFFFFF, 0x0000003F, 0x00000000, 0x00000000, -0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -0xFFFFFFFF, 0x0000000F, 0x00000000, 0x00000000, -0x00000000, 0x07FF6000, 0x87FFFFFE, 0x07FFFFFE, -0x00000000, 0x00800000, 0xFF7FFFFF, 0xFF7FFFFF, -0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF, -0xFFFFFFFF, 0xF80001FF, 0x00030003, 0x00000000, -0xFFFFFFFF, 0xFFFFFFFF, 0x0000003F, 0x00000003, -0xFFFFD7C0, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD, -0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF, -0xFFFF007B, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF, -0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE, -0xFFFE007F, 0xBBFFFFFB, 0xFFFF0016, 0x000707FF, -0x00000000, 0x07FFFFFE, 0x0007FFFF, 0xFFFF03FF, -0xFFFFFFFF, 0x7CFFFFFF, 0xFFEF7FFF, 0x03FF3DFF, -0xFFFFFFEE, 0xF3FFFFFF, 0xFF1E3FFF, 0x0000FFCF, -0xFFF99FEE, 0xD3C5FDFF, 0xB080399F, 0x0003FFCF, -0xFFF987E4, 0xD36DFDFF, 0x5E003987, 0x001FFFC0, -0xFFFBAFEE, 0xF3EDFDFF, 0x00003BBF, 0x0000FFC1, -0xFFF99FEE, 0xF3CDFDFF, 0xB0C0398F, 0x0000FFC3, -0xD63DC7EC, 0xC3BFC718, 0x00803DC7, 0x0000FF80, -0xFFFDDFEE, 0xC3EFFDFF, 0x00603DDF, 0x0000FFC3, -0xFFFDDFEC, 0xC3EFFDFF, 0x40603DDF, 0x0000FFC3, -0xFFFDDFEC, 0xC3FFFDFF, 0x00803DCF, 0x0000FFC3, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0xFFFFFFFE, 0x07FF7FFF, 0x03FF7FFF, 0x00000000, -0xFEF02596, 0x3BFF6CAE, 0x03FF3F5F, 0x00000000, -0x03000000, 0xC2A003FF, 0xFFFFFEFF, 0xFFFE03FF, -0xFEBF0FDF, 0x02FE3FFF, 0x00000000, 0x00000000, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0x00000000, 0x00000000, 0x1FFF0000, 0x00000002, -0x000000A0, 0x003EFFFE, 0xFFFFFFFE, 0xFFFFFFFF, -0x661FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x77FFFFFF, -}; -static const unsigned char nmstrtPages[] = { -0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00, -0x00, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, -0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13, -0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x15, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -static const unsigned char namePages[] = { -0x19, 0x03, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x00, -0x00, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, -0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13, -0x26, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x27, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/utf8tab.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/utf8tab.h deleted file mode 100644 index 7bb3e77..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/utf8tab.h +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - - -/* 0x80 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0x84 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0x88 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0x8C */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0x90 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0x94 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0x98 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0x9C */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xA0 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xA4 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xA8 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xAC */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xB0 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xB4 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xB8 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xBC */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xC0 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xC4 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xC8 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xCC */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xD0 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xD4 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xD8 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xDC */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xE0 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, -/* 0xE4 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, -/* 0xE8 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, -/* 0xEC */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, -/* 0xF0 */ BT_LEAD4, BT_LEAD4, BT_LEAD4, BT_LEAD4, -/* 0xF4 */ BT_LEAD4, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0xF8 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0xFC */ BT_NONXML, BT_NONXML, BT_MALFORM, BT_MALFORM, diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/winconfig.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/winconfig.h deleted file mode 100644 index c1b791d..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/winconfig.h +++ /dev/null @@ -1,30 +0,0 @@ -/*================================================================ -** Copyright 2000, Clark Cooper -** All rights reserved. -** -** This is free software. You are permitted to copy, distribute, or modify -** it under the terms of the MIT/X license (contained in the COPYING file -** with this distribution.) -*/ - -#ifndef WINCONFIG_H -#define WINCONFIG_H - -#define WIN32_LEAN_AND_MEAN -#include -#undef WIN32_LEAN_AND_MEAN - -#include -#include - -#define XML_NS 1 -#define XML_DTD 1 -#define XML_CONTEXT_BYTES 1024 - -/* we will assume all Windows platforms are little endian */ -#define BYTEORDER 1234 - -/* Windows has memmove() available. */ -#define HAVE_MEMMOVE - -#endif /* ndef WINCONFIG_H */ diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmlparse.c b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmlparse.c deleted file mode 100644 index f35aa36..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmlparse.c +++ /dev/null @@ -1,6403 +0,0 @@ -/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -#include -#include /* memset(), memcpy() */ -#include -#include /* UINT_MAX */ -#include /* time() */ - -#define XML_BUILDING_EXPAT 1 - -#ifdef COMPILED_FROM_DSP -#include "winconfig.h" -#elif defined(MACOS_CLASSIC) -#include "macconfig.h" -#elif defined(__amigaos__) -#include "amigaconfig.h" -#elif defined(__WATCOMC__) -#include "watcomconfig.h" -#elif defined(HAVE_EXPAT_CONFIG_H) -#include -#endif /* ndef COMPILED_FROM_DSP */ - -#include "ascii.h" -#include "expat.h" - -#ifdef XML_UNICODE -#define XML_ENCODE_MAX XML_UTF16_ENCODE_MAX -#define XmlConvert XmlUtf16Convert -#define XmlGetInternalEncoding XmlGetUtf16InternalEncoding -#define XmlGetInternalEncodingNS XmlGetUtf16InternalEncodingNS -#define XmlEncode XmlUtf16Encode -/* Using pointer subtraction to convert to integer type. */ -#define MUST_CONVERT(enc, s) (!(enc)->isUtf16 || (((char *)(s) - (char *)NULL) & 1)) -typedef unsigned short ICHAR; -#else -#define XML_ENCODE_MAX XML_UTF8_ENCODE_MAX -#define XmlConvert XmlUtf8Convert -#define XmlGetInternalEncoding XmlGetUtf8InternalEncoding -#define XmlGetInternalEncodingNS XmlGetUtf8InternalEncodingNS -#define XmlEncode XmlUtf8Encode -#define MUST_CONVERT(enc, s) (!(enc)->isUtf8) -typedef char ICHAR; -#endif - - -#ifndef XML_NS - -#define XmlInitEncodingNS XmlInitEncoding -#define XmlInitUnknownEncodingNS XmlInitUnknownEncoding -#undef XmlGetInternalEncodingNS -#define XmlGetInternalEncodingNS XmlGetInternalEncoding -#define XmlParseXmlDeclNS XmlParseXmlDecl - -#endif - -#ifdef XML_UNICODE - -#ifdef XML_UNICODE_WCHAR_T -#define XML_T(x) (const wchar_t)x -#define XML_L(x) L ## x -#else -#define XML_T(x) (const unsigned short)x -#define XML_L(x) x -#endif - -#else - -#define XML_T(x) x -#define XML_L(x) x - -#endif - -/* Round up n to be a multiple of sz, where sz is a power of 2. */ -#define ROUND_UP(n, sz) (((n) + ((sz) - 1)) & ~((sz) - 1)) - -/* Handle the case where memmove() doesn't exist. */ -#ifndef HAVE_MEMMOVE -#ifdef HAVE_BCOPY -#define memmove(d,s,l) bcopy((s),(d),(l)) -#else -#error memmove does not exist on this platform, nor is a substitute available -#endif /* HAVE_BCOPY */ -#endif /* HAVE_MEMMOVE */ - -#include "internal.h" -#include "xmltok.h" -#include "xmlrole.h" - -typedef const XML_Char *KEY; - -typedef struct { - KEY name; -} NAMED; - -typedef struct { - NAMED **v; - unsigned char power; - size_t size; - size_t used; - const XML_Memory_Handling_Suite *mem; -} HASH_TABLE; - -/* Basic character hash algorithm, taken from Python's string hash: - h = h * 1000003 ^ character, the constant being a prime number. - -*/ -#ifdef XML_UNICODE -#define CHAR_HASH(h, c) \ - (((h) * 0xF4243) ^ (unsigned short)(c)) -#else -#define CHAR_HASH(h, c) \ - (((h) * 0xF4243) ^ (unsigned char)(c)) -#endif - -/* For probing (after a collision) we need a step size relative prime - to the hash table size, which is a power of 2. We use double-hashing, - since we can calculate a second hash value cheaply by taking those bits - of the first hash value that were discarded (masked out) when the table - index was calculated: index = hash & mask, where mask = table->size - 1. - We limit the maximum step size to table->size / 4 (mask >> 2) and make - it odd, since odd numbers are always relative prime to a power of 2. -*/ -#define SECOND_HASH(hash, mask, power) \ - ((((hash) & ~(mask)) >> ((power) - 1)) & ((mask) >> 2)) -#define PROBE_STEP(hash, mask, power) \ - ((unsigned char)((SECOND_HASH(hash, mask, power)) | 1)) - -typedef struct { - NAMED **p; - NAMED **end; -} HASH_TABLE_ITER; - -#define INIT_TAG_BUF_SIZE 32 /* must be a multiple of sizeof(XML_Char) */ -#define INIT_DATA_BUF_SIZE 1024 -#define INIT_ATTS_SIZE 16 -#define INIT_ATTS_VERSION 0xFFFFFFFF -#define INIT_BLOCK_SIZE 1024 -#define INIT_BUFFER_SIZE 1024 - -#define EXPAND_SPARE 24 - -typedef struct binding { - struct prefix *prefix; - struct binding *nextTagBinding; - struct binding *prevPrefixBinding; - const struct attribute_id *attId; - XML_Char *uri; - int uriLen; - int uriAlloc; -} BINDING; - -typedef struct prefix { - const XML_Char *name; - BINDING *binding; -} PREFIX; - -typedef struct { - const XML_Char *str; - const XML_Char *localPart; - const XML_Char *prefix; - int strLen; - int uriLen; - int prefixLen; -} TAG_NAME; - -/* TAG represents an open element. - The name of the element is stored in both the document and API - encodings. The memory buffer 'buf' is a separately-allocated - memory area which stores the name. During the XML_Parse()/ - XMLParseBuffer() when the element is open, the memory for the 'raw' - version of the name (in the document encoding) is shared with the - document buffer. If the element is open across calls to - XML_Parse()/XML_ParseBuffer(), the buffer is re-allocated to - contain the 'raw' name as well. - - A parser re-uses these structures, maintaining a list of allocated - TAG objects in a free list. -*/ -typedef struct tag { - struct tag *parent; /* parent of this element */ - const char *rawName; /* tagName in the original encoding */ - int rawNameLength; - TAG_NAME name; /* tagName in the API encoding */ - char *buf; /* buffer for name components */ - char *bufEnd; /* end of the buffer */ - BINDING *bindings; -} TAG; - -typedef struct { - const XML_Char *name; - const XML_Char *textPtr; - int textLen; /* length in XML_Chars */ - int processed; /* # of processed bytes - when suspended */ - const XML_Char *systemId; - const XML_Char *base; - const XML_Char *publicId; - const XML_Char *notation; - XML_Bool open; - XML_Bool is_param; - XML_Bool is_internal; /* true if declared in internal subset outside PE */ -} ENTITY; - -typedef struct { - enum XML_Content_Type type; - enum XML_Content_Quant quant; - const XML_Char * name; - int firstchild; - int lastchild; - int childcnt; - int nextsib; -} CONTENT_SCAFFOLD; - -#define INIT_SCAFFOLD_ELEMENTS 32 - -typedef struct block { - struct block *next; - int size; - XML_Char s[1]; -} BLOCK; - -typedef struct { - BLOCK *blocks; - BLOCK *freeBlocks; - const XML_Char *end; - XML_Char *ptr; - XML_Char *start; - const XML_Memory_Handling_Suite *mem; -} STRING_POOL; - -/* The XML_Char before the name is used to determine whether - an attribute has been specified. */ -typedef struct attribute_id { - XML_Char *name; - PREFIX *prefix; - XML_Bool maybeTokenized; - XML_Bool xmlns; -} ATTRIBUTE_ID; - -typedef struct { - const ATTRIBUTE_ID *id; - XML_Bool isCdata; - const XML_Char *value; -} DEFAULT_ATTRIBUTE; - -typedef struct { - unsigned long version; - unsigned long hash; - const XML_Char *uriName; -} NS_ATT; - -typedef struct { - const XML_Char *name; - PREFIX *prefix; - const ATTRIBUTE_ID *idAtt; - int nDefaultAtts; - int allocDefaultAtts; - DEFAULT_ATTRIBUTE *defaultAtts; -} ELEMENT_TYPE; - -typedef struct { - HASH_TABLE generalEntities; - HASH_TABLE elementTypes; - HASH_TABLE attributeIds; - HASH_TABLE prefixes; - STRING_POOL pool; - STRING_POOL entityValuePool; - /* false once a parameter entity reference has been skipped */ - XML_Bool keepProcessing; - /* true once an internal or external PE reference has been encountered; - this includes the reference to an external subset */ - XML_Bool hasParamEntityRefs; - XML_Bool standalone; -#ifdef XML_DTD - /* indicates if external PE has been read */ - XML_Bool paramEntityRead; - HASH_TABLE paramEntities; -#endif /* XML_DTD */ - PREFIX defaultPrefix; - /* === scaffolding for building content model === */ - XML_Bool in_eldecl; - CONTENT_SCAFFOLD *scaffold; - unsigned contentStringLen; - unsigned scaffSize; - unsigned scaffCount; - int scaffLevel; - int *scaffIndex; -} DTD; - -typedef struct open_internal_entity { - const char *internalEventPtr; - const char *internalEventEndPtr; - struct open_internal_entity *next; - ENTITY *entity; - int startTagLevel; - XML_Bool betweenDecl; /* WFC: PE Between Declarations */ -} OPEN_INTERNAL_ENTITY; - -typedef enum XML_Error PTRCALL Processor(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr); - -static Processor prologProcessor; -static Processor prologInitProcessor; -static Processor contentProcessor; -static Processor cdataSectionProcessor; -#ifdef XML_DTD -static Processor ignoreSectionProcessor; -static Processor externalParEntProcessor; -static Processor externalParEntInitProcessor; -static Processor entityValueProcessor; -static Processor entityValueInitProcessor; -#endif /* XML_DTD */ -static Processor epilogProcessor; -static Processor errorProcessor; -static Processor externalEntityInitProcessor; -static Processor externalEntityInitProcessor2; -static Processor externalEntityInitProcessor3; -static Processor externalEntityContentProcessor; -static Processor internalEntityProcessor; - -static enum XML_Error -handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName); -static enum XML_Error -processXmlDecl(XML_Parser parser, int isGeneralTextEntity, - const char *s, const char *next); -static enum XML_Error -initializeEncoding(XML_Parser parser); -static enum XML_Error -doProlog(XML_Parser parser, const ENCODING *enc, const char *s, - const char *end, int tok, const char *next, const char **nextPtr, - XML_Bool haveMore); -static enum XML_Error -processInternalEntity(XML_Parser parser, ENTITY *entity, - XML_Bool betweenDecl); -static enum XML_Error -doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc, - const char *start, const char *end, const char **endPtr, - XML_Bool haveMore); -static enum XML_Error -doCdataSection(XML_Parser parser, const ENCODING *, const char **startPtr, - const char *end, const char **nextPtr, XML_Bool haveMore); -#ifdef XML_DTD -static enum XML_Error -doIgnoreSection(XML_Parser parser, const ENCODING *, const char **startPtr, - const char *end, const char **nextPtr, XML_Bool haveMore); -#endif /* XML_DTD */ - -static enum XML_Error -storeAtts(XML_Parser parser, const ENCODING *, const char *s, - TAG_NAME *tagNamePtr, BINDING **bindingsPtr); -static enum XML_Error -addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, - const XML_Char *uri, BINDING **bindingsPtr); -static int -defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *, XML_Bool isCdata, - XML_Bool isId, const XML_Char *dfltValue, XML_Parser parser); -static enum XML_Error -storeAttributeValue(XML_Parser parser, const ENCODING *, XML_Bool isCdata, - const char *, const char *, STRING_POOL *); -static enum XML_Error -appendAttributeValue(XML_Parser parser, const ENCODING *, XML_Bool isCdata, - const char *, const char *, STRING_POOL *); -static ATTRIBUTE_ID * -getAttributeId(XML_Parser parser, const ENCODING *enc, const char *start, - const char *end); -static int -setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *); -static enum XML_Error -storeEntityValue(XML_Parser parser, const ENCODING *enc, const char *start, - const char *end); -static int -reportProcessingInstruction(XML_Parser parser, const ENCODING *enc, - const char *start, const char *end); -static int -reportComment(XML_Parser parser, const ENCODING *enc, const char *start, - const char *end); -static void -reportDefault(XML_Parser parser, const ENCODING *enc, const char *start, - const char *end); - -static const XML_Char * getContext(XML_Parser parser); -static XML_Bool -setContext(XML_Parser parser, const XML_Char *context); - -static void FASTCALL normalizePublicId(XML_Char *s); - -static DTD * dtdCreate(const XML_Memory_Handling_Suite *ms); -/* do not call if parentParser != NULL */ -static void dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms); -static void -dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms); -static int -dtdCopy(XML_Parser oldParser, - DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms); -static int -copyEntityTable(XML_Parser oldParser, - HASH_TABLE *, STRING_POOL *, const HASH_TABLE *); -static NAMED * -lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize); -static void FASTCALL -hashTableInit(HASH_TABLE *, const XML_Memory_Handling_Suite *ms); -static void FASTCALL hashTableClear(HASH_TABLE *); -static void FASTCALL hashTableDestroy(HASH_TABLE *); -static void FASTCALL -hashTableIterInit(HASH_TABLE_ITER *, const HASH_TABLE *); -static NAMED * FASTCALL hashTableIterNext(HASH_TABLE_ITER *); - -static void FASTCALL -poolInit(STRING_POOL *, const XML_Memory_Handling_Suite *ms); -static void FASTCALL poolClear(STRING_POOL *); -static void FASTCALL poolDestroy(STRING_POOL *); -static XML_Char * -poolAppend(STRING_POOL *pool, const ENCODING *enc, - const char *ptr, const char *end); -static XML_Char * -poolStoreString(STRING_POOL *pool, const ENCODING *enc, - const char *ptr, const char *end); -static XML_Bool FASTCALL poolGrow(STRING_POOL *pool); -static const XML_Char * FASTCALL -poolCopyString(STRING_POOL *pool, const XML_Char *s); -static const XML_Char * -poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n); -static const XML_Char * FASTCALL -poolAppendString(STRING_POOL *pool, const XML_Char *s); - -static int FASTCALL nextScaffoldPart(XML_Parser parser); -static XML_Content * build_model(XML_Parser parser); -static ELEMENT_TYPE * -getElementType(XML_Parser parser, const ENCODING *enc, - const char *ptr, const char *end); - -static unsigned long generate_hash_secret_salt(void); -static XML_Bool startParsing(XML_Parser parser); - -static XML_Parser -parserCreate(const XML_Char *encodingName, - const XML_Memory_Handling_Suite *memsuite, - const XML_Char *nameSep, - DTD *dtd); - -static void -parserInit(XML_Parser parser, const XML_Char *encodingName); - -#define poolStart(pool) ((pool)->start) -#define poolEnd(pool) ((pool)->ptr) -#define poolLength(pool) ((pool)->ptr - (pool)->start) -#define poolChop(pool) ((void)--(pool->ptr)) -#define poolLastChar(pool) (((pool)->ptr)[-1]) -#define poolDiscard(pool) ((pool)->ptr = (pool)->start) -#define poolFinish(pool) ((pool)->start = (pool)->ptr) -#define poolAppendChar(pool, c) \ - (((pool)->ptr == (pool)->end && !poolGrow(pool)) \ - ? 0 \ - : ((*((pool)->ptr)++ = c), 1)) - -struct XML_ParserStruct { - /* The first member must be userData so that the XML_GetUserData - macro works. */ - void *m_userData; - void *m_handlerArg; - char *m_buffer; - const XML_Memory_Handling_Suite m_mem; - /* first character to be parsed */ - const char *m_bufferPtr; - /* past last character to be parsed */ - char *m_bufferEnd; - /* allocated end of buffer */ - const char *m_bufferLim; - XML_Index m_parseEndByteIndex; - const char *m_parseEndPtr; - XML_Char *m_dataBuf; - XML_Char *m_dataBufEnd; - XML_StartElementHandler m_startElementHandler; - XML_EndElementHandler m_endElementHandler; - XML_CharacterDataHandler m_characterDataHandler; - XML_ProcessingInstructionHandler m_processingInstructionHandler; - XML_CommentHandler m_commentHandler; - XML_StartCdataSectionHandler m_startCdataSectionHandler; - XML_EndCdataSectionHandler m_endCdataSectionHandler; - XML_DefaultHandler m_defaultHandler; - XML_StartDoctypeDeclHandler m_startDoctypeDeclHandler; - XML_EndDoctypeDeclHandler m_endDoctypeDeclHandler; - XML_UnparsedEntityDeclHandler m_unparsedEntityDeclHandler; - XML_NotationDeclHandler m_notationDeclHandler; - XML_StartNamespaceDeclHandler m_startNamespaceDeclHandler; - XML_EndNamespaceDeclHandler m_endNamespaceDeclHandler; - XML_NotStandaloneHandler m_notStandaloneHandler; - XML_ExternalEntityRefHandler m_externalEntityRefHandler; - XML_Parser m_externalEntityRefHandlerArg; - XML_SkippedEntityHandler m_skippedEntityHandler; - XML_UnknownEncodingHandler m_unknownEncodingHandler; - XML_ElementDeclHandler m_elementDeclHandler; - XML_AttlistDeclHandler m_attlistDeclHandler; - XML_EntityDeclHandler m_entityDeclHandler; - XML_XmlDeclHandler m_xmlDeclHandler; - const ENCODING *m_encoding; - INIT_ENCODING m_initEncoding; - const ENCODING *m_internalEncoding; - const XML_Char *m_protocolEncodingName; - XML_Bool m_ns; - XML_Bool m_ns_triplets; - void *m_unknownEncodingMem; - void *m_unknownEncodingData; - void *m_unknownEncodingHandlerData; - void (XMLCALL *m_unknownEncodingRelease)(void *); - PROLOG_STATE m_prologState; - Processor *m_processor; - enum XML_Error m_errorCode; - const char *m_eventPtr; - const char *m_eventEndPtr; - const char *m_positionPtr; - OPEN_INTERNAL_ENTITY *m_openInternalEntities; - OPEN_INTERNAL_ENTITY *m_freeInternalEntities; - XML_Bool m_defaultExpandInternalEntities; - int m_tagLevel; - ENTITY *m_declEntity; - const XML_Char *m_doctypeName; - const XML_Char *m_doctypeSysid; - const XML_Char *m_doctypePubid; - const XML_Char *m_declAttributeType; - const XML_Char *m_declNotationName; - const XML_Char *m_declNotationPublicId; - ELEMENT_TYPE *m_declElementType; - ATTRIBUTE_ID *m_declAttributeId; - XML_Bool m_declAttributeIsCdata; - XML_Bool m_declAttributeIsId; - DTD *m_dtd; - const XML_Char *m_curBase; - TAG *m_tagStack; - TAG *m_freeTagList; - BINDING *m_inheritedBindings; - BINDING *m_freeBindingList; - int m_attsSize; - int m_nSpecifiedAtts; - int m_idAttIndex; - ATTRIBUTE *m_atts; - NS_ATT *m_nsAtts; - unsigned long m_nsAttsVersion; - unsigned char m_nsAttsPower; -#ifdef XML_ATTR_INFO - XML_AttrInfo *m_attInfo; -#endif - POSITION m_position; - STRING_POOL m_tempPool; - STRING_POOL m_temp2Pool; - char *m_groupConnector; - unsigned int m_groupSize; - XML_Char m_namespaceSeparator; - XML_Parser m_parentParser; - XML_ParsingStatus m_parsingStatus; -#ifdef XML_DTD - XML_Bool m_isParamEntity; - XML_Bool m_useForeignDTD; - enum XML_ParamEntityParsing m_paramEntityParsing; -#endif - unsigned long m_hash_secret_salt; -}; - -#define MALLOC(s) (parser->m_mem.malloc_fcn((s))) -#define REALLOC(p,s) (parser->m_mem.realloc_fcn((p),(s))) -#define FREE(p) (parser->m_mem.free_fcn((p))) - -#define userData (parser->m_userData) -#define handlerArg (parser->m_handlerArg) -#define startElementHandler (parser->m_startElementHandler) -#define endElementHandler (parser->m_endElementHandler) -#define characterDataHandler (parser->m_characterDataHandler) -#define processingInstructionHandler \ - (parser->m_processingInstructionHandler) -#define commentHandler (parser->m_commentHandler) -#define startCdataSectionHandler \ - (parser->m_startCdataSectionHandler) -#define endCdataSectionHandler (parser->m_endCdataSectionHandler) -#define defaultHandler (parser->m_defaultHandler) -#define startDoctypeDeclHandler (parser->m_startDoctypeDeclHandler) -#define endDoctypeDeclHandler (parser->m_endDoctypeDeclHandler) -#define unparsedEntityDeclHandler \ - (parser->m_unparsedEntityDeclHandler) -#define notationDeclHandler (parser->m_notationDeclHandler) -#define startNamespaceDeclHandler \ - (parser->m_startNamespaceDeclHandler) -#define endNamespaceDeclHandler (parser->m_endNamespaceDeclHandler) -#define notStandaloneHandler (parser->m_notStandaloneHandler) -#define externalEntityRefHandler \ - (parser->m_externalEntityRefHandler) -#define externalEntityRefHandlerArg \ - (parser->m_externalEntityRefHandlerArg) -#define internalEntityRefHandler \ - (parser->m_internalEntityRefHandler) -#define skippedEntityHandler (parser->m_skippedEntityHandler) -#define unknownEncodingHandler (parser->m_unknownEncodingHandler) -#define elementDeclHandler (parser->m_elementDeclHandler) -#define attlistDeclHandler (parser->m_attlistDeclHandler) -#define entityDeclHandler (parser->m_entityDeclHandler) -#define xmlDeclHandler (parser->m_xmlDeclHandler) -#define encoding (parser->m_encoding) -#define initEncoding (parser->m_initEncoding) -#define internalEncoding (parser->m_internalEncoding) -#define unknownEncodingMem (parser->m_unknownEncodingMem) -#define unknownEncodingData (parser->m_unknownEncodingData) -#define unknownEncodingHandlerData \ - (parser->m_unknownEncodingHandlerData) -#define unknownEncodingRelease (parser->m_unknownEncodingRelease) -#define protocolEncodingName (parser->m_protocolEncodingName) -#define ns (parser->m_ns) -#define ns_triplets (parser->m_ns_triplets) -#define prologState (parser->m_prologState) -#define processor (parser->m_processor) -#define errorCode (parser->m_errorCode) -#define eventPtr (parser->m_eventPtr) -#define eventEndPtr (parser->m_eventEndPtr) -#define positionPtr (parser->m_positionPtr) -#define position (parser->m_position) -#define openInternalEntities (parser->m_openInternalEntities) -#define freeInternalEntities (parser->m_freeInternalEntities) -#define defaultExpandInternalEntities \ - (parser->m_defaultExpandInternalEntities) -#define tagLevel (parser->m_tagLevel) -#define buffer (parser->m_buffer) -#define bufferPtr (parser->m_bufferPtr) -#define bufferEnd (parser->m_bufferEnd) -#define parseEndByteIndex (parser->m_parseEndByteIndex) -#define parseEndPtr (parser->m_parseEndPtr) -#define bufferLim (parser->m_bufferLim) -#define dataBuf (parser->m_dataBuf) -#define dataBufEnd (parser->m_dataBufEnd) -#define _dtd (parser->m_dtd) -#define curBase (parser->m_curBase) -#define declEntity (parser->m_declEntity) -#define doctypeName (parser->m_doctypeName) -#define doctypeSysid (parser->m_doctypeSysid) -#define doctypePubid (parser->m_doctypePubid) -#define declAttributeType (parser->m_declAttributeType) -#define declNotationName (parser->m_declNotationName) -#define declNotationPublicId (parser->m_declNotationPublicId) -#define declElementType (parser->m_declElementType) -#define declAttributeId (parser->m_declAttributeId) -#define declAttributeIsCdata (parser->m_declAttributeIsCdata) -#define declAttributeIsId (parser->m_declAttributeIsId) -#define freeTagList (parser->m_freeTagList) -#define freeBindingList (parser->m_freeBindingList) -#define inheritedBindings (parser->m_inheritedBindings) -#define tagStack (parser->m_tagStack) -#define atts (parser->m_atts) -#define attsSize (parser->m_attsSize) -#define nSpecifiedAtts (parser->m_nSpecifiedAtts) -#define idAttIndex (parser->m_idAttIndex) -#define nsAtts (parser->m_nsAtts) -#define nsAttsVersion (parser->m_nsAttsVersion) -#define nsAttsPower (parser->m_nsAttsPower) -#define attInfo (parser->m_attInfo) -#define tempPool (parser->m_tempPool) -#define temp2Pool (parser->m_temp2Pool) -#define groupConnector (parser->m_groupConnector) -#define groupSize (parser->m_groupSize) -#define namespaceSeparator (parser->m_namespaceSeparator) -#define parentParser (parser->m_parentParser) -#define ps_parsing (parser->m_parsingStatus.parsing) -#define ps_finalBuffer (parser->m_parsingStatus.finalBuffer) -#ifdef XML_DTD -#define isParamEntity (parser->m_isParamEntity) -#define useForeignDTD (parser->m_useForeignDTD) -#define paramEntityParsing (parser->m_paramEntityParsing) -#endif /* XML_DTD */ -#define hash_secret_salt (parser->m_hash_secret_salt) - -XML_Parser XMLCALL -XML_ParserCreate(const XML_Char *encodingName) -{ - return XML_ParserCreate_MM(encodingName, NULL, NULL); -} - -XML_Parser XMLCALL -XML_ParserCreateNS(const XML_Char *encodingName, XML_Char nsSep) -{ - XML_Char tmp[2]; - *tmp = nsSep; - return XML_ParserCreate_MM(encodingName, NULL, tmp); -} - -static const XML_Char implicitContext[] = { - ASCII_x, ASCII_m, ASCII_l, ASCII_EQUALS, ASCII_h, ASCII_t, ASCII_t, ASCII_p, - ASCII_COLON, ASCII_SLASH, ASCII_SLASH, ASCII_w, ASCII_w, ASCII_w, - ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD, ASCII_o, ASCII_r, ASCII_g, - ASCII_SLASH, ASCII_X, ASCII_M, ASCII_L, ASCII_SLASH, ASCII_1, ASCII_9, - ASCII_9, ASCII_8, ASCII_SLASH, ASCII_n, ASCII_a, ASCII_m, ASCII_e, - ASCII_s, ASCII_p, ASCII_a, ASCII_c, ASCII_e, '\0' -}; - -static unsigned long -generate_hash_secret_salt(void) -{ - unsigned int seed = time(NULL) % UINT_MAX; - srand(seed); - return rand(); -} - -static XML_Bool /* only valid for root parser */ -startParsing(XML_Parser parser) -{ - /* hash functions must be initialized before setContext() is called */ - if (hash_secret_salt == 0) - hash_secret_salt = generate_hash_secret_salt(); - if (ns) { - /* implicit context only set for root parser, since child - parsers (i.e. external entity parsers) will inherit it - */ - return setContext(parser, implicitContext); - } - return XML_TRUE; -} - -XML_Parser XMLCALL -XML_ParserCreate_MM(const XML_Char *encodingName, - const XML_Memory_Handling_Suite *memsuite, - const XML_Char *nameSep) -{ - return parserCreate(encodingName, memsuite, nameSep, NULL); -} - -static XML_Parser -parserCreate(const XML_Char *encodingName, - const XML_Memory_Handling_Suite *memsuite, - const XML_Char *nameSep, - DTD *dtd) -{ - XML_Parser parser; - - if (memsuite) { - XML_Memory_Handling_Suite *mtemp; - parser = (XML_Parser) - memsuite->malloc_fcn(sizeof(struct XML_ParserStruct)); - if (parser != NULL) { - mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem); - mtemp->malloc_fcn = memsuite->malloc_fcn; - mtemp->realloc_fcn = memsuite->realloc_fcn; - mtemp->free_fcn = memsuite->free_fcn; - } - } - else { - XML_Memory_Handling_Suite *mtemp; - parser = (XML_Parser)malloc(sizeof(struct XML_ParserStruct)); - if (parser != NULL) { - mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem); - mtemp->malloc_fcn = malloc; - mtemp->realloc_fcn = realloc; - mtemp->free_fcn = free; - } - } - - if (!parser) - return parser; - - buffer = NULL; - bufferLim = NULL; - - attsSize = INIT_ATTS_SIZE; - atts = (ATTRIBUTE *)MALLOC(attsSize * sizeof(ATTRIBUTE)); - if (atts == NULL) { - FREE(parser); - return NULL; - } -#ifdef XML_ATTR_INFO - attInfo = (XML_AttrInfo*)MALLOC(attsSize * sizeof(XML_AttrInfo)); - if (attInfo == NULL) { - FREE(atts); - FREE(parser); - return NULL; - } -#endif - dataBuf = (XML_Char *)MALLOC(INIT_DATA_BUF_SIZE * sizeof(XML_Char)); - if (dataBuf == NULL) { - FREE(atts); -#ifdef XML_ATTR_INFO - FREE(attInfo); -#endif - FREE(parser); - return NULL; - } - dataBufEnd = dataBuf + INIT_DATA_BUF_SIZE; - - if (dtd) - _dtd = dtd; - else { - _dtd = dtdCreate(&parser->m_mem); - if (_dtd == NULL) { - FREE(dataBuf); - FREE(atts); -#ifdef XML_ATTR_INFO - FREE(attInfo); -#endif - FREE(parser); - return NULL; - } - } - - freeBindingList = NULL; - freeTagList = NULL; - freeInternalEntities = NULL; - - groupSize = 0; - groupConnector = NULL; - - unknownEncodingHandler = NULL; - unknownEncodingHandlerData = NULL; - - namespaceSeparator = ASCII_EXCL; - ns = XML_FALSE; - ns_triplets = XML_FALSE; - - nsAtts = NULL; - nsAttsVersion = 0; - nsAttsPower = 0; - - poolInit(&tempPool, &(parser->m_mem)); - poolInit(&temp2Pool, &(parser->m_mem)); - parserInit(parser, encodingName); - - if (encodingName && !protocolEncodingName) { - XML_ParserFree(parser); - return NULL; - } - - if (nameSep) { - ns = XML_TRUE; - internalEncoding = XmlGetInternalEncodingNS(); - namespaceSeparator = *nameSep; - } - else { - internalEncoding = XmlGetInternalEncoding(); - } - - return parser; -} - -static void -parserInit(XML_Parser parser, const XML_Char *encodingName) -{ - processor = prologInitProcessor; - XmlPrologStateInit(&prologState); - protocolEncodingName = (encodingName != NULL - ? poolCopyString(&tempPool, encodingName) - : NULL); - curBase = NULL; - XmlInitEncoding(&initEncoding, &encoding, 0); - userData = NULL; - handlerArg = NULL; - startElementHandler = NULL; - endElementHandler = NULL; - characterDataHandler = NULL; - processingInstructionHandler = NULL; - commentHandler = NULL; - startCdataSectionHandler = NULL; - endCdataSectionHandler = NULL; - defaultHandler = NULL; - startDoctypeDeclHandler = NULL; - endDoctypeDeclHandler = NULL; - unparsedEntityDeclHandler = NULL; - notationDeclHandler = NULL; - startNamespaceDeclHandler = NULL; - endNamespaceDeclHandler = NULL; - notStandaloneHandler = NULL; - externalEntityRefHandler = NULL; - externalEntityRefHandlerArg = parser; - skippedEntityHandler = NULL; - elementDeclHandler = NULL; - attlistDeclHandler = NULL; - entityDeclHandler = NULL; - xmlDeclHandler = NULL; - bufferPtr = buffer; - bufferEnd = buffer; - parseEndByteIndex = 0; - parseEndPtr = NULL; - declElementType = NULL; - declAttributeId = NULL; - declEntity = NULL; - doctypeName = NULL; - doctypeSysid = NULL; - doctypePubid = NULL; - declAttributeType = NULL; - declNotationName = NULL; - declNotationPublicId = NULL; - declAttributeIsCdata = XML_FALSE; - declAttributeIsId = XML_FALSE; - memset(&position, 0, sizeof(POSITION)); - errorCode = XML_ERROR_NONE; - eventPtr = NULL; - eventEndPtr = NULL; - positionPtr = NULL; - openInternalEntities = NULL; - defaultExpandInternalEntities = XML_TRUE; - tagLevel = 0; - tagStack = NULL; - inheritedBindings = NULL; - nSpecifiedAtts = 0; - unknownEncodingMem = NULL; - unknownEncodingRelease = NULL; - unknownEncodingData = NULL; - parentParser = NULL; - ps_parsing = XML_INITIALIZED; -#ifdef XML_DTD - isParamEntity = XML_FALSE; - useForeignDTD = XML_FALSE; - paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER; -#endif - hash_secret_salt = 0; -} - -/* moves list of bindings to freeBindingList */ -static void FASTCALL -moveToFreeBindingList(XML_Parser parser, BINDING *bindings) -{ - while (bindings) { - BINDING *b = bindings; - bindings = bindings->nextTagBinding; - b->nextTagBinding = freeBindingList; - freeBindingList = b; - } -} - -XML_Bool XMLCALL -XML_ParserReset(XML_Parser parser, const XML_Char *encodingName) -{ - TAG *tStk; - OPEN_INTERNAL_ENTITY *openEntityList; - if (parentParser) - return XML_FALSE; - /* move tagStack to freeTagList */ - tStk = tagStack; - while (tStk) { - TAG *tag = tStk; - tStk = tStk->parent; - tag->parent = freeTagList; - moveToFreeBindingList(parser, tag->bindings); - tag->bindings = NULL; - freeTagList = tag; - } - /* move openInternalEntities to freeInternalEntities */ - openEntityList = openInternalEntities; - while (openEntityList) { - OPEN_INTERNAL_ENTITY *openEntity = openEntityList; - openEntityList = openEntity->next; - openEntity->next = freeInternalEntities; - freeInternalEntities = openEntity; - } - moveToFreeBindingList(parser, inheritedBindings); - FREE(unknownEncodingMem); - if (unknownEncodingRelease) - unknownEncodingRelease(unknownEncodingData); - poolClear(&tempPool); - poolClear(&temp2Pool); - parserInit(parser, encodingName); - dtdReset(_dtd, &parser->m_mem); - return XML_TRUE; -} - -enum XML_Status XMLCALL -XML_SetEncoding(XML_Parser parser, const XML_Char *encodingName) -{ - /* Block after XML_Parse()/XML_ParseBuffer() has been called. - XXX There's no way for the caller to determine which of the - XXX possible error cases caused the XML_STATUS_ERROR return. - */ - if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) - return XML_STATUS_ERROR; - if (encodingName == NULL) - protocolEncodingName = NULL; - else { - protocolEncodingName = poolCopyString(&tempPool, encodingName); - if (!protocolEncodingName) - return XML_STATUS_ERROR; - } - return XML_STATUS_OK; -} - -XML_Parser XMLCALL -XML_ExternalEntityParserCreate(XML_Parser oldParser, - const XML_Char *context, - const XML_Char *encodingName) -{ - XML_Parser parser = oldParser; - DTD *newDtd = NULL; - DTD *oldDtd = _dtd; - XML_StartElementHandler oldStartElementHandler = startElementHandler; - XML_EndElementHandler oldEndElementHandler = endElementHandler; - XML_CharacterDataHandler oldCharacterDataHandler = characterDataHandler; - XML_ProcessingInstructionHandler oldProcessingInstructionHandler - = processingInstructionHandler; - XML_CommentHandler oldCommentHandler = commentHandler; - XML_StartCdataSectionHandler oldStartCdataSectionHandler - = startCdataSectionHandler; - XML_EndCdataSectionHandler oldEndCdataSectionHandler - = endCdataSectionHandler; - XML_DefaultHandler oldDefaultHandler = defaultHandler; - XML_UnparsedEntityDeclHandler oldUnparsedEntityDeclHandler - = unparsedEntityDeclHandler; - XML_NotationDeclHandler oldNotationDeclHandler = notationDeclHandler; - XML_StartNamespaceDeclHandler oldStartNamespaceDeclHandler - = startNamespaceDeclHandler; - XML_EndNamespaceDeclHandler oldEndNamespaceDeclHandler - = endNamespaceDeclHandler; - XML_NotStandaloneHandler oldNotStandaloneHandler = notStandaloneHandler; - XML_ExternalEntityRefHandler oldExternalEntityRefHandler - = externalEntityRefHandler; - XML_SkippedEntityHandler oldSkippedEntityHandler = skippedEntityHandler; - XML_UnknownEncodingHandler oldUnknownEncodingHandler - = unknownEncodingHandler; - XML_ElementDeclHandler oldElementDeclHandler = elementDeclHandler; - XML_AttlistDeclHandler oldAttlistDeclHandler = attlistDeclHandler; - XML_EntityDeclHandler oldEntityDeclHandler = entityDeclHandler; - XML_XmlDeclHandler oldXmlDeclHandler = xmlDeclHandler; - ELEMENT_TYPE * oldDeclElementType = declElementType; - - void *oldUserData = userData; - void *oldHandlerArg = handlerArg; - XML_Bool oldDefaultExpandInternalEntities = defaultExpandInternalEntities; - XML_Parser oldExternalEntityRefHandlerArg = externalEntityRefHandlerArg; -#ifdef XML_DTD - enum XML_ParamEntityParsing oldParamEntityParsing = paramEntityParsing; - int oldInEntityValue = prologState.inEntityValue; -#endif - XML_Bool oldns_triplets = ns_triplets; - /* Note that the new parser shares the same hash secret as the old - parser, so that dtdCopy and copyEntityTable can lookup values - from hash tables associated with either parser without us having - to worry which hash secrets each table has. - */ - unsigned long oldhash_secret_salt = hash_secret_salt; - -#ifdef XML_DTD - if (!context) - newDtd = oldDtd; -#endif /* XML_DTD */ - - /* Note that the magical uses of the pre-processor to make field - access look more like C++ require that `parser' be overwritten - here. This makes this function more painful to follow than it - would be otherwise. - */ - if (ns) { - XML_Char tmp[2]; - *tmp = namespaceSeparator; - parser = parserCreate(encodingName, &parser->m_mem, tmp, newDtd); - } - else { - parser = parserCreate(encodingName, &parser->m_mem, NULL, newDtd); - } - - if (!parser) - return NULL; - - startElementHandler = oldStartElementHandler; - endElementHandler = oldEndElementHandler; - characterDataHandler = oldCharacterDataHandler; - processingInstructionHandler = oldProcessingInstructionHandler; - commentHandler = oldCommentHandler; - startCdataSectionHandler = oldStartCdataSectionHandler; - endCdataSectionHandler = oldEndCdataSectionHandler; - defaultHandler = oldDefaultHandler; - unparsedEntityDeclHandler = oldUnparsedEntityDeclHandler; - notationDeclHandler = oldNotationDeclHandler; - startNamespaceDeclHandler = oldStartNamespaceDeclHandler; - endNamespaceDeclHandler = oldEndNamespaceDeclHandler; - notStandaloneHandler = oldNotStandaloneHandler; - externalEntityRefHandler = oldExternalEntityRefHandler; - skippedEntityHandler = oldSkippedEntityHandler; - unknownEncodingHandler = oldUnknownEncodingHandler; - elementDeclHandler = oldElementDeclHandler; - attlistDeclHandler = oldAttlistDeclHandler; - entityDeclHandler = oldEntityDeclHandler; - xmlDeclHandler = oldXmlDeclHandler; - declElementType = oldDeclElementType; - userData = oldUserData; - if (oldUserData == oldHandlerArg) - handlerArg = userData; - else - handlerArg = parser; - if (oldExternalEntityRefHandlerArg != oldParser) - externalEntityRefHandlerArg = oldExternalEntityRefHandlerArg; - defaultExpandInternalEntities = oldDefaultExpandInternalEntities; - ns_triplets = oldns_triplets; - hash_secret_salt = oldhash_secret_salt; - parentParser = oldParser; -#ifdef XML_DTD - paramEntityParsing = oldParamEntityParsing; - prologState.inEntityValue = oldInEntityValue; - if (context) { -#endif /* XML_DTD */ - if (!dtdCopy(oldParser, _dtd, oldDtd, &parser->m_mem) - || !setContext(parser, context)) { - XML_ParserFree(parser); - return NULL; - } - processor = externalEntityInitProcessor; -#ifdef XML_DTD - } - else { - /* The DTD instance referenced by _dtd is shared between the document's - root parser and external PE parsers, therefore one does not need to - call setContext. In addition, one also *must* not call setContext, - because this would overwrite existing prefix->binding pointers in - _dtd with ones that get destroyed with the external PE parser. - This would leave those prefixes with dangling pointers. - */ - isParamEntity = XML_TRUE; - XmlPrologStateInitExternalEntity(&prologState); - processor = externalParEntInitProcessor; - } -#endif /* XML_DTD */ - return parser; -} - -static void FASTCALL -destroyBindings(BINDING *bindings, XML_Parser parser) -{ - for (;;) { - BINDING *b = bindings; - if (!b) - break; - bindings = b->nextTagBinding; - FREE(b->uri); - FREE(b); - } -} - -void XMLCALL -XML_ParserFree(XML_Parser parser) -{ - TAG *tagList; - OPEN_INTERNAL_ENTITY *entityList; - if (parser == NULL) - return; - /* free tagStack and freeTagList */ - tagList = tagStack; - for (;;) { - TAG *p; - if (tagList == NULL) { - if (freeTagList == NULL) - break; - tagList = freeTagList; - freeTagList = NULL; - } - p = tagList; - tagList = tagList->parent; - FREE(p->buf); - destroyBindings(p->bindings, parser); - FREE(p); - } - /* free openInternalEntities and freeInternalEntities */ - entityList = openInternalEntities; - for (;;) { - OPEN_INTERNAL_ENTITY *openEntity; - if (entityList == NULL) { - if (freeInternalEntities == NULL) - break; - entityList = freeInternalEntities; - freeInternalEntities = NULL; - } - openEntity = entityList; - entityList = entityList->next; - FREE(openEntity); - } - - destroyBindings(freeBindingList, parser); - destroyBindings(inheritedBindings, parser); - poolDestroy(&tempPool); - poolDestroy(&temp2Pool); -#ifdef XML_DTD - /* external parameter entity parsers share the DTD structure - parser->m_dtd with the root parser, so we must not destroy it - */ - if (!isParamEntity && _dtd) -#else - if (_dtd) -#endif /* XML_DTD */ - dtdDestroy(_dtd, (XML_Bool)!parentParser, &parser->m_mem); - FREE((void *)atts); -#ifdef XML_ATTR_INFO - FREE((void *)attInfo); -#endif - FREE(groupConnector); - FREE(buffer); - FREE(dataBuf); - FREE(nsAtts); - FREE(unknownEncodingMem); - if (unknownEncodingRelease) - unknownEncodingRelease(unknownEncodingData); - FREE(parser); -} - -void XMLCALL -XML_UseParserAsHandlerArg(XML_Parser parser) -{ - handlerArg = parser; -} - -enum XML_Error XMLCALL -XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD) -{ -#ifdef XML_DTD - /* block after XML_Parse()/XML_ParseBuffer() has been called */ - if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) - return XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING; - useForeignDTD = useDTD; - return XML_ERROR_NONE; -#else - return XML_ERROR_FEATURE_REQUIRES_XML_DTD; -#endif -} - -void XMLCALL -XML_SetReturnNSTriplet(XML_Parser parser, int do_nst) -{ - /* block after XML_Parse()/XML_ParseBuffer() has been called */ - if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) - return; - ns_triplets = do_nst ? XML_TRUE : XML_FALSE; -} - -void XMLCALL -XML_SetUserData(XML_Parser parser, void *p) -{ - if (handlerArg == userData) - handlerArg = userData = p; - else - userData = p; -} - -enum XML_Status XMLCALL -XML_SetBase(XML_Parser parser, const XML_Char *p) -{ - if (p) { - p = poolCopyString(&_dtd->pool, p); - if (!p) - return XML_STATUS_ERROR; - curBase = p; - } - else - curBase = NULL; - return XML_STATUS_OK; -} - -const XML_Char * XMLCALL -XML_GetBase(XML_Parser parser) -{ - return curBase; -} - -int XMLCALL -XML_GetSpecifiedAttributeCount(XML_Parser parser) -{ - return nSpecifiedAtts; -} - -int XMLCALL -XML_GetIdAttributeIndex(XML_Parser parser) -{ - return idAttIndex; -} - -#ifdef XML_ATTR_INFO -const XML_AttrInfo * XMLCALL -XML_GetAttributeInfo(XML_Parser parser) -{ - return attInfo; -} -#endif - -void XMLCALL -XML_SetElementHandler(XML_Parser parser, - XML_StartElementHandler start, - XML_EndElementHandler end) -{ - startElementHandler = start; - endElementHandler = end; -} - -void XMLCALL -XML_SetStartElementHandler(XML_Parser parser, - XML_StartElementHandler start) { - startElementHandler = start; -} - -void XMLCALL -XML_SetEndElementHandler(XML_Parser parser, - XML_EndElementHandler end) { - endElementHandler = end; -} - -void XMLCALL -XML_SetCharacterDataHandler(XML_Parser parser, - XML_CharacterDataHandler handler) -{ - characterDataHandler = handler; -} - -void XMLCALL -XML_SetProcessingInstructionHandler(XML_Parser parser, - XML_ProcessingInstructionHandler handler) -{ - processingInstructionHandler = handler; -} - -void XMLCALL -XML_SetCommentHandler(XML_Parser parser, - XML_CommentHandler handler) -{ - commentHandler = handler; -} - -void XMLCALL -XML_SetCdataSectionHandler(XML_Parser parser, - XML_StartCdataSectionHandler start, - XML_EndCdataSectionHandler end) -{ - startCdataSectionHandler = start; - endCdataSectionHandler = end; -} - -void XMLCALL -XML_SetStartCdataSectionHandler(XML_Parser parser, - XML_StartCdataSectionHandler start) { - startCdataSectionHandler = start; -} - -void XMLCALL -XML_SetEndCdataSectionHandler(XML_Parser parser, - XML_EndCdataSectionHandler end) { - endCdataSectionHandler = end; -} - -void XMLCALL -XML_SetDefaultHandler(XML_Parser parser, - XML_DefaultHandler handler) -{ - defaultHandler = handler; - defaultExpandInternalEntities = XML_FALSE; -} - -void XMLCALL -XML_SetDefaultHandlerExpand(XML_Parser parser, - XML_DefaultHandler handler) -{ - defaultHandler = handler; - defaultExpandInternalEntities = XML_TRUE; -} - -void XMLCALL -XML_SetDoctypeDeclHandler(XML_Parser parser, - XML_StartDoctypeDeclHandler start, - XML_EndDoctypeDeclHandler end) -{ - startDoctypeDeclHandler = start; - endDoctypeDeclHandler = end; -} - -void XMLCALL -XML_SetStartDoctypeDeclHandler(XML_Parser parser, - XML_StartDoctypeDeclHandler start) { - startDoctypeDeclHandler = start; -} - -void XMLCALL -XML_SetEndDoctypeDeclHandler(XML_Parser parser, - XML_EndDoctypeDeclHandler end) { - endDoctypeDeclHandler = end; -} - -void XMLCALL -XML_SetUnparsedEntityDeclHandler(XML_Parser parser, - XML_UnparsedEntityDeclHandler handler) -{ - unparsedEntityDeclHandler = handler; -} - -void XMLCALL -XML_SetNotationDeclHandler(XML_Parser parser, - XML_NotationDeclHandler handler) -{ - notationDeclHandler = handler; -} - -void XMLCALL -XML_SetNamespaceDeclHandler(XML_Parser parser, - XML_StartNamespaceDeclHandler start, - XML_EndNamespaceDeclHandler end) -{ - startNamespaceDeclHandler = start; - endNamespaceDeclHandler = end; -} - -void XMLCALL -XML_SetStartNamespaceDeclHandler(XML_Parser parser, - XML_StartNamespaceDeclHandler start) { - startNamespaceDeclHandler = start; -} - -void XMLCALL -XML_SetEndNamespaceDeclHandler(XML_Parser parser, - XML_EndNamespaceDeclHandler end) { - endNamespaceDeclHandler = end; -} - -void XMLCALL -XML_SetNotStandaloneHandler(XML_Parser parser, - XML_NotStandaloneHandler handler) -{ - notStandaloneHandler = handler; -} - -void XMLCALL -XML_SetExternalEntityRefHandler(XML_Parser parser, - XML_ExternalEntityRefHandler handler) -{ - externalEntityRefHandler = handler; -} - -void XMLCALL -XML_SetExternalEntityRefHandlerArg(XML_Parser parser, void *arg) -{ - if (arg) - externalEntityRefHandlerArg = (XML_Parser)arg; - else - externalEntityRefHandlerArg = parser; -} - -void XMLCALL -XML_SetSkippedEntityHandler(XML_Parser parser, - XML_SkippedEntityHandler handler) -{ - skippedEntityHandler = handler; -} - -void XMLCALL -XML_SetUnknownEncodingHandler(XML_Parser parser, - XML_UnknownEncodingHandler handler, - void *data) -{ - unknownEncodingHandler = handler; - unknownEncodingHandlerData = data; -} - -void XMLCALL -XML_SetElementDeclHandler(XML_Parser parser, - XML_ElementDeclHandler eldecl) -{ - elementDeclHandler = eldecl; -} - -void XMLCALL -XML_SetAttlistDeclHandler(XML_Parser parser, - XML_AttlistDeclHandler attdecl) -{ - attlistDeclHandler = attdecl; -} - -void XMLCALL -XML_SetEntityDeclHandler(XML_Parser parser, - XML_EntityDeclHandler handler) -{ - entityDeclHandler = handler; -} - -void XMLCALL -XML_SetXmlDeclHandler(XML_Parser parser, - XML_XmlDeclHandler handler) { - xmlDeclHandler = handler; -} - -int XMLCALL -XML_SetParamEntityParsing(XML_Parser parser, - enum XML_ParamEntityParsing peParsing) -{ - /* block after XML_Parse()/XML_ParseBuffer() has been called */ - if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) - return 0; -#ifdef XML_DTD - paramEntityParsing = peParsing; - return 1; -#else - return peParsing == XML_PARAM_ENTITY_PARSING_NEVER; -#endif -} - -int XMLCALL -XML_SetHashSalt(XML_Parser parser, - unsigned long hash_salt) -{ - /* block after XML_Parse()/XML_ParseBuffer() has been called */ - if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) - return 0; - hash_secret_salt = hash_salt; - return 1; -} - -enum XML_Status XMLCALL -XML_Parse(XML_Parser parser, const char *s, int len, int isFinal) -{ - switch (ps_parsing) { - case XML_SUSPENDED: - errorCode = XML_ERROR_SUSPENDED; - return XML_STATUS_ERROR; - case XML_FINISHED: - errorCode = XML_ERROR_FINISHED; - return XML_STATUS_ERROR; - case XML_INITIALIZED: - if (parentParser == NULL && !startParsing(parser)) { - errorCode = XML_ERROR_NO_MEMORY; - return XML_STATUS_ERROR; - } - default: - ps_parsing = XML_PARSING; - } - - if (len == 0) { - ps_finalBuffer = (XML_Bool)isFinal; - if (!isFinal) - return XML_STATUS_OK; - positionPtr = bufferPtr; - parseEndPtr = bufferEnd; - - /* If data are left over from last buffer, and we now know that these - data are the final chunk of input, then we have to check them again - to detect errors based on that fact. - */ - errorCode = processor(parser, bufferPtr, parseEndPtr, &bufferPtr); - - if (errorCode == XML_ERROR_NONE) { - switch (ps_parsing) { - case XML_SUSPENDED: - XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position); - positionPtr = bufferPtr; - return XML_STATUS_SUSPENDED; - case XML_INITIALIZED: - case XML_PARSING: - ps_parsing = XML_FINISHED; - /* fall through */ - default: - return XML_STATUS_OK; - } - } - eventEndPtr = eventPtr; - processor = errorProcessor; - return XML_STATUS_ERROR; - } -#ifndef XML_CONTEXT_BYTES - else if (bufferPtr == bufferEnd) { - const char *end; - int nLeftOver; - enum XML_Error result; - parseEndByteIndex += len; - positionPtr = s; - ps_finalBuffer = (XML_Bool)isFinal; - - errorCode = processor(parser, s, parseEndPtr = s + len, &end); - - if (errorCode != XML_ERROR_NONE) { - eventEndPtr = eventPtr; - processor = errorProcessor; - return XML_STATUS_ERROR; - } - else { - switch (ps_parsing) { - case XML_SUSPENDED: - result = XML_STATUS_SUSPENDED; - break; - case XML_INITIALIZED: - case XML_PARSING: - if (isFinal) { - ps_parsing = XML_FINISHED; - return XML_STATUS_OK; - } - /* fall through */ - default: - result = XML_STATUS_OK; - } - } - - XmlUpdatePosition(encoding, positionPtr, end, &position); - nLeftOver = s + len - end; - if (nLeftOver) { - if (buffer == NULL || nLeftOver > bufferLim - buffer) { - /* FIXME avoid integer overflow */ - char *temp; - temp = (buffer == NULL - ? (char *)MALLOC(len * 2) - : (char *)REALLOC(buffer, len * 2)); - if (temp == NULL) { - errorCode = XML_ERROR_NO_MEMORY; - eventPtr = eventEndPtr = NULL; - processor = errorProcessor; - return XML_STATUS_ERROR; - } - buffer = temp; - bufferLim = buffer + len * 2; - } - memcpy(buffer, end, nLeftOver); - } - bufferPtr = buffer; - bufferEnd = buffer + nLeftOver; - positionPtr = bufferPtr; - parseEndPtr = bufferEnd; - eventPtr = bufferPtr; - eventEndPtr = bufferPtr; - return result; - } -#endif /* not defined XML_CONTEXT_BYTES */ - else { - void *buff = XML_GetBuffer(parser, len); - if (buff == NULL) - return XML_STATUS_ERROR; - else { - memcpy(buff, s, len); - return XML_ParseBuffer(parser, len, isFinal); - } - } -} - -enum XML_Status XMLCALL -XML_ParseBuffer(XML_Parser parser, int len, int isFinal) -{ - const char *start; - enum XML_Status result = XML_STATUS_OK; - - switch (ps_parsing) { - case XML_SUSPENDED: - errorCode = XML_ERROR_SUSPENDED; - return XML_STATUS_ERROR; - case XML_FINISHED: - errorCode = XML_ERROR_FINISHED; - return XML_STATUS_ERROR; - case XML_INITIALIZED: - if (parentParser == NULL && !startParsing(parser)) { - errorCode = XML_ERROR_NO_MEMORY; - return XML_STATUS_ERROR; - } - default: - ps_parsing = XML_PARSING; - } - - start = bufferPtr; - positionPtr = start; - bufferEnd += len; - parseEndPtr = bufferEnd; - parseEndByteIndex += len; - ps_finalBuffer = (XML_Bool)isFinal; - - errorCode = processor(parser, start, parseEndPtr, &bufferPtr); - - if (errorCode != XML_ERROR_NONE) { - eventEndPtr = eventPtr; - processor = errorProcessor; - return XML_STATUS_ERROR; - } - else { - switch (ps_parsing) { - case XML_SUSPENDED: - result = XML_STATUS_SUSPENDED; - break; - case XML_INITIALIZED: - case XML_PARSING: - if (isFinal) { - ps_parsing = XML_FINISHED; - return result; - } - default: ; /* should not happen */ - } - } - - XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position); - positionPtr = bufferPtr; - return result; -} - -void * XMLCALL -XML_GetBuffer(XML_Parser parser, int len) -{ - switch (ps_parsing) { - case XML_SUSPENDED: - errorCode = XML_ERROR_SUSPENDED; - return NULL; - case XML_FINISHED: - errorCode = XML_ERROR_FINISHED; - return NULL; - default: ; - } - - if (len > bufferLim - bufferEnd) { - /* FIXME avoid integer overflow */ - int neededSize = len + (int)(bufferEnd - bufferPtr); -#ifdef XML_CONTEXT_BYTES - int keep = (int)(bufferPtr - buffer); - - if (keep > XML_CONTEXT_BYTES) - keep = XML_CONTEXT_BYTES; - neededSize += keep; -#endif /* defined XML_CONTEXT_BYTES */ - if (neededSize <= bufferLim - buffer) { -#ifdef XML_CONTEXT_BYTES - if (keep < bufferPtr - buffer) { - int offset = (int)(bufferPtr - buffer) - keep; - memmove(buffer, &buffer[offset], bufferEnd - bufferPtr + keep); - bufferEnd -= offset; - bufferPtr -= offset; - } -#else - memmove(buffer, bufferPtr, bufferEnd - bufferPtr); - bufferEnd = buffer + (bufferEnd - bufferPtr); - bufferPtr = buffer; -#endif /* not defined XML_CONTEXT_BYTES */ - } - else { - char *newBuf; - int bufferSize = (int)(bufferLim - bufferPtr); - if (bufferSize == 0) - bufferSize = INIT_BUFFER_SIZE; - do { - bufferSize *= 2; - } while (bufferSize < neededSize); - newBuf = (char *)MALLOC(bufferSize); - if (newBuf == 0) { - errorCode = XML_ERROR_NO_MEMORY; - return NULL; - } - bufferLim = newBuf + bufferSize; -#ifdef XML_CONTEXT_BYTES - if (bufferPtr) { - int keep = (int)(bufferPtr - buffer); - if (keep > XML_CONTEXT_BYTES) - keep = XML_CONTEXT_BYTES; - memcpy(newBuf, &bufferPtr[-keep], bufferEnd - bufferPtr + keep); - FREE(buffer); - buffer = newBuf; - bufferEnd = buffer + (bufferEnd - bufferPtr) + keep; - bufferPtr = buffer + keep; - } - else { - bufferEnd = newBuf + (bufferEnd - bufferPtr); - bufferPtr = buffer = newBuf; - } -#else - if (bufferPtr) { - memcpy(newBuf, bufferPtr, bufferEnd - bufferPtr); - FREE(buffer); - } - bufferEnd = newBuf + (bufferEnd - bufferPtr); - bufferPtr = buffer = newBuf; -#endif /* not defined XML_CONTEXT_BYTES */ - } - eventPtr = eventEndPtr = NULL; - positionPtr = NULL; - } - return bufferEnd; -} - -enum XML_Status XMLCALL -XML_StopParser(XML_Parser parser, XML_Bool resumable) -{ - switch (ps_parsing) { - case XML_SUSPENDED: - if (resumable) { - errorCode = XML_ERROR_SUSPENDED; - return XML_STATUS_ERROR; - } - ps_parsing = XML_FINISHED; - break; - case XML_FINISHED: - errorCode = XML_ERROR_FINISHED; - return XML_STATUS_ERROR; - default: - if (resumable) { -#ifdef XML_DTD - if (isParamEntity) { - errorCode = XML_ERROR_SUSPEND_PE; - return XML_STATUS_ERROR; - } -#endif - ps_parsing = XML_SUSPENDED; - } - else - ps_parsing = XML_FINISHED; - } - return XML_STATUS_OK; -} - -enum XML_Status XMLCALL -XML_ResumeParser(XML_Parser parser) -{ - enum XML_Status result = XML_STATUS_OK; - - if (ps_parsing != XML_SUSPENDED) { - errorCode = XML_ERROR_NOT_SUSPENDED; - return XML_STATUS_ERROR; - } - ps_parsing = XML_PARSING; - - errorCode = processor(parser, bufferPtr, parseEndPtr, &bufferPtr); - - if (errorCode != XML_ERROR_NONE) { - eventEndPtr = eventPtr; - processor = errorProcessor; - return XML_STATUS_ERROR; - } - else { - switch (ps_parsing) { - case XML_SUSPENDED: - result = XML_STATUS_SUSPENDED; - break; - case XML_INITIALIZED: - case XML_PARSING: - if (ps_finalBuffer) { - ps_parsing = XML_FINISHED; - return result; - } - default: ; - } - } - - XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position); - positionPtr = bufferPtr; - return result; -} - -void XMLCALL -XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status) -{ - assert(status != NULL); - *status = parser->m_parsingStatus; -} - -enum XML_Error XMLCALL -XML_GetErrorCode(XML_Parser parser) -{ - return errorCode; -} - -XML_Index XMLCALL -XML_GetCurrentByteIndex(XML_Parser parser) -{ - if (eventPtr) - return parseEndByteIndex - (parseEndPtr - eventPtr); - return -1; -} - -int XMLCALL -XML_GetCurrentByteCount(XML_Parser parser) -{ - if (eventEndPtr && eventPtr) - return (int)(eventEndPtr - eventPtr); - return 0; -} - -const char * XMLCALL -XML_GetInputContext(XML_Parser parser, int *offset, int *size) -{ -#ifdef XML_CONTEXT_BYTES - if (eventPtr && buffer) { - *offset = (int)(eventPtr - buffer); - *size = (int)(bufferEnd - buffer); - return buffer; - } -#endif /* defined XML_CONTEXT_BYTES */ - return (char *) 0; -} - -XML_Size XMLCALL -XML_GetCurrentLineNumber(XML_Parser parser) -{ - if (eventPtr && eventPtr >= positionPtr) { - XmlUpdatePosition(encoding, positionPtr, eventPtr, &position); - positionPtr = eventPtr; - } - return position.lineNumber + 1; -} - -XML_Size XMLCALL -XML_GetCurrentColumnNumber(XML_Parser parser) -{ - if (eventPtr && eventPtr >= positionPtr) { - XmlUpdatePosition(encoding, positionPtr, eventPtr, &position); - positionPtr = eventPtr; - } - return position.columnNumber; -} - -void XMLCALL -XML_FreeContentModel(XML_Parser parser, XML_Content *model) -{ - FREE(model); -} - -void * XMLCALL -XML_MemMalloc(XML_Parser parser, size_t size) -{ - return MALLOC(size); -} - -void * XMLCALL -XML_MemRealloc(XML_Parser parser, void *ptr, size_t size) -{ - return REALLOC(ptr, size); -} - -void XMLCALL -XML_MemFree(XML_Parser parser, void *ptr) -{ - FREE(ptr); -} - -void XMLCALL -XML_DefaultCurrent(XML_Parser parser) -{ - if (defaultHandler) { - if (openInternalEntities) - reportDefault(parser, - internalEncoding, - openInternalEntities->internalEventPtr, - openInternalEntities->internalEventEndPtr); - else - reportDefault(parser, encoding, eventPtr, eventEndPtr); - } -} - -const XML_LChar * XMLCALL -XML_ErrorString(enum XML_Error code) -{ - static const XML_LChar* const message[] = { - 0, - XML_L("out of memory"), - XML_L("syntax error"), - XML_L("no element found"), - XML_L("not well-formed (invalid token)"), - XML_L("unclosed token"), - XML_L("partial character"), - XML_L("mismatched tag"), - XML_L("duplicate attribute"), - XML_L("junk after document element"), - XML_L("illegal parameter entity reference"), - XML_L("undefined entity"), - XML_L("recursive entity reference"), - XML_L("asynchronous entity"), - XML_L("reference to invalid character number"), - XML_L("reference to binary entity"), - XML_L("reference to external entity in attribute"), - XML_L("XML or text declaration not at start of entity"), - XML_L("unknown encoding"), - XML_L("encoding specified in XML declaration is incorrect"), - XML_L("unclosed CDATA section"), - XML_L("error in processing external entity reference"), - XML_L("document is not standalone"), - XML_L("unexpected parser state - please send a bug report"), - XML_L("entity declared in parameter entity"), - XML_L("requested feature requires XML_DTD support in Expat"), - XML_L("cannot change setting once parsing has begun"), - XML_L("unbound prefix"), - XML_L("must not undeclare prefix"), - XML_L("incomplete markup in parameter entity"), - XML_L("XML declaration not well-formed"), - XML_L("text declaration not well-formed"), - XML_L("illegal character(s) in public id"), - XML_L("parser suspended"), - XML_L("parser not suspended"), - XML_L("parsing aborted"), - XML_L("parsing finished"), - XML_L("cannot suspend in external parameter entity"), - XML_L("reserved prefix (xml) must not be undeclared or bound to another namespace name"), - XML_L("reserved prefix (xmlns) must not be declared or undeclared"), - XML_L("prefix must not be bound to one of the reserved namespace names") - }; - if (code > 0 && code < sizeof(message)/sizeof(message[0])) - return message[code]; - return NULL; -} - -const XML_LChar * XMLCALL -XML_ExpatVersion(void) { - - /* V1 is used to string-ize the version number. However, it would - string-ize the actual version macro *names* unless we get them - substituted before being passed to V1. CPP is defined to expand - a macro, then rescan for more expansions. Thus, we use V2 to expand - the version macros, then CPP will expand the resulting V1() macro - with the correct numerals. */ - /* ### I'm assuming cpp is portable in this respect... */ - -#define V1(a,b,c) XML_L(#a)XML_L(".")XML_L(#b)XML_L(".")XML_L(#c) -#define V2(a,b,c) XML_L("expat_")V1(a,b,c) - - return V2(XML_MAJOR_VERSION, XML_MINOR_VERSION, XML_MICRO_VERSION); - -#undef V1 -#undef V2 -} - -XML_Expat_Version XMLCALL -XML_ExpatVersionInfo(void) -{ - XML_Expat_Version version; - - version.major = XML_MAJOR_VERSION; - version.minor = XML_MINOR_VERSION; - version.micro = XML_MICRO_VERSION; - - return version; -} - -const XML_Feature * XMLCALL -XML_GetFeatureList(void) -{ - static const XML_Feature features[] = { - {XML_FEATURE_SIZEOF_XML_CHAR, XML_L("sizeof(XML_Char)"), - sizeof(XML_Char)}, - {XML_FEATURE_SIZEOF_XML_LCHAR, XML_L("sizeof(XML_LChar)"), - sizeof(XML_LChar)}, -#ifdef XML_UNICODE - {XML_FEATURE_UNICODE, XML_L("XML_UNICODE"), 0}, -#endif -#ifdef XML_UNICODE_WCHAR_T - {XML_FEATURE_UNICODE_WCHAR_T, XML_L("XML_UNICODE_WCHAR_T"), 0}, -#endif -#ifdef XML_DTD - {XML_FEATURE_DTD, XML_L("XML_DTD"), 0}, -#endif -#ifdef XML_CONTEXT_BYTES - {XML_FEATURE_CONTEXT_BYTES, XML_L("XML_CONTEXT_BYTES"), - XML_CONTEXT_BYTES}, -#endif -#ifdef XML_MIN_SIZE - {XML_FEATURE_MIN_SIZE, XML_L("XML_MIN_SIZE"), 0}, -#endif -#ifdef XML_NS - {XML_FEATURE_NS, XML_L("XML_NS"), 0}, -#endif -#ifdef XML_LARGE_SIZE - {XML_FEATURE_LARGE_SIZE, XML_L("XML_LARGE_SIZE"), 0}, -#endif -#ifdef XML_ATTR_INFO - {XML_FEATURE_ATTR_INFO, XML_L("XML_ATTR_INFO"), 0}, -#endif - {XML_FEATURE_END, NULL, 0} - }; - - return features; -} - -/* Initially tag->rawName always points into the parse buffer; - for those TAG instances opened while the current parse buffer was - processed, and not yet closed, we need to store tag->rawName in a more - permanent location, since the parse buffer is about to be discarded. -*/ -static XML_Bool -storeRawNames(XML_Parser parser) -{ - TAG *tag = tagStack; - while (tag) { - int bufSize; - int nameLen = sizeof(XML_Char) * (tag->name.strLen + 1); - char *rawNameBuf = tag->buf + nameLen; - /* Stop if already stored. Since tagStack is a stack, we can stop - at the first entry that has already been copied; everything - below it in the stack is already been accounted for in a - previous call to this function. - */ - if (tag->rawName == rawNameBuf) - break; - /* For re-use purposes we need to ensure that the - size of tag->buf is a multiple of sizeof(XML_Char). - */ - bufSize = nameLen + ROUND_UP(tag->rawNameLength, sizeof(XML_Char)); - if (bufSize > tag->bufEnd - tag->buf) { - char *temp = (char *)REALLOC(tag->buf, bufSize); - if (temp == NULL) - return XML_FALSE; - /* if tag->name.str points to tag->buf (only when namespace - processing is off) then we have to update it - */ - if (tag->name.str == (XML_Char *)tag->buf) - tag->name.str = (XML_Char *)temp; - /* if tag->name.localPart is set (when namespace processing is on) - then update it as well, since it will always point into tag->buf - */ - if (tag->name.localPart) - tag->name.localPart = (XML_Char *)temp + (tag->name.localPart - - (XML_Char *)tag->buf); - tag->buf = temp; - tag->bufEnd = temp + bufSize; - rawNameBuf = temp + nameLen; - } - memcpy(rawNameBuf, tag->rawName, tag->rawNameLength); - tag->rawName = rawNameBuf; - tag = tag->parent; - } - return XML_TRUE; -} - -static enum XML_Error PTRCALL -contentProcessor(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - enum XML_Error result = doContent(parser, 0, encoding, start, end, - endPtr, (XML_Bool)!ps_finalBuffer); - if (result == XML_ERROR_NONE) { - if (!storeRawNames(parser)) - return XML_ERROR_NO_MEMORY; - } - return result; -} - -static enum XML_Error PTRCALL -externalEntityInitProcessor(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - enum XML_Error result = initializeEncoding(parser); - if (result != XML_ERROR_NONE) - return result; - processor = externalEntityInitProcessor2; - return externalEntityInitProcessor2(parser, start, end, endPtr); -} - -static enum XML_Error PTRCALL -externalEntityInitProcessor2(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - const char *next = start; /* XmlContentTok doesn't always set the last arg */ - int tok = XmlContentTok(encoding, start, end, &next); - switch (tok) { - case XML_TOK_BOM: - /* If we are at the end of the buffer, this would cause the next stage, - i.e. externalEntityInitProcessor3, to pass control directly to - doContent (by detecting XML_TOK_NONE) without processing any xml text - declaration - causing the error XML_ERROR_MISPLACED_XML_PI in doContent. - */ - if (next == end && !ps_finalBuffer) { - *endPtr = next; - return XML_ERROR_NONE; - } - start = next; - break; - case XML_TOK_PARTIAL: - if (!ps_finalBuffer) { - *endPtr = start; - return XML_ERROR_NONE; - } - eventPtr = start; - return XML_ERROR_UNCLOSED_TOKEN; - case XML_TOK_PARTIAL_CHAR: - if (!ps_finalBuffer) { - *endPtr = start; - return XML_ERROR_NONE; - } - eventPtr = start; - return XML_ERROR_PARTIAL_CHAR; - } - processor = externalEntityInitProcessor3; - return externalEntityInitProcessor3(parser, start, end, endPtr); -} - -static enum XML_Error PTRCALL -externalEntityInitProcessor3(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - int tok; - const char *next = start; /* XmlContentTok doesn't always set the last arg */ - eventPtr = start; - tok = XmlContentTok(encoding, start, end, &next); - eventEndPtr = next; - - switch (tok) { - case XML_TOK_XML_DECL: - { - enum XML_Error result; - result = processXmlDecl(parser, 1, start, next); - if (result != XML_ERROR_NONE) - return result; - switch (ps_parsing) { - case XML_SUSPENDED: - *endPtr = next; - return XML_ERROR_NONE; - case XML_FINISHED: - return XML_ERROR_ABORTED; - default: - start = next; - } - } - break; - case XML_TOK_PARTIAL: - if (!ps_finalBuffer) { - *endPtr = start; - return XML_ERROR_NONE; - } - return XML_ERROR_UNCLOSED_TOKEN; - case XML_TOK_PARTIAL_CHAR: - if (!ps_finalBuffer) { - *endPtr = start; - return XML_ERROR_NONE; - } - return XML_ERROR_PARTIAL_CHAR; - } - processor = externalEntityContentProcessor; - tagLevel = 1; - return externalEntityContentProcessor(parser, start, end, endPtr); -} - -static enum XML_Error PTRCALL -externalEntityContentProcessor(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - enum XML_Error result = doContent(parser, 1, encoding, start, end, - endPtr, (XML_Bool)!ps_finalBuffer); - if (result == XML_ERROR_NONE) { - if (!storeRawNames(parser)) - return XML_ERROR_NO_MEMORY; - } - return result; -} - -static enum XML_Error -doContent(XML_Parser parser, - int startTagLevel, - const ENCODING *enc, - const char *s, - const char *end, - const char **nextPtr, - XML_Bool haveMore) -{ - /* save one level of indirection */ - DTD * const dtd = _dtd; - - const char **eventPP; - const char **eventEndPP; - if (enc == encoding) { - eventPP = &eventPtr; - eventEndPP = &eventEndPtr; - } - else { - eventPP = &(openInternalEntities->internalEventPtr); - eventEndPP = &(openInternalEntities->internalEventEndPtr); - } - *eventPP = s; - - for (;;) { - const char *next = s; /* XmlContentTok doesn't always set the last arg */ - int tok = XmlContentTok(enc, s, end, &next); - *eventEndPP = next; - switch (tok) { - case XML_TOK_TRAILING_CR: - if (haveMore) { - *nextPtr = s; - return XML_ERROR_NONE; - } - *eventEndPP = end; - if (characterDataHandler) { - XML_Char c = 0xA; - characterDataHandler(handlerArg, &c, 1); - } - else if (defaultHandler) - reportDefault(parser, enc, s, end); - /* We are at the end of the final buffer, should we check for - XML_SUSPENDED, XML_FINISHED? - */ - if (startTagLevel == 0) - return XML_ERROR_NO_ELEMENTS; - if (tagLevel != startTagLevel) - return XML_ERROR_ASYNC_ENTITY; - *nextPtr = end; - return XML_ERROR_NONE; - case XML_TOK_NONE: - if (haveMore) { - *nextPtr = s; - return XML_ERROR_NONE; - } - if (startTagLevel > 0) { - if (tagLevel != startTagLevel) - return XML_ERROR_ASYNC_ENTITY; - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_NO_ELEMENTS; - case XML_TOK_INVALID: - *eventPP = next; - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_PARTIAL: - if (haveMore) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_UNCLOSED_TOKEN; - case XML_TOK_PARTIAL_CHAR: - if (haveMore) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_PARTIAL_CHAR; - case XML_TOK_ENTITY_REF: - { - const XML_Char *name; - ENTITY *entity; - XML_Char ch = (XML_Char) XmlPredefinedEntityName(enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (ch) { - if (characterDataHandler) - characterDataHandler(handlerArg, &ch, 1); - else if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - } - name = poolStoreString(&dtd->pool, enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!name) - return XML_ERROR_NO_MEMORY; - entity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, 0); - poolDiscard(&dtd->pool); - /* First, determine if a check for an existing declaration is needed; - if yes, check that the entity exists, and that it is internal, - otherwise call the skipped entity or default handler. - */ - if (!dtd->hasParamEntityRefs || dtd->standalone) { - if (!entity) - return XML_ERROR_UNDEFINED_ENTITY; - else if (!entity->is_internal) - return XML_ERROR_ENTITY_DECLARED_IN_PE; - } - else if (!entity) { - if (skippedEntityHandler) - skippedEntityHandler(handlerArg, name, 0); - else if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - } - if (entity->open) - return XML_ERROR_RECURSIVE_ENTITY_REF; - if (entity->notation) - return XML_ERROR_BINARY_ENTITY_REF; - if (entity->textPtr) { - enum XML_Error result; - if (!defaultExpandInternalEntities) { - if (skippedEntityHandler) - skippedEntityHandler(handlerArg, entity->name, 0); - else if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - } - result = processInternalEntity(parser, entity, XML_FALSE); - if (result != XML_ERROR_NONE) - return result; - } - else if (externalEntityRefHandler) { - const XML_Char *context; - entity->open = XML_TRUE; - context = getContext(parser); - entity->open = XML_FALSE; - if (!context) - return XML_ERROR_NO_MEMORY; - if (!externalEntityRefHandler(externalEntityRefHandlerArg, - context, - entity->base, - entity->systemId, - entity->publicId)) - return XML_ERROR_EXTERNAL_ENTITY_HANDLING; - poolDiscard(&tempPool); - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - } - case XML_TOK_START_TAG_NO_ATTS: - /* fall through */ - case XML_TOK_START_TAG_WITH_ATTS: - { - TAG *tag; - enum XML_Error result; - XML_Char *toPtr; - if (freeTagList) { - tag = freeTagList; - freeTagList = freeTagList->parent; - } - else { - tag = (TAG *)MALLOC(sizeof(TAG)); - if (!tag) - return XML_ERROR_NO_MEMORY; - tag->buf = (char *)MALLOC(INIT_TAG_BUF_SIZE); - if (!tag->buf) { - FREE(tag); - return XML_ERROR_NO_MEMORY; - } - tag->bufEnd = tag->buf + INIT_TAG_BUF_SIZE; - } - tag->bindings = NULL; - tag->parent = tagStack; - tagStack = tag; - tag->name.localPart = NULL; - tag->name.prefix = NULL; - tag->rawName = s + enc->minBytesPerChar; - tag->rawNameLength = XmlNameLength(enc, tag->rawName); - ++tagLevel; - { - const char *rawNameEnd = tag->rawName + tag->rawNameLength; - const char *fromPtr = tag->rawName; - toPtr = (XML_Char *)tag->buf; - for (;;) { - int bufSize; - int convLen; - XmlConvert(enc, - &fromPtr, rawNameEnd, - (ICHAR **)&toPtr, (ICHAR *)tag->bufEnd - 1); - convLen = (int)(toPtr - (XML_Char *)tag->buf); - if (fromPtr == rawNameEnd) { - tag->name.strLen = convLen; - break; - } - bufSize = (int)(tag->bufEnd - tag->buf) << 1; - { - char *temp = (char *)REALLOC(tag->buf, bufSize); - if (temp == NULL) - return XML_ERROR_NO_MEMORY; - tag->buf = temp; - tag->bufEnd = temp + bufSize; - toPtr = (XML_Char *)temp + convLen; - } - } - } - tag->name.str = (XML_Char *)tag->buf; - *toPtr = XML_T('\0'); - result = storeAtts(parser, enc, s, &(tag->name), &(tag->bindings)); - if (result) - return result; - if (startElementHandler) - startElementHandler(handlerArg, tag->name.str, - (const XML_Char **)atts); - else if (defaultHandler) - reportDefault(parser, enc, s, next); - poolClear(&tempPool); - break; - } - case XML_TOK_EMPTY_ELEMENT_NO_ATTS: - /* fall through */ - case XML_TOK_EMPTY_ELEMENT_WITH_ATTS: - { - const char *rawName = s + enc->minBytesPerChar; - enum XML_Error result; - BINDING *bindings = NULL; - XML_Bool noElmHandlers = XML_TRUE; - TAG_NAME name; - name.str = poolStoreString(&tempPool, enc, rawName, - rawName + XmlNameLength(enc, rawName)); - if (!name.str) - return XML_ERROR_NO_MEMORY; - poolFinish(&tempPool); - result = storeAtts(parser, enc, s, &name, &bindings); - if (result) - return result; - poolFinish(&tempPool); - if (startElementHandler) { - startElementHandler(handlerArg, name.str, (const XML_Char **)atts); - noElmHandlers = XML_FALSE; - } - if (endElementHandler) { - if (startElementHandler) - *eventPP = *eventEndPP; - endElementHandler(handlerArg, name.str); - noElmHandlers = XML_FALSE; - } - if (noElmHandlers && defaultHandler) - reportDefault(parser, enc, s, next); - poolClear(&tempPool); - while (bindings) { - BINDING *b = bindings; - if (endNamespaceDeclHandler) - endNamespaceDeclHandler(handlerArg, b->prefix->name); - bindings = bindings->nextTagBinding; - b->nextTagBinding = freeBindingList; - freeBindingList = b; - b->prefix->binding = b->prevPrefixBinding; - } - } - if (tagLevel == 0) - return epilogProcessor(parser, next, end, nextPtr); - break; - case XML_TOK_END_TAG: - if (tagLevel == startTagLevel) - return XML_ERROR_ASYNC_ENTITY; - else { - int len; - const char *rawName; - TAG *tag = tagStack; - tagStack = tag->parent; - tag->parent = freeTagList; - freeTagList = tag; - rawName = s + enc->minBytesPerChar*2; - len = XmlNameLength(enc, rawName); - if (len != tag->rawNameLength - || memcmp(tag->rawName, rawName, len) != 0) { - *eventPP = rawName; - return XML_ERROR_TAG_MISMATCH; - } - --tagLevel; - if (endElementHandler) { - const XML_Char *localPart; - const XML_Char *prefix; - XML_Char *uri; - localPart = tag->name.localPart; - if (ns && localPart) { - /* localPart and prefix may have been overwritten in - tag->name.str, since this points to the binding->uri - buffer which gets re-used; so we have to add them again - */ - uri = (XML_Char *)tag->name.str + tag->name.uriLen; - /* don't need to check for space - already done in storeAtts() */ - while (*localPart) *uri++ = *localPart++; - prefix = (XML_Char *)tag->name.prefix; - if (ns_triplets && prefix) { - *uri++ = namespaceSeparator; - while (*prefix) *uri++ = *prefix++; - } - *uri = XML_T('\0'); - } - endElementHandler(handlerArg, tag->name.str); - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - while (tag->bindings) { - BINDING *b = tag->bindings; - if (endNamespaceDeclHandler) - endNamespaceDeclHandler(handlerArg, b->prefix->name); - tag->bindings = tag->bindings->nextTagBinding; - b->nextTagBinding = freeBindingList; - freeBindingList = b; - b->prefix->binding = b->prevPrefixBinding; - } - if (tagLevel == 0) - return epilogProcessor(parser, next, end, nextPtr); - } - break; - case XML_TOK_CHAR_REF: - { - int n = XmlCharRefNumber(enc, s); - if (n < 0) - return XML_ERROR_BAD_CHAR_REF; - if (characterDataHandler) { - XML_Char buf[XML_ENCODE_MAX]; - characterDataHandler(handlerArg, buf, XmlEncode(n, (ICHAR *)buf)); - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - } - break; - case XML_TOK_XML_DECL: - return XML_ERROR_MISPLACED_XML_PI; - case XML_TOK_DATA_NEWLINE: - if (characterDataHandler) { - XML_Char c = 0xA; - characterDataHandler(handlerArg, &c, 1); - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - case XML_TOK_CDATA_SECT_OPEN: - { - enum XML_Error result; - if (startCdataSectionHandler) - startCdataSectionHandler(handlerArg); -#if 0 - /* Suppose you doing a transformation on a document that involves - changing only the character data. You set up a defaultHandler - and a characterDataHandler. The defaultHandler simply copies - characters through. The characterDataHandler does the - transformation and writes the characters out escaping them as - necessary. This case will fail to work if we leave out the - following two lines (because & and < inside CDATA sections will - be incorrectly escaped). - - However, now we have a start/endCdataSectionHandler, so it seems - easier to let the user deal with this. - */ - else if (characterDataHandler) - characterDataHandler(handlerArg, dataBuf, 0); -#endif - else if (defaultHandler) - reportDefault(parser, enc, s, next); - result = doCdataSection(parser, enc, &next, end, nextPtr, haveMore); - if (result != XML_ERROR_NONE) - return result; - else if (!next) { - processor = cdataSectionProcessor; - return result; - } - } - break; - case XML_TOK_TRAILING_RSQB: - if (haveMore) { - *nextPtr = s; - return XML_ERROR_NONE; - } - if (characterDataHandler) { - if (MUST_CONVERT(enc, s)) { - ICHAR *dataPtr = (ICHAR *)dataBuf; - XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd); - characterDataHandler(handlerArg, dataBuf, - (int)(dataPtr - (ICHAR *)dataBuf)); - } - else - characterDataHandler(handlerArg, - (XML_Char *)s, - (int)((XML_Char *)end - (XML_Char *)s)); - } - else if (defaultHandler) - reportDefault(parser, enc, s, end); - /* We are at the end of the final buffer, should we check for - XML_SUSPENDED, XML_FINISHED? - */ - if (startTagLevel == 0) { - *eventPP = end; - return XML_ERROR_NO_ELEMENTS; - } - if (tagLevel != startTagLevel) { - *eventPP = end; - return XML_ERROR_ASYNC_ENTITY; - } - *nextPtr = end; - return XML_ERROR_NONE; - case XML_TOK_DATA_CHARS: - { - XML_CharacterDataHandler charDataHandler = characterDataHandler; - if (charDataHandler) { - if (MUST_CONVERT(enc, s)) { - for (;;) { - ICHAR *dataPtr = (ICHAR *)dataBuf; - XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd); - *eventEndPP = s; - charDataHandler(handlerArg, dataBuf, - (int)(dataPtr - (ICHAR *)dataBuf)); - if (s == next) - break; - *eventPP = s; - } - } - else - charDataHandler(handlerArg, - (XML_Char *)s, - (int)((XML_Char *)next - (XML_Char *)s)); - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - } - break; - case XML_TOK_PI: - if (!reportProcessingInstruction(parser, enc, s, next)) - return XML_ERROR_NO_MEMORY; - break; - case XML_TOK_COMMENT: - if (!reportComment(parser, enc, s, next)) - return XML_ERROR_NO_MEMORY; - break; - default: - if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - } - *eventPP = s = next; - switch (ps_parsing) { - case XML_SUSPENDED: - *nextPtr = next; - return XML_ERROR_NONE; - case XML_FINISHED: - return XML_ERROR_ABORTED; - default: ; - } - } - /* not reached */ -} - -/* Precondition: all arguments must be non-NULL; - Purpose: - - normalize attributes - - check attributes for well-formedness - - generate namespace aware attribute names (URI, prefix) - - build list of attributes for startElementHandler - - default attributes - - process namespace declarations (check and report them) - - generate namespace aware element name (URI, prefix) -*/ -static enum XML_Error -storeAtts(XML_Parser parser, const ENCODING *enc, - const char *attStr, TAG_NAME *tagNamePtr, - BINDING **bindingsPtr) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ - ELEMENT_TYPE *elementType; - int nDefaultAtts; - const XML_Char **appAtts; /* the attribute list for the application */ - int attIndex = 0; - int prefixLen; - int i; - int n; - XML_Char *uri; - int nPrefixes = 0; - BINDING *binding; - const XML_Char *localPart; - - /* lookup the element type name */ - elementType = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, tagNamePtr->str,0); - if (!elementType) { - const XML_Char *name = poolCopyString(&dtd->pool, tagNamePtr->str); - if (!name) - return XML_ERROR_NO_MEMORY; - elementType = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, name, - sizeof(ELEMENT_TYPE)); - if (!elementType) - return XML_ERROR_NO_MEMORY; - if (ns && !setElementTypePrefix(parser, elementType)) - return XML_ERROR_NO_MEMORY; - } - nDefaultAtts = elementType->nDefaultAtts; - - /* get the attributes from the tokenizer */ - n = XmlGetAttributes(enc, attStr, attsSize, atts); - if (n + nDefaultAtts > attsSize) { - int oldAttsSize = attsSize; - ATTRIBUTE *temp; -#ifdef XML_ATTR_INFO - XML_AttrInfo *temp2; -#endif - attsSize = n + nDefaultAtts + INIT_ATTS_SIZE; - temp = (ATTRIBUTE *)REALLOC((void *)atts, attsSize * sizeof(ATTRIBUTE)); - if (temp == NULL) - return XML_ERROR_NO_MEMORY; - atts = temp; -#ifdef XML_ATTR_INFO - temp2 = (XML_AttrInfo *)REALLOC((void *)attInfo, attsSize * sizeof(XML_AttrInfo)); - if (temp2 == NULL) - return XML_ERROR_NO_MEMORY; - attInfo = temp2; -#endif - if (n > oldAttsSize) - XmlGetAttributes(enc, attStr, n, atts); - } - - appAtts = (const XML_Char **)atts; - for (i = 0; i < n; i++) { - ATTRIBUTE *currAtt = &atts[i]; -#ifdef XML_ATTR_INFO - XML_AttrInfo *currAttInfo = &attInfo[i]; -#endif - /* add the name and value to the attribute list */ - ATTRIBUTE_ID *attId = getAttributeId(parser, enc, currAtt->name, - currAtt->name - + XmlNameLength(enc, currAtt->name)); - if (!attId) - return XML_ERROR_NO_MEMORY; -#ifdef XML_ATTR_INFO - currAttInfo->nameStart = parseEndByteIndex - (parseEndPtr - currAtt->name); - currAttInfo->nameEnd = currAttInfo->nameStart + - XmlNameLength(enc, currAtt->name); - currAttInfo->valueStart = parseEndByteIndex - - (parseEndPtr - currAtt->valuePtr); - currAttInfo->valueEnd = parseEndByteIndex - (parseEndPtr - currAtt->valueEnd); -#endif - /* Detect duplicate attributes by their QNames. This does not work when - namespace processing is turned on and different prefixes for the same - namespace are used. For this case we have a check further down. - */ - if ((attId->name)[-1]) { - if (enc == encoding) - eventPtr = atts[i].name; - return XML_ERROR_DUPLICATE_ATTRIBUTE; - } - (attId->name)[-1] = 1; - appAtts[attIndex++] = attId->name; - if (!atts[i].normalized) { - enum XML_Error result; - XML_Bool isCdata = XML_TRUE; - - /* figure out whether declared as other than CDATA */ - if (attId->maybeTokenized) { - int j; - for (j = 0; j < nDefaultAtts; j++) { - if (attId == elementType->defaultAtts[j].id) { - isCdata = elementType->defaultAtts[j].isCdata; - break; - } - } - } - - /* normalize the attribute value */ - result = storeAttributeValue(parser, enc, isCdata, - atts[i].valuePtr, atts[i].valueEnd, - &tempPool); - if (result) - return result; - appAtts[attIndex] = poolStart(&tempPool); - poolFinish(&tempPool); - } - else { - /* the value did not need normalizing */ - appAtts[attIndex] = poolStoreString(&tempPool, enc, atts[i].valuePtr, - atts[i].valueEnd); - if (appAtts[attIndex] == 0) - return XML_ERROR_NO_MEMORY; - poolFinish(&tempPool); - } - /* handle prefixed attribute names */ - if (attId->prefix) { - if (attId->xmlns) { - /* deal with namespace declarations here */ - enum XML_Error result = addBinding(parser, attId->prefix, attId, - appAtts[attIndex], bindingsPtr); - if (result) - return result; - --attIndex; - } - else { - /* deal with other prefixed names later */ - attIndex++; - nPrefixes++; - (attId->name)[-1] = 2; - } - } - else - attIndex++; - } - - /* set-up for XML_GetSpecifiedAttributeCount and XML_GetIdAttributeIndex */ - nSpecifiedAtts = attIndex; - if (elementType->idAtt && (elementType->idAtt->name)[-1]) { - for (i = 0; i < attIndex; i += 2) - if (appAtts[i] == elementType->idAtt->name) { - idAttIndex = i; - break; - } - } - else - idAttIndex = -1; - - /* do attribute defaulting */ - for (i = 0; i < nDefaultAtts; i++) { - const DEFAULT_ATTRIBUTE *da = elementType->defaultAtts + i; - if (!(da->id->name)[-1] && da->value) { - if (da->id->prefix) { - if (da->id->xmlns) { - enum XML_Error result = addBinding(parser, da->id->prefix, da->id, - da->value, bindingsPtr); - if (result) - return result; - } - else { - (da->id->name)[-1] = 2; - nPrefixes++; - appAtts[attIndex++] = da->id->name; - appAtts[attIndex++] = da->value; - } - } - else { - (da->id->name)[-1] = 1; - appAtts[attIndex++] = da->id->name; - appAtts[attIndex++] = da->value; - } - } - } - appAtts[attIndex] = 0; - - /* expand prefixed attribute names, check for duplicates, - and clear flags that say whether attributes were specified */ - i = 0; - if (nPrefixes) { - int j; /* hash table index */ - unsigned long version = nsAttsVersion; - int nsAttsSize = (int)1 << nsAttsPower; - /* size of hash table must be at least 2 * (# of prefixed attributes) */ - if ((nPrefixes << 1) >> nsAttsPower) { /* true for nsAttsPower = 0 */ - NS_ATT *temp; - /* hash table size must also be a power of 2 and >= 8 */ - while (nPrefixes >> nsAttsPower++); - if (nsAttsPower < 3) - nsAttsPower = 3; - nsAttsSize = (int)1 << nsAttsPower; - temp = (NS_ATT *)REALLOC(nsAtts, nsAttsSize * sizeof(NS_ATT)); - if (!temp) - return XML_ERROR_NO_MEMORY; - nsAtts = temp; - version = 0; /* force re-initialization of nsAtts hash table */ - } - /* using a version flag saves us from initializing nsAtts every time */ - if (!version) { /* initialize version flags when version wraps around */ - version = INIT_ATTS_VERSION; - for (j = nsAttsSize; j != 0; ) - nsAtts[--j].version = version; - } - nsAttsVersion = --version; - - /* expand prefixed names and check for duplicates */ - for (; i < attIndex; i += 2) { - const XML_Char *s = appAtts[i]; - if (s[-1] == 2) { /* prefixed */ - ATTRIBUTE_ID *id; - const BINDING *b; - unsigned long uriHash = hash_secret_salt; - ((XML_Char *)s)[-1] = 0; /* clear flag */ - id = (ATTRIBUTE_ID *)lookup(parser, &dtd->attributeIds, s, 0); - b = id->prefix->binding; - if (!b) - return XML_ERROR_UNBOUND_PREFIX; - - /* as we expand the name we also calculate its hash value */ - for (j = 0; j < b->uriLen; j++) { - const XML_Char c = b->uri[j]; - if (!poolAppendChar(&tempPool, c)) - return XML_ERROR_NO_MEMORY; - uriHash = CHAR_HASH(uriHash, c); - } - while (*s++ != XML_T(ASCII_COLON)) - ; - do { /* copies null terminator */ - const XML_Char c = *s; - if (!poolAppendChar(&tempPool, *s)) - return XML_ERROR_NO_MEMORY; - uriHash = CHAR_HASH(uriHash, c); - } while (*s++); - - { /* Check hash table for duplicate of expanded name (uriName). - Derived from code in lookup(parser, HASH_TABLE *table, ...). - */ - unsigned char step = 0; - unsigned long mask = nsAttsSize - 1; - j = uriHash & mask; /* index into hash table */ - while (nsAtts[j].version == version) { - /* for speed we compare stored hash values first */ - if (uriHash == nsAtts[j].hash) { - const XML_Char *s1 = poolStart(&tempPool); - const XML_Char *s2 = nsAtts[j].uriName; - /* s1 is null terminated, but not s2 */ - for (; *s1 == *s2 && *s1 != 0; s1++, s2++); - if (*s1 == 0) - return XML_ERROR_DUPLICATE_ATTRIBUTE; - } - if (!step) - step = PROBE_STEP(uriHash, mask, nsAttsPower); - j < step ? (j += nsAttsSize - step) : (j -= step); - } - } - - if (ns_triplets) { /* append namespace separator and prefix */ - tempPool.ptr[-1] = namespaceSeparator; - s = b->prefix->name; - do { - if (!poolAppendChar(&tempPool, *s)) - return XML_ERROR_NO_MEMORY; - } while (*s++); - } - - /* store expanded name in attribute list */ - s = poolStart(&tempPool); - poolFinish(&tempPool); - appAtts[i] = s; - - /* fill empty slot with new version, uriName and hash value */ - nsAtts[j].version = version; - nsAtts[j].hash = uriHash; - nsAtts[j].uriName = s; - - if (!--nPrefixes) { - i += 2; - break; - } - } - else /* not prefixed */ - ((XML_Char *)s)[-1] = 0; /* clear flag */ - } - } - /* clear flags for the remaining attributes */ - for (; i < attIndex; i += 2) - ((XML_Char *)(appAtts[i]))[-1] = 0; - for (binding = *bindingsPtr; binding; binding = binding->nextTagBinding) - binding->attId->name[-1] = 0; - - if (!ns) - return XML_ERROR_NONE; - - /* expand the element type name */ - if (elementType->prefix) { - binding = elementType->prefix->binding; - if (!binding) - return XML_ERROR_UNBOUND_PREFIX; - localPart = tagNamePtr->str; - while (*localPart++ != XML_T(ASCII_COLON)) - ; - } - else if (dtd->defaultPrefix.binding) { - binding = dtd->defaultPrefix.binding; - localPart = tagNamePtr->str; - } - else - return XML_ERROR_NONE; - prefixLen = 0; - if (ns_triplets && binding->prefix->name) { - for (; binding->prefix->name[prefixLen++];) - ; /* prefixLen includes null terminator */ - } - tagNamePtr->localPart = localPart; - tagNamePtr->uriLen = binding->uriLen; - tagNamePtr->prefix = binding->prefix->name; - tagNamePtr->prefixLen = prefixLen; - for (i = 0; localPart[i++];) - ; /* i includes null terminator */ - n = i + binding->uriLen + prefixLen; - if (n > binding->uriAlloc) { - TAG *p; - uri = (XML_Char *)MALLOC((n + EXPAND_SPARE) * sizeof(XML_Char)); - if (!uri) - return XML_ERROR_NO_MEMORY; - binding->uriAlloc = n + EXPAND_SPARE; - memcpy(uri, binding->uri, binding->uriLen * sizeof(XML_Char)); - for (p = tagStack; p; p = p->parent) - if (p->name.str == binding->uri) - p->name.str = uri; - FREE(binding->uri); - binding->uri = uri; - } - /* if namespaceSeparator != '\0' then uri includes it already */ - uri = binding->uri + binding->uriLen; - memcpy(uri, localPart, i * sizeof(XML_Char)); - /* we always have a namespace separator between localPart and prefix */ - if (prefixLen) { - uri += i - 1; - *uri = namespaceSeparator; /* replace null terminator */ - memcpy(uri + 1, binding->prefix->name, prefixLen * sizeof(XML_Char)); - } - tagNamePtr->str = binding->uri; - return XML_ERROR_NONE; -} - -/* addBinding() overwrites the value of prefix->binding without checking. - Therefore one must keep track of the old value outside of addBinding(). -*/ -static enum XML_Error -addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, - const XML_Char *uri, BINDING **bindingsPtr) -{ - static const XML_Char xmlNamespace[] = { - ASCII_h, ASCII_t, ASCII_t, ASCII_p, ASCII_COLON, ASCII_SLASH, ASCII_SLASH, - ASCII_w, ASCII_w, ASCII_w, ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD, - ASCII_o, ASCII_r, ASCII_g, ASCII_SLASH, ASCII_X, ASCII_M, ASCII_L, - ASCII_SLASH, ASCII_1, ASCII_9, ASCII_9, ASCII_8, ASCII_SLASH, - ASCII_n, ASCII_a, ASCII_m, ASCII_e, ASCII_s, ASCII_p, ASCII_a, ASCII_c, - ASCII_e, '\0' - }; - static const int xmlLen = - (int)sizeof(xmlNamespace)/sizeof(XML_Char) - 1; - static const XML_Char xmlnsNamespace[] = { - ASCII_h, ASCII_t, ASCII_t, ASCII_p, ASCII_COLON, ASCII_SLASH, ASCII_SLASH, - ASCII_w, ASCII_w, ASCII_w, ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD, - ASCII_o, ASCII_r, ASCII_g, ASCII_SLASH, ASCII_2, ASCII_0, ASCII_0, - ASCII_0, ASCII_SLASH, ASCII_x, ASCII_m, ASCII_l, ASCII_n, ASCII_s, - ASCII_SLASH, '\0' - }; - static const int xmlnsLen = - (int)sizeof(xmlnsNamespace)/sizeof(XML_Char) - 1; - - XML_Bool mustBeXML = XML_FALSE; - XML_Bool isXML = XML_TRUE; - XML_Bool isXMLNS = XML_TRUE; - - BINDING *b; - int len; - - /* empty URI is only valid for default namespace per XML NS 1.0 (not 1.1) */ - if (*uri == XML_T('\0') && prefix->name) - return XML_ERROR_UNDECLARING_PREFIX; - - if (prefix->name - && prefix->name[0] == XML_T(ASCII_x) - && prefix->name[1] == XML_T(ASCII_m) - && prefix->name[2] == XML_T(ASCII_l)) { - - /* Not allowed to bind xmlns */ - if (prefix->name[3] == XML_T(ASCII_n) - && prefix->name[4] == XML_T(ASCII_s) - && prefix->name[5] == XML_T('\0')) - return XML_ERROR_RESERVED_PREFIX_XMLNS; - - if (prefix->name[3] == XML_T('\0')) - mustBeXML = XML_TRUE; - } - - for (len = 0; uri[len]; len++) { - if (isXML && (len > xmlLen || uri[len] != xmlNamespace[len])) - isXML = XML_FALSE; - - if (!mustBeXML && isXMLNS - && (len > xmlnsLen || uri[len] != xmlnsNamespace[len])) - isXMLNS = XML_FALSE; - } - isXML = isXML && len == xmlLen; - isXMLNS = isXMLNS && len == xmlnsLen; - - if (mustBeXML != isXML) - return mustBeXML ? XML_ERROR_RESERVED_PREFIX_XML - : XML_ERROR_RESERVED_NAMESPACE_URI; - - if (isXMLNS) - return XML_ERROR_RESERVED_NAMESPACE_URI; - - if (namespaceSeparator) - len++; - if (freeBindingList) { - b = freeBindingList; - if (len > b->uriAlloc) { - XML_Char *temp = (XML_Char *)REALLOC(b->uri, - sizeof(XML_Char) * (len + EXPAND_SPARE)); - if (temp == NULL) - return XML_ERROR_NO_MEMORY; - b->uri = temp; - b->uriAlloc = len + EXPAND_SPARE; - } - freeBindingList = b->nextTagBinding; - } - else { - b = (BINDING *)MALLOC(sizeof(BINDING)); - if (!b) - return XML_ERROR_NO_MEMORY; - b->uri = (XML_Char *)MALLOC(sizeof(XML_Char) * (len + EXPAND_SPARE)); - if (!b->uri) { - FREE(b); - return XML_ERROR_NO_MEMORY; - } - b->uriAlloc = len + EXPAND_SPARE; - } - b->uriLen = len; - memcpy(b->uri, uri, len * sizeof(XML_Char)); - if (namespaceSeparator) - b->uri[len - 1] = namespaceSeparator; - b->prefix = prefix; - b->attId = attId; - b->prevPrefixBinding = prefix->binding; - /* NULL binding when default namespace undeclared */ - if (*uri == XML_T('\0') && prefix == &_dtd->defaultPrefix) - prefix->binding = NULL; - else - prefix->binding = b; - b->nextTagBinding = *bindingsPtr; - *bindingsPtr = b; - /* if attId == NULL then we are not starting a namespace scope */ - if (attId && startNamespaceDeclHandler) - startNamespaceDeclHandler(handlerArg, prefix->name, - prefix->binding ? uri : 0); - return XML_ERROR_NONE; -} - -/* The idea here is to avoid using stack for each CDATA section when - the whole file is parsed with one call. -*/ -static enum XML_Error PTRCALL -cdataSectionProcessor(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - enum XML_Error result = doCdataSection(parser, encoding, &start, end, - endPtr, (XML_Bool)!ps_finalBuffer); - if (result != XML_ERROR_NONE) - return result; - if (start) { - if (parentParser) { /* we are parsing an external entity */ - processor = externalEntityContentProcessor; - return externalEntityContentProcessor(parser, start, end, endPtr); - } - else { - processor = contentProcessor; - return contentProcessor(parser, start, end, endPtr); - } - } - return result; -} - -/* startPtr gets set to non-null if the section is closed, and to null if - the section is not yet closed. -*/ -static enum XML_Error -doCdataSection(XML_Parser parser, - const ENCODING *enc, - const char **startPtr, - const char *end, - const char **nextPtr, - XML_Bool haveMore) -{ - const char *s = *startPtr; - const char **eventPP; - const char **eventEndPP; - if (enc == encoding) { - eventPP = &eventPtr; - *eventPP = s; - eventEndPP = &eventEndPtr; - } - else { - eventPP = &(openInternalEntities->internalEventPtr); - eventEndPP = &(openInternalEntities->internalEventEndPtr); - } - *eventPP = s; - *startPtr = NULL; - - for (;;) { - const char *next; - int tok = XmlCdataSectionTok(enc, s, end, &next); - *eventEndPP = next; - switch (tok) { - case XML_TOK_CDATA_SECT_CLOSE: - if (endCdataSectionHandler) - endCdataSectionHandler(handlerArg); -#if 0 - /* see comment under XML_TOK_CDATA_SECT_OPEN */ - else if (characterDataHandler) - characterDataHandler(handlerArg, dataBuf, 0); -#endif - else if (defaultHandler) - reportDefault(parser, enc, s, next); - *startPtr = next; - *nextPtr = next; - if (ps_parsing == XML_FINISHED) - return XML_ERROR_ABORTED; - else - return XML_ERROR_NONE; - case XML_TOK_DATA_NEWLINE: - if (characterDataHandler) { - XML_Char c = 0xA; - characterDataHandler(handlerArg, &c, 1); - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - case XML_TOK_DATA_CHARS: - { - XML_CharacterDataHandler charDataHandler = characterDataHandler; - if (charDataHandler) { - if (MUST_CONVERT(enc, s)) { - for (;;) { - ICHAR *dataPtr = (ICHAR *)dataBuf; - XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd); - *eventEndPP = next; - charDataHandler(handlerArg, dataBuf, - (int)(dataPtr - (ICHAR *)dataBuf)); - if (s == next) - break; - *eventPP = s; - } - } - else - charDataHandler(handlerArg, - (XML_Char *)s, - (int)((XML_Char *)next - (XML_Char *)s)); - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - } - break; - case XML_TOK_INVALID: - *eventPP = next; - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_PARTIAL_CHAR: - if (haveMore) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_PARTIAL_CHAR; - case XML_TOK_PARTIAL: - case XML_TOK_NONE: - if (haveMore) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_UNCLOSED_CDATA_SECTION; - default: - *eventPP = next; - return XML_ERROR_UNEXPECTED_STATE; - } - - *eventPP = s = next; - switch (ps_parsing) { - case XML_SUSPENDED: - *nextPtr = next; - return XML_ERROR_NONE; - case XML_FINISHED: - return XML_ERROR_ABORTED; - default: ; - } - } - /* not reached */ -} - -#ifdef XML_DTD - -/* The idea here is to avoid using stack for each IGNORE section when - the whole file is parsed with one call. -*/ -static enum XML_Error PTRCALL -ignoreSectionProcessor(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - enum XML_Error result = doIgnoreSection(parser, encoding, &start, end, - endPtr, (XML_Bool)!ps_finalBuffer); - if (result != XML_ERROR_NONE) - return result; - if (start) { - processor = prologProcessor; - return prologProcessor(parser, start, end, endPtr); - } - return result; -} - -/* startPtr gets set to non-null is the section is closed, and to null - if the section is not yet closed. -*/ -static enum XML_Error -doIgnoreSection(XML_Parser parser, - const ENCODING *enc, - const char **startPtr, - const char *end, - const char **nextPtr, - XML_Bool haveMore) -{ - const char *next; - int tok; - const char *s = *startPtr; - const char **eventPP; - const char **eventEndPP; - if (enc == encoding) { - eventPP = &eventPtr; - *eventPP = s; - eventEndPP = &eventEndPtr; - } - else { - eventPP = &(openInternalEntities->internalEventPtr); - eventEndPP = &(openInternalEntities->internalEventEndPtr); - } - *eventPP = s; - *startPtr = NULL; - tok = XmlIgnoreSectionTok(enc, s, end, &next); - *eventEndPP = next; - switch (tok) { - case XML_TOK_IGNORE_SECT: - if (defaultHandler) - reportDefault(parser, enc, s, next); - *startPtr = next; - *nextPtr = next; - if (ps_parsing == XML_FINISHED) - return XML_ERROR_ABORTED; - else - return XML_ERROR_NONE; - case XML_TOK_INVALID: - *eventPP = next; - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_PARTIAL_CHAR: - if (haveMore) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_PARTIAL_CHAR; - case XML_TOK_PARTIAL: - case XML_TOK_NONE: - if (haveMore) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_SYNTAX; /* XML_ERROR_UNCLOSED_IGNORE_SECTION */ - default: - *eventPP = next; - return XML_ERROR_UNEXPECTED_STATE; - } - /* not reached */ -} - -#endif /* XML_DTD */ - -static enum XML_Error -initializeEncoding(XML_Parser parser) -{ - const char *s; -#ifdef XML_UNICODE - char encodingBuf[128]; - if (!protocolEncodingName) - s = NULL; - else { - int i; - for (i = 0; protocolEncodingName[i]; i++) { - if (i == sizeof(encodingBuf) - 1 - || (protocolEncodingName[i] & ~0x7f) != 0) { - encodingBuf[0] = '\0'; - break; - } - encodingBuf[i] = (char)protocolEncodingName[i]; - } - encodingBuf[i] = '\0'; - s = encodingBuf; - } -#else - s = protocolEncodingName; -#endif - if ((ns ? XmlInitEncodingNS : XmlInitEncoding)(&initEncoding, &encoding, s)) - return XML_ERROR_NONE; - return handleUnknownEncoding(parser, protocolEncodingName); -} - -static enum XML_Error -processXmlDecl(XML_Parser parser, int isGeneralTextEntity, - const char *s, const char *next) -{ - const char *encodingName = NULL; - const XML_Char *storedEncName = NULL; - const ENCODING *newEncoding = NULL; - const char *version = NULL; - const char *versionend; - const XML_Char *storedversion = NULL; - int standalone = -1; - if (!(ns - ? XmlParseXmlDeclNS - : XmlParseXmlDecl)(isGeneralTextEntity, - encoding, - s, - next, - &eventPtr, - &version, - &versionend, - &encodingName, - &newEncoding, - &standalone)) { - if (isGeneralTextEntity) - return XML_ERROR_TEXT_DECL; - else - return XML_ERROR_XML_DECL; - } - if (!isGeneralTextEntity && standalone == 1) { - _dtd->standalone = XML_TRUE; -#ifdef XML_DTD - if (paramEntityParsing == XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE) - paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER; -#endif /* XML_DTD */ - } - if (xmlDeclHandler) { - if (encodingName != NULL) { - storedEncName = poolStoreString(&temp2Pool, - encoding, - encodingName, - encodingName - + XmlNameLength(encoding, encodingName)); - if (!storedEncName) - return XML_ERROR_NO_MEMORY; - poolFinish(&temp2Pool); - } - if (version) { - storedversion = poolStoreString(&temp2Pool, - encoding, - version, - versionend - encoding->minBytesPerChar); - if (!storedversion) - return XML_ERROR_NO_MEMORY; - } - xmlDeclHandler(handlerArg, storedversion, storedEncName, standalone); - } - else if (defaultHandler) - reportDefault(parser, encoding, s, next); - if (protocolEncodingName == NULL) { - if (newEncoding) { - if (newEncoding->minBytesPerChar != encoding->minBytesPerChar) { - eventPtr = encodingName; - return XML_ERROR_INCORRECT_ENCODING; - } - encoding = newEncoding; - } - else if (encodingName) { - enum XML_Error result; - if (!storedEncName) { - storedEncName = poolStoreString( - &temp2Pool, encoding, encodingName, - encodingName + XmlNameLength(encoding, encodingName)); - if (!storedEncName) - return XML_ERROR_NO_MEMORY; - } - result = handleUnknownEncoding(parser, storedEncName); - poolClear(&temp2Pool); - if (result == XML_ERROR_UNKNOWN_ENCODING) - eventPtr = encodingName; - return result; - } - } - - if (storedEncName || storedversion) - poolClear(&temp2Pool); - - return XML_ERROR_NONE; -} - -static enum XML_Error -handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName) -{ - if (unknownEncodingHandler) { - XML_Encoding info; - int i; - for (i = 0; i < 256; i++) - info.map[i] = -1; - info.convert = NULL; - info.data = NULL; - info.release = NULL; - if (unknownEncodingHandler(unknownEncodingHandlerData, encodingName, - &info)) { - ENCODING *enc; - unknownEncodingMem = MALLOC(XmlSizeOfUnknownEncoding()); - if (!unknownEncodingMem) { - if (info.release) - info.release(info.data); - return XML_ERROR_NO_MEMORY; - } - enc = (ns - ? XmlInitUnknownEncodingNS - : XmlInitUnknownEncoding)(unknownEncodingMem, - info.map, - info.convert, - info.data); - if (enc) { - unknownEncodingData = info.data; - unknownEncodingRelease = info.release; - encoding = enc; - return XML_ERROR_NONE; - } - } - if (info.release != NULL) - info.release(info.data); - } - return XML_ERROR_UNKNOWN_ENCODING; -} - -static enum XML_Error PTRCALL -prologInitProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ - enum XML_Error result = initializeEncoding(parser); - if (result != XML_ERROR_NONE) - return result; - processor = prologProcessor; - return prologProcessor(parser, s, end, nextPtr); -} - -#ifdef XML_DTD - -static enum XML_Error PTRCALL -externalParEntInitProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ - enum XML_Error result = initializeEncoding(parser); - if (result != XML_ERROR_NONE) - return result; - - /* we know now that XML_Parse(Buffer) has been called, - so we consider the external parameter entity read */ - _dtd->paramEntityRead = XML_TRUE; - - if (prologState.inEntityValue) { - processor = entityValueInitProcessor; - return entityValueInitProcessor(parser, s, end, nextPtr); - } - else { - processor = externalParEntProcessor; - return externalParEntProcessor(parser, s, end, nextPtr); - } -} - -static enum XML_Error PTRCALL -entityValueInitProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ - int tok; - const char *start = s; - const char *next = start; - eventPtr = start; - - for (;;) { - tok = XmlPrologTok(encoding, start, end, &next); - eventEndPtr = next; - if (tok <= 0) { - if (!ps_finalBuffer && tok != XML_TOK_INVALID) { - *nextPtr = s; - return XML_ERROR_NONE; - } - switch (tok) { - case XML_TOK_INVALID: - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_PARTIAL: - return XML_ERROR_UNCLOSED_TOKEN; - case XML_TOK_PARTIAL_CHAR: - return XML_ERROR_PARTIAL_CHAR; - case XML_TOK_NONE: /* start == end */ - default: - break; - } - /* found end of entity value - can store it now */ - return storeEntityValue(parser, encoding, s, end); - } - else if (tok == XML_TOK_XML_DECL) { - enum XML_Error result; - result = processXmlDecl(parser, 0, start, next); - if (result != XML_ERROR_NONE) - return result; - switch (ps_parsing) { - case XML_SUSPENDED: - *nextPtr = next; - return XML_ERROR_NONE; - case XML_FINISHED: - return XML_ERROR_ABORTED; - default: - *nextPtr = next; - } - /* stop scanning for text declaration - we found one */ - processor = entityValueProcessor; - return entityValueProcessor(parser, next, end, nextPtr); - } - /* If we are at the end of the buffer, this would cause XmlPrologTok to - return XML_TOK_NONE on the next call, which would then cause the - function to exit with *nextPtr set to s - that is what we want for other - tokens, but not for the BOM - we would rather like to skip it; - then, when this routine is entered the next time, XmlPrologTok will - return XML_TOK_INVALID, since the BOM is still in the buffer - */ - else if (tok == XML_TOK_BOM && next == end && !ps_finalBuffer) { - *nextPtr = next; - return XML_ERROR_NONE; - } - start = next; - eventPtr = start; - } -} - -static enum XML_Error PTRCALL -externalParEntProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ - const char *next = s; - int tok; - - tok = XmlPrologTok(encoding, s, end, &next); - if (tok <= 0) { - if (!ps_finalBuffer && tok != XML_TOK_INVALID) { - *nextPtr = s; - return XML_ERROR_NONE; - } - switch (tok) { - case XML_TOK_INVALID: - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_PARTIAL: - return XML_ERROR_UNCLOSED_TOKEN; - case XML_TOK_PARTIAL_CHAR: - return XML_ERROR_PARTIAL_CHAR; - case XML_TOK_NONE: /* start == end */ - default: - break; - } - } - /* This would cause the next stage, i.e. doProlog to be passed XML_TOK_BOM. - However, when parsing an external subset, doProlog will not accept a BOM - as valid, and report a syntax error, so we have to skip the BOM - */ - else if (tok == XML_TOK_BOM) { - s = next; - tok = XmlPrologTok(encoding, s, end, &next); - } - - processor = prologProcessor; - return doProlog(parser, encoding, s, end, tok, next, - nextPtr, (XML_Bool)!ps_finalBuffer); -} - -static enum XML_Error PTRCALL -entityValueProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ - const char *start = s; - const char *next = s; - const ENCODING *enc = encoding; - int tok; - - for (;;) { - tok = XmlPrologTok(enc, start, end, &next); - if (tok <= 0) { - if (!ps_finalBuffer && tok != XML_TOK_INVALID) { - *nextPtr = s; - return XML_ERROR_NONE; - } - switch (tok) { - case XML_TOK_INVALID: - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_PARTIAL: - return XML_ERROR_UNCLOSED_TOKEN; - case XML_TOK_PARTIAL_CHAR: - return XML_ERROR_PARTIAL_CHAR; - case XML_TOK_NONE: /* start == end */ - default: - break; - } - /* found end of entity value - can store it now */ - return storeEntityValue(parser, enc, s, end); - } - start = next; - } -} - -#endif /* XML_DTD */ - -static enum XML_Error PTRCALL -prologProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ - const char *next = s; - int tok = XmlPrologTok(encoding, s, end, &next); - return doProlog(parser, encoding, s, end, tok, next, - nextPtr, (XML_Bool)!ps_finalBuffer); -} - -static enum XML_Error -doProlog(XML_Parser parser, - const ENCODING *enc, - const char *s, - const char *end, - int tok, - const char *next, - const char **nextPtr, - XML_Bool haveMore) -{ -#ifdef XML_DTD - static const XML_Char externalSubsetName[] = { ASCII_HASH , '\0' }; -#endif /* XML_DTD */ - static const XML_Char atypeCDATA[] = - { ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; - static const XML_Char atypeID[] = { ASCII_I, ASCII_D, '\0' }; - static const XML_Char atypeIDREF[] = - { ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, '\0' }; - static const XML_Char atypeIDREFS[] = - { ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, ASCII_S, '\0' }; - static const XML_Char atypeENTITY[] = - { ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_Y, '\0' }; - static const XML_Char atypeENTITIES[] = { ASCII_E, ASCII_N, - ASCII_T, ASCII_I, ASCII_T, ASCII_I, ASCII_E, ASCII_S, '\0' }; - static const XML_Char atypeNMTOKEN[] = { - ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, '\0' }; - static const XML_Char atypeNMTOKENS[] = { ASCII_N, ASCII_M, ASCII_T, - ASCII_O, ASCII_K, ASCII_E, ASCII_N, ASCII_S, '\0' }; - static const XML_Char notationPrefix[] = { ASCII_N, ASCII_O, ASCII_T, - ASCII_A, ASCII_T, ASCII_I, ASCII_O, ASCII_N, ASCII_LPAREN, '\0' }; - static const XML_Char enumValueSep[] = { ASCII_PIPE, '\0' }; - static const XML_Char enumValueStart[] = { ASCII_LPAREN, '\0' }; - - /* save one level of indirection */ - DTD * const dtd = _dtd; - - const char **eventPP; - const char **eventEndPP; - enum XML_Content_Quant quant; - - if (enc == encoding) { - eventPP = &eventPtr; - eventEndPP = &eventEndPtr; - } - else { - eventPP = &(openInternalEntities->internalEventPtr); - eventEndPP = &(openInternalEntities->internalEventEndPtr); - } - - for (;;) { - int role; - XML_Bool handleDefault = XML_TRUE; - *eventPP = s; - *eventEndPP = next; - if (tok <= 0) { - if (haveMore && tok != XML_TOK_INVALID) { - *nextPtr = s; - return XML_ERROR_NONE; - } - switch (tok) { - case XML_TOK_INVALID: - *eventPP = next; - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_PARTIAL: - return XML_ERROR_UNCLOSED_TOKEN; - case XML_TOK_PARTIAL_CHAR: - return XML_ERROR_PARTIAL_CHAR; - case -XML_TOK_PROLOG_S: - tok = -tok; - break; - case XML_TOK_NONE: -#ifdef XML_DTD - /* for internal PE NOT referenced between declarations */ - if (enc != encoding && !openInternalEntities->betweenDecl) { - *nextPtr = s; - return XML_ERROR_NONE; - } - /* WFC: PE Between Declarations - must check that PE contains - complete markup, not only for external PEs, but also for - internal PEs if the reference occurs between declarations. - */ - if (isParamEntity || enc != encoding) { - if (XmlTokenRole(&prologState, XML_TOK_NONE, end, end, enc) - == XML_ROLE_ERROR) - return XML_ERROR_INCOMPLETE_PE; - *nextPtr = s; - return XML_ERROR_NONE; - } -#endif /* XML_DTD */ - return XML_ERROR_NO_ELEMENTS; - default: - tok = -tok; - next = end; - break; - } - } - role = XmlTokenRole(&prologState, tok, s, next, enc); - switch (role) { - case XML_ROLE_XML_DECL: - { - enum XML_Error result = processXmlDecl(parser, 0, s, next); - if (result != XML_ERROR_NONE) - return result; - enc = encoding; - handleDefault = XML_FALSE; - } - break; - case XML_ROLE_DOCTYPE_NAME: - if (startDoctypeDeclHandler) { - doctypeName = poolStoreString(&tempPool, enc, s, next); - if (!doctypeName) - return XML_ERROR_NO_MEMORY; - poolFinish(&tempPool); - doctypePubid = NULL; - handleDefault = XML_FALSE; - } - doctypeSysid = NULL; /* always initialize to NULL */ - break; - case XML_ROLE_DOCTYPE_INTERNAL_SUBSET: - if (startDoctypeDeclHandler) { - startDoctypeDeclHandler(handlerArg, doctypeName, doctypeSysid, - doctypePubid, 1); - doctypeName = NULL; - poolClear(&tempPool); - handleDefault = XML_FALSE; - } - break; -#ifdef XML_DTD - case XML_ROLE_TEXT_DECL: - { - enum XML_Error result = processXmlDecl(parser, 1, s, next); - if (result != XML_ERROR_NONE) - return result; - enc = encoding; - handleDefault = XML_FALSE; - } - break; -#endif /* XML_DTD */ - case XML_ROLE_DOCTYPE_PUBLIC_ID: -#ifdef XML_DTD - useForeignDTD = XML_FALSE; - declEntity = (ENTITY *)lookup(parser, - &dtd->paramEntities, - externalSubsetName, - sizeof(ENTITY)); - if (!declEntity) - return XML_ERROR_NO_MEMORY; -#endif /* XML_DTD */ - dtd->hasParamEntityRefs = XML_TRUE; - if (startDoctypeDeclHandler) { - XML_Char *pubId; - if (!XmlIsPublicId(enc, s, next, eventPP)) - return XML_ERROR_PUBLICID; - pubId = poolStoreString(&tempPool, enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!pubId) - return XML_ERROR_NO_MEMORY; - normalizePublicId(pubId); - poolFinish(&tempPool); - doctypePubid = pubId; - handleDefault = XML_FALSE; - goto alreadyChecked; - } - /* fall through */ - case XML_ROLE_ENTITY_PUBLIC_ID: - if (!XmlIsPublicId(enc, s, next, eventPP)) - return XML_ERROR_PUBLICID; - alreadyChecked: - if (dtd->keepProcessing && declEntity) { - XML_Char *tem = poolStoreString(&dtd->pool, - enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!tem) - return XML_ERROR_NO_MEMORY; - normalizePublicId(tem); - declEntity->publicId = tem; - poolFinish(&dtd->pool); - if (entityDeclHandler) - handleDefault = XML_FALSE; - } - break; - case XML_ROLE_DOCTYPE_CLOSE: - if (doctypeName) { - startDoctypeDeclHandler(handlerArg, doctypeName, - doctypeSysid, doctypePubid, 0); - poolClear(&tempPool); - handleDefault = XML_FALSE; - } - /* doctypeSysid will be non-NULL in the case of a previous - XML_ROLE_DOCTYPE_SYSTEM_ID, even if startDoctypeDeclHandler - was not set, indicating an external subset - */ -#ifdef XML_DTD - if (doctypeSysid || useForeignDTD) { - XML_Bool hadParamEntityRefs = dtd->hasParamEntityRefs; - dtd->hasParamEntityRefs = XML_TRUE; - if (paramEntityParsing && externalEntityRefHandler) { - ENTITY *entity = (ENTITY *)lookup(parser, - &dtd->paramEntities, - externalSubsetName, - sizeof(ENTITY)); - if (!entity) - return XML_ERROR_NO_MEMORY; - if (useForeignDTD) - entity->base = curBase; - dtd->paramEntityRead = XML_FALSE; - if (!externalEntityRefHandler(externalEntityRefHandlerArg, - 0, - entity->base, - entity->systemId, - entity->publicId)) - return XML_ERROR_EXTERNAL_ENTITY_HANDLING; - if (dtd->paramEntityRead) { - if (!dtd->standalone && - notStandaloneHandler && - !notStandaloneHandler(handlerArg)) - return XML_ERROR_NOT_STANDALONE; - } - /* if we didn't read the foreign DTD then this means that there - is no external subset and we must reset dtd->hasParamEntityRefs - */ - else if (!doctypeSysid) - dtd->hasParamEntityRefs = hadParamEntityRefs; - /* end of DTD - no need to update dtd->keepProcessing */ - } - useForeignDTD = XML_FALSE; - } -#endif /* XML_DTD */ - if (endDoctypeDeclHandler) { - endDoctypeDeclHandler(handlerArg); - handleDefault = XML_FALSE; - } - break; - case XML_ROLE_INSTANCE_START: -#ifdef XML_DTD - /* if there is no DOCTYPE declaration then now is the - last chance to read the foreign DTD - */ - if (useForeignDTD) { - XML_Bool hadParamEntityRefs = dtd->hasParamEntityRefs; - dtd->hasParamEntityRefs = XML_TRUE; - if (paramEntityParsing && externalEntityRefHandler) { - ENTITY *entity = (ENTITY *)lookup(parser, &dtd->paramEntities, - externalSubsetName, - sizeof(ENTITY)); - if (!entity) - return XML_ERROR_NO_MEMORY; - entity->base = curBase; - dtd->paramEntityRead = XML_FALSE; - if (!externalEntityRefHandler(externalEntityRefHandlerArg, - 0, - entity->base, - entity->systemId, - entity->publicId)) - return XML_ERROR_EXTERNAL_ENTITY_HANDLING; - if (dtd->paramEntityRead) { - if (!dtd->standalone && - notStandaloneHandler && - !notStandaloneHandler(handlerArg)) - return XML_ERROR_NOT_STANDALONE; - } - /* if we didn't read the foreign DTD then this means that there - is no external subset and we must reset dtd->hasParamEntityRefs - */ - else - dtd->hasParamEntityRefs = hadParamEntityRefs; - /* end of DTD - no need to update dtd->keepProcessing */ - } - } -#endif /* XML_DTD */ - processor = contentProcessor; - return contentProcessor(parser, s, end, nextPtr); - case XML_ROLE_ATTLIST_ELEMENT_NAME: - declElementType = getElementType(parser, enc, s, next); - if (!declElementType) - return XML_ERROR_NO_MEMORY; - goto checkAttListDeclHandler; - case XML_ROLE_ATTRIBUTE_NAME: - declAttributeId = getAttributeId(parser, enc, s, next); - if (!declAttributeId) - return XML_ERROR_NO_MEMORY; - declAttributeIsCdata = XML_FALSE; - declAttributeType = NULL; - declAttributeIsId = XML_FALSE; - goto checkAttListDeclHandler; - case XML_ROLE_ATTRIBUTE_TYPE_CDATA: - declAttributeIsCdata = XML_TRUE; - declAttributeType = atypeCDATA; - goto checkAttListDeclHandler; - case XML_ROLE_ATTRIBUTE_TYPE_ID: - declAttributeIsId = XML_TRUE; - declAttributeType = atypeID; - goto checkAttListDeclHandler; - case XML_ROLE_ATTRIBUTE_TYPE_IDREF: - declAttributeType = atypeIDREF; - goto checkAttListDeclHandler; - case XML_ROLE_ATTRIBUTE_TYPE_IDREFS: - declAttributeType = atypeIDREFS; - goto checkAttListDeclHandler; - case XML_ROLE_ATTRIBUTE_TYPE_ENTITY: - declAttributeType = atypeENTITY; - goto checkAttListDeclHandler; - case XML_ROLE_ATTRIBUTE_TYPE_ENTITIES: - declAttributeType = atypeENTITIES; - goto checkAttListDeclHandler; - case XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN: - declAttributeType = atypeNMTOKEN; - goto checkAttListDeclHandler; - case XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS: - declAttributeType = atypeNMTOKENS; - checkAttListDeclHandler: - if (dtd->keepProcessing && attlistDeclHandler) - handleDefault = XML_FALSE; - break; - case XML_ROLE_ATTRIBUTE_ENUM_VALUE: - case XML_ROLE_ATTRIBUTE_NOTATION_VALUE: - if (dtd->keepProcessing && attlistDeclHandler) { - const XML_Char *prefix; - if (declAttributeType) { - prefix = enumValueSep; - } - else { - prefix = (role == XML_ROLE_ATTRIBUTE_NOTATION_VALUE - ? notationPrefix - : enumValueStart); - } - if (!poolAppendString(&tempPool, prefix)) - return XML_ERROR_NO_MEMORY; - if (!poolAppend(&tempPool, enc, s, next)) - return XML_ERROR_NO_MEMORY; - declAttributeType = tempPool.start; - handleDefault = XML_FALSE; - } - break; - case XML_ROLE_IMPLIED_ATTRIBUTE_VALUE: - case XML_ROLE_REQUIRED_ATTRIBUTE_VALUE: - if (dtd->keepProcessing) { - if (!defineAttribute(declElementType, declAttributeId, - declAttributeIsCdata, declAttributeIsId, - 0, parser)) - return XML_ERROR_NO_MEMORY; - if (attlistDeclHandler && declAttributeType) { - if (*declAttributeType == XML_T(ASCII_LPAREN) - || (*declAttributeType == XML_T(ASCII_N) - && declAttributeType[1] == XML_T(ASCII_O))) { - /* Enumerated or Notation type */ - if (!poolAppendChar(&tempPool, XML_T(ASCII_RPAREN)) - || !poolAppendChar(&tempPool, XML_T('\0'))) - return XML_ERROR_NO_MEMORY; - declAttributeType = tempPool.start; - poolFinish(&tempPool); - } - *eventEndPP = s; - attlistDeclHandler(handlerArg, declElementType->name, - declAttributeId->name, declAttributeType, - 0, role == XML_ROLE_REQUIRED_ATTRIBUTE_VALUE); - poolClear(&tempPool); - handleDefault = XML_FALSE; - } - } - break; - case XML_ROLE_DEFAULT_ATTRIBUTE_VALUE: - case XML_ROLE_FIXED_ATTRIBUTE_VALUE: - if (dtd->keepProcessing) { - const XML_Char *attVal; - enum XML_Error result = - storeAttributeValue(parser, enc, declAttributeIsCdata, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar, - &dtd->pool); - if (result) - return result; - attVal = poolStart(&dtd->pool); - poolFinish(&dtd->pool); - /* ID attributes aren't allowed to have a default */ - if (!defineAttribute(declElementType, declAttributeId, - declAttributeIsCdata, XML_FALSE, attVal, parser)) - return XML_ERROR_NO_MEMORY; - if (attlistDeclHandler && declAttributeType) { - if (*declAttributeType == XML_T(ASCII_LPAREN) - || (*declAttributeType == XML_T(ASCII_N) - && declAttributeType[1] == XML_T(ASCII_O))) { - /* Enumerated or Notation type */ - if (!poolAppendChar(&tempPool, XML_T(ASCII_RPAREN)) - || !poolAppendChar(&tempPool, XML_T('\0'))) - return XML_ERROR_NO_MEMORY; - declAttributeType = tempPool.start; - poolFinish(&tempPool); - } - *eventEndPP = s; - attlistDeclHandler(handlerArg, declElementType->name, - declAttributeId->name, declAttributeType, - attVal, - role == XML_ROLE_FIXED_ATTRIBUTE_VALUE); - poolClear(&tempPool); - handleDefault = XML_FALSE; - } - } - break; - case XML_ROLE_ENTITY_VALUE: - if (dtd->keepProcessing) { - enum XML_Error result = storeEntityValue(parser, enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (declEntity) { - declEntity->textPtr = poolStart(&dtd->entityValuePool); - declEntity->textLen = (int)(poolLength(&dtd->entityValuePool)); - poolFinish(&dtd->entityValuePool); - if (entityDeclHandler) { - *eventEndPP = s; - entityDeclHandler(handlerArg, - declEntity->name, - declEntity->is_param, - declEntity->textPtr, - declEntity->textLen, - curBase, 0, 0, 0); - handleDefault = XML_FALSE; - } - } - else - poolDiscard(&dtd->entityValuePool); - if (result != XML_ERROR_NONE) - return result; - } - break; - case XML_ROLE_DOCTYPE_SYSTEM_ID: -#ifdef XML_DTD - useForeignDTD = XML_FALSE; -#endif /* XML_DTD */ - dtd->hasParamEntityRefs = XML_TRUE; - if (startDoctypeDeclHandler) { - doctypeSysid = poolStoreString(&tempPool, enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (doctypeSysid == NULL) - return XML_ERROR_NO_MEMORY; - poolFinish(&tempPool); - handleDefault = XML_FALSE; - } -#ifdef XML_DTD - else - /* use externalSubsetName to make doctypeSysid non-NULL - for the case where no startDoctypeDeclHandler is set */ - doctypeSysid = externalSubsetName; -#endif /* XML_DTD */ - if (!dtd->standalone -#ifdef XML_DTD - && !paramEntityParsing -#endif /* XML_DTD */ - && notStandaloneHandler - && !notStandaloneHandler(handlerArg)) - return XML_ERROR_NOT_STANDALONE; -#ifndef XML_DTD - break; -#else /* XML_DTD */ - if (!declEntity) { - declEntity = (ENTITY *)lookup(parser, - &dtd->paramEntities, - externalSubsetName, - sizeof(ENTITY)); - if (!declEntity) - return XML_ERROR_NO_MEMORY; - declEntity->publicId = NULL; - } - /* fall through */ -#endif /* XML_DTD */ - case XML_ROLE_ENTITY_SYSTEM_ID: - if (dtd->keepProcessing && declEntity) { - declEntity->systemId = poolStoreString(&dtd->pool, enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!declEntity->systemId) - return XML_ERROR_NO_MEMORY; - declEntity->base = curBase; - poolFinish(&dtd->pool); - if (entityDeclHandler) - handleDefault = XML_FALSE; - } - break; - case XML_ROLE_ENTITY_COMPLETE: - if (dtd->keepProcessing && declEntity && entityDeclHandler) { - *eventEndPP = s; - entityDeclHandler(handlerArg, - declEntity->name, - declEntity->is_param, - 0,0, - declEntity->base, - declEntity->systemId, - declEntity->publicId, - 0); - handleDefault = XML_FALSE; - } - break; - case XML_ROLE_ENTITY_NOTATION_NAME: - if (dtd->keepProcessing && declEntity) { - declEntity->notation = poolStoreString(&dtd->pool, enc, s, next); - if (!declEntity->notation) - return XML_ERROR_NO_MEMORY; - poolFinish(&dtd->pool); - if (unparsedEntityDeclHandler) { - *eventEndPP = s; - unparsedEntityDeclHandler(handlerArg, - declEntity->name, - declEntity->base, - declEntity->systemId, - declEntity->publicId, - declEntity->notation); - handleDefault = XML_FALSE; - } - else if (entityDeclHandler) { - *eventEndPP = s; - entityDeclHandler(handlerArg, - declEntity->name, - 0,0,0, - declEntity->base, - declEntity->systemId, - declEntity->publicId, - declEntity->notation); - handleDefault = XML_FALSE; - } - } - break; - case XML_ROLE_GENERAL_ENTITY_NAME: - { - if (XmlPredefinedEntityName(enc, s, next)) { - declEntity = NULL; - break; - } - if (dtd->keepProcessing) { - const XML_Char *name = poolStoreString(&dtd->pool, enc, s, next); - if (!name) - return XML_ERROR_NO_MEMORY; - declEntity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, - sizeof(ENTITY)); - if (!declEntity) - return XML_ERROR_NO_MEMORY; - if (declEntity->name != name) { - poolDiscard(&dtd->pool); - declEntity = NULL; - } - else { - poolFinish(&dtd->pool); - declEntity->publicId = NULL; - declEntity->is_param = XML_FALSE; - /* if we have a parent parser or are reading an internal parameter - entity, then the entity declaration is not considered "internal" - */ - declEntity->is_internal = !(parentParser || openInternalEntities); - if (entityDeclHandler) - handleDefault = XML_FALSE; - } - } - else { - poolDiscard(&dtd->pool); - declEntity = NULL; - } - } - break; - case XML_ROLE_PARAM_ENTITY_NAME: -#ifdef XML_DTD - if (dtd->keepProcessing) { - const XML_Char *name = poolStoreString(&dtd->pool, enc, s, next); - if (!name) - return XML_ERROR_NO_MEMORY; - declEntity = (ENTITY *)lookup(parser, &dtd->paramEntities, - name, sizeof(ENTITY)); - if (!declEntity) - return XML_ERROR_NO_MEMORY; - if (declEntity->name != name) { - poolDiscard(&dtd->pool); - declEntity = NULL; - } - else { - poolFinish(&dtd->pool); - declEntity->publicId = NULL; - declEntity->is_param = XML_TRUE; - /* if we have a parent parser or are reading an internal parameter - entity, then the entity declaration is not considered "internal" - */ - declEntity->is_internal = !(parentParser || openInternalEntities); - if (entityDeclHandler) - handleDefault = XML_FALSE; - } - } - else { - poolDiscard(&dtd->pool); - declEntity = NULL; - } -#else /* not XML_DTD */ - declEntity = NULL; -#endif /* XML_DTD */ - break; - case XML_ROLE_NOTATION_NAME: - declNotationPublicId = NULL; - declNotationName = NULL; - if (notationDeclHandler) { - declNotationName = poolStoreString(&tempPool, enc, s, next); - if (!declNotationName) - return XML_ERROR_NO_MEMORY; - poolFinish(&tempPool); - handleDefault = XML_FALSE; - } - break; - case XML_ROLE_NOTATION_PUBLIC_ID: - if (!XmlIsPublicId(enc, s, next, eventPP)) - return XML_ERROR_PUBLICID; - if (declNotationName) { /* means notationDeclHandler != NULL */ - XML_Char *tem = poolStoreString(&tempPool, - enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!tem) - return XML_ERROR_NO_MEMORY; - normalizePublicId(tem); - declNotationPublicId = tem; - poolFinish(&tempPool); - handleDefault = XML_FALSE; - } - break; - case XML_ROLE_NOTATION_SYSTEM_ID: - if (declNotationName && notationDeclHandler) { - const XML_Char *systemId - = poolStoreString(&tempPool, enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!systemId) - return XML_ERROR_NO_MEMORY; - *eventEndPP = s; - notationDeclHandler(handlerArg, - declNotationName, - curBase, - systemId, - declNotationPublicId); - handleDefault = XML_FALSE; - } - poolClear(&tempPool); - break; - case XML_ROLE_NOTATION_NO_SYSTEM_ID: - if (declNotationPublicId && notationDeclHandler) { - *eventEndPP = s; - notationDeclHandler(handlerArg, - declNotationName, - curBase, - 0, - declNotationPublicId); - handleDefault = XML_FALSE; - } - poolClear(&tempPool); - break; - case XML_ROLE_ERROR: - switch (tok) { - case XML_TOK_PARAM_ENTITY_REF: - /* PE references in internal subset are - not allowed within declarations. */ - return XML_ERROR_PARAM_ENTITY_REF; - case XML_TOK_XML_DECL: - return XML_ERROR_MISPLACED_XML_PI; - default: - return XML_ERROR_SYNTAX; - } -#ifdef XML_DTD - case XML_ROLE_IGNORE_SECT: - { - enum XML_Error result; - if (defaultHandler) - reportDefault(parser, enc, s, next); - handleDefault = XML_FALSE; - result = doIgnoreSection(parser, enc, &next, end, nextPtr, haveMore); - if (result != XML_ERROR_NONE) - return result; - else if (!next) { - processor = ignoreSectionProcessor; - return result; - } - } - break; -#endif /* XML_DTD */ - case XML_ROLE_GROUP_OPEN: - if (prologState.level >= groupSize) { - if (groupSize) { - char *temp = (char *)REALLOC(groupConnector, groupSize *= 2); - if (temp == NULL) - return XML_ERROR_NO_MEMORY; - groupConnector = temp; - if (dtd->scaffIndex) { - int *temp = (int *)REALLOC(dtd->scaffIndex, - groupSize * sizeof(int)); - if (temp == NULL) - return XML_ERROR_NO_MEMORY; - dtd->scaffIndex = temp; - } - } - else { - groupConnector = (char *)MALLOC(groupSize = 32); - if (!groupConnector) - return XML_ERROR_NO_MEMORY; - } - } - groupConnector[prologState.level] = 0; - if (dtd->in_eldecl) { - int myindex = nextScaffoldPart(parser); - if (myindex < 0) - return XML_ERROR_NO_MEMORY; - dtd->scaffIndex[dtd->scaffLevel] = myindex; - dtd->scaffLevel++; - dtd->scaffold[myindex].type = XML_CTYPE_SEQ; - if (elementDeclHandler) - handleDefault = XML_FALSE; - } - break; - case XML_ROLE_GROUP_SEQUENCE: - if (groupConnector[prologState.level] == ASCII_PIPE) - return XML_ERROR_SYNTAX; - groupConnector[prologState.level] = ASCII_COMMA; - if (dtd->in_eldecl && elementDeclHandler) - handleDefault = XML_FALSE; - break; - case XML_ROLE_GROUP_CHOICE: - if (groupConnector[prologState.level] == ASCII_COMMA) - return XML_ERROR_SYNTAX; - if (dtd->in_eldecl - && !groupConnector[prologState.level] - && (dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type - != XML_CTYPE_MIXED) - ) { - dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type - = XML_CTYPE_CHOICE; - if (elementDeclHandler) - handleDefault = XML_FALSE; - } - groupConnector[prologState.level] = ASCII_PIPE; - break; - case XML_ROLE_PARAM_ENTITY_REF: -#ifdef XML_DTD - case XML_ROLE_INNER_PARAM_ENTITY_REF: - dtd->hasParamEntityRefs = XML_TRUE; - if (!paramEntityParsing) - dtd->keepProcessing = dtd->standalone; - else { - const XML_Char *name; - ENTITY *entity; - name = poolStoreString(&dtd->pool, enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!name) - return XML_ERROR_NO_MEMORY; - entity = (ENTITY *)lookup(parser, &dtd->paramEntities, name, 0); - poolDiscard(&dtd->pool); - /* first, determine if a check for an existing declaration is needed; - if yes, check that the entity exists, and that it is internal, - otherwise call the skipped entity handler - */ - if (prologState.documentEntity && - (dtd->standalone - ? !openInternalEntities - : !dtd->hasParamEntityRefs)) { - if (!entity) - return XML_ERROR_UNDEFINED_ENTITY; - else if (!entity->is_internal) - return XML_ERROR_ENTITY_DECLARED_IN_PE; - } - else if (!entity) { - dtd->keepProcessing = dtd->standalone; - /* cannot report skipped entities in declarations */ - if ((role == XML_ROLE_PARAM_ENTITY_REF) && skippedEntityHandler) { - skippedEntityHandler(handlerArg, name, 1); - handleDefault = XML_FALSE; - } - break; - } - if (entity->open) - return XML_ERROR_RECURSIVE_ENTITY_REF; - if (entity->textPtr) { - enum XML_Error result; - XML_Bool betweenDecl = - (role == XML_ROLE_PARAM_ENTITY_REF ? XML_TRUE : XML_FALSE); - result = processInternalEntity(parser, entity, betweenDecl); - if (result != XML_ERROR_NONE) - return result; - handleDefault = XML_FALSE; - break; - } - if (externalEntityRefHandler) { - dtd->paramEntityRead = XML_FALSE; - entity->open = XML_TRUE; - if (!externalEntityRefHandler(externalEntityRefHandlerArg, - 0, - entity->base, - entity->systemId, - entity->publicId)) { - entity->open = XML_FALSE; - return XML_ERROR_EXTERNAL_ENTITY_HANDLING; - } - entity->open = XML_FALSE; - handleDefault = XML_FALSE; - if (!dtd->paramEntityRead) { - dtd->keepProcessing = dtd->standalone; - break; - } - } - else { - dtd->keepProcessing = dtd->standalone; - break; - } - } -#endif /* XML_DTD */ - if (!dtd->standalone && - notStandaloneHandler && - !notStandaloneHandler(handlerArg)) - return XML_ERROR_NOT_STANDALONE; - break; - - /* Element declaration stuff */ - - case XML_ROLE_ELEMENT_NAME: - if (elementDeclHandler) { - declElementType = getElementType(parser, enc, s, next); - if (!declElementType) - return XML_ERROR_NO_MEMORY; - dtd->scaffLevel = 0; - dtd->scaffCount = 0; - dtd->in_eldecl = XML_TRUE; - handleDefault = XML_FALSE; - } - break; - - case XML_ROLE_CONTENT_ANY: - case XML_ROLE_CONTENT_EMPTY: - if (dtd->in_eldecl) { - if (elementDeclHandler) { - XML_Content * content = (XML_Content *) MALLOC(sizeof(XML_Content)); - if (!content) - return XML_ERROR_NO_MEMORY; - content->quant = XML_CQUANT_NONE; - content->name = NULL; - content->numchildren = 0; - content->children = NULL; - content->type = ((role == XML_ROLE_CONTENT_ANY) ? - XML_CTYPE_ANY : - XML_CTYPE_EMPTY); - *eventEndPP = s; - elementDeclHandler(handlerArg, declElementType->name, content); - handleDefault = XML_FALSE; - } - dtd->in_eldecl = XML_FALSE; - } - break; - - case XML_ROLE_CONTENT_PCDATA: - if (dtd->in_eldecl) { - dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type - = XML_CTYPE_MIXED; - if (elementDeclHandler) - handleDefault = XML_FALSE; - } - break; - - case XML_ROLE_CONTENT_ELEMENT: - quant = XML_CQUANT_NONE; - goto elementContent; - case XML_ROLE_CONTENT_ELEMENT_OPT: - quant = XML_CQUANT_OPT; - goto elementContent; - case XML_ROLE_CONTENT_ELEMENT_REP: - quant = XML_CQUANT_REP; - goto elementContent; - case XML_ROLE_CONTENT_ELEMENT_PLUS: - quant = XML_CQUANT_PLUS; - elementContent: - if (dtd->in_eldecl) { - ELEMENT_TYPE *el; - const XML_Char *name; - int nameLen; - const char *nxt = (quant == XML_CQUANT_NONE - ? next - : next - enc->minBytesPerChar); - int myindex = nextScaffoldPart(parser); - if (myindex < 0) - return XML_ERROR_NO_MEMORY; - dtd->scaffold[myindex].type = XML_CTYPE_NAME; - dtd->scaffold[myindex].quant = quant; - el = getElementType(parser, enc, s, nxt); - if (!el) - return XML_ERROR_NO_MEMORY; - name = el->name; - dtd->scaffold[myindex].name = name; - nameLen = 0; - for (; name[nameLen++]; ); - dtd->contentStringLen += nameLen; - if (elementDeclHandler) - handleDefault = XML_FALSE; - } - break; - - case XML_ROLE_GROUP_CLOSE: - quant = XML_CQUANT_NONE; - goto closeGroup; - case XML_ROLE_GROUP_CLOSE_OPT: - quant = XML_CQUANT_OPT; - goto closeGroup; - case XML_ROLE_GROUP_CLOSE_REP: - quant = XML_CQUANT_REP; - goto closeGroup; - case XML_ROLE_GROUP_CLOSE_PLUS: - quant = XML_CQUANT_PLUS; - closeGroup: - if (dtd->in_eldecl) { - if (elementDeclHandler) - handleDefault = XML_FALSE; - dtd->scaffLevel--; - dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel]].quant = quant; - if (dtd->scaffLevel == 0) { - if (!handleDefault) { - XML_Content *model = build_model(parser); - if (!model) - return XML_ERROR_NO_MEMORY; - *eventEndPP = s; - elementDeclHandler(handlerArg, declElementType->name, model); - } - dtd->in_eldecl = XML_FALSE; - dtd->contentStringLen = 0; - } - } - break; - /* End element declaration stuff */ - - case XML_ROLE_PI: - if (!reportProcessingInstruction(parser, enc, s, next)) - return XML_ERROR_NO_MEMORY; - handleDefault = XML_FALSE; - break; - case XML_ROLE_COMMENT: - if (!reportComment(parser, enc, s, next)) - return XML_ERROR_NO_MEMORY; - handleDefault = XML_FALSE; - break; - case XML_ROLE_NONE: - switch (tok) { - case XML_TOK_BOM: - handleDefault = XML_FALSE; - break; - } - break; - case XML_ROLE_DOCTYPE_NONE: - if (startDoctypeDeclHandler) - handleDefault = XML_FALSE; - break; - case XML_ROLE_ENTITY_NONE: - if (dtd->keepProcessing && entityDeclHandler) - handleDefault = XML_FALSE; - break; - case XML_ROLE_NOTATION_NONE: - if (notationDeclHandler) - handleDefault = XML_FALSE; - break; - case XML_ROLE_ATTLIST_NONE: - if (dtd->keepProcessing && attlistDeclHandler) - handleDefault = XML_FALSE; - break; - case XML_ROLE_ELEMENT_NONE: - if (elementDeclHandler) - handleDefault = XML_FALSE; - break; - } /* end of big switch */ - - if (handleDefault && defaultHandler) - reportDefault(parser, enc, s, next); - - switch (ps_parsing) { - case XML_SUSPENDED: - *nextPtr = next; - return XML_ERROR_NONE; - case XML_FINISHED: - return XML_ERROR_ABORTED; - default: - s = next; - tok = XmlPrologTok(enc, s, end, &next); - } - } - /* not reached */ -} - -static enum XML_Error PTRCALL -epilogProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ - processor = epilogProcessor; - eventPtr = s; - for (;;) { - const char *next = NULL; - int tok = XmlPrologTok(encoding, s, end, &next); - eventEndPtr = next; - switch (tok) { - /* report partial linebreak - it might be the last token */ - case -XML_TOK_PROLOG_S: - if (defaultHandler) { - reportDefault(parser, encoding, s, next); - if (ps_parsing == XML_FINISHED) - return XML_ERROR_ABORTED; - } - *nextPtr = next; - return XML_ERROR_NONE; - case XML_TOK_NONE: - *nextPtr = s; - return XML_ERROR_NONE; - case XML_TOK_PROLOG_S: - if (defaultHandler) - reportDefault(parser, encoding, s, next); - break; - case XML_TOK_PI: - if (!reportProcessingInstruction(parser, encoding, s, next)) - return XML_ERROR_NO_MEMORY; - break; - case XML_TOK_COMMENT: - if (!reportComment(parser, encoding, s, next)) - return XML_ERROR_NO_MEMORY; - break; - case XML_TOK_INVALID: - eventPtr = next; - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_PARTIAL: - if (!ps_finalBuffer) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_UNCLOSED_TOKEN; - case XML_TOK_PARTIAL_CHAR: - if (!ps_finalBuffer) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_PARTIAL_CHAR; - default: - return XML_ERROR_JUNK_AFTER_DOC_ELEMENT; - } - eventPtr = s = next; - switch (ps_parsing) { - case XML_SUSPENDED: - *nextPtr = next; - return XML_ERROR_NONE; - case XML_FINISHED: - return XML_ERROR_ABORTED; - default: ; - } - } -} - -static enum XML_Error -processInternalEntity(XML_Parser parser, ENTITY *entity, - XML_Bool betweenDecl) -{ - const char *textStart, *textEnd; - const char *next; - enum XML_Error result; - OPEN_INTERNAL_ENTITY *openEntity; - - if (freeInternalEntities) { - openEntity = freeInternalEntities; - freeInternalEntities = openEntity->next; - } - else { - openEntity = (OPEN_INTERNAL_ENTITY *)MALLOC(sizeof(OPEN_INTERNAL_ENTITY)); - if (!openEntity) - return XML_ERROR_NO_MEMORY; - } - entity->open = XML_TRUE; - entity->processed = 0; - openEntity->next = openInternalEntities; - openInternalEntities = openEntity; - openEntity->entity = entity; - openEntity->startTagLevel = tagLevel; - openEntity->betweenDecl = betweenDecl; - openEntity->internalEventPtr = NULL; - openEntity->internalEventEndPtr = NULL; - textStart = (char *)entity->textPtr; - textEnd = (char *)(entity->textPtr + entity->textLen); - -#ifdef XML_DTD - if (entity->is_param) { - int tok = XmlPrologTok(internalEncoding, textStart, textEnd, &next); - result = doProlog(parser, internalEncoding, textStart, textEnd, tok, - next, &next, XML_FALSE); - } - else -#endif /* XML_DTD */ - result = doContent(parser, tagLevel, internalEncoding, textStart, - textEnd, &next, XML_FALSE); - - if (result == XML_ERROR_NONE) { - if (textEnd != next && ps_parsing == XML_SUSPENDED) { - entity->processed = (int)(next - textStart); - processor = internalEntityProcessor; - } - else { - entity->open = XML_FALSE; - openInternalEntities = openEntity->next; - /* put openEntity back in list of free instances */ - openEntity->next = freeInternalEntities; - freeInternalEntities = openEntity; - } - } - return result; -} - -static enum XML_Error PTRCALL -internalEntityProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ - ENTITY *entity; - const char *textStart, *textEnd; - const char *next; - enum XML_Error result; - OPEN_INTERNAL_ENTITY *openEntity = openInternalEntities; - if (!openEntity) - return XML_ERROR_UNEXPECTED_STATE; - - entity = openEntity->entity; - textStart = ((char *)entity->textPtr) + entity->processed; - textEnd = (char *)(entity->textPtr + entity->textLen); - -#ifdef XML_DTD - if (entity->is_param) { - int tok = XmlPrologTok(internalEncoding, textStart, textEnd, &next); - result = doProlog(parser, internalEncoding, textStart, textEnd, tok, - next, &next, XML_FALSE); - } - else -#endif /* XML_DTD */ - result = doContent(parser, openEntity->startTagLevel, internalEncoding, - textStart, textEnd, &next, XML_FALSE); - - if (result != XML_ERROR_NONE) - return result; - else if (textEnd != next && ps_parsing == XML_SUSPENDED) { - entity->processed = (int)(next - (char *)entity->textPtr); - return result; - } - else { - entity->open = XML_FALSE; - openInternalEntities = openEntity->next; - /* put openEntity back in list of free instances */ - openEntity->next = freeInternalEntities; - freeInternalEntities = openEntity; - } - -#ifdef XML_DTD - if (entity->is_param) { - int tok; - processor = prologProcessor; - tok = XmlPrologTok(encoding, s, end, &next); - return doProlog(parser, encoding, s, end, tok, next, nextPtr, - (XML_Bool)!ps_finalBuffer); - } - else -#endif /* XML_DTD */ - { - processor = contentProcessor; - /* see externalEntityContentProcessor vs contentProcessor */ - return doContent(parser, parentParser ? 1 : 0, encoding, s, end, - nextPtr, (XML_Bool)!ps_finalBuffer); - } -} - -static enum XML_Error PTRCALL -errorProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ - return errorCode; -} - -static enum XML_Error -storeAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, - const char *ptr, const char *end, - STRING_POOL *pool) -{ - enum XML_Error result = appendAttributeValue(parser, enc, isCdata, ptr, - end, pool); - if (result) - return result; - if (!isCdata && poolLength(pool) && poolLastChar(pool) == 0x20) - poolChop(pool); - if (!poolAppendChar(pool, XML_T('\0'))) - return XML_ERROR_NO_MEMORY; - return XML_ERROR_NONE; -} - -static enum XML_Error -appendAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, - const char *ptr, const char *end, - STRING_POOL *pool) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ - for (;;) { - const char *next; - int tok = XmlAttributeValueTok(enc, ptr, end, &next); - switch (tok) { - case XML_TOK_NONE: - return XML_ERROR_NONE; - case XML_TOK_INVALID: - if (enc == encoding) - eventPtr = next; - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_PARTIAL: - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_CHAR_REF: - { - XML_Char buf[XML_ENCODE_MAX]; - int i; - int n = XmlCharRefNumber(enc, ptr); - if (n < 0) { - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_BAD_CHAR_REF; - } - if (!isCdata - && n == 0x20 /* space */ - && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20)) - break; - n = XmlEncode(n, (ICHAR *)buf); - if (!n) { - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_BAD_CHAR_REF; - } - for (i = 0; i < n; i++) { - if (!poolAppendChar(pool, buf[i])) - return XML_ERROR_NO_MEMORY; - } - } - break; - case XML_TOK_DATA_CHARS: - if (!poolAppend(pool, enc, ptr, next)) - return XML_ERROR_NO_MEMORY; - break; - case XML_TOK_TRAILING_CR: - next = ptr + enc->minBytesPerChar; - /* fall through */ - case XML_TOK_ATTRIBUTE_VALUE_S: - case XML_TOK_DATA_NEWLINE: - if (!isCdata && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20)) - break; - if (!poolAppendChar(pool, 0x20)) - return XML_ERROR_NO_MEMORY; - break; - case XML_TOK_ENTITY_REF: - { - const XML_Char *name; - ENTITY *entity; - char checkEntityDecl; - XML_Char ch = (XML_Char) XmlPredefinedEntityName(enc, - ptr + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (ch) { - if (!poolAppendChar(pool, ch)) - return XML_ERROR_NO_MEMORY; - break; - } - name = poolStoreString(&temp2Pool, enc, - ptr + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!name) - return XML_ERROR_NO_MEMORY; - entity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, 0); - poolDiscard(&temp2Pool); - /* First, determine if a check for an existing declaration is needed; - if yes, check that the entity exists, and that it is internal. - */ - if (pool == &dtd->pool) /* are we called from prolog? */ - checkEntityDecl = -#ifdef XML_DTD - prologState.documentEntity && -#endif /* XML_DTD */ - (dtd->standalone - ? !openInternalEntities - : !dtd->hasParamEntityRefs); - else /* if (pool == &tempPool): we are called from content */ - checkEntityDecl = !dtd->hasParamEntityRefs || dtd->standalone; - if (checkEntityDecl) { - if (!entity) - return XML_ERROR_UNDEFINED_ENTITY; - else if (!entity->is_internal) - return XML_ERROR_ENTITY_DECLARED_IN_PE; - } - else if (!entity) { - /* Cannot report skipped entity here - see comments on - skippedEntityHandler. - if (skippedEntityHandler) - skippedEntityHandler(handlerArg, name, 0); - */ - /* Cannot call the default handler because this would be - out of sync with the call to the startElementHandler. - if ((pool == &tempPool) && defaultHandler) - reportDefault(parser, enc, ptr, next); - */ - break; - } - if (entity->open) { - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_RECURSIVE_ENTITY_REF; - } - if (entity->notation) { - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_BINARY_ENTITY_REF; - } - if (!entity->textPtr) { - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF; - } - else { - enum XML_Error result; - const XML_Char *textEnd = entity->textPtr + entity->textLen; - entity->open = XML_TRUE; - result = appendAttributeValue(parser, internalEncoding, isCdata, - (char *)entity->textPtr, - (char *)textEnd, pool); - entity->open = XML_FALSE; - if (result) - return result; - } - } - break; - default: - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_UNEXPECTED_STATE; - } - ptr = next; - } - /* not reached */ -} - -static enum XML_Error -storeEntityValue(XML_Parser parser, - const ENCODING *enc, - const char *entityTextPtr, - const char *entityTextEnd) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ - STRING_POOL *pool = &(dtd->entityValuePool); - enum XML_Error result = XML_ERROR_NONE; -#ifdef XML_DTD - int oldInEntityValue = prologState.inEntityValue; - prologState.inEntityValue = 1; -#endif /* XML_DTD */ - /* never return Null for the value argument in EntityDeclHandler, - since this would indicate an external entity; therefore we - have to make sure that entityValuePool.start is not null */ - if (!pool->blocks) { - if (!poolGrow(pool)) - return XML_ERROR_NO_MEMORY; - } - - for (;;) { - const char *next; - int tok = XmlEntityValueTok(enc, entityTextPtr, entityTextEnd, &next); - switch (tok) { - case XML_TOK_PARAM_ENTITY_REF: -#ifdef XML_DTD - if (isParamEntity || enc != encoding) { - const XML_Char *name; - ENTITY *entity; - name = poolStoreString(&tempPool, enc, - entityTextPtr + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!name) { - result = XML_ERROR_NO_MEMORY; - goto endEntityValue; - } - entity = (ENTITY *)lookup(parser, &dtd->paramEntities, name, 0); - poolDiscard(&tempPool); - if (!entity) { - /* not a well-formedness error - see XML 1.0: WFC Entity Declared */ - /* cannot report skipped entity here - see comments on - skippedEntityHandler - if (skippedEntityHandler) - skippedEntityHandler(handlerArg, name, 0); - */ - dtd->keepProcessing = dtd->standalone; - goto endEntityValue; - } - if (entity->open) { - if (enc == encoding) - eventPtr = entityTextPtr; - result = XML_ERROR_RECURSIVE_ENTITY_REF; - goto endEntityValue; - } - if (entity->systemId) { - if (externalEntityRefHandler) { - dtd->paramEntityRead = XML_FALSE; - entity->open = XML_TRUE; - if (!externalEntityRefHandler(externalEntityRefHandlerArg, - 0, - entity->base, - entity->systemId, - entity->publicId)) { - entity->open = XML_FALSE; - result = XML_ERROR_EXTERNAL_ENTITY_HANDLING; - goto endEntityValue; - } - entity->open = XML_FALSE; - if (!dtd->paramEntityRead) - dtd->keepProcessing = dtd->standalone; - } - else - dtd->keepProcessing = dtd->standalone; - } - else { - entity->open = XML_TRUE; - result = storeEntityValue(parser, - internalEncoding, - (char *)entity->textPtr, - (char *)(entity->textPtr - + entity->textLen)); - entity->open = XML_FALSE; - if (result) - goto endEntityValue; - } - break; - } -#endif /* XML_DTD */ - /* In the internal subset, PE references are not legal - within markup declarations, e.g entity values in this case. */ - eventPtr = entityTextPtr; - result = XML_ERROR_PARAM_ENTITY_REF; - goto endEntityValue; - case XML_TOK_NONE: - result = XML_ERROR_NONE; - goto endEntityValue; - case XML_TOK_ENTITY_REF: - case XML_TOK_DATA_CHARS: - if (!poolAppend(pool, enc, entityTextPtr, next)) { - result = XML_ERROR_NO_MEMORY; - goto endEntityValue; - } - break; - case XML_TOK_TRAILING_CR: - next = entityTextPtr + enc->minBytesPerChar; - /* fall through */ - case XML_TOK_DATA_NEWLINE: - if (pool->end == pool->ptr && !poolGrow(pool)) { - result = XML_ERROR_NO_MEMORY; - goto endEntityValue; - } - *(pool->ptr)++ = 0xA; - break; - case XML_TOK_CHAR_REF: - { - XML_Char buf[XML_ENCODE_MAX]; - int i; - int n = XmlCharRefNumber(enc, entityTextPtr); - if (n < 0) { - if (enc == encoding) - eventPtr = entityTextPtr; - result = XML_ERROR_BAD_CHAR_REF; - goto endEntityValue; - } - n = XmlEncode(n, (ICHAR *)buf); - if (!n) { - if (enc == encoding) - eventPtr = entityTextPtr; - result = XML_ERROR_BAD_CHAR_REF; - goto endEntityValue; - } - for (i = 0; i < n; i++) { - if (pool->end == pool->ptr && !poolGrow(pool)) { - result = XML_ERROR_NO_MEMORY; - goto endEntityValue; - } - *(pool->ptr)++ = buf[i]; - } - } - break; - case XML_TOK_PARTIAL: - if (enc == encoding) - eventPtr = entityTextPtr; - result = XML_ERROR_INVALID_TOKEN; - goto endEntityValue; - case XML_TOK_INVALID: - if (enc == encoding) - eventPtr = next; - result = XML_ERROR_INVALID_TOKEN; - goto endEntityValue; - default: - if (enc == encoding) - eventPtr = entityTextPtr; - result = XML_ERROR_UNEXPECTED_STATE; - goto endEntityValue; - } - entityTextPtr = next; - } -endEntityValue: -#ifdef XML_DTD - prologState.inEntityValue = oldInEntityValue; -#endif /* XML_DTD */ - return result; -} - -static void FASTCALL -normalizeLines(XML_Char *s) -{ - XML_Char *p; - for (;; s++) { - if (*s == XML_T('\0')) - return; - if (*s == 0xD) - break; - } - p = s; - do { - if (*s == 0xD) { - *p++ = 0xA; - if (*++s == 0xA) - s++; - } - else - *p++ = *s++; - } while (*s); - *p = XML_T('\0'); -} - -static int -reportProcessingInstruction(XML_Parser parser, const ENCODING *enc, - const char *start, const char *end) -{ - const XML_Char *target; - XML_Char *data; - const char *tem; - if (!processingInstructionHandler) { - if (defaultHandler) - reportDefault(parser, enc, start, end); - return 1; - } - start += enc->minBytesPerChar * 2; - tem = start + XmlNameLength(enc, start); - target = poolStoreString(&tempPool, enc, start, tem); - if (!target) - return 0; - poolFinish(&tempPool); - data = poolStoreString(&tempPool, enc, - XmlSkipS(enc, tem), - end - enc->minBytesPerChar*2); - if (!data) - return 0; - normalizeLines(data); - processingInstructionHandler(handlerArg, target, data); - poolClear(&tempPool); - return 1; -} - -static int -reportComment(XML_Parser parser, const ENCODING *enc, - const char *start, const char *end) -{ - XML_Char *data; - if (!commentHandler) { - if (defaultHandler) - reportDefault(parser, enc, start, end); - return 1; - } - data = poolStoreString(&tempPool, - enc, - start + enc->minBytesPerChar * 4, - end - enc->minBytesPerChar * 3); - if (!data) - return 0; - normalizeLines(data); - commentHandler(handlerArg, data); - poolClear(&tempPool); - return 1; -} - -static void -reportDefault(XML_Parser parser, const ENCODING *enc, - const char *s, const char *end) -{ - if (MUST_CONVERT(enc, s)) { - const char **eventPP; - const char **eventEndPP; - if (enc == encoding) { - eventPP = &eventPtr; - eventEndPP = &eventEndPtr; - } - else { - eventPP = &(openInternalEntities->internalEventPtr); - eventEndPP = &(openInternalEntities->internalEventEndPtr); - } - do { - ICHAR *dataPtr = (ICHAR *)dataBuf; - XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd); - *eventEndPP = s; - defaultHandler(handlerArg, dataBuf, (int)(dataPtr - (ICHAR *)dataBuf)); - *eventPP = s; - } while (s != end); - } - else - defaultHandler(handlerArg, (XML_Char *)s, (int)((XML_Char *)end - (XML_Char *)s)); -} - - -static int -defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *attId, XML_Bool isCdata, - XML_Bool isId, const XML_Char *value, XML_Parser parser) -{ - DEFAULT_ATTRIBUTE *att; - if (value || isId) { - /* The handling of default attributes gets messed up if we have - a default which duplicates a non-default. */ - int i; - for (i = 0; i < type->nDefaultAtts; i++) - if (attId == type->defaultAtts[i].id) - return 1; - if (isId && !type->idAtt && !attId->xmlns) - type->idAtt = attId; - } - if (type->nDefaultAtts == type->allocDefaultAtts) { - if (type->allocDefaultAtts == 0) { - type->allocDefaultAtts = 8; - type->defaultAtts = (DEFAULT_ATTRIBUTE *)MALLOC(type->allocDefaultAtts - * sizeof(DEFAULT_ATTRIBUTE)); - if (!type->defaultAtts) - return 0; - } - else { - DEFAULT_ATTRIBUTE *temp; - int count = type->allocDefaultAtts * 2; - temp = (DEFAULT_ATTRIBUTE *) - REALLOC(type->defaultAtts, (count * sizeof(DEFAULT_ATTRIBUTE))); - if (temp == NULL) - return 0; - type->allocDefaultAtts = count; - type->defaultAtts = temp; - } - } - att = type->defaultAtts + type->nDefaultAtts; - att->id = attId; - att->value = value; - att->isCdata = isCdata; - if (!isCdata) - attId->maybeTokenized = XML_TRUE; - type->nDefaultAtts += 1; - return 1; -} - -static int -setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *elementType) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ - const XML_Char *name; - for (name = elementType->name; *name; name++) { - if (*name == XML_T(ASCII_COLON)) { - PREFIX *prefix; - const XML_Char *s; - for (s = elementType->name; s != name; s++) { - if (!poolAppendChar(&dtd->pool, *s)) - return 0; - } - if (!poolAppendChar(&dtd->pool, XML_T('\0'))) - return 0; - prefix = (PREFIX *)lookup(parser, &dtd->prefixes, poolStart(&dtd->pool), - sizeof(PREFIX)); - if (!prefix) - return 0; - if (prefix->name == poolStart(&dtd->pool)) - poolFinish(&dtd->pool); - else - poolDiscard(&dtd->pool); - elementType->prefix = prefix; - - } - } - return 1; -} - -static ATTRIBUTE_ID * -getAttributeId(XML_Parser parser, const ENCODING *enc, - const char *start, const char *end) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ - ATTRIBUTE_ID *id; - const XML_Char *name; - if (!poolAppendChar(&dtd->pool, XML_T('\0'))) - return NULL; - name = poolStoreString(&dtd->pool, enc, start, end); - if (!name) - return NULL; - /* skip quotation mark - its storage will be re-used (like in name[-1]) */ - ++name; - id = (ATTRIBUTE_ID *)lookup(parser, &dtd->attributeIds, name, sizeof(ATTRIBUTE_ID)); - if (!id) - return NULL; - if (id->name != name) - poolDiscard(&dtd->pool); - else { - poolFinish(&dtd->pool); - if (!ns) - ; - else if (name[0] == XML_T(ASCII_x) - && name[1] == XML_T(ASCII_m) - && name[2] == XML_T(ASCII_l) - && name[3] == XML_T(ASCII_n) - && name[4] == XML_T(ASCII_s) - && (name[5] == XML_T('\0') || name[5] == XML_T(ASCII_COLON))) { - if (name[5] == XML_T('\0')) - id->prefix = &dtd->defaultPrefix; - else - id->prefix = (PREFIX *)lookup(parser, &dtd->prefixes, name + 6, sizeof(PREFIX)); - id->xmlns = XML_TRUE; - } - else { - int i; - for (i = 0; name[i]; i++) { - /* attributes without prefix are *not* in the default namespace */ - if (name[i] == XML_T(ASCII_COLON)) { - int j; - for (j = 0; j < i; j++) { - if (!poolAppendChar(&dtd->pool, name[j])) - return NULL; - } - if (!poolAppendChar(&dtd->pool, XML_T('\0'))) - return NULL; - id->prefix = (PREFIX *)lookup(parser, &dtd->prefixes, poolStart(&dtd->pool), - sizeof(PREFIX)); - if (id->prefix->name == poolStart(&dtd->pool)) - poolFinish(&dtd->pool); - else - poolDiscard(&dtd->pool); - break; - } - } - } - } - return id; -} - -#define CONTEXT_SEP XML_T(ASCII_FF) - -static const XML_Char * -getContext(XML_Parser parser) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ - HASH_TABLE_ITER iter; - XML_Bool needSep = XML_FALSE; - - if (dtd->defaultPrefix.binding) { - int i; - int len; - if (!poolAppendChar(&tempPool, XML_T(ASCII_EQUALS))) - return NULL; - len = dtd->defaultPrefix.binding->uriLen; - if (namespaceSeparator) - len--; - for (i = 0; i < len; i++) - if (!poolAppendChar(&tempPool, dtd->defaultPrefix.binding->uri[i])) - return NULL; - needSep = XML_TRUE; - } - - hashTableIterInit(&iter, &(dtd->prefixes)); - for (;;) { - int i; - int len; - const XML_Char *s; - PREFIX *prefix = (PREFIX *)hashTableIterNext(&iter); - if (!prefix) - break; - if (!prefix->binding) - continue; - if (needSep && !poolAppendChar(&tempPool, CONTEXT_SEP)) - return NULL; - for (s = prefix->name; *s; s++) - if (!poolAppendChar(&tempPool, *s)) - return NULL; - if (!poolAppendChar(&tempPool, XML_T(ASCII_EQUALS))) - return NULL; - len = prefix->binding->uriLen; - if (namespaceSeparator) - len--; - for (i = 0; i < len; i++) - if (!poolAppendChar(&tempPool, prefix->binding->uri[i])) - return NULL; - needSep = XML_TRUE; - } - - - hashTableIterInit(&iter, &(dtd->generalEntities)); - for (;;) { - const XML_Char *s; - ENTITY *e = (ENTITY *)hashTableIterNext(&iter); - if (!e) - break; - if (!e->open) - continue; - if (needSep && !poolAppendChar(&tempPool, CONTEXT_SEP)) - return NULL; - for (s = e->name; *s; s++) - if (!poolAppendChar(&tempPool, *s)) - return 0; - needSep = XML_TRUE; - } - - if (!poolAppendChar(&tempPool, XML_T('\0'))) - return NULL; - return tempPool.start; -} - -static XML_Bool -setContext(XML_Parser parser, const XML_Char *context) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ - const XML_Char *s = context; - - while (*context != XML_T('\0')) { - if (*s == CONTEXT_SEP || *s == XML_T('\0')) { - ENTITY *e; - if (!poolAppendChar(&tempPool, XML_T('\0'))) - return XML_FALSE; - e = (ENTITY *)lookup(parser, &dtd->generalEntities, poolStart(&tempPool), 0); - if (e) - e->open = XML_TRUE; - if (*s != XML_T('\0')) - s++; - context = s; - poolDiscard(&tempPool); - } - else if (*s == XML_T(ASCII_EQUALS)) { - PREFIX *prefix; - if (poolLength(&tempPool) == 0) - prefix = &dtd->defaultPrefix; - else { - if (!poolAppendChar(&tempPool, XML_T('\0'))) - return XML_FALSE; - prefix = (PREFIX *)lookup(parser, &dtd->prefixes, poolStart(&tempPool), - sizeof(PREFIX)); - if (!prefix) - return XML_FALSE; - if (prefix->name == poolStart(&tempPool)) { - prefix->name = poolCopyString(&dtd->pool, prefix->name); - if (!prefix->name) - return XML_FALSE; - } - poolDiscard(&tempPool); - } - for (context = s + 1; - *context != CONTEXT_SEP && *context != XML_T('\0'); - context++) - if (!poolAppendChar(&tempPool, *context)) - return XML_FALSE; - if (!poolAppendChar(&tempPool, XML_T('\0'))) - return XML_FALSE; - if (addBinding(parser, prefix, NULL, poolStart(&tempPool), - &inheritedBindings) != XML_ERROR_NONE) - return XML_FALSE; - poolDiscard(&tempPool); - if (*context != XML_T('\0')) - ++context; - s = context; - } - else { - if (!poolAppendChar(&tempPool, *s)) - return XML_FALSE; - s++; - } - } - return XML_TRUE; -} - -static void FASTCALL -normalizePublicId(XML_Char *publicId) -{ - XML_Char *p = publicId; - XML_Char *s; - for (s = publicId; *s; s++) { - switch (*s) { - case 0x20: - case 0xD: - case 0xA: - if (p != publicId && p[-1] != 0x20) - *p++ = 0x20; - break; - default: - *p++ = *s; - } - } - if (p != publicId && p[-1] == 0x20) - --p; - *p = XML_T('\0'); -} - -static DTD * -dtdCreate(const XML_Memory_Handling_Suite *ms) -{ - DTD *p = (DTD *)ms->malloc_fcn(sizeof(DTD)); - if (p == NULL) - return p; - poolInit(&(p->pool), ms); - poolInit(&(p->entityValuePool), ms); - hashTableInit(&(p->generalEntities), ms); - hashTableInit(&(p->elementTypes), ms); - hashTableInit(&(p->attributeIds), ms); - hashTableInit(&(p->prefixes), ms); -#ifdef XML_DTD - p->paramEntityRead = XML_FALSE; - hashTableInit(&(p->paramEntities), ms); -#endif /* XML_DTD */ - p->defaultPrefix.name = NULL; - p->defaultPrefix.binding = NULL; - - p->in_eldecl = XML_FALSE; - p->scaffIndex = NULL; - p->scaffold = NULL; - p->scaffLevel = 0; - p->scaffSize = 0; - p->scaffCount = 0; - p->contentStringLen = 0; - - p->keepProcessing = XML_TRUE; - p->hasParamEntityRefs = XML_FALSE; - p->standalone = XML_FALSE; - return p; -} - -static void -dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms) -{ - HASH_TABLE_ITER iter; - hashTableIterInit(&iter, &(p->elementTypes)); - for (;;) { - ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter); - if (!e) - break; - if (e->allocDefaultAtts != 0) - ms->free_fcn(e->defaultAtts); - } - hashTableClear(&(p->generalEntities)); -#ifdef XML_DTD - p->paramEntityRead = XML_FALSE; - hashTableClear(&(p->paramEntities)); -#endif /* XML_DTD */ - hashTableClear(&(p->elementTypes)); - hashTableClear(&(p->attributeIds)); - hashTableClear(&(p->prefixes)); - poolClear(&(p->pool)); - poolClear(&(p->entityValuePool)); - p->defaultPrefix.name = NULL; - p->defaultPrefix.binding = NULL; - - p->in_eldecl = XML_FALSE; - - ms->free_fcn(p->scaffIndex); - p->scaffIndex = NULL; - ms->free_fcn(p->scaffold); - p->scaffold = NULL; - - p->scaffLevel = 0; - p->scaffSize = 0; - p->scaffCount = 0; - p->contentStringLen = 0; - - p->keepProcessing = XML_TRUE; - p->hasParamEntityRefs = XML_FALSE; - p->standalone = XML_FALSE; -} - -static void -dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms) -{ - HASH_TABLE_ITER iter; - hashTableIterInit(&iter, &(p->elementTypes)); - for (;;) { - ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter); - if (!e) - break; - if (e->allocDefaultAtts != 0) - ms->free_fcn(e->defaultAtts); - } - hashTableDestroy(&(p->generalEntities)); -#ifdef XML_DTD - hashTableDestroy(&(p->paramEntities)); -#endif /* XML_DTD */ - hashTableDestroy(&(p->elementTypes)); - hashTableDestroy(&(p->attributeIds)); - hashTableDestroy(&(p->prefixes)); - poolDestroy(&(p->pool)); - poolDestroy(&(p->entityValuePool)); - if (isDocEntity) { - ms->free_fcn(p->scaffIndex); - ms->free_fcn(p->scaffold); - } - ms->free_fcn(p); -} - -/* Do a deep copy of the DTD. Return 0 for out of memory, non-zero otherwise. - The new DTD has already been initialized. -*/ -static int -dtdCopy(XML_Parser oldParser, DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms) -{ - HASH_TABLE_ITER iter; - - /* Copy the prefix table. */ - - hashTableIterInit(&iter, &(oldDtd->prefixes)); - for (;;) { - const XML_Char *name; - const PREFIX *oldP = (PREFIX *)hashTableIterNext(&iter); - if (!oldP) - break; - name = poolCopyString(&(newDtd->pool), oldP->name); - if (!name) - return 0; - if (!lookup(oldParser, &(newDtd->prefixes), name, sizeof(PREFIX))) - return 0; - } - - hashTableIterInit(&iter, &(oldDtd->attributeIds)); - - /* Copy the attribute id table. */ - - for (;;) { - ATTRIBUTE_ID *newA; - const XML_Char *name; - const ATTRIBUTE_ID *oldA = (ATTRIBUTE_ID *)hashTableIterNext(&iter); - - if (!oldA) - break; - /* Remember to allocate the scratch byte before the name. */ - if (!poolAppendChar(&(newDtd->pool), XML_T('\0'))) - return 0; - name = poolCopyString(&(newDtd->pool), oldA->name); - if (!name) - return 0; - ++name; - newA = (ATTRIBUTE_ID *)lookup(oldParser, &(newDtd->attributeIds), name, - sizeof(ATTRIBUTE_ID)); - if (!newA) - return 0; - newA->maybeTokenized = oldA->maybeTokenized; - if (oldA->prefix) { - newA->xmlns = oldA->xmlns; - if (oldA->prefix == &oldDtd->defaultPrefix) - newA->prefix = &newDtd->defaultPrefix; - else - newA->prefix = (PREFIX *)lookup(oldParser, &(newDtd->prefixes), - oldA->prefix->name, 0); - } - } - - /* Copy the element type table. */ - - hashTableIterInit(&iter, &(oldDtd->elementTypes)); - - for (;;) { - int i; - ELEMENT_TYPE *newE; - const XML_Char *name; - const ELEMENT_TYPE *oldE = (ELEMENT_TYPE *)hashTableIterNext(&iter); - if (!oldE) - break; - name = poolCopyString(&(newDtd->pool), oldE->name); - if (!name) - return 0; - newE = (ELEMENT_TYPE *)lookup(oldParser, &(newDtd->elementTypes), name, - sizeof(ELEMENT_TYPE)); - if (!newE) - return 0; - if (oldE->nDefaultAtts) { - newE->defaultAtts = (DEFAULT_ATTRIBUTE *) - ms->malloc_fcn(oldE->nDefaultAtts * sizeof(DEFAULT_ATTRIBUTE)); - if (!newE->defaultAtts) { - ms->free_fcn(newE); - return 0; - } - } - if (oldE->idAtt) - newE->idAtt = (ATTRIBUTE_ID *) - lookup(oldParser, &(newDtd->attributeIds), oldE->idAtt->name, 0); - newE->allocDefaultAtts = newE->nDefaultAtts = oldE->nDefaultAtts; - if (oldE->prefix) - newE->prefix = (PREFIX *)lookup(oldParser, &(newDtd->prefixes), - oldE->prefix->name, 0); - for (i = 0; i < newE->nDefaultAtts; i++) { - newE->defaultAtts[i].id = (ATTRIBUTE_ID *) - lookup(oldParser, &(newDtd->attributeIds), oldE->defaultAtts[i].id->name, 0); - newE->defaultAtts[i].isCdata = oldE->defaultAtts[i].isCdata; - if (oldE->defaultAtts[i].value) { - newE->defaultAtts[i].value - = poolCopyString(&(newDtd->pool), oldE->defaultAtts[i].value); - if (!newE->defaultAtts[i].value) - return 0; - } - else - newE->defaultAtts[i].value = NULL; - } - } - - /* Copy the entity tables. */ - if (!copyEntityTable(oldParser, - &(newDtd->generalEntities), - &(newDtd->pool), - &(oldDtd->generalEntities))) - return 0; - -#ifdef XML_DTD - if (!copyEntityTable(oldParser, - &(newDtd->paramEntities), - &(newDtd->pool), - &(oldDtd->paramEntities))) - return 0; - newDtd->paramEntityRead = oldDtd->paramEntityRead; -#endif /* XML_DTD */ - - newDtd->keepProcessing = oldDtd->keepProcessing; - newDtd->hasParamEntityRefs = oldDtd->hasParamEntityRefs; - newDtd->standalone = oldDtd->standalone; - - /* Don't want deep copying for scaffolding */ - newDtd->in_eldecl = oldDtd->in_eldecl; - newDtd->scaffold = oldDtd->scaffold; - newDtd->contentStringLen = oldDtd->contentStringLen; - newDtd->scaffSize = oldDtd->scaffSize; - newDtd->scaffLevel = oldDtd->scaffLevel; - newDtd->scaffIndex = oldDtd->scaffIndex; - - return 1; -} /* End dtdCopy */ - -static int -copyEntityTable(XML_Parser oldParser, - HASH_TABLE *newTable, - STRING_POOL *newPool, - const HASH_TABLE *oldTable) -{ - HASH_TABLE_ITER iter; - const XML_Char *cachedOldBase = NULL; - const XML_Char *cachedNewBase = NULL; - - hashTableIterInit(&iter, oldTable); - - for (;;) { - ENTITY *newE; - const XML_Char *name; - const ENTITY *oldE = (ENTITY *)hashTableIterNext(&iter); - if (!oldE) - break; - name = poolCopyString(newPool, oldE->name); - if (!name) - return 0; - newE = (ENTITY *)lookup(oldParser, newTable, name, sizeof(ENTITY)); - if (!newE) - return 0; - if (oldE->systemId) { - const XML_Char *tem = poolCopyString(newPool, oldE->systemId); - if (!tem) - return 0; - newE->systemId = tem; - if (oldE->base) { - if (oldE->base == cachedOldBase) - newE->base = cachedNewBase; - else { - cachedOldBase = oldE->base; - tem = poolCopyString(newPool, cachedOldBase); - if (!tem) - return 0; - cachedNewBase = newE->base = tem; - } - } - if (oldE->publicId) { - tem = poolCopyString(newPool, oldE->publicId); - if (!tem) - return 0; - newE->publicId = tem; - } - } - else { - const XML_Char *tem = poolCopyStringN(newPool, oldE->textPtr, - oldE->textLen); - if (!tem) - return 0; - newE->textPtr = tem; - newE->textLen = oldE->textLen; - } - if (oldE->notation) { - const XML_Char *tem = poolCopyString(newPool, oldE->notation); - if (!tem) - return 0; - newE->notation = tem; - } - newE->is_param = oldE->is_param; - newE->is_internal = oldE->is_internal; - } - return 1; -} - -#define INIT_POWER 6 - -static XML_Bool FASTCALL -keyeq(KEY s1, KEY s2) -{ - for (; *s1 == *s2; s1++, s2++) - if (*s1 == 0) - return XML_TRUE; - return XML_FALSE; -} - -static unsigned long FASTCALL -hash(XML_Parser parser, KEY s) -{ - unsigned long h = hash_secret_salt; - while (*s) - h = CHAR_HASH(h, *s++); - return h; -} - -static NAMED * -lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize) -{ - size_t i; - if (table->size == 0) { - size_t tsize; - if (!createSize) - return NULL; - table->power = INIT_POWER; - /* table->size is a power of 2 */ - table->size = (size_t)1 << INIT_POWER; - tsize = table->size * sizeof(NAMED *); - table->v = (NAMED **)table->mem->malloc_fcn(tsize); - if (!table->v) { - table->size = 0; - return NULL; - } - memset(table->v, 0, tsize); - i = hash(parser, name) & ((unsigned long)table->size - 1); - } - else { - unsigned long h = hash(parser, name); - unsigned long mask = (unsigned long)table->size - 1; - unsigned char step = 0; - i = h & mask; - while (table->v[i]) { - if (keyeq(name, table->v[i]->name)) - return table->v[i]; - if (!step) - step = PROBE_STEP(h, mask, table->power); - i < step ? (i += table->size - step) : (i -= step); - } - if (!createSize) - return NULL; - - /* check for overflow (table is half full) */ - if (table->used >> (table->power - 1)) { - unsigned char newPower = table->power + 1; - size_t newSize = (size_t)1 << newPower; - unsigned long newMask = (unsigned long)newSize - 1; - size_t tsize = newSize * sizeof(NAMED *); - NAMED **newV = (NAMED **)table->mem->malloc_fcn(tsize); - if (!newV) - return NULL; - memset(newV, 0, tsize); - for (i = 0; i < table->size; i++) - if (table->v[i]) { - unsigned long newHash = hash(parser, table->v[i]->name); - size_t j = newHash & newMask; - step = 0; - while (newV[j]) { - if (!step) - step = PROBE_STEP(newHash, newMask, newPower); - j < step ? (j += newSize - step) : (j -= step); - } - newV[j] = table->v[i]; - } - table->mem->free_fcn(table->v); - table->v = newV; - table->power = newPower; - table->size = newSize; - i = h & newMask; - step = 0; - while (table->v[i]) { - if (!step) - step = PROBE_STEP(h, newMask, newPower); - i < step ? (i += newSize - step) : (i -= step); - } - } - } - table->v[i] = (NAMED *)table->mem->malloc_fcn(createSize); - if (!table->v[i]) - return NULL; - memset(table->v[i], 0, createSize); - table->v[i]->name = name; - (table->used)++; - return table->v[i]; -} - -static void FASTCALL -hashTableClear(HASH_TABLE *table) -{ - size_t i; - for (i = 0; i < table->size; i++) { - table->mem->free_fcn(table->v[i]); - table->v[i] = NULL; - } - table->used = 0; -} - -static void FASTCALL -hashTableDestroy(HASH_TABLE *table) -{ - size_t i; - for (i = 0; i < table->size; i++) - table->mem->free_fcn(table->v[i]); - table->mem->free_fcn(table->v); -} - -static void FASTCALL -hashTableInit(HASH_TABLE *p, const XML_Memory_Handling_Suite *ms) -{ - p->power = 0; - p->size = 0; - p->used = 0; - p->v = NULL; - p->mem = ms; -} - -static void FASTCALL -hashTableIterInit(HASH_TABLE_ITER *iter, const HASH_TABLE *table) -{ - iter->p = table->v; - iter->end = iter->p + table->size; -} - -static NAMED * FASTCALL -hashTableIterNext(HASH_TABLE_ITER *iter) -{ - while (iter->p != iter->end) { - NAMED *tem = *(iter->p)++; - if (tem) - return tem; - } - return NULL; -} - -static void FASTCALL -poolInit(STRING_POOL *pool, const XML_Memory_Handling_Suite *ms) -{ - pool->blocks = NULL; - pool->freeBlocks = NULL; - pool->start = NULL; - pool->ptr = NULL; - pool->end = NULL; - pool->mem = ms; -} - -static void FASTCALL -poolClear(STRING_POOL *pool) -{ - if (!pool->freeBlocks) - pool->freeBlocks = pool->blocks; - else { - BLOCK *p = pool->blocks; - while (p) { - BLOCK *tem = p->next; - p->next = pool->freeBlocks; - pool->freeBlocks = p; - p = tem; - } - } - pool->blocks = NULL; - pool->start = NULL; - pool->ptr = NULL; - pool->end = NULL; -} - -static void FASTCALL -poolDestroy(STRING_POOL *pool) -{ - BLOCK *p = pool->blocks; - while (p) { - BLOCK *tem = p->next; - pool->mem->free_fcn(p); - p = tem; - } - p = pool->freeBlocks; - while (p) { - BLOCK *tem = p->next; - pool->mem->free_fcn(p); - p = tem; - } -} - -static XML_Char * -poolAppend(STRING_POOL *pool, const ENCODING *enc, - const char *ptr, const char *end) -{ - if (!pool->ptr && !poolGrow(pool)) - return NULL; - for (;;) { - XmlConvert(enc, &ptr, end, (ICHAR **)&(pool->ptr), (ICHAR *)pool->end); - if (ptr == end) - break; - if (!poolGrow(pool)) - return NULL; - } - return pool->start; -} - -static const XML_Char * FASTCALL -poolCopyString(STRING_POOL *pool, const XML_Char *s) -{ - do { - if (!poolAppendChar(pool, *s)) - return NULL; - } while (*s++); - s = pool->start; - poolFinish(pool); - return s; -} - -static const XML_Char * -poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n) -{ - if (!pool->ptr && !poolGrow(pool)) - return NULL; - for (; n > 0; --n, s++) { - if (!poolAppendChar(pool, *s)) - return NULL; - } - s = pool->start; - poolFinish(pool); - return s; -} - -static const XML_Char * FASTCALL -poolAppendString(STRING_POOL *pool, const XML_Char *s) -{ - while (*s) { - if (!poolAppendChar(pool, *s)) - return NULL; - s++; - } - return pool->start; -} - -static XML_Char * -poolStoreString(STRING_POOL *pool, const ENCODING *enc, - const char *ptr, const char *end) -{ - if (!poolAppend(pool, enc, ptr, end)) - return NULL; - if (pool->ptr == pool->end && !poolGrow(pool)) - return NULL; - *(pool->ptr)++ = 0; - return pool->start; -} - -static XML_Bool FASTCALL -poolGrow(STRING_POOL *pool) -{ - if (pool->freeBlocks) { - if (pool->start == 0) { - pool->blocks = pool->freeBlocks; - pool->freeBlocks = pool->freeBlocks->next; - pool->blocks->next = NULL; - pool->start = pool->blocks->s; - pool->end = pool->start + pool->blocks->size; - pool->ptr = pool->start; - return XML_TRUE; - } - if (pool->end - pool->start < pool->freeBlocks->size) { - BLOCK *tem = pool->freeBlocks->next; - pool->freeBlocks->next = pool->blocks; - pool->blocks = pool->freeBlocks; - pool->freeBlocks = tem; - memcpy(pool->blocks->s, pool->start, - (pool->end - pool->start) * sizeof(XML_Char)); - pool->ptr = pool->blocks->s + (pool->ptr - pool->start); - pool->start = pool->blocks->s; - pool->end = pool->start + pool->blocks->size; - return XML_TRUE; - } - } - if (pool->blocks && pool->start == pool->blocks->s) { - int blockSize = (int)(pool->end - pool->start)*2; - BLOCK *temp = (BLOCK *) - pool->mem->realloc_fcn(pool->blocks, - (offsetof(BLOCK, s) - + blockSize * sizeof(XML_Char))); - if (temp == NULL) - return XML_FALSE; - pool->blocks = temp; - pool->blocks->size = blockSize; - pool->ptr = pool->blocks->s + (pool->ptr - pool->start); - pool->start = pool->blocks->s; - pool->end = pool->start + blockSize; - } - else { - BLOCK *tem; - int blockSize = (int)(pool->end - pool->start); - if (blockSize < INIT_BLOCK_SIZE) - blockSize = INIT_BLOCK_SIZE; - else - blockSize *= 2; - tem = (BLOCK *)pool->mem->malloc_fcn(offsetof(BLOCK, s) - + blockSize * sizeof(XML_Char)); - if (!tem) - return XML_FALSE; - tem->size = blockSize; - tem->next = pool->blocks; - pool->blocks = tem; - if (pool->ptr != pool->start) - memcpy(tem->s, pool->start, - (pool->ptr - pool->start) * sizeof(XML_Char)); - pool->ptr = tem->s + (pool->ptr - pool->start); - pool->start = tem->s; - pool->end = tem->s + blockSize; - } - return XML_TRUE; -} - -static int FASTCALL -nextScaffoldPart(XML_Parser parser) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ - CONTENT_SCAFFOLD * me; - int next; - - if (!dtd->scaffIndex) { - dtd->scaffIndex = (int *)MALLOC(groupSize * sizeof(int)); - if (!dtd->scaffIndex) - return -1; - dtd->scaffIndex[0] = 0; - } - - if (dtd->scaffCount >= dtd->scaffSize) { - CONTENT_SCAFFOLD *temp; - if (dtd->scaffold) { - temp = (CONTENT_SCAFFOLD *) - REALLOC(dtd->scaffold, dtd->scaffSize * 2 * sizeof(CONTENT_SCAFFOLD)); - if (temp == NULL) - return -1; - dtd->scaffSize *= 2; - } - else { - temp = (CONTENT_SCAFFOLD *)MALLOC(INIT_SCAFFOLD_ELEMENTS - * sizeof(CONTENT_SCAFFOLD)); - if (temp == NULL) - return -1; - dtd->scaffSize = INIT_SCAFFOLD_ELEMENTS; - } - dtd->scaffold = temp; - } - next = dtd->scaffCount++; - me = &dtd->scaffold[next]; - if (dtd->scaffLevel) { - CONTENT_SCAFFOLD *parent = &dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel-1]]; - if (parent->lastchild) { - dtd->scaffold[parent->lastchild].nextsib = next; - } - if (!parent->childcnt) - parent->firstchild = next; - parent->lastchild = next; - parent->childcnt++; - } - me->firstchild = me->lastchild = me->childcnt = me->nextsib = 0; - return next; -} - -static void -build_node(XML_Parser parser, - int src_node, - XML_Content *dest, - XML_Content **contpos, - XML_Char **strpos) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ - dest->type = dtd->scaffold[src_node].type; - dest->quant = dtd->scaffold[src_node].quant; - if (dest->type == XML_CTYPE_NAME) { - const XML_Char *src; - dest->name = *strpos; - src = dtd->scaffold[src_node].name; - for (;;) { - *(*strpos)++ = *src; - if (!*src) - break; - src++; - } - dest->numchildren = 0; - dest->children = NULL; - } - else { - unsigned int i; - int cn; - dest->numchildren = dtd->scaffold[src_node].childcnt; - dest->children = *contpos; - *contpos += dest->numchildren; - for (i = 0, cn = dtd->scaffold[src_node].firstchild; - i < dest->numchildren; - i++, cn = dtd->scaffold[cn].nextsib) { - build_node(parser, cn, &(dest->children[i]), contpos, strpos); - } - dest->name = NULL; - } -} - -static XML_Content * -build_model (XML_Parser parser) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ - XML_Content *ret; - XML_Content *cpos; - XML_Char * str; - int allocsize = (dtd->scaffCount * sizeof(XML_Content) - + (dtd->contentStringLen * sizeof(XML_Char))); - - ret = (XML_Content *)MALLOC(allocsize); - if (!ret) - return NULL; - - str = (XML_Char *) (&ret[dtd->scaffCount]); - cpos = &ret[1]; - - build_node(parser, 0, ret, &cpos, &str); - return ret; -} - -static ELEMENT_TYPE * -getElementType(XML_Parser parser, - const ENCODING *enc, - const char *ptr, - const char *end) -{ - DTD * const dtd = _dtd; /* save one level of indirection */ - const XML_Char *name = poolStoreString(&dtd->pool, enc, ptr, end); - ELEMENT_TYPE *ret; - - if (!name) - return NULL; - ret = (ELEMENT_TYPE *) lookup(parser, &dtd->elementTypes, name, sizeof(ELEMENT_TYPE)); - if (!ret) - return NULL; - if (ret->name != name) - poolDiscard(&dtd->pool); - else { - poolFinish(&dtd->pool); - if (!setElementTypePrefix(parser, ret)) - return NULL; - } - return ret; -} diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmlrole.c b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmlrole.c deleted file mode 100644 index 44772e2..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmlrole.c +++ /dev/null @@ -1,1336 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -#include - -#ifdef COMPILED_FROM_DSP -#include "winconfig.h" -#elif defined(MACOS_CLASSIC) -#include "macconfig.h" -#elif defined(__amigaos__) -#include "amigaconfig.h" -#elif defined(__WATCOMC__) -#include "watcomconfig.h" -#else -#ifdef HAVE_EXPAT_CONFIG_H -#include -#endif -#endif /* ndef COMPILED_FROM_DSP */ - -#include "expat_external.h" -#include "internal.h" -#include "xmlrole.h" -#include "ascii.h" - -/* Doesn't check: - - that ,| are not mixed in a model group - content of literals - -*/ - -static const char KW_ANY[] = { - ASCII_A, ASCII_N, ASCII_Y, '\0' }; -static const char KW_ATTLIST[] = { - ASCII_A, ASCII_T, ASCII_T, ASCII_L, ASCII_I, ASCII_S, ASCII_T, '\0' }; -static const char KW_CDATA[] = { - ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; -static const char KW_DOCTYPE[] = { - ASCII_D, ASCII_O, ASCII_C, ASCII_T, ASCII_Y, ASCII_P, ASCII_E, '\0' }; -static const char KW_ELEMENT[] = { - ASCII_E, ASCII_L, ASCII_E, ASCII_M, ASCII_E, ASCII_N, ASCII_T, '\0' }; -static const char KW_EMPTY[] = { - ASCII_E, ASCII_M, ASCII_P, ASCII_T, ASCII_Y, '\0' }; -static const char KW_ENTITIES[] = { - ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_I, ASCII_E, ASCII_S, - '\0' }; -static const char KW_ENTITY[] = { - ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_Y, '\0' }; -static const char KW_FIXED[] = { - ASCII_F, ASCII_I, ASCII_X, ASCII_E, ASCII_D, '\0' }; -static const char KW_ID[] = { - ASCII_I, ASCII_D, '\0' }; -static const char KW_IDREF[] = { - ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, '\0' }; -static const char KW_IDREFS[] = { - ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, ASCII_S, '\0' }; -#ifdef XML_DTD -static const char KW_IGNORE[] = { - ASCII_I, ASCII_G, ASCII_N, ASCII_O, ASCII_R, ASCII_E, '\0' }; -#endif -static const char KW_IMPLIED[] = { - ASCII_I, ASCII_M, ASCII_P, ASCII_L, ASCII_I, ASCII_E, ASCII_D, '\0' }; -#ifdef XML_DTD -static const char KW_INCLUDE[] = { - ASCII_I, ASCII_N, ASCII_C, ASCII_L, ASCII_U, ASCII_D, ASCII_E, '\0' }; -#endif -static const char KW_NDATA[] = { - ASCII_N, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; -static const char KW_NMTOKEN[] = { - ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, '\0' }; -static const char KW_NMTOKENS[] = { - ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, ASCII_S, - '\0' }; -static const char KW_NOTATION[] = - { ASCII_N, ASCII_O, ASCII_T, ASCII_A, ASCII_T, ASCII_I, ASCII_O, ASCII_N, - '\0' }; -static const char KW_PCDATA[] = { - ASCII_P, ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; -static const char KW_PUBLIC[] = { - ASCII_P, ASCII_U, ASCII_B, ASCII_L, ASCII_I, ASCII_C, '\0' }; -static const char KW_REQUIRED[] = { - ASCII_R, ASCII_E, ASCII_Q, ASCII_U, ASCII_I, ASCII_R, ASCII_E, ASCII_D, - '\0' }; -static const char KW_SYSTEM[] = { - ASCII_S, ASCII_Y, ASCII_S, ASCII_T, ASCII_E, ASCII_M, '\0' }; - -#ifndef MIN_BYTES_PER_CHAR -#define MIN_BYTES_PER_CHAR(enc) ((enc)->minBytesPerChar) -#endif - -#ifdef XML_DTD -#define setTopLevel(state) \ - ((state)->handler = ((state)->documentEntity \ - ? internalSubset \ - : externalSubset1)) -#else /* not XML_DTD */ -#define setTopLevel(state) ((state)->handler = internalSubset) -#endif /* not XML_DTD */ - -typedef int PTRCALL PROLOG_HANDLER(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc); - -static PROLOG_HANDLER - prolog0, prolog1, prolog2, - doctype0, doctype1, doctype2, doctype3, doctype4, doctype5, - internalSubset, - entity0, entity1, entity2, entity3, entity4, entity5, entity6, - entity7, entity8, entity9, entity10, - notation0, notation1, notation2, notation3, notation4, - attlist0, attlist1, attlist2, attlist3, attlist4, attlist5, attlist6, - attlist7, attlist8, attlist9, - element0, element1, element2, element3, element4, element5, element6, - element7, -#ifdef XML_DTD - externalSubset0, externalSubset1, - condSect0, condSect1, condSect2, -#endif /* XML_DTD */ - declClose, - error; - -static int FASTCALL common(PROLOG_STATE *state, int tok); - -static int PTRCALL -prolog0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - state->handler = prolog1; - return XML_ROLE_NONE; - case XML_TOK_XML_DECL: - state->handler = prolog1; - return XML_ROLE_XML_DECL; - case XML_TOK_PI: - state->handler = prolog1; - return XML_ROLE_PI; - case XML_TOK_COMMENT: - state->handler = prolog1; - return XML_ROLE_COMMENT; - case XML_TOK_BOM: - return XML_ROLE_NONE; - case XML_TOK_DECL_OPEN: - if (!XmlNameMatchesAscii(enc, - ptr + 2 * MIN_BYTES_PER_CHAR(enc), - end, - KW_DOCTYPE)) - break; - state->handler = doctype0; - return XML_ROLE_DOCTYPE_NONE; - case XML_TOK_INSTANCE_START: - state->handler = error; - return XML_ROLE_INSTANCE_START; - } - return common(state, tok); -} - -static int PTRCALL -prolog1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_PI: - return XML_ROLE_PI; - case XML_TOK_COMMENT: - return XML_ROLE_COMMENT; - case XML_TOK_BOM: - return XML_ROLE_NONE; - case XML_TOK_DECL_OPEN: - if (!XmlNameMatchesAscii(enc, - ptr + 2 * MIN_BYTES_PER_CHAR(enc), - end, - KW_DOCTYPE)) - break; - state->handler = doctype0; - return XML_ROLE_DOCTYPE_NONE; - case XML_TOK_INSTANCE_START: - state->handler = error; - return XML_ROLE_INSTANCE_START; - } - return common(state, tok); -} - -static int PTRCALL -prolog2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_PI: - return XML_ROLE_PI; - case XML_TOK_COMMENT: - return XML_ROLE_COMMENT; - case XML_TOK_INSTANCE_START: - state->handler = error; - return XML_ROLE_INSTANCE_START; - } - return common(state, tok); -} - -static int PTRCALL -doctype0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_DOCTYPE_NONE; - case XML_TOK_NAME: - case XML_TOK_PREFIXED_NAME: - state->handler = doctype1; - return XML_ROLE_DOCTYPE_NAME; - } - return common(state, tok); -} - -static int PTRCALL -doctype1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_DOCTYPE_NONE; - case XML_TOK_OPEN_BRACKET: - state->handler = internalSubset; - return XML_ROLE_DOCTYPE_INTERNAL_SUBSET; - case XML_TOK_DECL_CLOSE: - state->handler = prolog2; - return XML_ROLE_DOCTYPE_CLOSE; - case XML_TOK_NAME: - if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { - state->handler = doctype3; - return XML_ROLE_DOCTYPE_NONE; - } - if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { - state->handler = doctype2; - return XML_ROLE_DOCTYPE_NONE; - } - break; - } - return common(state, tok); -} - -static int PTRCALL -doctype2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_DOCTYPE_NONE; - case XML_TOK_LITERAL: - state->handler = doctype3; - return XML_ROLE_DOCTYPE_PUBLIC_ID; - } - return common(state, tok); -} - -static int PTRCALL -doctype3(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_DOCTYPE_NONE; - case XML_TOK_LITERAL: - state->handler = doctype4; - return XML_ROLE_DOCTYPE_SYSTEM_ID; - } - return common(state, tok); -} - -static int PTRCALL -doctype4(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_DOCTYPE_NONE; - case XML_TOK_OPEN_BRACKET: - state->handler = internalSubset; - return XML_ROLE_DOCTYPE_INTERNAL_SUBSET; - case XML_TOK_DECL_CLOSE: - state->handler = prolog2; - return XML_ROLE_DOCTYPE_CLOSE; - } - return common(state, tok); -} - -static int PTRCALL -doctype5(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_DOCTYPE_NONE; - case XML_TOK_DECL_CLOSE: - state->handler = prolog2; - return XML_ROLE_DOCTYPE_CLOSE; - } - return common(state, tok); -} - -static int PTRCALL -internalSubset(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_DECL_OPEN: - if (XmlNameMatchesAscii(enc, - ptr + 2 * MIN_BYTES_PER_CHAR(enc), - end, - KW_ENTITY)) { - state->handler = entity0; - return XML_ROLE_ENTITY_NONE; - } - if (XmlNameMatchesAscii(enc, - ptr + 2 * MIN_BYTES_PER_CHAR(enc), - end, - KW_ATTLIST)) { - state->handler = attlist0; - return XML_ROLE_ATTLIST_NONE; - } - if (XmlNameMatchesAscii(enc, - ptr + 2 * MIN_BYTES_PER_CHAR(enc), - end, - KW_ELEMENT)) { - state->handler = element0; - return XML_ROLE_ELEMENT_NONE; - } - if (XmlNameMatchesAscii(enc, - ptr + 2 * MIN_BYTES_PER_CHAR(enc), - end, - KW_NOTATION)) { - state->handler = notation0; - return XML_ROLE_NOTATION_NONE; - } - break; - case XML_TOK_PI: - return XML_ROLE_PI; - case XML_TOK_COMMENT: - return XML_ROLE_COMMENT; - case XML_TOK_PARAM_ENTITY_REF: - return XML_ROLE_PARAM_ENTITY_REF; - case XML_TOK_CLOSE_BRACKET: - state->handler = doctype5; - return XML_ROLE_DOCTYPE_NONE; - case XML_TOK_NONE: - return XML_ROLE_NONE; - } - return common(state, tok); -} - -#ifdef XML_DTD - -static int PTRCALL -externalSubset0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - state->handler = externalSubset1; - if (tok == XML_TOK_XML_DECL) - return XML_ROLE_TEXT_DECL; - return externalSubset1(state, tok, ptr, end, enc); -} - -static int PTRCALL -externalSubset1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_COND_SECT_OPEN: - state->handler = condSect0; - return XML_ROLE_NONE; - case XML_TOK_COND_SECT_CLOSE: - if (state->includeLevel == 0) - break; - state->includeLevel -= 1; - return XML_ROLE_NONE; - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_CLOSE_BRACKET: - break; - case XML_TOK_NONE: - if (state->includeLevel) - break; - return XML_ROLE_NONE; - default: - return internalSubset(state, tok, ptr, end, enc); - } - return common(state, tok); -} - -#endif /* XML_DTD */ - -static int PTRCALL -entity0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ENTITY_NONE; - case XML_TOK_PERCENT: - state->handler = entity1; - return XML_ROLE_ENTITY_NONE; - case XML_TOK_NAME: - state->handler = entity2; - return XML_ROLE_GENERAL_ENTITY_NAME; - } - return common(state, tok); -} - -static int PTRCALL -entity1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ENTITY_NONE; - case XML_TOK_NAME: - state->handler = entity7; - return XML_ROLE_PARAM_ENTITY_NAME; - } - return common(state, tok); -} - -static int PTRCALL -entity2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ENTITY_NONE; - case XML_TOK_NAME: - if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { - state->handler = entity4; - return XML_ROLE_ENTITY_NONE; - } - if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { - state->handler = entity3; - return XML_ROLE_ENTITY_NONE; - } - break; - case XML_TOK_LITERAL: - state->handler = declClose; - state->role_none = XML_ROLE_ENTITY_NONE; - return XML_ROLE_ENTITY_VALUE; - } - return common(state, tok); -} - -static int PTRCALL -entity3(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ENTITY_NONE; - case XML_TOK_LITERAL: - state->handler = entity4; - return XML_ROLE_ENTITY_PUBLIC_ID; - } - return common(state, tok); -} - -static int PTRCALL -entity4(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ENTITY_NONE; - case XML_TOK_LITERAL: - state->handler = entity5; - return XML_ROLE_ENTITY_SYSTEM_ID; - } - return common(state, tok); -} - -static int PTRCALL -entity5(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ENTITY_NONE; - case XML_TOK_DECL_CLOSE: - setTopLevel(state); - return XML_ROLE_ENTITY_COMPLETE; - case XML_TOK_NAME: - if (XmlNameMatchesAscii(enc, ptr, end, KW_NDATA)) { - state->handler = entity6; - return XML_ROLE_ENTITY_NONE; - } - break; - } - return common(state, tok); -} - -static int PTRCALL -entity6(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ENTITY_NONE; - case XML_TOK_NAME: - state->handler = declClose; - state->role_none = XML_ROLE_ENTITY_NONE; - return XML_ROLE_ENTITY_NOTATION_NAME; - } - return common(state, tok); -} - -static int PTRCALL -entity7(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ENTITY_NONE; - case XML_TOK_NAME: - if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { - state->handler = entity9; - return XML_ROLE_ENTITY_NONE; - } - if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { - state->handler = entity8; - return XML_ROLE_ENTITY_NONE; - } - break; - case XML_TOK_LITERAL: - state->handler = declClose; - state->role_none = XML_ROLE_ENTITY_NONE; - return XML_ROLE_ENTITY_VALUE; - } - return common(state, tok); -} - -static int PTRCALL -entity8(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ENTITY_NONE; - case XML_TOK_LITERAL: - state->handler = entity9; - return XML_ROLE_ENTITY_PUBLIC_ID; - } - return common(state, tok); -} - -static int PTRCALL -entity9(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ENTITY_NONE; - case XML_TOK_LITERAL: - state->handler = entity10; - return XML_ROLE_ENTITY_SYSTEM_ID; - } - return common(state, tok); -} - -static int PTRCALL -entity10(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ENTITY_NONE; - case XML_TOK_DECL_CLOSE: - setTopLevel(state); - return XML_ROLE_ENTITY_COMPLETE; - } - return common(state, tok); -} - -static int PTRCALL -notation0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NOTATION_NONE; - case XML_TOK_NAME: - state->handler = notation1; - return XML_ROLE_NOTATION_NAME; - } - return common(state, tok); -} - -static int PTRCALL -notation1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NOTATION_NONE; - case XML_TOK_NAME: - if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { - state->handler = notation3; - return XML_ROLE_NOTATION_NONE; - } - if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { - state->handler = notation2; - return XML_ROLE_NOTATION_NONE; - } - break; - } - return common(state, tok); -} - -static int PTRCALL -notation2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NOTATION_NONE; - case XML_TOK_LITERAL: - state->handler = notation4; - return XML_ROLE_NOTATION_PUBLIC_ID; - } - return common(state, tok); -} - -static int PTRCALL -notation3(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NOTATION_NONE; - case XML_TOK_LITERAL: - state->handler = declClose; - state->role_none = XML_ROLE_NOTATION_NONE; - return XML_ROLE_NOTATION_SYSTEM_ID; - } - return common(state, tok); -} - -static int PTRCALL -notation4(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NOTATION_NONE; - case XML_TOK_LITERAL: - state->handler = declClose; - state->role_none = XML_ROLE_NOTATION_NONE; - return XML_ROLE_NOTATION_SYSTEM_ID; - case XML_TOK_DECL_CLOSE: - setTopLevel(state); - return XML_ROLE_NOTATION_NO_SYSTEM_ID; - } - return common(state, tok); -} - -static int PTRCALL -attlist0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ATTLIST_NONE; - case XML_TOK_NAME: - case XML_TOK_PREFIXED_NAME: - state->handler = attlist1; - return XML_ROLE_ATTLIST_ELEMENT_NAME; - } - return common(state, tok); -} - -static int PTRCALL -attlist1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ATTLIST_NONE; - case XML_TOK_DECL_CLOSE: - setTopLevel(state); - return XML_ROLE_ATTLIST_NONE; - case XML_TOK_NAME: - case XML_TOK_PREFIXED_NAME: - state->handler = attlist2; - return XML_ROLE_ATTRIBUTE_NAME; - } - return common(state, tok); -} - -static int PTRCALL -attlist2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ATTLIST_NONE; - case XML_TOK_NAME: - { - static const char * const types[] = { - KW_CDATA, - KW_ID, - KW_IDREF, - KW_IDREFS, - KW_ENTITY, - KW_ENTITIES, - KW_NMTOKEN, - KW_NMTOKENS, - }; - int i; - for (i = 0; i < (int)(sizeof(types)/sizeof(types[0])); i++) - if (XmlNameMatchesAscii(enc, ptr, end, types[i])) { - state->handler = attlist8; - return XML_ROLE_ATTRIBUTE_TYPE_CDATA + i; - } - } - if (XmlNameMatchesAscii(enc, ptr, end, KW_NOTATION)) { - state->handler = attlist5; - return XML_ROLE_ATTLIST_NONE; - } - break; - case XML_TOK_OPEN_PAREN: - state->handler = attlist3; - return XML_ROLE_ATTLIST_NONE; - } - return common(state, tok); -} - -static int PTRCALL -attlist3(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ATTLIST_NONE; - case XML_TOK_NMTOKEN: - case XML_TOK_NAME: - case XML_TOK_PREFIXED_NAME: - state->handler = attlist4; - return XML_ROLE_ATTRIBUTE_ENUM_VALUE; - } - return common(state, tok); -} - -static int PTRCALL -attlist4(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ATTLIST_NONE; - case XML_TOK_CLOSE_PAREN: - state->handler = attlist8; - return XML_ROLE_ATTLIST_NONE; - case XML_TOK_OR: - state->handler = attlist3; - return XML_ROLE_ATTLIST_NONE; - } - return common(state, tok); -} - -static int PTRCALL -attlist5(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ATTLIST_NONE; - case XML_TOK_OPEN_PAREN: - state->handler = attlist6; - return XML_ROLE_ATTLIST_NONE; - } - return common(state, tok); -} - -static int PTRCALL -attlist6(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ATTLIST_NONE; - case XML_TOK_NAME: - state->handler = attlist7; - return XML_ROLE_ATTRIBUTE_NOTATION_VALUE; - } - return common(state, tok); -} - -static int PTRCALL -attlist7(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ATTLIST_NONE; - case XML_TOK_CLOSE_PAREN: - state->handler = attlist8; - return XML_ROLE_ATTLIST_NONE; - case XML_TOK_OR: - state->handler = attlist6; - return XML_ROLE_ATTLIST_NONE; - } - return common(state, tok); -} - -/* default value */ -static int PTRCALL -attlist8(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ATTLIST_NONE; - case XML_TOK_POUND_NAME: - if (XmlNameMatchesAscii(enc, - ptr + MIN_BYTES_PER_CHAR(enc), - end, - KW_IMPLIED)) { - state->handler = attlist1; - return XML_ROLE_IMPLIED_ATTRIBUTE_VALUE; - } - if (XmlNameMatchesAscii(enc, - ptr + MIN_BYTES_PER_CHAR(enc), - end, - KW_REQUIRED)) { - state->handler = attlist1; - return XML_ROLE_REQUIRED_ATTRIBUTE_VALUE; - } - if (XmlNameMatchesAscii(enc, - ptr + MIN_BYTES_PER_CHAR(enc), - end, - KW_FIXED)) { - state->handler = attlist9; - return XML_ROLE_ATTLIST_NONE; - } - break; - case XML_TOK_LITERAL: - state->handler = attlist1; - return XML_ROLE_DEFAULT_ATTRIBUTE_VALUE; - } - return common(state, tok); -} - -static int PTRCALL -attlist9(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ATTLIST_NONE; - case XML_TOK_LITERAL: - state->handler = attlist1; - return XML_ROLE_FIXED_ATTRIBUTE_VALUE; - } - return common(state, tok); -} - -static int PTRCALL -element0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ELEMENT_NONE; - case XML_TOK_NAME: - case XML_TOK_PREFIXED_NAME: - state->handler = element1; - return XML_ROLE_ELEMENT_NAME; - } - return common(state, tok); -} - -static int PTRCALL -element1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ELEMENT_NONE; - case XML_TOK_NAME: - if (XmlNameMatchesAscii(enc, ptr, end, KW_EMPTY)) { - state->handler = declClose; - state->role_none = XML_ROLE_ELEMENT_NONE; - return XML_ROLE_CONTENT_EMPTY; - } - if (XmlNameMatchesAscii(enc, ptr, end, KW_ANY)) { - state->handler = declClose; - state->role_none = XML_ROLE_ELEMENT_NONE; - return XML_ROLE_CONTENT_ANY; - } - break; - case XML_TOK_OPEN_PAREN: - state->handler = element2; - state->level = 1; - return XML_ROLE_GROUP_OPEN; - } - return common(state, tok); -} - -static int PTRCALL -element2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ELEMENT_NONE; - case XML_TOK_POUND_NAME: - if (XmlNameMatchesAscii(enc, - ptr + MIN_BYTES_PER_CHAR(enc), - end, - KW_PCDATA)) { - state->handler = element3; - return XML_ROLE_CONTENT_PCDATA; - } - break; - case XML_TOK_OPEN_PAREN: - state->level = 2; - state->handler = element6; - return XML_ROLE_GROUP_OPEN; - case XML_TOK_NAME: - case XML_TOK_PREFIXED_NAME: - state->handler = element7; - return XML_ROLE_CONTENT_ELEMENT; - case XML_TOK_NAME_QUESTION: - state->handler = element7; - return XML_ROLE_CONTENT_ELEMENT_OPT; - case XML_TOK_NAME_ASTERISK: - state->handler = element7; - return XML_ROLE_CONTENT_ELEMENT_REP; - case XML_TOK_NAME_PLUS: - state->handler = element7; - return XML_ROLE_CONTENT_ELEMENT_PLUS; - } - return common(state, tok); -} - -static int PTRCALL -element3(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ELEMENT_NONE; - case XML_TOK_CLOSE_PAREN: - state->handler = declClose; - state->role_none = XML_ROLE_ELEMENT_NONE; - return XML_ROLE_GROUP_CLOSE; - case XML_TOK_CLOSE_PAREN_ASTERISK: - state->handler = declClose; - state->role_none = XML_ROLE_ELEMENT_NONE; - return XML_ROLE_GROUP_CLOSE_REP; - case XML_TOK_OR: - state->handler = element4; - return XML_ROLE_ELEMENT_NONE; - } - return common(state, tok); -} - -static int PTRCALL -element4(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ELEMENT_NONE; - case XML_TOK_NAME: - case XML_TOK_PREFIXED_NAME: - state->handler = element5; - return XML_ROLE_CONTENT_ELEMENT; - } - return common(state, tok); -} - -static int PTRCALL -element5(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ELEMENT_NONE; - case XML_TOK_CLOSE_PAREN_ASTERISK: - state->handler = declClose; - state->role_none = XML_ROLE_ELEMENT_NONE; - return XML_ROLE_GROUP_CLOSE_REP; - case XML_TOK_OR: - state->handler = element4; - return XML_ROLE_ELEMENT_NONE; - } - return common(state, tok); -} - -static int PTRCALL -element6(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ELEMENT_NONE; - case XML_TOK_OPEN_PAREN: - state->level += 1; - return XML_ROLE_GROUP_OPEN; - case XML_TOK_NAME: - case XML_TOK_PREFIXED_NAME: - state->handler = element7; - return XML_ROLE_CONTENT_ELEMENT; - case XML_TOK_NAME_QUESTION: - state->handler = element7; - return XML_ROLE_CONTENT_ELEMENT_OPT; - case XML_TOK_NAME_ASTERISK: - state->handler = element7; - return XML_ROLE_CONTENT_ELEMENT_REP; - case XML_TOK_NAME_PLUS: - state->handler = element7; - return XML_ROLE_CONTENT_ELEMENT_PLUS; - } - return common(state, tok); -} - -static int PTRCALL -element7(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_ELEMENT_NONE; - case XML_TOK_CLOSE_PAREN: - state->level -= 1; - if (state->level == 0) { - state->handler = declClose; - state->role_none = XML_ROLE_ELEMENT_NONE; - } - return XML_ROLE_GROUP_CLOSE; - case XML_TOK_CLOSE_PAREN_ASTERISK: - state->level -= 1; - if (state->level == 0) { - state->handler = declClose; - state->role_none = XML_ROLE_ELEMENT_NONE; - } - return XML_ROLE_GROUP_CLOSE_REP; - case XML_TOK_CLOSE_PAREN_QUESTION: - state->level -= 1; - if (state->level == 0) { - state->handler = declClose; - state->role_none = XML_ROLE_ELEMENT_NONE; - } - return XML_ROLE_GROUP_CLOSE_OPT; - case XML_TOK_CLOSE_PAREN_PLUS: - state->level -= 1; - if (state->level == 0) { - state->handler = declClose; - state->role_none = XML_ROLE_ELEMENT_NONE; - } - return XML_ROLE_GROUP_CLOSE_PLUS; - case XML_TOK_COMMA: - state->handler = element6; - return XML_ROLE_GROUP_SEQUENCE; - case XML_TOK_OR: - state->handler = element6; - return XML_ROLE_GROUP_CHOICE; - } - return common(state, tok); -} - -#ifdef XML_DTD - -static int PTRCALL -condSect0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_NAME: - if (XmlNameMatchesAscii(enc, ptr, end, KW_INCLUDE)) { - state->handler = condSect1; - return XML_ROLE_NONE; - } - if (XmlNameMatchesAscii(enc, ptr, end, KW_IGNORE)) { - state->handler = condSect2; - return XML_ROLE_NONE; - } - break; - } - return common(state, tok); -} - -static int PTRCALL -condSect1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_OPEN_BRACKET: - state->handler = externalSubset1; - state->includeLevel += 1; - return XML_ROLE_NONE; - } - return common(state, tok); -} - -static int PTRCALL -condSect2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_OPEN_BRACKET: - state->handler = externalSubset1; - return XML_ROLE_IGNORE_SECT; - } - return common(state, tok); -} - -#endif /* XML_DTD */ - -static int PTRCALL -declClose(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return state->role_none; - case XML_TOK_DECL_CLOSE: - setTopLevel(state); - return state->role_none; - } - return common(state, tok); -} - -static int PTRCALL -error(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - return XML_ROLE_NONE; -} - -static int FASTCALL -common(PROLOG_STATE *state, int tok) -{ -#ifdef XML_DTD - if (!state->documentEntity && tok == XML_TOK_PARAM_ENTITY_REF) - return XML_ROLE_INNER_PARAM_ENTITY_REF; -#endif - state->handler = error; - return XML_ROLE_ERROR; -} - -void -XmlPrologStateInit(PROLOG_STATE *state) -{ - state->handler = prolog0; -#ifdef XML_DTD - state->documentEntity = 1; - state->includeLevel = 0; - state->inEntityValue = 0; -#endif /* XML_DTD */ -} - -#ifdef XML_DTD - -void -XmlPrologStateInitExternalEntity(PROLOG_STATE *state) -{ - state->handler = externalSubset0; - state->documentEntity = 0; - state->includeLevel = 0; -} - -#endif /* XML_DTD */ diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmlrole.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmlrole.h deleted file mode 100644 index 4dd9f06..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmlrole.h +++ /dev/null @@ -1,114 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -#ifndef XmlRole_INCLUDED -#define XmlRole_INCLUDED 1 - -#ifdef __VMS -/* 0 1 2 3 0 1 2 3 - 1234567890123456789012345678901 1234567890123456789012345678901 */ -#define XmlPrologStateInitExternalEntity XmlPrologStateInitExternalEnt -#endif - -#include "xmltok.h" - -#ifdef __cplusplus -extern "C" { -#endif - -enum { - XML_ROLE_ERROR = -1, - XML_ROLE_NONE = 0, - XML_ROLE_XML_DECL, - XML_ROLE_INSTANCE_START, - XML_ROLE_DOCTYPE_NONE, - XML_ROLE_DOCTYPE_NAME, - XML_ROLE_DOCTYPE_SYSTEM_ID, - XML_ROLE_DOCTYPE_PUBLIC_ID, - XML_ROLE_DOCTYPE_INTERNAL_SUBSET, - XML_ROLE_DOCTYPE_CLOSE, - XML_ROLE_GENERAL_ENTITY_NAME, - XML_ROLE_PARAM_ENTITY_NAME, - XML_ROLE_ENTITY_NONE, - XML_ROLE_ENTITY_VALUE, - XML_ROLE_ENTITY_SYSTEM_ID, - XML_ROLE_ENTITY_PUBLIC_ID, - XML_ROLE_ENTITY_COMPLETE, - XML_ROLE_ENTITY_NOTATION_NAME, - XML_ROLE_NOTATION_NONE, - XML_ROLE_NOTATION_NAME, - XML_ROLE_NOTATION_SYSTEM_ID, - XML_ROLE_NOTATION_NO_SYSTEM_ID, - XML_ROLE_NOTATION_PUBLIC_ID, - XML_ROLE_ATTRIBUTE_NAME, - XML_ROLE_ATTRIBUTE_TYPE_CDATA, - XML_ROLE_ATTRIBUTE_TYPE_ID, - XML_ROLE_ATTRIBUTE_TYPE_IDREF, - XML_ROLE_ATTRIBUTE_TYPE_IDREFS, - XML_ROLE_ATTRIBUTE_TYPE_ENTITY, - XML_ROLE_ATTRIBUTE_TYPE_ENTITIES, - XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN, - XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS, - XML_ROLE_ATTRIBUTE_ENUM_VALUE, - XML_ROLE_ATTRIBUTE_NOTATION_VALUE, - XML_ROLE_ATTLIST_NONE, - XML_ROLE_ATTLIST_ELEMENT_NAME, - XML_ROLE_IMPLIED_ATTRIBUTE_VALUE, - XML_ROLE_REQUIRED_ATTRIBUTE_VALUE, - XML_ROLE_DEFAULT_ATTRIBUTE_VALUE, - XML_ROLE_FIXED_ATTRIBUTE_VALUE, - XML_ROLE_ELEMENT_NONE, - XML_ROLE_ELEMENT_NAME, - XML_ROLE_CONTENT_ANY, - XML_ROLE_CONTENT_EMPTY, - XML_ROLE_CONTENT_PCDATA, - XML_ROLE_GROUP_OPEN, - XML_ROLE_GROUP_CLOSE, - XML_ROLE_GROUP_CLOSE_REP, - XML_ROLE_GROUP_CLOSE_OPT, - XML_ROLE_GROUP_CLOSE_PLUS, - XML_ROLE_GROUP_CHOICE, - XML_ROLE_GROUP_SEQUENCE, - XML_ROLE_CONTENT_ELEMENT, - XML_ROLE_CONTENT_ELEMENT_REP, - XML_ROLE_CONTENT_ELEMENT_OPT, - XML_ROLE_CONTENT_ELEMENT_PLUS, - XML_ROLE_PI, - XML_ROLE_COMMENT, -#ifdef XML_DTD - XML_ROLE_TEXT_DECL, - XML_ROLE_IGNORE_SECT, - XML_ROLE_INNER_PARAM_ENTITY_REF, -#endif /* XML_DTD */ - XML_ROLE_PARAM_ENTITY_REF -}; - -typedef struct prolog_state { - int (PTRCALL *handler) (struct prolog_state *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc); - unsigned level; - int role_none; -#ifdef XML_DTD - unsigned includeLevel; - int documentEntity; - int inEntityValue; -#endif /* XML_DTD */ -} PROLOG_STATE; - -void XmlPrologStateInit(PROLOG_STATE *); -#ifdef XML_DTD -void XmlPrologStateInitExternalEntity(PROLOG_STATE *); -#endif /* XML_DTD */ - -#define XmlTokenRole(state, tok, ptr, end, enc) \ - (((state)->handler)(state, tok, ptr, end, enc)) - -#ifdef __cplusplus -} -#endif - -#endif /* not XmlRole_INCLUDED */ diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmltok.c b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmltok.c deleted file mode 100644 index bf09dfc..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmltok.c +++ /dev/null @@ -1,1651 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -#include - -#ifdef COMPILED_FROM_DSP -#include "winconfig.h" -#elif defined(MACOS_CLASSIC) -#include "macconfig.h" -#elif defined(__amigaos__) -#include "amigaconfig.h" -#elif defined(__WATCOMC__) -#include "watcomconfig.h" -#else -#ifdef HAVE_EXPAT_CONFIG_H -#include -#endif -#endif /* ndef COMPILED_FROM_DSP */ - -#include "expat_external.h" -#include "internal.h" -#include "xmltok.h" -#include "nametab.h" - -#ifdef XML_DTD -#define IGNORE_SECTION_TOK_VTABLE , PREFIX(ignoreSectionTok) -#else -#define IGNORE_SECTION_TOK_VTABLE /* as nothing */ -#endif - -#define VTABLE1 \ - { PREFIX(prologTok), PREFIX(contentTok), \ - PREFIX(cdataSectionTok) IGNORE_SECTION_TOK_VTABLE }, \ - { PREFIX(attributeValueTok), PREFIX(entityValueTok) }, \ - PREFIX(sameName), \ - PREFIX(nameMatchesAscii), \ - PREFIX(nameLength), \ - PREFIX(skipS), \ - PREFIX(getAtts), \ - PREFIX(charRefNumber), \ - PREFIX(predefinedEntityName), \ - PREFIX(updatePosition), \ - PREFIX(isPublicId) - -#define VTABLE VTABLE1, PREFIX(toUtf8), PREFIX(toUtf16) - -#define UCS2_GET_NAMING(pages, hi, lo) \ - (namingBitmap[(pages[hi] << 3) + ((lo) >> 5)] & (1 << ((lo) & 0x1F))) - -/* A 2 byte UTF-8 representation splits the characters 11 bits between - the bottom 5 and 6 bits of the bytes. We need 8 bits to index into - pages, 3 bits to add to that index and 5 bits to generate the mask. -*/ -#define UTF8_GET_NAMING2(pages, byte) \ - (namingBitmap[((pages)[(((byte)[0]) >> 2) & 7] << 3) \ - + ((((byte)[0]) & 3) << 1) \ - + ((((byte)[1]) >> 5) & 1)] \ - & (1 << (((byte)[1]) & 0x1F))) - -/* A 3 byte UTF-8 representation splits the characters 16 bits between - the bottom 4, 6 and 6 bits of the bytes. We need 8 bits to index - into pages, 3 bits to add to that index and 5 bits to generate the - mask. -*/ -#define UTF8_GET_NAMING3(pages, byte) \ - (namingBitmap[((pages)[((((byte)[0]) & 0xF) << 4) \ - + ((((byte)[1]) >> 2) & 0xF)] \ - << 3) \ - + ((((byte)[1]) & 3) << 1) \ - + ((((byte)[2]) >> 5) & 1)] \ - & (1 << (((byte)[2]) & 0x1F))) - -#define UTF8_GET_NAMING(pages, p, n) \ - ((n) == 2 \ - ? UTF8_GET_NAMING2(pages, (const unsigned char *)(p)) \ - : ((n) == 3 \ - ? UTF8_GET_NAMING3(pages, (const unsigned char *)(p)) \ - : 0)) - -/* Detection of invalid UTF-8 sequences is based on Table 3.1B - of Unicode 3.2: http://www.unicode.org/unicode/reports/tr28/ - with the additional restriction of not allowing the Unicode - code points 0xFFFF and 0xFFFE (sequences EF,BF,BF and EF,BF,BE). - Implementation details: - (A & 0x80) == 0 means A < 0x80 - and - (A & 0xC0) == 0xC0 means A > 0xBF -*/ - -#define UTF8_INVALID2(p) \ - ((*p) < 0xC2 || ((p)[1] & 0x80) == 0 || ((p)[1] & 0xC0) == 0xC0) - -#define UTF8_INVALID3(p) \ - (((p)[2] & 0x80) == 0 \ - || \ - ((*p) == 0xEF && (p)[1] == 0xBF \ - ? \ - (p)[2] > 0xBD \ - : \ - ((p)[2] & 0xC0) == 0xC0) \ - || \ - ((*p) == 0xE0 \ - ? \ - (p)[1] < 0xA0 || ((p)[1] & 0xC0) == 0xC0 \ - : \ - ((p)[1] & 0x80) == 0 \ - || \ - ((*p) == 0xED ? (p)[1] > 0x9F : ((p)[1] & 0xC0) == 0xC0))) - -#define UTF8_INVALID4(p) \ - (((p)[3] & 0x80) == 0 || ((p)[3] & 0xC0) == 0xC0 \ - || \ - ((p)[2] & 0x80) == 0 || ((p)[2] & 0xC0) == 0xC0 \ - || \ - ((*p) == 0xF0 \ - ? \ - (p)[1] < 0x90 || ((p)[1] & 0xC0) == 0xC0 \ - : \ - ((p)[1] & 0x80) == 0 \ - || \ - ((*p) == 0xF4 ? (p)[1] > 0x8F : ((p)[1] & 0xC0) == 0xC0))) - -static int PTRFASTCALL -isNever(const ENCODING *enc, const char *p) -{ - return 0; -} - -static int PTRFASTCALL -utf8_isName2(const ENCODING *enc, const char *p) -{ - return UTF8_GET_NAMING2(namePages, (const unsigned char *)p); -} - -static int PTRFASTCALL -utf8_isName3(const ENCODING *enc, const char *p) -{ - return UTF8_GET_NAMING3(namePages, (const unsigned char *)p); -} - -#define utf8_isName4 isNever - -static int PTRFASTCALL -utf8_isNmstrt2(const ENCODING *enc, const char *p) -{ - return UTF8_GET_NAMING2(nmstrtPages, (const unsigned char *)p); -} - -static int PTRFASTCALL -utf8_isNmstrt3(const ENCODING *enc, const char *p) -{ - return UTF8_GET_NAMING3(nmstrtPages, (const unsigned char *)p); -} - -#define utf8_isNmstrt4 isNever - -static int PTRFASTCALL -utf8_isInvalid2(const ENCODING *enc, const char *p) -{ - return UTF8_INVALID2((const unsigned char *)p); -} - -static int PTRFASTCALL -utf8_isInvalid3(const ENCODING *enc, const char *p) -{ - return UTF8_INVALID3((const unsigned char *)p); -} - -static int PTRFASTCALL -utf8_isInvalid4(const ENCODING *enc, const char *p) -{ - return UTF8_INVALID4((const unsigned char *)p); -} - -struct normal_encoding { - ENCODING enc; - unsigned char type[256]; -#ifdef XML_MIN_SIZE - int (PTRFASTCALL *byteType)(const ENCODING *, const char *); - int (PTRFASTCALL *isNameMin)(const ENCODING *, const char *); - int (PTRFASTCALL *isNmstrtMin)(const ENCODING *, const char *); - int (PTRFASTCALL *byteToAscii)(const ENCODING *, const char *); - int (PTRCALL *charMatches)(const ENCODING *, const char *, int); -#endif /* XML_MIN_SIZE */ - int (PTRFASTCALL *isName2)(const ENCODING *, const char *); - int (PTRFASTCALL *isName3)(const ENCODING *, const char *); - int (PTRFASTCALL *isName4)(const ENCODING *, const char *); - int (PTRFASTCALL *isNmstrt2)(const ENCODING *, const char *); - int (PTRFASTCALL *isNmstrt3)(const ENCODING *, const char *); - int (PTRFASTCALL *isNmstrt4)(const ENCODING *, const char *); - int (PTRFASTCALL *isInvalid2)(const ENCODING *, const char *); - int (PTRFASTCALL *isInvalid3)(const ENCODING *, const char *); - int (PTRFASTCALL *isInvalid4)(const ENCODING *, const char *); -}; - -#define AS_NORMAL_ENCODING(enc) ((const struct normal_encoding *) (enc)) - -#ifdef XML_MIN_SIZE - -#define STANDARD_VTABLE(E) \ - E ## byteType, \ - E ## isNameMin, \ - E ## isNmstrtMin, \ - E ## byteToAscii, \ - E ## charMatches, - -#else - -#define STANDARD_VTABLE(E) /* as nothing */ - -#endif - -#define NORMAL_VTABLE(E) \ - E ## isName2, \ - E ## isName3, \ - E ## isName4, \ - E ## isNmstrt2, \ - E ## isNmstrt3, \ - E ## isNmstrt4, \ - E ## isInvalid2, \ - E ## isInvalid3, \ - E ## isInvalid4 - -static int FASTCALL checkCharRefNumber(int); - -#include "xmltok_impl.h" -#include "ascii.h" - -#ifdef XML_MIN_SIZE -#define sb_isNameMin isNever -#define sb_isNmstrtMin isNever -#endif - -#ifdef XML_MIN_SIZE -#define MINBPC(enc) ((enc)->minBytesPerChar) -#else -/* minimum bytes per character */ -#define MINBPC(enc) 1 -#endif - -#define SB_BYTE_TYPE(enc, p) \ - (((struct normal_encoding *)(enc))->type[(unsigned char)*(p)]) - -#ifdef XML_MIN_SIZE -static int PTRFASTCALL -sb_byteType(const ENCODING *enc, const char *p) -{ - return SB_BYTE_TYPE(enc, p); -} -#define BYTE_TYPE(enc, p) \ - (AS_NORMAL_ENCODING(enc)->byteType(enc, p)) -#else -#define BYTE_TYPE(enc, p) SB_BYTE_TYPE(enc, p) -#endif - -#ifdef XML_MIN_SIZE -#define BYTE_TO_ASCII(enc, p) \ - (AS_NORMAL_ENCODING(enc)->byteToAscii(enc, p)) -static int PTRFASTCALL -sb_byteToAscii(const ENCODING *enc, const char *p) -{ - return *p; -} -#else -#define BYTE_TO_ASCII(enc, p) (*(p)) -#endif - -#define IS_NAME_CHAR(enc, p, n) \ - (AS_NORMAL_ENCODING(enc)->isName ## n(enc, p)) -#define IS_NMSTRT_CHAR(enc, p, n) \ - (AS_NORMAL_ENCODING(enc)->isNmstrt ## n(enc, p)) -#define IS_INVALID_CHAR(enc, p, n) \ - (AS_NORMAL_ENCODING(enc)->isInvalid ## n(enc, p)) - -#ifdef XML_MIN_SIZE -#define IS_NAME_CHAR_MINBPC(enc, p) \ - (AS_NORMAL_ENCODING(enc)->isNameMin(enc, p)) -#define IS_NMSTRT_CHAR_MINBPC(enc, p) \ - (AS_NORMAL_ENCODING(enc)->isNmstrtMin(enc, p)) -#else -#define IS_NAME_CHAR_MINBPC(enc, p) (0) -#define IS_NMSTRT_CHAR_MINBPC(enc, p) (0) -#endif - -#ifdef XML_MIN_SIZE -#define CHAR_MATCHES(enc, p, c) \ - (AS_NORMAL_ENCODING(enc)->charMatches(enc, p, c)) -static int PTRCALL -sb_charMatches(const ENCODING *enc, const char *p, int c) -{ - return *p == c; -} -#else -/* c is an ASCII character */ -#define CHAR_MATCHES(enc, p, c) (*(p) == c) -#endif - -#define PREFIX(ident) normal_ ## ident -#define XML_TOK_IMPL_C -#include "xmltok_impl.c" -#undef XML_TOK_IMPL_C - -#undef MINBPC -#undef BYTE_TYPE -#undef BYTE_TO_ASCII -#undef CHAR_MATCHES -#undef IS_NAME_CHAR -#undef IS_NAME_CHAR_MINBPC -#undef IS_NMSTRT_CHAR -#undef IS_NMSTRT_CHAR_MINBPC -#undef IS_INVALID_CHAR - -enum { /* UTF8_cvalN is value of masked first byte of N byte sequence */ - UTF8_cval1 = 0x00, - UTF8_cval2 = 0xc0, - UTF8_cval3 = 0xe0, - UTF8_cval4 = 0xf0 -}; - -static void PTRCALL -utf8_toUtf8(const ENCODING *enc, - const char **fromP, const char *fromLim, - char **toP, const char *toLim) -{ - char *to; - const char *from; - if (fromLim - *fromP > toLim - *toP) { - /* Avoid copying partial characters. */ - for (fromLim = *fromP + (toLim - *toP); fromLim > *fromP; fromLim--) - if (((unsigned char)fromLim[-1] & 0xc0) != 0x80) - break; - } - for (to = *toP, from = *fromP; from != fromLim; from++, to++) - *to = *from; - *fromP = from; - *toP = to; -} - -static void PTRCALL -utf8_toUtf16(const ENCODING *enc, - const char **fromP, const char *fromLim, - unsigned short **toP, const unsigned short *toLim) -{ - unsigned short *to = *toP; - const char *from = *fromP; - while (from != fromLim && to != toLim) { - switch (((struct normal_encoding *)enc)->type[(unsigned char)*from]) { - case BT_LEAD2: - *to++ = (unsigned short)(((from[0] & 0x1f) << 6) | (from[1] & 0x3f)); - from += 2; - break; - case BT_LEAD3: - *to++ = (unsigned short)(((from[0] & 0xf) << 12) - | ((from[1] & 0x3f) << 6) | (from[2] & 0x3f)); - from += 3; - break; - case BT_LEAD4: - { - unsigned long n; - if (to + 1 == toLim) - goto after; - n = ((from[0] & 0x7) << 18) | ((from[1] & 0x3f) << 12) - | ((from[2] & 0x3f) << 6) | (from[3] & 0x3f); - n -= 0x10000; - to[0] = (unsigned short)((n >> 10) | 0xD800); - to[1] = (unsigned short)((n & 0x3FF) | 0xDC00); - to += 2; - from += 4; - } - break; - default: - *to++ = *from++; - break; - } - } -after: - *fromP = from; - *toP = to; -} - -#ifdef XML_NS -static const struct normal_encoding utf8_encoding_ns = { - { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 }, - { -#include "asciitab.h" -#include "utf8tab.h" - }, - STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_) -}; -#endif - -static const struct normal_encoding utf8_encoding = { - { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 }, - { -#define BT_COLON BT_NMSTRT -#include "asciitab.h" -#undef BT_COLON -#include "utf8tab.h" - }, - STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_) -}; - -#ifdef XML_NS - -static const struct normal_encoding internal_utf8_encoding_ns = { - { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 }, - { -#include "iasciitab.h" -#include "utf8tab.h" - }, - STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_) -}; - -#endif - -static const struct normal_encoding internal_utf8_encoding = { - { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 }, - { -#define BT_COLON BT_NMSTRT -#include "iasciitab.h" -#undef BT_COLON -#include "utf8tab.h" - }, - STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_) -}; - -static void PTRCALL -latin1_toUtf8(const ENCODING *enc, - const char **fromP, const char *fromLim, - char **toP, const char *toLim) -{ - for (;;) { - unsigned char c; - if (*fromP == fromLim) - break; - c = (unsigned char)**fromP; - if (c & 0x80) { - if (toLim - *toP < 2) - break; - *(*toP)++ = (char)((c >> 6) | UTF8_cval2); - *(*toP)++ = (char)((c & 0x3f) | 0x80); - (*fromP)++; - } - else { - if (*toP == toLim) - break; - *(*toP)++ = *(*fromP)++; - } - } -} - -static void PTRCALL -latin1_toUtf16(const ENCODING *enc, - const char **fromP, const char *fromLim, - unsigned short **toP, const unsigned short *toLim) -{ - while (*fromP != fromLim && *toP != toLim) - *(*toP)++ = (unsigned char)*(*fromP)++; -} - -#ifdef XML_NS - -static const struct normal_encoding latin1_encoding_ns = { - { VTABLE1, latin1_toUtf8, latin1_toUtf16, 1, 0, 0 }, - { -#include "asciitab.h" -#include "latin1tab.h" - }, - STANDARD_VTABLE(sb_) -}; - -#endif - -static const struct normal_encoding latin1_encoding = { - { VTABLE1, latin1_toUtf8, latin1_toUtf16, 1, 0, 0 }, - { -#define BT_COLON BT_NMSTRT -#include "asciitab.h" -#undef BT_COLON -#include "latin1tab.h" - }, - STANDARD_VTABLE(sb_) -}; - -static void PTRCALL -ascii_toUtf8(const ENCODING *enc, - const char **fromP, const char *fromLim, - char **toP, const char *toLim) -{ - while (*fromP != fromLim && *toP != toLim) - *(*toP)++ = *(*fromP)++; -} - -#ifdef XML_NS - -static const struct normal_encoding ascii_encoding_ns = { - { VTABLE1, ascii_toUtf8, latin1_toUtf16, 1, 1, 0 }, - { -#include "asciitab.h" -/* BT_NONXML == 0 */ - }, - STANDARD_VTABLE(sb_) -}; - -#endif - -static const struct normal_encoding ascii_encoding = { - { VTABLE1, ascii_toUtf8, latin1_toUtf16, 1, 1, 0 }, - { -#define BT_COLON BT_NMSTRT -#include "asciitab.h" -#undef BT_COLON -/* BT_NONXML == 0 */ - }, - STANDARD_VTABLE(sb_) -}; - -static int PTRFASTCALL -unicode_byte_type(char hi, char lo) -{ - switch ((unsigned char)hi) { - case 0xD8: case 0xD9: case 0xDA: case 0xDB: - return BT_LEAD4; - case 0xDC: case 0xDD: case 0xDE: case 0xDF: - return BT_TRAIL; - case 0xFF: - switch ((unsigned char)lo) { - case 0xFF: - case 0xFE: - return BT_NONXML; - } - break; - } - return BT_NONASCII; -} - -#define DEFINE_UTF16_TO_UTF8(E) \ -static void PTRCALL \ -E ## toUtf8(const ENCODING *enc, \ - const char **fromP, const char *fromLim, \ - char **toP, const char *toLim) \ -{ \ - const char *from; \ - for (from = *fromP; from != fromLim; from += 2) { \ - int plane; \ - unsigned char lo2; \ - unsigned char lo = GET_LO(from); \ - unsigned char hi = GET_HI(from); \ - switch (hi) { \ - case 0: \ - if (lo < 0x80) { \ - if (*toP == toLim) { \ - *fromP = from; \ - return; \ - } \ - *(*toP)++ = lo; \ - break; \ - } \ - /* fall through */ \ - case 0x1: case 0x2: case 0x3: \ - case 0x4: case 0x5: case 0x6: case 0x7: \ - if (toLim - *toP < 2) { \ - *fromP = from; \ - return; \ - } \ - *(*toP)++ = ((lo >> 6) | (hi << 2) | UTF8_cval2); \ - *(*toP)++ = ((lo & 0x3f) | 0x80); \ - break; \ - default: \ - if (toLim - *toP < 3) { \ - *fromP = from; \ - return; \ - } \ - /* 16 bits divided 4, 6, 6 amongst 3 bytes */ \ - *(*toP)++ = ((hi >> 4) | UTF8_cval3); \ - *(*toP)++ = (((hi & 0xf) << 2) | (lo >> 6) | 0x80); \ - *(*toP)++ = ((lo & 0x3f) | 0x80); \ - break; \ - case 0xD8: case 0xD9: case 0xDA: case 0xDB: \ - if (toLim - *toP < 4) { \ - *fromP = from; \ - return; \ - } \ - plane = (((hi & 0x3) << 2) | ((lo >> 6) & 0x3)) + 1; \ - *(*toP)++ = ((plane >> 2) | UTF8_cval4); \ - *(*toP)++ = (((lo >> 2) & 0xF) | ((plane & 0x3) << 4) | 0x80); \ - from += 2; \ - lo2 = GET_LO(from); \ - *(*toP)++ = (((lo & 0x3) << 4) \ - | ((GET_HI(from) & 0x3) << 2) \ - | (lo2 >> 6) \ - | 0x80); \ - *(*toP)++ = ((lo2 & 0x3f) | 0x80); \ - break; \ - } \ - } \ - *fromP = from; \ -} - -#define DEFINE_UTF16_TO_UTF16(E) \ -static void PTRCALL \ -E ## toUtf16(const ENCODING *enc, \ - const char **fromP, const char *fromLim, \ - unsigned short **toP, const unsigned short *toLim) \ -{ \ - /* Avoid copying first half only of surrogate */ \ - if (fromLim - *fromP > ((toLim - *toP) << 1) \ - && (GET_HI(fromLim - 2) & 0xF8) == 0xD8) \ - fromLim -= 2; \ - for (; *fromP != fromLim && *toP != toLim; *fromP += 2) \ - *(*toP)++ = (GET_HI(*fromP) << 8) | GET_LO(*fromP); \ -} - -#define SET2(ptr, ch) \ - (((ptr)[0] = ((ch) & 0xff)), ((ptr)[1] = ((ch) >> 8))) -#define GET_LO(ptr) ((unsigned char)(ptr)[0]) -#define GET_HI(ptr) ((unsigned char)(ptr)[1]) - -DEFINE_UTF16_TO_UTF8(little2_) -DEFINE_UTF16_TO_UTF16(little2_) - -#undef SET2 -#undef GET_LO -#undef GET_HI - -#define SET2(ptr, ch) \ - (((ptr)[0] = ((ch) >> 8)), ((ptr)[1] = ((ch) & 0xFF))) -#define GET_LO(ptr) ((unsigned char)(ptr)[1]) -#define GET_HI(ptr) ((unsigned char)(ptr)[0]) - -DEFINE_UTF16_TO_UTF8(big2_) -DEFINE_UTF16_TO_UTF16(big2_) - -#undef SET2 -#undef GET_LO -#undef GET_HI - -#define LITTLE2_BYTE_TYPE(enc, p) \ - ((p)[1] == 0 \ - ? ((struct normal_encoding *)(enc))->type[(unsigned char)*(p)] \ - : unicode_byte_type((p)[1], (p)[0])) -#define LITTLE2_BYTE_TO_ASCII(enc, p) ((p)[1] == 0 ? (p)[0] : -1) -#define LITTLE2_CHAR_MATCHES(enc, p, c) ((p)[1] == 0 && (p)[0] == c) -#define LITTLE2_IS_NAME_CHAR_MINBPC(enc, p) \ - UCS2_GET_NAMING(namePages, (unsigned char)p[1], (unsigned char)p[0]) -#define LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p) \ - UCS2_GET_NAMING(nmstrtPages, (unsigned char)p[1], (unsigned char)p[0]) - -#ifdef XML_MIN_SIZE - -static int PTRFASTCALL -little2_byteType(const ENCODING *enc, const char *p) -{ - return LITTLE2_BYTE_TYPE(enc, p); -} - -static int PTRFASTCALL -little2_byteToAscii(const ENCODING *enc, const char *p) -{ - return LITTLE2_BYTE_TO_ASCII(enc, p); -} - -static int PTRCALL -little2_charMatches(const ENCODING *enc, const char *p, int c) -{ - return LITTLE2_CHAR_MATCHES(enc, p, c); -} - -static int PTRFASTCALL -little2_isNameMin(const ENCODING *enc, const char *p) -{ - return LITTLE2_IS_NAME_CHAR_MINBPC(enc, p); -} - -static int PTRFASTCALL -little2_isNmstrtMin(const ENCODING *enc, const char *p) -{ - return LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p); -} - -#undef VTABLE -#define VTABLE VTABLE1, little2_toUtf8, little2_toUtf16 - -#else /* not XML_MIN_SIZE */ - -#undef PREFIX -#define PREFIX(ident) little2_ ## ident -#define MINBPC(enc) 2 -/* CHAR_MATCHES is guaranteed to have MINBPC bytes available. */ -#define BYTE_TYPE(enc, p) LITTLE2_BYTE_TYPE(enc, p) -#define BYTE_TO_ASCII(enc, p) LITTLE2_BYTE_TO_ASCII(enc, p) -#define CHAR_MATCHES(enc, p, c) LITTLE2_CHAR_MATCHES(enc, p, c) -#define IS_NAME_CHAR(enc, p, n) 0 -#define IS_NAME_CHAR_MINBPC(enc, p) LITTLE2_IS_NAME_CHAR_MINBPC(enc, p) -#define IS_NMSTRT_CHAR(enc, p, n) (0) -#define IS_NMSTRT_CHAR_MINBPC(enc, p) LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p) - -#define XML_TOK_IMPL_C -#include "xmltok_impl.c" -#undef XML_TOK_IMPL_C - -#undef MINBPC -#undef BYTE_TYPE -#undef BYTE_TO_ASCII -#undef CHAR_MATCHES -#undef IS_NAME_CHAR -#undef IS_NAME_CHAR_MINBPC -#undef IS_NMSTRT_CHAR -#undef IS_NMSTRT_CHAR_MINBPC -#undef IS_INVALID_CHAR - -#endif /* not XML_MIN_SIZE */ - -#ifdef XML_NS - -static const struct normal_encoding little2_encoding_ns = { - { VTABLE, 2, 0, -#if BYTEORDER == 1234 - 1 -#else - 0 -#endif - }, - { -#include "asciitab.h" -#include "latin1tab.h" - }, - STANDARD_VTABLE(little2_) -}; - -#endif - -static const struct normal_encoding little2_encoding = { - { VTABLE, 2, 0, -#if BYTEORDER == 1234 - 1 -#else - 0 -#endif - }, - { -#define BT_COLON BT_NMSTRT -#include "asciitab.h" -#undef BT_COLON -#include "latin1tab.h" - }, - STANDARD_VTABLE(little2_) -}; - -#if BYTEORDER != 4321 - -#ifdef XML_NS - -static const struct normal_encoding internal_little2_encoding_ns = { - { VTABLE, 2, 0, 1 }, - { -#include "iasciitab.h" -#include "latin1tab.h" - }, - STANDARD_VTABLE(little2_) -}; - -#endif - -static const struct normal_encoding internal_little2_encoding = { - { VTABLE, 2, 0, 1 }, - { -#define BT_COLON BT_NMSTRT -#include "iasciitab.h" -#undef BT_COLON -#include "latin1tab.h" - }, - STANDARD_VTABLE(little2_) -}; - -#endif - - -#define BIG2_BYTE_TYPE(enc, p) \ - ((p)[0] == 0 \ - ? ((struct normal_encoding *)(enc))->type[(unsigned char)(p)[1]] \ - : unicode_byte_type((p)[0], (p)[1])) -#define BIG2_BYTE_TO_ASCII(enc, p) ((p)[0] == 0 ? (p)[1] : -1) -#define BIG2_CHAR_MATCHES(enc, p, c) ((p)[0] == 0 && (p)[1] == c) -#define BIG2_IS_NAME_CHAR_MINBPC(enc, p) \ - UCS2_GET_NAMING(namePages, (unsigned char)p[0], (unsigned char)p[1]) -#define BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p) \ - UCS2_GET_NAMING(nmstrtPages, (unsigned char)p[0], (unsigned char)p[1]) - -#ifdef XML_MIN_SIZE - -static int PTRFASTCALL -big2_byteType(const ENCODING *enc, const char *p) -{ - return BIG2_BYTE_TYPE(enc, p); -} - -static int PTRFASTCALL -big2_byteToAscii(const ENCODING *enc, const char *p) -{ - return BIG2_BYTE_TO_ASCII(enc, p); -} - -static int PTRCALL -big2_charMatches(const ENCODING *enc, const char *p, int c) -{ - return BIG2_CHAR_MATCHES(enc, p, c); -} - -static int PTRFASTCALL -big2_isNameMin(const ENCODING *enc, const char *p) -{ - return BIG2_IS_NAME_CHAR_MINBPC(enc, p); -} - -static int PTRFASTCALL -big2_isNmstrtMin(const ENCODING *enc, const char *p) -{ - return BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p); -} - -#undef VTABLE -#define VTABLE VTABLE1, big2_toUtf8, big2_toUtf16 - -#else /* not XML_MIN_SIZE */ - -#undef PREFIX -#define PREFIX(ident) big2_ ## ident -#define MINBPC(enc) 2 -/* CHAR_MATCHES is guaranteed to have MINBPC bytes available. */ -#define BYTE_TYPE(enc, p) BIG2_BYTE_TYPE(enc, p) -#define BYTE_TO_ASCII(enc, p) BIG2_BYTE_TO_ASCII(enc, p) -#define CHAR_MATCHES(enc, p, c) BIG2_CHAR_MATCHES(enc, p, c) -#define IS_NAME_CHAR(enc, p, n) 0 -#define IS_NAME_CHAR_MINBPC(enc, p) BIG2_IS_NAME_CHAR_MINBPC(enc, p) -#define IS_NMSTRT_CHAR(enc, p, n) (0) -#define IS_NMSTRT_CHAR_MINBPC(enc, p) BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p) - -#define XML_TOK_IMPL_C -#include "xmltok_impl.c" -#undef XML_TOK_IMPL_C - -#undef MINBPC -#undef BYTE_TYPE -#undef BYTE_TO_ASCII -#undef CHAR_MATCHES -#undef IS_NAME_CHAR -#undef IS_NAME_CHAR_MINBPC -#undef IS_NMSTRT_CHAR -#undef IS_NMSTRT_CHAR_MINBPC -#undef IS_INVALID_CHAR - -#endif /* not XML_MIN_SIZE */ - -#ifdef XML_NS - -static const struct normal_encoding big2_encoding_ns = { - { VTABLE, 2, 0, -#if BYTEORDER == 4321 - 1 -#else - 0 -#endif - }, - { -#include "asciitab.h" -#include "latin1tab.h" - }, - STANDARD_VTABLE(big2_) -}; - -#endif - -static const struct normal_encoding big2_encoding = { - { VTABLE, 2, 0, -#if BYTEORDER == 4321 - 1 -#else - 0 -#endif - }, - { -#define BT_COLON BT_NMSTRT -#include "asciitab.h" -#undef BT_COLON -#include "latin1tab.h" - }, - STANDARD_VTABLE(big2_) -}; - -#if BYTEORDER != 1234 - -#ifdef XML_NS - -static const struct normal_encoding internal_big2_encoding_ns = { - { VTABLE, 2, 0, 1 }, - { -#include "iasciitab.h" -#include "latin1tab.h" - }, - STANDARD_VTABLE(big2_) -}; - -#endif - -static const struct normal_encoding internal_big2_encoding = { - { VTABLE, 2, 0, 1 }, - { -#define BT_COLON BT_NMSTRT -#include "iasciitab.h" -#undef BT_COLON -#include "latin1tab.h" - }, - STANDARD_VTABLE(big2_) -}; - -#endif - -#undef PREFIX - -static int FASTCALL -streqci(const char *s1, const char *s2) -{ - for (;;) { - char c1 = *s1++; - char c2 = *s2++; - if (ASCII_a <= c1 && c1 <= ASCII_z) - c1 += ASCII_A - ASCII_a; - if (ASCII_a <= c2 && c2 <= ASCII_z) - c2 += ASCII_A - ASCII_a; - if (c1 != c2) - return 0; - if (!c1) - break; - } - return 1; -} - -static void PTRCALL -initUpdatePosition(const ENCODING *enc, const char *ptr, - const char *end, POSITION *pos) -{ - normal_updatePosition(&utf8_encoding.enc, ptr, end, pos); -} - -static int -toAscii(const ENCODING *enc, const char *ptr, const char *end) -{ - char buf[1]; - char *p = buf; - XmlUtf8Convert(enc, &ptr, end, &p, p + 1); - if (p == buf) - return -1; - else - return buf[0]; -} - -static int FASTCALL -isSpace(int c) -{ - switch (c) { - case 0x20: - case 0xD: - case 0xA: - case 0x9: - return 1; - } - return 0; -} - -/* Return 1 if there's just optional white space or there's an S - followed by name=val. -*/ -static int -parsePseudoAttribute(const ENCODING *enc, - const char *ptr, - const char *end, - const char **namePtr, - const char **nameEndPtr, - const char **valPtr, - const char **nextTokPtr) -{ - int c; - char open; - if (ptr == end) { - *namePtr = NULL; - return 1; - } - if (!isSpace(toAscii(enc, ptr, end))) { - *nextTokPtr = ptr; - return 0; - } - do { - ptr += enc->minBytesPerChar; - } while (isSpace(toAscii(enc, ptr, end))); - if (ptr == end) { - *namePtr = NULL; - return 1; - } - *namePtr = ptr; - for (;;) { - c = toAscii(enc, ptr, end); - if (c == -1) { - *nextTokPtr = ptr; - return 0; - } - if (c == ASCII_EQUALS) { - *nameEndPtr = ptr; - break; - } - if (isSpace(c)) { - *nameEndPtr = ptr; - do { - ptr += enc->minBytesPerChar; - } while (isSpace(c = toAscii(enc, ptr, end))); - if (c != ASCII_EQUALS) { - *nextTokPtr = ptr; - return 0; - } - break; - } - ptr += enc->minBytesPerChar; - } - if (ptr == *namePtr) { - *nextTokPtr = ptr; - return 0; - } - ptr += enc->minBytesPerChar; - c = toAscii(enc, ptr, end); - while (isSpace(c)) { - ptr += enc->minBytesPerChar; - c = toAscii(enc, ptr, end); - } - if (c != ASCII_QUOT && c != ASCII_APOS) { - *nextTokPtr = ptr; - return 0; - } - open = (char)c; - ptr += enc->minBytesPerChar; - *valPtr = ptr; - for (;; ptr += enc->minBytesPerChar) { - c = toAscii(enc, ptr, end); - if (c == open) - break; - if (!(ASCII_a <= c && c <= ASCII_z) - && !(ASCII_A <= c && c <= ASCII_Z) - && !(ASCII_0 <= c && c <= ASCII_9) - && c != ASCII_PERIOD - && c != ASCII_MINUS - && c != ASCII_UNDERSCORE) { - *nextTokPtr = ptr; - return 0; - } - } - *nextTokPtr = ptr + enc->minBytesPerChar; - return 1; -} - -static const char KW_version[] = { - ASCII_v, ASCII_e, ASCII_r, ASCII_s, ASCII_i, ASCII_o, ASCII_n, '\0' -}; - -static const char KW_encoding[] = { - ASCII_e, ASCII_n, ASCII_c, ASCII_o, ASCII_d, ASCII_i, ASCII_n, ASCII_g, '\0' -}; - -static const char KW_standalone[] = { - ASCII_s, ASCII_t, ASCII_a, ASCII_n, ASCII_d, ASCII_a, ASCII_l, ASCII_o, - ASCII_n, ASCII_e, '\0' -}; - -static const char KW_yes[] = { - ASCII_y, ASCII_e, ASCII_s, '\0' -}; - -static const char KW_no[] = { - ASCII_n, ASCII_o, '\0' -}; - -static int -doParseXmlDecl(const ENCODING *(*encodingFinder)(const ENCODING *, - const char *, - const char *), - int isGeneralTextEntity, - const ENCODING *enc, - const char *ptr, - const char *end, - const char **badPtr, - const char **versionPtr, - const char **versionEndPtr, - const char **encodingName, - const ENCODING **encoding, - int *standalone) -{ - const char *val = NULL; - const char *name = NULL; - const char *nameEnd = NULL; - ptr += 5 * enc->minBytesPerChar; - end -= 2 * enc->minBytesPerChar; - if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr) - || !name) { - *badPtr = ptr; - return 0; - } - if (!XmlNameMatchesAscii(enc, name, nameEnd, KW_version)) { - if (!isGeneralTextEntity) { - *badPtr = name; - return 0; - } - } - else { - if (versionPtr) - *versionPtr = val; - if (versionEndPtr) - *versionEndPtr = ptr; - if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) { - *badPtr = ptr; - return 0; - } - if (!name) { - if (isGeneralTextEntity) { - /* a TextDecl must have an EncodingDecl */ - *badPtr = ptr; - return 0; - } - return 1; - } - } - if (XmlNameMatchesAscii(enc, name, nameEnd, KW_encoding)) { - int c = toAscii(enc, val, end); - if (!(ASCII_a <= c && c <= ASCII_z) && !(ASCII_A <= c && c <= ASCII_Z)) { - *badPtr = val; - return 0; - } - if (encodingName) - *encodingName = val; - if (encoding) - *encoding = encodingFinder(enc, val, ptr - enc->minBytesPerChar); - if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) { - *badPtr = ptr; - return 0; - } - if (!name) - return 1; - } - if (!XmlNameMatchesAscii(enc, name, nameEnd, KW_standalone) - || isGeneralTextEntity) { - *badPtr = name; - return 0; - } - if (XmlNameMatchesAscii(enc, val, ptr - enc->minBytesPerChar, KW_yes)) { - if (standalone) - *standalone = 1; - } - else if (XmlNameMatchesAscii(enc, val, ptr - enc->minBytesPerChar, KW_no)) { - if (standalone) - *standalone = 0; - } - else { - *badPtr = val; - return 0; - } - while (isSpace(toAscii(enc, ptr, end))) - ptr += enc->minBytesPerChar; - if (ptr != end) { - *badPtr = ptr; - return 0; - } - return 1; -} - -static int FASTCALL -checkCharRefNumber(int result) -{ - switch (result >> 8) { - case 0xD8: case 0xD9: case 0xDA: case 0xDB: - case 0xDC: case 0xDD: case 0xDE: case 0xDF: - return -1; - case 0: - if (latin1_encoding.type[result] == BT_NONXML) - return -1; - break; - case 0xFF: - if (result == 0xFFFE || result == 0xFFFF) - return -1; - break; - } - return result; -} - -int FASTCALL -XmlUtf8Encode(int c, char *buf) -{ - enum { - /* minN is minimum legal resulting value for N byte sequence */ - min2 = 0x80, - min3 = 0x800, - min4 = 0x10000 - }; - - if (c < 0) - return 0; - if (c < min2) { - buf[0] = (char)(c | UTF8_cval1); - return 1; - } - if (c < min3) { - buf[0] = (char)((c >> 6) | UTF8_cval2); - buf[1] = (char)((c & 0x3f) | 0x80); - return 2; - } - if (c < min4) { - buf[0] = (char)((c >> 12) | UTF8_cval3); - buf[1] = (char)(((c >> 6) & 0x3f) | 0x80); - buf[2] = (char)((c & 0x3f) | 0x80); - return 3; - } - if (c < 0x110000) { - buf[0] = (char)((c >> 18) | UTF8_cval4); - buf[1] = (char)(((c >> 12) & 0x3f) | 0x80); - buf[2] = (char)(((c >> 6) & 0x3f) | 0x80); - buf[3] = (char)((c & 0x3f) | 0x80); - return 4; - } - return 0; -} - -int FASTCALL -XmlUtf16Encode(int charNum, unsigned short *buf) -{ - if (charNum < 0) - return 0; - if (charNum < 0x10000) { - buf[0] = (unsigned short)charNum; - return 1; - } - if (charNum < 0x110000) { - charNum -= 0x10000; - buf[0] = (unsigned short)((charNum >> 10) + 0xD800); - buf[1] = (unsigned short)((charNum & 0x3FF) + 0xDC00); - return 2; - } - return 0; -} - -struct unknown_encoding { - struct normal_encoding normal; - CONVERTER convert; - void *userData; - unsigned short utf16[256]; - char utf8[256][4]; -}; - -#define AS_UNKNOWN_ENCODING(enc) ((const struct unknown_encoding *) (enc)) - -int -XmlSizeOfUnknownEncoding(void) -{ - return sizeof(struct unknown_encoding); -} - -static int PTRFASTCALL -unknown_isName(const ENCODING *enc, const char *p) -{ - const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); - int c = uenc->convert(uenc->userData, p); - if (c & ~0xFFFF) - return 0; - return UCS2_GET_NAMING(namePages, c >> 8, c & 0xFF); -} - -static int PTRFASTCALL -unknown_isNmstrt(const ENCODING *enc, const char *p) -{ - const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); - int c = uenc->convert(uenc->userData, p); - if (c & ~0xFFFF) - return 0; - return UCS2_GET_NAMING(nmstrtPages, c >> 8, c & 0xFF); -} - -static int PTRFASTCALL -unknown_isInvalid(const ENCODING *enc, const char *p) -{ - const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); - int c = uenc->convert(uenc->userData, p); - return (c & ~0xFFFF) || checkCharRefNumber(c) < 0; -} - -static void PTRCALL -unknown_toUtf8(const ENCODING *enc, - const char **fromP, const char *fromLim, - char **toP, const char *toLim) -{ - const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); - char buf[XML_UTF8_ENCODE_MAX]; - for (;;) { - const char *utf8; - int n; - if (*fromP == fromLim) - break; - utf8 = uenc->utf8[(unsigned char)**fromP]; - n = *utf8++; - if (n == 0) { - int c = uenc->convert(uenc->userData, *fromP); - n = XmlUtf8Encode(c, buf); - if (n > toLim - *toP) - break; - utf8 = buf; - *fromP += (AS_NORMAL_ENCODING(enc)->type[(unsigned char)**fromP] - - (BT_LEAD2 - 2)); - } - else { - if (n > toLim - *toP) - break; - (*fromP)++; - } - do { - *(*toP)++ = *utf8++; - } while (--n != 0); - } -} - -static void PTRCALL -unknown_toUtf16(const ENCODING *enc, - const char **fromP, const char *fromLim, - unsigned short **toP, const unsigned short *toLim) -{ - const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); - while (*fromP != fromLim && *toP != toLim) { - unsigned short c = uenc->utf16[(unsigned char)**fromP]; - if (c == 0) { - c = (unsigned short) - uenc->convert(uenc->userData, *fromP); - *fromP += (AS_NORMAL_ENCODING(enc)->type[(unsigned char)**fromP] - - (BT_LEAD2 - 2)); - } - else - (*fromP)++; - *(*toP)++ = c; - } -} - -ENCODING * -XmlInitUnknownEncoding(void *mem, - int *table, - CONVERTER convert, - void *userData) -{ - int i; - struct unknown_encoding *e = (struct unknown_encoding *)mem; - for (i = 0; i < (int)sizeof(struct normal_encoding); i++) - ((char *)mem)[i] = ((char *)&latin1_encoding)[i]; - for (i = 0; i < 128; i++) - if (latin1_encoding.type[i] != BT_OTHER - && latin1_encoding.type[i] != BT_NONXML - && table[i] != i) - return 0; - for (i = 0; i < 256; i++) { - int c = table[i]; - if (c == -1) { - e->normal.type[i] = BT_MALFORM; - /* This shouldn't really get used. */ - e->utf16[i] = 0xFFFF; - e->utf8[i][0] = 1; - e->utf8[i][1] = 0; - } - else if (c < 0) { - if (c < -4) - return 0; - e->normal.type[i] = (unsigned char)(BT_LEAD2 - (c + 2)); - e->utf8[i][0] = 0; - e->utf16[i] = 0; - } - else if (c < 0x80) { - if (latin1_encoding.type[c] != BT_OTHER - && latin1_encoding.type[c] != BT_NONXML - && c != i) - return 0; - e->normal.type[i] = latin1_encoding.type[c]; - e->utf8[i][0] = 1; - e->utf8[i][1] = (char)c; - e->utf16[i] = (unsigned short)(c == 0 ? 0xFFFF : c); - } - else if (checkCharRefNumber(c) < 0) { - e->normal.type[i] = BT_NONXML; - /* This shouldn't really get used. */ - e->utf16[i] = 0xFFFF; - e->utf8[i][0] = 1; - e->utf8[i][1] = 0; - } - else { - if (c > 0xFFFF) - return 0; - if (UCS2_GET_NAMING(nmstrtPages, c >> 8, c & 0xff)) - e->normal.type[i] = BT_NMSTRT; - else if (UCS2_GET_NAMING(namePages, c >> 8, c & 0xff)) - e->normal.type[i] = BT_NAME; - else - e->normal.type[i] = BT_OTHER; - e->utf8[i][0] = (char)XmlUtf8Encode(c, e->utf8[i] + 1); - e->utf16[i] = (unsigned short)c; - } - } - e->userData = userData; - e->convert = convert; - if (convert) { - e->normal.isName2 = unknown_isName; - e->normal.isName3 = unknown_isName; - e->normal.isName4 = unknown_isName; - e->normal.isNmstrt2 = unknown_isNmstrt; - e->normal.isNmstrt3 = unknown_isNmstrt; - e->normal.isNmstrt4 = unknown_isNmstrt; - e->normal.isInvalid2 = unknown_isInvalid; - e->normal.isInvalid3 = unknown_isInvalid; - e->normal.isInvalid4 = unknown_isInvalid; - } - e->normal.enc.utf8Convert = unknown_toUtf8; - e->normal.enc.utf16Convert = unknown_toUtf16; - return &(e->normal.enc); -} - -/* If this enumeration is changed, getEncodingIndex and encodings -must also be changed. */ -enum { - UNKNOWN_ENC = -1, - ISO_8859_1_ENC = 0, - US_ASCII_ENC, - UTF_8_ENC, - UTF_16_ENC, - UTF_16BE_ENC, - UTF_16LE_ENC, - /* must match encodingNames up to here */ - NO_ENC -}; - -static const char KW_ISO_8859_1[] = { - ASCII_I, ASCII_S, ASCII_O, ASCII_MINUS, ASCII_8, ASCII_8, ASCII_5, ASCII_9, - ASCII_MINUS, ASCII_1, '\0' -}; -static const char KW_US_ASCII[] = { - ASCII_U, ASCII_S, ASCII_MINUS, ASCII_A, ASCII_S, ASCII_C, ASCII_I, ASCII_I, - '\0' -}; -static const char KW_UTF_8[] = { - ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_8, '\0' -}; -static const char KW_UTF_16[] = { - ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, '\0' -}; -static const char KW_UTF_16BE[] = { - ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, ASCII_B, ASCII_E, - '\0' -}; -static const char KW_UTF_16LE[] = { - ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, ASCII_L, ASCII_E, - '\0' -}; - -static int FASTCALL -getEncodingIndex(const char *name) -{ - static const char * const encodingNames[] = { - KW_ISO_8859_1, - KW_US_ASCII, - KW_UTF_8, - KW_UTF_16, - KW_UTF_16BE, - KW_UTF_16LE, - }; - int i; - if (name == NULL) - return NO_ENC; - for (i = 0; i < (int)(sizeof(encodingNames)/sizeof(encodingNames[0])); i++) - if (streqci(name, encodingNames[i])) - return i; - return UNKNOWN_ENC; -} - -/* For binary compatibility, we store the index of the encoding - specified at initialization in the isUtf16 member. -*/ - -#define INIT_ENC_INDEX(enc) ((int)(enc)->initEnc.isUtf16) -#define SET_INIT_ENC_INDEX(enc, i) ((enc)->initEnc.isUtf16 = (char)i) - -/* This is what detects the encoding. encodingTable maps from - encoding indices to encodings; INIT_ENC_INDEX(enc) is the index of - the external (protocol) specified encoding; state is - XML_CONTENT_STATE if we're parsing an external text entity, and - XML_PROLOG_STATE otherwise. -*/ - - -static int -initScan(const ENCODING * const *encodingTable, - const INIT_ENCODING *enc, - int state, - const char *ptr, - const char *end, - const char **nextTokPtr) -{ - const ENCODING **encPtr; - - if (ptr == end) - return XML_TOK_NONE; - encPtr = enc->encPtr; - if (ptr + 1 == end) { - /* only a single byte available for auto-detection */ -#ifndef XML_DTD /* FIXME */ - /* a well-formed document entity must have more than one byte */ - if (state != XML_CONTENT_STATE) - return XML_TOK_PARTIAL; -#endif - /* so we're parsing an external text entity... */ - /* if UTF-16 was externally specified, then we need at least 2 bytes */ - switch (INIT_ENC_INDEX(enc)) { - case UTF_16_ENC: - case UTF_16LE_ENC: - case UTF_16BE_ENC: - return XML_TOK_PARTIAL; - } - switch ((unsigned char)*ptr) { - case 0xFE: - case 0xFF: - case 0xEF: /* possibly first byte of UTF-8 BOM */ - if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC - && state == XML_CONTENT_STATE) - break; - /* fall through */ - case 0x00: - case 0x3C: - return XML_TOK_PARTIAL; - } - } - else { - switch (((unsigned char)ptr[0] << 8) | (unsigned char)ptr[1]) { - case 0xFEFF: - if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC - && state == XML_CONTENT_STATE) - break; - *nextTokPtr = ptr + 2; - *encPtr = encodingTable[UTF_16BE_ENC]; - return XML_TOK_BOM; - /* 00 3C is handled in the default case */ - case 0x3C00: - if ((INIT_ENC_INDEX(enc) == UTF_16BE_ENC - || INIT_ENC_INDEX(enc) == UTF_16_ENC) - && state == XML_CONTENT_STATE) - break; - *encPtr = encodingTable[UTF_16LE_ENC]; - return XmlTok(*encPtr, state, ptr, end, nextTokPtr); - case 0xFFFE: - if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC - && state == XML_CONTENT_STATE) - break; - *nextTokPtr = ptr + 2; - *encPtr = encodingTable[UTF_16LE_ENC]; - return XML_TOK_BOM; - case 0xEFBB: - /* Maybe a UTF-8 BOM (EF BB BF) */ - /* If there's an explicitly specified (external) encoding - of ISO-8859-1 or some flavour of UTF-16 - and this is an external text entity, - don't look for the BOM, - because it might be a legal data. - */ - if (state == XML_CONTENT_STATE) { - int e = INIT_ENC_INDEX(enc); - if (e == ISO_8859_1_ENC || e == UTF_16BE_ENC - || e == UTF_16LE_ENC || e == UTF_16_ENC) - break; - } - if (ptr + 2 == end) - return XML_TOK_PARTIAL; - if ((unsigned char)ptr[2] == 0xBF) { - *nextTokPtr = ptr + 3; - *encPtr = encodingTable[UTF_8_ENC]; - return XML_TOK_BOM; - } - break; - default: - if (ptr[0] == '\0') { - /* 0 isn't a legal data character. Furthermore a document - entity can only start with ASCII characters. So the only - way this can fail to be big-endian UTF-16 if it it's an - external parsed general entity that's labelled as - UTF-16LE. - */ - if (state == XML_CONTENT_STATE && INIT_ENC_INDEX(enc) == UTF_16LE_ENC) - break; - *encPtr = encodingTable[UTF_16BE_ENC]; - return XmlTok(*encPtr, state, ptr, end, nextTokPtr); - } - else if (ptr[1] == '\0') { - /* We could recover here in the case: - - parsing an external entity - - second byte is 0 - - no externally specified encoding - - no encoding declaration - by assuming UTF-16LE. But we don't, because this would mean when - presented just with a single byte, we couldn't reliably determine - whether we needed further bytes. - */ - if (state == XML_CONTENT_STATE) - break; - *encPtr = encodingTable[UTF_16LE_ENC]; - return XmlTok(*encPtr, state, ptr, end, nextTokPtr); - } - break; - } - } - *encPtr = encodingTable[INIT_ENC_INDEX(enc)]; - return XmlTok(*encPtr, state, ptr, end, nextTokPtr); -} - - -#define NS(x) x -#define ns(x) x -#define XML_TOK_NS_C -#include "xmltok_ns.c" -#undef XML_TOK_NS_C -#undef NS -#undef ns - -#ifdef XML_NS - -#define NS(x) x ## NS -#define ns(x) x ## _ns - -#define XML_TOK_NS_C -#include "xmltok_ns.c" -#undef XML_TOK_NS_C - -#undef NS -#undef ns - -ENCODING * -XmlInitUnknownEncodingNS(void *mem, - int *table, - CONVERTER convert, - void *userData) -{ - ENCODING *enc = XmlInitUnknownEncoding(mem, table, convert, userData); - if (enc) - ((struct normal_encoding *)enc)->type[ASCII_COLON] = BT_COLON; - return enc; -} - -#endif /* XML_NS */ diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmltok.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmltok.h deleted file mode 100644 index ca867aa..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmltok.h +++ /dev/null @@ -1,316 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -#ifndef XmlTok_INCLUDED -#define XmlTok_INCLUDED 1 - -#ifdef __cplusplus -extern "C" { -#endif - -/* The following token may be returned by XmlContentTok */ -#define XML_TOK_TRAILING_RSQB -5 /* ] or ]] at the end of the scan; might be - start of illegal ]]> sequence */ -/* The following tokens may be returned by both XmlPrologTok and - XmlContentTok. -*/ -#define XML_TOK_NONE -4 /* The string to be scanned is empty */ -#define XML_TOK_TRAILING_CR -3 /* A CR at the end of the scan; - might be part of CRLF sequence */ -#define XML_TOK_PARTIAL_CHAR -2 /* only part of a multibyte sequence */ -#define XML_TOK_PARTIAL -1 /* only part of a token */ -#define XML_TOK_INVALID 0 - -/* The following tokens are returned by XmlContentTok; some are also - returned by XmlAttributeValueTok, XmlEntityTok, XmlCdataSectionTok. -*/ -#define XML_TOK_START_TAG_WITH_ATTS 1 -#define XML_TOK_START_TAG_NO_ATTS 2 -#define XML_TOK_EMPTY_ELEMENT_WITH_ATTS 3 /* empty element tag */ -#define XML_TOK_EMPTY_ELEMENT_NO_ATTS 4 -#define XML_TOK_END_TAG 5 -#define XML_TOK_DATA_CHARS 6 -#define XML_TOK_DATA_NEWLINE 7 -#define XML_TOK_CDATA_SECT_OPEN 8 -#define XML_TOK_ENTITY_REF 9 -#define XML_TOK_CHAR_REF 10 /* numeric character reference */ - -/* The following tokens may be returned by both XmlPrologTok and - XmlContentTok. -*/ -#define XML_TOK_PI 11 /* processing instruction */ -#define XML_TOK_XML_DECL 12 /* XML decl or text decl */ -#define XML_TOK_COMMENT 13 -#define XML_TOK_BOM 14 /* Byte order mark */ - -/* The following tokens are returned only by XmlPrologTok */ -#define XML_TOK_PROLOG_S 15 -#define XML_TOK_DECL_OPEN 16 /* */ -#define XML_TOK_NAME 18 -#define XML_TOK_NMTOKEN 19 -#define XML_TOK_POUND_NAME 20 /* #name */ -#define XML_TOK_OR 21 /* | */ -#define XML_TOK_PERCENT 22 -#define XML_TOK_OPEN_PAREN 23 -#define XML_TOK_CLOSE_PAREN 24 -#define XML_TOK_OPEN_BRACKET 25 -#define XML_TOK_CLOSE_BRACKET 26 -#define XML_TOK_LITERAL 27 -#define XML_TOK_PARAM_ENTITY_REF 28 -#define XML_TOK_INSTANCE_START 29 - -/* The following occur only in element type declarations */ -#define XML_TOK_NAME_QUESTION 30 /* name? */ -#define XML_TOK_NAME_ASTERISK 31 /* name* */ -#define XML_TOK_NAME_PLUS 32 /* name+ */ -#define XML_TOK_COND_SECT_OPEN 33 /* */ -#define XML_TOK_CLOSE_PAREN_QUESTION 35 /* )? */ -#define XML_TOK_CLOSE_PAREN_ASTERISK 36 /* )* */ -#define XML_TOK_CLOSE_PAREN_PLUS 37 /* )+ */ -#define XML_TOK_COMMA 38 - -/* The following token is returned only by XmlAttributeValueTok */ -#define XML_TOK_ATTRIBUTE_VALUE_S 39 - -/* The following token is returned only by XmlCdataSectionTok */ -#define XML_TOK_CDATA_SECT_CLOSE 40 - -/* With namespace processing this is returned by XmlPrologTok for a - name with a colon. -*/ -#define XML_TOK_PREFIXED_NAME 41 - -#ifdef XML_DTD -#define XML_TOK_IGNORE_SECT 42 -#endif /* XML_DTD */ - -#ifdef XML_DTD -#define XML_N_STATES 4 -#else /* not XML_DTD */ -#define XML_N_STATES 3 -#endif /* not XML_DTD */ - -#define XML_PROLOG_STATE 0 -#define XML_CONTENT_STATE 1 -#define XML_CDATA_SECTION_STATE 2 -#ifdef XML_DTD -#define XML_IGNORE_SECTION_STATE 3 -#endif /* XML_DTD */ - -#define XML_N_LITERAL_TYPES 2 -#define XML_ATTRIBUTE_VALUE_LITERAL 0 -#define XML_ENTITY_VALUE_LITERAL 1 - -/* The size of the buffer passed to XmlUtf8Encode must be at least this. */ -#define XML_UTF8_ENCODE_MAX 4 -/* The size of the buffer passed to XmlUtf16Encode must be at least this. */ -#define XML_UTF16_ENCODE_MAX 2 - -typedef struct position { - /* first line and first column are 0 not 1 */ - XML_Size lineNumber; - XML_Size columnNumber; -} POSITION; - -typedef struct { - const char *name; - const char *valuePtr; - const char *valueEnd; - char normalized; -} ATTRIBUTE; - -struct encoding; -typedef struct encoding ENCODING; - -typedef int (PTRCALL *SCANNER)(const ENCODING *, - const char *, - const char *, - const char **); - -struct encoding { - SCANNER scanners[XML_N_STATES]; - SCANNER literalScanners[XML_N_LITERAL_TYPES]; - int (PTRCALL *sameName)(const ENCODING *, - const char *, - const char *); - int (PTRCALL *nameMatchesAscii)(const ENCODING *, - const char *, - const char *, - const char *); - int (PTRFASTCALL *nameLength)(const ENCODING *, const char *); - const char *(PTRFASTCALL *skipS)(const ENCODING *, const char *); - int (PTRCALL *getAtts)(const ENCODING *enc, - const char *ptr, - int attsMax, - ATTRIBUTE *atts); - int (PTRFASTCALL *charRefNumber)(const ENCODING *enc, const char *ptr); - int (PTRCALL *predefinedEntityName)(const ENCODING *, - const char *, - const char *); - void (PTRCALL *updatePosition)(const ENCODING *, - const char *ptr, - const char *end, - POSITION *); - int (PTRCALL *isPublicId)(const ENCODING *enc, - const char *ptr, - const char *end, - const char **badPtr); - void (PTRCALL *utf8Convert)(const ENCODING *enc, - const char **fromP, - const char *fromLim, - char **toP, - const char *toLim); - void (PTRCALL *utf16Convert)(const ENCODING *enc, - const char **fromP, - const char *fromLim, - unsigned short **toP, - const unsigned short *toLim); - int minBytesPerChar; - char isUtf8; - char isUtf16; -}; - -/* Scan the string starting at ptr until the end of the next complete - token, but do not scan past eptr. Return an integer giving the - type of token. - - Return XML_TOK_NONE when ptr == eptr; nextTokPtr will not be set. - - Return XML_TOK_PARTIAL when the string does not contain a complete - token; nextTokPtr will not be set. - - Return XML_TOK_INVALID when the string does not start a valid - token; nextTokPtr will be set to point to the character which made - the token invalid. - - Otherwise the string starts with a valid token; nextTokPtr will be - set to point to the character following the end of that token. - - Each data character counts as a single token, but adjacent data - characters may be returned together. Similarly for characters in - the prolog outside literals, comments and processing instructions. -*/ - - -#define XmlTok(enc, state, ptr, end, nextTokPtr) \ - (((enc)->scanners[state])(enc, ptr, end, nextTokPtr)) - -#define XmlPrologTok(enc, ptr, end, nextTokPtr) \ - XmlTok(enc, XML_PROLOG_STATE, ptr, end, nextTokPtr) - -#define XmlContentTok(enc, ptr, end, nextTokPtr) \ - XmlTok(enc, XML_CONTENT_STATE, ptr, end, nextTokPtr) - -#define XmlCdataSectionTok(enc, ptr, end, nextTokPtr) \ - XmlTok(enc, XML_CDATA_SECTION_STATE, ptr, end, nextTokPtr) - -#ifdef XML_DTD - -#define XmlIgnoreSectionTok(enc, ptr, end, nextTokPtr) \ - XmlTok(enc, XML_IGNORE_SECTION_STATE, ptr, end, nextTokPtr) - -#endif /* XML_DTD */ - -/* This is used for performing a 2nd-level tokenization on the content - of a literal that has already been returned by XmlTok. -*/ -#define XmlLiteralTok(enc, literalType, ptr, end, nextTokPtr) \ - (((enc)->literalScanners[literalType])(enc, ptr, end, nextTokPtr)) - -#define XmlAttributeValueTok(enc, ptr, end, nextTokPtr) \ - XmlLiteralTok(enc, XML_ATTRIBUTE_VALUE_LITERAL, ptr, end, nextTokPtr) - -#define XmlEntityValueTok(enc, ptr, end, nextTokPtr) \ - XmlLiteralTok(enc, XML_ENTITY_VALUE_LITERAL, ptr, end, nextTokPtr) - -#define XmlSameName(enc, ptr1, ptr2) (((enc)->sameName)(enc, ptr1, ptr2)) - -#define XmlNameMatchesAscii(enc, ptr1, end1, ptr2) \ - (((enc)->nameMatchesAscii)(enc, ptr1, end1, ptr2)) - -#define XmlNameLength(enc, ptr) \ - (((enc)->nameLength)(enc, ptr)) - -#define XmlSkipS(enc, ptr) \ - (((enc)->skipS)(enc, ptr)) - -#define XmlGetAttributes(enc, ptr, attsMax, atts) \ - (((enc)->getAtts)(enc, ptr, attsMax, atts)) - -#define XmlCharRefNumber(enc, ptr) \ - (((enc)->charRefNumber)(enc, ptr)) - -#define XmlPredefinedEntityName(enc, ptr, end) \ - (((enc)->predefinedEntityName)(enc, ptr, end)) - -#define XmlUpdatePosition(enc, ptr, end, pos) \ - (((enc)->updatePosition)(enc, ptr, end, pos)) - -#define XmlIsPublicId(enc, ptr, end, badPtr) \ - (((enc)->isPublicId)(enc, ptr, end, badPtr)) - -#define XmlUtf8Convert(enc, fromP, fromLim, toP, toLim) \ - (((enc)->utf8Convert)(enc, fromP, fromLim, toP, toLim)) - -#define XmlUtf16Convert(enc, fromP, fromLim, toP, toLim) \ - (((enc)->utf16Convert)(enc, fromP, fromLim, toP, toLim)) - -typedef struct { - ENCODING initEnc; - const ENCODING **encPtr; -} INIT_ENCODING; - -int XmlParseXmlDecl(int isGeneralTextEntity, - const ENCODING *enc, - const char *ptr, - const char *end, - const char **badPtr, - const char **versionPtr, - const char **versionEndPtr, - const char **encodingNamePtr, - const ENCODING **namedEncodingPtr, - int *standalonePtr); - -int XmlInitEncoding(INIT_ENCODING *, const ENCODING **, const char *name); -const ENCODING *XmlGetUtf8InternalEncoding(void); -const ENCODING *XmlGetUtf16InternalEncoding(void); -int FASTCALL XmlUtf8Encode(int charNumber, char *buf); -int FASTCALL XmlUtf16Encode(int charNumber, unsigned short *buf); -int XmlSizeOfUnknownEncoding(void); - - -typedef int (XMLCALL *CONVERTER) (void *userData, const char *p); - -ENCODING * -XmlInitUnknownEncoding(void *mem, - int *table, - CONVERTER convert, - void *userData); - -int XmlParseXmlDeclNS(int isGeneralTextEntity, - const ENCODING *enc, - const char *ptr, - const char *end, - const char **badPtr, - const char **versionPtr, - const char **versionEndPtr, - const char **encodingNamePtr, - const ENCODING **namedEncodingPtr, - int *standalonePtr); - -int XmlInitEncodingNS(INIT_ENCODING *, const ENCODING **, const char *name); -const ENCODING *XmlGetUtf8InternalEncodingNS(void); -const ENCODING *XmlGetUtf16InternalEncodingNS(void); -ENCODING * -XmlInitUnknownEncodingNS(void *mem, - int *table, - CONVERTER convert, - void *userData); -#ifdef __cplusplus -} -#endif - -#endif /* not XmlTok_INCLUDED */ diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmltok_impl.c b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmltok_impl.c deleted file mode 100644 index 9c2895b..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmltok_impl.c +++ /dev/null @@ -1,1783 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -/* This file is included! */ -#ifdef XML_TOK_IMPL_C - -#ifndef IS_INVALID_CHAR -#define IS_INVALID_CHAR(enc, ptr, n) (0) -#endif - -#define INVALID_LEAD_CASE(n, ptr, nextTokPtr) \ - case BT_LEAD ## n: \ - if (end - ptr < n) \ - return XML_TOK_PARTIAL_CHAR; \ - if (IS_INVALID_CHAR(enc, ptr, n)) { \ - *(nextTokPtr) = (ptr); \ - return XML_TOK_INVALID; \ - } \ - ptr += n; \ - break; - -#define INVALID_CASES(ptr, nextTokPtr) \ - INVALID_LEAD_CASE(2, ptr, nextTokPtr) \ - INVALID_LEAD_CASE(3, ptr, nextTokPtr) \ - INVALID_LEAD_CASE(4, ptr, nextTokPtr) \ - case BT_NONXML: \ - case BT_MALFORM: \ - case BT_TRAIL: \ - *(nextTokPtr) = (ptr); \ - return XML_TOK_INVALID; - -#define CHECK_NAME_CASE(n, enc, ptr, end, nextTokPtr) \ - case BT_LEAD ## n: \ - if (end - ptr < n) \ - return XML_TOK_PARTIAL_CHAR; \ - if (!IS_NAME_CHAR(enc, ptr, n)) { \ - *nextTokPtr = ptr; \ - return XML_TOK_INVALID; \ - } \ - ptr += n; \ - break; - -#define CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) \ - case BT_NONASCII: \ - if (!IS_NAME_CHAR_MINBPC(enc, ptr)) { \ - *nextTokPtr = ptr; \ - return XML_TOK_INVALID; \ - } \ - case BT_NMSTRT: \ - case BT_HEX: \ - case BT_DIGIT: \ - case BT_NAME: \ - case BT_MINUS: \ - ptr += MINBPC(enc); \ - break; \ - CHECK_NAME_CASE(2, enc, ptr, end, nextTokPtr) \ - CHECK_NAME_CASE(3, enc, ptr, end, nextTokPtr) \ - CHECK_NAME_CASE(4, enc, ptr, end, nextTokPtr) - -#define CHECK_NMSTRT_CASE(n, enc, ptr, end, nextTokPtr) \ - case BT_LEAD ## n: \ - if (end - ptr < n) \ - return XML_TOK_PARTIAL_CHAR; \ - if (!IS_NMSTRT_CHAR(enc, ptr, n)) { \ - *nextTokPtr = ptr; \ - return XML_TOK_INVALID; \ - } \ - ptr += n; \ - break; - -#define CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) \ - case BT_NONASCII: \ - if (!IS_NMSTRT_CHAR_MINBPC(enc, ptr)) { \ - *nextTokPtr = ptr; \ - return XML_TOK_INVALID; \ - } \ - case BT_NMSTRT: \ - case BT_HEX: \ - ptr += MINBPC(enc); \ - break; \ - CHECK_NMSTRT_CASE(2, enc, ptr, end, nextTokPtr) \ - CHECK_NMSTRT_CASE(3, enc, ptr, end, nextTokPtr) \ - CHECK_NMSTRT_CASE(4, enc, ptr, end, nextTokPtr) - -#ifndef PREFIX -#define PREFIX(ident) ident -#endif - -/* ptr points to character following " */ - switch (BYTE_TYPE(enc, ptr + MINBPC(enc))) { - case BT_S: case BT_CR: case BT_LF: case BT_PERCNT: - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - /* fall through */ - case BT_S: case BT_CR: case BT_LF: - *nextTokPtr = ptr; - return XML_TOK_DECL_OPEN; - case BT_NMSTRT: - case BT_HEX: - ptr += MINBPC(enc); - break; - default: - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - } - return XML_TOK_PARTIAL; -} - -static int PTRCALL -PREFIX(checkPiTarget)(const ENCODING *enc, const char *ptr, - const char *end, int *tokPtr) -{ - int upper = 0; - *tokPtr = XML_TOK_PI; - if (end - ptr != MINBPC(enc)*3) - return 1; - switch (BYTE_TO_ASCII(enc, ptr)) { - case ASCII_x: - break; - case ASCII_X: - upper = 1; - break; - default: - return 1; - } - ptr += MINBPC(enc); - switch (BYTE_TO_ASCII(enc, ptr)) { - case ASCII_m: - break; - case ASCII_M: - upper = 1; - break; - default: - return 1; - } - ptr += MINBPC(enc); - switch (BYTE_TO_ASCII(enc, ptr)) { - case ASCII_l: - break; - case ASCII_L: - upper = 1; - break; - default: - return 1; - } - if (upper) - return 0; - *tokPtr = XML_TOK_XML_DECL; - return 1; -} - -/* ptr points to character following " 1) { - size_t n = end - ptr; - if (n & (MINBPC(enc) - 1)) { - n &= ~(MINBPC(enc) - 1); - if (n == 0) - return XML_TOK_PARTIAL; - end = ptr + n; - } - } - switch (BYTE_TYPE(enc, ptr)) { - case BT_RSQB: - ptr += MINBPC(enc); - if (ptr == end) - return XML_TOK_PARTIAL; - if (!CHAR_MATCHES(enc, ptr, ASCII_RSQB)) - break; - ptr += MINBPC(enc); - if (ptr == end) - return XML_TOK_PARTIAL; - if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) { - ptr -= MINBPC(enc); - break; - } - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_CDATA_SECT_CLOSE; - case BT_CR: - ptr += MINBPC(enc); - if (ptr == end) - return XML_TOK_PARTIAL; - if (BYTE_TYPE(enc, ptr) == BT_LF) - ptr += MINBPC(enc); - *nextTokPtr = ptr; - return XML_TOK_DATA_NEWLINE; - case BT_LF: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_DATA_NEWLINE; - INVALID_CASES(ptr, nextTokPtr) - default: - ptr += MINBPC(enc); - break; - } - while (ptr != end) { - switch (BYTE_TYPE(enc, ptr)) { -#define LEAD_CASE(n) \ - case BT_LEAD ## n: \ - if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \ - *nextTokPtr = ptr; \ - return XML_TOK_DATA_CHARS; \ - } \ - ptr += n; \ - break; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE - case BT_NONXML: - case BT_MALFORM: - case BT_TRAIL: - case BT_CR: - case BT_LF: - case BT_RSQB: - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; - default: - ptr += MINBPC(enc); - break; - } - } - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; -} - -/* ptr points to character following " 1) { - size_t n = end - ptr; - if (n & (MINBPC(enc) - 1)) { - n &= ~(MINBPC(enc) - 1); - if (n == 0) - return XML_TOK_PARTIAL; - end = ptr + n; - } - } - switch (BYTE_TYPE(enc, ptr)) { - case BT_LT: - return PREFIX(scanLt)(enc, ptr + MINBPC(enc), end, nextTokPtr); - case BT_AMP: - return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr); - case BT_CR: - ptr += MINBPC(enc); - if (ptr == end) - return XML_TOK_TRAILING_CR; - if (BYTE_TYPE(enc, ptr) == BT_LF) - ptr += MINBPC(enc); - *nextTokPtr = ptr; - return XML_TOK_DATA_NEWLINE; - case BT_LF: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_DATA_NEWLINE; - case BT_RSQB: - ptr += MINBPC(enc); - if (ptr == end) - return XML_TOK_TRAILING_RSQB; - if (!CHAR_MATCHES(enc, ptr, ASCII_RSQB)) - break; - ptr += MINBPC(enc); - if (ptr == end) - return XML_TOK_TRAILING_RSQB; - if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) { - ptr -= MINBPC(enc); - break; - } - *nextTokPtr = ptr; - return XML_TOK_INVALID; - INVALID_CASES(ptr, nextTokPtr) - default: - ptr += MINBPC(enc); - break; - } - while (ptr != end) { - switch (BYTE_TYPE(enc, ptr)) { -#define LEAD_CASE(n) \ - case BT_LEAD ## n: \ - if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \ - *nextTokPtr = ptr; \ - return XML_TOK_DATA_CHARS; \ - } \ - ptr += n; \ - break; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE - case BT_RSQB: - if (ptr + MINBPC(enc) != end) { - if (!CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_RSQB)) { - ptr += MINBPC(enc); - break; - } - if (ptr + 2*MINBPC(enc) != end) { - if (!CHAR_MATCHES(enc, ptr + 2*MINBPC(enc), ASCII_GT)) { - ptr += MINBPC(enc); - break; - } - *nextTokPtr = ptr + 2*MINBPC(enc); - return XML_TOK_INVALID; - } - } - /* fall through */ - case BT_AMP: - case BT_LT: - case BT_NONXML: - case BT_MALFORM: - case BT_TRAIL: - case BT_CR: - case BT_LF: - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; - default: - ptr += MINBPC(enc); - break; - } - } - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; -} - -/* ptr points to character following "%" */ - -static int PTRCALL -PREFIX(scanPercent)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) -{ - if (ptr == end) - return XML_TOK_PARTIAL; - switch (BYTE_TYPE(enc, ptr)) { - CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) - case BT_S: case BT_LF: case BT_CR: case BT_PERCNT: - *nextTokPtr = ptr; - return XML_TOK_PERCENT; - default: - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - while (ptr != end) { - switch (BYTE_TYPE(enc, ptr)) { - CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) - case BT_SEMI: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_PARAM_ENTITY_REF; - default: - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - } - return XML_TOK_PARTIAL; -} - -static int PTRCALL -PREFIX(scanPoundName)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) -{ - if (ptr == end) - return XML_TOK_PARTIAL; - switch (BYTE_TYPE(enc, ptr)) { - CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) - default: - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - while (ptr != end) { - switch (BYTE_TYPE(enc, ptr)) { - CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) - case BT_CR: case BT_LF: case BT_S: - case BT_RPAR: case BT_GT: case BT_PERCNT: case BT_VERBAR: - *nextTokPtr = ptr; - return XML_TOK_POUND_NAME; - default: - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - } - return -XML_TOK_POUND_NAME; -} - -static int PTRCALL -PREFIX(scanLit)(int open, const ENCODING *enc, - const char *ptr, const char *end, - const char **nextTokPtr) -{ - while (ptr != end) { - int t = BYTE_TYPE(enc, ptr); - switch (t) { - INVALID_CASES(ptr, nextTokPtr) - case BT_QUOT: - case BT_APOS: - ptr += MINBPC(enc); - if (t != open) - break; - if (ptr == end) - return -XML_TOK_LITERAL; - *nextTokPtr = ptr; - switch (BYTE_TYPE(enc, ptr)) { - case BT_S: case BT_CR: case BT_LF: - case BT_GT: case BT_PERCNT: case BT_LSQB: - return XML_TOK_LITERAL; - default: - return XML_TOK_INVALID; - } - default: - ptr += MINBPC(enc); - break; - } - } - return XML_TOK_PARTIAL; -} - -static int PTRCALL -PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) -{ - int tok; - if (ptr == end) - return XML_TOK_NONE; - if (MINBPC(enc) > 1) { - size_t n = end - ptr; - if (n & (MINBPC(enc) - 1)) { - n &= ~(MINBPC(enc) - 1); - if (n == 0) - return XML_TOK_PARTIAL; - end = ptr + n; - } - } - switch (BYTE_TYPE(enc, ptr)) { - case BT_QUOT: - return PREFIX(scanLit)(BT_QUOT, enc, ptr + MINBPC(enc), end, nextTokPtr); - case BT_APOS: - return PREFIX(scanLit)(BT_APOS, enc, ptr + MINBPC(enc), end, nextTokPtr); - case BT_LT: - { - ptr += MINBPC(enc); - if (ptr == end) - return XML_TOK_PARTIAL; - switch (BYTE_TYPE(enc, ptr)) { - case BT_EXCL: - return PREFIX(scanDecl)(enc, ptr + MINBPC(enc), end, nextTokPtr); - case BT_QUEST: - return PREFIX(scanPi)(enc, ptr + MINBPC(enc), end, nextTokPtr); - case BT_NMSTRT: - case BT_HEX: - case BT_NONASCII: - case BT_LEAD2: - case BT_LEAD3: - case BT_LEAD4: - *nextTokPtr = ptr - MINBPC(enc); - return XML_TOK_INSTANCE_START; - } - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - case BT_CR: - if (ptr + MINBPC(enc) == end) { - *nextTokPtr = end; - /* indicate that this might be part of a CR/LF pair */ - return -XML_TOK_PROLOG_S; - } - /* fall through */ - case BT_S: case BT_LF: - for (;;) { - ptr += MINBPC(enc); - if (ptr == end) - break; - switch (BYTE_TYPE(enc, ptr)) { - case BT_S: case BT_LF: - break; - case BT_CR: - /* don't split CR/LF pair */ - if (ptr + MINBPC(enc) != end) - break; - /* fall through */ - default: - *nextTokPtr = ptr; - return XML_TOK_PROLOG_S; - } - } - *nextTokPtr = ptr; - return XML_TOK_PROLOG_S; - case BT_PERCNT: - return PREFIX(scanPercent)(enc, ptr + MINBPC(enc), end, nextTokPtr); - case BT_COMMA: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_COMMA; - case BT_LSQB: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_OPEN_BRACKET; - case BT_RSQB: - ptr += MINBPC(enc); - if (ptr == end) - return -XML_TOK_CLOSE_BRACKET; - if (CHAR_MATCHES(enc, ptr, ASCII_RSQB)) { - if (ptr + MINBPC(enc) == end) - return XML_TOK_PARTIAL; - if (CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_GT)) { - *nextTokPtr = ptr + 2*MINBPC(enc); - return XML_TOK_COND_SECT_CLOSE; - } - } - *nextTokPtr = ptr; - return XML_TOK_CLOSE_BRACKET; - case BT_LPAR: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_OPEN_PAREN; - case BT_RPAR: - ptr += MINBPC(enc); - if (ptr == end) - return -XML_TOK_CLOSE_PAREN; - switch (BYTE_TYPE(enc, ptr)) { - case BT_AST: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_CLOSE_PAREN_ASTERISK; - case BT_QUEST: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_CLOSE_PAREN_QUESTION; - case BT_PLUS: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_CLOSE_PAREN_PLUS; - case BT_CR: case BT_LF: case BT_S: - case BT_GT: case BT_COMMA: case BT_VERBAR: - case BT_RPAR: - *nextTokPtr = ptr; - return XML_TOK_CLOSE_PAREN; - } - *nextTokPtr = ptr; - return XML_TOK_INVALID; - case BT_VERBAR: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_OR; - case BT_GT: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_DECL_CLOSE; - case BT_NUM: - return PREFIX(scanPoundName)(enc, ptr + MINBPC(enc), end, nextTokPtr); -#define LEAD_CASE(n) \ - case BT_LEAD ## n: \ - if (end - ptr < n) \ - return XML_TOK_PARTIAL_CHAR; \ - if (IS_NMSTRT_CHAR(enc, ptr, n)) { \ - ptr += n; \ - tok = XML_TOK_NAME; \ - break; \ - } \ - if (IS_NAME_CHAR(enc, ptr, n)) { \ - ptr += n; \ - tok = XML_TOK_NMTOKEN; \ - break; \ - } \ - *nextTokPtr = ptr; \ - return XML_TOK_INVALID; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE - case BT_NMSTRT: - case BT_HEX: - tok = XML_TOK_NAME; - ptr += MINBPC(enc); - break; - case BT_DIGIT: - case BT_NAME: - case BT_MINUS: -#ifdef XML_NS - case BT_COLON: -#endif - tok = XML_TOK_NMTOKEN; - ptr += MINBPC(enc); - break; - case BT_NONASCII: - if (IS_NMSTRT_CHAR_MINBPC(enc, ptr)) { - ptr += MINBPC(enc); - tok = XML_TOK_NAME; - break; - } - if (IS_NAME_CHAR_MINBPC(enc, ptr)) { - ptr += MINBPC(enc); - tok = XML_TOK_NMTOKEN; - break; - } - /* fall through */ - default: - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - while (ptr != end) { - switch (BYTE_TYPE(enc, ptr)) { - CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) - case BT_GT: case BT_RPAR: case BT_COMMA: - case BT_VERBAR: case BT_LSQB: case BT_PERCNT: - case BT_S: case BT_CR: case BT_LF: - *nextTokPtr = ptr; - return tok; -#ifdef XML_NS - case BT_COLON: - ptr += MINBPC(enc); - switch (tok) { - case XML_TOK_NAME: - if (ptr == end) - return XML_TOK_PARTIAL; - tok = XML_TOK_PREFIXED_NAME; - switch (BYTE_TYPE(enc, ptr)) { - CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) - default: - tok = XML_TOK_NMTOKEN; - break; - } - break; - case XML_TOK_PREFIXED_NAME: - tok = XML_TOK_NMTOKEN; - break; - } - break; -#endif - case BT_PLUS: - if (tok == XML_TOK_NMTOKEN) { - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_NAME_PLUS; - case BT_AST: - if (tok == XML_TOK_NMTOKEN) { - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_NAME_ASTERISK; - case BT_QUEST: - if (tok == XML_TOK_NMTOKEN) { - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_NAME_QUESTION; - default: - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - } - return -tok; -} - -static int PTRCALL -PREFIX(attributeValueTok)(const ENCODING *enc, const char *ptr, - const char *end, const char **nextTokPtr) -{ - const char *start; - if (ptr == end) - return XML_TOK_NONE; - start = ptr; - while (ptr != end) { - switch (BYTE_TYPE(enc, ptr)) { -#define LEAD_CASE(n) \ - case BT_LEAD ## n: ptr += n; break; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE - case BT_AMP: - if (ptr == start) - return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr); - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; - case BT_LT: - /* this is for inside entity references */ - *nextTokPtr = ptr; - return XML_TOK_INVALID; - case BT_LF: - if (ptr == start) { - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_DATA_NEWLINE; - } - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; - case BT_CR: - if (ptr == start) { - ptr += MINBPC(enc); - if (ptr == end) - return XML_TOK_TRAILING_CR; - if (BYTE_TYPE(enc, ptr) == BT_LF) - ptr += MINBPC(enc); - *nextTokPtr = ptr; - return XML_TOK_DATA_NEWLINE; - } - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; - case BT_S: - if (ptr == start) { - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_ATTRIBUTE_VALUE_S; - } - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; - default: - ptr += MINBPC(enc); - break; - } - } - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; -} - -static int PTRCALL -PREFIX(entityValueTok)(const ENCODING *enc, const char *ptr, - const char *end, const char **nextTokPtr) -{ - const char *start; - if (ptr == end) - return XML_TOK_NONE; - start = ptr; - while (ptr != end) { - switch (BYTE_TYPE(enc, ptr)) { -#define LEAD_CASE(n) \ - case BT_LEAD ## n: ptr += n; break; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE - case BT_AMP: - if (ptr == start) - return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr); - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; - case BT_PERCNT: - if (ptr == start) { - int tok = PREFIX(scanPercent)(enc, ptr + MINBPC(enc), - end, nextTokPtr); - return (tok == XML_TOK_PERCENT) ? XML_TOK_INVALID : tok; - } - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; - case BT_LF: - if (ptr == start) { - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_DATA_NEWLINE; - } - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; - case BT_CR: - if (ptr == start) { - ptr += MINBPC(enc); - if (ptr == end) - return XML_TOK_TRAILING_CR; - if (BYTE_TYPE(enc, ptr) == BT_LF) - ptr += MINBPC(enc); - *nextTokPtr = ptr; - return XML_TOK_DATA_NEWLINE; - } - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; - default: - ptr += MINBPC(enc); - break; - } - } - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; -} - -#ifdef XML_DTD - -static int PTRCALL -PREFIX(ignoreSectionTok)(const ENCODING *enc, const char *ptr, - const char *end, const char **nextTokPtr) -{ - int level = 0; - if (MINBPC(enc) > 1) { - size_t n = end - ptr; - if (n & (MINBPC(enc) - 1)) { - n &= ~(MINBPC(enc) - 1); - end = ptr + n; - } - } - while (ptr != end) { - switch (BYTE_TYPE(enc, ptr)) { - INVALID_CASES(ptr, nextTokPtr) - case BT_LT: - if ((ptr += MINBPC(enc)) == end) - return XML_TOK_PARTIAL; - if (CHAR_MATCHES(enc, ptr, ASCII_EXCL)) { - if ((ptr += MINBPC(enc)) == end) - return XML_TOK_PARTIAL; - if (CHAR_MATCHES(enc, ptr, ASCII_LSQB)) { - ++level; - ptr += MINBPC(enc); - } - } - break; - case BT_RSQB: - if ((ptr += MINBPC(enc)) == end) - return XML_TOK_PARTIAL; - if (CHAR_MATCHES(enc, ptr, ASCII_RSQB)) { - if ((ptr += MINBPC(enc)) == end) - return XML_TOK_PARTIAL; - if (CHAR_MATCHES(enc, ptr, ASCII_GT)) { - ptr += MINBPC(enc); - if (level == 0) { - *nextTokPtr = ptr; - return XML_TOK_IGNORE_SECT; - } - --level; - } - } - break; - default: - ptr += MINBPC(enc); - break; - } - } - return XML_TOK_PARTIAL; -} - -#endif /* XML_DTD */ - -static int PTRCALL -PREFIX(isPublicId)(const ENCODING *enc, const char *ptr, const char *end, - const char **badPtr) -{ - ptr += MINBPC(enc); - end -= MINBPC(enc); - for (; ptr != end; ptr += MINBPC(enc)) { - switch (BYTE_TYPE(enc, ptr)) { - case BT_DIGIT: - case BT_HEX: - case BT_MINUS: - case BT_APOS: - case BT_LPAR: - case BT_RPAR: - case BT_PLUS: - case BT_COMMA: - case BT_SOL: - case BT_EQUALS: - case BT_QUEST: - case BT_CR: - case BT_LF: - case BT_SEMI: - case BT_EXCL: - case BT_AST: - case BT_PERCNT: - case BT_NUM: -#ifdef XML_NS - case BT_COLON: -#endif - break; - case BT_S: - if (CHAR_MATCHES(enc, ptr, ASCII_TAB)) { - *badPtr = ptr; - return 0; - } - break; - case BT_NAME: - case BT_NMSTRT: - if (!(BYTE_TO_ASCII(enc, ptr) & ~0x7f)) - break; - default: - switch (BYTE_TO_ASCII(enc, ptr)) { - case 0x24: /* $ */ - case 0x40: /* @ */ - break; - default: - *badPtr = ptr; - return 0; - } - break; - } - } - return 1; -} - -/* This must only be called for a well-formed start-tag or empty - element tag. Returns the number of attributes. Pointers to the - first attsMax attributes are stored in atts. -*/ - -static int PTRCALL -PREFIX(getAtts)(const ENCODING *enc, const char *ptr, - int attsMax, ATTRIBUTE *atts) -{ - enum { other, inName, inValue } state = inName; - int nAtts = 0; - int open = 0; /* defined when state == inValue; - initialization just to shut up compilers */ - - for (ptr += MINBPC(enc);; ptr += MINBPC(enc)) { - switch (BYTE_TYPE(enc, ptr)) { -#define START_NAME \ - if (state == other) { \ - if (nAtts < attsMax) { \ - atts[nAtts].name = ptr; \ - atts[nAtts].normalized = 1; \ - } \ - state = inName; \ - } -#define LEAD_CASE(n) \ - case BT_LEAD ## n: START_NAME ptr += (n - MINBPC(enc)); break; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE - case BT_NONASCII: - case BT_NMSTRT: - case BT_HEX: - START_NAME - break; -#undef START_NAME - case BT_QUOT: - if (state != inValue) { - if (nAtts < attsMax) - atts[nAtts].valuePtr = ptr + MINBPC(enc); - state = inValue; - open = BT_QUOT; - } - else if (open == BT_QUOT) { - state = other; - if (nAtts < attsMax) - atts[nAtts].valueEnd = ptr; - nAtts++; - } - break; - case BT_APOS: - if (state != inValue) { - if (nAtts < attsMax) - atts[nAtts].valuePtr = ptr + MINBPC(enc); - state = inValue; - open = BT_APOS; - } - else if (open == BT_APOS) { - state = other; - if (nAtts < attsMax) - atts[nAtts].valueEnd = ptr; - nAtts++; - } - break; - case BT_AMP: - if (nAtts < attsMax) - atts[nAtts].normalized = 0; - break; - case BT_S: - if (state == inName) - state = other; - else if (state == inValue - && nAtts < attsMax - && atts[nAtts].normalized - && (ptr == atts[nAtts].valuePtr - || BYTE_TO_ASCII(enc, ptr) != ASCII_SPACE - || BYTE_TO_ASCII(enc, ptr + MINBPC(enc)) == ASCII_SPACE - || BYTE_TYPE(enc, ptr + MINBPC(enc)) == open)) - atts[nAtts].normalized = 0; - break; - case BT_CR: case BT_LF: - /* This case ensures that the first attribute name is counted - Apart from that we could just change state on the quote. */ - if (state == inName) - state = other; - else if (state == inValue && nAtts < attsMax) - atts[nAtts].normalized = 0; - break; - case BT_GT: - case BT_SOL: - if (state != inValue) - return nAtts; - break; - default: - break; - } - } - /* not reached */ -} - -static int PTRFASTCALL -PREFIX(charRefNumber)(const ENCODING *enc, const char *ptr) -{ - int result = 0; - /* skip &# */ - ptr += 2*MINBPC(enc); - if (CHAR_MATCHES(enc, ptr, ASCII_x)) { - for (ptr += MINBPC(enc); - !CHAR_MATCHES(enc, ptr, ASCII_SEMI); - ptr += MINBPC(enc)) { - int c = BYTE_TO_ASCII(enc, ptr); - switch (c) { - case ASCII_0: case ASCII_1: case ASCII_2: case ASCII_3: case ASCII_4: - case ASCII_5: case ASCII_6: case ASCII_7: case ASCII_8: case ASCII_9: - result <<= 4; - result |= (c - ASCII_0); - break; - case ASCII_A: case ASCII_B: case ASCII_C: - case ASCII_D: case ASCII_E: case ASCII_F: - result <<= 4; - result += 10 + (c - ASCII_A); - break; - case ASCII_a: case ASCII_b: case ASCII_c: - case ASCII_d: case ASCII_e: case ASCII_f: - result <<= 4; - result += 10 + (c - ASCII_a); - break; - } - if (result >= 0x110000) - return -1; - } - } - else { - for (; !CHAR_MATCHES(enc, ptr, ASCII_SEMI); ptr += MINBPC(enc)) { - int c = BYTE_TO_ASCII(enc, ptr); - result *= 10; - result += (c - ASCII_0); - if (result >= 0x110000) - return -1; - } - } - return checkCharRefNumber(result); -} - -static int PTRCALL -PREFIX(predefinedEntityName)(const ENCODING *enc, const char *ptr, - const char *end) -{ - switch ((end - ptr)/MINBPC(enc)) { - case 2: - if (CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_t)) { - switch (BYTE_TO_ASCII(enc, ptr)) { - case ASCII_l: - return ASCII_LT; - case ASCII_g: - return ASCII_GT; - } - } - break; - case 3: - if (CHAR_MATCHES(enc, ptr, ASCII_a)) { - ptr += MINBPC(enc); - if (CHAR_MATCHES(enc, ptr, ASCII_m)) { - ptr += MINBPC(enc); - if (CHAR_MATCHES(enc, ptr, ASCII_p)) - return ASCII_AMP; - } - } - break; - case 4: - switch (BYTE_TO_ASCII(enc, ptr)) { - case ASCII_q: - ptr += MINBPC(enc); - if (CHAR_MATCHES(enc, ptr, ASCII_u)) { - ptr += MINBPC(enc); - if (CHAR_MATCHES(enc, ptr, ASCII_o)) { - ptr += MINBPC(enc); - if (CHAR_MATCHES(enc, ptr, ASCII_t)) - return ASCII_QUOT; - } - } - break; - case ASCII_a: - ptr += MINBPC(enc); - if (CHAR_MATCHES(enc, ptr, ASCII_p)) { - ptr += MINBPC(enc); - if (CHAR_MATCHES(enc, ptr, ASCII_o)) { - ptr += MINBPC(enc); - if (CHAR_MATCHES(enc, ptr, ASCII_s)) - return ASCII_APOS; - } - } - break; - } - } - return 0; -} - -static int PTRCALL -PREFIX(sameName)(const ENCODING *enc, const char *ptr1, const char *ptr2) -{ - for (;;) { - switch (BYTE_TYPE(enc, ptr1)) { -#define LEAD_CASE(n) \ - case BT_LEAD ## n: \ - if (*ptr1++ != *ptr2++) \ - return 0; - LEAD_CASE(4) LEAD_CASE(3) LEAD_CASE(2) -#undef LEAD_CASE - /* fall through */ - if (*ptr1++ != *ptr2++) - return 0; - break; - case BT_NONASCII: - case BT_NMSTRT: -#ifdef XML_NS - case BT_COLON: -#endif - case BT_HEX: - case BT_DIGIT: - case BT_NAME: - case BT_MINUS: - if (*ptr2++ != *ptr1++) - return 0; - if (MINBPC(enc) > 1) { - if (*ptr2++ != *ptr1++) - return 0; - if (MINBPC(enc) > 2) { - if (*ptr2++ != *ptr1++) - return 0; - if (MINBPC(enc) > 3) { - if (*ptr2++ != *ptr1++) - return 0; - } - } - } - break; - default: - if (MINBPC(enc) == 1 && *ptr1 == *ptr2) - return 1; - switch (BYTE_TYPE(enc, ptr2)) { - case BT_LEAD2: - case BT_LEAD3: - case BT_LEAD4: - case BT_NONASCII: - case BT_NMSTRT: -#ifdef XML_NS - case BT_COLON: -#endif - case BT_HEX: - case BT_DIGIT: - case BT_NAME: - case BT_MINUS: - return 0; - default: - return 1; - } - } - } - /* not reached */ -} - -static int PTRCALL -PREFIX(nameMatchesAscii)(const ENCODING *enc, const char *ptr1, - const char *end1, const char *ptr2) -{ - for (; *ptr2; ptr1 += MINBPC(enc), ptr2++) { - if (ptr1 == end1) - return 0; - if (!CHAR_MATCHES(enc, ptr1, *ptr2)) - return 0; - } - return ptr1 == end1; -} - -static int PTRFASTCALL -PREFIX(nameLength)(const ENCODING *enc, const char *ptr) -{ - const char *start = ptr; - for (;;) { - switch (BYTE_TYPE(enc, ptr)) { -#define LEAD_CASE(n) \ - case BT_LEAD ## n: ptr += n; break; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE - case BT_NONASCII: - case BT_NMSTRT: -#ifdef XML_NS - case BT_COLON: -#endif - case BT_HEX: - case BT_DIGIT: - case BT_NAME: - case BT_MINUS: - ptr += MINBPC(enc); - break; - default: - return (int)(ptr - start); - } - } -} - -static const char * PTRFASTCALL -PREFIX(skipS)(const ENCODING *enc, const char *ptr) -{ - for (;;) { - switch (BYTE_TYPE(enc, ptr)) { - case BT_LF: - case BT_CR: - case BT_S: - ptr += MINBPC(enc); - break; - default: - return ptr; - } - } -} - -static void PTRCALL -PREFIX(updatePosition)(const ENCODING *enc, - const char *ptr, - const char *end, - POSITION *pos) -{ - while (ptr < end) { - switch (BYTE_TYPE(enc, ptr)) { -#define LEAD_CASE(n) \ - case BT_LEAD ## n: \ - ptr += n; \ - break; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE - case BT_LF: - pos->columnNumber = (XML_Size)-1; - pos->lineNumber++; - ptr += MINBPC(enc); - break; - case BT_CR: - pos->lineNumber++; - ptr += MINBPC(enc); - if (ptr != end && BYTE_TYPE(enc, ptr) == BT_LF) - ptr += MINBPC(enc); - pos->columnNumber = (XML_Size)-1; - break; - default: - ptr += MINBPC(enc); - break; - } - pos->columnNumber++; - } -} - -#undef DO_LEAD_CASE -#undef MULTIBYTE_CASES -#undef INVALID_CASES -#undef CHECK_NAME_CASE -#undef CHECK_NAME_CASES -#undef CHECK_NMSTRT_CASE -#undef CHECK_NMSTRT_CASES - -#endif /* XML_TOK_IMPL_C */ diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmltok_impl.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmltok_impl.h deleted file mode 100644 index da0ea60..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmltok_impl.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd -See the file COPYING for copying permission. -*/ - -enum { - BT_NONXML, - BT_MALFORM, - BT_LT, - BT_AMP, - BT_RSQB, - BT_LEAD2, - BT_LEAD3, - BT_LEAD4, - BT_TRAIL, - BT_CR, - BT_LF, - BT_GT, - BT_QUOT, - BT_APOS, - BT_EQUALS, - BT_QUEST, - BT_EXCL, - BT_SOL, - BT_SEMI, - BT_NUM, - BT_LSQB, - BT_S, - BT_NMSTRT, - BT_COLON, - BT_HEX, - BT_DIGIT, - BT_NAME, - BT_MINUS, - BT_OTHER, /* known not to be a name or name start character */ - BT_NONASCII, /* might be a name or name start character */ - BT_PERCNT, - BT_LPAR, - BT_RPAR, - BT_AST, - BT_PLUS, - BT_COMMA, - BT_VERBAR -}; - -#include diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmltok_ns.c b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmltok_ns.c deleted file mode 100644 index c3b88fd..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/lib/xmltok_ns.c +++ /dev/null @@ -1,115 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -/* This file is included! */ -#ifdef XML_TOK_NS_C - -const ENCODING * -NS(XmlGetUtf8InternalEncoding)(void) -{ - return &ns(internal_utf8_encoding).enc; -} - -const ENCODING * -NS(XmlGetUtf16InternalEncoding)(void) -{ -#if BYTEORDER == 1234 - return &ns(internal_little2_encoding).enc; -#elif BYTEORDER == 4321 - return &ns(internal_big2_encoding).enc; -#else - const short n = 1; - return (*(const char *)&n - ? &ns(internal_little2_encoding).enc - : &ns(internal_big2_encoding).enc); -#endif -} - -static const ENCODING * const NS(encodings)[] = { - &ns(latin1_encoding).enc, - &ns(ascii_encoding).enc, - &ns(utf8_encoding).enc, - &ns(big2_encoding).enc, - &ns(big2_encoding).enc, - &ns(little2_encoding).enc, - &ns(utf8_encoding).enc /* NO_ENC */ -}; - -static int PTRCALL -NS(initScanProlog)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) -{ - return initScan(NS(encodings), (const INIT_ENCODING *)enc, - XML_PROLOG_STATE, ptr, end, nextTokPtr); -} - -static int PTRCALL -NS(initScanContent)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) -{ - return initScan(NS(encodings), (const INIT_ENCODING *)enc, - XML_CONTENT_STATE, ptr, end, nextTokPtr); -} - -int -NS(XmlInitEncoding)(INIT_ENCODING *p, const ENCODING **encPtr, - const char *name) -{ - int i = getEncodingIndex(name); - if (i == UNKNOWN_ENC) - return 0; - SET_INIT_ENC_INDEX(p, i); - p->initEnc.scanners[XML_PROLOG_STATE] = NS(initScanProlog); - p->initEnc.scanners[XML_CONTENT_STATE] = NS(initScanContent); - p->initEnc.updatePosition = initUpdatePosition; - p->encPtr = encPtr; - *encPtr = &(p->initEnc); - return 1; -} - -static const ENCODING * -NS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end) -{ -#define ENCODING_MAX 128 - char buf[ENCODING_MAX]; - char *p = buf; - int i; - XmlUtf8Convert(enc, &ptr, end, &p, p + ENCODING_MAX - 1); - if (ptr != end) - return 0; - *p = 0; - if (streqci(buf, KW_UTF_16) && enc->minBytesPerChar == 2) - return enc; - i = getEncodingIndex(buf); - if (i == UNKNOWN_ENC) - return 0; - return NS(encodings)[i]; -} - -int -NS(XmlParseXmlDecl)(int isGeneralTextEntity, - const ENCODING *enc, - const char *ptr, - const char *end, - const char **badPtr, - const char **versionPtr, - const char **versionEndPtr, - const char **encodingName, - const ENCODING **encoding, - int *standalone) -{ - return doParseXmlDecl(NS(findEncoding), - isGeneralTextEntity, - enc, - ptr, - end, - badPtr, - versionPtr, - versionEndPtr, - encodingName, - encoding, - standalone); -} - -#endif /* XML_TOK_NS_C */ diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/libexpat.gyp b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/libexpat.gyp deleted file mode 100644 index 331c1d0..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/libexpat.gyp +++ /dev/null @@ -1,84 +0,0 @@ -# This file is used with the GYP meta build system. -# http://code.google.com/p/gyp -# To build try this: -# svn co http://gyp.googlecode.com/svn/trunk gyp -# ./gyp/gyp -f make --depth=`pwd` libexpat.gyp -# make -# ./out/Debug/test - -{ - 'target_defaults': { - 'default_configuration': 'Debug', - 'configurations': { - # TODO: hoist these out and put them somewhere common, because - # RuntimeLibrary MUST MATCH across the entire project - 'Debug': { - 'defines': [ 'DEBUG', '_DEBUG' ], - 'msvs_settings': { - 'VCCLCompilerTool': { - 'RuntimeLibrary': 1, # static debug - }, - }, - }, - 'Release': { - 'defines': [ 'NDEBUG' ], - 'msvs_settings': { - 'VCCLCompilerTool': { - 'RuntimeLibrary': 0, # static release - }, - }, - } - }, - 'msvs_settings': { - 'VCCLCompilerTool': { - }, - 'VCLibrarianTool': { - }, - 'VCLinkerTool': { - 'GenerateDebugInformation': 'true', - }, - }, - }, - - 'targets': [ - { - 'variables': { 'target_arch%': 'ia32' }, # default for node v0.6.x - 'target_name': 'expat', - 'product_prefix': 'lib', - 'type': 'static_library', - 'sources': [ - 'lib/xmlparse.c', - 'lib/xmltok.c', - 'lib/xmlrole.c', - ], - 'defines': [ - 'PIC', - 'HAVE_EXPAT_CONFIG_H' - ], - 'include_dirs': [ - '.', - 'lib', - ], - 'direct_dependent_settings': { - 'include_dirs': [ - '.', - 'lib', - ], - 'conditions': [ - ['OS=="win"', { - 'defines': [ - 'XML_STATIC' - ] - }] - ], - }, - }, - - { - 'target_name': 'version', - 'type': 'executable', - 'dependencies': [ 'expat' ], - 'sources': [ 'version.c' ] - }, - ] -} diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/m4/libtool.m4 b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/m4/libtool.m4 deleted file mode 100644 index 8ff3c76..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/m4/libtool.m4 +++ /dev/null @@ -1,7851 +0,0 @@ -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -m4_define([_LT_COPYING], [dnl -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -]) - -# serial 57 LT_INIT - - -# LT_PREREQ(VERSION) -# ------------------ -# Complain and exit if this libtool version is less that VERSION. -m4_defun([LT_PREREQ], -[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, - [m4_default([$3], - [m4_fatal([Libtool version $1 or higher is required], - 63)])], - [$2])]) - - -# _LT_CHECK_BUILDDIR -# ------------------ -# Complain if the absolute build directory name contains unusual characters -m4_defun([_LT_CHECK_BUILDDIR], -[case `pwd` in - *\ * | *\ *) - AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; -esac -]) - - -# LT_INIT([OPTIONS]) -# ------------------ -AC_DEFUN([LT_INIT], -[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT -AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -AC_BEFORE([$0], [LT_LANG])dnl -AC_BEFORE([$0], [LT_OUTPUT])dnl -AC_BEFORE([$0], [LTDL_INIT])dnl -m4_require([_LT_CHECK_BUILDDIR])dnl - -dnl Autoconf doesn't catch unexpanded LT_ macros by default: -m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl -m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl -dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 -dnl unless we require an AC_DEFUNed macro: -AC_REQUIRE([LTOPTIONS_VERSION])dnl -AC_REQUIRE([LTSUGAR_VERSION])dnl -AC_REQUIRE([LTVERSION_VERSION])dnl -AC_REQUIRE([LTOBSOLETE_VERSION])dnl -m4_require([_LT_PROG_LTMAIN])dnl - -_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) - -dnl Parse OPTIONS -_LT_SET_OPTIONS([$0], [$1]) - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -_LT_SETUP - -# Only expand once: -m4_define([LT_INIT]) -])# LT_INIT - -# Old names: -AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) -AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PROG_LIBTOOL], []) -dnl AC_DEFUN([AM_PROG_LIBTOOL], []) - - -# _LT_CC_BASENAME(CC) -# ------------------- -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -m4_defun([_LT_CC_BASENAME], -[for cc_temp in $1""; do - case $cc_temp in - compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; - distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -]) - - -# _LT_FILEUTILS_DEFAULTS -# ---------------------- -# It is okay to use these file commands and assume they have been set -# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. -m4_defun([_LT_FILEUTILS_DEFAULTS], -[: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} -])# _LT_FILEUTILS_DEFAULTS - - -# _LT_SETUP -# --------- -m4_defun([_LT_SETUP], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl - -_LT_DECL([], [host_alias], [0], [The host system])dnl -_LT_DECL([], [host], [0])dnl -_LT_DECL([], [host_os], [0])dnl -dnl -_LT_DECL([], [build_alias], [0], [The build system])dnl -_LT_DECL([], [build], [0])dnl -_LT_DECL([], [build_os], [0])dnl -dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -dnl -AC_REQUIRE([AC_PROG_LN_S])dnl -test -z "$LN_S" && LN_S="ln -s" -_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl -dnl -AC_REQUIRE([LT_CMD_MAX_LEN])dnl -_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl -_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl -dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl -m4_require([_LT_CMD_RELOAD])dnl -m4_require([_LT_CHECK_MAGIC_METHOD])dnl -m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl -m4_require([_LT_CMD_OLD_ARCHIVE])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_WITH_SYSROOT])dnl - -_LT_CONFIG_LIBTOOL_INIT([ -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi -]) -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -_LT_CHECK_OBJDIR - -m4_require([_LT_TAG_COMPILER])dnl - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -_LT_CC_BASENAME([$compiler]) - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - _LT_PATH_MAGIC - fi - ;; -esac - -# Use C for the default configuration in the libtool script -LT_SUPPORTED_TAG([CC]) -_LT_LANG_C_CONFIG -_LT_LANG_DEFAULT_CONFIG -_LT_CONFIG_COMMANDS -])# _LT_SETUP - - -# _LT_PREPARE_SED_QUOTE_VARS -# -------------------------- -# Define a few sed substitution that help us do robust quoting. -m4_defun([_LT_PREPARE_SED_QUOTE_VARS], -[# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\([["`\\]]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' -]) - -# _LT_PROG_LTMAIN -# --------------- -# Note that this code is called both from `configure', and `config.status' -# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, -# `config.status' has no value for ac_aux_dir unless we are using Automake, -# so we pass a copy along to make sure it has a sensible value anyway. -m4_defun([_LT_PROG_LTMAIN], -[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl -_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) -ltmain="$ac_aux_dir/ltmain.sh" -])# _LT_PROG_LTMAIN - - -## ------------------------------------- ## -## Accumulate code for creating libtool. ## -## ------------------------------------- ## - -# So that we can recreate a full libtool script including additional -# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS -# in macros and then make a single call at the end using the `libtool' -# label. - - -# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) -# ---------------------------------------- -# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL_INIT], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_INIT], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_INIT]) - - -# _LT_CONFIG_LIBTOOL([COMMANDS]) -# ------------------------------ -# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) - - -# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) -# ----------------------------------------------------- -m4_defun([_LT_CONFIG_SAVE_COMMANDS], -[_LT_CONFIG_LIBTOOL([$1]) -_LT_CONFIG_LIBTOOL_INIT([$2]) -]) - - -# _LT_FORMAT_COMMENT([COMMENT]) -# ----------------------------- -# Add leading comment marks to the start of each line, and a trailing -# full-stop to the whole comment if one is not present already. -m4_define([_LT_FORMAT_COMMENT], -[m4_ifval([$1], [ -m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], - [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) -)]) - - - -## ------------------------ ## -## FIXME: Eliminate VARNAME ## -## ------------------------ ## - - -# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) -# ------------------------------------------------------------------- -# CONFIGNAME is the name given to the value in the libtool script. -# VARNAME is the (base) name used in the configure script. -# VALUE may be 0, 1 or 2 for a computed quote escaped value based on -# VARNAME. Any other value will be used directly. -m4_define([_LT_DECL], -[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], - [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], - [m4_ifval([$1], [$1], [$2])]) - lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) - m4_ifval([$4], - [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) - lt_dict_add_subkey([lt_decl_dict], [$2], - [tagged?], [m4_ifval([$5], [yes], [no])])]) -]) - - -# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) -# -------------------------------------------------------- -m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) - - -# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_tag_varnames], -[_lt_decl_filter([tagged?], [yes], $@)]) - - -# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) -# --------------------------------------------------------- -m4_define([_lt_decl_filter], -[m4_case([$#], - [0], [m4_fatal([$0: too few arguments: $#])], - [1], [m4_fatal([$0: too few arguments: $#: $1])], - [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], - [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], - [lt_dict_filter([lt_decl_dict], $@)])[]dnl -]) - - -# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) -# -------------------------------------------------- -m4_define([lt_decl_quote_varnames], -[_lt_decl_filter([value], [1], $@)]) - - -# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_dquote_varnames], -[_lt_decl_filter([value], [2], $@)]) - - -# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_varnames_tagged], -[m4_assert([$# <= 2])dnl -_$0(m4_quote(m4_default([$1], [[, ]])), - m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), - m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) -m4_define([_lt_decl_varnames_tagged], -[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) - - -# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_all_varnames], -[_$0(m4_quote(m4_default([$1], [[, ]])), - m4_if([$2], [], - m4_quote(lt_decl_varnames), - m4_quote(m4_shift($@))))[]dnl -]) -m4_define([_lt_decl_all_varnames], -[lt_join($@, lt_decl_varnames_tagged([$1], - lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl -]) - - -# _LT_CONFIG_STATUS_DECLARE([VARNAME]) -# ------------------------------------ -# Quote a variable value, and forward it to `config.status' so that its -# declaration there will have the same value as in `configure'. VARNAME -# must have a single quote delimited value for this to work. -m4_define([_LT_CONFIG_STATUS_DECLARE], -[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) - - -# _LT_CONFIG_STATUS_DECLARATIONS -# ------------------------------ -# We delimit libtool config variables with single quotes, so when -# we write them to config.status, we have to be sure to quote all -# embedded single quotes properly. In configure, this macro expands -# each variable declared with _LT_DECL (and _LT_TAGDECL) into: -# -# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' -m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], -[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), - [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAGS -# ---------------- -# Output comment and list of tags supported by the script -m4_defun([_LT_LIBTOOL_TAGS], -[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl -available_tags="_LT_TAGS"dnl -]) - - -# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) -# ----------------------------------- -# Extract the dictionary values for VARNAME (optionally with TAG) and -# expand to a commented shell variable setting: -# -# # Some comment about what VAR is for. -# visible_name=$lt_internal_name -m4_define([_LT_LIBTOOL_DECLARE], -[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], - [description])))[]dnl -m4_pushdef([_libtool_name], - m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl -m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), - [0], [_libtool_name=[$]$1], - [1], [_libtool_name=$lt_[]$1], - [2], [_libtool_name=$lt_[]$1], - [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl -m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl -]) - - -# _LT_LIBTOOL_CONFIG_VARS -# ----------------------- -# Produce commented declarations of non-tagged libtool config variables -# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' -# script. Tagged libtool config variables (even for the LIBTOOL CONFIG -# section) are produced by _LT_LIBTOOL_TAG_VARS. -m4_defun([_LT_LIBTOOL_CONFIG_VARS], -[m4_foreach([_lt_var], - m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAG_VARS(TAG) -# ------------------------- -m4_define([_LT_LIBTOOL_TAG_VARS], -[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) - - -# _LT_TAGVAR(VARNAME, [TAGNAME]) -# ------------------------------ -m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) - - -# _LT_CONFIG_COMMANDS -# ------------------- -# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of -# variables for single and double quote escaping we saved from calls -# to _LT_DECL, we can put quote escaped variables declarations -# into `config.status', and then the shell code to quote escape them in -# for loops in `config.status'. Finally, any additional code accumulated -# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. -m4_defun([_LT_CONFIG_COMMANDS], -[AC_PROVIDE_IFELSE([LT_OUTPUT], - dnl If the libtool generation code has been placed in $CONFIG_LT, - dnl instead of duplicating it all over again into config.status, - dnl then we will have config.status run $CONFIG_LT later, so it - dnl needs to know what name is stored there: - [AC_CONFIG_COMMANDS([libtool], - [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], - dnl If the libtool generation code is destined for config.status, - dnl expand the accumulated commands and init code now: - [AC_CONFIG_COMMANDS([libtool], - [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) -])#_LT_CONFIG_COMMANDS - - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], -[ - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -_LT_CONFIG_STATUS_DECLARATIONS -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$[]1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_quote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_dquote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -_LT_OUTPUT_LIBTOOL_INIT -]) - -# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) -# ------------------------------------ -# Generate a child script FILE with all initialization necessary to -# reuse the environment learned by the parent script, and make the -# file executable. If COMMENT is supplied, it is inserted after the -# `#!' sequence but before initialization text begins. After this -# macro, additional text can be appended to FILE to form the body of -# the child script. The macro ends with non-zero status if the -# file could not be fully written (such as if the disk is full). -m4_ifdef([AS_INIT_GENERATED], -[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], -[m4_defun([_LT_GENERATED_FILE_INIT], -[m4_require([AS_PREPARE])]dnl -[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl -[lt_write_fail=0 -cat >$1 <<_ASEOF || lt_write_fail=1 -#! $SHELL -# Generated by $as_me. -$2 -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$1 <<\_ASEOF || lt_write_fail=1 -AS_SHELL_SANITIZE -_AS_PREPARE -exec AS_MESSAGE_FD>&1 -_ASEOF -test $lt_write_fail = 0 && chmod +x $1[]dnl -m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT - -# LT_OUTPUT -# --------- -# This macro allows early generation of the libtool script (before -# AC_OUTPUT is called), incase it is used in configure for compilation -# tests. -AC_DEFUN([LT_OUTPUT], -[: ${CONFIG_LT=./config.lt} -AC_MSG_NOTICE([creating $CONFIG_LT]) -_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], -[# Run this file to recreate a libtool stub with the current configuration.]) - -cat >>"$CONFIG_LT" <<\_LTEOF -lt_cl_silent=false -exec AS_MESSAGE_LOG_FD>>config.log -{ - echo - AS_BOX([Running $as_me.]) -} >&AS_MESSAGE_LOG_FD - -lt_cl_help="\ -\`$as_me' creates a local libtool stub from the current configuration, -for use in further configure time tests before the real libtool is -generated. - -Usage: $[0] [[OPTIONS]] - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - -Report bugs to ." - -lt_cl_version="\ -m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl -m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) -configured by $[0], generated by m4_PACKAGE_STRING. - -Copyright (C) 2010 Free Software Foundation, Inc. -This config.lt script is free software; the Free Software Foundation -gives unlimited permision to copy, distribute and modify it." - -while test $[#] != 0 -do - case $[1] in - --version | --v* | -V ) - echo "$lt_cl_version"; exit 0 ;; - --help | --h* | -h ) - echo "$lt_cl_help"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --quiet | --q* | --silent | --s* | -q ) - lt_cl_silent=: ;; - - -*) AC_MSG_ERROR([unrecognized option: $[1] -Try \`$[0] --help' for more information.]) ;; - - *) AC_MSG_ERROR([unrecognized argument: $[1] -Try \`$[0] --help' for more information.]) ;; - esac - shift -done - -if $lt_cl_silent; then - exec AS_MESSAGE_FD>/dev/null -fi -_LTEOF - -cat >>"$CONFIG_LT" <<_LTEOF -_LT_OUTPUT_LIBTOOL_COMMANDS_INIT -_LTEOF - -cat >>"$CONFIG_LT" <<\_LTEOF -AC_MSG_NOTICE([creating $ofile]) -_LT_OUTPUT_LIBTOOL_COMMANDS -AS_EXIT(0) -_LTEOF -chmod +x "$CONFIG_LT" - -# configure is writing to config.log, but config.lt does its own redirection, -# appending to config.log, which fails on DOS, as config.log is still kept -# open by configure. Here we exec the FD to /dev/null, effectively closing -# config.log, so it can be properly (re)opened and appended to by config.lt. -lt_cl_success=: -test "$silent" = yes && - lt_config_lt_args="$lt_config_lt_args --quiet" -exec AS_MESSAGE_LOG_FD>/dev/null -$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false -exec AS_MESSAGE_LOG_FD>>config.log -$lt_cl_success || AS_EXIT(1) -])# LT_OUTPUT - - -# _LT_CONFIG(TAG) -# --------------- -# If TAG is the built-in tag, create an initial libtool script with a -# default configuration from the untagged config vars. Otherwise add code -# to config.status for appending the configuration named by TAG from the -# matching tagged config vars. -m4_defun([_LT_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_CONFIG_SAVE_COMMANDS([ - m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl - m4_if(_LT_TAG, [C], [ - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -_LT_COPYING -_LT_LIBTOOL_TAGS - -# ### BEGIN LIBTOOL CONFIG -_LT_LIBTOOL_CONFIG_VARS -_LT_LIBTOOL_TAG_VARS -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - _LT_PROG_LTMAIN - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - _LT_PROG_REPLACE_SHELLFNS - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" -], -[cat <<_LT_EOF >> "$ofile" - -dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded -dnl in a comment (ie after a #). -# ### BEGIN LIBTOOL TAG CONFIG: $1 -_LT_LIBTOOL_TAG_VARS(_LT_TAG) -# ### END LIBTOOL TAG CONFIG: $1 -_LT_EOF -])dnl /m4_if -], -[m4_if([$1], [], [ - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile'], []) -])dnl /_LT_CONFIG_SAVE_COMMANDS -])# _LT_CONFIG - - -# LT_SUPPORTED_TAG(TAG) -# --------------------- -# Trace this macro to discover what tags are supported by the libtool -# --tag option, using: -# autoconf --trace 'LT_SUPPORTED_TAG:$1' -AC_DEFUN([LT_SUPPORTED_TAG], []) - - -# C support is built-in for now -m4_define([_LT_LANG_C_enabled], []) -m4_define([_LT_TAGS], []) - - -# LT_LANG(LANG) -# ------------- -# Enable libtool support for the given language if not already enabled. -AC_DEFUN([LT_LANG], -[AC_BEFORE([$0], [LT_OUTPUT])dnl -m4_case([$1], - [C], [_LT_LANG(C)], - [C++], [_LT_LANG(CXX)], - [Java], [_LT_LANG(GCJ)], - [Fortran 77], [_LT_LANG(F77)], - [Fortran], [_LT_LANG(FC)], - [Windows Resource], [_LT_LANG(RC)], - [m4_ifdef([_LT_LANG_]$1[_CONFIG], - [_LT_LANG($1)], - [m4_fatal([$0: unsupported language: "$1"])])])dnl -])# LT_LANG - - -# _LT_LANG(LANGNAME) -# ------------------ -m4_defun([_LT_LANG], -[m4_ifdef([_LT_LANG_]$1[_enabled], [], - [LT_SUPPORTED_TAG([$1])dnl - m4_append([_LT_TAGS], [$1 ])dnl - m4_define([_LT_LANG_]$1[_enabled], [])dnl - _LT_LANG_$1_CONFIG($1)])dnl -])# _LT_LANG - - -# _LT_LANG_DEFAULT_CONFIG -# ----------------------- -m4_defun([_LT_LANG_DEFAULT_CONFIG], -[AC_PROVIDE_IFELSE([AC_PROG_CXX], - [LT_LANG(CXX)], - [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) - -AC_PROVIDE_IFELSE([AC_PROG_F77], - [LT_LANG(F77)], - [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) - -AC_PROVIDE_IFELSE([AC_PROG_FC], - [LT_LANG(FC)], - [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) - -dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal -dnl pulling things in needlessly. -AC_PROVIDE_IFELSE([AC_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([LT_PROG_GCJ], - [LT_LANG(GCJ)], - [m4_ifdef([AC_PROG_GCJ], - [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([A][M_PROG_GCJ], - [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([LT_PROG_GCJ], - [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) - -AC_PROVIDE_IFELSE([LT_PROG_RC], - [LT_LANG(RC)], - [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) -])# _LT_LANG_DEFAULT_CONFIG - -# Obsolete macros: -AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) -AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) -AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) -AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) -AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_CXX], []) -dnl AC_DEFUN([AC_LIBTOOL_F77], []) -dnl AC_DEFUN([AC_LIBTOOL_FC], []) -dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) -dnl AC_DEFUN([AC_LIBTOOL_RC], []) - - -# _LT_TAG_COMPILER -# ---------------- -m4_defun([_LT_TAG_COMPILER], -[AC_REQUIRE([AC_PROG_CC])dnl - -_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl -_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl -_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl -_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC -])# _LT_TAG_COMPILER - - -# _LT_COMPILER_BOILERPLATE -# ------------------------ -# Check for compiler boilerplate output or warnings with -# the simple compiler test code. -m4_defun([_LT_COMPILER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* -])# _LT_COMPILER_BOILERPLATE - - -# _LT_LINKER_BOILERPLATE -# ---------------------- -# Check for linker boilerplate output or warnings with -# the simple link test code. -m4_defun([_LT_LINKER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* -])# _LT_LINKER_BOILERPLATE - -# _LT_REQUIRED_DARWIN_CHECKS -# ------------------------- -m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ - case $host_os in - rhapsody* | darwin*) - AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) - AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) - AC_CHECK_TOOL([LIPO], [lipo], [:]) - AC_CHECK_TOOL([OTOOL], [otool], [:]) - AC_CHECK_TOOL([OTOOL64], [otool64], [:]) - _LT_DECL([], [DSYMUTIL], [1], - [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) - _LT_DECL([], [NMEDIT], [1], - [Tool to change global to local symbols on Mac OS X]) - _LT_DECL([], [LIPO], [1], - [Tool to manipulate fat objects and archives on Mac OS X]) - _LT_DECL([], [OTOOL], [1], - [ldd/readelf like tool for Mach-O binaries on Mac OS X]) - _LT_DECL([], [OTOOL64], [1], - [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) - - AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], - [lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi]) - AC_CACHE_CHECK([for -exported_symbols_list linker flag], - [lt_cv_ld_exported_symbols_list], - [lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [lt_cv_ld_exported_symbols_list=yes], - [lt_cv_ld_exported_symbols_list=no]) - LDFLAGS="$save_LDFLAGS" - ]) - AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], - [lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD - echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD - $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD - echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD - $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - ]) - case $host_os in - rhapsody* | darwin1.[[012]]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[[012]]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac -]) - - -# _LT_DARWIN_LINKER_FEATURES -# -------------------------- -# Checks for linker and compiler features on darwin -m4_defun([_LT_DARWIN_LINKER_FEATURES], -[ - m4_require([_LT_REQUIRED_DARWIN_CHECKS]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_automatic, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='' - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - m4_if([$1], [CXX], -[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then - _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" - fi -],[]) - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi -]) - -# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) -# ---------------------------------- -# Links a minimal program and checks the executable -# for the system default hardcoded library path. In most cases, -# this is /usr/lib:/lib, but when the MPI compilers are used -# the location of the communication and MPI libs are included too. -# If we don't find anything, use the default library path according -# to the aix ld manual. -# Store the results from the different compilers for each TAGNAME. -# Allow to override them for all tags through lt_cv_aix_libpath. -m4_defun([_LT_SYS_MODULE_PATH_AIX], -[m4_require([_LT_DECL_SED])dnl -if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], - [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ - lt_aix_libpath_sed='[ - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }]' - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi],[]) - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" - fi - ]) - aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) -fi -])# _LT_SYS_MODULE_PATH_AIX - - -# _LT_SHELL_INIT(ARG) -# ------------------- -m4_define([_LT_SHELL_INIT], -[m4_divert_text([M4SH-INIT], [$1 -])])# _LT_SHELL_INIT - - - -# _LT_PROG_ECHO_BACKSLASH -# ----------------------- -# Find how we can fake an echo command that does not interpret backslash. -# In particular, with Autoconf 2.60 or later we add some code to the start -# of the generated configure script which will find a shell with a builtin -# printf (which we can use as an echo command). -m4_defun([_LT_PROG_ECHO_BACKSLASH], -[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -AC_MSG_CHECKING([how to print strings]) -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$[]1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - -case "$ECHO" in - printf*) AC_MSG_RESULT([printf]) ;; - print*) AC_MSG_RESULT([print -r]) ;; - *) AC_MSG_RESULT([cat]) ;; -esac - -m4_ifdef([_AS_DETECT_SUGGESTED], -[_AS_DETECT_SUGGESTED([ - test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test "X`printf %s $ECHO`" = "X$ECHO" \ - || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) - -_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) -_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) -])# _LT_PROG_ECHO_BACKSLASH - - -# _LT_WITH_SYSROOT -# ---------------- -AC_DEFUN([_LT_WITH_SYSROOT], -[AC_MSG_CHECKING([for sysroot]) -AC_ARG_WITH([sysroot], -[ --with-sysroot[=DIR] Search for dependent libraries within DIR - (or the compiler's sysroot if not specified).], -[], [with_sysroot=no]) - -dnl lt_sysroot will always be passed unquoted. We quote it here -dnl in case the user passed a directory name. -lt_sysroot= -case ${with_sysroot} in #( - yes) - if test "$GCC" = yes; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - AC_MSG_RESULT([${with_sysroot}]) - AC_MSG_ERROR([The sysroot must be an absolute path.]) - ;; -esac - - AC_MSG_RESULT([${lt_sysroot:-no}]) -_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl -[dependent libraries, and in which our libraries should be installed.])]) - -# _LT_ENABLE_LOCK -# --------------- -m4_defun([_LT_ENABLE_LOCK], -[AC_ARG_ENABLE([libtool-lock], - [AS_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, - [AC_LANG_PUSH(C) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) - AC_LANG_POP]) - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -sparc*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks="$enable_libtool_lock" -])# _LT_ENABLE_LOCK - - -# _LT_PROG_AR -# ----------- -m4_defun([_LT_PROG_AR], -[AC_CHECK_TOOLS(AR, [ar], false) -: ${AR=ar} -: ${AR_FLAGS=cru} -_LT_DECL([], [AR], [1], [The archiver]) -_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) - -AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], - [lt_cv_ar_at_file=no - AC_COMPILE_IFELSE([AC_LANG_PROGRAM], - [echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' - AC_TRY_EVAL([lt_ar_try]) - if test "$ac_status" -eq 0; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - AC_TRY_EVAL([lt_ar_try]) - if test "$ac_status" -ne 0; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - ]) - ]) - -if test "x$lt_cv_ar_at_file" = xno; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi -_LT_DECL([], [archiver_list_spec], [1], - [How to feed a file listing to the archiver]) -])# _LT_PROG_AR - - -# _LT_CMD_OLD_ARCHIVE -# ------------------- -m4_defun([_LT_CMD_OLD_ARCHIVE], -[_LT_PROG_AR - -AC_CHECK_TOOL(STRIP, strip, :) -test -z "$STRIP" && STRIP=: -_LT_DECL([], [STRIP], [1], [A symbol stripping program]) - -AC_CHECK_TOOL(RANLIB, ranlib, :) -test -z "$RANLIB" && RANLIB=: -_LT_DECL([], [RANLIB], [1], - [Commands used to install an old-style archive]) - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac -_LT_DECL([], [old_postinstall_cmds], [2]) -_LT_DECL([], [old_postuninstall_cmds], [2]) -_LT_TAGDECL([], [old_archive_cmds], [2], - [Commands used to build an old-style archive]) -_LT_DECL([], [lock_old_archive_extraction], [0], - [Whether to use a lock for old archive extraction]) -])# _LT_CMD_OLD_ARCHIVE - - -# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------------------- -# Check whether the given compiler option works -AC_DEFUN([_LT_COMPILER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - fi - $RM conftest* -]) - -if test x"[$]$2" = xyes; then - m4_if([$5], , :, [$5]) -else - m4_if([$6], , :, [$6]) -fi -])# _LT_COMPILER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) - - -# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------- -# Check whether the given linker option works -AC_DEFUN([_LT_LINKER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $3" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&AS_MESSAGE_LOG_FD - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - else - $2=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" -]) - -if test x"[$]$2" = xyes; then - m4_if([$4], , :, [$4]) -else - m4_if([$5], , :, [$5]) -fi -])# _LT_LINKER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) - - -# LT_CMD_MAX_LEN -#--------------- -AC_DEFUN([LT_CMD_MAX_LEN], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -# find the maximum length of command line arguments -AC_MSG_CHECKING([the maximum length of command line arguments]) -AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac -]) -if test -n $lt_cv_sys_max_cmd_len ; then - AC_MSG_RESULT($lt_cv_sys_max_cmd_len) -else - AC_MSG_RESULT(none) -fi -max_cmd_len=$lt_cv_sys_max_cmd_len -_LT_DECL([], [max_cmd_len], [0], - [What is the maximum length of a command?]) -])# LT_CMD_MAX_LEN - -# Old name: -AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) - - -# _LT_HEADER_DLFCN -# ---------------- -m4_defun([_LT_HEADER_DLFCN], -[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl -])# _LT_HEADER_DLFCN - - -# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# ---------------------------------------------------------------- -m4_defun([_LT_TRY_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test "$cross_compiling" = yes; then : - [$4] -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -[#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -}] -_LT_EOF - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) $1 ;; - x$lt_dlneed_uscore) $2 ;; - x$lt_dlunknown|x*) $3 ;; - esac - else : - # compilation failed - $3 - fi -fi -rm -fr conftest* -])# _LT_TRY_DLOPEN_SELF - - -# LT_SYS_DLOPEN_SELF -# ------------------ -AC_DEFUN([LT_SYS_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ]) - ;; - - *) - AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen="shl_load"], - [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], - [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen="dlopen"], - [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], - [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], - [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) - ]) - ]) - ]) - ]) - ]) - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - AC_CACHE_CHECK([whether a program can dlopen itself], - lt_cv_dlopen_self, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, - lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) - ]) - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - AC_CACHE_CHECK([whether a statically linked program can dlopen itself], - lt_cv_dlopen_self_static, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, - lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) - ]) - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi -_LT_DECL([dlopen_support], [enable_dlopen], [0], - [Whether dlopen is supported]) -_LT_DECL([dlopen_self], [enable_dlopen_self], [0], - [Whether dlopen of programs is supported]) -_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], - [Whether dlopen of statically linked programs is supported]) -])# LT_SYS_DLOPEN_SELF - -# Old name: -AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) - - -# _LT_COMPILER_C_O([TAGNAME]) -# --------------------------- -# Check to see if options -c and -o are simultaneously supported by compiler. -# This macro does not hard code the compiler like AC_PROG_CC_C_O. -m4_defun([_LT_COMPILER_C_O], -[m4_require([_LT_DECL_SED])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - fi - fi - chmod u+w . 2>&AS_MESSAGE_LOG_FD - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* -]) -_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], - [Does compiler simultaneously support -c and -o options?]) -])# _LT_COMPILER_C_O - - -# _LT_COMPILER_FILE_LOCKS([TAGNAME]) -# ---------------------------------- -# Check to see if we can do hard links to lock some files if needed -m4_defun([_LT_COMPILER_FILE_LOCKS], -[m4_require([_LT_ENABLE_LOCK])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_COMPILER_C_O([$1]) - -hard_links="nottested" -if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - AC_MSG_CHECKING([if we can lock with hard links]) - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - AC_MSG_RESULT([$hard_links]) - if test "$hard_links" = no; then - AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) - need_locks=warn - fi -else - need_locks=no -fi -_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) -])# _LT_COMPILER_FILE_LOCKS - - -# _LT_CHECK_OBJDIR -# ---------------- -m4_defun([_LT_CHECK_OBJDIR], -[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], -[rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null]) -objdir=$lt_cv_objdir -_LT_DECL([], [objdir], [0], - [The name of the directory that contains temporary libtool files])dnl -m4_pattern_allow([LT_OBJDIR])dnl -AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", - [Define to the sub-directory in which libtool stores uninstalled libraries.]) -])# _LT_CHECK_OBJDIR - - -# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) -# -------------------------------------- -# Check hardcoding attributes. -m4_defun([_LT_LINKER_HARDCODE_LIBPATH], -[AC_MSG_CHECKING([how to hardcode library paths into programs]) -_LT_TAGVAR(hardcode_action, $1)= -if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || - test -n "$_LT_TAGVAR(runpath_var, $1)" || - test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && - test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then - # Linking always hardcodes the temporary library directory. - _LT_TAGVAR(hardcode_action, $1)=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - _LT_TAGVAR(hardcode_action, $1)=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - _LT_TAGVAR(hardcode_action, $1)=unsupported -fi -AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) - -if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || - test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi -_LT_TAGDECL([], [hardcode_action], [0], - [How to hardcode a shared library path into an executable]) -])# _LT_LINKER_HARDCODE_LIBPATH - - -# _LT_CMD_STRIPLIB -# ---------------- -m4_defun([_LT_CMD_STRIPLIB], -[m4_require([_LT_DECL_EGREP]) -striplib= -old_striplib= -AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac -fi -_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) -_LT_DECL([], [striplib], [1]) -])# _LT_CMD_STRIPLIB - - -# _LT_SYS_DYNAMIC_LINKER([TAG]) -# ----------------------------- -# PORTME Fill in your ld.so characteristics -m4_defun([_LT_SYS_DYNAMIC_LINKER], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_OBJDUMP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -AC_MSG_CHECKING([dynamic linker characteristics]) -m4_if([$1], - [], [ -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[[lt_foo]]++; } - if (lt_freq[[lt_foo]] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi]) -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[[4-9]]*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[[01]] | aix4.[[01]].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[[45]]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec="$LIB" - if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[[123]]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[[01]]* | freebsdelf3.[[01]]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ - freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -haiku*) - version_type=linux - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[[3-9]]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], - [lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ - LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], - [lt_cv_shlibpath_overrides_runpath=yes])]) - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - ]) - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[[89]] | openbsd2.[[89]].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -AC_MSG_RESULT([$dynamic_linker]) -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - -_LT_DECL([], [variables_saved_for_relink], [1], - [Variables whose values should be saved in libtool wrapper scripts and - restored at link time]) -_LT_DECL([], [need_lib_prefix], [0], - [Do we need the "lib" prefix for modules?]) -_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) -_LT_DECL([], [version_type], [0], [Library versioning type]) -_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) -_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) -_LT_DECL([], [shlibpath_overrides_runpath], [0], - [Is shlibpath searched before the hard-coded library search path?]) -_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) -_LT_DECL([], [library_names_spec], [1], - [[List of archive names. First name is the real one, the rest are links. - The last name is the one that the linker finds with -lNAME]]) -_LT_DECL([], [soname_spec], [1], - [[The coded name of the library, if different from the real name]]) -_LT_DECL([], [install_override_mode], [1], - [Permission mode override for installation of shared libraries]) -_LT_DECL([], [postinstall_cmds], [2], - [Command to use after installation of a shared archive]) -_LT_DECL([], [postuninstall_cmds], [2], - [Command to use after uninstallation of a shared archive]) -_LT_DECL([], [finish_cmds], [2], - [Commands used to finish a libtool library installation in a directory]) -_LT_DECL([], [finish_eval], [1], - [[As "finish_cmds", except a single script fragment to be evaled but - not shown]]) -_LT_DECL([], [hardcode_into_libs], [0], - [Whether we should hardcode library paths into libraries]) -_LT_DECL([], [sys_lib_search_path_spec], [2], - [Compile-time system search path for libraries]) -_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], - [Run-time system search path for libraries]) -])# _LT_SYS_DYNAMIC_LINKER - - -# _LT_PATH_TOOL_PREFIX(TOOL) -# -------------------------- -# find a file program which can recognize shared library -AC_DEFUN([_LT_PATH_TOOL_PREFIX], -[m4_require([_LT_DECL_EGREP])dnl -AC_MSG_CHECKING([for $1]) -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, -[case $MAGIC_CMD in -[[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -dnl $ac_dummy forces splitting on constant user-supplied paths. -dnl POSIX.2 word splitting is done only on the output of word expansions, -dnl not every word. This closes a longstanding sh security hole. - ac_dummy="m4_if([$2], , $PATH, [$2])" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$1; then - lt_cv_path_MAGIC_CMD="$ac_dir/$1" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac]) -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - AC_MSG_RESULT($MAGIC_CMD) -else - AC_MSG_RESULT(no) -fi -_LT_DECL([], [MAGIC_CMD], [0], - [Used to examine libraries when file_magic_cmd begins with "file"])dnl -])# _LT_PATH_TOOL_PREFIX - -# Old name: -AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) - - -# _LT_PATH_MAGIC -# -------------- -# find a file program which can recognize a shared library -m4_defun([_LT_PATH_MAGIC], -[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) - else - MAGIC_CMD=: - fi -fi -])# _LT_PATH_MAGIC - - -# LT_PATH_LD -# ---------- -# find the pathname to the GNU or non-GNU linker -AC_DEFUN([LT_PATH_LD], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PROG_ECHO_BACKSLASH])dnl - -AC_ARG_WITH([gnu-ld], - [AS_HELP_STRING([--with-gnu-ld], - [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test "$withval" = no || with_gnu_ld=yes], - [with_gnu_ld=no])dnl - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by $CC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]]* | ?:[[\\/]]*) - re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(lt_cv_path_LD, -[if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[[3-9]]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -esac -]) - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - -_LT_DECL([], [deplibs_check_method], [1], - [Method to check whether dependent libraries are shared objects]) -_LT_DECL([], [file_magic_cmd], [1], - [Command to use when deplibs_check_method = "file_magic"]) -_LT_DECL([], [file_magic_glob], [1], - [How to find potential files when deplibs_check_method = "file_magic"]) -_LT_DECL([], [want_nocaseglob], [1], - [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) -])# _LT_CHECK_MAGIC_METHOD - - -# LT_PATH_NM -# ---------- -# find the pathname to a BSD- or MS-compatible name lister -AC_DEFUN([LT_PATH_NM], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, -[if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} -fi]) -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols" - ;; - *) - DUMPBIN=: - ;; - esac - fi - AC_SUBST([DUMPBIN]) - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi -fi -test -z "$NM" && NM=nm -AC_SUBST([NM]) -_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl - -AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], - [lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) - cat conftest.out >&AS_MESSAGE_LOG_FD - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest*]) -])# LT_PATH_NM - -# Old names: -AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) -AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_PROG_NM], []) -dnl AC_DEFUN([AC_PROG_NM], []) - -# _LT_CHECK_SHAREDLIB_FROM_LINKLIB -# -------------------------------- -# how to determine the name of the shared library -# associated with a specific link library. -# -- PORTME fill in with the dynamic library characteristics -m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], -[m4_require([_LT_DECL_EGREP]) -m4_require([_LT_DECL_OBJDUMP]) -m4_require([_LT_DECL_DLLTOOL]) -AC_CACHE_CHECK([how to associate runtime and link libraries], -lt_cv_sharedlib_from_linklib_cmd, -[lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh - # decide which to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd="$ECHO" - ;; -esac -]) -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - -_LT_DECL([], [sharedlib_from_linklib_cmd], [1], - [Command to associate shared and link libraries]) -])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB - - -# _LT_PATH_MANIFEST_TOOL -# ---------------------- -# locate the manifest tool -m4_defun([_LT_PATH_MANIFEST_TOOL], -[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], - [lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&AS_MESSAGE_LOG_FD - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest*]) -if test "x$lt_cv_path_mainfest_tool" != xyes; then - MANIFEST_TOOL=: -fi -_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl -])# _LT_PATH_MANIFEST_TOOL - - -# LT_LIB_M -# -------- -# check for math library -AC_DEFUN([LT_LIB_M], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -LIBM= -case $host in -*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; -*-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") - AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") - ;; -*) - AC_CHECK_LIB(m, cos, LIBM="-lm") - ;; -esac -AC_SUBST([LIBM]) -])# LT_LIB_M - -# Old name: -AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_CHECK_LIBM], []) - - -# _LT_COMPILER_NO_RTTI([TAGNAME]) -# ------------------------------- -m4_defun([_LT_COMPILER_NO_RTTI], -[m4_require([_LT_TAG_COMPILER])dnl - -_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - -if test "$GCC" = yes; then - case $cc_basename in - nvcc*) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; - *) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; - esac - - _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], - lt_cv_prog_compiler_rtti_exceptions, - [-fno-rtti -fno-exceptions], [], - [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -fi -_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], - [Compiler flag to turn off builtin functions]) -])# _LT_COMPILER_NO_RTTI - - -# _LT_CMD_GLOBAL_SYMBOLS -# ---------------------- -m4_defun([_LT_CMD_GLOBAL_SYMBOLS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([LT_PATH_NM])dnl -AC_REQUIRE([LT_PATH_LD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_TAG_COMPILER])dnl - -# Check for command to grab the raw symbol name followed by C symbol from nm. -AC_MSG_CHECKING([command to parse $NM output from $compiler object]) -AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], -[ -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[[BCDEGRST]]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[[BCDT]]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[[ABCDGISTW]]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[[ABCDEGRST]]' - fi - ;; -irix* | nonstopux*) - symcode='[[BCDEGRST]]' - ;; -osf*) - symcode='[[BCDEGQRST]]' - ;; -solaris*) - symcode='[[BDRT]]' - ;; -sco3.2v5*) - symcode='[[DT]]' - ;; -sysv4.2uw2*) - symcode='[[DT]]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[[ABDT]]' - ;; -sysv4) - symcode='[[DFNSTU]]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[[ABCDGIRSTW]]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK ['"\ -" {last_section=section; section=\$ 3};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx]" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if AC_TRY_EVAL(ac_compile); then - # Now try to grab the symbols. - nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT@&t@_DLSYM_CONST -#elif defined(__osf__) -/* This system does not cope well with relocations in const data. */ -# define LT@&t@_DLSYM_CONST -#else -# define LT@&t@_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT@&t@_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[[]] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD - fi - else - echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done -]) -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - AC_MSG_RESULT(failed) -else - AC_MSG_RESULT(ok) -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - -_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], - [Take the output of nm and produce a listing of raw symbols and C names]) -_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], - [Transform the output of nm in a proper C declaration]) -_LT_DECL([global_symbol_to_c_name_address], - [lt_cv_sys_global_symbol_to_c_name_address], [1], - [Transform the output of nm in a C name address pair]) -_LT_DECL([global_symbol_to_c_name_address_lib_prefix], - [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], - [Transform the output of nm in a C name address pair when lib prefix is needed]) -_LT_DECL([], [nm_file_list_spec], [1], - [Specify filename containing input files for $NM]) -]) # _LT_CMD_GLOBAL_SYMBOLS - - -# _LT_COMPILER_PIC([TAGNAME]) -# --------------------------- -m4_defun([_LT_COMPILER_PIC], -[m4_require([_LT_TAG_COMPILER])dnl -_LT_TAGVAR(lt_prog_compiler_wl, $1)= -_LT_TAGVAR(lt_prog_compiler_pic, $1)= -_LT_TAGVAR(lt_prog_compiler_static, $1)= - -m4_if([$1], [CXX], [ - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - case $host_os in - aix[[4-9]]*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - dgux*) - case $cc_basename in - ec++*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - if test "$host_cpu" != ia64; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - fi - ;; - aCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # KAI C++ Compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd* | netbsdelf*-gnu) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - cxx*) - # Digital/Compaq C++ - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - lcc*) - # Lucid - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -], -[ - if test "$GCC" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - hpux9* | hpux10* | hpux11*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC (with -KPIC) is the default. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' - _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' - ;; - nagfor*) - # NAG Fortran compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - ccc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All Alpha code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ F* | *Sun*Fortran*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='' - ;; - *Sun\ C*) - # Sun C 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - ;; - esac - ;; - esac - ;; - - newsos6) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All OSF/1 code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - rdos*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - solaris*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; - *) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; - esac - ;; - - sunos4*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - unicos*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - - uts4*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -]) -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" - ;; -esac - -AC_CACHE_CHECK([for $compiler option to produce PIC], - [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) -_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then - _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], - [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], - [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], - [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in - "" | " "*) ;; - *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; - esac], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) -fi -_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], - [Additional compiler flags for building library objects]) - -_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], - [How to pass a linker flag through the compiler]) -# -# Check to make sure the static flag actually works. -# -wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" -_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], - _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), - $lt_tmp_static_flag, - [], - [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) -_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], - [Compiler flag to prevent dynamic linking]) -])# _LT_COMPILER_PIC - - -# _LT_LINKER_SHLIBS([TAGNAME]) -# ---------------------------- -# See if the linker supports building shared libraries. -m4_defun([_LT_LINKER_SHLIBS], -[AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -m4_if([$1], [CXX], [ - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - case $host_os in - aix[[4-9]]*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global defined - # symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" - ;; - cygwin* | mingw* | cegcc*) - case $cc_basename in - cl*) ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - ;; - esac - ;; - linux* | k*bsd*-gnu | gnu*) - _LT_TAGVAR(link_all_deplibs, $1)=no - ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac -], [ - runpath_var= - _LT_TAGVAR(allow_undefined_flag, $1)= - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(archive_cmds, $1)= - _LT_TAGVAR(archive_expsym_cmds, $1)= - _LT_TAGVAR(compiler_needs_object, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(hardcode_automatic, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= - _LT_TAGVAR(hardcode_libdir_separator, $1)= - _LT_TAGVAR(hardcode_minus_L, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_TAGVAR(inherit_rpath, $1)=no - _LT_TAGVAR(link_all_deplibs, $1)=unknown - _LT_TAGVAR(module_cmds, $1)= - _LT_TAGVAR(module_expsym_cmds, $1)= - _LT_TAGVAR(old_archive_from_new_cmds, $1)= - _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= - _LT_TAGVAR(thread_safe_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - _LT_TAGVAR(include_expsyms, $1)= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. -dnl Note also adjust exclude_expsyms for C++ above. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - linux* | k*bsd*-gnu | gnu*) - _LT_TAGVAR(link_all_deplibs, $1)=no - ;; - esac - - _LT_TAGVAR(ld_shlibs, $1)=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; - *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test "$lt_use_gnu_ld_interface" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[[3-9]]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - _LT_TAGVAR(whole_archive_flag_spec, $1)= - tmp_sharedflag='--shared' ;; - xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' - _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - sunos4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - - if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then - runpath_var= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - _LT_TAGVAR(hardcode_direct, $1)=unsupported - fi - ;; - - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - _LT_TAGVAR(link_all_deplibs, $1)=no - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - bsdi[[45]]*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - # FIXME: Should let the user specify the lib program. - _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - esac - ;; - - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - freebsd1*) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - hpux9*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - fi - ;; - - hpux11*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - m4_if($1, [], [ - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - _LT_LINKER_OPTION([if $CC understands -b], - _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], - [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) - ;; - esac - fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], - [lt_cv_irix_exported_symbol], - [save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - AC_LINK_IFELSE( - [AC_LANG_SOURCE( - [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], - [C++], [[int foo (void) { return 0; }]], - [Fortran 77], [[ - subroutine foo - end]], - [Fortran], [[ - subroutine foo - end]])])], - [lt_cv_irix_exported_symbol=yes], - [lt_cv_irix_exported_symbol=no]) - LDFLAGS="$save_LDFLAGS"]) - if test "$lt_cv_irix_exported_symbol" = yes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - fi - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - newsos6) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - else - case $host_os in - openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - ;; - esac - fi - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - solaris*) - _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - fi - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4) - case $host_vendor in - sni) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' - _LT_TAGVAR(hardcode_direct, $1)=no - ;; - motorola) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4.3*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - _LT_TAGVAR(ld_shlibs, $1)=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' - ;; - esac - fi - fi -]) -AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) -test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld - -_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl -_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl -_LT_DECL([], [extract_expsyms_cmds], [2], - [The commands to extract the exported symbol list from a shared archive]) - -# -# Do we need to explicitly link libc? -# -case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in -x|xyes) - # Assume -lc should be added - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $_LT_TAGVAR(archive_cmds, $1) in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - AC_CACHE_CHECK([whether -lc should be explicitly linked in], - [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), - [$RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if AC_TRY_EVAL(ac_compile) 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) - pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) - _LT_TAGVAR(allow_undefined_flag, $1)= - if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) - then - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no - else - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes - fi - _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - ]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) - ;; - esac - fi - ;; -esac - -_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], - [Whether or not to add -lc for building shared libraries]) -_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], - [enable_shared_with_static_runtimes], [0], - [Whether or not to disallow shared libs when runtime libs are static]) -_LT_TAGDECL([], [export_dynamic_flag_spec], [1], - [Compiler flag to allow reflexive dlopens]) -_LT_TAGDECL([], [whole_archive_flag_spec], [1], - [Compiler flag to generate shared objects directly from archives]) -_LT_TAGDECL([], [compiler_needs_object], [1], - [Whether the compiler copes with passing no objects directly]) -_LT_TAGDECL([], [old_archive_from_new_cmds], [2], - [Create an old-style archive from a shared archive]) -_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], - [Create a temporary old-style archive to link instead of a shared archive]) -_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) -_LT_TAGDECL([], [archive_expsym_cmds], [2]) -_LT_TAGDECL([], [module_cmds], [2], - [Commands used to build a loadable module if different from building - a shared archive.]) -_LT_TAGDECL([], [module_expsym_cmds], [2]) -_LT_TAGDECL([], [with_gnu_ld], [1], - [Whether we are building with GNU ld or not]) -_LT_TAGDECL([], [allow_undefined_flag], [1], - [Flag that allows shared libraries with undefined symbols to be built]) -_LT_TAGDECL([], [no_undefined_flag], [1], - [Flag that enforces no undefined symbols]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], - [Flag to hardcode $libdir into a binary during linking. - This must work even if $libdir does not exist]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], - [[If ld is used when linking, flag to hardcode $libdir into a binary - during linking. This must work even if $libdir does not exist]]) -_LT_TAGDECL([], [hardcode_libdir_separator], [1], - [Whether we need a single "-rpath" flag with a separated argument]) -_LT_TAGDECL([], [hardcode_direct], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary]) -_LT_TAGDECL([], [hardcode_direct_absolute], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary and the resulting library dependency is - "absolute", i.e impossible to change by setting ${shlibpath_var} if the - library is relocated]) -_LT_TAGDECL([], [hardcode_minus_L], [0], - [Set to "yes" if using the -LDIR flag during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_shlibpath_var], [0], - [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_automatic], [0], - [Set to "yes" if building a shared library automatically hardcodes DIR - into the library and all subsequent libraries and executables linked - against it]) -_LT_TAGDECL([], [inherit_rpath], [0], - [Set to yes if linker adds runtime paths of dependent libraries - to runtime path list]) -_LT_TAGDECL([], [link_all_deplibs], [0], - [Whether libtool must link a program against all its dependency libraries]) -_LT_TAGDECL([], [always_export_symbols], [0], - [Set to "yes" if exported symbols are required]) -_LT_TAGDECL([], [export_symbols_cmds], [2], - [The commands to list exported symbols]) -_LT_TAGDECL([], [exclude_expsyms], [1], - [Symbols that should not be listed in the preloaded symbols]) -_LT_TAGDECL([], [include_expsyms], [1], - [Symbols that must always be exported]) -_LT_TAGDECL([], [prelink_cmds], [2], - [Commands necessary for linking programs (against libraries) with templates]) -_LT_TAGDECL([], [postlink_cmds], [2], - [Commands necessary for finishing linking programs]) -_LT_TAGDECL([], [file_list_spec], [1], - [Specify filename containing input files]) -dnl FIXME: Not yet implemented -dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], -dnl [Compiler flag to generate thread safe objects]) -])# _LT_LINKER_SHLIBS - - -# _LT_LANG_C_CONFIG([TAG]) -# ------------------------ -# Ensure that the configuration variables for a C compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_defun([_LT_LANG_C_CONFIG], -[m4_require([_LT_DECL_EGREP])dnl -lt_save_CC="$CC" -AC_LANG_PUSH(C) - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - -_LT_TAG_COMPILER -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - LT_SYS_DLOPEN_SELF - _LT_CMD_STRIPLIB - - # Report which library types will actually be built - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_CONFIG($1) -fi -AC_LANG_POP -CC="$lt_save_CC" -])# _LT_LANG_C_CONFIG - - -# _LT_LANG_CXX_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a C++ compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_defun([_LT_LANG_CXX_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - AC_PROG_CXXCPP -else - _lt_caught_CXX_error=yes -fi - -AC_LANG_PUSH(C++) -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(compiler_needs_object, $1)=no -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_CFLAGS=$CFLAGS - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - else - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - fi - - if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - LT_PATH_LD - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) - _LT_TAGVAR(ld_shlibs, $1)=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - if test "$GXX" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty - # executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared - # libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # g++ - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - freebsd[[12]]*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - freebsd-elf*) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - gnu*) - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - hpux9*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' - fi - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) - _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - ;; - cxx*) - # Compaq C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - openbsd2*) - # C++ shared libraries are fairly broken - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - cxx*) - case $host in - osf3*) - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - ;; - *) - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ - $RM $lib.exp' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - case $host in - osf3*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(archive_cmds_need_lc,$1)=yes - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ - '"$_LT_TAGVAR(old_archive_cmds, $1)" - _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ - '"$_LT_TAGVAR(reload_cmds, $1)" - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) - test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - - _LT_TAGVAR(GCC, $1)="$GXX" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test "$_lt_caught_CXX_error" != yes - -AC_LANG_POP -])# _LT_LANG_CXX_CONFIG - - -# _LT_FUNC_STRIPNAME_CNF -# ---------------------- -# func_stripname_cnf prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# -# This function is identical to the (non-XSI) version of func_stripname, -# except this one can be used by m4 code that may be executed by configure, -# rather than the libtool script. -m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl -AC_REQUIRE([_LT_DECL_SED]) -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) -func_stripname_cnf () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname_cnf -])# _LT_FUNC_STRIPNAME_CNF - -# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) -# --------------------------------- -# Figure out "hidden" library dependencies from verbose -# compiler output when linking a shared library. -# Parse the compiler output and extract the necessary -# objects, libraries and library flags. -m4_defun([_LT_SYS_HIDDEN_LIBDEPS], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl -# Dependencies to place before and after the object being linked: -_LT_TAGVAR(predep_objects, $1)= -_LT_TAGVAR(postdep_objects, $1)= -_LT_TAGVAR(predeps, $1)= -_LT_TAGVAR(postdeps, $1)= -_LT_TAGVAR(compiler_lib_search_path, $1)= - -dnl we can't use the lt_simple_compile_test_code here, -dnl because it contains code intended for an executable, -dnl not a library. It's possible we should let each -dnl tag define a new lt_????_link_test_code variable, -dnl but it's only used here... -m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF -int a; -void foo (void) { a = 0; } -_LT_EOF -], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF -], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer*4 a - a=0 - return - end -_LT_EOF -], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer a - a=0 - return - end -_LT_EOF -], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF -public class foo { - private int a; - public void bar (void) { - a = 0; - } -}; -_LT_EOF -]) - -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -esac - -dnl Parse the compiler output and extract the necessary -dnl objects, libraries and library flags. -if AC_TRY_EVAL(ac_compile); then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case ${prev}${p} in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" || - test $p = "-R"; then - prev=$p - continue - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test "$pre_test_object_deps_done" = no; then - case ${prev} in - -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" - else - _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$_LT_TAGVAR(postdeps, $1)"; then - _LT_TAGVAR(postdeps, $1)="${prev}${p}" - else - _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" - fi - fi - prev= - ;; - - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$_LT_TAGVAR(predep_objects, $1)"; then - _LT_TAGVAR(predep_objects, $1)="$p" - else - _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" - fi - else - if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then - _LT_TAGVAR(postdep_objects, $1)="$p" - else - _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling $1 test program" -fi - -$RM -f confest.$objext -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -m4_if([$1], [CXX], -[case $host_os in -interix[[3-9]]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - _LT_TAGVAR(predep_objects,$1)= - _LT_TAGVAR(postdep_objects,$1)= - _LT_TAGVAR(postdeps,$1)= - ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC* | sunCC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -esac -]) - -case " $_LT_TAGVAR(postdeps, $1) " in -*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; -esac - _LT_TAGVAR(compiler_lib_search_dirs, $1)= -if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then - _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` -fi -_LT_TAGDECL([], [compiler_lib_search_dirs], [1], - [The directories searched by this compiler when creating a shared library]) -_LT_TAGDECL([], [predep_objects], [1], - [Dependencies to place before and after the objects being linked to - create a shared library]) -_LT_TAGDECL([], [postdep_objects], [1]) -_LT_TAGDECL([], [predeps], [1]) -_LT_TAGDECL([], [postdeps], [1]) -_LT_TAGDECL([], [compiler_lib_search_path], [1], - [The library search path used internally by the compiler when linking - a shared library]) -])# _LT_SYS_HIDDEN_LIBDEPS - - -# _LT_LANG_F77_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a Fortran 77 compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_F77_CONFIG], -[AC_LANG_PUSH(Fortran 77) -if test -z "$F77" || test "X$F77" = "Xno"; then - _lt_disable_F77=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for f77 test sources. -ac_ext=f - -# Object file extension for compiled f77 test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the F77 compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_F77" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC="$CC" - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${F77-"f77"} - CFLAGS=$FFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - GCC=$G77 - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$G77" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC="$lt_save_CC" - CFLAGS="$lt_save_CFLAGS" -fi # test "$_lt_disable_F77" != yes - -AC_LANG_POP -])# _LT_LANG_F77_CONFIG - - -# _LT_LANG_FC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for a Fortran compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_FC_CONFIG], -[AC_LANG_PUSH(Fortran) - -if test -z "$FC" || test "X$FC" = "Xno"; then - _lt_disable_FC=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for fc test sources. -ac_ext=${ac_fc_srcext-f} - -# Object file extension for compiled fc test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the FC compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_FC" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC="$CC" - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${FC-"f95"} - CFLAGS=$FCFLAGS - compiler=$CC - GCC=$ac_cv_fc_compiler_gnu - - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS -fi # test "$_lt_disable_FC" != yes - -AC_LANG_POP -])# _LT_LANG_FC_CONFIG - - -# _LT_LANG_GCJ_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Java Compiler compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_GCJ_CONFIG], -[AC_REQUIRE([LT_PROG_GCJ])dnl -AC_LANG_SAVE - -# Source file extension for Java test sources. -ac_ext=java - -# Object file extension for compiled Java test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="class foo {}" - -# Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC=yes -CC=${GCJ-"gcj"} -CFLAGS=$GCJFLAGS -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)="$LD" -_LT_CC_BASENAME([$compiler]) - -# GCJ did not exist at the time GCC didn't implicitly link libc in. -_LT_TAGVAR(archive_cmds_need_lc, $1)=no - -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) -fi - -AC_LANG_RESTORE - -GCC=$lt_save_GCC -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_GCJ_CONFIG - - -# _LT_LANG_RC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for the Windows resource compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_RC_CONFIG], -[AC_REQUIRE([LT_PROG_RC])dnl -AC_LANG_SAVE - -# Source file extension for RC test sources. -ac_ext=rc - -# Object file extension for compiled RC test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' - -# Code to be used in simple link tests -lt_simple_link_test_code="$lt_simple_compile_test_code" - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC= -CC=${RC-"windres"} -CFLAGS= -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) -_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - -if test -n "$compiler"; then - : - _LT_CONFIG($1) -fi - -GCC=$lt_save_GCC -AC_LANG_RESTORE -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_RC_CONFIG - - -# LT_PROG_GCJ -# ----------- -AC_DEFUN([LT_PROG_GCJ], -[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], - [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], - [AC_CHECK_TOOL(GCJ, gcj,) - test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" - AC_SUBST(GCJFLAGS)])])[]dnl -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_GCJ], []) - - -# LT_PROG_RC -# ---------- -AC_DEFUN([LT_PROG_RC], -[AC_CHECK_TOOL(RC, windres,) -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_RC], []) - - -# _LT_DECL_EGREP -# -------------- -# If we don't have a new enough Autoconf to choose the best grep -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_EGREP], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_REQUIRE([AC_PROG_FGREP])dnl -test -z "$GREP" && GREP=grep -_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) -_LT_DECL([], [EGREP], [1], [An ERE matcher]) -_LT_DECL([], [FGREP], [1], [A literal string matcher]) -dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too -AC_SUBST([GREP]) -]) - - -# _LT_DECL_OBJDUMP -# -------------- -# If we don't have a new enough Autoconf to choose the best objdump -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_OBJDUMP], -[AC_CHECK_TOOL(OBJDUMP, objdump, false) -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) -AC_SUBST([OBJDUMP]) -]) - -# _LT_DECL_DLLTOOL -# ---------------- -# Ensure DLLTOOL variable is set. -m4_defun([_LT_DECL_DLLTOOL], -[AC_CHECK_TOOL(DLLTOOL, dlltool, false) -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) -AC_SUBST([DLLTOOL]) -]) - -# _LT_DECL_SED -# ------------ -# Check for a fully-functional sed program, that truncates -# as few characters as possible. Prefer GNU sed if found. -m4_defun([_LT_DECL_SED], -[AC_PROG_SED -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" -_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) -_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], - [Sed that helps us avoid accidentally triggering echo(1) options like -n]) -])# _LT_DECL_SED - -m4_ifndef([AC_PROG_SED], [ -############################################################ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_SED. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # -############################################################ - -m4_defun([AC_PROG_SED], -[AC_MSG_CHECKING([for a sed that does not truncate output]) -AC_CACHE_VAL(lt_cv_path_SED, -[# Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -IFS=$as_save_IFS -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && continue - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test $lt_ac_count -gt 10 && break - lt_ac_count=`expr $lt_ac_count + 1` - if test $lt_ac_count -gt $lt_ac_max; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -]) -SED=$lt_cv_path_SED -AC_SUBST([SED]) -AC_MSG_RESULT([$SED]) -])#AC_PROG_SED -])#m4_ifndef - -# Old name: -AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_SED], []) - - -# _LT_CHECK_SHELL_FEATURES -# ------------------------ -# Find out whether the shell is Bourne or XSI compatible, -# or has some other useful features. -m4_defun([_LT_CHECK_SHELL_FEATURES], -[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,b/c, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -AC_MSG_RESULT([$xsi_shell]) -_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) - -AC_MSG_CHECKING([whether the shell understands "+="]) -lt_shell_append=no -( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -AC_MSG_RESULT([$lt_shell_append]) -_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi -_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac -_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl -_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl -])# _LT_CHECK_SHELL_FEATURES - - -# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) -# ------------------------------------------------------ -# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and -# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. -m4_defun([_LT_PROG_FUNCTION_REPLACE], -[dnl { -sed -e '/^$1 ()$/,/^} # $1 /c\ -$1 ()\ -{\ -m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) -} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: -]) - - -# _LT_PROG_REPLACE_SHELLFNS -# ------------------------- -# Replace existing portable implementations of several shell functions with -# equivalent extended shell implementations where those features are available.. -m4_defun([_LT_PROG_REPLACE_SHELLFNS], -[if test x"$xsi_shell" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl - func_basename_result="${1##*/}"]) - - _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}"]) - - _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"}]) - - _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl - func_split_long_opt_name=${1%%=*} - func_split_long_opt_arg=${1#*=}]) - - _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl - func_split_short_opt_arg=${1#??} - func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) - - _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) - - _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) - - _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) -fi - -if test x"$lt_shell_append" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) - - _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl - func_quote_for_eval "${2}" -dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ - eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) - - # Save a `func_append' function call where possible by direct use of '+=' - sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -else - # Save a `func_append' function call even when '+=' is not available - sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -fi - -if test x"$_lt_function_replace_fail" = x":"; then - AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) -fi -]) - -# _LT_PATH_CONVERSION_FUNCTIONS -# ----------------------------- -# Determine which file name conversion functions should be used by -# func_to_host_file (and, implicitly, by func_to_host_path). These are needed -# for certain cross-compile configurations and native mingw. -m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_MSG_CHECKING([how to convert $build file names to $host format]) -AC_CACHE_VAL(lt_cv_to_host_file_cmd, -[case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac -]) -to_host_file_cmd=$lt_cv_to_host_file_cmd -AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) -_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], - [0], [convert $build file names to $host format])dnl - -AC_MSG_CHECKING([how to convert $build file names to toolchain format]) -AC_CACHE_VAL(lt_cv_to_tool_file_cmd, -[#assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac -]) -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) -_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], - [0], [convert $build files to toolchain format])dnl -])# _LT_PATH_CONVERSION_FUNCTIONS diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/m4/ltoptions.m4 b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/m4/ltoptions.m4 deleted file mode 100644 index 17cfd51..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/m4/ltoptions.m4 +++ /dev/null @@ -1,369 +0,0 @@ -# Helper functions for option handling. -*- Autoconf -*- -# -# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 7 ltoptions.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) - - -# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) -# ------------------------------------------ -m4_define([_LT_MANGLE_OPTION], -[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) - - -# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) -# --------------------------------------- -# Set option OPTION-NAME for macro MACRO-NAME, and if there is a -# matching handler defined, dispatch to it. Other OPTION-NAMEs are -# saved as a flag. -m4_define([_LT_SET_OPTION], -[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl -m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), - _LT_MANGLE_DEFUN([$1], [$2]), - [m4_warning([Unknown $1 option `$2'])])[]dnl -]) - - -# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) -# ------------------------------------------------------------ -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -m4_define([_LT_IF_OPTION], -[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) - - -# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) -# ------------------------------------------------------- -# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME -# are set. -m4_define([_LT_UNLESS_OPTIONS], -[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), - [m4_define([$0_found])])])[]dnl -m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 -])[]dnl -]) - - -# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) -# ---------------------------------------- -# OPTION-LIST is a space-separated list of Libtool options associated -# with MACRO-NAME. If any OPTION has a matching handler declared with -# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about -# the unknown option and exit. -m4_defun([_LT_SET_OPTIONS], -[# Set options -m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [_LT_SET_OPTION([$1], _LT_Option)]) - -m4_if([$1],[LT_INIT],[ - dnl - dnl Simply set some default values (i.e off) if boolean options were not - dnl specified: - _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no - ]) - _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no - ]) - dnl - dnl If no reference was made to various pairs of opposing options, then - dnl we run the default mode handler for the pair. For example, if neither - dnl `shared' nor `disable-shared' was passed, we enable building of shared - dnl archives by default: - _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) - _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], - [_LT_ENABLE_FAST_INSTALL]) - ]) -])# _LT_SET_OPTIONS - - -## --------------------------------- ## -## Macros to handle LT_INIT options. ## -## --------------------------------- ## - -# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) -# ----------------------------------------- -m4_define([_LT_MANGLE_DEFUN], -[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) - - -# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) -# ----------------------------------------------- -m4_define([LT_OPTION_DEFINE], -[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl -])# LT_OPTION_DEFINE - - -# dlopen -# ------ -LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes -]) - -AU_DEFUN([AC_LIBTOOL_DLOPEN], -[_LT_SET_OPTION([LT_INIT], [dlopen]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `dlopen' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) - - -# win32-dll -# --------- -# Declare package support for building win32 dll's. -LT_OPTION_DEFINE([LT_INIT], [win32-dll], -[enable_win32_dll=yes - -case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; -esac - -test -z "$AS" && AS=as -_LT_DECL([], [AS], [1], [Assembler program])dnl - -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl - -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl -])# win32-dll - -AU_DEFUN([AC_LIBTOOL_WIN32_DLL], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -_LT_SET_OPTION([LT_INIT], [win32-dll]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `win32-dll' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) - - -# _LT_ENABLE_SHARED([DEFAULT]) -# ---------------------------- -# implement the --enable-shared flag, and supports the `shared' and -# `disable-shared' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_SHARED], -[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([shared], - [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], - [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) - - _LT_DECL([build_libtool_libs], [enable_shared], [0], - [Whether or not to build shared libraries]) -])# _LT_ENABLE_SHARED - -LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) -]) - -AC_DEFUN([AC_DISABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], [disable-shared]) -]) - -AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_SHARED], []) -dnl AC_DEFUN([AM_DISABLE_SHARED], []) - - - -# _LT_ENABLE_STATIC([DEFAULT]) -# ---------------------------- -# implement the --enable-static flag, and support the `static' and -# `disable-static' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_STATIC], -[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([static], - [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], - [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_static=]_LT_ENABLE_STATIC_DEFAULT) - - _LT_DECL([build_old_libs], [enable_static], [0], - [Whether or not to build static libraries]) -])# _LT_ENABLE_STATIC - -LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) -]) - -AC_DEFUN([AC_DISABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], [disable-static]) -]) - -AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_STATIC], []) -dnl AC_DEFUN([AM_DISABLE_STATIC], []) - - - -# _LT_ENABLE_FAST_INSTALL([DEFAULT]) -# ---------------------------------- -# implement the --enable-fast-install flag, and support the `fast-install' -# and `disable-fast-install' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_FAST_INSTALL], -[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([fast-install], - [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], - [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) - -_LT_DECL([fast_install], [enable_fast_install], [0], - [Whether or not to optimize for fast installation])dnl -])# _LT_ENABLE_FAST_INSTALL - -LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) - -# Old names: -AU_DEFUN([AC_ENABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `fast-install' option into LT_INIT's first parameter.]) -]) - -AU_DEFUN([AC_DISABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `disable-fast-install' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) -dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) - - -# _LT_WITH_PIC([MODE]) -# -------------------- -# implement the --with-pic flag, and support the `pic-only' and `no-pic' -# LT_INIT options. -# MODE is either `yes' or `no'. If omitted, it defaults to `both'. -m4_define([_LT_WITH_PIC], -[AC_ARG_WITH([pic], - [AS_HELP_STRING([--with-pic], - [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [pic_mode="$withval"], - [pic_mode=default]) - -test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) - -_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl -])# _LT_WITH_PIC - -LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) - -# Old name: -AU_DEFUN([AC_LIBTOOL_PICMODE], -[_LT_SET_OPTION([LT_INIT], [pic-only]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `pic-only' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) - -## ----------------- ## -## LTDL_INIT Options ## -## ----------------- ## - -m4_define([_LTDL_MODE], []) -LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], - [m4_define([_LTDL_MODE], [nonrecursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [recursive], - [m4_define([_LTDL_MODE], [recursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [subproject], - [m4_define([_LTDL_MODE], [subproject])]) - -m4_define([_LTDL_TYPE], []) -LT_OPTION_DEFINE([LTDL_INIT], [installable], - [m4_define([_LTDL_TYPE], [installable])]) -LT_OPTION_DEFINE([LTDL_INIT], [convenience], - [m4_define([_LTDL_TYPE], [convenience])]) diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/m4/ltsugar.m4 b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/m4/ltsugar.m4 deleted file mode 100644 index 9000a05..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/m4/ltsugar.m4 +++ /dev/null @@ -1,123 +0,0 @@ -# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 6 ltsugar.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) - - -# lt_join(SEP, ARG1, [ARG2...]) -# ----------------------------- -# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their -# associated separator. -# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier -# versions in m4sugar had bugs. -m4_define([lt_join], -[m4_if([$#], [1], [], - [$#], [2], [[$2]], - [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) -m4_define([_lt_join], -[m4_if([$#$2], [2], [], - [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) - - -# lt_car(LIST) -# lt_cdr(LIST) -# ------------ -# Manipulate m4 lists. -# These macros are necessary as long as will still need to support -# Autoconf-2.59 which quotes differently. -m4_define([lt_car], [[$1]]) -m4_define([lt_cdr], -[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], - [$#], 1, [], - [m4_dquote(m4_shift($@))])]) -m4_define([lt_unquote], $1) - - -# lt_append(MACRO-NAME, STRING, [SEPARATOR]) -# ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. -# Note that neither SEPARATOR nor STRING are expanded; they are appended -# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). -# No SEPARATOR is output if MACRO-NAME was previously undefined (different -# than defined and empty). -# -# This macro is needed until we can rely on Autoconf 2.62, since earlier -# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. -m4_define([lt_append], -[m4_define([$1], - m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) - - - -# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) -# ---------------------------------------------------------- -# Produce a SEP delimited list of all paired combinations of elements of -# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list -# has the form PREFIXmINFIXSUFFIXn. -# Needed until we can rely on m4_combine added in Autoconf 2.62. -m4_define([lt_combine], -[m4_if(m4_eval([$# > 3]), [1], - [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl -[[m4_foreach([_Lt_prefix], [$2], - [m4_foreach([_Lt_suffix], - ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, - [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) - - -# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) -# ----------------------------------------------------------------------- -# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited -# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. -m4_define([lt_if_append_uniq], -[m4_ifdef([$1], - [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], - [lt_append([$1], [$2], [$3])$4], - [$5])], - [lt_append([$1], [$2], [$3])$4])]) - - -# lt_dict_add(DICT, KEY, VALUE) -# ----------------------------- -m4_define([lt_dict_add], -[m4_define([$1($2)], [$3])]) - - -# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) -# -------------------------------------------- -m4_define([lt_dict_add_subkey], -[m4_define([$1($2:$3)], [$4])]) - - -# lt_dict_fetch(DICT, KEY, [SUBKEY]) -# ---------------------------------- -m4_define([lt_dict_fetch], -[m4_ifval([$3], - m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), - m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) - - -# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) -# ----------------------------------------------------------------- -m4_define([lt_if_dict_fetch], -[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], - [$5], - [$6])]) - - -# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) -# -------------------------------------------------------------- -m4_define([lt_dict_filter], -[m4_if([$5], [], [], - [lt_join(m4_quote(m4_default([$4], [[, ]])), - lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), - [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl -]) diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/m4/ltversion.m4 b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/m4/ltversion.m4 deleted file mode 100644 index 9c7b5d4..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/m4/ltversion.m4 +++ /dev/null @@ -1,23 +0,0 @@ -# ltversion.m4 -- version numbers -*- Autoconf -*- -# -# Copyright (C) 2004 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# @configure_input@ - -# serial 3293 ltversion.m4 -# This file is part of GNU Libtool - -m4_define([LT_PACKAGE_VERSION], [2.4]) -m4_define([LT_PACKAGE_REVISION], [1.3293]) - -AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.4' -macro_revision='1.3293' -_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) -_LT_DECL(, macro_revision, 0) -]) diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/m4/lt~obsolete.m4 b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/m4/lt~obsolete.m4 deleted file mode 100644 index c573da9..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/m4/lt~obsolete.m4 +++ /dev/null @@ -1,98 +0,0 @@ -# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004. -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 5 lt~obsolete.m4 - -# These exist entirely to fool aclocal when bootstrapping libtool. -# -# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) -# which have later been changed to m4_define as they aren't part of the -# exported API, or moved to Autoconf or Automake where they belong. -# -# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN -# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us -# using a macro with the same name in our local m4/libtool.m4 it'll -# pull the old libtool.m4 in (it doesn't see our shiny new m4_define -# and doesn't know about Autoconf macros at all.) -# -# So we provide this file, which has a silly filename so it's always -# included after everything else. This provides aclocal with the -# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything -# because those macros already exist, or will be overwritten later. -# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. -# -# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. -# Yes, that means every name once taken will need to remain here until -# we give up compatibility with versions before 1.7, at which point -# we need to keep only those names which we still refer to. - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) - -m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) -m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) -m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) -m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) -m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) -m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) -m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) -m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) -m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) -m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) -m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) -m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) -m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) -m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) -m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) -m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) -m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) -m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) -m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) -m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) -m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) -m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) -m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) -m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) -m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) -m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) -m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) -m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) -m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) -m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) -m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) -m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) -m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) -m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) -m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) -m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) -m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) -m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) -m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) -m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) -m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) -m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) -m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) -m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) -m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) -m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) -m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) -m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) -m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) -m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) -m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/README.txt b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/README.txt deleted file mode 100644 index 30e1d4d..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/README.txt +++ /dev/null @@ -1,13 +0,0 @@ -This directory contains the (fledgling) test suite for Expat. The -tests provide general unit testing and regression coverage. The tests -are not expected to be useful examples of Expat usage; see the -examples/ directory for that. - -The Expat tests use a partial internal implementation of the "Check" -unit testing framework for C. More information on Check can be found at: - - http://check.sourceforge.net/ - -Expat must be built and, depending on platform, must be installed, before "make check" can be executed. - -This test suite can all change in a later version. diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/benchmark/README.txt b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/benchmark/README.txt deleted file mode 100644 index 7f9cca0..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/benchmark/README.txt +++ /dev/null @@ -1,16 +0,0 @@ -Use this benchmark command line utility as follows: - - benchmark [-n] <# iterations> - -The command line arguments are: - - -n ... optional; if supplied, namespace processing is turned on - ... name/path of test xml file - ... size of processing buffer; - the file is parsed in chunks of this size - <# iterations> ... how often will the file be parsed - -Returns: - - The time (in seconds) it takes to parse the test file, - averaged over the number of iterations. \ No newline at end of file diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/benchmark/benchmark.c b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/benchmark/benchmark.c deleted file mode 100644 index 0f0fd18..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/benchmark/benchmark.c +++ /dev/null @@ -1,114 +0,0 @@ -#include -#include -#include -#include -#include "expat.h" - -#if defined(__amigaos__) && defined(__USE_INLINE__) -#include -#endif - -#ifdef XML_LARGE_SIZE -#define XML_FMT_INT_MOD "ll" -#else -#define XML_FMT_INT_MOD "l" -#endif - -static void -usage(const char *prog, int rc) -{ - fprintf(stderr, - "usage: %s [-n] filename bufferSize nr_of_loops\n", prog); - exit(rc); -} - -int main (int argc, char *argv[]) -{ - XML_Parser parser; - char *XMLBuf, *XMLBufEnd, *XMLBufPtr; - FILE *fd; - struct stat fileAttr; - int nrOfLoops, bufferSize, fileSize, i, isFinal; - int j = 0, ns = 0; - clock_t tstart, tend; - double cpuTime = 0.0; - - if (argc > 1) { - if (argv[1][0] == '-') { - if (argv[1][1] == 'n' && argv[1][2] == '\0') { - ns = 1; - j = 1; - } - else - usage(argv[0], 1); - } - } - - if (argc != j + 4) - usage(argv[0], 1); - - if (stat (argv[j + 1], &fileAttr) != 0) { - fprintf (stderr, "could not access file '%s'\n", argv[j + 1]); - return 2; - } - - fd = fopen (argv[j + 1], "r"); - if (!fd) { - fprintf (stderr, "could not open file '%s'\n", argv[j + 1]); - exit(2); - } - - bufferSize = atoi (argv[j + 2]); - nrOfLoops = atoi (argv[j + 3]); - if (bufferSize <= 0 || nrOfLoops <= 0) { - fprintf (stderr, - "buffer size and nr of loops must be greater than zero.\n"); - exit(3); - } - - XMLBuf = malloc (fileAttr.st_size); - fileSize = fread (XMLBuf, sizeof (char), fileAttr.st_size, fd); - fclose (fd); - - if (ns) - parser = XML_ParserCreateNS(NULL, '!'); - else - parser = XML_ParserCreate(NULL); - - i = 0; - XMLBufEnd = XMLBuf + fileSize; - while (i < nrOfLoops) { - XMLBufPtr = XMLBuf; - isFinal = 0; - tstart = clock(); - do { - int parseBufferSize = XMLBufEnd - XMLBufPtr; - if (parseBufferSize <= bufferSize) - isFinal = 1; - else - parseBufferSize = bufferSize; - if (!XML_Parse (parser, XMLBufPtr, parseBufferSize, isFinal)) { - fprintf (stderr, "error '%s' at line %" XML_FMT_INT_MOD \ - "u character %" XML_FMT_INT_MOD "u\n", - XML_ErrorString (XML_GetErrorCode (parser)), - XML_GetCurrentLineNumber (parser), - XML_GetCurrentColumnNumber (parser)); - free (XMLBuf); - XML_ParserFree (parser); - exit (4); - } - XMLBufPtr += bufferSize; - } while (!isFinal); - tend = clock(); - cpuTime += ((double) (tend - tstart)) / CLOCKS_PER_SEC; - XML_ParserReset(parser, NULL); - i++; - } - - XML_ParserFree (parser); - free (XMLBuf); - - printf ("%d loops, with buffer size %d. Average time per loop: %f\n", - nrOfLoops, bufferSize, cpuTime / (double) nrOfLoops); - return 0; -} diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/benchmark/benchmark.dsp b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/benchmark/benchmark.dsp deleted file mode 100644 index a3fd978..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/benchmark/benchmark.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="benchmark" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=benchmark - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "benchmark.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "benchmark.mak" CFG="benchmark - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "benchmark - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "benchmark - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "benchmark - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\lib" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x1009 /d "NDEBUG" -# ADD RSC /l 0x1009 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 /nologo /subsystem:console /machine:I386 -# ADD LINK32 libexpat.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\win32\bin\Release" - -!ELSEIF "$(CFG)" == "benchmark - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\lib" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x1009 /d "_DEBUG" -# ADD RSC /l 0x1009 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 libexpat.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\win32\bin\Debug" - -!ENDIF - -# Begin Target - -# Name "benchmark - Win32 Release" -# Name "benchmark - Win32 Debug" -# Begin Source File - -SOURCE=.\benchmark.c -# End Source File -# End Target -# End Project diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/benchmark/benchmark.dsw b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/benchmark/benchmark.dsw deleted file mode 100644 index 3346a9a..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/benchmark/benchmark.dsw +++ /dev/null @@ -1,44 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "benchmark"=.\benchmark.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name expat - End Project Dependency -}}} - -############################################################################### - -Project: "expat"=..\..\lib\expat.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/chardata.c b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/chardata.c deleted file mode 100644 index 5fb0299..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/chardata.c +++ /dev/null @@ -1,131 +0,0 @@ -/* Copyright (c) 1998-2003 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. - - chardata.c -*/ - -#ifdef HAVE_EXPAT_CONFIG_H -#include -#endif -#ifdef HAVE_CHECK_H -#include -#else -#include "minicheck.h" -#endif - -#include -#include -#include - -#include "chardata.h" - - -static int -xmlstrlen(const XML_Char *s) -{ - int len = 0; - assert(s != NULL); - while (s[len] != 0) - ++len; - return len; -} - - -void -CharData_Init(CharData *storage) -{ - assert(storage != NULL); - storage->count = -1; -} - -void -CharData_AppendString(CharData *storage, const char *s) -{ - int maxchars = sizeof(storage->data) / sizeof(storage->data[0]); - int len; - - assert(s != NULL); - len = strlen(s); - if (storage->count < 0) - storage->count = 0; - if ((len + storage->count) > maxchars) { - len = (maxchars - storage->count); - } - if (len + storage->count < sizeof(storage->data)) { - memcpy(storage->data + storage->count, s, len); - storage->count += len; - } -} - -void -CharData_AppendXMLChars(CharData *storage, const XML_Char *s, int len) -{ - int maxchars; - - assert(storage != NULL); - assert(s != NULL); - maxchars = sizeof(storage->data) / sizeof(storage->data[0]); - if (storage->count < 0) - storage->count = 0; - if (len < 0) - len = xmlstrlen(s); - if ((len + storage->count) > maxchars) { - len = (maxchars - storage->count); - } - if (len + storage->count < sizeof(storage->data)) { - memcpy(storage->data + storage->count, s, - len * sizeof(storage->data[0])); - storage->count += len; - } -} - -int -CharData_CheckString(CharData *storage, const char *expected) -{ - char buffer[1280]; - int len; - int count; - - assert(storage != NULL); - assert(expected != NULL); - count = (storage->count < 0) ? 0 : storage->count; - len = strlen(expected); - if (len != count) { - if (sizeof(XML_Char) == 1) - sprintf(buffer, "wrong number of data characters:" - " got %d, expected %d:\n%s", count, len, storage->data); - else - sprintf(buffer, - "wrong number of data characters: got %d, expected %d", - count, len); - fail(buffer); - return 0; - } - if (memcmp(expected, storage->data, len) != 0) { - fail("got bad data bytes"); - return 0; - } - return 1; -} - -int -CharData_CheckXMLChars(CharData *storage, const XML_Char *expected) -{ - char buffer[1024]; - int len = xmlstrlen(expected); - int count; - - assert(storage != NULL); - count = (storage->count < 0) ? 0 : storage->count; - if (len != count) { - sprintf(buffer, "wrong number of data characters: got %d, expected %d", - count, len); - fail(buffer); - return 0; - } - if (memcmp(expected, storage->data, len * sizeof(storage->data[0])) != 0) { - fail("got bad data bytes"); - return 0; - } - return 1; -} diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/chardata.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/chardata.h deleted file mode 100644 index e8dc4ce..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/chardata.h +++ /dev/null @@ -1,40 +0,0 @@ -/* chardata.h - - Interface to some helper routines used to accumulate and check text - and attribute content. -*/ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef XML_CHARDATA_H -#define XML_CHARDATA_H 1 - -#ifndef XML_VERSION -#include "expat.h" /* need XML_Char */ -#endif - - -typedef struct { - int count; /* # of chars, < 0 if not set */ - XML_Char data[1024]; -} CharData; - - -void CharData_Init(CharData *storage); - -void CharData_AppendString(CharData *storage, const char *s); - -void CharData_AppendXMLChars(CharData *storage, const XML_Char *s, int len); - -int CharData_CheckString(CharData *storage, const char *s); - -int CharData_CheckXMLChars(CharData *storage, const XML_Char *s); - - -#endif /* XML_CHARDATA_H */ - -#ifdef __cplusplus -} -#endif diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/minicheck.c b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/minicheck.c deleted file mode 100644 index d2f4295..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/minicheck.c +++ /dev/null @@ -1,182 +0,0 @@ -/* Miniature re-implementation of the "check" library. - * - * This is intended to support just enough of check to run the Expat - * tests. This interface is based entirely on the portion of the - * check library being used. - */ - -#include -#include -#include -#include - -#include "minicheck.h" - -Suite * -suite_create(char *name) -{ - Suite *suite = (Suite *) calloc(1, sizeof(Suite)); - if (suite != NULL) { - suite->name = name; - } - return suite; -} - -TCase * -tcase_create(char *name) -{ - TCase *tc = (TCase *) calloc(1, sizeof(TCase)); - if (tc != NULL) { - tc->name = name; - } - return tc; -} - -void -suite_add_tcase(Suite *suite, TCase *tc) -{ - assert(suite != NULL); - assert(tc != NULL); - assert(tc->next_tcase == NULL); - - tc->next_tcase = suite->tests; - suite->tests = tc; -} - -void -tcase_add_checked_fixture(TCase *tc, - tcase_setup_function setup, - tcase_teardown_function teardown) -{ - assert(tc != NULL); - tc->setup = setup; - tc->teardown = teardown; -} - -void -tcase_add_test(TCase *tc, tcase_test_function test) -{ - assert(tc != NULL); - if (tc->allocated == tc->ntests) { - int nalloc = tc->allocated + 100; - size_t new_size = sizeof(tcase_test_function) * nalloc; - tcase_test_function *new_tests = realloc(tc->tests, new_size); - assert(new_tests != NULL); - if (new_tests != tc->tests) { - free(tc->tests); - tc->tests = new_tests; - } - tc->allocated = nalloc; - } - tc->tests[tc->ntests] = test; - tc->ntests++; -} - -SRunner * -srunner_create(Suite *suite) -{ - SRunner *runner = calloc(1, sizeof(SRunner)); - if (runner != NULL) { - runner->suite = suite; - } - return runner; -} - -static jmp_buf env; - -static char const *_check_current_function = NULL; -static int _check_current_lineno = -1; -static char const *_check_current_filename = NULL; - -void -_check_set_test_info(char const *function, char const *filename, int lineno) -{ - _check_current_function = function; - _check_current_lineno = lineno; - _check_current_filename = filename; -} - - -static void -add_failure(SRunner *runner, int verbosity) -{ - runner->nfailures++; - if (verbosity >= CK_VERBOSE) { - printf("%s:%d: %s\n", _check_current_filename, - _check_current_lineno, _check_current_function); - } -} - -void -srunner_run_all(SRunner *runner, int verbosity) -{ - Suite *suite; - TCase *tc; - assert(runner != NULL); - suite = runner->suite; - tc = suite->tests; - while (tc != NULL) { - int i; - for (i = 0; i < tc->ntests; ++i) { - runner->nchecks++; - - if (tc->setup != NULL) { - /* setup */ - if (setjmp(env)) { - add_failure(runner, verbosity); - continue; - } - tc->setup(); - } - /* test */ - if (setjmp(env)) { - add_failure(runner, verbosity); - continue; - } - (tc->tests[i])(); - - /* teardown */ - if (tc->teardown != NULL) { - if (setjmp(env)) { - add_failure(runner, verbosity); - continue; - } - tc->teardown(); - } - } - tc = tc->next_tcase; - } - if (verbosity) { - int passed = runner->nchecks - runner->nfailures; - double percentage = ((double) passed) / runner->nchecks; - int display = (int) (percentage * 100); - printf("%d%%: Checks: %d, Failed: %d\n", - display, runner->nchecks, runner->nfailures); - } -} - -void -_fail_unless(int condition, const char *file, int line, char *msg) -{ - /* Always print the error message so it isn't lost. In this case, - we have a failure, so there's no reason to be quiet about what - it is. - */ - if (msg != NULL) - printf("%s", msg); - longjmp(env, 1); -} - -int -srunner_ntests_failed(SRunner *runner) -{ - assert(runner != NULL); - return runner->nfailures; -} - -void -srunner_free(SRunner *runner) -{ - free(runner->suite); - free(runner); -} diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/minicheck.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/minicheck.h deleted file mode 100644 index c917c02..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/minicheck.h +++ /dev/null @@ -1,90 +0,0 @@ -/* Miniature re-implementation of the "check" library. - * - * This is intended to support just enough of check to run the Expat - * tests. This interface is based entirely on the portion of the - * check library being used. - * - * This is *source* compatible, but not necessary *link* compatible. - */ - -#ifdef __cplusplus -extern "C" { -#endif - -#define CK_NOFORK 0 -#define CK_FORK 1 - -#define CK_SILENT 0 -#define CK_NORMAL 1 -#define CK_VERBOSE 2 - -/* Workaround for Microsoft's compiler and Tru64 Unix systems where the - C compiler has a working __func__, but the C++ compiler only has a - working __FUNCTION__. This could be fixed in configure.in, but it's - not worth it right now. */ -#if defined (_MSC_VER) || (defined(__osf__) && defined(__cplusplus)) -#define __func__ __FUNCTION__ -#endif - -#define START_TEST(testname) static void testname(void) { \ - _check_set_test_info(__func__, __FILE__, __LINE__); \ - { -#define END_TEST } } - -#define fail(msg) _fail_unless(0, __FILE__, __LINE__, msg) - -typedef void (*tcase_setup_function)(void); -typedef void (*tcase_teardown_function)(void); -typedef void (*tcase_test_function)(void); - -typedef struct SRunner SRunner; -typedef struct Suite Suite; -typedef struct TCase TCase; - -struct SRunner { - Suite *suite; - int nchecks; - int nfailures; -}; - -struct Suite { - char *name; - TCase *tests; -}; - -struct TCase { - char *name; - tcase_setup_function setup; - tcase_teardown_function teardown; - tcase_test_function *tests; - int ntests; - int allocated; - TCase *next_tcase; -}; - - -/* Internal helper. */ -void _check_set_test_info(char const *function, - char const *filename, int lineno); - - -/* - * Prototypes for the actual implementation. - */ - -void _fail_unless(int condition, const char *file, int line, char *msg); -Suite *suite_create(char *name); -TCase *tcase_create(char *name); -void suite_add_tcase(Suite *suite, TCase *tc); -void tcase_add_checked_fixture(TCase *, - tcase_setup_function, - tcase_teardown_function); -void tcase_add_test(TCase *tc, tcase_test_function test); -SRunner *srunner_create(Suite *suite); -void srunner_run_all(SRunner *runner, int verbosity); -int srunner_ntests_failed(SRunner *runner); -void srunner_free(SRunner *runner); - -#ifdef __cplusplus -} -#endif diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/runtests.c b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/runtests.c deleted file mode 100644 index 614d6b2..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/runtests.c +++ /dev/null @@ -1,1515 +0,0 @@ -/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. - - runtest.c : run the Expat test suite -*/ - -#ifdef HAVE_EXPAT_CONFIG_H -#include -#endif - -#include -#include -#include -#include -#include - -#include "expat.h" -#include "chardata.h" -#include "minicheck.h" - -#if defined(__amigaos__) && defined(__USE_INLINE__) -#include -#endif - -#ifdef XML_LARGE_SIZE -#define XML_FMT_INT_MOD "ll" -#else -#define XML_FMT_INT_MOD "l" -#endif - -static XML_Parser parser; - - -static void -basic_setup(void) -{ - parser = XML_ParserCreate(NULL); - if (parser == NULL) - fail("Parser not created."); -} - -static void -basic_teardown(void) -{ - if (parser != NULL) - XML_ParserFree(parser); -} - -/* Generate a failure using the parser state to create an error message; - this should be used when the parser reports an error we weren't - expecting. -*/ -static void -_xml_failure(XML_Parser parser, const char *file, int line) -{ - char buffer[1024]; - enum XML_Error err = XML_GetErrorCode(parser); - sprintf(buffer, - " %d: %s (line %" XML_FMT_INT_MOD "u, offset %"\ - XML_FMT_INT_MOD "u)\n reported from %s, line %d\n", - err, - XML_ErrorString(err), - XML_GetCurrentLineNumber(parser), - XML_GetCurrentColumnNumber(parser), - file, line); - _fail_unless(0, file, line, buffer); -} - -#define xml_failure(parser) _xml_failure((parser), __FILE__, __LINE__) - -static void -_expect_failure(char *text, enum XML_Error errorCode, char *errorMessage, - char *file, int lineno) -{ - if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_OK) - /* Hackish use of _fail_unless() macro, but let's us report - the right filename and line number. */ - _fail_unless(0, file, lineno, errorMessage); - if (XML_GetErrorCode(parser) != errorCode) - _xml_failure(parser, file, lineno); -} - -#define expect_failure(text, errorCode, errorMessage) \ - _expect_failure((text), (errorCode), (errorMessage), \ - __FILE__, __LINE__) - -/* Dummy handlers for when we need to set a handler to tickle a bug, - but it doesn't need to do anything. -*/ - -static void XMLCALL -dummy_start_doctype_handler(void *userData, - const XML_Char *doctypeName, - const XML_Char *sysid, - const XML_Char *pubid, - int has_internal_subset) -{} - -static void XMLCALL -dummy_end_doctype_handler(void *userData) -{} - -static void XMLCALL -dummy_entity_decl_handler(void *userData, - const XML_Char *entityName, - int is_parameter_entity, - const XML_Char *value, - int value_length, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId, - const XML_Char *notationName) -{} - -static void XMLCALL -dummy_notation_decl_handler(void *userData, - const XML_Char *notationName, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId) -{} - -static void XMLCALL -dummy_element_decl_handler(void *userData, - const XML_Char *name, - XML_Content *model) -{} - -static void XMLCALL -dummy_attlist_decl_handler(void *userData, - const XML_Char *elname, - const XML_Char *attname, - const XML_Char *att_type, - const XML_Char *dflt, - int isrequired) -{} - -static void XMLCALL -dummy_comment_handler(void *userData, const XML_Char *data) -{} - -static void XMLCALL -dummy_pi_handler(void *userData, const XML_Char *target, const XML_Char *data) -{} - -static void XMLCALL -dummy_start_element(void *userData, - const XML_Char *name, const XML_Char **atts) -{} - - -/* - * Character & encoding tests. - */ - -START_TEST(test_nul_byte) -{ - char text[] = "\0"; - - /* test that a NUL byte (in US-ASCII data) is an error */ - if (XML_Parse(parser, text, sizeof(text) - 1, XML_TRUE) == XML_STATUS_OK) - fail("Parser did not report error on NUL-byte."); - if (XML_GetErrorCode(parser) != XML_ERROR_INVALID_TOKEN) - xml_failure(parser); -} -END_TEST - - -START_TEST(test_u0000_char) -{ - /* test that a NUL byte (in US-ASCII data) is an error */ - expect_failure("", - XML_ERROR_BAD_CHAR_REF, - "Parser did not report error on NUL-byte."); -} -END_TEST - -START_TEST(test_bom_utf8) -{ - /* This test is really just making sure we don't core on a UTF-8 BOM. */ - char *text = "\357\273\277"; - - if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) - xml_failure(parser); -} -END_TEST - -START_TEST(test_bom_utf16_be) -{ - char text[] = "\376\377\0<\0e\0/\0>"; - - if (XML_Parse(parser, text, sizeof(text)-1, XML_TRUE) == XML_STATUS_ERROR) - xml_failure(parser); -} -END_TEST - -START_TEST(test_bom_utf16_le) -{ - char text[] = "\377\376<\0e\0/\0>\0"; - - if (XML_Parse(parser, text, sizeof(text)-1, XML_TRUE) == XML_STATUS_ERROR) - xml_failure(parser); -} -END_TEST - -static void XMLCALL -accumulate_characters(void *userData, const XML_Char *s, int len) -{ - CharData_AppendXMLChars((CharData *)userData, s, len); -} - -static void XMLCALL -accumulate_attribute(void *userData, const XML_Char *name, - const XML_Char **atts) -{ - CharData *storage = (CharData *)userData; - if (storage->count < 0 && atts != NULL && atts[0] != NULL) { - /* "accumulate" the value of the first attribute we see */ - CharData_AppendXMLChars(storage, atts[1], -1); - } -} - - -static void -_run_character_check(XML_Char *text, XML_Char *expected, - const char *file, int line) -{ - CharData storage; - - CharData_Init(&storage); - XML_SetUserData(parser, &storage); - XML_SetCharacterDataHandler(parser, accumulate_characters); - if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) - _xml_failure(parser, file, line); - CharData_CheckXMLChars(&storage, expected); -} - -#define run_character_check(text, expected) \ - _run_character_check(text, expected, __FILE__, __LINE__) - -static void -_run_attribute_check(XML_Char *text, XML_Char *expected, - const char *file, int line) -{ - CharData storage; - - CharData_Init(&storage); - XML_SetUserData(parser, &storage); - XML_SetStartElementHandler(parser, accumulate_attribute); - if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) - _xml_failure(parser, file, line); - CharData_CheckXMLChars(&storage, expected); -} - -#define run_attribute_check(text, expected) \ - _run_attribute_check(text, expected, __FILE__, __LINE__) - -/* Regression test for SF bug #491986. */ -START_TEST(test_danish_latin1) -{ - char *text = - "\n" - "J\xF8rgen \xE6\xF8\xE5\xC6\xD8\xC5"; - run_character_check(text, - "J\xC3\xB8rgen \xC3\xA6\xC3\xB8\xC3\xA5\xC3\x86\xC3\x98\xC3\x85"); -} -END_TEST - - -/* Regression test for SF bug #514281. */ -START_TEST(test_french_charref_hexidecimal) -{ - char *text = - "\n" - "éèàçêÈ"; - run_character_check(text, - "\xC3\xA9\xC3\xA8\xC3\xA0\xC3\xA7\xC3\xAA\xC3\x88"); -} -END_TEST - -START_TEST(test_french_charref_decimal) -{ - char *text = - "\n" - "éèàçêÈ"; - run_character_check(text, - "\xC3\xA9\xC3\xA8\xC3\xA0\xC3\xA7\xC3\xAA\xC3\x88"); -} -END_TEST - -START_TEST(test_french_latin1) -{ - char *text = - "\n" - "\xE9\xE8\xE0\xE7\xEa\xC8"; - run_character_check(text, - "\xC3\xA9\xC3\xA8\xC3\xA0\xC3\xA7\xC3\xAA\xC3\x88"); -} -END_TEST - -START_TEST(test_french_utf8) -{ - char *text = - "\n" - "\xC3\xA9"; - run_character_check(text, "\xC3\xA9"); -} -END_TEST - -/* Regression test for SF bug #600479. - XXX There should be a test that exercises all legal XML Unicode - characters as PCDATA and attribute value content, and XML Name - characters as part of element and attribute names. -*/ -START_TEST(test_utf8_false_rejection) -{ - char *text = "\xEF\xBA\xBF"; - run_character_check(text, "\xEF\xBA\xBF"); -} -END_TEST - -/* Regression test for SF bug #477667. - This test assures that any 8-bit character followed by a 7-bit - character will not be mistakenly interpreted as a valid UTF-8 - sequence. -*/ -START_TEST(test_illegal_utf8) -{ - char text[100]; - int i; - - for (i = 128; i <= 255; ++i) { - sprintf(text, "%ccd", i); - if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_OK) { - sprintf(text, - "expected token error for '%c' (ordinal %d) in UTF-8 text", - i, i); - fail(text); - } - else if (XML_GetErrorCode(parser) != XML_ERROR_INVALID_TOKEN) - xml_failure(parser); - /* Reset the parser since we use the same parser repeatedly. */ - XML_ParserReset(parser, NULL); - } -} -END_TEST - -START_TEST(test_utf16) -{ - /* - some text - */ - char text[] = - "\000<\000?\000x\000m\000\154\000 \000v\000e\000r\000s\000i\000o" - "\000n\000=\000'\0001\000.\000\060\000'\000 \000e\000n\000c\000o" - "\000d\000i\000n\000g\000=\000'\000U\000T\000F\000-\0001\000\066" - "\000'\000?\000>\000\n" - "\000<\000d\000o\000c\000 \000a\000=\000'\0001\0002\0003\000'" - "\000>\000s\000o\000m\000e\000 \000t\000e\000x\000t\000<\000/" - "\000d\000o\000c\000>"; - if (XML_Parse(parser, text, sizeof(text)-1, XML_TRUE) == XML_STATUS_ERROR) - xml_failure(parser); -} -END_TEST - -START_TEST(test_utf16_le_epilog_newline) -{ - unsigned int first_chunk_bytes = 17; - char text[] = - "\xFF\xFE" /* BOM */ - "<\000e\000/\000>\000" /* document element */ - "\r\000\n\000\r\000\n\000"; /* epilog */ - - if (first_chunk_bytes >= sizeof(text) - 1) - fail("bad value of first_chunk_bytes"); - if ( XML_Parse(parser, text, first_chunk_bytes, XML_FALSE) - == XML_STATUS_ERROR) - xml_failure(parser); - else { - enum XML_Status rc; - rc = XML_Parse(parser, text + first_chunk_bytes, - sizeof(text) - first_chunk_bytes - 1, XML_TRUE); - if (rc == XML_STATUS_ERROR) - xml_failure(parser); - } -} -END_TEST - -/* Regression test for SF bug #481609, #774028. */ -START_TEST(test_latin1_umlauts) -{ - char *text = - "\n" - "\xE4 \xF6 \xFC ä ö ü ä ö ü >"; - char *utf8 = - "\xC3\xA4 \xC3\xB6 \xC3\xBC " - "\xC3\xA4 \xC3\xB6 \xC3\xBC " - "\xC3\xA4 \xC3\xB6 \xC3\xBC >"; - run_character_check(text, utf8); - XML_ParserReset(parser, NULL); - run_attribute_check(text, utf8); -} -END_TEST - -/* Regression test #1 for SF bug #653180. */ -START_TEST(test_line_number_after_parse) -{ - char *text = - "\n" - "\n" - "\n"; - XML_Size lineno; - - if (XML_Parse(parser, text, strlen(text), XML_FALSE) == XML_STATUS_ERROR) - xml_failure(parser); - lineno = XML_GetCurrentLineNumber(parser); - if (lineno != 4) { - char buffer[100]; - sprintf(buffer, - "expected 4 lines, saw %" XML_FMT_INT_MOD "u", lineno); - fail(buffer); - } -} -END_TEST - -/* Regression test #2 for SF bug #653180. */ -START_TEST(test_column_number_after_parse) -{ - char *text = ""; - XML_Size colno; - - if (XML_Parse(parser, text, strlen(text), XML_FALSE) == XML_STATUS_ERROR) - xml_failure(parser); - colno = XML_GetCurrentColumnNumber(parser); - if (colno != 11) { - char buffer[100]; - sprintf(buffer, - "expected 11 columns, saw %" XML_FMT_INT_MOD "u", colno); - fail(buffer); - } -} -END_TEST - -static void XMLCALL -start_element_event_handler2(void *userData, const XML_Char *name, - const XML_Char **attr) -{ - CharData *storage = (CharData *) userData; - char buffer[100]; - - sprintf(buffer, - "<%s> at col:%" XML_FMT_INT_MOD "u line:%"\ - XML_FMT_INT_MOD "u\n", name, - XML_GetCurrentColumnNumber(parser), - XML_GetCurrentLineNumber(parser)); - CharData_AppendString(storage, buffer); -} - -static void XMLCALL -end_element_event_handler2(void *userData, const XML_Char *name) -{ - CharData *storage = (CharData *) userData; - char buffer[100]; - - sprintf(buffer, - " at col:%" XML_FMT_INT_MOD "u line:%"\ - XML_FMT_INT_MOD "u\n", name, - XML_GetCurrentColumnNumber(parser), - XML_GetCurrentLineNumber(parser)); - CharData_AppendString(storage, buffer); -} - -/* Regression test #3 for SF bug #653180. */ -START_TEST(test_line_and_column_numbers_inside_handlers) -{ - char *text = - "\n" /* Unix end-of-line */ - " \r\n" /* Windows end-of-line */ - " \r" /* Mac OS end-of-line */ - " \n" - " \n" - " \n" - " \n" - ""; - char *expected = - " at col:0 line:1\n" - " at col:2 line:2\n" - " at col:4 line:3\n" - " at col:8 line:3\n" - " at col:2 line:4\n" - " at col:2 line:5\n" - " at col:4 line:6\n" - " at col:8 line:6\n" - " at col:2 line:7\n" - " at col:0 line:8\n"; - CharData storage; - - CharData_Init(&storage); - XML_SetUserData(parser, &storage); - XML_SetStartElementHandler(parser, start_element_event_handler2); - XML_SetEndElementHandler(parser, end_element_event_handler2); - if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) - xml_failure(parser); - - CharData_CheckString(&storage, expected); -} -END_TEST - -/* Regression test #4 for SF bug #653180. */ -START_TEST(test_line_number_after_error) -{ - char *text = - "\n" - " \n" - " "; /* missing */ - XML_Size lineno; - if (XML_Parse(parser, text, strlen(text), XML_FALSE) != XML_STATUS_ERROR) - fail("Expected a parse error"); - - lineno = XML_GetCurrentLineNumber(parser); - if (lineno != 3) { - char buffer[100]; - sprintf(buffer, "expected 3 lines, saw %" XML_FMT_INT_MOD "u", lineno); - fail(buffer); - } -} -END_TEST - -/* Regression test #5 for SF bug #653180. */ -START_TEST(test_column_number_after_error) -{ - char *text = - "\n" - " \n" - " "; /* missing */ - XML_Size colno; - if (XML_Parse(parser, text, strlen(text), XML_FALSE) != XML_STATUS_ERROR) - fail("Expected a parse error"); - - colno = XML_GetCurrentColumnNumber(parser); - if (colno != 4) { - char buffer[100]; - sprintf(buffer, - "expected 4 columns, saw %" XML_FMT_INT_MOD "u", colno); - fail(buffer); - } -} -END_TEST - -/* Regression test for SF bug #478332. */ -START_TEST(test_really_long_lines) -{ - /* This parses an input line longer than INIT_DATA_BUF_SIZE - characters long (defined to be 1024 in xmlparse.c). We take a - really cheesy approach to building the input buffer, because - this avoids writing bugs in buffer-filling code. - */ - char *text = - "" - /* 64 chars */ - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" - /* until we have at least 1024 characters on the line: */ - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" - ""; - if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) - xml_failure(parser); -} -END_TEST - - -/* - * Element event tests. - */ - -static void XMLCALL -end_element_event_handler(void *userData, const XML_Char *name) -{ - CharData *storage = (CharData *) userData; - CharData_AppendString(storage, "/"); - CharData_AppendXMLChars(storage, name, -1); -} - -START_TEST(test_end_element_events) -{ - char *text = ""; - char *expected = "/c/b/f/d/a"; - CharData storage; - - CharData_Init(&storage); - XML_SetUserData(parser, &storage); - XML_SetEndElementHandler(parser, end_element_event_handler); - if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) - xml_failure(parser); - CharData_CheckString(&storage, expected); -} -END_TEST - - -/* - * Attribute tests. - */ - -/* Helpers used by the following test; this checks any "attr" and "refs" - attributes to make sure whitespace has been normalized. - - Return true if whitespace has been normalized in a string, using - the rules for attribute value normalization. The 'is_cdata' flag - is needed since CDATA attributes don't need to have multiple - whitespace characters collapsed to a single space, while other - attribute data types do. (Section 3.3.3 of the recommendation.) -*/ -static int -is_whitespace_normalized(const XML_Char *s, int is_cdata) -{ - int blanks = 0; - int at_start = 1; - while (*s) { - if (*s == ' ') - ++blanks; - else if (*s == '\t' || *s == '\n' || *s == '\r') - return 0; - else { - if (at_start) { - at_start = 0; - if (blanks && !is_cdata) - /* illegal leading blanks */ - return 0; - } - else if (blanks > 1 && !is_cdata) - return 0; - blanks = 0; - } - ++s; - } - if (blanks && !is_cdata) - return 0; - return 1; -} - -/* Check the attribute whitespace checker: */ -static void -testhelper_is_whitespace_normalized(void) -{ - assert(is_whitespace_normalized("abc", 0)); - assert(is_whitespace_normalized("abc", 1)); - assert(is_whitespace_normalized("abc def ghi", 0)); - assert(is_whitespace_normalized("abc def ghi", 1)); - assert(!is_whitespace_normalized(" abc def ghi", 0)); - assert(is_whitespace_normalized(" abc def ghi", 1)); - assert(!is_whitespace_normalized("abc def ghi", 0)); - assert(is_whitespace_normalized("abc def ghi", 1)); - assert(!is_whitespace_normalized("abc def ghi ", 0)); - assert(is_whitespace_normalized("abc def ghi ", 1)); - assert(!is_whitespace_normalized(" ", 0)); - assert(is_whitespace_normalized(" ", 1)); - assert(!is_whitespace_normalized("\t", 0)); - assert(!is_whitespace_normalized("\t", 1)); - assert(!is_whitespace_normalized("\n", 0)); - assert(!is_whitespace_normalized("\n", 1)); - assert(!is_whitespace_normalized("\r", 0)); - assert(!is_whitespace_normalized("\r", 1)); - assert(!is_whitespace_normalized("abc\t def", 1)); -} - -static void XMLCALL -check_attr_contains_normalized_whitespace(void *userData, - const XML_Char *name, - const XML_Char **atts) -{ - int i; - for (i = 0; atts[i] != NULL; i += 2) { - const XML_Char *attrname = atts[i]; - const XML_Char *value = atts[i + 1]; - if (strcmp("attr", attrname) == 0 - || strcmp("ents", attrname) == 0 - || strcmp("refs", attrname) == 0) { - if (!is_whitespace_normalized(value, 0)) { - char buffer[256]; - sprintf(buffer, "attribute value not normalized: %s='%s'", - attrname, value); - fail(buffer); - } - } - } -} - -START_TEST(test_attr_whitespace_normalization) -{ - char *text = - "\n" - "]>\n" - "\n" - " \n" - " \n" - ""; - - XML_SetStartElementHandler(parser, - check_attr_contains_normalized_whitespace); - if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) - xml_failure(parser); -} -END_TEST - - -/* - * XML declaration tests. - */ - -START_TEST(test_xmldecl_misplaced) -{ - expect_failure("\n" - "\n" - "", - XML_ERROR_MISPLACED_XML_PI, - "failed to report misplaced XML declaration"); -} -END_TEST - -/* Regression test for SF bug #584832. */ -static int XMLCALL -UnknownEncodingHandler(void *data,const XML_Char *encoding,XML_Encoding *info) -{ - if (strcmp(encoding,"unsupported-encoding") == 0) { - int i; - for (i = 0; i < 256; ++i) - info->map[i] = i; - info->data = NULL; - info->convert = NULL; - info->release = NULL; - return XML_STATUS_OK; - } - return XML_STATUS_ERROR; -} - -START_TEST(test_unknown_encoding_internal_entity) -{ - char *text = - "\n" - "]>\n" - ""; - - XML_SetUnknownEncodingHandler(parser, UnknownEncodingHandler, NULL); - if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) - xml_failure(parser); -} -END_TEST - -/* Regression test for SF bug #620106. */ -static int XMLCALL -external_entity_loader_set_encoding(XML_Parser parser, - const XML_Char *context, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId) -{ - /* This text says it's an unsupported encoding, but it's really - UTF-8, which we tell Expat using XML_SetEncoding(). - */ - char *text = - "" - "\xC3\xA9"; - XML_Parser extparser; - - extparser = XML_ExternalEntityParserCreate(parser, context, NULL); - if (extparser == NULL) - fail("Could not create external entity parser."); - if (!XML_SetEncoding(extparser, "utf-8")) - fail("XML_SetEncoding() ignored for external entity"); - if ( XML_Parse(extparser, text, strlen(text), XML_TRUE) - == XML_STATUS_ERROR) { - xml_failure(parser); - return 0; - } - return 1; -} - -START_TEST(test_ext_entity_set_encoding) -{ - char *text = - "\n" - "]>\n" - "&en;"; - - XML_SetExternalEntityRefHandler(parser, - external_entity_loader_set_encoding); - run_character_check(text, "\xC3\xA9"); -} -END_TEST - -/* Test that no error is reported for unknown entities if we don't - read an external subset. This was fixed in Expat 1.95.5. -*/ -START_TEST(test_wfc_undeclared_entity_unread_external_subset) { - char *text = - "\n" - "&entity;"; - - if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) - xml_failure(parser); -} -END_TEST - -/* Test that an error is reported for unknown entities if we don't - have an external subset. -*/ -START_TEST(test_wfc_undeclared_entity_no_external_subset) { - expect_failure("&entity;", - XML_ERROR_UNDEFINED_ENTITY, - "Parser did not report undefined entity w/out a DTD."); -} -END_TEST - -/* Test that an error is reported for unknown entities if we don't - read an external subset, but have been declared standalone. -*/ -START_TEST(test_wfc_undeclared_entity_standalone) { - char *text = - "\n" - "\n" - "&entity;"; - - expect_failure(text, - XML_ERROR_UNDEFINED_ENTITY, - "Parser did not report undefined entity (standalone)."); -} -END_TEST - -static int XMLCALL -external_entity_loader(XML_Parser parser, - const XML_Char *context, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId) -{ - char *text = (char *)XML_GetUserData(parser); - XML_Parser extparser; - - extparser = XML_ExternalEntityParserCreate(parser, context, NULL); - if (extparser == NULL) - fail("Could not create external entity parser."); - if ( XML_Parse(extparser, text, strlen(text), XML_TRUE) - == XML_STATUS_ERROR) { - xml_failure(parser); - return XML_STATUS_ERROR; - } - return XML_STATUS_OK; -} - -/* Test that an error is reported for unknown entities if we have read - an external subset, and standalone is true. -*/ -START_TEST(test_wfc_undeclared_entity_with_external_subset_standalone) { - char *text = - "\n" - "\n" - "&entity;"; - char *foo_text = - ""; - - XML_SetParamEntityParsing(parser, XML_PARAM_ENTITY_PARSING_ALWAYS); - XML_SetUserData(parser, foo_text); - XML_SetExternalEntityRefHandler(parser, external_entity_loader); - expect_failure(text, - XML_ERROR_UNDEFINED_ENTITY, - "Parser did not report undefined entity (external DTD)."); -} -END_TEST - -/* Test that no error is reported for unknown entities if we have read - an external subset, and standalone is false. -*/ -START_TEST(test_wfc_undeclared_entity_with_external_subset) { - char *text = - "\n" - "\n" - "&entity;"; - char *foo_text = - ""; - - XML_SetParamEntityParsing(parser, XML_PARAM_ENTITY_PARSING_ALWAYS); - XML_SetUserData(parser, foo_text); - XML_SetExternalEntityRefHandler(parser, external_entity_loader); - if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) - xml_failure(parser); -} -END_TEST - -START_TEST(test_wfc_no_recursive_entity_refs) -{ - char *text = - "\n" - "]>\n" - "&entity;"; - - expect_failure(text, - XML_ERROR_RECURSIVE_ENTITY_REF, - "Parser did not report recursive entity reference."); -} -END_TEST - -/* Regression test for SF bug #483514. */ -START_TEST(test_dtd_default_handling) -{ - char *text = - "\n" - "\n" - "\n" - "\n" - "\n" - "\n" - "]>"; - - XML_SetDefaultHandler(parser, accumulate_characters); - XML_SetDoctypeDeclHandler(parser, - dummy_start_doctype_handler, - dummy_end_doctype_handler); - XML_SetEntityDeclHandler(parser, dummy_entity_decl_handler); - XML_SetNotationDeclHandler(parser, dummy_notation_decl_handler); - XML_SetElementDeclHandler(parser, dummy_element_decl_handler); - XML_SetAttlistDeclHandler(parser, dummy_attlist_decl_handler); - XML_SetProcessingInstructionHandler(parser, dummy_pi_handler); - XML_SetCommentHandler(parser, dummy_comment_handler); - run_character_check(text, "\n\n\n\n\n\n\n"); -} -END_TEST - -/* See related SF bug #673791. - When namespace processing is enabled, setting the namespace URI for - a prefix is not allowed; this test ensures that it *is* allowed - when namespace processing is not enabled. - (See Namespaces in XML, section 2.) -*/ -START_TEST(test_empty_ns_without_namespaces) -{ - char *text = - "\n" - " \n" - ""; - - if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) - xml_failure(parser); -} -END_TEST - -/* Regression test for SF bug #824420. - Checks that an xmlns:prefix attribute set in an attribute's default - value isn't misinterpreted. -*/ -START_TEST(test_ns_in_attribute_default_without_namespaces) -{ - char *text = - "\n" - " ]>\n" - ""; - - if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) - xml_failure(parser); -} -END_TEST - -static char *long_character_data_text = - "" - "012345678901234567890123456789012345678901234567890123456789" - "012345678901234567890123456789012345678901234567890123456789" - "012345678901234567890123456789012345678901234567890123456789" - "012345678901234567890123456789012345678901234567890123456789" - "012345678901234567890123456789012345678901234567890123456789" - "012345678901234567890123456789012345678901234567890123456789" - "012345678901234567890123456789012345678901234567890123456789" - "012345678901234567890123456789012345678901234567890123456789" - "012345678901234567890123456789012345678901234567890123456789" - "012345678901234567890123456789012345678901234567890123456789" - "012345678901234567890123456789012345678901234567890123456789" - "012345678901234567890123456789012345678901234567890123456789" - "012345678901234567890123456789012345678901234567890123456789" - "012345678901234567890123456789012345678901234567890123456789" - "012345678901234567890123456789012345678901234567890123456789" - "012345678901234567890123456789012345678901234567890123456789" - "012345678901234567890123456789012345678901234567890123456789" - "012345678901234567890123456789012345678901234567890123456789" - "012345678901234567890123456789012345678901234567890123456789" - "012345678901234567890123456789012345678901234567890123456789" - ""; - -static XML_Bool resumable = XML_FALSE; - -static void -clearing_aborting_character_handler(void *userData, - const XML_Char *s, int len) -{ - XML_StopParser(parser, resumable); - XML_SetCharacterDataHandler(parser, NULL); -} - -/* Regression test for SF bug #1515266: missing check of stopped - parser in doContext() 'for' loop. */ -START_TEST(test_stop_parser_between_char_data_calls) -{ - /* The sample data must be big enough that there are two calls to - the character data handler from within the inner "for" loop of - the XML_TOK_DATA_CHARS case in doContent(), and the character - handler must stop the parser and clear the character data - handler. - */ - char *text = long_character_data_text; - - XML_SetCharacterDataHandler(parser, clearing_aborting_character_handler); - resumable = XML_FALSE; - if (XML_Parse(parser, text, strlen(text), XML_TRUE) != XML_STATUS_ERROR) - xml_failure(parser); - if (XML_GetErrorCode(parser) != XML_ERROR_ABORTED) - xml_failure(parser); -} -END_TEST - -/* Regression test for SF bug #1515266: missing check of stopped - parser in doContext() 'for' loop. */ -START_TEST(test_suspend_parser_between_char_data_calls) -{ - /* The sample data must be big enough that there are two calls to - the character data handler from within the inner "for" loop of - the XML_TOK_DATA_CHARS case in doContent(), and the character - handler must stop the parser and clear the character data - handler. - */ - char *text = long_character_data_text; - - XML_SetCharacterDataHandler(parser, clearing_aborting_character_handler); - resumable = XML_TRUE; - if (XML_Parse(parser, text, strlen(text), XML_TRUE) != XML_STATUS_SUSPENDED) - xml_failure(parser); - if (XML_GetErrorCode(parser) != XML_ERROR_NONE) - xml_failure(parser); -} -END_TEST - - -/* - * Namespaces tests. - */ - -static void -namespace_setup(void) -{ - parser = XML_ParserCreateNS(NULL, ' '); - if (parser == NULL) - fail("Parser not created."); -} - -static void -namespace_teardown(void) -{ - basic_teardown(); -} - -/* Check that an element name and attribute name match the expected values. - The expected values are passed as an array reference of string pointers - provided as the userData argument; the first is the expected - element name, and the second is the expected attribute name. -*/ -static void XMLCALL -triplet_start_checker(void *userData, const XML_Char *name, - const XML_Char **atts) -{ - char **elemstr = (char **)userData; - char buffer[1024]; - if (strcmp(elemstr[0], name) != 0) { - sprintf(buffer, "unexpected start string: '%s'", name); - fail(buffer); - } - if (strcmp(elemstr[1], atts[0]) != 0) { - sprintf(buffer, "unexpected attribute string: '%s'", atts[0]); - fail(buffer); - } -} - -/* Check that the element name passed to the end-element handler matches - the expected value. The expected value is passed as the first element - in an array of strings passed as the userData argument. -*/ -static void XMLCALL -triplet_end_checker(void *userData, const XML_Char *name) -{ - char **elemstr = (char **)userData; - if (strcmp(elemstr[0], name) != 0) { - char buffer[1024]; - sprintf(buffer, "unexpected end string: '%s'", name); - fail(buffer); - } -} - -START_TEST(test_return_ns_triplet) -{ - char *text = - ""; - char *elemstr[] = { - "http://expat.sf.net/ e foo", - "http://expat.sf.net/ a bar" - }; - XML_SetReturnNSTriplet(parser, XML_TRUE); - XML_SetUserData(parser, elemstr); - XML_SetElementHandler(parser, triplet_start_checker, triplet_end_checker); - if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) - xml_failure(parser); -} -END_TEST - -static void XMLCALL -overwrite_start_checker(void *userData, const XML_Char *name, - const XML_Char **atts) -{ - CharData *storage = (CharData *) userData; - CharData_AppendString(storage, "start "); - CharData_AppendXMLChars(storage, name, -1); - while (*atts != NULL) { - CharData_AppendString(storage, "\nattribute "); - CharData_AppendXMLChars(storage, *atts, -1); - atts += 2; - } - CharData_AppendString(storage, "\n"); -} - -static void XMLCALL -overwrite_end_checker(void *userData, const XML_Char *name) -{ - CharData *storage = (CharData *) userData; - CharData_AppendString(storage, "end "); - CharData_AppendXMLChars(storage, name, -1); - CharData_AppendString(storage, "\n"); -} - -static void -run_ns_tagname_overwrite_test(char *text, char *result) -{ - CharData storage; - CharData_Init(&storage); - XML_SetUserData(parser, &storage); - XML_SetElementHandler(parser, - overwrite_start_checker, overwrite_end_checker); - if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) - xml_failure(parser); - CharData_CheckString(&storage, result); -} - -/* Regression test for SF bug #566334. */ -START_TEST(test_ns_tagname_overwrite) -{ - char *text = - "\n" - " \n" - " \n" - ""; - char *result = - "start http://xml.libexpat.org/ e\n" - "start http://xml.libexpat.org/ f\n" - "attribute http://xml.libexpat.org/ attr\n" - "end http://xml.libexpat.org/ f\n" - "start http://xml.libexpat.org/ g\n" - "attribute http://xml.libexpat.org/ attr2\n" - "end http://xml.libexpat.org/ g\n" - "end http://xml.libexpat.org/ e\n"; - run_ns_tagname_overwrite_test(text, result); -} -END_TEST - -/* Regression test for SF bug #566334. */ -START_TEST(test_ns_tagname_overwrite_triplet) -{ - char *text = - "\n" - " \n" - " \n" - ""; - char *result = - "start http://xml.libexpat.org/ e n\n" - "start http://xml.libexpat.org/ f n\n" - "attribute http://xml.libexpat.org/ attr n\n" - "end http://xml.libexpat.org/ f n\n" - "start http://xml.libexpat.org/ g n\n" - "attribute http://xml.libexpat.org/ attr2 n\n" - "end http://xml.libexpat.org/ g n\n" - "end http://xml.libexpat.org/ e n\n"; - XML_SetReturnNSTriplet(parser, XML_TRUE); - run_ns_tagname_overwrite_test(text, result); -} -END_TEST - - -/* Regression test for SF bug #620343. */ -static void XMLCALL -start_element_fail(void *userData, - const XML_Char *name, const XML_Char **atts) -{ - /* We should never get here. */ - fail("should never reach start_element_fail()"); -} - -static void XMLCALL -start_ns_clearing_start_element(void *userData, - const XML_Char *prefix, - const XML_Char *uri) -{ - XML_SetStartElementHandler((XML_Parser) userData, NULL); -} - -START_TEST(test_start_ns_clears_start_element) -{ - /* This needs to use separate start/end tags; using the empty tag - syntax doesn't cause the problematic path through Expat to be - taken. - */ - char *text = ""; - - XML_SetStartElementHandler(parser, start_element_fail); - XML_SetStartNamespaceDeclHandler(parser, start_ns_clearing_start_element); - XML_UseParserAsHandlerArg(parser); - if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) - xml_failure(parser); -} -END_TEST - -/* Regression test for SF bug #616863. */ -static int XMLCALL -external_entity_handler(XML_Parser parser, - const XML_Char *context, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId) -{ - intptr_t callno = 1 + (intptr_t)XML_GetUserData(parser); - char *text; - XML_Parser p2; - - if (callno == 1) - text = ("\n" - "\n" - "\n"); - else - text = ("" - ""); - - XML_SetUserData(parser, (void *) callno); - p2 = XML_ExternalEntityParserCreate(parser, context, NULL); - if (XML_Parse(p2, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) { - xml_failure(p2); - return 0; - } - XML_ParserFree(p2); - return 1; -} - -START_TEST(test_default_ns_from_ext_subset_and_ext_ge) -{ - char *text = - "\n" - "\n" - "]>\n" - "\n" - "&en;\n" - ""; - - XML_SetParamEntityParsing(parser, XML_PARAM_ENTITY_PARSING_ALWAYS); - XML_SetExternalEntityRefHandler(parser, external_entity_handler); - /* We actually need to set this handler to tickle this bug. */ - XML_SetStartElementHandler(parser, dummy_start_element); - XML_SetUserData(parser, NULL); - if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) - xml_failure(parser); -} -END_TEST - -/* Regression test #1 for SF bug #673791. */ -START_TEST(test_ns_prefix_with_empty_uri_1) -{ - char *text = - "\n" - " \n" - ""; - - expect_failure(text, - XML_ERROR_UNDECLARING_PREFIX, - "Did not report re-setting namespace" - " URI with prefix to ''."); -} -END_TEST - -/* Regression test #2 for SF bug #673791. */ -START_TEST(test_ns_prefix_with_empty_uri_2) -{ - char *text = - "\n" - ""; - - expect_failure(text, - XML_ERROR_UNDECLARING_PREFIX, - "Did not report setting namespace URI with prefix to ''."); -} -END_TEST - -/* Regression test #3 for SF bug #673791. */ -START_TEST(test_ns_prefix_with_empty_uri_3) -{ - char *text = - "\n" - " \n" - "]>\n" - ""; - - expect_failure(text, - XML_ERROR_UNDECLARING_PREFIX, - "Didn't report attr default setting NS w/ prefix to ''."); -} -END_TEST - -/* Regression test #4 for SF bug #673791. */ -START_TEST(test_ns_prefix_with_empty_uri_4) -{ - char *text = - "\n" - " \n" - "]>\n" - ""; - /* Packaged info expected by the end element handler; - the weird structuring lets us re-use the triplet_end_checker() - function also used for another test. */ - char *elemstr[] = { - "http://xml.libexpat.org/ doc prefix" - }; - XML_SetReturnNSTriplet(parser, XML_TRUE); - XML_SetUserData(parser, elemstr); - XML_SetEndElementHandler(parser, triplet_end_checker); - if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) - xml_failure(parser); -} -END_TEST - -START_TEST(test_ns_default_with_empty_uri) -{ - char *text = - "\n" - " \n" - ""; - if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) - xml_failure(parser); -} -END_TEST - -/* Regression test for SF bug #692964: two prefixes for one namespace. */ -START_TEST(test_ns_duplicate_attrs_diff_prefixes) -{ - char *text = - ""; - expect_failure(text, - XML_ERROR_DUPLICATE_ATTRIBUTE, - "did not report multiple attributes with same URI+name"); -} -END_TEST - -/* Regression test for SF bug #695401: unbound prefix. */ -START_TEST(test_ns_unbound_prefix_on_attribute) -{ - char *text = ""; - expect_failure(text, - XML_ERROR_UNBOUND_PREFIX, - "did not report unbound prefix on attribute"); -} -END_TEST - -/* Regression test for SF bug #695401: unbound prefix. */ -START_TEST(test_ns_unbound_prefix_on_element) -{ - char *text = ""; - expect_failure(text, - XML_ERROR_UNBOUND_PREFIX, - "did not report unbound prefix on element"); -} -END_TEST - -static Suite * -make_suite(void) -{ - Suite *s = suite_create("basic"); - TCase *tc_basic = tcase_create("basic tests"); - TCase *tc_namespace = tcase_create("XML namespaces"); - - suite_add_tcase(s, tc_basic); - tcase_add_checked_fixture(tc_basic, basic_setup, basic_teardown); - tcase_add_test(tc_basic, test_nul_byte); - tcase_add_test(tc_basic, test_u0000_char); - tcase_add_test(tc_basic, test_bom_utf8); - tcase_add_test(tc_basic, test_bom_utf16_be); - tcase_add_test(tc_basic, test_bom_utf16_le); - tcase_add_test(tc_basic, test_illegal_utf8); - tcase_add_test(tc_basic, test_utf16); - tcase_add_test(tc_basic, test_utf16_le_epilog_newline); - tcase_add_test(tc_basic, test_latin1_umlauts); - /* Regression test for SF bug #491986. */ - tcase_add_test(tc_basic, test_danish_latin1); - /* Regression test for SF bug #514281. */ - tcase_add_test(tc_basic, test_french_charref_hexidecimal); - tcase_add_test(tc_basic, test_french_charref_decimal); - tcase_add_test(tc_basic, test_french_latin1); - tcase_add_test(tc_basic, test_french_utf8); - tcase_add_test(tc_basic, test_utf8_false_rejection); - tcase_add_test(tc_basic, test_line_number_after_parse); - tcase_add_test(tc_basic, test_column_number_after_parse); - tcase_add_test(tc_basic, test_line_and_column_numbers_inside_handlers); - tcase_add_test(tc_basic, test_line_number_after_error); - tcase_add_test(tc_basic, test_column_number_after_error); - tcase_add_test(tc_basic, test_really_long_lines); - tcase_add_test(tc_basic, test_end_element_events); - tcase_add_test(tc_basic, test_attr_whitespace_normalization); - tcase_add_test(tc_basic, test_xmldecl_misplaced); - tcase_add_test(tc_basic, test_unknown_encoding_internal_entity); - tcase_add_test(tc_basic, - test_wfc_undeclared_entity_unread_external_subset); - tcase_add_test(tc_basic, test_wfc_undeclared_entity_no_external_subset); - tcase_add_test(tc_basic, test_wfc_undeclared_entity_standalone); - tcase_add_test(tc_basic, test_wfc_undeclared_entity_with_external_subset); - tcase_add_test(tc_basic, - test_wfc_undeclared_entity_with_external_subset_standalone); - tcase_add_test(tc_basic, test_wfc_no_recursive_entity_refs); - tcase_add_test(tc_basic, test_ext_entity_set_encoding); - tcase_add_test(tc_basic, test_dtd_default_handling); - tcase_add_test(tc_basic, test_empty_ns_without_namespaces); - tcase_add_test(tc_basic, test_ns_in_attribute_default_without_namespaces); - tcase_add_test(tc_basic, test_stop_parser_between_char_data_calls); - tcase_add_test(tc_basic, test_suspend_parser_between_char_data_calls); - - suite_add_tcase(s, tc_namespace); - tcase_add_checked_fixture(tc_namespace, - namespace_setup, namespace_teardown); - tcase_add_test(tc_namespace, test_return_ns_triplet); - tcase_add_test(tc_namespace, test_ns_tagname_overwrite); - tcase_add_test(tc_namespace, test_ns_tagname_overwrite_triplet); - tcase_add_test(tc_namespace, test_start_ns_clears_start_element); - tcase_add_test(tc_namespace, test_default_ns_from_ext_subset_and_ext_ge); - tcase_add_test(tc_namespace, test_ns_prefix_with_empty_uri_1); - tcase_add_test(tc_namespace, test_ns_prefix_with_empty_uri_2); - tcase_add_test(tc_namespace, test_ns_prefix_with_empty_uri_3); - tcase_add_test(tc_namespace, test_ns_prefix_with_empty_uri_4); - tcase_add_test(tc_namespace, test_ns_default_with_empty_uri); - tcase_add_test(tc_namespace, test_ns_duplicate_attrs_diff_prefixes); - tcase_add_test(tc_namespace, test_ns_unbound_prefix_on_attribute); - tcase_add_test(tc_namespace, test_ns_unbound_prefix_on_element); - - return s; -} - - -int -main(int argc, char *argv[]) -{ - int i, nf; - int verbosity = CK_NORMAL; - Suite *s = make_suite(); - SRunner *sr = srunner_create(s); - - /* run the tests for internal helper functions */ - testhelper_is_whitespace_normalized(); - - for (i = 1; i < argc; ++i) { - char *opt = argv[i]; - if (strcmp(opt, "-v") == 0 || strcmp(opt, "--verbose") == 0) - verbosity = CK_VERBOSE; - else if (strcmp(opt, "-q") == 0 || strcmp(opt, "--quiet") == 0) - verbosity = CK_SILENT; - else { - fprintf(stderr, "runtests: unknown option '%s'\n", opt); - return 2; - } - } - if (verbosity != CK_SILENT) - printf("Expat version: %s\n", XML_ExpatVersion()); - srunner_run_all(sr, verbosity); - nf = srunner_ntests_failed(sr); - srunner_free(sr); - - return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE; -} diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/runtestspp.cpp b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/runtestspp.cpp deleted file mode 100644 index c35dc58..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/runtestspp.cpp +++ /dev/null @@ -1,6 +0,0 @@ -// C++ compilation harness for the test suite. -// -// This is used to ensure the Expat headers can be included from C++ -// and have everything work as expected. -// -#include "runtests.c" diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/xmltest.sh b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/xmltest.sh deleted file mode 100755 index 793a5cc..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/tests/xmltest.sh +++ /dev/null @@ -1,142 +0,0 @@ -#! /bin/sh - -# EXPAT TEST SCRIPT FOR W3C XML TEST SUITE - -# This script can be used to exercise Expat against the -# w3c.org xml test suite, available from -# http://www.w3.org/XML/Test/xmlts20020606.zip. - -# To run this script, first set XMLWF below so that xmlwf can be -# found, then set the output directory with OUTPUT. - -# The script lists all test cases where Expat shows a discrepancy -# from the expected result. Test cases where only the canonical -# output differs are prefixed with "Output differs:", and a diff file -# is generated in the appropriate subdirectory under $OUTPUT. - -# If there are output files provided, the script will use -# output from xmlwf and compare the desired output against it. -# However, one has to take into account that the canonical output -# produced by xmlwf conforms to an older definition of canonical XML -# and does not generate notation declarations. - -MYDIR="`dirname \"$0\"`" -cd "$MYDIR" -MYDIR="`pwd`" -XMLWF="`dirname \"$MYDIR\"`/xmlwf/xmlwf" -# XMLWF=/usr/local/bin/xmlwf -TS="$MYDIR/XML-Test-Suite" -# OUTPUT must terminate with the directory separator. -OUTPUT="$TS/out/" -# OUTPUT=/home/tmp/xml-testsuite-out/ - - -# RunXmlwfNotWF file reldir -# reldir includes trailing slash -RunXmlwfNotWF() { - file="$1" - reldir="$2" - $XMLWF -p "$file" > outfile || return $? - read outdata < outfile - if test "$outdata" = "" ; then - echo "Expected not well-formed: $reldir$file" - return 1 - else - return 0 - fi -} - -# RunXmlwfWF file reldir -# reldir includes trailing slash -RunXmlwfWF() { - file="$1" - reldir="$2" - $XMLWF -p -d "$OUTPUT$reldir" "$file" > outfile || return $? - read outdata < outfile - if test "$outdata" = "" ; then - if [ -f "out/$file" ] ; then - diff -u "$OUTPUT$reldir$file" "out/$file" > outfile - if [ -s outfile ] ; then - cp outfile "$OUTPUT$reldir$file.diff" - echo "Output differs: $reldir$file" - return 1 - fi - fi - return 0 - else - echo "In $reldir: $outdata" - return 1 - fi -} - -SUCCESS=0 -ERROR=0 - -UpdateStatus() { - if [ "$1" -eq 0 ] ; then - SUCCESS=`expr $SUCCESS + 1` - else - ERROR=`expr $ERROR + 1` - fi -} - -########################## -# well-formed test cases # -########################## - -cd "$TS/xmlconf" -for xmldir in ibm/valid/P* \ - ibm/invalid/P* \ - xmltest/valid/ext-sa \ - xmltest/valid/not-sa \ - xmltest/invalid \ - xmltest/invalid/not-sa \ - xmltest/valid/sa \ - sun/valid \ - sun/invalid ; do - cd "$TS/xmlconf/$xmldir" - mkdir -p "$OUTPUT$xmldir" - for xmlfile in *.xml ; do - RunXmlwfWF "$xmlfile" "$xmldir/" - UpdateStatus $? - done - rm outfile -done - -cd "$TS/xmlconf/oasis" -mkdir -p "$OUTPUT"oasis -for xmlfile in *pass*.xml ; do - RunXmlwfWF "$xmlfile" "oasis/" - UpdateStatus $? -done -rm outfile - -############################## -# not well-formed test cases # -############################## - -cd "$TS/xmlconf" -for xmldir in ibm/not-wf/P* \ - ibm/not-wf/p28a \ - ibm/not-wf/misc \ - xmltest/not-wf/ext-sa \ - xmltest/not-wf/not-sa \ - xmltest/not-wf/sa \ - sun/not-wf ; do - cd "$TS/xmlconf/$xmldir" - for xmlfile in *.xml ; do - RunXmlwfNotWF "$xmlfile" "$xmldir/" - UpdateStatus $? - done - rm outfile -done - -cd "$TS/xmlconf/oasis" -for xmlfile in *fail*.xml ; do - RunXmlwfNotWF "$xmlfile" "oasis/" - UpdateStatus $? -done -rm outfile - -echo "Passed: $SUCCESS" -echo "Failed: $ERROR" diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/version.c b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/version.c deleted file mode 100644 index 6424eab..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/version.c +++ /dev/null @@ -1,9 +0,0 @@ -#include -#include - -int main () { - XML_Expat_Version v; - v = XML_ExpatVersionInfo(); - printf("Using libexpat v%d.%d.%d\n", v.major, v.minor, v.micro); - return 0; -} diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/vms/README.vms b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/vms/README.vms deleted file mode 100644 index 3dd2ca7..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/vms/README.vms +++ /dev/null @@ -1,23 +0,0 @@ -4-jun-2002 Craig A. Berry - Added rudimentary build procedures for - OpenVMS based on work by Martin Vorlaender. - - -You'll need MMS or its freeware equivalent MMK. Just go to the -top-level directory and type - -$ MMS/DESCRIPTION=[.vms] - - or - -$ MMK/DESCRIPTION=[.vms] - -You'll end up with the object library expat.olb. For now, installation -consists merely of copying the object library, include files, and -documentation to a suitable location. - -To-do list: - - -- create a shareable image - -- build and run the tests and build the xmlwf utility - -- create an install target diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/vms/descrip.mms b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/vms/descrip.mms deleted file mode 100644 index d9ee3d9..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/vms/descrip.mms +++ /dev/null @@ -1,70 +0,0 @@ -# Bare bones description file (Makefile) for OpenVMS - -PACKAGE = expat -VERSION = 1.95.8 -EXPAT_MAJOR_VERSION=1 -EXPAT_MINOR_VERSION=95 -EXPAT_EDIT=8 - -O = .obj -OLB = .olb - -LIBRARY = expat$(OLB) -LIBDIR = [.lib] -SOURCES = $(LIBDIR)xmlparse.c $(LIBDIR)xmltok.c $(LIBDIR)xmlrole.c -OBJECTS = xmlparse$(O) xmltok$(O) xmlrole$(O) - -TEMPLATES = xmltok_impl.c xmltok_ns.c -APIHEADER = $(LIBDIR)expat.h -HEADERS = $(LIBDIR)ascii.h $(LIBDIR)iasciitab.h $(LIBDIR)utf8tab.h $(LIBDIR)xmltok.h \ - $(LIBDIR)asciitab.h $(LIBDIR)latin1tab.h \ - $(LIBDIR)nametab.h $(LIBDIR)xmldef.h $(LIBDIR)xmlrole.h $(LIBDIR)xmltok_impl.h - -CONFIG_HEADER = expat_config.h -INCLUDES = /INCLUDE=([],[.lib]) -DEFS = /DEFINE=(PACKAGE="""$(PACKAGE)""",VERSION="""$(PACKAGE)_$(VERSION)""",HAVE_EXPAT_CONFIG_H) -LIBREVISION = 0 -LIBCURRENT = 1 -LIBAGE = 0 -# -COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) -# -# DISTFILES = $(DIST_COMMON) $(SOURCES) $(TEMPLATES) $(APIHEADER) $(HEADERS) -# -# TAR = gtar -# GZIP_ENV = --best -# -.FIRST : - IF F$SEARCH("$(LIBRARY)") .EQS. "" THEN $(LIBR) /CREATE /OBJECT $(LIBRARY) - -all : $(LIBRARY) - @ write sys$output "All made." - -.SUFFIXES : -.SUFFIXES : $(OLB) $(O) .C .H - -.c$(O) : - $(COMPILE) $(MMS$SOURCE) - -$(O)$(OLB) : - @ IF F$SEARCH("$(MMS$TARGET)") .EQS. "" - - THEN LIBRARY/CREATE/LOG $(MMS$TARGET) - @ LIBRARY /REPLACE /LOG $(MMS$TARGET) $(MMS$SOURCE) - -clean : - DELETE $(LIBRARY);*,*$(O);* - -$(LIBRARY) : $(LIBRARY)( $(OBJECTS) ) - $(LIBR) /COMPRESS $(MMS$TARGET) - -$(CONFIG_HEADER) : [.vms]expat_config.h - COPY/LOG $(MMS$SOURCE) $(MMS$TARGET) - -xmlparse$(O) : $(LIBDIR)xmlparse.c $(LIBDIR)expat.h $(LIBDIR)xmlrole.h $(LIBDIR)xmltok.h $(CONFIG_HEADER) - -xmlrole$(O) : $(LIBDIR)xmlrole.c $(LIBDIR)ascii.h $(LIBDIR)xmlrole.h $(CONFIG_HEADER) - -xmltok$(O) : $(LIBDIR)xmltok.c $(LIBDIR)xmltok_impl.c $(LIBDIR)xmltok_ns.c \ - $(LIBDIR)ascii.h $(LIBDIR)asciitab.h $(LIBDIR)iasciitab.h $(LIBDIR)latin1tab.h \ - $(LIBDIR)nametab.h $(LIBDIR)utf8tab.h $(LIBDIR)xmltok.h $(LIBDIR)xmltok_impl.h $(CONFIG_HEADER) - diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/vms/expat_config.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/vms/expat_config.h deleted file mode 100644 index d5db89e..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/vms/expat_config.h +++ /dev/null @@ -1,52 +0,0 @@ -/* Copyright 2000, Clark Cooper - All rights reserved. - - This is free software. You are permitted to copy, distribute, or modify - it under the terms of the MIT/X license (contained in the COPYING file - with this distribution.) -*/ - -/* Define to empty if the keyword does not work. */ -#undef const - -/* Define if you have a working `mmap' system call. */ -#undef HAVE_MMAP - -/* Define to `long' if doesn't define. */ -#undef off_t - -/* Define to `unsigned' if doesn't define. */ -#undef size_t - -/* Define if your processor stores words with the most significant - byte first (like Motorola and SPARC, unlike Intel and VAX). */ -#undef WORDS_BIGENDIAN - -/* Define if you have the bcopy function. */ -#undef HAVE_BCOPY - -/* Define if you have the memmove function. */ -#define HAVE_MEMMOVE 1 - -/* Define if you have the header file. */ -#define HAVE_UNISTD_H 1 - -#define XML_NS -#define XML_DTD - -#ifdef WORDS_BIGENDIAN -#define XML_BYTE_ORDER 21 -#else -#define XML_BYTE_ORDER 12 -#endif - -#define XML_CONTEXT_BYTES 1024 - -#ifndef HAVE_MEMMOVE -#ifdef HAVE_BCOPY -#define memmove(d,s,l) bcopy((s),(d),(l)) -#else -#define memmove(d,s,l) ;punting on memmove; -#endif - -#endif diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/win32/MANIFEST.txt b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/win32/MANIFEST.txt deleted file mode 100644 index b7cd395..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/win32/MANIFEST.txt +++ /dev/null @@ -1,27 +0,0 @@ - Overview of the Expat distribution - -The Expat distribution creates several subdirectories on your system. -Some of these directories contain components of interest to all Expat -users, and some contain material of interest to developers who wish to -use Expat in their applications. In the list below, is the -directory you specified to the installer. - - Directory Contents - --------------------------------------------------------------------- - \ Some general information files. - - \Doc\ API documentation for developers. - - \Bin\ Pre-compiled dynamic libraries for developers. - Pre-compiled static libraries for developers (*MT.lib). - The XML well-formedness checker xmlwf. - - \Source\ Source code, which may interest some developers, - including a workspace for Microsft Visual C++. - The source code includes the parser, the well- - formedness checker, and a couple of small sample - applications. - - \Source\bcb5\ Project files for Borland C++ Builder 5 and BCC 5.5. - - diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/win32/README.txt b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/win32/README.txt deleted file mode 100644 index e3702ae..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/win32/README.txt +++ /dev/null @@ -1,80 +0,0 @@ - -Expat can be built on Windows in three ways: - using MS Visual C++ (6.0 or .NET), Borland C++ Builder 5 or Cygwin. - -* Cygwin: - This follows the Unix build procedures. - -* C++ Builder 5: - Possible with make files in the BCB5 subdirectory. - Details can be found in the ReadMe file located there. - -* MS Visual C++ 6: - Based on the workspace file expat.dsw. The related project - files (.dsp) are located in the lib subdirectory. - -* MS Visual Studio .NET 2002, 2003, 2005, 2008, 2010: - The VC++ 6 workspace file (expat.dsw) and project files (.dsp) - can be opened and imported in VS.NET without problems. - -* All MS C/C++ compilers: - The output for all projects will be generated in the win32\bin - directory, intermediate files will be located in project-specific - subdirectories of win32\tmp. - -* Creating MinGW dynamic libraries from MS VC++ DLLs: - - On the command line, execute these steps: - pexports libexpat.dll > expat.def - pexports libexpatw.dll > expatw.def - dlltool -d expat.def -l libexpat.a - dlltool -d expatw.def -l libexpatw.a - - The *.a files are mingw libraries. - -* Special note about MS VC++ and runtime libraries: - - There are three possible configurations: using the - single threaded or multithreaded run-time library, - or using the multi-threaded run-time Dll. That is, - one can build three different Expat libraries depending - on the needs of the application. - - Dynamic Linking: - - By default the Expat Dlls are built to link statically - with the multi-threaded run-time library. - The libraries are named - - libexpat(w).dll - - libexpat(w).lib (import library) - The "w" indicates the UTF-16 version of the library. - - One rarely uses other versions of the Dll, but they can - be built easily by specifying a different RTL linkage in - the IDE on the C/C++ tab under the category Code Generation. - - Static Linking: - - The libraries should be named like this: - Single-theaded: libexpat(w)ML.lib - Multi-threaded: libexpat(w)MT.lib - Multi-threaded Dll: libexpat(w)MD.lib - The suffixes conform to the compiler switch settings - /ML, /MT and /MD for MS VC++. - - Note: In Visual Studio 2005 (Visual C++ 8.0) and later, the - single-threaded runtime library is not supported anymore. - - By default, the expat-static and expatw-static projects are set up - to link statically against the multithreaded run-time library, - so they will build libexpatMT.lib or libexpatwMT.lib files. - - To build the other versions of the static library, - go to Project - Settings: - - specify a different RTL linkage on the C/C++ tab - under the category Code Generation. - - then, on the Library tab, change the output file name - accordingly, as described above - - An application linking to the static libraries must - have the global macro XML_STATIC defined. diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/win32/expat.iss b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/win32/expat.iss deleted file mode 100644 index de5b6ef..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/win32/expat.iss +++ /dev/null @@ -1,69 +0,0 @@ -; Basic setup script for the Inno Setup installer builder. For more -; information on the free installer builder, see www.jrsoftware.org. -; -; This script was contributed by Tim Peters. -; It was designed for Inno Setup 2.0.19 but works with later versions as well. - -[Setup] -AppName=Expat -AppId=expat -AppVersion=2.1.0 -AppVerName=Expat 2.1.0 -AppCopyright=Copyright 1998-2012 Thai Open Source Software Center, Clark Cooper, and the Expat maintainers -AppPublisher=The Expat Developers -AppPublisherURL=http://www.libexpat.org/ -AppSupportURL=http://www.libexpat.org/ -AppUpdatesURL=http://www.libexpat.org/ -UninstallDisplayName=Expat XML Parser 2.1.0 -VersionInfoVersion=2.1.0 - -DefaultDirName={pf}\Expat 2.1.0 -UninstallFilesDir={app}\Uninstall - -Compression=lzma -SolidCompression=yes -SourceDir=.. -OutputDir=win32 -DisableStartupPrompt=yes -AllowNoIcons=yes -DisableProgramGroupPage=yes -DisableReadyPage=yes - -[Files] -Flags: ignoreversion; Source: win32\bin\Release\xmlwf.exe; DestDir: "{app}\Bin" -Flags: ignoreversion; Source: win32\MANIFEST.txt; DestDir: "{app}" -Flags: ignoreversion; Source: Changes; DestDir: "{app}"; DestName: Changes.txt -Flags: ignoreversion; Source: COPYING; DestDir: "{app}"; DestName: COPYING.txt -Flags: ignoreversion; Source: README; DestDir: "{app}"; DestName: README.txt -Flags: ignoreversion; Source: doc\*.html; DestDir: "{app}\Doc" -Flags: ignoreversion; Source: doc\*.css; DestDir: "{app}\Doc" -Flags: ignoreversion; Source: doc\*.png; DestDir: "{app}\Doc" -Flags: ignoreversion; Source: win32\bin\Release\*.dll; DestDir: "{app}\Bin" -Flags: ignoreversion; Source: win32\bin\Release\*.lib; DestDir: "{app}\Bin" -Flags: ignoreversion; Source: expat.dsw; DestDir: "{app}\Source" -Flags: ignoreversion; Source: win32\README.txt; DestDir: "{app}\Source" -Flags: ignoreversion; Source: bcb5\*.bp*; DestDir: "{app}\Source\bcb5" -Flags: ignoreversion; Source: bcb5\*.mak; DestDir: "{app}\Source\bcb5" -Flags: ignoreversion; Source: bcb5\*.def; DestDir: "{app}\Source\bcb5" -Flags: ignoreversion; Source: bcb5\*.txt; DestDir: "{app}\Source\bcb5" -Flags: ignoreversion; Source: bcb5\*.bat; DestDir: "{app}\Source\bcb5" -Flags: ignoreversion; Source: lib\*.c; DestDir: "{app}\Source\lib" -Flags: ignoreversion; Source: lib\*.h; DestDir: "{app}\Source\lib" -Flags: ignoreversion; Source: lib\*.def; DestDir: "{app}\Source\lib" -Flags: ignoreversion; Source: lib\*.dsp; DestDir: "{app}\Source\lib" -Flags: ignoreversion; Source: examples\*.c; DestDir: "{app}\Source\examples" -Flags: ignoreversion; Source: examples\*.dsp; DestDir: "{app}\Source\examples" -Flags: ignoreversion; Source: tests\*.c; DestDir: "{app}\Source\tests" -Flags: ignoreversion; Source: tests\*.cpp; DestDir: "{app}\Source\tests" -Flags: ignoreversion; Source: tests\*.h; DestDir: "{app}\Source\tests" -Flags: ignoreversion; Source: tests\README.txt; DestDir: "{app}\Source\tests" -Flags: ignoreversion; Source: tests\benchmark\*.c; DestDir: "{app}\Source\tests\benchmark" -Flags: ignoreversion; Source: tests\benchmark\*.ds*; DestDir: "{app}\Source\tests\benchmark" -Flags: ignoreversion; Source: tests\benchmark\README.txt; DestDir: "{app}\Source\tests\benchmark" -Flags: ignoreversion; Source: xmlwf\*.c*; DestDir: "{app}\Source\xmlwf" -Flags: ignoreversion; Source: xmlwf\*.h; DestDir: "{app}\Source\xmlwf" -Flags: ignoreversion; Source: xmlwf\*.dsp; DestDir: "{app}\Source\xmlwf" - -[Messages] -WelcomeLabel1=Welcome to the Expat XML Parser Setup Wizard -WelcomeLabel2=This will install [name/ver] on your computer.%n%nExpat is an XML parser with a C-language API, and is primarily made available to allow developers to build applications which use XML using a portable API and fast implementation.%n%nIt is strongly recommended that you close all other applications you have running before continuing. This will help prevent any conflicts during the installation process. diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/codepage.c b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/codepage.c deleted file mode 100755 index 57e48ff..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/codepage.c +++ /dev/null @@ -1,68 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -#include "codepage.h" - -#if (defined(WIN32) || (defined(__WATCOMC__) && defined(__NT__))) -#define STRICT 1 -#define WIN32_LEAN_AND_MEAN 1 - -#include - -int -codepageMap(int cp, int *map) -{ - int i; - CPINFO info; - if (!GetCPInfo(cp, &info) || info.MaxCharSize > 2) - return 0; - for (i = 0; i < 256; i++) - map[i] = -1; - if (info.MaxCharSize > 1) { - for (i = 0; i < MAX_LEADBYTES; i+=2) { - int j, lim; - if (info.LeadByte[i] == 0 && info.LeadByte[i + 1] == 0) - break; - lim = info.LeadByte[i + 1]; - for (j = info.LeadByte[i]; j <= lim; j++) - map[j] = -2; - } - } - for (i = 0; i < 256; i++) { - if (map[i] == -1) { - char c = (char)i; - unsigned short n; - if (MultiByteToWideChar(cp, MB_PRECOMPOSED|MB_ERR_INVALID_CHARS, - &c, 1, &n, 1) == 1) - map[i] = n; - } - } - return 1; -} - -int -codepageConvert(int cp, const char *p) -{ - unsigned short c; - if (MultiByteToWideChar(cp, MB_PRECOMPOSED|MB_ERR_INVALID_CHARS, - p, 2, &c, 1) == 1) - return c; - return -1; -} - -#else /* not WIN32 */ - -int -codepageMap(int cp, int *map) -{ - return 0; -} - -int -codepageConvert(int cp, const char *p) -{ - return -1; -} - -#endif /* not WIN32 */ diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/codepage.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/codepage.h deleted file mode 100755 index 6a4df68..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/codepage.h +++ /dev/null @@ -1,6 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -int codepageMap(int cp, int *map); -int codepageConvert(int cp, const char *p); diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/ct.c b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/ct.c deleted file mode 100755 index 95903a3..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/ct.c +++ /dev/null @@ -1,147 +0,0 @@ -#define CHARSET_MAX 41 - -static const char * -getTok(const char **pp) -{ - enum { inAtom, inString, init, inComment }; - int state = init; - const char *tokStart = 0; - for (;;) { - switch (**pp) { - case '\0': - return 0; - case ' ': - case '\r': - case '\t': - case '\n': - if (state == inAtom) - return tokStart; - break; - case '(': - if (state == inAtom) - return tokStart; - if (state != inString) - state++; - break; - case ')': - if (state > init) - --state; - else if (state != inString) - return 0; - break; - case ';': - case '/': - case '=': - if (state == inAtom) - return tokStart; - if (state == init) - return (*pp)++; - break; - case '\\': - ++*pp; - if (**pp == '\0') - return 0; - break; - case '"': - switch (state) { - case inString: - ++*pp; - return tokStart; - case inAtom: - return tokStart; - case init: - tokStart = *pp; - state = inString; - break; - } - break; - default: - if (state == init) { - tokStart = *pp; - state = inAtom; - } - break; - } - ++*pp; - } - /* not reached */ -} - -/* key must be lowercase ASCII */ - -static int -matchkey(const char *start, const char *end, const char *key) -{ - if (!start) - return 0; - for (; start != end; start++, key++) - if (*start != *key && *start != 'A' + (*key - 'a')) - return 0; - return *key == '\0'; -} - -void -getXMLCharset(const char *buf, char *charset) -{ - const char *next, *p; - - charset[0] = '\0'; - next = buf; - p = getTok(&next); - if (matchkey(p, next, "text")) - strcpy(charset, "us-ascii"); - else if (!matchkey(p, next, "application")) - return; - p = getTok(&next); - if (!p || *p != '/') - return; - p = getTok(&next); - if (matchkey(p, next, "xml")) - isXml = 1; - p = getTok(&next); - while (p) { - if (*p == ';') { - p = getTok(&next); - if (matchkey(p, next, "charset")) { - p = getTok(&next); - if (p && *p == '=') { - p = getTok(&next); - if (p) { - char *s = charset; - if (*p == '"') { - while (++p != next - 1) { - if (*p == '\\') - ++p; - if (s == charset + CHARSET_MAX - 1) { - charset[0] = '\0'; - break; - } - *s++ = *p; - } - *s++ = '\0'; - } - else { - if (next - p > CHARSET_MAX - 1) - break; - while (p != next) - *s++ = *p++; - *s = 0; - break; - } - } - } - } - } - else - p = getTok(&next); - } -} - -int -main(int argc, char **argv) -{ - char buf[CHARSET_MAX]; - getXMLCharset(argv[1], buf); - printf("charset = \"%s\"\n", buf); - return 0; -} diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/filemap.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/filemap.h deleted file mode 100755 index 814edec..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/filemap.h +++ /dev/null @@ -1,17 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -#include - -#ifdef XML_UNICODE -int filemap(const wchar_t *name, - void (*processor)(const void *, size_t, - const wchar_t *, void *arg), - void *arg); -#else -int filemap(const char *name, - void (*processor)(const void *, size_t, - const char *, void *arg), - void *arg); -#endif diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/readfilemap.c b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/readfilemap.c deleted file mode 100755 index bd32b93..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/readfilemap.c +++ /dev/null @@ -1,100 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -#include -#include -#include -#include -#include - -#ifdef __WATCOMC__ -#ifndef __LINUX__ -#include -#else -#include -#endif -#endif - -#ifdef __BEOS__ -#include -#endif - -#ifndef S_ISREG -#ifndef S_IFREG -#define S_IFREG _S_IFREG -#endif -#ifndef S_IFMT -#define S_IFMT _S_IFMT -#endif -#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) -#endif /* not S_ISREG */ - -#ifndef O_BINARY -#ifdef _O_BINARY -#define O_BINARY _O_BINARY -#else -#define O_BINARY 0 -#endif -#endif - -#include "filemap.h" - -int -filemap(const char *name, - void (*processor)(const void *, size_t, const char *, void *arg), - void *arg) -{ - size_t nbytes; - int fd; - int n; - struct stat sb; - void *p; - - fd = open(name, O_RDONLY|O_BINARY); - if (fd < 0) { - perror(name); - return 0; - } - if (fstat(fd, &sb) < 0) { - perror(name); - close(fd); - return 0; - } - if (!S_ISREG(sb.st_mode)) { - fprintf(stderr, "%s: not a regular file\n", name); - close(fd); - return 0; - } - nbytes = sb.st_size; - /* malloc will return NULL with nbytes == 0, handle files with size 0 */ - if (nbytes == 0) { - static const char c = '\0'; - processor(&c, 0, name, arg); - close(fd); - return 1; - } - p = malloc(nbytes); - if (!p) { - fprintf(stderr, "%s: out of memory\n", name); - close(fd); - return 0; - } - n = read(fd, p, nbytes); - if (n < 0) { - perror(name); - free(p); - close(fd); - return 0; - } - if (n != nbytes) { - fprintf(stderr, "%s: read unexpected number of bytes\n", name); - free(p); - close(fd); - return 0; - } - processor(p, nbytes, name, arg); - free(p); - close(fd); - return 1; -} diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/unixfilemap.c b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/unixfilemap.c deleted file mode 100755 index 93adce3..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/unixfilemap.c +++ /dev/null @@ -1,65 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -#include -#include -#include -#include -#include -#include -#include -#include - -#ifndef MAP_FILE -#define MAP_FILE 0 -#endif - -#include "filemap.h" - -int -filemap(const char *name, - void (*processor)(const void *, size_t, const char *, void *arg), - void *arg) -{ - int fd; - size_t nbytes; - struct stat sb; - void *p; - - fd = open(name, O_RDONLY); - if (fd < 0) { - perror(name); - return 0; - } - if (fstat(fd, &sb) < 0) { - perror(name); - close(fd); - return 0; - } - if (!S_ISREG(sb.st_mode)) { - close(fd); - fprintf(stderr, "%s: not a regular file\n", name); - return 0; - } - - nbytes = sb.st_size; - /* mmap fails for zero length files */ - if (nbytes == 0) { - static const char c = '\0'; - processor(&c, 0, name, arg); - close(fd); - return 1; - } - p = (void *)mmap((caddr_t)0, (size_t)nbytes, PROT_READ, - MAP_FILE|MAP_PRIVATE, fd, (off_t)0); - if (p == (void *)-1) { - perror(name); - close(fd); - return 0; - } - processor(p, nbytes, name, arg); - munmap((caddr_t)p, nbytes); - close(fd); - return 1; -} diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/win32filemap.c b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/win32filemap.c deleted file mode 100755 index 41dc35b..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/win32filemap.c +++ /dev/null @@ -1,96 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -#define STRICT 1 -#define WIN32_LEAN_AND_MEAN 1 - -#ifdef XML_UNICODE_WCHAR_T -#ifndef XML_UNICODE -#define XML_UNICODE -#endif -#endif - -#ifdef XML_UNICODE -#define UNICODE -#define _UNICODE -#endif /* XML_UNICODE */ -#include -#include -#include -#include "filemap.h" - -static void win32perror(const TCHAR *); - -int -filemap(const TCHAR *name, - void (*processor)(const void *, size_t, const TCHAR *, void *arg), - void *arg) -{ - HANDLE f; - HANDLE m; - DWORD size; - DWORD sizeHi; - void *p; - - f = CreateFile(name, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, - FILE_FLAG_SEQUENTIAL_SCAN, NULL); - if (f == INVALID_HANDLE_VALUE) { - win32perror(name); - return 0; - } - size = GetFileSize(f, &sizeHi); - if (size == (DWORD)-1) { - win32perror(name); - return 0; - } - if (sizeHi) { - _ftprintf(stderr, _T("%s: bigger than 2Gb\n"), name); - return 0; - } - /* CreateFileMapping barfs on zero length files */ - if (size == 0) { - static const char c = '\0'; - processor(&c, 0, name, arg); - CloseHandle(f); - return 1; - } - m = CreateFileMapping(f, NULL, PAGE_READONLY, 0, 0, NULL); - if (m == NULL) { - win32perror(name); - CloseHandle(f); - return 0; - } - p = MapViewOfFile(m, FILE_MAP_READ, 0, 0, 0); - if (p == NULL) { - win32perror(name); - CloseHandle(m); - CloseHandle(f); - return 0; - } - processor(p, size, name, arg); - UnmapViewOfFile(p); - CloseHandle(m); - CloseHandle(f); - return 1; -} - -static void -win32perror(const TCHAR *s) -{ - LPVOID buf; - if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER - | FORMAT_MESSAGE_FROM_SYSTEM, - NULL, - GetLastError(), - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - (LPTSTR) &buf, - 0, - NULL)) { - _ftprintf(stderr, _T("%s: %s"), s, buf); - fflush(stderr); - LocalFree(buf); - } - else - _ftprintf(stderr, _T("%s: unknown Windows error\n"), s); -} diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlfile.c b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlfile.c deleted file mode 100755 index 99eeeaa..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlfile.c +++ /dev/null @@ -1,244 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -#include -#include -#include -#include -#include - -#ifdef COMPILED_FROM_DSP -#include "winconfig.h" -#elif defined(MACOS_CLASSIC) -#include "macconfig.h" -#elif defined(__amigaos__) -#include "amigaconfig.h" -#elif defined(__WATCOMC__) -#include "watcomconfig.h" -#elif defined(HAVE_EXPAT_CONFIG_H) -#include -#endif /* ndef COMPILED_FROM_DSP */ - -#include "expat.h" -#include "xmlfile.h" -#include "xmltchar.h" -#include "filemap.h" - -#if (defined(_MSC_VER) || (defined(__WATCOMC__) && !defined(__LINUX__))) -#include -#endif - -#if defined(__amigaos__) && defined(__USE_INLINE__) -#include -#endif - -#ifdef HAVE_UNISTD_H -#include -#endif - -#ifndef O_BINARY -#ifdef _O_BINARY -#define O_BINARY _O_BINARY -#else -#define O_BINARY 0 -#endif -#endif - -#ifdef _DEBUG -#define READ_SIZE 16 -#else -#define READ_SIZE (1024*8) -#endif - - -typedef struct { - XML_Parser parser; - int *retPtr; -} PROCESS_ARGS; - -static void -reportError(XML_Parser parser, const XML_Char *filename) -{ - enum XML_Error code = XML_GetErrorCode(parser); - const XML_Char *message = XML_ErrorString(code); - if (message) - ftprintf(stdout, T("%s:%" XML_FMT_INT_MOD "u:%" XML_FMT_INT_MOD "u: %s\n"), - filename, - XML_GetErrorLineNumber(parser), - XML_GetErrorColumnNumber(parser), - message); - else - ftprintf(stderr, T("%s: (unknown message %d)\n"), filename, code); -} - -/* This implementation will give problems on files larger than INT_MAX. */ -static void -processFile(const void *data, size_t size, - const XML_Char *filename, void *args) -{ - XML_Parser parser = ((PROCESS_ARGS *)args)->parser; - int *retPtr = ((PROCESS_ARGS *)args)->retPtr; - if (XML_Parse(parser, (const char *)data, (int)size, 1) == XML_STATUS_ERROR) { - reportError(parser, filename); - *retPtr = 0; - } - else - *retPtr = 1; -} - -#if (defined(WIN32) || defined(__WATCOMC__)) - -static int -isAsciiLetter(XML_Char c) -{ - return (T('a') <= c && c <= T('z')) || (T('A') <= c && c <= T('Z')); -} - -#endif /* WIN32 */ - -static const XML_Char * -resolveSystemId(const XML_Char *base, const XML_Char *systemId, - XML_Char **toFree) -{ - XML_Char *s; - *toFree = 0; - if (!base - || *systemId == T('/') -#if (defined(WIN32) || defined(__WATCOMC__)) - || *systemId == T('\\') - || (isAsciiLetter(systemId[0]) && systemId[1] == T(':')) -#endif - ) - return systemId; - *toFree = (XML_Char *)malloc((tcslen(base) + tcslen(systemId) + 2) - * sizeof(XML_Char)); - if (!*toFree) - return systemId; - tcscpy(*toFree, base); - s = *toFree; - if (tcsrchr(s, T('/'))) - s = tcsrchr(s, T('/')) + 1; -#if (defined(WIN32) || defined(__WATCOMC__)) - if (tcsrchr(s, T('\\'))) - s = tcsrchr(s, T('\\')) + 1; -#endif - tcscpy(s, systemId); - return *toFree; -} - -static int -externalEntityRefFilemap(XML_Parser parser, - const XML_Char *context, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId) -{ - int result; - XML_Char *s; - const XML_Char *filename; - XML_Parser entParser = XML_ExternalEntityParserCreate(parser, context, 0); - PROCESS_ARGS args; - args.retPtr = &result; - args.parser = entParser; - filename = resolveSystemId(base, systemId, &s); - XML_SetBase(entParser, filename); - if (!filemap(filename, processFile, &args)) - result = 0; - free(s); - XML_ParserFree(entParser); - return result; -} - -static int -processStream(const XML_Char *filename, XML_Parser parser) -{ - /* passing NULL for filename means read intput from stdin */ - int fd = 0; /* 0 is the fileno for stdin */ - - if (filename != NULL) { - fd = topen(filename, O_BINARY|O_RDONLY); - if (fd < 0) { - tperror(filename); - return 0; - } - } - for (;;) { - int nread; - char *buf = (char *)XML_GetBuffer(parser, READ_SIZE); - if (!buf) { - if (filename != NULL) - close(fd); - ftprintf(stderr, T("%s: out of memory\n"), - filename != NULL ? filename : "xmlwf"); - return 0; - } - nread = read(fd, buf, READ_SIZE); - if (nread < 0) { - tperror(filename != NULL ? filename : "STDIN"); - if (filename != NULL) - close(fd); - return 0; - } - if (XML_ParseBuffer(parser, nread, nread == 0) == XML_STATUS_ERROR) { - reportError(parser, filename != NULL ? filename : "STDIN"); - if (filename != NULL) - close(fd); - return 0; - } - if (nread == 0) { - if (filename != NULL) - close(fd); - break;; - } - } - return 1; -} - -static int -externalEntityRefStream(XML_Parser parser, - const XML_Char *context, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId) -{ - XML_Char *s; - const XML_Char *filename; - int ret; - XML_Parser entParser = XML_ExternalEntityParserCreate(parser, context, 0); - filename = resolveSystemId(base, systemId, &s); - XML_SetBase(entParser, filename); - ret = processStream(filename, entParser); - free(s); - XML_ParserFree(entParser); - return ret; -} - -int -XML_ProcessFile(XML_Parser parser, - const XML_Char *filename, - unsigned flags) -{ - int result; - - if (!XML_SetBase(parser, filename)) { - ftprintf(stderr, T("%s: out of memory"), filename); - exit(1); - } - - if (flags & XML_EXTERNAL_ENTITIES) - XML_SetExternalEntityRefHandler(parser, - (flags & XML_MAP_FILE) - ? externalEntityRefFilemap - : externalEntityRefStream); - if (flags & XML_MAP_FILE) { - PROCESS_ARGS args; - args.retPtr = &result; - args.parser = parser; - if (!filemap(filename, processFile, &args)) - result = 0; - } - else - result = processStream(filename, parser); - return result; -} diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlfile.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlfile.h deleted file mode 100755 index d093ecc..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlfile.h +++ /dev/null @@ -1,20 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -#define XML_MAP_FILE 01 -#define XML_EXTERNAL_ENTITIES 02 - -#ifdef XML_LARGE_SIZE -#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400 -#define XML_FMT_INT_MOD "I64" -#else -#define XML_FMT_INT_MOD "ll" -#endif -#else -#define XML_FMT_INT_MOD "l" -#endif - -extern int XML_ProcessFile(XML_Parser parser, - const XML_Char *filename, - unsigned flags); diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlmime.c b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlmime.c deleted file mode 100755 index 56a0e7f..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlmime.c +++ /dev/null @@ -1,163 +0,0 @@ -#include -#include "xmlmime.h" - -static const char * -getTok(const char **pp) -{ - /* inComment means one level of nesting; inComment+1 means two levels etc */ - enum { inAtom, inString, init, inComment }; - int state = init; - const char *tokStart = 0; - for (;;) { - switch (**pp) { - case '\0': - if (state == inAtom) - return tokStart; - return 0; - case ' ': - case '\r': - case '\t': - case '\n': - if (state == inAtom) - return tokStart; - break; - case '(': - if (state == inAtom) - return tokStart; - if (state != inString) - state++; - break; - case ')': - if (state > init) - --state; - else if (state != inString) - return 0; - break; - case ';': - case '/': - case '=': - if (state == inAtom) - return tokStart; - if (state == init) - return (*pp)++; - break; - case '\\': - ++*pp; - if (**pp == '\0') - return 0; - break; - case '"': - switch (state) { - case inString: - ++*pp; - return tokStart; - case inAtom: - return tokStart; - case init: - tokStart = *pp; - state = inString; - break; - } - break; - default: - if (state == init) { - tokStart = *pp; - state = inAtom; - } - break; - } - ++*pp; - } - /* not reached */ -} - -/* key must be lowercase ASCII */ - -static int -matchkey(const char *start, const char *end, const char *key) -{ - if (!start) - return 0; - for (; start != end; start++, key++) - if (*start != *key && *start != 'A' + (*key - 'a')) - return 0; - return *key == '\0'; -} - -void -getXMLCharset(const char *buf, char *charset) -{ - const char *next, *p; - - charset[0] = '\0'; - next = buf; - p = getTok(&next); - if (matchkey(p, next, "text")) - strcpy(charset, "us-ascii"); - else if (!matchkey(p, next, "application")) - return; - p = getTok(&next); - if (!p || *p != '/') - return; - p = getTok(&next); -#if 0 - if (!matchkey(p, next, "xml") && charset[0] == '\0') - return; -#endif - p = getTok(&next); - while (p) { - if (*p == ';') { - p = getTok(&next); - if (matchkey(p, next, "charset")) { - p = getTok(&next); - if (p && *p == '=') { - p = getTok(&next); - if (p) { - char *s = charset; - if (*p == '"') { - while (++p != next - 1) { - if (*p == '\\') - ++p; - if (s == charset + CHARSET_MAX - 1) { - charset[0] = '\0'; - break; - } - *s++ = *p; - } - *s++ = '\0'; - } - else { - if (next - p > CHARSET_MAX - 1) - break; - while (p != next) - *s++ = *p++; - *s = 0; - break; - } - } - } - break; - } - } - else - p = getTok(&next); - } -} - -#ifdef TEST - -#include - -int -main(int argc, char *argv[]) -{ - char buf[CHARSET_MAX]; - if (argc <= 1) - return 1; - printf("%s\n", argv[1]); - getXMLCharset(argv[1], buf); - printf("charset=\"%s\"\n", buf); - return 0; -} - -#endif /* TEST */ diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlmime.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlmime.h deleted file mode 100755 index bf0356d..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlmime.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifdef __cplusplus -extern "C" { -#endif - -/* Registered charset names are at most 40 characters long. */ - -#define CHARSET_MAX 41 - -/* Figure out the charset to use from the ContentType. - buf contains the body of the header field (the part after "Content-Type:"). - charset gets the charset to use. It must be at least CHARSET_MAX chars - long. charset will be empty if the default charset should be used. -*/ - -void getXMLCharset(const char *buf, char *charset); - -#ifdef __cplusplus -} -#endif diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmltchar.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmltchar.h deleted file mode 100755 index 1088575..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmltchar.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifdef XML_UNICODE -#ifndef XML_UNICODE_WCHAR_T -#error xmlwf requires a 16-bit Unicode-compatible wchar_t -#endif -#define T(x) L ## x -#define ftprintf fwprintf -#define tfopen _wfopen -#define fputts fputws -#define puttc putwc -#define tcscmp wcscmp -#define tcscpy wcscpy -#define tcscat wcscat -#define tcschr wcschr -#define tcsrchr wcsrchr -#define tcslen wcslen -#define tperror _wperror -#define topen _wopen -#define tmain wmain -#define tremove _wremove -#else /* not XML_UNICODE */ -#define T(x) x -#define ftprintf fprintf -#define tfopen fopen -#define fputts fputs -#define puttc putc -#define tcscmp strcmp -#define tcscpy strcpy -#define tcscat strcat -#define tcschr strchr -#define tcsrchr strrchr -#define tcslen strlen -#define tperror perror -#define topen open -#define tmain main -#define tremove remove -#endif /* not XML_UNICODE */ diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlurl.h b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlurl.h deleted file mode 100755 index d329913..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlurl.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifdef __cplusplus -extern "C" { -#endif - -int XML_URLInit(); -void XML_URLUninit(); -int XML_ProcessURL(XML_Parser parser, - const XML_Char *url, - unsigned flags); - -#ifdef __cplusplus -} -#endif diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlwf.c b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlwf.c deleted file mode 100755 index 4fc77da..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlwf.c +++ /dev/null @@ -1,861 +0,0 @@ -/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd - See the file COPYING for copying permission. -*/ - -#include -#include -#include -#include - -#include "expat.h" -#include "codepage.h" -#include "xmlfile.h" -#include "xmltchar.h" - -#ifdef _MSC_VER -#include -#endif - -#if defined(__amigaos__) && defined(__USE_INLINE__) -#include -#endif - -/* This ensures proper sorting. */ - -#define NSSEP T('\001') - -static void XMLCALL -characterData(void *userData, const XML_Char *s, int len) -{ - FILE *fp = (FILE *)userData; - for (; len > 0; --len, ++s) { - switch (*s) { - case T('&'): - fputts(T("&"), fp); - break; - case T('<'): - fputts(T("<"), fp); - break; - case T('>'): - fputts(T(">"), fp); - break; -#ifdef W3C14N - case 13: - fputts(T(" "), fp); - break; -#else - case T('"'): - fputts(T("""), fp); - break; - case 9: - case 10: - case 13: - ftprintf(fp, T("&#%d;"), *s); - break; -#endif - default: - puttc(*s, fp); - break; - } - } -} - -static void -attributeValue(FILE *fp, const XML_Char *s) -{ - puttc(T('='), fp); - puttc(T('"'), fp); - for (;;) { - switch (*s) { - case 0: - case NSSEP: - puttc(T('"'), fp); - return; - case T('&'): - fputts(T("&"), fp); - break; - case T('<'): - fputts(T("<"), fp); - break; - case T('"'): - fputts(T("""), fp); - break; -#ifdef W3C14N - case 9: - fputts(T(" "), fp); - break; - case 10: - fputts(T(" "), fp); - break; - case 13: - fputts(T(" "), fp); - break; -#else - case T('>'): - fputts(T(">"), fp); - break; - case 9: - case 10: - case 13: - ftprintf(fp, T("&#%d;"), *s); - break; -#endif - default: - puttc(*s, fp); - break; - } - s++; - } -} - -/* Lexicographically comparing UTF-8 encoded attribute values, -is equivalent to lexicographically comparing based on the character number. */ - -static int -attcmp(const void *att1, const void *att2) -{ - return tcscmp(*(const XML_Char **)att1, *(const XML_Char **)att2); -} - -static void XMLCALL -startElement(void *userData, const XML_Char *name, const XML_Char **atts) -{ - int nAtts; - const XML_Char **p; - FILE *fp = (FILE *)userData; - puttc(T('<'), fp); - fputts(name, fp); - - p = atts; - while (*p) - ++p; - nAtts = (int)((p - atts) >> 1); - if (nAtts > 1) - qsort((void *)atts, nAtts, sizeof(XML_Char *) * 2, attcmp); - while (*atts) { - puttc(T(' '), fp); - fputts(*atts++, fp); - attributeValue(fp, *atts); - atts++; - } - puttc(T('>'), fp); -} - -static void XMLCALL -endElement(void *userData, const XML_Char *name) -{ - FILE *fp = (FILE *)userData; - puttc(T('<'), fp); - puttc(T('/'), fp); - fputts(name, fp); - puttc(T('>'), fp); -} - -static int -nsattcmp(const void *p1, const void *p2) -{ - const XML_Char *att1 = *(const XML_Char **)p1; - const XML_Char *att2 = *(const XML_Char **)p2; - int sep1 = (tcsrchr(att1, NSSEP) != 0); - int sep2 = (tcsrchr(att1, NSSEP) != 0); - if (sep1 != sep2) - return sep1 - sep2; - return tcscmp(att1, att2); -} - -static void XMLCALL -startElementNS(void *userData, const XML_Char *name, const XML_Char **atts) -{ - int nAtts; - int nsi; - const XML_Char **p; - FILE *fp = (FILE *)userData; - const XML_Char *sep; - puttc(T('<'), fp); - - sep = tcsrchr(name, NSSEP); - if (sep) { - fputts(T("n1:"), fp); - fputts(sep + 1, fp); - fputts(T(" xmlns:n1"), fp); - attributeValue(fp, name); - nsi = 2; - } - else { - fputts(name, fp); - nsi = 1; - } - - p = atts; - while (*p) - ++p; - nAtts = (int)((p - atts) >> 1); - if (nAtts > 1) - qsort((void *)atts, nAtts, sizeof(XML_Char *) * 2, nsattcmp); - while (*atts) { - name = *atts++; - sep = tcsrchr(name, NSSEP); - puttc(T(' '), fp); - if (sep) { - ftprintf(fp, T("n%d:"), nsi); - fputts(sep + 1, fp); - } - else - fputts(name, fp); - attributeValue(fp, *atts); - if (sep) { - ftprintf(fp, T(" xmlns:n%d"), nsi++); - attributeValue(fp, name); - } - atts++; - } - puttc(T('>'), fp); -} - -static void XMLCALL -endElementNS(void *userData, const XML_Char *name) -{ - FILE *fp = (FILE *)userData; - const XML_Char *sep; - puttc(T('<'), fp); - puttc(T('/'), fp); - sep = tcsrchr(name, NSSEP); - if (sep) { - fputts(T("n1:"), fp); - fputts(sep + 1, fp); - } - else - fputts(name, fp); - puttc(T('>'), fp); -} - -#ifndef W3C14N - -static void XMLCALL -processingInstruction(void *userData, const XML_Char *target, - const XML_Char *data) -{ - FILE *fp = (FILE *)userData; - puttc(T('<'), fp); - puttc(T('?'), fp); - fputts(target, fp); - puttc(T(' '), fp); - fputts(data, fp); - puttc(T('?'), fp); - puttc(T('>'), fp); -} - -#endif /* not W3C14N */ - -static void XMLCALL -defaultCharacterData(void *userData, const XML_Char *s, int len) -{ - XML_DefaultCurrent((XML_Parser) userData); -} - -static void XMLCALL -defaultStartElement(void *userData, const XML_Char *name, - const XML_Char **atts) -{ - XML_DefaultCurrent((XML_Parser) userData); -} - -static void XMLCALL -defaultEndElement(void *userData, const XML_Char *name) -{ - XML_DefaultCurrent((XML_Parser) userData); -} - -static void XMLCALL -defaultProcessingInstruction(void *userData, const XML_Char *target, - const XML_Char *data) -{ - XML_DefaultCurrent((XML_Parser) userData); -} - -static void XMLCALL -nopCharacterData(void *userData, const XML_Char *s, int len) -{ -} - -static void XMLCALL -nopStartElement(void *userData, const XML_Char *name, const XML_Char **atts) -{ -} - -static void XMLCALL -nopEndElement(void *userData, const XML_Char *name) -{ -} - -static void XMLCALL -nopProcessingInstruction(void *userData, const XML_Char *target, - const XML_Char *data) -{ -} - -static void XMLCALL -markup(void *userData, const XML_Char *s, int len) -{ - FILE *fp = (FILE *)XML_GetUserData((XML_Parser) userData); - for (; len > 0; --len, ++s) - puttc(*s, fp); -} - -static void -metaLocation(XML_Parser parser) -{ - const XML_Char *uri = XML_GetBase(parser); - if (uri) - ftprintf((FILE *)XML_GetUserData(parser), T(" uri=\"%s\""), uri); - ftprintf((FILE *)XML_GetUserData(parser), - T(" byte=\"%" XML_FMT_INT_MOD "d\" nbytes=\"%d\" \ - line=\"%" XML_FMT_INT_MOD "u\" col=\"%" XML_FMT_INT_MOD "u\""), - XML_GetCurrentByteIndex(parser), - XML_GetCurrentByteCount(parser), - XML_GetCurrentLineNumber(parser), - XML_GetCurrentColumnNumber(parser)); -} - -static void -metaStartDocument(void *userData) -{ - fputts(T("\n"), (FILE *)XML_GetUserData((XML_Parser) userData)); -} - -static void -metaEndDocument(void *userData) -{ - fputts(T("\n"), (FILE *)XML_GetUserData((XML_Parser) userData)); -} - -static void XMLCALL -metaStartElement(void *userData, const XML_Char *name, - const XML_Char **atts) -{ - XML_Parser parser = (XML_Parser) userData; - FILE *fp = (FILE *)XML_GetUserData(parser); - const XML_Char **specifiedAttsEnd - = atts + XML_GetSpecifiedAttributeCount(parser); - const XML_Char **idAttPtr; - int idAttIndex = XML_GetIdAttributeIndex(parser); - if (idAttIndex < 0) - idAttPtr = 0; - else - idAttPtr = atts + idAttIndex; - - ftprintf(fp, T("\n"), fp); - do { - ftprintf(fp, T("= specifiedAttsEnd) - fputts(T("\" defaulted=\"yes\"/>\n"), fp); - else if (atts == idAttPtr) - fputts(T("\" id=\"yes\"/>\n"), fp); - else - fputts(T("\"/>\n"), fp); - } while (*(atts += 2)); - fputts(T("\n"), fp); - } - else - fputts(T("/>\n"), fp); -} - -static void XMLCALL -metaEndElement(void *userData, const XML_Char *name) -{ - XML_Parser parser = (XML_Parser) userData; - FILE *fp = (FILE *)XML_GetUserData(parser); - ftprintf(fp, T("\n"), fp); -} - -static void XMLCALL -metaProcessingInstruction(void *userData, const XML_Char *target, - const XML_Char *data) -{ - XML_Parser parser = (XML_Parser) userData; - FILE *fp = (FILE *)XML_GetUserData(parser); - ftprintf(fp, T("\n"), fp); -} - -static void XMLCALL -metaComment(void *userData, const XML_Char *data) -{ - XML_Parser parser = (XML_Parser) userData; - FILE *fp = (FILE *)XML_GetUserData(parser); - fputts(T("\n"), fp); -} - -static void XMLCALL -metaStartCdataSection(void *userData) -{ - XML_Parser parser = (XML_Parser) userData; - FILE *fp = (FILE *)XML_GetUserData(parser); - fputts(T("\n"), fp); -} - -static void XMLCALL -metaEndCdataSection(void *userData) -{ - XML_Parser parser = (XML_Parser) userData; - FILE *fp = (FILE *)XML_GetUserData(parser); - fputts(T("\n"), fp); -} - -static void XMLCALL -metaCharacterData(void *userData, const XML_Char *s, int len) -{ - XML_Parser parser = (XML_Parser) userData; - FILE *fp = (FILE *)XML_GetUserData(parser); - fputts(T("\n"), fp); -} - -static void XMLCALL -metaStartDoctypeDecl(void *userData, - const XML_Char *doctypeName, - const XML_Char *sysid, - const XML_Char *pubid, - int has_internal_subset) -{ - XML_Parser parser = (XML_Parser) userData; - FILE *fp = (FILE *)XML_GetUserData(parser); - ftprintf(fp, T("\n"), fp); -} - -static void XMLCALL -metaEndDoctypeDecl(void *userData) -{ - XML_Parser parser = (XML_Parser) userData; - FILE *fp = (FILE *)XML_GetUserData(parser); - fputts(T("\n"), fp); -} - -static void XMLCALL -metaNotationDecl(void *userData, - const XML_Char *notationName, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId) -{ - XML_Parser parser = (XML_Parser) userData; - FILE *fp = (FILE *)XML_GetUserData(parser); - ftprintf(fp, T("\n"), fp); -} - - -static void XMLCALL -metaEntityDecl(void *userData, - const XML_Char *entityName, - int is_param, - const XML_Char *value, - int value_length, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId, - const XML_Char *notationName) -{ - XML_Parser parser = (XML_Parser) userData; - FILE *fp = (FILE *)XML_GetUserData(parser); - - if (value) { - ftprintf(fp, T("'), fp); - characterData(fp, value, value_length); - fputts(T("\n"), fp); - } - else if (notationName) { - ftprintf(fp, T("\n"), fp); - } - else { - ftprintf(fp, T("\n"), fp); - } -} - -static void XMLCALL -metaStartNamespaceDecl(void *userData, - const XML_Char *prefix, - const XML_Char *uri) -{ - XML_Parser parser = (XML_Parser) userData; - FILE *fp = (FILE *)XML_GetUserData(parser); - fputts(T("\n"), fp); - } - else - fputts(T("/>\n"), fp); -} - -static void XMLCALL -metaEndNamespaceDecl(void *userData, const XML_Char *prefix) -{ - XML_Parser parser = (XML_Parser) userData; - FILE *fp = (FILE *)XML_GetUserData(parser); - if (!prefix) - fputts(T("\n"), fp); - else - ftprintf(fp, T("\n"), prefix); -} - -static int XMLCALL -unknownEncodingConvert(void *data, const char *p) -{ - return codepageConvert(*(int *)data, p); -} - -static int XMLCALL -unknownEncoding(void *userData, const XML_Char *name, XML_Encoding *info) -{ - int cp; - static const XML_Char prefixL[] = T("windows-"); - static const XML_Char prefixU[] = T("WINDOWS-"); - int i; - - for (i = 0; prefixU[i]; i++) - if (name[i] != prefixU[i] && name[i] != prefixL[i]) - return 0; - - cp = 0; - for (; name[i]; i++) { - static const XML_Char digits[] = T("0123456789"); - const XML_Char *s = tcschr(digits, name[i]); - if (!s) - return 0; - cp *= 10; - cp += (int)(s - digits); - if (cp >= 0x10000) - return 0; - } - if (!codepageMap(cp, info->map)) - return 0; - info->convert = unknownEncodingConvert; - /* We could just cast the code page integer to a void *, - and avoid the use of release. */ - info->release = free; - info->data = malloc(sizeof(int)); - if (!info->data) - return 0; - *(int *)info->data = cp; - return 1; -} - -static int XMLCALL -notStandalone(void *userData) -{ - return 0; -} - -static void -showVersion(XML_Char *prog) -{ - XML_Char *s = prog; - XML_Char ch; - const XML_Feature *features = XML_GetFeatureList(); - while ((ch = *s) != 0) { - if (ch == '/' -#if (defined(WIN32) || defined(__WATCOMC__)) - || ch == '\\' -#endif - ) - prog = s + 1; - ++s; - } - ftprintf(stdout, T("%s using %s\n"), prog, XML_ExpatVersion()); - if (features != NULL && features[0].feature != XML_FEATURE_END) { - int i = 1; - ftprintf(stdout, T("%s"), features[0].name); - if (features[0].value) - ftprintf(stdout, T("=%ld"), features[0].value); - while (features[i].feature != XML_FEATURE_END) { - ftprintf(stdout, T(", %s"), features[i].name); - if (features[i].value) - ftprintf(stdout, T("=%ld"), features[i].value); - ++i; - } - ftprintf(stdout, T("\n")); - } -} - -static void -usage(const XML_Char *prog, int rc) -{ - ftprintf(stderr, - T("usage: %s [-n] [-p] [-r] [-s] [-w] [-x] [-d output-dir] " - "[-e encoding] file ...\n"), prog); - exit(rc); -} - -int -tmain(int argc, XML_Char **argv) -{ - int i, j; - const XML_Char *outputDir = NULL; - const XML_Char *encoding = NULL; - unsigned processFlags = XML_MAP_FILE; - int windowsCodePages = 0; - int outputType = 0; - int useNamespaces = 0; - int requireStandalone = 0; - enum XML_ParamEntityParsing paramEntityParsing = - XML_PARAM_ENTITY_PARSING_NEVER; - int useStdin = 0; - -#ifdef _MSC_VER - _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF|_CRTDBG_LEAK_CHECK_DF); -#endif - - i = 1; - j = 0; - while (i < argc) { - if (j == 0) { - if (argv[i][0] != T('-')) - break; - if (argv[i][1] == T('-') && argv[i][2] == T('\0')) { - i++; - break; - } - j++; - } - switch (argv[i][j]) { - case T('r'): - processFlags &= ~XML_MAP_FILE; - j++; - break; - case T('s'): - requireStandalone = 1; - j++; - break; - case T('n'): - useNamespaces = 1; - j++; - break; - case T('p'): - paramEntityParsing = XML_PARAM_ENTITY_PARSING_ALWAYS; - /* fall through */ - case T('x'): - processFlags |= XML_EXTERNAL_ENTITIES; - j++; - break; - case T('w'): - windowsCodePages = 1; - j++; - break; - case T('m'): - outputType = 'm'; - j++; - break; - case T('c'): - outputType = 'c'; - useNamespaces = 0; - j++; - break; - case T('t'): - outputType = 't'; - j++; - break; - case T('d'): - if (argv[i][j + 1] == T('\0')) { - if (++i == argc) - usage(argv[0], 2); - outputDir = argv[i]; - } - else - outputDir = argv[i] + j + 1; - i++; - j = 0; - break; - case T('e'): - if (argv[i][j + 1] == T('\0')) { - if (++i == argc) - usage(argv[0], 2); - encoding = argv[i]; - } - else - encoding = argv[i] + j + 1; - i++; - j = 0; - break; - case T('h'): - usage(argv[0], 0); - return 0; - case T('v'): - showVersion(argv[0]); - return 0; - case T('\0'): - if (j > 1) { - i++; - j = 0; - break; - } - /* fall through */ - default: - usage(argv[0], 2); - } - } - if (i == argc) { - useStdin = 1; - processFlags &= ~XML_MAP_FILE; - i--; - } - for (; i < argc; i++) { - FILE *fp = 0; - XML_Char *outName = 0; - int result; - XML_Parser parser; - if (useNamespaces) - parser = XML_ParserCreateNS(encoding, NSSEP); - else - parser = XML_ParserCreate(encoding); - if (requireStandalone) - XML_SetNotStandaloneHandler(parser, notStandalone); - XML_SetParamEntityParsing(parser, paramEntityParsing); - if (outputType == 't') { - /* This is for doing timings; this gives a more realistic estimate of - the parsing time. */ - outputDir = 0; - XML_SetElementHandler(parser, nopStartElement, nopEndElement); - XML_SetCharacterDataHandler(parser, nopCharacterData); - XML_SetProcessingInstructionHandler(parser, nopProcessingInstruction); - } - else if (outputDir) { - const XML_Char * delim = T("/"); - const XML_Char *file = useStdin ? T("STDIN") : argv[i]; - if (!useStdin) { - /* Jump after last (back)slash */ - const XML_Char * lastDelim = tcsrchr(file, delim[0]); - if (lastDelim) - file = lastDelim + 1; -#if (defined(WIN32) || defined(__WATCOMC__)) - else { - const XML_Char * winDelim = T("\\"); - lastDelim = tcsrchr(file, winDelim[0]); - if (lastDelim) { - file = lastDelim + 1; - delim = winDelim; - } - } -#endif - } - outName = (XML_Char *)malloc((tcslen(outputDir) + tcslen(file) + 2) - * sizeof(XML_Char)); - tcscpy(outName, outputDir); - tcscat(outName, delim); - tcscat(outName, file); - fp = tfopen(outName, T("wb")); - if (!fp) { - tperror(outName); - exit(1); - } - setvbuf(fp, NULL, _IOFBF, 16384); -#ifdef XML_UNICODE - puttc(0xFEFF, fp); -#endif - XML_SetUserData(parser, fp); - switch (outputType) { - case 'm': - XML_UseParserAsHandlerArg(parser); - XML_SetElementHandler(parser, metaStartElement, metaEndElement); - XML_SetProcessingInstructionHandler(parser, metaProcessingInstruction); - XML_SetCommentHandler(parser, metaComment); - XML_SetCdataSectionHandler(parser, metaStartCdataSection, - metaEndCdataSection); - XML_SetCharacterDataHandler(parser, metaCharacterData); - XML_SetDoctypeDeclHandler(parser, metaStartDoctypeDecl, - metaEndDoctypeDecl); - XML_SetEntityDeclHandler(parser, metaEntityDecl); - XML_SetNotationDeclHandler(parser, metaNotationDecl); - XML_SetNamespaceDeclHandler(parser, metaStartNamespaceDecl, - metaEndNamespaceDecl); - metaStartDocument(parser); - break; - case 'c': - XML_UseParserAsHandlerArg(parser); - XML_SetDefaultHandler(parser, markup); - XML_SetElementHandler(parser, defaultStartElement, defaultEndElement); - XML_SetCharacterDataHandler(parser, defaultCharacterData); - XML_SetProcessingInstructionHandler(parser, - defaultProcessingInstruction); - break; - default: - if (useNamespaces) - XML_SetElementHandler(parser, startElementNS, endElementNS); - else - XML_SetElementHandler(parser, startElement, endElement); - XML_SetCharacterDataHandler(parser, characterData); -#ifndef W3C14N - XML_SetProcessingInstructionHandler(parser, processingInstruction); -#endif /* not W3C14N */ - break; - } - } - if (windowsCodePages) - XML_SetUnknownEncodingHandler(parser, unknownEncoding, 0); - result = XML_ProcessFile(parser, useStdin ? NULL : argv[i], processFlags); - if (outputDir) { - if (outputType == 'm') - metaEndDocument(parser); - fclose(fp); - if (!result) { - tremove(outName); - exit(2); - } - free(outName); - } - XML_ParserFree(parser); - } - return 0; -} diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlwf.dsp b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlwf.dsp deleted file mode 100755 index 52f4eec..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlwf.dsp +++ /dev/null @@ -1,139 +0,0 @@ -# Microsoft Developer Studio Project File - Name="xmlwf" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=xmlwf - Win32 Release -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "xmlwf.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "xmlwf.mak" CFG="xmlwf - Win32 Release" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "xmlwf - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "xmlwf - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "xmlwf - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir ".\Release" -# PROP BASE Intermediate_Dir ".\Release" -# PROP BASE Target_Dir "." -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "..\win32\bin\Release" -# PROP Intermediate_Dir "..\win32\tmp\Release-xmlwf" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "." -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\lib" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "COMPILED_FROM_DSP" /FD /c -# SUBTRACT CPP /YX /Yc /Yu -# ADD BASE RSC /l 0x809 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 /nologo /subsystem:console /machine:I386 -# ADD LINK32 libexpat.lib setargv.obj /nologo /subsystem:console /pdb:none /machine:I386 /libpath:"..\win32\bin\Release" /out:"..\win32\bin\Release\xmlwf.exe" -# SUBTRACT LINK32 /nodefaultlib - -!ELSEIF "$(CFG)" == "xmlwf - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir ".\Debug" -# PROP BASE Intermediate_Dir ".\Debug" -# PROP BASE Target_Dir "." -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "..\win32\bin\Debug" -# PROP Intermediate_Dir "..\win32\tmp\Debug-xmlwf" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "." -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c -# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /I "..\lib" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "COMPILED_FROM_DSP" /FD /c -# SUBTRACT CPP /Fr /YX -# ADD BASE RSC /l 0x809 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 /nologo /subsystem:console /debug /machine:I386 -# ADD LINK32 libexpat.lib setargv.obj /nologo /subsystem:console /pdb:none /debug /machine:I386 /libpath:"..\win32\bin\Debug" /out:"..\win32\bin\Debug\xmlwf.exe" - -!ENDIF - -# Begin Target - -# Name "xmlwf - Win32 Release" -# Name "xmlwf - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90" -# Begin Source File - -SOURCE=.\codepage.c -# End Source File -# Begin Source File - -SOURCE=.\readfilemap.c -# PROP Exclude_From_Build 1 -# End Source File -# Begin Source File - -SOURCE=.\unixfilemap.c -# PROP Exclude_From_Build 1 -# End Source File -# Begin Source File - -SOURCE=.\win32filemap.c -# End Source File -# Begin Source File - -SOURCE=.\xmlfile.c -# End Source File -# Begin Source File - -SOURCE=.\xmlwf.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd" -# Begin Source File - -SOURCE=.\codepage.h -# End Source File -# Begin Source File - -SOURCE=.\xmlfile.h -# End Source File -# Begin Source File - -SOURCE=.\xmltchar.h -# End Source File -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlwin32url.cxx b/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlwin32url.cxx deleted file mode 100755 index bbfcce2..0000000 --- a/node_modules/xml2json/node_modules/node-expat/deps/libexpat/xmlwf/xmlwin32url.cxx +++ /dev/null @@ -1,395 +0,0 @@ -#include "expat.h" -#ifdef XML_UNICODE -#define UNICODE -#endif -#include -#include -#include -#include -#include -#include "xmlurl.h" -#include "xmlmime.h" - -static int -processURL(XML_Parser parser, IMoniker *baseMoniker, const XML_Char *url); - -typedef void (*StopHandler)(void *, HRESULT); - -class Callback : public IBindStatusCallback { -public: - // IUnknown methods - STDMETHODIMP QueryInterface(REFIID,void **); - STDMETHODIMP_(ULONG) AddRef(); - STDMETHODIMP_(ULONG) Release(); - // IBindStatusCallback methods - STDMETHODIMP OnStartBinding(DWORD, IBinding *); - STDMETHODIMP GetPriority(LONG *); - STDMETHODIMP OnLowResource(DWORD); - STDMETHODIMP OnProgress(ULONG, ULONG, ULONG, LPCWSTR); - STDMETHODIMP OnStopBinding(HRESULT, LPCWSTR); - STDMETHODIMP GetBindInfo(DWORD *, BINDINFO *); - STDMETHODIMP OnDataAvailable(DWORD, DWORD, FORMATETC *, STGMEDIUM *); - STDMETHODIMP OnObjectAvailable(REFIID, IUnknown *); - Callback(XML_Parser, IMoniker *, StopHandler, void *); - ~Callback(); - int externalEntityRef(const XML_Char *context, - const XML_Char *systemId, const XML_Char *publicId); -private: - XML_Parser parser_; - IMoniker *baseMoniker_; - DWORD totalRead_; - ULONG ref_; - IBinding *pBinding_; - StopHandler stopHandler_; - void *stopArg_; -}; - -STDMETHODIMP_(ULONG) -Callback::AddRef() -{ - return ref_++; -} - -STDMETHODIMP_(ULONG) -Callback::Release() -{ - if (--ref_ == 0) { - delete this; - return 0; - } - return ref_; -} - -STDMETHODIMP -Callback::QueryInterface(REFIID riid, void** ppv) -{ - if (IsEqualGUID(riid, IID_IUnknown)) - *ppv = (IUnknown *)this; - else if (IsEqualGUID(riid, IID_IBindStatusCallback)) - *ppv = (IBindStatusCallback *)this; - else - return E_NOINTERFACE; - ((LPUNKNOWN)*ppv)->AddRef(); - return S_OK; -} - -STDMETHODIMP -Callback::OnStartBinding(DWORD, IBinding* pBinding) -{ - pBinding_ = pBinding; - pBinding->AddRef(); - return S_OK; -} - -STDMETHODIMP -Callback::GetPriority(LONG *) -{ - return E_NOTIMPL; -} - -STDMETHODIMP -Callback::OnLowResource(DWORD) -{ - return E_NOTIMPL; -} - -STDMETHODIMP -Callback::OnProgress(ULONG, ULONG, ULONG, LPCWSTR) -{ - return S_OK; -} - -STDMETHODIMP -Callback::OnStopBinding(HRESULT hr, LPCWSTR szError) -{ - if (pBinding_) { - pBinding_->Release(); - pBinding_ = 0; - } - if (baseMoniker_) { - baseMoniker_->Release(); - baseMoniker_ = 0; - } - stopHandler_(stopArg_, hr); - return S_OK; -} - -STDMETHODIMP -Callback::GetBindInfo(DWORD* pgrfBINDF, BINDINFO* pbindinfo) -{ - *pgrfBINDF = BINDF_ASYNCHRONOUS; - return S_OK; -} - -static void -reportError(XML_Parser parser) -{ - int code = XML_GetErrorCode(parser); - const XML_Char *message = XML_ErrorString(code); - if (message) - _ftprintf(stderr, _T("%s:%d:%ld: %s\n"), - XML_GetBase(parser), - XML_GetErrorLineNumber(parser), - XML_GetErrorColumnNumber(parser), - message); - else - _ftprintf(stderr, _T("%s: (unknown message %d)\n"), - XML_GetBase(parser), code); -} - -STDMETHODIMP -Callback::OnDataAvailable(DWORD grfBSCF, - DWORD dwSize, - FORMATETC *pfmtetc, - STGMEDIUM* pstgmed) -{ - if (grfBSCF & BSCF_FIRSTDATANOTIFICATION) { - IWinInetHttpInfo *hp; - HRESULT hr = pBinding_->QueryInterface(IID_IWinInetHttpInfo, - (void **)&hp); - if (SUCCEEDED(hr)) { - char contentType[1024]; - DWORD bufSize = sizeof(contentType); - DWORD flags = 0; - contentType[0] = 0; - hr = hp->QueryInfo(HTTP_QUERY_CONTENT_TYPE, contentType, - &bufSize, 0, NULL); - if (SUCCEEDED(hr)) { - char charset[CHARSET_MAX]; - getXMLCharset(contentType, charset); - if (charset[0]) { -#ifdef XML_UNICODE - XML_Char wcharset[CHARSET_MAX]; - XML_Char *p1 = wcharset; - const char *p2 = charset; - while ((*p1++ = (unsigned char)*p2++) != 0) - ; - XML_SetEncoding(parser_, wcharset); -#else - XML_SetEncoding(parser_, charset); -#endif - } - } - hp->Release(); - } - } - if (!parser_) - return E_ABORT; - if (pstgmed->tymed == TYMED_ISTREAM) { - while (totalRead_ < dwSize) { -#define READ_MAX (64*1024) - DWORD nToRead = dwSize - totalRead_; - if (nToRead > READ_MAX) - nToRead = READ_MAX; - void *buf = XML_GetBuffer(parser_, nToRead); - if (!buf) { - _ftprintf(stderr, _T("out of memory\n")); - return E_ABORT; - } - DWORD nRead; - HRESULT hr = pstgmed->pstm->Read(buf, nToRead, &nRead); - if (SUCCEEDED(hr)) { - totalRead_ += nRead; - if (!XML_ParseBuffer(parser_, - nRead, - (grfBSCF & BSCF_LASTDATANOTIFICATION) != 0 - && totalRead_ == dwSize)) { - reportError(parser_); - return E_ABORT; - } - } - } - } - return S_OK; -} - -STDMETHODIMP -Callback::OnObjectAvailable(REFIID, IUnknown *) -{ - return S_OK; -} - -int -Callback::externalEntityRef(const XML_Char *context, - const XML_Char *systemId, - const XML_Char *publicId) -{ - XML_Parser entParser = XML_ExternalEntityParserCreate(parser_, context, 0); - XML_SetBase(entParser, systemId); - int ret = processURL(entParser, baseMoniker_, systemId); - XML_ParserFree(entParser); - return ret; -} - -Callback::Callback(XML_Parser parser, IMoniker *baseMoniker, - StopHandler stopHandler, void *stopArg) -: parser_(parser), - baseMoniker_(baseMoniker), - ref_(0), - pBinding_(0), - totalRead_(0), - stopHandler_(stopHandler), - stopArg_(stopArg) -{ - if (baseMoniker_) - baseMoniker_->AddRef(); -} - -Callback::~Callback() -{ - if (pBinding_) - pBinding_->Release(); - if (baseMoniker_) - baseMoniker_->Release(); -} - -static int -externalEntityRef(void *arg, - const XML_Char *context, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId) -{ - return ((Callback *)arg)->externalEntityRef(context, systemId, publicId); -} - - -static HRESULT -openStream(XML_Parser parser, - IMoniker *baseMoniker, - const XML_Char *uri, - StopHandler stopHandler, void *stopArg) -{ - if (!XML_SetBase(parser, uri)) - return E_OUTOFMEMORY; - HRESULT hr; - IMoniker *m; -#ifdef XML_UNICODE - hr = CreateURLMoniker(0, uri, &m); -#else - LPWSTR uriw = new wchar_t[strlen(uri) + 1]; - for (int i = 0;; i++) { - uriw[i] = uri[i]; - if (uriw[i] == 0) - break; - } - hr = CreateURLMoniker(baseMoniker, uriw, &m); - delete [] uriw; -#endif - if (FAILED(hr)) - return hr; - IBindStatusCallback *cb = new Callback(parser, m, stopHandler, stopArg); - XML_SetExternalEntityRefHandler(parser, externalEntityRef); - XML_SetExternalEntityRefHandlerArg(parser, cb); - cb->AddRef(); - IBindCtx *b; - if (FAILED(hr = CreateAsyncBindCtx(0, cb, 0, &b))) { - cb->Release(); - m->Release(); - return hr; - } - cb->Release(); - IStream *pStream; - hr = m->BindToStorage(b, 0, IID_IStream, (void **)&pStream); - if (SUCCEEDED(hr)) { - if (pStream) - pStream->Release(); - } - if (hr == MK_S_ASYNCHRONOUS) - hr = S_OK; - m->Release(); - b->Release(); - return hr; -} - -struct QuitInfo { - const XML_Char *url; - HRESULT hr; - int stop; -}; - -static void -winPerror(const XML_Char *url, HRESULT hr) -{ - LPVOID buf; - if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER - | FORMAT_MESSAGE_FROM_HMODULE, - GetModuleHandleA("urlmon.dll"), - hr, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - (LPTSTR) &buf, - 0, - NULL) - || FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER - | FORMAT_MESSAGE_FROM_SYSTEM, - 0, - hr, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - (LPTSTR) &buf, - 0, - NULL)) { - /* The system error messages seem to end with a newline. */ - _ftprintf(stderr, _T("%s: %s"), url, buf); - fflush(stderr); - LocalFree(buf); - } - else - _ftprintf(stderr, _T("%s: error %x\n"), url, hr); -} - -static void -threadQuit(void *p, HRESULT hr) -{ - QuitInfo *qi = (QuitInfo *)p; - qi->hr = hr; - qi->stop = 1; -} - -extern "C" -int -XML_URLInit(void) -{ - return SUCCEEDED(CoInitialize(0)); -} - -extern "C" -void -XML_URLUninit(void) -{ - CoUninitialize(); -} - -static int -processURL(XML_Parser parser, IMoniker *baseMoniker, - const XML_Char *url) -{ - QuitInfo qi; - qi.stop = 0; - qi.url = url; - - XML_SetBase(parser, url); - HRESULT hr = openStream(parser, baseMoniker, url, threadQuit, &qi); - if (FAILED(hr)) { - winPerror(url, hr); - return 0; - } - else if (FAILED(qi.hr)) { - winPerror(url, qi.hr); - return 0; - } - MSG msg; - while (!qi.stop && GetMessage (&msg, NULL, 0, 0)) { - TranslateMessage (&msg); - DispatchMessage (&msg); - } - return 1; -} - -extern "C" -int -XML_ProcessURL(XML_Parser parser, - const XML_Char *url, - unsigned flags) -{ - return processURL(parser, 0, url); -} diff --git a/node_modules/xml2json/node_modules/node-expat/lib/node-expat.js b/node_modules/xml2json/node_modules/node-expat/lib/node-expat.js deleted file mode 100644 index 8fcf9eb..0000000 --- a/node_modules/xml2json/node_modules/node-expat/lib/node-expat.js +++ /dev/null @@ -1,101 +0,0 @@ -var EventEmitter = require('events').EventEmitter; -var util = require('util'); -// Only support nodejs v0.6 and on so no need to look for older module location -var expat = require('../build/Release/node_expat.node'); -var Stream = require('stream').Stream; - -var Parser = function(encoding) { - this.parser = new expat.Parser(encoding); - this.parser.emit = this.emit.bind(this); - - //stream API - this.writable = true; - this.readable = true; -}; -util.inherits(Parser, Stream); - -Parser.prototype.parse = function(buf, isFinal) { - return this.parser.parse(buf, isFinal); -}; - -Parser.prototype.setEncoding = function(encoding) { - return this.parser.setEncoding(encoding); -}; - -Parser.prototype.getError = function() { - return this.parser.getError(); -}; -Parser.prototype.stop = function() { - return this.parser.stop(); -}; -Parser.prototype.pause = function() { - return this.stop(); -}; -Parser.prototype.resume = function() { - return this.parser.resume(); -}; - -Parser.prototype.destroy = function() { - this.parser.stop(); - this.end(); -}; - -Parser.prototype.destroySoon = function() { - this.destroy(); -}; - -Parser.prototype.write = function(data) { - var error, result; - try { - result = this.parse(data); - if (!result) - error = this.getError(); - } catch (e) { - error = e; - } - if (error) { - this.emit('error', error); - this.emit('close'); - } - return result; -}; - -Parser.prototype.end = function(data) { - var error, result; - try { - result = this.parse(data || "", true); - if (!result) - error = this.getError(); - } catch (e) { - error = e; - } - - if (!error) - this.emit('end'); - else - this.emit('error', error); - this.emit('close'); -}; - -Parser.prototype.reset = function() { - return this.parser.reset(); -}; -Parser.prototype.getCurrentLineNumber = function() { - return this.parser.getCurrentLineNumber(); -}; -Parser.prototype.getCurrentColumnNumber = function() { - return this.parser.getCurrentColumnNumber(); -}; -Parser.prototype.getCurrentByteIndex = function() { - return this.parser.getCurrentByteIndex(); -}; - -//Exports - -exports.Parser = Parser; - -exports.createParser = function(cb) { - var parser = new Parser(); - if(cb) { parser.on('startElement', cb); } - return parser; -}; diff --git a/node_modules/xml2json/node_modules/node-expat/node-expat.cc b/node_modules/xml2json/node_modules/node-expat/node-expat.cc deleted file mode 100644 index 2a68954..0000000 --- a/node_modules/xml2json/node_modules/node-expat/node-expat.cc +++ /dev/null @@ -1,448 +0,0 @@ -#include -#include -#include -#include -extern "C" { -#include -} - -using namespace v8; -using namespace node; - -static Persistent sym_startElement, sym_endElement, - sym_startCdata, sym_endCdata, - sym_text, sym_processingInstruction, - sym_comment, sym_xmlDecl, sym_entityDecl, - sym_emit; - -class Parser : public ObjectWrap { -public: - static void Initialize(Handle target) - { - HandleScope scope; - Local t = FunctionTemplate::New(New); - - t->InstanceTemplate()->SetInternalFieldCount(1); - - NODE_SET_PROTOTYPE_METHOD(t, "parse", Parse); - NODE_SET_PROTOTYPE_METHOD(t, "setEncoding", SetEncoding); - NODE_SET_PROTOTYPE_METHOD(t, "getError", GetError); - NODE_SET_PROTOTYPE_METHOD(t, "stop", Stop); - NODE_SET_PROTOTYPE_METHOD(t, "resume", Resume); - NODE_SET_PROTOTYPE_METHOD(t, "reset", Reset); - NODE_SET_PROTOTYPE_METHOD(t, "getCurrentLineNumber", GetCurrentLineNumber); - NODE_SET_PROTOTYPE_METHOD(t, "getCurrentColumnNumber", GetCurrentColumnNumber); - NODE_SET_PROTOTYPE_METHOD(t, "getCurrentByteIndex", GetCurrentByteIndex); - - target->Set(String::NewSymbol("Parser"), t->GetFunction()); - - sym_startElement = NODE_PSYMBOL("startElement"); - sym_endElement = NODE_PSYMBOL("endElement"); - sym_startCdata = NODE_PSYMBOL("startCdata"); - sym_endCdata = NODE_PSYMBOL("endCdata"); - sym_text = NODE_PSYMBOL("text"); - sym_processingInstruction = NODE_PSYMBOL("processingInstruction"); - sym_comment = NODE_PSYMBOL("comment"); - sym_xmlDecl = NODE_PSYMBOL("xmlDecl"); - sym_entityDecl = NODE_PSYMBOL("entityDecl"); - sym_emit = NODE_PSYMBOL("emit"); - } - -protected: - /*** Constructor ***/ - - static Handle New(const Arguments& args) - { - HandleScope scope; - XML_Char *encoding = NULL; - if (args.Length() == 1 && args[0]->IsString()) - { - encoding = new XML_Char[32]; - args[0]->ToString()->WriteAscii(encoding, 0, 32); - } - - Parser *parser = new Parser(encoding); - if (encoding) - delete[] encoding; - parser->Wrap(args.This()); - return args.This(); - } - - Parser(const XML_Char *encoding) - : ObjectWrap() - { - parser = XML_ParserCreate(encoding); - assert(parser != NULL); - - attachHandlers(); - } - - ~Parser() - { - XML_ParserFree(parser); - } - - void attachHandlers() - { - XML_SetUserData(parser, this); - XML_SetElementHandler(parser, StartElement, EndElement); - XML_SetCharacterDataHandler(parser, Text); - XML_SetCdataSectionHandler(parser, StartCdata, EndCdata); - XML_SetProcessingInstructionHandler(parser, ProcessingInstruction); - XML_SetCommentHandler(parser, Comment); - XML_SetXmlDeclHandler(parser, XmlDecl); - XML_SetEntityDeclHandler(parser, EntityDecl); - } - - /*** parse() ***/ - - static Handle Parse(const Arguments& args) - { - Parser *parser = ObjectWrap::Unwrap(args.This()); - HandleScope scope; - Local str; - int isFinal = 0; - - /* Argument 2: isFinal :: Bool */ - if (args.Length() >= 2) - { - isFinal = args[1]->IsTrue(); - } - - /* Argument 1: buf :: String or Buffer */ - if (args.Length() >= 1 && args[0]->IsString()) - { - str = args[0]->ToString(); - return scope.Close(parser->parseString(**str, isFinal) ? True() : False()); - } - else if (args.Length() >= 1 && args[0]->IsObject()) - { - Local obj = args[0]->ToObject(); - if (Buffer::HasInstance(obj)) - { -#if NODE_MAJOR_VERSION == 0 && NODE_MINOR_VERSION < 3 - Buffer *buffer = ObjectWrap::Unwrap(obj); - return scope.Close(parser->parseBuffer(*buffer, isFinal) ? True() : False()); -#else - return scope.Close(parser->parseBuffer(obj, isFinal) ? True() : False()); -#endif - } - else - return ThrowException( - Exception::TypeError( - String::New("Parse buffer must be String or Buffer"))); - } - else - return ThrowException( - Exception::TypeError( - String::New("Parse buffer must be String or Buffer"))); - } - - /** Parse a v8 String by first writing it to the expat parser's - buffer */ - bool parseString(String &str, int isFinal) - { - int len = str.Utf8Length(); - if (len == 0) - return true; - - void *buf = XML_GetBuffer(parser, len); - assert(buf != NULL); - assert(str.WriteUtf8(static_cast(buf), len) == len); - - return XML_ParseBuffer(parser, len, isFinal) != XML_STATUS_ERROR; - } - - /** Parse a node.js Buffer directly */ -#if NODE_MAJOR_VERSION == 0 && NODE_MINOR_VERSION < 3 - bool parseBuffer(Buffer &buffer, int isFinal) - { - return XML_Parse(parser, buffer.data(), buffer.length(), isFinal) != XML_STATUS_ERROR; - } -#else - bool parseBuffer(Local buffer, int isFinal) - { - return XML_Parse(parser, Buffer::Data(buffer), Buffer::Length(buffer), isFinal) != XML_STATUS_ERROR; - } -#endif - - /*** setEncoding() ***/ - - static Handle SetEncoding(const Arguments& args) - { - Parser *parser = ObjectWrap::Unwrap(args.This()); - HandleScope scope; - - if (args.Length() == 1 && args[0]->IsString()) - { - XML_Char *encoding = new XML_Char[32]; - args[0]->ToString()->WriteAscii(encoding, 0, 32); - - int status = parser->setEncoding(encoding); - - delete[] encoding; - - return scope.Close(status ? True() : False()); - } - else - return False(); - } - - int setEncoding(XML_Char *encoding) - { - return XML_SetEncoding(parser, encoding) != 0; - } - - /*** getError() ***/ - - static Handle GetError(const Arguments& args) - { - HandleScope scope; - Parser *parser = ObjectWrap::Unwrap(args.This()); - - const XML_LChar *error = parser->getError(); - if (error) - return scope.Close(String::New(error)); - else - return scope.Close(Null()); - } - - /*** stop() ***/ - - static Handle Stop(const Arguments& args) - { - Parser *parser = ObjectWrap::Unwrap(args.This()); - HandleScope scope; - - int status = parser->stop(); - - return scope.Close(status ? True() : False()); - } - - int stop() - { - return XML_StopParser(parser, XML_TRUE) != 0; - } - - /*** resume() ***/ - - static Handle Resume(const Arguments& args) - { - Parser *parser = ObjectWrap::Unwrap(args.This()); - HandleScope scope; - - int status = parser->resume(); - - return scope.Close(status ? True() : False()); - } - - int resume() - { - return XML_ResumeParser(parser) != 0; - } - - static Handle Reset(const Arguments& args) - { - Parser *parser = ObjectWrap::Unwrap(args.This()); - HandleScope scope; - XML_Char *encoding = NULL; - if (args.Length() == 1 && args[0]->IsString()) - { - encoding = new XML_Char[32]; - args[0]->ToString()->WriteAscii(encoding, 0, 32); - } - - int status = parser->reset(encoding); - if (status) - parser->attachHandlers(); - return scope.Close(status ? True() : False()); - } - - int reset(XML_Char *encoding) - { - return XML_ParserReset(parser, encoding) != 0; - } - const XML_LChar *getError() - { - enum XML_Error code; - code = XML_GetErrorCode(parser); - return XML_ErrorString(code); - } - - static Handle GetCurrentLineNumber(const Arguments& args) - { - Parser *parser = ObjectWrap::Unwrap(args.This()); - HandleScope scope; - - return scope.Close(Integer::NewFromUnsigned(parser->getCurrentLineNumber())); - } - - uint32_t getCurrentLineNumber() - { - return XML_GetCurrentLineNumber(parser); - } - - static Handle GetCurrentColumnNumber(const Arguments& args) - { - Parser *parser = ObjectWrap::Unwrap(args.This()); - HandleScope scope; - - return scope.Close(Integer::NewFromUnsigned(parser->getCurrentColumnNumber())); - } - - uint32_t getCurrentColumnNumber() - { - return XML_GetCurrentColumnNumber(parser); - } - - static Handle GetCurrentByteIndex(const Arguments& args) - { - Parser *parser = ObjectWrap::Unwrap(args.This()); - HandleScope scope; - - return scope.Close(Integer::New(parser->getCurrentByteIndex())); - } - - int32_t getCurrentByteIndex() - { - return XML_GetCurrentByteIndex(parser); - } - -private: - /* expat instance */ - XML_Parser parser; - - /* no default ctor */ - Parser(); - - /*** SAX callbacks ***/ - /* Should a local HandleScope be used in those callbacks? */ - - static void StartElement(void *userData, - const XML_Char *name, const XML_Char **atts) - { - Parser *parser = reinterpret_cast(userData); - - /* Collect atts into JS object */ - Local attr = Object::New(); - for(const XML_Char **atts1 = atts; *atts1; atts1 += 2) - attr->Set(String::New(atts1[0]), String::New(atts1[1])); - - /* Trigger event */ - Handle argv[3] = { sym_startElement, - String::New(name), - attr }; - parser->Emit(3, argv); - } - - static void EndElement(void *userData, - const XML_Char *name) - { - Parser *parser = reinterpret_cast(userData); - - /* Trigger event */ - Handle argv[2] = { sym_endElement, String::New(name) }; - parser->Emit(2, argv); - } - - static void StartCdata(void *userData) - { - Parser *parser = reinterpret_cast(userData); - - /* Trigger event */ - Handle argv[1] = { sym_startCdata }; - parser->Emit(1, argv); - } - - static void EndCdata(void *userData) - { - Parser *parser = reinterpret_cast(userData); - - /* Trigger event */ - Handle argv[1] = { sym_endCdata }; - parser->Emit(1, argv); - } - - static void Text(void *userData, - const XML_Char *s, int len) - { - Parser *parser = reinterpret_cast(userData); - - /* Trigger event */ - Handle argv[2] = { sym_text, - String::New(s, len) }; - parser->Emit(2, argv); - } - - static void ProcessingInstruction(void *userData, - const XML_Char *target, const XML_Char *data) - { - Parser *parser = reinterpret_cast(userData); - - /* Trigger event */ - Handle argv[3] = { sym_processingInstruction, - String::New(target), - String::New(data) }; - parser->Emit(3, argv); - } - - static void Comment(void *userData, - const XML_Char *data) - { - Parser *parser = reinterpret_cast(userData); - - /* Trigger event */ - Handle argv[2] = { sym_comment, String::New(data) }; - parser->Emit(2, argv); - } - - static void XmlDecl(void *userData, - const XML_Char *version, const XML_Char *encoding, - int standalone) - { - Parser *parser = reinterpret_cast(userData); - - /* Trigger event */ - Handle argv[4] = { sym_xmlDecl, - version ? String::New(version) : Null(), - encoding ? String::New(encoding) : Null(), - Boolean::New(standalone) }; - parser->Emit(4, argv); - } - - static void EntityDecl(void *userData, const XML_Char *entityName, int is_parameter_entity, - const XML_Char *value, int value_length, const XML_Char *base, - const XML_Char *systemId, const XML_Char *publicId, const XML_Char *notationName) - { - Parser *parser = reinterpret_cast(userData); - - /* Trigger event */ - Handle argv[8] = { sym_entityDecl, - entityName ? String::New(entityName) : Null(), - Boolean::New(is_parameter_entity), - value ? String::New(value, value_length) : Null(), - base ? String::New(base) : Null(), - systemId ? String::New(systemId) : Null(), - publicId ? String::New(publicId) : Null(), - notationName ? String::New(notationName) : Null(), - }; - parser->Emit(8, argv); - } - - void Emit(int argc, Handle argv[]) - { - HandleScope scope; - - Local emit = Local::Cast(handle_->Get(sym_emit)); - emit->Call(handle_, argc, argv); - } -}; - -extern "C" { - static void init (Handle target) - { - Parser::Initialize(target); - } - //Changed the name cause I couldn't load the module with - in their names - NODE_MODULE(node_expat, init); -}; diff --git a/node_modules/xml2json/node_modules/node-expat/package.json b/node_modules/xml2json/node_modules/node-expat/package.json deleted file mode 100644 index 05c6fe8..0000000 --- a/node_modules/xml2json/node_modules/node-expat/package.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "name": "node-expat", - "version": "2.0.0", - "main": "./lib/node-expat", - "description": "NodeJS binding for fast XML parsing.", - "keywords": [ - "xml", - "sax", - "expat", - "libexpat", - "parse", - "parsing" - ], - "scripts": { - "test": "vows --spec ./test.js", - "install": "node-gyp rebuild" - }, - "dependencies": {}, - "devDependencies": { - "vows": ">=0.5.12" - }, - "repository": { - "type": "git", - "path": "git://github.com/astro/node-expat.git" - }, - "homepage": "http://github.com/astro/node-expat", - "bugs": "http://github.com/astro/node-expat/issues", - "author": { - "name": "Astro", - "email": "astro@spaceboyz.net", - "url": "http://spaceboyz.net/~astro/" - }, - "contributors": [ - { - "name": "Stephan Maka" - }, - { - "name": "Derek Hammer" - }, - { - "name": "Iein Valdez" - }, - { - "name": "Peter Körner" - }, - { - "name": "Camilo Aguilar" - }, - { - "name": "Michael Weibel" - }, - { - "name": "Alexey Zhuchkov" - }, - { - "name": "Satyam Shekhar" - }, - { - "name": "Dhruv Matani" - }, - { - "name": "Andreas Botsikas" - }, - { - "name": "Tom Hughes-Croucher" - }, - { - "name": "Nathan Rajlich" - } - ], - "licenses": [ - { - "type": "MIT" - } - ], - "engines": { - "node": ">=0.4" - }, - "gypfile": true, - "readme": "# node-expat #\n\n## Motivation ##\n\nYou use [node.js](http://github.com/ry/node) for speed? You process\nXML streams? Then you want the fastest XML parser: [libexpat](http://expat.sourceforge.net/)!\n\n## Speed ##\n\nA stupid speed test is supplied in `bench.js`. We measure how many\n25-byte elements a SAX parser can process:\n\n- [node-xml](http://github.com/robrighter/node-xml) (pure JavaScript): 23,000 el/s\n- [libxmljs](http://github.com/polotek/libxmljs) (libxml2 binding): 77,000 el/s\n- [node-expat](http://github.com/astro/node-expat) (libexpat binding, this): 113,000 el/s\n\nThese numbers were recorded on a Core 2 2400 MHz.\n\n## Instructions ##\n\nInstall node-expat:\n\n npm i node-expat\n\n## Usage ##\n\nImportant events emitted by a parser:\n\n- *startElement* with `name, attrs`\n- *endElement* with `name`\n- *text* with `string`\n\nThere are more. Use `test.js` for reference.\n\nIt's possible to stop and resume the parser from within element handlers using the parsers \nstop() and resume() methods.\n\n## Error handling ##\n\nWe don't emit an error event because libexpat doesn't use a callback\neither. Instead, check that `parse()` returns `true`. A descriptive\nstring can be obtained via `getError()` to provide user feedback.\n\nAlternatively, use the Parser like a node Stream. `write()` will emit\nerror events.\n\n## Namespace handling ##\n\nA word about special parsing of *xmlns:* this is not neccessary in a\nbare SAX parser like this, given that the DOM replacement you are\nusing (if any) is not relevant to the parser.\n", - "readmeFilename": "README.markdown", - "_id": "node-expat@2.0.0", - "dist": { - "shasum": "465a0b1a55bdde9373559d45cd4186f946846e55" - }, - "_from": "node-expat@2.0.0", - "_resolved": "https://registry.npmjs.org/node-expat/-/node-expat-2.0.0.tgz" -} diff --git a/node_modules/xml2json/node_modules/node-expat/test-mystic-library.xml b/node_modules/xml2json/node_modules/node-expat/test-mystic-library.xml deleted file mode 100644 index d1a9df8..0000000 --- a/node_modules/xml2json/node_modules/node-expat/test-mystic-library.xml +++ /dev/null @@ -1,42160 +0,0 @@ - - - - Lib - 12952.5 - - - - Mystic Library - Mystic Library - pdf - - - - Lib/InfoSyS - 3117.1 - - - - InfoSyS - InfoSyS - pdf - - - - Lib/InfoSyS/DM-AF-BSP1-17.zip - 14.5 - 0 - zip - - - - - Lib/InfoSyS - - Диалог Мифи - Александр Фролов - Библиотека Системного Программиста №1 - №17 - - Диалог Мифи - - - - Александр Фролов - Фролов - Александр - - - Библиотека Системного Программиста №1 - №17 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/helps.zip - 3.7 - 0 - zip - - - - - Lib/InfoSyS - - Tech Help 4.0, 6.0 and NG - Tech Help 4.0, 6.0 and NG - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/ng.zip - 2.2 - 0 - zip - - - - - Lib/InfoSyS - - ng.zip - ng.zip - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/ebook.zip - 24.2 - 0 - zip - - - - PDF eBooks collection - PDF eBooks collection - pdf - - - - - Lib/InfoSyS/ebook - - Photoshop 6 - Photoshop 6 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/ebook - - Photoshop 5,6 Filters - Photoshop 5,6 Filters - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/ebook - - Architectural Desktop 3 - Architectural Desktop 3 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/ebook - - AutoCAD 2000i - AutoCAD 2000i - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/ebook - - AutoCAD LT 2002 - AutoCAD LT 2002 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/ebook - - Autodesk Actrix Business - Autodesk Actrix Business - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/ebook - - Corel Draw 10 Step-By-Step Learning - Corel Draw 10 Step-By-Step Learning - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/ebook - - Corel Photo Paint 10 Special Effects - Corel Photo Paint 10 Special Effects - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/ebook - - Corel Photo Paint 10 - Corel Photo Paint 10 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/ebook - - Elastic Reality 3.0 - Elastic Reality 3.0 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/ebook - - Lightscape 3.2 - Lightscape 3.2 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/ebook - - Microsoft Visio Standard 2002 - Microsoft Visio Standard 2002 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/ebook - - Microsoft Visio 2002 Technical - Microsoft Visio 2002 Technical - - - pdf - 0 - 0 - - - - - - - Microsoft Office XP - Microsoft Office XP - pdf - - - - - Lib/InfoSyS/ebook/1 - - PowerPoint XP - PowerPoint XP - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/ebook/1 - - Excel XP - Excel XP - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/ebook/1 - - FrontPage XP - FrontPage XP - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/ebook/1 - - Outlook XP - Outlook XP - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/ebook/1 - - Access XP - Access XP - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/ebook/1 - - Publisher 2002 - Publisher 2002 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/ebook/1 - - Word XP - Word XP - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/OReilly.zip - 49.1 - 0 - zip - - - - O'Reilly - - Reference Library (html) - - O'Reilly - - Reference Library - html - - - - The Netorking CD Bookshelf v. 1.0 - - O'Reilly - - The Netorking CD Bookshelf v. 1.0 - html - - - - - Lib/InfoSyS/OReilly/1 - - DNS and BIND - - O'Reilly - - DNS and BIND - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/OReilly/1 - - TCP/IP Network Administration - - O'Reilly - - TCP/IP Network Administration - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/OReilly/1 - - Sendmail - - O'Reilly - - Sendmail - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/OReilly/1 - - Sendmail Desktop Reference - - O'Reilly - - Sendmail Desktop Reference - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/OReilly/1 - - Building Internet Firewalls - - O'Reilly - - Building Internet Firewalls - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/OReilly/1 - - Practical UNIX and Internet Security - - O'Reilly - - Practical UNIX and Internet Security - - - html - 0 - 0 - - - - - - - - The UNIX CD Bookshelf v. 1.0 - - O'Reilly - - The UNIX CD Bookshelf v. 1.0 - html - - - - - Lib/InfoSyS/OReilly/2 - - UNIX Power Tools - - O'Reilly - - UNIX Power Tools - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/OReilly/2 - - UNIX in a Nutshell: System V Edition - - O'Reilly - - UNIX in a Nutshell: System V Edition - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/OReilly/2 - - Learning the vi Editor - - O'Reilly - - Learning the vi Editor - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/OReilly/2 - - sed and awk - - O'Reilly - - sed and awk - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/OReilly/2 - - Learning the Korn Shell - - O'Reilly - - Learning the Korn Shell - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/OReilly/2 - - Learning the UNIX Operating System - - O'Reilly - - Learning the UNIX Operating System - - - html - 0 - 0 - - - - - - - - Web Reference Library - - O'Reilly - - Web Reference Library - html - - - - - Lib/InfoSyS/OReilly/3 - - HTML: The Definitive Guide - - O'Reilly - - HTML: The Definitive Guide - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/OReilly/3 - - CGI Programming on the World Wide Web - - O'Reilly - - CGI Programming on the World Wide Web - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/OReilly/3 - - JavaScript: The Definitive Guide - - O'Reilly - - JavaScript: The Definitive Guide - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/OReilly/3 - - Programming Perl - - O'Reilly - - Programming Perl - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/OReilly/3 - - Webmaster in a Nutshell - - O'Reilly - - Webmaster in a Nutshell - - - html - 0 - 0 - - - - - - - - The Perl CD Bookshelf v. 1.0 - - O'Reilly - - The Perl CD Bookshelf v. 1.0 - html - - - - - Lib/InfoSyS/OReilly/4 - - Perl in a Nutshell - - O'Reilly - - Perl in a Nutshell - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/OReilly/4 - - Learning Perl - - O'Reilly - - Learning Perl - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/OReilly/4 - - Learning Perl on Win32 - - O'Reilly - - Learning Perl on Win32 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/OReilly/4 - - Programming Perl - - O'Reilly - - Programming Perl - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/OReilly/4 - - Advanced Perl Programming - - O'Reilly - - Advanced Perl Programming - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/OReilly/4 - - Perl CookBook - - O'Reilly - - Perl CookBook - - - html - 0 - 0 - - - - - - - - Java Reference Library v. 1.3 - - O'Reilly - - Java Reference Library v. 1.3 - html - - - - - Lib/InfoSyS/OReilly/5 - - Java in a Nutshell - - O'Reilly - - Java in a Nutshell - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/OReilly/5 - - Java Language Reference - - O'Reilly - - Java Language Reference - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/OReilly/5 - - Java AWT Reference - - O'Reilly - - Java AWT Reference - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/OReilly/5 - - Java Fundamental Class Reference - - O'Reilly - - Java Fundamental Class Reference - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/OReilly/5 - - Exploring Java - - O'Reilly - - Exploring Java - - - html - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Cert.Docs - 251.2 - - - - Certification Documentation - Certification Documentation - pdf - - - - Lib/InfoSyS/Cert.Docs/ChinaLab - 4.4 - - - - China Lab - China Lab - pdf - - - - Lib/InfoSyS/Cert.Docs/ChinaLab/China IT Lab - 70-210 MCSE Study Guide Bible.pdf.gz - 0.2 - 0 - gzip - - - - - Lib/InfoSyS/Cert.Docs/ChinaLab - - China IT Lab - 70-210 MCSE Study Guide Bible.pdf.gz - - - China IT Lab - Lab - China - - - 70-210 MCSE Study Guide Bible.pdf.gz - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/ChinaLab/China IT Lab - 70-216 MCSE Study Guide Bible.pdf.gz - 1.9 - 0 - gzip - - - - - Lib/InfoSyS/Cert.Docs/ChinaLab - - China IT Lab - 70-216 MCSE Study Guide Bible.pdf.gz - - - China IT Lab - Lab - China - - - 70-216 MCSE Study Guide Bible.pdf.gz - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/ChinaLab/China IT Lab - 70-217 MCSE Study Guide Bible.pdf.gz - 0.4 - 0 - gzip - - - - - Lib/InfoSyS/Cert.Docs/ChinaLab - - China IT Lab - 70-217 MCSE Study Guide Bible.pdf.gz - - - China IT Lab - Lab - China - - - 70-217 MCSE Study Guide Bible.pdf.gz - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/ChinaLab/China IT Lab - 70-220 MCSE Study Guide Bible.pdf.gz - 0.4 - 0 - gzip - - - - - Lib/InfoSyS/Cert.Docs/ChinaLab - - China IT Lab - 70-220 MCSE Study Guide Bible.pdf.gz - - - China IT Lab - Lab - China - - - 70-220 MCSE Study Guide Bible.pdf.gz - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/ChinaLab/China IT Lab - 70-240 MCSE Study Guide Bible Ver 2.pdf.gz - 1.4 - 0 - gzip - - - - - Lib/InfoSyS/Cert.Docs/ChinaLab - - China IT Lab - 70-240 MCSE Study Guide Bible Ver 2.pdf.gz - - - China IT Lab - Lab - China - - - 70-240 MCSE Study Guide Bible Ver 2.pdf.gz - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Cert.Docs/Cisco - 33.7 - - - - Cisco Certification - Cisco Certification - pdf - - - - Lib/InfoSyS/Cert.Docs/Cisco/640-407.zip - 0.8 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Cisco - - CCNA 640-407 - Router and Switching Study Guide (html) - Router and Switching Study Guide - CCNA 640-407 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Cisco/640-441.zip - 6.6 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Cisco - - CCDA 640-441 - CCDA Exam - Design Cisco Networks - - - CCDA Exam - Exam - CCDA - - - Design Cisco Networks - CCDA 640-441 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Cisco/640-503.zip - 7.6 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Cisco - - CCNP 640-503 - Cisco Routing Exam Certification Guide - Cisco Routing Exam Certification Guide - CCNP 640-503 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Cisco/640-505.zip - 7.4 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Cisco - - CCNP 640-505 - Remote Access Exam Certification Guide - Remote Access Exam Certification Guide - CCNP 640-505 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Cisco/640-505a.zip - 7.6 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Cisco - - CCNP 640-505 - Sybex - Robert Padjen - Remote Access Study Guide - - Sybex - - - - Robert Padjen - Padjen - Robert - - - Remote Access Study Guide - CCNP 640-505 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Cisco/640-506.zip - 3.6 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Cisco - - CCNP 640-506 - Amir Ranjbar - CCNP Support Exam Certification Guide - - - Amir Ranjbar - Ranjbar - Amir - - - CCNP Support Exam Certification Guide - CCNP 640-506 - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Cert.Docs/Cram - 1.8 - - - - Cram Bible Lab - Cram Bible Lab - pdf - - - - Lib/InfoSyS/Cert.Docs/Cram/310-022,025.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Cram - - 310-022,025 - Sun Certified Java Programmer - 310-022,025 - Sun Certified Java Programmer - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Cram/670-407.zip - 0.4 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Cram - - CCNA 670-407 - Cisco Certificated Network Associate - Cisco Certificated Network Associate - CCNA 670-407 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Cram/70-175.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Cram - - MCSD 70-175 - Design Distributed Applications with VB6 r1.0 - Design Distributed Applications with VB6 r1.0 - MCSD 70-175 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Cram/70-176.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Cram - - MCSD 70-176 - Design Desktop Applications with VB6, r1.0 - Design Desktop Applications with VB6, r1.0 - MCSD 70-176 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Cram/70-219.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Cram - - MCSE 70-219 - Designing Win 2000 Directory Services Infrastructure - Designing Win 2000 Directory Services Infrastructure - MCSE 70-219 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Cram/70-28.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Cram - - MCSE 70-28 - Admin SQL Server 7.0 r2.0 - Admin SQL Server 7.0 r2.0 - MCSE 70-28 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Cram/70-29.zip - 0.7 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Cram - - MCSE 70-29 - Implementing SQL Server 7.0, r1.0 - Implementing SQL Server 7.0, r1.0 - MCSE 70-29 - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Cert.Docs/MicroSoft - 38.1 - - - - Misc on Microsoft Certification - Misc on Microsoft Certification - pdf - - - - Lib/InfoSyS/Cert.Docs/MicroSoft/1560a.zip - 11.9 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/MicroSoft - - MOC 1560a - Upgrading Support Skills from NT 4.0 to W2 - - - MOC 1560a - 1560a - MOC - - - Upgrading Support Skills from NT 4.0 to W2 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/MicroSoft/1626a.zip - 3.5 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/MicroSoft - - MOC 1626a - Deploying MS Office 2000 Using Microsoft Systems Managment Server 2.0 - - - MOC 1626a - 1626a - MOC - - - Deploying MS Office 2000 Using Microsoft Systems Managment Server 2.0 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/MicroSoft/1627a.zip - 2.8 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/MicroSoft - - MOC 1627a - Analyzing Year 2000 Compliance Using Microsoft Systems Management Server 2.0 - - - MOC 1627a - 1627a - MOC - - - Analyzing Year 2000 Compliance Using Microsoft Systems Management Server 2.0 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/MicroSoft/70-058.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/MicroSoft - - MCSE 70-058 - Wang Wei - MCSE Tutorial on Networking Essential - - - Wang Wei - Wei - Wang - - - MCSE Tutorial on Networking Essential - MCSE 70-058 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/MicroSoft/70-175,176.zip - 10.9 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/MicroSoft - - MCSD 70-175,176 - New Riders - Howard Hawhee - VB 6 Exams - MCSD 70-175,176 - New Riders - Howard Hawhee - VB 6 Exams - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/MicroSoft/70-229.zip - 4.6 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/MicroSoft - - MCSE 70-229 - Designing and Implementing Databases with SQL Server 2000 Enterprise Edition - Designing and Implementing Databases with SQL Server 2000 Enterprise Edition - MCSE 70-229 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/MicroSoft/70-73.zip - 2.3 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/MicroSoft - - MCSE 70-73 - Implementing and Supporting Microsoft Windows NT Workstation 4.0 - Implementing and Supporting Microsoft Windows NT Workstation 4.0 - MCSE 70-73 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/MicroSoft/short.zip - 1.9 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/MicroSoft - - Shorts on MS Courses collected by A. Kibkalo - Shorts on MS Courses collected by A. Kibkalo - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Cert.Docs/MSPress - 150 - - - - MSPress on Microsoft Certification - MSPress on Microsoft Certification - pdf - - - - Lib/InfoSyS/Cert.Docs/MSPress/1572b.zip - 27.3 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/MSPress - - 1572B - Implementing and Managing Microsoft Exchange 2000 - - - 1572B - 1572B - - - - Implementing and Managing Microsoft Exchange 2000 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/MSPress/70-016.chm - 8.7 - 0 - plain - - - - - Lib/InfoSyS/Cert.Docs/MSPress - - MCSD 70-016 - Desktop Applications with MSVC 6.0 - Desktop Applications with MSVC 6.0 - MCSD 70-016 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/MSPress/70-019.chm - 6.7 - 0 - plain - - - - - Lib/InfoSyS/Cert.Docs/MSPress - - MCSE 70-019 - SQL Server 7.0 Data Warehousing - SQL Server 7.0 Data Warehousing - MCSE 70-019 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/MSPress/70-028.chm - 4.8 - 0 - plain - - - - - Lib/InfoSyS/Cert.Docs/MSPress - - MCSE 70-028 - SQL Server 7.0 System Administration - SQL Server 7.0 System Administration - MCSE 70-028 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/MSPress/70-029.chm - 4.8 - 0 - plain - - - - - Lib/InfoSyS/Cert.Docs/MSPress - - MCSE 70-029 - SQL Server 7.0 Database Implementation - SQL Server 7.0 Database Implementation - MCSE 70-029 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/MSPress/70-076,081.chm - 22.2 - 0 - plain - - - - - Lib/InfoSyS/Cert.Docs/MSPress - - MCSE 70-076,081 - Exchange Server Training Kit - MCSE 70-076,081 - Exchange Server Training Kit - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/MSPress/70-086.chm - 8.9 - 0 - plain - - - - - Lib/InfoSyS/Cert.Docs/MSPress - - MCSE 70-086 - Microsoft Systems Managment Server 2.0 - Microsoft Systems Managment Server 2.0 - MCSE 70-086 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/MSPress/70-160,161.chm - 3.2 - 0 - plain - - - - - Lib/InfoSyS/Cert.Docs/MSPress - - MCSD 70-160,161 - Windows Architecture for Developers - MCSD 70-160,161 - Windows Architecture for Developers - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/MSPress/70-175.chm - 3.7 - 0 - plain - - - - - Lib/InfoSyS/Cert.Docs/MSPress - - MCSD 70-175 - Distributed Applications with VB 6.0 - Distributed Applications with VB 6.0 - MCSD 70-175 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/MSPress/70-176.chm - 2.4 - 0 - plain - - - - - Lib/InfoSyS/Cert.Docs/MSPress - - MCSD 70-176 - Desktop Applications with VB 6.0 - Desktop Applications with VB 6.0 - MCSD 70-176 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/MSPress/70-210.chm - 9.3 - 0 - plain - - - - - Lib/InfoSyS/Cert.Docs/MSPress - - MCSE 70-210 - W2K Active Directory Services - W2K Active Directory Services - MCSE 70-210 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/MSPress/70-210a.chm - 8.6 - 0 - plain - - - - - Lib/InfoSyS/Cert.Docs/MSPress - - MCSE 70-210 - W2K Professional - W2K Professional - MCSE 70-210 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/MSPress/70-210b.chm - 10.8 - 0 - plain - - - - - Lib/InfoSyS/Cert.Docs/MSPress - - MCSE 70-210 - W2K Server - W2K Server - MCSE 70-210 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/MSPress/70-216.chm - 6.7 - 0 - plain - - - - - Lib/InfoSyS/Cert.Docs/MSPress - - MCSE 70-216 - W2K Network Infrastructure - W2K Network Infrastructure - MCSE 70-216 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/MSPress/70-218.chm - 6.7 - 0 - plain - - - - - Lib/InfoSyS/Cert.Docs/MSPress - - MCSE 70-218 - W2K Network Infrastracture Administration - W2K Network Infrastracture Administration - MCSE 70-218 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/MSPress/70-270.chm - 8.4 - 0 - plain - - - - - Lib/InfoSyS/Cert.Docs/MSPress - - MCSE 70-270 - Microsoft Windows XP Professional - Microsoft Windows XP Professional - MCSE 70-270 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/MSPress/A+.chm - 6.8 - 0 - plain - - - - - Lib/InfoSyS/Cert.Docs/MSPress - - A+.chm - A+.chm - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Cert.Docs/Sun - 5.3 - - - - Misc on Sun Certification - Misc on Sun Certification - pdf - - - - Lib/InfoSyS/Cert.Docs/Sun/310-024.zip - 2 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Sun - - New Riders - Cary Jardin - Java 1.1 Certification Training Guide - - New Riders - - - - Cary Jardin - Jardin - Cary - - - Java 1.1 Certification Training Guide - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Sun/NFS.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Sun - - SunSoft - NFS Administration Guide - - - SunSoft - SunSoft - - - - NFS Administration Guide - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Sun/NIS.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Sun - - SunSoft - NIS+ and DNS Setup and Configuration Guide - - - SunSoft - SunSoft - - - - NIS+ and DNS Setup and Configuration Guide - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Sun/SA-389.zip - 2.8 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Sun - - SunSoft SA-389 - Solaris Operating Environment - TCP/IP Network Administration - - - Solaris Operating Environment - Environment - Solaris - - - TCP/IP Network Administration - SunSoft SA-389 - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Cert.Docs/Syngress - 0.1 - - - - Syngress - Syngress - pdf - - - - Lib/InfoSyS/Cert.Docs/Syngress/70-28.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Syngress - - MCSE 70-28 - SQL Server 7 Administration Study Guide (html) - SQL Server 7 Administration Study Guide - MCSE 70-28 - - - html - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Cert.Docs/TestKiller - 2.3 - - - - Test Killer - Test Killer - pdf - - - - Lib/InfoSyS/Cert.Docs/TestKiller/640-503.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/TestKiller - - Cisco(640-503) - Building Scalable Cisco Networks, 2nd Edition - Building Scalable Cisco Networks - 2 - Cisco(640-503) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/TestKiller/640-504.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/TestKiller - - Cisco(640-504) - Building Cisco Switched Networks, 2nd Edition - Building Cisco Switched Networks - 2 - Cisco(640-504) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/TestKiller/640-505.zip - 0.5 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/TestKiller - - Cisco(640-505) - Building Cisco Remote Access Networks - Building Cisco Remote Access Networks - Cisco(640-505) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/TestKiller/640-506.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/TestKiller - - Cisco(640-506) - Cisco Support Exam - Cisco Support Exam - Cisco(640-506) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/TestKiller/70-219.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/TestKiller - - MCSE(70-219) - Designing Win2k Directory Services Infrastructure, 2nd Edition - Designing Win2k Directory Services Infrastructure - 2 - MCSE(70-219) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/TestKiller/70-224.zip - 0.9 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/TestKiller - - MCSE(70-224) - Administering Exchange 2000 Server, 2nd Edition - Administering Exchange 2000 Server - 2 - MCSE(70-224) - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Cert.Docs/TestKing - 9 - - - - Test King - Test King - pdf - - - - Lib/InfoSyS/Cert.Docs/TestKing/070-028.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/TestKing - - MCSE 070-028 - Administering SQL Server 7.0 - Administering SQL Server 7.0 - MCSE 070-028 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/TestKing/070-100.zip - 0.4 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/TestKing - - MCSD 070-100 - Analyzing Requirements and Defining Solution Architecture - Analyzing Requirements and Defining Solution Architecture - MCSD 070-100 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/TestKing/070-175.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/TestKing - - MCSD 070-175 - Designing and Implementing Distributed Applications with VB 6 - Designing and Implementing Distributed Applications with VB 6 - MCSD 070-175 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/TestKing/070-176.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/TestKing - - MCSD 070-176 - Designing and Implementing Desktop Applications with VB6 - Designing and Implementing Desktop Applications with VB6 - MCSD 070-176 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/TestKing/070-224.zip - 2.9 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/TestKing - - MCSE 070-224 - Installing, Configuring, and Administering Exchange 2000 Server - Installing, Configuring, and Administering Exchange 2000 Server - MCSE 070-224 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/TestKing/070-229.zip - 0.8 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/TestKing - - MCSE 070-229 - Designing Database with MS SQL Server 2000 Enterprise Edition - Designing Database with MS SQL Server 2000 Enterprise Edition - MCSE 070-229 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/TestKing/070-270.zip - 0.9 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/TestKing - - MCSE 070-270 - MS Windows XP Professional - MS Windows XP Professional - MCSE 070-270 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/TestKing/1D0-410.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/TestKing - - Cicso 1D0-410 - CIW Foudations - CIW Foudations - Cicso 1D0-410 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/TestKing/640-503.zip - 1.6 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/TestKing - - Cisco 640-503 - Building Scalable Cisco Networks: Routing 2.0 - Building Scalable Cisco Networks: Routing 2.0 - Cisco 640-503 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/TestKing/MOUS.zip - 1 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/TestKing - - MOUS - Microsoft Excel 2000 Core - - - MOUS - MOUS - - - - Microsoft Excel 2000 Core - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Cert.Docs/Troytech - 6.5 - - - - Troytec - Troytec - pdf - - - - Lib/InfoSyS/Cert.Docs/Troytech/1Z0-001.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Troytech - - Oracle(1Z0-001) - Intruduction to Oracle SQL and PL/SQL - Intruduction to Oracle SQL and PL/SQL - Oracle(1Z0-001) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Troytech/1Z0-013.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Troytech - - Oracle(1Z0-013) - Database Administration - Database Administration - Oracle(1Z0-013) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Troytech/1Z0-016.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Troytech - - Oracle(1Z0-016) - Network Administration - Network Administration - Oracle(1Z0-016) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Troytech/220-102.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Troytech - - A+(220-102) - Certification Study Guide, 7th Edition - Certification Study Guide - 7 - A+(220-102) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Troytech/310-022,025.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Troytech - - SCJP(310-022,310-025) - Easy Java Cram Bible - Easy Java Cram Bible - SCJP(310-022,310-025) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Troytech/640-407.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Troytech - - CCNA(640-407) - CCNA Study Guide, 2nd Edition - CCNA Study Guide - 2 - CCNA(640-407) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Troytech/640-507.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Troytech - - CCNA(540-507) - CCNA 2.0, 4th Edition - CCNA 2.0 - 4 - CCNA(540-507) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Troytech/70-210.zip - 0.7 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Troytech - - MCSE(70-210) - Administering W2K Professional, 6th Edition - Administering W2K Professional - 6 - MCSE(70-210) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Troytech/70-215.zip - 1.2 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Troytech - - MCSE(70-215) - Administering Win2k Server, 4th Edition - Administering Win2k Server - 4 - MCSE(70-215) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Troytech/70-216.zip - 0.5 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Troytech - - MCSE(70-216) - Implementing Wind2k Network Infrastructure, 4th Edition - Implementing Wind2k Network Infrastructure - 4 - MCSE(70-216) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Troytech/70-217.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Troytech - - MCSE(70-217) - Implementing W2K Directory Service Infrastracture, 2nd Editon - Implementing W2K Directory Service Infrastracture, 2nd Editon - MCSE(70-217) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Troytech/70-219.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Troytech - - MCSE(70-219) - Designing W2K Directory Service Infrastracture - Designing W2K Directory Service Infrastracture - MCSE(70-219) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Troytech/70-220.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Troytech - - MCSE(70-220) - Designing W2K Network Security, 2nd Edition - Designing W2K Network Security - 2 - MCSE(70-220) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Troytech/70-221.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Troytech - - MCSE(70-221) - Designing Network Infrastracture with W2K - Designing Network Infrastracture with W2K - MCSE(70-221) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Troytech/70-240.zip - 1.2 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Troytech - - MCSE(70-240) - W2K Accelerated, 3rd Edition - W2K Accelerated - 3 - MCSE(70-240) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Troytech/70-28.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Troytech - - MCSE 70-28 - SQL Admin 7.0, 2nd Edition - SQL Admin 7.0 - 2 - MCSE 70-28 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Troytech/70-29.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Troytech - - MCSE 70-29 - SQL 7.0 Design and Implementation - SQL 7.0 Design and Implementation - MCSE 70-29 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Cert.Docs/Troytech/INetP.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Cert.Docs/Troytech - - I-Net+ Study Guide - I-Net+ Study Guide - - - pdf - 0 - 0 - - - - - - - - - - - - Lib/InfoSyS/db - 92.1 - - - - Database Documentation - Database Documentation - pdf - - - - Lib/InfoSyS/db/MSPress-RR-DRDS.chm - 6.2 - 0 - plain - - - - - Lib/InfoSyS/db - - MSPress - Rebecca Riordan - Designing Relational Database Systems (chm) - - MSPress - - - - Rebecca Riordan - Riordan - Rebecca - - - Designing Relational Database Systems - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/db/mssql - 39.9 - - - - Microsoft SQL Server - Microsoft SQL Server - pdf - - - - Lib/InfoSyS/db/mssql/MSPress-GM-PSQLS2KwXML.chm - 1.2 - 0 - plain - - - - - Lib/InfoSyS/db/mssql - - MSPress - Graeme Maalcolm - Programming SQL Server 2000 with XML (chm) - - MSPress - - - - Graeme Maalcolm - Maalcolm - Graeme - - - Programming SQL Server 2000 with XML - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/db/mssql/MSPress-RS-ISQLS7.chm - 3.7 - 0 - plain - - - - - Lib/InfoSyS/db/mssql - - MSPress - Ron Soukup - Inside MS SQL Server 7.0 (chm) - - MSPress - - - - Ron Soukup - Soukup - Ron - - - Inside MS SQL Server 7.0 - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/db/mssql/MSPress-SG-SQLS2000AC.chm - 30.7 - 0 - plain - - - - - Lib/InfoSyS/db/mssql - - MSPress - Marcilina Garica - SQL Server 2000 Administration Companion (chm) - - MSPress - - - - Marcilina Garica - Garica - Marcilina - - - SQL Server 2000 Administration Companion - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/db/mssql/Syngress-RP-DSQLS200DfNES.zip - 4.4 - 0 - zip - - - - - Lib/InfoSyS/db/mssql - - Syngress - Robert Patton - Designing SQL Server 2000 Databases - - Syngress - - - - Robert Patton - Patton - Robert - - - Designing SQL Server 2000 Databases - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/db/Oracle - 43.4 - - - - Oracle - Oracle - pdf - - - - Lib/InfoSyS/db/Oracle/MCP-EW-OPTaO.zip - 1.6 - 0 - zip - - - - - Lib/InfoSyS/db/Oracle - - MCP - Edward Whalen - Oracle Performance Tuning and Optimization (html) - - MCP - - - - Edward Whalen - Whalen - Edward - - - Oracle Performance Tuning and Optimization - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/db/Oracle/OReilly-DB-JPwOJDBC.zip - 1 - 0 - zip - - - - - Lib/InfoSyS/db/Oracle - - O'Reilly - Donald Bales - Java Programming with Oracle JDBC - - O'Reilly - - - - Donald Bales - Bales - Donald - - - Java Programming with Oracle JDBC - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/db/Oracle/QUE-JP-ODCK.zip - 1.5 - 0 - zip - - - - - Lib/InfoSyS/db/Oracle - - Que - John Palinski - Oracle Database Construction Kit (html) - - Que - - - - John Palinski - Palinski - John - - - Oracle Database Construction Kit - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/db/Oracle/Que-NH-SEUO8.zip - 1.4 - 0 - zip - - - - - Lib/InfoSyS/db/Oracle - - Que - Nathan Nughes - Special Edition Using Oracle8 - - Que - - - - Nathan Nughes - Nughes - Nathan - - - Special Edition Using Oracle8 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/db/Oracle/SAMS-AIS-O8SU.zip - 9.7 - 0 - zip - - - - - Lib/InfoSyS/db/Oracle - - SAMS - AIS - Oracle8 Server Unleashed (html) - - SAMS - - - - AIS - AIS - - - - Oracle8 Server Unleashed - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/db/Oracle/SAMS-DB-HPODA.zip - 5.3 - 0 - zip - - - - - Lib/InfoSyS/db/Oracle - - SAMS - Donald Burleson - High-Performance Oracle Database Applications (html) - - SAMS - - - - Donald Burleson - Burleson - Donald - - - High-Performance Oracle Database Applications - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/db/Oracle/SAMS-EW-TYO821D.zip - 6.8 - 0 - zip - - - - - Lib/InfoSyS/db/Oracle - - SAMS - Edward Whalen - Teach Yourself Oracle 8.0 in 21 Days (html) - - SAMS - - - - Edward Whalen - Whalen - Edward - - - Teach Yourself Oracle 8.0 in 21 Days - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/db/Oracle/SAMS-JI-HPODAU.zip - 1.3 - 0 - zip - - - - - Lib/InfoSyS/db/Oracle - - SAMS - Jonathan Ingram - High Perfomance Oracle Database Automation - - SAMS - - - - Jonathan Ingram - Ingram - Jonathan - - - High Perfomance Oracle Database Automation - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/db/Oracle/U--GA.zip - 0.5 - 0 - zip - - - - - Lib/InfoSyS/db/Oracle - - Руководство Администратора (txt) - Руководство Администратора - - - txt - 0 - 0 - - - - - - - - Lib/InfoSyS/db/Oracle/U--GKS.zip - 0.4 - 0 - zip - - - - - Lib/InfoSyS/db/Oracle - - Руководство по Концепциям Сервера (txt) - Руководство по Концепциям Сервера - - - txt - 0 - 0 - - - - - - - - Lib/InfoSyS/db/Oracle/U--GP.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/db/Oracle - - Руководство Разработчика Приложений (txt) - Руководство Разработчика Приложений - - - txt - 0 - 0 - - - - - - - - Lib/InfoSyS/db/Oracle/U--KSO7.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/db/Oracle - - Краткий справочник по Oracle7 (txt) - Краткий справочник по Oracle7 - - - txt - 0 - 0 - - - - - - - - Lib/InfoSyS/db/Oracle/U--O8iAEE.zip - 2.2 - 0 - zip - - - - - Lib/InfoSyS/db/Oracle - - Administration Oracle 8i Enterprise Edition - Administration Oracle 8i Enterprise Edition - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/db/Oracle/U--O8iPS.zip - 0.4 - 0 - zip - - - - - Lib/InfoSyS/db/Oracle - - Oracle8i Parallel Server - Oracle8i Parallel Server - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/db/Oracle/U--O8tCR.zip - 5.1 - 0 - zip - - - - - Lib/InfoSyS/db/Oracle - - Oracle 8 - The Complete Reference (exe) - The Complete Reference - Oracle 8 - - - exe - 0 - 0 - - - - - - - - Lib/InfoSyS/db/Oracle/WGP-EH-O8HT.zip - 4.8 - 0 - zip - - - - - Lib/InfoSyS/db/Oracle - - WGP - Edward Honour - Oracle8 How-To - - WGP - - - - Edward Honour - Honour - Edward - - - Oracle8 How-To - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/db/Oracle/sql - 1.2 - - - - SQL / PL SQL / SQL Plus - SQL / PL SQL / SQL Plus - pdf - - - - Lib/InfoSyS/db/Oracle/sql/U--SQLP.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/db/Oracle/sql - - SQL Plus Getting Started - SQL Plus Getting Started - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/db/Oracle/sql/U--UGPLSQL.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/db/Oracle/sql - - PL/SQL Руководство Пользователя и Справочник (txt) - PL/SQL Руководство Пользователя и Справочник - - - txt - 0 - 0 - - - - - - - - Lib/InfoSyS/db/Oracle/sql/U--UGSQL.zip - 0.4 - 0 - zip - - - - - Lib/InfoSyS/db/Oracle/sql - - SQL Руководство Пользователя и Справочник (txt) - SQL Руководство Пользователя и Справочник - - - txt - 0 - 0 - - - - - - - - Lib/InfoSyS/db/Oracle/sql/U--UGSQLP.zip - 0.4 - 0 - zip - - - - - Lib/InfoSyS/db/Oracle/sql - - SQL+ Руководство Пользователя и Справочник (txt) - SQL+ Руководство Пользователя и Справочник - - - txt - 0 - 0 - - - - - - - - - - - - Lib/InfoSyS/db/SysBase - 2.5 - - - - SysBase SQL Server - SysBase SQL Server - pdf - - - - Lib/InfoSyS/db/SysBase/Sybase--SSQLSAG.zip - 1.1 - 0 - zip - - - - - Lib/InfoSyS/db/SysBase - - Sysbase - - Sysbase SQL Server Administrator Guide - - Sysbase - - Sysbase SQL Server Administrator Guide - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/db/SysBase/Sybase-KP-SSQLSR11.zip - 1.3 - 0 - zip - - - - - Lib/InfoSyS/db/SysBase - - Sysbase - Karen Paulsell - Sysbase SQL Server Performance and Tuning Guide - - Sysbase - - - - Karen Paulsell - Paulsell - Karen - - - Sysbase SQL Server Performance and Tuning Guide - - - pdf - 0 - 0 - - - - - - - - - - - - Lib/InfoSyS/Design - 83.6 - - - - Software Design / Publishing / Design - Software Design / Publishing / Design - pdf - - - - Lib/InfoSyS/Design/Publishing - 17.4 - - - - Publishing Systems ( Tex / SGML / Postscript ) - Publishing Systems ( Tex / SGML / Postscript ) - pdf - - - - Lib/InfoSyS/Design/Publishing/ps - 0.4 - - - - PostScript - PostScript - pdf - - - - Lib/InfoSyS/Design/Publishing/ps/AW-GR-TiP.zip - 0.4 - 0 - zip - - - - - Lib/InfoSyS/Design/Publishing/ps - - AW - Glenn Reid - Thinking in PostScript - - AW - - - - Glenn Reid - Reid - Glenn - - - Thinking in PostScript - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Design/Publishing/sgml - 15.5 - - - - SGML docs - SGML docs - pdf - - - - Lib/InfoSyS/Design/Publishing/sgml/Que-MC-SEUSGML.zip - 15.5 - 0 - zip - - - - - Lib/InfoSyS/Design/Publishing/sgml - - Que - Martin Colby - Special Edition Using SGML (html) - - Que - - - - Martin Colby - Colby - Martin - - - Special Edition Using SGML - - - html - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Design/Publishing/TeX - 1.4 - - - - TeX / LaTeX / emTeX - TeX / LaTeX / emTeX - pdf - - - - Lib/InfoSyS/Design/Publishing/TeX/AW-DK-TheTeXBook.zip - 1.1 - 0 - zip - - - - - Lib/InfoSyS/Design/Publishing/TeX - - AW - Donald Knuth - The TeXBook (ps) - - AW - - - - Donald Knuth - Knuth - Donald - - - The TeXBook - - - ps - 0 - 0 - - - - - - - - Lib/InfoSyS/Design/Publishing/TeX/AW-MD-GITeX.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Design/Publishing/TeX - - AW - Michael Doob - A Gentle Intoduction to TeX - - AW - - - - Michael Doob - Doob - Michael - - - A Gentle Intoduction to TeX - - - pdf - 0 - 0 - - - - - - - - - - - - Lib/InfoSyS/Design/ui - 5.7 - - - - User Interface Design - User Interface Design - pdf - - - - Lib/InfoSyS/Design/ui/MSPress-EK-DUIfWA.chm - 3.7 - 0 - plain - - - - - Lib/InfoSyS/Design/ui - - MSPress - Everett McKay - Developing User Interfaces for Windows (chm) - - MSPress - - - - Everett McKay - McKay - Everett - - - Developing User Interfaces for Windows - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Design/ui/SIGS-SA-UIDTT.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Design/ui - - SIGS - Scot Ambler - User Interface Design: Tips and Techniques - - SIGS - - - - Scot Ambler - Ambler - Scot - - - User Interface Design: Tips and Techniques - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Design/ui/U-VG-DUI.zip - 2 - 0 - zip - - - - - Lib/InfoSyS/Design/ui - - Влад Головач - Дизайн Пользовательского Интерфейса v1.1 - - - Влад Головач - Головач - Влад - - - Дизайн Пользовательского Интерфейса v1.1 - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Design/www - 60.5 - - - - WWW Design - WWW Design - pdf - - - - Lib/InfoSyS/Design/www/Learnem-SS-WPDi7D.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Design/www - - Learnem - Siamak Sarmady - Web Page Design in 7 Days - - Learnem - - - - Siamak Sarmady - Sarmady - Siamak - - - Web Page Design in 7 Days - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Design/www/LG-SS-WD7D.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Design/www - - LG - Siamak Sarmady - Web Design in 7 Days - - LG - - - - Siamak Sarmady - Sarmady - Siamak - - - Web Design in 7 Days - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Design/www/PH--AoEP.zip - 2.7 - 0 - zip - - - - - Lib/InfoSyS/Design/www - - Prentice Hall - - Art of Electronic Publishing (html) - - Prentice Hall - - Art of Electronic Publishing - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Design/www/Que-MM-WMES.zip - 9.4 - 0 - zip - - - - - Lib/InfoSyS/Design/www - - Que - Michael Morgan - WebMaster Expert Solutions (html) - - Que - - - - Michael Morgan - Morgan - Michael - - - WebMaster Expert Solutions - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Design/www/Que-WS-WPPR.zip - 19 - 0 - zip - - - - - Lib/InfoSyS/Design/www - - Que - William Stanek - Web Publishing Professional Reference Edition - - Que - - - - William Stanek - Stanek - William - - - Web Publishing Professional Reference Edition - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Design/www/SAMS-BB-WPU.zip - 6.1 - 0 - zip - - - - - Lib/InfoSyS/Design/www - - SAMS - Bob Breedlove - Web Programming Unleashed (html) - - SAMS - - - - Bob Breedlove - Breedlove - Bob - - - Web Programming Unleashed - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Design/www/SAMS-LL-GtSWSD.zip - 13.6 - 0 - zip - - - - - Lib/InfoSyS/Design/www - - SAMS - Laura Lemay - Guide to Sizzling Web Site Design - - SAMS - - - - Laura Lemay - Lemay - Laura - - - Guide to Sizzling Web Site Design - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Design/www/SP--100DDiWB.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Design/www - - SpiderPro - 100 Do's and Dont's in Web Design - - - SpiderPro - SpiderPro - - - - 100 Do's and Dont's in Web Design - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Design/www/Syngress-BC-POWADG.zip - 4 - 0 - zip - - - - - Lib/InfoSyS/Design/www - - Syngress - Ben Combee - Palm OS Web Application Developers Guide - - Syngress - - - - Ben Combee - Combee - Ben - - - Palm OS Web Application Developers Guide - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Design/www/Syngress-RF-WGtWI.zip - 4.6 - 0 - zip - - - - - Lib/InfoSyS/Design/www - - Syngress - Ryan Fife - Webmasters Guide to the Wireless Internet - - Syngress - - - - Ryan Fife - Fife - Ryan - - - Webmasters Guide to the Wireless Internet - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Design/www/U--CCW.zip - 0.5 - 0 - zip - - - - - Lib/InfoSyS/Design/www - - Creating Commercial Web Sites - Creating Commercial Web Sites - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Design/www/U-MF-tIPH.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Design/www - - Mike Franks - The Internet Publishing Handbook (html) - - - Mike Franks - Franks - Mike - - - The Internet Publishing Handbook - - - html - 0 - 0 - - - - - - - - - - - - Lib/InfoSyS/Devices - 79.9 - - - - Hardware Devices - Hardware Devices - pdf - - - - Lib/InfoSyS/Devices/Syngress-DK-BADG.zip - 4.2 - 0 - zip - - - - - Lib/InfoSyS/Devices - - Syngress - David Kammer - Bloetooth Application Developer's Guide - - Syngress - - - - David Kammer - Kammer - David - - - Bloetooth Application Developer's Guide - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Devices/U--CGtCPWS.exe - 6.9 - 0 - plain - - - - - Lib/InfoSyS/Devices - - Consumers Guide to Cell Phones Wireless Service (exe) - Consumers Guide to Cell Phones Wireless Service - - - exe - 0 - 0 - - - - - - - - Lib/InfoSyS/Devices/U--YCMRG.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Devices - - Your Cable Modem Reference Guide - Your Cable Modem Reference Guide - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Devices/U-DC-CNaI3.zip - 23 - 0 - zip - - - - - Lib/InfoSyS/Devices - - Douglas Comer - Computer Networks and Internets, 3rd Edition - - - Douglas Comer - Comer - Douglas - - - Computer Networks and Internets - 3 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Devices/1999 - 45.6 - - - - All collected till 1999 - All collected till 1999 - pdf - - - - Lib/InfoSyS/Devices/1999/All - 0.3 - - - - Mixed Documentation - Mixed Documentation - pdf - - - - Lib/InfoSyS/Devices/1999/All/devices.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Devices/1999/All - - Writing Linux Device Drivers - Writing Linux Device Drivers - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Devices/1999/All/lkmpg.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Devices/1999/All - - Linux Kernel Module Programming Guide - Linux Kernel Module Programming Guide - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Devices/1999/All/msdos.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Devices/1999/All - - Programmer's Technical Reference for MSDOS and the IBM PC (txt) - Programmer's Technical Reference for MSDOS and the IBM PC - - - txt - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Devices/1999/Audio - 0.4 - - - - Audio Devices - Audio Devices - pdf - - - - Lib/InfoSyS/Devices/1999/Audio/faq.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Devices/1999/Audio - - Audio FAQs (txt) - Audio FAQs - - - txt - 0 - 0 - - - - - - - - Lib/InfoSyS/Devices/1999/Audio/Linux.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Devices/1999/Audio - - Linux Audio Programming (html) - Linux Audio Programming - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Devices/1999/Audio/sbprog.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Devices/1999/Audio - - Programming the AdLib/Sound Blaster (rus,txt) - Programming the AdLib/Sound Blaster (rus,txt) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Devices/1999/Audio/YMF754.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Devices/1999/Audio - - Yamaha 754 DataSheet - Yamaha 754 DataSheet - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Devices/1999/fdc - 0.3 - - - - Floppy / HDD / CD / DVD - Floppy / HDD / CD / DVD - pdf - - - - Lib/InfoSyS/Devices/1999/fdc/cd1999.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Devices/1999/fdc - - CD Docs till 1999 - CD Docs till 1999 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Devices/1999/fdc/fp.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Devices/1999/fdc - - Защита дискет от копирования - Защита дискет от копирования - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Devices/1999/fdc/hdd1999.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Devices/1999/fdc - - HDD docs till 1999 - HDD docs till 1999 - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Devices/1999/Modem - 0 - - - - Modem and related - Modem and related - pdf - - - - Lib/InfoSyS/Devices/1999/Modem/aon1999.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Devices/1999/Modem - - AON docs till 1999 - AON docs till 1999 - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Devices/1999/Other - 0 - - - - All Other - All Other - pdf - - - - Lib/InfoSyS/Devices/1999/Other/cables.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Devices/1999/Other - - Guide to Computer Cables - Guide to Computer Cables - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Devices/1999/Ports - 0 - - - - COM / LPT / USB / FireWire / Bluetooth - COM / LPT / USB / FireWire / Bluetooth - pdf - - - - Lib/InfoSyS/Devices/1999/Ports/mouse.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Devices/1999/Ports - - Мышь и как с ней бороться - Мышь и как с ней бороться - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Devices/1999/Ports/serial.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Devices/1999/Ports - - Работа с последовательными портами на IBM PC - Работа с последовательными портами на IBM PC - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Devices/1999/Ports/SerialPH.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Devices/1999/Ports - - Serial Programming HOWTO - Serial Programming HOWTO - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Devices/1999/Printers - 0 - - - - Printer / Scanner - Printer / Scanner - pdf - - - - Lib/InfoSyS/Devices/1999/Printers/pcl.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Devices/1999/Printers - - HP Laserjet 4P Printer Control Codes and Escape Sequences - PCL5 - - - HP Laserjet 4P Printer Control Codes and Escape Sequences - - - - - PCL5 - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Devices/1999/System - 43.8 - - - - CPU / Chipset / MB - CPU / Chipset / MB - pdf - - - - Lib/InfoSyS/Devices/1999/System/dma.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Devices/1999/System - - What is DMA! - What is DMA! - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Devices/1999/System/ioports.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Devices/1999/System - - Архитектура ввода/вывода персональных компьютеров - Архитектура ввода/вывода персональных компьютеров - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Devices/1999/System/cpu - 43.7 - - - - CPU - CPU - pdf - - - - Lib/InfoSyS/Devices/1999/System/cpu/cpu-x86.zip - 2.6 - 0 - zip - - - - - Lib/InfoSyS/Devices/1999/System/cpu - - CPU docs 8086 - Pentium (txt) - Pentium - CPU docs 8086 - - - txt - 0 - 0 - - - - - - - - Lib/InfoSyS/Devices/1999/System/cpu/sse.zip - 1.3 - 0 - zip - - - - - Lib/InfoSyS/Devices/1999/System/cpu - - Intel SSE Tutorial (html) - Intel SSE Tutorial - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Devices/1999/System/cpu/amd - 18.7 - - - - AMD DataSheets - AMD DataSheets - pdf - - - - Lib/InfoSyS/Devices/1999/System/cpu/amd/amd1999.zip - 9.5 - 0 - zip - - - - - Lib/InfoSyS/Devices/1999/System/cpu/amd - - K6 - K6 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Devices/1999/System/cpu/amd/amd2000.zip - 9.2 - 0 - zip - - - - - Lib/InfoSyS/Devices/1999/System/cpu/amd - - K7 - K7 - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Devices/1999/System/cpu/Intel - 21 - - - - Intel Data Sheets - Intel Data Sheets - pdf - - - - Lib/InfoSyS/Devices/1999/System/cpu/Intel/1999.zip - 21 - 0 - zip - - - - - Lib/InfoSyS/Devices/1999/System/cpu/Intel - - P1 - P1 - - - pdf - 0 - 0 - - - - - - - - - - - - Lib/InfoSyS/Devices/1999/System/Mem - 0.1 - - - - Memory - Memory - pdf - - - - Lib/InfoSyS/Devices/1999/System/Mem/linux_mem.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Devices/1999/System/Mem - - Linux Memory Managment (html) - Linux Memory Managment - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Devices/1999/System/Mem/xms.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Devices/1999/System/Mem - - XMS Memory - XMS Memory - - - pdf - 0 - 0 - - - - - - - - - - - - Lib/InfoSyS/Devices/1999/Video - 0.6 - - - - Video Adapters / Monitors - Video Adapters / Monitors - pdf - - - - Lib/InfoSyS/Devices/1999/Video/ega.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Devices/1999/Video - - EGA docs - EGA docs - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Devices/1999/Video/svga.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Devices/1999/Video - - SVGA docs - SVGA docs - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Devices/1999/Video/vga.zip - 0.5 - 0 - zip - - - - - Lib/InfoSyS/Devices/1999/Video - - VGA Docs - VGA Docs - - - pdf - 0 - 0 - - - - - - - - - - - - - - Lib/InfoSyS/Formats - 12.4 - - - - File Formats Documentation - File Formats Documentation - pdf - - - - Lib/InfoSyS/Formats/1999.zip - 3.5 - 0 - zip - - - - - Lib/InfoSyS/Formats - - All collected till 1999 - All collected till 1999 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Formats/MiscFormats.zip - 8.9 - 0 - zip - - - - - Lib/InfoSyS/Formats - - Description of multiple formats - Description of multiple formats - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Hacking - 7.4 - - - - Hacking / Cracking / Security - Hacking / Cracking / Security - pdf - - - - Lib/InfoSyS/Hacking/cracking1999.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Hacking - - All Cracking docs till 1999 - All Cracking docs till 1999 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Hacking/FAQs1999.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Hacking - - All hacking FAQs till 1999 - All hacking FAQs till 1999 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Hacking/lcme.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Hacking - - Обзор защит программного обеспечения под Linux - Обзор защит программного обеспечения под Linux - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Hacking/MS-PZ-AtI.zip - 0.4 - 0 - zip - - - - - Lib/InfoSyS/Hacking - - Мир и Семья - П. Зегжда - Атака через Интернет - - Мир и Семья - - - - П. Зегжда - Зегжда - П. - - - Атака через Интернет - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Hacking/Solon-KK-PaTHA.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Hacking - - Cолон - Крис Касперски - Философия и Техника хакерских атак - - Cолон - - - - Крис Касперски - Касперски - Крис - - - Философия и Техника хакерских атак - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Hacking/U--HfD2.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Hacking - - Hacking for Dummies, Volume 2 - Hacking for Dummies, Volume 2 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Hacking/U--IPS.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Hacking - - A short overview of IP spoofing (txt) - A short overview of IP spoofing - - - txt - 0 - 0 - - - - - - - - Lib/InfoSyS/Hacking/U--VXD.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Hacking - - Руководство по написанию простейшего VxD-эмулятора - Руководство по написанию простейшего VxD-эмулятора - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Hacking/U-BS-tHCD.zip - 0.6 - 0 - zip - - - - - Lib/InfoSyS/Hacking - - Bruce Strerling - The Hacker Crackdown - - - Bruce Strerling - Strerling - Bruce - - - The Hacker Crackdown - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Hacking/U-DF-AGtC.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Hacking - - Dan Farmer - Admins Guide To Cracking: Improving the Security of Your Site by Breaking Into it (txt) - - - Dan Farmer - Farmer - Dan - - - Admins Guide To Cracking: Improving the Security of Your Site by Breaking Into it - - - txt - 0 - 0 - - - - - - - - Lib/InfoSyS/Hacking/U-F-HtCCDP.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Hacking - - Fanatik - How to Crack CD Protections - - - Fanatik - Fanatik - - - - How to Crack CD Protections - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Hacking/U-HC-tHH.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Hacking - - Hugo Cornwall - The Hackers Handbook - - - Hugo Cornwall - Cornwall - Hugo - - - The Hackers Handbook - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Hacking/U-LL-SAAATCP.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Hacking - - Laurent Joncheray - Simple Active Attack Against TCP (txt) - - - Laurent Joncheray - Joncheray - Laurent - - - Simple Active Attack Against TCP - - - txt - 0 - 0 - - - - - - - - Lib/InfoSyS/Hacking/U-SL-HHCR.zip - 2.8 - 0 - zip - - - - - Lib/InfoSyS/Hacking - - Стивен Леви - Хакеры Герои Коммпьютерной Ревлюции - - - Стивен Леви - Леви - Стивен - - - Хакеры Герои Коммпьютерной Ревлюции - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Hacking/U-TBF-tMHDR.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Hacking - - TBF - The Modern Hackers Desk Reference - - - TBF - TBF - - - - The Modern Hackers Desk Reference - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Hacking/Web-HZ.zip - 2.5 - 0 - zip - - - - - Lib/InfoSyS/Hacking - - HackZone Articles - HackZone Articles - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Hardware - 29.6 - - - - Hardware - Hardware - pdf - - - - Lib/InfoSyS/Hardware/HW1999.zip - 25.3 - 0 - zip - - - - - Lib/InfoSyS/Hardware - - Hardware docs till 1999 - Hardware docs till 1999 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Hardware/Que--URPC.zip - 3.5 - 0 - zip - - - - - Lib/InfoSyS/Hardware - - Que - - Upgrading and Repairing PCs, 8th Edition - - Que - - Upgrading and Repairing PCs - 8 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Hardware/U--ABIOS451PC.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Hardware - - Award BIOS 4.51PG Post Codes and Error Messages - Award BIOS 4.51PG Post Codes and Error Messages - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Hardware/U-JO-tHW.zip - 0.7 - 0 - zip - - - - - Lib/InfoSyS/Hardware - - Joakim Ogren - The Hardware Book - - - Joakim Ogren - Ogren - Joakim - - - The Hardware Book - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Langs - 890 - - - - Programming Languages / Libraries / Etc Related - Programming Languages / Libraries / Etc Related - pdf - - - - Lib/InfoSyS/Langs/W3C-SVG.zip - 2.3 - 0 - zip - - - - - Lib/InfoSyS/Langs - - W3C - Scalable Vector Graphics 1.0 Specification - - - W3C - W3C - - - - Scalable Vector Graphics 1.0 Specification - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Asm - 2.2 - - - - Assembler the BEST ;) - Assembler the BEST ;) - pdf - - - - Lib/InfoSyS/Langs/Asm/U--AoA.zip - 1.8 - 0 - zip - - - - - Lib/InfoSyS/Langs/Asm - - The Art of Assembly Language - The Art of Assembly Language - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Asm/Old - 0.4 - - - - Old Docs - Old Docs - pdf - - - - Lib/InfoSyS/Langs/Asm/Old/U--2b.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Langs/Asm/Old - - Как создать TSR без PSP, Как скопировать защищенную дискету, Несколько слов о Видеоадаптарах - Как создать TSR без PSP, Как скопировать защищенную дискету, Несколько слов о Видеоадаптарах - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Asm/Old/U--ASMfDOS.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/Asm/Old - - Ассемблер для Доса (txt) - Ассемблер для Доса - - - txt - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Asm/Old/U--disasm.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Langs/Asm/Old - - Опыт дизассемблирования большой COM программы - Опыт дизассемблирования большой COM программы - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Asm/Old/U--IL.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Langs/Asm/Old - - Список комманд ассемблера (txt) - Список комманд ассемблера - - - txt - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Asm/Old/U--LAH.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Langs/Asm/Old - - Linux Assembly HOWTO (html) - Linux Assembly HOWTO - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Asm/Old/U--talks.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Langs/Asm/Old - - Talks.asm (rus,txt) - Talks.asm (rus,txt) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Asm/Old/U--tsr.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Langs/Asm/Old - - Еще раз о TSR без PSP - Еще раз о TSR без PSP - - - pdf - 0 - 0 - - - - - - - - - - - - Lib/InfoSyS/Langs/AvtiveX - 27.7 - - - - COM / DCOM / Corba / ActiveX - COM / DCOM / Corba / ActiveX - pdf - - - - Lib/InfoSyS/Langs/AvtiveX/MSPress-GE-ICOMPBS.chm - 6.3 - 0 - plain - - - - - Lib/InfoSyS/Langs/AvtiveX - - MSPress - Guy Eddon - Inside Com+ Base Services (chm) - - MSPress - - - - Guy Eddon - Eddon - Guy - - - Inside Com+ Base Services - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/AvtiveX/MSPress-MK-DCBA.chm - 5.5 - 0 - plain - - - - - Lib/InfoSyS/Langs/AvtiveX - - MSPress - Mary Kirtland - Designing Component-Based Applications (chm) - - MSPress - - - - Mary Kirtland - Kirtland - Mary - - - Designing Component-Based Applications - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/AvtiveX/MSPress-SS-DfSwDNA.chm - 10.3 - 0 - plain - - - - - Lib/InfoSyS/Langs/AvtiveX - - MSPress - Sten Soundblad - Designing for Scalability with Windows DNA (chm) - - MSPress - - - - Sten Soundblad - Soundblad - Sten - - - Designing for Scalability with Windows DNA - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/AvtiveX/QUE--ActiveX.zip - 2.6 - 0 - zip - - - - - Lib/InfoSyS/Langs/AvtiveX - - QUE - - Introducing to ActiveX (html) - - QUE - - Introducing to ActiveX - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/AvtiveX/SAMS-JR-TYC14D.zip - 1.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/AvtiveX - - SAMS - Jeremy Rosenberger - Teach YourSelf Corba in 14 days (html) - - SAMS - - - - Jeremy Rosenberger - Rosenberger - Jeremy - - - Teach YourSelf Corba in 14 days - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/AvtiveX/SAMS-SK-TYAX21D.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Langs/AvtiveX - - SAMS - Sanders Kaufman - Teach Yourself ActiveX in 21 Days - - SAMS - - - - Sanders Kaufman - Kaufman - Sanders - - - Teach Yourself ActiveX in 21 Days - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/AvtiveX/SAMS-WE-PActiveX.zip - 1.6 - 0 - zip - - - - - Lib/InfoSyS/Langs/AvtiveX - - SAMS - Warren Ernst - Presenting ActiveX (html) - - SAMS - - - - Warren Ernst - Ernst - Warren - - - Presenting ActiveX - - - html - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Langs/Basic - 40.9 - - - - Basic / Visual Basic / VBScript - Basic / Visual Basic / VBScript - pdf - - - - Lib/InfoSyS/Langs/Basic/Coriolis-SH-VB6BB.zip - 1.7 - 0 - zip - - - - - Lib/InfoSyS/Langs/Basic - - Coriolis - Steven Holzner - Visual Basic 6 Black Book (html) - - Coriolis - - - - Steven Holzner - Holzner - Steven - - - Visual Basic 6 Black Book - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Basic/MSPress-FB-PVB6.chm - 10.8 - 0 - plain - - - - - Lib/InfoSyS/Langs/Basic - - MSPress - Francesco Balena - Programming VB 6.0 (chm) - - MSPress - - - - Francesco Balena - Balena - Francesco - - - Programming VB 6.0 - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Basic/MSPress-JF-PSfVB.chm - 4.2 - 0 - plain - - - - - Lib/InfoSyS/Langs/Basic - - MSPress - James Foxall - Practical Standards for Visual Basic (chm) - - MSPress - - - - James Foxall - Foxall - James - - - Practical Standards for Visual Basic - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Basic/MSPress-PM-AVB62.chm - 4.1 - 0 - plain - - - - - Lib/InfoSyS/Langs/Basic - - MSPress - Peter Morris - Avanced VB 6, 2nd Edition (chm) - - MSPress - - - - Peter Morris - Morris - Peter - - - Avanced VB 6 - 2 - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Basic/MSPress-TP-PDACOMVB6.chm - 2.4 - 0 - plain - - - - - Lib/InfoSyS/Langs/Basic - - MSPress - Ted Pattlson - Programming Distributed Applications with COM and VB 6.0 (chm) - - MSPress - - - - Ted Pattlson - Pattlson - Ted - - - Programming Distributed Applications with COM and VB 6.0 - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Basic/MSPress-WS-VBDP.chm - 2.7 - 0 - plain - - - - - Lib/InfoSyS/Langs/Basic - - MSPress - William Stamatakis - Visual Basic Design Patterns (chm) - - MSPress - - - - William Stamatakis - Stamatakis - William - - - Visual Basic Design Patterns - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Basic/SAMS-GP-VBi12EL.zip - 2.2 - 0 - zip - - - - - Lib/InfoSyS/Langs/Basic - - SAMS - Greg Perry - Visual Basic in 12 Easy Lessons (html) - - SAMS - - - - Greg Perry - Perry - Greg - - - Visual Basic in 12 Easy Lessons - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Basic/SAMS-MA-TYDPwVB521D.zip - 0.5 - 0 - zip - - - - - Lib/InfoSyS/Langs/Basic - - SAMS - Mike Amundsen - Teach Yourself Database Programming with VB 5.0 in 21 Days, 2nd Edition (html) - - SAMS - - - - Mike Amundsen - Amundsen - Mike - - - Teach Yourself Database Programming with VB 5.0 in 21 Days - 2 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Basic/SAMS-RJ-DDGwVB4.zip - 10.8 - 0 - zip - - - - - Lib/InfoSyS/Langs/Basic - - SAMS - Roger Jennings - Database Developer's Guide with Visual Basic 4, 2nd Edition (html) - - SAMS - - - - Roger Jennings - Jennings - Roger - - - Database Developer's Guide with Visual Basic 4 - 2 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Basic/U-DA-DACVB5.zip - 1.3 - 0 - zip - - - - - Lib/InfoSyS/Langs/Basic - - Dan Appleman - Development ActiveX Components with VB 5 (html) - - - Dan Appleman - Appleman - Dan - - - Development ActiveX Components with VB 5 - - - html - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Langs/c - 292.4 - - - - C / C++ - C / C++ - pdf - - - - Lib/InfoSyS/Langs/c/29SP-PC-CSC.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - 29SP - Paul Conte - Common Sense C (Advice and Warnings for C and C++ Programmers) (html) - - 29SP - - - - Paul Conte - Conte - Paul - - - Common Sense C (Advice and Warnings for C and C++ Programmers) - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/3DLabs-OGLFD.zip - 1.2 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - 3D Labs - Open GL Future Directions - - - 3D Labs - Labs - 3D - - - Open GL Future Directions - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/AW--CPPT.zip - 1.5 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - Addison Wesley - - C++ Transparency - - Addison Wesley - - C++ Transparency - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/AW-BS-CPPPL-RUS-HTML.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - Бьярн Страустрап - Язык Программирования C++ (html) - - - Бьярн Страустрап - Страустрап - Бьярн - - - Язык Программирования C++ - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/AW-BS-CPPPL-RUS.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - Бьярн Страустрап - Язык Программирования C++ (txt) - - - Бьярн Страустрап - Страустрап - Бьярн - - - Язык Программирования C++ - - - txt - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/AW-BS-CPPPL.zip - 4 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - AW - Bjarne Stroustrup - The C++ Programming Language 3rd Edition - - AW - - - - Bjarne Stroustrup - Stroustrup - Bjarne - - - The C++ Programming Language 3rd Edition - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/AW-IP-CPPbD.zip - 2.9 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - AW - Ira Pohl - C++ By Dissection - - AW - - - - Ira Pohl - Pohl - Ira - - - C++ By Dissection - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/Borland--BCPPB5fWDG.zip - 6.6 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - Borland - Borland C++ Builder 5 for Windows Developer's Guide - - - Borland - Borland - - - - Borland C++ Builder 5 for Windows Developer's Guide - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/ICCE-FB-ItPiCP.zip - 0.4 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - ICCE - Frank Brokken - C++ Annotations Version 4.4.1d (html) - - ICCE - - - - Frank Brokken - Brokken - Frank - - - C++ Annotations Version 4.4.1d - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/IDG-CW-VCPP6fDQR.zip - 8.3 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - IDG - Charles Wright - Visual C++ 6 for Dummies Quick Reference - - IDG - - - - Charles Wright - Wright - Charles - - - Visual C++ 6 for Dummies Quick Reference - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/IDG-CW-VCPPfDQR.zip - 8.3 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - IDG - Charles Wright - Visual C++ 6 for Dummies Quick Reference - - IDG - - - - Charles Wright - Wright - Charles - - - Visual C++ 6 for Dummies Quick Reference - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/IDG-MP-W95SPS.zip - 3.6 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - IDG - Matt Pietrek - Windows95 System Programming Secrets - - IDG - - - - Matt Pietrek - Pietrek - Matt - - - Windows95 System Programming Secrets - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/ISO--IEECPPSpec.zip - 2.2 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - ISO/IEC 14882 (C++ ISO Specification) - ISO/IEC 14882 (C++ ISO Specification) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/MCP-FP-MFC4B.zip - 1.5 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - MCP - Fred Pandolfi - MFC 4 Bible (html) - - MCP - - - - Fred Pandolfi - Pandolfi - Fred - - - MFC 4 Bible - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/MSPress--LLfVCPP.chm - 1.2 - 0 - plain - - - - - Lib/InfoSyS/Langs/c - - MSPress - Languages and Libraries for VC++ (chm) - - - MSPress - MSPress - - - - Languages and Libraries for VC++ - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/MSPress--MFCT.chm - 3.5 - 0 - plain - - - - - Lib/InfoSyS/Langs/c - - MSPress - Microsoft Foundation Classes and Templates (chm) - - - MSPress - MSPress - - - - Microsoft Foundation Classes and Templates - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/MSPress-AJ-NPfMW.chm - 2.2 - 0 - plain - - - - - Lib/InfoSyS/Langs/c - - MSPress - Anthony Jones - Networking Programming for MS Windows (chm) - - MSPress - - - - Anthony Jones - Jones - Anthony - - - Networking Programming for MS Windows - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/MSPress-AJ-NPfW.chm - 2.2 - 0 - plain - - - - - Lib/InfoSyS/Langs/c - - MSPress - Anthony Jones - Network Programming for Windows (chm) - - MSPress - - - - Anthony Jones - Jones - Anthony - - - Network Programming for Windows - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/MSPress-JP-PWwMFC.zip - 8.4 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - MSPress - Jeff Prosise - Programming Windows with MFC, 2nd Edition (chm) - - MSPress - - - - Jeff Prosise - Prosise - Jeff - - - Programming Windows with MFC - 2 - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/MSPress-KG-iVCPP5.chm - 7.3 - 0 - plain - - - - - Lib/InfoSyS/Langs/c - - MSPress - David Kruglinski - Programming MSVC++ Fifth Edition (chm) - - MSPress - - - - David Kruglinski - Kruglinski - David - - - Programming MSVC++ Fifth Edition - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/NP--LMSTSUVCPP.zip - 6 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - NP - - Learn Microsoft Transaction Server Development Using Visual C++ 6.0 (doc) - - NP - - Learn Microsoft Transaction Server Development Using Visual C++ 6.0 - - - doc - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/Osborne-CP-tCRVC6.chm - 3.6 - 0 - plain - - - - - Lib/InfoSyS/Langs/c - - Osborne - Chris Pappas - The Complete Reference Visual C++ 6 (chm) - - Osborne - - - - Chris Pappas - Pappas - Chris - - - The Complete Reference Visual C++ 6 - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/PH-BE-TCPP.zip - 1.6 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - PH - Bruce Eckel - Thinking in C++ 2nd Edition (html) - - PH - - - - Bruce Eckel - Eckel - Bruce - - - Thinking in C++ 2nd Edition - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/QUE--BPMFC.zip - 9.9 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - QUE - - Basic Programming with MFC (html) - - QUE - - Basic Programming with MFC - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/QUE--CPPbE.zip - 3.6 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - QUE - - C++ By Example - - QUE - - C++ By Example - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/QUE--PwMFC.zip - 10 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - QUE - - Programming with MFC (html) - - QUE - - Programming with MFC - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/QUE--UVCPP5.zip - 11.7 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - QUE - - Using Visual C++ 5 (html) - - QUE - - Using Visual C++ 5 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/Que-DK-tANSICPPPPH.zip - 2.6 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - Que - Danny Kaler - The ANSI/ISO C++ Professional Programmers Handbook - - Que - - - - Danny Kaler - Kaler - Danny - - - The ANSI/ISO C++ Professional Programmers Handbook - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/QUE-KG-UVC6.zip - 10.2 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - QUE - Kate Gregory - Special Edition Using Visual C++ 6 (html) - - QUE - - - - Kate Gregory - Gregory - Kate - - - Special Edition Using Visual C++ 6 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/SAMS-CC-BCBU.zip - 0.8 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - SAMS - Charlie Calvert - Borland C Builder Unleashed (html) - - SAMS - - - - Charlie Calvert - Calvert - Charlie - - - Borland C Builder Unleashed - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/SAMS-CR-TYBCB14.zip - 3.5 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - SAMS - Kent Reisdorph - Teach Yourself Borland C++ Builder in 14 Days - - SAMS - - - - Kent Reisdorph - Reisdorph - Kent - - - Teach Yourself Borland C++ Builder in 14 Days - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/SAMS-DC-TYVCPP6i21D.zip - 4.4 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - SAMS - Davis Chapman - Teach Yourself Visual C++ 6 in 21 Days (html) - - SAMS - - - - Davis Chapman - Chapman - Davis - - - Teach Yourself Visual C++ 6 in 21 Days - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/SAMS-GP-VCPPi12EL.zip - 0.9 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - SAMS - Greg Perry - Visual C++ in 12 Easy Lessons (html) - - SAMS - - - - Greg Perry - Perry - Greg - - - Visual C++ in 12 Easy Lessons - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/SAMS-GW-TYCPP21D.zip - 0.7 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - SAMS - Greg Wiegand - Teach Yourself C++ in 21 Days 2nd Edition (html) - - SAMS - - - - Greg Wiegand - Wiegand - Greg - - - Teach Yourself C++ in 21 Days 2nd Edition - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/SAMS-JL-CPPU.zip - 3.5 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - SAMS - Jesse Libety - C++ Unleashed - - SAMS - - - - Jesse Libety - Libety - Jesse - - - C++ Unleashed - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/SAMS-KW-LPU.zip - 5.4 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - SAMS - Kurt Wall - Linux Programming Unleashed - - SAMS - - - - Kurt Wall - Wall - Kurt - - - Linux Programming Unleashed - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/SAMS-MT-TYDPwVCPP6i21D.zip - 2.8 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - SAMS - Megh Thakkar - Teach Yourself Database Programming with VCPP6 in 21 Days (html) - - SAMS - - - - Megh Thakkar - Thakkar - Megh - - - Teach Yourself Database Programming with VCPP6 in 21 Days - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/SAMS-RD-TYDX724D.zip - 5.3 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - SAMS - Robert Dunlop - Teach Yourself DirectX 7 in 24 Hours - - SAMS - - - - Robert Dunlop - Dunlop - Robert - - - Teach Yourself DirectX 7 in 24 Hours - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/SAMS-VT-VCPP4U.zip - 3.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - SAMS - Viktor Toth - Visual C++ 4.0 Unleashed (html) - - SAMS - - - - Viktor Toth - Toth - Viktor - - - Visual C++ 4.0 Unleashed - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/U--BGNP.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - Beej's Guide To Network Programming (html) - Beej's Guide To Network Programming - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/U--CPPLT.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - C++ Language Tutorial (html) - C++ Language Tutorial - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/U--FAQ.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - Frequently-Asked-Questions for comp.lang.c++ (txt) - Frequently-Asked-Questions for comp.lang.c++ - - - txt - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/U--ISOHB.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - ANSI/ISO C++ Professional Programmer's Handbook (html) - ANSI/ISO C++ Professional Programmer's Handbook - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/U--WinApi.zip - 8.2 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - Microsoft Win32 Programmer References - Microsoft Win32 Programmer References - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/U-C-CPPT.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - Clayman - C++ Tutorial v. 1.1 (txt) - - - Clayman - Clayman - - - - C++ Tutorial v. 1.1 - - - txt - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/U-GD-CPPLT.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - Gordon Dodrill - C++ Language Tutorial v. 2.61 (html) - - - Gordon Dodrill - Dodrill - Gordon - - - C++ Language Tutorial v. 2.61 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/U-GS-CfPP.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - Герберт Шилдт - С для профессиональных программистов (txt) - - - Герберт Шилдт - Шилдт - Герберт - - - С для профессиональных программистов - - - txt - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/U-HD-HPCPP.zip - 114.2 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - Харви Дейтел - Как программировать на С++ - - - Харви Дейтел - Дейтел - Харви - - - Как программировать на С++ - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/U-KR-C.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - Керниган и Ритчи - Язык С (txt) - - - Керниган и Ритчи - Ритчи - Керниган - - - Язык С - - - txt - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/U-NZ-UW3.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - Н. Зыбков - Недокументированные Возможности Windows 3.x (doc) - - - Н. Зыбков - Зыбков - Н. - - - Недокументированные Возможности Windows 3.x - - - doc - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/U-PI-CPPOST.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - Pete Isensee - C++ Optimization Strategies and Techniques (html) - - - Pete Isensee - Isensee - Pete - - - C++ Optimization Strategies and Techniques - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/U-RL-CPPC.zip - 2 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - Robert Lafore - C++ course (html) - - - Robert Lafore - Lafore - Robert - - - C++ course - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/U-SL-CfB.zip - 0.8 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - Стен Липман - С++ для начинающих (doc) - - - Стен Липман - Липман - Стен - - - С++ для начинающих - - - doc - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/U-SM-ECMEC.zip - 8.5 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - Scott Meyers - Effective C++ CD: Effictive C++ 2nd Edition, More Effective C++ (html) - - - Scott Meyers - Meyers - Scott - - - Effective C++ CD: Effictive C++ 2nd Edition, More Effective C++ - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/U-UG-PoC.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - Ю. Громов - Программирование на языке Си (html) - - - Ю. Громов - Громов - Ю. - - - Программирование на языке Си - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/U-ZDU-ItCP.zip - 0.5 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - ZDU Student Manual - Introduction to C Programming - - - ZDU Student Manual - Manual - ZDU - - - Introduction to C Programming - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/c/WP-DS-DICWWW.zip - 1.4 - 0 - zip - - - - - Lib/InfoSyS/Langs/c - - WP - David Schwaderer - Digital Imaging in C and the World Wide Web (html) - - WP - - - - David Schwaderer - Schwaderer - David - - - Digital Imaging in C and the World Wide Web - - - html - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Langs/dot.net - 58.3 - - - - Microsoft .NET - Microsoft .NET - pdf - - - - Lib/InfoSyS/Langs/dot.net/OReilly-TT-NETFE.zip - 1 - 0 - zip - - - - - Lib/InfoSyS/Langs/dot.net - - O'Reilly - Thuan Thai - .NET Framework Essentials - - O'Reilly - - - - Thuan Thai - Thai - Thuan - - - .NET Framework Essentials - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/dot.net/SAMS-DB-NETeBA.zip - 11.5 - 0 - zip - - - - - Lib/InfoSyS/Langs/dot.net - - Sams - Don Benage - .NET e-Business Architecture (doc) - - Sams - - - - Don Benage - Benage - Don - - - .NET e-Business Architecture - - - doc - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/dot.net/Syngress-AS-XMLNETDG.zip - 5.8 - 0 - zip - - - - - Lib/InfoSyS/Langs/dot.net - - Syngress - Adam Sills - XML.NET Developer's Guide - - Syngress - - - - Adam Sills - Sills - Adam - - - XML.NET Developer's Guide - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/dot.net/Syngress-MA-ASPNETWDG.zip - 5.8 - 0 - zip - - - - - Lib/InfoSyS/Langs/dot.net - - Syngress - Mesbah Ahmed - ASP.NET Web Developers Guide - - Syngress - - - - Mesbah Ahmed - Ahmed - Mesbah - - - ASP.NET Web Developers Guide - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/dot.net/Syngress-RS-BTS2000DGNET.zip - 6 - 0 - zip - - - - - Lib/InfoSyS/Langs/dot.net - - Syngress - Robert Shimonski - BizTalk Server 2000 Developer's Guide for .NET - - Syngress - - - - Robert Shimonski - Shimonski - Robert - - - BizTalk Server 2000 Developer's Guide for .NET - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/dot.net/Syngress-SM-NETMWDG.zip - 4.8 - 0 - zip - - - - - Lib/InfoSyS/Langs/dot.net - - Syngress - Steve Milroy - .NET Mobile Web Developers Guide - - Syngress - - - - Steve Milroy - Milroy - Steve - - - .NET Mobile Web Developers Guide - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/dot.net/CSharp - 9.8 - - - - C Sharp - C Sharp - pdf - - - - Lib/InfoSyS/Langs/dot.net/CSharp/APress-EG-PITCS.zip - 0.9 - 0 - zip - - - - - Lib/InfoSyS/Langs/dot.net/CSharp - - APress - Eric Gunnerson - A programmers introduction to C# - - APress - - - - Eric Gunnerson - Gunnerson - Eric - - - A programmers introduction to C# - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/dot.net/CSharp/MSPress-AH-CLR.chm - 0.8 - 0 - plain - - - - - Lib/InfoSyS/Langs/dot.net/CSharp - - MSPress - Anders Heijlsberg - C# Language References (chm) - - MSPress - - - - Anders Heijlsberg - Heijlsberg - Anders - - - C# Language References - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/dot.net/CSharp/OReilly-JL-CP.zip - 2.2 - 0 - zip - - - - - Lib/InfoSyS/Langs/dot.net/CSharp - - O'Reilly - Jesse Liberty - C# Programming - - O'Reilly - - - - Jesse Liberty - Liberty - Jesse - - - C# Programming - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/dot.net/CSharp/Syngres-AT-CSNWDG.zip - 5.8 - 0 - zip - - - - - Lib/InfoSyS/Langs/dot.net/CSharp - - Syngress - Adrian Turtschi - C# .NET Web Developers Guide - - Syngress - - - - Adrian Turtschi - Turtschi - Adrian - - - C# .NET Web Developers Guide - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Langs/dot.net/vb - 13.6 - - - - Visual Basic - Visual Basic - pdf - - - - Lib/InfoSyS/Langs/dot.net/vb/MSPress-ER-UVB6VBNET.chm - 4.8 - 0 - plain - - - - - Lib/InfoSyS/Langs/dot.net/vb - - MSPress - Ed Robinson - Upgrading VB 6.0 to VB.NET (chm) - - MSPress - - - - Ed Robinson - Robinson - Ed - - - Upgrading VB 6.0 to VB.NET - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/dot.net/vb/OReilly-DG-VBNET.zip - 1.9 - 0 - zip - - - - - Lib/InfoSyS/Langs/dot.net/vb - - O'Reilly - Dave Grundgeiger - Visual Basic .NET - - O'Reilly - - - - Dave Grundgeiger - Grundgeiger - Dave - - - Visual Basic .NET - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/dot.net/vb/OReilly-SR-VBNETLN.zip - 1.5 - 0 - zip - - - - - Lib/InfoSyS/Langs/dot.net/vb - - O'Reilly - Steven Roman - VB.NET Language in a NutShell - - O'Reilly - - - - Steven Roman - Roman - Steven - - - VB.NET Language in a NutShell - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/dot.net/vb/Syngress-CW-VBNETDG.zip - 5.4 - 0 - zip - - - - - Lib/InfoSyS/Langs/dot.net/vb - - Syngress - Cameron Wakefield - VB.NET Developer's Guide - - Syngress - - - - Cameron Wakefield - Wakefield - Cameron - - - VB.NET Developer's Guide - - - pdf - 0 - 0 - - - - - - - - - - - - Lib/InfoSyS/Langs/Other - 61.8 - - - - All Other Lang Docs - All Other Lang Docs - pdf - - - - Lib/InfoSyS/Langs/Other/HP-TR-ESS.zip - 3.5 - 0 - zip - - - - - Lib/InfoSyS/Langs/Other - - HP - Ted Roche - Essential SourceSafe - - HP - - - - Ted Roche - Roche - Ted - - - Essential SourceSafe - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Other/MS_Press-Programming_ADO.chm - 1.5 - 0 - plain - - - - - Lib/InfoSyS/Langs/Other - - MSPress - David Sceppa - Programming ADO (chm) - - MSPress - - - - David Sceppa - Sceppa - David - - - Programming ADO - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Other/MSPress-GB-WSH2DG.chm - 4.1 - 0 - plain - - - - - Lib/InfoSyS/Langs/Other - - MSPress - Gunter Born - Windows Script Host 2.0 Developers Guide (chm) - - MSPress - - - - Gunter Born - Born - Gunter - - - Windows Script Host 2.0 Developers Guide - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Other/Syngress-RF-RDG.zip - 5.3 - 0 - zip - - - - - Lib/InfoSyS/Langs/Other - - Syngress - Robert Feldt - Ruby Developer's Guide - - Syngress - - - - Robert Feldt - Feldt - Robert - - - Ruby Developer's Guide - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Other/U--ADR.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Langs/Other - - ADA Developer References (doc) - ADA Developer References - - - doc - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Other/U--aItSaiI.zip - 0.4 - 0 - zip - - - - - Lib/InfoSyS/Langs/Other - - An Introduction to Scheme and its Implementation - An Introduction to Scheme and its Implementation - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Other/FoxPro - 46.8 - - - - FoxPro - FoxPro - pdf - - - - Lib/InfoSyS/Langs/Other/FoxPro/HP-CU-CSAwVFP6.zip - 4.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/Other/FoxPro - - HP - Chuck Urwiler - Client/Server Applications with Visual FoxPro and SQL Server - - HP - - - - Chuck Urwiler - Urwiler - Chuck - - - Client/Server Applications with Visual FoxPro and SQL Server - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Other/FoxPro/HP-MA-1001TYWtKAVF6.zip - 5.6 - 0 - zip - - - - - Lib/InfoSyS/Langs/Other/FoxPro - - HP - Marcia Akins - 1001 Things You Wanted to Know About Visual FoxPro - - HP - - - - Marcia Akins - Akins - Marcia - - - 1001 Things You Wanted to Know About Visual FoxPro - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Other/FoxPro/HP-ME-FOOPwVFP6.zip - 5.6 - 0 - zip - - - - - Lib/InfoSyS/Langs/Other/FoxPro - - HP - Markus Egger - Advanced OOP with Visual FoxPro 6.0 - - HP - - - - Markus Egger - Egger - Markus - - - Advanced OOP with Visual FoxPro 6.0 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Other/FoxPro/HP-RS-IAwVFP6.zip - 6.7 - 0 - zip - - - - - Lib/InfoSyS/Langs/Other/FoxPro - - HP - Rick Strahl - Internet Applications with Visual FoxPro 6.0 - - HP - - - - Rick Strahl - Strahl - Rick - - - Internet Applications with Visual FoxPro 6.0 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Other/FoxPro/HP-SS-ETADVFP.zip - 2.5 - 0 - zip - - - - - Lib/InfoSyS/Langs/Other/FoxPro - - HP - Steve Sawyer - Effictive Techniques Application Development with Visual FoxPro 6.0 (chm) - - HP - - - - Steve Sawyer - Sawyer - Steve - - - Effictive Techniques Application Development with Visual FoxPro 6.0 - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Other/FoxPro/HP-TG-HGtVFP6.zip - 6.5 - 0 - zip - - - - - Lib/InfoSyS/Langs/Other/FoxPro - - HP - Tamar Granor - Hacker's Guide to Visual FoxPro 6.0 - - HP - - - - Tamar Granor - Granor - Tamar - - - Hacker's Guide to Visual FoxPro 6.0 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Other/FoxPro/HP-TG-MOAwVF6.zip - 6.4 - 0 - zip - - - - - Lib/InfoSyS/Langs/Other/FoxPro - - HP - Tamar Granor - Microsoft Office Automation with Visual FoxPro - - HP - - - - Tamar Granor - Granor - Tamar - - - Microsoft Office Automation with Visual FoxPro - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Other/FoxPro/HP-WH-TFBVPA.zip - 9.4 - 0 - zip - - - - - Lib/InfoSyS/Langs/Other/FoxPro - - HP - Whil Hentzen - The Fundamentals: Building Visual Studio Applications on a Visual FoxPro 6.0 Foundation - - HP - - - - Whil Hentzen - Hentzen - Whil - - - The Fundamentals: Building Visual Studio Applications on a Visual FoxPro 6.0 Foundation - - - pdf - 0 - 0 - - - - - - - - - - - - Lib/InfoSyS/Langs/Pascal - 57.5 - - - - Pascal / Delphi / Kylix - Pascal / Delphi / Kylix - pdf - - - - Lib/InfoSyS/Langs/Pascal/Borland--KSV.zip - 17.5 - 0 - zip - - - - - Lib/InfoSyS/Langs/Pascal - - Kylix - Sample Volume (exe) - - - Kylix - Kylix - - - - Sample Volume - - - exe - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Pascal/IK-JA-DGGPDX7.zip - 5.5 - 0 - zip - - - - - Lib/InfoSyS/Langs/Pascal - - itKnowledge - John Ayres - Delphi Graphics and Game Programming Exposed with DirectX 7.0 - - itKnowledge - - - - John Ayres - Ayres - John - - - Delphi Graphics and Game Programming Exposed with DirectX 7.0 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Pascal/MW--CWPPP.zip - 0.8 - 0 - zip - - - - - Lib/InfoSyS/Langs/Pascal - - Metrowerks - Codewarrior Programming Practice: Pascal - - - Metrowerks - Metrowerks - - - - Codewarrior Programming Practice: Pascal - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Pascal/SAMS-CC-KDG.zip - 8.5 - 0 - zip - - - - - Lib/InfoSyS/Langs/Pascal - - SAMS - Charles Calvert - Kylix Developer's Guide - - SAMS - - - - Charles Calvert - Calvert - Charles - - - Kylix Developer's Guide - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Pascal/SAMS-KR-TYD4i21D.zip - 0.6 - 0 - zip - - - - - Lib/InfoSyS/Langs/Pascal - - SAMS - Kent Reisdorph - Teach Yourself Delphi 4 in 21 Days (html) - - SAMS - - - - Kent Reisdorph - Reisdorph - Kent - - - Teach Yourself Delphi 4 in 21 Days - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Pascal/SAMS-ST-BD6DG.zip - 7.6 - 0 - zip - - - - - Lib/InfoSyS/Langs/Pascal - - SAMS - Steve Teixeira - Borland Delphi 6 Developer's Guide - - SAMS - - - - Steve Teixeira - Teixeira - Steve - - - Borland Delphi 6 Developer's Guide - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Pascal/Sybex-MC-MD6.zip - 7.6 - 0 - zip - - - - - Lib/InfoSyS/Langs/Pascal - - Sybex - Marco Cantu - Mastering Delphi 6 - - Sybex - - - - Marco Cantu - Cantu - Marco - - - Mastering Delphi 6 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Pascal/U--D4.zip - 3 - 0 - zip - - - - - Lib/InfoSyS/Langs/Pascal - - Учебник по Delphi4 (html) - Учебник по Delphi4 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Pascal/U--ICBD6.exe - 6.3 - 0 - plain - - - - - Lib/InfoSyS/Langs/Pascal - - Интерактивный Курс Borland Delphi 6 (exe) - Интерактивный Курс Borland Delphi 6 - - - exe - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Langs/Perl - 10.2 - - - - Perl - Perl - pdf - - - - Lib/InfoSyS/Langs/Perl/MCP-JH-PP5CWP.zip - 0.8 - 0 - zip - - - - - Lib/InfoSyS/Langs/Perl - - MCP - Jonathan Hagey - Programming Perl 5.0 CGI Web Pages for Microsoft Windows NT (html) - - MCP - - - - Jonathan Hagey - Hagey - Jonathan - - - Programming Perl 5.0 CGI Web Pages for Microsoft Windows NT - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Perl/MP-DC-DMwP.zip - 1.3 - 0 - zip - - - - - Lib/InfoSyS/Langs/Perl - - Manning Publications - David Cross - Data Munging with Perl - - Manning Publications - - - - David Cross - Cross - David - - - Data Munging with Perl - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Perl/MP-RS-OOP.zip - 2.8 - 0 - zip - - - - - Lib/InfoSyS/Langs/Perl - - Manning Publications - Randal Schwartz - Object Oriented Perl - - Manning Publications - - - - Randal Schwartz - Schwartz - Randal - - - Object Oriented Perl - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Perl/OReilly-BHV-RS-SP.zip - 1.2 - 0 - zip - - - - - Lib/InfoSyS/Langs/Perl - - OReilly - BHV - Рэндал Шварц - Изучаем Perl (RTF) - - OReilly - - - - BHV - BHV - - - - Рэндал Шварц - Изучаем Perl (RTF) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Perl/Que-DM-P5bE.zip - 0.4 - 0 - zip - - - - - Lib/InfoSyS/Langs/Perl - - Que - David Medinets - Perl 5 by Example (html) - - Que - - - - David Medinets - Medinets - David - - - Perl 5 by Example - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Perl/Que-PD-SEUPfWD.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Langs/Perl - - Que - Paul Doyle - Special Edition, Using Perl for Web Programming (html) - - Que - - - - Paul Doyle - Doyle - Paul - - - Special Edition, Using Perl for Web Programming - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Perl/SAMS--TYP521D.zip - 0.4 - 0 - zip - - - - - Lib/InfoSyS/Langs/Perl - - SAMS - - Teach Yourself PERL 5 in 21 Days - - SAMS - - Teach Yourself PERL 5 in 21 Days - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Perl/SAMS-EH-TYCGIPwP.zip - 1.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/Perl - - SAMS - Eric Herrmann - Teach Yourself CGI Programming with Perl in a Week (html) - - SAMS - - - - Eric Herrmann - Herrmann - Eric - - - Teach Yourself CGI Programming with Perl in a Week - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Perl/SAMS-KH-P5U.zip - 0.9 - 0 - zip - - - - - Lib/InfoSyS/Langs/Perl - - SAMS - Kamran Husain - Perl 5 Unleashed (html) - - SAMS - - - - Kamran Husain - Husain - Kamran - - - Perl 5 Unleashed - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Perl/U--perltut.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Langs/Perl - - Tom's object-oriented tutorial for perl (html) - Tom's object-oriented tutorial for perl - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Perl/U--PF.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/Perl - - Perl FAQ (html) - Perl FAQ - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Perl/U--PT.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Langs/Perl - - Perl Tutorial (txt) - Perl Tutorial - - - txt - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Perl/U--RPT.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/Perl - - Robert's Perl Tutorial v. 4.1.1 (html) - Robert's Perl Tutorial v. 4.1.1 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Perl/U-JL-NPwP.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/Perl - - James Lee - Network Programming with Perl - - - James Lee - Lee - James - - - Network Programming with Perl - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Perl/U-RS-SP.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Langs/Perl - - Рэндал Шварц - Изучаем Perl (html) - - - Рэндал Шварц - Шварц - Рэндал - - - Изучаем Perl - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Perl/U-SB-GSwMP.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Langs/Perl - - Stas Bekman - Getting Started with mod_perl - - - Stas Bekman - Bekman - Stas - - - Getting Started with mod_perl - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/Perl/U-WM-APT.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/Perl - - Will Morese - A Perl Tutorial (html) - - - Will Morese - Morese - Will - - - A Perl Tutorial - - - html - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Langs/RegExp - 2 - - - - Regular Expressions - Regular Expressions - pdf - - - - Lib/InfoSyS/Langs/RegExp/OReilly-JF-MRE.zip - 2 - 0 - zip - - - - - Lib/InfoSyS/Langs/RegExp - - O'Reilly - Jeffrey Freidl - Mastering Regular Expressions - - O'Reilly - - - - Jeffrey Freidl - Freidl - Jeffrey - - - Mastering Regular Expressions - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Langs/sh - 0 - - - - Unix sh / bash / csh - Unix sh / bash / csh - pdf - - - - Lib/InfoSyS/Langs/sh/U--HtWSS.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Langs/sh - - How to write shell script - How to write shell script - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/sh/U__POS.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Langs/sh - - Программирование на Shell (txt) - Программирование на Shell - - - txt - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Langs/sql - 1.7 - - - - SQL Language - SQL Language - pdf - - - - Lib/InfoSyS/Langs/sql/SAMS-RS-TYSQLi21D.zip - 1.7 - 0 - zip - - - - - Lib/InfoSyS/Langs/sql - - SAMS - Ryan Stephens - Teach Yourself SQL in 21 day, 2nd Edition (html) - - SAMS - - - - Ryan Stephens - Stephens - Ryan - - - Teach Yourself SQL in 21 day - 2 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/sql/U-SK-SSQLR.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Langs/sql - - Сергей Кузнецов - Стандарты языка реляционных баз данных SQL: краткий обзор - - - Сергей Кузнецов - Кузнецов - Сергей - - - Стандарты языка реляционных баз данных SQL: краткий обзор - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Langs/www - 298 - - - - WWW Development ( Java, JSript, DOM, PHP ) - WWW Development ( Java, JSript, DOM, PHP ) - pdf - - - - Lib/InfoSyS/Langs/www/CIT--SD.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Langs/www - - CIT - Short descriptions (html) - - - CIT - CIT - - - - Short descriptions - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/asp - 4.3 - - - - ASP - ASP - pdf - - - - Lib/InfoSyS/Langs/www/asp/Syngress-GP-ASPCH.zip - 4.2 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/asp - - Syngress - Gary Palmatier - ASP Configuration Handbook - - Syngress - - - - Gary Palmatier - Palmatier - Gary - - - ASP Configuration Handbook - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/asp/U--TMASPFAQ.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/asp - - The Microsoft Active Server Pages FAQ (unlinked html) - The Microsoft Active Server Pages FAQ (unlinked html) - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Langs/www/cgi - 21.6 - - - - CGI - CGI - pdf - - - - Lib/InfoSyS/Langs/www/cgi/OReilly-SG-CGIPoWWW.zip - 1.6 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/cgi - - O'Reilly - Shishir Gundavaram - CGI Programming On The World Wide Web (html) - - O'Reilly - - - - Shishir Gundavaram - Gundavaram - Shishir - - - CGI Programming On The World Wide Web - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/cgi/QUE-JD-SEUCGI.zip - 4.6 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/cgi - - QUE - Jeffry Dwight - Special Edition Using CGI (html) - - QUE - - - - Jeffry Dwight - Dwight - Jeffry - - - Special Edition Using CGI - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/cgi/Que-SW-WSSW.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/cgi - - Que - Scott Walter - Web Scripting Secret Weapons (html) - - Que - - - - Scott Walter - Walter - Scott - - - Web Scripting Secret Weapons - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/cgi/SAMS-EG-CGIDG.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/cgi - - SAMS - Eugene Kim - CGI Developers Guide (html) - - SAMS - - - - Eugene Kim - Kim - Eugene - - - CGI Developers Guide - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/cgi/SAMS-EK-CGIDG.zip - 1.4 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/cgi - - SAMS - Eugene Kim - CGI Developer's Guide (html) - - SAMS - - - - Eugene Kim - Kim - Eugene - - - CGI Developer's Guide - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/cgi/SAMS-EK-CGIPU.zip - 1.9 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/cgi - - SAMS - Eugene Kim - CGI Programming Unleashed (html) - - SAMS - - - - Eugene Kim - Kim - Eugene - - - CGI Programming Unleashed - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/cgi/SAMS-JD-HTML32CGIPR.zip - 11.3 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/cgi - - SAMS - John December - HTML 3.2 and CGI Professional Reference Edition UNLEASHED (html) - - SAMS - - - - John December - December - John - - - HTML 3.2 and CGI Professional Reference Edition UNLEASHED - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/cgi/U--CGI.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/cgi - - CGI Общий Интерфейс Шлюзов (html) - CGI Общий Интерфейс Шлюзов - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/cgi/U--CGIfTNP.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/cgi - - CGI for the Total Non-Programmer (separate html) - CGI for the Total Non-Programmer (separate html) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/cgi/U-RM-CGIMS.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/cgi - - Robert McDaniel - CGI Manual of Style (html) - - - Robert McDaniel - McDaniel - Robert - - - CGI Manual of Style - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/cgi/U-ST-PCGICPP.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/cgi - - Sam Thomas - Programming CGI in C/C++ (html) - - - Sam Thomas - Thomas - Sam - - - Programming CGI in C/C++ - - - html - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Langs/www/html - 17.4 - - - - HTML / CSS / XHTML - HTML / CSS / XHTML - pdf - - - - Lib/InfoSyS/Langs/www/html/OReilly-CM-HTMLtDG.zip - 3.3 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/html - - O'Reilly - Chuck Musciano - HTML The Defenitive Guide (html) - - O'Reilly - - - - Chuck Musciano - Musciano - Chuck - - - HTML The Defenitive Guide - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/html/OReilly-SS-WMiN.zip - 0.6 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/html - - O'Reilly - Stephen Spainhour - WebMaster In A NutShell (html) - - O'Reilly - - - - Stephen Spainhour - Spainhour - Stephen - - - WebMaster In A NutShell - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/html/Que-JH-SEUHTML4.zip - 5.4 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/html - - Que - Jerry Honeycutt - Special Edition Using HTML 4 (html) - - Que - - - - Jerry Honeycutt - Honeycutt - Jerry - - - Special Edition Using HTML 4 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/html/Que-MA-WPDR.zip - 2.2 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/html - - Que - Michael Afergan - Web Programming Desktop Reference (html) - - Que - - - - Michael Afergan - Afergan - Michael - - - Web Programming Desktop Reference - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/html/Que-TS-HTMLbE.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/html - - Que - Todd Stauffer - HTML By Example (html) - - Que - - - - Todd Stauffer - Stauffer - Todd - - - HTML By Example - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/html/SAMS-DO-TYHTML3224H.zip - 1.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/html - - SAMS - Dick Oliver - Teach Yourself HTML 3.2 in 24 Hours (html) - - SAMS - - - - Dick Oliver - Oliver - Dick - - - Teach Yourself HTML 3.2 in 24 Hours - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/html/U--html3.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/html - - Введение в язык HTML 3 (html) - Введение в язык HTML 3 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/html/U--htmlref.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/html - - HTML References (html) - HTML References - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/html/W3C-CSS1.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/html - - W3C - CSS1 Specification - - - W3C - W3C - - - - CSS1 Specification - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/html/W3C-CSS2.zip - 0.9 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/html - - W3C - CSS2 Specification - - - W3C - W3C - - - - CSS2 Specification - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/html/W3C-DOM.zip - 0.7 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/html - - W3C - DOM Level 3 Specification - - - W3C - W3C - - - - DOM Level 3 Specification - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/html/W3C-DOM1.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/html - - W3C - DOM Level 1 Specification - - - W3C - W3C - - - - DOM Level 1 Specification - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/html/W3C-HTML40.zip - 1 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/html - - W3C - HTML 4.0 Specification - - - W3C - W3C - - - - HTML 4.0 Specification - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/html/W3C-XHTML10.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/html - - W3C - XHTML 1.0 Specification - - - W3C - W3C - - - - XHTML 1.0 Specification - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/html/W3C-XHTML11.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/html - - W3C - XHTML 1.1 Specification - - - W3C - W3C - - - - XHTML 1.1 Specification - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/html/WDG--WHTML32.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/html - - WDG - Wilbur - HTML 3.2 (html) - - WDG - - - - Wilbur - Wilbur - - - - HTML 3.2 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/html/XN--ItHTML.zip - 1.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/html - - XtraNet - - Intro to HTML - - XtraNet - - Intro to HTML - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Langs/www/Java - 179.8 - - - - Java Documentation - Java Documentation - pdf - - - - Lib/InfoSyS/Langs/www/Java/Borland-JBDDA.zip - 1.9 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - Borland - - JBuilder: Developing database applications - - Borland - - JBuilder: Developing database applications - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/IDG-EH-JS.zip - 3.9 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - IDG - Elliotte Harold - Java Secrets (html) - - IDG - - - - Elliotte Harold - Harold - Elliotte - - - Java Secrets - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/MP-BT-BJ.zip - 2.3 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - Manning Publications - Bruce Tate - Bitter Java - - Manning Publications - - - - Bruce Tate - Tate - Bruce - - - Bitter Java - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/MP-DF-WDJS.zip - 13.3 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - Manning Publications - Duane Fields - Web Development with JavaServer Pages - - Manning Publications - - - - Duane Fields - Fields - Duane - - - Web Development with JavaServer Pages - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/MP-GS-JSPTL.zip - 8.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - Manning Publications - Gal Shachor - JSP Tag Library - - Manning Publications - - - - Gal Shachor - Shachor - Gal - - - JSP Tag Library - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/MP-KG-J2EEXMLD.zip - 1.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - Manning Publications - Kurt Gabrick - Java 2EE and XML Development - - Manning Publications - - - - Kurt Gabrick - Gabrick - Kurt - - - Java 2EE and XML Development - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/MP-SH-SBJP.zip - 7.3 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - Manning Publications - Tet Neward - Server Based Java Programming - - Manning Publications - - - - Tet Neward - Neward - Tet - - - Server Based Java Programming - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/OReilly-DF-JiaN.zip - 2.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - O'Reilly - David Flanagan - Java in a Nutshell (html) - - O'Reilly - - - - David Flanagan - Flanagan - David - - - Java in a Nutshell - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/OReilly-JK-JC.zip - 1.3 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - O'Reilly - Jonathan Knudsen - Java Cryptography - - O'Reilly - - - - Jonathan Knudsen - Knudsen - Jonathan - - - Java Cryptography - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/OReilly-JZ-JAWTR.zip - 3.6 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - O'Reilly - John Zukowski - Java AWT Reference (html) - - O'Reilly - - - - John Zukowski - Zukowski - John - - - Java AWT Reference - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/OReilly-MG-JFCR.zip - 1.3 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - O'Reilly - Mark Grand - Java Fundamental Classes Reference (html) - - O'Reilly - - - - Mark Grand - Grand - Mark - - - Java Fundamental Classes Reference - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/OReilly-MG-JLR.zip - 0.4 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - O'Reilly - Mark Grand - Java Language Reference (html) - - O'Reilly - - - - Mark Grand - Grand - Mark - - - Java Language Reference - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/OReilly-PN-EJ.zip - 1.6 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - O'Reilly - Patrick Niemeyer - Exploring Java (html) - - O'Reilly - - - - Patrick Niemeyer - Niemeyer - Patrick - - - Exploring Java - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/Que-EL-PEUHTML32J11CGI.zip - 38 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - Que - Eric Ladd - Platinum Edition Using HTML 3.2, Java 1.1 and CGI (html) - - Que - - - - Eric Ladd - Ladd - Eric - - - Platinum Edition Using HTML 3.2, Java 1.1 and CGI - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/Que-JA-DIAwJ.zip - 1.6 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - Que - Jerry Ablan - Developing Intranet Applications with Java (html) - - Que - - - - Jerry Ablan - Ablan - Jerry - - - Developing Intranet Applications with Java - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/Que-MW-HJtPR.zip - 3.2 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - Que - Mark Wutka - Hacking Java: The Professional's Resource Kit (html) - - Que - - - - Mark Wutka - Wutka - Mark - - - Hacking Java: The Professional's Resource Kit - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/Que-MW-JES.zip - 3.6 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - Que - Mark Wutka - Java Expert Solutions (html) - - Que - - - - Mark Wutka - Wutka - Mark - - - Java Expert Solutions - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/SAMS--JDR.zip - 4.9 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - SAMS - - Java Developer's Reference (html) - - SAMS - - Java Developer's Reference - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/SAMS--JU.zip - 13.5 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - SAMS - - Java Unleashed (html) - - SAMS - - Java Unleashed - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/SAMS-BM-VJPPU.zip - 12.4 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - SAMS - Bryan Morgan - Visual J++ Unleashed (html) - - SAMS - - - - Bryan Morgan - Morgan - Bryan - - - Visual J++ Unleashed - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/SAMS-DG-CWAwJ.zip - 4.7 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - SAMS - David Gulbransen - Creating Web Applets with Java (html) - - SAMS - - - - David Gulbransen - Gulbransen - David - - - Creating Web Applets with Java - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/SAMS-GV-ToJP.zip - 1.9 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - SAMS - Glenn Vanderburg - Tricks of the Java Programming Gurus (html) - - SAMS - - - - Glenn Vanderburg - Vanderburg - Glenn - - - Tricks of the Java Programming Gurus - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/SAMS-JJ-JDG.zip - 1.2 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - SAMS - Jamie Jaworski - Java Developer's Guide (html) - - SAMS - - - - Jamie Jaworski - Jaworski - Jamie - - - Java Developer's Guide - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/SAMS-LL-TYJ21D.zip - 0.7 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - SAMS - Laura Lemay - Teach Yourself Java in 21 Days (html) - - SAMS - - - - Laura Lemay - Lemay - Laura - - - Teach Yourself Java in 21 Days - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/SAMS-LL-TYVJ21D.zip - 2.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - SAMS - Laura Lemay - Teach Yourself Visual J++ in 21 Days (html) - - SAMS - - - - Laura Lemay - Lemay - Laura - - - Teach Yourself Visual J++ in 21 Days - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/SAMS-MM-J11U.zip - 3.8 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - SAMS - Michael Morrison - Java 1.1 Unleashed (html) - - SAMS - - - - Michael Morrison - Morrison - Michael - - - Java 1.1 Unleashed - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/SAMS-MM-PJB.zip - 0.7 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - SAMS - Michael Morrison - Presenting JavaBeans (html) - - SAMS - - - - Michael Morrison - Morrison - Michael - - - Presenting JavaBeans - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/SAMS-MM-TYIGPJ21D.zip - 3.4 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - SAMS - Michael Morrison - Teach Yourself Internet Game Programming With Java in 21 Day (html) - - SAMS - - - - Michael Morrison - Morrison - Michael - - - Teach Yourself Internet Game Programming With Java in 21 Day - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/SAMS-VG-WPwJ.zip - 1.3 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - SAMS - Michael Girdley - Web Programming with Java - - SAMS - - - - Michael Girdley - Girdley - Michael - - - Web Programming with Java - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/SAMS-WS-PNGtJP.zip - 3.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - SAMS - William Stanek - Peter Norton's Guide to Java Programming (html) - - SAMS - - - - William Stanek - Stanek - William - - - Peter Norton's Guide to Java Programming - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/Syngress-GF-PLMSwJ.zip - 6.9 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - Syngress - Guilio Ferrari - Programming LEGO Mindstorms with Java (pwd: 4574) - - Syngress - - - - Guilio Ferrari - Ferrari - Guilio - - - Programming LEGO Mindstorms with Java (pwd: 4574) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/U--JAPIUG.zip - 0.4 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - Java API User's Guide (html) - Java API User's Guide - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/U--JFCU.zip - 5 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - JFC Unleashed (unlinked html) - JFC Unleashed (unlinked html) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/U-BE-TiJ2.zip - 3.7 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - Bruce Eckel - Thinking in Java 2nd Edition Revision 3 - - - Bruce Eckel - Eckel - Bruce - - - Thinking in Java 2nd Edition Revision 3 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/U-DB-ItJP.zip - 1 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - Dick Baldwin - Intruduction to Java Programming (html) - - - Dick Baldwin - Baldwin - Dick - - - Intruduction to Java Programming - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/U-DR-SPJ.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - Дмитрий Рамодин - Начинаем программировать на языке Java (doc) - - - Дмитрий Рамодин - Рамодин - Дмитрий - - - Начинаем программировать на языке Java - - - doc - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/U-MC-tJT.zip - 9.3 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - Mary Campione - The Java Tutorial (html) - - - Mary Campione - Campione - Mary - - - The Java Tutorial - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/U-SD-ABDJaRP.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - Сергей Дунаев - Доступ к базам данных из Java-программ и проблемы русификации (html) - - - Сергей Дунаев - Дунаев - Сергей - - - Доступ к базам данных из Java-программ и проблемы русификации - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/WCP-ER-MEJB2.zip - 1.9 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java - - WCP - Ed Roman - Mastering Enterprise JavaBeans - - WCP - - - - Ed Roman - Roman - Ed - - - Mastering Enterprise JavaBeans - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Java/jdbc - 3 - - - - JDBC DB Connectivity - JDBC DB Connectivity - pdf - - - - Lib/InfoSyS/Langs/www/Java/jdbc/U--UJDBC.zip - 3 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Java/jdbc - - Using JDBC (unbrowsable html) - Using JDBC (unbrowsable html) - - - pdf - 0 - 0 - - - - - - - - - - - - Lib/InfoSyS/Langs/www/JScript - 49.3 - - - - Java Script / JScript / ECMA Script / DOM - Java Script / JScript / ECMA Script / DOM - pdf - - - - Lib/InfoSyS/Langs/www/JScript/CIT-PH-PVPJS.zip - 0.7 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/JScript - - CIT - Павел Храмцов - Практическое введение в программирование на JavaScript (html) - - CIT - - - - Павел Храмцов - Храмцов - Павел - - - Практическое введение в программирование на JavaScript - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/JScript/CIT-SK-IJSM.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/JScript - - CIT - Стефан Кох - Введение в JavaScript для Мага (html) - - CIT - - - - Стефан Кох - Кох - Стефан - - - Введение в JavaScript для Мага - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/JScript/HM-DG-JSBGE.zip - 31.9 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/JScript - - Hungry Minds - Danny Goodman - JavaScript Bible, Gold Edition - - Hungry Minds - - - - Danny Goodman - Goodman - Danny - - - JavaScript Bible - Gold - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/JScript/NS--tJSL.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/JScript - - Netscape - - The JavaScript Language - - Netscape - - The JavaScript Language - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/JScript/OReilly-DF-JStDG.zip - 1.9 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/JScript - - O'Reilly - David Flanngan - JavaScript The Definitive Guide (html) - - O'Reilly - - - - David Flanngan - Flanngan - David - - - JavaScript The Definitive Guide - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/JScript/Psykoptic--BHTMLJ.zip - 0.5 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/JScript - - Psykoptic - Book on HTML and JavaScript (html) - - - Psykoptic - Psykoptic - - - - Book on HTML and JavaScript - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/JScript/Que-MR-SEUJS.zip - 3.4 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/JScript - - Que - Mark Reynolds - Special Edition Using JavaScript - - Que - - - - Mark Reynolds - Reynolds - Mark - - - Special Edition Using JavaScript - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/JScript/SAMS-AD-TYJSiW.zip - 3 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/JScript - - SAMS - Arman Danesh - Teach Yourself JavaScript in a Week (html) - - SAMS - - - - Arman Danesh - Danesh - Arman - - - Teach Yourself JavaScript in a Week - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/JScript/U--JSB.zip - 5.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/JScript - - JavaScript Bible - JavaScript Bible - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/JScript/U-MJ-JMoS.zip - 0.5 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/JScript - - Marc Johnson - JavaScript Manual of Style (html) - - - Marc Johnson - Johnson - Marc - - - JavaScript Manual of Style - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/JScript/U-MS-OJSD.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/JScript - - Michael Shramka - Ongoing JavasScript Development - - - Michael Shramka - Shramka - Michael - - - Ongoing JavasScript Development - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/JScript/U-SK-VItJS.zip - 0.5 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/JScript - - Stefan Koch - Voodoo's Introduction to JavaScript - - - Stefan Koch - Koch - Stefan - - - Voodoo's Introduction to JavaScript - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/JScript/W3C-ECMA3.zip - 0.9 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/JScript - - W3C - ECMAScript Language Specification, Edition 3 - - - W3C - W3C - - - - ECMAScript Language Specification, Edition 3 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/JScript/W3C-ECMA4.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/JScript - - W3C - ECMAScript Language Specification, Edition 4 - - - W3C - W3C - - - - ECMAScript Language Specification, Edition 4 - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Langs/www/Other - 2.4 - - - - Other Docs - Other Docs - pdf - - - - Lib/InfoSyS/Langs/www/Other/NGU--USWWWBD.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Other - - НГУ - Использование технологий WWW для доступа к базам данных (html) - - - НГУ - НГУ - - - - Использование технологий WWW для доступа к базам данных - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/Other/QUE--SEUIDAPI.zip - 2 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/Other - - QUE - - Special Edition Using ISAPI - - QUE - - Special Edition Using ISAPI - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Langs/www/PhP - 22.9 - - - - PHP - PHP - pdf - - - - Lib/InfoSyS/Langs/www/PhP/HM--VPHPBP.zip - 6.2 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/PhP - - Hungry Minds - - Visual PHP BluePrint - - Hungry Minds - - Visual PHP BluePrint - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/PhP/MT-JG-MySQLPHPDD.zip - 3.2 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/PhP - - MandT Books - Jay Greenspan - MySQL and PHP Database Applications - - MandT Books - - - - Jay Greenspan - Greenspan - Jay - - - MySQL and PHP Database Applications - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/PhP/NR-TR-WADwPHP4.zip - 5.7 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/PhP - - New Riders - Tobias Ratschiler - Web Application Development with PHP4 - - New Riders - - - - Tobias Ratschiler - Ratschiler - Tobias - - - Web Application Development with PHP4 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/PhP/SAMS-LW-PHPMySQLWD.zip - 7.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/PhP - - SAMS - Luke Welling - PHP and MySQL Web Development - - SAMS - - - - Luke Welling - Welling - Luke - - - PHP and MySQL Web Development - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/PhP/TB-SaIAPHPOW.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/PhP - - ThickBook - Setup and Install Apache + PHP4 on Windows - - - ThickBook - ThickBook - - - - Setup and Install Apache + PHP4 on Windows - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/PhP/U--PHP4IO.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/PhP - - PHP4 Installation Overview - PHP4 Installation Overview - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/www/PhP/U-AK-WPHPMYSQL.zip - 0.6 - 0 - zip - - - - - Lib/InfoSyS/Langs/www/PhP - - Александр Качанов - Букварь по PHP и MySQL - - - Александр Качанов - Качанов - Александр - - - Букварь по PHP и MySQL - - - pdf - 0 - 0 - - - - - - - - - - - - Lib/InfoSyS/Langs/xml - 35 - - - - XML / XSL / XSD / SOAP - XML / XSL / XSD / SOAP - pdf - - - - Lib/InfoSyS/Langs/xml/MSPress-AW-XMLP.chm - 6.3 - 0 - plain - - - - - Lib/InfoSyS/Langs/xml - - MSPress - Allen Wyke - XML Programming (chm) - - MSPress - - - - Allen Wyke - Wyke - Allen - - - XML Programming - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/xml/MSPress-BT-XMLSOAPPfBS.chm - 5.4 - 0 - plain - - - - - Lib/InfoSyS/Langs/xml - - MSPress - Brian Travis - XML and SOAP Programming for BizTalk Servers (chm) - - MSPress - - - - Brian Travis - Travis - Brian - - - XML and SOAP Programming for BizTalk Servers - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/xml/MSPress-JS-DXMLS.chm - 4 - 0 - plain - - - - - Lib/InfoSyS/Langs/xml - - MSPress - Jake Sturm - Developing XML Solutions (chm) - - MSPress - - - - Jake Sturm - Sturm - Jake - - - Developing XML Solutions - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/xml/MSPress-WP-XMLiAWT.chm - 1.9 - 0 - plain - - - - - Lib/InfoSyS/Langs/xml - - MSPress - William Pardi - XML in Action Web Technology (chm) - - MSPress - - - - William Pardi - Pardi - William - - - XML in Action Web Technology - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/xml/MT-SL-XMLaP.zip - 2.9 - 0 - zip - - - - - Lib/InfoSyS/Langs/xml - - MandT Books - Simon Laurent - XML: A Primer (html) - - MandT Books - - - - Simon Laurent - Laurent - Simon - - - XML: A Primer - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/xml/OReilly-DT-PWSwS.zip - 1 - 0 - zip - - - - - Lib/InfoSyS/Langs/xml - - O'Reilly - Doug Tidwell - Programming Web Services with SOAP - - O'Reilly - - - - Doug Tidwell - Tidwell - Doug - - - Programming Web Services with SOAP - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/xml/Que-BM-XMLbE.zip - 5.2 - 0 - zip - - - - - Lib/InfoSyS/Langs/xml - - Que - Benoit Marchal - XML By Example - - Que - - - - Benoit Marchal - Marchal - Benoit - - - XML By Example - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/xml/SAMS-RL-PXML.zip - 0.5 - 0 - zip - - - - - Lib/InfoSyS/Langs/xml - - SAMS - Richard Light - Presenting XML (html) - - SAMS - - - - Richard Light - Light - Richard - - - Presenting XML - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/xml/SAMS-SN-TYXML21D.zip - 2.4 - 0 - zip - - - - - Lib/InfoSyS/Langs/xml - - SAMS - Simon North - Teach Yourself XML in 21 Days - - SAMS - - - - Simon North - North - Simon - - - Teach Yourself XML in 21 Days - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/xml/SP-KSTXML.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/xml - - SpiderPro - KickStart Tutorial XML, v 1.0 - - - SpiderPro - SpiderPro - - - - KickStart Tutorial XML, v 1.0 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/xml/U-AM-tXMLR.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Langs/xml - - Anders Moller - The XML Revolution (html) - - - Anders Moller - Moller - Anders - - - The XML Revolution - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/xml/W3C-MathML.zip - 1.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/xml - - W3C - Math ML 2.0 Specification - - - W3C - W3C - - - - Math ML 2.0 Specification - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/xml/W3C-XML2.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Langs/xml - - W3C - Extensible Markup Language 1.0 Specification, 2nd Edition - - - W3C - W3C - - - - Extensible Markup Language 1.0 Specification - 2 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/xml/W3C-XSL.zip - 2.3 - 0 - zip - - - - - Lib/InfoSyS/Langs/xml - - W3C - Extensible Stylesheet Language 1.0 Specification - - - W3C - W3C - - - - Extensible Stylesheet Language 1.0 Specification - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Langs/xml/WW-NS-PGtSX.zip - 1.6 - 0 - zip - - - - - Lib/InfoSyS/Langs/xml - - WordWare - Norman Smith - Practical Guide to SGML/XML Filters (html) - - WordWare - - - - Norman Smith - Smith - Norman - - - Practical Guide to SGML/XML Filters - - - html - 0 - 0 - - - - - - - - - - - - Lib/InfoSyS/Methods - 62.7 - - - - Programming Methods, Algorithms, etc - Programming Methods, Algorithms, etc - pdf - - - - Lib/InfoSyS/Methods/U-RB-3D.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Methods - - Рон Бринкманн - Трехмерная графика: от альфа до Z-буферизации - - - Рон Бринкманн - Бринкманн - Рон - - - Трехмерная графика: от альфа до Z-буферизации - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Methods/Alogrithms - 0.1 - - - - Algorithms - Algorithms - pdf - - - - Lib/InfoSyS/Methods/Alogrithms/U-TN-SaF.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Methods/Alogrithms - - Томас Ниман - Сортировка и поиск: Рецептурный справочник - - - Томас Ниман - Ниман - Томас - - - Сортировка и поиск: Рецептурный справочник - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Methods/Compilers - 6.1 - - - - Building Compilers - Building Compilers - pdf - - - - Lib/InfoSyS/Methods/Compilers/MTP-PS-HPL1.zip - 3.4 - 0 - zip - - - - - Lib/InfoSyS/Methods/Compilers - - MTP - Peter Salus - HPL VOL. I Object-Oriented Programming Languages (html) - - MTP - - - - Peter Salus - Salus - Peter - - - HPL VOL. I Object-Oriented Programming Languages - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Methods/Compilers/MTP-PS-HPL2.zip - 1.8 - 0 - zip - - - - - Lib/InfoSyS/Methods/Compilers - - MTP - Peter Salus - HPL VOL. II Imperative Programming Languages, Volume II (html) - - MTP - - - - Peter Salus - Salus - Peter - - - HPL VOL. II Imperative Programming Languages, Volume II - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Methods/Compilers/MTP-PS-HPL4.zip - 0.7 - 0 - zip - - - - - Lib/InfoSyS/Methods/Compilers - - MTP - Peter Salus - HPL VOL. IV Functional and Logic Programming Languages (html) - - MTP - - - - Peter Salus - Salus - Peter - - - HPL VOL. IV Functional and Logic Programming Languages - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Methods/Compilers/U-DD-ItC.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Methods/Compilers - - David Dill - Intruduction to Compilers - - - David Dill - Dill - David - - - Intruduction to Compilers - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Methods/Compression - 41.3 - - - - Compression / Encryption - Compression / Encryption - pdf - - - - Lib/InfoSyS/Methods/Compression/CRC-AM-HoAC.zip - 4.4 - 0 - zip - - - - - Lib/InfoSyS/Methods/Compression - - CRC - Alfred Menezes - Handbook of Applied Cryptography (html) - - CRC - - - - Alfred Menezes - Menezes - Alfred - - - Handbook of Applied Cryptography - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Methods/Compression/CRC-DS-CTaP.zip - 17.2 - 0 - zip - - - - - Lib/InfoSyS/Methods/Compression - - CRC - Douglas Stinson - Cryptography: Theory and Practice (html) - - CRC - - - - Douglas Stinson - Stinson - Douglas - - - Cryptography: Theory and Practice - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Methods/Compression/MT-MN-tDCB.zip - 2.3 - 0 - zip - - - - - Lib/InfoSyS/Methods/Compression - - MandT Books - Mark Nelson - The Data Compression Book - - MandT Books - - - - Mark Nelson - Nelson - Mark - - - The Data Compression Book - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Methods/Compression/NA--aIC.zip - 0.6 - 0 - zip - - - - - Lib/InfoSyS/Methods/Compression - - NA - - An Introduction to Cryptography - - NA - - An Introduction to Cryptography - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Methods/Compression/U--HAC.zip - 10.5 - 0 - zip - - - - - Lib/InfoSyS/Methods/Compression - - Handbook of Applied Cryptography - Handbook of Applied Cryptography - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Methods/Compression/U-TK-CaC.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Methods/Compression - - T. Korner - Coding and Cryptography - - - T. Korner - Korner - T. - - - Coding and Cryptography - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Methods/Compression/WCP-BS-AC2.zip - 3.1 - 0 - zip - - - - - Lib/InfoSyS/Methods/Compression - - WCP - Bruce Schneier - Applied Cryptography, 2nd Edition (html) - - WCP - - - - Bruce Schneier - Schneier - Bruce - - - Applied Cryptography - 2 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Methods/Compression/WCP-BS-AC2R.zip - 2.9 - 0 - zip - - - - - Lib/InfoSyS/Methods/Compression - - WCP - Брюс Шнайер - Прикладная криптография, 2ое издание - - WCP - - - - Брюс Шнайер - Шнайер - Брюс - - - Прикладная криптография, 2ое издание - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Methods/oop - 11.9 - - - - Object Oriented Programming Related / UML - Object Oriented Programming Related / UML - pdf - - - - Lib/InfoSyS/Methods/oop/AW-DC-OOSD.zip - 0.8 - 0 - zip - - - - - Lib/InfoSyS/Methods/oop - - AW - Dennis Champeaux - Object Oriented System Development (html) - - AW - - - - Dennis Champeaux - Champeaux - Dennis - - - Object Oriented System Development - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Methods/oop/AW-GB-DP.zip - 2.1 - 0 - zip - - - - - Lib/InfoSyS/Methods/oop - - AW - Grady Booch - Design Patterns (html) - - AW - - - - Grady Booch - Booch - Grady - - - Design Patterns - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Methods/oop/U--OMGUMLS.zip - 6 - 0 - zip - - - - - Lib/InfoSyS/Methods/oop - - OMG Unified Modeling Language Specification - OMG Unified Modeling Language Specification - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Methods/oop/U-AV-CT.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Methods/oop - - А. Вендров - CASE технологии: Современные методы и средства проектирования информационных систем (html) - - - А. Вендров - Вендров - А. - - - CASE технологии: Современные методы и средства проектирования информационных систем - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Methods/oop/U-GB-OOAP.zip - 2.5 - 0 - zip - - - - - Lib/InfoSyS/Methods/oop - - Гради Буч - Объектно-ориентированный анализ и проектирование (html) - - - Гради Буч - Буч - Гради - - - Объектно-ориентированный анализ и проектирование - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Methods/oop/U-RB-CM.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Methods/oop - - Ричард Баркер - Case Method (txt) - - - Ричард Баркер - Баркер - Ричард - - - Case Method - - - txt - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Methods/Programming - 3.2 - - - - Programming related - Programming related - pdf - - - - Lib/InfoSyS/Methods/Programming/MSPRess-JR-DA.chm - 1.7 - 0 - plain - - - - - Lib/InfoSyS/Methods/Programming - - MSPress - John Robbins - Debugging Applications (chm) - - MSPress - - - - John Robbins - Robbins - John - - - Debugging Applications - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Methods/Programming/MW-CWPoP.zip - 1.5 - 0 - zip - - - - - Lib/InfoSyS/Methods/Programming - - Metrowerks - CodeWarrior Principes of Programming - - - Metrowerks - Metrowerks - - - - CodeWarrior Principes of Programming - - - pdf - 0 - 0 - - - - - - - - - - - - Lib/InfoSyS/Network - 291.7 - - - - Networking Documentation - Networking Documentation - pdf - - - - Lib/InfoSyS/Network/AW-JK-CNaTDAFI.zip - 4.8 - 0 - zip - - - - - Lib/InfoSyS/Network - - Addison Wesley - James Kurose - Computer Networking: A Top-Down Approach Featuring the Internet (html) - - Addison Wesley - - - - James Kurose - Kurose - James - - - Computer Networking: A Top-Down Approach Featuring the Internet - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/AW-TL-aBGtGN.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Network - - Addison Wesley - Tracy Laquey - A Beginner's Guide to Global Networking, 2nd Edition (html) - - Addison Wesley - - - - Tracy Laquey - Laquey - Tracy - - - A Beginner's Guide to Global Networking - 2 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/EW-NS-CIPG.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Network - - EarthWeb - Norman Smith - Corporate Intranet Planning Guide (html) - - EarthWeb - - - - Norman Smith - Smith - Norman - - - Corporate Intranet Planning Guide - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/MH-MG-FC.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Network - - McGraw-Hill - Marcus Goncalves - Firewalls Complete: Table of Contents (html) - McGraw-Hill - Marcus Goncalves - Firewalls Complete: Table of Contents - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/MIT-AG-PVMUGTfNPC.zip - 0.4 - 0 - zip - - - - - Lib/InfoSyS/Network - - MIT - Al Geist - PVM: A Users Guide and Tutorial for Networked Parallel Computing (html) - - MIT - - - - Al Geist - Geist - Al - - - PVM: A Users Guide and Tutorial for Networked Parallel Computing - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/MMT-BH-IRA.zip - 5.9 - 0 - zip - - - - - Lib/InfoSyS/Network - - Macmillan - Basaam Halabi - Internet Routing Architecture CISCO (html) - - Macmillan - - - - Basaam Halabi - Halabi - Basaam - - - Internet Routing Architecture CISCO - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/MT-MM-MISNMP.zip - 6.9 - 0 - zip - - - - - Lib/InfoSyS/Network - - MandT Books - Mark Miller - Managing Internetworks with SNMP (html) - - MandT Books - - - - Mark Miller - Miller - Mark - - - Managing Internetworks with SNMP - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/MT-RH-CSN.zip - 5.5 - 0 - zip - - - - - Lib/InfoSyS/Network - - MandT Books - Ray Horak - Communications Systems and Networks (html) - - MandT Books - - - - Ray Horak - Horak - Ray - - - Communications Systems and Networks - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/OReilly-DB-SSH-Beta.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Network - - O'Reilly - Daniel Barrett - SSH, The Secure Shell - - O'Reilly - - - - Daniel Barrett - Barrett - Daniel - - - SSH, The Secure Shell - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/OReilly-GH-TCPIPNA.zip - 1.5 - 0 - zip - - - - - Lib/InfoSyS/Network - - O'Reilly - Craig Hunt - TCP/IP Network Administration (html) - - O'Reilly - - - - Craig Hunt - Hunt - Craig - - - TCP/IP Network Administration - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/OReilly-HS-MNFSNIS.zip - 1.7 - 0 - zip - - - - - Lib/InfoSyS/Network - - O'Reilly - Hal Stern - Managing NFS and NIS - - O'Reilly - - - - Hal Stern - Stern - Hal - - - Managing NFS and NIS - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/OReilly-RF-BWCN.zip - 1 - 0 - zip - - - - - Lib/InfoSyS/Network - - O'Reilly - Rob Fickenger - Building Wireless Community Networks - - O'Reilly - - - - Rob Fickenger - Fickenger - Rob - - - Building Wireless Community Networks - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/OReilly-RF-WCN.zip - 1 - 0 - zip - - - - - Lib/InfoSyS/Network - - O'Reilly - Rob Flickenger - Wireless Community Networks - - O'Reilly - - - - Rob Flickenger - Flickenger - Rob - - - Wireless Community Networks - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/QUE--MMN.zip - 2.6 - 0 - zip - - - - - Lib/InfoSyS/Network - - Que - - Managing MultiVendor Networks (html) - - Que - - Managing MultiVendor Networks - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Que-CZ-URN.zip - 5.3 - 0 - zip - - - - - Lib/InfoSyS/Network - - Que - Craig Zacker - Upgrading and Repairing Networks (html) - - Que - - - - Craig Zacker - Zacker - Craig - - - Upgrading and Repairing Networks - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Que-RC-RPI.zip - 5.5 - 0 - zip - - - - - Lib/InfoSyS/Network - - Que - Rich Casselberry - Running a Perfect Intranet - - Que - - - - Rich Casselberry - Casselberry - Rich - - - Running a Perfect Intranet - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/SAMS-DG-IU.zip - 1.8 - 0 - zip - - - - - Lib/InfoSyS/Network - - SAMS - David Garrett - Intranets Unleashed (html) - - SAMS - - - - David Garrett - Garrett - David - - - Intranets Unleashed - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/SAMS-JF-TYNT24H.zip - 6.8 - 0 - zip - - - - - Lib/InfoSyS/Network - - SAMS - Jonathan Feldman - Teach Yourself Network Troubleshooting in 24 Hours (html) - - SAMS - - - - Jonathan Feldman - Feldman - Jonathan - - - Teach Yourself Network Troubleshooting in 24 Hours - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/SAMS-MS-HPNU.zip - 0.5 - 0 - zip - - - - - Lib/InfoSyS/Network - - SAMS - Mark Sportack - High-Performance Networking Unleashed (html) - - SAMS - - - - Mark Sportack - Sportack - Mark - - - High-Performance Networking Unleashed - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/SAMS-MT-AHGTYS.zip - 3.1 - 0 - zip - - - - - Lib/InfoSyS/Network - - SAMS - Mark Taber - A Hacker's Guide To Protecting Your Internet Site and Network - - SAMS - - - - Mark Taber - Taber - Mark - - - A Hacker's Guide To Protecting Your Internet Site and Network - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/SAMS-PB-TIG.zip - 4.8 - 0 - zip - - - - - Lib/InfoSyS/Network - - SAMS - Philip Baczewski - Tricks of the Internet Gurus (html) - - SAMS - - - - Philip Baczewski - Baczewski - Philip - - - Tricks of the Internet Gurus - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/SAMS-PS-CSC.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Network - - SAMS - Patrick Smith - Client Server Computing, 2nd Edition - - SAMS - - - - Patrick Smith - Smith - Patrick - - - Client Server Computing - 2 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/SAMS-TP-TYTCPIP14D2.zip - 1.4 - 0 - zip - - - - - Lib/InfoSyS/Network - - SAMS - Tim Parker - Teach Yourself TCP/IP in 14 Days, 2nd Edition (html) - - SAMS - - - - Tim Parker - Parker - Tim - - - Teach Yourself TCP/IP in 14 Days - 2 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Sybex-DG-NPSG3.zip - 14.6 - 0 - zip - - - - - Lib/InfoSyS/Network - - Sybex - David Groth - Network+ Study Guide, 3rd Edition - - Sybex - - - - David Groth - Groth - David - - - Network+ Study Guide - 3 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Sybex-WF-EoN2.zip - 10.6 - 0 - zip - - - - - Lib/InfoSyS/Network - - Sybex - Werner Feibel - Encyclopedia of Networking, 2nd Edition - - Sybex - - - - Werner Feibel - Feibel - Werner - - - Encyclopedia of Networking - 2 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Syngress--IPAaSIPV6.zip - 2.9 - 0 - zip - - - - - Lib/InfoSyS/Network - - Syngress - - IP Addressing and Subnetting: Including IPv6 (html) - - Syngress - - IP Addressing and Subnetting: Including IPv6 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Syngress--IPSfW2KS.zip - 4.6 - 0 - zip - - - - - Lib/InfoSyS/Network - - Syngress - - IP Security for Microsoft Windows 2000 Server (html) - - Syngress - - IP Security for Microsoft Windows 2000 Server - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Syngress-CB-BSANwBFS.zip - 3.3 - 0 - zip - - - - - Lib/InfoSyS/Network - - Syngress - Chris Beauchamp - Building SANs with Brocade Fabric Switches - - Syngress - - - - Chris Beauchamp - Beauchamp - Chris - - - Building SANs with Brocade Fabric Switches - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Syngress-JW-DaWN.zip - 3.7 - 0 - zip - - - - - Lib/InfoSyS/Network - - Syngress - Jeffrey Wheat - Designing a Wireless Network - - Syngress - - - - Jeffrey Wheat - Wheat - Jeffrey - - - Designing a Wireless Network - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/tNP-WF-EoN.zip - 10.6 - 0 - zip - - - - - Lib/InfoSyS/Network - - tNP - Werner Feibel - Encyclopedia of Networking, 2nd Edition - - tNP - - - - Werner Feibel - Feibel - Werner - - - Encyclopedia of Networking - 2 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/U--CIE.zip - 0.4 - 0 - zip - - - - - Lib/InfoSyS/Network - - Connected: An Internet Encyclopedia - Connected: An Internet Encyclopedia - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/U--CIR.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Network - - Configuring IP Routing - Configuring IP Routing - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/U--NG.zip - 1.6 - 0 - zip - - - - - Lib/InfoSyS/Network - - Networking Guide (WordBook) (html) - Networking Guide (WordBook) - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/U-AF-StW.zip - 2.1 - 0 - zip - - - - - Lib/InfoSyS/Network - - Andrew Ford - Spinning the Web (html) - - - Andrew Ford - Ford - Andrew - - - Spinning the Web - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/U-BK-ZaAI.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Network - - Brendan Kehoe - Zen and the Art of the Internet (html) - - - Brendan Kehoe - Kehoe - Brendan - - - Zen and the Art of the Internet - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/U-CS-QRFNT.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Network - - Cabletron Systems - Quick Reference Guide for Network Troubleshooting - - - Cabletron Systems - Systems - Cabletron - - - Quick Reference Guide for Network Troubleshooting - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/U-CS-QRG100ME.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Network - - Charles Spurgeon - Quick Reference Guides to 100 Mbps Ethernet (html) - - - Charles Spurgeon - Spurgeon - Charles - - - Quick Reference Guides to 100 Mbps Ethernet - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/U-CS-QRG10ME.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Network - - Charles Spurgeon - Quick Reference Guides to 10 Mbps Ethernet (html) - - - Charles Spurgeon - Spurgeon - Charles - - - Quick Reference Guides to 10 Mbps Ethernet - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/U-CS-QRGfNT.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Network - - Cabletron Systems - Quick Reference Guide for Network Troubleshooting - - - Cabletron Systems - Systems - Cabletron - - - Quick Reference Guide for Network Troubleshooting - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/U-JC-IM.zip - 1.2 - 0 - zip - - - - - Lib/InfoSyS/Network - - Jon Crowcroft - Internetworking Multimedia (html) - - - Jon Crowcroft - Crowcroft - Jon - - - Internetworking Multimedia - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/U-JC-ODS.zip - 0.5 - 0 - zip - - - - - Lib/InfoSyS/Network - - Jon Crowcroft - Open Distributed Systems (html) - - - Jon Crowcroft - Crowcroft - Jon - - - Open Distributed Systems - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/U-KS-MTIO.zip - 1.1 - 0 - zip - - - - - Lib/InfoSyS/Network - - Ken Savetz - MBONE: Multicasting Tomorrow's Internet (html) - - - Ken Savetz - Savetz - Ken - - - MBONE: Multicasting Tomorrow's Internet - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/U-MC-TCPfT.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Network - - Mark Stacey - TCP for Transactions (html) - - - Mark Stacey - Stacey - Mark - - - TCP for Transactions - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/U-RS-TCPIP.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Network - - Р. Смелянский - Семейство протоколов TCP/IP (txt) - - - Р. Смелянский - Смелянский - Р. - - - Семейство протоколов TCP/IP - - - txt - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/U-SH-AVPNM.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Network - - Scott Hilton - Automating VPN Managment - - - Scott Hilton - Hilton - Scott - - - Automating VPN Managment - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/U-SH-tIA.zip - 6.9 - 0 - zip - - - - - Lib/InfoSyS/Network - - Shel Holtz - The Intranet Advantage (html) - - - Shel Holtz - Holtz - Shel - - - The Intranet Advantage - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/U-TL-IC2.zip - 0.4 - 0 - zip - - - - - Lib/InfoSyS/Network - - Tracy LaQuey - Internet Companion, 2nd Edition - - - Tracy LaQuey - LaQuey - Tracy - - - Internet Companion - 2 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/WW-MB-DATMADSL.zip - 2.9 - 0 - zip - - - - - Lib/InfoSyS/Network - - Wordware - Michael Busby - Demystifying ATM/ADSL (html) - - Wordware - - - - Michael Busby - Busby - Michael - - - Demystifying ATM/ADSL - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/ZD-PG-HIW.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Network - - ZDPress - Preston Gralla - How Intranets Work (html) - - ZDPress - - - - Preston Gralla - Gralla - Preston - - - How Intranets Work - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Cisco - 87.9 - - - - Cisco Books - Cisco Books - pdf - - - - Lib/InfoSyS/Network/Cisco/AT--BCNE.zip - 0.4 - 0 - zip - - - - - Lib/InfoSyS/Network/Cisco - - Artium Technical - Becoming a CNE - - - Artium Technical - Technical - Artium - - - Becoming a CNE - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Cisco/CCNAsuper.exe - 35.4 - 0 - plain - - - - - Lib/InfoSyS/Network/Cisco - - Cisco - - CCNA Web Edition (exe) - - Cisco - - CCNA Web Edition - - - exe - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Cisco/CDC-ITCPIPPwSC.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Network/Cisco - - CDC - - An Introduction to TCP/IP Programming with SocketWrench - - CDC - - An Introduction to TCP/IP Programming with SocketWrench - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Cisco/Cisco-CCIE-IDG.zip - 3.6 - 0 - zip - - - - - Lib/InfoSyS/Network/Cisco - - Cisco - - Internetworking Design Guide - - Cisco - - Internetworking Design Guide - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Cisco/Cisco-CCIE-ITO.zip - 3.7 - 0 - zip - - - - - Lib/InfoSyS/Network/Cisco - - Cisco - - Internetworking Technology Overview - - Cisco - - Internetworking Technology Overview - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Cisco/Cisco-CL-CTCPIPPR.zip - 2.6 - 0 - zip - - - - - Lib/InfoSyS/Network/Cisco - - Cisco - Chris Lewis - Cisco TCP/IP Routing Professional References (html) - - Cisco - - - - Chris Lewis - Lewis - Chris - - - Cisco TCP/IP Routing Professional References - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Cisco/Cisco-DITA.zip - 1.1 - 0 - zip - - - - - Lib/InfoSyS/Network/Cisco - - Cisco - - Dictionary of Internetworking Terms and Acronyms - - Cisco - - Dictionary of Internetworking Terms and Acronyms - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Cisco/CISCO-GS-CIRH.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Network/Cisco - - George Sackett - Cisco Router Handbook (html) - - - George Sackett - Sackett - George - - - Cisco Router Handbook - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Cisco/CISCO-GS-CRH.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Network/Cisco - - George Sackett - Cisco Router Handbook (html) - - - George Sackett - Sackett - George - - - Cisco Router Handbook - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Cisco/CISCO-JA-CIOSE.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Network/Cisco - - John Albritton - Cisco IOS Essentials (html) - - - John Albritton - Albritton - John - - - Cisco IOS Essentials - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Cisco/Cisco-LR-CIPA.zip - 3 - 0 - zip - - - - - Lib/InfoSyS/Network/Cisco - - Cisco - Louis Rossi - Cisco and IP Addressing (html) - - Cisco - - - - Louis Rossi - Rossi - Louis - - - Cisco and IP Addressing - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Cisco/CISCO-PF-CCRI.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Network/Cisco - - Paul Fischer - Configuring Cisco Routers for ISDN (html) - - - Paul Fischer - Fischer - Paul - - - Configuring Cisco Routers for ISDN - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Cisco/Cisco-WP-CMRS.zip - 3 - 0 - zip - - - - - Lib/InfoSyS/Network/Cisco - - Cisco - William Parkhurst - Cisco Multicast Routing and Switching (html) - - Cisco - - - - William Parkhurst - Parkhurst - William - - - Cisco Multicast Routing and Switching - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Cisco/OReilly-JS-CIOSAL.zip - 1.3 - 0 - zip - - - - - Lib/InfoSyS/Network/Cisco - - O'Reilly - Jeff Sedayao - Cisco IOS Access Lists - - O'Reilly - - - - Jeff Sedayao - Sedayao - Jeff - - - Cisco IOS Access Lists - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Cisco/Syngress--CVoIP.zip - 4 - 0 - zip - - - - - Lib/InfoSyS/Network/Cisco - - Syngress - - Cisco: Voice over IP (html) - - Syngress - - Cisco: Voice over IP - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Cisco/Syngress-JM-BCNfW2K.zip - 5.2 - 0 - zip - - - - - Lib/InfoSyS/Network/Cisco - - Syngress - Jacques Mueller - Building CISCO Network for W2K - - Syngress - - - - Jacques Mueller - Mueller - Jacques - - - Building CISCO Network for W2K - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Cisco/Syngress-ME-BCRAN.zip - 5.4 - 0 - zip - - - - - Lib/InfoSyS/Network/Cisco - - Syngress - Mark Edwards - Building CISCO Remote Access Networks - - Syngress - - - - Mark Edwards - Edwards - Mark - - - Building CISCO Remote Access Networks - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Cisco/Syngress-MF-ACQoS.zip - 3.1 - 0 - zip - - - - - Lib/InfoSyS/Network/Cisco - - Syngress - Michael Flannagan - Administering CISCO QoS IP Networks - - Syngress - - - - Michael Flannagan - Flannagan - Michael - - - Administering CISCO QoS IP Networks - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Cisco/Syngress-RB-CCAVVID.zip - 3.6 - 0 - zip - - - - - Lib/InfoSyS/Network/Cisco - - Syngress - Randall Benn - Configuring CISCO AVVID (Architecture for Voice, Video, and Integrated Data) - - Syngress - - - - Randall Benn - Benn - Randall - - - Configuring CISCO AVVID (Architecture for Voice, Video, and Integrated Data) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Cisco/Syngress-RL-MCNS.zip - 4.5 - 0 - zip - - - - - Lib/InfoSyS/Network/Cisco - - Syngress - Russell Lusignan - Managing CISCO Network Security - - Syngress - - - - Russell Lusignan - Lusignan - Russell - - - Managing CISCO Network Security - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Cisco/Syngress-RP-CAVVIDaIPT.zip - 6.8 - 0 - zip - - - - - Lib/InfoSyS/Network/Cisco - - Syngress - Robert Padjen - Cisco AVVID and IP Telephony - - Syngress - - - - Robert Padjen - Padjen - Robert - - - Cisco AVVID and IP Telephony - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Network/FAQs - 14.1 - - - - FAQs / HOWTOs - FAQs / HOWTOs - pdf - - - - Lib/InfoSyS/Network/FAQs/cf_net_admin.zip - 0.8 - 0 - zip - - - - - Lib/InfoSyS/Network/FAQs - - Cit Forum - Network Administration Guide (Rus,html) - - - Cit Forum - Forum - Cit - - - Network Administration Guide (Rus,html) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/FAQs/EtherFrames.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Network/FAQs - - Фреймы Ethernet - Фреймы Ethernet - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/FAQs/EthernetFAQ.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Network/FAQs - - LANs/ethernet.faq v 2.12 (txt) - LANs/ethernet.faq v 2.12 - - - txt - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/FAQs/GSP-CS-UFGICT.zip - 0.9 - 0 - zip - - - - - Lib/InfoSyS/Network/FAQs - - GSP - Charles Steed - The User Friendly Guide to Internet and Computer Terms - - GSP - - - - Charles Steed - Steed - Charles - - - The User Friendly Guide to Internet and Computer Terms - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/FAQs/sockfaq.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Network/FAQs - - Unix-socket-faq for network programming - Unix-socket-faq for network programming - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/FAQs/U--Protocols.zip - 12.3 - 0 - zip - - - - - Lib/InfoSyS/Network/FAQs - - Network Protocols Overview - Network Protocols Overview - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/FAQs/U--TCPIPFAQ.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Network/FAQs - - comp.protocols.tcp-ip.domains Frequently Asked Questions (html) - comp.protocols.tcp-ip.domains Frequently Asked Questions - - - html - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Network/Security - 59.2 - - - - Security Books - Security Books - pdf - - - - Lib/InfoSyS/Network/Security/MSPress-MH-DSWBAfW.chm - 9.7 - 0 - plain - - - - - Lib/InfoSyS/Network/Security - - MSPress - Michael Howard - Designing Secure Web-Based Applications for W2K (chm) - - MSPress - - - - Michael Howard - Howard - Michael - - - Designing Secure Web-Based Applications for W2K - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Security/NR-DA-ISPR.zip - 7.2 - 0 - zip - - - - - Lib/InfoSyS/Network/Security - - New Riders - Derek Atkins - Internet Security Professional Reference (html) - - New Riders - - - - Derek Atkins - Atkins - Derek - - - Internet Security Professional Reference - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Security/SAMS-MT-MSAGTSWS.zip - 3.1 - 0 - zip - - - - - Lib/InfoSyS/Network/Security - - SAMS - Mark Taber - Maximum Security: A Hacker's Guide to Protecting Your Internet Site and Network - - SAMS - - - - Mark Taber - Taber - Mark - - - Maximum Security: A Hacker's Guide to Protecting Your Internet Site and Network - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Security/Syngress-BB-EMailVPH.zip - 5.3 - 0 - zip - - - - - Lib/InfoSyS/Network/Security - - Syngress - Brain Bagnall - E-Mail Virus Protection Handbook - - Syngress - - - - Brain Bagnall - Bagnall - Brain - - - E-Mail Virus Protection Handbook - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Security/Syngress-BD-MCIS.zip - 3.5 - 0 - zip - - - - - Lib/InfoSyS/Network/Security - - Syngress - Bradley Dunsmore - Mission Critical Internet Security - - Syngress - - - - Bradley Dunsmore - Dunsmore - Bradley - - - Mission Critical Internet Security - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Security/Syngress-CB-HPYWN.zip - 5.6 - 0 - zip - - - - - Lib/InfoSyS/Network/Security - - Syngress - Christian Barnes - Hack Proofing Your Wireless Network - - Syngress - - - - Christian Barnes - Barnes - Christian - - - Hack Proofing Your Wireless Network - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Security/Syngress-DS-CPNGSA.zip - 7.1 - 0 - zip - - - - - Lib/InfoSyS/Network/Security - - Syngress - Drew Simonis - Check Point NG Security Administration - - Syngress - - - - Drew Simonis - Simonis - Drew - - - Check Point NG Security Administration - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Security/Syngress-JF-HPYWA.zip - 7.3 - 0 - zip - - - - - Lib/InfoSyS/Network/Security - - Syngress - Jeff Forristal - Hack Proofing Your Web Applications - - Syngress - - - - Jeff Forristal - Forristal - Jeff - - - Hack Proofing Your Web Applications - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Security/Syngress-RR-HPYECWS.zip - 6.2 - 0 - zip - - - - - Lib/InfoSyS/Network/Security - - Syngress - Ryan Russell - Hack Proofing Your E-commerce Site - - Syngress - - - - Ryan Russell - Russell - Ryan - - - Hack Proofing Your E-commerce Site - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Security/Syngress-RR-HPYNI.zip - 2.5 - 0 - zip - - - - - Lib/InfoSyS/Network/Security - - Syngress - Ryan Russell - Hack Proofing Your Network Internet TradeCraft - - Syngress - - - - Ryan Russell - Russell - Ryan - - - Hack Proofing Your Network Internet TradeCraft - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Security/U-EK-CV.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Network/Security - - Eric Knight - Computer Vulnerabilities - - - Eric Knight - Knight - Eric - - - Computer Vulnerabilities - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Network/Security/U-ML-TLBBoCV.zip - 1.3 - 0 - zip - - - - - Lib/InfoSyS/Network/Security - - Mark Ludwig - The Little Black Book of Computer Viruses - - - Mark Ludwig - Ludwig - Mark - - - The Little Black Book of Computer Viruses - - - pdf - 0 - 0 - - - - - - - - - - - - Lib/InfoSyS/os - 418.2 - - - - Operational Systems Docs - Operational Systems Docs - pdf - - - - Lib/InfoSyS/os/Linux - 91.2 - - - - Linux! - Linux! - pdf - - - - Lib/InfoSyS/os/Linux/EW-MR-CItL.zip - 7.3 - 0 - zip - - - - - Lib/InfoSyS/os/Linux - - EarthWeb - Manuel Ricart - Complete Idiot's Guide to Linux - - EarthWeb - - - - Manuel Ricart - Ricart - Manuel - - - Complete Idiot's Guide to Linux - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/OP-LKMPG.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/os/Linux - - Ori Pomerantz - Linux Kernel Module Programming Guide (html) - - - Ori Pomerantz - Pomerantz - Ori - - - Linux Kernel Module Programming Guide - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/Que--RPISwL.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/os/Linux - - Que - - Running Perfect Internet Site with Linux - - Que - - Running Perfect Internet Site with Linux - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/Que-JT-SEUL4.zip - 4.1 - 0 - zip - - - - - Lib/InfoSyS/os/Linux - - Que - Jack Tacket - Special Edition Using Linux, 4nd Edition - - Que - - - - Jack Tacket - Tacket - Jack - - - Special Edition Using Linux - 4 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/Que-JT-SEUL5.zip - 8.2 - 0 - zip - - - - - Lib/InfoSyS/os/Linux - - Que - Jack Tacket - Special Edition Using Linux, 5th Edition - - Que - - - - Jack Tacket - Tacket - Jack - - - Special Edition Using Linux - 5 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/RH--RH62.zip - 6 - 0 - zip - - - - - Lib/InfoSyS/os/Linux - - RH - - Official RedHat 6.2 Documentation - - RH - - Official RedHat 6.2 Documentation - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/RH-JP-LCCR.zip - 8.3 - 0 - zip - - - - - Lib/InfoSyS/os/Linux - - RH - J. Purcell - Linux Complete Command Reference - - RH - - - - J. Purcell - Purcell - J. - - - Linux Complete Command Reference - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/Sams-BB-TYL24H.zip - 3.2 - 0 - zip - - - - - Lib/InfoSyS/os/Linux - - Sams - Bill Ball - Teach Yourself Linux in 24 Hours - - Sams - - - - Bill Ball - Ball - Bill - - - Teach Yourself Linux in 24 Hours - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/SAMS-KH-RHLU.zip - 0.8 - 0 - zip - - - - - Lib/InfoSyS/os/Linux - - SAMS - Kamran Husain - RedHat Linux Unleashed (html) - - SAMS - - - - Kamran Husain - Husain - Kamran - - - RedHat Linux Unleashed - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/SAMS-KH-SLU.zip - 0.9 - 0 - zip - - - - - Lib/InfoSyS/os/Linux - - SAMS - Kamran Husain - Slackware Linux Unleashed (html) - - SAMS - - - - Kamran Husain - Husain - Kamran - - - Slackware Linux Unleashed - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/SAMS-NW-TYKDE24H.zip - 11.8 - 0 - zip - - - - - Lib/InfoSyS/os/Linux - - SAMS - Nicholas Wells - Teach Yourself KDE in 24 Hours - - SAMS - - - - Nicholas Wells - Wells - Nicholas - - - Teach Yourself KDE in 24 Hours - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/SAMS-TP-LSASG.zip - 0.5 - 0 - zip - - - - - Lib/InfoSyS/os/Linux - - SAMS - Tim Parker - Linux System Administrator's Survival Guide (html) - - SAMS - - - - Tim Parker - Parker - Tim - - - Linux System Administrator's Survival Guide - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/Sybex-RS-LPSG.zip - 18.1 - 0 - zip - - - - - Lib/InfoSyS/os/Linux - - Sybex - Roderick Smith - Linux+ Study Guide - - Sybex - - - - Roderick Smith - Smith - Roderick - - - Linux+ Study Guide - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/Syngress-JS-HPL.zip - 10.2 - 0 - zip - - - - - Lib/InfoSyS/os/Linux - - Syngress - James Stanger - Hack Proofing Linux (Your Guide to Open Source Security) - - Syngress - - - - James Stanger - Stanger - James - - - Hack Proofing Linux (Your Guide to Open Source Security) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/U--DBAGtDBoL.zip - 0.8 - 0 - zip - - - - - Lib/InfoSyS/os/Linux - - DBA's Guide to Databases on Linux (html) - DBA's Guide to Databases on Linux - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/U--tNAG.zip - 0.5 - 0 - zip - - - - - Lib/InfoSyS/os/Linux - - The network administrator's guide (html) - The network administrator's guide - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/U-DR-tLT.zip - 0.4 - 0 - zip - - - - - Lib/InfoSyS/os/Linux - - David Rusling - The Linux Kernel v. 0.8 (html) - - - David Rusling - Rusling - David - - - The Linux Kernel v. 0.8 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/U-GB-LFS.zip - 0.4 - 0 - zip - - - - - Lib/InfoSyS/os/Linux - - Gerard Beekmans - Linux From Scratch - - - Gerard Beekmans - Beekmans - Gerard - - - Linux From Scratch - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/U-GM-SOLRHE.zip - 4.6 - 0 - zip - - - - - Lib/InfoSyS/os/Linux - - Gerhard Mourani - Securing and Optimizing Linux RedHat Edition - - - Gerhard Mourani - Mourani - Gerhard - - - Securing and Optimizing Linux RedHat Edition - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/U-HP-DT.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/os/Linux - - Havoc Pennington - Debian Tutorial - - - Havoc Pennington - Pennington - Havoc - - - Debian Tutorial - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/U-KS-LASG.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/os/Linux - - Kurt Seifried - Linux Administration Security Guide 0.1.0 - - - Kurt Seifried - Seifried - Kurt - - - Linux Administration Security Guide 0.1.0 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/U-PL-100LTT.zip - 1.1 - 0 - zip - - - - - Lib/InfoSyS/os/Linux - - Patrick Lambert - 100 Linux Tips and Tricks - - - Patrick Lambert - Lambert - Patrick - - - 100 Linux Tips and Tricks - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/U-SF-LAME.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/os/Linux - - Steve Frampton - Linux Administration Made Easy - - - Steve Frampton - Frampton - Steve - - - Linux Administration Made Easy - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/U-TP-LSASG.zip - 0.5 - 0 - zip - - - - - Lib/InfoSyS/os/Linux - - Tim Parker - Linux System Administrator's Survival Guide (html) - - - Tim Parker - Parker - Tim - - - Linux System Administrator's Survival Guide - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/FAQs - 2 - - - - HOWTOs and FAQs - HOWTOs and FAQs - pdf - - - - Lib/InfoSyS/os/Linux/FAQs/khg.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/os/Linux/FAQs - - Ядро ОС Linux Руководство Системного Программиста - Ядро ОС Linux Руководство Системного Программиста - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/FAQs/lkmpg.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/os/Linux/FAQs - - Ori Pomerantz - Linux Kernel Module Programming Guide - - - Ori Pomerantz - Pomerantz - Ori - - - Linux Kernel Module Programming Guide - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/FAQs/lpg.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/os/Linux/FAQs - - Руководство Программиста для Linux - Руководство Программиста для Linux - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/FAQs/Font - 1.2 - - - - All Font and Localisation Related Information - All Font and Localisation Related Information - pdf - - - - Lib/InfoSyS/os/Linux/FAQs/Font/A--ASCFS.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/os/Linux/FAQs/Font - - Adobe - Adobe Standard Cyrillic Font Specification - - - Adobe - Adobe - - - - Adobe Standard Cyrillic Font Specification - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/FAQs/Font/AV-LocaleAsIs.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/os/Linux/FAQs/Font - - Алекс Воропай - Локализация, как она есть (HOWTO,html) - - - Алекс Воропай - Воропай - Алекс - - - Локализация, как она есть (HOWTO,html) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/FAQs/Font/FontFAQ.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/os/Linux/FAQs/Font - - Donovan Revvechi - Font HOWTO (html) - - - Donovan Revvechi - Revvechi - Donovan - - - Font HOWTO - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/FAQs/Font/Netscape4.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/os/Linux/FAQs/Font - - Руссификация Netscape4 (html) - Руссификация Netscape4 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/FAQs/Font/Opennet-FAQ.zip - 0.5 - 0 - zip - - - - - Lib/InfoSyS/os/Linux/FAQs/Font - - OpenNet - Localisation FAQ (Rus, html) - - - OpenNet - OpenNet - - - - Localisation FAQ (Rus, html) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/FAQs/Font/Pascal-XKB.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/os/Linux/FAQs/Font - - Иван Паскаль - Настройка XKB (html) - - - Иван Паскаль - Паскаль - Иван - - - Настройка XKB - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/FAQs/Font/RH52Locale.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/os/Linux/FAQs/Font - - Проблемы локализации в RedHat 5.2 (glib 2.0.7) (html) - Проблемы локализации в RedHat 5.2 (glib 2.0.7) - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/FAQs/Font/RusFaq.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/os/Linux/FAQs/Font - - Linux Russification FAQ (Rus,html) - Linux Russification FAQ (Rus,html) - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/os/Linux/FAQs/Routing - 0.3 - - - - Routing / Trafic Shaping - Routing / Trafic Shaping - pdf - - - - Lib/InfoSyS/os/Linux/FAQs/Routing/2.4routing.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/os/Linux/FAQs/Routing - - Linux 2.4 Advanced Routing HOWTO - Linux 2.4 Advanced Routing HOWTO - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/FAQs/Routing/IBM--L24SFD.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/os/Linux/FAQs/Routing - - IBM - - Linux 2.4 stateful firewall design - - IBM - - Linux 2.4 stateful firewall design - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Linux/FAQs/Routing/LARTCHOWTO.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/os/Linux/FAQs/Routing - - Linux Advanced Routing and Traffic Control HOWTO - Linux Advanced Routing and Traffic Control HOWTO - - - pdf - 0 - 0 - - - - - - - - - - - - - - Lib/InfoSyS/os/Novell - 1.1 - - - - Novell Netware - Novell Netware - pdf - - - - Lib/InfoSyS/os/Novell/MCP-KS-CBETGNNW41.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/os/Novell - - MCP - Karanjit Siyan - CNE Training Guide NetWare 4.1 Administration, 2nd Edition - - MCP - - - - Karanjit Siyan - Siyan - Karanjit - - - CNE Training Guide NetWare 4.1 Administration - 2 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Novell/U--PSNN4D2.zip - 0.7 - 0 - zip - - - - - Lib/InfoSyS/os/Novell - - Программа-справочник "Novell Netware 4 /Док" 2.0 (html) - Программа-справочник "Novell Netware 4 /Док" 2.0 - - - html - 0 - 0 - - - - - - - - - - Lib/InfoSyS/os/Unix - 24.1 - - - - Unixes - Unixes - pdf - - - - Lib/InfoSyS/os/Unix/DEC--DUNPG.zip - 0.6 - 0 - zip - - - - - Lib/InfoSyS/os/Unix - - DEC - Digital Unix: Network Programmer's Guide - - - DEC - DEC - - - - Digital Unix: Network Programmer's Guide - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Unix/Pascal-BSD.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/os/Unix - - Иван Паскаль - Некоторая документация по FreeBSD - - - Иван Паскаль - Паскаль - Иван - - - Некоторая документация по FreeBSD - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Unix/Que-KW-UNIXHH.zip - 0.7 - 0 - zip - - - - - Lib/InfoSyS/os/Unix - - Que - Kirk Waingrow - UNIX Hints and Hacks (html) - - Que - - - - Kirk Waingrow - Waingrow - Kirk - - - UNIX Hints and Hacks - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Unix/SAMS-RB-UUIE.zip - 4.9 - 0 - zip - - - - - Lib/InfoSyS/os/Unix - - SAMS - Robin Burk - UNIX Unleashed, Internet Edition (html) - - SAMS - - - - Robin Burk - Burk - Robin - - - UNIX Unleashed - Internet - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Unix/SAMS-RB-UUSAE.zip - 1.6 - 0 - zip - - - - - Lib/InfoSyS/os/Unix - - SAMS - Robin Burk - Unix Unleashed, System Administrators Edition (html) - - SAMS - - - - Robin Burk - Burk - Robin - - - Unix Unleashed - System Administrators - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Unix/SAMS-RS-UU.zip - 1.6 - 0 - zip - - - - - Lib/InfoSyS/os/Unix - - SAMS - Rachel Sartin - Unix Unleashed (html) - - SAMS - - - - Rachel Sartin - Sartin - Rachel - - - Unix Unleashed - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Unix/U--FreeBSDH.zip - 0.7 - 0 - zip - - - - - Lib/InfoSyS/os/Unix - - FreeBSD Handbook (html) - FreeBSD Handbook - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Unix/U--SCOOSNG.zip - 1.7 - 0 - zip - - - - - Lib/InfoSyS/os/Unix - - SCO OpenServer Networking Guide (html) - SCO OpenServer Networking Guide - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Unix/U-AB-SAAIX4.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/os/Unix - - A. Быков - Системное администрирование IBM AIX version 4.x (html) - - - A. Быков - Быков - A. - - - Системное администрирование IBM AIX version 4.x - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Unix/U-MB-AOSU.zip - 0.4 - 0 - zip - - - - - Lib/InfoSyS/os/Unix - - Морис Бах - Архитектура операционной системы Unix (html) - - - Морис Бах - Бах - Морис - - - Архитектура операционной системы Unix - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Unix/Solaris - 11.5 - - - - Sun Solaris - Sun Solaris - pdf - - - - Lib/InfoSyS/os/Unix/Solaris/MTP-JW-SASAG.zip - 3.7 - 0 - zip - - - - - Lib/InfoSyS/os/Unix/Solaris - - MTP - Janice Winsor - Solaris Advanced System Administrators Guide, 2nd Edition (html) - - MTP - - - - Janice Winsor - Winsor - Janice - - - Solaris Advanced System Administrators Guide - 2 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Unix/Solaris/MTP-JW-SSAG.zip - 2.2 - 0 - zip - - - - - Lib/InfoSyS/os/Unix/Solaris - - MTP - Janice Winsor - Solaris System Administrators Guide, 2nd Edition (html) - - MTP - - - - Janice Winsor - Winsor - Janice - - - Solaris System Administrators Guide - 2 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Unix/Solaris/Syngress-WM-HPSS8.zip - 5.6 - 0 - zip - - - - - Lib/InfoSyS/os/Unix/Solaris - - Syngress - Wyman Miles - Hack Proofing Sun Solaris 8 - - Syngress - - - - Wyman Miles - Miles - Wyman - - - Hack Proofing Sun Solaris 8 - - - pdf - 0 - 0 - - - - - - - - - - - - Lib/InfoSyS/os/Win - 301.8 - - - - All Windows - All Windows - pdf - - - - Lib/InfoSyS/os/Win/C-AK-HPNT4OT.zip - 6 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - Coriolis - Arthur Knowles - High Perfomance NT4 Optimization and Tuning (html) - - Coriolis - - - - Arthur Knowles - Knowles - Arthur - - - High Perfomance NT4 Optimization and Tuning - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/Coriolis-PT-WNT4ABB.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - Coriolis - Paul Taylor - Windows NT 4 Administrator's Black Book (separate html) - - Coriolis - - - - Paul Taylor - Taylor - Paul - - - Windows NT 4 Administrator's Black Book (separate html) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/HM-AS-WXPB.zip - 15.4 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - Hangry Minds - Alan Simpsons - Windows XP Bible - - Hangry Minds - - - - Alan Simpsons - Simpsons - Alan - - - Windows XP Bible - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/IDG-AC-WNT4MCSESG.zip - 8.5 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - IDG - Alan Carter - Windows NT 4.0 MCSE Study Guide (70-67, 70-68, 70-73) - - IDG - - - - Alan Carter - Carter - Alan - - - Windows NT 4.0 MCSE Study Guide (70-67, 70-68, 70-73) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/IDG-BL-WS.zip - 8.3 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - IDG - Brian Livingston - Windows Secrets (hlp) - - IDG - - - - Brian Livingston - Livingston - Brian - - - Windows Secrets (hlp) - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/IK-TS-CW2000SS.zip - 1.7 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - iTKnowledge - Thomas Shinder - Configuring Windows 2000 Server Security - - iTKnowledge - - - - Thomas Shinder - Shinder - Thomas - - - Configuring Windows 2000 Server Security - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/MGH--TWNTR.zip - 1.3 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - McGraw-Hill - - The Windows NT Registry (html) - McGraw-Hill - - The Windows NT Registry - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/MS--AD.zip - 0.5 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - Microsoft - Active Directory Documentation - - - Microsoft - Microsoft - - - - Active Directory Documentation - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/MS--NT4OD.zip - 0.7 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - Microsoft - Windows NT4 Official Documentation (doc) - - - Microsoft - Microsoft - - - - Windows NT4 Official Documentation - - - doc - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/MS-ADSI.chm - 1.5 - 0 - plain - - - - - Lib/InfoSyS/os/Win - - MS - Microsoft Active Directory SDK (chm) - - - MS - MS - - - - Microsoft Active Directory SDK - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/MSPress--NT4RK.chm - 0.7 - 0 - plain - - - - - Lib/InfoSyS/os/Win - - MSPress - Windows NT 4.0 Server Resource Kit (chm) - - - MSPress - MSPress - - - - Windows NT 4.0 Server Resource Kit - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/MSPRESS--NTTST.chm - 7.9 - 0 - plain - - - - - Lib/InfoSyS/os/Win - - MSPress - WinNT Technical Support Training (chm) - - - MSPress - MSPress - - - - WinNT Technical Support Training - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/MSPress--W2KCNG.chm - 2.4 - 0 - plain - - - - - Lib/InfoSyS/os/Win - - MSPress - W2K TCP/IP Core Networking Guide (chm) - - - MSPress - MSPress - - - - W2K TCP/IP Core Networking Guide - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/MSPress--W2KSOG.chm - 2 - 0 - plain - - - - - Lib/InfoSyS/os/Win - - MSPress - W2K Server Operations Guide (chm) - - - MSPress - MSPress - - - - W2K Server Operations Guide - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/MSPress-APCT.chm - 6.8 - 0 - plain - - - - - Lib/InfoSyS/os/Win - - MSPress - A+ Certification Training Kit, 2nd Edition (chm) - - - MSPress - MSPress - - - - A+ Certification Training Kit - 2 - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/MSPress-CR-W2KSAC.chm - 30.4 - 0 - plain - - - - - Lib/InfoSyS/os/Win - - MSPress - Charlie Russel - W2K Server Administrator's Companion (chm) - - MSPress - - - - Charlie Russel - Russel - Charlie - - - W2K Server Administrator's Companion - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/MSPress-EB-MWXPIO.zip - 34.4 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - MSPress - Ed Bott - Microsoft Windows XP Inside Out (chm) - - MSPress - - - - Ed Bott - Bott - Ed - - - Microsoft Windows XP Inside Out - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/MSPress-PA-W2KPRK.chm - 12.2 - 0 - plain - - - - - Lib/InfoSyS/os/Win - - MSPress - Pilar Ackerman - W2K Professional Resource Kit (chm) - - MSPress - - - - Pilar Ackerman - Ackerman - Pilar - - - W2K Professional Resource Kit - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/NR-BH-W98PR.zip - 0.6 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - NewRiders - Bruce Hallberg - Windows 98 Professional Reference (html) - - NewRiders - - - - Bruce Hallberg - Hallberg - Bruce - - - Windows 98 Professional Reference - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/NR-ST-W2KER.zip - 3.3 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - New Riders - Steven Tate - Windows 2000 Essential Reference - - New Riders - - - - Steven Tate - Tate - Steven - - - Windows 2000 Essential Reference - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/OReilly-AF-W2KCPR.zip - 0.6 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - O'Reilly - Aleen Frisch - Windows 2000 Comands Pocket Reference - - O'Reilly - - - - Aleen Frisch - Frisch - Aleen - - - Windows 2000 Comands Pocket Reference - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/QS--CT.exe - 0.8 - 0 - plain - - - - - Lib/InfoSyS/os/Win - - Quciker Surfing - Computer Tips Directory (exe) - - - Quciker Surfing - Surfing - Quciker - - - Computer Tips Directory - - - exe - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/Que--PEUWNTS4.zip - 18.5 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - Que - - Platinum Edition Using Windows NT Server 4 (html) - - Que - - Platinum Edition Using Windows NT Server 4 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/Que--SEUWNT4S.zip - 0.7 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - Que - - Special Edition Using Windows NT Server 4 (html) - - Que - - Special Edition Using Windows NT Server 4 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/Que-DA-PEUW98.zip - 0.7 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - Que - Dean Andrews - Platinum Edition Using Windows 98 (html) - - Que - - - - Dean Andrews - Andrews - Dean - - - Platinum Edition Using Windows 98 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/Que-JS-MW2000SH.zip - 3.1 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - Que - Jeff Schmidt - Microsoft Windows 2000 Security Handbook (html) - - Que - - - - Jeff Schmidt - Schmidt - Jeff - - - Microsoft Windows 2000 Security Handbook - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/Que-PS-SEUWNT4W.zip - 9.4 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - Que - Paul Sanna - Special Edition Using Windows NT Workstation 4.0 (html) - - Que - - - - Paul Sanna - Sanna - Paul - - - Special Edition Using Windows NT Workstation 4.0 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/SAMS-CJ-TCWR.zip - 4 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - SAMS - Clayton Johnson - Troubleshooting and Configuring the Windows NT/95 Registry (html) - - SAMS - - - - Clayton Johnson - Johnson - Clayton - - - Troubleshooting and Configuring the Windows NT/95 Registry - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/SAMS-PN-NCCtWNT4W.zip - 10.8 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - SAMS - Peter Norton - Peter Norton's Complete Guide to Windows NT 4 Workstation (html) - - SAMS - - - - Peter Norton - Norton - Peter - - - Peter Norton's Complete Guide to Windows NT 4 Workstation - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/SAMS-SH-WNTIID.zip - 1.8 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - SAMS - Sanjaya Hettihewa - Windows NT Internet and Intranet Development (html) - - SAMS - - - - Sanjaya Hettihewa - Hettihewa - Sanjaya - - - Windows NT Internet and Intranet Development - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/SAMS-SZ-BIWNT4.zip - 1.3 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - SAMS - Scott Zimmerman - Building an Intranet with Windows NT 4.0 (html) - - SAMS - - - - Scott Zimmerman - Zimmerman - Scott - - - Building an Intranet with Windows NT 4.0 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/Sybex--MWXPHE.zip - 15.6 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - Sybex - - Mastering Windows XP Home Edition - - Sybex - - Mastering Windows XP Home Edition - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/Sybex-GG-W2000NSD.zip - 4.7 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - Sybex - Gary Govanus - Windows 2000 Network Security Design Study Guide - - Sybex - - - - Gary Govanus - Govanus - Gary - - - Windows 2000 Network Security Design Study Guide - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/Syngress-BC-W2KCW.zip - 4.3 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - Syngress - Brian Collins - W2K Configuration Wizards - - Syngress - - - - Brian Collins - Collins - Brian - - - W2K Configuration Wizards - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/Syngress-CB-CW2KwAD.zip - 9.4 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - Syngress - Carol Bailey - Configuring W2k Without Active Directory - - Syngress - - - - Carol Bailey - Bailey - Carol - - - Configuring W2k Without Active Directory - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/Syngress-CT-HPW2KS.zip - 10.2 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - Syngress - Chad Todd - Hack Proofing Windows 2000 Server - - Syngress - - - - Chad Todd - Todd - Chad - - - Hack Proofing Windows 2000 Server - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/Syngress-DS-TW2KTCPIP.zip - 4.4 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - Syngress - Debra Shinder - Trubleshooting W2K Tcp/Ip - - Syngress - - - - Debra Shinder - Shinder - Debra - - - Trubleshooting W2K Tcp/Ip - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/Syngress-GR-DW2KwST.zip - 3.5 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - Syngress - Gary Rosenfeld - Deploying W2k with Support Tools - - Syngress - - - - Gary Rosenfeld - Rosenfeld - Gary - - - Deploying W2k with Support Tools - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/Syngress-MC-W2KAD2.zip - 5.8 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - Syngress - Melissa Craft - W2K Active Directory, 2nd Edition - - Syngress - - - - Melissa Craft - Craft - Melissa - - - W2K Active Directory - 2 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/Syngress-MG-CaTWXPP.zip - 9.8 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - Syngress - Martin Grasdal - Configuring and Troubleshooting WinXP Professional - - Syngress - - - - Martin Grasdal - Grasdal - Martin - - - Configuring and Troubleshooting WinXP Professional - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/Syngress-PS-W2KSSA.zip - 4.1 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - Syngress - Paul Shields - W2K Server System Administration Handbook - - Syngress - - - - Paul Shields - Shields - Paul - - - W2K Server System Administration Handbook - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/Syngress-RW-MCW2KSA.zip - 4.7 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - Syngress - Robin Walshaw - Mission Critical W2K Server Administration - - Syngress - - - - Robin Walshaw - Walshaw - Robin - - - Mission Critical W2K Server Administration - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/U--NT4SU.zip - 14 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - Windows NT 4 Server Unleashed (html) - Windows NT 4 Server Unleashed - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/U--soveti.zip - 0.5 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - Советы - Советы - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/U--windowsxp.exe - 12.9 - 0 - plain - - - - - Lib/InfoSyS/os/Win - - Configuring WindowsXP Professional (exe) - Configuring WindowsXP Professional - - - exe - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/U--WNToI.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/os/Win - - Windows NT on the Internet (html) - Windows NT on the Internet - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/FAQs - 1.5 - - - - FAQs and HOWTOs - FAQs and HOWTOs - pdf - - - - Lib/InfoSyS/os/Win/FAQs/JS-NTFAQ.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/os/Win/FAQs - - John Savill - NT FAQ (html) - - - John Savill - Savill - John - - - NT FAQ - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/FAQs/msdos.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/os/Win/FAQs - - msdos.sys commands (txt) - msdos.sys commands - - - txt - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/FAQs/ntsec.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/os/Win/FAQs - - NT Security - Frequently Asked Questions version 0.41 (html) - - - NT Security - Security - NT - - - Frequently Asked Questions version 0.41 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/FAQs/RWNTUG.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/os/Win/FAQs - - RWNTUG FAQ for Win NT 4 (html) - RWNTUG FAQ for Win NT 4 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/FAQs/Win2kFAQ3.chm - 0.2 - 0 - plain - - - - - Lib/InfoSyS/os/Win/FAQs - - 3DNews - Windows 2000 FAQ v. 5.2.0 - - - 3DNews - 3DNews - - - - Windows 2000 FAQ v. 5.2.0 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/os/Win/FAQs/WinXPFAQ.chm - 1.2 - 0 - plain - - - - - Lib/InfoSyS/os/Win/FAQs - - 3DNews - Windows XP FAQ v. 0.8 - - - 3DNews - 3DNews - - - - Windows XP FAQ v. 0.8 - - - pdf - 0 - 0 - - - - - - - - - - - - - - Lib/InfoSyS/Other - 10.2 - - - - All Other - All Other - pdf - - - - Lib/InfoSyS/Other/MSPress--MCD4.chm - 1.8 - 0 - plain - - - - - Lib/InfoSyS/Other - - MSPress - - Microsoft Computer Dictionary, 4th Edition (chm) - - MSPress - - Microsoft Computer Dictionary - 4 - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Other/U--PCE.zip - 8.3 - 0 - zip - - - - - Lib/InfoSyS/Other - - PC Энциклопедия - PC Энциклопедия - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Programms - 794.4 - - - - Software Documentation - Software Documentation - pdf - - - - Lib/InfoSyS/Programms/VMW--Manual.zip - 6.9 - 0 - zip - - - - - Lib/InfoSyS/Programms - - WMWare - Manual - - - WMWare - WMWare - - - - Manual - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/3DStudio - 73.2 - - - - 3D Studio MAX - 3D Studio MAX - pdf - - - - Lib/InfoSyS/Programms/3DStudio/HM-KM-3DSM4B.zip - 30.9 - 0 - zip - - - - - Lib/InfoSyS/Programms/3DStudio - - Hungry Minds - Kelly Murdock - 3DS MAX 4 Bible - - Hungry Minds - - - - Kelly Murdock - Murdock - Kelly - - - 3DS MAX 4 Bible - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/3DStudio/NR-GM-I3DSM2A.zip - 17.4 - 0 - zip - - - - - Lib/InfoSyS/Programms/3DStudio - - New Riders - George Maestri - Inside 3D Studio Max 2 Animation - - New Riders - - - - George Maestri - Maestri - George - - - Inside 3D Studio Max 2 Animation - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/3DStudio/NR-TB-I3DSM2MM.zip - 20.4 - 0 - zip - - - - - Lib/InfoSyS/Programms/3DStudio - - New Riders - Ted Boardman - Inside 3D Studio MAX 2 Modeling and Materials - - New Riders - - - - Ted Boardman - Boardman - Ted - - - Inside 3D Studio MAX 2 Modeling and Materials - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/3DStudio/U--3DSMAXR3T.chm - 4.5 - 0 - plain - - - - - Lib/InfoSyS/Programms/3DStudio - - 3D Studio MAX R3 Tutorials (chm) - 3D Studio MAX R3 Tutorials - - - chm - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Programms/Adobe - 211.4 - - - - Adobe Software - Adobe Software - pdf - - - - Lib/InfoSyS/Programms/Adobe/HM-TP-AA5PDFB.zip - 9.5 - 0 - zip - - - - - Lib/InfoSyS/Programms/Adobe - - Hangry Minds - Ted Padova - Adobe Acrobat 5 PDF Bible - - Hangry Minds - - - - Ted Padova - Padova - Ted - - - Adobe Acrobat 5 PDF Bible - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Adobe/IDG-DM-P6B.zip - 13.9 - 0 - zip - - - - - Lib/InfoSyS/Programms/Adobe - - IDG - Deke McClelland - Photoshop 6 for Windows Bible - - IDG - - - - Deke McClelland - McClelland - Deke - - - Photoshop 6 for Windows Bible - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Adobe/IDG-DS-AGL5B.zip - 9.8 - 0 - zip - - - - - Lib/InfoSyS/Programms/Adobe - - IDG - Deborah Shadovitz - Adobe GoLive 5 Bible - - IDG - - - - Deborah Shadovitz - Shadovitz - Deborah - - - Adobe GoLive 5 Bible - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Adobe/Classroom - 164.2 - - - - ClassRoom in a Book Serie - ClassRoom in a Book Serie - pdf - - - - Lib/InfoSyS/Programms/Adobe/Classroom/acrobat.zip - 9.8 - 0 - zip - - - - - Lib/InfoSyS/Programms/Adobe/Classroom - - Acrobat 5.0 - Acrobat 5.0 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Adobe/Classroom/AfterEffects.zip - 10.1 - 0 - zip - - - - - Lib/InfoSyS/Programms/Adobe/Classroom - - After Effects 4.0 - After Effects 4.0 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Adobe/Classroom/FrameMaker.zip - 5.4 - 0 - zip - - - - - Lib/InfoSyS/Programms/Adobe/Classroom - - FrameMaker 6.0 - FrameMaker 6.0 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Adobe/Classroom/GoLive.zip - 11.6 - 0 - zip - - - - - Lib/InfoSyS/Programms/Adobe/Classroom - - GoLive 5 - GoLive 5 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Adobe/Classroom/Illustrator.zip - 17.3 - 0 - zip - - - - - Lib/InfoSyS/Programms/Adobe/Classroom - - Illustrator 9.0 - Illustrator 9.0 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Adobe/Classroom/InDesign.zip - 29.6 - 0 - zip - - - - - Lib/InfoSyS/Programms/Adobe/Classroom - - InDesign 1.5 - InDesign 1.5 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Adobe/Classroom/LiveMotion.zip - 21.1 - 0 - zip - - - - - Lib/InfoSyS/Programms/Adobe/Classroom - - Live Motion - Live Motion - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Adobe/Classroom/PageMaker.zip - 9.5 - 0 - zip - - - - - Lib/InfoSyS/Programms/Adobe/Classroom - - PageMaker 6.5 - PageMaker 6.5 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Adobe/Classroom/PageMil.zip - 5.6 - 0 - zip - - - - - Lib/InfoSyS/Programms/Adobe/Classroom - - PageMil 2.0 - PageMil 2.0 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Adobe/Classroom/Photoshop.zip - 33.9 - 0 - zip - - - - - Lib/InfoSyS/Programms/Adobe/Classroom - - PhotoShop 6.0 - PhotoShop 6.0 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Adobe/Classroom/Premiere.zip - 10.2 - 0 - zip - - - - - Lib/InfoSyS/Programms/Adobe/Classroom - - Premiere 5.0 - Premiere 5.0 - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Programms/Adobe/InDesign - 14 - - - - Adobe InDesign - Adobe InDesign - pdf - - - - Lib/InfoSyS/Programms/Adobe/InDesign/Adobe--InDesign.zip - 14 - 0 - zip - - - - - Lib/InfoSyS/Programms/Adobe/InDesign - - Adobe - Learning Adobe InDesign - - - Adobe - Adobe - - - - Learning Adobe InDesign - - - pdf - 0 - 0 - - - - - - - - - - - - Lib/InfoSyS/Programms/cad - 0.6 - - - - CAD Systems - CAD Systems - pdf - - - - Lib/InfoSyS/Programms/cad/U-JP-A2KDGFP.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Programms/cad - - Jim Plume - AutoCAD 2000, Drawing the Granny Flat Plan - - - Jim Plume - Plume - Jim - - - AutoCAD 2000, Drawing the Granny Flat Plan - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/cad/U-JP-A2Ki3DMST.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Programms/cad - - Jim Plume - AutoCAD 2000 in 3D, a Monkish Shot Tower - - - Jim Plume - Plume - Jim - - - AutoCAD 2000 in 3D, a Monkish Shot Tower - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/cad/U-JP-A2KRSP.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Programms/cad - - Jim Plume - Autocad 2000 A Residential Site Plan - - - Jim Plume - Plume - Jim - - - Autocad 2000 A Residential Site Plan - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/cad/U-JP-DwA2KI.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Programms/cad - - Jim Plume - Drawing with AUTOCAD 2000 IntroductionU-JP-DwA2KI.zip - - - Jim Plume - Plume - Jim - - - Drawing with AUTOCAD 2000 IntroductionU-JP-DwA2KI.zip - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Programms/Citrix - 4.5 - - - - Citrix MetaFrame - Citrix MetaFrame - pdf - - - - Lib/InfoSyS/Programms/Citrix/Syngress-PS-CCMF.zip - 4.5 - 0 - zip - - - - - Lib/InfoSyS/Programms/Citrix - - Syngress - Paul Stansel - Configuring Citrix MetaFrame for W2K - - Syngress - - - - Paul Stansel - Stansel - Paul - - - Configuring Citrix MetaFrame for W2K - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Programms/ida - 0.6 - - - - Interactive Disassembler - Interactive Disassembler - pdf - - - - Lib/InfoSyS/Programms/ida/IdaPro.zip - 0.6 - 0 - zip - - - - - Lib/InfoSyS/Programms/ida - - IDA Pro Manual (Rus,separate html) - IDA Pro Manual (Rus,separate html) - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Programms/Linux - 40.9 - - - - Linux Software - Linux Software - pdf - - - - Lib/InfoSyS/Programms/Linux/U-MR-ASSG.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Programms/Linux - - Manuel Ricart - Apache Server Survival Guide (html) - - - Manuel Ricart - Ricart - Manuel - - - Apache Server Survival Guide - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Linux/Gimp - 34.3 - - - - Gimp - Gimp - pdf - - - - Lib/InfoSyS/Programms/Linux/Gimp/NR-CB-GtGIMP.zip - 27.1 - 0 - zip - - - - - Lib/InfoSyS/Programms/Linux/Gimp - - New Riders - Carey Bunks - Grokking the GIMP (html) - - New Riders - - - - Carey Bunks - Bunks - Carey - - - Grokking the GIMP - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Linux/Gimp/U-KK-GIMPTOH.zip - 7.2 - 0 - zip - - - - - Lib/InfoSyS/Programms/Linux/Gimp - - Karin Kylander - Gimp: The Official Handbook - - - Karin Kylander - Kylander - Karin - - - Gimp: The Official Handbook - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Programms/Linux/Samba - 6.2 - - - - Samba - Samba - pdf - - - - Lib/InfoSyS/Programms/Linux/Samba/OReilly-RE-US.zip - 1.4 - 0 - zip - - - - - Lib/InfoSyS/Programms/Linux/Samba - - O'Reilly - Robert Eckstein - Using Samba (html) - - O'Reilly - - - - Robert Eckstein - Eckstein - Robert - - - Using Samba - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Linux/Samba/OReilly-RE-USp.zip - 4.8 - 0 - zip - - - - - Lib/InfoSyS/Programms/Linux/Samba - - O'Reilly - Robert Eckstein - Using Samba (Separate PDFs) - - O'Reilly - - - - Robert Eckstein - Eckstein - Robert - - - Using Samba (Separate PDFs) - - - pdf - 0 - 0 - - - - - - - - - - - - Lib/InfoSyS/Programms/Lotus - 4.7 - - - - Lotus Notes - Lotus Notes - pdf - - - - Lib/InfoSyS/Programms/Lotus/SAMS-AD-LN4A.zip - 4.7 - 0 - zip - - - - - Lib/InfoSyS/Programms/Lotus - - SAMS - Andrew Dahl - Lotus Notes 4 Administrator's Survival Guide (html) - - SAMS - - - - Andrew Dahl - Dahl - Andrew - - - Lotus Notes 4 Administrator's Survival Guide - - - html - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Programms/Macromedia - 67.4 - - - - Macromedia Software - Macromedia Software - pdf - - - - Lib/InfoSyS/Programms/Macromedia/HM-RR-F5B.zip - 14.8 - 0 - zip - - - - - Lib/InfoSyS/Programms/Macromedia - - Hungry Minds - Robert Reinhardt - Flash 5 Bible - - Hungry Minds - - - - Robert Reinhardt - Reinhardt - Robert - - - Flash 5 Bible - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Macromedia/HM-WS-SSF.zip - 7.1 - 0 - zip - - - - - Lib/InfoSyS/Programms/Macromedia - - Hungry Minds - William Sanders - Server Side Flash - - Hungry Minds - - - - William Sanders - Sanders - William - - - Server Side Flash - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Macromedia/M--FEF.zip - 0.7 - 0 - zip - - - - - Lib/InfoSyS/Programms/Macromedia - - Macromedia - - Fireworks3: Extending Fireworks - - Macromedia - - Fireworks3: Extending Fireworks - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Macromedia/SAMS-PK-AiF.zip - 4.7 - 0 - zip - - - - - Lib/InfoSyS/Programms/Macromedia - - SAMS - Philip Kerman - ActionScripting in FLASH - - SAMS - - - - Philip Kerman - Kerman - Philip - - - ActionScripting in FLASH - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Macromedia/Syngress-GM-HPCF.zip - 6.6 - 0 - zip - - - - - Lib/InfoSyS/Programms/Macromedia - - Syngress - Greg Meyer - Hack Proofing ColdFusion - - Syngress - - - - Greg Meyer - Meyer - Greg - - - Hack Proofing ColdFusion - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Macromedia/U-PK-AiF.zip - 4.7 - 0 - zip - - - - - Lib/InfoSyS/Programms/Macromedia - - Philip Kerman - ActionScripting in Flash - - - Philip Kerman - Kerman - Philip - - - ActionScripting in Flash - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Macromedia/UltraDev4bible.zip - 13.2 - 0 - zip - - - - - Lib/InfoSyS/Programms/Macromedia - - Hangry Minds - Joseph Lowery - Dreamweaver UltraDev 4 Bible - - Hangry Minds - - - - Joseph Lowery - Lowery - Joseph - - - Dreamweaver UltraDev 4 Bible - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Macromedia/using_director_85.zip - 2.7 - 0 - zip - - - - - Lib/InfoSyS/Programms/Macromedia - - Macromedia - Using Director 8.5 ShockWave Studio - - - Macromedia - Macromedia - - - - Using Director 8.5 ShockWave Studio - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Macromedia/using_dreamweaver4.zip - 2.5 - 0 - zip - - - - - Lib/InfoSyS/Programms/Macromedia - - Macromedia - Using DreamWeawer 4 - - - Macromedia - Macromedia - - - - Using DreamWeawer 4 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Macromedia/using_fireworks4.zip - 3.9 - 0 - zip - - - - - Lib/InfoSyS/Programms/Macromedia - - Macromedia - Using FireWorks 4 - - - Macromedia - Macromedia - - - - Using FireWorks 4 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Macromedia/using_flash_5.zip - 1.7 - 0 - zip - - - - - Lib/InfoSyS/Programms/Macromedia - - Macromedia - Using Flash 5 - - - Macromedia - Macromedia - - - - Using Flash 5 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Macromedia/using_freehand_10.zip - 3.9 - 0 - zip - - - - - Lib/InfoSyS/Programms/Macromedia - - Macromedia - Using FreeHand 10 - - - Macromedia - Macromedia - - - - Using FreeHand 10 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Macromedia/using_ultradev_4.zip - 0.8 - 0 - zip - - - - - Lib/InfoSyS/Programms/Macromedia - - Macromedia - Using UltraDev 4 - - - Macromedia - Macromedia - - - - Using UltraDev 4 - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Programms/Matlab - 5.2 - - - - Mathworks Matlab - Mathworks Matlab - pdf - - - - Lib/InfoSyS/Programms/Matlab/MW--UM6.zip - 3.2 - 0 - zip - - - - - Lib/InfoSyS/Programms/Matlab - - MathWorks - - Using Matlab, Version 6 - - MathWorks - - Using Matlab, Version 6 - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Matlab/U--MD.zip - 2 - 0 - zip - - - - - Lib/InfoSyS/Programms/Matlab - - Matlab Documentation - Matlab Documentation - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Programms/Maya - 25.4 - - - - Alias|Wavefront Maya - Alias|Wavefront Maya - pdf - - - - Lib/InfoSyS/Programms/Maya/AW-DC-LM1.zip - 25.4 - 0 - zip - - - - - Lib/InfoSyS/Programms/Maya - - Alias|Wavefront - Don Chong - Learning Maya, version 1.0 - - Alias|Wavefront - - - - Don Chong - Chong - Don - - - Learning Maya, version 1.0 - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Programms/Microsoft - 303.5 - - - - Microsoft Software - Microsoft Software - pdf - - - - Lib/InfoSyS/Programms/Microsoft/BackOffice - 35.7 - - - - Back Office - Back Office - pdf - - - - Lib/InfoSyS/Programms/Microsoft/BackOffice/Que--SEUMBOV1.zip - 8 - 0 - zip - - - - - Lib/InfoSyS/Programms/Microsoft/BackOffice - - Que - - Special Edition Using Microsoft BackOffice, Volume I (html) - - Que - - Special Edition Using Microsoft BackOffice, Volume I - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Microsoft/BackOffice/Que--SEUMBOV2.zip - 17.2 - 0 - zip - - - - - Lib/InfoSyS/Programms/Microsoft/BackOffice - - Que - - Special Edition Using Microsoft BackOffice, Volume II (html) - - Que - - Special Edition Using Microsoft BackOffice, Volume II - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Microsoft/BackOffice/Que-SW-BOIK.zip - 0.4 - 0 - zip - - - - - Lib/InfoSyS/Programms/Microsoft/BackOffice - - Que - Stephen Wynkoop - BackOffice Intranet Kit (html) - - Que - - - - Stephen Wynkoop - Wynkoop - Stephen - - - BackOffice Intranet Kit - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Microsoft/BackOffice/U--MBOU.zip - 9.3 - 0 - zip - - - - - Lib/InfoSyS/Programms/Microsoft/BackOffice - - MS BackOffice Unleashed (html) - MS BackOffice Unleashed - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Microsoft/BackOffice/U-VO-IBO25.zip - 0.7 - 0 - zip - - - - - Lib/InfoSyS/Programms/Microsoft/BackOffice - - Виктор Олифер - Введение в BackOffice 2.5 (html) - - - Виктор Олифер - Олифер - Виктор - - - Введение в BackOffice 2.5 - - - html - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Programms/Microsoft/Exchange - 47.1 - - - - Microsoft Exchange Server - Microsoft Exchange Server - pdf - - - - Lib/InfoSyS/Programms/Microsoft/Exchange/MSPress-WG-E2000SAC.chm - 22.8 - 0 - plain - - - - - Lib/InfoSyS/Programms/Microsoft/Exchange - - MSPress - Walter Glenn - Exchange 2000 Server Administrator's Companion (chm) - - MSPress - - - - Walter Glenn - Glenn - Walter - - - Exchange 2000 Server Administrator's Companion - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Microsoft/Exchange/Que--10MGMES5.zip - 1.9 - 0 - zip - - - - - Lib/InfoSyS/Programms/Microsoft/Exchange - - Que - - 10 Minute Guide to Microsoft Exchange Server 5.0 (html) - - Que - - 10 Minute Guide to Microsoft Exchange Server 5.0 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Microsoft/Exchange/Que-NN-SEMES55.zip - 13.3 - 0 - zip - - - - - Lib/InfoSyS/Programms/Microsoft/Exchange - - Que - Neil Nelmida - Special Edition Microsoft Exchange Server 5.5 (html) - - Que - - - - Neil Nelmida - Nelmida - Neil - - - Special Edition Microsoft Exchange Server 5.5 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Microsoft/Exchange/Syngress-LM-CE2KS.zip - 6.7 - 0 - zip - - - - - Lib/InfoSyS/Programms/Microsoft/Exchange - - Syngress - Liz Mason - Configuring Exchange 2000 Server - - Syngress - - - - Liz Mason - Mason - Liz - - - Configuring Exchange 2000 Server - - - pdf - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Microsoft/Exchange/U--ES2000RK.chm - 2.1 - 0 - plain - - - - - Lib/InfoSyS/Programms/Microsoft/Exchange - - Exchange Server 2000 Resource Kit (chm) - Exchange Server 2000 Resource Kit - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Microsoft/Exchange/U-NO-MSESP.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Programms/Microsoft/Exchange - - Nik Okuntseff - MS Exchange Server Programming (html) - - - Nik Okuntseff - Okuntseff - Nik - - - MS Exchange Server Programming - - - html - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Programms/Microsoft/iis - 0.4 - - - - Internet Informational Server - Internet Informational Server - pdf - - - - Lib/InfoSyS/Programms/Microsoft/iis/Que-VW-SEUMIIS.zip - 0.1 - 0 - zip - - - - - Lib/InfoSyS/Programms/Microsoft/iis - - Que - Victor Wolters - Special Edition Using Microsoft Internet Information Server (html) - - Que - - - - Victor Wolters - Wolters - Victor - - - Special Edition Using Microsoft Internet Information Server - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Microsoft/iis/SAMS-WC-DIMIIS.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Programms/Microsoft/iis - - SAMS - Weiying Chen - Designing and Implementing Microsoft Internet Information Server (html) - - SAMS - - - - Weiying Chen - Chen - Weiying - - - Designing and Implementing Microsoft Internet Information Server - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Microsoft/iis/U--IISFAQ.zip - 0 - 0 - zip - - - - - Lib/InfoSyS/Programms/Microsoft/iis - - IIS FAQ ( comp.infosystems.www.servers.ms-windows.iis ) (html) - IIS FAQ ( comp.infosystems.www.servers.ms-windows.iis ) - - - html - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Programms/Microsoft/Office - 130.2 - - - - Microsoft Office - Microsoft Office - pdf - - - - Lib/InfoSyS/Programms/Microsoft/Office/MSPress-DB-O2000VBAF.chm - 6.4 - 0 - plain - - - - - Lib/InfoSyS/Programms/Microsoft/Office - - MSPress - David Boctor - Office 2000 VBA Fundamentals (chm) - - MSPress - - - - David Boctor - Boctor - David - - - Office 2000 VBA Fundamentals - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Microsoft/Office/MSPress-MY-MOXPIO.zip - 116.6 - 0 - zip - - - - - Lib/InfoSyS/Programms/Microsoft/Office - - MSPress - Michael Young - Microsoft Office XP Inside Out (chm) - - MSPress - - - - Michael Young - Young - Michael - - - Microsoft Office XP Inside Out - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Microsoft/Office/Que--10MGO97.zip - 2.9 - 0 - zip - - - - - Lib/InfoSyS/Programms/Microsoft/Office - - Que - - 10 Minute Guide to Outlook 97 (html) - - Que - - 10 Minute Guide to Outlook 97 - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Microsoft/Office/Que--A97ES.zip - 4.1 - 0 - zip - - - - - Lib/InfoSyS/Programms/Microsoft/Office - - Que - - Access 97 Expert Solutions (html) - - Que - - Access 97 Expert Solutions - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Microsoft/Office/QUE-RW-A97QR.zip - 0.2 - 0 - zip - - - - - Lib/InfoSyS/Programms/Microsoft/Office - - QUE - Rick Winter - Microsoft Access 97 Quick Reference (html) - - QUE - - - - Rick Winter - Winter - Rick - - - Microsoft Access 97 Quick Reference - - - html - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Programms/Microsoft/Servers - 78.3 - - - - Other Servers - Other Servers - pdf - - - - Lib/InfoSyS/Programms/Microsoft/Servers/MSPress--MPSIAG.zip - 0.3 - 0 - zip - - - - - Lib/InfoSyS/Programms/Microsoft/Servers - - MSPress - - Microsoft Proxy Server Installation and Administration Guide (html) - - MSPress - - Microsoft Proxy Server Installation and Administration Guide - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Microsoft/Servers/MSPress-SK-SMSAC.chm - 35.6 - 0 - plain - - - - - Lib/InfoSyS/Programms/Microsoft/Servers - - MSPress - Steven Kaczmarek - Systems Managment Server 2.0 Administrator's Companion (chm) - - MSPress - - - - Steven Kaczmarek - Kaczmarek - Steven - - - Systems Managment Server 2.0 Administrator's Companion - - - chm - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Microsoft/Servers/Que-PB-UMCI.zip - 11.4 - 0 - zip - - - - - Lib/InfoSyS/Programms/Microsoft/Servers - - Que - Pete Butler - Using Microsoft Commercial Internet System (html) - - Que - - - - Pete Butler - Butler - Pete - - - Using Microsoft Commercial Internet System - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Microsoft/Servers/Que-TD-SEUMSMS.zip - 20.5 - 0 - zip - - - - - Lib/InfoSyS/Programms/Microsoft/Servers - - Que - Tim Darby - Special Edition Using Microsoft Systems Management Server (html) - - Que - - - - Tim Darby - Darby - Tim - - - Special Edition Using Microsoft Systems Management Server - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Microsoft/Servers/SAMS-MS-DIMIS.zip - 4.2 - 0 - zip - - - - - Lib/InfoSyS/Programms/Microsoft/Servers - - SAMS - Mark Swank - Designing and Implementing Microsoft Index Server (html) - - SAMS - - - - Mark Swank - Swank - Mark - - - Designing and Implementing Microsoft Index Server - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Microsoft/Servers/Syngress-TS-CISA2000.zip - 6.2 - 0 - zip - - - - - Lib/InfoSyS/Programms/Microsoft/Servers - - Syngress - Thomas Shinder - Configuring ISA Server 2000 (Building Firewalls for W2K) - - Syngress - - - - Thomas Shinder - Shinder - Thomas - - - Configuring ISA Server 2000 (Building Firewalls for W2K) - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Programms/Microsoft/SQLServer - 11.9 - - - - Microsoft SQL Server - Microsoft SQL Server - pdf - - - - Lib/InfoSyS/Programms/Microsoft/SQLServer/GKP--MCSESQL7ASG.zip - 3.4 - 0 - zip - - - - - Lib/InfoSyS/Programms/Microsoft/SQLServer - - GKP - - MCSE/MCDBA SQL Server 7 Administration Study Guide (html) - - GKP - - MCSE/MCDBA SQL Server 7 Administration Study Guide - - - html - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Microsoft/SQLServer/ms--sql7docs.zip - 2.6 - 0 - zip - - - - - Lib/InfoSyS/Programms/Microsoft/SQLServer - - Microsoft MS SQL 7.0 Documentation (doc) - Microsoft MS SQL 7.0 Documentation - - - doc - 0 - 0 - - - - - - - - Lib/InfoSyS/Programms/Microsoft/SQLServer/SAMS-RS-TYMSSQL6521D.zip - 5.9 - 0 - zip - - - - - Lib/InfoSyS/Programms/Microsoft/SQLServer - - SAMS - Rick Sawtell - Teach Yourself Microsoft SQL Server 6.5 in 21 day (html) - - SAMS - - - - Rick Sawtell - Sawtell - Rick - - - Teach Yourself Microsoft SQL Server 6.5 in 21 day - - - html - 0 - 0 - - - - - - - - - - - - Lib/InfoSyS/Programms/SoftIce - 0.9 - - - - SoftIce - SoftIce - pdf - - - - Lib/InfoSyS/Programms/SoftIce/siug.pdf.gz - 0.9 - 0 - gzip - - - - - Lib/InfoSyS/Programms/SoftIce - - siug.pdf.gz - siug.pdf.gz - - - pdf - 0 - 0 - - - - - - - - - - Lib/InfoSyS/Programms/Xara - 49.1 - - - - Corel Xara - Corel Xara - pdf - - - - Lib/InfoSyS/Programms/Xara/Corel--XaraAVI.zip - 49.1 - 0 - zip - - - - - Lib/InfoSyS/Programms/Xara - - Corel - Xara Tutorial (avi) - - - Corel - Corel - - - - Xara Tutorial (avi) - - - pdf - 0 - 0 - - - - - - - - - - - - - - Lib/New - 552.9 - - - - New - New - pdf - - - - Lib/New/AW-BM-PSQLIC.zip - 1.7 - 0 - zip - - - - - Lib/New - - AW - Bruce Momjian - PostgreSQL Introduction and Concepts - - AW - - - - Bruce Momjian - Momjian - Bruce - - - PostgreSQL Introduction and Concepts - - - pdf - 0 - 0 - - - - - - - - Lib/New/AW-DS-CPPNPCwAP.chm - 2.3 - 0 - plain - - - - - Lib/New - - Addison Wesley - Douglas Schmidt - C++ Network Programming, Volume 1: Mastering Complexity with ACE and Patterns - - 0201604647 - - - Addison Wesley - - - - Douglas Schmidt - Schmidt - Douglas - - - C++ Network Programming, Volume 1: Mastering Complexity with ACE and Patterns - - - pdf - 0 - 0 - - - - - - - - Lib/New/AW-HS-MECPP.chm - 0.5 - 0 - plain - - - - - Lib/New - - Addison Wesley - Herb Shutter - More Exceptional C++ - - 020170434X - - - Addison Wesley - - - - Herb Shutter - Shutter - Herb - - - More Exceptional C++ - - - pdf - 0 - 0 - - - - - - - - Lib/New/AW-NJ-CPPSL.chm - 3.3 - 0 - plain - - - - - Lib/New - - Addison Wesley - Nicolai Josuttis - C++ Standard Library: A Tutorial and Reference - - Addison Wesley - - - - Nicolai Josuttis - Josuttis - Nicolai - - - C++ Standard Library: A Tutorial and Reference - - - pdf - 0 - 0 - - - - - - - - Lib/New/AW-NJ-CPPSLTR.chm - 3.4 - 0 - plain - - - - - Lib/New - - Addison Wesley - Nicolai Josuttis - C++ Standad Library, The: A Tutorial and Reference - - 0201379260 - - - Addison Wesley - - - - Nicolai Josuttis - Josuttis - Nicolai - - - C++ Standad Library, The: A Tutorial and Reference - - - pdf - 0 - 0 - - - - - - - - Lib/New/AW-SL-CPPP3.chm - 1.4 - 0 - plain - - - - - Lib/New - - Addison Wesley - Stanley Lippman - C++ Primer, 3rd Edition - - 0201824701 - - - Addison Wesley - - - - Stanley Lippman - Lippman - Stanley - - - C++ Primer - 3 - - - pdf - 0 - 0 - - - - - - - - Lib/New/CRM-BF-MAFMA.zip - 10.3 - 0 - zip - - - - - Lib/New - - CRM - Билл Флеминг - Методы анимации лица: мимика и артикуляция - - CRM - - - - Билл Флеминг - Флеминг - Билл - - - Методы анимации лица: мимика и артикуляция - - - pdf - 0 - 0 - - - - - - - - Lib/New/HM-DE-FAS.zip - 13.9 - 0 - zip - - - - - Lib/New - - Hungry Minds - Denise Etheridge - Flash ActionScript - - Hungry Minds - - - - Denise Etheridge - Etheridge - Denise - - - Flash ActionScript - - - pdf - 0 - 0 - - - - - - - - Lib/New/HM-DR-ASPNET.zip - 13.6 - 0 - zip - - - - - Lib/New - - Hungry Minds - Danny Ryan - ASP.NET - - Hungry Minds - - - - Danny Ryan - Ryan - Danny - - - ASP.NET - - - pdf - 0 - 0 - - - - - - - - Lib/New/HM-EB-CS.zip - 9.8 - 0 - zip - - - - - Lib/New - - Hungry Minds - Eric Butow - C# - - Hungry Minds - - - - Eric Butow - Butow - Eric - - - C# - - - pdf - 0 - 0 - - - - - - - - Lib/New/HM-EF-AC2002B.zip - 14.6 - 0 - zip - - - - - Lib/New - - Hungry Minds - Ellen Finkelstein - Autocad 2002 Bible - - Hungry Minds - - - - Ellen Finkelstein - Finkelstein - Ellen - - - Autocad 2002 Bible - - - pdf - 0 - 0 - - - - - - - - Lib/New/HM-JB-ASPNETDP.zip - 3.1 - 0 - zip - - - - - Lib/New - - Hungry Minds - Jason Butler - ASP.NET Database Programing Weekend Crash Course - - Hungry Minds - - - - Jason Butler - Butler - Jason - - - ASP.NET Database Programing Weekend Crash Course - - - pdf - 0 - 0 - - - - - - - - Lib/New/HM-LW-SSAVSAWU.zip - 27.9 - 0 - zip - - - - - Lib/New - - Hungry Minds - Luke Wroblewski - Site-Seeing: A Visual Approach to Web Usability - - Hungry Minds - - - - Luke Wroblewski - Wroblewski - Luke - - - Site-Seeing: A Visual Approach to Web Usability - - - pdf - 0 - 0 - - - - - - - - Lib/New/HM-RG-E2KSAB.zip - 15.7 - 0 - zip - - - - - Lib/New - - Hungry Minds - Robert Guaraldi - Exchange 2000 Server Administrator's Bible - - Hungry Minds - - - - Robert Guaraldi - Guaraldi - Robert - - - Exchange 2000 Server Administrator's Bible - - - pdf - 0 - 0 - - - - - - - - Lib/New/Manning-HD-SWCD_ESK.zip - 12.8 - 0 - zip - - - - - Lib/New - - Manning - Hanumant Deshmukh - SCWCD Exam Study Kit - - Manning - - - - Hanumant Deshmukh - Deshmukh - Hanumant - - - SCWCD Exam Study Kit - - - pdf - 0 - 0 - - - - - - - - Lib/New/Manning-SG-USwS2.zip - 5.4 - 0 - zip - - - - - Lib/New - - Manning - Steven Guiz - Up to Speed with Swing, 2nd Edition - - Manning - - - - Steven Guiz - Guiz - Steven - - - Up to Speed with Swing - 2 - - - pdf - 0 - 0 - - - - - - - - Lib/New/Microsoft-MW-MSVCNETCR.zip - 8.2 - 0 - zip - - - - - Lib/New - - Microsoft - Mickey Williams - Microsoft Visual C# .NET Core Reference (exe) - - Microsoft - - - - Mickey Williams - Williams - Mickey - - - Microsoft Visual C# .NET Core Reference - - - exe - 0 - 0 - - - - - - - - Lib/New/Microsoft-SS-BXMLWSfNET.zip - 4.3 - 0 - zip - - - - - Lib/New - - Microsoft - Scott Short - Building XML Web Services for the Microsoft .NET Platform (exe) - - Microsoft - - - - Scott Short - Short - Scott - - - Building XML Web Services for the Microsoft .NET Platform - - - exe - 0 - 0 - - - - - - - - Lib/New/MIT-PS-JP.zip - 0.8 - 0 - zip - - - - - Lib/New - - MIT Press - Peter Sestoft - Java Precisely - - MIT Press - - - - Peter Sestoft - Sestoft - Peter - - - Java Precisely - - - pdf - 0 - 0 - - - - - - - - Lib/New/MIT-TC-ItA2.zip - 11.5 - 0 - zip - - - - - Lib/New - - MIT - Thomas Cormen - Introduction To Algorithms, 2nd Edition - - 0262032937 - 0070131511 - - - MIT - - - - Thomas Cormen - Cormen - Thomas - - - Introduction To Algorithms - 2 - - - pdf - 0 - 0 - - - - - - - - Lib/New/MSPress-EB-WXPIODE.chm - 22.3 - 0 - plain - - - - - Lib/New - - MSPress - Ed Bott - Windows XP Inside Out, Deluxe Edition (chm) - - MSPress - - - - Ed Bott - Bott - Ed - - - Windows XP Inside Out - Deluxe - - - chm - 0 - 0 - - - - - - - - Lib/New/MSPress-MT-MEoN.chm - 14 - 0 - plain - - - - - Lib/New - - MSPress - Mitch Tulloch - Microsoft Encyclopedia of Networking (chm) - - MSPress - - - - Mitch Tulloch - Tulloch - Mitch - - - Microsoft Encyclopedia of Networking - - - chm - 0 - 0 - - - - - - - - Lib/New/MSPress-TS-MP2002IO.chm - 19 - 0 - plain - - - - - Lib/New - - MSPress - Teresa Stover - Microsoft Project 2002 Inside Out (chm) - - MSPress - - - - Teresa Stover - Stover - Teresa - - - Microsoft Project 2002 Inside Out - - - chm - 0 - 0 - - - - - - - - Lib/New/NR-DA-LW67fD.zip - 24 - 0 - zip - - - - - Lib/New - - New Riders - Дэн Аблан - LightWave 6/7 для Дизайнера - - New Riders - - - - Дэн Аблан - Аблан - Дэн - - - LightWave 6/7 для Дизайнера - - - pdf - 0 - 0 - - - - - - - - Lib/New/NR-EC-HB.zip - 4.2 - 0 - zip - - - - - Lib/New - - New Riders - Eric Cole - Hackers Beware - - New Riders - - - - Eric Cole - Cole - Eric - - - Hackers Beware - - - pdf - 0 - 0 - - - - - - - - Lib/New/NR-LJ-FM6BB.chm - 2.4 - 0 - plain - - - - - Lib/New - - New Riders - Lisa Jahred - FrameMaker 6: Beyond the Basics - - 0735711089 - - - New Riders - - - - Lisa Jahred - Jahred - Lisa - - - FrameMaker 6: Beyond the Basics - - - pdf - 0 - 0 - - - - - - - - Lib/New/OP-KL-O9iCR.zip - 21.9 - 0 - zip - - - - - Lib/New - - Oracle Press - Kevin Loney - Oracle 9i: The Complete Reference - - Oracle Press - - - - Kevin Loney - Loney - Kevin - - - Oracle 9i: The Complete Reference - - - pdf - 0 - 0 - - - - - - - - Lib/New/OReilly-ER-PERLXML.zip - 0.8 - 0 - zip - - - - - Lib/New - - O'Reilly - Erile Ray - Perl and XML - - O'Reilly - - - - Erile Ray - Ray - Erile - - - Perl and XML - - - pdf - 0 - 0 - - - - - - - - Lib/New/OReilly-ER-XMLiN.chm - 2.6 - 0 - plain - - - - - Lib/New - - O'Reilly - Elliotte Rusty - XML in a Nutshell, 2nd Edition - - O'Reilly - - - - Elliotte Rusty - Rusty - Elliotte - - - XML in a Nutshell - 2 - - - pdf - 0 - 0 - - - - - - - - Lib/New/OReilly-HB-JSP2.zip - 2.7 - 0 - zip - - - - - Lib/New - - O'Reilly - Hans Bergsten - Java Server Pages, 2nd Edition - - 059600317X - - - O'Reilly - - - - Hans Bergsten - Bergsten - Hans - - - Java Server Pages - 2 - - - pdf - 0 - 0 - - - - - - - - Lib/New/OReilly-JT-ATDG.zip - 2.5 - 0 - zip - - - - - Lib/New - - O'Reilly - Jesse Tilly - Ant: The Definitive Guide - - O'Reilly - - - - Jesse Tilly - Tilly - Jesse - - - Ant: The Definitive Guide - - - pdf - 0 - 0 - - - - - - - - Lib/New/OReilly-KT-J2MEiN.zip - 5.2 - 0 - zip - - - - - Lib/New - - O'Reilly - Kim Topley - J2ME in a Nutshell - - O'Reilly - - - - Kim Topley - Topley - Kim - - - J2ME in a Nutshell - - - pdf - 0 - 0 - - - - - - - - Lib/New/OReilly-LS-WAMwPC.chm - 1.7 - 0 - plain - - - - - Lib/New - - O'Reilly - Lincoln Stein - Writing Apache Modules with Perl and C - - 156592567X - - - O'Reilly - - - - Lincoln Stein - Stein - Lincoln - - - Writing Apache Modules with Perl and C - - - pdf - 0 - 0 - - - - - - - - Lib/New/OReilly-MW-RL4.zip - 3.3 - 0 - zip - - - - - Lib/New - - O'Reilly - Matt Welsh - Running Linux, 4th Edition - - 0596002726 - - - O'Reilly - - - - Matt Welsh - Welsh - Matt - - - Running Linux - 4 - - - pdf - 0 - 0 - - - - - - - - Lib/New/OReilly-RE-JAVASOAP.zip - 2.5 - 0 - zip - - - - - Lib/New - - O'Reilly - Robert Englander - Java and SOAP - - O'Reilly - - - - Robert Englander - Englander - Robert - - - Java and SOAP - - - pdf - 0 - 0 - - - - - - - - Lib/New/Osborne-RB-IBMWSAS.zip - 18.9 - 0 - zip - - - - - Lib/New - - Osborne - Ron Ben-Natan - IBM WebSphere Application Server - - - Osborne - Osborne - - - - Ron Ben-Natan - IBM WebSphere Application Server - - - pdf - 0 - 0 - - - - - - - - Lib/New/Prentice-MM-ILW.zip - 4 - 0 - zip - - - - - Lib/New - - Prentice Hall - Mike McCune - Integrating Linux and Windows - - Prentice Hall - - - - Mike McCune - McCune - Mike - - - Integrating Linux and Windows - - - pdf - 0 - 0 - - - - - - - - Lib/New/PVII-AS-BSFDM6.zip - 4.5 - 0 - zip - - - - - Lib/New - - PVII PRESS - Al Sparber - Building on Solid Foundations with Dreamweaver MX - - PVII PRESS - - - - Al Sparber - Sparber - Al - - - Building on Solid Foundations with Dreamweaver MX - - - pdf - 0 - 0 - - - - - - - - Lib/New/PVII-LR-DMX.zip - 4.5 - 0 - zip - - - - - Lib/New - - PVII Visions - Linda Rathgeber - Dreamweaver MX: Building on Solid Foundations - - PVII Visions - - - - Linda Rathgeber - Rathgeber - Linda - - - Dreamweaver MX: Building on Solid Foundations - - - pdf - 0 - 0 - - - - - - - - Lib/New/PW0-100.zip - 4.3 - 0 - zip - - - - - Lib/New - - CWNA PW0-100: Certified Wireless Network Administration - CWNA PW0-100: Certified Wireless Network Administration - - - pdf - 0 - 0 - - - - - - - - Lib/New/Que-BM-XMLbE.zip - 3 - 0 - zip - - - - - Lib/New - - Que - Benoit Marchal - XML By Example - - Que - - - - Benoit Marchal - Marchal - Benoit - - - XML By Example - - - pdf - 0 - 0 - - - - - - - - Lib/New/reg.chm - 0.2 - 0 - plain - - - - - Lib/New - - Реестр Windows (chm) - Реестр Windows - - - chm - 0 - 0 - - - - - - - - Lib/New/SAMS-AW-PJS.zip - 8.4 - 0 - zip - - - - - Lib/New - - SAMS - Allen Wyke - Pure JavaScript, Second Edition - - SAMS - - - - Allen Wyke - Wyke - Allen - - - Pure JavaScript - Second - - - pdf - 0 - 0 - - - - - - - - Lib/New/SAMS-MB-TYJ2EE21D.zip - 18.4 - 0 - zip - - - - - Lib/New - - SAMS - Martin Bond - Teach Yourself J2EE in 21 Days - - SAMS - - - - Martin Bond - Bond - Martin - - - Teach Yourself J2EE in 21 Days - - - pdf - 0 - 0 - - - - - - - - Lib/New/Sams-MB-ZWACK.chm - 8.3 - 0 - plain - - - - - Lib/New - - Sams - Martina Brockmann - Zope Web Application Construction Kit - - 0672321335 - - - Sams - - - - Martina Brockmann - Brockmann - Martina - - - Zope Web Application Construction Kit - - - pdf - 0 - 0 - - - - - - - - Lib/New/SAMS-RA-CPPFaPO.chm - 0.8 - 0 - plain - - - - - Lib/New - - Sams - R. Alexander - C++ Footprint and Perfomance Optimization - - Sams - - - - R. Alexander - Alexander - R. - - - C++ Footprint and Perfomance Optimization - - - pdf - 0 - 0 - - - - - - - - Lib/New/Sybex-JH-PSBaAiJ.zip - 2.7 - 0 - zip - - - - - Lib/New - - Sybex - Jeff Heaton - Programming Spiders Bots and Aggreagators in Java - - 0782140408 - - - Sybex - - - - Jeff Heaton - Heaton - Jeff - - - Programming Spiders Bots and Aggreagators in Java - - - pdf - 0 - 0 - - - - - - - - Lib/New/Sybex-TL-CCIPSCI_SG.zip - 18.2 - 0 - zip - - - - - Lib/New - - Sybex - Todd Lammle - CCIP: BSCI Study Guide - - Sybex - - - - Todd Lammle - Lammle - Todd - - - CCIP: BSCI Study Guide - - - pdf - 0 - 0 - - - - - - - - Lib/New/Syngress--HtCIW2kFS.zip - 0.7 - 0 - zip - - - - - Lib/New - - Syngress - - How to Cheat at Installing W2K File Systems - - Syngress - - How to Cheat at Installing W2K File Systems - - - pdf - 0 - 0 - - - - - - - - Lib/New/Syngress-EK-MCNS.zip - 5.8 - 0 - zip - - - - - Lib/New - - Syngress - Eric Knipp - Managing Cisco Network Security, 2nd Edition - - Syngress - - - - Eric Knipp - Knipp - Eric - - - Managing Cisco Network Security - 2 - - - pdf - 0 - 0 - - - - - - - - Lib/New/Syngress-KH-NNSSH.zip - 8.7 - 0 - zip - - - - - Lib/New - - Syngress - Kyle Hourihan - Nokia Network Security Solutions Handbook - - Syngress - - - - Kyle Hourihan - Hourihan - Kyle - - - Nokia Network Security Solutions Handbook - - - pdf - 0 - 0 - - - - - - - - Lib/New/Syngress-MC-HtCIADaDNS.zip - 0.7 - 0 - zip - - - - - Lib/New - - Syngress - Melissa Craft - How to Cheat at Installing Active Directory and DNS - - 1932266399 - - - Syngress - - - - Melissa Craft - Craft - Melissa - - - How to Cheat at Installing Active Directory and DNS - - - pdf - 0 - 0 - - - - - - - - Lib/New/Syngress-MC-SPSGaDVDTS.zip - 9.6 - 0 - zip - - - - - Lib/New - - Syngress - Michael Cross - Security+ Study Guide and DVD Training System - - 1931836728 - - - Syngress - - - - Michael Cross - Cross - Michael - - - Security+ Study Guide and DVD Training System - - - pdf - 0 - 0 - - - - - - - - Lib/New/Syngress-MG-CTWXPP.zip - 10.9 - 0 - zip - - - - - Lib/New - - Syngress - Martin Grasdal - Configuring and Troubleshooting Windows XP Professional - - Syngress - - - - Martin Grasdal - Grasdal - Martin - - - Configuring and Troubleshooting Windows XP Professional - - - pdf - 0 - 0 - - - - - - - - Lib/New/Syngress-RS-SPNOTH.zip - 6.4 - 0 - zip - - - - - Lib/New - - Syngress - Robert Shimonsky - Sniffer Pro Network Optimization and Troubleshouting Handbook - - Syngress - - - - Robert Shimonsky - Shimonsky - Robert - - - Sniffer Pro Network Optimization and Troubleshouting Handbook - - - pdf - 0 - 0 - - - - - - - - Lib/New/Syngress-TB-HPYIiIA.zip - 7.2 - 0 - zip - - - - - Lib/New - - Syngress - Teri Bidwell - Hack Proofing Your Identity in the Information Age - - Syngress - - - - Teri Bidwell - Bidwell - Teri - - - Hack Proofing Your Identity in the Information Age - - - pdf - 0 - 0 - - - - - - - - Lib/New/Syngress-TS-ISASB.zip - 12.7 - 0 - zip - - - - - Lib/New - - Syngress - Tom Shinder - ISA Server and Beyond - - Syngress - - - - Tom Shinder - Shinder - Tom - - - ISA Server and Beyond - - - pdf - 0 - 0 - - - - - - - - Lib/New/Syngress-VO-CSSPIXF.zip - 9.3 - 0 - zip - - - - - Lib/New - - Syngress - Vitaly Osipov - Cisco Security Specialist's Guide to PIX Firewall - - Syngress - - - - Vitaly Osipov - Osipov - Vitaly - - - Cisco Security Specialist's Guide to PIX Firewall - - - pdf - 0 - 0 - - - - - - - - Lib/New/U-MK-CAQA.zip - 7.4 - 0 - zip - - - - - Lib/New - - Morgan Kaufmann - Computer Architecture: A Quantitative Approach - - - Morgan Kaufmann - Kaufmann - Morgan - - - Computer Architecture: A Quantitative Approach - - - pdf - 0 - 0 - - - - - - - - Lib/New/Whiley-BF-PPMW.zip - 10 - 0 - zip - - - - - Lib/New - - Whiley - Билл Флеминг - Фотореализм: Профессиональные приемы работы - - Whiley - - - - Билл Флеминг - Флеминг - Билл - - - Фотореализм: Профессиональные приемы работы - - - pdf - 0 - 0 - - - - - - - - Lib/New/Wiley-AG-AoPDSPiMC.zip - 4 - 0 - zip - - - - - Lib/New - - Wiley - Alan Gatherer - The Application of Programmable DSPs in Mobile Communications - - 0471486434 - 0470845902 - - - Wiley - - - - Alan Gatherer - Gatherer - Alan - - - The Application of Programmable DSPs in Mobile Communications - - - pdf - 0 - 0 - - - - - - - - Lib/New/Wiley-FM-EJBDP.zip - 0.7 - 0 - zip - - - - - Lib/New - - Wiley - Floyd Marinescu - EJB Design Patterns: Advanced Patterns, Processes, and Idioms - - Wiley - - - - Floyd Marinescu - Marinescu - Floyd - - - EJB Design Patterns: Advanced Patterns, Processes, and Idioms - - - pdf - 0 - 0 - - - - - - - - Lib/New/Wiley-GG-50FPS7T.zip - 26.5 - 0 - zip - - - - - Lib/New - - Wiley - George Georges - 50 Fast Photoshop 7 Techniques - - Wiley - - - - George Georges - Georges - George - - - 50 Fast Photoshop 7 Techniques - - - pdf - 0 - 0 - - - - - - - - Lib/New/Wiley-JG-MJS.zip - 1 - 0 - zip - - - - - Lib/New - - Wiley - James Goodwill - Mastering Jakarta Struts - - Wiley - - - - James Goodwill - Goodwill - James - - - Mastering Jakarta Struts - - - pdf - 0 - 0 - - - - - - - - Lib/New/Wiley-JL-FMXB.zip - 19.6 - 0 - zip - - - - - Lib/New - - Wiley - Joseph Lowery - Fireworks MX Bible - - Wiley - - - - Joseph Lowery - Lowery - Joseph - - - Fireworks MX Bible - - - pdf - 0 - 0 - - - - - - - - Lib/New/Wiley-SS-MySQLB.zip - 5.9 - 0 - zip - - - - - Lib/New - - Wiley - Steve Suehring - MySQL Bible - - Wiley - - - - Steve Suehring - Suehring - Steve - - - MySQL Bible - - - pdf - 0 - 0 - - - - - - - - Lib/New/WROX-BJ-PADONETP.zip - 7.4 - 0 - zip - - - - - Lib/New - - WROX - Bipin Joshi - Professional ADO.NET Programming - - WROX - - - - Bipin Joshi - Joshi - Bipin - - - Professional ADO.NET Programming - - - pdf - 0 - 0 - - - - - - - - Lib/New/WROX-WC-BPHP4.zip - 8.8 - 0 - zip - - - - - Lib/New - - WROX - Wankyu Choi - Begining PHP4 - - WROX - - - - Wankyu Choi - Choi - Wankyu - - - Begining PHP4 - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science - 9282.5 - - - - Science - Science - pdf - - - - Lib/Science/Chemestry - 318.3 - - - - Chemestry - Chemestry - pdf - - - - Lib/Science/Chemestry/Carey.zip - 29 - 0 - zip - - - - - Lib/Science/Chemestry - - Organic Chemistry (Carey) - - - Carey - Carey - - - - Organic Chemistry - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Chemestry/ChemistryLife.7z - 54.3 - 0 - 7zip - - - - - Lib/Science/Chemestry - - Химия и Жизнь (Журнал 2001-2002 годы) - - - Журнал 2001-2002 годы - годы - Журнал - - - Химия и Жизнь - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Chemestry/Perry.zip - 235 - 0 - zip - - - - - Lib/Science/Chemestry - - Perri'S Chemical Engineers Handbook - Perri'S Chemical Engineers Handbook - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science/Economics - 29.7 - - - - Economics - Economics - pdf - - - - Lib/Science/Economics/Kantorovich.zip - 21.8 - 0 - zip - - - - - Lib/Science/Economics - - Оптимальные Решения в Экономике (Канторович,Горстко) - - - Канторович - Канторович - - - - Горстко - Горстко - - - - Оптимальные Решения в Экономике - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Economics/Kantorovich2.zip - 7.8 - 0 - zip - - - - - Lib/Science/Economics - - Математическое Оптимальное Программирование в Экономике (Канторович,Горстко) - - - Канторович - Канторович - - - - Горстко - Горстко - - - - Математическое Оптимальное Программирование в Экономике - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science/Math - 4335.7 - - - - Math - Math - pdf - - - - Lib/Science/Math/Kolmog.zip - 22.6 - 0 - zip - - - - - Lib/Science/Math - - Математика и Механика (Колмогоров) - - - Колмогоров - Колмогоров - - - - Математика и Механика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra - 689.2 - - - - Algebra - Algebra - pdf - - - - Lib/Science/Math/Algebra/Barut1.zip - 17.5 - 0 - zip - - - - - Lib/Science/Math/Algebra - - Теория Представлений Групп и ее Приложения т.1 (Барут, Рончка) - - - Барут - Барут - - - - Рончка - Рончка - - - - Теория Представлений Групп и ее Приложения - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/Barut2.zip - 15.3 - 0 - zip - - - - - Lib/Science/Math/Algebra - - Теория Представлений Групп и ее Приложения т.2 (Барут, Рончка) - - - Барут - Барут - - - - Рончка - Рончка - - - - Теория Представлений Групп и ее Приложения - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/Berezin.zip - 9.3 - 0 - zip - - - - - Lib/Science/Math/Algebra - - Введение в Алгебру и Анализ С Антикоммутирующими Переменными (Березин) - - - Березин - Березин - - - - Введение в Алгебру и Анализ С Антикоммутирующими Переменными - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/Demidov.zip - 5.2 - 0 - zip - - - - - Lib/Science/Math/Algebra - - Квантовые Группы (Демидов) - - - Демидов - Демидов - - - - Квантовые Группы - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/Dold_Al_Topology.zip - 19.3 - 0 - zip - - - - - Lib/Science/Math/Algebra - - Лекции по Алгебраической Топологии (Дольд) - - - Дольд - Дольд - - - - Лекции по Алгебраической Топологии - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/Efimov.zip - 30.9 - 0 - zip - - - - - Lib/Science/Math/Algebra - - Линейная Алгебра и Многомерная Геометрия (Ефимов) - - - Ефимов - Ефимов - - - - Линейная Алгебра и Многомерная Геометрия - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/Emch.zip - 35.2 - 0 - zip - - - - - Lib/Science/Math/Algebra - - Алгебраические Методы (Эмх) - - - Эмх - Эмх - - - - Алгебраические Методы - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/Fadeev.zip - 20 - 0 - zip - - - - - Lib/Science/Math/Algebra - - Лекции по Алгебре (Фаддеев) - - - Фаддеев - Фаддеев - - - - Лекции по Алгебре - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/field_theory3.zip - 9.8 - 0 - zip - - - - - Lib/Science/Math/Algebra - - Алгебраическая Квантовая Теория (Сарданашвили) - - - Сарданашвили - Сарданашвили - - - - Алгебраическая Квантовая Теория - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/Gantmaher.zip - 26.3 - 0 - zip - - - - - Lib/Science/Math/Algebra - - Теория Матриц (Гантмахер) - - - Гантмахер - Гантмахер - - - - Теория Матриц - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/gelfand.zip - 47.4 - 0 - zip - - - - - Lib/Science/Math/Algebra - - Лекции по Линейной Алгебре (Гельфанд) - - - Гельфанд - Гельфанд - - - - Лекции по Линейной Алгебре - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/Golod.zip - 15.8 - 0 - zip - - - - - Lib/Science/Math/Algebra - - Математичесие Основы Теории Симметрии (Голод, Климык) - - - Голод - Голод - - - - Климык - Климык - - - - Математичесие Основы Теории Симметрии - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/Khorunji.zip - 28.4 - 0 - zip - - - - - Lib/Science/Math/Algebra - - Введение в Алгербраическую Квантувую Теорию Поля (Хоружий) - - - Хоружий - Хоружий - - - - Введение в Алгербраическую Квантувую Теорию Поля - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/KOSTRIKIN_MANIN.zip - 14.8 - 0 - zip - - - - - Lib/Science/Math/Algebra - - Линейная Алегбра и Геометрия (Кострикин,Манин) ! - Линейная Алегбра и Геометрия (Кострикин,Манин) ! - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/Kurosh.zip - 5.9 - 0 - zip - - - - - Lib/Science/Math/Algebra - - Общая Алгебра (Курош) ! - Общая Алгебра (Курош) ! - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/Leng.zip - 20.4 - 0 - zip - - - - - Lib/Science/Math/Algebra - - Алгебра (Ленг) - - - Ленг - Ленг - - - - Алгебра - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/Lorenz_gr.zip - 13.5 - 0 - zip - - - - - Lib/Science/Math/Algebra - - Представления Группы Вращений и Группы Лоренца, Их Применения (Гелъфанд, Минлос, Шапиро) - - - Гелъфанд - Гелъфанд - - - - Минлос - Минлос - - - - Шапиро - Шапиро - - - - Представления Группы Вращений и Группы Лоренца, Их Применения - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/Naymark.zip - 24.6 - 0 - zip - - - - - Lib/Science/Math/Algebra - - Теория Представления Групп (Наймарк) - - - Наймарк - Наймарк - - - - Теория Представления Групп - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/poznak.zip - 53.7 - 0 - zip - - - - - Lib/Science/Math/Algebra - - Линейная Алгебра (Ильин, Позняк) - - - Ильин - Ильин - - - - Позняк - Позняк - - - - Линейная Алгебра - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/PROSKURIAKOV_LA.zip - 13.3 - 0 - zip - - - - - Lib/Science/Math/Algebra - - Сборник Задач по Линейной Алгебре (Проскуряков) - - - Проскуряков - Проскуряков - - - - Сборник Задач по Линейной Алгебре - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/Q_groups.zip - 24.1 - 0 - zip - - - - - Lib/Science/Math/Algebra - - Квантовые Группы (Кассель) - - - Кассель - Кассель - - - - Квантовые Группы - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/QIST-Sklyanin.zip - 0.2 - 0 - zip - - - - - Lib/Science/Math/Algebra - - Quantum Inverse Scattering Method Selected Topics (Sklyanin) - - - Sklyanin - Sklyanin - - - - Quantum Inverse Scattering Method Selected Topics - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/Serr.zip - 9.7 - 0 - zip - - - - - Lib/Science/Math/Algebra - - Алгебраические Группы и Поля Классов (Серр) - - - Серр - Серр - - - - Алгебраические Группы и Поля Классов - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/Shafarevich.zip - 23.7 - 0 - zip - - - - - Lib/Science/Math/Algebra - - Основные Понятия Алгебры (Шафаревич) - - - Шафаревич - Шафаревич - - - - Основные Понятия Алгебры - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/Spanier_Al_Topology.zip - 39.1 - 0 - zip - - - - - Lib/Science/Math/Algebra - - Алгебраическая Топология (Спеньер) - - - Спеньер - Спеньер - - - - Алгебраическая Топология - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/Varden.zip - 43.3 - 0 - zip - - - - - Lib/Science/Math/Algebra - - Алгебра (Ван Дер Варден) - - - Ван Дер Варден - Варден - Ван - - - Алгебра - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/Vilenkin.zip - 18 - 0 - zip - - - - - Lib/Science/Math/Algebra - - Специальные Функции и Теория Представлений Групп (Виленкин) - - - Виленкин - Виленкин - - - - Специальные Функции и Теория Представлений Групп - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/Wigner_Spectr.zip - 17.2 - 0 - zip - - - - - Lib/Science/Math/Algebra - - Теория Групп и Ее приложение к Квантовомеханической Теории Атомных Спектров (Вигнер) - - - Вигнер - Вигнер - - - - Теория Групп и Ее приложение к Квантовомеханической Теории Атомных Спектров - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/Zaris1.zip - 19.4 - 0 - zip - - - - - Lib/Science/Math/Algebra - - Коммутативная Алгебра т.1 (Зарриский,Самюэль) - - - Зарриский - Зарриский - - - - Самюэль - Самюэль - - - - Коммутативная Алгебра - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/Zaris2.zip - 22.1 - 0 - zip - - - - - Lib/Science/Math/Algebra - - Коммутативная Алгебра т.2 (Зарриский,Самюэль) - - - Зарриский - Зарриский - - - - Самюэль - Самюэль - - - - Коммутативная Алгебра - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/Lee - 45.9 - - - - Lee - Lee - pdf - - - - Lib/Science/Math/Algebra/Lee/Compact_Lie.zip - 24 - 0 - zip - - - - - Lib/Science/Math/Algebra/Lee - - Компактные Группы Ли и Их Представления (Желобенко) - - - Желобенко - Желобенко - - - - Компактные Группы Ли и Их Представления - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/Lee/Sofus Lie.zip - 10.7 - 0 - zip - - - - - Lib/Science/Math/Algebra/Lee - - Теория Алгебр Ли. Топология Групп Ли (Семинар: Софус Ли) - - - Семинар: Софус Ли - Ли - Семинар: - - - Теория Алгебр Ли. Топология Групп Ли - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Algebra/Lee/Zhelobenko.zip - 11.2 - 0 - zip - - - - - Lib/Science/Math/Algebra/Lee - - Представление Редуктивных Алгебр Ли (Желобенко) - - - Желобенко - Желобенко - - - - Представление Редуктивных Алгебр Ли - - - pdf - 0 - 0 - - - - - - - - - - - - Lib/Science/Math/ComplAn - 55.9 - - - - ComplAn - ComplAn - pdf - - - - Lib/Science/Math/ComplAn/Evgrafov.zip - 17.6 - 0 - zip - - - - - Lib/Science/Math/ComplAn - - Аналитические Функции (Евграфов) - - - Евграфов - Евграфов - - - - Аналитические Функции - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/ComplAn/Lavrentev_Shabat.zip - 26.3 - 0 - zip - - - - - Lib/Science/Math/ComplAn - - Методы Теории Функций Комплексного Переменного (Лаврентьев) - - - Лаврентьев - Лаврентьев - - - - Методы Теории Функций Комплексного Переменного - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/ComplAn/Sveshnikov_Tihonov.zip - 12 - 0 - zip - - - - - Lib/Science/Math/ComplAn - - Теория Функций Комплексной Переменной (Свешников) - - - Свешников - Свешников - - - - Теория Функций Комплексной Переменной - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science/Math/Cryptography - 53.4 - - - - Cryptography - Cryptography - pdf - - - - Lib/Science/Math/Cryptography/Yaschenko.zip - 53.4 - 0 - zip - - - - - Lib/Science/Math/Cryptography - - Введение в криптографию (Ященко) - - - Ященко - Ященко - - - - Введение в криптографию - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science/Math/DiffEq - 664.9 - - - - DiffEq - DiffEq - pdf - - - - Lib/Science/Math/DiffEq/Ains.zip - 22.9 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Обыкновенные дифференциальные уравнения (Айнс) - - - Айнс - Айнс - - - - Обыкновенные дифференциальные уравнения - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Andronov.zip - 35.8 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Качественная теория динамических систем второго порядка (Андронов,Леонтович) - - - Андронов - Андронов - - - - Леонтович - Леонтович - - - - Качественная теория динамических систем второго порядка - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Arnold1.zip - 21 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Обыкновенные дифференциальные уравнения (Арнольд) (4) - - - Арнольд - Арнольд - - - - Обыкновенные дифференциальные уравнения - 4 - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Arnold3.zip - 7 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Обыкновенные дифференциальные уравнения (Арнольд,Ильяшенко) - - - Арнольд - Арнольд - - - - Ильяшенко - Ильяшенко - - - - Обыкновенные дифференциальные уравнения - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Arnold4.zip - 9.7 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Теория бифуркаций (Арнольд,Афраймович,Ильяшенко) - - - Арнольд - Арнольд - - - - Афраймович - Афраймович - - - - Ильяшенко - Ильяшенко - - - - Теория бифуркаций - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Arnold_I.zip - 19.7 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Обыкновенные Дифференциальные Уравнения (Арнольд) (3) - - - Арнольд - Арнольд - - - - Обыкновенные Дифференциальные Уравнения - 3 - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Arnold_II.zip - 12 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Лекции об Уравнениях с Частными Производными (Арнольд) - - - Арнольд - Арнольд - - - - Лекции об Уравнениях с Частными Производными - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Arnold_III.zip - 25.2 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Геометрические Методы в Теории ОДУ (Арнольд) (2) - - - Арнольд - Арнольд - - - - Геометрические Методы в Теории ОДУ - 2 - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Bibikov.zip - 33.5 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Курс обыкновенных дифференциальных уравнений (Бибиков) - - - Бибиков - Бибиков - - - - Курс обыкновенных дифференциальных уравнений - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Chang.zip - 8.9 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Нелинейные сингулярно возмущенные краевые задачи (Чанг,Хауэс) - - - Чанг - Чанг - - - - Хауэс - Хауэс - - - - Нелинейные сингулярно возмущенные краевые задачи - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Chesari.zip - 17.1 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Асимптотическое поведение и устойчивость решений ОДУ (Чезари) - - - Чезари - Чезари - - - - Асимптотическое поведение и устойчивость решений ОДУ - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Courant.zip - 30.9 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Уравнения с Частными Производными (Курант) - - - Курант - Курант - - - - Уравнения с Частными Производными - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Errousmith.zip - 8.3 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - ОДУ. Качественная теория с приложениями (Эрроусмит,Плейс) - - - Эрроусмит - Эрроусмит - - - - Плейс - Плейс - - - - ОДУ. Качественная теория с приложениями - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Filipov.zip - 8 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Сборник Задач по Дифференциальным Уравнениям (Филипов) ! - Сборник Задач по Дифференциальным Уравнениям (Филипов) ! - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Golubev.zip - 16.7 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Лекции по аналитической теории дифференциальных уравнений (Голубев) - - - Голубев - Голубев - - - - Лекции по аналитической теории дифференциальных уравнений - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Kamke.zip - 14.2 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Справочник по ДУвЧП первого порядка (Камке) - - - Камке - Камке - - - - Справочник по ДУвЧП первого порядка - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Kamke_I.zip - 34.4 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Справочник по ОДУ (Камке) - - - Камке - Камке - - - - Справочник по ОДУ - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Kodigton.zip - 17.7 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Теория обыкновенных дифференциальных уравнений (Коддингтон,Левисон) - - - Коддингтон - Коддингтон - - - - Левисон - Левисон - - - - Теория обыкновенных дифференциальных уравнений - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/La_Salle.zip - 5.5 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Исследования Устойчивости Прямым Методом Ляпунова (Ла-Салль, Лефшец) - - - Ла-Салль - Ла-Салль - - - - Лефшец - Лефшец - - - - Исследования Устойчивости Прямым Методом Ляпунова - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Lefschetz.zip - 12.9 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Геометрическая теория дифференциальных уравнений (Левшец) - - - Левшец - Левшец - - - - Геометрическая теория дифференциальных уравнений - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Lions.zip - 1.9 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - О некоторых новых методах теории нелинейных ДУсЧП (Лионс) - - - Лионс - Лионс - - - - О некоторых новых методах теории нелинейных ДУсЧП - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Nemickiy.zip - 23.9 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Качественная теория дифференциальных уравнений (Немыцкий,Степанов) - - - Немыцкий - Немыцкий - - - - Степанов - Степанов - - - - Качественная теория дифференциальных уравнений - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Olver.zip - 23.8 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Приложение Групп Ли к Дифференциальным Уравнениям (Олвер) - - - Олвер - Олвер - - - - Приложение Групп Ли к Дифференциальным Уравнениям - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Ovsanikov.zip - 17.9 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Групповой Анализ Дифференциальных Уравнений (Овсянников) - - - Овсянников - Овсянников - - - - Групповой Анализ Дифференциальных Уравнений - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Palis.zip - 12.6 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Геометрическая теория динамических систем (Палис,ди Мелу) - - - Палис - Палис - - - - ди Мелу - Мелу - ди - - - Геометрическая теория динамических систем - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Petrovskiy.zip - 13.5 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Лекции по теории обыкновенных дифференциальных уравнений (Петровский) - - - Петровский - Петровский - - - - Лекции по теории обыкновенных дифференциальных уравнений - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Pommaret.zip - 15.5 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Системы Уравнений с Частными Производными и Псевогруппы Ли (Поммаре) - - - Поммаре - Поммаре - - - - Системы Уравнений с Частными Производными и Псевогруппы Ли - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Pontryagin.zip - 15 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Обыкновенные дифференциальные уравнения (Понтрягин) - - - Понтрягин - Понтрягин - - - - Обыкновенные дифференциальные уравнения - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Reising.zip - 13.8 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Качественная теория нелинейных дифференциальных уравнений (Рейссиг,Сансоне,Конти) - - - Рейссиг - Рейссиг - - - - Сансоне - Сансоне - - - - Конти - Конти - - - - Качественная теория нелинейных дифференциальных уравнений - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Sansone1.zip - 14.3 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Обыкновенные дифференциальные уравнения, т. 1 (Сансоне) - - - Сансоне - Сансоне - - - - Обыкновенные дифференциальные уравнения, - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Sansone2.zip - 17.9 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Обыкновенные дифференциальные уравнения, т. 2 (Сансоне) - - - Сансоне - Сансоне - - - - Обыкновенные дифференциальные уравнения, - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Sparrow.zip - 8.7 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Lorenz Equations: Bifurcations, Chaos and Strange Attractors (Sparrow) - - - Sparrow - Sparrow - - - - Lorenz Equations: Bifurcations, Chaos and Strange Attractors - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Stepanov.zip - 17.3 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Курс Дифференциальных Уравнений (Степанов) - - - Степанов - Степанов - - - - Курс Дифференциальных Уравнений - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Thompson.zip - 12.6 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Неустойчивости и катастрофы в науке и технике (Томпсон) - - - Томпсон - Томпсон - - - - Неустойчивости и катастрофы в науке и технике - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Tihonov.zip - 37.7 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Курс высшей математики и математической физики. Дифференциальные уравнения (Тихонов,Васильева,Свешников) - - - Тихонов - Тихонов - - - - Васильева - Васильева - - - - Свешников - Свешников - - - - Курс высшей математики и математической физики. Дифференциальные уравнения - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Tikhonov.zip - 17.2 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Дифференциальные Уравнения (Тихонов,Васильева,Свешников) - - - Тихонов - Тихонов - - - - Васильева - Васильева - - - - Свешников - Свешников - - - - Дифференциальные Уравнения - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Trofimov_Fomenko.zip - 17.2 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Алгебра и Геометрия Итегрируемых Гамильтоновых ДУ (Трофимов, Фоменко) - - - Трофимов - Трофимов - - - - Фоменко - Фоменко - - - - Алгебра и Геометрия Итегрируемых Гамильтоновых ДУ - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/DiffEq/Vazov.zip - 22.6 - 0 - zip - - - - - Lib/Science/Math/DiffEq - - Асимптотические разложения решений обыкновенных дифференциальных уравнений (Вазов) - - - Вазов - Вазов - - - - Асимптотические разложения решений обыкновенных дифференциальных уравнений - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science/Math/Elemental - 281.8 - - - - Elemental - Elemental - pdf - - - - Lib/Science/Math/Elemental/Felix.zip - 21.5 - 0 - zip - - - - - Lib/Science/Math/Elemental - - Элементарная Математика в Современном Изложение (Феликс) - - - Феликс - Феликс - - - - Элементарная Математика в Современном Изложение - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Elemental/Handbook of Math Functions.zip - 59.5 - 0 - zip - - - - - Lib/Science/Math/Elemental - - Handbook of Mathematical Functions (Abramowitz,Stegun) - - - Abramowitz - Abramowitz - - - - Stegun - Stegun - - - - Handbook of Mathematical Functions - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Elemental/Leng.zip - 7.4 - 0 - zip - - - - - Lib/Science/Math/Elemental - - Математические Беседы для Студентов (Ленг) - - - Ленг - Ленг - - - - Математические Беседы для Студентов - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Elemental/MathDictionary.zip - 159.5 - 0 - zip - - - - - Lib/Science/Math/Elemental - - Encyclopedic Dictionary of Mathematics - Encyclopedic Dictionary of Mathematics - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Elemental/Schaums Mathematical Handbook of Formulas and Tables.zip - 21.1 - 0 - zip - - - - - Lib/Science/Math/Elemental - - Mathematical Handbook of Formulas and Tables (Schaum) - - - Schaum - Schaum - - - - Mathematical Handbook of Formulas and Tables - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Elemental/Vygodsky.zip - 12.8 - 0 - zip - - - - - Lib/Science/Math/Elemental - - Справочник по Элементарной Математике (Выгодский) - - - Выгодский - Выгодский - - - - Справочник по Элементарной Математике - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science/Math/FuncAn - 24.2 - - - - FuncAn - FuncAn - pdf - - - - Lib/Science/Math/FuncAn/Kolmogorov.zip - 22.9 - 0 - zip - - - - - Lib/Science/Math/FuncAn - - Элементы Теории Функций и Функционального Анализа (Колмогоров) - - - Колмогоров - Колмогоров - - - - Элементы Теории Функций и Функционального Анализа - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/FuncAn/Kotutaladze.zip - 1.3 - 0 - zip - - - - - Lib/Science/Math/FuncAn - - Основы Функционального Анализа (Кутателадзе) - - - Кутателадзе - Кутателадзе - - - - Основы Функционального Анализа - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science/Math/Geometry - 168.9 - - - - Geometry - Geometry - pdf - - - - Lib/Science/Math/Geometry/Dubrovin.zip - 32.5 - 0 - zip - - - - - Lib/Science/Math/Geometry - - Современная Геометрия Методы и Ее Приложения (Дубровин) - - - Дубровин - Дубровин - - - - Современная Геометрия Методы и Ее Приложения - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Geometry/Efimov.zip - 15.3 - 0 - zip - - - - - Lib/Science/Math/Geometry - - Краткий Курс Аналитической Геометрии (Ефимов) - - - Ефимов - Ефимов - - - - Краткий Курс Аналитической Геометрии - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Geometry/Fomenko.zip - 16.2 - 0 - zip - - - - - Lib/Science/Math/Geometry - - Дифференциальная Геометрия и Топология: Дополнительные Главы (Фоменко) - - - Фоменко - Фоменко - - - - Дифференциальная Геометрия и Топология: Дополнительные Главы - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Geometry/Hirsch.zip - 12.9 - 0 - zip - - - - - Lib/Science/Math/Geometry - - Дифференциальная Топология (Хирш) - - - Хирш - Хирш - - - - Дифференциальная Топология - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Geometry/Kobayashi_I.zip - 28.8 - 0 - zip - - - - - Lib/Science/Math/Geometry - - Основы Дифференциальной Геометрии т.1 (Кобаяси) - - - Кобаяси - Кобаяси - - - - Основы Дифференциальной Геометрии - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Geometry/Kobayashi_II.zip - 19.4 - 0 - zip - - - - - Lib/Science/Math/Geometry - - Основы Дифференциальной Геометрии т.2 (Кобаяси) - - - Кобаяси - Кобаяси - - - - Основы Дифференциальной Геометрии - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Geometry/Kosneowski.zip - 17.5 - 0 - zip - - - - - Lib/Science/Math/Geometry - - Начальный Курс Алгебраической Топологии (Косневски) - - - Косневски - Косневски - - - - Начальный Курс Алгебраической Топологии - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Geometry/planim.zip - 0.4 - 0 - zip - - - - - Lib/Science/Math/Geometry - - Задачи по планиметрии (Гордин) - - - Гордин - Гордин - - - - Задачи по планиметрии - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Geometry/Reid.zip - 9.7 - 0 - zip - - - - - Lib/Science/Math/Geometry - - Алгебраическая Геометрия для Всех (Рид) - - - Рид - Рид - - - - Алгебраическая Геометрия для Всех - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Geometry/Trofimov.zip - 16.3 - 0 - zip - - - - - Lib/Science/Math/Geometry - - Введение в Геометрию Многообразий с Симметриями (Трофимов) - - - Трофимов - Трофимов - - - - Введение в Геометрию Многообразий с Симметриями - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science/Math/Logic - 0.1 - - - - Logic - Logic - pdf - - - - Lib/Science/Math/Logic/fuzzy.zip - 0.1 - 0 - zip - - - - - Lib/Science/Math/Logic - - Краткий Курс + FAQ по нечеткой логике и Нечеткому Управлению (Анисимов) - - - Анисимов - Анисимов - - - - Краткий Курс + FAQ по нечеткой логике и Нечеткому Управлению - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science/Math/Matan - 1029.6 - - - - Matan - Matan - pdf - - - - Lib/Science/Math/Matan/Arhipov1.zip - 23.8 - 0 - zip - - - - - Lib/Science/Math/Matan - - Лекции по Математическому Анализу (Архипов, Садовничий, Чубариков) - - - Архипов - Архипов - - - - Садовничий - Садовничий - - - - Чубариков - Чубариков - - - - Лекции по Математическому Анализу - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Chezaro1.zip - 23 - 0 - zip - - - - - Lib/Science/Math/Matan - - Элементарный учебник алгебраического анализа и исчисления бесконечно малых (Чезаро) - - - Чезаро - Чезаро - - - - Элементарный учебник алгебраического анализа и исчисления бесконечно малых - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Chezaro2.zip - 18 - 0 - zip - - - - - Lib/Science/Math/Matan - - Элементарный учебник алгебраического анализа и исчисления бесконечно малых (Чезаро) - - - Чезаро - Чезаро - - - - Элементарный учебник алгебраического анализа и исчисления бесконечно малых - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Demidovitch.zip - 16 - 0 - zip - - - - - Lib/Science/Math/Matan - - Сборник задач и упражнений по Математическому Анализу (Демидович) - - - Демидович - Демидович - - - - Сборник задач и упражнений по Математическому Анализу - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Dendonne.zip - 21 - 0 - zip - - - - - Lib/Science/Math/Matan - - Основы Современного Анализа (Дьедонне) - - - Дьедонне - Дьедонне - - - - Основы Современного Анализа - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Ermit.zip - 14.5 - 0 - zip - - - - - Lib/Science/Math/Matan - - Курс анализа (Эрмит) - - - Эрмит - Эрмит - - - - Курс анализа - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Euler1.zip - 15.1 - 0 - zip - - - - - Lib/Science/Math/Matan - - Введение в анализ бесконечных т. 1 (Эйлер) - - - Эйлер - Эйлер - - - - Введение в анализ бесконечных - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Euler2.zip - 18.8 - 0 - zip - - - - - Lib/Science/Math/Matan - - Введение в анализ бесконечных т. 2 (Эйлер) - - - Эйлер - Эйлер - - - - Введение в анализ бесконечных - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Euler3.zip - 25.7 - 0 - zip - - - - - Lib/Science/Math/Matan - - Дифференциальное исчислений (Эйлер) - - - Эйлер - Эйлер - - - - Дифференциальное исчислений - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Euler4.zip - 17.4 - 0 - zip - - - - - Lib/Science/Math/Matan - - Интегральное исчисление т. 1 (Эйлер) - - - Эйлер - Эйлер - - - - Интегральное исчисление - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Euler5.zip - 14.5 - 0 - zip - - - - - Lib/Science/Math/Matan - - Интегральное исчисление т. 2 (Эйлер) - - - Эйлер - Эйлер - - - - Интегральное исчисление - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Euler6.zip - 18.2 - 0 - zip - - - - - Lib/Science/Math/Matan - - Интегральное исчисление т. 3 (Эйлер) - - - Эйлер - Эйлер - - - - Интегральное исчисление - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Fixtengolz1.zip - 24.2 - 0 - zip - - - - - Lib/Science/Math/Matan - - Курс дифференциального и интегрального исчисления т. 1 (Фихтенгольц) - - - Фихтенгольц - Фихтенгольц - - - - Курс дифференциального и интегрального исчисления - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Fixtengolz2.zip - 26.1 - 0 - zip - - - - - Lib/Science/Math/Matan - - Курс дифференциального и интегрального исчисления т. 2 (Фихтенгольц) - - - Фихтенгольц - Фихтенгольц - - - - Курс дифференциального и интегрального исчисления - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Fixtengolz3.zip - 23.9 - 0 - zip - - - - - Lib/Science/Math/Matan - - Курс дифференциального и интегрального исчисления т. 3 (Фихтенгольц) - - - Фихтенгольц - Фихтенгольц - - - - Курс дифференциального и интегрального исчисления - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Gelbaum.zip - 7.6 - 0 - zip - - - - - Lib/Science/Math/Matan - - КонтрПримеры в Анализе (Гелбаум,Олмстед) - - - Гелбаум - Гелбаум - - - - Олмстед - Олмстед - - - - КонтрПримеры в Анализе - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Gursa1.zip - 16.4 - 0 - zip - - - - - Lib/Science/Math/Matan - - Курс математического анализа т. 1-1 (Гурса) - - - Гурса - Гурса - - - - Курс математического анализа т. 1-1 - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Gursa2.zip - 9.7 - 0 - zip - - - - - Lib/Science/Math/Matan - - Курс математического анализа т. 1-2 (Гурса) - - - Гурса - Гурса - - - - Курс математического анализа т. 1-2 - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Gursa3.zip - 12.7 - 0 - zip - - - - - Lib/Science/Math/Matan - - Курс математического анализа т. 2-1 (Гурса) - - - Гурса - Гурса - - - - Курс математического анализа т. 2-1 - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Gursa5.zip - 12.7 - 0 - zip - - - - - Lib/Science/Math/Matan - - Курс математического анализа т. 3-1 (Гурса) - - - Гурса - Гурса - - - - Курс математического анализа т. 3-1 - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Gursa6.zip - 13.9 - 0 - zip - - - - - Lib/Science/Math/Matan - - Курс математического анализа т. 3-2 (Гурса) - - - Гурса - Гурса - - - - Курс математического анализа т. 3-2 - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Hardi1.zip - 22.1 - 0 - zip - - - - - Lib/Science/Math/Matan - - Курс чистой математики (Харди) - - - Харди - Харди - - - - Курс чистой математики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Hardi2.zip - 17.7 - 0 - zip - - - - - Lib/Science/Math/Matan - - Расходящиеся ряды (Харди) - - - Харди - Харди - - - - Расходящиеся ряды - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Huner.zip - 2.7 - 0 - zip - - - - - Lib/Science/Math/Matan - - Applied Analysis (Hunter) - - - Hunter - Hunter - - - - Applied Analysis - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Ilyin1.zip - 30.7 - 0 - zip - - - - - Lib/Science/Math/Matan - - Математический Анализ т. 1 (Ильин,Садовничий,Сендов) - - - Ильин - Ильин - - - - Садовничий - Садовничий - - - - Сендов - Сендов - - - - Математический Анализ - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Ilyin2.zip - 14.3 - 0 - zip - - - - - Lib/Science/Math/Matan - - Математический Анализ т. 2 (Ильин,Садовничий,Сендов) - - - Ильин - Ильин - - - - Садовничий - Садовничий - - - - Сендов - Сендов - - - - Математический Анализ - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Kartan.zip - 15.9 - 0 - zip - - - - - Lib/Science/Math/Matan - - Дифференциально Исчесление (Картан) - - - Картан - Картан - - - - Дифференциально Исчесление - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Koshi.zip - 8.8 - 0 - zip - - - - - Lib/Science/Math/Matan - - Краткое изложение уроков о дифференциальном и интегральном исчислении (Коши) - - - Коши - Коши - - - - Краткое изложение уроков о дифференциальном и интегральном исчислении - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/KUDRIAV1.zip - 18.1 - 0 - zip - - - - - Lib/Science/Math/Matan - - Математический Анализ т.1 (Кудрявцев) - - - Кудрявцев - Кудрявцев - - - - Математический Анализ - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/KUDRIAV2.zip - 14.2 - 0 - zip - - - - - Lib/Science/Math/Matan - - Математический Анализ т.2 (Кудрявцев) - - - Кудрявцев - Кудрявцев - - - - Математический Анализ - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Kudryavzev1.zip - 29 - 0 - zip - - - - - Lib/Science/Math/Matan - - Курс Математического Анализа т. 1 (Кудрявцев) - - - Кудрявцев - Кудрявцев - - - - Курс Математического Анализа - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Kudryavzev2.zip - 25.8 - 0 - zip - - - - - Lib/Science/Math/Matan - - Курс Математического Анализа т. 2 (Кудрявцев) - - - Кудрявцев - Кудрявцев - - - - Курс Математического Анализа - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Kudryavzev3.zip - 13.3 - 0 - zip - - - - - Lib/Science/Math/Matan - - Курс Математического Анализа для Вузов (Кудрявцев) - - - Кудрявцев - Кудрявцев - - - - Курс Математического Анализа для Вузов - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Kurant1.zip - 29.2 - 0 - zip - - - - - Lib/Science/Math/Matan - - Курс дифференциального и интегрального исчисления т. 1 (Курант) - - - Курант - Курант - - - - Курс дифференциального и интегрального исчисления - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Kurant2.zip - 28.6 - 0 - zip - - - - - Lib/Science/Math/Matan - - Курс дифференциального и интегрального исчисления т. 2 (Курант) - - - Курант - Курант - - - - Курс дифференциального и интегрального исчисления - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Landau.zip - 3.3 - 0 - zip - - - - - Lib/Science/Math/Matan - - Основы анализа (Ландау) - - - Ландау - Ландау - - - - Основы анализа - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Lopital.zip - 10.7 - 0 - zip - - - - - Lib/Science/Math/Matan - - Анализ бесконечно малых (де Лопиталь) - - - де Лопиталь - Лопиталь - де - - - Анализ бесконечно малых - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Makarov.zip - 22.7 - 0 - zip - - - - - Lib/Science/Math/Matan - - Дополнительные Главы Математического Анализа (Макаров) - - - Макаров - Макаров - - - - Дополнительные Главы Математического Анализа - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Narasimhan.zip - 9 - 0 - zip - - - - - Lib/Science/Math/Matan - - Анализ на Действительных и Комплексных Многообразиях (Нарасимхан) - - - Нарасимхан - Нарасимхан - - - - Анализ на Действительных и Комплексных Многообразиях - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Nikolsky1.zip - 21.2 - 0 - zip - - - - - Lib/Science/Math/Matan - - Курс Математического Анализа т. 1 (Никольский) - - - Никольский - Никольский - - - - Курс Математического Анализа - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Nikolsky2.zip - 16.1 - 0 - zip - - - - - Lib/Science/Math/Matan - - Курс Математического Анализа т. 2 (Никольский) - - - Никольский - Никольский - - - - Курс Математического Анализа - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Polia1.zip - 11.8 - 0 - zip - - - - - Lib/Science/Math/Matan - - Задачи и Теоремы из Анализа ч.1 (Полиа) - - - Полиа - Полиа - - - - Задачи и Теоремы из Анализа ч.1 - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Polia2.zip - 13.5 - 0 - zip - - - - - Lib/Science/Math/Matan - - Задачи и Теоремы из Анализа ч.2 (Полиа) - - - Полиа - Полиа - - - - Задачи и Теоремы из Анализа ч.2 - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Rudin.zip - 10.7 - 0 - zip - - - - - Lib/Science/Math/Matan - - Основы Математического Анализа (Рудин) - - - Рудин - Рудин - - - - Основы Математического Анализа - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Schwartz1.zip - 36.3 - 0 - zip - - - - - Lib/Science/Math/Matan - - Анализ т.1 (Шварц) - - - Шварц - Шварц - - - - Анализ - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Schwartz2.zip - 21.2 - 0 - zip - - - - - Lib/Science/Math/Matan - - Анализ т.2 (Шварц) - - - Шварц - Шварц - - - - Анализ - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/shilov.zip - 82.3 - 0 - zip - - - - - Lib/Science/Math/Matan - - Математический Анализ Специальный Курс (Шилов) - - - Шилов - Шилов - - - - Математический Анализ Специальный Курс - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Spivak.zip - 4.5 - 0 - zip - - - - - Lib/Science/Math/Matan - - Математический Анализ на Многообразиях (Спивак) - - - Спивак - Спивак - - - - Математический Анализ на Многообразиях - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Titcharmash.zip - 15.4 - 0 - zip - - - - - Lib/Science/Math/Matan - - Теория Функций (Титчмарш) - - - Титчмарш - Титчмарш - - - - Теория Функций - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Titchmarsh.zip - 11.7 - 0 - zip - - - - - Lib/Science/Math/Matan - - Теория Дзета-Функции Римана (Титчмарш) - - - Титчмарш - Титчмарш - - - - Теория Дзета-Функции Римана - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Uittker1.zip - 9.8 - 0 - zip - - - - - Lib/Science/Math/Matan - - Курс Современного Анализа т. 1 (Уиттекер, Ватсон) - - - Уиттекер - Уиттекер - - - - Ватсон - Ватсон - - - - Курс Современного Анализа - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Uittker2.zip - 13.9 - 0 - zip - - - - - Lib/Science/Math/Matan - - Курс Современного Анализа т. 2 (Уиттекер, Ватсон) - - - Уиттекер - Уиттекер - - - - Ватсон - Ватсон - - - - Курс Современного Анализа - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Uspensky.zip - 6 - 0 - zip - - - - - Lib/Science/Math/Matan - - Что такое нестандартный Анализ? (Успенский) - - - Успенский - Успенский - - - - Что такое нестандартный Анализ? - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/VallePussen1.zip - 19.7 - 0 - zip - - - - - Lib/Science/Math/Matan - - Курс анализа бесконечно малых т. 1 (Де Ля Валле-Пуссен) - - - Де Ля Валле-Пуссен - Валле-Пуссен - Де - - - Курс анализа бесконечно малых - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/VallePussen2.zip - 20.3 - 0 - zip - - - - - Lib/Science/Math/Matan - - Курс анализа бесконечно малых т. 2 (Де Ля Валле-Пуссен) - - - Де Ля Валле-Пуссен - Валле-Пуссен - Де - - - Курс анализа бесконечно малых - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Vinogradov1.zip - 14.3 - 0 - zip - - - - - Lib/Science/Math/Matan - - Задачи и Упражнения по Математическому Анализу (Виноградова, Олехник, Садовничий) - - - Виноградова - Виноградова - - - - Олехник - Олехник - - - - Садовничий - Садовничий - - - - Задачи и Упражнения по Математическому Анализу - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Matan/Vinogradov2.zip - 11.6 - 0 - zip - - - - - Lib/Science/Math/Matan - - Математический Анализ в Задачах и Упражнениях (Виноградова,Олехник,Садовничий) - - - Виноградова - Виноградова - - - - Олехник - Олехник - - - - Садовничий - Садовничий - - - - Математический Анализ в Задачах и Упражнениях - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science/Math/MatPhys - 629.1 - - - - MatPhys - MatPhys - pdf - - - - Lib/Science/Math/MatPhys/Bogoyavlensky.zip - 11.9 - 0 - zip - - - - - Lib/Science/Math/MatPhys - - Опрокидывающиея Солитоны (Богоявленский) - - - Богоявленский - Богоявленский - - - - Опрокидывающиея Солитоны - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Budak.zip - 40.8 - 0 - zip - - - - - Lib/Science/Math/MatPhys - - Сборник задач по Математической Физике (Будак,Самарский,Тихонов) - - - Будак - Будак - - - - Самарский - Самарский - - - - Тихонов - Тихонов - - - - Сборник задач по Математической Физике - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Courant1.zip - 23.7 - 0 - zip - - - - - Lib/Science/Math/MatPhys - - Методы Математической Физики т. 1 (Курант, Гильберт) - - - Курант - Курант - - - - Гильберт - Гильберт - - - - Методы Математической Физики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Courant2.zip - 28.7 - 0 - zip - - - - - Lib/Science/Math/MatPhys - - Методы Математической Физики т. 2 (Курант, Гильберт) - - - Курант - Курант - - - - Гильберт - Гильберт - - - - Методы Математической Физики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Glimm.zip - 19 - 0 - zip - - - - - Lib/Science/Math/MatPhys - - Математические Методы Квантовой Физики (Глимм, Джаффе) - - - Глимм - Глимм - - - - Джаффе - Джаффе - - - - Математические Методы Квантовой Физики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Hamermesh.zip - 18.8 - 0 - zip - - - - - Lib/Science/Math/MatPhys - - Теория Групп и ее применение к физическим проблемам (Хамермеш) - - - Хамермеш - Хамермеш - - - - Теория Групп и ее применение к физическим проблемам - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Ibragimov.zip - 11 - 0 - zip - - - - - Lib/Science/Math/MatPhys - - Группы Преобразований в Математической Физике (Ибрагимов) - - - Ибрагимов - Ибрагимов - - - - Группы Преобразований в Математической Физике - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Kurant2.zip - 23.7 - 0 - zip - - - - - Lib/Science/Math/MatPhys - - Методы Математической Физики т. 1 (Курант,Гильберт) - - - Курант - Курант - - - - Гильберт - Гильберт - - - - Методы Математической Физики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Kurant3.zip - 28.7 - 0 - zip - - - - - Lib/Science/Math/MatPhys - - Методы Математической Физики т. 2 (Курант,Гильберт) - - - Курант - Курант - - - - Гильберт - Гильберт - - - - Методы Математической Физики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Madelung.zip - 20.1 - 0 - zip - - - - - Lib/Science/Math/MatPhys - - Математический Аппарат Физики (Маделунг) - - - Маделунг - Маделунг - - - - Математический Аппарат Физики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Mathews.zip - 12.2 - 0 - zip - - - - - Lib/Science/Math/MatPhys - - Математические Методы в Физики (Мэтьюз, Уокер) - - - Мэтьюз - Мэтьюз - - - - Уокер - Уокер - - - - Математические Методы в Физики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Miller.zip - 14.5 - 0 - zip - - - - - Lib/Science/Math/MatPhys - - Симметрия и Разделение Переменных (Миллер) - - - Миллер - Миллер - - - - Симметрия и Разделение Переменных - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Mors1.zip - 49.9 - 0 - zip - - - - - Lib/Science/Math/MatPhys - - Методы Теоретической Физики т. 1 (Морс,Фешбах) - - - Морс - Морс - - - - Фешбах - Фешбах - - - - Методы Теоретической Физики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Mors2.zip - 47.7 - 0 - zip - - - - - Lib/Science/Math/MatPhys - - Методы Теоретической Физики т. 2 (Морс,Фешбах) - - - Морс - Морс - - - - Фешбах - Фешбах - - - - Методы Теоретической Физики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Mozer.zip - 12.5 - 0 - zip - - - - - Lib/Science/Math/MatPhys - - Интегрируемые Гамильтоновы Системы и Спектральная Теория (Мозер) - - - Мозер - Мозер - - - - Интегрируемые Гамильтоновы Системы и Спектральная Теория - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Nesis.zip - 6.4 - 0 - zip - - - - - Lib/Science/Math/MatPhys - - Методы Математической Физики (Несис) - - - Несис - Несис - - - - Методы Математической Физики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Nikiforov.zip - 12.5 - 0 - zip - - - - - Lib/Science/Math/MatPhys - - Специальные Функции Математической Физики (Никифоров,Уваров) - - - Никифоров - Никифоров - - - - Уваров - Уваров - - - - Специальные Функции Математической Физики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Nyuel.zip - 11.9 - 0 - zip - - - - - Lib/Science/Math/MatPhys - - Солитоны в Математической Физике (Ньюэлл) - - - Ньюэлл - Ньюэлл - - - - Солитоны в Математической Физике - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Rihtmayer1.zip - 22.7 - 0 - zip - - - - - Lib/Science/Math/MatPhys - - Принципы Современной Математической Физики т. 1 (Рихтмайер) - - - Рихтмайер - Рихтмайер - - - - Принципы Современной Математической Физики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Rihtmayer2.zip - 16.3 - 0 - zip - - - - - Lib/Science/Math/MatPhys - - Принципы Современной Математической Физики т. 2 (Рихтмайер) - - - Рихтмайер - Рихтмайер - - - - Принципы Современной Математической Физики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Schutz.zip - 12.8 - 0 - zip - - - - - Lib/Science/Math/MatPhys - - Геометрические Методы Математической Физики (Шутц) - - - Шутц - Шутц - - - - Геометрические Методы Математической Физики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Shapiro.zip - 3.9 - 0 - zip - - - - - Lib/Science/Math/MatPhys - - Лекции по Топологии для Физиков (Шапиро, Ольшанецкий) - - - Шапиро - Шапиро - - - - Ольшанецкий - Ольшанецкий - - - - Лекции по Топологии для Физиков - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Shredinger.zip - 7.7 - 0 - zip - - - - - Lib/Science/Math/MatPhys - - Лекции по Физике (Шредингер) - - - Шредингер - Шредингер - - - - Лекции по Физике - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Sobolev.zip - 10.5 - 0 - zip - - - - - Lib/Science/Math/MatPhys - - Некоторые Применения Функционального Анализа в Математической Физике (Соболев) - - - Соболев - Соболев - - - - Некоторые Применения Функционального Анализа в Математической Физике - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Steklov.zip - 17.1 - 0 - zip - - - - - Lib/Science/Math/MatPhys - - Основне Задачи Математической Физики (Стеклов) - - - Стеклов - Стеклов - - - - Основне Задачи Математической Физики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Tihonov.zip - 26 - 0 - zip - - - - - Lib/Science/Math/MatPhys - - Уравнения Математической Физики (Тихонов,Самарский) - - - Тихонов - Тихонов - - - - Самарский - Самарский - - - - Уравнения Математической Физики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Yukava.zip - 6 - 0 - zip - - - - - Lib/Science/Math/MatPhys - - Лекции по Физике (Юкава) - - - Юкава - Юкава - - - - Лекции по Физике - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Zeldovich.zip - 16 - 0 - zip - - - - - Lib/Science/Math/MatPhys - - Элементы математической Физики (Зельдович,Мышкис) - - - Зельдович - Зельдович - - - - Мышкис - Мышкис - - - - Элементы математической Физики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Zommerfeld.zip - 14.9 - 0 - zip - - - - - Lib/Science/Math/MatPhys - - ДУвЧП Физики (Зомерфельд) - - - Зомерфельд - Зомерфельд - - - - ДУвЧП Физики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Soliton - 81.3 - - - - Soliton - Soliton - pdf - - - - Lib/Science/Math/MatPhys/Soliton/Ablowitz.zip - 17.6 - 0 - zip - - - - - Lib/Science/Math/MatPhys/Soliton - - Солитоны и Метод Обратной Задачи (Абловиц,Сигур) - - - Абловиц - Абловиц - - - - Сигур - Сигур - - - - Солитоны и Метод Обратной Задачи - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Soliton/Bullaf.zip - 16.2 - 0 - zip - - - - - Lib/Science/Math/MatPhys/Soliton - - Солитоны (Буллаф,Кодри) - - - Буллаф - Буллаф - - - - Кодри - Кодри - - - - Солитоны - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Soliton/Dodd.zip - 27.2 - 0 - zip - - - - - Lib/Science/Math/MatPhys/Soliton - - Солитоны и нелинейные волновые уравнения (Додд,Эйлбек,Гиббон,Моррис) - - - Додд - Додд - - - - Эйлбек - Эйлбек - - - - Гиббон - Гиббон - - - - Моррис - Моррис - - - - Солитоны и нелинейные волновые уравнения - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Soliton/Lem.zip - 9.9 - 0 - zip - - - - - Lib/Science/Math/MatPhys/Soliton - - Введение в теорию Солитонов (Лэм) - - - Лэм - Лэм - - - - Введение в теорию Солитонов - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/MatPhys/Soliton/Zaharov.zip - 10.4 - 0 - zip - - - - - Lib/Science/Math/MatPhys/Soliton - - Теория Солитонов: Метод Обратной Задачи (Захаров, Манаков, Новиков, Питаевский) - - - Захаров - Захаров - - - - Манаков - Манаков - - - - Новиков - Новиков - - - - Питаевский - Питаевский - - - - Теория Солитонов: Метод Обратной Задачи - - - pdf - 0 - 0 - - - - - - - - - - - - Lib/Science/Math/NumMethods - 378.9 - - - - NumMethods - NumMethods - pdf - - - - Lib/Science/Math/NumMethods/Afifi.zip - 21.1 - 0 - zip - - - - - Lib/Science/Math/NumMethods - - Статистический Анализ - подход с использованием ЭВМ (Афифи,Эйзен) - - Статистический Анализ - - - - Афифи - Афифи - - - - Эйзен - Эйзен - - - - подход с использованием ЭВМ - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/NumMethods/Avetisyan.zip - 43.2 - 0 - zip - - - - - Lib/Science/Math/NumMethods - - Теоретические Основы Информатики (Аветисян,Аветисян) - - - Аветисян - Аветисян - - - - Аветисян - Аветисян - - - - Теоретические Основы Информатики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/NumMethods/Bahvalov.zip - 28.7 - 0 - zip - - - - - Lib/Science/Math/NumMethods - - Численные Методы (Бахвалов) - - - Бахвалов - Бахвалов - - - - Численные Методы - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/NumMethods/Bartenev.zip - 75.9 - 0 - zip - - - - - Lib/Science/Math/NumMethods - - Современный Фортран (Бартеньев) - - - Бартеньев - Бартеньев - - - - Современный Фортран - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/NumMethods/Kalitkin.zip - 48.2 - 0 - zip - - - - - Lib/Science/Math/NumMethods - - Численные Методы (Калиткин) - - - Калиткин - Калиткин - - - - Численные Методы - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/NumMethods/Kitaev.zip - 45 - 0 - zip - - - - - Lib/Science/Math/NumMethods - - Классические и Квантовые Вычисления (Китаев,Шень,Вылый) - - - Китаев - Китаев - - - - Шень - Шень - - - - Вылый - Вылый - - - - Классические и Квантовые Вычисления - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/NumMethods/Mauch.zip - 6.5 - 0 - zip - - - - - Lib/Science/Math/NumMethods - - Introduction to Methods of Applied Mathematics (Mauch) - - - Mauch - Mauch - - - - Introduction to Methods of Applied Mathematics - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/NumMethods/Samarskii.zip - 45.3 - 0 - zip - - - - - Lib/Science/Math/NumMethods - - Введение в Численные Методы (Самарский) - - - Самарский - Самарский - - - - Введение в Численные Методы - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/NumMethods/shannon1948.zip - 0.3 - 0 - zip - - - - - Lib/Science/Math/NumMethods - - A Mathematical Theory of Communication (Shannon) - - - Shannon - Shannon - - - - A Mathematical Theory of Communication - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/NumMethods/Dobbs.zip - 64.6 - 0 - zip - - - - Dobbs Algorithm Collection - Dobbs Algorithm Collection - pdf - - - - - Lib/Science/Math/NumMethods/Dobbs - - Fundamentals of Data Structures (Horowitz) - - - Horowitz - Horowitz - - - - Fundamentals of Data Structures - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/NumMethods/Dobbs - - Data Structures, Algorithms and Program Style Using C (Korsh) - - - Korsh - Korsh - - - - Data Structures, Algorithms and Program Style Using C - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/NumMethods/Dobbs - - Data Structures and Algorithm Analysis in C (Weiss) - - - Weiss - Weiss - - - - Data Structures and Algorithm Analysis in C - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/NumMethods/Dobbs - - Data Structures: From Arrays to Priority Queues (Amsbury) - - - Amsbury - Amsbury - - - - Data Structures: From Arrays to Priority Queues - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/NumMethods/Dobbs - - Information Retrieval: Data Structures and Algorithms (Frakes) - - - Frakes - Frakes - - - - Information Retrieval: Data Structures and Algorithms - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/NumMethods/Dobbs - - Introduction to Algorithms (Cormen) - - - Cormen - Cormen - - - - Introduction to Algorithms - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/NumMethods/Dobbs - - Practical Data Structures in C++ (Flaming) - - - Flaming - Flaming - - - - Practical Data Structures in C++ - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/NumMethods/Dobbs - - Reliable Data Structures in C (Plum) - - - Plum - Plum - - - - Reliable Data Structures in C - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/NumMethods/Dobbs - - Data Structures and Algorithms (Aho) - - - Aho - Aho - - - - Data Structures and Algorithms - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/NumMethods/Dobbs - - DDJ Algorithms and Data Structures Articles - DDJ Algorithms and Data Structures Articles - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/NumMethods/Dobbs - - Accuracy and Stability of Numerical Algorithms - Accuracy and Stability of Numerical Algorithms - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/NumMethods/Dobbs - - Compact Numerical Methods for Computers - Compact Numerical Methods for Computers - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/NumMethods/Dobbs - - Computing for Scientists and Engineers - Computing for Scientists and Engineers - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/NumMethods/Dobbs - - Foundamentals of Numerical Computing - Foundamentals of Numerical Computing - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/NumMethods/Dobbs - - Numerical Methods - Numerical Methods - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/NumMethods/Dobbs - - Numerical Recipes in C - Numerical Recipes in C - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/NumMethods/Dobbs - - Scientific Computing with PCs - Scientific Computing with PCs - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/NumMethods/Dobbs - - Elementaty Numerical Analysis - Elementaty Numerical Analysis - - - pdf - 0 - 0 - - - - - - - - - - - Lib/Science/Math/Other - 42.7 - - - - Other - Other - pdf - - - - Lib/Science/Math/Other/Attractors.zip - 16.8 - 0 - zip - - - - - Lib/Science/Math/Other - - Странные Аттракторы, Сборник Статей - Странные Аттракторы, Сборник Статей - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Other/Cotterell.zip - 3.7 - 0 - zip - - - - - Lib/Science/Math/Other - - Slightly curved or kinked cracks ( Cotterell, Rice) - - - Cotterell - Cotterell - - - - Rice - Rice - - - - Slightly curved or kinked cracks - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Other/Zaslavsky.zip - 8.9 - 0 - zip - - - - - Lib/Science/Math/Other - - Слабый Хаос и Квазирегулярные структуры (Заславский, Усиков, Черников) - - - Заславский - Заславский - - - - Усиков - Усиков - - - - Черников - Черников - - - - Слабый Хаос и Квазирегулярные структуры - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Other/Fractals - 13.2 - - - - Fractals - Fractals - pdf - - - - Lib/Science/Math/Other/Fractals/f_si.zip - 0.1 - 0 - zip - - - - - Lib/Science/Math/Other/Fractals - - Фракталы, синтез изображений (Сундучков) - - - Сундучков - Сундучков - - - - Фракталы, синтез изображений - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Other/Fractals/Fedder.zip - 13.1 - 0 - zip - - - - - Lib/Science/Math/Other/Fractals - - Фракталы (Федер) - - - Федер - Федер - - - - Фракталы - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/Other/Fractals/fractals.zip - 0 - 0 - zip - - - - - Lib/Science/Math/Other/Fractals - - Введение во Фракталы и Фрактальные Множества (Шабаршин) - - - Шабаршин - Шабаршин - - - - Введение во Фракталы и Фрактальные Множества - - - pdf - 0 - 0 - - - - - - - - - - - - Lib/Science/Math/TeorVer - 294.4 - - - - TeorVer - TeorVer - pdf - - - - Lib/Science/Math/TeorVer/Feller_I.zip - 20.7 - 0 - zip - - - - - Lib/Science/Math/TeorVer - - Введение в Теорию Вероятностей и Ее Приложения т.1 (Феллер) - - - Феллер - Феллер - - - - Введение в Теорию Вероятностей и Ее Приложения - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/TeorVer/Feller_II.zip - 31.9 - 0 - zip - - - - - Lib/Science/Math/TeorVer - - Введение в Теорию Вероятностей и Ее Приложения т.2 (Феллер) - - - Феллер - Феллер - - - - Введение в Теорию Вероятностей и Ее Приложения - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/TeorVer/Gardiner.zip - 30.4 - 0 - zip - - - - - Lib/Science/Math/TeorVer - - Стохастические Методы в Естественных Науках (Гардинер) - - - Гардинер - Гардинер - - - - Стохастические Методы в Естественных Науках - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/TeorVer/Kats.zip - 14.8 - 0 - zip - - - - - Lib/Science/Math/TeorVer - - Статистическая Независимость в Теории Вероятностей, Анализе и Теории Чисел (Кац) - - - Кац - Кац - - - - Статистическая Независимость в Теории Вероятностей, Анализе и Теории Чисел - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/TeorVer/Kliatskin.zip - 22.3 - 0 - zip - - - - - Lib/Science/Math/TeorVer - - Стохастические Уравнения и Волны в Случайно-Неоднородных Средах - Стохастические Уравнения и Волны в Случайно-Неоднородных Средах - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/TeorVer/Kolmogorov.zip - 15.3 - 0 - zip - - - - - Lib/Science/Math/TeorVer - - Основные Понятия Теории Вероятностей (Колмогоров) - - - Колмогоров - Колмогоров - - - - Основные Понятия Теории Вероятностей - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/TeorVer/portr.zip - 0.5 - 0 - zip - - - - - Lib/Science/Math/TeorVer - - Теория Вероятностей (Чернова) - - - Чернова - Чернова - - - - Теория Вероятностей - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/TeorVer/Pugachev.zip - 26.9 - 0 - zip - - - - - Lib/Science/Math/TeorVer - - Стохастические Дифференциальные Системы. Анализ и Фильтрация (Пугачев,Синицын) - - - Пугачев - Пугачев - - - - Синицын - Синицын - - - - Стохастические Дифференциальные Системы. Анализ и Фильтрация - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/TeorVer/Rozanov.zip - 14.7 - 0 - zip - - - - - Lib/Science/Math/TeorVer - - Случайные Поля и Стахастические Уравнения с Частными Производными (Розанов) - - - Розанов - Розанов - - - - Случайные Поля и Стахастические Уравнения с Частными Производными - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/TeorVer/Sekey.zip - 50 - 0 - zip - - - - - Lib/Science/Math/TeorVer - - Парадоксы в Теории Вероятностей и Математической Статистике (Секей) - - - Секей - Секей - - - - Парадоксы в Теории Вероятностей и Математической Статистике - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Math/TeorVer/Shiryaev.zip - 66.7 - 0 - zip - - - - - Lib/Science/Math/TeorVer - - Вероятность (Ширяев) - - - Ширяев - Ширяев - - - - Вероятность - - - pdf - 0 - 0 - - - - - - - - - - - - Lib/Science/Mechanics - 1748.3 - - - - Mechanics - Mechanics - pdf - - - - Lib/Science/Mechanics/Damaskinski.zip - 1.2 - 0 - zip - - - - - Lib/Science/Mechanics - - Деформированные Осциляторы и их Приложение (Дамаскиеский,Кулиш) - - - Дамаскиеский - Дамаскиеский - - - - Кулиш - Кулиш - - - - Деформированные Осциляторы и их Приложение - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Frik1.zip - 1 - 0 - zip - - - - - Lib/Science/Mechanics - - Турбулентность: Модели и Подходы ч.1 (Фрик) - - - Фрик - Фрик - - - - Турбулентность: Модели и Подходы ч.1 - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Frik2.zip - 1.8 - 0 - zip - - - - - Lib/Science/Mechanics - - Турбулентность: Модели и Подходы ч.2 (Фрик) - - - Фрик - Фрик - - - - Турбулентность: Модели и Подходы ч.2 - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Kirhgof.zip - 17.7 - 0 - zip - - - - - Lib/Science/Mechanics - - Механика (Кирхгоф) - - - Кирхгоф - Кирхгоф - - - - Механика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Mandelshtam.zip - 19.5 - 0 - zip - - - - - Lib/Science/Mechanics - - Полное Собрание Трудов (Мандельштам) - - - Мандельштам - Мандельштам - - - - Полное Собрание Трудов - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Mitropolski_Lopatin.zip - 11.6 - 0 - zip - - - - - Lib/Science/Mechanics - - Теоретико-Групповой Подход в Ассимптотических Методах Нелинейной Маханики (Митропольский,Лопатин) - - - Митропольский - Митропольский - - - - Лопатин - Лопатин - - - - Теоретико-Групповой Подход в Ассимптотических Методах Нелинейной Маханики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Operator algebra.zip - 22.4 - 0 - zip - - - - - Lib/Science/Mechanics - - Операторные Алгебры и Квантовая Статистическая Механика (Браттели,Робинсон) - - - Браттели - Браттели - - - - Робинсон - Робинсон - - - - Операторные Алгебры и Квантовая Статистическая Механика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Perelomov_CohStates.zip - 8.8 - 0 - zip - - - - - Lib/Science/Mechanics - - Обобщенные Когерентные Состояния и их Применения (Переломов) - - - Переломов - Переломов - - - - Обобщенные Когерентные Состояния и их Применения - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/QM_eqs.zip - 19.2 - 0 - zip - - - - - Lib/Science/Mechanics - - Симметрия Уравнений Квантовой Механики (Фущич, Никитин) - - - Фущич - Фущич - - - - Никитин - Никитин - - - - Симметрия Уравнений Квантовой Механики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Rojdestvenski.zip - 27.3 - 0 - zip - - - - - Lib/Science/Mechanics - - Системы Квазилинейных Уравнений и Их Приложение к Газовой Динамике (Рождественский,Яненко) - - - Рождественский - Рождественский - - - - Яненко - Яненко - - - - Системы Квазилинейных Уравнений и Их Приложение к Газовой Динамике - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Rouch.zip - 70.6 - 0 - zip - - - - - Lib/Science/Mechanics - - Вычислительная Гидродинамика (Роуч) - - - Роуч - Роуч - - - - Вычислительная Гидродинамика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Sinj.zip - 1.6 - 0 - zip - - - - - Lib/Science/Mechanics - - Тензорные методы в динамике (Синдж) - - - Синдж - Синдж - - - - Тензорные методы в динамике - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Whitham.zip - 25.3 - 0 - zip - - - - - Lib/Science/Mechanics - - Линейные и Нелинейные Волны (Уизем) - - - Уизем - Уизем - - - - Линейные и Нелинейные Волны - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Zomerfeld.zip - 18.9 - 0 - zip - - - - - Lib/Science/Mechanics - - Механика (Зомерфельд) - - - Зомерфельд - Зомерфельд - - - - Механика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/AnalMech - 102.4 - - - - Аналитическая Механика - Аналитическая Механика - pdf - - - - Lib/Science/Mechanics/AnalMech/Gantmaher.zip - 9.6 - 0 - zip - - - - - Lib/Science/Mechanics/AnalMech - - Лекции по аналитической механике (Гантмахер) - - - Гантмахер - Гантмахер - - - - Лекции по аналитической механике - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/AnalMech/Haar.zip - 8.3 - 0 - zip - - - - - Lib/Science/Mechanics/AnalMech - - Основы гамильтоновой механики (Хаар) - - - Хаар - Хаар - - - - Основы гамильтоновой механики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/AnalMech/Langranj1.zip - 21.1 - 0 - zip - - - - - Lib/Science/Mechanics/AnalMech - - Аналитическая механика т.1 (Лангранж) - - - Лангранж - Лангранж - - - - Аналитическая механика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/AnalMech/Langranj2.zip - 12 - 0 - zip - - - - - Lib/Science/Mechanics/AnalMech - - Аналитическая механика т.2 (Лангранж) - - - Лангранж - Лангранж - - - - Аналитическая механика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/AnalMech/Uitker.zip - 51.3 - 0 - zip - - - - - Lib/Science/Mechanics/AnalMech - - Аналитическая динамика (Уитткер) - - - Уитткер - Уитткер - - - - Аналитическая динамика - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science/Mechanics/Asymptotic - 24.9 - - - - Ассимптотические Методы - Ассимптотические Методы - pdf - - - - Lib/Science/Mechanics/Asymptotic/Moiseev.zip - 24.9 - 0 - zip - - - - - Lib/Science/Mechanics/Asymptotic - - Ассимптотические Методы Нелинейной Механики (Моисеев) - - - Моисеев - Моисеев - - - - Ассимптотические Методы Нелинейной Механики - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science/Mechanics/Dynamics - 427.9 - - - - Динамические Системы - Динамические Системы - pdf - - - - Lib/Science/Mechanics/Dynamics/Birkgof.zip - 40 - 0 - zip - - - - - Lib/Science/Mechanics/Dynamics - - Динамические системы (Биркгоф) - - - Биркгоф - Биркгоф - - - - Динамические системы - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Dynamics/Bowmen.zip - 10.3 - 0 - zip - - - - - Lib/Science/Mechanics/Dynamics - - Методы Символической Динамики (Боуэн) - - - Боуэн - Боуэн - - - - Методы Символической Динамики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Dynamics/Cadomcev.zip - 92.3 - 0 - zip - - - - - Lib/Science/Mechanics/Dynamics - - Динамика и Информация (Кадомцев) - - - Кадомцев - Кадомцев - - - - Динамика и Информация - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Dynamics/Dirac.zip - 2.5 - 0 - zip - - - - - Lib/Science/Mechanics/Dynamics - - Обобщенная Гамильтонова Динамика (Дирак) - - - Дирак - Дирак - - - - Обобщенная Гамильтонова Динамика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Dynamics/Giacaglia.zip - 12.7 - 0 - zip - - - - - Lib/Science/Mechanics/Dynamics - - Методы Теории Возмущения Для нелинейных Систем (Джакалья) - - - Джакалья - Джакалья - - - - Методы Теории Возмущения Для нелинейных Систем - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Dynamics/Holodniok.zip - 12.9 - 0 - zip - - - - - Lib/Science/Mechanics/Dynamics - - Методы Анализа Нелинейных Динамических Моделей (Холодниок,Клич,Кубичек,Марек) - - - Холодниок - Холодниок - - - - Клич - Клич - - - - Кубичек - Кубичек - - - - Марек - Марек - - - - Методы Анализа Нелинейных Динамических Моделей - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Dynamics/InvitDynSys.zip - 71.5 - 0 - zip - - - - - Lib/Science/Mechanics/Dynamics - - Invintation to Dynamical Systems (Scheinerman) - - - Scheinerman - Scheinerman - - - - Invintation to Dynamical Systems - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Dynamics/Leontovich.zip - 22.4 - 0 - zip - - - - - Lib/Science/Mechanics/Dynamics - - Методы и Приемы Качественного Исследования Динамических Систем на Плоскости (Леонтович) - - - Леонтович - Леонтович - - - - Методы и Приемы Качественного Исследования Динамических Систем на Плоскости - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Dynamics/Lesnov.zip - 11.7 - 0 - zip - - - - - Lib/Science/Mechanics/Dynamics - - Групповые Методы Интегрирования Нелинейных Динамических Систем (Лезнов, Савельев) - - - Лезнов - Лезнов - - - - Савельев - Савельев - - - - Групповые Методы Интегрирования Нелинейных Динамических Систем - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Dynamics/Liberman.zip - 79.2 - 0 - zip - - - - - Lib/Science/Mechanics/Dynamics - - Регулярная и Стахастическая Динамика (Лихтенберг, Либерман) - - - Лихтенберг - Лихтенберг - - - - Либерман - Либерман - - - - Регулярная и Стахастическая Динамика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Dynamics/Pars.zip - 30.3 - 0 - zip - - - - - Lib/Science/Mechanics/Dynamics - - Аналитическая динамика (Парс) - - - Парс - Парс - - - - Аналитическая динамика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Dynamics/Sing.zip - 13.8 - 0 - zip - - - - - Lib/Science/Mechanics/Dynamics - - Классическая динамика (Синг) - - - Синг - Синг - - - - Классическая динамика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Dynamics/Tabor.zip - 14.9 - 0 - zip - - - - - Lib/Science/Mechanics/Dynamics - - Хаос и Итегрируемость в Нелиненой Динамике (Табор) - - - Табор - Табор - - - - Хаос и Итегрируемость в Нелиненой Динамике - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Dynamics/Yakobi.zip - 13.3 - 0 - zip - - - - - Lib/Science/Mechanics/Dynamics - - Лекции по динамике (Якоби) - - - Якоби - Якоби - - - - Лекции по динамике - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science/Mechanics/Katastroph - 90.4 - - - - Теория Катастроф - Теория Катастроф - pdf - - - - Lib/Science/Mechanics/Katastroph/Arnold.zip - 5.8 - 0 - zip - - - - - Lib/Science/Mechanics/Katastroph - - Теория Катастроф (Арнольд) - - - Арнольд - Арнольд - - - - Теория Катастроф - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Katastroph/Breker.zip - 7.3 - 0 - zip - - - - - Lib/Science/Mechanics/Katastroph - - Дифференцируемые Ростки и Катастрофы (Брекер,Ландер) - - - Брекер - Брекер - - - - Ландер - Ландер - - - - Дифференцируемые Ростки и Катастрофы - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Katastroph/Hilmor1.zip - 13.3 - 0 - zip - - - - - Lib/Science/Mechanics/Katastroph - - Прикладная Теория Катастроф т. 1 (Гилмор) - - - Гилмор - Гилмор - - - - Прикладная Теория Катастроф - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Katastroph/Hilmor2.zip - 12.4 - 0 - zip - - - - - Lib/Science/Mechanics/Katastroph - - Прикладная Теория Катастроф т. 2 (Гилмор) - - - Гилмор - Гилмор - - - - Прикладная Теория Катастроф - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Katastroph/Kasti.zip - 9.5 - 0 - zip - - - - - Lib/Science/Mechanics/Katastroph - - Большие Системы: Связаность,Сложность и Катастрофы (Касти) - - - Касти - Касти - - - - Большие Системы: Связаность,Сложность и Катастрофы - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Katastroph/Poston.zip - 30.5 - 0 - zip - - - - - Lib/Science/Mechanics/Katastroph - - Теория Катастроф и Ее Приложения (Постон,Стюарт) - - - Постон - Постон - - - - Стюарт - Стюарт - - - - Теория Катастроф и Ее Приложения - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Katastroph/Tompson.zip - 11.5 - 0 - zip - - - - - Lib/Science/Mechanics/Katastroph - - Неустойчивости и Катастрофы в Науке и Технике (Томпсон) - - - Томпсон - Томпсон - - - - Неустойчивости и Катастрофы в Науке и Технике - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science/Mechanics/KlassMech - 256.6 - - - - Классическая Механика - Классическая Механика - pdf - - - - Lib/Science/Mechanics/KlassMech/Arnold.zip - 23.6 - 0 - zip - - - - - Lib/Science/Mechanics/KlassMech - - Математические Методы Классической Механики (Арнольд) - - - Арнольд - Арнольд - - - - Математические Методы Классической Механики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/KlassMech/Goldstein.zip - 79.2 - 0 - zip - - - - - Lib/Science/Mechanics/KlassMech - - Классическая Механика (Голдстейн) - - - Голдстейн - Голдстейн - - - - Классическая Механика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/KlassMech/Kotkin.zip - 45.6 - 0 - zip - - - - - Lib/Science/Mechanics/KlassMech - - Сборник Задач по Классической Механике (Коткин, Сербо) - - - Коткин - Коткин - - - - Сербо - Сербо - - - - Сборник Задач по Классической Механике - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/KlassMech/Leech.zip - 18.5 - 0 - zip - - - - - Lib/Science/Mechanics/KlassMech - - Классическая Механика (Лич) - - - Лич - Лич - - - - Классическая Механика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/KlassMech/Nayfeh.zip - 15.7 - 0 - zip - - - - - Lib/Science/Mechanics/KlassMech - - Методы Возмущений (Найфэ) - - - Найфэ - Найфэ - - - - Методы Возмущений - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/KlassMech/Perelomov.zip - 8.4 - 0 - zip - - - - - Lib/Science/Mechanics/KlassMech - - Интегрируемые Системы Классической Механики и Алгебры Ли (Переломов) - - - Переломов - Переломов - - - - Интегрируемые Системы Классической Механики и Алгебры Ли - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/KlassMech/Synge.zip - 54.9 - 0 - zip - - - - - Lib/Science/Mechanics/KlassMech - - Классическая Динамика (Синг) - - - Синг - Синг - - - - Классическая Динамика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/KlassMech/Tatarinov.zip - 10.6 - 0 - zip - - - - - Lib/Science/Mechanics/KlassMech - - Лекции по классической динамике (Татаринов) - - - Татаринов - Татаринов - - - - Лекции по классической динамике - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science/Mechanics/Kolebaniya - 172.5 - - - - Колебания - Колебания - pdf - - - - Lib/Science/Mechanics/Kolebaniya/Andronov.zip - 40.2 - 0 - zip - - - - - Lib/Science/Mechanics/Kolebaniya - - Теория Колебаний (Андронов,Витт,Хайкин) - - - Андронов - Андронов - - - - Витт - Витт - - - - Хайкин - Хайкин - - - - Теория Колебаний - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Kolebaniya/Bogolyubov.zip - 15.9 - 0 - zip - - - - - Lib/Science/Mechanics/Kolebaniya - - Ассимптотические Методы в Теории Нелинейных Колебаний (Боголюбов,Митропольский) - - - Боголюбов - Боголюбов - - - - Митропольский - Митропольский - - - - Ассимптотические Методы в Теории Нелинейных Колебаний - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Kolebaniya/Jackalya.zip - 13 - 0 - zip - - - - - Lib/Science/Mechanics/Kolebaniya - - Методы Теории Возмущений для Нелинейных Систем (Джакалья) - - - Джакалья - Джакалья - - - - Методы Теории Возмущений для Нелинейных Систем - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Kolebaniya/Manguz.zip - 19.7 - 0 - zip - - - - - Lib/Science/Mechanics/Kolebaniya - - Колебания (Мангус) - - - Мангус - Мангус - - - - Колебания - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Kolebaniya/Markeev.zip - 13.4 - 0 - zip - - - - - Lib/Science/Mechanics/Kolebaniya - - Точки Либрации в Небесной Механике и Космодинамике (Маркеев) - - - Маркеев - Маркеев - - - - Точки Либрации в Небесной Механике и Космодинамике - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Kolebaniya/Marsden.zip - 15 - 0 - zip - - - - - Lib/Science/Mechanics/Kolebaniya - - Бифуркация Рождения Цикла и Ее Приложения (Марсден,Мак-Кракен) - - - Марсден - Марсден - - - - Мак-Кракен - Мак-Кракен - - - - Бифуркация Рождения Цикла и Ее Приложения - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Kolebaniya/Mitropolski.zip - 15.9 - 0 - zip - - - - - Lib/Science/Mechanics/Kolebaniya - - Ассимптотические Методы в Теории Нелинейных Колебаний (Боголюбов,Митропольский) - - - Боголюбов - Боголюбов - - - - Митропольский - Митропольский - - - - Ассимптотические Методы в Теории Нелинейных Колебаний - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Kolebaniya/Panovko.zip - 9.2 - 0 - zip - - - - - Lib/Science/Mechanics/Kolebaniya - - Введение в Теорию Механических Колебаний (Пановко) - - - Пановко - Пановко - - - - Введение в Теорию Механических Колебаний - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Kolebaniya/Starjinskiy.zip - 10.1 - 0 - zip - - - - - Lib/Science/Mechanics/Kolebaniya - - Прикладные Методы Нелинейных Колебаний (Старжинский) - - - Старжинский - Старжинский - - - - Прикладные Методы Нелинейных Колебаний - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Kolebaniya/Timoshenko.zip - 20.2 - 0 - zip - - - - - Lib/Science/Mechanics/Kolebaniya - - Колебания в Инженерном Деле (Тимошенко,Янг,Уивер) - - - Тимошенко - Тимошенко - - - - Янг - Янг - - - - Уивер - Уивер - - - - Колебания в Инженерном Деле - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science/Mechanics/Lee - 39.6 - - - - Примение Алгебр Ли - Примение Алгебр Ли - pdf - - - - Lib/Science/Mechanics/Lee/Borisov.zip - 39.6 - 0 - zip - - - - - Lib/Science/Mechanics/Lee - - Пуассоновы Структуры и Алгебры Ли в Гамильтоновой Механике (Борисов,Мамаев) - - - Борисов - Борисов - - - - Мамаев - Мамаев - - - - Пуассоновы Структуры и Алгебры Ли в Гамильтоновой Механике - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science/Mechanics/mss - 5.8 - - - - Механика Сплошной Среды - Механика Сплошной Среды - pdf - - - - Lib/Science/Mechanics/mss/lemtt.zip - 2.2 - 0 - zip - - - - - Lib/Science/Mechanics/mss - - Механика Твердого Тела (Лекционный Эксперимент: Алешкевич) - - - Лекционный Эксперимент: Алешкевич - Алешкевич - Лекционный - - - Механика Твердого Тела - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/mss/mss.zip - 1.8 - 0 - zip - - - - - Lib/Science/Mechanics/mss - - Механика Твердого Тела (Лекции: Алешкевич) - - - Лекции: Алешкевич - Алешкевич - Лекции: - - - Механика Твердого Тела - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/mss/mtt.zip - 1.9 - 0 - zip - - - - - Lib/Science/Mechanics/mss - - Механика Сплошных Сред (Лекции: Алешкевич) - - - Лекции: Алешкевич - Алешкевич - Лекции: - - - Механика Сплошных Сред - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science/Mechanics/Stability - 81 - - - - Теория Устойчивости - Теория Устойчивости - pdf - - - - Lib/Science/Mechanics/Stability/Barabashin.zip - 7.9 - 0 - zip - - - - - Lib/Science/Mechanics/Stability - - Введение в Теорию Устойчивости (Барабашин) - - - Барабашин - Барабашин - - - - Введение в Теорию Устойчивости - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Stability/Chetaev.zip - 7.7 - 0 - zip - - - - - Lib/Science/Mechanics/Stability - - Устойчивость Движения (Четаев) - - - Четаев - Четаев - - - - Устойчивость Движения - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Stability/Demidovich.zip - 14.9 - 0 - zip - - - - - Lib/Science/Mechanics/Stability - - Лекции по Математической Теории Устойчивости (Демидович) - - - Демидович - Демидович - - - - Лекции по Математической Теории Устойчивости - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Stability/Iooss.zip - 9.9 - 0 - zip - - - - - Lib/Science/Mechanics/Stability - - Элементарная Теория Устойчивости и Бифуркаций (Йосс, Джозеф) - - - Йосс - Йосс - - - - Джозеф - Джозеф - - - - Элементарная Теория Устойчивости и Бифуркаций - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Stability/Malkin.zip - 18.8 - 0 - zip - - - - - Lib/Science/Mechanics/Stability - - Теория Устойчивости Движения (Малкин) - - - Малкин - Малкин - - - - Теория Устойчивости Движения - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Stability/Merkin.zip - 11.7 - 0 - zip - - - - - Lib/Science/Mechanics/Stability - - Введение в Теорию Устойчивости Движения (Меркин) - - - Меркин - Меркин - - - - Введение в Теорию Устойчивости Движения - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/Stability/Yoss.zip - 10 - 0 - zip - - - - - Lib/Science/Mechanics/Stability - - Элементарная Теория Устойчивости и Бифуркаций (Йосс,Джозеф) - - - Йосс - Йосс - - - - Джозеф - Джозеф - - - - Элементарная Теория Устойчивости и Бифуркаций - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science/Mechanics/TeorMech - 231.6 - - - - Теоретическая Механика - Теоретическая Механика - pdf - - - - Lib/Science/Mechanics/TeorMech/Appel1.zip - 20.1 - 0 - zip - - - - - Lib/Science/Mechanics/TeorMech - - Теоретическая механика т.1 (Аппель) - - - Аппель - Аппель - - - - Теоретическая механика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/TeorMech/Appel2.zip - 19 - 0 - zip - - - - - Lib/Science/Mechanics/TeorMech - - Теоретическая механика т.2 (Аппель) - - - Аппель - Аппель - - - - Теоретическая механика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/TeorMech/Lamb2.zip - 12.9 - 0 - zip - - - - - Lib/Science/Mechanics/TeorMech - - Теоретическая механика т.2 (Ламб) - - - Ламб - Ламб - - - - Теоретическая механика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/TeorMech/Lamb3.zip - 11.5 - 0 - zip - - - - - Lib/Science/Mechanics/TeorMech - - Теоретическая механика т.3 (Ламб) - - - Ламб - Ламб - - - - Теоретическая механика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/TeorMech/LeviChevita1.zip - 22.1 - 0 - zip - - - - - Lib/Science/Mechanics/TeorMech - - Курс теоретической механики т. 1-1 (Леви-Чивита,Амальди) - - - Леви-Чивита - Леви-Чивита - - - - Амальди - Амальди - - - - Курс теоретической механики т. 1-1 - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/TeorMech/LeviChevita2.zip - 15.7 - 0 - zip - - - - - Lib/Science/Mechanics/TeorMech - - Курс теоретической механики т. 1-2 (Леви-Чивита,Амальди) - - - Леви-Чивита - Леви-Чивита - - - - Амальди - Амальди - - - - Курс теоретической механики т. 1-2 - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/TeorMech/LeviChevita3.zip - 20.1 - 0 - zip - - - - - Lib/Science/Mechanics/TeorMech - - Курс теоретической механики т. 2-1 (Леви-Чивита,Амальди) - - - Леви-Чивита - Леви-Чивита - - - - Амальди - Амальди - - - - Курс теоретической механики т. 2-1 - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/TeorMech/LeviChevita4.zip - 26.2 - 0 - zip - - - - - Lib/Science/Mechanics/TeorMech - - Курс теоретической механики т. 2-2 (Леви-Чивита,Амальди) - - - Леви-Чивита - Леви-Чивита - - - - Амальди - Амальди - - - - Курс теоретической механики т. 2-2 - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/TeorMech/Markeev.zip - 30.6 - 0 - zip - - - - - Lib/Science/Mechanics/TeorMech - - Теоретическая механика (Маркеев) - - - Маркеев - Маркеев - - - - Теоретическая механика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/TeorMech/Suslov.zip - 30.4 - 0 - zip - - - - - Lib/Science/Mechanics/TeorMech - - Теоретическая механика (Суслов) - - - Суслов - Суслов - - - - Теоретическая механика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/TeorMech/ValePussen1.zip - 10.8 - 0 - zip - - - - - Lib/Science/Mechanics/TeorMech - - Лекции по теоретической механике т.1 (Де Ля Валле-Пуссен) - - - Де Ля Валле-Пуссен - Валле-Пуссен - Де - - - Лекции по теоретической механике - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/TeorMech/ValePussen2.zip - 12 - 0 - zip - - - - - Lib/Science/Mechanics/TeorMech - - Лекции по теоретической механике т.2 (Де Ля Валле-Пуссен) - - - Де Ля Валле-Пуссен - Валле-Пуссен - Де - - - Лекции по теоретической механике - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science/Mechanics/VarMeth - 68.6 - - - - Вариационные Методы - Вариационные Методы - pdf - - - - Lib/Science/Mechanics/VarMeth/Lacosh.zip - 15.6 - 0 - zip - - - - - Lib/Science/Mechanics/VarMeth - - Вариационные принципы механики (Ланцош) - - - Ланцош - Ланцош - - - - Вариационные принципы механики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Mechanics/VarMeth/Polak.zip - 52.9 - 0 - zip - - - - - Lib/Science/Mechanics/VarMeth - - Вариационные принципы механики (Полак) - - - Полак - Полак - - - - Вариационные принципы механики - - - pdf - 0 - 0 - - - - - - - - - - - - Lib/Science/Physics - 2729.8 - - - - Physics - Physics - pdf - - - - Lib/Science/Physics/Dirak.zip - 4.8 - 0 - zip - - - - - Lib/Science/Physics - - Пути Физики (Дирак) - - - Дирак - Дирак - - - - Пути Физики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Halmosh.zip - 13 - 0 - zip - - - - - Lib/Science/Physics - - Лекции по Эргодической Теории (Халмош) - - - Халмош - Халмош - - - - Лекции по Эргодической Теории - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Karno.zip - 0.2 - 0 - zip - - - - - Lib/Science/Physics - - Размышления о движущей силе огня и о машинах, способных развивать эту силу (Карно) - - - Карно - Карно - - - - Размышления о движущей силе огня и о машинах, способных развивать эту силу - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Korneo.zip - 18.2 - 0 - zip - - - - - Lib/Science/Physics - - Эродическая Теория (КорнФельд,Синай,Фомин) - - - КорнФельд - КорнФельд - - - - Синай - Синай - - - - Фомин - Фомин - - - - Эродическая Теория - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Levitov.zip - 2.7 - 0 - zip - - - - - Lib/Science/Physics - - Задачи по Теоретической Физике - Функция Грина, Диаграмная Техника (Левитов) - - Задачи по Теоретической Физике - - - - Левитов - Левитов - - - - Функция Грина, Диаграмная Техника - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Manifold.zip - 18.3 - 0 - zip - - - - - Lib/Science/Physics - - Analysis Manifolds and Physics (Choquet-Bruhat,Dewitt-Morette,Dillard-Bleick) - - - Choquet-Bruhat - Choquet-Bruhat - - - - Dewitt-Morette - Dewitt-Morette - - - - Dillard-Bleick - Dillard-Bleick - - - - Analysis Manifolds and Physics - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Nayak.zip - 1.2 - 0 - zip - - - - - Lib/Science/Physics - - Many-Body Physics (Nayak) - - - Nayak - Nayak - - - - Many-Body Physics - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Optics.zip - 2.3 - 0 - zip - - - - - Lib/Science/Physics - - Оптика Когерентного Излучения (Короленко) - - - Короленко - Короленко - - - - Оптика Когерентного Излучения - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/PhysTech_Zad1.zip - 19.1 - 0 - zip - - - - - Lib/Science/Physics - - Сборник Задач по Общему Курсу Физики т. 1 (Заикин, Овчинкин, Прут) - - - Заикин - Заикин - - - - Овчинкин - Овчинкин - - - - Прут - Прут - - - - Сборник Задач по Общему Курсу Физики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/PhysTech_Zad2.zip - 15.5 - 0 - zip - - - - - Lib/Science/Physics - - Сборник Задач по Общему Курсу Физики т. 2 (Заикин, Овчинкин, Прут) - - - Заикин - Заикин - - - - Овчинкин - Овчинкин - - - - Прут - Прут - - - - Сборник Задач по Общему Курсу Физики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/SAVELEV_I.zip - 18.4 - 0 - zip - - - - - Lib/Science/Physics - - Курс Общей Физики т. 1 (Савельев) - - - Савельев - Савельев - - - - Курс Общей Физики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Savelev_II.zip - 15.7 - 0 - zip - - - - - Lib/Science/Physics - - Курс Общей Физики т. 2 (Савельев) - - - Савельев - Савельев - - - - Курс Общей Физики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/SAVELEV_III.zip - 20.5 - 0 - zip - - - - - Lib/Science/Physics - - Курс Общей Физики т. 3 (Савельев) - - - Савельев - Савельев - - - - Курс Общей Физики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/sena.zip - 11.2 - 0 - zip - - - - - Lib/Science/Physics - - Единицы Физических Величин и Их Размерности (Сена) - - - Сена - Сена - - - - Единицы Физических Величин и Их Размерности - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Shuster.zip - 39 - 0 - zip - - - - - Lib/Science/Physics - - Детерминированный Хаос (Шустер) - - - Шустер - Шустер - - - - Детерминированный Хаос - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Zagoskin.zip - 12.1 - 0 - zip - - - - - Lib/Science/Physics - - Quantum Theory of Many-Body Systems (Zagoskin) - - - Zagoskin - Zagoskin - - - - Quantum Theory of Many-Body Systems - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Zaslavski_I.zip - 23.3 - 0 - zip - - - - - Lib/Science/Physics - - Введение в Нелинейную Физику: От Маятника До Турбулентности и Хаоса (Заславский, Сагдеев) - - - Заславский - Заславский - - - - Сагдеев - Сагдеев - - - - Введение в Нелинейную Физику: От Маятника До Турбулентности и Хаоса - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Berkly - 118.4 - - - - Книги Беркли - Книги Беркли - pdf - - - - Lib/Science/Physics/Berkly/Berkli_I.zip - 22.4 - 0 - zip - - - - - Lib/Science/Physics/Berkly - - Механика (Киттель, Наинт, Рудерман) - - - Киттель - Киттель - - - - Наинт - Наинт - - - - Рудерман - Рудерман - - - - Механика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Berkly/Berkli_II.zip - 24.3 - 0 - zip - - - - - Lib/Science/Physics/Berkly - - Электричество и Магнетизм (Парселл) - - - Парселл - Парселл - - - - Электричество и Магнетизм - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Berkly/Berkli_III.zip - 29.3 - 0 - zip - - - - - Lib/Science/Physics/Berkly - - Волны (Крауфорд) - - - Крауфорд - Крауфорд - - - - Волны - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Berkly/Berkli_IV.zip - 25.1 - 0 - zip - - - - - Lib/Science/Physics/Berkly - - Квантовая Физика (Вихман) - - - Вихман - Вихман - - - - Квантовая Физика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Berkly/Berkli_V.zip - 17.2 - 0 - zip - - - - - Lib/Science/Physics/Berkly - - Статистическая Физика (Реиф) - - - Реиф - Реиф - - - - Статистическая Физика - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science/Physics/Einstein - 0.5 - - - - Алберт Энстейн - Алберт Энстейн - pdf - - - - Lib/Science/Physics/Einstein/Albert Einstein Relativity.zip - 0.2 - 0 - zip - - - - - Lib/Science/Physics/Einstein - - Relativity: The Special and General Theory (Einstein) - - - Einstein - Einstein - - - - Relativity: The Special and General Theory - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Einstein/Albert Einstein - The World as I See it.zip - 0.3 - 0 - zip - - - - - Lib/Science/Physics/Einstein - - The World As I See It (Einstein) - - - Einstein - Einstein - - - - The World As I See It - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science/Physics/Feynman - 127.6 - - - - Фейнмановские Лекции По Физике № 1-10 - Фейнмановские Лекции По Физике № 1-10 - pdf - - - - Lib/Science/Physics/Feynman/Feynman1.zip - 12.2 - 0 - zip - - - - - Lib/Science/Physics/Feynman - - Современная Наука о Природе. Законы Механики - Современная Наука о Природе. Законы Механики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Feynman/Feynman10.zip - 19.8 - 0 - zip - - - - - Lib/Science/Physics/Feynman - - Задачи и Упражнения с Ответами и Решениями - Задачи и Упражнения с Ответами и Решениями - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Feynman/Feynman2.zip - 7.8 - 0 - zip - - - - - Lib/Science/Physics/Feynman - - Пространство. Время. Движение - Пространство. Время. Движение - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Feynman/Feynman3.zip - 11.5 - 0 - zip - - - - - Lib/Science/Physics/Feynman - - Излучение. Волны. Кванты - Излучение. Волны. Кванты - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Feynman/Feynman4.zip - 12.7 - 0 - zip - - - - - Lib/Science/Physics/Feynman - - Кинетика. Теплота. Звук - Кинетика. Теплота. Звук - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Feynman/Feynman5.zip - 12.6 - 0 - zip - - - - - Lib/Science/Physics/Feynman - - Электричество и Магнетизм - Электричество и Магнетизм - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Feynman/Feynman6.zip - 15 - 0 - zip - - - - - Lib/Science/Physics/Feynman - - Электродинамика - Электродинамика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Feynman/Feynman7.zip - 13.1 - 0 - zip - - - - - Lib/Science/Physics/Feynman - - Физика Сплошных Сред - Физика Сплошных Сред - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Feynman/Feynman8.zip - 11.7 - 0 - zip - - - - - Lib/Science/Physics/Feynman - - Квантовая Механика 1 - Квантовая Механика 1 - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Feynman/Feynman9.zip - 11.2 - 0 - zip - - - - - Lib/Science/Physics/Feynman - - Квантовая Механика 2 - Квантовая Механика 2 - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science/Physics/Irodov - 75.8 - - - - Книги Иродова - Книги Иродова - pdf - - - - Lib/Science/Physics/Irodov/Irodov.zip - 16.2 - 0 - zip - - - - - Lib/Science/Physics/Irodov - - Основные Законы Механики (Иродов) - - - Иродов - Иродов - - - - Основные Законы Механики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Irodov/IRODOV_II.zip - 18.1 - 0 - zip - - - - - Lib/Science/Physics/Irodov - - Основные Законы Электромагнетизма (Иродов) - - - Иродов - Иродов - - - - Основные Законы Электромагнетизма - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Irodov/Irodov_III.zip - 8.6 - 0 - zip - - - - - Lib/Science/Physics/Irodov - - Волновые Процессы. Основные Законы (Иродов) - - - Иродов - Иродов - - - - Волновые Процессы. Основные Законы - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Irodov/Irodov_IV.zip - 9.1 - 0 - zip - - - - - Lib/Science/Physics/Irodov - - Квантовая Физика. Основные Законы (Иродов) - - - Иродов - Иродов - - - - Квантовая Физика. Основные Законы - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Irodov/Irodov_V.zip - 6.7 - 0 - zip - - - - - Lib/Science/Physics/Irodov - - Физика Макросистем. Основные Законы (Иродов) - - - Иродов - Иродов - - - - Физика Макросистем. Основные Законы - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Irodov/Irodov_Zad.zip - 17.1 - 0 - zip - - - - - Lib/Science/Physics/Irodov - - Задачи по Общей Физики (Иродов) - - - Иродов - Иродов - - - - Задачи по Общей Физики - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science/Physics/Kvantu - 511.5 - - - - Квантовая Физика - Квантовая Физика - pdf - - - - Lib/Science/Physics/Kvantu/Bogolyubov.zip - 16 - 0 - zip - - - - - Lib/Science/Physics/Kvantu - - Корреляционные Функции Интегрируемых Систем и Квантовый Метод Обратной Задачи (Боголюбов,Изергин,Корепин) - - - Боголюбов - Боголюбов - - - - Изергин - Изергин - - - - Корепин - Корепин - - - - Корреляционные Функции Интегрируемых Систем и Квантовый Метод Обратной Задачи - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Kvantu/Bom.zip - 34.6 - 0 - zip - - - - - Lib/Science/Physics/Kvantu - - Квантовая Теория (Бом) - - - Бом - Бом - - - - Квантовая Теория - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Kvantu/Born.zip - 14.2 - 0 - zip - - - - - Lib/Science/Physics/Kvantu - - Лекции пл Атомной Механике т. 1 (Борн) - - - Борн - Борн - - - - Лекции пл Атомной Механике - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Kvantu/Broyl.zip - 15.2 - 0 - zip - - - - - Lib/Science/Physics/Kvantu - - Соотношения Неопределенностей Гейзенберга и Вероятностная Интерпретация Волновой Механики (Бройль) - - - Бройль - Бройль - - - - Соотношения Неопределенностей Гейзенберга и Вероятностная Интерпретация Волновой Механики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Kvantu/Cheng-Li.zip - 23.5 - 0 - zip - - - - - Lib/Science/Physics/Kvantu - - Калибровочные Теории в Физике Элементарных Частиц (Ченг, Ли) - - - Ченг - Ченг - - - - Ли - Ли - - - - Калибровочные Теории в Физике Элементарных Частиц - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Kvantu/Dirak1.zip - 23.4 - 0 - zip - - - - - Lib/Science/Physics/Kvantu - - Лекции по Квантовой Механике (Дирак) - - - Дирак - Дирак - - - - Лекции по Квантовой Механике - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Kvantu/Dirak2.zip - 18.8 - 0 - zip - - - - - Lib/Science/Physics/Kvantu - - Принципы Квантовой Механики (Дирак) - - - Дирак - Дирак - - - - Принципы Квантовой Механики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Kvantu/Faddeev.zip - 8.8 - 0 - zip - - - - - Lib/Science/Physics/Kvantu - - Лекции по Квантовой Механике (Фаддеев,Якубовский) - - - Фаддеев - Фаддеев - - - - Якубовский - Якубовский - - - - Лекции по Квантовой Механике - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Kvantu/Feinman1.zip - 18.6 - 0 - zip - - - - - Lib/Science/Physics/Kvantu - - Квантовая Механика и Интегралы по Траекториям (Фейнман,Хибс) - - - Фейнман - Фейнман - - - - Хибс - Хибс - - - - Квантовая Механика и Интегралы по Траекториям - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Kvantu/Fermi.zip - 28 - 0 - zip - - - - - Lib/Science/Physics/Kvantu - - Лекции по Квантовой Механике (Ферми) - - - Ферми - Ферми - - - - Лекции по Квантовой Механике - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Kvantu/flyuger1.zip - 13 - 0 - zip - - - - - Lib/Science/Physics/Kvantu - - Задачи по Квантовой Механике т. 1 (Флюгге) - - - Флюгге - Флюгге - - - - Задачи по Квантовой Механике - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Kvantu/flyuger2.zip - 11.5 - 0 - zip - - - - - Lib/Science/Physics/Kvantu - - Задачи по Квантовой Механике т. 2 (Флюгге) - - - Флюгге - Флюгге - - - - Задачи по Квантовой Механике - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Kvantu/Fok.zip - 15 - 0 - zip - - - - - Lib/Science/Physics/Kvantu - - Начала Квантовой Механики (Фок) - - - Фок - Фок - - - - Начала Квантовой Механики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Kvantu/FonNeiman.zip - 16.4 - 0 - zip - - - - - Lib/Science/Physics/Kvantu - - Математические Основы Квантовой Механики (Фон Нейман) - - - Фон Нейман - Нейман - Фон - - - Математические Основы Квантовой Механики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Kvantu/Goldman.zip - 7.4 - 0 - zip - - - - - Lib/Science/Physics/Kvantu - - Сборник Задач по Квантовой Механике (Гольдман,Кривченков) - - - Гольдман - Гольдман - - - - Кривченков - Кривченков - - - - Сборник Задач по Квантовой Механике - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Kvantu/Kilin.zip - 3.7 - 0 - zip - - - - - Lib/Science/Physics/Kvantu - - Квантовая Информация (Килин) - - - Килин - Килин - - - - Квантовая Информация - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Kvantu/Klishko.zip - 7.6 - 0 - zip - - - - - Lib/Science/Physics/Kvantu - - Основные Понятия Квантовой Физики с Операциональной Точки Зрения (Клышко) - - - Клышко - Клышко - - - - Основные Понятия Квантовой Физики с Операциональной Точки Зрения - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Kvantu/Meccia1.zip - 22.4 - 0 - zip - - - - - Lib/Science/Physics/Kvantu - - Квантовая Механика т. 1 (Мессиа) - - - Мессиа - Мессиа - - - - Квантовая Механика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Kvantu/Meccia2.zip - 26.6 - 0 - zip - - - - - Lib/Science/Physics/Kvantu - - Квантовая Механика т. 2 (Мессиа) - - - Мессиа - Мессиа - - - - Квантовая Механика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Kvantu/Moriya.zip - 10.3 - 0 - zip - - - - - Lib/Science/Physics/Kvantu - - Spin Fluctuations in Itinerant Electron Magnetism (Moriya) - - - Moriya - Moriya - - - - Spin Fluctuations in Itinerant Electron Magnetism - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Kvantu/Pauli.zip - 13.2 - 0 - zip - - - - - Lib/Science/Physics/Kvantu - - Общие Принципы Волновой Механики (Паули) - - - Паули - Паули - - - - Общие Принципы Волновой Механики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Kvantu/qvantu1.zip - 35.7 - 0 - zip - - - - - Lib/Science/Physics/Kvantu - - Квантовые Вычисления: За и Против - Квантовые Вычисления: За и Против - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Kvantu/qvantu2.zip - 46.6 - 0 - zip - - - - - Lib/Science/Physics/Kvantu - - Квантовые Компьютер: Квантовые Вычисления - Квантовые Компьютер: Квантовые Вычисления - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Kvantu/qvantu3.zip - 20.2 - 0 - zip - - - - - Lib/Science/Physics/Kvantu - - Квантовые Компьютеры: Квантовые Вычисления - Квантовые Компьютеры: Квантовые Вычисления - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Kvantu/Shiff.zip - 24.7 - 0 - zip - - - - - Lib/Science/Physics/Kvantu - - Квантовая Механика (Шифф) - - - Шифф - Шифф - - - - Квантовая Механика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Kvantu/Sinay.zip - 13.5 - 0 - zip - - - - - Lib/Science/Physics/Kvantu - - Теория фазовых переходов (Синай) - - - Синай - Синай - - - - Теория фазовых переходов - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Kvantu/Valiev.zip - 0.6 - 0 - zip - - - - - Lib/Science/Physics/Kvantu - - Квантовые Компьютеры: можно ли их сделать "большими"? (Валиев) - - - Валиев - Валиев - - - - Квантовые Компьютеры: можно ли их сделать "большими"? - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Kvantu/VanDerVarden.zip - 22 - 0 - zip - - - - - Lib/Science/Physics/Kvantu - - Метод Теории Групп в Квантовой Механике (Ван-Дер-Варден) - - - Ван-Дер-Варден - Ван-Дер-Варден - - - - Метод Теории Групп в Квантовой Механике - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science/Physics/LanduLiphic - 582.4 - - - - Теоретическая Физика (Ландау,Лифшиц) - - - Ландау - Ландау - - - - Лифшиц - Лифшиц - - - - Теоретическая Физика - pdf - - - - Lib/Science/Physics/LanduLiphic/01.zip - 43.7 - 0 - zip - - - - - Lib/Science/Physics/LanduLiphic - - Механика т. 1 (Ландау,Лифшиц) - - - Ландау - Ландау - - - - Лифшиц - Лифшиц - - - - Механика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/LanduLiphic/02.zip - 56.8 - 0 - zip - - - - - Lib/Science/Physics/LanduLiphic - - Теория Поля - - - Ландау - Ландау - - - - Лифшиц - Лифшиц - - - - Теория Поля - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/LanduLiphic/03.zip - 54.9 - 0 - zip - - - - - Lib/Science/Physics/LanduLiphic - - Квантовая Теория: Нерелятивистская Теория - - - Ландау - Ландау - - - - Лифшиц - Лифшиц - - - - Квантовая Теория: Нерелятивистская Теория - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/LanduLiphic/04.zip - 77.9 - 0 - zip - - - - - Lib/Science/Physics/LanduLiphic - - Квантовая Электродинамика - - - Ландау - Ландау - - - - Лифшиц - Лифшиц - - - - Квантовая Электродинамика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/LanduLiphic/05.zip - 43.7 - 0 - zip - - - - - Lib/Science/Physics/LanduLiphic - - Статистическая Физика 1 - - - Ландау - Ландау - - - - Лифшиц - Лифшиц - - - - Статистическая Физика 1 - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/LanduLiphic/06.zip - 86.1 - 0 - zip - - - - - Lib/Science/Physics/LanduLiphic - - Гидродинамика - - - Ландау - Ландау - - - - Лифшиц - Лифшиц - - - - Гидродинамика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/LanduLiphic/07.zip - 27.5 - 0 - zip - - - - - Lib/Science/Physics/LanduLiphic - - Теория Упругости - - - Ландау - Ландау - - - - Лифшиц - Лифшиц - - - - Теория Упругости - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/LanduLiphic/08.zip - 74 - 0 - zip - - - - - Lib/Science/Physics/LanduLiphic - - Электродинамика Сплошых Сред - - - Ландау - Ландау - - - - Лифшиц - Лифшиц - - - - Электродинамика Сплошых Сред - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/LanduLiphic/09.zip - 59.9 - 0 - zip - - - - - Lib/Science/Physics/LanduLiphic - - Статистическая Физика 2 - - - Ландау - Ландау - - - - Лифшиц - Лифшиц - - - - Статистическая Физика 2 - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/LanduLiphic/10.zip - 58 - 0 - zip - - - - - Lib/Science/Physics/LanduLiphic - - Физическая Кинетика - - - Ландау - Ландау - - - - Лифшиц - Лифшиц - - - - Физическая Кинетика - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science/Physics/Semiconductors - 381.4 - - - - Книги про Полупроводники - Книги про Полупроводники - pdf - - - - Lib/Science/Physics/Semiconductors/Agranovich.zip - 14.9 - 0 - zip - - - - - Lib/Science/Physics/Semiconductors - - Теория Экситонов (Агранович) - - - Агранович - Агранович - - - - Теория Экситонов - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Semiconductors/Anselm.zip - 44.1 - 0 - zip - - - - - Lib/Science/Physics/Semiconductors - - Введение в Теорию Полупроводников (Ансельм) - - - Ансельм - Ансельм - - - - Введение в Теорию Полупроводников - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Semiconductors/Ashkroft1.zip - 22 - 0 - zip - - - - - Lib/Science/Physics/Semiconductors - - Физика Твердого Тела т.1 (Ашкрофт) - - - Ашкрофт - Ашкрофт - - - - Физика Твердого Тела - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Semiconductors/Ashkroft2.zip - 23.9 - 0 - zip - - - - - Lib/Science/Physics/Semiconductors - - Физика Твердого Тела т.2 (Ашкрофт) - - - Ашкрофт - Ашкрофт - - - - Физика Твердого Тела - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Semiconductors/Askerov.zip - 15.4 - 0 - zip - - - - - Lib/Science/Physics/Semiconductors - - Электронные Явления Переноса в Полупроводниках (Аскеров) - - - Аскеров - Аскеров - - - - Электронные Явления Переноса в Полупроводниках - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Semiconductors/Baru.zip - 11.6 - 0 - zip - - - - - Lib/Science/Physics/Semiconductors - - Влияние Облучения на Поверхностные Свойства Полупроводников (Бару) - - - Бару - Бару - - - - Влияние Облучения на Поверхностные Свойства Полупроводников - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Semiconductors/Girifalko.zip - 14.5 - 0 - zip - - - - - Lib/Science/Physics/Semiconductors - - Статистическая Физика Твердого Тела (Жирифалько) - - - Жирифалько - Жирифалько - - - - Статистическая Физика Твердого Тела - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Semiconductors/Kalashnikov_I.zip - 61.4 - 0 - zip - - - - - Lib/Science/Physics/Semiconductors - - Физика Полупроводников (Бонч-Бруевич) - - - Бонч-Бруевич - Бонч-Бруевич - - - - Физика Полупроводников - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Semiconductors/Kalashnikov_II.zip - 27.5 - 0 - zip - - - - - Lib/Science/Physics/Semiconductors - - Электронная Теория Неупорядоченных Полупроводников (Бонч-Бруевич) - - - Бонч-Бруевич - Бонч-Бруевич - - - - Электронная Теория Неупорядоченных Полупроводников - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Semiconductors/Matare.zip - 32 - 0 - zip - - - - - Lib/Science/Physics/Semiconductors - - Электроника Дефектов в Полупроводниках (Матаре) - - - Матаре - Матаре - - - - Электроника Дефектов в Полупроводниках - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Semiconductors/Noks.zip - 10.2 - 0 - zip - - - - - Lib/Science/Physics/Semiconductors - - Теория Экситонов (Нокс) - - - Нокс - Нокс - - - - Теория Экситонов - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Semiconductors/OM.zip - 2.5 - 0 - zip - - - - - Lib/Science/Physics/Semiconductors - - Основы Материаловедения и Технологии Полупроводников (Случинская) - - - Случинская - Случинская - - - - Основы Материаловедения и Технологии Полупроводников - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Semiconductors/Problems.zip - 4.5 - 0 - zip - - - - - Lib/Science/Physics/Semiconductors - - Сборник задач по Физике Полупроводников (Бонч-Бруевич) - - - Бонч-Бруевич - Бонч-Бруевич - - - - Сборник задач по Физике Полупроводников - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Semiconductors/Shalimova.zip - 17.9 - 0 - zip - - - - - Lib/Science/Physics/Semiconductors - - Физика Полупроводников (Шалимова) - - - Шалимова - Шалимова - - - - Физика Полупроводников - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Semiconductors/Solid_St_surface.zip - 13.1 - 0 - zip - - - - - Lib/Science/Physics/Semiconductors - - Основы Физики Поверхности Твердого Тела (Киселев) - - - Киселев - Киселев - - - - Основы Физики Поверхности Твердого Тела - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Semiconductors/Stilbanse.zip - 26.9 - 0 - zip - - - - - Lib/Science/Physics/Semiconductors - - Физика Полупроводников (Стильбанс) - - - Стильбанс - Стильбанс - - - - Физика Полупроводников - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Semiconductors/Vavilov.zip - 15.4 - 0 - zip - - - - - Lib/Science/Physics/Semiconductors - - Механизмы Образования и Миграции Дефектов в Полупроводниках (Вавилов) - - - Вавилов - Вавилов - - - - Механизмы Образования и Миграции Дефектов в Полупроводниках - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Semiconductors/Zeeger.zip - 23.5 - 0 - zip - - - - - Lib/Science/Physics/Semiconductors - - Физика Полупроводников (Зеегер) - - - Зеегер - Зеегер - - - - Физика Полупроводников - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science/Physics/Sivuhin - 183.2 - - - - Общий Курс Физики (Сивухин) - - - Сивухин - Сивухин - - - - Общий Курс Физики - pdf - - - - Lib/Science/Physics/Sivuhin/Sivuhin_I.zip - 26.2 - 0 - zip - - - - - Lib/Science/Physics/Sivuhin - - Механика - - - Сивухин - Сивухин - - - - Механика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Sivuhin/SIVUHIN_II.zip - 27.4 - 0 - zip - - - - - Lib/Science/Physics/Sivuhin - - Термодинамика и Молекулярная Физика - - - Сивухин - Сивухин - - - - Термодинамика и Молекулярная Физика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Sivuhin/Sivuhin_III.zip - 34.3 - 0 - zip - - - - - Lib/Science/Physics/Sivuhin - - Электричество - - - Сивухин - Сивухин - - - - Электричество - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Sivuhin/Sivuhin_IV.zip - 39.3 - 0 - zip - - - - - Lib/Science/Physics/Sivuhin - - Оптика - - - Сивухин - Сивухин - - - - Оптика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Sivuhin/Sivuhin_V-1.zip - 33.6 - 0 - zip - - - - - Lib/Science/Physics/Sivuhin - - Атомная Физика - - - Сивухин - Сивухин - - - - Атомная Физика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Sivuhin/Sivuhin_V-2.zip - 22.3 - 0 - zip - - - - - Lib/Science/Physics/Sivuhin - - Ядерная Физика - - - Сивухин - Сивухин - - - - Ядерная Физика - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science/Physics/Statu - 189 - - - - Статистические Теории - Статистические Теории - pdf - - - - Lib/Science/Physics/Statu/Aizenshic.zip - 4.6 - 0 - zip - - - - - Lib/Science/Physics/Statu - - Статистическая теория необратимых процессов (Айзеншиц) - - - Айзеншиц - Айзеншиц - - - - Статистическая теория необратимых процессов - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Statu/Bahareeva.zip - 5.8 - 0 - zip - - - - - Lib/Science/Physics/Statu - - Нелинейная неравновесная термодинамика (Бахарева) - - - Бахарева - Бахарева - - - - Нелинейная неравновесная термодинамика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Statu/Bazarov.zip - 22.1 - 0 - zip - - - - - Lib/Science/Physics/Statu - - Термодинамика (Базаров) - - - Базаров - Базаров - - - - Термодинамика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Statu/Bio.zip - 7.9 - 0 - zip - - - - - Lib/Science/Physics/Statu - - Вариационные принципы в теории теплообмена (Био) - - - Био - Био - - - - Вариационные принципы в теории теплообмена - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Statu/Feinman.zip - 15.3 - 0 - zip - - - - - Lib/Science/Physics/Statu - - Статистическая механика (Фейнман) - - - Фейнман - Фейнман - - - - Статистическая механика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Statu/Gibbs.zip - 19 - 0 - zip - - - - - Lib/Science/Physics/Statu - - Основные принципы статистической механики (Гиббс) - - - Гиббс - Гиббс - - - - Основные принципы статистической механики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Statu/Huang.zip - 24 - 0 - zip - - - - - Lib/Science/Physics/Statu - - Статистическая механика (Хуанг) - - - Хуанг - Хуанг - - - - Статистическая механика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Statu/Kubo.zip - 17.3 - 0 - zip - - - - - Lib/Science/Physics/Statu - - Статистическая механика (Кубо) - - - Кубо - Кубо - - - - Статистическая механика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Statu/Leontovich.zip - 19.4 - 0 - zip - - - - - Lib/Science/Physics/Statu - - Введение в термодинамику. Статистическая физика (Леонтович) - - - Леонтович - Леонтович - - - - Введение в термодинамику. Статистическая физика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Statu/Lorenz2.zip - 8.8 - 0 - zip - - - - - Lib/Science/Physics/Statu - - Статистические теории в термодинамике (Лоренц) - - - Лоренц - Лоренц - - - - Статистические теории в термодинамике - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Statu/Rumer.zip - 27.7 - 0 - zip - - - - - Lib/Science/Physics/Statu - - Термодинамика, статистическая физика и кинетика (Румер,Рывкин) - - - Румер - Румер - - - - Рывкин - Рывкин - - - - Термодинамика, статистическая физика и кинетика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Statu/Sadovsky.zip - 1.4 - 0 - zip - - - - - Lib/Science/Physics/Statu - - Лекции по Статистической Физике (Садовский) - - - Садовский - Садовский - - - - Лекции по Статистической Физике - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Statu/Shredinger.zip - 5 - 0 - zip - - - - - Lib/Science/Physics/Statu - - Статистическая термодинамика (Шредингер) - - - Шредингер - Шредингер - - - - Статистическая термодинамика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Statu/Ulenbek.zip - 10.7 - 0 - zip - - - - - Lib/Science/Physics/Statu - - Лекции по статистической механике (Уленбек,Форд) - - - Уленбек - Уленбек - - - - Форд - Форд - - - - Лекции по статистической механике - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science/Physics/Symmetry - 175.1 - - - - Теории Симметрии - Теории Симметрии - pdf - - - - Lib/Science/Physics/Symmetry/Birman1.zip - 15.2 - 0 - zip - - - - - Lib/Science/Physics/Symmetry - - Пространственные Симметрия и Оптические Свойства Твердых Тел т.1 (Бирман) - - - Бирман - Бирман - - - - Пространственные Симметрия и Оптические Свойства Твердых Тел - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Symmetry/Birman2.zip - 13.1 - 0 - zip - - - - - Lib/Science/Physics/Symmetry - - Пространственные Симметрия и Оптические Свойства Твердых Тел т.2 (Бирман) - - - Бирман - Бирман - - - - Пространственные Симметрия и Оптические Свойства Твердых Тел - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Symmetry/Manko.zip - 13.8 - 0 - zip - - - - - Lib/Science/Physics/Symmetry - - Динамические Симметрии и Когерентные Состояния Квантовых Систем (Малкин,Манько) - - - Малкин - Малкин - - - - Манько - Манько - - - - Динамические Симметрии и Когерентные Состояния Квантовых Систем - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Symmetry/Rumer_Fet.zip - 13.1 - 0 - zip - - - - - Lib/Science/Physics/Symmetry - - Теория Унитарной Симметрии (Румер,Фет) - - - Румер - Румер - - - - Фет - Фет - - - - Теория Унитарной Симметрии - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Symmetry/Supersymmetry_supergravity.zip - 11.7 - 0 - zip - - - - - Lib/Science/Physics/Symmetry - - ВВедение в Суперсимметрию и Супергравитацию (Уэст) - - - Уэст - Уэст - - - - ВВедение в Суперсимметрию и Супергравитацию - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Symmetry/Sym_el_particles1.zip - 15.2 - 0 - zip - - - - - Lib/Science/Physics/Symmetry - - Принципы Симметрии в Физике Эдементарных Частиц (Гибсон, Поллард) - - - Гибсон - Гибсон - - - - Поллард - Поллард - - - - Принципы Симметрии в Физике Эдементарных Частиц - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Symmetry/Sym_el_particles2.zip - 15.1 - 0 - zip - - - - - Lib/Science/Physics/Symmetry - - Группы Симметрии и Элементарные Частицы (Ляховский, Болохов) - - - Ляховский - Ляховский - - - - Болохов - Болохов - - - - Группы Симметрии и Элементарные Частицы - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Symmetry/Sym_Phase_tr.zip - 11.7 - 0 - zip - - - - - Lib/Science/Physics/Symmetry - - Фазовые Переходы и Сммметрия Кристаллов (Изюмов, Сыромятников) - - - Изюмов - Изюмов - - - - Сыромятников - Сыромятников - - - - Фазовые Переходы и Сммметрия Кристаллов - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Symmetry/Sym_phys1.zip - 13.8 - 0 - zip - - - - - Lib/Science/Physics/Symmetry - - Симметрия в Физике т.1 (Эллиот,Добер) - - - Эллиот - Эллиот - - - - Добер - Добер - - - - Симметрия в Физике - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Symmetry/Sym_phys2.zip - 14.9 - 0 - zip - - - - - Lib/Science/Physics/Symmetry - - Симметрия в Физике т.2 (Эллиот,Добер) - - - Эллиот - Эллиот - - - - Добер - Добер - - - - Симметрия в Физике - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Symmetry/Sym_PhysLaw.zip - 4.7 - 0 - zip - - - - - Lib/Science/Physics/Symmetry - - Симметрия и законы Сохранения в Физике (Шмутцер) - - - Шмутцер - Шмутцер - - - - Симметрия и законы Сохранения в Физике - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Symmetry/Sym_QP.zip - 9.1 - 0 - zip - - - - - Lib/Science/Physics/Symmetry - - Симметрия в Квантовой Физике (Мишель, Шааф) - - - Мишель - Мишель - - - - Шааф - Шааф - - - - Симметрия в Квантовой Физике - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Symmetry/Vladimirov.zip - 7.4 - 0 - zip - - - - - Lib/Science/Physics/Symmetry - - Группы Симметрии ДУ и Релятивистские Поля (Владимиров) - - - Владимиров - Владимиров - - - - Группы Симметрии ДУ и Релятивистские Поля - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/Symmetry/Wigner_sym.zip - 16 - 0 - zip - - - - - Lib/Science/Physics/Symmetry - - Этюды о Симметрии (Вигнер) - - - Вигнер - Вигнер - - - - Этюды о Симметрии - - - pdf - 0 - 0 - - - - - - - - - - Lib/Science/Physics/tf - 149.4 - - - - Теоретическая Физика - Теоретическая Физика - pdf - - - - Lib/Science/Physics/tf/Landu.zip - 28.5 - 0 - zip - - - - - Lib/Science/Physics/tf - - Теоретическая физика (Ландау,Лифшиц) - - - Ландау - Ландау - - - - Лифшиц - Лифшиц - - - - Теоретическая физика - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/tf/Morse1.zip - 50.6 - 0 - zip - - - - - Lib/Science/Physics/tf - - Методы Теоретической Физики т. 1 (Морс,Фешбах) - - - Морс - Морс - - - - Фешбах - Фешбах - - - - Методы Теоретической Физики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/tf/Morse2.zip - 48.6 - 0 - zip - - - - - Lib/Science/Physics/tf - - Методы Теоретической Физики т. 2 (Морс,Фешбах) - - - Морс - Морс - - - - Фешбах - Фешбах - - - - Методы Теоретической Физики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Physics/tf/Pitaevsky.zip - 21.8 - 0 - zip - - - - - Lib/Science/Physics/tf - - Теоретическая физика (Питаевский) - - - Питаевский - Питаевский - - - - Теоретическая физика - - - pdf - 0 - 0 - - - - - - - - - - - - Lib/Science/Programms - 120.7 - - - - Programms - Programms - pdf - - - - Lib/Science/Programms/Borovikov.zip - 25.8 - 0 - zip - - - - - Lib/Science/Programms - - Популярное Введение в Программу Statistica (Боровиков) - - - Боровиков - Боровиков - - - - Популярное Введение в Программу Statistica - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Programms/LaTeX2e.zip - 17.8 - 0 - zip - - - - - Lib/Science/Programms - - Издательская Система Latex2E (Котельников,Чеботаев) - - - Котельников - Котельников - - - - Чеботаев - Чеботаев - - - - Издательская Система Latex2E - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Programms/Maple.zip - 6.5 - 0 - zip - - - - - Lib/Science/Programms - - Пакет Символьных Вычислений Maple V (Прохоров,Леденев,Колбеев) - - - Прохоров - Прохоров - - - - Леденев - Леденев - - - - Колбеев - Колбеев - - - - Пакет Символьных Вычислений Maple V - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Programms/Maple6.zip - 29.3 - 0 - zip - - - - - Lib/Science/Programms - - Maple6. Решение задач высшей математики и механики (Матросов) - - - Матросов - Матросов - - - - Maple6. Решение задач высшей математики и механики - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Programms/Maple_MatLab_Latex.zip - 33.2 - 0 - zip - - - - - Lib/Science/Programms - - Компьютер в Математическом Исследование (Говорухин, Цибулин) - - - Говорухин - Говорухин - - - - Цибулин - Цибулин - - - - Компьютер в Математическом Исследование - - - pdf - 0 - 0 - - - - - - - - Lib/Science/Programms/Mathematica.zip - 8.1 - 0 - zip - - - - - Lib/Science/Programms - - Введение в систему Математика (Воробьев) - - - Воробьев - Воробьев - - - - Введение в систему Математика - - - pdf - 0 - 0 - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/xml2json/node_modules/node-expat/test.js b/node_modules/xml2json/node_modules/node-expat/test.js deleted file mode 100644 index affc2a9..0000000 --- a/node_modules/xml2json/node_modules/node-expat/test.js +++ /dev/null @@ -1,345 +0,0 @@ -var expat = require('./lib/node-expat'); -var Buffer = require('buffer').Buffer; -var vows = require('vows'); -var assert = require('assert'); -var fs = require('fs'); - -function collapseTexts(evs) { - var r = []; - var t = ""; - evs.forEach(function(ev) { - if (ev[0] == 'text') - t += ev[1]; - else { - if (t != "") - r.push(['text', t]); - t = ""; - r.push(ev); - } - }); - if (t != "") - r.push(['text', t]); - return r; -} - -function expect(s, evs_expected) { - for(var step = s.length; step > 0; step--) { - expectWithParserAndStep(s, evs_expected, new expat.Parser("UTF-8"), step); - } -} - -function expectWithParserAndStep(s, evs_expected, p, step) { - var evs_received = []; - //p.setEncoding("UTF-8"); - p.addListener('startElement', function(name, attrs) { - evs_received.push(['startElement', name, attrs]); - }); - p.addListener('endElement', function(name) { - evs_received.push(['endElement', name]); - }); - p.addListener('text', function(s) { - evs_received.push(['text', s]); - }); - p.addListener('processingInstruction', function(target, data) { - evs_received.push(['processingInstruction', target, data]); - }); - p.addListener('comment', function(s) { - evs_received.push(['comment', s]); - }); - p.addListener('xmlDecl', function(version, encoding, standalone) { - evs_received.push(['xmlDecl', version, encoding, standalone]); - }); - p.addListener('startCdata', function() { - evs_received.push(['startCdata']); - }); - p.addListener('endCdata', function() { - evs_received.push(['endCdata']); - }); - p.addListener('entityDecl', function(entityName, isParameterEntity, value, base, systemId, publicId, notationName) { - evs_received.push(['entityDecl', entityName, isParameterEntity, value, base, systemId, publicId, notationName]); - }); - p.addListener('error', function(e) { - evs_received.push(['error', e]); - }); - for(var l = 0; l < s.length; l += step) - { - var end = l + step; - if (end > s.length) - end = s.length; - - p.write(s.slice(l, end)); - } - - var expected = JSON.stringify(evs_expected); - var received = JSON.stringify(collapseTexts(evs_received)); - assert.equal(received, expected); -} - -vows.describe('node-expat').addBatch({ - 'single element': { - 'simple': function() { - expect("", - [['startElement', 'r', {}], - ['endElement', 'r']]); - }, - 'single element with attribute': function() { - expect("", - [['startElement', 'r', {foo: 'bar'}], - ['endElement', 'r']]); - }, - 'single elemeht with differently quoted attributes': function() { - expect("", - [['startElement', 'r', {foo: 'bar', baz: 'quux', test: 'tset'}], - ['endElement', 'r']]); - }, - 'single element with namespaces': function() { - expect("", - [['startElement', 'r', {xmlns: 'http://localhost/', 'xmlns:x': 'http://example.com/'}], - ['endElement', 'r']]); - }, - 'single element with text content': function() { - expect("foo", - [['startElement', 'r', {}], - ['text', "foo"], - ['endElement', 'r']]); - }, - 'single element with text content and line break': function() { - expect("foo\nbar", - [['startElement', 'r', {}], - ['text', "foo\nbar"], - ['endElement', 'r']]); - }, - 'single element with CDATA content': function() { - expect("Hello, world!]]>", - [['startElement', 'r', {}], - ['startCdata'], - ['text', "Hello, world!"], - ['endCdata'], - ['endElement', 'r']]); - }, - 'single element with entity text': function() { - expect("foo&bar", - [['startElement', 'r', {}], - ['text', "foo&bar"], - ['endElement', 'r']]); - }, - 'single element with umlaut text': function() { - expect("ß", - [['startElement', 'r', {}], - ['text', "ß"], - ['endElement', 'r']]); - }, - 'from buffer': function() { - expect(new Buffer('bar'), - [['startElement', 'foo', {}], - ['text', 'bar'], - ['endElement', 'foo']]); - } - }, - 'entity declaration': { - 'a billion laughs': function() { - expect('' + - '' + - ']>&l2;', - [["entityDecl","l0",false,"ha",null,null,null,null], - ["entityDecl","l1",false,"&l0;&l0;",null,null,null,null], - ["entityDecl","l2",false,"&l1;&l1;",null,null,null,null], - ["startElement","b",{}],["text","hahahaha"],["endElement","b"]]); - } - }, - 'processing instruction': { - 'with parameters': function() { - expect("", - [['processingInstruction', 'i', 'like xml']]); - }, - 'simple': function() { - expect("", - [['processingInstruction', 'dragons', '']]); - }, - 'XML declaration with encoding': function() { - expect("", - [['xmlDecl', '1.0', 'UTF-8', true]]); - }, - 'XML declaration': function() { - expect("", - [['xmlDecl', '1.0', null, true]]); - } - }, - 'comment': { - 'simple': function() { - expect("", - [['comment', ' no comment ']]); - } - }, - 'error': { - 'tag name starting with ampersand': function() { - expect("<&", [['error', "not well-formed (invalid token)"]]); - } - }, - - 'reset': { - 'complete doc without error': function() { - var p = new expat.Parser("UTF-8"); - expectWithParserAndStep("text", [['startElement', 'start', {}], ['startElement', 'first', {}], ['endElement', 'first'], ['startElement', 'second', {}], ['text', "text"], ['endElement', 'second'], ['endElement', 'start']], p, 1000); - p.reset(); - expectWithParserAndStep("moretext", [['startElement', 'restart', {}], ['startElement', 'third', {}], ['text', "moretext"], ['endElement', 'third'], ['startElement', 'fourth', {}], ['endElement', 'fourth'], ['endElement', 'restart']], p, 1000); - }, - 'incomplete doc without error': function() { - var p = new expat.Parser("UTF-8"); - expectWithParserAndStep("text", [['startElement', 'start', {}], ['startElement', 'first', {}], ['endElement', 'first'], ['startElement', 'second', {}], ['text', "text"], ['endElement', 'second']], p, 1000); - p.reset(); - expectWithParserAndStep("moretext", [['startElement', 'restart', {}], ['startElement', 'third', {}], ['text', "moretext"], ['endElement', 'third'], ['startElement', 'fourth', {}], ['endElement', 'fourth'], ['endElement', 'restart']], p, 1000); - }, - 'with doc error': function() { - var p = new expat.Parser("UTF-8"); - expectWithParserAndStep("", [["error", "not well-formed (invalid token)"]], p, 1000); - p.reset(); - expectWithParserAndStep("moretext", [['startElement', 'restart', {}], ['startElement', 'third', {}], ['text', "moretext"], ['endElement', 'third'], ['startElement', 'fourth', {}], ['endElement', 'fourth'], ['endElement', 'restart']], p, 1000); - } - }, - 'stop and resume': { - topic: function() { - var cb = this.callback; - var p = new expat.Parser("UTF-8"); - - var input = '\ - \ - \ - \ - \ - \ - foo \ - '; - - var expected = ['wrap', 'short', 'short', 'long', 'short', 'long']; - var received = []; - - var tolerance = 10/100; - var expectedRuntime = 1000; - var start = new Date(); - - p.addListener('startElement', function(name, attrs) { - received.push(name); - - // suspend parser for 1/2 second - if(name == 'long') { - p.stop(); - - setTimeout(function() { - p.resume(); - }, 500); - } - }); - - p.addListener('endElement', function(name) { - // finished parsing - if(name == 'wrap') { - // test elements received (count. naming, order) - assert.equal(JSON.stringify(received), JSON.stringify(expected)); - - // test timing (+-5%) - var now = new Date(); - var diff = now.getTime() - start.getTime(); - var max = expectedRuntime + expectedRuntime * tolerance, - min = expectedRuntime - expectedRuntime * tolerance; - - assert.ok(diff < max, 'Runtime within maximum expected time'); - assert.ok(diff > min, 'Runtime at least minimum expected time'); - - return cb(true); - } - }); - - assert.ok(p.parse(input)); - }, - 'should have worked': function() { - assert.ok(true, 'start & stop works'); - } - }, - 'corner cases': { - 'parse empty string': function() { - var p = new expat.Parser("UTF-8"); - p.parse(''); - assert.ok(true, "Did not segfault"); - }, - - 'parsing twice the same document with the same parser instance should be fine': 'reset() not yet implemented' - /*function() { - var p = new expat.Parser("UTF-8"); - var xml = "bar"; - var result = p.parse(xml); - assert.ok(result); - assert.isNull(p.getError()); - - var result2 = p.parse(xml); - assert.isNull(p.getError()); - assert.ok(result2); - - }*/ - }, - 'statistics': { - 'line number': function() { - var p = new expat.Parser(); - assert.equal(p.getCurrentLineNumber(), 1); - p.parse("\n"); - assert.equal(p.getCurrentLineNumber(), 2); - p.parse("\n"); - assert.equal(p.getCurrentLineNumber(), 3); - }, - 'column number': function() { - var p = new expat.Parser(); - assert.equal(p.getCurrentColumnNumber(), 0); - p.parse(" "); - assert.equal(p.getCurrentColumnNumber(), 1); - p.parse(" "); - assert.equal(p.getCurrentColumnNumber(), 2); - p.parse("\n"); - assert.equal(p.getCurrentColumnNumber(), 0); - }, - 'byte index': function() { - var p = new expat.Parser(); - assert.equal(p.getCurrentByteIndex(), -1); - p.parse(""); - assert.equal(p.getCurrentByteIndex(), -1); - p.parse("\n"); - assert.equal(p.getCurrentByteIndex(), 1); - p.parse(" "); - assert.equal(p.getCurrentByteIndex(), 2); - }, - }, - 'Stream interface': { - 'read file': { - topic: function() { - var p = expat.createParser(); - this.startTags = 0; - p.on('startElement', function(name) { - this.startTags++; - }.bind(this)); - this.endTags = 0; - p.on('endElement', function(name) { - this.endTags++; - }.bind(this)); - p.on('end', function() { - this.ended = true; - }.bind(this)); - p.on('close', function() { - this.closed = true; - this.callback(); - }.bind(this)); - - var mystic = fs.createReadStream(__dirname + '/test-mystic-library.xml'); - mystic.pipe(p); - }, - 'startElement and endElement events': function() { - assert.ok(this.startTags > 0, 'startElement events at all'); - assert.ok(this.startTags == this.endTags, 'equal amount'); - }, - 'end event': function() { - assert.ok(this.ended, 'emit end event'); - }, - 'close event': function() { - assert.ok(this.closed, 'emit close event'); - } - } - } -}).export(module); diff --git a/node_modules/xml2json/package.json b/node_modules/xml2json/package.json deleted file mode 100644 index e3e36c4..0000000 --- a/node_modules/xml2json/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "name": "xml2json", - "version": "0.3.2", - "author": { - "name": "Andrew Turley" - }, - "email": "aturley@buglabs.net", - "description": "Converts xml to json and viceverza, using node-expat.", - "repository": { - "type": "git", - "url": "git://github.com/buglabs/node-xml2json.git" - }, - "main": "index", - "contributors": [ - { - "name": "Camilo Aguilar", - "email": "camilo.aguilar@gmail.com" - } - ], - "dependencies": { - "node-expat": "2.0.0" - }, - "readme": "# Simple SAX-based XML2JSON Parser.\n\nIt does not parse the following elements: \n\n* CDATA sections (*)\n* Processing instructions\n* XML declarations\n* Entity declarations\n* Comments\n\n## Installation\n```\n$ npm install xml2json\n```\n\n## Usage \n```javascript\nvar parser = require('xml2json');\n\nvar xml = \"bar\";\nvar json = parser.toJson(xml); //returns a string containing the JSON structure by default\nconsole.log(json);\n```\n## API\n\n```javascript\nparser.toJson(xml, options);\n```\n```javascript\nparser.toXml(json, options);\n```\n\n### Options object\n\nDefault values:\n```javascript\nvar options = {\n object: false,\n reversible: false,\n coerce: true,\n sanitize: true,\n trim: true \n};\n```\n\n* **object:** Returns a Javascript object instead of a JSON string\n* **reversible:** Makes the JSON reversible to XML (*)\n* **coerce:** Makes type coercion. i.e.: numbers and booleans present in attributes and element values are converted from string to its correspondent data types.\n* **trim:** Removes leading and trailing whitespaces as well as line terminators in element values.\n* **sanitize:** Sanitizes the following characters present in element values:\n\n```javascript\nvar chars = { \n '<': '<',\n '>': '>',\n '(': '(',\n ')': ')',\n '#': '#',\n '&': '&',\n '\"': '"',\n \"'\": '''\n};\n```\n\n\n\n\n(*) xml2json tranforms CDATA content to JSON, but it doesn't generate a reversible structure.\n\n## License\n(The MIT License)\n\nCopyright 2012 BugLabs. All rights reserved.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to\ndeal in the Software without restriction, including without limitation the\nrights to use, copy, modify, merge, publish, distribute, sublicense, and/or\nsell copies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\nIN THE SOFTWARE.", - "readmeFilename": "README.md", - "_id": "xml2json@0.3.2", - "dist": { - "shasum": "d50e79d96f6afc92d110170b4c4bdde37fd8b2b9" - }, - "_from": "xml2json@latest", - "_resolved": "https://registry.npmjs.org/xml2json/-/xml2json-0.3.2.tgz" -} diff --git a/node_modules/xml2json/test/.npmignore b/node_modules/xml2json/test/.npmignore deleted file mode 100644 index 5509140..0000000 --- a/node_modules/xml2json/test/.npmignore +++ /dev/null @@ -1 +0,0 @@ -*.DS_Store diff --git a/node_modules/xml2json/test/coerce-overhead.js b/node_modules/xml2json/test/coerce-overhead.js deleted file mode 100644 index ba91b2f..0000000 --- a/node_modules/xml2json/test/coerce-overhead.js +++ /dev/null @@ -1,20 +0,0 @@ -var fs = require('fs'); -var parser = require('../lib'); - -var file = __dirname + '/fixtures/large.xml'; - -var data = fs.readFileSync(file); - -// With coercion -var t0 = Date.now(); -for(var i = 0; i < 10000; i++) { - var result = parser.toJson(data, {reversible: true, coerce: true, object: true}); -} -console.log(Date.now() - t0); - -// Without coercion -var t0 = Date.now(); -for(var i = 0; i < 10000; i++) { - result = parser.toJson(data, {reversible: true, object: true}); -} -console.log(Date.now() - t0); diff --git a/node_modules/xml2json/test/fixtures/coerce.json b/node_modules/xml2json/test/fixtures/coerce.json deleted file mode 100644 index 52da96d..0000000 --- a/node_modules/xml2json/test/fixtures/coerce.json +++ /dev/null @@ -1 +0,0 @@ -{"itemRecord":{"value":[{"longValue":"12345"},{"stringValue":{"number":"false","$t":"this is a string value"}},{"moneyValue":{"number":"true","currencyId":"USD","$t":"104.95"}},{"moneyValue":{"currencyId":"USD","$t":"104.95"}},{"longValue":"0","bool":{"id":"0","$t":"true"}},{"longValue":"0"},{"dateValue":"2012-02-16T17:03:33.000-07:00"},{"stringValue":"SmDZ8RlMIjDvlEW3KUibzj2Q"}]}} \ No newline at end of file diff --git a/node_modules/xml2json/test/fixtures/coerce.xml b/node_modules/xml2json/test/fixtures/coerce.xml deleted file mode 100644 index 6fb4a37..0000000 --- a/node_modules/xml2json/test/fixtures/coerce.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - 12345 - - - this is a string value - - - - 104.95 - - - - 104.95 - - - - 0 - true - - - 0 - - - 2012-02-16T17:03:33.000-07:00 - - - SmDZ8RlMIjDvlEW3KUibzj2Q - - \ No newline at end of file diff --git a/node_modules/xml2json/test/fixtures/domain-reversible.json b/node_modules/xml2json/test/fixtures/domain-reversible.json deleted file mode 100644 index a32d33e..0000000 --- a/node_modules/xml2json/test/fixtures/domain-reversible.json +++ /dev/null @@ -1 +0,0 @@ -{"domain":{"type":"qemu","name":{"$t":"QEmu-fedora-i686"},"uuid":{"$t":"c7a5fdbd-cdaf-9455-926a-d65c16db1809"},"memory":{"$t":"219200"},"currentMemory":{"$t":"219200"},"vcpu":{"$t":"2"},"os":{"type":{"arch":"i686","machine":"pc","$t":"hvm"},"boot":{"dev":"cdrom"}},"devices":{"emulator":{"$t":"/usr/bin/qemu-system-x86_64"},"disk":[{"type":"file","device":"cdrom","source":{"file":"/home/user/boot.iso"},"target":{"dev":"hdc"},"readonly":{}},{"type":"file","device":"disk","source":{"file":"/home/user/fedora.img"},"target":{"dev":"hda"}}],"interface":{"type":"network","source":{"network":"default"}},"graphics":{"type":"vnc","port":"-1"}},"ah":[{"type":"rare","foo":"bar","$t":"cosa1"},{"type":"normal","$t":"cosa2"},{"$t":"cosa3"}]}} diff --git a/node_modules/xml2json/test/fixtures/domain.json b/node_modules/xml2json/test/fixtures/domain.json deleted file mode 100644 index a9605b9..0000000 --- a/node_modules/xml2json/test/fixtures/domain.json +++ /dev/null @@ -1 +0,0 @@ -{"domain":{"type":"qemu","name":"QEmu-fedora-i686","uuid":"c7a5fdbd-cdaf-9455-926a-d65c16db1809","memory":"219200","currentMemory":"219200","vcpu":"2","os":{"type":{"arch":"i686","machine":"pc","$t":"hvm"},"boot":{"dev":"cdrom"}},"devices":{"emulator":"/usr/bin/qemu-system-x86_64","disk":[{"type":"file","device":"cdrom","source":{"file":"/home/user/boot.iso"},"target":{"dev":"hdc"},"readonly":{}},{"type":"file","device":"disk","source":{"file":"/home/user/fedora.img"},"target":{"dev":"hda"}}],"interface":{"type":"network","source":{"network":"default"}},"graphics":{"type":"vnc","port":"-1"}},"ah":[{"type":"rare","foo":"bar","$t":"cosa1"},{"type":"normal","$t":"cosa2"},"cosa3"]}} diff --git a/node_modules/xml2json/test/fixtures/domain.xml b/node_modules/xml2json/test/fixtures/domain.xml deleted file mode 100644 index c8c1aa4..0000000 --- a/node_modules/xml2json/test/fixtures/domain.xml +++ /dev/null @@ -1 +0,0 @@ -QEmu-fedora-i686c7a5fdbd-cdaf-9455-926a-d65c16db18092192002192002hvm/usr/bin/qemu-system-x86_64cosa1cosa2cosa3 diff --git a/node_modules/xml2json/test/fixtures/large.json b/node_modules/xml2json/test/fixtures/large.json deleted file mode 100644 index 27ab909..0000000 --- a/node_modules/xml2json/test/fixtures/large.json +++ /dev/null @@ -1 +0,0 @@ -{"soapenv:Envelope":{"xmlns:soapenv":"http://schemas.xmlsoap.org/soap/envelope/","soapenv:Header":{},"soapenv:Body":{"findInterminglingResponse":{"xmlns":"http://www.ebay.com/marketplace/search/v1/services","ack":"Success","version":"1.1.0","timestamp":"2012-01-20T01:36:25.904Z","extension":{"id":"3","version":"1.0.0","contentType":"text/html","value":"qds=0.1723&!_dcat_leaf=617,163826,617,163826,15077&pct=94.84&nai=44&nhalf=0&ncbt=0&nmq=2&!SIBE=avatar+blue+ray+3d,JPIA9PMIDQ8:7M&auctions=44&nbi=22&iat=4&trsi=0&prof=5841&nabi=16&fixedprices=4&!ptrid=Pr1062_10,Pr5841_2&pcc=2&nProdSur=2&tcatid=617"},"resultSummary":{"matchCount":"118","abridgedMatchCount":"113","lastUpdateTime":"2012-01-19T18:36:02.000-07:00"},"intermingleRecord":[{"productRecord":{"value":[{"longValue":"81996414"},{"stringValue":"Avatar (DVD, 2010)"},{"longValue":"78"},{"moneyValue":{"currencyId":"USD","$t":"4.0"}},{"dateValue":"2012-01-19T21:01:14"},{"moneyValue":{"currencyId":"USD","$t":"13.5"}},{"longValue":"34"},{"moneyValue":{"currencyId":"USD","$t":"3.96"}},{"longValue":"44"},{"stringValue":"http://i.ebayimg.com/22/!!d7WiF!EWM~$(KGrHqMOKikEvOnbKY1gBL9fO1lupQ~~_6.JPG?set_id=89040003C1"}]}},{"productRecord":{"value":[{"longValue":"82093597"},{"stringValue":"Avatar (Blu-ray/DVD, 2010, 2-Disc Set)"},{"longValue":"74"},{"moneyValue":{"currencyId":"USD","$t":"15.01"}},{"dateValue":"2012-01-19T19:12:15"},{"moneyValue":{"currencyId":"USD","$t":"20.0"}},{"longValue":"26"},{"moneyValue":{"currencyId":"USD","$t":"11.96"}},{"longValue":"48"},{"stringValue":"http://i.ebayimg.com/01/!!d8dfeQ!mM~$(KGrHqUOKjcEwhzOMI3VBMSIdcD!Yw~~_6.JPG?set_id=89040003C1"}]}},{"itemRecord":{"value":[{"longValue":"220931734658"},{"stringValue":"AVATAR 3D BLU-RAY FACTORY SEALED -new,sealed-"},{"moneyValue":{"currencyId":"USD","$t":"70.99"}},{"moneyValue":{"currencyId":"USD","$t":"79.99"}},{"longValue":"1"},{"longValue":"300"},{"dateValue":"2012-01-19T19:15:14.000-07:00"},{"stringValue":"Sm86FNl5NfYQDIhtWAUiWbqQ"}]}},{"itemRecord":{"value":[{"longValue":"170763800829"},{"stringValue":"Avatar 3D Blu-ray Disc - BRAND NEW - FACTORY SEALED - PANASONIC EXCLUSIVE"},{"moneyValue":{"currencyId":"USD","$t":"61.0"}},{"moneyValue":{"currencyId":"USD","$t":"74.99"}},{"longValue":"4"},{"longValue":["300","0"]},{"dateValue":"2012-01-19T19:51:57.000-07:00"},{"stringValue":"SmJODPpMeeyd8FcfsNsrdYWA"}]}},{"itemRecord":{"value":[{"longValue":"220931945435"},{"stringValue":"New Sealed James Cameron's AVATAR 3D Blu-Ray Panasonic Exclusive PG-13 DVD RARE"},{"moneyValue":{"currencyId":"USD","$t":"61.0"}},{"moneyValue":{"currencyId":"USD","$t":"0.0"}},{"longValue":"14"},{"longValue":"300"},{"dateValue":"2012-01-19T21:19:51.000-07:00"},{"stringValue":"Sm4H_Y9vXU4EKx-f3wk3EF7A"}]}},{"itemRecord":{"value":[{"longValue":"320829372998"},{"stringValue":"NEW&SEALED 3D Blu-ray Panasonic Exclusive \"AVATAR\" FAST FREE SHIPPING!"},{"moneyValue":{"currencyId":"USD","$t":"89.99"}},{"moneyValue":{"currencyId":"USD","$t":"98.99"}},{"longValue":"0"},{"longValue":["0","399"]},{"dateValue":"2012-01-19T21:53:36.000-07:00"},{"stringValue":"SmcgSHPYl8Y2gPS8cJN-OcrA"}]}},{"itemRecord":{"value":[{"longValue":"190628955236"},{"stringValue":"NEW *Rare* AVATAR Blu-ray 3D Panasonic Exclusive *NOT SOLD IN STORES*"},{"moneyValue":{"currencyId":"USD","$t":"99.99"}},{"moneyValue":{"currencyId":"USD","$t":"109.99"}},{"longValue":"0"},{"longValue":"0"},{"dateValue":"2012-01-20T06:10:25.000-07:00"},{"stringValue":"Sm2CvUgNznvK-l0t-rZ3n4GQ"}]}},{"itemRecord":{"value":[{"longValue":"160718400852"},{"stringValue":"Avatar 3D Blu-Ray Panasonic Exclusive __ Unopened - Original factory shrink wrap"},{"moneyValue":{"currencyId":"USD","$t":"55.01"}},{"moneyValue":{"currencyId":"USD","$t":"75.0"}},{"longValue":"8"},{"longValue":"300"},{"dateValue":"2012-01-20T10:48:32.000-07:00"},{"stringValue":"SmiTg55gmYOWAJ1XbSQ98ECA"}]}},{"itemRecord":{"value":[{"longValue":"130632208352"},{"stringValue":"Avatar 3D Blu-Ray - Panasonic Exclusive (brand new, factory sealed)"},{"moneyValue":{"currencyId":"USD","$t":"62.85"}},{"moneyValue":{"currencyId":"USD","$t":"94.99"}},{"longValue":"12"},{"longValue":"300"},{"dateValue":"2012-01-20T13:52:56.000-07:00"},{"stringValue":"SmtrdC17WyVHvvn_ZgWTXgiA"}]}},{"itemRecord":{"value":[{"longValue":"230733466588"},{"stringValue":"Brand new Avatar 3d blu ray disc. Factory sealed (panasonic exclusive)"},{"moneyValue":{"currencyId":"USD","$t":"50.0"}},{"moneyValue":{"currencyId":"USD","$t":"0.0"}},{"longValue":"4"},{"longValue":"300"},{"dateValue":"2012-01-20T13:53:56.000-07:00"},{"stringValue":"SmlZdHT_kLO9ggmFSsxS0QCA"}]}},{"itemRecord":{"value":[{"longValue":"320829809050"},{"stringValue":"Avatar 3D Blu-ray Panasonic Exclusive Sealed NEW"},{"moneyValue":{"currencyId":"USD","$t":"60.0"}},{"moneyValue":{"currencyId":"USD","$t":"0.0"}},{"longValue":"0"},{"longValue":"0"},{"dateValue":"2012-01-20T14:31:02.000-07:00"},{"stringValue":"SmUBlLP2lRLEf0VBWm8ilplg"}]}},{"itemRecord":{"value":[{"longValue":"130630659754"},{"stringValue":"AVATAR 3D Blu-ray Brand New Factory Sealed (Original Panasonic Exclusive)"},{"moneyValue":{"currencyId":"USD","$t":"58.0"}},{"moneyValue":{"currencyId":"USD","$t":"0.0"}},{"longValue":"15"},{"longValue":"300"},{"dateValue":"2012-01-20T14:34:31.000-07:00"},{"stringValue":"Sm2MdiMGiOAE-0Qh8yDBew4g"}]}},{"itemRecord":{"value":[{"longValue":"150734718107"},{"stringValue":"Avatar 3D Blu-ray Brand New Factory Sealed Panasonic Exclusive"},{"moneyValue":{"currencyId":"USD","$t":"104.99"}},{"moneyValue":{"currencyId":"USD","$t":"104.99"}},{"longValue":"9"},{"longValue":["0","325","1690","-2147481648","16777216"]},{"dateValue":"2012-02-09T17:00:38.000-07:00"},{"stringValue":"SmVD9hFn5o8UG2kBlJRLDI4A"}]}},{"itemRecord":{"value":[{"longValue":"260937482985"},{"stringValue":"BRAND NEW Avatar 3D Blu-Ray DVD - Sealed"},{"moneyValue":{"currencyId":"USD","$t":"70.0"}},{"moneyValue":{"currencyId":"USD","$t":"0.0"}},{"longValue":"0"},{"longValue":["0","0"]},{"dateValue":"2012-01-20T20:25:55.000-07:00"},{"stringValue":"Smn_b9xfCFZUjdMMzg6b5U_w"}]}},{"itemRecord":{"value":[{"longValue":"120843131441"},{"stringValue":"Avatar 3D blu ray disc factory sealed NIB 3 d version"},{"moneyValue":{"currencyId":"USD","$t":"51.0"}},{"moneyValue":{"currencyId":"USD","$t":"0.0"}},{"longValue":"3"},{"longValue":"0"},{"dateValue":"2012-01-20T20:30:19.000-07:00"},{"stringValue":"SmRNvQVngyrAAzzicicxqF-g"}]}},{"itemRecord":{"value":[{"longValue":"330673600191"},{"stringValue":"AVATAR 3D Blu Ray-Factory Sealed..FREE Shipping!!!"},{"moneyValue":{"currencyId":"USD","$t":"49.95"}},{"moneyValue":{"currencyId":"USD","$t":"0.0"}},{"longValue":"1"},{"longValue":"0"},{"dateValue":"2012-01-20T21:51:58.000-07:00"},{"stringValue":"SmuX1a85zuIEuO2Jv-BJzp0A"}]}},{"itemRecord":{"value":[{"longValue":"200700624127"},{"stringValue":"AVATAR, 3D, BLU RAY, BRAND NEW AND FACTORY SEALED"},{"moneyValue":{"currencyId":"USD","$t":"50.0"}},{"moneyValue":{"currencyId":"USD","$t":"0.0"}},{"longValue":"1"},{"longValue":"300"},{"dateValue":"2012-01-20T23:22:51.000-07:00"},{"stringValue":"SmPCqKpN0DBoNqaMNhr3vO9Q"}]}},{"itemRecord":{"value":[{"longValue":"130632758842"},{"stringValue":"3D Avatar Blue Ray Disk"},{"moneyValue":{"currencyId":"USD","$t":"75.0"}},{"moneyValue":{"currencyId":"USD","$t":"90.0"}},{"longValue":"0"},{"longValue":["300","0"]},{"dateValue":"2012-01-21T15:27:37.000-07:00"},{"stringValue":"Smff4598BYjt0QU3hnozg9qQ"}]}},{"itemRecord":{"value":[{"longValue":"180798514647"},{"stringValue":"Avatar Blu-ray 3D Panasonic Exclusive - Sealed NEW"},{"moneyValue":{"currencyId":"USD","$t":"32.93"}},{"moneyValue":{"currencyId":"USD","$t":"0.0"}},{"longValue":"18"},{"longValue":["300","1000"]},{"dateValue":"2012-01-21T15:43:43.000-07:00"},{"stringValue":"Smt8taWyWmsG_Tw-zHfZUmHA"}]}},{"itemRecord":{"value":[{"longValue":"380401406666"},{"stringValue":"AVATAR 3D BLU-RAY MOVIE NEW EDITION --FACTORY SEALED !"},{"moneyValue":{"currencyId":"USD","$t":"95.0"}},{"moneyValue":{"currencyId":"USD","$t":"95.0"}},{"longValue":"11"},{"longValue":"0"},{"dateValue":"2012-02-09T08:43:23.000-07:00"},{"stringValue":"SmipHloK8dVCLobrpiHi9soA"}]}},{"itemRecord":{"value":[{"longValue":"120845197426"},{"stringValue":"Avatar 3D Blu Ray Exlusive Factory Sealed Brand New"},{"moneyValue":{"currencyId":"USD","$t":"70.0"}},{"moneyValue":{"currencyId":"USD","$t":"100.0"}},{"longValue":"1"},{"longValue":"0"},{"dateValue":"2012-01-22T05:35:49.000-07:00"},{"stringValue":"SmSjLcuOvW6zhwC5Lx1h5S-g"}]}},{"itemRecord":{"value":[{"longValue":"320830894431"},{"stringValue":"AVATAR BLU-RAY 3D MOVIE; BRAND NEW, FACTORY SEALED"},{"moneyValue":{"currencyId":"USD","$t":"75.0"}},{"moneyValue":{"currencyId":"USD","$t":"0.0"}},{"longValue":"0"},{"longValue":"0"},{"dateValue":"2012-01-22T15:55:06.000-07:00"},{"stringValue":"SmE7UPFuIq9m6x9xjY7QFbXg"}]}},{"itemRecord":{"value":[{"longValue":"330672702076"},{"stringValue":"AVATAR 3D BLU-RAY 3D - Brand New Unopened"},{"moneyValue":{"currencyId":"USD","$t":"60.0"}},{"moneyValue":{"currencyId":"USD","$t":"100.0"}},{"longValue":"1"},{"longValue":"300"},{"dateValue":"2012-01-22T16:25:14.000-07:00"},{"stringValue":"SmN_U5mt-bejXAlAg-oekhYg"}]}},{"itemRecord":{"value":[{"longValue":"220933768045"},{"stringValue":"Blue-ray 3D Avatar DVD, Brand New in Original Packaging, Never opened"},{"moneyValue":{"currencyId":"USD","$t":"39.0"}},{"moneyValue":{"currencyId":"USD","$t":"0.0"}},{"longValue":"8"},{"longValue":"0"},{"dateValue":"2012-01-22T16:58:20.000-07:00"},{"stringValue":"SmZGHJZ-gikK2yYeIDhWxFvQ"}]}},{"itemRecord":{"value":[{"longValue":"170766321061"},{"stringValue":"Avatar 3D blu ray, exclusive Panasonic release. New sealed in hand. Great 3 D"},{"moneyValue":{"currencyId":"USD","$t":"43.99"}},{"moneyValue":{"currencyId":"USD","$t":"85.0"}},{"longValue":"6"},{"longValue":"300"},{"dateValue":"2012-01-22T17:26:33.000-07:00"},{"stringValue":"SmnvAaEh-waB7BW4_CKGWdBQ"}]}},{"itemRecord":{"value":[{"longValue":"300651900316"},{"stringValue":"AVATAR BLU-RAY 3D\"\" PANASONIC EXCLUSIVE NEW SEALED not found in stores"},{"moneyValue":{"currencyId":"USD","$t":"31.0"}},{"moneyValue":{"currencyId":"USD","$t":"0.0"}},{"longValue":"8"},{"longValue":"300"},{"dateValue":"2012-01-22T18:55:21.000-07:00"},{"stringValue":"SmntGH04Op5W7KLFnYdvAeZA"}]}},{"itemRecord":{"value":[{"longValue":"180798015096"},{"stringValue":"Avatar 3D Blu-ray Panasonic Exclusive, factory sealed, minor box defect."},{"moneyValue":{"currencyId":"USD","$t":"49.0"}},{"moneyValue":{"currencyId":"USD","$t":"0.0"}},{"longValue":"0"},{"longValue":"0"},{"dateValue":"2012-01-22T19:53:02.000-07:00"},{"stringValue":"SmeZSdGGu_jOcIPVFQpAVQFA"}]}},{"itemRecord":{"value":[{"longValue":"160717564858"},{"stringValue":"Avatar 3D SEALED Blu-ray Panasonic Exclusive"},{"moneyValue":{"currencyId":"USD","$t":"31.0"}},{"moneyValue":{"currencyId":"USD","$t":"0.0"}},{"longValue":"12"},{"longValue":"0"},{"dateValue":"2012-01-22T20:07:34.000-07:00"},{"stringValue":"SmiWNF8nl9ntob9GViXnyBBA"}]}},{"itemRecord":{"value":[{"longValue":"220932049647"},{"stringValue":"AVATAR 3D BLU-RAY~BRAND NEW~FACTORY SEALED IN SHRINK~PANASONIC PROMO EXCLUSIVE!!"},{"moneyValue":{"currencyId":"USD","$t":"109.99"}},{"moneyValue":{"currencyId":"USD","$t":"120.99"}},{"longValue":"0"},{"longValue":"300"},{"dateValue":"2012-01-22T23:01:04.000-07:00"},{"stringValue":"SmBH2AwKhfOLm0BP7eXlEhNA"}]}},{"itemRecord":{"value":[{"longValue":"180800257998"},{"stringValue":"Avatar Blu-Ray 3D Limited Release Promo Disc - Factory Sealed"},{"moneyValue":{"currencyId":"USD","$t":"89.0"}},{"moneyValue":{"currencyId":"USD","$t":"89.0"}},{"longValue":"0"},{"longValue":"0"},{"dateValue":"2012-01-26T10:27:27.000-07:00"},{"stringValue":"Sm0gVHFWw_MaLbyOMYjwaiog"}]}},{"itemRecord":{"value":[{"longValue":"120844739120"},{"stringValue":"Avatar 3D Blu Ray Factory Sealed Incl. Two 3D Glasses !!"},{"moneyValue":{"currencyId":"USD","$t":"79.0"}},{"moneyValue":{"currencyId":"USD","$t":"0.0"}},{"longValue":"13"},{"longValue":["0","-2147481148","268435456"]},{"dateValue":"2012-01-23T09:38:20.000-07:00"},{"stringValue":"SmbzRQ-rZ_MKXYvTkoispOVw"}]}},{"itemRecord":{"value":[{"longValue":"140683495269"},{"stringValue":"New AVATAR Blu-ray 3D Panasonic Exclusive *NOT SOLD IN STORES*"},{"moneyValue":{"currencyId":"USD","$t":"32.91"}},{"moneyValue":{"currencyId":"USD","$t":"99.0"}},{"longValue":"2"},{"longValue":"0"},{"dateValue":"2012-01-23T15:02:11.000-07:00"},{"stringValue":"SmZ4iQNLIAiTz0o_0j3bIW9w"}]}},{"itemRecord":{"value":[{"longValue":"170765774879"},{"stringValue":"Avatar 3D Blu-ray Panasonic Exclusive - Not available in stores!"},{"moneyValue":{"currencyId":"USD","$t":"31.93"}},{"moneyValue":{"currencyId":"USD","$t":"0.0"}},{"longValue":"20"},{"longValue":"0"},{"dateValue":"2012-01-23T15:13:47.000-07:00"},{"stringValue":"SmbSQ1lnQYPcCfvpfpvToS8A"}]}},{"itemRecord":{"value":[{"longValue":"180798565141"},{"stringValue":"Avatar 3D Blu-Ray - BRAND NEW and SEALED - Panasonic Exclusive 3 D BluRay"},{"moneyValue":{"currencyId":"USD","$t":"33.93"}},{"moneyValue":{"currencyId":"USD","$t":"0.0"}},{"longValue":"11"},{"longValue":"0"},{"dateValue":"2012-01-23T17:47:14.000-07:00"},{"stringValue":"SmvZYYqQS_evOSt3pDfMno8Q"}]}},{"itemRecord":{"value":[{"longValue":"110810440275"},{"stringValue":"AVATAR 3D Blu-ray Brand New Factory Sealed ñ FREE SHIPPING!"},{"moneyValue":{"currencyId":"USD","$t":"58.99"}},{"moneyValue":{"currencyId":"USD","$t":"0.0"}},{"longValue":"22"},{"longValue":"0"},{"dateValue":"2012-01-23T17:57:52.000-07:00"},{"stringValue":"SmBi99v66zqHKYkKvIAJ9pQA"}]}},{"itemRecord":{"value":[{"longValue":"190628845216"},{"stringValue":"AVATAR 3D Blu-Ray - Panasonic Exclusive - FACTORY SEALED - Free Shipping"},{"moneyValue":{"currencyId":"USD","$t":"31.0"}},{"moneyValue":{"currencyId":"USD","$t":"0.0"}},{"longValue":"6"},{"longValue":"0"},{"dateValue":"2012-01-23T19:51:19.000-07:00"},{"stringValue":"SmE2rnqwwG4Ox7y9QPAZwmDA"}]}},{"itemRecord":{"value":[{"longValue":"320831486088"},{"stringValue":"Avatar 3D Blu-Ray NEW Factory Sealed - Panasonic Exclusive - FREE SHIPPING"},{"moneyValue":{"currencyId":"USD","$t":"50.0"}},{"moneyValue":{"currencyId":"USD","$t":"0.0"}},{"longValue":"2"},{"longValue":"0"},{"dateValue":"2012-01-23T21:10:17.000-07:00"},{"stringValue":"Smp2gxOJCJH8Wm7P4n6akm1Q"}]}},{"itemRecord":{"value":[{"longValue":"260937208793"},{"stringValue":"3D Avatar 3D Blu-ray 3D bluray 3D blu ray Brand new sealed NIB new in box"},{"moneyValue":{"currencyId":"USD","$t":"90.0"}},{"moneyValue":{"currencyId":"USD","$t":"120.0"}},{"longValue":"0"},{"longValue":["300","200","500"]},{"dateValue":"2012-01-24T09:58:40.000-07:00"},{"stringValue":"SmKwKZry-47DifBrUXtAjLIA"}]}},{"itemRecord":{"value":[{"longValue":"290659864842"},{"stringValue":"Avatar 3D Blu Ray Panasonic Exclusive Sealed Promo DTS-HD 5.1 Master"},{"moneyValue":{"currencyId":"USD","$t":"26.0"}},{"moneyValue":{"currencyId":"USD","$t":"0.0"}},{"longValue":"7"},{"longValue":["0","-2147483148","2"]},{"dateValue":"2012-01-24T11:52:45.000-07:00"},{"stringValue":"Smc5ACn355MwQ36-8qVhYJMA"}]}},{"itemRecord":{"value":[{"longValue":"120845375724"},{"stringValue":"Avatar Blu-Ray 3D Panasonic Exclusive Movie Brand New Sealed"},{"moneyValue":{"currencyId":"USD","$t":"80.0"}},{"moneyValue":{"currencyId":"USD","$t":"0.0"}},{"longValue":"0"},{"longValue":"300"},{"dateValue":"2012-01-24T12:15:28.000-07:00"},{"stringValue":"SmTRKrb5snFcN629amftoz5g"}]}},{"itemRecord":{"value":[{"longValue":"170766323196"},{"stringValue":"Avatar 3D Blu-ray Brand New Factory Sealed"},{"moneyValue":{"currencyId":"USD","$t":"26.0"}},{"moneyValue":{"currencyId":"USD","$t":"0.0"}},{"longValue":"8"},{"longValue":"0"},{"dateValue":"2012-01-24T17:32:24.000-07:00"},{"stringValue":"Smeip7wxKlFhh3GztuS7jkiA"}]}},{"itemRecord":{"value":[{"longValue":"220936324950"},{"stringValue":"AVATAR 3D BLU-RAY~BRAND NEW~FACTORY SEALED IN SHRINK~PANASONIC PROMO EXCLUSIVE!!"},{"moneyValue":{"currencyId":"USD","$t":"89.99"}},{"moneyValue":{"currencyId":"USD","$t":"99.99"}},{"longValue":"0"},{"longValue":"300"},{"dateValue":"2012-01-24T18:15:10.000-07:00"},{"stringValue":"Sm_JHQtAx3TZEDGP0Lw6ObpA"}]}},{"itemRecord":{"value":[{"longValue":"320831969924"},{"stringValue":"AVATAR 3D Blu Ray (Original Panasonic Exclusive) - Like NEW"},{"moneyValue":{"currencyId":"USD","$t":"40.0"}},{"moneyValue":{"currencyId":"USD","$t":"86.0"}},{"longValue":"1"},{"longValue":"300"},{"dateValue":"2012-01-24T20:26:55.000-07:00"},{"stringValue":"Smnzp3FhNin5GcqoftqekADg"}]}},{"itemRecord":{"value":[{"longValue":"150738091689"},{"stringValue":"New RARE Avatar Blu-ray Blu Ray 3-D 3 D Panasonic Exclusive NOT SOLD IN STORES"},{"moneyValue":{"currencyId":"USD","$t":"199.99"}},{"moneyValue":{"currencyId":"USD","$t":"199.99"}},{"longValue":"0"},{"longValue":["0","-2147482303","268435456","-2147480098","268435456"]},{"dateValue":"2012-01-22T16:26:56.000-07:00"},{"stringValue":"SmuB9oGX7_insOHm5Wm1mtPA"}]}},{"itemRecord":{"value":[{"longValue":"200697624093"},{"stringValue":"New Avatar 3D Blu-Ray Panasonic Exclusive Factory Sealed New"},{"moneyValue":{"currencyId":"USD","$t":"105.0"}},{"moneyValue":{"currencyId":"USD","$t":"105.0"}},{"longValue":"1"},{"longValue":["0","0"]},{"dateValue":"2012-02-06T13:17:53.000-07:00"},{"stringValue":"Sm4Ih4QKzC5nfe3TenzzSiSA"}]}},{"itemRecord":{"value":[{"longValue":"320832354417"},{"stringValue":"Avatar 3-d Blu Ray With Sony Blu Ray Player"},{"moneyValue":{"currencyId":"USD","$t":"150.0"}},{"moneyValue":{"currencyId":"USD","$t":"0.0"}},{"longValue":"0"},{"longValue":"300"},{"dateValue":"2012-01-25T12:33:27.000-07:00"},{"stringValue":"SmQ-meY-Gw-I--dGgWe4aNdA"}]}},{"itemRecord":{"value":[{"longValue":"320832387656"},{"stringValue":"James Cameron's AVATAR Exclusive Blu-Ray 3D **FACTORY SEALED**"},{"moneyValue":{"currencyId":"USD","$t":"85.0"}},{"moneyValue":{"currencyId":"USD","$t":"0.0"}},{"longValue":"0"},{"longValue":"0"},{"dateValue":"2012-01-25T13:20:30.000-07:00"},{"stringValue":"Sm-_Y6j0vHctWYksalN84VFw"}]}},{"itemRecord":{"value":[{"longValue":"320832469688"},{"stringValue":"Avatar Blu-ray 3D"},{"moneyValue":{"currencyId":"USD","$t":"39.99"}},{"moneyValue":{"currencyId":"USD","$t":"0.0"}},{"longValue":"0"},{"longValue":"241"},{"dateValue":"2012-01-25T16:09:30.000-07:00"},{"stringValue":"Sme85gcM76LwgS-iccLJrT7g"}]}},{"itemRecord":{"value":[{"longValue":"110811394468"},{"stringValue":"NEW- AVATAR 3D Blu-Ray Movie- PANASONIC EXCLUSIVE&FACTORY SEALED!!"},{"moneyValue":{"currencyId":"USD","$t":"31.0"}},{"moneyValue":{"currencyId":"USD","$t":"95.0"}},{"longValue":"3"},{"longValue":"0"},{"dateValue":"2012-01-25T20:47:13.000-07:00"},{"stringValue":"Sml7KjYSTL-Pw446Zcx9UrNw"}]}},{"itemRecord":{"value":[{"longValue":"190629134325"},{"stringValue":"AVATAR 3D BLU-RAY DISC Panasonic Exclusive, Factory Sealed Dolby Digital DTS-HD"},{"moneyValue":{"currencyId":"USD","$t":"104.95"}},{"moneyValue":{"currencyId":"USD","$t":"104.95"}},{"longValue":"0"},{"longValue":"0"},{"dateValue":"2012-02-16T17:03:33.000-07:00"},{"stringValue":"SmDZ8RlMIjDvlEW3KUibzj2Q"}]}}],"dfnResponse":{"productTypeCoverage":{"name":"US_DVD_HD_DVD_Blu_ray","supplyScore":"108.0","demandScore":"100.0","aggregateScore":"90.24579692259518"}},"queryTime":"157","executionTime":"204","backendTestResponse":{}}}}} \ No newline at end of file diff --git a/node_modules/xml2json/test/fixtures/large.xml b/node_modules/xml2json/test/fixtures/large.xml deleted file mode 100644 index fe3b720..0000000 --- a/node_modules/xml2json/test/fixtures/large.xml +++ /dev/null @@ -1,1132 +0,0 @@ - - - -Success -1.1.0 -2012-01-20T01:36:25.904Z - - 3 - 1.0.0 - text/html - <a>qds=0.1723&!_dcat_leaf=617,163826,617,163826,15077&pct=94.84&nai=44&nhalf=0&ncbt=0&nmq=2&!SIBE=avatar+blue+ray+3d,JPIA9PMIDQ8:7M&auctions=44&nbi=22&iat=4&trsi=0&prof=5841&nabi=16&fixedprices=4&!ptrid=Pr1062_10,Pr5841_2&pcc=2&nProdSur=2&tcatid=617</a> - - - 118 - 113 - 2012-01-19T18:36:02.000-07:00 - - - - - 81996414 - - - Avatar (DVD, 2010) - - - 78 - - 4.0 - - - - 2012-01-19T21:01:14 - - 13.5 - - - - 34 - -3.96 - - -44 - - - http://i.ebayimg.com/22/!!d7WiF!EWM~$(KGrHqMOKikEvOnbKY1gBL9fO1lupQ~~_6.JPG?set_id=89040003C1 - - - - - 82093597 - - - Avatar (Blu-ray/DVD, 2010, 2-Disc Set) - - - 74 - - 15.01 - - - - 2012-01-19T19:12:15 - -20.0 - - -26 -11.96 - -48 - - - http://i.ebayimg.com/01/!!d8dfeQ!mM~$(KGrHqUOKjcEwhzOMI3VBMSIdcD!Yw~~_6.JPG?set_id=89040003C1 - - - - - 220931734658 - - - AVATAR 3D BLU-RAY FACTORY SEALED -new,sealed- - - 70.99 - - -79.99 - - -1 - -300 - -2012-01-19T19:15:14.000-07:00 - -Sm86FNl5NfYQDIhtWAUiWbqQ - - - - 170763800829 - - - Avatar 3D Blu-ray Disc - BRAND NEW - FACTORY SEALED - PANASONIC EXCLUSIVE - - - 61.0 - - -74.99 - - -4 - -300 -0 - -2012-01-19T19:51:57.000-07:00 - -SmJODPpMeeyd8FcfsNsrdYWA - - - - 220931945435 - - - New Sealed James Cameron's AVATAR 3D Blu-Ray Panasonic Exclusive PG-13 DVD RARE - - - 61.0 - - -0.0 - - -14 - -300 - -2012-01-19T21:19:51.000-07:00 - -Sm4H_Y9vXU4EKx-f3wk3EF7A - - - - 320829372998 - - - NEW & SEALED 3D Blu-ray Panasonic Exclusive "AVATAR" FAST FREE SHIPPING! - - - 89.99 - - -98.99 - - -0 - -0 -399 - -2012-01-19T21:53:36.000-07:00 - -SmcgSHPYl8Y2gPS8cJN-OcrA - - - - 190628955236 - - - NEW *Rare* AVATAR Blu-ray 3D Panasonic Exclusive *NOT SOLD IN STORES* - - 99.99 - - -109.99 - - -0 - -0 - -2012-01-20T06:10:25.000-07:00 - -Sm2CvUgNznvK-l0t-rZ3n4GQ - - - - 160718400852 - - - Avatar 3D Blu-Ray Panasonic Exclusive __ Unopened - Original factory shrink wrap - - - 55.01 - - -75.0 - - -8 - -300 - -2012-01-20T10:48:32.000-07:00 - -SmiTg55gmYOWAJ1XbSQ98ECA - - - - 130632208352 - - - Avatar 3D Blu-Ray - Panasonic Exclusive (brand new, factory sealed) - - 62.85 - - -94.99 - - -12 - -300 - -2012-01-20T13:52:56.000-07:00 - -SmtrdC17WyVHvvn_ZgWTXgiA - - - - 230733466588 - - - Brand new Avatar 3d blu ray disc. Factory sealed (panasonic exclusive) - - - 50.0 - - -0.0 - - -4 - -300 - -2012-01-20T13:53:56.000-07:00 - -SmlZdHT_kLO9ggmFSsxS0QCA - - - - 320829809050 - - - Avatar 3D Blu-ray Panasonic Exclusive Sealed NEW - - 60.0 - - -0.0 - - -0 - -0 - -2012-01-20T14:31:02.000-07:00 - -SmUBlLP2lRLEf0VBWm8ilplg - - - - 130630659754 - - - AVATAR 3D Blu-ray Brand New Factory Sealed (Original Panasonic Exclusive) - - - 58.0 - - -0.0 - - -15 - -300 - -2012-01-20T14:34:31.000-07:00 - -Sm2MdiMGiOAE-0Qh8yDBew4g - - - - 150734718107 - - - Avatar 3D Blu-ray Brand New Factory Sealed Panasonic Exclusive - - 104.99 - - -104.99 - - -9 - -0 -325 -1690 --2147481648 -16777216 - -2012-02-09T17:00:38.000-07:00 - -SmVD9hFn5o8UG2kBlJRLDI4A - - - - 260937482985 - - - BRAND NEW Avatar 3D Blu-Ray DVD - Sealed - - 70.0 - - -0.0 - - -0 - -0 -0 - -2012-01-20T20:25:55.000-07:00 - -Smn_b9xfCFZUjdMMzg6b5U_w - - - - 120843131441 - - - Avatar 3D blu ray disc factory sealed NIB 3 d version - - 51.0 - - -0.0 - - -3 - -0 - -2012-01-20T20:30:19.000-07:00 - -SmRNvQVngyrAAzzicicxqF-g - - - - 330673600191 - - - AVATAR 3D Blu Ray-Factory Sealed..FREE Shipping!!! - - 49.95 - - -0.0 - - -1 - -0 - -2012-01-20T21:51:58.000-07:00 - -SmuX1a85zuIEuO2Jv-BJzp0A - - - - 200700624127 - - - AVATAR, 3D, BLU RAY, BRAND NEW AND FACTORY SEALED - - 50.0 - - -0.0 - - -1 - -300 - -2012-01-20T23:22:51.000-07:00 - -SmPCqKpN0DBoNqaMNhr3vO9Q - - - - 130632758842 - - - 3D Avatar Blue Ray Disk - - 75.0 - - -90.0 - - -0 - -300 -0 - -2012-01-21T15:27:37.000-07:00 - -Smff4598BYjt0QU3hnozg9qQ - - - - 180798514647 - - - Avatar Blu-ray 3D Panasonic Exclusive - Sealed NEW - - 32.93 - - -0.0 - - -18 - -300 -1000 - -2012-01-21T15:43:43.000-07:00 - -Smt8taWyWmsG_Tw-zHfZUmHA - - - - 380401406666 - - - AVATAR 3D BLU-RAY MOVIE NEW EDITION --FACTORY SEALED ! - - 95.0 - - -95.0 - - -11 - -0 - -2012-02-09T08:43:23.000-07:00 - -SmipHloK8dVCLobrpiHi9soA - - - - 120845197426 - - - Avatar 3D Blu Ray Exlusive Factory Sealed Brand New - - 70.0 - - -100.0 - - -1 - -0 - -2012-01-22T05:35:49.000-07:00 - -SmSjLcuOvW6zhwC5Lx1h5S-g - - - - 320830894431 - - - AVATAR BLU-RAY 3D MOVIE; BRAND NEW, FACTORY SEALED - - 75.0 - - -0.0 - - -0 - -0 - -2012-01-22T15:55:06.000-07:00 - -SmE7UPFuIq9m6x9xjY7QFbXg - - - - 330672702076 - - - AVATAR 3D BLU-RAY 3D - Brand New Unopened - - 60.0 - - -100.0 - - -1 - -300 - -2012-01-22T16:25:14.000-07:00 - -SmN_U5mt-bejXAlAg-oekhYg - - - - 220933768045 - - - Blue-ray 3D Avatar DVD, Brand New in Original Packaging, Never opened - - 39.0 - - -0.0 - - -8 - -0 - -2012-01-22T16:58:20.000-07:00 - -SmZGHJZ-gikK2yYeIDhWxFvQ - - - - 170766321061 - - - Avatar 3D blu ray, exclusive Panasonic release. New sealed in hand. Great 3 D - - - 43.99 - - -85.0 - - -6 - -300 - -2012-01-22T17:26:33.000-07:00 - -SmnvAaEh-waB7BW4_CKGWdBQ - - - - 300651900316 - - - AVATAR BLU-RAY 3D"" PANASONIC EXCLUSIVE NEW SEALED not found in stores - - - 31.0 - - -0.0 - - -8 - -300 - -2012-01-22T18:55:21.000-07:00 - -SmntGH04Op5W7KLFnYdvAeZA - - - - 180798015096 - - - Avatar 3D Blu-ray Panasonic Exclusive, factory sealed, minor box defect. - - - 49.0 - - -0.0 - - -0 - -0 - -2012-01-22T19:53:02.000-07:00 - -SmeZSdGGu_jOcIPVFQpAVQFA - - - - 160717564858 - - - Avatar 3D SEALED Blu-ray Panasonic Exclusive - - 31.0 - - -0.0 - - -12 - -0 - -2012-01-22T20:07:34.000-07:00 - -SmiWNF8nl9ntob9GViXnyBBA - - - - 220932049647 - - - AVATAR 3D BLU-RAY~BRAND NEW~FACTORY SEALED IN SHRINK~PANASONIC PROMO EXCLUSIVE!! - - - 109.99 - - -120.99 - - -0 - -300 - -2012-01-22T23:01:04.000-07:00 - -SmBH2AwKhfOLm0BP7eXlEhNA - - - - 180800257998 - - - Avatar Blu-Ray 3D Limited Release Promo Disc - Factory Sealed - - 89.0 - - -89.0 - - -0 - -0 - -2012-01-26T10:27:27.000-07:00 - -Sm0gVHFWw_MaLbyOMYjwaiog - - - - 120844739120 - - - Avatar 3D Blu Ray Factory Sealed Incl. Two 3D Glasses !! - - 79.0 - - -0.0 - - -13 - -0 --2147481148 -268435456 - -2012-01-23T09:38:20.000-07:00 - -SmbzRQ-rZ_MKXYvTkoispOVw - - - - 140683495269 - - - New AVATAR Blu-ray 3D Panasonic Exclusive *NOT SOLD IN STORES* - - 32.91 - - -99.0 - - -2 - -0 - -2012-01-23T15:02:11.000-07:00 - -SmZ4iQNLIAiTz0o_0j3bIW9w - - - - 170765774879 - - - Avatar 3D Blu-ray Panasonic Exclusive - Not available in stores! - - 31.93 - - -0.0 - - -20 - -0 - -2012-01-23T15:13:47.000-07:00 - -SmbSQ1lnQYPcCfvpfpvToS8A - - - - 180798565141 - - - Avatar 3D Blu-Ray - BRAND NEW and SEALED - Panasonic Exclusive 3 D BluRay - - - 33.93 - - -0.0 - - -11 - -0 - -2012-01-23T17:47:14.000-07:00 - -SmvZYYqQS_evOSt3pDfMno8Q - - - - 110810440275 - - - AVATAR 3D Blu-ray Brand New Factory Sealed ñ FREE SHIPPING! - - 58.99 - - -0.0 - - -22 - -0 - -2012-01-23T17:57:52.000-07:00 - -SmBi99v66zqHKYkKvIAJ9pQA - - - - 190628845216 - - - AVATAR 3D Blu-Ray - Panasonic Exclusive - FACTORY SEALED - Free Shipping - - - 31.0 - - -0.0 - - -6 - -0 - -2012-01-23T19:51:19.000-07:00 - -SmE2rnqwwG4Ox7y9QPAZwmDA - - - - 320831486088 - - - Avatar 3D Blu-Ray NEW Factory Sealed - Panasonic Exclusive - FREE SHIPPING - - - 50.0 - - -0.0 - - -2 - -0 - -2012-01-23T21:10:17.000-07:00 - -Smp2gxOJCJH8Wm7P4n6akm1Q - - - - 260937208793 - - - 3D Avatar 3D Blu-ray 3D bluray 3D blu ray Brand new sealed NIB new in box - - - 90.0 - - -120.0 - - -0 - -300 -200 -500 - -2012-01-24T09:58:40.000-07:00 - -SmKwKZry-47DifBrUXtAjLIA - - - - 290659864842 - - - Avatar 3D Blu Ray Panasonic Exclusive Sealed Promo DTS-HD 5.1 Master - - 26.0 - - -0.0 - - -7 - -0 --2147483148 -2 - -2012-01-24T11:52:45.000-07:00 - -Smc5ACn355MwQ36-8qVhYJMA - - - - 120845375724 - - - Avatar Blu-Ray 3D Panasonic Exclusive Movie Brand New Sealed - - 80.0 - - -0.0 - - -0 - -300 - -2012-01-24T12:15:28.000-07:00 - -SmTRKrb5snFcN629amftoz5g - - - - 170766323196 - - - Avatar 3D Blu-ray Brand New Factory Sealed - - 26.0 - - -0.0 - - -8 - -0 - -2012-01-24T17:32:24.000-07:00 - -Smeip7wxKlFhh3GztuS7jkiA - - - - 220936324950 - - - AVATAR 3D BLU-RAY~BRAND NEW~FACTORY SEALED IN SHRINK~PANASONIC PROMO EXCLUSIVE!! - - - 89.99 - - -99.99 - - -0 - -300 - -2012-01-24T18:15:10.000-07:00 - -Sm_JHQtAx3TZEDGP0Lw6ObpA - - - - 320831969924 - - - AVATAR 3D Blu Ray (Original Panasonic Exclusive) - Like NEW - - 40.0 - - -86.0 - - -1 - -300 - -2012-01-24T20:26:55.000-07:00 - -Smnzp3FhNin5GcqoftqekADg - - - - 150738091689 - - - New RARE Avatar Blu-ray Blu Ray 3-D 3 D Panasonic Exclusive NOT SOLD IN STORES - - - 199.99 - - -199.99 - - -0 - -0 --2147482303 -268435456 --2147480098 -268435456 - -2012-01-22T16:26:56.000-07:00 - -SmuB9oGX7_insOHm5Wm1mtPA - - - - 200697624093 - - - New Avatar 3D Blu-Ray Panasonic Exclusive Factory Sealed New - - 105.0 - - -105.0 - - -1 - -0 -0 - -2012-02-06T13:17:53.000-07:00 - -Sm4Ih4QKzC5nfe3TenzzSiSA - - - - 320832354417 - - - Avatar 3-d Blu Ray With Sony Blu Ray Player - - 150.0 - - -0.0 - - -0 - -300 - -2012-01-25T12:33:27.000-07:00 - -SmQ-meY-Gw-I--dGgWe4aNdA - - - - 320832387656 - - - James Cameron's AVATAR Exclusive Blu-Ray 3D **FACTORY SEALED** - - 85.0 - - -0.0 - - -0 - -0 - -2012-01-25T13:20:30.000-07:00 - -Sm-_Y6j0vHctWYksalN84VFw - - - - 320832469688 - - - Avatar Blu-ray 3D - - 39.99 - - -0.0 - - -0 - -241 - -2012-01-25T16:09:30.000-07:00 - -Sme85gcM76LwgS-iccLJrT7g - - - - 110811394468 - - - NEW- AVATAR 3D Blu-Ray Movie- PANASONIC EXCLUSIVE & FACTORY SEALED!! - - - 31.0 - - -95.0 - - -3 - -0 - -2012-01-25T20:47:13.000-07:00 - -Sml7KjYSTL-Pw446Zcx9UrNw - - - - 190629134325 - - - AVATAR 3D BLU-RAY DISC Panasonic Exclusive, Factory Sealed Dolby Digital DTS-HD - - - 104.95 - - -104.95 - - -0 - -0 - -2012-02-16T17:03:33.000-07:00 - -SmDZ8RlMIjDvlEW3KUibzj2Q - - - US_DVD_HD_DVD_Blu_ray - 108.0 - 100.0 - 90.24579692259518 - -157204 - \ No newline at end of file diff --git a/node_modules/xml2json/test/fixtures/reorder.json b/node_modules/xml2json/test/fixtures/reorder.json deleted file mode 100644 index 2ba0f61..0000000 --- a/node_modules/xml2json/test/fixtures/reorder.json +++ /dev/null @@ -1 +0,0 @@ -{"parent":{"parent_property":"bar","child":{"child_property":"foo"}}} \ No newline at end of file diff --git a/node_modules/xml2json/test/fixtures/reorder.xml b/node_modules/xml2json/test/fixtures/reorder.xml deleted file mode 100644 index 4e68960..0000000 --- a/node_modules/xml2json/test/fixtures/reorder.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/node_modules/xml2json/test/fixtures/spacetext.json b/node_modules/xml2json/test/fixtures/spacetext.json deleted file mode 100644 index 152789c..0000000 --- a/node_modules/xml2json/test/fixtures/spacetext.json +++ /dev/null @@ -1 +0,0 @@ -{"doc":{"Column":[{"Name":"shit","Value":{"type":"STRING","$t":" abc\nasdf\na "}},{"Name":"foo","Value":{"type":"STRING"}},{"Name":"foo2","Value":{"type":"STRING"}},{"Name":"bar","Value":{"type":"STRING","$t":" "}},{"PK":"true","Name":"uid","Value":{"type":"STRING","$t":"god"}}]}} \ No newline at end of file diff --git a/node_modules/xml2json/test/fixtures/spacetext.xml b/node_modules/xml2json/test/fixtures/spacetext.xml deleted file mode 100644 index f1c61f7..0000000 --- a/node_modules/xml2json/test/fixtures/spacetext.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - shit - abc -asdf -a - - - foo - foo2 - bar - uidgod - - diff --git a/node_modules/xml2json/test/test-coerce.js b/node_modules/xml2json/test/test-coerce.js deleted file mode 100644 index 363230e..0000000 --- a/node_modules/xml2json/test/test-coerce.js +++ /dev/null @@ -1,22 +0,0 @@ -var fs = require('fs'); -var parser = require('../lib'); -var assert = require('assert'); - -var file = __dirname + '/fixtures/coerce.xml'; - -var data = fs.readFileSync(file); - -// With coercion -var result = parser.toJson(data, {reversible: true, coerce: true, object: true}); -console.log(result.itemRecord.value); -assert.strictEqual(result.itemRecord.value[0].longValue['$t'], 12345); -assert.strictEqual(result.itemRecord.value[1].stringValue.number, false); -assert.strictEqual(result.itemRecord.value[2].moneyValue.number, true); -assert.strictEqual(result.itemRecord.value[2].moneyValue['$t'], 104.95); - -// Without coercion -result = parser.toJson(data, {reversible: true, coerce: false, object: true}); -assert.strictEqual(result.itemRecord.value[0].longValue['$t'], '12345'); -assert.strictEqual(result.itemRecord.value[1].stringValue.number, 'false'); -assert.strictEqual(result.itemRecord.value[2].moneyValue.number, 'true'); -assert.strictEqual(result.itemRecord.value[2].moneyValue['$t'], '104.95'); \ No newline at end of file diff --git a/node_modules/xml2json/test/test-reorder.js b/node_modules/xml2json/test/test-reorder.js deleted file mode 100644 index 12f5d80..0000000 --- a/node_modules/xml2json/test/test-reorder.js +++ /dev/null @@ -1,18 +0,0 @@ -var fs = require('fs'); -var path = require('path'); -var parser = require('../lib'); -var assert = require('assert'); - -var data = fs.readFileSync('./fixtures/reorder.json'); -var result = parser.toXml(data); -console.log(result); - -var expected = fs.readFileSync('./fixtures/reorder.xml') + ''; - -if (expected) { - expected = expected.trim(); -} - -//console.log(result + '<---'); -assert.deepEqual(result, expected, 'reorder.json and reorder.xml are different'); -console.log('[json2xml: reoder.json -> roerder.xml] passed!'); diff --git a/node_modules/xml2json/test/test-space.js b/node_modules/xml2json/test/test-space.js deleted file mode 100644 index e4a1bd7..0000000 --- a/node_modules/xml2json/test/test-space.js +++ /dev/null @@ -1,25 +0,0 @@ -var fs = require('fs'); -var path = require('path'); -var parser = require('../lib'); -var assert = require('assert'); - -var xml = fs.readFileSync(__dirname + '/fixtures/spacetext.xml'); -var json = parser.toJson(xml, {object: true, space: true}); -console.log('xml => json: \n%j', json); - -console.log('---------------------\njson => xml: \n%j\n', - parser.toXml(fs.readFileSync(__dirname + '/fixtures/spacetext.json'))); -function eql(a, b) { - for (var k in a) { - assert.deepEqual(a[k], b[k], JSON.stringify(a) + ' should equal ' + JSON.stringify(b)); - } -} - -assert.deepEqual(json.doc.Column.length, 5, 'should have 5 Columns'); -eql(json.doc.Column[0], {Name: 'shit', Value: {type: 'STRING', $t: ' abc\nasdf\na '}}); -eql(json.doc.Column[1], {Name: 'foo', Value: {type: 'STRING'}}); -eql(json.doc.Column[2], {Name: 'foo2', Value: {type: 'STRING'}}); -eql(json.doc.Column[3], {Name: 'bar', Value: {type: 'STRING', $t: ' '}}); -eql(json.doc.Column[4], {PK: 'true', Name: 'uid', Value: {type: 'STRING', $t: 'god'}}); - -console.log('xml2json options.space passed!'); diff --git a/node_modules/xml2json/test/test.js b/node_modules/xml2json/test/test.js deleted file mode 100644 index 9088faf..0000000 --- a/node_modules/xml2json/test/test.js +++ /dev/null @@ -1,62 +0,0 @@ -var fs = require('fs'); -var path = require('path'); -var parser = require('../lib'); -var assert = require('assert'); - -var fixturesPath = './fixtures'; - -fs.readdir(fixturesPath, function(err, files) { - for (var i in files) { - var file = files[i]; - var ext = path.extname(file); - - if (ext == '.xml') { - var basename = path.basename(file, '.xml'); - - var data = fs.readFileSync(fixturesPath + '/' + file); - var result = parser.toJson(data, {reversible: true}); - - var data2 = fs.readFileSync(fixturesPath + '/' + file); - if (file.indexOf('spacetext') >= 0) { - result = parser.toJson(data2, {trim: false, coerce: false}); - } else if (file.indexOf('coerce') >= 0) { - result = parser.toJson(data2, {coerce: false}); - } else if (file.indexOf('domain') >= 0) { - result = parser.toJson(data2, {coerce: false}); - } else if (file.indexOf('large') >= 0) { - result = parser.toJson(data2, {coerce: false, trim: true, sanitize: false}); - } else { - result = parser.toJson(data2, {trim: false}); - } - - var jsonFile = basename + '.json'; - var expected = fs.readFileSync(fixturesPath + '/' + jsonFile) + ''; - - if (expected) { - expected = expected.trim(); - } - /*console.log(result); - console.log('============ Expected ==============='); - console.log(expected)*/ - assert.deepEqual(result, expected, jsonFile + ' and ' + file + ' are different'); - console.log('[xml2json: ' + file + '->' + jsonFile + '] passed!'); - } else if( ext == '.json') { - var basename = path.basename(file, '.json'); - if (basename.match('reversible')) { - var data = fs.readFileSync(fixturesPath + '/' + file); - var result = parser.toXml(data); - - var xmlFile = basename.split('-')[0] + '.xml'; - var expected = fs.readFileSync(fixturesPath + '/' + xmlFile) + ''; - - if (expected) { - expected = expected.trim(); - } - //console.log(result + '<---'); - assert.deepEqual(result, expected, xmlFile + ' and ' + file + ' are different'); - console.log('[json2xml: ' + file + '->' + xmlFile + '] passed!'); - } - } - } -}); - From 6ae6a1a6727a63cec101aa1e974c561ed6183024 Mon Sep 17 00:00:00 2001 From: Chris Alvares Date: Mon, 25 Apr 2016 17:55:53 -0500 Subject: [PATCH 2/5] updated version to 0.4.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ea06203..8a5f5ba 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "type": "git", "url": "https://github.com/imartingraham/nomniture.git" }, - "version": "0.3.9", + "version": "0.4.0", "author": { "name": "Ian Graham", "email": "imartingraham@gmail.com", From 3e7493b3da6bbdc81183f061ba00b5070f4c7300 Mon Sep 17 00:00:00 2001 From: Chris Alvares Date: Tue, 26 Apr 2016 09:50:12 -0500 Subject: [PATCH 3/5] added extend to dependencies. --- package.json | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 8a5f5ba..671adf8 100644 --- a/package.json +++ b/package.json @@ -21,11 +21,12 @@ "test and target" ], "dependencies": { - "nodeunit": "latest", - "underscore" : "latest", - "xml2json" : "latest", - "request": "latest" - }, + "extend": "^3.0.0", + "nodeunit": "latest", + "request": "latest", + "underscore": "latest", + "xml2json": "latest" + }, "bundledDependencies": [ "nodeunit", "underscore", From fa6e82775e24a7c597b73d372d40100d50113573 Mon Sep 17 00:00:00 2001 From: Chris Alvares Date: Fri, 29 Sep 2017 09:03:06 -0500 Subject: [PATCH 4/5] updated package.json file. --- package.json | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 84dba68..f25dcb9 100644 --- a/package.json +++ b/package.json @@ -22,14 +22,9 @@ ], "dependencies": { "extend": "^3.0.0", - "nodeunit": "latest", - "request": "latest", - "underscore": "latest", - "xml2json": "latest" + "nodeunit": "^0.11.1", + "request": "^2.83.0", + "underscore": "^1.8.3", + "xml2json": "^0.11.0" }, - "bundledDependencies": [ - "nodeunit", - "underscore", - "xml2json" - ] } From 613261b39e9b717a1a031279def6f4488500a66c Mon Sep 17 00:00:00 2001 From: Chris Alvares Date: Tue, 21 Nov 2017 14:44:29 -0600 Subject: [PATCH 5/5] removed ending trail space. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 07210e4..b616042 100644 --- a/package.json +++ b/package.json @@ -26,5 +26,5 @@ "request": "^2.83.0", "underscore": "^1.8.3", "xml2json": "^0.11.0" - }, + } }

$p!vwcJ#UrM{D>mVaHYF>XoxXz`&K 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 diff --git a/node_modules/xml2json/node_modules/node-expat/build/Release/obj.target/expat/deps/libexpat/lib/xmlparse.o b/node_modules/xml2json/node_modules/node-expat/build/Release/obj.target/expat/deps/libexpat/lib/xmlparse.o deleted file mode 100644 index 65d93e65899577ea43df4f64d96322175f1cd583..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 220360 zcmd?S4R}=5wKqPK4;Ua}h7UCe>L5`QwQb_1N(|bJ$-p@>gHb_g6+t5vd&Q#8XuJXr z&Wy~-aTMzp?QLyZZ*SAv-Zs{+AOaJ>Bv@M`R*U6UvGs#-)Z)j50G4@wzqQYqnFR3m zR{ziQKJPzI=A8Yx_TFo+z4qE`uf5L;``~&7IsSQb@_yU3^*-eyJVLH$D{|DcVkM4i?{E8%eLv2wlFr2JNPz77xX#w)MCX3`Ffx@)gr#L6ED-rbdqbvW$$b^W|Z=mbHBZSQs8Zjtmu;VoRG+IPcuCEBs{I^|CR z-p)}Hc35~z!&ilFUApL|q3~WjsPdm>q3w;*LD>m#P=MXPH-&DL!iK_gS;@<5B-&9i zd{Fiy!n3;f5d0lgqw+T#qu`x%mhz`Y7CXi(=b!>mzbivmsnva-E#-Sv*FtB1q-fRy7an53$DL%2}awY z^!)V;R1HeTs2tZ`qWpc6iXGDx4hB`xhWG8Oz9j@blwRg9RLQO3;aGCbpzJJUP=F0j z>bLaDmZ9)g4uN;?-w96!$6?z06ARuaBUF2zu;6u^TVfA?D| z`Gq7B{Qc|(<#(N4?3ks3hQM32c)>SsL~p3bq4cu*dX>Dwo*-^6lDS8vb~wNi7Ta#V znYseMgVj!zDs;_eRD2u){Wn4#@v40*sB|#ZtTFk z8jNQ{USIYY&DgBPcZ3>sbGT+SR_NwT7v5gHJ(*J#Je6XyX3A({s=U*icUJjpvjF9e zB>-OQZS+WGdK(+~?u~8-(ipUn*vnpAp&8L#aB1*Fys1Jf zWekd47>vIkDhn7t??ArvW5DUg#d!F#M@#yT39UDhVsZF`vrDoAzqBV3p%Y13)jP79Z~UR!3FSh<&NXoMM2dkJygYm%-o>|a zdh^Z-%ZXf7aP~w*3_$W}`7|V5E9b(zb6(!roOf!LvnS$!%h?lgGN30?#25OT{igLs z`|;u*oTM03&L-7>BjxaAJ1yWE1I!C{FY73x)Dcbs&E_ZJDFUd z-m5aRyXm&cj&7Uo=(Y)ug^?y$7|G;tg{kl%g)xwTY=WYDF~aPEZAxUgO^N~Ioq(}N zQ5(9c1BeTnE2fd-SL@~#ReJY3#hO{nwz{LOlN_NDn%RoE0Jzekn_YUecOd+FFu4N6 zvsa+_dhQf{q9-@FfIA5b7+HDi$ra7Eqg6S~JKIq`-MqU4FShgq7KQmkq4iD`Y&UdQ zX1H!hnBFTHRnzWF@r^%(b}1K~own1wv!9XX-P`dxOd%?Ga3Kr>3})mXoV%5aPN};J z-D!oQ-3@3jV{MKIr_B*{bHhT!DjMs(lWzVYn0!!zJDo^x^GY~vUI{1D@b85gq%{FYD>xRC>jscds!a|u1_7jJyX!MWwJGoh@)+uI`Ir~4+HH~@leJ4Cdxf%)d?&s5gOf<(ADlMg;OtX@3{B;oU3q6`-r13N zw&$H|^3K(HXCm*6;?P$#5bUvFCnQ*Q zq5~{IC>4xiY-SY32Yvio$G5S)5TIs!44Aq(qe8Er;R%no*;JytHWk|%I*BoDqqJnR zQ#UTDNVp>Pp!dt1;os`!YzVkByt*;ln+IqM$=b^Igr1Ck%?L*{^By))GlHqMdtO8( z62UI>9uE*_1p74ep$@npQYUJ+qAliA#EcQ{)Xb+8jBtC~57`-s`5l_O>A8UUHO;&f z)71mb*=!csSF7x6;3UZc(rP$KvPjda(vWK5TdI5{T=*6%-vF=z-$Lc%0Dy0v^6gYU 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