ref: 6c63e71880f8bcdf597548e8bbaba165c4fe7d38
dir: /test.c/
#include <u.h> #include <libc.h> #include "ini.h" int verbose = 0; void parseline(char *section, char *key, char *value, int) { if (verbose) print("section: '%s', key: '%s', value: '%s'\n", section, key, value); } void main(int, char **argv) { char *file = argv[1]; char *status = nil; char *err = "error"; if (!parseini(file, parseline, 0, 0)) { fprint(2, "error: %r\n"); status = err; } if (!parseini(file, parseline, 1, 0)) { fprint(2, "error: %r\n"); status = err; } int conf = iniconfig(file, 0); if (conf < 0) sysfatal("error: %r"); char* v = getinivalue(conf, "Category A", "keyB"); if (strcmp(v, "valueB") != 0) fprint(2, "fail: expected 'valueB', got '%s'\n", v); int num; char** values = getiniarray(conf, "Category C", "keyF", &num); if (num != 2) fprint(2, "fail: expected 2 entries, got %d\n", num); if (values) { for (int i = 0; i < num; i++) { if (i == 0 && strcmp(values[i], "abc") != 0) fprint(2, "fail: expected 'abc', got '%s'\n", values[i]); if (i == 1 && strcmp(values[i], "def") != 0) fprint(2, "fail: expected 'def', got '%s'\n", values[i]); } } v = getinivalue(conf, nil, "nocat"); if (strcmp(v, "novalue") != 0) fprint(2, "fail: expected 'novalue', got '%s'\n", v); values = getiniarray(conf, nil, "nocatarr", &num); if (num != 2) fprint(2, "fail: expected 2 entries, got %d\n", num); if (values) { for (int i = 0; i < num; i++) { if (i == 0 && strcmp(values[i], "valA") != 0) fprint(2, "fail: expected 'valA', got '%s'\n", values[i]); if (i == 1 && strcmp(values[i], "valB") != 0) fprint(2, "fail: expected 'valB', got '%s'\n", values[i]); } } int r = freeini(conf); if (!r) fprint(2, "error freeing: %r\n"); sleep(1000); exits(status); }