0,0 → 1,91 |
|
/// =========================================================== |
|
int parameters_prepare(char *param, char* argv[]) |
{ |
|
int i, param_len; |
int argc = 1; |
int quote = 0; |
int argv_len; |
|
param_len = strlen(param); |
if ( param_len == 0 ) |
return 0; |
|
argv[0] = (char*) malloc(4096); |
|
argv_len = 0; |
for (i = 0; i < param_len; i++) |
{ |
switch (param[i]) |
{ |
case '"': |
if (quote == 0) |
quote = 1; |
else |
{ |
quote = 0; |
argv[argc-1][argv_len] = '\0'; |
argc++; |
argv[argc-1] = (char*) malloc(4096); |
argv[argc-1][argv_len] = '\0'; |
argv_len = 0; |
} |
break; |
|
case 9: |
case 32: |
if (quote == 0) |
{ |
if ( ( param[i+1] != 32) || ( param[i+1] != 9) ) |
{ |
if (argv_len != 0) |
{ |
argv[argc-1][argv_len] = '\0'; |
argc++; |
argv[argc-1] = (char*) malloc(4096); |
argv[argc-1][argv_len] = '\0'; |
argv_len = 0; |
} |
} |
} |
else |
{ |
argv[argc-1][argv_len] = param[i]; |
argv_len++; |
} |
|
break; |
|
default: |
argv[argc-1][argv_len] = param[i]; |
argv_len++; |
break; |
}; |
} |
|
argv[argc-1][argv_len] = '\0'; |
|
if ( strlen(argv[argc-1]) == 0 ) |
{ |
free(argv[argc-1]); |
argc--; |
} |
|
return argc; |
} |
|
/// =========================================================== |
|
void parameters_free(int argc, char* argv[]) |
{ |
|
int i; |
|
for (i = 0; i < argc; i++) |
free(argv[i]); |
|
} |
|
/// =========================================================== |