librazor/razor.h.in
changeset 475 008c75a5e08d
parent 462 94d7459828ba
child 476 48e45439fd9a
     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_ */