Разработка приложений в среде 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 },
![Виртуальные машины: несколько компьютеров в одном](/storage/book-covers/d3/d3d21efc0138d31faad0917369f9053e064085e5.jpg)
Применение виртуальных машин дает различным категориям пользователей — от начинающих до IT-специалистов — множество преимуществ. Это и повышенная безопасность работы, и простота развертывания новых платформ, и снижение стоимости владения. И потому не случайно сегодня виртуальные машины переживают второе рождение.В книге рассмотрены три наиболее популярных на сегодняшний день инструмента, предназначенных для создания виртуальных машин и управления ими: Virtual PC 2004 компании Microsoft, VMware Workstation от компании VMware и относительно «свежий» продукт — Parallels Workstation, созданный в компании Parallels.
![Недокументированные и малоизвестные возможности Windows XP](/storage/book-covers/3c/3c1be627c1d69a562e3fca9dc54a9a80bbae29e0.jpg)
Книга содержит подробные сведения о таких недокументированных или малоизвестных возможностях Windows XP, как принципы работы с программами rundll32.exe и regsvr32.exe, написание скриптов сервера сценариев Windows и создание INF-файлов. В ней приведено описание оснасток, изложены принципы работы с консолью управления mmc.exe и параметрами реестра, которые изменяются с ее помощью. Кроме того, рассмотрено большое количество средств, позволяющих выполнить тонкую настройку Windows XP.Эта книга предназначена для опытных пользователей и администраторов, которым интересно узнать о нестандартных возможностях Windows.
![Windows Vista. Мультимедийный курс](/storage/book-covers/90/9076fd7cf40e08475c322090e7c5bab39a1bf5f1.jpg)
Эта книга поможет вам разобраться в премудростях операционной системы Windows Vista.Информационная насыщенность учебного материала позволяет утверждать, что мультимедийный курс будет интересен и новичкам, и опытным пользователям.
![FAQ по смартфону Qtek 8300/8310](/storage/book-covers/02/029347a6079e3c00093e55140234dcb20c9c97fa.jpg)
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
![Домашние и офисные сети под Vista и XP](/storage/book-covers/60/60ea92e91fc065c1a8fc203657d970b52abd1821.jpg)
Количество персональных компьютеров в нашей стране растет год от года. Сегодня во многих семьях имеется два или даже три компьютера.Чтобы воспользоваться всеми преимуществами такой ситуации, компьютеры в вашей квартире стоит объединить сетью. Это позволит вам играть по сети в компьютерные игры, совместно использовать дисковое пространство, принтеры, модемы и другие устройства, всю сеть можно соединить с Интернетом. А в офисах сеть между компьютерами просто необходима.Открывающиеся перспективы выглядят очень заманчиво.
![Свободные программы и системы в школе](/build/oblozhka.dc6e36b8.jpg)
Курс лекций, включенных в брошюру, знакомит читателя с популярными свободными программами и системами, полезными при преподавании информатики в средней школе. В обзор вошли основы открытых операционных систем, сведения о пакете «офисных» программ OpenOffice.org, коммуникационном пакете Mozilla, графическом редакторе GIMP, современных графических средах GNOME и KDE и других программах.Для преподавателей информатики и методистов, а также для студентов и аспирантов соответствующих специальностей.© 2002-3, Максим Отставнов.© 2002, Андрей Добровольский (раздел 3.1).Использован текст лекций, публиковавшихся автором в приложении к газете «Первое сентября» «Информатика» (http://inf.1september.ru) в 2002-3 г., материалы брошюры «Прикладные свободные программы в школе» (М.: 2003 г.), а также фрагменты статей, ранее публиковавшихся в журналах «Компьютерра» и «Домашний компьютер».Материалы, представленные в этой книге, также доступны в Интернет на странице www.otstavnov.com/fsft на условиях Свободной лицензии ГНУ на документацию (GNU FDL)