Work around Windows command-line limits in embed_test_data.go.
Change-Id: I020f7c75d2ed160b16a62cb909d2113c318feb3c
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/41764
Reviewed-by: Adam Langley <agl@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
diff --git a/util/embed_test_data.go b/util/embed_test_data.go
index 5376fdd..a0efdc4 100644
--- a/util/embed_test_data.go
+++ b/util/embed_test_data.go
@@ -18,11 +18,15 @@
import (
"bytes"
+ "flag"
"fmt"
"io/ioutil"
"os"
+ "strings"
)
+var fileList = flag.String("file-list", "", "if not empty, the path to a file containing a newline-separated list of files, to work around Windows command-line limits")
+
func quote(in []byte) string {
var buf bytes.Buffer
buf.WriteByte('"')
@@ -60,6 +64,20 @@
}
func main() {
+ flag.Parse()
+
+ var files []string
+ if len(*fileList) != 0 {
+ data, err := ioutil.ReadFile(*fileList)
+ if err != nil {
+ fmt.Fprintf(os.Stderr, "Error reading %s: %s.\n", *fileList, err)
+ os.Exit(1)
+ }
+ files = strings.FieldsFunc(string(data), func(r rune) bool { return r == '\r' || r == '\n' })
+ }
+
+ files = append(files, flag.Args()...)
+
fmt.Printf(`/* Copyright (c) 2017, Google Inc.
*
* Permission to use, copy, modify, and/or distribute this software for any
@@ -77,7 +95,7 @@
/* This file is generated by:
`)
fmt.Printf(" * go run util/embed_test_data.go")
- for _, arg := range os.Args[1:] {
+ for _, arg := range files {
fmt.Printf(" \\\n * %s", arg)
}
fmt.Printf(" */\n")
@@ -99,7 +117,7 @@
// literal, but this is less compact.
const chunkSize = 8192
- for i, arg := range os.Args[1:] {
+ for i, arg := range files {
data, err := ioutil.ReadFile(arg)
if err != nil {
fmt.Fprintf(os.Stderr, "Error reading %s: %s.\n", arg, err)
@@ -133,7 +151,7 @@
std::string GetTestData(const char *path) {
`, chunkSize, chunkSize, chunkSize)
- for i, arg := range os.Args[1:] {
+ for i, arg := range files {
fmt.Printf(" if (strcmp(path, %s) == 0) {\n", quote([]byte(arg)))
fmt.Printf(" return AssembleString(kData%d, kLen%d);\n", i, i)
fmt.Printf(" }\n")