(filename string)
| 122 | } |
| 123 | |
| 124 | func readKernelFeatures(filename string) (map[string]string, error) { |
| 125 | freader, err := os.Open(filename) |
| 126 | if err != nil { |
| 127 | return nil, err |
| 128 | } |
| 129 | defer freader.Close() |
| 130 | |
| 131 | areader, err := gzip.NewReader(freader) |
| 132 | if err != nil { |
| 133 | return nil, err |
| 134 | } |
| 135 | defer areader.Close() |
| 136 | |
| 137 | var lines []string |
| 138 | |
| 139 | scanner := bufio.NewScanner(areader) |
| 140 | kernelFeatures := map[string]string{} |
| 141 | for scanner.Scan() { |
| 142 | line := strings.TrimSpace(scanner.Text()) |
| 143 | if line == "" { |
| 144 | continue |
| 145 | } |
| 146 | if line[0] == '#' { |
| 147 | //todo: extract section metadata from comments |
| 148 | continue |
| 149 | } |
| 150 | |
| 151 | lineParts := strings.Split(line, "=") |
| 152 | if len(lineParts) == 2 { |
| 153 | flagKey := strings.TrimSpace(lineParts[0]) |
| 154 | flagValue := strings.TrimSpace(lineParts[1]) |
| 155 | flagValue = strings.Trim(flagValue, "\"") |
| 156 | |
| 157 | lines = append(lines, line) |
| 158 | kernelFeatures[flagKey] = flagValue |
| 159 | } |
| 160 | } |
| 161 | |
| 162 | if err = scanner.Err(); err != nil { |
| 163 | //if err == bufio.ErrTooLong { |
| 164 | // log.Println("line length error:", err) |
| 165 | //} else { |
| 166 | // log.Println("other scanner error:", err) |
| 167 | //} |
| 168 | return kernelFeatures, err |
| 169 | } |
| 170 | |
| 171 | return kernelFeatures, nil |
| 172 | } |
no test coverage detected