#include <wizlevels.h>#include <logging.h>#include <magier.h>#include <snooping.h>#include <player/telnetneg.h>#include <properties.h>#include <files.h>
gehe zum Quellcode dieser Datei
Makrodefinitionen | |
| #define | NEED_PROTOTYPES |
Funktionen | |
| static int | _set (mixed args) |
| static int | _pwd () |
| static int | _cd2 (string cmdline) |
| static int | _cd (string cmdline) |
| static string | _set_currentdir (string path) |
| private string | _query_currentdir () |
| void | renew_prompt () |
| private string | _prompt_subst (string str) |
| static int | _prompt (string args) |
| static int | _showpresay (string cmdline) |
| static int | _exec (string filename) |
| nomask int | QueryAllowSnoop (object who) |
| static int | _sallow (string str) |
| static int | _snoop (string cmdline) |
| static int | _mschau (string str) |
| static int | _protect (string str) |
| static int | _invis (string inform) |
| static int | _vis (string inform) |
| static int | _localcmd () |
| static int | _traenke (string str) |
| static int | norm_rusage () |
| static varargs void | asynchron (mixed *array, closure cmd, mixed data, mixed flags, int c) |
| static mixed * | _query_localcmds () |
| static void | initialize () |
| static void | reconnect () |
Variablen | |
| inherit std shells magier | parsing |
| inherit std shells magier | upd |
| inherit std shells magier | fileview |
| inherit std shells magier | objects |
| inherit std shells magier | fileedit |
| inherit std shells magier | players |
| inherit std shells magier | admin |
| inherit std shells magier | moving |
| inherit std shells magier | comm |
| static private string | snoop_allowed |
| static private object | snoopee |
| static int | _hbstop |
| static int | _age |
| #define NEED_PROTOTYPES |
Definiert in Zeile 12 der Datei magier_ext.c.
| static int _cd | ( | string | cmdline | ) | [static] |
Definiert in Zeile 136 der Datei magier_ext.c.
Benutzt _cd2() und _unparsed_args().
00137 { 00138 return _cd2(_unparsed_args()); 00139 }

| static int _cd2 | ( | string | cmdline | ) | [static] |
Definiert in Zeile 90 der Datei magier_ext.c.
Benutzt CD_L, CD_OPTS, CD_S, dest(), file_list(), FILESIZE, flags, FSIZE_DIR, FULLNAME, IS_WIZARD, MODE_CD, notify_fail(), P_CURRENTDIR, P_VARIABLES, parseargs(), QueryProp() und SetProp().
Wird benutzt von _cd().
00091 { 00092 string dest,tmp; 00093 int flags; 00094 mixed *args; 00095 00096 args=parseargs(cmdline,&flags,CD_OPTS,1); 00097 if (flags==-1) return 0; 00098 if (sizeof(args)>1) 00099 return notify_fail("Man kann sich (leider) nur in einem " 00100 "Verzeichnis gleichzeitig befinden.\n"),0; 00101 if (!sizeof(args)) 00102 { 00103 if (IS_WIZARD(this_object())) 00104 dest="/players/"+getuid(this_object()); 00105 else 00106 dest="/doc"; 00107 } 00108 else 00109 { 00110 dest=args[0]; 00111 if (dest!="/") 00112 { 00113 args=file_list(({dest}),MODE_CD,0,"/"); 00114 args = filter(args, function int (mixed arr) 00115 { return arr[FILESIZE] == FSIZE_DIR; } ); 00116 00117 if (!sizeof(args)) 00118 return notify_fail("cd: "+dest+ 00119 ": Kein solches Verzeichnis gefunden.\n"),0; 00120 if (sizeof(args)>1) 00121 return notify_fail("cd: "+dest+": Maske ist nicht eindeutig.\n"),0; 00122 dest=args[0][FULLNAME]; 00123 } 00124 if (!IS_WIZARD(this_object())&&dest[0..3]!="/doc") dest="/doc"; 00125 } 00126 printf("Aktuelles Verzeichnis ist jetzt: %s\n",SetProp(P_CURRENTDIR,dest)); 00127 tmp=""; 00128 if (((flags&CD_L)|| 00129 ((!m_contains(&tmp,QueryProp(P_VARIABLES),"CD_SHORT")|| 00130 tmp!="1")&&(!(flags&CD_S))))) 00131 tell_object(this_object(), 00132 read_file(dest+(dest[<1]=='/'?".readme":"/.readme"))||""); 00133 return 1; 00134 }


