Разработка приложений в среде Linux - [193]

Шрифт
Интервал

, оно может приступить к синтаксическому анализу аргументов. Функция >poptGetNextContext() выполняет синтаксический анализ аргумента.

>#include


>int poptGetNextOpt(poptContext con);

Принимая содержимое в качестве своего единственного аргумента, эта функция анализирует синтаксис следующего обнаруженного аргумента командной строки. После того как следующий аргумент будет обнаружен в таблице параметров, функция заполняет объект, на который указывает указатель >arg элемента таблицы параметров, если только он не равен >NULL. Если элемент >val для параметра имеет ненулевое значение, функция возвращает это значение. В противном случае функция >poptGetNextOpt() переходит к следующему аргументу.

Функция >poptGetNextOpt() возвращает значение >-1, если был проанализирован синтаксис последнего аргумента, и другие отрицательные значения в случае возникновения ошибки. Поэтому лучше всего присваивать элементам >val в таблице параметров значения больше нуля.

Если все параметры командной строки обрабатываются через указатели >arg, то синтаксический анализ командной строки сокращается до следующей строки кода:

>rc = poptGetNextOpt(poptcon);

Тем не менее, для многих приложений требуется более сложный синтаксический анализ командной строки, нежели этот, и применяется показанная ниже структура.

>while ((rc = poptGetNextOpt(poptcon)) > 0) {

> switch (rc) {

>  /* здесь обрабатываются специфические аргументы */

> }

>}

Во время обработки возвращенных параметров приложению необходимо знать значение каждого аргумента, который был определен после параметра. Это можно сделать двумя способами. Один из них заключается в том, чтобы >popt присваивала переменной значение параметра из элементов arg таблицы параметров. Другой способ предусматривает применение функции >poptGetOptArg().

>#include


>char * poptGetOptArg(poptContext con);

Эта функция возвращает аргумент, заданный для последнего параметра, возвращенного функцией >poptGetNextOpt(), или возвращает значение >NULL, если ни один из аргументов не был определен.

26.2.3. Остаточные аргументы

Многие приложения принимают произвольное количество аргументов командной строки, например, список имен файлов. Когда >popt встречает аргумент, перед которым отсутствует дефис >-, она считает его таким аргументом и добавляет его в список остаточных аргументов. Доступ к этим аргументам в приложениях можно реализовать с помощью описанных далее трех функций.

>char * poptGetArg(poptContext con);

Эта функция возвращает следующий остаточный аргумент и помечает его как обработанный.

>char * poptPeekArg(poptContext con);

Эта функция возвращает следующий аргумент, не помечая его как обработанный. Таким образом, приложение может продолжить рассмотрение списка аргументов, не модифицируя список.

>char ** poptGetArgs(poptContext con);

Эта функция возвращает все остаточные аргументы в виде >argv. Последний элемент в возвращаемом массиве указывает на >NULL, подтверждая конец аргументов.

26.2.4. Автоматические справочные сообщения

Одним из преимуществ использования библиотеки >popt является ее способность автоматически генерировать справочные сообщения и сообщения об использовании. В справочных сообщениях указывается каждый параметр командной строки и приводится его подробное описание, а в сообщениях об использовании приводится краткий перечень доступных параметров без какого-либо сопроводительного текста. Для создания каждого типа сообщения в библиотеке >popt предусмотрена отдельная функция.

>#include


>void poptPrintHelp(poptContext con, FILE * f, int flags);

>void poptPrintUsage(poptContext con, FILE * f, int flags);

Обе эти функции ведут себя практически одинаково, записывая соответствующий тип сообщения в файл >f. Аргумент >flags на данный момент не используется ни одной из этих функций, и должен быть равен нулю для совместимости с будущими версиями библиотеки >popt.

Поскольку за справочное сообщение отвечает параметр >--help, а за сообщение об использовании — параметр >--usage, библиотека >popt предлагает простой способ добавления этих двух параметров в программу. Чтобы добавить эти параметры в таблицу параметров, можно использовать макрос >POPT_AUTOHELP[185], который выводит соответствующие сообщения в >STDOUT и закрывается после возвращения кода >0[186]. В следующем примере показана таблица параметров в файле >grep.с; мы должны добавить одну строку в таблицу параметров для grep, чтобы активизировать автоматическое генерирование справочных сообщений.

