Г.2. Заголовочный файл config.h

Г.2. Заголовочный файл config.h

Для обеспечения переносимости всего исходного кода, используемого в тексте книги, применялась утилита GNU autoconf. Ее можно загрузить по адресу http://ftp.gnu.org/gnu/autoconf. Эта программа генерирует сценарий интерпретатора с названием configure, который надо запустить после загрузки программного обеспечения в свою систему. Этот сценарий определяет, какие свойства обеспечивает ваша система Unix: имеется ли в структуре адреса сокета поле длины, поддерживается ли многоадресная передача, поддерживаются ли структуры адреса сокета канального уровня, и т.д. В результате получается файл с названием config.h. Этот файл — первый заголовочный файл, включенный в unp.h (см. предыдущий раздел). В листинге Г.2 показан заголовочный файл config.h для BSD/OS 3.0.

Строки, начинающиеся с #define, относятся к тем свойствам, которые обеспечены данной системой. Закомментированные строки и строки, начинающиеся с #undef, относятся к свойствам, данной системой не поддерживаемым.

Листинг Г.2. Заголовочный файл config.h для BSD/OS

i386-pc-bsdi3.0/config.h

 1 /* config.h. Автоматически генерируется сценарием configure. */

 2 /* Определяем константы, если имеется соответствующий заголовочный файл */

 3 #define CPU_VENDOR_OS "i386-pc-bsdi3.0"

 4 /* #undef HAVE_NETCONFIG_H */ /* <netconfig.h> */

 5 /* #undef HAVE_NETDIR_H */    /* <netdir.h> */

 6 #define HAVE_PTHREAD_H 1      /* <pthread.h> */

 7 #define HAVE_STRINGS_H 1      /* <strings.h> */

 8 /* #undef HAVE_XTI_INET_H */  /* <xti_inet.h> */

 9 #define HAVE_SYS_FILIO_H 1    /* <sys/filio.h> */

10 #define HAVE_SYS_IOCTL_H 1    /* <sys/ioctl.h> */

11 #define HAVE_SYS_SELECT_H 1   /* <sys/select.h> */

12 #define HAVE_SYS_SOCKIO_H 1   /* <sys/sockio.h> */

13 #define HAVE_SYS_SYSCTL_H 1   /* <sys/sysctl.h> */

14 #define HAVE_SYS_TIME_H 1     /* <sys/time.h> */

15 /* Определена, если можно подключить <time.h> и <sys/time.h> */

16 #define TIME_WITH_SYS_TIME 1

17 /* Определены, если имеются соответствующие функции */

18 #define HAVE_BZERO 1

19 #define HAVE_GETHOSTBYNAME2 1

20 /* #undef HAVE_PSELECT */

21 #define HAVE_VSNPRINTF 1

22 /* Определены, если прототипы функций есть в заголовочном файле */

23 /* #undef HAVE_GETADDRINFO_PROTO */    /* <netdb.h> */

24 /* #undef HAVE_GETNAMEINFO_PROTO */    /* <netdb.h> */

25 #define HAVE_GETHOSTNAME_PROTO 1       /* <unistd.h> */

26 #define HAVE_GETRUSAGE_PROTO 1         /* <sys/resource.h> */

27 #define HAVE_HSTRERROR_PROTO 1         /* <netdb.h> */

28 /* #undef HAVE_IF_NAMETOINDEX_PROTO */ /* <net/if.h> */

29 #define HAVE_INET_ATON_PROTO 1         /* <arpa/inet.h> */

30 #define HAVE_INET_PTON_PROTO 1         /* <arpa/inet.h> */

31 /* #undef HAVE_ISFDTYPE_PROTO */       /* <sys/stat.h> */

32 /* #undef HAVE_PSELECT_PROTO */        /* <sys/select.h> */

33 #define HAVE_SNPRINTF_PROTO 1          /* <stdio.h> */

34 /* #undef HAVE_SOCKATMARK_PROTO */     /* <sys/socket.h> */

35 /* Определены, если определены соответствующие структуры */

36 /* #undef HAVE_ADDRINFO_STRUCT */     /* <netdb.h> */

37 /* #undef HAVE_IF_NAMEINDEX_STRUCT */ /* <net/if.h> */

