Changeset View
Changeset View
Standalone View
Standalone View
graphics/igt-gpu-tools/files/patch-runner_settings.c
- This file was added.
--- runner/settings.c.orig 2022-08-31 20:00:01 UTC | |||||
+++ runner/settings.c | |||||
@@ -872,6 +872,36 @@ bool serialize_settings(struct settings *settings) | |||||
#undef SERIALIZE_LINE | |||||
} | |||||
+#ifdef __FreeBSD__ | |||||
+static inline int | |||||
+settings_fscanf(FILE *stream, char **name, char **val) | |||||
+{ | |||||
+ char c, **buf = name; | |||||
+ int i, buflen, rewind = 0; | |||||
+ | |||||
+ /* get buffer size for name AND value */ | |||||
+ for (i = 0; i < 2; ++i, buf = val) { | |||||
+ for (buflen = 0; | |||||
+ (c = fgetc(stream)) != ':' && c != '\n' && c != EOF; | |||||
+ ++buflen) | |||||
+ ; | |||||
+ | |||||
+ /* add 1 to make room for '\0' */ | |||||
+ *buf = malloc(buflen + 1); | |||||
+ | |||||
+ /* add 1 to include ':' or '\n' */ | |||||
+ rewind += buflen + 1; | |||||
+ } | |||||
+ | |||||
+ /* rewind to start of new line for fscanf */ | |||||
+ i = fseek(stream, -rewind, SEEK_CUR); | |||||
+ if (i < 0) | |||||
+ return (i); | |||||
+ | |||||
+ return (fscanf(stream, "%s : %[^\n]\n", *name, *val)); | |||||
+} | |||||
+#endif | |||||
+ | |||||
bool read_settings_from_file(struct settings *settings, FILE *f) | |||||
{ | |||||
#define PARSE_LINE(s, name, val, field, write) \ | |||||
@@ -887,7 +917,11 @@ bool read_settings_from_file(struct settings *settings | |||||
settings->dmesg_warn_level = -1; | |||||
+#ifdef __linux__ | |||||
while (fscanf(f, "%ms : %m[^\n]", &name, &val) == 2) { | |||||
+#elif defined(__FreeBSD__) | |||||
+ while (settings_fscanf(f, &name, &val) == 2) { | |||||
+#endif | |||||
int numval = atoi(val); | |||||
PARSE_LINE(settings, name, val, abort_mask, numval); | |||||
PARSE_LINE(settings, name, val, disk_usage_limit, strtoul(val, NULL, 10)); |