Manual pages: mcmcdiffmceditmcview

root/lib/vfs/path.h

/* [previous][next][first][last][top][bottom][index][help]  */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. vfs_path_element_valid
  2. vfs_path_get_last_path_str
  3. vfs_path_get_last_path_vfs
  4. vfs_path_as_str

   1 #ifndef MC__VFS_PATH_H
   2 #define MC__VFS_PATH_H
   3 
   4 /*** typedefs(not structures) and defined constants **********************************************/
   5 
   6 #define VFS_PATH_URL_DELIMITER "://"
   7 
   8 /*** enums ***************************************************************************************/
   9 
  10 typedef enum
  11 {
  12     VPF_NONE = 0,
  13     VPF_NO_CANON = 1 << 0,
  14     VPF_USE_DEPRECATED_PARSER = 1 << 1,
  15     VPF_RECODE = 1 << 2,
  16     VPF_STRIP_HOME = 1 << 3,
  17     VPF_STRIP_PASSWORD = 1 << 4,
  18     VPF_HIDE_CHARSET = 1 << 5
  19 } vfs_path_flag_t;
  20 
  21 /*** structures declarations (and typedefs of structures)*****************************************/
  22 
  23 struct vfs_class;
  24 struct vfs_url_struct;
  25 
  26 typedef struct
  27 {
  28     gboolean relative;
  29     GArray *path;
  30     char *str;
  31 } vfs_path_t;
  32 
  33 typedef struct
  34 {
  35     char *user;
  36     char *password;
  37     char *host;
  38     gboolean ipv6;
  39     int port;
  40     char *path;
  41     struct vfs_class *class;
  42     char *encoding;
  43     char *vfs_prefix;
  44 
  45     struct
  46     {
  47         GIConv converter;
  48         DIR *info;
  49     } dir;
  50 } vfs_path_element_t;
  51 
  52 /*** global variables defined in .c file *********************************************************/
  53 
  54 /*** declarations of public functions ************************************************************/
  55 
  56 vfs_path_t *vfs_path_new (gboolean relative);
  57 vfs_path_t *vfs_path_clone (const vfs_path_t *vpath);
  58 void vfs_path_remove_element_by_index (vfs_path_t *vpath, int element_index);
  59 char *vfs_path_free (vfs_path_t *path, gboolean free_str);
  60 int vfs_path_elements_count (const vfs_path_t *path);
  61 
  62 char *vfs_path_to_str_elements_count (const vfs_path_t *path, int elements_count);
  63 char *vfs_path_to_str_flags (const vfs_path_t *vpath, int elements_count, vfs_path_flag_t flags);
  64 vfs_path_t *vfs_path_from_str (const char *path_str);
  65 vfs_path_t *vfs_path_from_str_flags (const char *path_str, vfs_path_flag_t flags);
  66 vfs_path_t *vfs_path_build_filename (const char *first_element, ...);
  67 vfs_path_t *vfs_path_append_new (const vfs_path_t *vpath, const char *first_element, ...);
  68 vfs_path_t *vfs_path_append_vpath_new (const vfs_path_t *first_vpath, ...);
  69 size_t vfs_path_tokens_count (const vfs_path_t *vpath);
  70 char *vfs_path_tokens_get (const vfs_path_t *vpath, ssize_t start_position, ssize_t length);
  71 vfs_path_t *vfs_path_vtokens_get (const vfs_path_t *vpath, ssize_t start_position, ssize_t length);
  72 
  73 void vfs_path_add_element (vfs_path_t *vpath, const vfs_path_element_t *path_element);
  74 const vfs_path_element_t *vfs_path_get_by_index (const vfs_path_t *path, int element_index);
  75 vfs_path_element_t *vfs_path_element_clone (const vfs_path_element_t *element);
  76 void vfs_path_element_free (vfs_path_element_t *element);
  77 
  78 struct vfs_class *vfs_prefix_to_class (const char *prefix);
  79 
  80 char *vfs_get_encoding (const char *path, ssize_t len);
  81 gboolean vfs_path_element_need_cleanup_converter (const vfs_path_element_t *element);
  82 vfs_path_t *vfs_path_change_encoding (vfs_path_t *vpath, const char *encoding);
  83 
  84 char *vfs_path_serialize (const vfs_path_t *vpath, GError **error);
  85 vfs_path_t *vfs_path_deserialize (const char *data, GError **error);
  86 
  87 GString *vfs_path_build_url_params_str (const vfs_path_element_t *element, gboolean keep_password);
  88 GString *vfs_path_element_build_pretty_path_str (const vfs_path_element_t *element);
  89 
  90 size_t vfs_path_len (const vfs_path_t *vpath);
  91 gboolean vfs_path_equal (const vfs_path_t *vpath1, const vfs_path_t *vpath2);
  92 gboolean vfs_path_equal_len (const vfs_path_t *vpath1, const vfs_path_t *vpath2, size_t len);
  93 vfs_path_t *vfs_path_to_absolute (const vfs_path_t *vpath);
  94 
  95 /*** inline functions ****************************************************************************/
  96 
  97 static inline gboolean
  98 vfs_path_element_valid (const vfs_path_element_t *element)
     /* [previous][next][first][last][top][bottom][index][help]  */
  99 {
 100     return (element != NULL && element->class != NULL);
 101 }
 102 
 103 /* --------------------------------------------------------------------------------------------- */
 104 
 105 static inline const char *
 106 vfs_path_get_last_path_str (const vfs_path_t *vpath)
     /* [previous][next][first][last][top][bottom][index][help]  */
 107 {
 108     const vfs_path_element_t *element;
 109 
 110     if (vpath == NULL)
 111         return NULL;
 112     element = vfs_path_get_by_index (vpath, -1);
 113     return (element != NULL) ? element->path : NULL;
 114 }
 115 
 116 /* --------------------------------------------------------------------------------------------- */
 117 
 118 static inline const struct vfs_class *
 119 vfs_path_get_last_path_vfs (const vfs_path_t *vpath)
     /* [previous][next][first][last][top][bottom][index][help]  */
 120 {
 121     const vfs_path_element_t *element;
 122 
 123     if (vpath == NULL)
 124         return NULL;
 125     element = vfs_path_get_by_index (vpath, -1);
 126     return (element != NULL) ? element->class : NULL;
 127 }
 128 
 129 /* --------------------------------------------------------------------------------------------- */
 130 /**
 131  * Convert vfs_path_t to string representation.
 132  *
 133  * @param vpath pointer to vfs_path_t object
 134  *
 135  * @return pointer to constant string
 136  */
 137 
 138 static inline const char *
 139 vfs_path_as_str (const vfs_path_t *vpath)
     /* [previous][next][first][last][top][bottom][index][help]  */
 140 {
 141     return (vpath == NULL ? NULL : vpath->str);
 142 }
 143 
 144 /* --------------------------------------------------------------------------------------------- */
 145 
 146 #endif

/* [previous][next][first][last][top][bottom][index][help]  */