38 #define HAVE_SOCKADDR_DL_STRUCT 1     /* <net/if_dl.h> */

39 #define HAVE TIMESPEC STRUCT 1        /* <time.h> */

40 /* Определены, если имеется указанное свойство */

41 #define HAVE_SOCKADDR_SA_LEN 1    /* в sockaddr{} есть поле sa_len */

42 #define HAVE_MSGHDR_MSG_CONTROL 1 /* в msghdr{} есть поле msg_control */

43 /* Имена устройств XTI для TCP и UDP */

44 /* #undef HAVE_DEV_TCP */               /* большинство здесь */

45 /* #undef HAVE_DEV_XTI_TCP */           /* для AIX */

46 /* #undef HAVE_DEV_STREAMS_XTISO_TCP */ /* для OSF 3.2 */

47 /* При необходимости определяем типы данных */

48 /* #undef int8_t */             /* <sys/types.h> */

49 /* #undef int16_t */            /* <sys/types.h> */

50 /* #undef int32_t */            /* <sys/types.h> */

51 #define uint8_t unsigned char   /* <sys/types.h> */

52 #define uint16_t unsigned short /* <sys/types.h> */

53 #define uint32_t unsigned int   /* <sys/types.h> */

54 /* #undef size_t */             /* <sys/types.h> */

55 /* #undef ssize_t */            /* <sys/types.h> */

56 /* socklen_t должен иметь тип uint32_t, но configure определяет его

57    как unsigned int. т. к. это значение используется в начале компиляции.

58    иногда до того, как в данной реализации определяется тип uint32_t */

59 #define socklen_t unsigned int  /* <sys/socket.h> */

60 #define sa_family_t SA_FAMILY_T /* <sys/socket.h> */

61 #define SA_FAMILY_T uint8_t

62 #define t_scalar_t int32_t /* <xti.h> */

63 #define t_uscalar_t uint32_t /* <xti.h> */

64 /* Определены, если система поддерживает указанное свойство */

65 #define IPV4 1       /* IPv4, V в верхнем регистре */

66 #define IPv4 1       /* IPv4, v в нижнем регистре, на всякий случай */

67 /* #undef IPV6 */    /* IPv6, V в верхнем регистре */

68 /* #undef IPv6 */    /* IPv6, v в нижнем регистре, на всякий случай */

69 #define UNIXDOMAIN 1 /* доменные сокеты Unix */

70 #define UNIXdomain 1 /* доменные сокеты Unix */

71 #define MCAST 1      /* поддержка многоадресной передачи */

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

2.1.2. Настройка модемного соединения с помощью конфигуратора system-config-network

Из книги Fedora 8 Руководство пользователя автора Колисниченко Денис Николаевич

2.1.2. Настройка модемного соединения с помощью конфигуратора system-config-network Все сетевые соединении в Fedora настраиваются с помощью конфигуратора system-сonfig-network. Но именно для модемного соединения его использовать неудобно - нельзя указать несколько телефонов дозвона, особую


3.2.2. Проблема с system-config-packages в Fedora 6/7

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

3.2.2. Проблема с system-config-packages в Fedora 6/7 Наверное, вы уже пробовали запускать программу Установка/удаление приложений (меню Приложения) и заметили, что если запустить ее, когда компьютер не подключен к Интернету, программа отказывается работать. И это не удивительно, ведь


4.1.2.2. Конфигуратор system-config-display

Из книги Win2K FAQ (v. 6.0) автора Шашков Алексей

4.1.2.2. Конфигуратор system-config-display Для настройки графической подсистемы используется конфигуратор system-config-display. С его помощью вы можете изменить монитор, видеокарту, разрешение монитора, а также настроить совместную работу двух мониторов. Мы рассмотрим все, кроме настройки


5.2.2. Утилита livna-config-display

Из книги WinXP FAQ (Часто задаваемые вопросы по ОС Windows XP) автора Шашков Алексей

5.2.2. Утилита livna-config-display Кроме стандартного конфигуратора system-config-display, из репозитория livna вы можете установить альтернативный конфигуратор livna-config-display (рис. 5.8). Теперь, когда вы знаете, как настраивать графическую систему X.Оrg вручную (без конфигураторов), думаю, вы без


