70 lines
1.7 KiB
Plaintext
70 lines
1.7 KiB
Plaintext
#help_index "Utils"
|
|
|
|
//$LK,"StrUtil","MN:StrUtil"$() operations on files
|
|
|
|
public void SUFile(I1 *name,U8 su_flags)
|
|
{//String utility on a single file
|
|
//See $LK,"SU Flags","MN:SU_SINGLE_SPACE"$
|
|
I1 *dst;
|
|
BoolU4 changed=FALSE;
|
|
I8 reduced=0;
|
|
Ltf *l=LtfRead(name,LTFF_PLAIN_TEXT_WITH_TABS | LTFF_NO_CURSOR);
|
|
LtfEntry *cl;
|
|
cl=l->dummy.next;
|
|
while (cl!=l) {
|
|
if (cl->btype==LTFT_TEXT) {
|
|
dst=MStrUtil(cl->display,su_flags);
|
|
if (StrCmp(dst,cl->display)) {
|
|
reduced=reduced+StrLen(cl->display)-StrLen(dst);
|
|
changed=TRUE;
|
|
Free(cl->display);
|
|
cl->display=dst;
|
|
} else
|
|
Free(dst);
|
|
}
|
|
cl=cl->next;
|
|
}
|
|
if (changed) {
|
|
PrintF("Reduced %s by %d chars\r\n",name,reduced);
|
|
StrCpy(l->filename.name,name);
|
|
LtfWrite(l);
|
|
}
|
|
LtfDel(l);
|
|
}
|
|
|
|
void SUList(LTDirEntry *tempm1,U8 su_flags)
|
|
{
|
|
LTDirEntry *tempm2;
|
|
while (tempm1) {
|
|
tempm2=tempm1->next;
|
|
if (tempm1->attr & LT_ATTR_DIR) {
|
|
if (tempm1->sub) {
|
|
coutln SysText("ST_SCANNING_DIRECTORY"),tempm1->full_name;
|
|
SUList(tempm1->sub,su_flags);
|
|
}
|
|
} else
|
|
SUFile(tempm1->full_name,su_flags);
|
|
DelLTDirEntry(tempm1);
|
|
tempm1=tempm2;
|
|
}
|
|
}
|
|
|
|
//flags +r=recurse
|
|
public void SU(I1 *wild,U8 su_flags,I1 *flags)
|
|
{//Apply string utilities to files
|
|
//You can convert spaces to tabs, for example
|
|
//or removing trailing spaces on lines.
|
|
//See $LK,"SU Flags","MN:SU_SINGLE_SPACE"$
|
|
U8 f=0;
|
|
GetFFlags(&f,SysText("ST_FILE_UTIL_FLAGS"),flags);
|
|
SUList(FindFiles(wild,f),su_flags);
|
|
}
|
|
|
|
//flags +r=recurse
|
|
public void S2T(I1 *wild,I1 *flags)
|
|
{//Spaces to tabs
|
|
SU(wild,SU_S2T|SU_REMOVE_TRAILING,flags);
|
|
}
|
|
|
|
#help_index ""
|