Lines Matching +full:path +full:- +full:key
24 char *key; /* key string */ member
33 static int process_line(const char *path, char *line_buf, int pass, in process_line() argument
36 struct saved_data *data = (struct saved_data *)rec->data; in process_line()
39 char *key, *context; in process_line() local
47 items = sscanf(line_buf, "%ms %ms ", &key, &context); in process_line()
50 "%s: line %u is missing fields, skipping\n", path, in process_line()
53 free(key); in process_line()
58 data->spec_arr[data->nspec].key = key; in process_line()
59 data->spec_arr[data->nspec].lr.ctx_raw = context; in process_line()
62 data->nspec++; in process_line()
64 free(key); in process_line()
74 struct saved_data *data = (struct saved_data *)rec->data; in init()
75 const char *path = NULL; in init() local
78 int status = -1; in init()
84 n--; in init()
87 path = opts[n].value; in init()
95 return -1; in init()
100 if (!path) in init()
101 path = selinux_media_context_path(); in init()
102 if ((fp = fopen(path, "re")) == NULL) in init()
103 return -1; in init()
112 rec->spec_file = strdup(path); in init()
125 data->nspec = 0; in init()
127 data->nspec < maxnspec) { in init()
128 if (process_line(path, line_buf, pass, ++lineno, rec)) in init()
133 if (data->nspec == 0) { in init()
137 data->spec_arr = malloc(sizeof(spec_t)*data->nspec); in init()
138 if (data->spec_arr == NULL) in init()
140 memset(data->spec_arr, 0, sizeof(spec_t)*data->nspec); in init()
141 maxnspec = data->nspec; in init()
144 if (status == -1) in init()
150 status = digest_add_specfile(rec->digest, fp, NULL, sb.st_size, path); in init()
154 digest_gen_hash(rec->digest); in init()
166 struct saved_data *data = (struct saved_data *)rec->data; in close()
173 spec_arr = data->spec_arr; in close()
175 for (i = 0; i < data->nspec; i++) { in close()
177 free(spec->key); in close()
178 free(spec->lr.ctx_raw); in close()
179 free(spec->lr.ctx_trans); in close()
189 const char *key, in lookup() argument
192 struct saved_data *data = (struct saved_data *)rec->data; in lookup()
193 spec_t *spec_arr = data->spec_arr; in lookup()
196 for (i = 0; i < data->nspec; i++) { in lookup()
197 if (!strncmp(spec_arr[i].key, key, strlen(key) + 1)) in lookup()
199 if (!strncmp(spec_arr[i].key, "*", 2)) in lookup()
203 if (i >= data->nspec) { in lookup()
215 struct saved_data *data = (struct saved_data *)rec->data; in stats()
218 for (i = 0; i < data->nspec; i++) in stats()
219 total += data->spec_arr[i].matches; in stats()
222 data->nspec, total); in stats()
233 return -1; in selabel_media_init()
236 rec->data = data; in selabel_media_init()
237 rec->func_close = &close; in selabel_media_init()
238 rec->func_lookup = &lookup; in selabel_media_init()
239 rec->func_stats = &stats; in selabel_media_init()