feat: implemented validargs.c
This commit is contained in:
parent
f2e7a5fbac
commit
c85f4e85a1
|
@ -20,7 +20,104 @@
|
||||||
* of the selected program options.
|
* of the selected program options.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int validargs(int argc, char **argv) {
|
int validargs(int argc, char **argv)
|
||||||
// TO BE IMPLEMENTED
|
{
|
||||||
abort();
|
char **ptr = argv;
|
||||||
}
|
ptr++;
|
||||||
|
for (int i = 1; i < argc; i++, ptr++)
|
||||||
|
{
|
||||||
|
if (**ptr == '-')
|
||||||
|
{
|
||||||
|
char *arg = *ptr;
|
||||||
|
arg++;
|
||||||
|
switch (*arg)
|
||||||
|
{
|
||||||
|
case 'h':
|
||||||
|
if (i == 1 && *(++arg) == '\0')
|
||||||
|
{
|
||||||
|
global_options = HELP_OPTION;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'v':
|
||||||
|
if (i == 1 && *(++arg) == '\0' && argc == 2)
|
||||||
|
{
|
||||||
|
global_options = VALIDATE_OPTION;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'c':
|
||||||
|
if (i == 1 && *(++arg) == '\0')
|
||||||
|
{
|
||||||
|
if (argc == 2)
|
||||||
|
{
|
||||||
|
global_options = CANONICALIZE_OPTION;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ptr++;
|
||||||
|
if (**ptr != '-')
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
arg = *ptr;
|
||||||
|
if (*(++arg) != 'p')
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (*(++arg) != '\0')
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
global_options = PRETTY_PRINT_OPTION;
|
||||||
|
if (argc == 3)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else if (argc == 4)
|
||||||
|
{
|
||||||
|
int indent_value = 0;
|
||||||
|
arg = *(++ptr);
|
||||||
|
while (*arg != '\0')
|
||||||
|
{
|
||||||
|
if (*arg <= '9' && *arg >= '0')
|
||||||
|
{
|
||||||
|
indent_value = indent_value * 10 + (*arg - '0');
|
||||||
|
arg++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
global_options += indent_value;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user