=encoding UTF-8 =head1 НАИМЕНОВАНИЕ BH_Args - обработка аргументов командной строки =head1 СИНТАКСИС #include static BH_ArgsOption options[] = { {'h', "help", 0, "Display this help"}, {1000, "list", 0, "List files"}, {'i', "input", BH_ARGS_VALUE, "Input file"}, {'o', "output", BH_ARGS_VALUE | BH_ARGS_OPTIONAL, "Output file"}, {0, NULL, 0, NULL} }; static int OptionsCallback(int key, char *arg, void *data) { switch (key) { case BH_ARGS_UNKNOWN: /* Unknown options */ break; case BH_ARGS_ARGUMENT: /* Regular argument in arg */ break; case 'h': /* Named option without argument */ break; case 1000: /* Long-only option without argument */ break; case 'i': /* Option with argument in arg */ break; case 'o': /* Option with optional argument in arg */ break; } return BH_OK; } BH_ArgsParse(argc, argv, options, OptionsCallback, NULL); BH_ArgsHelp(options, 0); cc prog.c -o prog -lbh =head1 ОПИСАНИЕ Библиотека BH_Args предназначена для удобной обработки аргументов командной строки в программах. Она позволяет определить набор опций, которые могут быть указаны при запуске программы, и предоставляет механизмы для их анализа и обработки. Разбор аргументов происходит с учётом следующих правил: =over =item * Если указан аргумент "--", последующий разбор аргументов прекращается. =item * Если указан аргумент "-", он обрабатывается как есть. =item * Для значений длинных аргументов будет использоваться строка после знака равно или следующий аргумент ("--define=value" или "--define value"). =item * Для значений коротких аргументов будет использоваться остаток строки после символа параметра или следующий аргумент ("-dvalue" или "-d value"). =back =head1 API ВЫЗОВЫ =head2 BH_ArgsParse int BH_ArgsParse(int argc, char **argv, BH_ArgsOption *options, BH_ArgsCallback callback, void *data); Разбирает аргументы I командной строки (заданные в I и I) и вызывает указанный обработчик I (с пользовательскими данными I). Параметр I ссылается на нуль-терминированный массив. В случае успеха данная функция возвращает 0, в противном случае - код ошибки. =head2 BH_ArgsHelp void BH_ArgsHelp(BH_ArgsOption *options, int padding); Выводит в F справочную информацию для аргументов I (с указанным выравниванием I). В случае если параметр I равен 0, то будет использовано значение по умолчанию (30). =head1 СТРУКТУРЫ =head2 BH_ArgsOption typedef struct BH_ArgsOption { int key; const char *name; int flags; const char *description; } BH_ArgsOption; Поле I содержит идентификатор опции. В случае если идентификатор I является печатным символом ASCII, то он будет использоваться в качестве короткого аргумента. Опциональное поле I содержит строку, которая будет использоваться в качестве длинного аргумента. Поле I содержит флаги аргумента. Возможна комбинация из следующих флагов: =over =item B Аргумент принимает значение. =item B Значение аргумента опционально. =back Поле I содержит строку, которая будет использоваться при выводе справочной информации при помощи функции L. =head1 СМ. ТАКЖЕ L