]> Sergey Matveev's repositories - nnn.git/commitdiff
Fix #261
authorArun Prakash Jana <engineerarun@gmail.com>
Wed, 15 May 2019 03:44:28 +0000 (09:14 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Wed, 22 May 2019 03:14:19 +0000 (08:44 +0530)
src/nnn.c

index 51d17940b5eca5c817bb20f531a365fd7ac1272e..c94ecbe5b761d6ff731264ab24d921ce5b3201c6 100644 (file)
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -4360,6 +4360,10 @@ int main(int argc, char *argv[])
        if (!setup_config())
                return 1;
 
+       /* Get custom opener, if set */
+       opener = xgetenv(env_cfg[NNN_OPENER], utils[OPENER]);
+       DPRINTF_S(opener);
+
        /* Parse bookmarks string */
        if (!parsebmstr()) {
                fprintf(stderr, "%s\n", env_cfg[NNN_BMS]);
@@ -4387,6 +4391,23 @@ int main(int argc, char *argv[])
                        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(initpath, &sb) == -1) {
+                       xerror();
+                       return 1;
+               }
+
+               if (S_ISREG(sb.st_mode)) {
+                       execlp(opener, opener, arg, NULL);
+                       return 0;
+               }
        }
 
        /* Edit text in EDITOR, if opted */