| 3156 |
char c; |
char c; |
| 3157 |
BOOL Quoted; |
BOOL Quoted; |
| 3158 |
|
|
| 3159 |
if ((unsigned int) (*i) >= strlen(Param)) |
if ((unsigned int) (*i) >= strlen(Param)) { |
| 3160 |
return FALSE; |
return FALSE; |
| 3161 |
|
} |
| 3162 |
j = 0; |
j = 0; |
| 3163 |
|
|
| 3164 |
while (Param[*i] == ' ' || Param[*i] == '\t') |
while (Param[*i] == ' ' || Param[*i] == '\t') { |
| 3165 |
(*i)++; |
(*i)++; |
| 3166 |
|
} |
| 3167 |
|
|
| 3168 |
Quoted = FALSE; |
Quoted = FALSE; |
| 3169 |
c = Param[*i]; |
c = Param[*i]; |
| 3177 |
c = Param[*i]; |
c = Param[*i]; |
| 3178 |
(*i)++; |
(*i)++; |
| 3179 |
} |
} |
| 3180 |
if (!Quoted && (c == ';')) |
if (!Quoted && (c == ';')) { |
| 3181 |
(*i)--; |
(*i)--; |
| 3182 |
|
} |
| 3183 |
|
|
| 3184 |
Temp[j] = 0; |
Temp[j] = 0; |
| 3185 |
return (strlen(Temp) > 0); |
return (strlen(Temp) > 0); |
| 3186 |
} |
} |
| 3187 |
|
|
|
void Dequote(PCHAR Source, PCHAR Dest) |
|
|
{ |
|
|
int i, j; |
|
|
char q, c; |
|
|
|
|
|
Dest[0] = 0; |
|
|
if (Source[0] == 0) |
|
|
return; |
|
|
i = 0; |
|
|
/* quoting char */ |
|
|
q = Source[i]; |
|
|
/* only '"' is used as quoting char */ |
|
|
if (q == '"') |
|
|
i++; |
|
|
|
|
|
c = Source[i]; |
|
|
i++; |
|
|
j = 0; |
|
|
while ((c != 0)) { |
|
|
if (c != '"') { |
|
|
Dest[j] = c; |
|
|
j++; |
|
|
} |
|
|
else { |
|
|
if (q == '"' && Source[i] == '"') { |
|
|
Dest[j] = c; |
|
|
j++; |
|
|
i++; |
|
|
} |
|
|
else if (q == '"' && Source[i] == '\0') { |
|
|
break; |
|
|
} |
|
|
else { |
|
|
Dest[j] = c; |
|
|
j++; |
|
|
} |
|
|
} |
|
|
c = Source[i]; |
|
|
i++; |
|
|
} |
|
|
|
|
|
Dest[j] = 0; |
|
|
} |
|
|
|
|
|
|
|
| 3188 |
#ifndef NO_INET6 |
#ifndef NO_INET6 |
| 3189 |
static void ParseHostName(char *HostStr, WORD * port) |
static void ParseHostName(char *HostStr, WORD * port) |
| 3190 |
{ |
{ |
| 3311 |
|
|
| 3312 |
while (NextParam(Param, &i, Temp, sizeof(Temp))) { |
while (NextParam(Param, &i, Temp, sizeof(Temp))) { |
| 3313 |
if (_strnicmp(Temp, "/F=", 3) == 0) { /* setup filename */ |
if (_strnicmp(Temp, "/F=", 3) == 0) { /* setup filename */ |
| 3314 |
Dequote(&Temp[3], Temp2); |
DequoteParam(Temp2, sizeof(Temp2), &Temp[3]); |
| 3315 |
if (strlen(Temp2) > 0) { |
if (strlen(Temp2) > 0) { |
| 3316 |
ConvFName(ts->HomeDir, Temp2, sizeof(Temp2), ".INI", Temp, |
ConvFName(ts->HomeDir, Temp2, sizeof(Temp2), ".INI", Temp, |
| 3317 |
sizeof(Temp)); |
sizeof(Temp)); |
| 3372 |
ts->HostDialogOnStartup = TRUE; |
ts->HostDialogOnStartup = TRUE; |
| 3373 |
} |
} |
| 3374 |
else if (_strnicmp(Temp, "/FD=", 4) == 0) { /* file transfer directory */ |
else if (_strnicmp(Temp, "/FD=", 4) == 0) { /* file transfer directory */ |
| 3375 |
Dequote(&Temp[4], Temp2); |
DequoteParam(Temp2, sizeof(Temp2), &Temp[4]); |
| 3376 |
if (strlen(Temp2) > 0) { |
if (strlen(Temp2) > 0) { |
| 3377 |
_getcwd(TempDir, sizeof(TempDir)); |
_getcwd(TempDir, sizeof(TempDir)); |
| 3378 |
if (_chdir(Temp2) == 0) |
if (_chdir(Temp2) == 0) |
| 3386 |
else if (_stricmp(Temp, "/I") == 0) /* iconize */ |
else if (_stricmp(Temp, "/I") == 0) /* iconize */ |
| 3387 |
ts->Minimize = 1; |
ts->Minimize = 1; |
| 3388 |
else if (_strnicmp(Temp, "/K=", 3) == 0) { /* Keyboard setup file */ |
else if (_strnicmp(Temp, "/K=", 3) == 0) { /* Keyboard setup file */ |
| 3389 |
Dequote(&Temp[3], Temp2); |
DequoteParam(Temp2, sizeof(Temp2), &Temp[3]); |
| 3390 |
ConvFName(ts->HomeDir, Temp2, sizeof(Temp2), ".CNF", |
ConvFName(ts->HomeDir, Temp2, sizeof(Temp2), ".CNF", |
| 3391 |
ts->KeyCnfFN, sizeof(ts->KeyCnfFN)); |
ts->KeyCnfFN, sizeof(ts->KeyCnfFN)); |
| 3392 |
} |
} |
| 3415 |
} |
} |
| 3416 |
} |
} |
| 3417 |
else if (_strnicmp(Temp, "/L=", 3) == 0) { /* log file */ |
else if (_strnicmp(Temp, "/L=", 3) == 0) { /* log file */ |
| 3418 |
Dequote(&Temp[3], Temp2); |
DequoteParam(Temp2, sizeof(Temp2), &Temp[3]); |
| 3419 |
strncpy_s(ts->LogFN, sizeof(ts->LogFN), Temp2, _TRUNCATE); |
strncpy_s(ts->LogFN, sizeof(ts->LogFN), Temp2, _TRUNCATE); |
| 3420 |
} |
} |
| 3421 |
else if (_strnicmp(Temp, "/LA=", 4) == 0) { /* language */ |
else if (_strnicmp(Temp, "/LA=", 4) == 0) { /* language */ |
| 3438 |
} |
} |
| 3439 |
} |
} |
| 3440 |
else if (_strnicmp(Temp, "/MN=", 4) == 0) { /* multicastname */ |
else if (_strnicmp(Temp, "/MN=", 4) == 0) { /* multicastname */ |
| 3441 |
Dequote(&Temp[4], ts->MulticastName); |
DequoteParam(ts->MulticastName, sizeof(ts->MulticastName), &Temp[4]); |
| 3442 |
} |
} |
| 3443 |
else if (_strnicmp(Temp, "/M=", 3) == 0) { /* macro filename */ |
else if (_strnicmp(Temp, "/M=", 3) == 0) { /* macro filename */ |
| 3444 |
if ((Temp[3] == 0) || (Temp[3] == '*')) |
if ((Temp[3] == 0) || (Temp[3] == '*')) |
| 3445 |
strncpy_s(ts->MacroFN, sizeof(ts->MacroFN), "*", |
strncpy_s(ts->MacroFN, sizeof(ts->MacroFN), "*", |
| 3446 |
_TRUNCATE); |
_TRUNCATE); |
| 3447 |
else { |
else { |
| 3448 |
Dequote(&Temp[3], Temp2); |
DequoteParam(Temp2, sizeof(Temp2), &Temp[3]); |
| 3449 |
ConvFName(ts->HomeDir, Temp2, sizeof(Temp2), ".TTL", |
ConvFName(ts->HomeDir, Temp2, sizeof(Temp2), ".TTL", |
| 3450 |
ts->MacroFN, sizeof(ts->MacroFN)); |
ts->MacroFN, sizeof(ts->MacroFN)); |
| 3451 |
} |
} |
| 3467 |
ParamTCP = 65535; |
ParamTCP = 65535; |
| 3468 |
} |
} |
| 3469 |
else if (_strnicmp(Temp, "/R=", 3) == 0) { /* Replay filename */ |
else if (_strnicmp(Temp, "/R=", 3) == 0) { /* Replay filename */ |
| 3470 |
Dequote(&Temp[3], Temp2); |
DequoteParam(Temp2, sizeof(Temp2), &Temp[3]); |
| 3471 |
ConvFName(ts->HomeDir, Temp2, sizeof(Temp2), "", ts->HostName, |
ConvFName(ts->HomeDir, Temp2, sizeof(Temp2), "", ts->HostName, |
| 3472 |
sizeof(ts->HostName)); |
sizeof(ts->HostName)); |
| 3473 |
if (strlen(ts->HostName) > 0) |
if (strlen(ts->HostName) > 0) |
| 3491 |
ts->HideWindow = 1; |
ts->HideWindow = 1; |
| 3492 |
} |
} |
| 3493 |
else if (_strnicmp(Temp, "/W=", 3) == 0) { /* Window title */ |
else if (_strnicmp(Temp, "/W=", 3) == 0) { /* Window title */ |
| 3494 |
Dequote(&Temp[3], ts->Title); |
DequoteParam(ts->Title, sizeof(ts->Title), &Temp[3]); |
| 3495 |
} |
} |
| 3496 |
else if (_strnicmp(Temp, "/X=", 3) == 0) { /* Window pos (X) */ |
else if (_strnicmp(Temp, "/X=", 3) == 0) { /* Window pos (X) */ |
| 3497 |
if (sscanf(&Temp[3], "%d", &pos) == 1) { |
if (sscanf(&Temp[3], "%d", &pos) == 1) { |