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