__pakfire_path_relative(path, sizeof(path), root, s)
int __pakfire_path_relative(char* buffer, const size_t length, const char* root, const char* s);
+int pakfire_path_is_absolute(const char* s);
+
#define pakfire_path_absolute(path, s) \
__pakfire_path_absolute(path, sizeof(path), s)
int __pakfire_path_absolute(char* buffer, const size_t length, const char* s);
#define pakfire_unhexlify(dst, src) __pakfire_unhexlify(dst, sizeof(dst), src)
int __pakfire_unhexlify(unsigned char* dst, const size_t l, const char* src);
-int pakfire_path_is_absolute(const char* path);
const char* pakfire_path_relpath(const char* root, const char* path);
#define pakfire_path_realpath(dest, path) \
return r;
}
+int pakfire_path_is_absolute(const char* s) {
+ struct pakfire_path* path = NULL;
+ int r;
+
+ // Parse the path
+ r = pakfire_path_parse(&path, s);
+ if (r < 0)
+ return r;
+
+ // Is this absolute?
+ r = path->is_absolute;
+
+ pakfire_path_free(path);
+
+ return r;
+}
+
int __pakfire_path_absolute(char* buffer, const size_t length, const char* s) {
struct pakfire_path* path = NULL;
int r;
#define BUFFER_SIZE 64 * 1024
#define NSEC_PER_SEC 1000000000
-int pakfire_path_is_absolute(const char* path) {
- if (!path) {
- errno = EINVAL;
- return -1;
- }
-
- return (*path == '/');
-}
-
const char* pakfire_path_relpath(const char* root, const char* path) {
// Check inputs
if (!root || !path) {