chiark / gitweb /
Reverse engineer some facts about the storage interface
[inn-innduct.git] / include / config.h.in
1 /* include/config.h.in.  Generated automatically from configure.in by autoheader 2.13.  */
2 /*  $Id: config.h.in 7565 2006-08-28 02:42:54Z eagle $
3 **
4 **  Here be configuration data used by various InterNetNews programs.  This
5 **  file is used as source for the autoheader script, which from it and
6 **  configure.in generates a config.h.in file that will be used by autoconf
7 **  as the repository of all wisdom.
8 **
9 **  Stuff before TOP and after BOTTOM is copied verbatim to config.h.in;
10 **  the rest of this file is in the desired form for autoconfiscation.
11 **  Only stuff that autoconf 2.13 couldn't figure out for itself or that
12 **  needs a larger comment is included here.
13 */
14
15 #ifndef CONFIG_H
16 #define CONFIG_H 1
17
18 /* Portable defines that don't rely on autoconf results come from here. */
19 #include "inn/defines.h"
20
21 /*
22 **  GENERAL SETTINGS
23 **
24 **  Look over these settings and make sure they're correct for your site.
25 **  These values don't come from configure and therefore may need manual
26 **  editing.  The defaults normally should be fine.
27 **
28 **  For boolean #defines, uncomment and change #undef to #define to enable,
29 **  do the reverse to disable.
30 */
31
32 /* A null-terminated list of uwildmat(3) patterns matching illegal
33    distributions.  inews and nnrpd will reject posts with a distribution
34    matching one of these patterns. */
35 #define BAD_DISTRIBS            "*.*", NULL
36
37 /* Default timeout period for ctlinnd, overridden by the -t flag.  If set to
38    zero, ctlinnd will never time out, but will check every two minutes to
39    see if the server is still running so it won't hang forever on a dead
40    server. */
41 #define CTLINND_TIMEOUT         0
42
43 /* Reject articles posted more than this many seconds in the future. */
44 #define DATE_FUZZ               (24L * 60L * 60L)
45
46 /* innd will flush the history and active file after this many seconds. */
47 #define DEFAULT_TIMEOUT         300
48
49 /* Define if inews should put hostnames into the Path header itself. */
50 #define DO_INEWS_PATH
51
52 /* Define if inews should munge the GECOS entry of the passwd file when
53    attempting to determine a poster's real name.  Use this if your GECOS
54    entries have other stuff after trailing commas or before dashes, things
55    in parentheses that aren't part of the name, etc.  See frontends/inews.c
56    for the full algorithm. */
57 #define DO_MUNGE_GECOS
58
59 /* Define if rnews should try to connect to the local host. */
60 #define DO_RNEWSLOCALCONNECT
61
62 /* Define if rnews should syslog articles rejected as duplicates. */
63 /* #undef DO_RNEWS_LOG_DUPS */
64
65 /* Define if rnews should look in _PATH_RNEWSPROGS for batch unpackers. */
66 #define DO_RNEWSPROGS
67
68 /* Define if rnews should save articles rejected by the server. */
69 /* #undef DO_RNEWS_SAVE_BAD */
70
71 /* Value to pass to dbzincore() inside innd.  Under some bizarre low memory
72    circumstance you may want this not to be 1, but normally you always want
73    to load the full history indexes into innd's memory.  Has no effect if
74    using tagged hash (which is always in core). */
75 #define INND_DBZINCORE          1
76
77 /* A null-terminated list of unknown commands that, when seen by innd,
78    shouldn't be logged to syslog.  Normally innd logs all unknown commands,
79    but sometimes some are so frequent that it's not worth it. */
80 #define INND_QUIET_BADLIST      NULL
81
82 /* innd will throttle itself after this many I/O errors.  The count is reset
83    on a ctlinnd go.  (ENOSPC is special and will always cause an immediate
84    throttle.) */
85 #define IO_ERROR_COUNT          50
86
87 /* Length of listen queue for innd. */
88 #define MAXLISTEN               25
89
90 /* The standard NNTP port. */
91 #define NNTP_PORT               119
92
93 /* What to use for a Path tail for local posts. */
94 #define PATHMASTER              "not-for-mail"
95
96
97 /*
98 **  CONFIGURE RESULTS
99 **
100 **  Things determined automatically by autoconf.  Nothing below this point
101 **  should require manual editing; if anything here is wrong, see if you
102 **  should be passing a flag to configure to set it correctly for your
103 **  system.
104 **
105 **  Be aware that success of some tests will cause other tests to be skipped
106 **  since their results aren't then needed.  For example, if you have
107 **  standard C headers, INN won't bother looking for stdlib.h, and
108 **  HAVE_STDLIB_H will be false whether you have it or not.  This is normal.
109 **
110 **  Fodder for autoheader is provided in sort -df order (alphabetical,
111 **  case-insensitive, ignoring punctuation) to make it easier to check
112 **  whether a given entry is in the file.
113 */
114
115 /* Define if on AIX 3.
116    System headers sometimes define this.
117    We just want to avoid a redefinition error message.  */
118 #ifndef _ALL_SOURCE
119 #undef _ALL_SOURCE
120 #endif
121
122 /* Define to empty if the keyword does not work.  */
123 #undef const
124
125 /* Define to `int' if <sys/types.h> doesn't define.  */
126 #undef gid_t
127
128 /* Define if you have a working `mmap' system call.  */
129 #undef HAVE_MMAP
130
131 /* Define if your struct stat has st_blksize.  */
132 #undef HAVE_ST_BLKSIZE
133
134 /* Define if you have <sys/wait.h> that is POSIX.1 compatible.  */
135 #undef HAVE_SYS_WAIT_H
136
137 /* Define to `long' if <sys/types.h> doesn't define.  */
138 #undef off_t
139
140 /* Define to `int' if <sys/types.h> doesn't define.  */
141 #undef pid_t
142
143 /* Define if you need to in order for stat and other things to work.  */
144 #undef _POSIX_SOURCE
145
146 /* Define as the return type of signal handlers (int or void).  */
147 #undef RETSIGTYPE
148
149 /* Define to `unsigned' if <sys/types.h> doesn't define.  */
150 #undef size_t
151
152 /* Define if you have the ANSI C header files.  */
153 #undef STDC_HEADERS
154
155 /* Define if you can safely include both <sys/time.h> and <time.h>.  */
156 #undef TIME_WITH_SYS_TIME
157
158 /* Define if your <sys/time.h> declares struct tm.  */
159 #undef TM_IN_SYS_TIME
160
161 /* Define to `int' if <sys/types.h> doesn't define.  */
162 #undef uid_t
163
164 /* Define if your processor stores words with the most significant
165    byte first (like Motorola and SPARC, unlike Intel and VAX).  */
166 #undef WORDS_BIGENDIAN
167
168 /* Define to a suitable 32-bit type if standard headers don't define.  */
169 #undef int32_t
170
171 /* Define to `long' if <sys/types.h> doesn't define.  */
172 #undef ptrdiff_t
173
174 /* Define to `int' if <signal.h> doesn't define.  */
175 #undef sig_atomic_t
176
177 /* Define to `int' if <sys/socket.h> doesn't define.  */
178 #undef socklen_t
179
180 /* Define to `int' if <sys/types.h> doesn't define.  */
181 #undef ssize_t
182
183 /* Define to a suitable 32-bit type if standard headers don't define.  */
184 #undef uint32_t
185
186 /* Define if you have the atexit function.  */
187 #undef HAVE_ATEXIT
188
189 /* Define if you have the fseeko function.  */
190 #undef HAVE_FSEEKO
191
192 /* Define if you have the ftello function.  */
193 #undef HAVE_FTELLO
194
195 /* Define if you have the getdtablesize function.  */
196 #undef HAVE_GETDTABLESIZE
197
198 /* Define if you have the getloadavg function.  */
199 #undef HAVE_GETLOADAVG
200
201 /* Define if you have the getpagesize function.  */
202 #undef HAVE_GETPAGESIZE
203
204 /* Define if you have the getrlimit function.  */
205 #undef HAVE_GETRLIMIT
206
207 /* Define if you have the getrusage function.  */
208 #undef HAVE_GETRUSAGE
209
210 /* Define if you have the getspnam function.  */
211 #undef HAVE_GETSPNAM
212
213 /* Define if you have the hstrerror function.  */
214 #undef HAVE_HSTRERROR
215
216 /* Define if you have the inet_aton function.  */
217 #undef HAVE_INET_ATON
218
219 /* Define if you have the krb5_init_ets function.  */
220 #undef HAVE_KRB5_INIT_ETS
221
222 /* Define if you have the madvise function.  */
223 #undef HAVE_MADVISE
224
225 /* Define if you have the memcpy function.  */
226 #undef HAVE_MEMCPY
227
228 /* Define if you have the mkstemp function.  */
229 #undef HAVE_MKSTEMP
230
231 /* Define if you have the pread function.  */
232 #undef HAVE_PREAD
233
234 /* Define if you have the pstat function.  */
235 #undef HAVE_PSTAT
236
237 /* Define if you have the pwrite function.  */
238 #undef HAVE_PWRITE
239
240 /* Define if you have the setbuffer function.  */
241 #undef HAVE_SETBUFFER
242
243 /* Define if you have the setenv function.  */
244 #undef HAVE_SETENV
245
246 /* Define if you have the seteuid function.  */
247 #undef HAVE_SETEUID
248
249 /* Define if you have the setgroups function.  */
250 #undef HAVE_SETGROUPS
251
252 /* Define if you have the setrlimit function.  */
253 #undef HAVE_SETRLIMIT
254
255 /* Define if you have the setsid function.  */
256 #undef HAVE_SETSID
257
258 /* Define if you have the sigaction function.  */
259 #undef HAVE_SIGACTION
260
261 /* Define if you have the socketpair function.  */
262 #undef HAVE_SOCKETPAIR
263
264 /* Define if you have the statfs function.  */
265 #undef HAVE_STATFS
266
267 /* Define if you have the statvfs function.  */
268 #undef HAVE_STATVFS
269
270 /* Define if you have the strcasecmp function.  */
271 #undef HAVE_STRCASECMP
272
273 /* Define if you have the strchr function.  */
274 #undef HAVE_STRCHR
275
276 /* Define if you have the strerror function.  */
277 #undef HAVE_STRERROR
278
279 /* Define if you have the strlcat function.  */
280 #undef HAVE_STRLCAT
281
282 /* Define if you have the strlcpy function.  */
283 #undef HAVE_STRLCPY
284
285 /* Define if you have the strncasecmp function.  */
286 #undef HAVE_STRNCASECMP
287
288 /* Define if you have the strspn function.  */
289 #undef HAVE_STRSPN
290
291 /* Define if you have the strtoul function.  */
292 #undef HAVE_STRTOUL
293
294 /* Define if you have the symlink function.  */
295 #undef HAVE_SYMLINK
296
297 /* Define if you have the sysconf function.  */
298 #undef HAVE_SYSCONF
299
300 /* Define if you have the ulimit function.  */
301 #undef HAVE_ULIMIT
302
303 /* Define if you have the <crypt.h> header file.  */
304 #undef HAVE_CRYPT_H
305
306 /* Define if you have the <db1/ndbm.h> header file.  */
307 #undef HAVE_DB1_NDBM_H
308
309 /* Define if you have the <dirent.h> header file.  */
310 #undef HAVE_DIRENT_H
311
312 /* Define if you have the <dlfcn.h> header file.  */
313 #undef HAVE_DLFCN_H
314
315 /* Define if you have the <et/com_err.h> header file.  */
316 #undef HAVE_ET_COM_ERR_H
317
318 /* Define if you have the <gdbm-ndbm.h> header file.  */
319 #undef HAVE_GDBM_NDBM_H
320
321 /* Define if you have the <inttypes.h> header file.  */
322 #undef HAVE_INTTYPES_H
323
324 /* Define if you have the <limits.h> header file.  */
325 #undef HAVE_LIMITS_H
326
327 /* Define if you have the <memory.h> header file.  */
328 #undef HAVE_MEMORY_H
329
330 /* Define if you have the <ndbm.h> header file.  */
331 #undef HAVE_NDBM_H
332
333 /* Define if you have the <ndir.h> header file.  */
334 #undef HAVE_NDIR_H
335
336 /* Define if you have the <pam/pam_appl.h> header file.  */
337 #undef HAVE_PAM_PAM_APPL_H
338
339 /* Define if you have the <stdbool.h> header file.  */
340 #undef HAVE_STDBOOL_H
341
342 /* Define if you have the <stddef.h> header file.  */
343 #undef HAVE_STDDEF_H
344
345 /* Define if you have the <stdint.h> header file.  */
346 #undef HAVE_STDINT_H
347
348 /* Define if you have the <stdlib.h> header file.  */
349 #undef HAVE_STDLIB_H
350
351 /* Define if you have the <string.h> header file.  */
352 #undef HAVE_STRING_H
353
354 /* Define if you have the <strings.h> header file.  */
355 #undef HAVE_STRINGS_H
356
357 /* Define if you have the <sys/bitypes.h> header file.  */
358 #undef HAVE_SYS_BITYPES_H
359
360 /* Define if you have the <sys/dir.h> header file.  */
361 #undef HAVE_SYS_DIR_H
362
363 /* Define if you have the <sys/filio.h> header file.  */
364 #undef HAVE_SYS_FILIO_H
365
366 /* Define if you have the <sys/loadavg.h> header file.  */
367 #undef HAVE_SYS_LOADAVG_H
368
369 /* Define if you have the <sys/mount.h> header file.  */
370 #undef HAVE_SYS_MOUNT_H
371
372 /* Define if you have the <sys/ndir.h> header file.  */
373 #undef HAVE_SYS_NDIR_H
374
375 /* Define if you have the <sys/param.h> header file.  */
376 #undef HAVE_SYS_PARAM_H
377
378 /* Define if you have the <sys/select.h> header file.  */
379 #undef HAVE_SYS_SELECT_H
380
381 /* Define if you have the <sys/sysinfo.h> header file.  */
382 #undef HAVE_SYS_SYSINFO_H
383
384 /* Define if you have the <sys/time.h> header file.  */
385 #undef HAVE_SYS_TIME_H
386
387 /* Define if you have the <sys/vfs.h> header file.  */
388 #undef HAVE_SYS_VFS_H
389
390 /* Define if you have the <unistd.h> header file.  */
391 #undef HAVE_UNISTD_H
392
393 /* The user that INN should run as. */
394 #undef NEWSUSER
395
396 /* The group that INN should run as. */
397 #undef NEWSGRP
398
399 /* The user who gets all INN-related e-mail. */
400 #undef NEWSMASTER
401
402 /* Mode that incoming articles are created with. */
403 #undef ARTFILE_MODE
404
405 /* Mode that batch files are created with. */
406 #undef BATCHFILE_MODE
407
408 /* Mode that directories are created with. */
409 #undef GROUPDIR_MODE
410
411 /* The umask used by all INN programs. */
412 #undef NEWSUMASK
413
414 /* Additional valid low-numbered port for inndstart. */
415 #undef INND_PORT
416
417 /* Define to enable IPv6 support. */
418 #undef HAVE_INET6
419
420 /* Maximum number of sockets that innd can listen on. */
421 #undef MAX_SOCKETS
422
423 /* Define to use tagged hash for the history file. */
424 #undef DO_TAGGED_HASH
425
426 /* Define to 1 to compile in support for keyword generation code. */
427 #undef DO_KEYWORDS
428
429 /* Define to compile in Perl script support. */
430 #undef DO_PERL
431
432 /* Define to compile in Python module support. */
433 #undef DO_PYTHON
434
435 /* Define if you have the setproctitle function. */
436 #undef HAVE_SETPROCTITLE
437
438 /* Define if you have PAM. */
439 #undef HAVE_PAM
440
441 /* Define if BerkeleyDB is available. */
442 #undef USE_BERKELEY_DB
443
444 /* Define if the BerkeleyDB dbm compatibility layer is available. */
445 #undef HAVE_BDB_DBM
446
447 /* Define if you have a dbm library. */
448 #undef HAVE_DBM
449
450 /* Define if OpenSSL is available. */
451 #undef HAVE_SSL
452
453 /* Define if SASL is available. */
454 #undef HAVE_SASL
455
456 /* Define if SASL is available. */
457 #undef HAVE_SASL
458
459 /* Some versions of glibc need this defined for pread/pwrite. */
460 #undef _GNU_SOURCE
461
462 /* Define if <netdb.h> does not declare h_errno. */
463 #undef NEED_HERRNO_DECLARATION
464
465 /* Define if inet_aton isn't declared in the system headers. */
466 #undef NEED_DECLARATION_INET_ATON
467
468 /* Define if inet_ntoa isn't declared in the system headers. */
469 #undef NEED_DECLARATION_INET_NTOA
470
471 /* Define if snprintf isn't declared in the system headers. */
472 #undef NEED_DECLARATION_SNPRINTF
473
474 /* Define if vsnprintf isn't declared in the system headers. */
475 #undef NEED_DECLARATION_VSNPRINTF
476
477 /* Define if the compiler supports C99 variadic macros. */
478 #undef HAVE_C99_VAMACROS
479
480 /* Define if the compiler supports GNU-style variadic macros. */
481 #undef HAVE_GNU_VAMACROS
482
483 /* Define if the compiler supports long long int. */
484 #undef HAVE_LONG_LONG
485
486 /* Define to the max vectors in an iovec. */
487 #undef IOV_MAX
488
489 /* Define if <sys/un.h> defines the SUN_LEN macro. */
490 #undef HAVE_SUN_LEN
491
492 /* Define if your struct tm has a tm_gmtoff member. */
493 #undef HAVE_TM_GMTOFF
494
495 /* Define if your struct tm has a tm_zone member. */
496 #undef HAVE_TM_ZONE
497
498 /* Define if timezone is an external variable in <time.h>. */
499 #undef HAVE_VAR_TIMEZONE
500
501 /* Define if tzname is an external variable in <time.h>. */
502 #undef HAVE_VAR_TZNAME
503
504 /* Define if your system has a working inet_ntoa function. */
505 #undef HAVE_INET_NTOA
506
507 /* Define if your system has a sa_len field in struct sockaddr */
508 #undef HAVE_SOCKADDR_LEN
509
510 /* Define if your system has a SA_LEN(s) macro */
511 #undef HAVE_SA_LEN_MACRO
512
513 /* Define if your system has struct sockaddr_storage */
514 #undef HAVE_SOCKADDR_STORAGE
515
516 /* Define if your system has sockaddr_storage.__ss_family */
517 #undef HAVE_2553_STYLE_SS_FAMILY
518
519 /* Define if your IN6_ARE_ADDR_EQUAL macro is broken */
520 #undef HAVE_BROKEN_IN6_ARE_ADDR_EQUAL
521
522 /* Define if your system has a working snprintf function. */
523 #undef HAVE_SNPRINTF
524
525 /* Define if fpos_t is at least 64 bits and compatible with off_t. */
526 #undef HAVE_LARGE_FPOS_T
527
528 /* Define if you need to call msync after writes. */
529 #undef MMAP_MISSES_WRITES
530
531 /* Define if you need to call msync for calls to read to see changes. */
532 #undef MMAP_NEEDS_MSYNC
533
534 /* Define if your msync function takes three arguments. */
535 #undef HAVE_MSYNC_3_ARG
536
537 /* Define if you have unix domain sockets. */
538 #undef HAVE_UNIX_DOMAIN_SOCKETS
539
540 /* Syslog facility to use for innd logs. */
541 #undef LOG_INN_SERVER
542
543 /* Syslog facility to use for INN program logs. */
544 #undef LOG_INN_PROG
545
546
547
548 /*
549 **  BUFFER SIZES AND DATA LENGTHS
550 **
551 **  You shouldn't need to change any of the following, and changing some of
552 **  them may cause other things to break.  Some standard buffer sizes and
553 **  lengths of data types for various different things.
554 */
555
556 /* The data type to use for article numbers.  This probably can't be
557    increased without a lot of work due to assumptions about the active file
558    format, etc. */
559 typedef unsigned long           ARTNUM;
560
561 /* Input buffers start at START_BUFF_SIZE.  While reading input, if we have
562    less than LOW_WATER bytes left free in the buffer, use the current
563    buffersize as input to GROW_AMOUNT to determine how much to realloc.
564    Growth must be at least NNTP_STRLEN bytes!  The default settings provide
565    aggressive, exponential buffer growth. */
566 #define START_BUFF_SIZE         (4 * 1024)
567 #define LOW_WATER               (1 * 1024)
568 #define GROW_AMOUNT(x)          ((x) < 128 * 1024 ? (x) : 128 * 1024)
569
570 /* The size of a large buffer.  Free dynamically allocated buffers larger
571    than this when we're done with them. */
572 #define BIG_BUFFER              (2 * START_BUFF_SIZE)
573
574 /* The maximum length of a single header, used as a good guess at a buffer
575    size for some header parsing code.  This is currently also used by innd
576    to determine whether to reject a message for an excessively long header;
577    this behavior should be fixed. */
578 #define MAXHEADERSIZE           1024
579
580 /* Default buffer size for outgoing feeds from innd. */
581 #define SITE_BUFFER_SIZE        (16 * 1024)
582
583 /* The size of a small buffer. */
584 #define SMBUF                   256
585
586 /* Maximum size of a pathname in the spool directory. */
587 #define SPOOLNAMEBUFF           512
588
589
590 /*
591 **  LEGACY
592 **
593 **  Everything below this point is here so that parts of INN that haven't
594 **  been tweaked to use more standard constructs don't break.  Don't count
595 **  on any of this staying in this file.  If you have a chance, consider
596 **  following the comments before each item and fixing it.
597 */
598
599 /* Used to send commands to exploders.  Should be moved into a more specific
600    header file; used by innd/site.c and backends/buffchan.c. */
601 #define EXP_CONTROL             '!'
602
603 /* Only used by innd and cvtbatch, should be moved to a more specific header
604    file. */
605 #define FEED_BYTESIZE           'b'
606 #define FEED_FULLNAME           'f'
607 #define FEED_HASH               'h'
608 #define FEED_HDR_DISTRIB        'D'
609 #define FEED_HDR_NEWSGROUP      'N'
610 #define FEED_MESSAGEID          'm'
611 #define FEED_FNLNAMES           '*'
612 #define FEED_HEADERS            'H'
613 #define FEED_NAME               'n'
614 #define FEED_STOREDGROUP        'G'
615 #define FEED_NEWSGROUP          'g'
616 #define FEED_OVERVIEW           'O'
617 #define FEED_PATH               'P'
618 #define FEED_REPLIC             'R'
619 #define FEED_SITE               's'
620 #define FEED_TIMEEXPIRED        'e'
621 #define FEED_TIMERECEIVED       't'
622 #define FEED_TIMEPOSTED         'p'
623
624 /* Maximum number of flags for a feed in newsfeeds.  Only used in innd,
625    should be moved there (or made dynamic). */
626 #define FEED_MAXFLAGS           20
627
628 /* Maximum length of argv vectors used in innd/site.c.  This should be moved
629    out of here into that file, or even better hard-coded rather than
630    defined; this value isn't affected by user data and the right value can
631    be determined by looking at the code and seeing how big of an argv it
632    will attempt to construct. */
633 #define MAX_BUILTIN_ARGV        20
634
635 /* active file flags.  Should be moved to a more specific header file. */
636 #define NF_FLAG_ALIAS           '='
637 #define NF_FLAG_EXCLUDED        'j'
638 #define NF_FLAG_MODERATED       'm'
639 #define NF_FLAG_OK              'y'
640 #define NF_FLAG_NOLOCAL         'n'
641 #define NF_FLAG_IGNORE          'x'
642
643 /* Used for parsing the Newsgroups header.  Should be rolled into a library
644    for parsing headers, combining all the code that's currently scattered
645    all over INN for doing that. */
646 #define NG_SEPARATOR            ","
647 #define NG_ISSEP(c)             ((c) == ',')
648
649 /* There's no reason to make all of these #defines except possibly for
650    L_CC_CMD and even that's a stretch.  Since we're logging to our own
651    distinguished log facility, provided that we spread things out between a
652    reasonable variety of log levels, the sysadmin shouldn't have to change
653    any of this.  (Some of this is arguably wrong; L_NOTICE should be
654    LOG_NOTICE, for example.) */
655
656 /* Flags to use in opening the logs; some programs add LOG_PID. */
657 #define L_OPENLOG_FLAGS         (LOG_CONS | LOG_NDELAY)
658
659 /* Fatal error, program is about to exit. */
660 #define L_FATAL                 LOG_CRIT
661
662 /* Log an error that might mean one or more articles get lost. */
663 #define L_ERROR                 LOG_ERR
664
665 /* Informational notice, usually not worth caring about. */
666 #define L_NOTICE                LOG_WARNING
667
668 /* A protocol trace. */
669 #define L_TRACE                 LOG_DEBUG
670
671 /* All incoming control commands (ctlinnd, etc). */
672 #define L_CC_CMD                LOG_INFO
673
674 #endif /* !CONFIG_H */