PennMUSH Community

Ticket #7668: function-args.patch.txt

File function-args.patch.txt, 77.9 kB (added by Talvo, 4 months ago)
Line 
1 *** src/bsd.c.orig  Fri Oct  5 23:36:32 2007
2 --- src/bsd.c   Fri Jul 18 22:12:43 2008
3 ***************
4 *** 122,127 ****
5 --- 122,128 ----
6   #include "game.h"
7   #include "dbio.h"
8   #include "confmagic.h"
9 + #include "function.h"
10  
11   #ifdef HAS_GETRLIMIT
12   void init_rlimit(void);
13 ***************
14 *** 3579,3586 ****
15     int nwho;
16     int first;
17     int start, count;
18 !   int powered = (*(called_as + 1) != 'M');
19 !   int objid = (strchr(called_as, 'D') != NULL);
20  
21     if (!is_strict_integer(args[0]) || !is_strict_integer(args[1])) {
22       safe_str(T(e_int), buff, bp);
23 --- 3580,3587 ----
24     int nwho;
25     int first;
26     int start, count;
27 !   int powered = (funflags & FUN_ARG_ALL);
28 !   int objid = (funflags & FUN_ARG_OBJID);
29  
30     if (!is_strict_integer(args[0]) || !is_strict_integer(args[1])) {
31       safe_str(T(e_int), buff, bp);
32 ***************
33 *** 3622,3628 ****
34     DESC *d;
35     dbref victim;
36     int count = 0;
37 !   int powered = ((*(called_as + 1) != 'M') && Priv_Who(executor));
38  
39     if (nargs && args[0] && *args[0]) {
40       /* An argument was given. Find the victim and choose the lowest
41 --- 3623,3629 ----
42     DESC *d;
43     dbref victim;
44     int count = 0;
45 !   int powered = ((funflags & FUN_ARG_ALL) && Priv_Who(executor));
46  
47     if (nargs && args[0] && *args[0]) {
48       /* An argument was given. Find the victim and choose the lowest
49 ***************
50 *** 3654,3661 ****
51     DESC *d;
52     int first;
53     dbref victim;
54 !   int powered = ((*called_as == 'L') && Priv_Who(executor));
55 !   int objid = (strchr(called_as, 'D') != NULL);
56  
57     first = 1;
58  
59 --- 3655,3662 ----
60     DESC *d;
61     int first;
62     dbref victim;
63 !   int powered = ((funflags & FUN_ARG_ALL) && Priv_Who(executor));
64 !   int objid = (funflags & FUN_ARG_OBJID);
65  
66     first = 1;
67  
68 ***************
69 *** 3870,3876 ****
70     DESC *d;
71     dbref zone, victim;
72     int first;
73 !   int powered = (strcmp(called_as, "ZMWHO") && Priv_Who(executor));
74     first = 1;
75  
76     zone = match_thing(executor, args[0]);
77 --- 3871,3877 ----
78     DESC *d;
79     dbref zone, victim;
80     int first;
81 !   int powered = ((funflags & FUN_ARG_ALL) && Priv_Who(executor));
82     first = 1;
83  
84     zone = match_thing(executor, args[0]);
85 *** src/extchat.c.orig  Fri Oct  5 23:36:32 2007
86 --- src/extchat.c   Fri Jul 18 22:13:18 2008
87 ***************
88 *** 2192,2198 ****
89         return;
90       }
91       if (nargs == 1) {
92 !       if (string_prefix(called_as, "CL"))
93           safe_str(privs_to_string(priv_table, ChanType(c)), buff, bp);
94         else
95           safe_str(privs_to_letters(priv_table, ChanType(c)), buff, bp);
96 --- 2192,2198 ----
97         return;
98       }
99       if (nargs == 1) {
100 !       if (funflags & FUN_ARG_LIST)
101           safe_str(privs_to_string(priv_table, ChanType(c)), buff, bp);
102         else
103           safe_str(privs_to_letters(priv_table, ChanType(c)), buff, bp);
104 ***************
105 *** 2212,2218 ****
106         safe_str(T("#-1 NOT ON CHANNEL"), buff, bp);
107         return;
108       }
109 !     safe_str(list_cuflags(u, string_prefix(called_as, "CL") ? 1 : 0), buff, bp);
110       break;
111     }
112   }
113 --- 2212,2218 ----
114         safe_str(T("#-1 NOT ON CHANNEL"), buff, bp);
115         return;
116       }
117 !     safe_str(list_cuflags(u, (funflags & FUN_ARG_LIST) ? 1 : 0), buff, bp);
118       break;
119     }
120   }
121 ***************
122 *** 2238,2254 ****
123         safe_str(T("#-1 NO SUCH CHANNEL"), buff, bp);
124         return;
125       }
126 !     if (string_prefix(called_as, "CD")) {
127         safe_str(ChanTitle(c), buff, bp);
128 !     } else if (string_prefix(called_as, "CB")) {
129         if (ChanBufferQ(c) != NULL) {
130           safe_integer(BufferQSize(ChanBufferQ(c)), buff, bp);
131         } else {
132           safe_integer(0, buff, bp);
133         }
134 !     } else if (string_prefix(called_as, "CU")) {
135         safe_integer(ChanNumUsers(c), buff, bp);
136 !     } else if (string_prefix(called_as, "CM")) {
137         safe_format(buff, bp, "%lu", ChanNumMsgs(c));
138       }
139     }
140 --- 2238,2254 ----
141         safe_str(T("#-1 NO SUCH CHANNEL"), buff, bp);
142         return;
143       }
144 !     if (funflags & FUN_ARG_CHANDESC) {
145         safe_str(ChanTitle(c), buff, bp);
146 !     } else if (funflags & FUN_ARG_CHANBUFF) {
147         if (ChanBufferQ(c) != NULL) {
148           safe_integer(BufferQSize(ChanBufferQ(c)), buff, bp);
149         } else {
150           safe_integer(0, buff, bp);
151         }
152 !     } else if (funflags & FUN_ARG_CHANUSER) {
153         safe_integer(ChanNumUsers(c), buff, bp);
154 !     } else if (funflags & FUN_ARG_CHANMSGS) {
155         safe_format(buff, bp, "%lu", ChanNumMsgs(c));
156       }
157     }
158 ***************
159 *** 3051,3057 ****
160   /* ARGSUSED */
161   FUNCTION(fun_cemit)
162   {
163 !   int ns = string_prefix(called_as, "NS");
164     int flags = PEMIT_SILENT;
165     flags |= (ns ? PEMIT_SPOOF : 0);
166     if (!command_check_byname(executor, ns ? "@nscemit" : "@cemit") ||
167 --- 3051,3057 ----
168   /* ARGSUSED */
169   FUNCTION(fun_cemit)
170   {
171 !   int ns = (funflags & FUN_ARG_SPOOF);
172     int flags = PEMIT_SILENT;
173     flags |= (ns ? PEMIT_SPOOF : 0);
174     if (!command_check_byname(executor, ns ? "@nscemit" : "@cemit") ||
175 *** src/extmail.c.orig  Fri Oct  5 23:36:32 2007
176 --- src/extmail.c   Fri Jul 18 22:37:03 2008
177 ***************
178 *** 1707,1721 ****
179     int full;
180  
181     /* Figure out how we were called */
182 !   if (string_prefix(called_as, "mailstats")) {
183 !     full = 0;
184 !   } else if (string_prefix(called_as, "maildstats")) {
185       full = 1;
186 !   } else if (string_prefix(called_as, "mailfstats")) {
187       full = 2;
188     } else {
189 !     safe_str(T("#-? fun_mailstats called with invalid called_as!"), buff, bp);
190 !     return;
191     }
192  
193     fc = fr = fu = tc = tr = tu = cchars = fchars = tchars = 0;
194 --- 1707,1718 ----
195     int full;
196  
197     /* Figure out how we were called */
198 !   if (funflags & FUN_ARG_COUNT) {
199       full = 1;
200 !   } else if (funflags & FUN_ARG_ALL) {
201       full = 2;
202     } else {
203 !     full = 0;
204     }
205  
206     fc = fr = fu = tc = tr = tu = cchars = fchars = tchars = 0;
207 *** src/function.c.orig Fri Oct  5 23:36:32 2007
208 --- src/function.c  Fri Jul 18 22:25:41 2008
209 ***************
210 *** 303,308 ****
211 --- 303,309 ----
212     int minargs;  /**< Minimum args required. */
213     int maxargs;  /**< Maximum args, or INT_MAX. If <0, last arg may have commas */
214     int flags;    /**< Flags to control how the function is parsed. */
215 +   int funflags;   /**< Flags passed to the function, to determine exactly what it should do */
216   } FUNTAB;
217  
218  
219 ***************
220 *** 310,791 ****
221    * add_function().
222    */
223   FUNTAB flist[] = {
224 !   {"@@", fun_atat, 1, -1, FN_NOPARSE},
225 !   {"ABS", fun_abs, 1, 1, FN_REG},
226 !   {"ACCENT", fun_accent, 2, 2, FN_REG},
227 !   {"ACCNAME", fun_accname, 1, 1, FN_REG},
228 !   {"ADD", fun_add, 2, INT_MAX, FN_REG},
229 !   {"AFTER", fun_after, 2, 2, FN_REG},
230 !   {"ALIAS", fun_alias, 1, 2, FN_REG},
231 !   {"ALIGN", fun_align, 2, INT_MAX, FN_REG},
232 !   {"ALLOF", fun_allof, 2, INT_MAX, FN_NOPARSE},
233 !   {"ALPHAMAX", fun_alphamax, 1, INT_MAX, FN_REG},
234 !   {"ALPHAMIN", fun_alphamin, 1, INT_MAX, FN_REG},
235 !   {"AND", fun_and, 2, INT_MAX, FN_REG},
236 !   {"ANDFLAGS", fun_andflags, 2, 2, FN_REG},
237 !   {"ANDLFLAGS", fun_andlflags, 2, 2, FN_REG},
238 !   {"ANDLPOWERS", fun_andlflags, 2, 2, FN_REG},
239 !   {"ANDPOWERS", fun_andflags, 2, 2, FN_REG},
240 !   {"ANSI", fun_ansi, 2, -2, FN_REG},
241   #ifdef ANSI_DEBUG
242 !   {"ANSIINSPECT", fun_ansiinspect, 1, 2, FN_REG},
243   #endif
244 !   {"APOSS", fun_aposs, 1, 1, FN_REG},
245 !   {"ART", fun_art, 1, 1, FN_REG},
246 !   {"ATRLOCK", fun_atrlock, 1, 2, FN_REG},
247 !   {"ATTRIB_SET", fun_attrib_set, 1, -2, FN_REG},
248 !   {"BAND", fun_band, 1, INT_MAX, FN_REG},
249 !   {"BASECONV", fun_baseconv, 3, 3, FN_REG},
250 !   {"BEEP", fun_beep, 0, 1, FN_REG},
251 !   {"BEFORE", fun_before, 2, 2, FN_REG},
252 !   {"BNAND", fun_bnand, 2, 2, FN_REG},
253 !   {"BNOT", fun_bnot, 1, 1, FN_REG},
254 !   {"BOR", fun_bor, 1, INT_MAX, FN_REG},
255 !   {"BOUND", fun_bound, 2, 3, FN_REG},
256 !   {"BRACKETS", fun_brackets, 1, 1, FN_REG},
257 !   {"BXOR", fun_bxor, 1, INT_MAX, FN_REG},
258 !   {"CAND", fun_cand, 2, INT_MAX, FN_NOPARSE},
259 !   {"CAPSTR", fun_capstr, 1, -1, FN_REG},
260 !   {"CASE", fun_switch, 3, INT_MAX, FN_NOPARSE},
261 !   {"CASEALL", fun_switch, 3, INT_MAX, FN_NOPARSE},
262 !   {"CAT", fun_cat, 1, INT_MAX, FN_REG},
263 !   {"CBUFFER", fun_cinfo, 1, 1, FN_REG},
264 !   {"CDESC", fun_cinfo, 1, 1, FN_REG},
265 !   {"CEMIT", fun_cemit, 2, 3, FN_REG},
266 !   {"CFLAGS", fun_cflags, 1, 2, FN_REG},
267 !   {"CHANNELS", fun_channels, 0, 2, FN_REG},
268 !   {"CLFLAGS", fun_cflags, 1, 2, FN_REG},
269 !   {"CLOCK", fun_clock, 1, 2, FN_REG},
270 !   {"CMSGS", fun_cinfo, 1, 1, FN_REG},
271 !   {"COWNER", fun_cowner, 1, 1, FN_REG},
272 !   {"CRECALL", fun_crecall, 1, 5, FN_REG},
273 !   {"CSTATUS", fun_cstatus, 2, 2, FN_REG},
274 !   {"CTITLE", fun_ctitle, 2, 2, FN_REG},
275 !   {"CUSERS", fun_cinfo, 1, 1, FN_REG},
276 !   {"CWHO", fun_cwho, 1, 1, FN_REG},
277 !   {"CENTER", fun_center, 2, 4, FN_REG},
278 !   {"CHILDREN", fun_lsearch, 1, 1, FN_REG},
279 !   {"CHR", fun_chr, 1, 1, FN_REG},
280 !   {"CHECKPASS", fun_checkpass, 2, 2, FN_REG | FN_WIZARD},
281 !   {"CLONE", fun_clone, 1, 1, FN_REG},
282 !   {"CMDS", fun_cmds, 1, 1, FN_REG},
283 !   {"COMP", fun_comp, 2, 3, FN_REG},
284 !   {"CON", fun_con, 1, 1, FN_REG},
285 !   {"COND", fun_if, 2, INT_MAX, FN_NOPARSE},
286 !   {"CONDALL", fun_if, 2, INT_MAX, FN_NOPARSE},
287 !   {"CONFIG", fun_config, 1, 1, FN_REG},
288 !   {"CONN", fun_conn, 1, 1, FN_REG},
289 !   {"CONTROLS", fun_controls, 2, 2, FN_REG},
290 !   {"CONVSECS", fun_convsecs, 1, 2, FN_REG},
291 !   {"CONVUTCSECS", fun_convsecs, 1, 1, FN_REG},
292 !   {"CONVTIME", fun_convtime, 1, 1, FN_REG},
293 !   {"COR", fun_cor, 2, INT_MAX, FN_NOPARSE},
294 !   {"CREATE", fun_create, 1, 2, FN_REG},
295 !   {"CSECS", fun_csecs, 1, 1, FN_REG},
296 !   {"CTIME", fun_ctime, 1, 2, FN_REG},
297 !   {"DEC", fun_dec, 1, 1, FN_REG},
298 !   {"DECODE64", fun_decode64, 1, -1, FN_REG},
299 !   {"DECOMPOSE", fun_decompose, 1, -1, FN_REG},
300 !   {"DECRYPT", fun_decrypt, 2, 3, FN_REG},
301 !   {"DEFAULT", fun_default, 2, INT_MAX, FN_NOPARSE},
302 !   {"DELETE", fun_delete, 3, 3, FN_REG},
303 !   {"DIE", fun_die, 2, 3, FN_REG},
304 !   {"DIG", fun_dig, 1, 3, FN_REG},
305 !   {"DIGEST", fun_digest, 2, -2, FN_REG},
306 !   {"DIST2D", fun_dist2d, 4, 4, FN_REG},
307 !   {"DIST3D", fun_dist3d, 6, 6, FN_REG},
308 !   {"DIV", fun_div, 2, 2, FN_REG},
309 !   {"DOING", fun_doing, 1, 1, FN_REG},
310 !   {"EDEFAULT", fun_edefault, 2, 2, FN_NOPARSE},
311 !   {"EDIT", fun_edit, 3, INT_MAX, FN_REG},
312 !   {"ELEMENT", fun_element, 3, 3, FN_REG},
313 !   {"ELEMENTS", fun_elements, 2, 4, FN_REG},
314 !   {"ELIST", fun_itemize, 1, 5, FN_REG},
315 !   {"ELOCK", fun_elock, 2, 2, FN_REG},
316 !   {"EMIT", fun_emit, 1, -1, FN_REG},
317 !   {"ENCODE64", fun_encode64, 1, -1, FN_REG},
318 !   {"ENCRYPT", fun_encrypt, 2, 3, FN_REG},
319 !   {"ENTRANCES", fun_entrances, 0, 4, FN_REG},
320 !   {"ETIMEFMT", fun_etimefmt, 2, 2, FN_REG},
321 !   {"EQ", fun_eq, 2, 2, FN_REG},
322 !   {"EVAL", fun_eval, 2, 2, FN_REG},
323 !   {"ESCAPE", fun_escape, 1, -1, FN_REG},
324 !   {"EXIT", fun_exit, 1, 1, FN_REG},
325 !   {"EXTRACT", fun_extract, 1, 4, FN_REG},
326 !   {"FILTER", fun_filter, 2, 4, FN_REG},
327 !   {"FILTERBOOL", fun_filter, 2, 4, FN_REG},
328 !   {"FINDABLE", fun_findable, 2, 2, FN_REG},
329 !   {"FIRST", fun_first, 1, 2, FN_REG},
330 !   {"FIRSTOF", fun_firstof, 0, INT_MAX, FN_NOPARSE},
331 !   {"FLAGS", fun_flags, 0, 1, FN_REG},
332 !   {"FLIP", fun_flip, 1, -1, FN_REG},
333 !   {"FLOORDIV", fun_floordiv, 2, 2, FN_REG},
334 !   {"FN", fun_fn, 1, INT_MAX, FN_NOPARSE},
335 !   {"FOLD", fun_fold, 2, 4, FN_REG},
336 !   {"FOLDERSTATS", fun_folderstats, 0, 2, FN_REG},
337 !   {"FOLLOWERS", fun_followers, 1, 1, FN_REG},
338 !   {"FOLLOWING", fun_following, 1, 1, FN_REG},
339 !   {"FOREACH", fun_foreach, 2, 4, FN_REG},
340 !   {"FRACTION", fun_fraction, 1, 1, FN_REG},
341 !   {"FUNCTIONS", fun_functions, 0, 1, FN_REG},
342 !   {"FULLALIAS", fun_fullalias, 1, 1, FN_REG},
343 !   {"FULLNAME", fun_fullname, 1, 1, FN_REG},
344 !   {"GET", fun_get, 1, 1, FN_REG},
345 !   {"GET_EVAL", fun_get_eval, 1, 1, FN_REG},
346 !   {"GRAB", fun_grab, 2, 3, FN_REG},
347 !   {"GRABALL", fun_graball, 2, 4, FN_REG},
348 !   {"GREP", fun_grep, 3, 3, FN_REG},
349 !   {"GREPI", fun_grep, 3, 3, FN_REG},
350 !   {"GT", fun_gt, 2, 2, FN_REG},
351 !   {"GTE", fun_gte, 2, 2, FN_REG},
352 !   {"HASATTR", fun_hasattr, 2, 2, FN_REG},
353 !   {"HASATTRP", fun_hasattr, 2, 2, FN_REG},
354 !   {"HASATTRPVAL", fun_hasattr, 2, 2, FN_REG},
355 !   {"HASATTRVAL", fun_hasattr, 2, 2, FN_REG},
356 !   {"HASFLAG", fun_hasflag, 2, 2, FN_REG},
357 !   {"HASPOWER", fun_haspower, 2, 2, FN_REG},
358 !   {"HASTYPE", fun_hastype, 2, 2, FN_REG},
359 !   {"HEIGHT", fun_height, 1, 2, FN_REG},
360 !   {"HIDDEN", fun_hidden, 1, 1, FN_REG},
361 !   {"HOME", fun_home, 1, 1, FN_REG},
362 !   {"HOST", fun_hostname, 1, 1, FN_REG},
363 !   {"HOSTNAME", fun_hostname, 1, 1, FN_REG},
364 !   {"IDLE", fun_idlesecs, 1, 1, FN_REG},
365 !   {"IDLESECS", fun_idlesecs, 1, 1, FN_REG},
366 !   {"IF", fun_if, 2, 3, FN_NOPARSE},
367 !   {"IFELSE", fun_if, 3, 3, FN_NOPARSE},
368 !   {"ILEV", fun_ilev, 0, 0, FN_REG},
369 !   {"INAME", fun_iname, 1, 1, FN_REG},
370 !   {"INC", fun_inc, 1, 1, FN_REG},
371 !   {"INDEX", fun_index, 4, 4, FN_REG},
372 !   {"INSERT", fun_insert, 3, 4, FN_REG},
373 !   {"INUM", fun_inum, 1, 1, FN_REG},
374 !   {"IPADDR", fun_ipaddr, 1, 1, FN_REG},
375 !   {"ISDAYLIGHT", fun_isdaylight, 0, 0, FN_REG},
376 !   {"ISDBREF", fun_isdbref, 1, 1, FN_REG},
377 !   {"ISINT", fun_isint, 1, 1, FN_REG},
378 !   {"ISNUM", fun_isnum, 1, 1, FN_REG},
379 !   {"ISOBJID", fun_isobjid, 1, 1, FN_REG},
380 !   {"ISWORD", fun_isword, 1, 1, FN_REG},
381 !   {"ITER", fun_iter, 2, 4, FN_NOPARSE},
382 !   {"ITEMS", fun_items, 2, 2, FN_REG},
383 !   {"ITEMIZE", fun_itemize, 1, 4, FN_REG},
384 !   {"ITEXT", fun_itext, 1, 1, FN_REG},
385 !   {"LAST", fun_last, 1, 2, FN_REG},
386 !   {"LATTR", fun_lattr, 1, 2, FN_REG},
387 !   {"LATTRP", fun_lattr, 1, 2, FN_REG},
388 !   {"LCON", fun_dbwalker, 1, 1, FN_REG},
389 !   {"LCSTR", fun_lcstr, 1, -1, FN_REG},
390 !   {"LDELETE", fun_ldelete, 2, 3, FN_REG},
391 !   {"LEFT", fun_left, 2, 2, FN_REG},
392 !   {"LEMIT", fun_lemit, 1, -1, FN_REG},
393 !   {"LETQ", fun_letq, 1, INT_MAX, FN_NOPARSE},
394 !   {"LEXITS", fun_dbwalker, 1, 1, FN_REG},
395 !   {"LFLAGS", fun_lflags, 0, 1, FN_REG},
396 !   {"LINK", fun_link, 2, 3, FN_REG},
397 !   {"LIST", fun_list, 1, 1, FN_REG},
398 !   {"LIT", fun_lit, 1, -1, FN_LITERAL},
399 !   {"LJUST", fun_ljust, 2, 3, FN_REG},
400 !   {"LLOCKFLAGS", fun_lockflags, 0, 1, FN_REG},
401 !   {"LLOCKS", fun_locks, 1, 1, FN_REG},
402 !   {"LMATH", fun_lmath, 2, 3, FN_REG},
403 !   {"LNUM", fun_lnum, 1, 3, FN_REG},
404 !   {"LOC", fun_loc, 1, 1, FN_REG},
405 !   {"LOCALIZE", fun_localize, 1, 1, FN_NOPARSE},
406 !   {"LOCATE", fun_locate, 3, 3, FN_REG},
407 !   {"LOCK", fun_lock, 1, 2, FN_REG},
408 !   {"LOCKFLAGS", fun_lockflags, 0, 1, FN_REG},
409 !   {"LOCKS", fun_locks, 1, 1, FN_REG},
410 !   {"LPARENT", fun_lparent, 1, 1, FN_REG},
411 !   {"LPLAYERS", fun_dbwalker, 1, 1, FN_REG},
412 !   {"LPORTS", fun_lports, 0, 0, FN_REG},
413 !   {"LPOS", fun_lpos, 2, 2, FN_REG},
414 !   {"LSEARCH", fun_lsearch, 1, INT_MAX, FN_REG},
415 !   {"LSEARCHR", fun_lsearch, 1, INT_MAX, FN_REG},
416 !   {"LSET", fun_lset, 2, 2, FN_REG},
417 !   {"LSTATS", fun_lstats, 0, 1, FN_REG},
418 !   {"LT", fun_lt, 2, 2, FN_REG},
419 !   {"LTE", fun_lte, 2, 2, FN_REG},
420 !   {"LTHINGS", fun_dbwalker, 1, 1, FN_REG},
421 !   {"LVCON", fun_dbwalker, 1, 1, FN_REG},
422 !   {"LVEXITS", fun_dbwalker, 1, 1, FN_REG},
423 !   {"LVPLAYERS", fun_dbwalker, 1, 1, FN_REG},
424 !   {"LVTHINGS", fun_dbwalker, 1, 1, FN_REG},
425 !   {"LWHO", fun_lwho, 0, 1, FN_REG},
426 !   {"LWHOID", fun_lwho, 0, 1, FN_REG},
427 !   {"MAIL", fun_mail, 0, 2, FN_REG},
428 !   {"MAILFROM", fun_mailfrom, 1, 2, FN_REG},
429 !   {"MAILSEND", fun_mailsend, 2, 2, FN_REG},
430 !   {"MAILSTATS", fun_mailstats, 1, 1, FN_REG},
431 !   {"MAILDSTATS", fun_mailstats, 1, 1, FN_REG},
432 !   {"MAILFSTATS", fun_mailstats, 1, 1, FN_REG},
433 !   {"MAILSTATUS", fun_mailstatus, 1, 2, FN_REG},
434 !   {"MAILSUBJECT", fun_mailsubject, 1, 2, FN_REG},
435 !   {"MAILTIME", fun_mailtime, 1, 2, FN_REG},
436 !   {"MALIAS", fun_malias, 0, 2, FN_REG},
437 !   {"MAP", fun_map, 2, 4, FN_REG},
438 !   {"MAPSQL", fun_mapsql, 2, 4, FN_REG},
439 !   {"MATCH", fun_match, 2, 3, FN_REG},
440 !   {"MATCHALL", fun_matchall, 2, 4, FN_REG},
441 !   {"MAX", fun_max, 1, INT_MAX, FN_REG},
442 !   {"MEAN", fun_mean, 1, INT_MAX, FN_REG},
443 !   {"MEDIAN", fun_median, 1, INT_MAX, FN_REG},
444 !   {"MEMBER", fun_member, 2, 3, FN_REG},
445 !   {"MERGE", fun_merge, 3, 3, FN_REG},
446 !   {"MESSAGE", fun_message, 3, 13, FN_REG},
447 !   {"MID", fun_mid, 3, 3, FN_REG},
448 !   {"MIN", fun_min, 1, INT_MAX, FN_REG},
449 !   {"MIX", fun_mix, 3, 12, FN_REG},
450 !   {"MODULO", fun_modulo, 2, 2, FN_REG},
451 !   {"MONEY", fun_money, 1, 1, FN_REG},
452 !   {"MSECS", fun_msecs, 1, 1, FN_REG},
453 !   {"MTIME", fun_mtime, 1, 2, FN_REG},
454 !   {"MUDNAME", fun_mudname, 0, 0, FN_REG},
455 !   {"MUL", fun_mul, 2, INT_MAX, FN_REG},
456 !   {"MUNGE", fun_munge, 3, 5, FN_REG},
457 !   {"MWHO", fun_lwho, 0, 0, FN_REG},
458 !   {"MWHOID", fun_lwho, 0, 0, FN_REG},
459 !   {"NAME", fun_name, 0, 2, FN_REG},
460 !   {"NAMELIST", fun_namelist, 1, 1, FN_REG},
461 !   {"NAMEGRAB", fun_namegrab, 2, 3, FN_REG},
462 !   {"NAMEGRABALL", fun_namegraball, 2, 3, FN_REG},
463 !   {"NAND", fun_nand, 1, INT_MAX, FN_REG},
464 !   {"NATTR", fun_nattr, 1, 1, FN_REG},
465 !   {"NATTRP", fun_nattr, 1, 1, FN_REG},
466 !   {"NCHILDREN", fun_lsearch, 1, 1, FN_REG},
467 !   {"NCON", fun_dbwalker, 1, 1, FN_REG},
468 !   {"NCOND", fun_if, 2, INT_MAX, FN_NOPARSE},
469 !   {"NCONDALL", fun_if, 2, INT_MAX, FN_NOPARSE},
470 !   {"NEXITS", fun_dbwalker, 1, 1, FN_REG},
471 !   {"NPLAYERS", fun_dbwalker, 1, 1, FN_REG},
472 !   {"NEARBY", fun_nearby, 2, 2, FN_REG},
473 !   {"NEQ", fun_neq, 2, 2, FN_REG},
474 !   {"NEXT", fun_next, 1, 1, FN_REG},
475 !   {"NEXTDBREF", fun_nextdbref, 0, 0, FN_REG},
476 !   {"NLSEARCH", fun_lsearch, 1, INT_MAX, FN_REG},
477 !   {"NMWHO", fun_nwho, 0, 0, FN_REG},
478 !   {"NOR", fun_nor, 1, INT_MAX, FN_REG},
479 !   {"NOT", fun_not, 1, 1, FN_REG},
480 !   {"NSCEMIT", fun_cemit, 2, 3, FN_REG},
481 !   {"NSEARCH", fun_lsearch, 1, INT_MAX, FN_REG},
482 !   {"NSEMIT", fun_emit, 1, -1, FN_REG},
483 !   {"NSLEMIT", fun_lemit, 1, -1, FN_REG},
484 !   {"NSOEMIT", fun_oemit, 2, -2, FN_REG},
485 !   {"NSPEMIT", fun_pemit, 2, -2, FN_REG},
486 !   {"NSPROMPT", fun_prompt, 2, -2, FN_REG},
487 !   {"NSREMIT", fun_remit, 2, -2, FN_REG},
488 !   {"NSZEMIT", fun_zemit, 2, -2, FN_REG},
489 !   {"NTHINGS", fun_dbwalker, 1, 1, FN_REG},
490 !   {"NUM", fun_num, 1, 1, FN_REG},
491 !   {"NUMVERSION", fun_numversion, 0, 0, FN_REG},
492 !   {"NULL", fun_null, 1, INT_MAX, FN_REG},
493 !   {"NVCON", fun_dbwalker, 1, 1, FN_REG},
494 !   {"NVEXITS", fun_dbwalker, 1, 1, FN_REG},
495 !   {"NVPLAYERS", fun_dbwalker, 1, 1, FN_REG},
496 !   {"NVTHINGS", fun_dbwalker, 1, 1, FN_REG},
497 !   {"NWHO", fun_nwho, 0, 1, FN_REG},
498 !   {"OBJ", fun_obj, 1, 1, FN_REG},
499 !   {"OBJEVAL", fun_objeval, 2, -2, FN_NOPARSE},
500 !   {"OBJID", fun_objid, 1, 1, FN_REG},
501 !   {"OBJMEM", fun_objmem, 1, 1, FN_REG},
502 !   {"OEMIT", fun_oemit, 2, -2, FN_REG},
503 !   {"OPEN", fun_open, 2, 2, FN_REG},
504 !   {"OR", fun_or, 2, INT_MAX, FN_REG},
505 !   {"ORD", fun_ord, 1, 1, FN_REG},
506 !   {"ORDINAL", fun_spellnum, 1, 1, FN_REG},
507 !   {"ORFLAGS", fun_orflags, 2, 2, FN_REG},
508 !   {"ORLFLAGS", fun_orlflags, 2, 2, FN_REG},
509 !   {"ORLPOWERS", fun_orlflags, 2, 2, FN_REG},
510 !   {"ORPOWERS", fun_orflags, 2, 2, FN_REG},
511 !   {"OWNER", fun_owner, 1, 1, FN_REG},
512 !   {"PARENT", fun_parent, 1, 2, FN_REG},
513 !   {"PCREATE", fun_pcreate, 2, 2, FN_REG},
514 !   {"PEMIT", fun_pemit, 2, -2, FN_REG},
515 !   {"PLAYERMEM", fun_playermem, 1, 1, FN_REG},
516 !   {"PLAYER", fun_player, 1, 1, FN_REG},
517 !   {"PMATCH", fun_pmatch, 1, 1, FN_REG},
518 !   {"POLL", fun_poll, 0, 0, FN_REG},
519 !   {"PORTS", fun_ports, 1, 1, FN_REG},
520 !   {"POS", fun_pos, 2, 2, FN_REG},
521 !   {"POSS", fun_poss, 1, 1, FN_REG},
522 !   {"POWERS", fun_powers, 1, 2, FN_REG},
523 !   {"PROMPT", fun_prompt, 2, -2, FN_REG},
524 !   {"PUEBLO", fun_pueblo, 1, 1, FN_REG},
525 !   {"QUOTA", fun_quota, 1, 1, FN_REG},
526 !   {"R", fun_r, 1, 1, FN_REG},
527 !   {"RAND", fun_rand, 1, 2, FN_REG},
528 !   {"RANDWORD", fun_randword, 1, 2, FN_REG},
529 !   {"RECV", fun_recv, 1, 1, FN_REG},
530 !   {"REGEDIT", fun_regreplace, 3, INT_MAX, FN_NOPARSE},
531 !   {"REGEDITALL", fun_regreplace, 3, INT_MAX, FN_NOPARSE},
532 !   {"REGEDITALLI", fun_regreplace, 3, INT_MAX, FN_NOPARSE},
533 !   {"REGEDITI", fun_regreplace, 3, INT_MAX, FN_NOPARSE},
534 !   {"REGMATCH", fun_regmatch, 2, 3, FN_REG},
535 !   {"REGMATCHI", fun_regmatch, 2, 3, FN_REG},
536 !   {"REGRAB", fun_regrab, 2, 4, FN_REG},
537 !   {"REGRABALL", fun_regrab, 2, 4, FN_REG},
538 !   {"REGRABALLI", fun_regrab, 2, 4, FN_REG},
539 !   {"REGRABI", fun_regrab, 2, 3, FN_REG},
540 !   {"REGREP", fun_regrep, 3, 3, FN_REG},
541 !   {"REGREPI", fun_regrep, 3, 3, FN_REG},
542 !   {"RESWITCH", fun_reswitch, 3, INT_MAX, FN_NOPARSE},
543 !   {"RESWITCHALL", fun_reswitch, 3, INT_MAX, FN_NOPARSE},
544 !   {"RESWITCHALLI", fun_reswitch, 3, INT_MAX, FN_NOPARSE},
545 !   {"RESWITCHI", fun_reswitch, 3, INT_MAX, FN_NOPARSE},
546 !   {"REMAINDER", fun_remainder, 2, 2, FN_REG},
547 !   {"REMIT", fun_remit, 2, -2, FN_REG},
548 !   {"REMOVE", fun_remove, 2, 3, FN_REG},
549 !   {"REPEAT", fun_repeat, 2, 2, FN_REG},
550 !   {"REPLACE", fun_replace, 3, 4, FN_REG},
551 !   {"REST", fun_rest, 1, 2, FN_REG},
552 !   {"RESTARTS", fun_restarts, 0, 0, FN_REG},
553 !   {"RESTARTTIME", fun_restarttime, 0, 0, FN_REG},
554 !   {"REVERSE", fun_flip, 1, -1, FN_REG},
555 !   {"REVWORDS", fun_revwords, 1, 3, FN_REG},
556 !   {"RIGHT", fun_right, 2, 2, FN_REG},
557 !   {"RJUST", fun_rjust, 2, 3, FN_REG},
558 !   {"RLOC", fun_rloc, 2, 2, FN_REG},
559 !   {"RNUM", fun_rnum, 2, 2, FN_REG},
560 !   {"ROOM", fun_room, 1, 1, FN_REG},
561 !   {"ROOT", fun_root, 2, 2, FN_REG},
562 !   {"S", fun_s, 1, -1, FN_REG},
563 !   {"SCAN", fun_scan, 1, -2, FN_REG},
564 !   {"SCRAMBLE", fun_scramble, 1, -1, FN_REG},
565 !   {"SECS", fun_secs, 0, 0, FN_REG},
566 !   {"SECURE", fun_secure, 1, -1, FN_REG},
567 !   {"SENT", fun_sent, 1, 1, FN_REG},
568 !   {"SET", fun_set, 2, 2, FN_REG},
569 !   {"SETQ", fun_setq, 2, INT_MAX, FN_REG},
570 !   {"SETR", fun_setq, 2, INT_MAX, FN_REG},
571 !   {"SETDIFF", fun_setdiff, 2, 5, FN_REG},
572 !   {"SETINTER", fun_setinter, 2, 5, FN_REG},
573 !   {"SETUNION", fun_setunion, 2, 5, FN_REG},
574 !   {"SHA0", fun_sha0, 1, 1, FN_REG},
575 !   {"SHL", fun_shl, 2, 2, FN_REG},
576 !   {"SHR", fun_shr, 2, 2, FN_REG},
577 !   {"SHUFFLE", fun_shuffle, 1, 3, FN_REG},
578 !   {"SIGN", fun_sign, 1, 1, FN_REG},
579 !   {"SORT", fun_sort, 1, 4, FN_REG},
580 !   {"SORTBY", fun_sortby, 2, 4, FN_REG},
581 !   {"SORTKEY", fun_sortkey, 2, 5, FN_REG},
582 !   {"SOUNDEX", fun_soundex, 1, 1, FN_REG},
583 !   {"SOUNDSLIKE", fun_soundlike, 2, 2, FN_REG},
584 !   {"SPACE", fun_space, 1, 1, FN_REG},
585 !   {"SPEAK", fun_speak, 2, 7, FN_REG},
586 !   {"SPEAKPENN", fun_speak, 2, 7, FN_REG},
587 !   {"SPELLNUM", fun_spellnum, 1, 1, FN_REG},
588 !   {"SPLICE", fun_splice, 3, 4, FN_REG},
589 !   {"SQL", fun_sql, 1, 3, FN_REG},
590 !   {"SQLESCAPE", fun_sql_escape, 1, 1, FN_REG},
591 !   {"SQUISH", fun_squish, 1, 2, FN_REG},
592 !   {"SSL", fun_ssl, 1, 1, FN_REG},
593 !   {"STARTTIME", fun_starttime, 0, 0, FN_REG},
594 !   {"STEP", fun_step, 3, 5, FN_REG},
595 !   {"STRCAT", fun_strcat, 1, INT_MAX, FN_REG},
596 !   {"STRINGSECS", fun_stringsecs, 1, 1, FN_REG},
597 !   {"STRINSERT", fun_strinsert, 3, -3, FN_REG},
598 !   {"STRIPACCENTS", fun_stripaccents, 1, 1, FN_REG},
599 !   {"STRIPANSI", fun_stripansi, 1, -1, FN_REG},
600 !   {"STRLEN", fun_strlen, 1, -1, FN_REG},
601 !   {"STRMATCH", fun_strmatch, 2, 3, FN_REG},
602 !   {"STRREPLACE", fun_strreplace, 4, 4, FN_REG},
603 !   {"SUB", fun_sub, 2, 2, FN_REG},
604 !   {"SUBJ", fun_subj, 1, 1, FN_REG},
605 !   {"SWITCH", fun_switch, 3, INT_MAX, FN_NOPARSE},
606 !   {"SWITCHALL", fun_switch, 3, INT_MAX, FN_NOPARSE},
607 !   {"T", fun_t, 1, 1, FN_REG},
608 !   {"TABLE", fun_table, 1, 5, FN_REG},
609 !   {"TEL", fun_tel, 2, 4, FN_REG},
610 !   {"TERMINFO", fun_terminfo, 1, 1, FN_REG},
611 !   {"TEXTENTRIES", fun_textentries, 2, 3, FN_REG},
612 !   {"TEXTFILE", fun_textfile, 2, 2, FN_REG},
613 !   {"TIME", fun_time, 0, 1, FN_REG},
614 !   {"TIMEFMT", fun_timefmt, 1, 2, FN_REG},
615 !   {"TIMESTRING", fun_timestring, 1, 2, FN_REG},
616 !   {"TR", fun_tr, 3, 3, FN_REG},
617 !   {"TRIM", fun_trim, 1, 3, FN_REG},
618 !   {"TRIMPENN", fun_trim, 1, 3, FN_REG},
619 !   {"TRIMTINY", fun_trim, 1, 3, FN_REG},
620 !   {"TRUNC", fun_trunc, 1, 1, FN_REG},
621 !   {"TYPE", fun_type, 1, 1, FN_REG},
622 !   {"UCSTR", fun_ucstr, 1, -1, FN_REG},
623 !   {"UDEFAULT", fun_uldefault, 2, 12, FN_NOPARSE},
624 !   {"UFUN", fun_ufun, 1, 11, FN_REG},
625 !   {"ULAMBDA", fun_ulambda, 1, 11, FN_REG},
626 !   {"ULDEFAULT", fun_uldefault, 1, 12, FN_NOPARSE},
627 !   {"ULOCAL", fun_ulocal, 1, 11, FN_REG},
628 !   {"UNIQUE", fun_unique, 1, 4, FN_REG},
629 !   {"UTCTIME", fun_time, 0, 0, FN_REG},
630 !   {"U", fun_ufun, 1, 11, FN_REG},
631 !   {"V", fun_v, 1, 1, FN_REG},
632 !   {"VALID", fun_valid, 2, 2, FN_REG},
633 !   {"VERSION", fun_version, 0, 0, FN_REG},
634 !   {"VISIBLE", fun_visible, 2, 2, FN_REG},
635 !   {"WHERE", fun_where, 1, 1, FN_REG},
636 !   {"WIDTH", fun_width, 1, 2, FN_REG},
637 !   {"WILDGREP", fun_grep, 3, 3, FN_REG},
638 !   {"WILDGREPI", fun_grep, 3, 3, FN_REG},
639 !   {"WIPE", fun_wipe, 1, 1, FN_REG},
640 !   {"WORDPOS", fun_wordpos, 2, 3, FN_REG},
641 !   {"WORDS", fun_words, 1, 2, FN_REG},
642 !   {"WRAP", fun_wrap, 2, 4, FN_REG},
643 !   {"XATTR", fun_lattr, 3, 4, FN_REG},
644 !   {"XATTRP", fun_lattr, 3, 4, FN_REG},
645 !   {"XCON", fun_dbwalker, 3, 3, FN_REG},
646 !   {"XEXITS", fun_dbwalker, 3, 3, FN_REG},
647 !   {"XMWHO", fun_xwho, 2, 2, FN_REG},
648 !   {"XMWHOID", fun_xwho, 2, 2, FN_REG},
649 !   {"XPLAYERS", fun_dbwalker, 3, 3, FN_REG},
650 !   {"XGET", fun_xget, 2, 2, FN_REG},
651 !   {"XOR", fun_xor, 2, INT_MAX, FN_REG},
652 !   {"XTHINGS", fun_dbwalker, 3, 3, FN_REG},
653 !   {"XVCON", fun_dbwalker, 3, 3, FN_REG},
654 !   {"XVEXITS", fun_dbwalker, 3, 3, FN_REG},
655 !   {"XVPLAYERS", fun_dbwalker, 3, 3, FN_REG},
656 !   {"XVTHINGS", fun_dbwalker, 3, 3, FN_REG},
657 !   {"XWHO", fun_xwho, 2, 2, FN_REG},
658 !   {"XWHOID", fun_xwho, 2, 2, FN_REG},
659 !   {"ZEMIT", fun_zemit, 2, -2, FN_REG},
660 !   {"ZFUN", fun_zfun, 1, 11, FN_REG},
661 !   {"ZONE", fun_zone, 1, 2, FN_REG},
662 !   {"ZMWHO", fun_zwho, 1, 1, FN_REG},
663 !   {"ZWHO", fun_zwho, 1, 2, FN_REG},
664 !   {"VADD", fun_vadd, 2, 3, FN_REG},
665 !   {"VCROSS", fun_vcross, 2, 3, FN_REG},
666 !   {"VSUB", fun_vsub, 2, 3, FN_REG},
667 !   {"VMAX", fun_vmax, 2, 3, FN_REG},
668 !   {"VMIN", fun_vmin, 2, 3, FN_REG},
669 !   {"VMUL", fun_vmul, 2, 3, FN_REG},
670 !   {"VDOT", fun_vdot, 2, 3, FN_REG},
671 !   {"VMAG", fun_vmag, 1, 2, FN_REG},
672 !   {"VDIM", fun_words, 1, 2, FN_REG},
673 !   {"VUNIT", fun_vunit, 1, 2, FN_REG},
674 !   {"ACOS", fun_acos, 1, 2, FN_REG},
675 !   {"ASIN", fun_asin, 1, 2, FN_REG},
676 !   {"ATAN", fun_atan, 1, 2, FN_REG},
677 !   {"ATAN2", fun_atan2, 2, 3, FN_REG},
678 !   {"CEIL", fun_ceil, 1, 1, FN_REG},
679 !   {"COS", fun_cos, 1, 2, FN_REG},
680 !   {"CTU", fun_ctu, 3, 3, FN_REG},
681 !   {"E", fun_e, 0, 0, FN_REG},
682 !   {"EXP", fun_exp, 1, 1, FN_REG},
683 !   {"FDIV", fun_fdiv, 2, 2, FN_REG},
684 !   {"FMOD", fun_fmod, 2, 2, FN_REG},
685 !   {"FLOOR", fun_floor, 1, 1, FN_REG},
686 !   {"LOG", fun_log, 1, 2, FN_REG},
687 !   {"LN", fun_ln, 1, 1, FN_REG},
688 !   {"PI", fun_pi, 0, 0, FN_REG},
689 !   {"POWER", fun_power, 2, 2, FN_REG},
690 !   {"ROUND", fun_round, 2, 2, FN_REG},
691 !   {"SIN", fun_sin, 1, 2, FN_REG},
692 !   {"SQRT", fun_sqrt, 1, 1, FN_REG},
693 !   {"STDDEV", fun_stddev, 1, INT_MAX, FN_REG},
694 !   {"TAN", fun_tan, 1, 2, FN_REG},
695 !   {"HTML", fun_html, 1, 1, FN_REG},
696 !   {"TAG", fun_tag, 1, INT_MAX, FN_REG},
697 !   {"ENDTAG", fun_endtag, 1, 1, FN_REG},
698 !   {"TAGWRAP", fun_tagwrap, 2, 3, FN_REG},
699 !   {NULL, NULL, 0, 0, 0}
700   };
701  
702   /** List all functions.
703 --- 311,792 ----
704    * add_function().
705    */
706   FUNTAB flist[] = {
707 !   {"@@", fun_atat, 1, -1, FN_NOPARSE, 0},
708 !   {"ABS", fun_abs, 1, 1, FN_REG, 0},
709 !   {"ACCENT", fun_accent, 2, 2, FN_REG, 0},
710 !   {"ACCNAME", fun_accname, 1, 1, FN_REG, 0},
711 !   {"ADD", fun_add, 2, INT_MAX, FN_REG, 0},
712 !   {"AFTER", fun_after, 2, 2, FN_REG, 0},
713 !   {"ALIAS", fun_alias, 1, 2, FN_REG, 0},
714 !   {"ALIGN", fun_align, 2, INT_MAX, FN_REG, 0},
715 !   {"ALLOF", fun_allof, 2, INT_MAX, FN_NOPARSE, 0},
716 !   {"ALPHAMAX", fun_alphamax, 1, INT_MAX, FN_REG, 0},
717 !   {"ALPHAMIN", fun_alphamin, 1, INT_MAX, FN_REG, 0},
718 !   {"AND", fun_and, 2, INT_MAX, FN_REG, 0},
719 !   {"ANDFLAGS", fun_andflags, 2, 2, FN_REG, 0},
720 !   {"ANDLFLAGS", fun_andlflags, 2, 2, FN_REG, FUN_ARG_LIST},
721 !   {"ANDLPOWERS", fun_andlflags, 2, 2, FN_REG, FUN_ARG_LIST | FUN_ARG_POWERS},
722 !   {"ANDPOWERS", fun_andflags, 2, 2, FN_REG, FUN_ARG_POWERS},
723 !   {"ANSI", fun_ansi, 2, -2, FN_REG, 0},
724   #ifdef ANSI_DEBUG
725 !   {"ANSIINSPECT", fun_ansiinspect, 1, 2, FN_REG, 0},
726   #endif
727 !   {"APOSS", fun_aposs, 1, 1, FN_REG,0 },
728 !   {"ART", fun_art, 1, 1, FN_REG, 0},
729 !   {"ATRLOCK", fun_atrlock, 1, 2, FN_REG, 0},
730 !   {"ATTRIB_SET", fun_attrib_set, 1, -2, FN_REG, 0},
731 !   {"BAND", fun_band, 1, INT_MAX, FN_REG, 0},
732 !   {"BASECONV", fun_baseconv, 3, 3, FN_REG, 0},
733 !   {"BEEP", fun_beep, 0, 1, FN_REG, 0},
734 !   {"BEFORE", fun_before, 2, 2, FN_REG, 0},
735 !   {"BNAND", fun_bnand, 2, 2, FN_REG, 0},
736 !   {"BNOT", fun_bnot, 1, 1, FN_REG, 0},
737 !   {"BOR", fun_bor, 1, INT_MAX, FN_REG, 0},
738 !   {"BOUND", fun_bound, 2, 3, FN_REG, 0},
739 !   {"BRACKETS", fun_brackets, 1, 1, FN_REG, 0},
740 !   {"BXOR", fun_bxor, 1, INT_MAX, FN_REG, 0},
741 !   {"CAND", fun_cand, 2, INT_MAX, FN_NOPARSE, 0},
742 !   {"CAPSTR", fun_capstr, 1, -1, FN_REG, 0},
743 !   {"CASE", fun_switch, 3, INT_MAX, FN_NOPARSE, FUN_ARG_NOEVAL},
744 !   {"CASEALL", fun_switch, 3, INT_MAX, FN_NOPARSE, FUN_ARG_NOEVAL | FUN_ARG_ALL},
745 !   {"CAT", fun_cat, 1, INT_MAX, FN_REG, 0},
746 !   {"CBUFFER", fun_cinfo, 1, 1, FN_REG, FUN_ARG_CHANBUFF},
747 !   {"CDESC", fun_cinfo, 1, 1, FN_REG, FUN_ARG_CHANDESC},
748 !   {"CEMIT", fun_cemit, 2, 3, FN_REG, 0},
749 !   {"CFLAGS", fun_cflags, 1, 2, FN_REG, 0},
750 !   {"CHANNELS", fun_channels, 0, 2, FN_REG, 0},
751 !   {"CLFLAGS", fun_cflags, 1, 2, FN_REG, FUN_ARG_LIST},
752 !   {"CLOCK", fun_clock, 1, 2, FN_REG, 0},
753 !   {"CMSGS", fun_cinfo, 1, 1, FN_REG, FUN_ARG_CHANMSGS},
754 !   {"COWNER", fun_cowner, 1, 1, FN_REG, 0},
755 !   {"CRECALL", fun_crecall, 1, 5, FN_REG, 0},
756 !   {"CSTATUS", fun_cstatus, 2, 2, FN_REG, 0},
757 !   {"CTITLE", fun_ctitle, 2, 2, FN_REG, 0},
758 !   {"CUSERS", fun_cinfo, 1, 1, FN_REG, FUN_ARG_CHANUSER},
759 !   {"CWHO", fun_cwho, 1, 1, FN_REG, 0},
760 !   {"CENTER", fun_center, 2, 4, FN_REG, 0},
761 !   {"CHILDREN", fun_lsearch, 1, 1, FN_REG, FUN_ARG_LIMIT},
762 !   {"CHR", fun_chr, 1, 1, FN_REG, 0},
763 !   {"CHECKPASS", fun_checkpass, 2, 2, FN_REG | FN_WIZARD, 0},
764 !   {"CLONE", fun_clone, 1, 1, FN_REG, 0},
765 !   {"CMDS", fun_cmds, 1, 1, FN_REG, 0},
766 !   {"COMP", fun_comp, 2, 3, FN_REG, 0},
767 !   {"CON", fun_con, 1, 1, FN_REG, 0},
768 !   {"COND", fun_if, 2, INT_MAX, FN_NOPARSE, 0},
769 !   {"CONDALL", fun_if, 2, INT_MAX, FN_NOPARSE, FUN_ARG_ALL},
770 !   {"CONFIG", fun_config, 1, 1, FN_REG, 0},
771 !   {"CONN", fun_conn, 1, 1, FN_REG, 0},
772 !   {"CONTROLS", fun_controls, 2, 2, FN_REG, 0},
773 !   {"CONVSECS", fun_convsecs, 1, 2, FN_REG, 0},
774 !   {"CONVUTCSECS", fun_convsecs, 1, 1, FN_REG, FUN_ARG_NEW},
775 !   {"CONVTIME", fun_convtime, 1, 1, FN_REG, 0},
776 !   {"COR", fun_cor, 2, INT_MAX, FN_NOPARSE, 0},
777 !   {"CREATE", fun_create, 1, 2, FN_REG, 0},
778 !   {"CSECS", fun_csecs, 1, 1, FN_REG, 0},
779 !   {"CTIME", fun_ctime, 1, 2, FN_REG, 0},
780 !   {"DEC", fun_dec, 1, 1, FN_REG, 0},
781 !   {"DECODE64", fun_decode64, 1, -1, FN_REG, 0},
782 !   {"DECOMPOSE", fun_decompose, 1, -1, FN_REG, 0},
783 !   {"DECRYPT", fun_decrypt, 2, 3, FN_REG, 0},
784 !   {"DEFAULT", fun_default, 2, INT_MAX, FN_NOPARSE, 0},
785 !   {"DELETE", fun_delete, 3, 3, FN_REG, 0},
786 !   {"DIE", fun_die, 2, 3, FN_REG, 0},
787 !   {"DIG", fun_dig, 1, 3, FN_REG, 0},
788 !   {"DIGEST", fun_digest, 2, -2, FN_REG, 0},
789 !   {"DIST2D", fun_dist2d, 4, 4, FN_REG, 0},
790 !   {"DIST3D", fun_dist3d, 6, 6, FN_REG, 0},
791 !   {"DIV", fun_div, 2, 2, FN_REG, 0},
792 !   {"DOING", fun_doing, 1, 1, FN_REG, 0},
793 !   {"EDEFAULT", fun_edefault, 2, 2, FN_NOPARSE, 0},
794 !   {"EDIT", fun_edit, 3, INT_MAX, FN_REG, 0},
795 !   {"ELEMENT", fun_element, 3, 3, FN_REG, 0},
796 !   {"ELEMENTS", fun_elements, 2, 4, FN_REG, 0},
797 !   {"ELIST", fun_itemize, 1, 5, FN_REG, FUN_ARG_NEW},
798 !   {"ELOCK", fun_elock, 2, 2, FN_REG, 0},
799 !   {"EMIT", fun_emit, 1, -1, FN_REG, 0},
800 !   {"ENCODE64", fun_encode64, 1, -1, FN_REG, 0},
801 !   {"ENCRYPT", fun_encrypt, 2, 3, FN_REG, 0},
802 !   {"ENTRANCES", fun_entrances, 0, 4, FN_REG, 0},
803 !   {"ETIMEFMT", fun_etimefmt, 2, 2, FN_REG, 0},
804 !   {"EQ", fun_eq, 2, 2, FN_REG, 0},
805 !   {"EVAL", fun_eval, 2, 2, FN_REG, 0},
806 !   {"ESCAPE", fun_escape, 1, -1, FN_REG, 0},
807 !   {"EXIT", fun_exit, 1, 1, FN_REG, 0},
808 !   {"EXTRACT", fun_extract, 1, 4, FN_REG, 0},
809 !   {"FILTER", fun_filter, 2, 4, FN_REG, FUN_ARG_LIMIT},
810 !   {"FILTERBOOL", fun_filter, 2, 4, FN_REG, 0},
811 !   {"FINDABLE", fun_findable, 2, 2, FN_REG, 0},
812 !   {"FIRST", fun_first, 1, 2, FN_REG, 0},
813 !   {"FIRSTOF", fun_firstof, 0, INT_MAX, FN_NOPARSE, 0},
814 !   {"FLAGS", fun_flags, 0, 1, FN_REG, 0},
815 !   {"FLIP", fun_flip, 1, -1, FN_REG, 0},
816 !   {"FLOORDIV", fun_floordiv, 2, 2, FN_REG, 0},
817 !   {"FN", fun_fn, 1, INT_MAX, FN_NOPARSE, 0},
818 !   {"FOLD", fun_fold, 2, 4, FN_REG, 0},
819 !   {"FOLDERSTATS", fun_folderstats, 0, 2, FN_REG, 0},
820 !   {"FOLLOWERS", fun_followers, 1, 1, FN_REG, 0},
821 !   {"FOLLOWING", fun_following, 1, 1, FN_REG, 0},
822 !   {"FOREACH", fun_foreach, 2, 4, FN_REG, 0},
823 !   {"FRACTION", fun_fraction, 1, 1, FN_REG, 0},
824 !   {"FUNCTIONS", fun_functions, 0, 1, FN_REG, 0},
825 !   {"FULLALIAS", fun_fullalias, 1, 1, FN_REG, 0},
826 !   {"FULLNAME", fun_fullname, 1, 1, FN_REG, 0},
827 !   {"GET", fun_get, 1, 1, FN_REG, 0},
828 !   {"GET_EVAL", fun_get_eval, 1, 1, FN_REG, 0},
829 !   {"GRAB", fun_grab, 2, 3, FN_REG, 0},
830 !   {"GRABALL", fun_graball, 2, 4, FN_REG, 0},
831 !   {"GREP", fun_grep, 3, 3, FN_REG, 0},
832 !   {"GREPI", fun_grep, 3, 3, FN_REG, FUN_ARG_NOCASE},
833 !   {"GT", fun_gt, 2, 2, FN_REG, 0},
834 !   {"GTE", fun_gte, 2, 2, FN_REG, 0},
835 !   {"HASATTR", fun_hasattr, 2, 2, FN_REG, 0},
836 !   {"HASATTRP", fun_hasattr, 2, 2, FN_REG, FUN_ARG_ALL},
837 !   {"HASATTRPVAL", fun_hasattr, 2, 2, FN_REG, FUN_ARG_ALL | FUN_ARG_NEGATE},
838 !   {"HASATTRVAL", fun_hasattr, 2, 2, FN_REG, FUN_ARG_NEGATE},
839 !   {"HASFLAG", fun_hasflag, 2, 2, FN_REG, 0},
840 !   {"HASPOWER", fun_haspower, 2, 2, FN_REG, 0},
841 !   {"HASTYPE", fun_hastype, 2, 2, FN_REG, 0},
842 !   {"HEIGHT", fun_height, 1, 2, FN_REG, 0},
843 !   {"HIDDEN", fun_hidden, 1, 1, FN_REG, 0},
844 !   {"HOME", fun_home, 1, 1, FN_REG, 0},
845 !   {"HOST", fun_hostname, 1, 1, FN_REG, 0},
846 !   {"HOSTNAME", fun_hostname, 1, 1, FN_REG, 0},
847 !   {"IDLE", fun_idlesecs, 1, 1, FN_REG, 0},
848 !   {"IDLESECS", fun_idlesecs, 1, 1, FN_REG, 0},
849 !   {"IF", fun_if, 2, 3, FN_NOPARSE, 0},
850 !   {"IFELSE", fun_if, 3, 3, FN_NOPARSE, 0},
851 !   {"ILEV", fun_ilev, 0, 0, FN_REG, 0},
852 !   {"INAME", fun_iname, 1, 1, FN_REG, 0},
853 !   {"INC", fun_inc, 1, 1, FN_REG, 0},
854 !   {"INDEX", fun_index, 4, 4, FN_REG, 0},
855 !   {"INSERT", fun_insert, 3, 4, FN_REG, 0},
856 !   {"INUM", fun_inum, 1, 1, FN_REG, 0},
857 !   {"IPADDR", fun_ipaddr, 1, 1, FN_REG, 0},
858 !   {"ISDAYLIGHT", fun_isdaylight, 0, 0, FN_REG, 0},
859 !   {"ISDBREF", fun_isdbref, 1, 1, FN_REG, 0},
860 !   {"ISINT", fun_isint, 1, 1, FN_REG, 0},
861 !   {"ISNUM", fun_isnum, 1, 1, FN_REG, 0},
862 !   {"ISOBJID", fun_isobjid, 1, 1, FN_REG, 0},
863 !   {"ISWORD", fun_isword, 1, 1, FN_REG, 0},
864 !   {"ITER", fun_iter, 2, 4, FN_NOPARSE, 0},
865 !   {"ITEMS", fun_items, 2, 2, FN_REG, 0},
866 !   {"ITEMIZE", fun_itemize, 1, 4, FN_REG, 0},
867 !   {"ITEXT", fun_itext, 1, 1, FN_REG, 0},
868 !   {"LAST", fun_last, 1, 2, FN_REG, 0},
869 !   {"LATTR", fun_lattr, 1, 2, FN_REG, 0},
870 !   {"LATTRP", fun_lattr, 1, 2, FN_REG, FUN_ARG_ALL},
871 !   {"LCON", fun_dbwalker, 1, 1, FN_REG, FUN_ARG_PLAYERS | FUN_ARG_THINGS},
872 !   {"LCSTR", fun_lcstr, 1, -1, FN_REG, 0},
873 !   {"LDELETE", fun_ldelete, 2, 3, FN_REG, 0},
874 !   {"LEFT", fun_left, 2, 2, FN_REG, 0},
875 !   {"LEMIT", fun_lemit, 1, -1, FN_REG, 0},
876 !   {"LETQ", fun_letq, 1, INT_MAX, FN_NOPARSE, 0},
877 !   {"LEXITS", fun_dbwalker, 1, 1, FN_REG, FUN_ARG_EXITS},
878 !   {"LFLAGS", fun_lflags, 0, 1, FN_REG, 0},
879 !   {"LINK", fun_link, 2, 3, FN_REG, 0},
880 !   {"LIST", fun_list, 1, 1, FN_REG, 0},
881 !   {"LIT", fun_lit, 1, -1, FN_LITERAL, 0},
882 !   {"LJUST", fun_ljust, 2, 3, FN_REG, 0},
883 !   {"LLOCKFLAGS", fun_lockflags, 0, 1, FN_REG, FUN_ARG_LIST},
884 !   {"LLOCKS", fun_locks, 1, 1, FN_REG, 0},
885 !   {"LMATH", fun_lmath, 2, 3, FN_REG, 0},
886 !   {"LNUM", fun_lnum, 1, 3, FN_REG, 0},
887 !   {"LOC", fun_loc, 1, 1, FN_REG, 0},
888 !   {"LOCALIZE", fun_localize, 1, 1, FN_NOPARSE, 0},
889 !   {"LOCATE", fun_locate, 3, 3, FN_REG, 0},
890 !   {"LOCK", fun_lock, 1, 2, FN_REG, 0},
891 !   {"LOCKFLAGS", fun_lockflags, 0, 1, FN_REG, 0},
892 !   {"LOCKS", fun_locks, 1, 1, FN_REG, 0},
893 !   {"LPARENT", fun_lparent, 1, 1, FN_REG, 0},
894 !   {"LPLAYERS", fun_dbwalker, 1, 1, FN_REG, FUN_ARG_PLAYERS},
895 !   {"LPORTS", fun_lports, 0, 0, FN_REG, 0},
896 !   {"LPOS", fun_lpos, 2, 2, FN_REG, 0},
897 !   {"LSEARCH", fun_lsearch, 1, INT_MAX, FN_REG, 0},
898 !   {"LSEARCHR", fun_lsearch, 1, INT_MAX, FN_REG, FUN_ARG_NEGATE},
899 !   {"LSET", fun_lset, 2, 2, FN_REG, 0},
900 !   {"LSTATS", fun_lstats, 0, 1, FN_REG, 0},
901 !   {"LT", fun_lt, 2, 2, FN_REG, 0},
902 !   {"LTE", fun_lte, 2, 2, FN_REG, 0},
903 !   {"LTHINGS", fun_dbwalker, 1, 1, FN_REG, FUN_ARG_THINGS},
904 !   {"LVCON", fun_dbwalker, 1, 1, FN_REG, FUN_ARG_PLAYERS | FUN_ARG_THINGS | FUN_ARG_VISIBLE},
905 !   {"LVEXITS", fun_dbwalker, 1, 1, FN_REG, FUN_ARG_EXITS | FUN_ARG_VISIBLE},
906 !   {"LVPLAYERS", fun_dbwalker, 1, 1, FN_REG, FUN_ARG_PLAYERS | FUN_ARG_VISIBLE},
907 !   {"LVTHINGS", fun_dbwalker, 1, 1, FN_REG, FUN_ARG_THINGS | FUN_ARG_VISIBLE},
908 !   {"LWHO", fun_lwho, 0, 1, FN_REG, FUN_ARG_ALL},
909 !   {"LWHOID", fun_lwho, 0, 1, FN_REG, FUN_ARG_ALL | FUN_ARG_OBJID},
910 !   {"MAIL", fun_mail, 0, 2, FN_REG, 0},
911 !   {"MAILFROM", fun_mailfrom, 1, 2, FN_REG, 0},
912 !   {"MAILSEND", fun_mailsend, 2, 2, FN_REG, 0},
913 !   {"MAILSTATS", fun_mailstats, 1, 1, FN_REG, 0},
914 !   {"MAILDSTATS", fun_mailstats, 1, 1, FN_REG, FUN_ARG_COUNT},
915 !   {"MAILFSTATS", fun_mailstats, 1, 1, FN_REG, FUN_ARG_ALL},
916 !   {"MAILSTATUS", fun_mailstatus, 1, 2, FN_REG, 0},
917 !   {"MAILSUBJECT", fun_mailsubject, 1, 2, FN_REG, 0},
918 !   {"MAILTIME", fun_mailtime, 1, 2, FN_REG, 0},
919 !   {"MALIAS", fun_malias, 0, 2, FN_REG, 0},
920 !   {"MAP", fun_map, 2, 4, FN_REG, 0},
921 !   {"MAPSQL", fun_mapsql, 2, 4, FN_REG, 0},
922 !   {"MATCH", fun_match, 2, 3, FN_REG, 0},
923 !   {"MATCHALL", fun_matchall, 2, 4, FN_REG, 0},
924 !   {"MAX", fun_max, 1, INT_MAX, FN_REG, 0},
925 !   {"MEAN", fun_mean, 1, INT_MAX, FN_REG, 0},
926 !   {"MEDIAN", fun_median, 1, INT_MAX, FN_REG, 0},
927 !   {"MEMBER", fun_member, 2, 3, FN_REG, 0},
928 !   {"MERGE", fun_merge, 3, 3, FN_REG, 0},
929 !   {"MESSAGE", fun_message, 3, 13, FN_REG, 0},
930 !   {"MID", fun_mid, 3, 3, FN_REG, 0},
931 !   {"MIN", fun_min, 1, INT_MAX, FN_REG, 0},
932 !   {"MIX", fun_mix, 3, 12, FN_REG, 0},
933 !   {"MODULO", fun_modulo, 2, 2, FN_REG, 0},
934 !   {"MONEY", fun_money, 1, 1, FN_REG, 0},
935 !   {"MSECS", fun_msecs, 1, 1, FN_REG, 0},
936 !   {"MTIME", fun_mtime, 1, 2, FN_REG, 0},
937 !   {"MUDNAME", fun_mudname, 0, 0, FN_REG, 0},
938 !   {"MUL", fun_mul, 2, INT_MAX, FN_REG, 0},
939 !   {"MUNGE", fun_munge, 3, 5, FN_REG, 0},
940 !   {"MWHO", fun_lwho, 0, 0, FN_REG, 0},
941 !   {"MWHOID", fun_lwho, 0, 0, FN_REG, FUN_ARG_OBJID},
942 !   {"NAME", fun_name, 0, 2, FN_REG, 0},
943 !   {"NAMELIST", fun_namelist, 1, 1, FN_REG, 0},
944 !   {"NAMEGRAB", fun_namegrab, 2, 3, FN_REG, 0},
945 !   {"NAMEGRABALL", fun_namegraball, 2, 3, FN_REG, 0},
946 !   {"NAND", fun_nand, 1, INT_MAX, FN_REG, 0},
947 !   {"NATTR", fun_nattr, 1, 1, FN_REG, 0},
948 !   {"NATTRP", fun_nattr, 1, 1, FN_REG, FUN_ARG_ALL},
949 !   {"NCHILDREN", fun_lsearch, 1, 1, FN_REG, FUN_ARG_LIMIT | FUN_ARG_COUNT},
950 !   {"NCON", fun_dbwalker, 1, 1, FN_REG, FUN_ARG_PLAYERS | FUN_ARG_THINGS | FUN_ARG_COUNT},
951 !   {"NCOND", fun_if, 2, INT_MAX, FN_NOPARSE, FUN_ARG_NEGATE},
952 !   {"NCONDALL", fun_if, 2, INT_MAX, FN_NOPARSE, FUN_ARG_NEGATE | FUN_ARG_ALL},
953 !   {"NEXITS", fun_dbwalker, 1, 1, FN_REG, FUN_ARG_EXITS | FUN_ARG_COUNT},
954 !   {"NPLAYERS", fun_dbwalker, 1, 1, FN_REG, FUN_ARG_PLAYERS | FUN_ARG_COUNT},
955 !   {"NEARBY", fun_nearby, 2, 2, FN_REG, 0},
956 !   {"NEQ", fun_neq, 2, 2, FN_REG, 0},
957 !   {"NEXT", fun_next, 1, 1, FN_REG, 0},
958 !   {"NEXTDBREF", fun_nextdbref, 0, 0, FN_REG, 0},
959 !   {"NLSEARCH", fun_lsearch, 1, INT_MAX, FN_REG, FUN_ARG_COUNT},
960 !   {"NMWHO", fun_nwho, 0, 0, FN_REG, 0},
961 !   {"NOR", fun_nor, 1, INT_MAX, FN_REG, 0},
962 !   {"NOT", fun_not, 1, 1, FN_REG, 0},
963 !   {"NSCEMIT", fun_cemit, 2, 3, FN_REG, FUN_ARG_SPOOF},
964 !   {"NSEARCH", fun_lsearch, 1, INT_MAX, FN_REG, FUN_ARG_COUNT},
965 !   {"NSEMIT", fun_emit, 1, -1, FN_REG, FUN_ARG_SPOOF},
966 !   {"NSLEMIT", fun_lemit, 1, -1, FN_REG, FUN_ARG_SPOOF},
967 !   {"NSOEMIT", fun_oemit, 2, -2, FN_REG, FUN_ARG_SPOOF},
968 !   {"NSPEMIT", fun_pemit, 2, -2, FN_REG, FUN_ARG_SPOOF},
969 !   {"NSPROMPT", fun_prompt, 2, -2, FN_REG, FUN_ARG_SPOOF},
970 !   {"NSREMIT", fun_remit, 2, -2, FN_REG, FUN_ARG_SPOOF},
971 !   {"NSZEMIT", fun_zemit, 2, -2, FN_REG, FUN_ARG_SPOOF},
972 !   {"NTHINGS", fun_dbwalker, 1, 1, FN_REG, FUN_ARG_THINGS | FUN_ARG_COUNT},
973 !   {"NUM", fun_num, 1, 1, FN_REG, 0},
974 !   {"NUMVERSION", fun_numversion, 0, 0, FN_REG, 0},
975 !   {"NULL", fun_null, 1, INT_MAX, FN_REG, 0},
976 !   {"NVCON", fun_dbwalker, 1, 1, FN_REG, FUN_ARG_PLAYERS | FUN_ARG_THINGS | FUN_ARG_COUNT | FUN_ARG_VISIBLE},
977 !   {"NVEXITS", fun_dbwalker, 1, 1, FN_REG, FUN_ARG_EXITS | FUN_ARG_COUNT | FUN_ARG_VISIBLE},
978 !   {"NVPLAYERS", fun_dbwalker, 1, 1, FN_REG, FUN_ARG_PLAYERS | FUN_ARG_COUNT | FUN_ARG_VISIBLE},
979 !   {"NVTHINGS", fun_dbwalker, 1, 1, FN_REG, FUN_ARG_THINGS | FUN_ARG_COUNT | FUN_ARG_VISIBLE},
980 !   {"NWHO", fun_nwho, 0, 1, FN_REG, FUN_ARG_ALL},
981 !   {"OBJ", fun_obj, 1, 1, FN_REG, 0},
982 !   {"OBJEVAL", fun_objeval, 2, -2, FN_NOPARSE, 0},
983 !   {"OBJID", fun_objid, 1, 1, FN_REG, 0},
984 !   {"OBJMEM", fun_objmem, 1, 1, FN_REG, 0},
985 !   {"OEMIT", fun_oemit, 2, -2, FN_REG, 0},
986 !   {"OPEN", fun_open, 2, 2, FN_REG, 0},
987 !   {"OR", fun_or, 2, INT_MAX, FN_REG, 0},
988 !   {"ORD", fun_ord, 1, 1, FN_REG, 0},
989 !   {"ORDINAL", fun_spellnum, 1, 1, FN_REG, FUN_ARG_NEW},
990 !   {"ORFLAGS", fun_orflags, 2, 2, FN_REG, 0},
991 !   {"ORLFLAGS", fun_orlflags, 2, 2, FN_REG, FUN_ARG_LIST},
992 !   {"ORLPOWERS", fun_orlflags, 2, 2, FN_REG, FUN_ARG_LIST | FUN_ARG_POWERS},
993 !   {"ORPOWERS", fun_orflags, 2, 2, FN_REG, FUN_ARG_POWERS},
994 !   {"OWNER", fun_owner, 1, 1, FN_REG, 0},
995 !   {"PARENT", fun_parent, 1, 2, FN_REG, 0},
996 !   {"PCREATE", fun_pcreate, 2, 2, FN_REG, 0},
997 !   {"PEMIT", fun_pemit, 2, -2, FN_REG, 0},
998 !   {"PLAYERMEM", fun_playermem, 1, 1, FN_REG, 0},
999 !   {"PLAYER", fun_player, 1, 1, FN_REG, 0},
1000 !   {"PMATCH", fun_pmatch, 1, 1, FN_REG, 0},
1001 !   {"POLL", fun_poll, 0, 0, FN_REG, 0},
1002 !   {"PORTS", fun_ports, 1, 1, FN_REG, 0},
1003 !   {"POS", fun_pos, 2, 2, FN_REG, 0},
1004 !   {"POSS", fun_poss, 1, 1, FN_REG, 0},
1005 !   {"POWERS", fun_powers, 1, 2, FN_REG, 0},
1006 !   {"PROMPT", fun_prompt, 2, -2, FN_REG, 0},
1007 !   {"PUEBLO", fun_pueblo, 1, 1, FN_REG, 0},
1008 !   {"QUOTA", fun_quota, 1, 1, FN_REG, 0},
1009 !   {"R", fun_r, 1, 1, FN_REG, 0},
1010 !   {"RAND", fun_rand, 1, 2, FN_REG, 0},
1011 !   {"RANDWORD", fun_randword, 1, 2, FN_REG, 0},
1012 !   {"RECV", fun_recv, 1, 1, FN_REG, 0},
1013 !   {"REGEDIT", fun_regreplace, 3, INT_MAX, FN_NOPARSE, 0},
1014 !   {"REGEDITALL", fun_regreplace, 3, INT_MAX, FN_NOPARSE, FUN_ARG_ALL},
1015 !   {"REGEDITALLI", fun_regreplace, 3, INT_MAX, FN_NOPARSE, FUN_ARG_ALL | FUN_ARG_NOCASE},
1016 !   {"REGEDITI", fun_regreplace, 3, INT_MAX, FN_NOPARSE, FUN_ARG_NOCASE},
1017 !   {"REGMATCH", fun_regmatch, 2, 3, FN_REG, 0},
1018 !   {"REGMATCHI", fun_regmatch, 2, 3, FN_REG, FUN_ARG_NOCASE},
1019 !   {"REGRAB", fun_regrab, 2, 4, FN_REG, 0},
1020 !   {"REGRABALL", fun_regrab, 2, 4, FN_REG, FUN_ARG_ALL},
1021 !   {"REGRABALLI", fun_regrab, 2, 4, FN_REG, FUN_ARG_ALL | FUN_ARG_NOCASE},
1022 !   {"REGRABI", fun_regrab, 2, 3, FN_REG, FUN_ARG_NOCASE},
1023 !   {"REGREP", fun_regrep, 3, 3, FN_REG, 0},
1024 !   {"REGREPI", fun_regrep, 3, 3, FN_REG, FUN_ARG_NOCASE},
1025 !   {"RESWITCH", fun_reswitch, 3, INT_MAX, FN_NOPARSE, FUN_ARG_REGEXP},
1026 !   {"RESWITCHALL", fun_reswitch, 3, INT_MAX, FN_NOPARSE, FUN_ARG_REGEXP | FUN_ARG_ALL},
1027 !   {"RESWITCHALLI", fun_reswitch, 3, INT_MAX, FN_NOPARSE, FUN_ARG_REGEXP | FUN_ARG_ALL | FUN_ARG_NOCASE},
1028 !   {"RESWITCHI", fun_reswitch, 3, INT_MAX, FN_NOPARSE, FUN_ARG_REGEXP | FUN_ARG_NOCASE},
1029 !   {"REMAINDER", fun_remainder, 2, 2, FN_REG, 0},
1030 !   {"REMIT", fun_remit, 2, -2, FN_REG, 0},
1031 !   {"REMOVE", fun_remove, 2, 3, FN_REG, 0},
1032 !   {"REPEAT", fun_repeat, 2, 2, FN_REG, 0},
1033 !   {"REPLACE", fun_replace, 3, 4, FN_REG, 0},
1034 !   {"REST", fun_rest, 1, 2, FN_REG, 0},
1035 !   {"RESTARTS", fun_restarts, 0, 0, FN_REG, 0},
1036 !   {"RESTARTTIME", fun_restarttime, 0, 0, FN_REG, 0},
1037 !   {"REVERSE", fun_flip, 1, -1, FN_REG, 0},
1038 !   {"REVWORDS", fun_revwords, 1, 3, FN_REG, 0},
1039 !   {"RIGHT", fun_right, 2, 2, FN_REG, 0},
1040 !   {"RJUST", fun_rjust, 2, 3, FN_REG, 0},
1041 !   {"RLOC", fun_rloc, 2, 2, FN_REG, 0},
1042 !   {"RNUM", fun_rnum, 2, 2, FN_REG, 0},
1043 !   {"ROOM", fun_room, 1, 1, FN_REG, 0},
1044 !   {"ROOT", fun_root, 2, 2, FN_REG, 0},
1045 !   {"S", fun_s, 1, -1, FN_REG, 0},
1046 !   {"SCAN", fun_scan, 1, -2, FN_REG, 0},
1047 !   {"SCRAMBLE", fun_scramble, 1, -1, FN_REG, 0},
1048 !   {"SECS", fun_secs, 0, 0, FN_REG, 0},
1049 !   {"SECURE", fun_secure, 1, -1, FN_REG, 0},
1050 !   {"SENT", fun_sent, 1, 1, FN_REG, 0},
1051 !   {"SET", fun_set, 2, 2, FN_REG, 0},
1052 !   {"SETQ", fun_setq, 2, INT_MAX, FN_REG, 0},
1053 !   {"SETR", fun_setq, 2, INT_MAX, FN_REG, FUN_ARG_LIST},
1054 !   {"SETDIFF", fun_setdiff, 2, 5, FN_REG, 0},
1055 !   {"SETINTER", fun_setinter, 2, 5, FN_REG, 0},
1056 !   {"SETUNION", fun_setunion, 2, 5, FN_REG, 0},
1057 !   {"SHA0", fun_sha0, 1, 1, FN_REG, 0},
1058 !   {"SHL", fun_shl, 2, 2, FN_REG, 0},
1059 !   {"SHR", fun_shr, 2, 2, FN_REG, 0},
1060 !   {"SHUFFLE", fun_shuffle, 1, 3, FN_REG, 0},
1061 !   {"SIGN", fun_sign, 1, 1, FN_REG, 0},
1062 !   {"SORT", fun_sort, 1, 4, FN_REG, 0},
1063 !   {"SORTBY", fun_sortby, 2, 4, FN_REG, 0},
1064 !   {"SORTKEY", fun_sortkey, 2, 5, FN_REG, 0},
1065 !   {"SOUNDEX", fun_soundex, 1, 1, FN_REG, 0},
1066 !   {"SOUNDSLIKE", fun_soundlike, 2, 2, FN_REG, 0},
1067 !   {"SPACE", fun_space, 1, 1, FN_REG, 0},
1068 !   {"SPEAK", fun_speak, 2, 7, FN_REG, 0},
1069 !   {"SPEAKPENN", fun_speak, 2, 7,