MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame^] | 1 | // MorgenGrauen MUDlib |
| 2 | // |
| 3 | // magier.h -- Magiererweiterung der Shell |
| 4 | // |
| 5 | // $Id: magier.h 9553 2016-05-03 20:22:47Z Zesstra $ |
| 6 | |
| 7 | #ifndef _MAGIER_H_ |
| 8 | #define _MAGIER_H_ |
| 9 | |
| 10 | #define SHELLDEBUGGER "zesstra" |
| 11 | |
| 12 | #define MAX_ARRAY_SIZE 3000 // MUSS EIGENTLICH NACH /sys/config.h oder so |
| 13 | |
| 14 | #define ERROR(msg, arg, res) (printf(msg, arg),res) |
| 15 | |
| 16 | #define NO_READ "%s: Keine Leserechte!\n" |
| 17 | #define NO_WRITE "%s: Keine Schreibrechte!\n" |
| 18 | #define DOESNT_EXIST "%s: Datei existiert nicht!\n" |
| 19 | #define ALREADY_EXISTS "%s: Datei existiert schon.\n" |
| 20 | #define NO_DIRS "%s ist ein Verzeichnis.\n" |
| 21 | #define SAME_FILE "%s: Gleiches Quell- und Zielfile: uebergangen.\n" |
| 22 | #define NO_CREATE_DIR "%s: Verzeichnis konnte nicht erstellt werden.\n" |
| 23 | #define DEST_IS_DIR "%s: Zieldatei ist ein Verzeichnis.\n" |
| 24 | #define DEST_NO_DELETE "%s: Zieldatei konnte nicht geloescht werden.\n" |
| 25 | #define NO_MOVE "%s: Datei konnte nicht verschoben werden.\n" |
| 26 | #define NO_COPY "%s: Datei konnte nicht kopiert werden.\n" |
| 27 | #define FILE_COPIED "%s: kopiert.\n" |
| 28 | #define DIR_CREATED "%s: Verzeichnis erzeugt.\n" |
| 29 | #define FILE_MOVED "%s: verschoben.\n" |
| 30 | #define FILE_DELETED "%s wurde geloescht.\n" |
| 31 | #define NO_DELETE "%s konnte nicht geloescht werden.\n" |
| 32 | |
| 33 | #define MAY_READ(x) call_other(__MASTER_OBJECT__,"valid_read",x,getuid(this_object())) |
| 34 | #define MAY_WRITE(x) call_other(__MASTER_OBJECT__,"valid_write",x,getuid(this_object())) |
| 35 | #define MAY_DELETE(x) call_other(__MASTER_OBJECT__,"remove_file",x,getuid(this_object())) |
| 36 | |
| 37 | #define MAXLEN 50000 |
| 38 | |
| 39 | #define P_VARIABLES "variables" |
| 40 | |
| 41 | #define MAN_OPTS "mri" |
| 42 | #define MAN_M 1 // Matchen des Begriffs |
| 43 | #define MAN_R 2 // Regexp-Matchen |
| 44 | #define MAN_I 4 // Interaktive Hilfe (deaktiviert) |
| 45 | |
| 46 | #define MKDIR_OPTS "vrp" |
| 47 | #define MKDIR_V 1 // Verbose: Ausgeben, was gemacht wird |
| 48 | #define MKDIR_R 2 // Rekursiv alle hoeheren |
| 49 | // Verzeichnisse erstellen |
| 50 | #define MKDIR_P 2 // das gleiche wie MKDIR_R |
| 51 | |
| 52 | #define RMDIR_OPTS "v" |
| 53 | #define RMDIR_V 1 // Verbose: Ausgeben, was gemacht wird |
| 54 | |
| 55 | #define RM_OPTS "vrmi" |
| 56 | #define RM_V 1 // Verbose: Ausgeben, was gemacht wird |
| 57 | #define RM_R 2 // Verzeichnisse rekursiv loeschen |
| 58 | #define RM_M 4 // DateiMASKE beachten |
| 59 | #define RM_I 8 // Interaktiv loeschen (immer fragen) |
| 60 | |
| 61 | #define UPD_OPTS "afilrmbvcdhsC" |
| 62 | #define UPD_A 1 // Alle Instanzen bearbeiten |
| 63 | #define UPD_F 2 // Alle Instanzen finden und anzeigen |
| 64 | #define UPD_I 4 // Geerbte Klassen aktualisieren |
| 65 | #define UPD_L 8 // zerstoeren und neu laden |
| 66 | #define UPD_R 16 // neu laden, falls zerstoert |
| 67 | #define UPD_M 32 // alle geerbten Klassen auf |
| 68 | // aktualitaet Testen und |
| 69 | // ggf. aktualisieren |
| 70 | #define UPD_B 64 // Backtrace bei Fehlern |
| 71 | #define UPD_V 128 // Erbschaftslisten mit ausgeben |
| 72 | #define UPD_C 256 // Properties erhalten |
| 73 | #define UPD_D 512 // Objektinhalt komplett destructen |
| 74 | #define UPD_H 1024 // Hard-Destruct (kein remove()) |
| 75 | #define UPD_S 2048 // Silent |
| 76 | #define UPD_CONF 4096 // Configure() erzwingen (d.h. kein Update, |
| 77 | // wenn Configure() nicht definiert ist) |
| 78 | #define UPD_LOAD 8192 // laden, falls nicht geladen (nur |
| 79 | // intern fuer 'load) |
| 80 | |
| 81 | #define CP_OPTS "vrfmi" |
| 82 | #define CP_V 1 // Verbose: Ausgeben, was gemacht wird |
| 83 | #define CP_R 2 // Rekursiv kopieren |
| 84 | #define CP_F 4 // Force (nie fragen) |
| 85 | #define CP_M 8 // DateiMASKE beachten |
| 86 | #define CP_I 16 // Interaktiv kopieren (immer fragen) |
| 87 | |
| 88 | #define MV_OPTS "vrfmi" |
| 89 | #define MV_V 1 // Verbose: Ausgeben, was gemacht wird |
| 90 | #define MV_R 2 // Immer auch Dateien im Dir moven |
| 91 | #define MV_F 4 // Force (nie fragen) |
| 92 | #define MV_M 8 // DateiMASKE beachten |
| 93 | #define MV_I 16 // Interaktiv bewegen (immer fragen) |
| 94 | |
| 95 | #define CD_OPTS "ls" |
| 96 | #define CD_L 1 // .readme ausgeben |
| 97 | #define CD_S 2 // .readme unterdruecken |
| 98 | #define CD_B 4 // Zurueck zum letzten Verzeichnis |
| 99 | |
| 100 | #define LS_OPTS "alrtsug" |
| 101 | #define LS_A 1 // ALLE Files anzeigen |
| 102 | #define LS_L 2 // Lange Ausgabe |
| 103 | #define LS_R 4 // Rueckwaerts ausgeben |
| 104 | #define LS_T 8 // Nach Zeit ordnen |
| 105 | #define LS_S 16 // Nach Größe ordnen |
| 106 | #define LS_U 32 // UID anzeigen |
| 107 | #define LS_G 64 // Gruppe anzeigen |
| 108 | |
| 109 | #define CLONE_OPTS "f" |
| 110 | #define CLONE_F 1 // Auf jeden Fall versuchen zu clonen |
| 111 | |
| 112 | #define GREP_OPTS "chilnvrmf" |
| 113 | #define GREP_C 1 // Nur Zahl der Zeilen ausgeben |
| 114 | #define GREP_H 2 // Dateinamen nicht mit ausgeben |
| 115 | #define GREP_I 4 // Gross-/Kleinschreibung ignorieren |
| 116 | #define GREP_L 8 // Dateinamen immer mit ausgeben |
| 117 | #define GREP_N 16 // Zeilennummern mit ausgeben |
| 118 | #define GREP_V 32 // Nur Zeilen matchen, die NICHT passen |
| 119 | #define GREP_R 64 // Rekursiv suchen |
| 120 | #define GREP_M 128 // Dateimaske angegeben |
| 121 | #define GREP_F 256 // Ausgabe in Datei |
| 122 | |
| 123 | #define ACCESS_OPTS "arlfgm" |
| 124 | #define ACCESS_A 1 // Berechtigung hinzufuegen |
| 125 | #define ACCESS_R 2 // Berechtigung entfernen |
| 126 | #define ACCESS_L 4 // Berechtigungen anzeigen |
| 127 | #define ACCESS_F 8 // Berechtigung fuer Dateien anzeigen |
| 128 | #define ACCESS_G 16 // Das ganze fuer Gruppen |
| 129 | #define ACCESS_M 32 // Das ganze fuer Gruppenleiter |
| 130 | |
| 131 | // Funktioniert nur, wenn SNOOP_L == SF_LOCKED und SNOOP_F == SF_FORCE |
| 132 | // (Definitionen aus /sys/snooping.h) |
| 133 | #define SNOOP_OPTS "lf" |
| 134 | #define SNOOP_L 1 // Niedriger Magier kann sich nicht |
| 135 | // dazwischenklinken |
| 136 | #define SNOOP_F 2 // Snoope snoopenden Magier, wenn der |
| 137 | // Charakter schon gesnoopt wird |
| 138 | |
| 139 | #define NO_CHECK M_GO|M_SILENT|M_NO_SHOW|M_NO_ATTACK|M_NOCHECK |
| 140 | |
| 141 | #define INV_SAVE "/room/void.c" |
| 142 | |
| 143 | #define USAGE(str) (_notify_fail(break_string(sprintf("Syntax: %s\n", str),77)), 0) |
| 144 | |
| 145 | #define BASENAME 0 |
| 146 | #define FILESIZE 1 |
| 147 | #define FILEDATE 2 |
| 148 | #define FULLNAME 3 |
| 149 | #define PATHNAME 4 |
| 150 | #define DESTNAME 5 |
| 151 | #define SUBDIRSIZE 6 |
| 152 | |
| 153 | #define RET_OK 1 |
| 154 | #define RET_FAIL 0 |
| 155 | #define RET_JUMP -1 |
| 156 | #define RET_DELETE -2 |
| 157 | |
| 158 | #define MODE_LSA 0 |
| 159 | #define MODE_LSB 1 |
| 160 | #define MODE_CP 2 |
| 161 | #define MODE_MV 3 |
| 162 | #define MODE_RM 4 |
| 163 | #define MODE_CD 5 |
| 164 | #define MODE_CAT 6 |
| 165 | #define MODE_GREP 7 |
| 166 | #define MODE_ED 8 |
| 167 | #define MODE_UPD 9 |
| 168 | #define MODE_MORE 10 |
| 169 | #define MODE_RMDIR 11 |
| 170 | #define MODE_CLONE 12 |
| 171 | |
| 172 | #define COLORS ([ "none": ANSI_NORMAL, \ |
| 173 | "bold": ANSI_BOLD, \ |
| 174 | "blink": ANSI_BLINK, \ |
| 175 | "invers": ANSI_INVERS, \ |
| 176 | "black": ANSI_BLACK, \ |
| 177 | "red": ANSI_RED, \ |
| 178 | "green": ANSI_GREEN, \ |
| 179 | "yellow": ANSI_YELLOW, \ |
| 180 | "blue": ANSI_BLUE, \ |
| 181 | "purple": ANSI_PURPLE, \ |
| 182 | "cyan": ANSI_CYAN, \ |
| 183 | "white": ANSI_WHITE, \ |
| 184 | "bblack": ANSI_BG_BLACK, \ |
| 185 | "bred": ANSI_BG_RED, \ |
| 186 | "bgreen": ANSI_BG_GREEN, \ |
| 187 | "byellow": ANSI_BG_YELLOW, \ |
| 188 | "bblue": ANSI_BG_BLUE, \ |
| 189 | "bpurple": ANSI_BG_PURPLE, \ |
| 190 | "bcyan": ANSI_BG_CYAN, \ |
| 191 | "bwhite": ANSI_BG_WHITE, \ |
| 192 | ]) |
| 193 | |
| 194 | #define VALID_READ_CL symbol_function("valid_read",__MASTER_OBJECT__) |
| 195 | #define VALID_WRITE_CL symbol_function("valid_write",__MASTER_OBJECT__) |
| 196 | #define CREATOR_CL symbol_function("creator_file",__MASTER_OBJECT__) |
| 197 | |
| 198 | #define DIR "directory" |
| 199 | #define OBJ "loaded" |
| 200 | #define VC "virtual" |
| 201 | |
| 202 | #ifdef DEBUG |
| 203 | #undef DEBUG |
| 204 | #endif |
| 205 | #define DEBUG(x) if (find_player(SHELLDEBUGGER)) \ |
| 206 | tell_object(find_player(SHELLDEBUGGER),x+"\n") |
| 207 | |
| 208 | #endif // _MAGIER_H_ |
| 209 | |
| 210 | |
| 211 | #ifdef NEED_PROTOTYPES |
| 212 | #ifndef _MAGIER_H_PROTOS_ |
| 213 | #define _MAGIER_H_PROTOS_ |
| 214 | static string *parseargs(string cmdline,int flags,string opts,int build_fn); |
| 215 | static varargs void asynchron(mixed* array, closure cmd, mixed data, mixed flags, int c); |
| 216 | static varargs mixed *file_list(string *files, int mode, int recursive, string dest, string mask); |
| 217 | static mixed to_filename(string str); |
| 218 | static int _verfolge(string str); |
| 219 | static string glob2regexp(string str); |
| 220 | |
| 221 | varargs public void More(string txt, int file,mixed ctrl, mixed *ctrlargs, int flags); |
| 222 | #endif // _MAGIER_H_PROTOS_ |
| 223 | #endif // NEED_PROTOTYPES |
| 224 | |
| 225 | |