summaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authorGravatar Alan Fitton <ajf@eth0.org.uk>2011-10-17 20:47:46 +0000
committerGravatar Alan Fitton <ajf@eth0.org.uk>2011-10-17 20:47:46 +0000
commit1622d2e7d144adf5da665d99816bbd212dc11135 (patch)
tree4499d889e06276080917efa14e5b02f7b62a3078 /src/main.c
parent78f317d6c280e359ce38b3892a1c9a7b96e50ca2 (diff)
prevent -m /m --minimized being picked up as torrent file arguments
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c39
1 files changed, 29 insertions, 10 deletions
diff --git a/src/main.c b/src/main.c
index a8cd79f..3f02846 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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);