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