]> Sergey Matveev's repositories - nnn.git/commitdiff
Simplify associations and handle README files
authorlostd <lostd@2f30.org>
Tue, 7 Oct 2014 14:32:03 +0000 (14:32 +0000)
committerlostd <>
Tue, 7 Oct 2014 14:32:03 +0000 (14:32 +0000)
noice.c

diff --git a/noice.c b/noice.c
index 549eaa362017a591fcd2b7d282c0e3c075a4ad5d..655ac39bd87e3cae172392769a995beb0f541884 100644 (file)
--- a/noice.c
+++ b/noice.c
@@ -50,36 +50,34 @@ struct assoc {
        char *ext; /* Extension */
        char *bin; /* Program */
 } assocs[] = {
-       { "avi", "mplayer" },
-       { "mp4", "mplayer" },
-       { "mkv", "mplayer" },
-       { "mp3", "mplayer" },
-       { "ogg", "mplayer" },
-       { "srt", "less" },
-       { "txt", "less" },
+       { ".avi", "mplayer" },
+       { ".mp4", "mplayer" },
+       { ".mkv", "mplayer" },
+       { ".mp3", "mplayer" },
+       { ".ogg", "mplayer" },
+       { ".srt", "less" },
+       { ".txt", "less" },
+       { "README", "less" },
 };
 
 char *
-extension(char *file)
-{
-       char *dot;
-
-       dot = strrchr(file, '.');
-       if (dot == NULL || dot == file)
-               return NULL;
-       else
-               return dot + 1;
-}
-
-char *
-openwith(char *ext)
+openwith(char *file)
 {
+       char *ext = NULL;
+       char *bin = NULL;
        int i;
 
+       ext = strrchr(file, '.');
+       if (ext == NULL)
+               ext = file;
+       DPRINTF_S(ext);
+
        for (i = 0; i < LEN(assocs); i++)
-               if (strncmp(assocs[i].ext, ext, strlen(ext)) == 0)
-                       return assocs[i].bin;
-       return NULL;
+               if (strncmp(assocs[i].ext, ext, strlen(ext) + 1) == 0)
+                       bin = assocs[i].bin;
+       DPRINTF_S(bin);
+
+       return bin;
 }
 
 int
@@ -327,7 +325,7 @@ nochange:
                if (ret == 3) {
                        char *name, *file = NULL;
                        char *newpath;
-                       char *ext, *bin;
+                       char *bin;
                        pid_t pid;
 
                        /* Cannot descend in empty directories */
@@ -357,18 +355,11 @@ nochange:
                                DPRINTF_S(file);
 
                                /* Open with */
-                               ext = extension(name);
-                               if (ext == NULL) {
-                                       printwarn("invalid extension\n");
-                                       goto nochange;
-                               }
-                               bin = openwith(ext);
+                               bin = openwith(name);
                                if (bin == NULL) {
                                        printwarn("no association\n");
                                        goto nochange;
                                }
-                               DPRINTF_S(ext);
-                               DPRINTF_S(bin);
 
                                exitcurses();