tChange back to working dir after pack_delete() - pm - barely a pack manager
 (HTM) git clone git://z3bra.org/pm
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 8ac938b57e4fe44d05aa7662a32e21939291f555
 (DIR) parent e75a29dc260ce4d1a54c83eb9ec5de73c958875d
 (HTM) Author: z3bra <willyatmailoodotorg>
       Date:   Sat, 18 Jun 2016 01:29:57 +0200
       
       Change back to working dir after pack_delete()
       
       Diffstat:
         M pm.c                                |      14 ++++++++++----
       
       1 file changed, 10 insertions(+), 4 deletions(-)
       ---
 (DIR) diff --git a/pm.c b/pm.c
       t@@ -448,7 +448,7 @@ pack_install(const char *rootfs, const char *datadir, struct pack *p)
                                return -1;
                }
        
       -        log(LOG_VERBOSE, "writing metadata to %s\n", datadir);
       +        log(LOG_VERBOSE, "writing metadata\n");
                if (write_metadata(datadir, p) < 0) {
                        perror(datadir);
                        return -1;
       t@@ -553,7 +553,7 @@ pack_delete(const char *rootfs, const char *datadir, struct pack *p)
        {
                int fd;
                char *addr = NULL;
       -        char tmp[PATH_MAX];
       +        char tmp[PATH_MAX], cwd[PATH_MAX];
                struct stat st;
        
                snprintf(tmp, PATH_MAX, "%s/%s/files", datadir, p->name);
       t@@ -572,6 +572,7 @@ pack_delete(const char *rootfs, const char *datadir, struct pack *p)
                        close(fd);
                }
        
       +        getcwd(cwd, PATH_MAX);
                if (chdir(rootfs) < 0) {
                        perror(rootfs);
                        close(fd);
       t@@ -602,8 +603,13 @@ pack_delete(const char *rootfs, const char *datadir, struct pack *p)
                }
        
                /* remove metadata directory, no matter what */
       -        log(LOG_DEBUG, "removing %s\n", p->path);
       -        return rmdir(p->path);
       +        snprintf(tmp, PATH_MAX, "%s/%s", datadir, p->name);
       +        log(LOG_DEBUG, "removing %s\n", tmp);
       +        rmdir(tmp);
       +
       +        chdir(cwd);
       +
       +        return 0;
        }