blob: 0f51d1d6429f4f95202fec9229ec5750e6cca553 [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
59#define UPD_OPTS "afilrmbvcdhsC"
60#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
70#define UPD_C 256 // Properties erhalten
71#define UPD_D 512 // Objektinhalt komplett destructen
72#define UPD_H 1024 // Hard-Destruct (kein remove())
73#define UPD_S 2048 // Silent
74#define UPD_CONF 4096 // Configure() erzwingen (d.h. kein Update,
75 // wenn Configure() nicht definiert ist)
76#define UPD_LOAD 8192 // laden, falls nicht geladen (nur
77 // intern fuer 'load)
78
79#define CP_OPTS "vrfmi"
80#define CP_V 1 // Verbose: Ausgeben, was gemacht wird
81#define CP_R 2 // Rekursiv kopieren
82#define CP_F 4 // Force (nie fragen)
83#define CP_M 8 // DateiMASKE beachten
84#define CP_I 16 // Interaktiv kopieren (immer fragen)
85
86#define MV_OPTS "vrfmi"
87#define MV_V 1 // Verbose: Ausgeben, was gemacht wird
88#define MV_R 2 // Immer auch Dateien im Dir moven
89#define MV_F 4 // Force (nie fragen)
90#define MV_M 8 // DateiMASKE beachten
91#define MV_I 16 // Interaktiv bewegen (immer fragen)
92
93#define CD_OPTS "ls"
94#define CD_L 1 // .readme ausgeben
95#define CD_S 2 // .readme unterdruecken
96#define CD_B 4 // Zurueck zum letzten Verzeichnis
97
Bugfix2cd4f712025-04-08 21:28:12 +020098#define LS_OPTS "alrtsug1"
MG Mud User88f12472016-06-24 23:31:02 +020099#define LS_A 1 // ALLE Files anzeigen
100#define LS_L 2 // Lange Ausgabe
101#define LS_R 4 // Rueckwaerts ausgeben
102#define LS_T 8 // Nach Zeit ordnen
Zesstra9ad254c2019-09-27 00:30:41 +0200103#define LS_S 16 // Nach Groesse ordnen
MG Mud User88f12472016-06-24 23:31:02 +0200104#define LS_U 32 // UID anzeigen
105#define LS_G 64 // Gruppe anzeigen
Bugfix2cd4f712025-04-08 21:28:12 +0200106#define LS_1 128 // Einspaltige Anzeige
MG Mud User88f12472016-06-24 23:31:02 +0200107
108#define CLONE_OPTS "f"
109#define CLONE_F 1 // Auf jeden Fall versuchen zu clonen
110
111#define GREP_OPTS "chilnvrmf"
112#define GREP_C 1 // Nur Zahl der Zeilen ausgeben
113#define GREP_H 2 // Dateinamen nicht mit ausgeben
114#define GREP_I 4 // Gross-/Kleinschreibung ignorieren
115#define GREP_L 8 // Dateinamen immer mit ausgeben
116#define GREP_N 16 // Zeilennummern mit ausgeben
117#define GREP_V 32 // Nur Zeilen matchen, die NICHT passen
118#define GREP_R 64 // Rekursiv suchen
119#define GREP_M 128 // Dateimaske angegeben
120#define GREP_F 256 // Ausgabe in Datei
121
122#define ACCESS_OPTS "arlfgm"
123#define ACCESS_A 1 // Berechtigung hinzufuegen
124#define ACCESS_R 2 // Berechtigung entfernen
125#define ACCESS_L 4 // Berechtigungen anzeigen
126#define ACCESS_F 8 // Berechtigung fuer Dateien anzeigen
127#define ACCESS_G 16 // Das ganze fuer Gruppen
128#define ACCESS_M 32 // Das ganze fuer Gruppenleiter
129
130// Funktioniert nur, wenn SNOOP_L == SF_LOCKED und SNOOP_F == SF_FORCE
131// (Definitionen aus /sys/snooping.h)
132#define SNOOP_OPTS "lf"
133#define SNOOP_L 1 // Niedriger Magier kann sich nicht
134 // dazwischenklinken
135#define SNOOP_F 2 // Snoope snoopenden Magier, wenn der
136 // Charakter schon gesnoopt wird
137
Bugfix1bb96a22022-01-07 20:41:56 +0100138#define GOTO_OPTS "rl"
139#define GOTO_R 1 // Nur Raeume
140#define GOTO_L 2 // Nur Livings
141
MG Mud User88f12472016-06-24 23:31:02 +0200142#define NO_CHECK M_GO|M_SILENT|M_NO_SHOW|M_NO_ATTACK|M_NOCHECK
143
144#define INV_SAVE "/room/void.c"
145
146#define USAGE(str) (_notify_fail(break_string(sprintf("Syntax: %s\n", str),77)), 0)
147
148#define BASENAME 0
149#define FILESIZE 1
150#define FILEDATE 2
151#define FULLNAME 3
152#define PATHNAME 4
153#define DESTNAME 5
154#define SUBDIRSIZE 6
155
156#define RET_OK 1
157#define RET_FAIL 0
158#define RET_JUMP -1
159#define RET_DELETE -2
160
161#define MODE_LSA 0
162#define MODE_LSB 1
163#define MODE_CP 2
164#define MODE_MV 3
165#define MODE_RM 4
166#define MODE_CD 5
167#define MODE_CAT 6
168#define MODE_GREP 7
169#define MODE_ED 8
170#define MODE_UPD 9
171#define MODE_MORE 10
172#define MODE_RMDIR 11
173#define MODE_CLONE 12
174
175#define COLORS ([ "none": ANSI_NORMAL, \
176 "bold": ANSI_BOLD, \
177 "blink": ANSI_BLINK, \
178 "invers": ANSI_INVERS, \
179 "black": ANSI_BLACK, \
180 "red": ANSI_RED, \
181 "green": ANSI_GREEN, \
182 "yellow": ANSI_YELLOW, \
183 "blue": ANSI_BLUE, \
184 "purple": ANSI_PURPLE, \
185 "cyan": ANSI_CYAN, \
186 "white": ANSI_WHITE, \
187 "bblack": ANSI_BG_BLACK, \
188 "bred": ANSI_BG_RED, \
189 "bgreen": ANSI_BG_GREEN, \
190 "byellow": ANSI_BG_YELLOW, \
191 "bblue": ANSI_BG_BLUE, \
192 "bpurple": ANSI_BG_PURPLE, \
193 "bcyan": ANSI_BG_CYAN, \
194 "bwhite": ANSI_BG_WHITE, \
195 ])
196
197#define VALID_READ_CL symbol_function("valid_read",__MASTER_OBJECT__)
198#define VALID_WRITE_CL symbol_function("valid_write",__MASTER_OBJECT__)
199#define CREATOR_CL symbol_function("creator_file",__MASTER_OBJECT__)
200
201#define DIR "directory"
202#define OBJ "loaded"
203#define VC "virtual"
204
205#ifdef DEBUG
206#undef DEBUG
207#endif
Zesstrab5d96b12020-04-21 23:25:47 +0200208#define DEBUG(x) this_object()->ReceiveMsg(x, 536870912 /*MT_DEBUG*/, 0, "Shell: ")
MG Mud User88f12472016-06-24 23:31:02 +0200209
210#endif // _MAGIER_H_
211
212
213#ifdef NEED_PROTOTYPES
214#ifndef _MAGIER_H_PROTOS_
215#define _MAGIER_H_PROTOS_
216static string *parseargs(string cmdline,int flags,string opts,int build_fn);
217static varargs void asynchron(mixed* array, closure cmd, mixed data, mixed flags, int c);
218static varargs mixed *file_list(string *files, int mode, int recursive, string dest, string mask);
Vanion50652322020-03-10 21:13:25 +0100219static string to_filename(string str);
MG Mud User88f12472016-06-24 23:31:02 +0200220static int _verfolge(string str);
221static string glob2regexp(string str);
222
223varargs public void More(string txt, int file,mixed ctrl, mixed *ctrlargs, int flags);
224#endif // _MAGIER_H_PROTOS_
225#endif // NEED_PROTOTYPES
226
227