> 95: struct poptOption optionsTable[] = {

> 96:  { "extended-regexp", 'E', POPT_ARG_VAL,

> 97:    &mode, MODE_EXTENDED,

> 98:    "шаблоном для соответствия является расширенное регулярное "

> 99:    "выражение" },

>100:  { "fixed-strings", 'F', POPT_ARG_VAL,

>101:    &mode, MODE_FIXED,

>102:    "шаблоном для соответствия является базовая строка, (не "

>103:    "регулярное выражение)", NULL },

>104:  { "basic-regexp", 'G', POPT_ARG_VAL,

>105:    &mode, MODE_REGEXP,

>106:    "шаблоном для соответствия является базовое регулярное выражение" },

>107:  { "ignore-case", 'i', POPT_ARG_NONE, &ignoreCase, 0,

>108:    "выполнять поиск, чувствительный к регистру", NULL },


Рекомендуем почитать
Виртуальные  машины: несколько компьютеров в  одном

Применение виртуальных машин дает различным категориям пользователей — от начинающих до IT-специалистов — множество преимуществ. Это и повышенная безопасность работы, и простота развертывания новых платформ, и снижение стоимости владения. И потому не случайно сегодня виртуальные машины переживают второе рождение.В книге рассмотрены три наиболее популярных на сегодняшний день инструмента, предназначенных для создания виртуальных машин и управления ими: Virtual PC 2004 компании Microsoft, VMware Workstation от компании VMware и относительно «свежий» продукт — Parallels Workstation, созданный в компании Parallels.


Недокументированные и малоизвестные возможности Windows XP

Книга содержит подробные сведения о таких недокументированных или малоизвестных возможностях Windows XP, как принципы работы с программами rundll32.exe и regsvr32.exe, написание скриптов сервера сценариев Windows и создание INF-файлов. В ней приведено описание оснасток, изложены принципы работы с консолью управления mmc.exe и параметрами реестра, которые изменяются с ее помощью. Кроме того, рассмотрено большое количество средств, позволяющих выполнить тонкую настройку Windows XP.Эта книга предназначена для опытных пользователей и администраторов, которым интересно узнать о нестандартных возможностях Windows.


Windows Vista. Мультимедийный курс

Эта книга поможет вам разобраться в премудростях операционной системы Windows Vista.Информационная насыщенность учебного материала позволяет утверждать, что мультимедийный курс будет интересен и новичкам, и опытным пользователям.


FAQ по смартфону Qtek 8300/8310

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Домашние и офисные сети под Vista и XP

Количество персональных компьютеров в нашей стране растет год от года. Сегодня во многих семьях имеется два или даже три компьютера.Чтобы воспользоваться всеми преимуществами такой ситуации, компьютеры в вашей квартире стоит объединить сетью. Это позволит вам играть по сети в компьютерные игры, совместно использовать дисковое пространство, принтеры, модемы и другие устройства, всю сеть можно соединить с Интернетом. А в офисах сеть между компьютерами просто необходима.Открывающиеся перспективы выглядят очень заманчиво.


Свободные программы и системы в школе

Курс лекций, включенных в брошюру, знакомит читателя с популярными свободными программами и системами, полезными при преподавании информатики в средней школе. В обзор вошли основы открытых операционных систем, сведения о пакете «офисных» программ OpenOffice.org, коммуникационном пакете Mozilla, графическом редакторе GIMP, современных графических средах GNOME и KDE и других программах.Для преподавателей информатики и методистов, а также для студентов и аспирантов соответствующих специальностей.© 2002-3, Максим Отставнов.© 2002, Андрей Добровольский (раздел 3.1).Использован текст лекций, публиковавшихся автором в приложении к газете «Первое сентября» «Информатика» (http://inf.1september.ru) в 2002-3 г., материалы брошюры «Прикладные свободные программы в школе» (М.: 2003 г.), а также фрагменты статей, ранее публиковавшихся в журналах «Компьютерра» и «Домашний компьютер».Материалы, представленные в этой книге, также доступны в Интернет на странице www.otstavnov.com/fsft на условиях Свободной лицензии ГНУ на документацию (GNU FDL)