Download raw body.
Got relies on non-POSIX basename(3), dirname(3)
I don't know the purpose of got_path_{base,dir}name(), but since
they're basically strdup(fooname(path)) we can switch that to
fooname(strdup(path)) without semantic change.
Does this look right?
diff ebc5bf649f20688294a309f00a46e9e326fea671 /home/naddy/got
blob - 549cac5f15819dd3e37527467f02c394f51d5006
file + lib/path.c
--- lib/path.c
+++ lib/path.c
@@ -358,18 +358,20 @@ got_path_dir_is_empty(const char *dir)
const struct got_error *
got_path_dirname(char **parent, const char *path)
{
- char *p;
+ char *p, *dir;
- p = dirname(path);
+ p = strdup(path);
if (p == NULL)
+ return got_error_from_errno("strdup");
+
+ dir = dirname(p);
+ if (dir == NULL)
return got_error_from_errno2("dirname", path);
- if (p[0] == '.' && p[1] == '\0')
+ if (dir[0] == '.' && dir[1] == '\0')
return got_error_path(path, GOT_ERR_BAD_PATH);
- *parent = strdup(p);
- if (*parent == NULL)
- return got_error_from_errno("strdup");
+ *parent = dir;
return NULL;
}
@@ -424,15 +426,17 @@ done:
const struct got_error *
got_path_basename(char **s, const char *path)
{
- char *base;
+ char *p, *base;
- base = basename(path);
+ p = strdup(path);
+ if (p == NULL)
+ return got_error_from_errno("strdup");
+
+ base = basename(p);
if (base == NULL)
return got_error_from_errno2("basename", path);
- *s = strdup(base);
- if (*s == NULL)
- return got_error_from_errno("strdup");
+ *s = base;
return NULL;
}
--
Christian "naddy" Weisgerber naddy@mips.inka.de
Got relies on non-POSIX basename(3), dirname(3)