4 /*** typedefs(not structures) and defined constants **********************************************/
6 #define VFS_PATH_URL_DELIMITER "://"
8 /*** enums ***************************************************************************************/
13 VPF_NO_CANON
= 1 << 0,
14 VPF_USE_DEPRECATED_PARSER
= 1 << 1,
16 VPF_STRIP_HOME
= 1 << 3,
17 VPF_STRIP_PASSWORD
= 1 << 4,
18 VPF_HIDE_CHARSET
= 1 << 5
21 /*** structures declarations (and typedefs of structures)*****************************************/
24 struct vfs_url_struct
;
41 struct vfs_class
*class;
56 /*** global variables defined in .c file *********************************************************/
58 /*** declarations of public functions ************************************************************/
60 vfs_path_t
*vfs_path_new (gboolean relative
);
61 vfs_path_t
*vfs_path_clone (const vfs_path_t
* vpath
);
62 void vfs_path_remove_element_by_index (vfs_path_t
* vpath
, int element_index
);
63 char *vfs_path_free (vfs_path_t
* path
, gboolean free_str
);
64 int vfs_path_elements_count (const vfs_path_t
* path
);
66 char *vfs_path_to_str_elements_count (const vfs_path_t
* path
, int elements_count
);
67 char *vfs_path_to_str_flags (const vfs_path_t
* vpath
, int elements_count
, vfs_path_flag_t flags
);
68 vfs_path_t
*vfs_path_from_str (const char *path_str
);
69 vfs_path_t
*vfs_path_from_str_flags (const char *path_str
, vfs_path_flag_t flags
);
70 vfs_path_t
*vfs_path_build_filename (const char *first_element
, ...);
71 vfs_path_t
*vfs_path_append_new (const vfs_path_t
* vpath
, const char *first_element
, ...);
72 vfs_path_t
*vfs_path_append_vpath_new (const vfs_path_t
* first_vpath
, ...);
73 size_t vfs_path_tokens_count (const vfs_path_t
* vpath
);
74 char *vfs_path_tokens_get (const vfs_path_t
* vpath
, ssize_t start_position
, ssize_t length
);
75 vfs_path_t
*vfs_path_vtokens_get (const vfs_path_t
* vpath
, ssize_t start_position
, ssize_t length
);
77 void vfs_path_add_element (vfs_path_t
* vpath
, const vfs_path_element_t
* path_element
);
78 const vfs_path_element_t
*vfs_path_get_by_index (const vfs_path_t
* path
, int element_index
);
79 vfs_path_element_t
*vfs_path_element_clone (const vfs_path_element_t
* element
);
80 void vfs_path_element_free (vfs_path_element_t
* element
);
82 struct vfs_class
*vfs_prefix_to_class (const char *prefix
);
85 char *vfs_get_encoding(const char *path
, ssize_t len
);
86 gboolean
vfs_path_element_need_cleanup_converter (const vfs_path_element_t
* element
);
87 vfs_path_t
*vfs_path_change_encoding (vfs_path_t
* vpath
, const char *encoding
);
90 char *vfs_path_serialize (const vfs_path_t
* vpath
, GError
** error
);
91 vfs_path_t
*vfs_path_deserialize (const char *data
, GError
** error
);
93 GString
*vfs_path_build_url_params_str (const vfs_path_element_t
* element
, gboolean keep_password
);
94 GString
*vfs_path_element_build_pretty_path_str (const vfs_path_element_t
* element
);
96 size_t vfs_path_len (const vfs_path_t
* vpath
);
97 gboolean
vfs_path_equal (const vfs_path_t
* vpath1
, const vfs_path_t
* vpath2
);
98 gboolean
vfs_path_equal_len (const vfs_path_t
* vpath1
, const vfs_path_t
* vpath2
, size_t len
);
99 vfs_path_t
*vfs_path_to_absolute (const vfs_path_t
* vpath
);
101 /*** inline functions ****************************************************************************/
103 static inline gboolean
104 vfs_path_element_valid (const vfs_path_element_t
*element
)
106 return (element
!= NULL
&& element
->class != NULL
);
109 /* --------------------------------------------------------------------------------------------- */
111 static inline const char *
112 vfs_path_get_last_path_str (const vfs_path_t
*vpath
)
114 const vfs_path_element_t
*element
;
118 element
= vfs_path_get_by_index (vpath
, -1);
119 return (element
!= NULL
) ? element
->path
: NULL
;
122 /* --------------------------------------------------------------------------------------------- */
124 static inline const struct vfs_class
*
125 vfs_path_get_last_path_vfs (const vfs_path_t
*vpath
)
127 const vfs_path_element_t
*element
;
131 element
= vfs_path_get_by_index (vpath
, -1);
132 return (element
!= NULL
) ? element
->class : NULL
;
135 /* --------------------------------------------------------------------------------------------- */
137 * Convert vfs_path_t to string representation.
139 * @param vpath pointer to vfs_path_t object
141 * @return pointer to constant string
144 static inline const char *
145 vfs_path_as_str (const vfs_path_t
*vpath
)
147 return (vpath
== NULL
? NULL
: vpath
->str
);
150 /* --------------------------------------------------------------------------------------------- */