diff -ru a/src/client.c b/src/client.c
--- a/src/client.c	2008-09-14 18:41:42.000000000 +0200
+++ b/src/client.c	2009-02-15 14:51:30.000000000 +0100
@@ -831,23 +831,35 @@
 }
 
 void start_client(char const * const torrentfile) {
+	int n = 0;
+
 	#ifdef DEBUG
 		printf("starting ctorrent for:%s\n", torrentfile);
 	#endif
 	syslog(LOG_DEBUG, "starting torrent");
+
+	if (completeargs)
+		n = 2;
+
 	if (fork() == 0) {
 		dropconnections(-1);
 		daemon(0,0);
 		chdir(download_dir);
 		//execl(cparam_p, cparam_0, "-S", client_host, "-e", cparam_e, "-E", cparam_E, "-C", cparam_C, torrentfile, NULL);
-		int size = userargs_len + 11;//terminating NULL if userargs_len is 0
+		int size = userargs_len + 11 + (completeargs ? 1 : 0);//terminating NULL if userargs_len is 0
 		char *params[size];
 		params[0] = cparam_0;params[1] = "-S";params[2] = client_host; params[3] = "-e";params[4]=cparam_e;
 		params[5] = "-E";params[6]= cparam_E;params[7]= "-C";params[8]=cparam_C;params[9]=torrentfile;
+
+		if (completeargs) {
+			params[10] = "-X";
+			params[11] = completeargs;
+		}
+
 		if (userargs_len)
-			memcpy(&params[10], userargs, userargs_len*sizeof(char*));
+			memcpy(&params[10 + n], userargs, userargs_len*sizeof(char*));
 		else
-			params[10] = NULL;
+			params[10 + n] = NULL;
 		execv(cparam_p, params);
 		#ifdef DEBUG
 			perror("execv");
diff -ru a/src/common.h b/src/common.h
--- a/src/common.h	2008-01-27 13:57:11.000000000 +0100
+++ b/src/common.h	2009-02-15 14:51:30.000000000 +0100
@@ -35,6 +35,7 @@
 const char* wget_p;
 const char* wget_c;
 char** userargs;
+char *completeargs;
 int userargs_len;
 int ulimit, dlimit;
 const char* statfile;
diff -ru a/src/dctcs.c b/src/dctcs.c
--- a/src/dctcs.c	2008-09-14 18:27:47.000000000 +0200
+++ b/src/dctcs.c	2009-02-15 14:51:30.000000000 +0100
@@ -200,6 +200,7 @@
        			{"check-interval",	required_argument,	0, 'i' },
 	  		{"wget",		required_argument,	0, 'W' },
      			{"wget-args",		required_argument,	0, 'w' },
+     			{"ctorrent-complete",	required_argument,	0, 'm' },
    			{0,0,0,0}
 };
 
@@ -274,6 +275,12 @@
 				printf("%c  = %s\n", c, optarg);
 			#endif
 			break;
+		case 'm':
+			if (completeargs)
+				free(completeargs);
+
+			completeargs = strdup(optarg);
+			break;
 		case 'Y':
 			parse = strdup(optarg);
 			i = 0;csize = 10;
@@ -659,6 +666,7 @@
 	cparam_E = "5.6";
 	cparam_C = "1";
 	userargs = NULL;
+	completeargs = NULL;
 	userargs_len = 0;
 	GUI_PORT=18000;
 	client_host="localhost:15000";

