a_go_evaluate(): fix un/signed comparison
[s-mailx.git] / config.h
blob46a30d2d62df1ea7ed4dd017d45e4328019d1fad
1 /*@ S-nail - a mail user agent derived from Berkeley Mail.
2 *@ Some constants etc. for which adjustments may be desired.
3 *@ This is included after all the (system) headers.
5 * Copyright (c) 2000-2004 Gunnar Ritter, Freiburg i. Br., Germany.
6 * Copyright (c) 2012 - 2018 Steffen (Daode) Nurpmeso <steffen@sdaoden.eu>.
7 */
8 /*
9 * Copyright (c) 1980, 1993
10 * The Regents of the University of California. All rights reserved.
12 * Redistribution and use in source and binary forms, with or without
13 * modification, are permitted provided that the following conditions
14 * are met:
15 * 1. Redistributions of source code must retain the above copyright
16 * notice, this list of conditions and the following disclaimer.
17 * 2. Redistributions in binary form must reproduce the above copyright
18 * notice, this list of conditions and the following disclaimer in the
19 * documentation and/or other materials provided with the distribution.
20 * 3. Neither the name of the University nor the names of its contributors
21 * may be used to endorse or promote products derived from this software
22 * without specific prior written permission.
24 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
25 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 * SUCH DAMAGE.
36 #ifndef n_CONFIG_H
37 # define n_CONFIG_H
39 #define ACCOUNT_NULL "null" /* Name of "null" account */
40 #define DOTLOCK_TRIES 5 /* Number of open(2) calls for dotlock */
41 #define FILE_LOCK_TRIES 10 /* Maximum tries before n_file_lock() fails */
42 #define FILE_LOCK_MILLIS 200 /* If UIZ_MAX, fall back to that */
43 #define n_ERROR "ERROR" /* Is-error? Also as n_error[] */
44 #define ERRORS_MAX 1000 /* Maximum error ring entries TODO configable*/
45 #define n_ESCAPE "~" /* Default escape for sending (POSIX) */
46 #define FTMP_OPEN_TRIES 10 /* Maximum number of Ftmp() open(2) tries */
47 #define n_FORWARD_INJECT_HEAD "-------- Original Message --------\n" /* DOC! */
48 #define n_FORWARD_INJECT_TAIL NULL /* DOC! */
49 #define HSHSIZE 23 /* Hash prime TODO make dynamic, obsolete */
50 #define n_IMAP_DELIM "/." /* Directory separator ([0] == replacer, too) */
51 #define n_MAILDIR_SEPARATOR ':' /* Flag separator character */
52 #define n_MAXARGC 512 /* Maximum list of raw strings TODO dyn vector! */
53 #define n_ALIAS_MAXEXP 25 /* Maximum expansion of aliases */
54 #define n_PATH_DEVNULL "/dev/null" /* Note: manual uses /dev/null as such */
55 #define n_QUOTE_INJECT_HEAD "%f wrote:\n\n" /* DOC! */
56 #define n_QUOTE_INJECT_TAIL NULL /* DOC! */
57 #define REFERENCES_MAX 20 /* Maximum entries in References: */
58 #define n_SIGSUSPEND_NOT_WAITPID 1 /* Not waitpid(2), but sigsuspend(2) */
59 #define n_UNIREPL "\xEF\xBF\xBD" /* Unicode replacement 0xFFFD in UTF-8 */
60 #define n_VEXPR_REGEX_MAX 16 /* Maximum address. `vexpr' regex(7) matches */
62 /* * */
64 /* Fallback MIME charsets, if *charset-7bit* and *charset-8bit* are not set.
65 * Note: must be lowercase!
66 * (Keep in SYNC: ./nail.1:"Character sets", ./config.h:CHARSET_*!) */
67 #define CHARSET_7BIT "us-ascii"
68 #ifdef HAVE_ICONV
69 # define CHARSET_8BIT "utf-8"
70 # define CHARSET_8BIT_OKEY charset_8bit
71 #else
72 # if defined HAVE_ALWAYS_UNICODE_LOCALE
73 # define CHARSET_8BIT "utf-8"
74 # else
75 # define CHARSET_8BIT "iso-8859-1"
76 # endif
77 # define CHARSET_8BIT_OKEY ttycharset
78 #endif
80 #ifndef HOST_NAME_MAX
81 # ifdef _POSIX_HOST_NAME_MAX
82 # define HOST_NAME_MAX _POSIX_HOST_NAME_MAX
83 # else
84 # define HOST_NAME_MAX 255
85 # endif
86 #endif
88 /* Supported IDNA implementations */
89 #define n_IDNA_IMPL_LIBIDN2 0
90 #define n_IDNA_IMPL_LIBIDN 1
91 #define n_IDNA_IMPL_IDNKIT 2 /* 1 + 2 */
93 /* Max readable line width TODO simply use BUFSIZ? */
94 #if BUFSIZ + 0 > 2560
95 # define LINESIZE BUFSIZ
96 #else
97 # define LINESIZE 2560
98 #endif
99 #define BUFFER_SIZE (BUFSIZ >= (1u << 13) ? BUFSIZ : (1u << 14))
101 /* Auto-reclaimed memory storage: size of the buffers. Maximum auto-reclaimed
102 * storage is that value /2, which is n_CTA()ed to be > 1024 */
103 #define n_MEMORY_AUTOREC_SIZE 0x2000u
104 /* Ugly, but avoid dynamic allocation for the management structure! */
105 #define n_MEMORY_POOL_TYPE_SIZEOF (7 * sizeof(void*))
107 /* Default *mime-encoding* as enum mime_enc */
108 #define MIME_DEFAULT_ENCODING MIMEE_QP
110 /* Maximum allowed line length in a mail before QP folding is necessary), and
111 * the real limit we go for */
112 #define MIME_LINELEN_MAX 998 /* Plus CRLF */
113 #define MIME_LINELEN_LIMIT (MIME_LINELEN_MAX - 48)
115 /* Ditto, SHOULD */
116 #define MIME_LINELEN 78 /* Plus CRLF */
118 /* And in headers which contain an encoded word according to RFC 2047 there is
119 * yet another limit; also RFC 2045: 6.7, (5). */
120 #define MIME_LINELEN_RFC2047 76
122 /* TODO PATH_MAX: fixed-size buffer is always wrong (think NFS) */
123 #ifndef PATH_MAX
124 # ifdef MAXPATHLEN
125 # define PATH_MAX MAXPATHLEN
126 # else
127 # define PATH_MAX 1024 /* _XOPEN_PATH_MAX POSIX 2008/Cor 1-2013 */
128 # endif
129 #endif
131 /* Some environment variables for pipe hooks etc. */
132 #define n_PIPEENV_FILENAME "MAILX_FILENAME"
133 #define n_PIPEENV_FILENAME_GENERATED "MAILX_FILENAME_GENERATED"
134 #define n_PIPEENV_FILENAME_TEMPORARY "MAILX_FILENAME_TEMPORARY"
135 #define n_PIPEENV_CONTENT "MAILX_CONTENT"
136 #define n_PIPEENV_CONTENT_EVIDENCE "MAILX_CONTENT_EVIDENCE"
137 #define n_PIPEENV_EXTERNAL_BODY_URL "MAILX_EXTERNAL_BODY_URL"
139 /* Maximum number of quote characters (not bytes!) that'll be used on
140 * follow lines when compressing leading quote characters */
141 #define n_QUOTE_MAX 42u
143 /* How much spaces should a <tab> count when *quote-fold*ing? (power-of-two!) */
144 #define n_QUOTE_TAB_SPACES 8
146 /* Supported (external) PRG implementations */
147 #define n_RANDOM_IMPL_BUILTIN 0
148 #define n_RANDOM_IMPL_ARC4 1
149 #define n_RANDOM_IMPL_TLS 2
150 #define n_RANDOM_IMPL_GETRANDOM 3 /* (both, syscall + library) */
151 #define n_RANDOM_IMPL_URANDOM 4
153 /* For long iterative output, like `list', tabulator-completion, etc.,
154 * determine the screen width that should be used */
155 #define n_SCRNWIDTH_FOR_LISTS ((size_t)n_scrnwidth - ((size_t)n_scrnwidth >> 3))
157 /* Smells fishy after, or asks for shell expansion, dependent on context */
158 #define n_SHEXP_MAGIC_PATH_CHARS "|&;<>{}()[]*?$`'\"\\"
160 /* Port to native MS-Windows and to ancient UNIX */
161 #if !defined S_ISDIR && defined S_IFDIR && defined S_IFMT
162 # define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR)
163 #endif
165 /* Maximum size of a message that is passed through to the spam system */
166 #define SPAM_MAXSIZE 420000
168 #ifndef NAME_MAX
169 # ifdef _POSIX_NAME_MAX
170 # define NAME_MAX _POSIX_NAME_MAX
171 # else
172 # define NAME_MAX 14
173 # endif
174 #endif
175 #if NAME_MAX + 0 < 8
176 # error NAME_MAX is too small
177 #endif
179 #ifndef STDIN_FILENO
180 # define STDIN_FILENO 0
181 #endif
182 #ifndef STDOUT_FILENO
183 # define STDOUT_FILENO 1
184 #endif
185 #ifndef STDERR_FILENO
186 # define STDERR_FILENO 2
187 #endif
189 #ifdef O_CLOEXEC
190 # define _O_CLOEXEC O_CLOEXEC
191 # define _CLOEXEC_SET(FD) do {;} while(0)
192 #else
193 # define _O_CLOEXEC 0
194 # define _CLOEXEC_SET(FD) n_fd_cloexec_set(FD)
195 #endif
197 #ifdef O_NOCTTY
198 # define n_O_NOCTTY O_NOCTTY
199 #else
200 # define n_O_NOCTTY 0
201 #endif
202 #ifdef O_NOFOLLOW
203 # define n_O_NOFOLLOW O_NOFOLLOW
204 #else
205 # define n_O_NOFOLLOW 0
206 #endif
207 #define n_O_NOXY_BITS (n_O_NOCTTY | n_O_NOFOLLOW)
209 #ifdef NSIG_MAX
210 # undef NSIG
211 # define NSIG NSIG_MAX
212 #elif !defined NSIG
213 # define NSIG ((sizeof(sigset_t) * 8) - 1)
214 #endif
216 /* * */
218 /* Switch indicating necessity of terminal access interface (termcap.c) */
219 #if defined HAVE_TERMCAP || defined HAVE_COLOUR || defined HAVE_MLE
220 # define n_HAVE_TCAP
221 #endif
223 /* Whether we shall do our memory debug thing */
224 #if (defined HAVE_DEBUG || defined HAVE_DEVEL) && !defined HAVE_NOMEMDBG
225 # define HAVE_MEMORY_DEBUG
226 #endif
228 /* Number of Not-Yet-Dead calls that are remembered */
229 #if defined HAVE_DEBUG || defined HAVE_DEVEL || defined HAVE_NYD2
230 # ifdef HAVE_NYD2
231 # define NYD_CALLS_MAX (25 * 84)
232 # elif defined HAVE_DEVEL
233 # define NYD_CALLS_MAX (25 * 42)
234 # else
235 # define NYD_CALLS_MAX (25 * 10)
236 # endif
237 #endif
239 #endif /* n_CONFIG_H */
240 /* s-it-mode */