55 lines
1.2 KiB
HolyC
55 lines
1.2 KiB
HolyC
|
I64 MyUtilDoc(CDoc *doc,I64 fuf_flags)
|
||
|
{
|
||
|
Bool unlock=DocLock(doc);
|
||
|
I64 res=0;
|
||
|
CDocEntry *doc_e;
|
||
|
DocRecalc(doc);
|
||
|
doc_e=doc->head.next;
|
||
|
while (doc_e!=doc) {
|
||
|
res++;
|
||
|
doc_e=doc_e->next;
|
||
|
}
|
||
|
DocRecalc(doc);
|
||
|
if (unlock)
|
||
|
DocUnlock(doc);
|
||
|
return res;
|
||
|
}
|
||
|
|
||
|
I64 MyUtilFile(U8 *filename,I64 fuf_flags)
|
||
|
{
|
||
|
I64 res;
|
||
|
CDoc *doc=DocRead(filename);
|
||
|
if (res=MyUtilDoc(doc,fuf_flags)) {
|
||
|
"%8d:%s\n",res,doc->filename.name;
|
||
|
DocWrite(doc);
|
||
|
}
|
||
|
DocDel(doc);
|
||
|
return res;
|
||
|
}
|
||
|
I64 MyUtilLst(CDirEntry *tmpde,I64 fuf_flags)
|
||
|
{
|
||
|
I64 res=0;
|
||
|
CDirEntry *tmpde1;
|
||
|
while (tmpde) {
|
||
|
tmpde1=tmpde->next;
|
||
|
if (tmpde->attr & RS_ATTR_DIR) {
|
||
|
if (tmpde->sub) {
|
||
|
"Processing Directory: %s\n",tmpde->full_name;
|
||
|
res+=MyUtilLst(tmpde->sub,fuf_flags);
|
||
|
}
|
||
|
} else
|
||
|
res+=MyUtilFile(tmpde->full_name,fuf_flags);
|
||
|
DirEntryDel(tmpde);
|
||
|
tmpde=tmpde1;
|
||
|
}
|
||
|
return res;
|
||
|
}
|
||
|
I64 MyUtil(U8 *files_find_mask="*",U8 *fu_flags=NULL)
|
||
|
{
|
||
|
I64 fuf_flags=0;
|
||
|
ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),"+r+$$");
|
||
|
ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),fu_flags);
|
||
|
return MyUtilLst(FilesFind(files_find_mask,fuf_flags&FUG_FILES_FIND),
|
||
|
fuf_flags&~FUG_FILES_FIND);
|
||
|
}
|