From ee7e3a093853d22d1b23b5b7283cde4e35f7852b Mon Sep 17 00:00:00 2001 From: Daniel Jones Date: Tue, 9 Apr 2019 23:09:54 +0930 Subject: now ignores case of file extension by converting everything to upper --- urlopen.c | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/urlopen.c b/urlopen.c index 1eeb6f4..efe7b41 100644 --- a/urlopen.c +++ b/urlopen.c @@ -22,6 +22,7 @@ #include #include #include +#include #define NOFORK 0 /* if set we wont fork and execute programs */ @@ -92,6 +93,15 @@ islink(char *url) return 0; } +void +upper(char *str) +{ + for (size_t i = 0; i < strlen(str); i++) + { + str[i] = toupper(str[i]); + } +} + int getext(char *url) { @@ -101,7 +111,16 @@ getext(char *url) */ int ret = 0; char *p = NULL; - if ((p = strrchr(url, '.')+1)) + /* we don't want to modify the original url */ + char *curl = malloc(strlen(url)+1); + if (curl == NULL) + { + perror("malloc"); + free(curl); + return 0; + } + strcpy(curl, url); + if ((p = strrchr(curl, '.')+1)) { for (int i = 0; i < LEN(programs); i++) { @@ -109,12 +128,16 @@ getext(char *url) if (buff == NULL) { perror("malloc"); + free(curl); return 0; } strncpy(buff, programs[i][0], BUFF_SIZE-1); char *t = strtok(buff, ","); + upper(p); while (t != NULL) { + upper(t); + printf("checking %s vs %s\n", t, p); if (strcmp(t, p) == 0) { ret = i; @@ -124,6 +147,7 @@ getext(char *url) free(buff); } } + free(curl); return ret; } -- cgit v1.2.3