static int parse_command_line()

in tools/updater/main.c [230:323]


static int parse_command_line(int argc, char **argv, updater_command_info_t *command_info)
{
    if (argc == 1)
    {
        print_supprted_commands();
        return EXIT_OK;
    }

    for (int i = 1; i < argc; i++)
    {
        if (command_info->requested_command != K4A_FIRMWARE_COMMAND_UNKNOWN)
        {
            command_info->requested_command = K4A_FIRMWARE_COMMAND_USAGE;
            printf("ERROR: Too many arguments.\n");
            print_supprted_commands();
            return EXIT_OK;
        }

        if ((0 == _stricmp("-PrintUsage", argv[i])) || (0 == _stricmp("/PrintUsage", argv[i])) ||
            (0 == _stricmp("-Help", argv[i])) || (0 == _stricmp("/Help", argv[i])) || (0 == _stricmp("/?", argv[i])) ||
            (0 == _stricmp("/h", argv[i])) || (0 == _stricmp("-h", argv[i])))
        {
            command_info->requested_command = K4A_FIRMWARE_COMMAND_USAGE;

            print_supprted_commands();
            return EXIT_OK;
        }
        else if ((0 == _stricmp("-List", argv[i])) || (0 == _stricmp("-l", argv[i])) || (0 == _stricmp("/l", argv[i])))
        {
            command_info->requested_command = K4A_FIRMWARE_COMMAND_LIST_DEVICES;
            i = try_parse_device(argc, argv, i, command_info);
        }
        else if ((0 == _stricmp("-Query", argv[i])) || (0 == _stricmp("-q", argv[i])) || (0 == _stricmp("/q", argv[i])))
        {
            command_info->requested_command = K4A_FIRMWARE_COMMAND_QUERY_DEVICE;
            i = try_parse_device(argc, argv, i, command_info);
            if (command_info->device_count == 0)
            {
                return EXIT_USAGE;
            }
        }
        else if ((0 == _stricmp("-Update", argv[i])) || (0 == _stricmp("-u", argv[i])) ||
                 (0 == _stricmp("/u", argv[i])))
        {
            command_info->requested_command = K4A_FIRMWARE_COMMAND_UPDATE_DEVICE;
            i++;
            if (i >= argc)
            {
                printf("ERROR: Not enough parameters.\n\n");
                print_supprted_commands();
                return EXIT_USAGE;
            }

            command_info->firmware_path = argv[i];

            i = try_parse_device(argc, argv, i, command_info);
            if (command_info->device_count == 0)
            {
                return EXIT_USAGE;
            }
        }
        else if ((0 == _stricmp("-Reset", argv[i])) || (0 == _stricmp("-r", argv[i])) || (0 == _stricmp("/r", argv[i])))
        {
            command_info->requested_command = K4A_FIRMWARE_COMMAND_RESET_DEVICE;
            i = try_parse_device(argc, argv, i, command_info);
            if (command_info->device_count == 0)
            {
                return EXIT_USAGE;
            }
        }
        else if ((0 == _stricmp("-Inspect", argv[i])) || (0 == _stricmp("-i", argv[i])) ||
                 (0 == _stricmp("/i", argv[i])))
        {
            command_info->requested_command = K4A_FIRMWARE_COMMAND_INSPECT_FIRMWARE;
            i++;
            if (i >= argc)
            {
                printf("ERROR: Not enough parameters.\n\n");
                print_supprted_commands();
                return EXIT_USAGE;
            }

            command_info->firmware_path = argv[i];
        }
        else
        {
            printf("ERROR: Unrecognized command.\n\n");
            print_supprted_commands();
            return EXIT_USAGE;
        }
    }

    return EXIT_OK;
}