1.1 --- a/librazor/razor.h.in Thu Nov 13 10:44:53 2014 +0000
1.2 +++ b/librazor/razor.h.in Mon Jul 04 10:48:18 2016 +0100
1.3 @@ -1,7 +1,7 @@
1.4 /*
1.5 * Copyright (C) 2008 Kristian Høgsberg <krh@redhat.com>
1.6 * Copyright (C) 2008 Red Hat, Inc
1.7 - * Copyright (C) 2009, 2011, 2012, 2014 J. Ali Harlow <ali@juiblex.co.uk>
1.8 + * Copyright (C) 2009, 2011, 2012, 2014, 2016 J. Ali Harlow <ali@juiblex.co.uk>
1.9 *
1.10 * This program is free software; you can redistribute it and/or modify
1.11 * it under the terms of the GNU General Public License as published by
1.12 @@ -23,7 +23,7 @@
1.13
1.14 #include <stdio.h>
1.15 #include <stdint.h>
1.16 -#include <sys/types.h>
1.17 +#include <sys/stat.h>
1.18
1.19 /* GCC extensions */
1.20 #if defined(__GNUC__)
1.21 @@ -130,6 +130,10 @@
1.22 *(dest) = razor_error_dup(src, summary); \
1.23 else
1.24
1.25 +#define razor_error_matches(error, domain, code) \
1.26 + ((error) && razor_error_get_domain(error) == (domain) && \
1.27 + razor_error_get_code(error) == (code))
1.28 +
1.29 #define RAZOR_ERROR_DOMAIN(i1,i2,i3,c) \
1.30 (((i1)&0xff)<<24|((i2)&0xff)<<16|((i3)&0xff)<<8|(c)&0xff)
1.31
1.32 @@ -145,6 +149,8 @@
1.33 RAZOR_GENERAL_ERROR_DATABASE_EXISTS,
1.34 RAZOR_GENERAL_ERROR_DATABASE_LOCKED,
1.35 RAZOR_GENERAL_ERROR_RPM_UNSUPPORTED,
1.36 + RAZOR_GENERAL_ERROR_UNSUPPORTED_URI,
1.37 + RAZOR_GENERAL_ERROR_BAD_URI,
1.38 };
1.39
1.40 int razor_error_get_domain(struct razor_error *error);
1.41 @@ -195,11 +201,11 @@
1.42 *
1.43 * Returns: non-zero on error.
1.44 **/
1.45 -int razor_atomic_make_dirs(struct razor_atomic *atomic, const char *root,
1.46 - const char *path);
1.47 +int razor_atomic_make_dirs(struct razor_atomic *atomic, const char *root_uri,
1.48 + const char *uri);
1.49 int razor_atomic_remove(struct razor_atomic *atomic, const char *path);
1.50 -int razor_atomic_rename_file(struct razor_atomic *atomic, const char *oldpath,
1.51 - const char *newpath);
1.52 +int razor_atomic_rename_file(struct razor_atomic *atomic, const char *old_uri,
1.53 + const char *new_uri);
1.54
1.55 /**
1.56 * razor_atomic_create_dir
1.57 @@ -209,8 +215,8 @@
1.58 *
1.59 * Returns: non-zero on error.
1.60 */
1.61 -int razor_atomic_create_dir(struct razor_atomic *atomic, const char *dirname,
1.62 - mode_t mode);
1.63 +int razor_atomic_create_dir(struct razor_atomic *atomic, const char *uri,
1.64 + mode_t mode);
1.65
1.66 /**
1.67 * razor_atomic_create_symlink
1.68 @@ -224,7 +230,7 @@
1.69 * Returns: non-zero on error.
1.70 */
1.71 int razor_atomic_create_symlink(struct razor_atomic *atomic, const char *target,
1.72 - const char *path);
1.73 + const char *uri);
1.74 /**
1.75 * razor_atomic_create_file
1.76 *
1.77 @@ -234,16 +240,17 @@
1.78 * Returns: A handle to be passed to razor_atomic_write() and
1.79 * razor_atomic_close() or a negative value on error.
1.80 */
1.81 -int razor_atomic_create_file(struct razor_atomic *atomic, const char *filename,
1.82 - mode_t mode);
1.83 +int razor_atomic_create_file(struct razor_atomic *atomic, const char *uri,
1.84 + mode_t mode);
1.85 int razor_atomic_write(struct razor_atomic *atomic, int handle,
1.86 - const void *data, size_t size);
1.87 + const void *data, size_t size);
1.88 int razor_atomic_close(struct razor_atomic *atomic, int handle);
1.89 int razor_atomic_sync(struct razor_atomic *atomic, int handle);
1.90 void razor_atomic_abort(struct razor_atomic *atomic, int domain, int code,
1.91 - const char *error_msg);
1.92 -void razor_atomic_propagate_error(struct razor_atomic *atomic,
1.93 - struct razor_error *error, const char *summary);
1.94 + const char *error_msg);
1.95 +void
1.96 +razor_atomic_propagate_error(struct razor_atomic *atomic,
1.97 + struct razor_error *error, const char *summary);
1.98 int razor_atomic_in_error_state(struct razor_atomic *atomic);
1.99
1.100 /**
1.101 @@ -272,7 +279,7 @@
1.102 struct razor_set *razor_set_create_without_root(void);
1.103 struct razor_set *razor_set_create(void);
1.104 struct razor_set *
1.105 -razor_set_open(const char *filename, enum razor_set_flags flags,
1.106 +razor_set_open(const char *uri, enum razor_set_flags flags,
1.107 struct razor_error **error);
1.108 uint32_t razor_set_get_header_version(struct razor_set *set);
1.109 int razor_set_set_header_version(struct razor_set *set,
1.110 @@ -283,9 +290,9 @@
1.111 struct razor_atomic *atomic, int handle,
1.112 uint32_t section_mask);
1.113 int razor_set_write(struct razor_set *set, struct razor_atomic *atomic,
1.114 - const char *filename, uint32_t setions);
1.115 + const char *uri, uint32_t setions);
1.116 int
1.117 -razor_set_bind_sections(struct razor_set *set, const char *filename,
1.118 +razor_set_bind_sections(struct razor_set *set, const char *uri,
1.119 enum razor_set_flags flags, struct razor_error **error);
1.120
1.121 void
1.122 @@ -506,13 +513,12 @@
1.123 const char *path);
1.124 void razor_relocations_destroy(struct razor_relocations *relocations);
1.125
1.126 -struct razor_rpm *razor_rpm_open(const char *filename,
1.127 - struct razor_error **error);
1.128 +struct razor_rpm *razor_rpm_open(const char *uri, struct razor_error **error);
1.129 void razor_rpm_get_details(struct razor_rpm *rpm, ...);
1.130 void razor_rpm_set_relocations(struct razor_rpm *rpm,
1.131 struct razor_relocations *relocations);
1.132 int razor_rpm_install(struct razor_rpm *rpm, struct razor_atomic *atomic,
1.133 - const char *root, int install_count,
1.134 + const char *root_uri, int install_count,
1.135 enum razor_stage_type stage);
1.136 int razor_rpm_close(struct razor_rpm *rpm);
1.137
1.138 @@ -599,13 +605,13 @@
1.139 **/
1.140 struct razor_root;
1.141
1.142 -const char *razor_get_database_path();
1.143 -void razor_set_database_path(const char *database_path);
1.144 -int razor_root_create(const char *root, struct razor_error **error);
1.145 +const char *razor_get_database_uri(void);
1.146 +void razor_set_database_uri(const char *database_uri);
1.147 +int razor_root_create(const char *root_uri, struct razor_error **error);
1.148 struct razor_root *
1.149 -razor_root_open(const char *root, struct razor_error **error);
1.150 +razor_root_open(const char *root_uri, struct razor_error **error);
1.151 struct razor_set *
1.152 -razor_root_open_read_only(const char *root, struct razor_error **error);
1.153 +razor_root_open_read_only(const char *root_uri, struct razor_error **error);
1.154 struct razor_set *razor_root_get_system_set(struct razor_root *root);
1.155 int razor_root_close(struct razor_root *root);
1.156 int
1.157 @@ -613,6 +619,41 @@
1.158 struct razor_atomic *atomic);
1.159
1.160 /**
1.161 + * SECTION:uri-io
1.162 + * @title: URI Input/Output
1.163 + * @short_description: Functions to support non-file URI handlers
1.164 + *
1.165 + * Libraries that want to support URIs other than file URIs (which razor
1.166 + * handles internally), can install their own URI handlers. Unsupported
1.167 + * virtual functions should be set to %NULL. A fallback URI handler (which
1.168 + * will be used if no scheme-specific handler is found) can be installed
1.169 + * by passing scheme as %NULL. Finally, URI handlers can be removed by
1.170 + * passing vtable as %NULL.
1.171 + **/
1.172 +
1.173 +struct razor_uri_vtable {
1.174 + unsigned structure_size;
1.175 + int (*mkdir)(const char *path, mode_t mode, struct razor_error **error);
1.176 + int (*unlink)(const char *path, struct razor_error **error);
1.177 + int (*open)(const char *path, int flags, mode_t mode,
1.178 + struct razor_error **error);
1.179 + int (*move)(const char *path, const char *dest,
1.180 + struct razor_error **error);
1.181 + void *(*get_contents)(const char *path, size_t *length, int _private,
1.182 + struct razor_error **error);
1.183 + int (*free_contents)(void *addr, size_t length);
1.184 + int (*is_directory)(const char *path, struct razor_error **error);
1.185 + char *(*mkdtemp_near)(const char *path, const char *_template,
1.186 + struct razor_error **error);
1.187 + void *(*opendir)(const char *path, struct razor_error **error);
1.188 + char *(*readdir)(void *dir, struct razor_error **error);
1.189 + int (*closedir)(void *dir, struct razor_error **error);
1.190 +};
1.191 +
1.192 +int razor_uri_set_vtable(const char *scheme, struct razor_uri_vtable *vtable,
1.193 + struct razor_error **error);
1.194 +
1.195 +/**
1.196 * SECTION:misc
1.197 * @title: Miscellaneous Functions
1.198 * @short_description: Various helper functions
1.199 @@ -636,12 +677,15 @@
1.200
1.201 char *razor_concat(const char *s, ...) RAZOR_MALLOC RAZOR_NULL_TERMINATED;
1.202
1.203 -char *razor_path_add_root(const char *path, const char *root) RAZOR_MALLOC;
1.204 -char *razor_path_from_url(const char *url) RAZOR_MALLOC;
1.205 +char *razor_path_from_uri(const char *uri, struct razor_error **error)
1.206 + RAZOR_MALLOC;
1.207 +char *razor_path_to_uri(const char *path) RAZOR_MALLOC;
1.208 +char *razor_path_relative_to_uri(const char *file_uri, const char *path,
1.209 + struct razor_error **error) RAZOR_MALLOC;
1.210
1.211 const char *razor_system_arch(void);
1.212
1.213 -int razor_dump_database(FILE *fp, const char *root, const char *filename,
1.214 +int razor_dump_database(FILE *fp, const char *root_uri, const char *filename,
1.215 struct razor_error **error);
1.216
1.217 #endif /* _RAZOR_H_ */