Таблица 26.2. Коды ошибок popt
Код ошибки | Описание |
---|---|
POPT_ERROR_NOARG | Отсутствует аргумент для данного параметра. |
POPT_ERROR_BADOPT | Невозможно проанализировать синтаксис аргумента параметра. |
POPT_ERROR_OPTSTOODEEP | Слишком глубокое вложение замещений имени параметра. |
POPT_ERROR_BADQUOTE | Несоответствие кавычек. |
POPT_ERROR_BADNUMBER | Невозможно преобразовать параметр в число. |
POPT_ERROR_OVERFLOW | Данное число слишком большое или слишком маленькое. |
POPT_ERROR_NOARG | Параметр, для которого требуется аргумент, был определен в командной строке, однако аргумент не был предоставлен. Эта ошибка может быть возвращена только функцией poptGetNextOpt() . |
POPT_ERROR_BADOPT | Параметр был определен в массиве argv , однако его нет в таблице параметров. Эта ошибка может быть возвращена только функцией poptGetNextOpt() . |
POPT_ERROR_OPTSTOODEEP | Совокупность замещений имени параметра имеет большую глубину вложений. На данный момент popt отслеживает параметры только до 10 уровня, чтобы избежать возникновения бесконечной рекурсии. Эту ошибку возвращает только функция poptGetNextOpt() . |
POPT_ERROR_BADQUOTE | В строке, прошедшей синтаксический анализ, было обнаружено несоответствие кавычек (например, была обнаружена только одна одинарная кавычка). Эту ошибку могут возвращать функции poptParseArgvString() , poptReadConfigFile() и poptReadDefaultConfig() . |
POPT_ERROR_BADNUMBER | Преобразование строки в число (int или long ) не было выполнено вследствие того, что строка содержит нецифровые символы. Эта ошибка возникает в том случае, когда функция poptGetNextOpt() обрабатывает аргумент типа РOРТ_ARG_INT или POPT_ARG_LONG . |
POPT_ERROR_OVERFLOW | Преобразование из строки в число не было выполнено вследствие того, что число было слишком большим или слишком маленьким. Подобно ошибке POPT_ERROR_BADNUMBER , эта ошибка может возникнуть только в том случае, если функция poptGetNextOpt() обрабатывает аргумент типа РОРТ_ARG_INT или POPT_ARG_LONG . |
POPT_ERROR_ERRNO | Системный вызов был возвращен вместе с ошибкой, а errno до сих пор содержит ошибку из системного вызова. Эту ошибку могут возвращать функции poptReadConfigFile() и poptReadDefaultConfig() . |
Приложения могут генерировать качественные сообщения об ошибках с помощью следующих двух функций.
const char * poptStrerror(const int error);
Эта функция принимает код ошибки popt
и возвращает строку с описанием ошибки, как и стандартная функция strerror()
.
char * poptBadOption(poptContext con, int flags);
Если во время выполнения функции poptGetNextOpt()
возникла ошибка, эта функция возвращает параметр, вызвавший ошибку. Если аргументу flags
присвоено значение POPT_BADOPTION_NOALIAS
, возвращается самый внешний параметр. В противном случае аргумент flags
должен иметь нулевое значение, а возвращаемый параметр может быть определен посредством псевдонима.
Для большинства приложений эти две функции существенно упрощают обработку ошибок popt
. Если ошибка возникает во время выполнения большинства функций, то выводится сообщение об ошибке, а функция poptStrerror()
возвращает строку с описанием ошибки. Если ошибка возникла во время синтаксического анализа аргумента, то код, подобный представленному ниже, отобразит информативное сообщение об ошибке.
fprintf(stderr, '%s: %s
',
poptBadOption(optCon, POPT_BADOPTION_NOALIAS),
poptStrerror(rc));