tFixing the default symlink handling. - rohrpost - A commandline mail client to change the world as we see it.
 (HTM) git clone git://r-36.net/rohrpost
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
 (DIR) commit a7a575555390e37e68dc6249fa0b3881657e77d0
 (DIR) parent 2beb3256b2d087e23519b78cd87b3fb405705d98
 (HTM) Author: Christoph Lohmann <20h@r-36.net>
       Date:   Tue, 25 Dec 2012 10:20:35 +0100
       
       Fixing the default symlink handling.
       
       Diffstat:
         cfg.c                               |      19 +++++++++++++------
       
       1 file changed, 13 insertions(+), 6 deletions(-)
       ---
 (DIR) diff --git a/cfg.c b/cfg.c
       t@@ -11,6 +11,8 @@
        #include <strings.h>
        #include <errno.h>
        #include <libgen.h>
       +#include <sys/stat.h>
       +#include <sys/types.h>
        
        #include "ind.h"
        #include "arg.h"
       t@@ -45,16 +47,19 @@ void
        config_default(char *cfgn)
        {
                char *path, *cwd;
       +        struct stat sbuf;
        
                cwd = getcwd(NULL, 0);
                if (cwd == NULL)
                        edie("getcwd");
        
       -        path = path_mkbasepath(cfgn);
       +        path = path_mkrppath(NULL);
                if (chdir(path) < 0)
                        edie("chdir");
       -        if (remove("default") < 0)
       -                edie("remove");
       +        if (stat("default", &sbuf) >= 0) {
       +                if (remove("default") < 0)
       +                        edie("remove");
       +        }
                if (symlink(cfgn, "default") < 0)
                        edie("symlink");
        
       t@@ -208,9 +213,11 @@ configmain(int argc, char *argv[])
                cfg = config_init(cfgn);
        
                if (status & DOLIST) {
       -                llist_sort(cfg->values);
       -                forllist(cfg->values, elem)
       -                        configprintelem(elem, status & ONLYDATA);
       +                if (config_len(cfg) > 0) {
       +                        llist_sort(cfg->values);
       +                        forllist(cfg->values, elem)
       +                                configprintelem(elem, status & ONLYDATA);
       +                }
                        return 0;
                }