Lines Matching +full:non +full:- +full:sticky

2  * Copyright (c) 1998-2006, 2008-2010, 2013 Proofpoint, Inc. and its suppliers.
4 * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
23 SM_RCSID("@(#)$Id: readcf.c,v 8.692 2013-11-22 20:51:56 ca Exp $")
54 ** INITBOUNCEQUEUE -- determine BounceQueue if option is set.
83 BounceQueue = s->s_quegrp->qg_index; in initbouncequeue()
94 ** READCF -- read configuration file.
107 ** only produce one string-valued result.
108 ** Hname: value Define header with field-name 'name'
131 ** cfname -- configuration file name.
132 ** safe -- true if this is the system config file;
134 ** e -- the main envelope.
150 int ruleset = -1;
266 rwp->r_next = (struct rewrite *) sm_malloc_tagged_x(sizeof(*rwp),
268 rwp = rwp->r_next;
270 rwp->r_next = NULL;
275 rwp->r_lhs = prescan(exbuf, '\t', pvpbuf,
280 if (rwp->r_lhs != NULL)
284 rwp->r_lhs = copyplist(rwp->r_lhs, true, NULL);
287 for (ap = rwp->r_lhs; *ap != NULL; ap++)
303 botch = "$1-$9";
342 rwp->r_line = LineNumber;
347 rwp->r_lhs = null_list;
352 rwp->r_lhs = null_list;
363 rwp->r_rhs = prescan(exbuf, '\t', pvpbuf,
367 if (rwp->r_rhs != NULL)
376 rwp->r_rhs = copyplist(rwp->r_rhs, true, NULL);
378 /* check no out-of-bounds replacements */
383 for (ap = rwp->r_rhs; *ap != NULL; ap++)
408 botch = "$-";
516 rwp->r_rhs = null_list;
537 while (rwp->r_next != NULL)
538 rwp = rwp->r_next;
555 macdefine(&e->e_macro, A_TEMP, mid, p);
565 if (bp[0] != '\0' && bp[1] == '-')
628 if (p[0] == '-' && p[1] == 'o')
696 /* reserved for Sun -- NIS+ database lookup */
753 macdefine(&e->e_macro, A_TEMP, 'w',
796 "Warning: Filter usage ('X') requires Milter support (-DMILTER)\n");
825 /* determine if we need to do special name-server frotz */
849 ** TRANSLATE_DOLLARS -- convert $x into internal form
851 ** Actually does all appropriate pre-processing of a config line
855 ** ibp -- the buffer to translate.
856 ** obp -- where to put the translation; may be the same as obp
857 ** bsp -- a pointer to the size of obp; will be updated if
891 switch (*--p & 0377)
894 /* it's from $# -- let it go through */
908 p--;
913 *p-- = '\0';
943 while (--p > bp && SM_ISSPACE(*p))
956 ** TOOMANY -- signal too many of some option
959 ** id -- the id of the error line
960 ** maxcnt -- the maximum possible values
977 ** FILECLASS -- read members of a class from a file, program, or map
980 ** class -- class to define.
981 ** filename -- name of file to read/specification of map and key.
982 ** fmt -- scanf string to use for match.
983 ** ismap -- if set, this is a map lookup.
984 ** safe -- if set, this is a safe read.
985 ** optional -- if set, it is not an error for the file to
994 ** - file or |prg: all words in lines that match a scanf fmt
995 ** - map: all words in value (rhs) of a map lookup of a key
1106 …"-k (&(objectClass=sendmailMTAClass)(sendmailMTAClassName=%s)(|(sendmailMTACluster=%s)(sendmailMTA…
1140 map.map_class = &mapclass->s_mapclass;
1149 if (!map.map_class->map_parse(&map, spec))
1158 if (map.map_class->map_open(&map, O_RDONLY))
1174 p = (*map.map_class->map_lookup)(&map, key, NULL, &status);
1189 map.map_class->map_close(&map);
1215 pid = -1;
1270 ** DYNCLASS -- open a dynamic class
1273 ** class -- class to define.
1274 ** arg -- rest of class definition from cf.
1344 dynmap->s_dynclass.map_class = &mapclass->s_mapclass;
1345 dynmap->s_dynclass.map_mname = newstr(mn);
1348 if (!dynmap->s_dynclass.map_class->map_parse(&dynmap->s_dynclass, spec))
1355 if (dynmap->s_dynclass.map_class->map_open(&dynmap->s_dynclass, O_RDONLY))
1357 dynmap->s_dynclass.map_mflags |= MF_OPEN;
1358 dynmap->s_dynclass.map_pid = getpid();
1365 dynmap->s_dynclass.map_mflags |= MF_VALID;
1366 dynmap->s_dynclass.map_tag = newstr(tag);
1370 dynmap->s_dynclass.map_mflags |= MF_CLOSING;
1371 dynmap->s_dynclass.map_class->map_close(&map);
1372 dynmap->s_dynclass.map_mflags &= ~(MF_OPEN|MF_WRITABLE|MF_CLOSING);
1378 dynmap->s_dynclass.map_mflags |= MF_OPENBOGUS;
1393 ** SETUPDYNMAILERS -- find a char that isn't used as first element of any
1430 ** NEWMODMAILER -- Create a new mailer with modifications
1433 ** rcpt -- current RCPT
1434 ** fl -- flag to set
1455 if (rcpt->q_mailer == NULL)
1458 sm_dprintf("newmodmailer: rcpt=%s\n", rcpt->q_paddr);
1459 SM_REQUIRE(rcpt->q_mailer->m_name != NULL);
1460 SM_REQUIRE(rcpt->q_mailer->m_name[0] != '\0');
1461 sm_strlcpy(mname, rcpt->q_mailer->m_name, sizeof(mname));
1466 if (s->s_mailer != NULL)
1468 idx = s->s_mailer->m_mno;
1474 idx = rcpt->q_mailer->m_mno;
1486 STRUCTCOPY(*rcpt->q_mailer, *m);
1490 setbitn(bitidx(fl), m->m_flags);
1491 rcpt->q_mailer = m;
1492 m->m_mno = idx;
1493 m->m_name = newstr(mname);
1496 idx, Mailer[idx]->m_name, Mailer[idx]);
1504 ** MAKEMAILER -- define a new mailer.
1507 ** line -- description of mailer. This is in labeled
1509 ** A -- the argv for this mailer
1510 ** C -- the character set for MIME conversions
1511 ** D -- the directory to run in
1512 ** E -- the eol string
1513 ** F -- the flags associated with the mailer
1514 ** L -- the maximum line length
1515 ** M -- the maximum message size
1516 ** N -- the niceness at which to run
1517 ** P -- the path to the mailer
1518 ** Q -- the queue group for the mailer
1519 ** R -- the recipient rewriting set
1520 ** S -- the sender rewriting set
1521 ** T -- the mailer type (for DSNs)
1522 ** U -- the uid to run as
1523 ** W -- the time to wait at the end
1524 ** m -- maximum messages per connection
1525 ** r -- maximum number of recipients per message
1526 ** / -- new root directory
1565 m->m_name = newstr(line);
1569 m->m_qgrp = NOQGRP;
1570 m->m_uid = NO_UID;
1571 m->m_gid = NO_GID;
1588 syserr("mailer %s: `=' expected", m->m_name);
1602 m->m_mailer = newstr(p);
1613 m->m_name, *p);
1614 setbitn(bitidx(*p), m->m_flags);
1625 m->m_sh_rwset = m->m_se_rwset = i;
1627 m->m_rh_rwset = m->m_re_rwset = i;
1636 m->m_sh_rwset = i;
1638 m->m_rh_rwset = i;
1644 syserr("mailer %s: null end-of-line string",
1645 m->m_name);
1647 m->m_eol = newstr(p);
1652 m->m_argv = makeargv(p);
1656 m->m_maxsize = atol(p);
1660 m->m_maxdeliveries = atoi(p);
1664 m->m_maxrcpt = atoi(p);
1668 m->m_linelimit = atoi(p);
1669 if (m->m_linelimit < 0)
1670 m->m_linelimit = 0;
1674 m->m_nice = atoi(p);
1680 m->m_name);
1682 m->m_execdir = newstr(p);
1687 syserr("mailer %s: null charset", m->m_name);
1689 m->m_defcharset = newstr(p);
1695 syserr("mailer %s: null queue", m->m_name);
1701 m->m_name, p);
1703 m->m_qgrp = s->s_quegrp->qg_index;
1706 case 'T': /* MTA-Name/Address/Diagnostic types */
1708 m->m_mtatype = newstr(p);
1709 p = strchr(m->m_mtatype, '/');
1716 if (*m->m_mtatype == '\0')
1717 m->m_mtatype = "dns";
1720 m->m_addrtype = p;
1729 if (SM_IS_EMPTY(m->m_addrtype))
1730 m->m_addrtype = "rfc822";
1733 m->m_diagtype = p;
1734 if (SM_IS_EMPTY(m->m_diagtype))
1735 m->m_diagtype = "smtp";
1748 (isalnum(*p) || strchr("-_", *p) != NULL))
1758 m->m_name);
1769 m->m_uid = pw->pw_uid;
1770 m->m_gid = pw->pw_gid;
1777 m->m_uid = strtol(p, &q, 0);
1800 m->m_name);
1810 m->m_gid = gr->gr_gid;
1814 m->m_gid = strtol(p, NULL, 0);
1819 m->m_wait = convtime(p, 's');
1825 m->m_name);
1827 m->m_rootdir = newstr(p);
1832 m->m_name, fcode);
1840 if (bitnset(M_SECURE_PORT, m->m_flags))
1844 m->m_name, M_SECURE_PORT);
1849 if (m->m_nice != 0)
1853 m->m_name);
1858 if (m->m_argv == NULL)
1860 syserr("M%s: A= argument required", m->m_name);
1863 if (m->m_mailer == NULL)
1865 syserr("M%s: P= argument required", m->m_name);
1875 if (m->m_maxrcpt <= 0)
1876 m->m_maxrcpt = DEFAULT_MAX_RCPT;
1879 if (bitnset(M_LIMITS, m->m_flags))
1881 if (m->m_linelimit == 0)
1882 m->m_linelimit = SMTPLINELIM;
1884 setbitn(M_7BITS, m->m_flags);
1887 if (strcmp(m->m_mailer, "[TCP]") == 0)
1889 syserr("M%s: P=[TCP] must be replaced by P=[IPC]", m->m_name);
1893 if (strcmp(m->m_mailer, "[IPC]") == 0)
1896 if (m->m_argv[0] == NULL || m->m_argv[1] == NULL ||
1897 m->m_argv[1][0] == '\0')
1900 m->m_name, m->m_mailer);
1903 if (strcmp(m->m_argv[0], "TCP") != 0
1905 && strcmp(m->m_argv[0], "FILE") != 0
1911 m->m_name, m->m_mailer,
1919 if (m->m_mtatype == NULL)
1920 m->m_mtatype = "dns";
1921 if (m->m_addrtype == NULL)
1922 m->m_addrtype = "rfc822";
1923 if (m->m_diagtype == NULL)
1925 if (m->m_argv[0] != NULL &&
1926 strcmp(m->m_argv[0], "FILE") == 0)
1927 m->m_diagtype = "x-unix";
1929 m->m_diagtype = "smtp";
1932 else if (strcmp(m->m_mailer, "[FILE]") == 0)
1935 if (m->m_argv[0] == NULL || m->m_argv[1] == NULL ||
1936 m->m_argv[2] != NULL)
1939 m->m_name,
1940 (m->m_argv[0] == NULL ||
1941 m->m_argv[1] == NULL) ? "few" : "many");
1944 else if (strcmp(m->m_argv[0], "FILE") != 0)
1947 m->m_name);
1952 if (m->m_eol == NULL)
1957 for (pp = m->m_argv; *pp != NULL; pp++)
1968 m->m_eol = "\r\n";
1970 m->m_eol = "\n";
1974 s = stab(m->m_name, ST_MAILER, ST_ENTER);
1975 if (s->s_mailer != NULL)
1977 i = s->s_mailer->m_mno;
1978 sm_free(s->s_mailer); /* XXX */
1984 Mailer[i] = s->s_mailer = m;
1985 m->m_mno = i;
1988 ** MUNCHSTRING -- translate a string into internal form.
1991 ** p -- the string to munch.
1992 ** delimptr -- if non-NULL, set to the pointer of the
1994 ** delim -- the delimiter for the field.
2015 for (q = buf; *p != '\0' && q < &buf[sizeof(buf) - 1]; p++)
2060 ** EXTRQUOTSTR -- extract a (quoted) string.
2066 ** p -- source string.
2067 ** delimptr -- if non-NULL, set to the pointer of the
2069 ** delimbuf -- delimiters for the field.
2070 ** st -- if non-NULL, store the return value (whether the
2093 for (q = buf; *p != '\0' && q < &buf[sizeof(buf) - 1]; p++)
2120 ** MAKEARGV -- break up a string into words
2123 ** p -- the string to break up.
2161 ** PRINTRULES -- print rewrite rules (for debugging)
2183 sm_dprintf("\n----Rule Set %d:", ruleset); in printrules()
2185 for (rwp = RewriteRules[ruleset]; rwp != NULL; rwp = rwp->r_next) in printrules()
2188 printav(sm_debug_file(), rwp->r_lhs); in printrules()
2190 printav(sm_debug_file(), rwp->r_rhs); in printrules()
2195 ** PRINTMAILER -- print mailer structure (for debugging)
2198 ** fp -- output file
2199 ** m -- the mailer to print
2213 "mailer %d (%s): P=%s S=", m->m_mno, m->m_name,
2214 m->m_mailer);
2215 if (RuleSetNames[m->m_se_rwset] == NULL)
2217 m->m_se_rwset);
2220 RuleSetNames[m->m_se_rwset]);
2221 if (RuleSetNames[m->m_sh_rwset] == NULL)
2223 m->m_sh_rwset);
2226 RuleSetNames[m->m_sh_rwset]);
2227 if (RuleSetNames[m->m_re_rwset] == NULL)
2229 m->m_re_rwset);
2232 RuleSetNames[m->m_re_rwset]);
2233 if (RuleSetNames[m->m_rh_rwset] == NULL)
2235 m->m_rh_rwset);
2238 RuleSetNames[m->m_rh_rwset]);
2240 m->m_maxsize, (int) m->m_uid, (int) m->m_gid);
2242 if (bitnset(j, m->m_flags))
2245 m->m_linelimit);
2246 xputs(fp, m->m_eol);
2247 if (m->m_defcharset != NULL)
2249 m->m_defcharset);
2251 m->m_mtatype == NULL
2252 ? "<undefined>" : m->m_mtatype,
2253 m->m_addrtype == NULL
2254 ? "<undefined>" : m->m_addrtype,
2255 m->m_diagtype == NULL
2256 ? "<undefined>" : m->m_diagtype);
2257 (void) sm_io_fprintf(fp, SM_TIME_DEFAULT, " r=%d", m->m_maxrcpt);
2258 if (m->m_argv != NULL)
2260 char **a = m->m_argv;
2265 if (a != m->m_argv)
2412 ** READSSLOPTIONS -- read SSL_OP_* values
2415 ** opt -- name of option (can be NULL)
2416 ** val -- string with SSL_OP_* values or hex value
2417 ** delim -- end of string (e.g., '\0' or ';')
2418 ** pssloptions -- return value (output)
2452 if (*p == '-' || *p == '+')
2453 clearmode = *p++ == '-';
2480 sslopts->sslopt_name != NULL; sslopts++)
2482 if (SM_STRCASEEQ(q, sslopts->sslopt_name))
2484 sslopt_val = sslopts->sslopt_bits;
2488 if (sslopts->sslopt_name == NULL)
2509 ** GET_TLS_SE_FEATURES -- get TLS session features (from ruleset)
2512 ** e -- envelope
2513 ** ssl -- TLS session context
2514 ** tlsi_ctx -- TLS info context
2515 ** srv -- server?
2580 if (optionlist[0] == '"' && optionlist[len - 1] == '"')
2583 optionlist[--len] = '\0';
2715 setbitn(bitidx(*p), tlsi_ctx->tlsi_flags);
2746 setbitn(bitidx(TLSI_FL_STS_NOFB2CLR), tlsi_ctx->tlsi_flags);
2791 ** SETOPTION -- set global processing option
2794 ** opt -- option name.
2795 ** val -- option value (as a text string).
2796 ** safe -- set if this came from a configuration file.
2799 ** sticky -- if set, don't let other setoptions override
2801 ** e -- the main envelope.
3229 #define OPTNAME o->o_name == NULL ? "<unknown>" : o->o_name
3232 setoption(opt, val, safe, sticky, e) in setoption() argument
3236 bool sticky;
3267 while (*--p == ' ')
3284 for (o = OptionTab; o->o_name != NULL; o++)
3286 if (sm_strncasecmp(o->o_name, val, strlen(val)) != 0)
3288 if (strlen(o->o_name) == strlen(val))
3290 /* completely specified -- this must be it */
3298 if (sel != NULL && o->o_name == NULL)
3300 else if (o->o_name == NULL)
3308 val, sel->o_name, o->o_name);
3311 if (strlen(val) != strlen(o->o_name))
3317 val, o->o_name);
3320 opt = o->o_code;
3325 for (o = OptionTab; o->o_name != NULL; o++)
3327 if (o->o_code == opt)
3330 if (o->o_name == NULL)
3338 if (subopt != NULL && !bitset(OI_SUBOPT, o->o_flags))
3360 if (!sticky && bitnset(opt, StickyOpt))
3373 if (!safe && !bitset(OI_SAFE, o->o_flags))
3390 case '7': /* force seven-bit input */
3394 case '8': /* handling of 8-bit input */
3402 case 'm': /* convert 8-bit, convert MIME */
3411 case 'r': /* reject 8-bit, don't convert MIME */
3429 syserr("Unknown 8-bit mode %c", *val);
3529 e->e_errormode = *val;
3538 case 'f': /* save Unix-style From lines on front */
3554 DefGid = -1;
3560 DefGid = gr->gr_gid;
3593 if (*p == '-')
3596 p--;
3613 for (rfp = ResolverFlags; rfp->rf_name != NULL; rfp++)
3615 if (SM_STRCASEEQ(q, rfp->rf_name))
3618 if (rfp->rf_name == NULL)
3621 _res.options &= ~rfp->rf_bits;
3623 _res.options |= rfp->rf_bits;
3656 case 'l': /* use Errors-To: header */
3666 sticky = false;
3673 macdefine(&CurEnv->e_macro, A_TEMP, i, p);
3684 /* 'N' available -- was "net name" */
3693 CurEnv->e_flags |= EF_OLDSTYLE;
3695 CurEnv->e_flags &= ~EF_OLDSTYLE;
3715 for (pv = PrivacyValues; pv->pv_name != NULL; pv++)
3717 if (SM_STRCASEEQ(val, pv->pv_name))
3720 if (pv->pv_name == NULL)
3723 PrivacyFlags |= pv->pv_flag;
3725 sticky = false;
3755 inittimeouts(val, sticky);
3757 settimeout(subopt, val, sticky);
3780 "Warning: SuperSafe=PostMilter requires Milter support (-DMILTER)\n");
3791 settimeout("queuewarn", p, sticky);
3793 settimeout("queuereturn", val, sticky);
3826 DefUid = -1;
3835 DefUid = pw->pw_uid;
3836 DefGid = pw->pw_gid;
3837 DefUser = newstr(pw->pw_name);
3869 /* 'W' available -- was wizard password */
3871 case 'x': /* load avg at which to auto-queue msgs */
3875 case 'X': /* load avg at which to auto-reject connections */
3974 case O_DIALDELAY: /* delay for dial-on-demand operation */
3981 else if (SM_STRCASEEQ(val, "add-to"))
3983 else if (SM_STRCASEEQ(val, "add-apparently-to"))
3985 else if (SM_STRCASEEQ(val, "add-bcc"))
3987 else if (SM_STRCASEEQ(val, "add-to-undisclosed"))
3998 p = val + strlen(val) - 1;
4000 *p-- = '\0';
4047 "Warning: Option: %s requires shared memory support (-DSM_CONF_SHM)\n",
4057 "Warning: Option: %s requires shared memory support (-DSM_CONF_SHM)\n",
4074 if (strlen(val) < sizeof(buf) - 10)
4171 RunAsUid = pw->pw_uid;
4172 RunAsGid = pw->pw_gid;
4174 else if (EffGid == pw->pw_gid)
4175 RunAsGid = pw->pw_gid;
4180 (long) pw->pw_gid);
4214 else if (can_setuid || EffGid == gr->gr_gid)
4215 RunAsGid = gr->gr_gid;
4221 (long) gr->gr_gid);
4255 dbs->dbs_name != NULL; dbs++)
4257 if (SM_STRCASEEQ(val, dbs->dbs_name))
4260 if (dbs->dbs_name == NULL)
4262 else if (dbs->dbs_flag == DBS_SAFE)
4265 setbitn(dbs->dbs_flag, DontBlameSendmail);
4267 sticky = false;
4376 TrustedUid = pw->pw_uid;
4550 "Warning: Option: %s requires SASL support (-DSASL)\n",
4608 "Warning: Option: %s ignored -- not supported: OPENSSL_NO_ENGINE\n",
4618 (void) readssloptions(o->o_name, val, pssloptions, '\0');
4734 "Warning: Option: %s requires LDAP support (-DLDAPMAP)\n",
4744 "Warning: Option: %s requires Milter support (-DMILTER)\n",
4751 milter_set_option(subopt, val, sticky);
4754 "Warning: Option: %s requires Milter support (-DMILTER)\n",
4962 ** of sticky-ness (e.g., that a command line setting is kept
4965 ** sticky, not the root option.
4968 if (sticky && !bitset(OI_SUBOPT, o->o_flags))
4972 ** SETCLASS -- set a string into a class
4975 ** class -- the class to put the string in.
4976 ** str -- the string to enter
5012 setbitn(bitidx(class), s->s_class);
5018 ** CLASSRMENTRY -- remove a string from a class
5021 ** class -- the class from which to remove the string.
5022 ** str -- the string to remove
5039 if (NULL == s /* || ST_CLASS != s->s_symtype */)
5045 clrbitn(bitidx(class), s->s_class);
5047 sm_dprintf("classrmentry(%s, %s)=%d\n", macname(class), str, bitnset(bitidx(class), s->s_class));
5052 ** MAKEMAPENTRY -- create a map entry
5055 ** line -- the config file line
5114 s->s_map.map_class = &class->s_mapclass;
5115 s->s_map.map_mname = newstr(mapname);
5117 if (class->s_mapclass.map_parse(&s->s_map, p))
5118 s->s_map.map_mflags |= MF_VALID;
5123 s->s_map.map_mname, s->s_map.map_class->map_cname,
5124 s->s_map.map_mflags, s->s_map.map_file);
5126 s->s_map.map_app, s->s_map.map_domain,
5127 s->s_map.map_rebuild);
5129 return &s->s_map;
5132 ** STRTORWSET -- convert string to rewriting set number
5135 ** p -- the pointer to the string to decode.
5136 ** endp -- if set, store the trailing delimiter here.
5137 ** stabmode -- ST_ENTER to create this entry, ST_FIND if
5142 ** -1 if it is not valid (error already printed)
5159 return -1;
5168 ruleset = -1;
5184 return -1;
5196 return -1;
5205 ruleset = -1;
5214 ruleset = -1;
5222 if (s->s_ruleset >= 0)
5223 ruleset = s->s_ruleset;
5224 else if ((ruleset = --nextruleset) < MAXRWSETS / 2)
5228 ruleset = -1;
5231 if (s->s_ruleset >= 0 &&
5233 ruleset != s->s_ruleset)
5236 q, s->s_ruleset, ruleset);
5237 ruleset = s->s_ruleset;
5241 s->s_ruleset = ruleset;
5259 ** SETTIMEOUT -- set an individual timeout
5262 ** name -- the name of the timeout.
5263 ** val -- the value of the timeout.
5264 ** sticky -- if set, don't let other setoptions override
5271 /* set if Timeout sub-option is stuck */
5318 { "queuewarn.non-urgent", TO_QUEUEWARN_NON_URGENT },
5327 { "queuereturn.non-urgent", TO_QUEUERETURN_NON_URGENT },
5360 settimeout(name, val, sticky) in settimeout() argument
5363 bool sticky;
5372 for (to = TimeOutTab; to->to_name != NULL; to++)
5374 if (SM_STRCASEEQ(to->to_name, name))
5378 if (to->to_name == NULL)
5389 if (!sticky && bitnset(to->to_code, StickyTimeoutOpt))
5402 switch (to->to_code)
5587 if (sticky)
5590 setbitn(to->to_code + i, StickyTimeoutOpt);
5594 ** INITTIMEOUTS -- parse and set timeout values
5597 ** val -- a pointer to the values. If NULL, do initial
5599 ** sticky -- if set, don't let other setoptions override
5610 inittimeouts(val, sticky) in inittimeouts() argument
5612 bool sticky;
5696 /* old syntax -- set everything */
5703 if (sticky)
5724 settimeout(val, q, sticky);
5730 ** SHOWCFOPTS -- show cf options
5744 for (o = OptionTab; o->o_name != NULL; o++) in showcfopts()
5747 "%s\n", o->o_name); in showcfopts()