Разработчик Tokbox здесь
Обратите внимание, что «AVAILABLE» используется только в том случае, если вы не предоставляете пользовательскую корзину s3 для загрузки архива, а файл загружается в облако Tokbox [1]
Итак:
argv1 и 2 должен закончиться в 0:
char* argv1[] = {"par1", "par2", 0};
Править: Хорошо, я прочитал getopt страницу справочника, и я нашел это:
Переменная optind является индексом следующего элемента, который будет обработан в argv. Система инициализирует это значение к 1. Вызывающая сторона может сбросить его к 1 для перезапуска сканирования того же argv, или при сканировании нового вектора аргумента.
Так, создание optind=1 между этими двумя заходит в getopt, заставляет его работать как ожидалось.
Есть ли какая-либо причина, почему Вы не используете getopt_long () вместо этого? На большинстве платформ, getopt () просто называет _getopt_long () с переключателем для отключения длинных споров. Это имеет место почти с каждой платформой, которую я знаю (все еще используемый), включая Linux, BSD и даже появляющуюся ОС как HelenOS - я знаю, я был тем, который портировал getopt к его libc :)
Намного легче на ЛЮБОМ использующем Вашу программу иметь долгие опции, по крайней мере, пока они не привыкают к использованию его.
getopt_long () позволит Вам использовать два (или больше) индексы опции, которые могут остаться 'живыми' после того, как они сделаны, обработав аргументы, только внутреннее (глобальный, неповторно используемый), нужно было бы быть сброшен, который не является никаким грандиозным предприятием.
Это позволяет, Вы легко сравнить количество аргумента с числом вариантов на самом деле передали в обоих вызовах со многими другими преимуществами.. рассмотрите не использование устаревшего интерфейса.
Взгляд getopt.h, Вы будете видеть то, что я имею в виду.
getopt()
функционируйте использует некоторые глобальные переменные, как optind
и optarg
, хранить информацию состояния между вызовами. После того, как Вы заканчиваете обрабатывать один набор опций, существуют данные, оставленные в тех переменных, который вызывает проблемы со следующим набором опций. Вы могли потенциально попытаться сбросить getopt
состояние между вызовами путем очистки переменных, но я не уверен, что это работало бы, так как функция могла бы использовать другие переменные, которые не документируются, и Вы никогда не знали бы, получили ли Вы их всех; кроме того, это было бы абсолютно непортативно (т.е. если реализация getopt()
изменения, Ваши повреждения кода). См. страницу справочника для деталей. Лучше всего не использовать getopt()
больше чем для одного набора аргументов в данной программе, если можно помочь ему.
Я не уверен, существует ли фактическая функция для сброса getopt
состояние (или возможно повторно используемая версия функции, которая позволяет Вам сохранить состояние в своих собственных переменных)... Я, кажется, не забываю видеть что-то как этот однажды, но я не могу найти его теперь, когда я смотрю :-/