tMake update() perform an install with overwrite flag set - pm - barely a pack manager
HTML git clone git://z3bra.org/pm
DIR Log
DIR Files
DIR Refs
DIR README
DIR LICENSE
---
DIR commit 07cdaa8ebcaebae5fb50e9b28b6977445418bd86
DIR parent 6e855748b4844361a463e1e0d3a48f04c45eefdf
HTML Author: z3bra <willyatmailoodotorg>
Date: Sun, 19 Jun 2016 01:39:13 +0200
Make update() perform an install with overwrite flag set
Diffstat:
M pm.c | 22 ++++++++++++----------
1 file changed, 12 insertions(+), 10 deletions(-)
---
DIR diff --git a/pm.c b/pm.c
t@@ -61,7 +61,7 @@ int mkdir_parents(char *dir, mode_t mode);
char *base_name(char *path);
struct pack *pack_load_tarball(char *path);
-struct pack *pack_load_directory(const char *datadir, char *path);
+struct pack *pack_load_metadata(const char *datadir, char *name);
struct pack *pack_load(const char *datadir, char *path);
void pack_free(struct pack *p);
int pack_extract(const char *rootfs, const char *datadir, struct pack *p);
t@@ -212,9 +212,10 @@ pack_load_tarball(char *path)
* Load a pack from a metadata directory and return a pack structure
*/
struct pack *
-pack_load_directory(const char *datadir, char *path)
+pack_load_metadata(const char *datadir, char *name)
{
struct pack *pack = NULL;
+ char tmp[PATH_MAX] = "";
if (!(pack = malloc(sizeof(struct pack)))) {
perror("malloc");
t@@ -225,8 +226,9 @@ pack_load_directory(const char *datadir, char *path)
pack->name = NULL;
pack->version = malloc(LINE_MAX);
- pack->path = strdup(path);
- pack->name = strdup(base_name(path));
+ snprintf(tmp, PATH_MAX, "%s/%s", datadir, name);
+ pack->path = strdup(tmp);
+ pack->name = strdup(name);
inspect_version(datadir, pack->name, pack->version);
return pack;
t@@ -244,10 +246,10 @@ pack_load(const char *datadir, char *path)
if (stat(path, &st) < 0) {
perror(path);
- } else if (S_ISDIR(st.st_mode)) {
- p = pack_load_directory(datadir, path);
} else if (S_ISREG(st.st_mode)) {
p = pack_load_tarball(path);
+ } else if (S_ISDIR(st.st_mode)) {
+ p = pack_load_metadata(datadir, path);
}
return p;
t@@ -743,7 +745,7 @@ install(const char *rootfs, const char *datadir, char *path)
int
update(const char *rootfs, const char *datadir, char *path)
{
- int r = 0;
+ int r = 0, tmp = overwrite;
struct pack *p = NULL;
if ((p = pack_load(datadir, path)) == NULL)
t@@ -752,7 +754,9 @@ update(const char *rootfs, const char *datadir, char *path)
if (pack_delete(rootfs, datadir, p) != 0)
return ERR_DELETE;
+ overwrite = 1;
r += pack_install(rootfs, datadir, p);
+ overwrite = tmp;
if (r == 0)
log(LOG_INFO, "updated %s to %s\n", p->name, p->version);
t@@ -773,11 +777,9 @@ delete(const char *rootfs, const char *datadir, char *name)
struct pack *p = NULL;
char tmp[PATH_MAX] = "";
- snprintf(tmp, PATH_MAX, "%s/%s", datadir, name);
- if ((p = pack_load(datadir, tmp)) == NULL)
+ if ((p = pack_load(datadir, name)) == NULL)
return ERR_PACK_LOAD;
-
r += pack_delete(rootfs, datadir, p);
if (r == 0)