static int test_resource_dpdk(void) { const struct resource *r; r = resource_find("test_resource_dpdk"); TEST_ASSERT_NOT_NULL(r, "Could not find test_resource_dpdk"); TEST_ASSERT(!strcmp(r->name, "test_resource_dpdk"), "Found resource %s, expected test_resource_dpdk", r->name); TEST_ASSERT(!strncmp("DPDK", r->begin, 4), "Unexpected payload: %.4s...", r->begin); return 0; }
int resource_string_value(const char *name, int unit, const char *resname, const char **result) { int error; const char *str; int line; line = 0; error = resource_find(&line, NULL, name, &unit, resname, NULL, NULL, NULL, NULL, NULL, NULL, &str); if (error) return error; *result = str; return 0; }
/* * err = resource_find_dev(&anchor, name, &unit, res, value); * Iterate through a list of devices, returning their unit numbers. * res and value are optional restrictions. eg: "at", "scbus0". * *unit is set to the value. * set *anchor to zero before starting. */ int resource_find_dev(int *anchor, const char *name, int *unit, const char *resname, const char *value) { int found_unit; int newln; int ret; newln = *anchor; ret = resource_find(anchor, &newln, name, NULL, resname, value, NULL, NULL, &found_unit, NULL, NULL, NULL); if (ret == 0) { *unit = found_unit; } *anchor = newln; return ret; }
/* * err = resource_find_match(&anchor, &name, &unit, resname, value) * Iteratively fetch a list of devices wired "at" something * res and value are restrictions. eg: "at", "scbus0". * For practical purposes, res = required, value = optional. * *name and *unit are set. * set *anchor to zero before starting. */ int resource_find_match(int *anchor, const char **name, int *unit, const char *resname, const char *value) { const char *found_name; int found_namelen; int found_unit; int ret; int newln; newln = *anchor; ret = resource_find(anchor, &newln, NULL, NULL, resname, value, &found_name, &found_namelen, &found_unit, NULL, NULL, NULL); if (ret == 0) { *name = resource_string_copy(found_name, found_namelen); *unit = found_unit; } *anchor = newln; return ret; }
int resource_int_value(const char *name, int unit, const char *resname, int *result) { int error; const char *str; char *op; unsigned long val; int line; line = 0; error = resource_find(&line, NULL, name, &unit, resname, NULL, NULL, NULL, NULL, NULL, NULL, &str); if (error) return error; if (*str == '\0') return EFTYPE; val = strtoul(str, &op, 0); if (*op != '\0') return EFTYPE; *result = val; return 0; }
static int test_resource_c(void) { const struct resource *r; FILE *f; r = resource_find("test_resource_c"); TEST_ASSERT_NOT_NULL(r, "No test_resource_c found"); TEST_ASSERT(!strcmp(r->name, "test_resource_c"), "Found resource %s, expected test_resource_c", r->name); TEST_ASSERT_SUCCESS(resource_fwrite_file(r, "test_resource.c"), "Failed to to write file %s", r->name); f = fopen("test_resource.c", "r"); TEST_ASSERT_NOT_NULL(f, "Missing extracted file resource.c"); fclose(f); remove("test_resource.c"); return 0; }
static int test_resource_tar(void) { const struct resource *r; FILE *f; r = resource_find("test_resource_tar"); TEST_ASSERT_NOT_NULL(r, "No test_resource_tar found"); TEST_ASSERT(!strcmp(r->name, "test_resource_tar"), "Found resource %s, expected test_resource_tar", r->name); TEST_ASSERT_SUCCESS(resource_untar(r), "Failed to to untar %s", r->name); f = fopen("test_resource.c", "r"); TEST_ASSERT_NOT_NULL(f, "Missing extracted file test_resource.c"); fclose(f); TEST_ASSERT_SUCCESS(resource_rm_by_tar(r), "Failed to remove extracted contents of %s", r->name); return 0; }