mirror of
https://github.com/johnkerl/miller.git
synced 2026-07-20 18:10:07 +00:00
Fix panic on 'mlr sort -n' (#1004)
This commit is contained in:
parent
0bc67485b8
commit
e271b55832
2 changed files with 6 additions and 2 deletions
|
|
@ -15,7 +15,7 @@ import (
|
|||
// For flags with values, e.g. ["-n" "10"], while we're looking at the "-n" this let us see if the "10" slot exists.
|
||||
// The verb is nominally something from a ways earlier in args[]; the opt is nominally what's at args[argi-1].
|
||||
// So this function should be called with args[argi] pointing to the "10" slot.
|
||||
func verbCheckArgCount(verb string, opt string, args []string, argi int, argc int, n int) {
|
||||
func VerbCheckArgCount(verb string, opt string, args []string, argi int, argc int, n int) {
|
||||
if (argc - argi) < n {
|
||||
fmt.Fprintf(os.Stderr, "%s %s: option \"%s\" missing argument(s).\n",
|
||||
"mlr", verb, opt,
|
||||
|
|
@ -26,7 +26,7 @@ func verbCheckArgCount(verb string, opt string, args []string, argi int, argc in
|
|||
|
||||
// E.g. with ["-f", "a,b,c"], makes sure there is something in the "a,b,c" position, and returns it.
|
||||
func VerbGetStringArgOrDie(verb string, opt string, args []string, pargi *int, argc int) string {
|
||||
verbCheckArgCount(verb, opt, args, *pargi, argc, 1)
|
||||
VerbCheckArgCount(verb, opt, args, *pargi, argc, 1)
|
||||
retval := args[*pargi]
|
||||
*pargi += 1
|
||||
return retval
|
||||
|
|
|
|||
|
|
@ -138,6 +138,7 @@ func transformerSortParseCLI(
|
|||
// See comments over "-n" -- similar hack.
|
||||
if args[argi] == "-r" {
|
||||
// Treat like "-cr"
|
||||
cli.VerbCheckArgCount(verb, args[argi], args, argi, argc, 1)
|
||||
argi++
|
||||
subList := cli.VerbGetStringArrayArgOrDie(verb, "-nr", args, &argi, argc)
|
||||
for _, item := range subList {
|
||||
|
|
@ -155,8 +156,10 @@ func transformerSortParseCLI(
|
|||
|
||||
} else if opt == "-t" {
|
||||
// See comments over "-n" -- similar hack.
|
||||
cli.VerbCheckArgCount(verb, opt, args, argi, argc, 1)
|
||||
if args[argi] == "-r" {
|
||||
// Treat like "-tr"
|
||||
cli.VerbCheckArgCount(verb, args[argi], args, argi, argc, 1)
|
||||
argi++
|
||||
subList := cli.VerbGetStringArrayArgOrDie(verb, "-tr", args, &argi, argc)
|
||||
for _, item := range subList {
|
||||
|
|
@ -202,6 +205,7 @@ func transformerSortParseCLI(
|
|||
// So here we special-case this: if "-n" is followed immediately by
|
||||
// "-f", we treat it the same as "-nf". Likewise, "-n" followed by
|
||||
// "-r" is treated like "-nr".
|
||||
cli.VerbCheckArgCount(verb, opt, args, argi, argc, 1)
|
||||
|
||||
if args[argi] == "-f" {
|
||||
// Treat like "-nf"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue