ze-filter  (ze-filter-0.8.0-develop-180218)
All Classes Files Functions Variables Typedefs Macros Modules
ze-config.c
Go to the documentation of this file.
1 
2 /*
3  *
4  * ze-filter - Mail Server Filter for sendmail
5  *
6  * Copyright (c) 2001-2018 - Jose-Marcio Martins da Cruz
7  *
8  * Auteur : Jose Marcio Martins da Cruz
9  * jose.marcio.mc@gmail.org
10  *
11  * Historique :
12  * Creation : janvier 2002
13  *
14  * This program is free software, but with restricted license :
15  *
16  *
17  * This program is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20  *
21  * More details about ze-filter license can be found at ze-filter
22  * web site : http://foss.jose-marcio.org
23  */
24 
25 #include <ze-sys.h>
26 
27 #include "ze-filter.h"
28 
29 #undef DEBUG
30 #define DEBUG 0
31 
32 /* ****************************************************************************
33  * *
34  * *
35  **************************************************************************** */
36 
37 #define OPT_REC_INITIALIZER \
38  {FALSE, 0, FALSE, FALSE, NULL, NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE}
39 
41 
42 static char *compileConf[] = {
43 #ifdef _POSIX_SOURCE
44  "_POSIX_SOURCE",
45 #endif
46 #if STDC_HEADERS
47  "STDC_HEADERS",
48 #endif
49 #if TIME_WITH_SYS_TIME
50  "TIME_WITH_SYS_TIME",
51 #endif
52 #if HAVE_INTTYPES_H
53  "HAVE_INTTYPES_H",
54 #endif
55 #if HAVE_THREAD_H
56  "HAVE_THREAD_H",
57 #endif
58 #if HAVE_PTHREAD_H
59  "HAVE_PTHREAD_H",
60 #endif
61 #if HAVE_SYS_PTHREAD_H
62  "HAVE_SYS_PTHREAD_H",
63 #endif
64 #if HAVE_VALUES_H
65  "HAVE_VALUES_H",
66 #endif
67 #if HAVE_LIMITS_H
68  "HAVE_LIMITS_H",
69 #endif
70 #if HAVE_MATH_H
71  "HAVE_MATH_H",
72 #endif
73 #if HAVE_MEMORY_H
74  "HAVE_MEMORY_H",
75 #endif
76 #if HAVE_REGEX_H
77  "HAVE_REGEX_H",
78 #endif
79 #if HAVE_SEARCH_H
80  "HAVE_SEARCH_H",
81 #endif
82 #if HAVE_STDINT_H
83  "HAVE_STDINT_H",
84 #endif
85 #if HAVE_STDARG_H
86  "HAVE_STDARG_H",
87 #endif
88 #if HAVE_STDLIB_H
89  "HAVE_STDLIB_H",
90 #endif
91 #if HAVE_STDBOOL_H
92  "HAVE_STDBOOL_H",
93 #endif
94 #if HAVE_STRING_H
95  "HAVE_STRING_H",
96 #endif
97 #if HAVE_STRINGS_H
98  "HAVE_STRINGS_H",
99 #endif
100 #if HAVE_SYS_TYPES_H
101  "HAVE_SYS_TYPES_H",
102 #endif
103 #if HAVE_SYS_STAT_H
104  "HAVE_SYS_STAT_H",
105 #endif
106 #if HAVE_SYS_TIME_H
107  "HAVE_SYS_TIME_H",
108 #endif
109 #if HAVE_SYS_WAIT_H
110  "HAVE_SYS_WAIT_H",
111 #endif
112 #if HAVE_SYS_RESOURCE_H
113  "HAVE_SYS_RESOURCE_H",
114 #endif
115 #if HAVE_SYS_SOCKET_H
116  "HAVE_SYS_SOCKET_H",
117 #endif
118 #if HAVE_SYS_MMAN_H
119  "HAVE_SYS_MMAN_H",
120 #endif
121 #if HAVE_SYS_SYSINFO_H
122  "HAVE_SYS_SYSINFO_H",
123 #endif
124 #if HAVE_SYS_SYSTEMINFO_H
125  "HAVE_SYS_SYSTEMINFO_H",
126 #endif
127 #if HAVE_SYS_UTSNAME_H
128  "HAVE_SYS_UTSNAME_H",
129 #endif
130 #if HAVE_SYS_UN_H
131  "HAVE_SYS_UN_H",
132 #endif
133 #if HAVE_SYS_SELECT_H
134  "HAVE_SYS_SELECT_H",
135 #endif
136 #if HAVE_POLL_H
137  "HAVE_POLL_H",
138 #endif
139 #if HAVE_SYS_POLL_H
140  "HAVE_SYS_POLL_H",
141 #endif
142 #if HAVE_SYSEXITS_H
143  "HAVE_SYSEXITS_H",
144 #endif
145 #if HAVE_SYS_CDEFS_H
146  "HAVE_SYS_CDEFS_H",
147 #endif
148 #if HAVE_SYSLOG_H
149  "HAVE_SYSLOG_H",
150 #endif
151 #if HAVE_PWD_H
152  "HAVE_PWD_H",
153 #endif
154 #if HAVE_GRP_H
155  "HAVE_GRP_H",
156 #endif
157 #if HAVE_UNISTD_H
158  "HAVE_UNISTD_H",
159 #endif
160 #if HAVE_FCNTL_H
161  "HAVE_FCNTL_H",
162 #endif
163 #if HAVE_DIRENT_H
164  "HAVE_DIRENT_H",
165 #endif
166 #if HAVE_SIGNAL_H
167  "HAVE_SIGNAL_H",
168 #endif
169 #if HAVE_CTYPE_H
170  "HAVE_CTYPE_H",
171 #endif
172 #if HAVE_NETDB_H
173  "HAVE_NETDB_H",
174 #endif
175 #if HAVE_NETINET_IN_H
176  "HAVE_NETINET_IN_H",
177 #endif
178 #if HAVE_ARPA_INET_H
179  "HAVE_ARPA_INET_H",
180 #endif
181 #if HAVE_ARPA_NAMESER_H
182  "HAVE_ARPA_NAMESER_H",
183 #endif
184 #if HAVE_RESOLV_H
185  "HAVE_RESOLV_H",
186 #endif
187 #if HAVE_SYS_LOADAVG_H
188  "HAVE_SYS_LOADAVG_H",
189 #endif
190 #if HAVE_DLFCN_H
191  "HAVE_DLFCN_H",
192 #endif
193 #if HAVE_LINK_H
194  "HAVE_LINK_H",
195 #endif
196 #if HAVE_KVM_H
197  "HAVE_KVM_H",
198 #endif
199 #if HAVE_SYS_DKSTAT_H
200  "HAVE_SYS_DKSTAT_H",
201 #endif
202 
203 #if HAVE_DB_H
204  "HAVE_DB_H",
205 #endif
206 #if HAVE_NDBM_H
207  "HAVE_NDBM_H",
208 #endif
209 #if HAVE_GDBM_H
210  "HAVE_GDBM_H",
211 #endif
212 #if HAVE_LIBMILTER_MFDEF_H
213  "HAVE_LIBMILTER_MFDEF_H",
214 #endif
215 #if HAVE_MFAPI_H
216  "HAVE_MFAPI_H",
217 #endif
218 #if HAVE_MFDEF_H
219  "HAVE_MFDEF_H",
220 #endif
221 
222 #if HAVE_BOOL
223  "HAVE_BOOL",
224 #endif
225 #if HAVE__BOOL
226  "HAVE__BOOL",
227 #endif
228 #if HAVE_LONG_LONG
229  "HAVE_LONG_LONG",
230 #endif
231 #if HAVE_UCHAR
232  "HAVE_UCHAR",
233 #endif
234 #if HAVE_INT8_T
235  "HAVE_INT8_T",
236 #endif
237 #if HAVE_UINT8_T
238  "HAVE_UINT8_T",
239 #endif
240 #if HAVE_INT16_T
241  "HAVE_INT16_T",
242 #endif
243 #if HAVE_UINT16_T
244  "HAVE_UINT16_T",
245 #endif
246 #if HAVE_INT32_T
247  "HAVE_INT32_T",
248 #endif
249 #if HAVE_INT64_T
250  "HAVE_INT64_T",
251 #endif
252 #if HAVE_UINT32_T
253  "HAVE_UINT32_T",
254 #endif
255 #if HAVE_UINT64_T
256  "HAVE_UINT64_T",
257 #endif
258 #if HAVE_U_INT32_T
259  "HAVE_U_INT32_T",
260 #endif
261 #if HAVE_SIZE_T
262  "HAVE_SIZE_T",
263 #endif
264 #if HAVE_SSIZE_T
265  "HAVE_SSIZE_T",
266 #endif
267 #if HAVE_SOCKET_T
268  "HAVE_SOCKET_T",
269 #endif
270 #if HAVE_SOCKLEN_T
271  "HAVE_SOCKLEN_T",
272 #endif
273 #if HAVE_STRUCT_ADDRINFO
274  "HAVE_STRUCT_ADDRINFO",
275 #endif
276 #if HAVE_STRUCT_SOCKADDR
277  "HAVE_STRUCT_SOCKADDR",
278 #endif
279 #if HAVE_STRUCT_SOCKADDR_IN
280  "HAVE_STRUCT_SOCKADDR_IN",
281 #endif
282 #if HAVE_STRUCT_SOCKADDR_IN6
283  "HAVE_STRUCT_SOCKADDR_IN6",
284 #endif
285 #if HAVE_STRUCT_SOCKADDR_UN
286  "HAVE_STRUCT_SOCKADDR_UN",
287 #endif
288 #if HAVE_MODE_T
289  "HAVE_MODE_T",
290 #endif
291 #if HAVE_OFF_T
292  "HAVE_OFF_T",
293 #endif
294 #if HAVE_GID_T
295  "HAVE_GID_T",
296 #endif
297 #if HAVE_UID_T
298  "HAVE_UID_T",
299 #endif
300 #if HAVE_PID_T
301  "HAVE_PID_T",
302 #endif
303 #if HAVE_PTHREAD_MUTEX_T
304  "HAVE_PTHREAD_MUTEX_T",
305 #endif
306 #if HAVE_PTHREAD_RWLOCK_T
307  "HAVE_PTHREAD_RWLOCK_T",
308 #endif
309 #if HAVE_MUTEX_INITIALIZER
310  "HAVE_MUTEX_INITIALIZER",
311 #endif
312 
313 
314 #if HAVE_HRTIME_T
315  "HAVE_HRTIME_T",
316 #endif
317 #if HAVE_IN_ADDR_T
318  "HAVE_IN_ADDR_T",
319 #endif
320 #if HAVE_IN6_ADDR_T
321  "HAVE_IN6_ADDR_T",
322 #endif
323 #if HAVE_STRUCT_IN_ADDR
324  "HAVE_STRUCT_IN_ADDR",
325 #endif
326 #if HAVE_STRUCT_IN6_ADDR
327  "HAVE_STRUCT_IN6_ADDR",
328 #endif
329 #if RETSIGTYPE
330  "RETSIGTYPE",
331 #endif
332 
333 #if HAVE_LIBCOMPAT
334  "HAVE_LIBCOMPAT",
335 #endif
336 #if HAVE_LIBMILTER
337  "HAVE_LIBMILTER",
338 #endif
339 #if HAVE_LIBMILTER_MFAPI_H
340  "HAVE_LIBMILTER_MFAPI_H",
341 #endif
342 #if HAVE_LIBNSL
343  "HAVE_LIBNSL",
344 #endif
345 #if HAVE_LIBPTHREAD
346  "HAVE_LIBPTHREAD",
347 #endif
348 #if HAVE_LIBRESOLV
349  "HAVE_LIBRESOLV",
350 #endif
351 #if HAVE_LIBDB
352  "HAVE_LIBDB",
353 #endif
354 #if HAVE_LIBGDBM
355  "HAVE_LIBGDBM",
356 #endif
357 #if HAVE_LIBNDBM
358  "HAVE_LIBNDBM",
359 #endif
360 #if HAVE_LIBSM
361  "HAVE_LIBSM",
362 #endif
363 #if HAVE_LIBSOCKET
364  "HAVE_LIBSOCKET",
365 #endif
366 #if HAVE_LIBKSTAT
367  "HAVE_LIBKSTAT",
368 #endif
369 #if HAVE_LIBRT
370  "HAVE_LIBRT",
371 #endif
372 #if HAVE_LIBDL
373  "HAVE_LIBDL",
374 #endif
375 #if HAVE_LIBDLD
376  "HAVE_LIBDLD",
377 #endif
378 #if HAVE_LIBKVM
379  "HAVE_LIBKVM",
380 #endif
381 
382 
383 #if HAVE_MAX
384  "HAVE_MAX",
385 #endif
386 #if HAVE_GETHOSTNAME
387  "HAVE_GETHOSTNAME",
388 #endif
389 #if HAVE_GETHOSTBYADDR
390  "HAVE_GETHOSTBYADDR",
391 #endif
392 #if HAVE_GETHOSTBYADDR_R
393  "HAVE_GETHOSTBYADDR_R",
394 #endif
395 #if HAVE_GETHOSTBYNAME
396  "HAVE_GETHOSTBYNAME",
397 #endif
398 #if HAVE_GETHOSTBYNAME_R
399  "HAVE_GETHOSTBYNAME_R",
400 #endif
401 #if HAVE_GETIPNODEBYADDR
402  "HAVE_GETIPNODEBYADDR",
403 #endif
404 #if HAVE_GETIPNODEBYNAME
405  "HAVE_GETIPNODEBYNAME",
406 #endif
407 #if HAVE_SYSCTLBYNAME
408  "HAVE_SYSCTLBYNAME",
409 #endif
410 
411 #if HAVE_RES_NQUERY
412  "HAVE_RES_NQUERY",
413 #endif
414 #if HAVE_RES_NQUERYDOMAIN
415  "HAVE_RES_NQUERYDOMAIN",
416 #endif
417 #if HAVE_RES_QUERY
418  "HAVE_RES_QUERY",
419 #endif
420 #if HAVE_HOSTS_CTL
421  "HAVE_HOSTS_CTL",
422 #endif
423 #if HAVE_RES_QUERYDOMAIN
424  "HAVE_RES_QUERYDOMAIN",
425 #endif
426 
427 #if HAVE_FREEADDRINFO
428  "HAVE_FREEADDRINFO",
429 #endif
430 #if HAVE_GETADDRINFO
431  "HAVE_GETADDRINFO",
432 #endif
433 #if HAVE_GETNAMEINFO
434  "HAVE_GETNAMEINFO",
435 #endif
436 
437 #if HAVE_INET_ADDR
438  "HAVE_INET_ADDR",
439 #endif
440 #if HAVE_INET_NTOA
441  "HAVE_INET_NTOA",
442 #endif
443 #if HAVE_INET_ATON
444  "HAVE_INET_ATON",
445 #endif
446 #if HAVE_INET_NTOP
447  "HAVE_INET_NTOP",
448 #endif
449 #if HAVE_INET_PTON
450  "HAVE_INET_PTON",
451 #endif
452 #if HAVE_GETRUSAGE
453  "HAVE_GETRUSAGE",
454 #endif
455 #if HAVE_GETRLIMIT
456  "HAVE_GETRLIMIT",
457 #endif
458 #if HAVE_SETRLIMIT
459  "HAVE_SETRLIMIT",
460 #endif
461 #if HAVE_MEMCPY
462  "HAVE_MEMCPY",
463 #endif
464 #if HAVE_ALLOCA
465  "HAVE_ALLOCA",
466 #endif
467 
468 #if HAVE_REGCOMP
469  "HAVE_REGCOMP",
470 #endif
471 #if HAVE_SOCKET
472  "HAVE_SOCKET",
473 #endif
474 #if HAVE_SELECT
475  "HAVE_SELECT",
476 #endif
477 #if HAVE_POLL
478  "HAVE_POLL",
479 #endif
480 #if HAVE_SOCKETPAIR
481  "HAVE_SOCKETPAIR",
482 #endif
483 
484 #if HAVE_PTHREAD_SETCONCURRENCY
485  "HAVE_PTHREAD_SETCONCURRENCY",
486 #endif
487 #if HAVE_THR_SETCONCURRENCY
488  "HAVE_THR_SETCONCURRENCY",
489 #endif
490 #if HAVE_PTHREAD_ATTR_INIT
491  "HAVE_PTHREAD_ATTR_INIT",
492 #endif
493 #if HAVE_PTHREAD_ATTR_GETSTACKSIZE
494  "HAVE_PTHREAD_ATTR_GETSTACKSIZE",
495 #endif
496 #if HAVE_PTHREAD_ATTR_SETSTACKSIZE
497  "HAVE_PTHREAD_ATTR_SETSTACKSIZE",
498 #endif
499 #if HAVE_PTHREAD_RWLOCK_UNLOCK
500  "HAVE_PTHREAD_RWLOCK_UNLOCK",
501 #endif
502 #if HAVE_PTHREAD_RWLOCK_WRLOCK
503  "HAVE_PTHREAD_RWLOCK_WRLOCK",
504 #endif
505 #if HAVE_PTHREAD_RWLOCK_RDLOCK
506  "HAVE_PTHREAD_RWLOCK_RDLOCK",
507 #endif
508 
509 #if HAVE_STRCHR
510  "HAVE_STRCHR",
511 #endif
512 #if HAVE_STRTOL
513  "HAVE_STRTOL",
514 #endif
515 #if HAVE_STRCSPN
516  "HAVE_STRCSPN",
517 #endif
518 #if HAVE_STRDUP
519  "HAVE_STRDUP",
520 #endif
521 #if HAVE_STRERROR
522  "HAVE_STRERROR",
523 #endif
524 #if HAVE_STRFTIME
525  "HAVE_STRFTIME",
526 #endif
527 #if HAVE_CTIME
528  "HAVE_CTIME",
529 #endif
530 #if HAVE_CTIME_R
531  "HAVE_CTIME_R",
532 #endif
533 #if HAVE_STRLCPY
534  "HAVE_STRLCPY",
535 #endif
536 #if HAVE_STRSPN
537  "HAVE_STRSPN",
538 #endif
539 #if HAVE_STRSTR
540  "HAVE_STRSTR",
541 #endif
542 #if HAVE_VSNPRINTF
543  "HAVE_VSNPRINTF",
544 #endif
545 #if HAVE_VSPRINTF
546  "HAVE_VSPRINTF",
547 #endif
548 #if HAVE_MKSTEMP
549  "HAVE_MKSTEMP",
550 #endif
551 #if HAVE_MKTEMP
552  "HAVE_MKTEMP",
553 #endif
554 #if HAVE_OPENDIR
555  "HAVE_OPENDIR",
556 #endif
557 #if HAVE_READDIR
558  "HAVE_READDIR",
559 #endif
560 #if HAVE_READDIR_R
561  "HAVE_READDIR_R",
562 #endif
563 #if HAVE_MMAP
564  "HAVE_MMAP",
565 #endif
566 #if HAVE_MUNMAP
567  "HAVE_MUNMAP",
568 #endif
569 #if HAVE_PATH_MAX
570  "HAVE_PATH_MAX",
571 #endif
572 #if HAVE_SHM_OPEN
573  "HAVE_SHM_OPEN",
574 #endif
575 #if HAVE_SHM_UNLINK
576  "HAVE_SHM_UNLINK",
577 #endif
578 #if HAVE_SYSCONF
579  "HAVE_SYSCONF",
580 #endif
581 #if HAVE_SYSINFO
582  "HAVE_SYSINFO",
583 #endif
584 #if HAVE_UNAME
585  "HAVE_UNAME",
586 #endif
587 #if HAVE_FTRUNCATE
588  "HAVE_FTRUNCATE",
589 #endif
590 #if HAVE_PREAD
591  "HAVE_PREAD",
592 #endif
593 #if HAVE_PWRITE
594  "HAVE_PWRITE",
595 #endif
596 #if HAVE_ERF
597  "HAVE_ERF",
598 #endif
599 #if HAVE_ERFC
600  "HAVE_ERFC",
601 #endif
602 #if HAVE_ERFI
603  "HAVE_ERFI",
604 #endif
605 #if NEED_SM_SNPRINTF
606  "NEED_SM_SNPRINTF",
607 #endif
608 #if HAVE_GETLOADAVG
609  "HAVE_GETLOADAVG",
610 #endif
611 
612 #if HAVE_KSTAT_CLOSE
613  "HAVE_KSTAT_CLOSE",
614 #endif
615 #if HAVE_KSTAT_H
616  "HAVE_KSTAT_H",
617 #endif
618 #if HAVE_KSTAT_OPEN
619  "HAVE_KSTAT_OPEN",
620 #endif
621 #if HAVE_KSTAT_READ
622  "HAVE_KSTAT_READ",
623 #endif
624 #if HAVE_KSTAT_LOOKUP
625  "HAVE_KSTAT_LOOKUP",
626 #endif
627 
628 
629 #if HAVE_LSTAT
630  "HAVE_LSTAT",
631 #endif
632 #if HAVE_STAT
633  "HAVE_STAT",
634 #endif
635 #if HAVE_FCHMOD
636  "HAVE_FCHMOD",
637 #endif
638 
639 #if HAVE_CLOCK
640  "HAVE_CLOCK",
641 #endif
642 #if HAVE_TIME
643  "HAVE_TIME",
644 #endif
645 #if HAVE_SLEEP
646  "HAVE_SLEEP",
647 #endif
648 #if HAVE_USLEEP
649  "HAVE_USLEEP",
650 #endif
651 #if HAVE_GETHRTIME
652  "HAVE_GETHRTIME",
653 #endif
654 
655 #if HAVE_LIBPCRE
656  "HAVE_LIBPCRE",
657 #endif
658 #if HAVE_PCRE_H
659  "HAVE_PCRE_H",
660 #endif
661 
662 #if HAVE_LIBCLAMAV
663  "HAVE_LIBCLAMAV",
664 #endif
665 #if HAVE_CLAMAV_H
666  "HAVE_CLAMAV_H",
667 #endif
668 
669 #if HAVE_SMFI_SETBACKLOG
670  "HAVE_SMFI_SETBACKLOG",
671 #endif
672 #if HAVE_SMFI_SIGNAL
673  "HAVE_SMFI_SIGNAL",
674 #endif
675 #if HAVE_SMFI_STOP
676  "HAVE_SMFI_STOP",
677 #endif
678 #if HAVE_SMFI_OPENSOCKET
679  "HAVE_SMFI_OPENSOCKET",
680 #endif
681 #if HAVE_SMFI_PROGRESS
682  "HAVE_SMFI_PROGRESS",
683 #endif
684 #if HAVE_SMFI_QUARANTINE
685  "HAVE_SMFI_QUARANTINE",
686 #endif
687 
688 #if HAVE_DBM_DB
689  "HAVE_DBM_DB",
690 #endif
691 #if HAVE_DBM_NDBM
692  "HAVE_DBM_NDBM",
693 #endif
694 #if HAVE_DBM_GDBM
695  "HAVE_DBM_GDBM",
696 #endif
697 
698 #if HAVE_DECL_POLLERR
699  "HAVE_DECL_POLLERR",
700 #endif
701 #if HAVE_DECL_POLLHUP
702  "HAVE_DECL_POLLHUP",
703 #endif
704 #if HAVE_DECL_POLLIN
705  "HAVE_DECL_POLLIN",
706 #endif
707 #if HAVE_DECL_POLLNVAL
708  "HAVE_DECL_POLLNVAL",
709 #endif
710 #if HAVE_DECL_POLLOUT
711  "HAVE_DECL_POLLOUT",
712 #endif
713 #if HAVE_DECL_POLLPRI
714  "HAVE_DECL_POLLPRI",
715 #endif
716 #if HAVE_DECL_FCHMOD
717  "HAVE_DECL_FCHMOD",
718 #endif
719 #if HAVE_DECL_PREAD
720  "HAVE_DECL_PREAD",
721 #endif
722 #if HAVE_DECL_PWRITE
723  "HAVE_DECL_PWRITE",
724 #endif
725 #if HAVE_DECL_STRLCPY
726  "HAVE_DECL_STRLCPY",
727 #endif
728 
729 
730 #if HAVE_DECL___FUNCTION__
731  "HAVE_DECL___FUNCTION__",
732 #endif
733 #if HAVE_DECL___FUNC__
734  "HAVE_DECL___FUNC__",
735 #endif
736 #if HAVE_DECL___PRETTY_FUNCTION__
737  "HAVE_DECL___PRETTY_FUNCTION__",
738 #endif
739 
740  NULL
741 };
742 
743 /* ****************************************************************************
744  * *
745  * *
746  **************************************************************************** */
747 void
749  int fd;
750 {
751  char str[256];
752  char **s;
753  struct rlimit rlp;
754 
755 #if 0
756  if (fd < 0)
757  fd = STDOUT_FILENO;
758 #endif
759 
760  FD_PRINTF(fd, "Joe's ze-filter configuration : %s\n", PACKAGE);
761 
762  if (cf_opt.arg_v > 1) {
763 
764  FD_PRINTF(fd, "\n");
765  FD_PRINTF(fd, "---> ze-filter compile-time configuration\n");
766  FD_PRINTF(fd, " Compiled on %s %s\n", __DATE__, __TIME__);
767  FD_PRINTF(fd, " %s\n\n", UNAME);
768 
769  s = compileConf;
770  *str = '\0';
771  while (*s) {
772  sprintf(str, "%s %-26s", str, *s);
773  if (strlen(str) > 48) {
774  FD_PRINTF(fd, " %s\n", str);
775  *str = '\0';
776  }
777  s++;
778  }
779  FD_PRINTF(fd, " %s\n\n", str);
780  FD_PRINTF(fd, " RUN_AS_USER : %s\n", RUN_AS_USER);
781  FD_PRINTF(fd, " RUN_AS_GROUP : %s\n", RUN_AS_GROUP);
782  FD_PRINTF(fd, " \n");
783  }
784 
785  FD_PRINTF(fd, "--> ze-filter command line options\n");
786  *str = '\0';
787  if (cf_opt.arg_h) {
788  strcat(str, " -h");
789  }
790  if (cf_opt.arg_v) {
791  strcat(str, " -v");
792  }
793  FD_PRINTF(fd, "\n");
794 
795  if (cf_opt.arg_p != NULL) {
796  strcat(str, " -p ");
797  strcat(str, cf_opt.arg_p);
798  }
799  if (cf_opt.arg_i != NULL) {
800  strcat(str, " -i ");
801  strcat(str, cf_opt.arg_i);
802  }
803  if (cf_opt.arg_u != NULL) {
804  strcat(str, " -u ");
805  strcat(str, cf_opt.arg_u);
806  }
807  if (cf_opt.arg_c != NULL) {
808  strcat(str, " -c ");
809  strcat(str, cf_opt.arg_c);
810  }
811  if (cf_opt.arg_l != NULL) {
812  strcat(str, " -l ");
813  strcat(str, cf_opt.arg_l);
814  }
815  if (strlen(str) > 0)
816  FD_PRINTF(fd, " %s\n", str);
817 
818  FD_PRINTF(fd, "\n");
819  FD_PRINTF(fd, "---> Configuration file options : \n");
820  cf_dump(fd, cf_opt.arg_v > 1);
821 
822  *str = '\0';
823  FD_PRINTF(fd, " FILE NAME EXTENSIONS :\n");
825  FD_PRINTF(fd, "\n");
826 
827 #if HAVE_GETRLIMIT
828  if (getrlimit(RLIMIT_NOFILE, &rlp) == 0) {
829  FD_PRINTF(fd, " RLIMIT_NOFILE : %6ld (soft) - %6ld (hard)\n",
830  (long) rlp.rlim_cur, (long) rlp.rlim_max);
831  FD_PRINTF(fd, " FD_SETSIZE : %6ld\n", (long) FD_SETSIZE);
832  FD_PRINTF(fd, " USE_SELECT_LIMIT : %6s\n",
833  cf_get_int(CF_USE_SELECT_LIMIT) == OPT_YES ? "YES" : "NO");
834  }
835 #endif
836  FD_PRINTF(fd, "\n");
837 }
char * arg_p
Definition: ze-config.h:44
char * arg_l
Definition: ze-config.h:48
OPT_REC_T cf_opt
Definition: ze-config.c:40
#define OPT_YES
Definition: ze-cf.h:45
#define FD_PRINTF(fdp,...)
Definition: macros.h:45
int cf_get_int(int id)
Definition: ze-cf.c:803
char * arg_c
Definition: ze-config.h:47
#define UNAME
Definition: defs.h:73
#define OPT_REC_INITIALIZER
Definition: ze-config.c:37
bool arg_h
Definition: ze-config.h:38
char * arg_u
Definition: ze-config.h:46
#define CF_USE_SELECT_LIMIT
Definition: cfh-defs.h:42
#define RUN_AS_GROUP
Definition: defs.h:28
int arg_v
Definition: ze-config.h:39
char * arg_i
Definition: ze-config.h:45
#define RUN_AS_USER
Definition: defs.h:25
void dump_j_conf(int fd)
Definition: ze-config.c:748
#define PACKAGE
Definition: version.h:28
void cf_dump(int, bool)
Definition: ze-cf.c:214
void list_filename_extensions(int fd)
Definition: ze-fileexp.c:298