| static int _exec | ( | string | filename | ) | [static] |
Definiert in Zeile 274 der Datei magier_ext.c.
00275 { 00276 object ob; 00277 if (!IS_LORD(this_object())) return 0; 00278 if (this_player()!=this_interactive()) return 0; 00279 if (this_player()!=this_object()) return 0; 00280 if (!(filename=_unparsed_args())) return USAGE("exec <objektname>"); 00281 filename=(string)"secure/master"->_get_path(filename,getuid()); 00282 if (file_size(filename)<0&&(!to_filename(filename+".c"))|| 00283 file_size(to_filename(filename+".c"))<0) 00284 { 00285 printf("exec: %s: Datei nicht vorhanden oder ein Verzeichnis.\n",filename); 00286 return 1; 00287 } 00288 if (catch(call_other(filename,"????"))) 00289 { 00290 printf("exec: Fehler beim Laden von %s.\n",filename); 00291 return 1; 00292 } 00293 if (!(ob=clone_object(filename))) return 0; 00294 if (getuid(ob) != getuid(this_object())) 00295 { 00296 printf("exec: UID-Konflikt: %s <-> %s.\n",getuid(ob), 00297 getuid(this_object())); 00298 destruct(ob); 00299 return 1; 00300 } 00301 log_file(SHELLLOG("EXEC"), 00302 sprintf("%12.12s %40.40s %25.25s\n", 00303 capitalize(getuid(this_object())),filename,dtime(time())[4..])); 00304 disable_commands(); 00305 exec(ob,this_object()); 00306 if (interactive(this_object())||!interactive(ob)) 00307 { 00308 enable_commands(); 00309 printf("Fehler bei EXEC: Uebertragung der Shell " 00310 "nicht moeglich.\n"); 00311 return 1; 00312 } 00313 ob->start_player(capitalize(getuid(this_object()))); 00314 remove(); 00315 return 1; 00316 }
| static int _invis | ( | string | inform | ) | [static] |
Definiert in Zeile 451 der Datei magier_ext.c.
00452 { 00453 00454 if (QueryProp(P_INVIS)) 00455 return printf("Du bist doch schon unsichtbar!\n"),1; 00456 tell_room(environment(),sprintf("%s %s.\n",capitalize(Name()), 00457 QueryProp(P_MMSGOUT)),({ this_object() })); 00458 if (inform=="e") "/secure/merlin"->notify_player_leave(getuid()); 00459 SetProp(P_INVIS, QueryProp(P_AGE)); 00460 printf("Du bist jetzt unsichtbar.\n"); 00461 return 1; 00462 }
| static int _localcmd | ( | ) | [static] |
Definiert in Zeile 481 der Datei magier_ext.c.
00482 { 00483 int size,more; 00484 string *verbs,result; 00485 00486 // Per Umweg ueber Mapping doppelte Werte einstampfen 00487 size=sizeof(verbs=m_indices(mkmapping(query_actions(this_object())))); 00488 verbs-=({""}); 00489 more=(size>sizeof(verbs)); 00490 if (!sizeof(verbs)) 00491 { 00492 if (more) 00493 printf("Die vorhandenen Befehle koennen nicht angezeigt werden, " 00494 "da sie per 'add_action(\"funktion\",\"\",1)' definiert " 00495 "wurden.\n"); 00496 else 00497 printf("Dir stehen keine Befehle zur Verfuegung ... eigenartig!\n"); 00498 return 1; 00499 } 00500 verbs=sort_array(verbs,#'>); 00501 result=break_string(sprintf("\'%s\'",implode(verbs,"' '")),78); 00502 return printf("\n%'-'78.78s\nDie fuer Dich aktuell verfuegbaren " 00503 "Befehle sind:\n\n%s\n%s%'-'78.78s\n","",result, 00504 more?"Zudem wurden Befehle per 'add_action(" 00505 "\"funktion\",\"\",1)' definiert.\n":"",""),1; 00506 }
| static int _mschau | ( | string | str | ) | [static] |
Definiert in Zeile 399 der Datei magier_ext.c.
00400 { 00401 if (this_interactive()!=this_object()) return 0; 00402 if (str=="ja"||str=="an"||str=="ein") 00403 { 00404 if ( QueryProp(P_WANTS_TO_LEARN) ) 00405 printf("Du hast den Magier-Modus doch schon eingeschaltet!\n"); 00406 else 00407 { 00408 printf("Du hast jetzt den Magier-Modus eingeschaltet.\n" ); 00409 SetProp(P_WANTS_TO_LEARN, 1); 00410 } 00411 return 1; 00412 } 00413 if (str=="nein"||str=="aus") 00414 { 00415 if (QueryProp(P_WANTS_TO_LEARN)) 00416 { 00417 printf( "Du schaltest den Magier-Modus aus.\n"); 00418 set_heart_beat(1); 00419 SetProp(P_WANTS_TO_LEARN,0); 00420 } 00421 else 00422 printf("Du hast den Magier-Modus doch schon ausgeschaltet.\n"); 00423 return 1; 00424 } 00425 return USAGE("mschau [an|ein|ja|aus|nein]\n"); 00426 }
| static int _prompt | ( | string | args | ) | [static] |
Definiert in Zeile 223 der Datei magier_ext.c.
Benutzt _unparsed_args() und USAGE.
00224 { 00225 string *pargs; 00226 00227 args=(extern_call()?_unparsed_args():args); 00228 if (!strlen(args)) args="> "; 00229 if (args[0]=='"') args=args[1..<2]; //"); 00230 if(!sizeof(pargs = regexplode(args, "\\\\[huwn]"))) 00231 return USAGE("prompt \"<Eingabeaufforderungsdefinition>\""); 00232 pargs=map(pargs,#'_prompt_subst); 00233 SetProp(P_PROMPT,implode(pargs,"")); 00234 _set_currentdir(_query_currentdir()); // Pfad einfuegen 00235 return 1; 00236 }

| private string _prompt_subst | ( | string | str | ) |
Definiert in Zeile 206 der Datei magier_ext.c.
Benutzt MUDNAME.
| static int _protect | ( | string | str | ) | [static] |
Definiert in Zeile 432 der Datei magier_ext.c.
00433 { 00434 00435 if (this_object()!=this_interactive()) return 0; 00436 if (!strlen(str)) 00437 return USAGE("protect <propertyname>\n"); 00438 Set(str, PROTECTED, F_MODE); 00439 return printf("Deine Property %s ist jetzt %sgeschuetzt.\n", 00440 str,(Query(str,F_MODE) & PROTECTED?"":"nicht mehr ")),1; 00441 }
| static int _pwd | ( | ) | [static] |
Definiert in Zeile 84 der Datei magier_ext.c.
Benutzt P_CURRENTDIR und QueryProp().
00085 { 00086 printf("Aktuelles Verzeichnis: %s\n",QueryProp(P_CURRENTDIR)); 00087 return 1; 00088 }

| private string _query_currentdir | ( | ) |
Definiert in Zeile 177 der Datei magier_ext.c.
Benutzt c, P_CURRENTDIR, Query() und Set().
Wird benutzt von renew_prompt().
00178 { 00179 string c; 00180 if(!c=Query(P_CURRENTDIR)) 00181 return Set(P_CURRENTDIR, "/players/"+getuid(this_object())); 00182 return c; 00183 }


| static mixed* _query_localcmds | ( | ) | [static] |
Definiert in Zeile 602 der Datei magier_ext.c.
00603 { 00604 return ({ 00605 ({"set","_set",0,LEARNER_LVL}), 00606 ({"pwd","_pwd",0,LEARNER_LVL}), 00607 ({"cd","_cd",0,LEARNER_LVL}), 00608 ({"prompt","_prompt",0,LEARNER_LVL}), 00609 ({"showpresay","_showpresay",0,LEARNER_LVL}), 00610 ({"exec","_exec",0,ARCH_LVL}), 00611 ({"sallow","_sallow",0,LEARNER_LVL}), 00612 ({"snoop","_snoop",0,WIZARD_LVL}), 00613 ({"mschau","_mschau",0,LEARNER_LVL}), 00614 ({"protect","_protect",0,WIZARD_LVL}), 00615 ({"invis","_invis",0,LEARNER_LVL}), 00616 ({"vis","_vis",0,LEARNER_LVL}), 00617 ({"localcmd","_localcmd",0,LEARNER_LVL}), 00618 ({"traenke","_traenke",0,DOMAINMEMBER_LVL})}) 00619 +fileview::_query_localcmds() 00620 +upd::_query_localcmds() 00621 +objects::_query_localcmds() 00622 +fileedit::_query_localcmds() 00623 // +todo::_query_localcmds() 00624 +players::_query_localcmds() 00625 +admin::_query_localcmds() 00626 +moving::_query_localcmds() 00627 +comm::_query_localcmds(); 00628 }
| static int _sallow | ( | string | str | ) | [static] |
Definiert in Zeile 329 der Datei magier_ext.c.
00330 { 00331 object ob; 00332 00333 if (!strlen(str)) 00334 { 00335 if (!snoop_allowed) return USAGE("sallow [<name>]\n"); 00336 str=snoop_allowed; 00337 snoop_allowed=0; 00338 printf("Du entziehst %s die Erlaubnis zum Snoopen.\n",capitalize(str)); 00339 ob=query_snoop(this_player()); 00340 if (!ob||(getuid(ob)!=str)) return 1; 00341 tell_object(ob,break_string(sprintf("%s entzieht Dir die " 00342 "Erlaubnis zum snoopen und zwingt Dich so dazu, mit " 00343 "dem Snoopen aufzuhoeren.\n",capitalize(getuid())))); 00344 snoop(ob); 00345 return 1; 00346 } 00347 if (snoop_allowed) _sallow(""); // Erstmal abschalten 00348 ob=find_player(lower_case(str)); 00349 str=capitalize(str); 00350 if (!ob) return 00351 printf("sallow: Spieler %s konnte nicht gefunden werden.\n",str),1; 00352 if (query_wiz_grp(ob)>query_wiz_grp(this_player())) 00353 return printf("sallow: %s hat einen hoeheren Rang als Du und kann " 00354 "Dich daher ohnehin snoopen.\n",str),1; 00355 snoop_allowed=getuid(ob); 00356 return printf("sallow: Du erlaubst %s, Dich zu snoopen.\n",str),1; 00357 }
| static int _set | ( | mixed | args | ) | [static] |
Definiert in Zeile 41 der Datei magier_ext.c.
Benutzt _unparsed_args(), m_delete(), P_VARIABLES, QueryProp(), USAGE und vars().
00042 { 00043 int pos; 00044 string var; 00045 mixed val; 00046 mapping vars; 00047 00048 if(!args=_unparsed_args()) 00049 { 00050 if(!sizeof(vars=QueryProp(P_VARIABLES))) 00051 printf("Du hast noch keine Variablen definiert!\n"); 00052 else 00053 { 00054 printf("Du hast die folgenden Variablen definiert:\n"); 00055 walk_mapping(vars,((: printf(" %-20s = %s\n",$1, 00056 pointerp($2)?implode($2,":"):$2) :))); 00057 00058 } 00059 return 1; 00060 } 00061 pos = member(args,' '); 00062 if(pos == -1) 00063 if(strlen(args)) 00064 { 00065 efun::m_delete(QueryProp(P_VARIABLES), args); 00066 printf("Variable %s wurde geloescht.\n",args); 00067 return 1; 00068 } 00069 else return USAGE("set <variable> <wert>"); 00070 var = args[0..pos-1]; 00071 val = (member(args[pos+1..],':')>-1? 00072 explode(args[pos+1..], ":") : 00073 args[pos+1..]); 00074 vars=QueryProp(P_VARIABLES); 00075 vars+= ([var : val]); 00076 printf("Variable gesetzt: %s = %s\n",var,args[pos+1..]); 00077 return 1; 00078 }

| static string _set_currentdir | ( | string | path | ) | [static] |
Definiert in Zeile 141 der Datei magier_ext.c.
Benutzt ctime(), DO, EOR, IAC, P_CURRENTDIR, P_PROMPT, query_telnet_neg(), QueryProp(), Set(), TELOPT_EOR und TN.
Wird benutzt von renew_prompt().
00142 { 00143 string promptstring; 00144 mapping TN; 00145 00146 if( !(promptstring = QueryProp(P_PROMPT)) || promptstring == "" ) 00147 promptstring = "> "; 00148 else 00149 promptstring = implode( explode(promptstring, "\\w"), path ); 00150 00151 TN=query_telnet_neg(); 00152 00153 if ( mappingp(TN) && mappingp(TN["received"]) 00154 && (TN["received"][TELOPT_EOR,1] == DO) ) 00155 set_prompt(lambda(({}), 00156 ({ #'efun::binary_message, 00157 ({ #'+, 00158 ({ #'to_array, 00159 ({ #'implode, 00160 ({ #'explode,promptstring,"\\t" }), 00161 ({ #'[..],({ #'ctime }),11, 15 }) 00162 }) 00163 }),'({ IAC, EOR }) 00164 }) 00165 })), this_object()); 00166 else 00167 set_prompt( 00168 lambda(({}), 00169 ({ #'implode, 00170 ({ #'explode,promptstring, "\\t" }), 00171 ({ #'[..],({ #'ctime }),11, 15 }) 00172 })), this_object()); 00173 00174 return Set(P_CURRENTDIR, path); 00175 }


| static int _showpresay | ( | string | cmdline | ) | [static] |
Definiert in Zeile 242 der Datei magier_ext.c.
00243 { 00244 int presay; 00245 presay=QueryProp(P_CAN_FLAGS)&CAN_PRESAY; 00246 cmdline=_unparsed_args(0); 00247 if (!strlen(cmdline)) 00248 { 00249 printf("Dein Presay wird im Moment %sangezeigt.\n" 00250 "%sschalten mit \'showpresay %s\'.\n", 00251 presay?"":"nicht ",presay?"Aus":"Ein", 00252 presay?"aus":"ein"); 00253 return 1; 00254 } 00255 if (cmdline=="ein"||cmdline=="an") 00256 { 00257 printf("Dein Presay wird jetzt angezeigt.\n"); 00258 SetProp(P_CAN_FLAGS,QueryProp(P_CAN_FLAGS)|CAN_PRESAY); 00259 return 1; 00260 } 00261 if (cmdline=="aus") 00262 { 00263 printf("Dein Presay wird jetzt nicht mehr angezeigt.\n"); 00264 SetProp(P_CAN_FLAGS,QueryProp(P_CAN_FLAGS)&~CAN_PRESAY); 00265 return 1; 00266 } 00267 return USAGE("showpresay [ein|an|aus]"); 00268 }
| static int _snoop | ( | string | cmdline | ) | [static] |
Definiert in Zeile 359 der Datei magier_ext.c.
00360 { 00361 object ob; 00362 int flags; 00363 string *args; 00364 00365 if (!strlen(cmdline=_unparsed_args())|| 00366 sizeof(args=parseargs(cmdline,&flags,SNOOP_OPTS,0))!=1||flags==-1) 00367 { 00368 if (!snoop(this_object())) return USAGE("snoop [-" SNOOP_OPTS 00369 "] [<spieler>]\n"); 00370 if (snoopee) 00371 printf("Du snoopst %s jetzt nicht mehr.\n",capitalize(getuid(snoopee))); 00372 else 00373 { 00374 printf("Du hoerst auf zu snoopen.\n"); 00375 // evtl. irgendetwas loggen ... sollte eigentlich nicht passieren. 00376 } 00377 snoopee=(object)0; 00378 return 1; 00379 } 00380 SetProp(P_SNOOPFLAGS,flags); // FUNKTIONIERT NUR, WENN magier.h und 00381 // snooping.h abgeglichen sind 00382 if (!(ob = find_player(args[0]))) 00383 return printf("snoop: Konnte keinen Spieler '%s' finden.\n", 00384 capitalize(args[0])),1; 00385 if (!snoop(this_player(),ob)) 00386 return printf("snoop: Der Versuch, %s zu snoopen, ist " 00387 "fehlgeschlagen.\n%s",capitalize(args[0]), 00388 ((~flags)&SNOOP_F)?"Eventuell funktioniert es mit dem " 00389 "Flag '-f'.\n":""),1; 00390 snoopee=ob; 00391 return printf("Du snoopst jetzt %s.\n",capitalize(getuid(ob))),1; 00392 }
| static int _traenke | ( | string | str | ) | [static] |
Definiert in Zeile 512 der Datei magier_ext.c.
Benutzt P_TRANK_FINDEN, QueryProp() und SetProp().
00513 { 00514 if(SetProp(P_TRANK_FINDEN, !QueryProp(P_TRANK_FINDEN))) 00515 write("Du kannst jetzt Zaubertraenke finden.\n"); 00516 else 00517 write("Du findest jetzt keine Zaubertraenke mehr.\n"); 00518 return 1; 00519 }

| static int _vis | ( | string | inform | ) | [static] |
Definiert in Zeile 464 der Datei magier_ext.c.
00465 { 00466 if (!QueryProp(P_INVIS)) 00467 return printf("Du bist doch schon sichtbar.\n"),1; 00468 tell_room(environment(),sprintf("%s %s.\n",capitalize(Name()), 00469 QueryProp(P_MMSGIN)),({ this_object() })); 00470 SetProp(P_INVIS, 0); 00471 if (inform=="e") "/secure/merlin"->notify_player_enter(getuid()); 00472 printf("Du bist jetzt sichtbar.\n"); 00473 return 1; 00474 }
| static varargs void asynchron | ( | mixed * | array, | |
| closure | cmd, | |||
| mixed | data, | |||
| mixed | flags, | |||
| int | c | |||
| ) | [static] |
Definiert in Zeile 540 der Datei magier_ext.c.
Benutzt call_out(), i, norm_rusage(), RET_DELETE, RET_JUMP, SUBDIRSIZE und UPD_LOAD.
Wird benutzt von _upd().
00541 { 00542 int i, j, k; 00543 mixed ret_val; 00544 string cmd_string; 00545 00546 k = norm_rusage()+5; 00547 j = sizeof(array); 00548 i=0; 00549 00550 switch (cmd_string=explode(sprintf("%O",cmd),"->")[1]) 00551 { 00552 case "_make": cmd_string=(data&UPD_LOAD?"load":"upd");break; 00553 case "cp_file": cmd_string =(data?"mv":"cp"); break; 00554 case "grep_file": cmd_string = "grep"; break; 00555 case "rm_file": cmd_string = "rm"; break; 00556 default: break; 00557 } 00558 00559 while(i < j && get_eval_cost() > 200000 && norm_rusage()<k) 00560 // Sowohl Too-Long-Eval als auch Lag verhindern 00561 { 00562 ret_val=apply(cmd,array[i],data, flags); 00563 if (closurep(ret_val)) 00564 { 00565 if(c) tell_object(this_object(), 00566 sprintf("%s: Verlasse Asynchronen Modus.\n",cmd_string)); 00567 funcall(ret_val,array[i..],data,flags); 00568 return; 00569 } 00570 if (ret_val==RET_DELETE) 00571 { 00572 array[i+array[i][SUBDIRSIZE]+1..i+array[i][SUBDIRSIZE]]= 00573 ({ (array[i][0..5]+({0})) }); 00574 } 00575 if (ret_val==RET_JUMP) i+=array[i][SUBDIRSIZE]; 00576 i++; 00577 } 00578 if(sizeof(array = array[i..])) 00579 { 00580 if(!c) tell_object(this_object(), 00581 sprintf("%s: Asynchroner Modus aktiviert!\n", cmd_string)); 00582 call_out(#'asynchron, 1, array, cmd, data,flags, 1); 00583 } 00584 else 00585 { 00586 if(c) tell_object(this_object(), 00587 sprintf("%s: abgeschlossen.\n",cmd_string)); 00588 else if (query_verb()) tell_object(this_object(), 00589 sprintf("%s: abgeschlossen.\n",query_verb())); 00590 } 00591 return; 00592 }


| static void initialize | ( | ) | [static] |
Definiert in Zeile 634 der Datei magier_ext.c.
00635 { 00636 Set(P_PROMPT, SAVE, F_MODE_AS); 00637 Set(P_VARIABLES,SAVE,F_MODE_AS); 00638 Set("filesys",SAVE,F_MODE_AD); // P_FILESYS ist obsolet 00639 Set("short_cwd",SAVE,F_MODE_AD); // P_SHORT_CWD auch 00640 if(!mappingp(QueryProp(P_VARIABLES))) 00641 SetProp(P_VARIABLES, ([])); 00642 _prompt(QueryProp(P_PROMPT)); 00643 // todo::initialize(); 00644 _cd2(""); 00645 return; 00646 }
| static int norm_rusage | ( | ) | [static] |
Definiert in Zeile 521 der Datei magier_ext.c.
Benutzt rusage().
Wird benutzt von asynchron().
00521 { 00522 mixed* r; 00523 r = rusage(); 00524 return r[0]/100 + r[1]/100; 00525 }


| nomask int QueryAllowSnoop | ( | object | who | ) |
Definiert in Zeile 324 der Datei magier_ext.c.
00325 { 00326 return (getuid(who) == snoop_allowed); 00327 }
| static void reconnect | ( | ) | [static] |
Definiert in Zeile 648 der Datei magier_ext.c.
00648 { _cd(QueryProp(P_CURRENTDIR)); }
| void renew_prompt | ( | ) |
Definiert in Zeile 194 der Datei magier_ext.c.
Benutzt _query_currentdir() und _set_currentdir().
00195 { 00196 _set_currentdir(_query_currentdir()); 00197 }

int _age [static] |
Definiert in Zeile 449 der Datei magier_ext.c.
Wird benutzt von FinalSetup() und upd_my_age().
int _hbstop [static] |
Definiert in Zeile 448 der Datei magier_ext.c.
Wird benutzt von FinalSetup() und upd_my_age().
Definiert in Zeile 25 der Datei magier_ext.c.
Definiert in Zeile 27 der Datei magier_ext.c.
Definiert in Zeile 22 der Datei magier_ext.c.
Definiert in Zeile 20 der Datei magier_ext.c.
Definiert in Zeile 26 der Datei magier_ext.c.
Definiert in Zeile 21 der Datei magier_ext.c.
Definiert in Zeile 18 der Datei magier_ext.c.
Definiert in Zeile 24 der Datei magier_ext.c.
private string snoop_allowed [static] |
Definiert in Zeile 321 der Datei magier_ext.c.
private object snoopee [static] |
Definiert in Zeile 322 der Datei magier_ext.c.
| inherit std shells magier upd |
Definiert in Zeile 19 der Datei magier_ext.c.
1.6.3