Etwas Codemodernisierung.
* Kosmetik, Stil, Einrueckungen, Whitespace!
* Verwendung sym. Konstanten
* Vereinzelt einfacherer Code
Change-Id: Icbf1081cb528dc3f8f1543d2531ef8fd0a1c2077
diff --git a/std/shells/magier/parsing.c b/std/shells/magier/parsing.c
index 555332d..73320e5 100644
--- a/std/shells/magier/parsing.c
+++ b/std/shells/magier/parsing.c
@@ -1,9 +1,7 @@
// $Id: parsing.c 9142 2015-02-04 22:17:29Z Zesstra $
-#pragma strict_types
-#pragma save_types
-//#pragma range_check
+#pragma strict_types, rtt_checks
+#pragma range_check, pedantic
#pragma no_clone
-#pragma pedantic
#include <files.h>
#include <wizlevels.h>
@@ -135,25 +133,26 @@
// Rueckgabe: Alist mit den Dateiinformationen
//
-private varargs mixed *_get_files(string dirname,string mask,int mode,string dest)
+private varargs mixed *_get_files(string dirname,string mask,int mode,
+ string dest)
{
- mixed *files,*tmp,*data;
- string fullname,base;
-
//DEBUG("_GF: DIRNAME " + dirname);
- data=get_dir(dirname+"*",7);
+ mixed *data=get_dir(dirname+"*",GETDIR_NAMES|GETDIR_SIZES|GETDIR_DATES);
if(!sizeof(data)) return ({});
- files=({});
-
+ mixed *files=({});
+
while(sizeof(data))
{
- tmp=({});
- base=data[BASENAME];
- fullname=dirname+base;
- if (base!="."&&base!=".."&&(!(mode==MODE_GREP&&base=="RCS"))&&
- ((data[FILESIZE]==-2&&
- sizeof(tmp=_get_files(fullname+"/",mask,mode,
- dest+base+"/"))&&mode!=MODE_RM)||!mask||sizeof(regexp(({ base }),mask, RE_TRADITIONAL))))
+ mixed *tmp=({});
+ string base=data[BASENAME];
+ string fullname=dirname+base;
+ if (base!="." && base!=".."
+ && (!(mode==MODE_GREP && base=="RCS"))
+ && ((data[FILESIZE]==FSIZE_DIR
+ && sizeof(tmp=_get_files(fullname+"/",mask,mode,dest+base+"/"))
+ && mode!=MODE_RM)
+ || !mask
+ || sizeof(regexp(({ base }),mask, RE_TRADITIONAL))) )
{
//DEBUG("_GF: ADDING FILE " + fullname);
files+= ({ data[0..2]+({ fullname,dirname,dest+base,
@@ -189,43 +188,47 @@
private mixed *_get_matching(string *pathmask, int depth, string path,
int mode, int recursive, string dest,string filemask)
{
- mixed *data,*tmp,*files;
- string base,full;
-
//DEBUG("_GM: PM: " + pathmask[depth]);
//DEBUG("_GM: FM: " + filemask);
- data=get_dir(path+pathmask[depth++],GETDIR_NAMES|GETDIR_SIZES|GETDIR_DATES)||({});
- if (!sizeof(data)) return ({});
- files=({});
+ mixed *data=get_dir(path+pathmask[depth++],GETDIR_NAMES|GETDIR_SIZES|
+ GETDIR_DATES)||({});
+ if (!sizeof(data))
+ return ({});
+
+ mixed *files=({});
while(sizeof(data))
{
- if ((base=data[BASENAME])=="."||base=="..")
+ string base=data[BASENAME];
+ if (base=="." || base=="..")
{
data=data[3..];
continue;
}
- full=path+base;
+ string full=path+base;
//DEBUG("_GM: FULL: " + full);
- if ((data[FILESIZE]==-2)&&(sizeof(pathmask)>depth)&&
- (!(mode==MODE_GREP&&base=="RCS")))
+ mixed *tmp;
+ if ((data[FILESIZE]==FSIZE_DIR) && (sizeof(pathmask)>depth)
+ && (!(mode==MODE_GREP && base=="RCS")))
{
//DEBUG("DESCEND INTO " + full);
tmp=_get_matching(pathmask,depth,full+"/",mode,recursive,
- (recursive?dest+base+"/":dest),filemask);
+ (recursive ? dest+base+"/" : dest),filemask);
}
else tmp=({});
+
//DEBUG("DEPTH: " + depth + " : " + sizeof(pathmask));
- if((!filemask&&(depth==sizeof(pathmask)))||
- (filemask&&(depth+2>sizeof(pathmask))&&
- sizeof(regexp(({ base }),filemask,RE_TRADITIONAL)))||
- ((mode==MODE_CP||mode==MODE_MV||(filemask&&
- (mode==MODE_RM)&&sizeof(regexp(({ base}),filemask,RE_TRADITIONAL))))&&
- sizeof(tmp)))
+ if((!filemask && (depth==sizeof(pathmask)))
+ || (filemask && (depth+2 > sizeof(pathmask))
+ && sizeof(regexp(({ base }),filemask,RE_TRADITIONAL)))
+ || ((mode==MODE_CP || mode==MODE_MV
+ || (filemask && (mode==MODE_RM)
+ && sizeof(regexp(({ base}),filemask,RE_TRADITIONAL))))
+ && sizeof(tmp)) )
{
//DEBUG("ADDING: " + base+ " : "+ full );
files+=({ data[0..2]+({ full, path, dest+base,sizeof(tmp)}) });
}
- if (sizeof(files)+sizeof(tmp)>MAX_ARRAY_SIZE)
+ if (sizeof(files) + sizeof(tmp) > MAX_ARRAY_SIZE)
raise_error("Zu viele Files (>3000)!! Abgebrochen!\n");
files+=tmp;
data=data[3..];
@@ -248,12 +251,9 @@
// Rueckgabe: Alist mit den Dateiinformationen
//
-static varargs mixed *get_files(string filename, int mode, int recursive, string dest, string filemask)
-{
- string full,path,base,*patharray,*vrooms,dest2;
- object vcompiler;
- mixed *files,*data;
-
+static varargs mixed *get_files(string filename, int mode, int recursive,
+ string dest, string filemask)
+{
// DEBUG("GF: " + filename);
// DEBUG("REC: " + recursive + " MODE: " + mode);
// if (dest[<1..<1]!="/") DEBUG("DEST: " + dest);
@@ -266,38 +266,50 @@
break;
}
}
- patharray=explode(filename,"/");
- if(!sizeof(data=get_dir(filename,7)||({}))&&
- (mode==MODE_UPD||mode==MODE_MORE||mode==MODE_ED))
- data=get_dir(filename+".c",7)||({});
- if ((mode==MODE_LSA||mode==MODE_LSB)&&
- (vcompiler = find_object(implode(patharray[0..<2],"/")+"/virtual_compiler")) &&
- pointerp(vrooms=(mixed *)vcompiler->QueryObjects()))
+ string *patharray=explode(filename,"/");
+
+ mixed *data=get_dir(filename,GETDIR_NAMES|GETDIR_SIZES|GETDIR_DATES)||({});
+ if(!sizeof(data)
+ && (mode==MODE_UPD || mode==MODE_MORE || mode==MODE_ED))
+ data=get_dir(filename+".c",GETDIR_NAMES|GETDIR_SIZES|GETDIR_DATES) || ({});
+
+ if ((mode==MODE_LSA||mode==MODE_LSB))
+ {
+ string *vrooms;
+ object vcompiler =
+ find_object(implode(patharray[0..<2],"/")+"/virtual_compiler");
+ if (vcompiler && pointerp(vrooms=(mixed *)vcompiler->QueryObjects()))
map(vrooms,#'_vc_map,&data);
- files=({});
+ }
+ mixed *files=({});
if (sizeof(data)) // passende files
{
mixed *subfiles;
subfiles=({});
- path=implode(patharray[0..<2],"/")+"/";
+ string path=implode(patharray[0..<2],"/")+"/";
while (sizeof(data))
{
subfiles=({});
- base=data[BASENAME];
+ string base=data[BASENAME];
if (mode==MODE_LSB||(base!="."&&base!=".."))
{
//DEBUG("PATH: " + path+" BASE: " + base + " MODE: " + mode);
- full=path+base;
- dest2=((dest=="/"||file_size(dest[0..<2])==-2)?
- (dest+base):(dest=="/"?"/":dest[0..<2]));
+ string full=path+base;
+ string dest2;
+ if (dest=="/" || file_size(dest[0..<2])==FSIZE_DIR)
+ dest2 = dest+base;
+ else
+ dest2 = dest[0..<2];
+
//DEBUG("DEST: " + dest);
- if (recursive&&data[FILESIZE]==-2) // Verzeichnis, Rekursiv
+ if (recursive && data[FILESIZE]==FSIZE_DIR) // Verzeichnis, Rekursiv
subfiles=_get_files(full+"/",filemask,mode,dest2+"/");
- if (!(filemask&&!sizeof(subfiles)&&!sizeof(regexp(({ base }),filemask,RE_TRADITIONAL))))
+ if (!(filemask && !sizeof(subfiles)
+ && !sizeof(regexp(({ base }),filemask,RE_TRADITIONAL))))
{
- if (!filemask||mode!=MODE_RM)
+ if (!filemask || mode!=MODE_RM)
files+=({ data[0..2]+({ full, path, dest2,sizeof(subfiles)}) });
- if (sizeof(files)+sizeof(subfiles)>MAX_ARRAY_SIZE)
+ if (sizeof(files)+sizeof(subfiles) > MAX_ARRAY_SIZE)
raise_error("Zu viele Files (>3000)!! Abgebrochen!\n");
files+=subfiles;
}
@@ -333,27 +345,26 @@
// Rueckgabe: Liste der betroffenen Files
//
-static varargs mixed *file_list(string *files, int mode, int recursive, string dest, string mask)
+static varargs mixed *file_list(string *files, int mode, int recursive,
+ string dest, string mask)
{
- string *list,err,*result;
- int i,j;
- list=({});
+ string *list=({});
if (mask) mask=glob2regexp(mask);
- j=sizeof(files);
- for(i=0;i<j;i++)
+ foreach(string file: files)
{
// Abschliessenden / von Pfadnamen abschneiden, weil in diesem Fall
// die Inhalte der ersten Unterverzeichnisebene mit ausgegeben
// wurden. Ursache hierfuer ist ein Fix an full_path_array() im
// Masterobjekt, der dazu fuehrte, dass get_dir() den abschliessenden /
// des uebergebenen Pfades jetzt korrekt behandelt. \o/
- if ( sizeof(files[i]) > 1 && files[i][<1] == '/' )
+ if ( sizeof(file) > 1 && file[<1] == '/' )
{
- files[i] = files[i][0..<2];
- if ( !sizeof(files[i]) )
+ file = file[0..<2];
+ if ( !sizeof(file) )
continue;
}
- if (err=catch(list+=get_files(files[i],mode,recursive,dest,mask)))
+ string err=catch(list += get_files(file,mode,recursive,dest,mask));
+ if (err)
{
printf("Fehler aufgetreten: %s\n",err);
log_file(SHELLLOG("FILE_LIST"),