blob: 095f1cf3ff6e7e00c58cbb8eb455ab1772a22f6b [file] [log] [blame]
Tim Windelschmidt6d33a432025-02-04 14:34:25 +01001// Copyright The Monogon Project Authors.
Serge Bazanski140bddc2020-06-05 21:01:19 +02002// SPDX-License-Identifier: Apache-2.0
Serge Bazanski140bddc2020-06-05 21:01:19 +02003
4package main
5
6import (
Tim Windelschmidtaf821c82024-04-23 15:03:52 +02007 "errors"
Serge Bazanski140bddc2020-06-05 21:01:19 +02008 "log"
9 "os"
10 "os/exec"
11)
12
13func main() {
14 if len(os.Args) < 3 {
15 log.Fatalf("Usage: %s output_file program <args...>", os.Args[0])
16 }
17
18 f, err := os.Create(os.Args[1])
19 if err != nil {
20 log.Fatalf("Create(%q): %v", os.Args[1], err)
21 }
22 defer f.Close()
23
24 args := os.Args[3:]
25 cmd := exec.Command(os.Args[2], args...)
26 cmd.Stderr = os.Stderr
27 cmd.Stdout = f
28
29 err = cmd.Run()
30 if err == nil {
31 return
32 }
33
Tim Windelschmidtaf821c82024-04-23 15:03:52 +020034 var e *exec.ExitError
35 if errors.As(err, &e) {
Serge Bazanski140bddc2020-06-05 21:01:19 +020036 os.Exit(e.ExitCode())
37 }
38
39 log.Fatalf("Could not start command: %v", err)
40}