diff -r 94d7459828ba -r 008c75a5e08d librazor/razor-internal.h --- a/librazor/razor-internal.h Thu Nov 13 10:44:53 2014 +0000 +++ b/librazor/razor-internal.h Mon Jul 04 10:48:18 2016 +0100 @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 Kristian Høgsberg * Copyright (C) 2008 Red Hat, Inc - * Copyright (C) 2009, 2011-2012, 2014 J. Ali Harlow + * Copyright (C) 2009, 2011-2012, 2014, 2016 J. Ali Harlow * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -42,6 +42,9 @@ #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) #define PADDING(value, base) (-(value) & (base - 1)) #define ALIGN(value, base) ((value) + PADDING(value, base)) + +#define str_has_prefix(s, prefix) (!strncmp(s, prefix, strlen(prefix))) + void *zalloc(size_t size); struct razor_set_section { @@ -181,7 +184,7 @@ }; int -razor_set_aquire_lock(struct razor_set *set, const char *path, int exclusive); +razor_set_acquire_lock(struct razor_set *set, const char *path, int exclusive); struct razor_entry * razor_set_find_entry(struct razor_set *set, @@ -206,7 +209,72 @@ ssize_t len, int arg1); int razor_run_script(const char *root, enum razor_property_flags script, - const char *program, const char *body, int arg1); + const char *program, const char *body, int arg1, + struct razor_error **error); + +/* URI functions */ + +struct razor_uri { + char *scheme; + char *userinfo; + char *host; + char *port; + char *path; + char *query; + char *fragment; +}; + +void razor_uri_destroy(struct razor_uri *ru); +int razor_uri_parse_uri(struct razor_uri *ru, const char *uri, int absolute, + struct razor_error **error); +int razor_uri_parse_relative_ref(struct razor_uri *ru, const char *uri, + struct razor_error **error); +int razor_uri_parse(struct razor_uri *ru, const char *uri, + struct razor_error **error); +void razor_uri_normalize(struct razor_uri *ru); +char *razor_uri_get_authority(const struct razor_uri *ru) RAZOR_MALLOC; +char *razor_uri_recompose(const struct razor_uri *ru) RAZOR_MALLOC; +void razor_uri_resolve(struct razor_uri *T, const struct razor_uri *base, + const struct razor_uri *R); + +char *razor_resolve_uri_root(const char *root_uri, const char *relative_uri, + int is_relative, struct razor_error **error) + RAZOR_MALLOC; + +int razor_file_mkdir(const char *path, mode_t mode, struct razor_error **error); +int razor_file_unlink(const char *path, struct razor_error **error); +int razor_file_open(const char *path, int flags, mode_t mode, + struct razor_error **error); +int razor_file_move(const char *path, const char *dest, + struct razor_error **error); +void *razor_file_get_contents(const char *path, size_t *length, int _private, + struct razor_error **error); +int razor_file_free_contents(void *addr, size_t length); +int razor_file_is_directory(const char *path, struct razor_error **error); +char *razor_file_mkdtemp_near(const char *path, const char *_template, + struct razor_error **error); +void *razor_file_opendir(const char *path, struct razor_error **error); +char *razor_file_readdir(void *dir, struct razor_error **error); +int razor_file_closedir(void *dir, struct razor_error **error); + +int razor_uri_mkdir(const char *uri, mode_t mode, struct razor_error **error); +int razor_uri_unlink(const char *uri, struct razor_error **error); +int razor_uri_open(const char *uri, int flags, mode_t mode, + struct razor_error **error); +int razor_uri_move(const char *uri, const char *dest, + struct razor_error **error); +int razor_uri_is_directory(const char *uri, struct razor_error **error); +char *razor_uri_mkdtemp_near(const char *uri, const char *template, + struct razor_error **error) RAZOR_MALLOC; +void *razor_uri_opendir(const char *uri, struct razor_error **error); +char *razor_uri_readdir(void *dir, struct razor_error **error) RAZOR_MALLOC; +int razor_uri_closedir(void *dir, struct razor_error **error); +void *razor_uri_get_contents(const char *uri, size_t *length, int private, + struct razor_error **error); +int razor_uri_free_contents(void *addr, size_t length); + +char *razor_path_from_parsed_uri(const struct razor_uri *ru, + struct razor_error **error); /* Utility functions */ @@ -216,16 +284,6 @@ va_list args); void razor_rpm_get_details_varg(struct razor_rpm *rpm, va_list args); -int razor_create_dir(const char *root, const char *path); -int razor_remove(const char *path); -int razor_write(int fd, const void *data, size_t size); - -void * -razor_file_get_contents(const char *filename, size_t *length, int private, - struct razor_error **error); -int razor_file_free_contents(void *addr, size_t length); - - typedef int (*razor_compare_with_data_func_t)(const void *p1, const void *p, void *data); @@ -267,6 +325,10 @@ if (error) \ *(error) = razor_error_new_posix(object); \ else +#define razor_set_error(error, domain, code, object, str) \ + if (error) \ + *(error) = razor_error_new_str(domain, code, object, str); \ + else #ifdef MSWIN_API struct razor_error *razor_error_new_mswin(const wchar_t *object, DWORD error); @@ -312,7 +374,7 @@ ACTION_MOVE, } type; struct { - char *path; + char *uri; union atomic_action_args { struct { char *root; @@ -359,6 +421,9 @@ }; #endif +char *razor_resolve_database_file(const char *root_uri, const char *filename, + struct razor_error **error); + int razor_allow_all_root_names(void); int razor_valid_root_name(const char *name);