blob: 33cd98fc5698f8b14fc906ec3e318e7129c59a47 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001// 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_
214static string *parseargs(string cmdline,int flags,string opts,int build_fn);
215static varargs void asynchron(mixed* array, closure cmd, mixed data, mixed flags, int c);
216static varargs mixed *file_list(string *files, int mode, int recursive, string dest, string mask);
217static mixed to_filename(string str);
218static int _verfolge(string str);
219static string glob2regexp(string str);
220
221varargs public void More(string txt, int file,mixed ctrl, mixed *ctrlargs, int flags);
222#endif // _MAGIER_H_PROTOS_
223#endif // NEED_PROTOTYPES
224
225