-
Notifications
You must be signed in to change notification settings - Fork 1.2k
/
machine_info.go
49 lines (44 loc) · 1.01 KB
/
machine_info.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// Copyright 2020 syzkaller project authors. All rights reserved.
// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
package host
import (
"os"
"path/filepath"
"strings"
"github.com/google/syzkaller/pkg/flatrpc"
)
func ReadFiles(files []string) []*flatrpc.FileInfo {
var res []*flatrpc.FileInfo
for _, glob := range files {
glob = filepath.FromSlash(glob)
if !strings.Contains(glob, "*") {
res = append(res, readFile(glob))
continue
}
matches, err := filepath.Glob(glob)
if err != nil {
res = append(res, &flatrpc.FileInfo{
Name: glob,
Error: err.Error(),
})
continue
}
for _, file := range matches {
res = append(res, readFile(file))
}
}
return res
}
func readFile(file string) *flatrpc.FileInfo {
data, err := os.ReadFile(file)
exists, errStr := true, ""
if err != nil {
exists, errStr = !os.IsNotExist(err), err.Error()
}
return &flatrpc.FileInfo{
Name: file,
Exists: exists,
Error: errStr,
Data: data,
}
}