summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Jones <admin@danieljon.es>2019-04-09 23:09:54 +0930
committerDaniel Jones <admin@danieljon.es>2019-04-09 23:09:54 +0930
commitee7e3a093853d22d1b23b5b7283cde4e35f7852b (patch)
tree06910cfcc0c3d3d6d02cb0307b504d47e4f928b8
parent36bca31d8536ab667889086abc6c064e18fbed57 (diff)
downloadurlopener-ee7e3a093853d22d1b23b5b7283cde4e35f7852b.tar.gz
urlopener-ee7e3a093853d22d1b23b5b7283cde4e35f7852b.zip
now ignores case of file extension by converting everything to upper
-rw-r--r--urlopen.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/urlopen.c b/urlopen.c
index 1eeb6f4..efe7b41 100644
--- a/urlopen.c
+++ b/urlopen.c
@@ -22,6 +22,7 @@
#include <errno.h>
#include <signal.h>
#include <sys/types.h>
+#include <ctype.h>
#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;
}