5.6.1.1. Конфигуратор system-config-display

Из книги UNIX: взаимодействие процессов автора Стивенс Уильям Ричард

5.6.1.1. Конфигуратор system-config-display Самый простой способ настроить совместное использование двух мониторов - это конфигуратор system-config-display. Запустите его и перейдите на вкладку Два монитора (рис. 5.48). Установите флажок опции Два монитора. Рис. 5.48. Конфигуратор system-config-displayДалее


7.5.2. Конфигуратор system-config-firewall

Из книги PGP: Кодирование и шифрование информации с открытым ключом. автора Левин Максим

7.5.2. Конфигуратор system-config-firewall Для настройки брандмауэра используется конфигуратор system-config-firewall. При запуске программа сообщит, что является всего лишь оболочкой и позволяет произвести только базовую настройку брандмауэра (рис. 7.3). Но в нашем простом случае этого будет


Создание файлов *.config сервера

Из книги UNIX: разработка сетевых приложений автора Стивенс Уильям Ричард

Создание файлов *.config сервера Файлы конфигурации на стороне сервера позволяют объявить объекты, которые будут доступны для удаленных вызовов, а также задать параметры канала и порта. Рассмотрим следующий вариант программной логики сервера.// "Жестко" заданная


Настройка Web-приложения ASP.NET с помощью Web.config

Из книги автора

Настройка Web-приложения ASP.NET с помощью Web.config При изучении компоновочных блоков .NET мы с вами выяснили, что приложения клиента могут использовать XML-файл конфигурации, содержащий инструкции CLR о том, как обрабатывать связанные запросы, где искать необходимые компоновочные


(3.14) Существуют ли аналоги autoexec.bat и config.sys под W2k?

Из книги автора

(3.14) Существуют ли аналоги autoexec.bat и config.sys под W2k? Посмотрите C:WINNTSYSTEMautoexec.nt и C:WINNTSYSTEMconfig.nt Hо под W2k эти файлы влияют только на процессы, работающие через NTVDM и на Win32 никакого эффекта не оказывают. Кроме того, при указании путей в autoexec.nt могут некорректно вести себя


(3.34) Существуют ли аналоги autoexec.bat и config.sys под W2k?

Из книги автора

(3.34) Существуют ли аналоги autoexec.bat и config.sys под W2k? Посмотрите C:WINNTsystem32autoexec.nt и C:WINNTsystem32config.nt. Под W2k эти файлы влияют только на процессы, работающие через NTVDM и на Win32 никакого эффекта не оказывают. Кроме того, при указании путей в autoexec.nt могут некорректно вести себя


1.16. Существуют ли аналоги autoexec.bat и config.sys под XP?

Из книги автора

1.16. Существуют ли аналоги autoexec.bat и config.sys под XP? Да. Расположены они в папке C:WINDOWSsystem32, и называются autoexec.nt и config.nt. Эти файлы влияют только на процессы, работающие через NTVDM (эмуляция DOS) и на Win32 никакого эффекта не оказывают. Можно отметить настройку эмуляции Sound Blaster 2.0,


B.2. Заголовочный файл config.h

Из книги автора

B.2. Заголовочный файл config.h Для подготовки пpoгрaмм в этой книге использовалась утилита GNU autoconf, которая помогает сделать их более переносимыми. Она доступна по адресу ftp://prep.ai.mit.edu/pub/gnu. Утилита создает сценарий configure, который следует запустить после того, как вы зaгрyзитe


Установка параметров конфигурации: файл CONFIG.ТХТ

Из книги автора

Установка параметров конфигурации: файл CONFIG.ТХТ PGP имеет ряд параметров, устанавливаемых пользователем, которые могут быть определены в специальном текстовом файле конфигурации с именем "config.txt", в каталоге, на который указывает системная переменная PGPРАТН. Наличие файла


Г.1. Заголовочный файл unp.h

Из книги автора

Г.1. Заголовочный файл unp.h Почти каждая программа в этой книге начинается с подключения заголовочного файла unp.h, показанного в листинге Г.1[1]. Этот файл подключает все стандартные системные заголовочные файлы, необходимые для работы большинства программ, а также некоторые