Add error code 69; update dependencies

main
gardenapple 3 years ago
parent aaf413a379
commit 047195d709
No known key found for this signature in database
GPG Key ID: CAF17E9ABE789268

@ -45,6 +45,7 @@ const ExitCodes = {
dataError: 65, dataError: 65,
noInput: 66, noInput: 66,
noHost: 68, noHost: 68,
serviceUnavailable: 69,
noPermission: 77 noPermission: 77
}; };
@ -135,35 +136,11 @@ let args = yargs
type: "string" type: "string"
}); });
}) })
.completion('--completion', false, function(current, args, defaultCompletion, done) { .completion('--completion', false)
if (args["properties"] !== undefined) {
const properties = args["properties"];
let possibleProperties = [];
for (const propertyName of Properties.keys()) {
if (propertyName.startsWith(properties[properties.length - 1])
&& !properties.includes(propertyName))
possibleProperties.push(propertyName);
}
if (possibleProperties.length > 0)
done(possibleProperties);
}
if (args["low-confidence"] !== undefined) {
const currentMode = args["low-confidence"];
let possibleModes = [];
for (var possibleMode of Object.values(LowConfidenceMode)) {
if (possibleMode.startsWith(currentMode)
&& possibleMode != currentMode)
possibleModes.push(possibleMode);
}
if (possibleModes.length > 0)
done(possibleModes);
}
defaultCompletion();
})
.middleware([ yargsCompatProperties, yargsFixPositional ], true) //middleware seems to be buggy .middleware([ yargsCompatProperties, yargsFixPositional ], true) //middleware seems to be buggy
.option("help", { .option("help", {
alias: 'h', alias: 'h',
type: "boolean",
desc: __`Show help` desc: __`Show help`
}) })
.option("completion", { .option("completion", {
@ -183,8 +160,7 @@ let args = yargs
.option("insecure", { .option("insecure", {
alias: 'K', alias: 'K',
type: "boolean", type: "boolean",
desc: __`Allow invalid SSL certificates`, desc: __`Allow invalid SSL certificates`
default: false
}) })
.option("is-file", { .option("is-file", {
alias: 'f', alias: 'f',
@ -216,8 +192,7 @@ let args = yargs
.option("keep-classes", { .option("keep-classes", {
alias: 'C', alias: 'C',
type: "boolean", type: "boolean",
desc: __`Preserve all CSS classes for input elements, instead of adapting to Firefox's Reader Mode`, desc: __`Preserve all CSS classes for input elements, instead of adapting to Firefox's Reader Mode`
default: false,
}) })
.option("output", { .option("output", {
alias: 'o', alias: 'o',
@ -238,8 +213,7 @@ let args = yargs
.option("quiet", { .option("quiet", {
alias: 'q', alias: 'q',
type: "boolean", type: "boolean",
desc: __`Don't output extra information to stderr`, desc: __`Don't output extra information to stderr`
default: false
}) })
.option("style", { .option("style", {
alias: 's', alias: 's',
@ -399,7 +373,7 @@ if (inputIsFromStdin) {
}); });
} }
promiseGetHTML.then(onLoadDOM, onLoadDOMError) promiseGetHTML.then(onLoadDOM, onLoadDOMError);
} }
@ -558,6 +532,10 @@ function onLoadDOM(dom) {
} }
function onLoadDOMError(error) { function onLoadDOMError(error) {
if (error.error) {
//Nested error?
error = error.error;
}
if (error instanceof TypeError && inputURL) { if (error instanceof TypeError && inputURL) {
console.error(__`Invalid URL: ${inputURL}`); console.error(__`Invalid URL: ${inputURL}`);
setErrored(ExitCodes.badUsageCLI); setErrored(ExitCodes.badUsageCLI);
@ -567,17 +545,16 @@ function onLoadDOMError(error) {
} else if (error.code == "EACCES") { } else if (error.code == "EACCES") {
console.error(error.message); console.error(error.message);
setErrored(ExitCodes.noPermission); setErrored(ExitCodes.noPermission);
} else if (error.error && error.error.code == "ENOTFOUND") { } else if (error.code == "ENOTFOUND") {
console.error(__`Host not found: '${error.error.hostname}'`); console.error(__`Host not found: ${error.hostname}`);
setErrored(ExitCodes.noHost); setErrored(ExitCodes.noHost);
} else if (error.statusCode) { } else if (error.statusCode) {
console.error(__`Status error: ${error.response.statusMessage}`); console.error(__`Status error: ${error.response.statusMessage}`);
setErrored(ExitCodes.noHost); setErrored(ExitCodes.serviceUnavailable);
} else { } else {
console.error(error.message); console.error(error.message);
// if (error.stack) //console.error(error);
// console.error(error.stack) setErrored(ExitCodes.serviceUnavailable);
setErrored(1);
} }
} }

364
package-lock.json generated

@ -11,9 +11,9 @@
"dependencies": { "dependencies": {
"@mozilla/readability": "^0.4.1", "@mozilla/readability": "^0.4.1",
"dompurify": "^2.3.3", "dompurify": "^2.3.3",
"jsdom": "^16.5.1", "jsdom": "^18.0.0",
"y18n": "^5.0.5", "y18n": "^5.0.5",
"yargs": "^17.0.0" "yargs": "^17.2.1"
}, },
"bin": { "bin": {
"readable": "index.js" "readable": "index.js"
@ -31,11 +31,11 @@
} }
}, },
"node_modules/@tootallnate/once": { "node_modules/@tootallnate/once": {
"version": "1.1.2", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
"integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
"engines": { "engines": {
"node": ">= 6" "node": ">= 10"
} }
}, },
"node_modules/abab": { "node_modules/abab": {
@ -163,9 +163,9 @@
} }
}, },
"node_modules/cssom": { "node_modules/cssom": {
"version": "0.4.4", "version": "0.5.0",
"resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz",
"integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw=="
}, },
"node_modules/cssstyle": { "node_modules/cssstyle": {
"version": "2.3.0", "version": "2.3.0",
@ -184,16 +184,16 @@
"integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg=="
}, },
"node_modules/data-urls": { "node_modules/data-urls": {
"version": "2.0.0", "version": "3.0.1",
"resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.1.tgz",
"integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", "integrity": "sha512-Ds554NeT5Gennfoo9KN50Vh6tpgtvYEwraYjejXnyTpu1C7oXKxdFk75REooENHE8ndTVOJuv+BEs4/J/xcozw==",
"dependencies": { "dependencies": {
"abab": "^2.0.3", "abab": "^2.0.3",
"whatwg-mimetype": "^2.3.0", "whatwg-mimetype": "^3.0.0",
"whatwg-url": "^8.0.0" "whatwg-url": "^10.0.0"
}, },
"engines": { "engines": {
"node": ">=10" "node": ">=12"
} }
}, },
"node_modules/debug": { "node_modules/debug": {
@ -231,22 +231,14 @@
} }
}, },
"node_modules/domexception": { "node_modules/domexception": {
"version": "2.0.1", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz",
"integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==",
"dependencies": { "dependencies": {
"webidl-conversions": "^5.0.0" "webidl-conversions": "^7.0.0"
}, },
"engines": { "engines": {
"node": ">=8" "node": ">=12"
}
},
"node_modules/domexception/node_modules/webidl-conversions": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
"integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==",
"engines": {
"node": ">=8"
} }
}, },
"node_modules/dompurify": { "node_modules/dompurify": {
@ -322,9 +314,9 @@
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
}, },
"node_modules/form-data": { "node_modules/form-data": {
"version": "3.0.1", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
"integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
"dependencies": { "dependencies": {
"asynckit": "^0.4.0", "asynckit": "^0.4.0",
"combined-stream": "^1.0.8", "combined-stream": "^1.0.8",
@ -343,22 +335,22 @@
} }
}, },
"node_modules/html-encoding-sniffer": { "node_modules/html-encoding-sniffer": {
"version": "2.0.1", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz",
"integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==",
"dependencies": { "dependencies": {
"whatwg-encoding": "^1.0.5" "whatwg-encoding": "^2.0.0"
}, },
"engines": { "engines": {
"node": ">=10" "node": ">=12"
} }
}, },
"node_modules/http-proxy-agent": { "node_modules/http-proxy-agent": {
"version": "4.0.1", "version": "5.0.0",
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
"integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
"dependencies": { "dependencies": {
"@tootallnate/once": "1", "@tootallnate/once": "2",
"agent-base": "6", "agent-base": "6",
"debug": "4" "debug": "4"
}, },
@ -379,11 +371,11 @@
} }
}, },
"node_modules/iconv-lite": { "node_modules/iconv-lite": {
"version": "0.4.24", "version": "0.6.3",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
"dependencies": { "dependencies": {
"safer-buffer": ">= 2.1.2 < 3" "safer-buffer": ">= 2.1.2 < 3.0.0"
}, },
"engines": { "engines": {
"node": ">=0.10.0" "node": ">=0.10.0"
@ -403,22 +395,22 @@
"integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ=="
}, },
"node_modules/jsdom": { "node_modules/jsdom": {
"version": "16.7.0", "version": "18.0.0",
"resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-18.0.0.tgz",
"integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", "integrity": "sha512-HVLuBcFmwdWulStv5U+J59b1AyzXhM92KXlM8HQ3ecYtRM2OQEUCPMa4oNuDeCBmtRcC7tJvb0Xz5OeFXMOKTA==",
"dependencies": { "dependencies": {
"abab": "^2.0.5", "abab": "^2.0.5",
"acorn": "^8.2.4", "acorn": "^8.5.0",
"acorn-globals": "^6.0.0", "acorn-globals": "^6.0.0",
"cssom": "^0.4.4", "cssom": "^0.5.0",
"cssstyle": "^2.3.0", "cssstyle": "^2.3.0",
"data-urls": "^2.0.0", "data-urls": "^3.0.1",
"decimal.js": "^10.2.1", "decimal.js": "^10.3.1",
"domexception": "^2.0.1", "domexception": "^4.0.0",
"escodegen": "^2.0.0", "escodegen": "^2.0.0",
"form-data": "^3.0.0", "form-data": "^4.0.0",
"html-encoding-sniffer": "^2.0.1", "html-encoding-sniffer": "^3.0.0",
"http-proxy-agent": "^4.0.1", "http-proxy-agent": "^5.0.0",
"https-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0",
"is-potential-custom-element-name": "^1.0.1", "is-potential-custom-element-name": "^1.0.1",
"nwsapi": "^2.2.0", "nwsapi": "^2.2.0",
@ -427,16 +419,16 @@
"symbol-tree": "^3.2.4", "symbol-tree": "^3.2.4",
"tough-cookie": "^4.0.0", "tough-cookie": "^4.0.0",
"w3c-hr-time": "^1.0.2", "w3c-hr-time": "^1.0.2",
"w3c-xmlserializer": "^2.0.0", "w3c-xmlserializer": "^3.0.0",
"webidl-conversions": "^6.1.0", "webidl-conversions": "^7.0.0",
"whatwg-encoding": "^1.0.5", "whatwg-encoding": "^2.0.0",
"whatwg-mimetype": "^2.3.0", "whatwg-mimetype": "^3.0.0",
"whatwg-url": "^8.5.0", "whatwg-url": "^10.0.0",
"ws": "^7.4.6", "ws": "^8.2.3",
"xml-name-validator": "^3.0.0" "xml-name-validator": "^4.0.0"
}, },
"engines": { "engines": {
"node": ">=10" "node": ">=12"
}, },
"peerDependencies": { "peerDependencies": {
"canvas": "^2.5.0" "canvas": "^2.5.0"
@ -459,11 +451,6 @@
"node": ">= 0.8.0" "node": ">= 0.8.0"
} }
}, },
"node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"node_modules/marked": { "node_modules/marked": {
"version": "0.7.0", "version": "0.7.0",
"resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz", "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz",
@ -636,14 +623,14 @@
} }
}, },
"node_modules/tr46": { "node_modules/tr46": {
"version": "2.1.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
"integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
"dependencies": { "dependencies": {
"punycode": "^2.1.1" "punycode": "^2.1.1"
}, },
"engines": { "engines": {
"node": ">=8" "node": ">=12"
} }
}, },
"node_modules/type-check": { "node_modules/type-check": {
@ -674,48 +661,53 @@
} }
}, },
"node_modules/w3c-xmlserializer": { "node_modules/w3c-xmlserializer": {
"version": "2.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz",
"integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==",
"dependencies": { "dependencies": {
"xml-name-validator": "^3.0.0" "xml-name-validator": "^4.0.0"
}, },
"engines": { "engines": {
"node": ">=10" "node": ">=12"
} }
}, },
"node_modules/webidl-conversions": { "node_modules/webidl-conversions": {
"version": "6.1.0", "version": "7.0.0",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
"integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
"engines": { "engines": {
"node": ">=10.4" "node": ">=12"
} }
}, },
"node_modules/whatwg-encoding": { "node_modules/whatwg-encoding": {
"version": "1.0.5", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz",
"integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==",
"dependencies": { "dependencies": {
"iconv-lite": "0.4.24" "iconv-lite": "0.6.3"
},
"engines": {
"node": ">=12"
} }
}, },
"node_modules/whatwg-mimetype": { "node_modules/whatwg-mimetype": {
"version": "2.3.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz",
"integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==",
"engines": {
"node": ">=12"
}
}, },
"node_modules/whatwg-url": { "node_modules/whatwg-url": {
"version": "8.7.0", "version": "10.0.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz",
"integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==",
"dependencies": { "dependencies": {
"lodash": "^4.7.0", "tr46": "^3.0.0",
"tr46": "^2.1.0", "webidl-conversions": "^7.0.0"
"webidl-conversions": "^6.1.0"
}, },
"engines": { "engines": {
"node": ">=10" "node": ">=12"
} }
}, },
"node_modules/word-wrap": { "node_modules/word-wrap": {
@ -743,11 +735,11 @@
} }
}, },
"node_modules/ws": { "node_modules/ws": {
"version": "7.5.5", "version": "8.2.3",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz",
"integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==",
"engines": { "engines": {
"node": ">=8.3.0" "node": ">=10.0.0"
}, },
"peerDependencies": { "peerDependencies": {
"bufferutil": "^4.0.1", "bufferutil": "^4.0.1",
@ -763,9 +755,12 @@
} }
}, },
"node_modules/xml-name-validator": { "node_modules/xml-name-validator": {
"version": "3.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
"integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
"engines": {
"node": ">=12"
}
}, },
"node_modules/xmlchars": { "node_modules/xmlchars": {
"version": "2.2.0", "version": "2.2.0",
@ -813,9 +808,9 @@
"integrity": "sha512-yar/f0w0fRUVM895s6yd5Z2oIxjG/6c3ROB/uQboSOBaDlri/nqI4aKtdqrldWciTLcdpjB2Z6MiVF2Bl9b8LA==" "integrity": "sha512-yar/f0w0fRUVM895s6yd5Z2oIxjG/6c3ROB/uQboSOBaDlri/nqI4aKtdqrldWciTLcdpjB2Z6MiVF2Bl9b8LA=="
}, },
"@tootallnate/once": { "@tootallnate/once": {
"version": "1.1.2", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
"integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==" "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A=="
}, },
"abab": { "abab": {
"version": "2.0.5", "version": "2.0.5",
@ -911,9 +906,9 @@
} }
}, },
"cssom": { "cssom": {
"version": "0.4.4", "version": "0.5.0",
"resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz",
"integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw=="
}, },
"cssstyle": { "cssstyle": {
"version": "2.3.0", "version": "2.3.0",
@ -931,13 +926,13 @@
} }
}, },
"data-urls": { "data-urls": {
"version": "2.0.0", "version": "3.0.1",
"resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.1.tgz",
"integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", "integrity": "sha512-Ds554NeT5Gennfoo9KN50Vh6tpgtvYEwraYjejXnyTpu1C7oXKxdFk75REooENHE8ndTVOJuv+BEs4/J/xcozw==",
"requires": { "requires": {
"abab": "^2.0.3", "abab": "^2.0.3",
"whatwg-mimetype": "^2.3.0", "whatwg-mimetype": "^3.0.0",
"whatwg-url": "^8.0.0" "whatwg-url": "^10.0.0"
} }
}, },
"debug": { "debug": {
@ -964,18 +959,11 @@
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
}, },
"domexception": { "domexception": {
"version": "2.0.1", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz",
"integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==",
"requires": { "requires": {
"webidl-conversions": "^5.0.0" "webidl-conversions": "^7.0.0"
},
"dependencies": {
"webidl-conversions": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
"integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA=="
}
} }
}, },
"dompurify": { "dompurify": {
@ -1026,9 +1014,9 @@
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
}, },
"form-data": { "form-data": {
"version": "3.0.1", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
"integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
"requires": { "requires": {
"asynckit": "^0.4.0", "asynckit": "^0.4.0",
"combined-stream": "^1.0.8", "combined-stream": "^1.0.8",
@ -1041,19 +1029,19 @@
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
}, },
"html-encoding-sniffer": { "html-encoding-sniffer": {
"version": "2.0.1", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz",
"integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==",
"requires": { "requires": {
"whatwg-encoding": "^1.0.5" "whatwg-encoding": "^2.0.0"
} }
}, },
"http-proxy-agent": { "http-proxy-agent": {
"version": "4.0.1", "version": "5.0.0",
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
"integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
"requires": { "requires": {
"@tootallnate/once": "1", "@tootallnate/once": "2",
"agent-base": "6", "agent-base": "6",
"debug": "4" "debug": "4"
} }
@ -1068,11 +1056,11 @@
} }
}, },
"iconv-lite": { "iconv-lite": {
"version": "0.4.24", "version": "0.6.3",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
"requires": { "requires": {
"safer-buffer": ">= 2.1.2 < 3" "safer-buffer": ">= 2.1.2 < 3.0.0"
} }
}, },
"is-fullwidth-code-point": { "is-fullwidth-code-point": {
@ -1086,22 +1074,22 @@
"integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ=="
}, },
"jsdom": { "jsdom": {
"version": "16.7.0", "version": "18.0.0",
"resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-18.0.0.tgz",
"integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", "integrity": "sha512-HVLuBcFmwdWulStv5U+J59b1AyzXhM92KXlM8HQ3ecYtRM2OQEUCPMa4oNuDeCBmtRcC7tJvb0Xz5OeFXMOKTA==",
"requires": { "requires": {
"abab": "^2.0.5", "abab": "^2.0.5",
"acorn": "^8.2.4", "acorn": "^8.5.0",
"acorn-globals": "^6.0.0", "acorn-globals": "^6.0.0",
"cssom": "^0.4.4", "cssom": "^0.5.0",
"cssstyle": "^2.3.0", "cssstyle": "^2.3.0",
"data-urls": "^2.0.0", "data-urls": "^3.0.1",
"decimal.js": "^10.2.1", "decimal.js": "^10.3.1",
"domexception": "^2.0.1", "domexception": "^4.0.0",
"escodegen": "^2.0.0", "escodegen": "^2.0.0",
"form-data": "^3.0.0", "form-data": "^4.0.0",
"html-encoding-sniffer": "^2.0.1", "html-encoding-sniffer": "^3.0.0",
"http-proxy-agent": "^4.0.1", "http-proxy-agent": "^5.0.0",
"https-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0",
"is-potential-custom-element-name": "^1.0.1", "is-potential-custom-element-name": "^1.0.1",
"nwsapi": "^2.2.0", "nwsapi": "^2.2.0",
@ -1110,13 +1098,13 @@
"symbol-tree": "^3.2.4", "symbol-tree": "^3.2.4",
"tough-cookie": "^4.0.0", "tough-cookie": "^4.0.0",
"w3c-hr-time": "^1.0.2", "w3c-hr-time": "^1.0.2",
"w3c-xmlserializer": "^2.0.0", "w3c-xmlserializer": "^3.0.0",
"webidl-conversions": "^6.1.0", "webidl-conversions": "^7.0.0",
"whatwg-encoding": "^1.0.5", "whatwg-encoding": "^2.0.0",
"whatwg-mimetype": "^2.3.0", "whatwg-mimetype": "^3.0.0",
"whatwg-url": "^8.5.0", "whatwg-url": "^10.0.0",
"ws": "^7.4.6", "ws": "^8.2.3",
"xml-name-validator": "^3.0.0" "xml-name-validator": "^4.0.0"
} }
}, },
"levn": { "levn": {
@ -1128,11 +1116,6 @@
"type-check": "~0.3.2" "type-check": "~0.3.2"
} }
}, },
"lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"marked": { "marked": {
"version": "0.7.0", "version": "0.7.0",
"resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz", "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz",
@ -1261,9 +1244,9 @@
} }
}, },
"tr46": { "tr46": {
"version": "2.1.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
"integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
"requires": { "requires": {
"punycode": "^2.1.1" "punycode": "^2.1.1"
} }
@ -1290,39 +1273,38 @@
} }
}, },
"w3c-xmlserializer": { "w3c-xmlserializer": {
"version": "2.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz",
"integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==",
"requires": { "requires": {
"xml-name-validator": "^3.0.0" "xml-name-validator": "^4.0.0"
} }
}, },
"webidl-conversions": { "webidl-conversions": {
"version": "6.1.0", "version": "7.0.0",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
"integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==" "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g=="
}, },
"whatwg-encoding": { "whatwg-encoding": {
"version": "1.0.5", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz",
"integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==",
"requires": { "requires": {
"iconv-lite": "0.4.24" "iconv-lite": "0.6.3"
} }
}, },
"whatwg-mimetype": { "whatwg-mimetype": {
"version": "2.3.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz",
"integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q=="
}, },
"whatwg-url": { "whatwg-url": {
"version": "8.7.0", "version": "10.0.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz",
"integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==",
"requires": { "requires": {
"lodash": "^4.7.0", "tr46": "^3.0.0",
"tr46": "^2.1.0", "webidl-conversions": "^7.0.0"
"webidl-conversions": "^6.1.0"
} }
}, },
"word-wrap": { "word-wrap": {
@ -1341,15 +1323,15 @@
} }
}, },
"ws": { "ws": {
"version": "7.5.5", "version": "8.2.3",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz",
"integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==",
"requires": {} "requires": {}
}, },
"xml-name-validator": { "xml-name-validator": {
"version": "3.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
"integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw=="
}, },
"xmlchars": { "xmlchars": {
"version": "2.2.0", "version": "2.2.0",

@ -30,9 +30,9 @@
"dependencies": { "dependencies": {
"@mozilla/readability": "^0.4.1", "@mozilla/readability": "^0.4.1",
"dompurify": "^2.3.3", "dompurify": "^2.3.3",
"jsdom": "^16.5.1", "jsdom": "^18.0.0",
"y18n": "^5.0.5", "y18n": "^5.0.8",
"yargs": "^17.0.0" "yargs": "^17.2.1"
}, },
"devDependencies": { "devDependencies": {
"marked-man": "^0.7.0" "marked-man": "^0.7.0"

@ -177,12 +177,17 @@ T}
T{ T{
\fB66\fR \fB66\fR
T}|T{ T}|T{
No input No such file
T} T}
T{ T{
\fB68\fR \fB68\fR
T}|T{ T}|T{
Unknown host name for URL Host not found
T}
T{
\fB69\fR
T}|T{
URL inaccessible
T} T}
T{ T{
\fB77\fR \fB77\fR

@ -103,8 +103,9 @@ As usual, exit code 0 indicates success, and anything other than 0 is an error.
| --: | :-- | | --: | :-- |
| **64** | Bad CLI arguments | | **64** | Bad CLI arguments |
| **65** | Data format error: can't parse document using Readability. | | **65** | Data format error: can't parse document using Readability. |
| **66** | No input | | **66** | No such file |
| **68** | Unknown host name for URL | | **68** | Host not found |
| **69** | URL inaccessible |
| **77** | Permission denied: can't read file | | **77** | Permission denied: can't read file |
\* By "standard error codes" I mean "close to a standard". And by that I mean: I don't remember any command line tools which actually use this convention. You may find more info in **sysexits**(3), or maybe just *sysexits.h*. \* By "standard error codes" I mean "close to a standard". And by that I mean: I don't remember any command line tools which actually use this convention. You may find more info in **sysexits**(3), or maybe just *sysexits.h*.

Loading…
Cancel
Save