{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":23957599,"defaultBranch":"master","name":"PerlPowerTools","ownerLogin":"briandfoy","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2014-09-12T11:11:40.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/22255?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1714515748.0","currentOid":""},"activityList":{"items":[{"before":"f3af515c00856c3a92e0ffe5fbaa430d9e52db65","after":"cdaeb1d4658ababab8a296a9e396b9a04d7db39b","ref":"refs/heads/master","pushedAt":"2024-05-03T10:11:32.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"briandfoy","name":"brian d foy","path":"/briandfoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22255?s=80&v=4"},"commit":{"message":"cut: fix substring for -b flag (#595)\n\n* The substring length calculation in handle_b() wasn't correct in all cases\r\n* If start==end, then length==1\r\n* Pass parameters to handle_b() and handle_f()\r\n* Use defined() to test for presence of command options; 0 should not be ignored\r\n* test1: \"perl cut -b 2-3 a.c\" -> chars 2-3\r\n* test2: \"perl cut -b -3 a.c\" -> chars 1-3\r\n* test3: \"perl cut -b 10 a.c\" -> char 10\r\n* test4: \"perl cut -f 1,2 -s -d ' ' a.c\" -> fields 1&2, delimited by space, ignoring lines without a space","shortMessageHtmlLink":"cut: fix substring for -b flag (#595)"}},{"before":"1af74182f384283bee9d78eb52d232fc33c061a7","after":"f3af515c00856c3a92e0ffe5fbaa430d9e52db65","ref":"refs/heads/master","pushedAt":"2024-05-01T20:59:51.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"briandfoy","name":"brian d foy","path":"/briandfoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22255?s=80&v=4"},"commit":{"message":"xargs: eof ignored (#594)\n\n* Test cases: \"perl xargs\" and \"perl xargs ls\"\r\n* Text entered manually:\r\n1\r\n2\r\n3\r\n^D\r\n* xargs correctly runs a program (echo or ls) on 1, 2 and 3, then incorrectly waits to read more data from stdin (end of file was not seen)\r\n* Checking eof() after each read indicates whether xargs should terminate (no more args will follow so the program should not loop)\r\n* Tweak usage string to clarify that \"prog\" is optional (echo is the default)","shortMessageHtmlLink":"xargs: eof ignored (#594)"}},{"before":"547a038a63b24d5415a3c42aae3ccc068ca8eddd","after":"1af74182f384283bee9d78eb52d232fc33c061a7","ref":"refs/heads/master","pushedAt":"2024-05-01T20:58:30.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"briandfoy","name":"brian d foy","path":"/briandfoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22255?s=80&v=4"},"commit":{"message":"nl: retire -V (#593)\n\n* Linux and OpenBSD don't support nl -V for displaying version\r\n* Standards document doesn't specify a version flag[1]\r\n* GNU nl has --version, which can be supported here as done for bin/rev\r\n\r\n1. https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/utilities/nl.html","shortMessageHtmlLink":"nl: retire -V (#593)"}},{"before":"8ec212904d5f1893b0b0cf6e0f8491f33f14ec88","after":"547a038a63b24d5415a3c42aae3ccc068ca8eddd","ref":"refs/heads/master","pushedAt":"2024-05-01T13:55:12.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"briandfoy","name":"brian d foy","path":"/briandfoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22255?s=80&v=4"},"commit":{"message":"spell: unused variable (#591)\n\n* Remove global $alt_dict_file\r\n* If the current argument doesn't start with a \"-\", terminate the option parsing; this avoids copying temporary files list back into ARGV","shortMessageHtmlLink":"spell: unused variable (#591)"}},{"before":"229df32c1c03fce5e889707b9fc5e7799c73eadd","after":"8ec212904d5f1893b0b0cf6e0f8491f33f14ec88","ref":"refs/heads/master","pushedAt":"2024-05-01T13:54:36.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"briandfoy","name":"brian d foy","path":"/briandfoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22255?s=80&v=4"},"commit":{"message":"bc: unused variable (#592)\n\n* Global $YYMAXDEPTH was not referenced anywhere\r\n* While here, remove the $yynerrs counter variable which was incremented in YYERROR() and yyparse() but never used for anything","shortMessageHtmlLink":"bc: unused variable (#592)"}},{"before":"de9c097cae981ffd45e4627176caf869e9cc9f27","after":"229df32c1c03fce5e889707b9fc5e7799c73eadd","ref":"refs/heads/master","pushedAt":"2024-05-01T13:53:53.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"briandfoy","name":"brian d foy","path":"/briandfoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22255?s=80&v=4"},"commit":{"message":"units: unused variable (#590)\n\n* Remove $read_unittab from read_unittab()\r\n* Also, call usage() directly in process_args() so the variable $USAGE is no longer needed","shortMessageHtmlLink":"units: unused variable (#590)"}},{"before":"9d9481a5b2def743fcffcdde6332addd6167a20d","after":"de9c097cae981ffd45e4627176caf869e9cc9f27","ref":"refs/heads/master","pushedAt":"2024-04-30T22:29:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"briandfoy","name":"brian d foy","path":"/briandfoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22255?s=80&v=4"},"commit":{"message":"Previous changes failed ot give credit to kal247","shortMessageHtmlLink":"Previous changes failed ot give credit to kal247"}},{"before":"3c2b15b865afe6e5bd566a3214ae86a64501bf60","after":"9d9481a5b2def743fcffcdde6332addd6167a20d","ref":"refs/heads/master","pushedAt":"2024-04-30T22:22:23.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"briandfoy","name":"brian d foy","path":"/briandfoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22255?s=80&v=4"},"commit":{"message":"* for version 1.045","shortMessageHtmlLink":"* for version 1.045"}},{"before":"2cf66be368102814e497157ba9fa3cfb55c5d356","after":"3c2b15b865afe6e5bd566a3214ae86a64501bf60","ref":"refs/heads/master","pushedAt":"2024-04-30T21:05:13.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"briandfoy","name":"brian d foy","path":"/briandfoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22255?s=80&v=4"},"commit":{"message":"turn all void warnings at the end (See #589)","shortMessageHtmlLink":"turn all void warnings at the end (See #589)"}},{"before":"84ebfac87c3f6816449eeba2d768b73f2fcfadbd","after":"2cf66be368102814e497157ba9fa3cfb55c5d356","ref":"refs/heads/master","pushedAt":"2024-04-30T21:02:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"briandfoy","name":"brian d foy","path":"/briandfoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22255?s=80&v=4"},"commit":{"message":"Undo removal of __PACKAGE__ in units (#589)","shortMessageHtmlLink":"Undo removal of __PACKAGE__ in units (#589)"}},{"before":"ff8acf748ebcd28f7fb25db072fe87e5d82d4cb0","after":"84ebfac87c3f6816449eeba2d768b73f2fcfadbd","ref":"refs/heads/master","pushedAt":"2024-04-30T20:57:02.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"briandfoy","name":"brian d foy","path":"/briandfoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22255?s=80&v=4"},"commit":{"message":"units: remove nested GPL document (#589)\n\n* --warranty and --copying are no longer options; if this was a good idea it would be included in every single perl script and not just this one\r\n* Replacing the statement before END marker prevents the warning \"Useless use of a constant (\"PerlPowerTools::units\") in void context\"\r\n* Fix a typo in pod manual","shortMessageHtmlLink":"units: remove nested GPL document (#589)"}},{"before":"f6c590c86764b7c94e4cf2341125680de836455a","after":"ff8acf748ebcd28f7fb25db072fe87e5d82d4cb0","ref":"refs/heads/master","pushedAt":"2024-04-30T20:56:06.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"briandfoy","name":"brian d foy","path":"/briandfoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22255?s=80&v=4"},"commit":{"message":"cut: less exit() (#588)\n\n* Program flow is slightly clearer by exiting at top level, not within handle_b() and handle_f()","shortMessageHtmlLink":"cut: less exit() (#588)"}},{"before":"8545ca3b8952381c5985e2e74a7b20975474ced6","after":"f6c590c86764b7c94e4cf2341125680de836455a","ref":"refs/heads/master","pushedAt":"2024-04-30T20:54:41.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"briandfoy","name":"brian d foy","path":"/briandfoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22255?s=80&v=4"},"commit":{"message":"pig: support --version (#587)\n\n* -v flag was mentioned in usage string but not in SYNOPSIS\r\n* Follow what was done in bin/rev: remove -v and support --version by declaring VERSION_MESSAGE\r\n* Now usage string and SYNOPSIS agree (--version is not explicitly mentioned)","shortMessageHtmlLink":"pig: support --version (#587)"}},{"before":"7b9f1ef79e8a75ef204f4e1854f783c951f2331d","after":"8545ca3b8952381c5985e2e74a7b20975474ced6","ref":"refs/heads/master","pushedAt":"2024-04-30T20:54:22.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"briandfoy","name":"brian d foy","path":"/briandfoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22255?s=80&v=4"},"commit":{"message":"col: small tidy (#586)\n\n* No need to init $opt_f; it is already false\r\n* Avoid setting $row negative instead of correcting it afterwards\r\n* Move default exit() above print_line() sub","shortMessageHtmlLink":"col: small tidy (#586)"}},{"before":"851db2fee279c1ce75c9b0b425e5768cb76ef9e8","after":"7b9f1ef79e8a75ef204f4e1854f783c951f2331d","ref":"refs/heads/master","pushedAt":"2024-04-30T20:52:52.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"briandfoy","name":"brian d foy","path":"/briandfoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22255?s=80&v=4"},"commit":{"message":"banner: magic number (#585)\n\n* Program was previously converted to use DWIDTH constant, but the init code for printmask list can use it too\r\n* Explicitly convert values to int which will be used as array index; some elements in printmask list are implicitly 0\r\n* Tested with \"perl banner -w 40 perl2u\"","shortMessageHtmlLink":"banner: magic number (#585)"}},{"before":"e6a3b34f8be069e5c90f46750124738f6f6ceb43","after":"851db2fee279c1ce75c9b0b425e5768cb76ef9e8","ref":"refs/heads/master","pushedAt":"2024-04-30T20:50:26.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"briandfoy","name":"brian d foy","path":"/briandfoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22255?s=80&v=4"},"commit":{"message":"bc: standard array index (#584)\n\n* Variables in bc are can have a fractional part\r\n* A variable can be used as an array index\r\n* Discard the fractional part of index, so 3.3 is equivalent to 3\r\n* Negative array index is still not allowed","shortMessageHtmlLink":"bc: standard array index (#584)"}},{"before":"90d33dbcaecd7e21c4ef9a6aa1f8b152bbd7f725","after":"e6a3b34f8be069e5c90f46750124738f6f6ceb43","ref":"refs/heads/master","pushedAt":"2024-04-28T19:00:28.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"briandfoy","name":"brian d foy","path":"/briandfoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22255?s=80&v=4"},"commit":{"message":"bc: symbol table correction (#582)\n\n* Entries in sym_table hash need to have type & value\r\n* When investigating a warning for \"eq on undefined value\" on L2400 I noticed the sym_table entry needs a type of \"var\" (this code handles auto-assignment of zero to variables)\r\n* The hint came from further down in the code, where array values are initialised to zero (virtual 'p' instruction)\r\n* Also remove the C preprocessor declaration of YYBYACC which was not referenced anywhere","shortMessageHtmlLink":"bc: symbol table correction (#582)"}},{"before":"aede56f40878df26810b6f64403d98f478422193","after":"90d33dbcaecd7e21c4ef9a6aa1f8b152bbd7f725","ref":"refs/heads/master","pushedAt":"2024-04-28T18:57:23.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"briandfoy","name":"brian d foy","path":"/briandfoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22255?s=80&v=4"},"commit":{"message":"cal: display_help() tweak (#583)\n\n* Example scenario: I type \"perl cal -r\", expecting it to work like it does on NetBSD\r\n* I get a message that -r is invalid. Ok\r\n* I get a message that cal is part of perl power tools; I don't care, I just want to see the valid options\r\n* Remove the introductory text from display_help() and prefix the usage string with \"usage: \"\r\n* The distribution info is still available at the bottom of the manual (perl perldoc cal)","shortMessageHtmlLink":"cal: display_help() tweak (#583)"}},{"before":"9b9e75d6139b6d4fb11c26170a08e80c351a13e3","after":"aede56f40878df26810b6f64403d98f478422193","ref":"refs/heads/master","pushedAt":"2024-04-26T16:57:37.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"briandfoy","name":"brian d foy","path":"/briandfoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22255?s=80&v=4"},"commit":{"message":"macos image now has perl in a different location","shortMessageHtmlLink":"macos image now has perl in a different location"}},{"before":"a39c2ef12830ce8e9e276e2a00d7238d3abb7e8c","after":"aede56f40878df26810b6f64403d98f478422193","ref":"refs/heads/macos-cover","pushedAt":"2024-04-26T16:49:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"briandfoy","name":"brian d foy","path":"/briandfoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22255?s=80&v=4"},"commit":{"message":"macos image now has perl in a different location","shortMessageHtmlLink":"macos image now has perl in a different location"}},{"before":null,"after":"a39c2ef12830ce8e9e276e2a00d7238d3abb7e8c","ref":"refs/heads/macos-cover","pushedAt":"2024-04-26T16:43:04.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"briandfoy","name":"brian d foy","path":"/briandfoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22255?s=80&v=4"},"commit":{"message":"let's see what the path is","shortMessageHtmlLink":"let's see what the path is"}},{"before":"31a1c3b008871491a556fd749bbc54713cc89cf8","after":"9b9e75d6139b6d4fb11c26170a08e80c351a13e3","ref":"refs/heads/master","pushedAt":"2024-04-26T16:12:09.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"briandfoy","name":"brian d foy","path":"/briandfoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22255?s=80&v=4"},"commit":{"message":"Use fully-qualified variable name from Compress::Zlib\n\nThis way it's not a syntax error when Compress::Zlib is missing","shortMessageHtmlLink":"Use fully-qualified variable name from Compress::Zlib"}},{"before":"4c0ef0fce253729c94d1018a509b875bc78e7e71","after":"31a1c3b008871491a556fd749bbc54713cc89cf8","ref":"refs/heads/master","pushedAt":"2024-04-26T16:02:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"briandfoy","name":"brian d foy","path":"/briandfoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22255?s=80&v=4"},"commit":{"message":"Fix rev tests for new help and version messages (#581)","shortMessageHtmlLink":"Fix rev tests for new help and version messages (#581)"}},{"before":"8019f0210b1f65f5779eda75c9fc624363f57471","after":"4c0ef0fce253729c94d1018a509b875bc78e7e71","ref":"refs/heads/master","pushedAt":"2024-04-26T15:53:49.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"briandfoy","name":"brian d foy","path":"/briandfoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22255?s=80&v=4"},"commit":{"message":"rev: retire -v option (#581)\n\n* GNU rev has flags -V and --version for printing version, but on {Free,Open,Net}BSD rev has neither\r\n* Simplify getopts() usage by removing -v and defining VERSION_MESSAGE() which allows --version to work\r\n* Sync pod; --version deliberately omitted from usage string\r\n* Explicitly close() files so an error can be printed if this fails","shortMessageHtmlLink":"rev: retire -v option (#581)"}},{"before":"235f16ae5e277305676fe30c1105aa8d6ffe5814","after":"8019f0210b1f65f5779eda75c9fc624363f57471","ref":"refs/heads/master","pushedAt":"2024-04-26T11:57:18.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"briandfoy","name":"brian d foy","path":"/briandfoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22255?s=80&v=4"},"commit":{"message":"ed: no-match error for s/// (#579)\n\n* Difference observed when testing against GNU ed and OpenBSD ed\r\n* If current line doesn't contain \"A\", the command s/A/B is expected to generate the error \"no match\"\r\n* Currently this error is happening for ? and / searches, but not for s/// which is implemented in edSubstitute()\r\n* The logic in edSubstitute() was wrong because LastMatch assumed the current line was a positive match before the loop starts\r\n* The corrected version sets LastMatch only if a match occurred","shortMessageHtmlLink":"ed: no-match error for s/// (#579)"}},{"before":"b8e3715b444ac5f0d62e5ef04639bb5d5ffd5d48","after":"235f16ae5e277305676fe30c1105aa8d6ffe5814","ref":"refs/heads/master","pushedAt":"2024-04-26T11:46:16.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"briandfoy","name":"brian d foy","path":"/briandfoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22255?s=80&v=4"},"commit":{"message":"diff: empty files are the same (#578)\n\n* Test case: \"touch empty && perl diff empty empty\"\r\n* Program seems to hang; ctrl-c in perl debugger hints that we are stuck in Algorithm::Diff::traverse_sequences()\r\n* Program grew to use >2GB of memory before I killed it\r\n* traverse_sequences() doesn't seem to handle when both lists of input lines are empty (I didn't bother investigating why)\r\n* Put a sanity check before diff()+traverse_sequences() are called; input files are read in total before diff() so the size of line list is know\r\n* I also tested a non-empty file against an empty one","shortMessageHtmlLink":"diff: empty files are the same (#578)"}},{"before":"1038b0e3e0ca826860e6585b2636f4aa96264561","after":"b8e3715b444ac5f0d62e5ef04639bb5d5ffd5d48","ref":"refs/heads/master","pushedAt":"2024-04-26T11:44:11.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"briandfoy","name":"brian d foy","path":"/briandfoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22255?s=80&v=4"},"commit":{"message":"bc: divide by 0 (#580)\n\n* Catch illegal division before it happens\r\n* In bignum mode an error would not be thrown previously for this case; testing with is_zero() resolves this\r\n* I tested this in interactive mode for -b and not-b; the die() is caught so bc does not terminate---this is consistent with GNU bc","shortMessageHtmlLink":"bc: divide by 0 (#580)"}},{"before":"dd142758a03a4d77350cc032d5648840b72c472a","after":"1038b0e3e0ca826860e6585b2636f4aa96264561","ref":"refs/heads/master","pushedAt":"2024-04-24T12:53:13.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"briandfoy","name":"brian d foy","path":"/briandfoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22255?s=80&v=4"},"commit":{"message":"ed: runtime error in edSubstitute() (#577)\n\n* The program crashes when fed unexpected input after the initial \"s\" command\r\n* I found this when investigating a capture-variable-outside-of-condition warning from perlcritic\r\n* $char is the 1st character after the \"s\"; normally it would be \"/\" as in s/old/new/\r\n* Return early if $args[0] is an empty string\r\n* Adding eval guard around the confusing regex constructed from $char prevents the error\r\n* Possibly the code could be changed later to enforce that $char is '/'\r\n\r\nperl ed -p 'ed% ' a.c \r\n63\r\ned% 1\r\n#include \r\ned% s*asaaa*\r\nUnknown verb pattern '' in regex; marked by <-- HERE in m/((*) <-- HERE [^\"*\"]*(*)[^\"*\"]*(*)?)([imsx]*)/ at ed line 519, <> line 2.","shortMessageHtmlLink":"ed: runtime error in edSubstitute() (#577)"}},{"before":"302bad2d52f903ebbfe67824a85adbb3f929d515","after":"dd142758a03a4d77350cc032d5648840b72c472a","ref":"refs/heads/master","pushedAt":"2024-04-23T16:01:35.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"briandfoy","name":"brian d foy","path":"/briandfoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22255?s=80&v=4"},"commit":{"message":"tar: don't read stdin by default (#575)\n\n* tar: don't read stdin by default\r\n\r\n* \"perl tar\" with no argument would read stdin but this is not desirable\r\n* GNU tar prints usage in this case, and OpenBSD tar reads default tape device\r\n* Make file option (-f) mandatory; follow OpenBSD version where \"tar -f -\" indicates an archive is read from stdin\r\n\r\n* tar: avoid die() and exit directly\r\n\r\n* Remove unused variable $dh\r\n* Delete commented code\r\n* Introduce symbolic exit codes and replace calls to die with custom fatal() function","shortMessageHtmlLink":"tar: don't read stdin by default (#575)"}},{"before":"6cc25e0757d1499f8f3192e04c1a585e7e10d22c","after":"302bad2d52f903ebbfe67824a85adbb3f929d515","ref":"refs/heads/master","pushedAt":"2024-04-23T16:00:59.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"briandfoy","name":"brian d foy","path":"/briandfoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22255?s=80&v=4"},"commit":{"message":"file: avoid exit(0) for stdin case (#571)\n\n* file: avoid exit(0) for stdin case\r\n\r\n* Usage \"file -\" is allowed for GNU and OpenBSD: explicitly read stdin\r\n* The usage \"file\" with no argument is not valid; stdin is not read implicitly\r\n* This version doesn't support \"file -\", but the argument loop terminates and results in exit(0)\r\n* Using die for this not-implemented error results in non-zero exit code, which is more compatible with the standard[1]\r\n\r\n1. https://pubs.opengroup.org/onlinepubs/007904975/utilities/file.html\r\n\r\n* exit directly for better control of exit codes","shortMessageHtmlLink":"file: avoid exit(0) for stdin case (#571)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEQKEg-wA","startCursor":null,"endCursor":null}},"title":"Activity ยท briandfoy/PerlPowerTools"}