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
if (ret == 3) {
char *name, *file = NULL;
char *newpath;
- char *ext, *bin;
+ char *bin;
pid_t pid;
/* Cannot descend in empty directories */
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();