Kaynağa Gözat

nnn as file manager: more changes

1. Support passing files to nnn
2. Enable debug logs much early
master
Arun Prakash Jana 5 yıl önce
ebeveyn
işleme
39035bd75c
Veri tabanında bu imza için bilinen anahtar bulunamadı GPG Anahtar Kimliği: A75979F35C080412
2 değiştirilmiş dosya ile 31 ekleme ve 14 silme
  1. +2
    -2
      src/dbg.h
  2. +29
    -12
      src/nnn.c

+ 2
- 2
src/dbg.h Dosyayı Görüntüle

@@ -47,7 +47,7 @@ static int xprintf(int fd, const char *fmt, ...)
return r;
}

static int enabledbg()
static int enabledbg(void)
{
FILE *fp = fopen("/tmp/nnndbg", "w");

@@ -71,7 +71,7 @@ static int enabledbg()
return 0;
}

static void disabledbg()
static void disabledbg(void)
{
close(DEBUG_FD);
}


+ 29
- 12
src/nnn.c Dosyayı Görüntüle

@@ -4045,9 +4045,20 @@ int main(int argc, char *argv[])
++opt;
}

#ifdef DBGMODE
enabledbg();
atexit(disabledbg);
#endif

home = getenv("HOME");
DPRINTF_S(home);

/* Get custom opener, if set */
opener = xgetenv(env_cfg[NNN_OPENER], utils[OPENER]);
if (getenv(env_cfg[NNN_OPENER_DETACH]))
opener_flag |= F_NOWAIT;
DPRINTF_S(opener);

/* Parse bookmarks string */
if (!parsebmstr()) {
fprintf(stderr, "%s\n", env_cfg[NNN_BMS]);
@@ -4072,10 +4083,28 @@ int main(int argc, char *argv[])
&& ipath[3] == 'e' && ipath[4] == ':' && ipath[5] == '/' && ipath[6] == '/')
ipath = ipath + 7;
ipath = realpath(ipath, cwd);
DPRINTF_S(ipath);
if (!ipath) {
xerror();
return 1;
}

/*
* If nnn is set as the file manager, applications may try to open
* files by invoking nnn. In that case pass the file path to the
* desktop opener and exit.
*/
struct stat sb;

if (stat(ipath, &sb) == -1) {
printwarn();
return 1;
}

if (S_ISREG(sb.st_mode)) {
spawn(opener, ipath, NULL, NULL, opener_flag);
return 0;
}
}

/* Edit text in EDITOR, if opted */
@@ -4113,12 +4142,6 @@ int main(int argc, char *argv[])
}
#endif

/* Get custom opener, if set */
opener = xgetenv(env_cfg[NNN_OPENER], utils[OPENER]);
if (getenv(env_cfg[NNN_OPENER_DETACH]))
opener_flag |= F_NOWAIT;
DPRINTF_S(opener);

/* Set nnn nesting level, idletimeout used as tmp var */
idletimeout = xatoi(getenv(env_cfg[NNNLVL]));
setenv(env_cfg[NNNLVL], xitoa(++idletimeout), 1);
@@ -4200,9 +4223,6 @@ int main(int argc, char *argv[])
read_history(NULL);
#endif

#ifdef DBGMODE
enabledbg();
#endif
if (!initcurses())
return 1;

@@ -4236,8 +4256,5 @@ int main(int argc, char *argv[])
close(kq);
#endif

#ifdef DBGMODE
disabledbg();
#endif
return 0;
}

Yükleniyor…
İptal
Kaydet