aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Arun Prakash Jana <engineerarun@gmail.com>2020-06-08 08:48:20 +0530
committerGravatar Arun Prakash Jana <engineerarun@gmail.com>2020-06-08 08:48:20 +0530
commitb62adec72ce31918e2ccd903bd29d382b03b799d (patch)
treea373ea3352e7505d2ed3a60d2f10fa08cd1d901b /src
parentfdfbac03869a0250bcee4b8e9c486490f270aa9c (diff)
downloadnnn-b62adec72ce31918e2ccd903bd29d382b03b799d.tar.gz
Subdir 'mounts' for remote/archive mounts
Diffstat (limited to 'src')
-rw-r--r--src/nnn.c32
1 files changed, 18 insertions, 14 deletions
diff --git a/src/nnn.c b/src/nnn.c
index e2b02b2..2c8b688 100644
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -369,6 +369,7 @@ static char *listpath;
static char *prefixpath;
static char *plugindir;
static char *sessiondir;
+static char *mountdir;
static char *pnamebuf, *pselbuf;
static char *mark;
#ifndef NOFIFO
@@ -3904,7 +3905,7 @@ static bool archive_mount(char *newpath)
DPRINTF_S(dir);
/* Create the mount point */
- mkpath(cfgdir, dir, newpath);
+ mkpath(mountdir, dir, newpath);
free(dir);
if (!xmktree(newpath, TRUE)) {
@@ -3957,7 +3958,7 @@ static bool remote_mount(char *newpath)
}
/* Create the mount point */
- mkpath(cfgdir, tmp, newpath);
+ mkpath(mountdir, tmp, newpath);
if (!xmktree(newpath, TRUE)) {
printwarn(NULL);
return FALSE;
@@ -4013,8 +4014,8 @@ static bool unmount(char *name, char *newpath, int *presel, char *currentpath)
}
#endif
- if (tmp && strcmp(cfgdir, currentpath) == 0) {
- mkpath(cfgdir, tmp, newpath);
+ if (tmp && strcmp(mountdir, currentpath) == 0) {
+ mkpath(mountdir, tmp, newpath);
child = lstat(newpath, &sb) != -1;
parent = lstat(xdirname(newpath), &psb) != -1;
if (!child && !parent) {
@@ -4031,7 +4032,7 @@ static bool unmount(char *name, char *newpath, int *presel, char *currentpath)
}
/* Create the mount point */
- mkpath(cfgdir, tmp, newpath);
+ mkpath(mountdir, tmp, newpath);
if (!xdiraccess(newpath)) {
*presel = MSGWAIT;
return FALSE;
@@ -6830,6 +6831,7 @@ static bool setup_config(void)
cfgdir = (char *)malloc(len);
plugindir = (char *)malloc(len);
sessiondir = (char *)malloc(len);
+ mountdir = (char *)malloc(len);
if (!cfgdir || !plugindir || !sessiondir) {
xerror();
return FALSE;
@@ -6852,21 +6854,22 @@ static bool setup_config(void)
DPRINTF_S(cfgdir);
/* Create ~/.config/nnn/plugins */
- xstrsncpy(plugindir, cfgdir, PATH_MAX);
- xstrsncpy(plugindir + r + 4 - 1, "/plugins", 9); /* subtract length of "/nnn" (4) */
- DPRINTF_S(plugindir);
-
- if (access(plugindir, F_OK) && !xmktree(plugindir, TRUE)) {
+ mkpath(cfgdir, "plugins", plugindir);
+ if (!xmktree(plugindir, TRUE)) {
xerror();
return FALSE;
}
/* Create ~/.config/nnn/sessions */
- xstrsncpy(sessiondir, cfgdir, PATH_MAX);
- xstrsncpy(sessiondir + r + 4 - 1, "/sessions", 10); /* subtract length of "/nnn" (4) */
- DPRINTF_S(sessiondir);
+ mkpath(cfgdir, "sessions", sessiondir);
+ if (!xmktree(sessiondir, TRUE)) {
+ xerror();
+ return FALSE;
+ }
- if (access(sessiondir, F_OK) && !xmktree(sessiondir, TRUE)) {
+ /* Create ~/.config/nnn/mounts */
+ mkpath(cfgdir, "mounts", mountdir);
+ if (!xmktree(mountdir, TRUE)) {
xerror();
return FALSE;
}
@@ -6914,6 +6917,7 @@ static void cleanup(void)
free(selpath);
free(plugindir);
free(sessiondir);
+ free(mountdir);
free(cfgdir);
free(initpath);
free(bmstr);