diff options
author | Arne Juul <arnej@yahooinc.com> | 2022-09-29 13:26:57 +0000 |
---|---|---|
committer | Arne Juul <arnej@yahooinc.com> | 2022-09-29 13:26:57 +0000 |
commit | 8e9b28e7617cdcd7ccc6d5e7111d3b6b17d66626 (patch) | |
tree | 1bd3b425b4c098e97cbf8143de09a061fdb947a2 /client | |
parent | 791b304870044f478fcd7fcd095157c63c55b978 (diff) |
simplify argv handling
Diffstat (limited to 'client')
7 files changed, 12 insertions, 18 deletions
diff --git a/client/go/script-utils/startcbinary/cmd.go b/client/go/script-utils/startcbinary/cmd.go index 05d3d1d6c79..faa9a3fa595 100644 --- a/client/go/script-utils/startcbinary/cmd.go +++ b/client/go/script-utils/startcbinary/cmd.go @@ -20,7 +20,7 @@ func Run(args []string) int { } spec := ProgSpec{ Program: args[0], - Args: args[1:], + Args: args, } spec.setup() vespa.LoadDefaultEnv() diff --git a/client/go/script-utils/startcbinary/execvp.go b/client/go/script-utils/startcbinary/execvp.go index a39f76ebc3b..1ceaf88b47a 100644 --- a/client/go/script-utils/startcbinary/execvp.go +++ b/client/go/script-utils/startcbinary/execvp.go @@ -29,14 +29,10 @@ func findInPath(prog string) string { return prog } -func myexecvp(prog string, args []string, envv []string) error { - argv := make([]string, 0, 1+len(args)) - argv = append(argv, prog) - for _, arg := range args { - argv = append(argv, arg) - } +func myexecvp(prog string, argv []string, envv []string) error { trace.Trace("run cmd", strings.Join(argv, " ")) prog = findInPath(prog) + argv[0] = prog err := unix.Exec(prog, argv, envv) return fmt.Errorf("cannot execute '%s': %v", prog, err) } diff --git a/client/go/script-utils/startcbinary/numactl.go b/client/go/script-utils/startcbinary/numactl.go index bc34193da59..1456fe05a5f 100644 --- a/client/go/script-utils/startcbinary/numactl.go +++ b/client/go/script-utils/startcbinary/numactl.go @@ -56,7 +56,7 @@ func (p *ProgSpec) numaCtlBinary() string { return "numactl" } -func (p *ProgSpec) prependNumaCtl(program string, args []string) []string { +func (p *ProgSpec) prependNumaCtl(args []string) []string { result := make([]string, 0, 5+len(args)) result = append(result, "numactl") if p.numaSocket >= 0 { @@ -66,7 +66,6 @@ func (p *ProgSpec) prependNumaCtl(program string, args []string) []string { result = append(result, "--interleave") result = append(result, "all") } - result = append(result, program) for _, arg := range args { result = append(result, arg) } diff --git a/client/go/script-utils/startcbinary/numactl_test.go b/client/go/script-utils/startcbinary/numactl_test.go index a1d5586f57d..326ff088276 100644 --- a/client/go/script-utils/startcbinary/numactl_test.go +++ b/client/go/script-utils/startcbinary/numactl_test.go @@ -44,7 +44,7 @@ func TestNumaCtlDetection(t *testing.T) { spec.configureNumaCtl() assert.Equal(t, true, spec.shouldUseNumaCtl) assert.Equal(t, -1, spec.numaSocket) - argv = spec.prependNumaCtl("/bin/myprog", []string{"-c", "cfgid"}) + argv = spec.prependNumaCtl([]string{"/bin/myprog", "-c", "cfgid"}) trace.Trace("argv:", argv) assert.Equal(t, 6, len(argv)) assert.Equal(t, "numactl", argv[0]) @@ -56,7 +56,7 @@ func TestNumaCtlDetection(t *testing.T) { spec.configureNumaCtl() assert.Equal(t, true, spec.shouldUseNumaCtl) assert.Equal(t, 0, spec.numaSocket) - argv = spec.prependNumaCtl("/bin/myprog", []string{"-c", "cfgid", "-p", "param"}) + argv = spec.prependNumaCtl([]string{"/bin/myprog", "-c", "cfgid", "-p", "param"}) trace.Trace("argv:", argv) assert.Equal(t, 8, len(argv)) assert.Equal(t, "numactl", argv[0]) @@ -68,7 +68,7 @@ func TestNumaCtlDetection(t *testing.T) { spec.configureNumaCtl() assert.Equal(t, true, spec.shouldUseNumaCtl) assert.Equal(t, 1, spec.numaSocket) - argv = spec.prependNumaCtl("/bin/myprog", []string{}) + argv = spec.prependNumaCtl([]string{"/bin/myprog"}) trace.Trace("argv:", argv) assert.Equal(t, 4, len(argv)) assert.Equal(t, "numactl", argv[0]) diff --git a/client/go/script-utils/startcbinary/startcbinary.go b/client/go/script-utils/startcbinary/startcbinary.go index 92f09d9098c..9c06ead4d06 100644 --- a/client/go/script-utils/startcbinary/startcbinary.go +++ b/client/go/script-utils/startcbinary/startcbinary.go @@ -30,10 +30,10 @@ func (spec *ProgSpec) run() error { prog := spec.Program + "-bin" args := spec.Args if spec.shouldUseValgrind { - args = spec.prependValgrind(prog, args) + args = spec.prependValgrind(args) prog = spec.valgrindBinary() } else if spec.shouldUseNumaCtl { - args = spec.prependNumaCtl(prog, args) + args = spec.prependNumaCtl(args) prog = spec.numaCtlBinary() } if spec.shouldUseVespaMalloc { diff --git a/client/go/script-utils/startcbinary/valgrind.go b/client/go/script-utils/startcbinary/valgrind.go index 0b49e1b3265..f474347016d 100644 --- a/client/go/script-utils/startcbinary/valgrind.go +++ b/client/go/script-utils/startcbinary/valgrind.go @@ -71,14 +71,13 @@ func (p *ProgSpec) valgrindLogOption() string { return fmt.Sprintf("--log-file=%s/tmp/valgrind.%s.log.%d", vespa.FindHome(), p.BaseName, os.Getpid()) } -func (p *ProgSpec) prependValgrind(program string, args []string) []string { +func (p *ProgSpec) prependValgrind(args []string) []string { result := make([]string, 0, 15+len(args)) result = append(result, p.valgrindBinary()) for _, arg := range p.valgrindOptions() { result = append(result, arg) } result = append(result, p.valgrindLogOption()) - result = append(result, program) for _, arg := range args { result = append(result, arg) } diff --git a/client/go/script-utils/startcbinary/valgrind_test.go b/client/go/script-utils/startcbinary/valgrind_test.go index 6c01945a828..906dfc054c6 100644 --- a/client/go/script-utils/startcbinary/valgrind_test.go +++ b/client/go/script-utils/startcbinary/valgrind_test.go @@ -63,7 +63,7 @@ func TestValgrindDetection(t *testing.T) { assert.Equal(t, true, spec.shouldUseValgrind) assert.Equal(t, false, spec.shouldUseCallgrind) - argv = spec.prependValgrind("/bin/myprog", []string{"-c", "cfgid"}) + argv = spec.prependValgrind([]string{"/bin/myprog", "-c", "cfgid"}) trace.Trace("argv:", argv) assert.Equal(t, 11, len(argv)) assert.Equal(t, "valgrind", argv[0]) @@ -79,7 +79,7 @@ func TestValgrindDetection(t *testing.T) { assert.Equal(t, true, spec.shouldUseValgrind) assert.Equal(t, true, spec.shouldUseCallgrind) - argv = spec.prependValgrind("/bin/myprog", []string{"-c", "cfgid"}) + argv = spec.prependValgrind([]string{"/bin/myprog", "-c", "cfgid"}) trace.Trace("argv:", argv) assert.Equal(t, 6, len(argv)) assert.Equal(t, "valgrind", argv[0]) |