00001
00002
00003
00004
00005
00006 #include "copyright.h"
00007 #include "config.h"
00008
00009 #ifndef __COMMAND_H
00010 #define __COMMAND_H
00011
00012 #include "db.h"
00013
00014
00015 #define CMD_NO_ARG(name) \
00016 extern void name(dbref, dbref, int)
00017 #define CMD_ONE_ARG(name) \
00018 extern void name(dbref, dbref, int, char *)
00019 #define CMD_ONE_ARG_CMDARG(name) \
00020 extern void name(dbref, dbref, int, char *, char *[], int)
00021 #define CMD_TWO_ARG(name) \
00022 extern void name(dbref, dbref, int, char *, char *)
00023 #define CMD_TWO_ARG_CMDARG(name) \
00024 extern void name(dbref, dbref, int, char *, char *, char*[], int)
00025 #define CMD_TWO_ARG_ARGV(name) \
00026 extern void name(dbref, dbref, int, char *, char *[], int)
00027 #define CMD_TWO_ARG_ARGV_CMDARG(name) \
00028 extern void name(dbref, dbref, int, char *, char *[], int, char*[], int)
00029
00030
00031
00032
00033
00034
00035 CMD_TWO_ARG(do_cemit);
00036 CMD_TWO_ARG(do_chboot);
00037 CMD_TWO_ARG(do_editchannel);
00038 CMD_ONE_ARG(do_checkchannel);
00039 CMD_ONE_ARG(do_createchannel);
00040 CMD_ONE_ARG(do_destroychannel);
00041 CMD_TWO_ARG(do_edituser);
00042 CMD_NO_ARG(do_chanlist);
00043 CMD_ONE_ARG(do_chanstatus);
00044 CMD_TWO_ARG(do_chopen);
00045 CMD_ONE_ARG(do_channelwho);
00046 CMD_TWO_ARG(do_addcom);
00047 CMD_ONE_ARG(do_allcom);
00048 CMD_NO_ARG(do_comlist);
00049 CMD_TWO_ARG(do_comtitle);
00050 CMD_NO_ARG(do_clearcom);
00051 CMD_ONE_ARG(do_delcom);
00052 CMD_TWO_ARG(do_tapcom);
00053
00054
00055
00056 CMD_TWO_ARG(do_mail);
00057 CMD_TWO_ARG(do_malias);
00058 CMD_ONE_ARG(do_prepend);
00059 CMD_ONE_ARG(do_postpend);
00060
00061 CMD_TWO_ARG(do_admin);
00062 CMD_TWO_ARG(do_alias);
00063 CMD_TWO_ARG(do_attribute);
00064 CMD_ONE_ARG(do_boot);
00065 CMD_TWO_ARG(do_chown);
00066 CMD_TWO_ARG(do_chownall);
00067 CMD_TWO_ARG(do_chzone);
00068 CMD_TWO_ARG(do_clone);
00069 CMD_NO_ARG(do_comment);
00070 CMD_TWO_ARG_ARGV(do_cpattr);
00071 CMD_TWO_ARG(do_create);
00072 CMD_ONE_ARG(do_cut);
00073 CMD_NO_ARG(do_dbck);
00074 CMD_TWO_ARG(do_decomp);
00075 CMD_ONE_ARG(do_destroy);
00076 CMD_TWO_ARG_ARGV(do_dig);
00077 CMD_ONE_ARG(do_doing);
00078 CMD_TWO_ARG_CMDARG(do_dolist);
00079 CMD_ONE_ARG(do_drop);
00080 CMD_NO_ARG(do_dump);
00081 CMD_TWO_ARG_ARGV(do_edit);
00082 CMD_ONE_ARG(do_enter);
00083 CMD_ONE_ARG(do_entrances);
00084 CMD_ONE_ARG(do_examine);
00085 CMD_ONE_ARG(do_find);
00086 CMD_TWO_ARG(do_fixdb);
00087 CMD_TWO_ARG_CMDARG(do_force);
00088 CMD_ONE_ARG_CMDARG(do_force_prefixed);
00089 CMD_TWO_ARG(do_function);
00090 CMD_ONE_ARG(do_get);
00091 CMD_TWO_ARG(do_give);
00092 CMD_ONE_ARG(do_global);
00093 CMD_ONE_ARG(do_halt);
00094 CMD_ONE_ARG(do_help);
00095 CMD_ONE_ARG(do_history);
00096 CMD_NO_ARG(do_multis);
00097 CMD_NO_ARG(do_inventory);
00098 CMD_TWO_ARG(do_prog);
00099 CMD_ONE_ARG(do_quitprog);
00100 CMD_TWO_ARG(do_kill);
00101 CMD_ONE_ARG(do_last);
00102 CMD_NO_ARG(do_leave);
00103 CMD_TWO_ARG(do_link);
00104 CMD_ONE_ARG(do_list);
00105 CMD_ONE_ARG(do_list_file);
00106 CMD_TWO_ARG(do_lock);
00107 CMD_ONE_ARG(do_look);
00108 CMD_ONE_ARG(do_motd);
00109 CMD_ONE_ARG(do_move);
00110 CMD_TWO_ARG_ARGV(do_mvattr);
00111 CMD_TWO_ARG(do_mudwho);
00112 CMD_TWO_ARG(do_name);
00113 CMD_TWO_ARG(do_newpassword);
00114 CMD_TWO_ARG(do_notify);
00115 CMD_TWO_ARG_ARGV(do_open);
00116 CMD_TWO_ARG(do_page);
00117 CMD_TWO_ARG(do_parent);
00118 CMD_TWO_ARG(do_password);
00119 CMD_TWO_ARG(do_pcreate);
00120 CMD_TWO_ARG(do_pemit);
00121 CMD_ONE_ARG(do_poor);
00122 CMD_TWO_ARG(do_power);
00123 CMD_ONE_ARG(do_ps);
00124 CMD_ONE_ARG(do_queue);
00125 CMD_TWO_ARG(do_quota);
00126 CMD_NO_ARG(do_readcache);
00127 CMD_NO_ARG(do_restart);
00128 CMD_ONE_ARG(do_say);
00129 CMD_NO_ARG(do_score);
00130 CMD_ONE_ARG(do_search);
00131 CMD_TWO_ARG(do_set);
00132 CMD_TWO_ARG(do_setattr);
00133 CMD_TWO_ARG(do_setvattr);
00134 CMD_ONE_ARG(do_shutdown);
00135 CMD_ONE_ARG(do_stats);
00136 CMD_ONE_ARG(do_sweep);
00137 CMD_TWO_ARG_ARGV_CMDARG(do_switch);
00138 CMD_TWO_ARG(do_teleport);
00139 CMD_ONE_ARG(do_think);
00140 CMD_ONE_ARG(do_timewarp);
00141 CMD_TWO_ARG(do_toad);
00142 CMD_TWO_ARG_ARGV(do_trigger);
00143 CMD_ONE_ARG(do_unlock);
00144 CMD_ONE_ARG(do_unlink);
00145 CMD_ONE_ARG(do_use);
00146 CMD_NO_ARG(do_version);
00147 CMD_TWO_ARG_ARGV(do_verb);
00148 CMD_TWO_ARG_CMDARG(do_wait);
00149 CMD_ONE_ARG(do_wipe);
00150 CMD_NO_ARG(do_dbclean);
00151 CMD_TWO_ARG(do_addcommand);
00152 CMD_TWO_ARG(do_delcommand);
00153 CMD_ONE_ARG(do_listcommands);
00154 #ifdef SQL_SUPPORT
00155 CMD_TWO_ARG(do_query);
00156 #endif
00157
00158 #ifdef ARBITRARY_LOGFILES
00159 CMD_TWO_ARG(do_log);
00160 #endif
00161
00162
00163 CMD_TWO_ARG(do_show);
00164 CMD_ONE_ARG(do_charclear);
00165 CMD_NO_ARG(do_show_stat);
00166
00167 #ifdef HUDINFO_SUPPORT
00168 CMD_ONE_ARG(fake_hudinfo);
00169 #endif
00170
00171 #ifdef USE_PYTHON
00172
00173
00174 CMD_ONE_ARG(do_python);
00175 #endif
00176
00177 typedef struct cmdentry CMDENT;
00178 struct cmdentry {
00179 char *cmdname;
00180 NAMETAB *switches;
00181 int perms;
00182 int extra;
00183 int callseq;
00184 void (*handler) ();
00185 };
00186
00187 typedef struct addedentry ADDENT;
00188 struct addedentry {
00189 dbref thing;
00190 int atr;
00191 char *name;
00192 struct addedentry *next;
00193 };
00194
00195
00196
00197 #define CS_NO_ARGS 0x0000
00198 #define CS_ONE_ARG 0x0001
00199 #define CS_TWO_ARG 0x0002
00200 #define CS_NARG_MASK 0x0003
00201 #define CS_ARGV 0x0004
00202 #define CS_INTERP 0x0010
00203 #define CS_NOINTERP 0x0020
00204 #define CS_CAUSE 0x0040
00205 #define CS_UNPARSE 0x0080
00206 #define CS_CMDARG 0x0100
00207 #define CS_STRIP 0x0200
00208 #define CS_STRIP_AROUND 0x0400
00209 #define CS_ADDED 0X0800
00210 #define CS_NO_MACRO 0x1000
00211 #define CS_LEADIN 0x2000
00212
00213
00214
00215 #define CA_PUBLIC 0x00000000
00216 #define CA_GOD 0x00000001
00217 #define CA_WIZARD 0x00000002
00218 #define CA_BUILDER 0x00000004
00219 #define CA_IMMORTAL 0x00000008
00220 #define CA_ROBOT 0x00000010
00221 #define CA_ANNOUNCE 0x00000020
00222 #define CA_ADMIN 0x00000800
00223 #define CA_NO_HAVEN 0x00001000
00224 #define CA_NO_ROBOT 0x00002000
00225 #define CA_NO_SLAVE 0x00004000
00226 #define CA_NO_SUSPECT 0x00008000
00227 #define CA_NO_GUEST 0x00010000
00228 #define CA_NO_IC 0x00020000
00229
00230
00231 #define CA_GBL_BUILD 0x01000000
00232 #define CA_GBL_INTERP 0x02000000
00233 #define CA_DISABLED 0x04000000
00234 #define CA_NO_DECOMP 0x08000000
00235 #define CA_LOCATION 0x10000000
00236 #define CA_CONTENTS 0x20000000
00237 #define CA_PLAYER 0x40000000
00238 #define CF_DARK 0x80000000
00239
00240 extern int check_access(dbref, int);
00241 extern void process_command(dbref, dbref, int, char *, char *[], int);
00242
00243 #endif