Читаем Программирование для Linux. Профессиональный подход полностью

/*** Символические константы файла common.c. ********************/


/* Имя программы. */

extern const char* program_name;


/* Если не равна нулю, отображаются развернутые сообщения. */

extern int verbose;


/* Напоминает функцию malloc(), не прерывает работу программы,

   если выделить память не удалось. */

extern void* xmalloc(size_t size);


/* Напоминает функцию realloc(), но прерывает работу программы,

   если выделить память не удалось */

extern void* xrealloc(void* ptr, size_t size);


/* Напоминает функцию strdup(), но прерывает работу программы,

   если выделить память не удалось. */

extern char* xstrdup(const char* s);


/* Выводит сообщение об ошибке заданного системного вызова

   и завершает работу программы. */

extern void system_error(const char* operation);


/* Выводит сообщение об ошибке и завершает работу программы. */

extern void error(const char* cause, const char* message);


/* Возвращает имя каталога, содержащего исполняемый файл

   программы. Поскольку возвращается указатель на область памяти,

   вызывающая подпрограмма должна удалить ее с помощью

   функции free(). В случае неудачи выполнение программы

   завершается. */

extern char* get_self_executable_directory();


/*** Символические константы файла module.с *********************/


/* Экземпляр загруженного серверного модуля. */

struct server_module {

 /* Дескриптор библиотеки, в которой находится модуль. */

 void* handle;

 /* Описательное имя модуля. */

 const char* name;

 /* Функция, генерирующая HTML-код для модуля. */

 void (*generatе_function)(int);

};


/* Каталог, из которого загружаются модули. */

extern char* module_dir;


/* Функция, пытающаяся загрузить указанный серверный модуль.

   Если модуль существует, возвращается структура

   с его описанием, в противном случае возвращается NULL. */

extern struct server_module* module_open(const char* module_path);


/* Закрытие модуля и удаление объекта MODULE. */

extern void module_close(struct server_module* module);


/*** Символические константы файла server.c. ********************/


/* Запуск сервера по адресу LOCAL_ADDRESS и порту PORT. */

extern void server_run(struct in_addr local_address, uint16_t port);


#endif /* SERVER_H */

11.2.1. Общие функции

Файл common.c (листинг 11.2) содержит функции общего назначения, используемые в разных частях программы.

Листинг 11.2. (common.c) Функции общего назначения

#include

#include

#include

#include

#include

#include "server.h"


const char* program_name;

int verbose;


void* xmalloc(size_t size) {

 void* ptr = malloc(size);

 /* Аварийное завершение, если выделить память не удалось. */

 if (ptr == NULL)

  abort();

 else

  return ptr;

}


void* xrealloc(void* ptr, size_t size) {

Перейти на страницу:

Похожие книги

1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных