diff options
author | Alan Fitton <ajf@eth0.org.uk> | 2011-10-17 20:47:46 +0000 |
---|---|---|
committer | Alan Fitton <ajf@eth0.org.uk> | 2011-10-17 20:47:46 +0000 |
commit | 1622d2e7d144adf5da665d99816bbd212dc11135 (patch) | |
tree | 4499d889e06276080917efa14e5b02f7b62a3078 /src/main.c | |
parent | 78f317d6c280e359ce38b3892a1c9a7b96e50ca2 (diff) |
prevent -m /m --minimized being picked up as torrent file arguments
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 39 |
1 files changed, 29 insertions, 10 deletions
@@ -228,12 +228,17 @@ static int winunique_send_message(HANDLE h, gchar **args) { #endif +static gboolean is_minimised_arg(gchar *arg) +{ + return !g_strcmp0(arg, "-m") + || !g_strcmp0(arg, "--minimized") + || !g_strcmp0(arg, "/m"); +} + static gboolean should_be_minimised(int argc, char *argv[]) { int i; for (i = 1; i < argc; i++) - if (!g_strcmp0(argv[i], "-m") - || !g_strcmp0(argv[i], "--minimized") - || !g_strcmp0(argv[i], "/m")) + if (is_minimised_arg(argv[i])) return TRUE; return FALSE; @@ -242,20 +247,34 @@ static gboolean should_be_minimised(int argc, char *argv[]) { static gchar **convert_args(int argc, char *argv[]) { gchar *cwd = g_get_current_dir(); gchar **files = NULL; - int i; + if (argc > 1) { - files = g_new0(gchar *, argc); + GSList *list = NULL; + int i; + for (i = 1; i < argc; i++) { - if (!is_url(argv[i]) && !is_magnet(argv[i]) + if (is_minimised_arg(argv[i])) { + continue; + } else if (!is_url(argv[i]) && !is_magnet(argv[i]) && g_file_test(argv[i], G_FILE_TEST_IS_REGULAR) && !g_path_is_absolute(argv[i])) { - files[i - 1] = g_build_path(G_DIR_SEPARATOR_S, cwd, argv[i], - NULL); + list = g_slist_append(list, + g_build_path(G_DIR_SEPARATOR_S, cwd, argv[i], NULL)); } else { - files[i - 1] = g_strdup(argv[i]); + list = g_slist_append(list, g_strdup(argv[i])); } } - } + + if (list) { + GSList *li; + files = g_new0(gchar*, g_slist_length(list)+1); + i = 0; + for (li = list; li; li = g_slist_next(li)) { + files[i++] = li->data; + } + g_slist_free(list); + } +b } g_free(cwd); |