add: if(Tcl_DStringLength(&ds) > 0) Tcl_DStringAppend(&ds, " ", 1);
context: BuildCommandLine(    CONST char *executable,	/* Full path of executable (including 				 * extension).  Replacement for argv[0]. */    int argc,			/* Number of arguments. */    char **argv,		/* Argument strings in UTF. */    Tcl_DString *linePtr)	/* Initialized Tcl_DString that receives the				 * command line (TCHAR). */{    CONST char *arg, *start, *special;    int quote, i;    Tcl_DString ds;    Tcl_DStringInit(&ds);    /*     * Prime the path.     */        Tcl_DStringAppend(&ds, Tcl_DStringValue(linePtr), -1);        for (i = 0; i < argc; i++) {	if (i == 0) {	    arg = executable;	} else {	    arg = argv[i];	    Tcl_DStringAppend(&ds, " ", 1);	}	quote = 0;	if (argv[i][0] == '\0') {	    quote = 1;	} else {	    for (start = argv[i]; *start != '\0'; start++) {		if (isspace(*start)) { /* INTL: ISO space. */		    quote = 1;		    break;		}	    }	}	if (quote) {	    Tcl_DStringAppend(&ds, "\"", 1);	}	start = arg;	    	for (special = arg; ; ) {	    if ((*special == '\\') && 		    (special[1] == '\\' || special[1] == '"')) {		Tcl_DStringAppend(&ds, start, special - start);		start = special;		while (1) {		    special++;		    if (*special == '"') {			/* 			 * N backslashes followed a quote -> insert 			 * N * 2 + 1 backslashes then a quote.			 */			Tcl_DStringAppend(&ds, start, special - start);			break;		    }		    if (*special != '\\') {			break;		    }		}		Tcl_DStringAppend(&ds, start, special - start);		start = special;	    }	    if (*special == '"') {		Tcl_DStringAppend(&ds, start, special - start);		Tcl_DStringAppend(&ds, "\\\"", 2);		start = special + 1;	    }	    if (*special == '\0') {		break;	    }	    special++;	}	Tcl_DStringAppend(&ds, start, special - start);	if (quote) {	    Tcl_DStringAppend(&ds, "\"", 1);	}    }    Tcl_WinUtfToTChar(Tcl_DStringValue(&ds), Tcl_DStringLength(&ds), linePtr);    Tcl_DStringFree(&ds);}