Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 3244 → Rev 3245

/programs/system/shell/modules/module_parameters.c
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]);
 
}
 
/// ===========================================================