diff options
author | Christian Neukirchen <chneukirchen@gmail.com> | 2016-07-18 18:32:12 +0200 |
---|---|---|
committer | Christian Neukirchen <chneukirchen@gmail.com> | 2016-07-18 18:32:12 +0200 |
commit | a686b545941bd62cc745f5d91dd5ce8c527f755e (patch) | |
tree | cf75c06f3e6c65ab9532a8fe5bae0ec95d454970 /seq.c | |
parent | b8d16d0cfb0d49d7cd301d0f29fa938ff213b862 (diff) | |
download | mblaze-a686b545941bd62cc745f5d91dd5ce8c527f755e.tar.gz mblaze-a686b545941bd62cc745f5d91dd5ce8c527f755e.tar.xz mblaze-a686b545941bd62cc745f5d91dd5ce8c527f755e.zip |
seq: move map/cur to ~/.santoku
Diffstat (limited to 'seq.c')
-rw-r--r-- | seq.c | 50 |
1 files changed, 40 insertions, 10 deletions
diff --git a/seq.c b/seq.c index dcecc09..75cc8d2 100644 --- a/seq.c +++ b/seq.c @@ -5,6 +5,7 @@ #include <errno.h> #include <fcntl.h> #include <limits.h> +#include <pwd.h> #include <search.h> #include <stdio.h> #include <stdlib.h> @@ -14,6 +15,22 @@ #include "blaze822.h" #include "blaze822_priv.h" +static char * +homefile(char *suffix) +{ + static char path[PATH_MAX]; + static char *homedir; + + if (!homedir) + homedir = getenv("HOME"); + if (!homedir) + homedir = getpwuid(getuid())->pw_dir; + + snprintf(path, sizeof path, "%s/%s", homedir, suffix); + + return path; +} + char * blaze822_seq_open(char *file) { @@ -22,7 +39,9 @@ blaze822_seq_open(char *file) // env $SEQ or something if (!file) - file = "map"; + file = getenv("MAILMAP"); + if (!file) + file = homefile(".santoku/map"); fd = open(file, O_RDONLY); if (!fd) return 0; @@ -104,23 +123,34 @@ char * blaze822_seq_cur() { static char b[PATH_MAX]; - // XXX env - int r = readlink("map.cur", b, sizeof b - 1); - if (r < 0) + + char *curlink = getenv("MAILCUR"); + if (!curlink) + curlink = homefile(".santoku/cur"); + + int r = readlink(curlink, b, sizeof b - 1); + if (r < 0) return 0; - b[r] = 0; - return b; + b[r] = 0; + return b; } int blaze822_seq_setcur(char *s) { - // XXX env - if (unlink("map.cur-") < 0 && errno != ENOENT) + char curtmplink[PATH_MAX]; + char *curlink = getenv("MAILCUR"); + if (!curlink) + curlink = homefile(".santoku/cur"); + + if (snprintf(curtmplink, sizeof curtmplink, "%s-", curlink) >= PATH_MAX) + return -1; // truncation + + if (unlink(curtmplink) < 0 && errno != ENOENT) return -1; - if (symlink(s, "map.cur-") < 0) + if (symlink(s, curtmplink) < 0) return -1; - if (rename("map.cur-", "map.cur") < 0) + if (rename(curtmplink, curlink) < 0) return -1; return 0; } |