#include <ansi.h>#include <player/base.h>#include <wizlevels.h>#include <shells.h>#include <daemon/mand.h>#include <udp.h>#include <magier.h>#include <thing/properties.h>#include <player.h>
gehe zum Quellcode dieser Datei
Makrodefinitionen | |
| #define | NEED_PROTOTYPES |
Funktionen | |
| mixed * | _query_localcmds () |
| private string | _get_color (string color) |
| private void | SetColorstrings () |
| private string | _ls_output_short (mixed filedata, int maxlen, int counter, int maxcount) |
| private int | _ls_maxlen (mixed filedata, int flags, int maxlen) |
| private string | _ls_output_long (mixed filedata, int flags, closure valid_read, closure valid_write, closure creator_file) |
| static int | _ls (string cmdline) |
| private void | _more_file (string *arg) |
| private mixed | _size_filter (mixed *arg) |
| static int | _more (string cmdline) |
| static int | _cat (string cmdline) |
| static int | _man (string cmdline) |
| static int | _rman (string str) |
| static int | _showprops (string str) |
| private int | _grep_filter (string filename) |
| private int | grep_file (mixed filedata, string rexpr, int flags) |
| static int | _grep (string cmdline) |
Variablen | |
| static private mapping | colorstrings |
| static private mapping | oldman_result |
| #define NEED_PROTOTYPES |
Definiert in Zeile 18 der Datei fileview.c.
| static int _cat | ( | string | cmdline | ) | [static] |
Definiert in Zeile 361 der Datei fileview.c.
00362 { 00363 mixed *args; 00364 int flags; 00365 cmdline=_unparsed_args(); 00366 args=parseargs(cmdline,&flags,"",1); 00367 if(flags==-1||!sizeof(args)) 00368 return USAGE(query_verb()+" <dateiname> [<datei2>..]"); 00369 args=file_list(args,MODE_CAT,0,"/"); 00370 if (!sizeof(args)) 00371 return printf("%s: %s: Keine passende Datei gefunden.\n",query_verb(), 00372 cmdline),1; 00373 args=map(args,#'_size_filter)-({0}); 00374 if (!sizeof(args)) return 1; 00375 while(sizeof(args)) 00376 { 00377 switch(query_verb()) 00378 { 00379 case "cat": 00380 if (!cat(args[0])) 00381 printf("cat: %s konnte nicht angezeigt werden.\n",args[0]); 00382 break; 00383 case "head": 00384 if (!cat(args[0],0,10)) 00385 printf("head: %s konnte nicht angezeigt werden.\n",args[0]); 00386 break; 00387 case "tail": tail(args[0]); break; 00388 } 00389 args=args[1..]; 00390 } 00391 return 1; 00392 }
| private string _get_color | ( | string | color | ) |
Definiert in Zeile 58 der Datei fileview.c.
Benutzt COLORS.
Wird benutzt von SetColorstrings().
00059 { 00060 return COLORS[lower_case(color)]; 00061 }

| static int _grep | ( | string | cmdline | ) | [static] |
Definiert in Zeile 681 der Datei fileview.c.
00682 { 00683 string rexpr,mask; 00684 mixed *args; 00685 int flags; 00686 cmdline=_unparsed_args(); 00687 args=parseargs(cmdline,&flags,GREP_OPTS,0); 00688 if ((flags==-1)||!sizeof(args)) 00689 return USAGE("grep [-" GREP_OPTS 00690 "] <regexp> <datei/verz> [<datei2> ... ] [<maske>]"); 00691 rexpr=args[0]; 00692 if (catch(regexp(({""}),rexpr))||!regexp(({""}),rexpr)) 00693 return printf("grep: Ungueltiger Suchausdruck: %s\n",rexpr) ,1; 00694 args=args[1..]; 00695 if (flags&GREP_M) 00696 { 00697 mask=args[<1]; 00698 args=args[0..<2]; 00699 } 00700 if (!sizeof(args)) 00701 return USAGE("grep [-" GREP_OPTS 00702 "] <regexp> <datei/verz> [<datei2> ... ] [<maske>]"); 00703 args=map(args,#'to_filename)-({0}); 00704 /* 00705 #if __VERSION__ < "3.2.9" 00706 args=filter(args,#'_grep_filter); 00707 #else 00708 args=filter(args,(: return (valid_write($1, 00709 getuid(this_object()),"write_file",this_object())!=0):)); 00710 #endif 00711 */ 00712 args=file_list(args,MODE_GREP,(flags&GREP_R?1:0),"/",mask); 00713 if (!sizeof(args)) 00714 return printf("Keine passenden Dateien gefunden.\n"),1; 00715 if (flags&GREP_I) rexpr=lower_case(rexpr); 00716 if (flags&GREP_F) 00717 { 00718 if (file_size("/players/"+getuid()+"/grep.out")==-2|| 00719 !MAY_WRITE("/players/"+getuid()+"/grep.out")) 00720 return printf("grep: Datei /players/%s/grep.out kann nicht " 00721 "geschrieben werden.\n",getuid()),1; 00722 else 00723 write_file("/players/"+getuid()+"/grep.out", 00724 "Ausgabe von \"grep " + _unparsed_args() + "\":\n"); 00725 } 00726 asynchron(args,#'grep_file,rexpr,flags,0); 00727 return 1; 00728 }
| private int _grep_filter | ( | string | filename | ) |
Definiert in Zeile 572 der Datei fileview.c.
| static int _ls | ( | string | cmdline | ) | [static] |
Definiert in Zeile 220 der Datei fileview.c.
00221 { 00222 int flags,cmp,i,arg_size,size; 00223 int maxlen,counter,maxcount; 00224 string *args,output; 00225 mixed *tmp; 00226 closure output_fun,v_read,v_write,creator,sort_fun; 00227 00228 cmdline=_unparsed_args()||""; 00229 args=parseargs(cmdline,&flags,LS_OPTS,1); 00230 if (flags==-1) 00231 return USAGE("ls [-" LS_OPTS "] [<Verzeichnis>] [<Verzeichnis2> ..]"); 00232 SetColorstrings(); 00233 output=""; 00234 if (!sizeof(args)) args=({ QueryProp(P_CURRENTDIR) }); 00235 if (!sizeof(args=file_list(args,MODE_LSA,0,"/"))) 00236 return notify_fail("ls: Keine passenden Verzeichnisse gefunden.\n"), 0; 00237 // Files sortieren die erste 00238 if (flags&LS_T) cmp=FILEDATE; 00239 else if (flags&LS_S) cmp=FILESIZE; 00240 else cmp=BASENAME; // =0 :-) 00241 sort_fun=lambda(({ 'a,'b }),({ 00242 ((!cmp&&!(flags&LS_R))||(cmp&&(flags&LS_R))?#'>:#'<), 00243 ({#'[,'a,cmp}),({#'[,'b,cmp})})); 00244 args=sort_array(args,sort_fun); 00245 // Ausgabeformat bestimmen 00246 if (flags&LS_L) 00247 { 00248 v_read=VALID_READ_CL; 00249 v_write=VALID_WRITE_CL; 00250 creator=CREATOR_CL; 00251 } 00252 arg_size=sizeof(args); 00253 if (arg_size>1||(arg_size&&args[0][FILESIZE]>=0)) 00254 { 00255 if (flags&LS_L) 00256 tmp=map(args,#'_ls_output_long,flags,v_read, 00257 v_write,creator)-({0}); 00258 else 00259 { 00260 counter=0;maxlen=0; 00261 tmp=filter(args,#'_ls_maxlen,flags,&maxlen); 00262 if (maxlen>76) maxlen=76; 00263 maxcount=(78/(maxlen+2))-1; 00264 tmp=map(tmp,#'_ls_output_short,maxlen,&counter,maxcount); 00265 } 00266 output=sprintf("\n%d Dateien/Unterverzeichnisse:\n%s\n", 00267 sizeof(tmp),implode(tmp,"")); 00268 } 00269 for(i=0;i<arg_size;i++) 00270 { 00271 tmp=({}); 00272 size=args[i][FILESIZE]; 00273 if (size==-2) 00274 { 00275 tmp=file_list(({args[i][FULLNAME]+"/*"}),MODE_LSB,0,"/"); 00276 tmp=sort_array(tmp,sort_fun); 00277 if (flags&LS_L) 00278 tmp=map(tmp,#'_ls_output_long,flags,v_read, 00279 v_write,creator)-({0}); 00280 else 00281 { 00282 counter=0;maxlen=0; 00283 tmp=filter(tmp,#'_ls_maxlen,flags,&maxlen); 00284 maxcount=(78/(maxlen+2)); 00285 if (maxcount) maxcount--; 00286 tmp=map(tmp,#'_ls_output_short,maxlen,&counter,maxcount); 00287 } 00288 if (sizeof(tmp)) 00289 { 00290 output+=sprintf("\n%s: Verzeichnis, %d Dateien/Unterverzeichnisse:\n", 00291 args[i][FULLNAME],sizeof(tmp)); 00292 output+=(implode(tmp,"")+((string)(tmp[<1][<1..<1])=="\n"?"":"\n")); 00293 } 00294 else 00295 { 00296 output+=sprintf("\n%s: Leeres Verzeichnis.\n",args[i][FULLNAME]); 00297 } 00298 } 00299 } 00300 More(output); 00301 return 1; 00302 }
| private int _ls_maxlen | ( | mixed | filedata, | |
| int | flags, | |||
| int | maxlen | |||
| ) |
Definiert in Zeile 131 der Datei fileview.c.
| private string _ls_output_long | ( | mixed | filedata, | |
| int | flags, | |||
| closure | valid_read, | |||
| closure | valid_write, | |||
| closure | creator_file | |||
| ) |
Definiert in Zeile 145 der Datei fileview.c.
00147 { 00148 string *tmp,full,base,path,date,creator,group; 00149 int size,dir,ftime; 00150 object ob; 00151 00152 base=filedata[BASENAME]; 00153 if (!(strlen(base))||((!(flags&LS_A))&&(base[0]=='.'))) 00154 return 0; 00155 size=filedata[FILESIZE]; 00156 path=filedata[PATHNAME]; 00157 tmp=(string *)call_other(master(),"full_path_array", 00158 filedata[FULLNAME],getuid()); 00159 full=sprintf("/%s",implode(tmp,"/")); 00160 dir=(size==-2); 00161 ob=find_object(full); 00162 ftime=filedata[FILEDATE]; 00163 date=dtime(ftime); 00164 date=sprintf("%s %s %s",date[9..11],date[5..6], 00165 ((time()-ftime)<31536000?date[19..23]:(" "+date[13..16]))); 00166 creator=""; 00167 group=""; 00168 if (flags&LS_U) 00169 { 00170 creator=(string)call_other(master(),"creator_file",full); 00171 switch(creator) 00172 { 00173 case ROOTID: creator="root"; break; 00174 case BACKBONEID: creator="daemon"; break; 00175 default: if(!creator) creator="none"; break; 00176 } 00177 } 00178 if (flags&LS_G) 00179 { 00180 if (sizeof(tmp)) 00181 { 00182 switch(tmp[0]) 00183 { 00184 case WIZARDDIR: group="magier"; break; 00185 case "news": group="news"; break; 00186 case "mail": group="mail"; break; 00187 case "open": group="public"; break; 00188 case "p": group="project"; break; 00189 case DOMAINDIR: if (sizeof(tmp)>1) { group=tmp[1]; break; } 00190 default: group="mud"; break; 00191 } 00192 } 00193 else group="mud"; 00194 } 00195 if (dir) base=sprintf(colorstrings[DIR],base); 00196 else 00197 { 00198 if (ob) 00199 { 00200 if (size==-1) 00201 base=sprintf(colorstrings[VC],base); 00202 else 00203 base=sprintf(colorstrings[OBJ],base); 00204 } 00205 } 00206 return sprintf(("%c%c%c%c %3d"+((flags&LS_U)?" %-24.24s":"%-0.1s")+ 00207 ((flags&LS_G)?" %-8.8s":"%0.1s")+" %8s %s %s\n"), 00208 (dir?'d':'-'), 00209 (!funcall(valid_read,full,getuid(), 00210 "read_file",this_object())?'-':'r'), 00211 (!funcall(valid_write,full,getuid(), 00212 "write_file",this_object())?'-':'w'), 00213 (ob?'x':'-'), 00214 (dir?(sizeof((get_dir(full+"/*")||({}))-({".",".."}))):0), 00215 creator,group,(dir?"-":size==-1?"<vc>":to_string(size)), 00216 date,base); 00217 }
| private string _ls_output_short | ( | mixed | filedata, | |
| int | maxlen, | |||
| int | counter, | |||
| int | maxcount | |||
| ) |
Definiert in Zeile 108 der Datei fileview.c.
00110 { 00111 string tmp; 00112 tmp=filedata[BASENAME]; 00113 maxlen-=strlen(tmp); 00114 switch(filedata[FILESIZE]) 00115 { 00116 case -2: tmp=sprintf(colorstrings[DIR],tmp); 00117 maxlen-=colorstrings[DIR,1]; break; 00118 case -1: tmp=sprintf(colorstrings[VC],tmp); 00119 maxlen-=colorstrings[VC,1]; break; 00120 default: if (find_object(filedata[FULLNAME])) 00121 { 00122 maxlen-=colorstrings[OBJ,1]; 00123 tmp=sprintf(colorstrings[OBJ],tmp); break; 00124 } 00125 } 00126 if (!maxcount) return tmp+"\n"; 00127 return sprintf("%-*s%s",(maxlen+strlen(tmp)),tmp, 00128 ((counter++)==maxcount?(counter=0,"\n"):" ")); 00129 }
| static int _man | ( | string | cmdline | ) | [static] |
Definiert in Zeile 398 der Datei fileview.c.
Benutzt _unparsed_args(), break_string(), flags, i, MAN_M, MAN_OPTS, MAN_R, MAND, MAND_DOCDIR, More(), oldman_result, parseargs() und USAGE.
00399 { 00400 mixed *args; 00401 int i, flags; 00402 string *tmp, *tmp2; 00403 00404 cmdline=_unparsed_args(); 00405 args=parseargs(cmdline,&flags,MAN_OPTS,0); 00406 00407 if (flags==-1 || 00408 (sizeof(args)!=1 && 00409 (sizeof(args)<2 || strlen(args[1])>1 || !(i=to_int(args[1]))))) 00410 return USAGE("man [-" MAN_OPTS "] <hilfeseite>"); 00411 tmp=explode(args[0],"/"); 00412 00413 if (oldman_result && sizeof(tmp)==1 && sizeof(args)==1 && 00414 strlen(tmp[0])==1 && (i=to_int(tmp[0])) && member(oldman_result,i)) { 00415 tmp=({oldman_result[i,0],oldman_result[i,1]}); 00416 i=0; 00417 } 00418 else if (!(flags&(MAN_M|MAN_R))&&sizeof(tmp)>1) 00419 { 00420 if (file_size(MAND_DOCDIR+args[0])>=0) 00421 tmp=({tmp[<1],args[0]}); 00422 else 00423 tmp=({}); 00424 } 00425 else 00426 { 00427 if (flags&MAN_R) 00428 { 00429 flags&=(~MAN_M); 00430 if (catch(regexp(({""}),args[0]))|| 00431 !regexp(({""}),args[0])) 00432 return printf("man: Ungueltiger Ausdruck in Maske.\n"),1; 00433 } 00434 tmp=(string *)call_other(MAND,"locate",args[0],flags&(MAN_M|MAN_R)); 00435 } 00436 00437 oldman_result=(mapping)0; 00438 if(i && sizeof(tmp)>2 && sizeof(tmp)>=(i<<1)) 00439 tmp=tmp[((i<<1)-2)..((i<<1)-1)]; 00440 switch(sizeof(tmp)) 00441 { 00442 case 0: 00443 printf("Keine Hilfeseite gefunden fuer '%s'.\n",args[0]); 00444 break; 00445 case 2: 00446 /* 00447 if (flags&MAN_I) 00448 { 00449 // BRANCH TO MANUALD 00450 return 1; 00451 } 00452 */ 00453 printf("Folgende Hilfeseite wurde gefunden: %s\n",tmp[1]); 00454 More(MAND_DOCDIR+tmp[1],1); 00455 return 1; 00456 default: 00457 i=sizeof(tmp)>>1; 00458 tmp2=allocate(i); 00459 oldman_result=m_allocate(i,2); 00460 while(i) 00461 { 00462 tmp2[(i-1)]=sprintf("%d: ",i)+tmp[(i<<1)-2]; 00463 oldman_result[i,0]=tmp[(i<<1)-2]; 00464 oldman_result[i,1]=tmp[(i<<1)-1]; 00465 i--; 00466 } 00467 printf("Es wurden folgende potentiell passenden Seiten gefunden:\n" 00468 "%'-'78.78s\n%s%'-'78.78s\n","", 00469 break_string(implode(tmp2," "),78),""); 00470 break; 00471 } 00472 return 1; 00473 }

| static int _more | ( | string | cmdline | ) | [static] |
Definiert in Zeile 342 der Datei fileview.c.
Benutzt _unparsed_args(), file_list(), flags, MODE_MORE, parseargs() und USAGE.
00343 { 00344 mixed *args; 00345 int flags; 00346 cmdline=_unparsed_args(); 00347 args=parseargs(cmdline,&flags,"",1); 00348 if (flags==-1||!sizeof(args)) return USAGE("more <datei> [<datei2>..]"); 00349 args=file_list(args,MODE_MORE,0,"/"); 00350 if (!sizeof(args)) 00351 return printf("more: %s: Keine passende Datei gefunden.\n",cmdline),1; 00352 args=map(args,#'_size_filter)-({0}); 00353 if (sizeof(args)) _more_file(args); 00354 return 1; 00355 }

| private void _more_file | ( | string * | arg | ) |
Definiert in Zeile 311 der Datei fileview.c.
00312 { 00313 if (!sizeof(arg)) return; 00314 printf("more: Naechste Datei: %s\n",arg[0]); 00315 More(arg[0],1,#'_more_file,({ arg[1..]})); 00316 return; 00317 }
| mixed* _query_localcmds | ( | ) |
Definiert in Zeile 30 der Datei fileview.c.
Benutzt LEARNER_LVL und WIZARD_LVL.
00031 { 00032 return ({({"ls","_ls",0,LEARNER_LVL}), 00033 ({"more","_more",0,LEARNER_LVL}), 00034 ({"cat","_cat",0,LEARNER_LVL}), 00035 ({"head","_cat",0,LEARNER_LVL}), 00036 ({"tail","_cat",0,LEARNER_LVL}), 00037 ({"man","_man",0,LEARNER_LVL}), 00038 ({"rman","_rman",0,LEARNER_LVL}), 00039 ({"showprops","_showprops",0,WIZARD_LVL}), 00040 ({"grep","_grep",0,LEARNER_LVL})}); 00041 }
| static int _rman | ( | string | str | ) | [static] |
Definiert in Zeile 479 der Datei fileview.c.
Benutzt _unparsed_args(), flags, parseargs(), UDP_CMD_DIR und USAGE.
00480 { 00481 int flags; 00482 string *args; 00483 00484 str=_unparsed_args(); 00485 args=parseargs(str,&flags,"",0); 00486 if (flags==-1||sizeof(args)!=2) 00487 return USAGE("rman <hilfeseite> <mudname>"); 00488 write("man: " + 00489 (string)call_other(UDP_CMD_DIR+"man","send_request",args[1],args[0])); 00490 return 1; 00491 }

| static int _showprops | ( | string | str | ) | [static] |
Definiert in Zeile 502 der Datei fileview.c.
Benutzt extract(), i, list, More(), notify_fail(), old_explode() und x.
00503 { 00504 int i; 00505 string *list, ausgabe; 00506 00507 if (str) { 00508 if (str[0]!='/') str="/"+str; 00509 if (str[0..4]!="/std/") 00510 { 00511 printf("showprops: Es koennen nur Properties von Objekten " 00512 "aus /std/ angezeigt werden.\n"); 00513 return 1; 00514 } 00515 if (str[<1]=='.') str+="c"; 00516 if (str[<2..<1]!=".c") str+=".c"; 00517 if (file_size(str)<0) 00518 { 00519 printf("showprops: %s: Es gibt kein Objekt diesen Namens.\n",str[0..<3]); 00520 return 1; 00521 } 00522 if (catch(call_other(str[0..<3], "???"))) 00523 { 00524 printf("showprops: %s: Datei konnte nicht geladen werden.\n",str); 00525 return 1; 00526 } 00527 } 00528 if (!str || !find_object(str)) { 00529 notify_fail("Welche Properties moechtest Du sehen?" 00530 " Bsp.: <showprops /std/npc>\n"); 00531 return 0; 00532 } 00533 list=inherit_list(find_object(str)); 00534 #if __VERSION__ < "3.2.9" 00535 list=map(list,lambda(({'x}),({#'extract,'x,4,-2}))); 00536 list+=map(list,lambda(({'x}),({#'[<,({#'old_explode,'x,"/"}),1}))); 00537 list=map(m_indices(mkmapping(list)),lambda(({'x}),({#'+,({#'+,"/sys/",'x}),"h"}))); 00538 list=filter(list,lambda(({'x}),({#'>,({#'file_size,'x}),0})) ); 00539 #else 00540 list=map(list,(: return $1[5..<2]+"h"; :)); 00541 list+=map(list,(: return explode($1,"/")[<1]; :)); 00542 list=map(m_indices(mkmapping(list)),(: return "/sys/"+$1; :)); 00543 list=filter(list,(: return file_size($1)>0; :)); 00544 #endif 00545 list=sort_array(list, #'<); 00546 ausgabe=""; 00547 for (i=sizeof(list);i--;) 00548 { 00549 #if __VERSION__ < "3.2.9" 00550 str=implode(filter(old_explode(read_file(list[i]), "\n"), 00551 lambda( ({ 'x }), ({#'==, ({#'extract, 'x, 0, 9}), "#define P_"}) )) 00552 , "\n"); 00553 #else 00554 str=implode(filter(explode(read_file(list[i]),"\n"), 00555 (: return $1[0..9]=="#define P_";:)),"\n"); 00556 #endif 00557 if (str!="") ausgabe+=sprintf("%s\n%s\n\n", list[i], str); 00558 } 00559 if (ausgabe!="") 00560 More(ausgabe); 00561 else 00562 printf("Keine Property-Definitionen zu diesem Objekt gefunden!\n"); 00563 return 1; 00564 }

| private mixed _size_filter | ( | mixed * | arg | ) |
Definiert in Zeile 320 der Datei fileview.c.
Benutzt FILESIZE und FULLNAME.
00321 { 00322 if (arg[FILESIZE]>0) return arg[FULLNAME]; 00323 if (arg[FILESIZE]==0) 00324 { 00325 printf("%s: %s: Leere Datei.\n",query_verb()||"more",arg[FULLNAME]); 00326 return 0; 00327 } 00328 if (arg[FILESIZE]==-2) 00329 printf("%s: %s ist ein Verzeichnis.\n",query_verb()||"more",arg[FULLNAME]); 00330 else 00331 printf("%s: %s: Datei existiert nicht.\n", query_verb()||"more", 00332 arg[FULLNAME]); 00333 return 0; 00334 }
| private int grep_file | ( | mixed | filedata, | |
| string | rexpr, | |||
| int | flags | |||
| ) |
Definiert in Zeile 586 der Datei fileview.c.
Benutzt count, data, DOESNT_EXIST, ERROR, FILESIZE, FULLNAME, GREP_F, GREP_I, lines, MAXLEN, MAY_READ, NO_READ, result() und RET_FAIL.
00587 { 00588 string fullname,data,carry,*lines,*lines_orig,*tmp,*result; 00589 int ptr,count,i,nol,match,index; 00590 fullname=filedata[FULLNAME]; 00591 if ((flags&GREP_F)&&fullname=="/players/"+getuid()+"/grep.out") 00592 { 00593 write_file("/players/"+getuid()+"/grep.out", 00594 "Uebergehe grep.out ...\n"); 00595 return RET_FAIL; 00596 } 00597 switch(filedata[FILESIZE]) 00598 { 00599 case -2: return RET_FAIL; 00600 case -1: return ERROR(DOESNT_EXIST,fullname,RET_FAIL); 00601 case 0: return RET_FAIL; 00602 default: break; 00603 } 00604 if (!MAY_READ(fullname)) return ERROR(NO_READ,fullname,RET_FAIL); 00605 carry=""; result=({}); 00606 if (flags&GREP_I) 00607 rexpr=lower_case(rexpr); 00608 do 00609 { 00610 data=read_bytes(fullname,ptr,MAXLEN)||""; 00611 ptr+=MAXLEN; 00612 lines=explode(carry+data,"\n"); 00613 switch(sizeof(lines)) 00614 { 00615 case 0: continue; 00616 case 1: 00617 carry=""; 00618 break; 00619 default: 00620 carry=lines[<1]; 00621 lines=lines[0..<2]; 00622 break; 00623 } 00624 lines_orig=lines; 00625 if (flags&GREP_I) 00626 lines=map(lines,#'lower_case); 00627 nol=sizeof(lines); 00628 for (i=0;i<nol;i++) 00629 { 00630 match=sizeof(regexp(lines[i..i],rexpr)); 00631 if (flags&GREP_V) match=!match; 00632 if (match) 00633 { 00634 if (!(flags&GREP_C)) 00635 { 00636 if (flags&GREP_N) 00637 result+=({ sprintf("%4d %s",index+i+1,lines_orig[i])}); 00638 else 00639 result+=lines_orig[i..i]; 00640 } 00641 count++; 00642 } 00643 } 00644 index+=nol; 00645 } 00646 while(strlen(data)==MAXLEN); 00647 if (carry!="") 00648 { 00649 if (flags&GREP_I) carry=lower_case(carry); 00650 match=sizeof(regexp(({ carry }),rexpr)); 00651 if (flags&GREP_V) match=!match; 00652 if (match) 00653 { 00654 if(!(flags&GREP_C)) 00655 { 00656 if(flags&GREP_N) 00657 result+=({ sprintf("%4d %s",index+1,carry) }); 00658 else 00659 result+=({carry}); 00660 } 00661 count++; 00662 } 00663 } 00664 carry=""; 00665 if (count) 00666 { 00667 if (flags&GREP_L) carry=sprintf("%s\n",fullname); 00668 else if (flags&GREP_H) data=""; 00669 else data=sprintf(" %s:",fullname); 00670 if (flags&GREP_C) carry=sprintf("%s %d passende Zeile%s.\n",data,count, 00671 (count==1?"":"n")); 00672 else 00673 carry=(data+"\n"+implode(result,"\n")+"\n"); 00674 } 00675 if (flags&GREP_F) 00676 return write_file("/players/"+getuid()+"/grep.out",carry); 00677 write(carry); 00678 return RET_OK; 00679 }

| private void SetColorstrings | ( | ) |
Definiert in Zeile 64 der Datei fileview.c.
Benutzt _get_color(), ANSI_INVERS, ANSI_NORMAL, ANSI_RED, colorstrings, OBJ, P_TTY, P_VARIABLES, QueryProp(), term und vars().
00065 { 00066 string tmp,term; 00067 mapping vars; 00068 vars=QueryProp(P_VARIABLES); 00069 colorstrings=m_allocate(0,2); 00070 switch(term=QueryProp(P_TTY)) 00071 { 00072 case "vt100": 00073 case "ansi": 00074 if(stringp(vars["LS_DIR"])) 00075 tmp=implode(map(explode(vars["LS_DIR"],"+"),#'_get_color), 00076 ""); 00077 else 00078 tmp = (term == "ansi") ? ANSI_BLUE+ANSI_BOLD: ANSI_BOLD; 00079 colorstrings[DIR] = tmp+"%s"+(term == "vt100"?"/":"")+ANSI_NORMAL; 00080 if(term == "vt100") colorstrings[DIR, 1] = 1; 00081 if(stringp(vars["LS_OBJ"])) 00082 tmp=implode(map(explode(vars["LS_OBJ"],"+"),#'_get_color), 00083 ""); 00084 else 00085 tmp = (term == "ansi") ? ANSI_RED : ANSI_INVERS; 00086 colorstrings[OBJ] = tmp+"%s"+ANSI_NORMAL; 00087 if(stringp(vars["LS_VC"])) 00088 tmp=implode(map(explode(vars["LS_VC"],"+"),#'_get_color), 00089 ""); 00090 else 00091 tmp = (term == "ansi") ? ANSI_PURPLE : ANSI_INVERS; 00092 colorstrings[VC] = tmp+"%s"+ANSI_NORMAL; 00093 break; 00094 case "dumb": 00095 colorstrings[DIR] = "%s/"; colorstrings[DIR, 1] = 1; 00096 colorstrings[OBJ] = "%s*"; colorstrings[OBJ, 1] = 1; 00097 colorstrings[VC] = "%s*"; colorstrings[VC , 1] = 1; 00098 break; 00099 default: 00100 colorstrings[DIR] = "%s"; 00101 colorstrings[OBJ] = "%s"; 00102 colorstrings[VC] = "%s"; 00103 } 00104 return; 00105 }

private mapping colorstrings [static] |
Definiert in Zeile 23 der Datei fileview.c.
Wird benutzt von SetColorstrings().
private mapping oldman_result [static] |
Definiert in Zeile 24 der Datei fileview.c.
Wird benutzt von _man().
1.6.3