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
17 /*** structures declarations (and typedefs of structures)*****************************************/
20 struct vfs_url_struct
;
35 struct vfs_class
*class;
46 /*** global variables defined in .c file *********************************************************/
48 /*** declarations of public functions ************************************************************/
50 vfs_path_t
*vfs_path_new (void);
51 vfs_path_t
*vfs_path_clone (const vfs_path_t
* vpath
);
52 void vfs_path_remove_element_by_index (vfs_path_t
* vpath
, int element_index
);
53 void vfs_path_free (vfs_path_t
* path
);
54 int vfs_path_elements_count (const vfs_path_t
* path
);
56 char *vfs_path_to_str (const vfs_path_t
* path
);
57 char *vfs_path_to_str_elements_count (const vfs_path_t
* path
, int elements_count
);
58 vfs_path_t
*vfs_path_from_str (const char *path_str
);
59 vfs_path_t
*vfs_path_from_str_flags (const char *path_str
, vfs_path_flag_t flags
);
60 vfs_path_t
*vfs_path_build_filename (const char *first_element
, ...);
61 vfs_path_t
*vfs_path_append_new (const vfs_path_t
* vpath
, const char *first_element
, ...);
62 vfs_path_t
*vfs_path_append_vpath_new (const vfs_path_t
* first_vpath
, ...);
63 size_t vfs_path_tokens_count (const vfs_path_t
*);
64 char *vfs_path_tokens_get (const vfs_path_t
* vpath
, ssize_t start_position
, size_t length
);
65 vfs_path_t
*vfs_path_vtokens_get (const vfs_path_t
* vpath
, ssize_t start_position
, size_t length
);
67 vfs_path_element_t
*vfs_path_get_by_index (const vfs_path_t
* path
, int element_index
);
68 vfs_path_element_t
*vfs_path_element_clone (const vfs_path_element_t
* element
);
69 void vfs_path_element_free (vfs_path_element_t
* element
);
71 struct vfs_class
*vfs_prefix_to_class (const char *prefix
);
73 gboolean
vfs_path_element_need_cleanup_converter (const vfs_path_element_t
* element
);
75 char *vfs_path_serialize (const vfs_path_t
* vpath
, GError
** error
);
76 vfs_path_t
*vfs_path_deserialize (const char *data
, GError
** error
);
78 char *vfs_path_build_url_params_str (const vfs_path_element_t
* element
, gboolean keep_password
);
80 /*** inline functions ****************************************************************************/
82 static inline gboolean
83 vfs_path_element_valid (const vfs_path_element_t
* element
)
85 return (element
!= NULL
&& element
->class != NULL
);
88 /* --------------------------------------------------------------------------------------------- */
91 vfs_path_get_last_path_str (const vfs_path_t
* vpath
)
93 const vfs_path_element_t
*element
;
96 element
= vfs_path_get_by_index (vpath
, -1);
97 return (element
!= NULL
) ? element
->path
: NULL
;
100 /* --------------------------------------------------------------------------------------------- */
102 static inline struct vfs_class
*
103 vfs_path_get_last_path_vfs (const vfs_path_t
* vpath
)
105 const vfs_path_element_t
*element
;
108 element
= vfs_path_get_by_index (vpath
, -1);
109 return (element
!= NULL
) ? element
->class : NULL
;