| |
return (EPKG_OK);
|
| |
}
|
| |
|
| + |
static ucl_object_t *
|
| + |
external_yaml_keyword(char *keyword)
|
| + |
{
|
| + |
const char *keyword_dir = NULL;
|
| + |
char keyfile_path[MAXPATHLEN];
|
| + |
|
| + |
keyword_dir = pkg_object_string(pkg_config_get("PLIST_KEYWORDS_DIR"));
|
| + |
if (keyword_dir == NULL) {
|
| + |
keyword_dir = pkg_object_string(pkg_config_get("PORTSDIR"));
|
| + |
snprintf(keyfile_path, sizeof(keyfile_path),
|
| + |
"%s/Keywords/%s.yaml", keyword_dir, keyword);
|
| + |
} else {
|
| + |
snprintf(keyfile_path, sizeof(keyfile_path),
|
| + |
"%s/%s.yaml", keyword_dir, keyword);
|
| + |
}
|
| + |
|
| + |
return (yaml_to_ucl(keyfile_path, NULL, 0));
|
| + |
}
|
| + |
|
| |
static int
|
| |
external_keyword(struct plist *plist, char *keyword, char *line, struct file_attr *attr)
|
| |
{
|
| + |
struct ucl_parser *parser;
|
| |
const char *keyword_dir = NULL;
|
| |
char keyfile_path[MAXPATHLEN];
|
| |
int ret = EPKG_UNKNOWN;
|
| |
if (keyword_dir == NULL) {
|
| |
keyword_dir = pkg_object_string(pkg_config_get("PORTSDIR"));
|
| |
snprintf(keyfile_path, sizeof(keyfile_path),
|
| - |
"%s/Keywords/%s.yaml", keyword_dir, keyword);
|
| + |
"%s/Keywords/%s.ucl", keyword_dir, keyword);
|
| |
} else {
|
| |
snprintf(keyfile_path, sizeof(keyfile_path),
|
| - |
"%s/%s.yaml", keyword_dir, keyword);
|
| + |
"%s/%s.ucl", keyword_dir, keyword);
|
| |
}
|
| |
|
| - |
if ((o = yaml_to_ucl(keyfile_path, NULL, 0)) == NULL)
|
| - |
return (EPKG_UNKNOWN);
|
| + |
if (eaccess(keyfile_path, R_OK) != 0) {
|
| + |
if ((o = external_yaml_keyword(keyword)) == NULL)
|
| + |
return (EPKG_UNKNOWN);
|
| + |
} else {
|
| + |
parser = ucl_parser_new(0);
|
| + |
if (!ucl_parser_add_file(parser, keyfile_path)) {
|
| + |
pkg_emit_error("cannot parse keyword: %s",
|
| + |
ucl_parser_get_error(parser));
|
| + |
ucl_parser_free(parser);
|
| + |
return (EPKG_UNKNOWN);
|
| + |
}
|
| + |
|
| + |
o = ucl_parser_get_object(parser);
|
| + |
ucl_parser_free(parser);
|
| + |
}
|
| |
|
| |
ret = parse_and_apply_keyword_file(o, plist, line, attr);
|
| |
|