TempleOSCDV4.06.ISO

This commit is contained in:
Terry A. Davis authored and minexew committed 2018-09-08 21:47:19 +02:00
1 parent 6fe38d2d9d
commit b632ab9a4f
261 files changed
+6282 -5801

No files matched your search

+30 -30
View File
@@ -64,7 +64,7 @@ U0 ATACmd(CBlkDev *bd,U8 cmd)
PortNop;
}
Bool ATAGetResult(CBlkDev *bd,F64 timeout,U8 *buf,I64 cnt,
Bool ATAGetRes(CBlkDev *bd,F64 timeout,U8 *buf,I64 cnt,
I64 _avail,Bool one_read)
{
I64 avail,overflow;
@@ -176,7 +176,7 @@ I64 ATAGetDevId(CBlkDev *bd,F64 timeout,U16 **_id_record)
if (InU8(bd->base0+ATAR0_STAT)&ATAS_ERR)
return BDT_ATAPI;
id_record=ACAlloc(512);
if (!ATAGetResult(bd,timeout,id_record,512,512,FALSE)) {
if (!ATAGetRes(bd,timeout,id_record,512,512,FALSE)) {
Free(id_record);
return BDT_NULL;
}
@@ -186,7 +186,7 @@ I64 ATAGetDevId(CBlkDev *bd,F64 timeout,U16 **_id_record)
I64 ATAReadNativeMax(CBlkDev *bd,F64 timeout)
{//Returns zero on err
I64 result=0;
I64 res=0;
Bool okay=TRUE;
if (bd->type==BDT_ATAPI) {
@@ -220,18 +220,18 @@ I64 ATAReadNativeMax(CBlkDev *bd,F64 timeout)
OutU8(bd->base0+ATAR0_SELECT,0xEF|bd->unit<<4);
ATACmd(bd,ATA_READ_NATIVE_MAX_EXT);
if (ATAWaitNotBUSY(bd,timeout)) {
result.u8[0]=InU8(bd->base0+ATAR0_SECT);
result.u8[1]=InU8(bd->base0+ATAR0_LCYL);
result.u8[2]=InU8(bd->base0+ATAR0_HCYL);
res.u8[0]=InU8(bd->base0+ATAR0_SECT);
res.u8[1]=InU8(bd->base0+ATAR0_LCYL);
res.u8[2]=InU8(bd->base0+ATAR0_HCYL);
OutU8(bd->base1+ATAR1_CTRL,0x80);
result.u8[3]=InU8(bd->base0+ATAR0_SECT);
result.u8[4]=InU8(bd->base0+ATAR0_LCYL);
result.u8[5]=InU8(bd->base0+ATAR0_HCYL);
res.u8[3]=InU8(bd->base0+ATAR0_SECT);
res.u8[4]=InU8(bd->base0+ATAR0_LCYL);
res.u8[5]=InU8(bd->base0+ATAR0_HCYL);
if (result>>24==result&0xFFFFFF) {//Kludge to make qemu-kvm work
if (res>>24==res&0xFFFFFF) {//Kludge to make qemu-kvm work
bd->flags&=~BDF_EXT_SIZE;
result&=0xFFFFFF;
res&=0xFFFFFF;
}
}
} else {
@@ -240,18 +240,18 @@ I64 ATAReadNativeMax(CBlkDev *bd,F64 timeout)
OutU8(bd->base0+ATAR0_SELECT,0xE0|bd->unit<<4);
ATACmd(bd,ATA_READ_NATIVE_MAX);
if (ATAWaitNotBUSY(bd,timeout)) {
result.u8[0]=InU8(bd->base0+ATAR0_SECT);
result.u8[1]=InU8(bd->base0+ATAR0_LCYL);
result.u8[2]=InU8(bd->base0+ATAR0_HCYL);
result.u8[3]=InU8(bd->base0+ATAR0_SELECT) & 0xF;
res.u8[0]=InU8(bd->base0+ATAR0_SECT);
res.u8[1]=InU8(bd->base0+ATAR0_LCYL);
res.u8[2]=InU8(bd->base0+ATAR0_HCYL);
res.u8[3]=InU8(bd->base0+ATAR0_SELECT) & 0xF;
}
}
}
return bd->max_blk=result;
return bd->max_blk=res;
}
I64 ATAPIReadCapacity(CBlkDev *bd,I64 *_blk_size=NULL)
{//Supposedly this can return a result +/- 75 sects.
{//Supposedly this can return a res +/- 75 sects.
//Error might just be for music.
Bool unlock=BlkDevLock(bd);
U32 buf[2];
@@ -264,7 +264,7 @@ I64 ATAPIReadCapacity(CBlkDev *bd,I64 *_blk_size=NULL)
OutU8(bd->base0+ATAR0_HCYL,0);
ATACmd(bd,ATA_PACKET);
ATAPIWritePktWord(bd,0,0x2500,0,0,0,0,0);
if (!ATAGetResult(bd,0,buf,8,0,TRUE))
if (!ATAGetRes(bd,0,buf,8,0,TRUE))
buf[0]=buf[1]=0;
} else
buf[0]=buf[1]=0;
@@ -276,7 +276,7 @@ I64 ATAPIReadCapacity(CBlkDev *bd,I64 *_blk_size=NULL)
CATAPITrack *ATAPIReadTrackInfo(CBlkDev *bd,I64 blk)
{
CATAPITrack *result=CAlloc(sizeof(CATAPITrack));
CATAPITrack *res=CAlloc(sizeof(CATAPITrack));
Bool unlock=BlkDevLock(bd);
if (ATAWaitNotBUSY(bd,0)) {
if (bd->flags & BDF_EXT_SIZE)
@@ -288,16 +288,16 @@ CATAPITrack *ATAPIReadTrackInfo(CBlkDev *bd,I64 blk)
ATACmd(bd,ATA_PACKET);
ATAPIWritePktWord(bd,0,0x5200,blk.u16[1],blk.u16[0],
(sizeof(CATAPITrack)&0xFF00)>>8,(sizeof(CATAPITrack)&0x00FF)<<8,0);
if (!ATAGetResult(bd,0,result,sizeof(CATAPITrack),0,TRUE)) {
Free(result);
result=NULL;
if (!ATAGetRes(bd,0,res,sizeof(CATAPITrack),0,TRUE)) {
Free(res);
res=NULL;
}
} else {
Free(result);
result=NULL;
Free(res);
res=NULL;
}
if (unlock) BlkDevUnlock(bd);
return result;
return res;
}
Bool ATAInit(CBlkDev *bd)
@@ -358,7 +358,7 @@ U0 ATAReadBlks(CBlkDev *bd,U8 *buf, I64 blk, I64 cnt)
ATACmd(bd,ATA_READ_MULTI_EXT);
else
ATACmd(bd,ATA_READ_MULTI);
if (!ATAGetResult(bd,tS+1.0,buf,cnt*bd->blk_size,BLK_SIZE,FALSE)) {
if (!ATAGetRes(bd,tS+1.0,buf,cnt*bd->blk_size,BLK_SIZE,FALSE)) {
if (retries--) {
ATAWaitNotBUSY(bd,0);
goto retry;
@@ -385,7 +385,7 @@ I64 ATAProbe(I64 base0,I64 base1,I64 unit)
Bool ATAPIReadBlks2(CBlkDev *bd,F64 timeout,U8 *buf,
I64 native_blk, I64 cnt,Bool lock)
{
Bool result=FALSE,unlock;
Bool res=FALSE,unlock;
if (cnt<=0)
return FALSE;
if (lock)
@@ -400,14 +400,14 @@ Bool ATAPIReadBlks2(CBlkDev *bd,F64 timeout,U8 *buf,
ATACmd(bd,ATA_PACKET);
if (ATAPIWritePktWord(bd,timeout,0xA800,
native_blk.u16[1],native_blk,cnt.u16[1],cnt,0) &&
ATAGetResult(bd,timeout,buf,cnt*bd->blk_size,0,FALSE)) {
ATAGetRes(bd,timeout,buf,cnt*bd->blk_size,0,FALSE)) {
blkdev.read_cnt+=(cnt*bd->blk_size)>>BLK_SIZE_BITS;
result=TRUE;
res=TRUE;
}
}
// ATAPIStartStop(bd,0,FALSE);
if (lock && unlock) BlkDevUnlock(bd);
return result;
return res;
}
U0 ATAPIReadBlks(CBlkDev *bd,U8 *buf, I64 blk, I64 cnt)
+22 -22
View File
@@ -2,7 +2,7 @@ Bool BootDVDProve(CBlkDev *bd)
{
CKernel *img=CAlloc(DVD_BLK_SIZE);
I64 i;
Bool result=FALSE;
Bool res=FALSE;
"Port: %04X,%04X Unit: %02X ",bd->base0,bd->base1,bd->unit;
if (ATAProbe(bd->base0,bd->base1,bd->unit)==BDT_ATAPI) {
" ATAPI";
@@ -22,7 +22,7 @@ Bool BootDVDProve(CBlkDev *bd)
}
" Nope\n";
Free(img);
return result;
return res;
}
Bool BootDVDProbeAll(CBlkDev *bd)
@@ -204,21 +204,21 @@ CATARep *ATARepFind(CATARep *haystack_root,I64 needle_num)
CATARep *ATAIDDrvs(CATARep *root,I64 _sys_boot_drv,
CATARep **_ata_drv,CATARep **_atapi_drv)
{//This is for when trying to sort-out main hard drives and CD/DVD drives.
CATARep *result=NULL,*tempha=root,*ata_drv=NULL,*atapi_drv=NULL;
CATARep *res=NULL,*tempha=root,*ata_drv=NULL,*atapi_drv=NULL;
CBlkDev *bd;
Bool was_silent=Silent;
bd=Let2BlkDev(_sys_boot_drv,FALSE);
Silent(was_silent);
while (tempha) {
if (!result && bd && bd->type==tempha->type) {
if (!res && bd && bd->type==tempha->type) {
if (bd->type==BDT_ATAPI &&
bd->base0==tempha->base0 && bd->unit==tempha->unit)
result=atapi_drv=tempha;
res=atapi_drv=tempha;
else if (bd->type==BDT_ATA && bd->base0==tempha->base0 &&
bd->base1==tempha->base1 && bd->unit==tempha->unit)
result=ata_drv=tempha;
res=ata_drv=tempha;
}
if (!result || result->type!=tempha->type) {
if (!res || res->type!=tempha->type) {
if (tempha->type==BDT_ATA) {
if (!ata_drv || tempha->unit<ata_drv->unit ||
tempha->unit==ata_drv->unit && tempha->num<ata_drv->num)
@@ -233,20 +233,20 @@ CATARep *ATAIDDrvs(CATARep *root,I64 _sys_boot_drv,
}
if (_ata_drv) *_ata_drv =ata_drv;
if (_atapi_drv) *_atapi_drv=atapi_drv;
return result;
return res;
}
CBlkDev *ATAMount(U8 first_drv_let,I64 type,I64 base0,I64 base1,I64 unit)
{
CBlkDev *result;
CBlkDev *res;
if (0<=first_drv_let-'A'<NUM_DRVS && (type==BDT_ATA || type==BDT_ATAPI) &&
0<=unit<=1) {
result=BlkDevNextFree(first_drv_let,type);
result->unit=unit;
result->base0=base0;
result->base1=base1;
if (BlkDevAdd(result,FALSE,FALSE))
return result;
res=BlkDevNextFree(first_drv_let,type);
res->unit=unit;
res->base0=base0;
res->base1=base1;
if (BlkDevAdd(res,FALSE,FALSE))
return res;
}
return NULL;
}
@@ -255,30 +255,30 @@ I64 AutoMountIDE()
{//Try to mount hard drive and CD/DVD, automatically. (Kernel.Cfg option).
//It uses 'C' and 'T' as first drive letters or whatever you set
//in config when compiling Kernel.BIN.
I64 result=0;
I64 res=0;
CATARep *root=NULL,*ata_drv=NULL,*atapi_drv=NULL,*tempha;
ATARep(FALSE,TRUE,&root);
ATAIDDrvs(root,blkdev.boot_drv_let,&ata_drv,&atapi_drv);
if (ata_drv && ATAMount(blkdev.first_hd_drv_let,BDT_ATA,
ata_drv->base0,ata_drv->base1,ata_drv->unit))
result++;
res++;
if (atapi_drv && ATAMount(blkdev.first_dvd_drv_let,BDT_ATAPI,
atapi_drv->base0,atapi_drv->base1,atapi_drv->unit))
result++;
res++;
tempha=root;
while (tempha) {
if (tempha!=ata_drv && tempha!=atapi_drv) {
if (tempha->type==BDT_ATA && ATAMount(blkdev.first_hd_drv_let,BDT_ATA,
tempha->base0,tempha->base1,tempha->unit))
result++;
res++;
else if (tempha->type==BDT_ATAPI &&
ATAMount(blkdev.first_dvd_drv_let,BDT_ATAPI,
tempha->base0,tempha->base1,tempha->unit))
result++;
res++;
}
tempha=tempha->next;
}
LinkedLstDel(root);
blkdev.auto_mount_ide_cnt=result;
return result;
blkdev.auto_mount_ide_cnt=res;
return res;
}
+14 -14
View File
@@ -22,16 +22,16 @@ U0 BlkDevLockFwdingSet(CBlkDev *bd)
I64 BlkDevAdd(CBlkDev *bd,Bool one_drv,Bool make_free)
{
I64 i,j,ext_base,offset,result=0;
I64 i,j,ext_base,offset,res=0;
CDrv *dv;
CRedSeaBoot br;
CMasterBoot mbr;
bd->bd_signature=BD_SIGNATURE_VAL;
if (make_free)
dv=DrvMakeFree(bd->first_drv_let+result);
dv=DrvMakeFree(bd->first_drv_let+res);
else
dv=DrvNextFree(bd->first_drv_let+result);
dv=DrvNextFree(bd->first_drv_let+res);
dv->bd=bd;
dv->size=bd->max_blk+1;
switch (bd->type) {
@@ -46,7 +46,7 @@ I64 BlkDevAdd(CBlkDev *bd,Bool one_drv,Bool make_free)
//will be alloced on a just-in-time
//basis.
if (BlkDevInit(bd))
result++;
res++;
else
dv->dv_signature=0;
break;
@@ -58,7 +58,7 @@ I64 BlkDevAdd(CBlkDev *bd,Bool one_drv,Bool make_free)
dv->dv_signature=0; //Revoke validation
if (one_drv) {
dv->dv_signature=DRV_SIGNATURE_VAL;
result++;
res++;
dv->fs_type=FSt_REDSEA;
dv->size=bd->max_blk+1;
//The following read is a test read.
@@ -76,16 +76,16 @@ I64 BlkDevAdd(CBlkDev *bd,Bool one_drv,Bool make_free)
for (i=0;i<4;i++) {
if (mbr.p[i].type) {
if (make_free)
dv=DrvMakeFree(bd->first_drv_let+result);
dv=DrvMakeFree(bd->first_drv_let+res);
else
dv=DrvNextFree(bd->first_drv_let+result);
dv=DrvNextFree(bd->first_drv_let+res);
dv->bd=bd;
dv->base_offset=mbr.p[i].offset+offset;
dv->size =mbr.p[i].size;
switch (mbr.p[i].type) {
case MBR_PT_REDSEA:
dv->dv_signature=DRV_SIGNATURE_VAL;
result++;
res++;
dv->fs_type=FSt_REDSEA;
RedSeaDrvInit(dv);
break;
@@ -97,7 +97,7 @@ I64 BlkDevAdd(CBlkDev *bd,Bool one_drv,Bool make_free)
case MBR_PT_FAT32f:
ATAReadBlks(bd,&br,dv->base_offset,1);
dv->dv_signature=DRV_SIGNATURE_VAL;
result++;
res++;
if (br.signature==MBR_PT_REDSEA) {
dv->fs_type=FSt_REDSEA;
RedSeaDrvInit(dv);
@@ -108,7 +108,7 @@ I64 BlkDevAdd(CBlkDev *bd,Bool one_drv,Bool make_free)
break;
case MBR_PT_NTFS:
dv->dv_signature=DRV_SIGNATURE_VAL;
result++;
res++;
dv->fs_type=FSt_NTFS;
break;
case 5:
@@ -117,7 +117,7 @@ I64 BlkDevAdd(CBlkDev *bd,Bool one_drv,Bool make_free)
break;
default:
dv->dv_signature=DRV_SIGNATURE_VAL;
result++;
res++;
dv->fs_type=FSt_UNKNOWN;
}
}
@@ -136,16 +136,16 @@ I64 BlkDevAdd(CBlkDev *bd,Bool one_drv,Bool make_free)
break;
case BDT_ATAPI:
dv->dv_signature=DRV_SIGNATURE_VAL;
result++;
res++;
dv->fs_type=FSt_ISO9660; //Start with this
dv->size =0;
break;
}
if (result)
if (res)
BlkDevLockFwdingSet(bd);
else
MemSet(bd,0,sizeof(CBlkDev));
return result;
return res;
}
Bool DrvEnable(U8 drv_let,Bool val)
+6 -6
View File
@@ -30,7 +30,7 @@ U0 WZeroBlks(CDrv *dv,I64 blk,I64 cnt)
Bool RBlks(CDrv *dv,U8 *buf, I64 blk, I64 cnt)
{//Read blk cnt from Drv to buf.
Bool result=TRUE,unlock;
Bool res=TRUE,unlock;
CBlkDev *bd=dv->bd;
if (cnt<=0) return TRUE;
DrvChk(dv);
@@ -50,7 +50,7 @@ Bool RBlks(CDrv *dv,U8 *buf, I64 blk, I64 cnt)
break;
case BDT_ATA:
case BDT_ATAPI:
result=ATARBlks(dv,buf,blk,cnt);
res=ATARBlks(dv,buf,blk,cnt);
break;
}
bd->last_time=tS;
@@ -62,12 +62,12 @@ Bool RBlks(CDrv *dv,U8 *buf, I64 blk, I64 cnt)
} catch
if (unlock)
DrvUnlock(dv);
return result;
return res;
}
Bool WBlks(CDrv *dv,U8 *buf, I64 blk, I64 cnt)
{//Write blk cnt from buf to Drv.
Bool result=TRUE,unlock;
Bool res=TRUE,unlock;
CBlkDev *bd=dv->bd;
if (cnt<=0) return TRUE;
DrvChk(dv);
@@ -86,7 +86,7 @@ Bool WBlks(CDrv *dv,U8 *buf, I64 blk, I64 cnt)
break;
case BDT_ATA:
case BDT_ATAPI:
result=ATAWBlks(dv,buf,blk,cnt);
res=ATAWBlks(dv,buf,blk,cnt);
break;
}
bd->last_time=tS;
@@ -98,5 +98,5 @@ Bool WBlks(CDrv *dv,U8 *buf, I64 blk, I64 cnt)
} catch
if (unlock)
DrvUnlock(dv);
return result;
return res;
}
+21 -21
View File
@@ -31,7 +31,7 @@ Bool BlkDevUnlock(CBlkDev *bd,Bool rst=FALSE)
Bool BlkDevInit(CBlkDev *bd)
{
CDrv *dv=Let2Drv(bd->first_drv_let);
Bool result=FALSE;
Bool res=FALSE;
if (!LBts(&bd->flags,BDf_INITIALIZED)) {
bd->flags|=BDF_INIT_IN_PROGRESS;
switch (bd->type) {
@@ -46,12 +46,12 @@ Bool BlkDevInit(CBlkDev *bd)
RedSeaDrvInit(dv);
else
RedSeaFmt(bd->first_drv_let);
result=TRUE;
res=TRUE;
break;
case BDT_ATA:
bd->max_reads=128;
bd->max_writes=1;
result=ATAInit(bd);
res=ATAInit(bd);
break;
case BDT_ATAPI:
//0xFFFF*4 is too big for my taste
@@ -62,16 +62,16 @@ Bool BlkDevInit(CBlkDev *bd)
if (bd->max_reads<128)
bd->max_reads=128;
bd->max_writes=0xFFFF*4;
if (result=ATAInit(bd))
if (res=ATAInit(bd))
dv->size=bd->max_blk+1;
break;
}
if (result && bd->flags & BDF_READ_CACHE)
if (res && bd->flags & BDF_READ_CACHE)
DskCacheInvalidate(dv);
bd->flags&=~BDF_INIT_IN_PROGRESS;
} else
result=TRUE;
return result;
res=TRUE;
return res;
}
U0 BlkDevsRelease()
@@ -88,28 +88,28 @@ U0 BlkDevsRelease()
CBlkDev *BlkDevNextFree(U8 first_drv_let,I64 type)
{//Locate free slot for new BlkDev, like during $LK,"Mount",A="MN:Mount"$().
I64 i=0;
CBlkDev *result;
CBlkDev *res;
do {
result=&blkdev.blkdevs[i];
if (result->bd_signature!=BD_SIGNATURE_VAL) {
MemSet(result,0,sizeof(CBlkDev));
result->first_drv_let=first_drv_let;
result->type=type;
res=&blkdev.blkdevs[i];
if (res->bd_signature!=BD_SIGNATURE_VAL) {
MemSet(res,0,sizeof(CBlkDev));
res->first_drv_let=first_drv_let;
res->type=type;
if (type==BDT_ATAPI)
result->flags=BDF_REMOVABLE;
res->flags=BDF_REMOVABLE;
else
result->flags=0;
res->flags=0;
if (type!=BDT_RAM)
result->flags|=BDF_READ_CACHE;
res->flags|=BDF_READ_CACHE;
if (type==BDT_ATAPI) {
result->blk_size=DVD_BLK_SIZE;
result->flags|=BDF_READ_ONLY;
res->blk_size=DVD_BLK_SIZE;
res->flags|=BDF_READ_ONLY;
} else
result->blk_size=BLK_SIZE;
res->blk_size=BLK_SIZE;
result->max_blk=0xEFFFFFFF;
return result;
res->max_blk=0xEFFFFFFF;
return res;
}
} while (++i<NUM_BLKDEVS);
throw('BlkDev');
+4 -4
View File
@@ -82,16 +82,16 @@ Bool CopySingle(U8 *f1,U8 *f2) //Just one file
I64 Del(U8 *files_find_mask,Bool make_mask=FALSE,
Bool del_dir=FALSE,Bool print_msg=TRUE)
{//Delete files.
I64 result=0;
I64 res=0;
CDirContext *dirc;
if (dirc=DirContextNew(files_find_mask,make_mask)) {
switch (dirc->dv->fs_type) {
case FSt_REDSEA:
result=RedSeaFilesDel(dirc->dv,Fs->cur_dir,dirc->mask,
res=RedSeaFilesDel(dirc->dv,Fs->cur_dir,dirc->mask,
0,del_dir,print_msg);
break;
case FSt_FAT32:
result=FAT32FilesDel(dirc->dv,Fs->cur_dir,dirc->mask,
res=FAT32FilesDel(dirc->dv,Fs->cur_dir,dirc->mask,
0,del_dir,print_msg);
break;
case FSt_ISO9660:
@@ -102,5 +102,5 @@ I64 Del(U8 *files_find_mask,Bool make_mask=FALSE,
}
DirContextDel(dirc);
}
return result;
return res;
}
+5 -5
View File
@@ -133,7 +133,7 @@ U0 DirFilesSort(CDirEntry **_tempde,I64 key)
}
}
CDirEntry *DirFilesFlatten(CDirEntry *tempde,CDirEntry **_result,I64 fuf_flags)
CDirEntry *DirFilesFlatten(CDirEntry *tempde,CDirEntry **_res,I64 fuf_flags)
{//Returns last node
CDirEntry *tempde1;
Bool del;
@@ -141,12 +141,12 @@ CDirEntry *DirFilesFlatten(CDirEntry *tempde,CDirEntry **_result,I64 fuf_flags)
while (TRUE) {
tempde1=tempde->next;
if (!(tempde->attr&RS_ATTR_DIR)||!(fuf_flags&FUF_JUST_FILES)) {
_result=*_result=tempde;
_res=*_res=tempde;
del=FALSE;
} else
del=TRUE;
if (tempde->sub) {
_result=DirFilesFlatten(tempde->sub,_result,fuf_flags);
_res=DirFilesFlatten(tempde->sub,_res,fuf_flags);
tempde->sub=NULL;
}
if (del)
@@ -156,8 +156,8 @@ CDirEntry *DirFilesFlatten(CDirEntry *tempde,CDirEntry **_result,I64 fuf_flags)
else
break;
}
*_result=NULL;
return _result;
*_res=NULL;
return _res;
}
U0 PutFileLink(U8 *filename,I64 line=0,Bool plain_text=FALSE)
+21 -21
View File
@@ -3,7 +3,7 @@ Bool Cd(U8 *dirname=NULL,Bool make_dirs=FALSE)
I64 maxlen,cur_dir_cluster=0;
U8 *chg_to_buf,*new_cur_dir,*buf;
CDrv *dv;
Bool result=TRUE;
Bool res=TRUE;
if (!dirname)
dirname="::/Home";
else if (!*dirname)
@@ -28,7 +28,7 @@ Bool Cd(U8 *dirname=NULL,Bool make_dirs=FALSE)
new_cur_dir=MAlloc(maxlen);
buf=MAlloc(maxlen);
StrCpy(new_cur_dir,Fs->cur_dir);
while (*chg_to_buf && result) {
while (*chg_to_buf && res) {
StrFirstRem(chg_to_buf,"/",buf);
if (!*buf)
StrCpy(new_cur_dir,"/");
@@ -41,24 +41,24 @@ Bool Cd(U8 *dirname=NULL,Bool make_dirs=FALSE)
cur_dir_cluster=Name2DirCluster(dv,new_cur_dir);
switch (dv->fs_type) {
case FSt_REDSEA:
result=RedSeaCd(buf,cur_dir_cluster);
res=RedSeaCd(buf,cur_dir_cluster);
break;
case FSt_FAT32:
result=FAT32Cd(buf,cur_dir_cluster);
res=FAT32Cd(buf,cur_dir_cluster);
break;
case FSt_ISO9660:
result=ISO1Cd(buf,cur_dir_cluster);
res=ISO1Cd(buf,cur_dir_cluster);
break;
default:
PrintErr("File System Not Supported\n");
result=FALSE;
res=FALSE;
}
if (!result && make_dirs) {
if (!res && make_dirs) {
Free(Fs->cur_dir);
Fs->cur_dir=StrNew(new_cur_dir);
result=MkDir(buf);
res=MkDir(buf);
}
if (result) {
if (res) {
if (StrCmp(new_cur_dir,"/"))
CatPrint(new_cur_dir,"/");
CatPrint(new_cur_dir,buf);
@@ -70,22 +70,22 @@ Bool Cd(U8 *dirname=NULL,Bool make_dirs=FALSE)
Free(buf);
Free(chg_to_buf);
Free(new_cur_dir);
return result;
return res;
}
Bool IsDir(U8 *dir_name)
{//Is a str a valid, existing Dir?
U8 *mask=MStrPrint("%s/*",dir_name);
Bool result,old_silent=Silent;
Bool res,old_silent=Silent;
CDirContext *dirc;
if (dirc=DirContextNew(mask)) {
DirContextDel(dirc);
result=TRUE;
res=TRUE;
} else
result=FALSE;
res=FALSE;
Free(mask);
Silent(old_silent);
return result;
return res;
}
I64 Dir(U8 *files_find_mask,Bool full)
@@ -93,7 +93,7 @@ I64 Dir(U8 *files_find_mask,Bool full)
CDirEntry *tempde1=NULL,*tempde2;
U8 *st;
CDateStruct ds;
I64 csize=0xFFFF,c=0xFFFF,result=0;
I64 csize=0xFFFF,c=0xFFFF,res=0;
tempde1=FilesFind(files_find_mask);
if (!(st=CurDir))
PrintErr("Invalid Drive\n");
@@ -119,7 +119,7 @@ I64 Dir(U8 *files_find_mask,Bool full)
"DATE_ TIME_ %*ts\n",csize,"SIZE";
while (tempde1) {
tempde2=tempde1->next;
result++;
res++;
if (full)
"%D %T %0*tX %0*tX ",tempde1->datetime,tempde1->datetime,
csize,tempde1->size,c,tempde1->cluster;
@@ -140,14 +140,14 @@ I64 Dir(U8 *files_find_mask,Bool full)
"No matching entries\n";
Free(st);
}
return result;
return res;
}
Bool MkDir(U8 *filename)
{//Make directory. $LK,"Cd",A="MN:Cd"$() can also make directories.
U8 *name;
CDirContext *dirc;
Bool result=FALSE;
Bool res=FALSE;
if (FileFind(filename,,FUF_JUST_DIRS))
return FALSE;
if (dirc=DirContextNew(filename)) {
@@ -160,10 +160,10 @@ Bool MkDir(U8 *filename)
SUF_REM_LEADING|SUF_REM_TRAILING|SUF_REM_CTRL_CHARS);
switch (dirc->dv->fs_type) {
case FSt_REDSEA:
result=RedSeaMkDir(dirc->dv,Fs->cur_dir,name);
res=RedSeaMkDir(dirc->dv,Fs->cur_dir,name);
break;
case FSt_FAT32:
result=FAT32MkDir(dirc->dv,Fs->cur_dir,name);
res=FAT32MkDir(dirc->dv,Fs->cur_dir,name);
break;
case FSt_ISO9660:
PrintErr("Not Writable\n");
@@ -176,5 +176,5 @@ Bool MkDir(U8 *filename)
}
DirContextDel(dirc);
}
return result;
return res;
}
+14 -14
View File
@@ -37,20 +37,20 @@ U0 DrvsRelease()
CDrv *DrvMakeFree(U8 drv_let)
{//Make a slot free for a new drv, like during $LK,"Mount",A="MN:Mount"$().
//!!! drv_let is not a $LK,"remapped",A="MN:MapDrv"$ drv.
//!!! drv_let is not a $LK,"remapped",A="MN:DrvMap"$ drv.
I64 i=ToUpper(drv_let)-'A';
CDrv *result;
CDrv *res;
if (!(0<=i<NUM_DRVS))
throw('Drv');
result=&blkdev.drvs[i];
MemSet(result,0,sizeof(CDrv));
result->drv_let='A'+i;
return result;
res=&blkdev.drvs[i];
MemSet(res,0,sizeof(CDrv));
res->drv_let='A'+i;
return res;
}
CDrv *DrvNextFree(U8 first_drv_let='C')
{//Locate free slot for new drv, like during $LK,"Mount",A="MN:Mount"$().
//!!! first_drv_let is not a $LK,"remapped",A="MN:MapDrv"$ drv.
//!!! first_drv_let is not a $LK,"remapped",A="MN:DrvMap"$ drv.
I64 i=ToUpper(first_drv_let)-'A';
if (!(0<=i<NUM_DRVS))
throw('Drv');
@@ -209,7 +209,7 @@ U0 ChgDsk(U8 drv_let=0)
RedSeaFreeFreeLst(dv);
}
Bool MapDrv(U8 drv_let,CDrv *dv)
Bool DrvMap(U8 drv_let,CDrv *dv)
{//Make drive letter map to another.
drv_let=ToUpper(drv_let);
if ('A'<=drv_let<='Z') {
@@ -248,31 +248,31 @@ Bool Drv(U8 drv_let)
U8 *DrvSerialNum(U8 drv_let=0)
{//20 bytes max.
CBlkDev *bd=Let2BlkDev(drv_let);
U16 *st,*result=NULL;
U16 *st,*res=NULL;
I64 i;
if (bd->dev_id_record) {
st=CAlloc(20+1);
for (i=0;i<10;i++)
st[i]=EndianU16(bd->dev_id_record[10+i]);
result=MStrUtil(st,SUF_REM_LEADING|SUF_REM_TRAILING);
res=MStrUtil(st,SUF_REM_LEADING|SUF_REM_TRAILING);
Free(st);
}
return result;
return res;
}
U8 *DrvModelNum(U8 drv_let=0)
{//40 bytes max.
CBlkDev *bd=Let2BlkDev(drv_let);
U16 *st,*result=NULL;
U16 *st,*res=NULL;
I64 i;
if (bd->dev_id_record) {
st=CAlloc(40+1);
for (i=0;i<20;i++)
st[i]=EndianU16(bd->dev_id_record[27+i]);
result=MStrUtil(st,SUF_REM_LEADING|SUF_REM_TRAILING);
res=MStrUtil(st,SUF_REM_LEADING|SUF_REM_TRAILING);
Free(st);
}
return result;
return res;
}
U8 blkdev_text_attr[BDT_NUM_TYPES]={BLACK,LTCYAN,WHITE,LTBLUE};
+22 -22
View File
@@ -1,7 +1,7 @@
U8 *FileRead(U8 *filename,I64 *_size=NULL,I64 *_attr=NULL)
{//Read whole file from disk.
CHashGeneric *temph;
U8 *absname,*altname,*curname,*result=NULL;
U8 *absname,*altname,*curname,*res=NULL;
I64 i,size=0,attr=0;
CDirContext *dirc;
CArcCompress *arc;
@@ -10,12 +10,12 @@ U8 *FileRead(U8 *filename,I64 *_size=NULL,I64 *_attr=NULL)
if ((temph=HashFind(absname,adam_task->hash_table,HTT_FILE))||
(temph=HashFind(altname,adam_task->hash_table,HTT_FILE))) {
size=temph->user_data1;
result=MAlloc(size+1);
MemCpy(result,temph->user_data0,size);
result[size]=0; //Terminate
res=MAlloc(size+1);
MemCpy(res,temph->user_data0,size);
res[size]=0; //Terminate
attr=FileAttr(temph->str,attr);
} else {
for (i=0;i<2 && !result;i++) {//Try name, then altname
for (i=0;i<2 && !res;i++) {//Try name, then altname
if (!i)
curname=absname;
else
@@ -23,15 +23,15 @@ U8 *FileRead(U8 *filename,I64 *_size=NULL,I64 *_attr=NULL)
if (dirc=DirContextNew(curname)) {
switch (dirc->dv->fs_type) {
case FSt_REDSEA:
result=RedSeaFileRead(dirc->dv,Fs->cur_dir,dirc->mask,
res=RedSeaFileRead(dirc->dv,Fs->cur_dir,dirc->mask,
&size,&attr);
break;
case FSt_FAT32:
result=FAT32FileRead(dirc->dv,Fs->cur_dir,dirc->mask,
res=FAT32FileRead(dirc->dv,Fs->cur_dir,dirc->mask,
&size,&attr);
break;
case FSt_ISO9660:
result=ISO1FileRead(dirc->dv,Fs->cur_dir,dirc->mask,
res=ISO1FileRead(dirc->dv,Fs->cur_dir,dirc->mask,
&size,&attr);
break;
default:
@@ -42,25 +42,25 @@ U8 *FileRead(U8 *filename,I64 *_size=NULL,I64 *_attr=NULL)
}
//Search parent directories.
for (i=0;i<2 && !result;i++) {//Try name, then altname
for (i=0;i<2 && !res;i++) {//Try name, then altname
if (!i)
curname=absname;
else
curname=altname;
if (dirc=DirContextNew(curname)) {
while (!result && StrCmp(Fs->cur_dir,"/")) {
while (!res && StrCmp(Fs->cur_dir,"/")) {
Cd("..");
switch (Fs->cur_dv->fs_type) {
case FSt_REDSEA:
result=RedSeaFileRead(dirc->dv,Fs->cur_dir,dirc->mask,
res=RedSeaFileRead(dirc->dv,Fs->cur_dir,dirc->mask,
&size,&attr);
break;
case FSt_FAT32:
result=FAT32FileRead(dirc->dv,Fs->cur_dir,dirc->mask,
res=FAT32FileRead(dirc->dv,Fs->cur_dir,dirc->mask,
&size,&attr);
break;
case FSt_ISO9660:
result=ISO1FileRead(dirc->dv,Fs->cur_dir,dirc->mask,
res=ISO1FileRead(dirc->dv,Fs->cur_dir,dirc->mask,
&size,&attr);
break;
default:
@@ -70,25 +70,25 @@ U8 *FileRead(U8 *filename,I64 *_size=NULL,I64 *_attr=NULL)
DirContextDel(dirc);
}
}
if (!result) {
if (!res) {
"%s ",filename;
PrintErr("File not found.\n");
}
if (result && attr & RS_ATTR_RESIDENT)
if (res && attr & RS_ATTR_RESIDENT)
HashGenericAdd(curname,HTT_FILE,
AMAllocIdentical(result),size,0,adam_task);
AMAllocIdent(res),size,0,adam_task);
}
if (result && attr & RS_ATTR_COMPRESSED) {
arc=result;
if (res && attr & RS_ATTR_COMPRESSED) {
arc=res;
size=arc->expanded_size;
result=ExpandBuf(arc);
res=ExpandBuf(arc);
Free(arc);
}
if (_attr) *_attr=attr;
if (_size) *_size=size;
Free(absname);
Free(altname);
return result;
return res;
}
I64 FileWrite(U8 *filename,U8 *fbuf,I64 size,CDate cdt=0,I64 attr=0)
@@ -124,12 +124,12 @@ I64 FileWrite(U8 *filename,U8 *fbuf,I64 size,CDate cdt=0,I64 attr=0)
if (temph=HashFind(absname,adam_task->hash_table,HTT_FILE)) {
if (attr & RS_ATTR_RESIDENT) {
Free(temph->user_data0);
temph->user_data0=AMAllocIdentical(fbuf);
temph->user_data0=AMAllocIdent(fbuf);
temph->user_data1=size;
} else
HashRemDel(temph,adam_task->hash_table);
} else if (attr & RS_ATTR_RESIDENT)
HashGenericAdd(absname,HTT_FILE,AMAllocIdentical(fbuf),size,0,adam_task);
HashGenericAdd(absname,HTT_FILE,AMAllocIdent(fbuf),size,0,adam_task);
Free(fbuf2);
DirContextDel(dirc);
}
+30 -30
View File
@@ -1,30 +1,30 @@
CDirEntry *FilesFind2(U8 *files_find_mask,I64 fuf_flags)
{
CDrv *dv=Fs->cur_dv;
CDirEntry *result=NULL;
CDirEntry *res=NULL;
DrvChk(dv);
switch (dv->fs_type) {
case FSt_REDSEA:
result=RedSeaFilesFind(files_find_mask,fuf_flags);
res=RedSeaFilesFind(files_find_mask,fuf_flags);
break;
case FSt_FAT32:
result=FAT32FilesFind(files_find_mask,fuf_flags);
res=FAT32FilesFind(files_find_mask,fuf_flags);
break;
case FSt_ISO9660:
result=ISO1FilesFind(files_find_mask,fuf_flags);
res=ISO1FilesFind(files_find_mask,fuf_flags);
break;
default:
PrintErr("File System Not Supported\n");
result=NULL;
res=NULL;
}
if (result) {
DirFilesSort(&result,SK_NAME);
if (res) {
DirFilesSort(&res,SK_NAME);
if (fuf_flags&(FUF_FLATTEN_TREE|FUF_JUST_FILES))
DirFilesFlatten(result,&result,fuf_flags);
DirFilesFlatten(res,&res,fuf_flags);
if (fuf_flags&FUF_CLUSTER_ORDER)
DirFilesSort(&result,SK_CLUSTER);
DirFilesSort(&res,SK_CLUSTER);
}
return result;
return res;
}
CDirEntry *FilesFind(U8 *files_find_mask,I64 fuf_flags=0)
@@ -36,22 +36,22 @@ When done, you free with $LK,"DirEntryDel",A="MN:DirEntryDel"$(),$LK,"DirEntryDe
$LK,"DirTreeDel",A="MN:DirTreeDel"$() or $LK,"DirTreeDel2",A="MN:DirTreeDel2"$().
*/
CDirEntry *result;
CDirEntry *res;
CDirContext *dirc;
if (fuf_flags&~FUG_FILES_FIND)
throw('FUF');
if (fuf_flags&FUF_SINGLE) {
result=MAlloc(sizeof(CDirEntry));
if (!FileFind(files_find_mask,result)) {
Free(result);
res=MAlloc(sizeof(CDirEntry));
if (!FileFind(files_find_mask,res)) {
Free(res);
return NULL;
}
} else if (dirc=DirContextNew(files_find_mask,TRUE)) {
result=FilesFind2(dirc->mask,fuf_flags);
res=FilesFind2(dirc->mask,fuf_flags);
DirContextDel(dirc);
} else
return NULL;
return result;
return res;
}
Bool FileFind(U8 *filename,CDirEntry *_de=NULL,I64 fuf_flags=0)
@@ -61,7 +61,7 @@ Bool FileFind(U8 *filename,CDirEntry *_de=NULL,I64 fuf_flags=0)
U8 *altname,*curname,*full_name=NULL;
CDirEntry de;
CDirContext *dirc;
Bool result=FALSE,old_silent;
Bool res=FALSE,old_silent;
if (fuf_flags&~FUG_FILE_FIND)
throw('FUF');
if (!filename || *filename && filename[1]==':' && !Let2Drv(*filename,FALSE))
@@ -71,7 +71,7 @@ Bool FileFind(U8 *filename,CDirEntry *_de=NULL,I64 fuf_flags=0)
j=2;
else
j=1;
for (i=0;i<j && !result;i++) {
for (i=0;i<j && !res;i++) {
if (!i)
curname=filename;
else
@@ -84,21 +84,21 @@ Bool FileFind(U8 *filename,CDirEntry *_de=NULL,I64 fuf_flags=0)
cur_dir_cluster=Name2DirCluster(dirc->dv,Fs->cur_dir);
switch (dirc->dv->fs_type) {
case FSt_REDSEA:
result=RedSeaFileFind(dirc->dv,cur_dir_cluster,dirc->mask,
res=RedSeaFileFind(dirc->dv,cur_dir_cluster,dirc->mask,
&de,fuf_flags);
break;
case FSt_FAT32:
result=FAT32FileFind(dirc->dv,cur_dir_cluster,dirc->mask,
res=FAT32FileFind(dirc->dv,cur_dir_cluster,dirc->mask,
&de,fuf_flags);
break;
case FSt_ISO9660:
result=ISO1FileFind(dirc->dv,cur_dir_cluster,dirc->mask,
res=ISO1FileFind(dirc->dv,cur_dir_cluster,dirc->mask,
&de,fuf_flags);
break;
default:
PrintErr("File System Not Supported\n");
}
if (result && _de) {
if (res && _de) {
if (StrCmp(Fs->cur_dir,"/"))
full_name=MStrPrint("%C:%s/%s",
Drv2Let(Fs->cur_dv),Fs->cur_dir,de.name);
@@ -108,7 +108,7 @@ Bool FileFind(U8 *filename,CDirEntry *_de=NULL,I64 fuf_flags=0)
DirContextDel(dirc);
}
}
for (i=0;i<j && !result && fuf_flags&FUF_SCAN_PARENTS;i++) {
for (i=0;i<j && !res && fuf_flags&FUF_SCAN_PARENTS;i++) {
if (!i)
curname=filename;
else
@@ -119,27 +119,27 @@ Bool FileFind(U8 *filename,CDirEntry *_de=NULL,I64 fuf_flags=0)
else {
Silent(old_silent);
cur_dir_cluster=Name2DirCluster(dirc->dv,Fs->cur_dir);
while (!result && StrCmp(Fs->cur_dir,"/")) {
while (!res && StrCmp(Fs->cur_dir,"/")) {
Cd("..");
cur_dir_cluster=Name2DirCluster(dirc->dv,Fs->cur_dir);
switch (dirc->dv->fs_type) {
case FSt_REDSEA:
result=RedSeaFileFind(dirc->dv,cur_dir_cluster,
res=RedSeaFileFind(dirc->dv,cur_dir_cluster,
dirc->mask,&de,fuf_flags);
break;
case FSt_FAT32:
result=FAT32FileFind(dirc->dv,cur_dir_cluster,
res=FAT32FileFind(dirc->dv,cur_dir_cluster,
dirc->mask,&de,fuf_flags);
break;
case FSt_ISO9660:
result=ISO1FileFind(dirc->dv,cur_dir_cluster,
res=ISO1FileFind(dirc->dv,cur_dir_cluster,
dirc->mask,&de,fuf_flags);
break;
default:
PrintErr("File System Not Supported\n");
}
}
if (result && _de) {
if (res && _de) {
if (StrCmp(Fs->cur_dir,"/"))
full_name=MStrPrint("%C:%s/%s",
Drv2Let(Fs->cur_dv),Fs->cur_dir,de.name);
@@ -151,12 +151,12 @@ Bool FileFind(U8 *filename,CDirEntry *_de=NULL,I64 fuf_flags=0)
}
}
if (_de) {
if (result) {
if (res) {
MemCpy(_de,&de,sizeof(CDirEntry));
_de->full_name=full_name;
} else
MemSet(_de,0,sizeof(CDirEntry));
}
Free(altname);
return result;
return res;
}
+1 -1
View File
@@ -52,7 +52,7 @@ Bool DrvTypeSet(U8 drv_let,I64 type=FSt_REDSEA)
U0 Fmt(I64 drv_let,Bool quick=TRUE,Bool confirm=TRUE,I64 type=FSt_FAT32)
{//Format hard drive or RAM drive.
//$BK,1$Warning:$BK,0$ Destroys all previous info.
//$BK,1$Warning:$BK,0$ Destroys all prev info.
//quick=FALSE means fill entire drive with zeros.
//Choose $LK,"FSt_FAT32",A="MN:FSt_FAT32"$ or $LK,"FSt_REDSEA",A="MN:FSt_REDSEA"$.
//You don't format a CD/DVD with this.
+44 -44
View File
@@ -42,7 +42,7 @@ Bool FilesFindMatch(U8 *_test_name,U8 *files_find_mask,I64 fuf_flags=0)
I64 tn_len=StrLen(_test_name),mask_len=StrLen(files_find_mask);
U8 *mask1=MAlloc(mask_len+1),*mask2=MAlloc(mask_len+1),
*ptr,*test_name1,*test_name2;
Bool result=FALSE;
Bool res=FALSE;
StrCpy(mask1,files_find_mask);
if (StrOcc(_test_name,'/')) {
test_name1=MAlloc(tn_len+1);
@@ -62,33 +62,33 @@ Bool FilesFindMatch(U8 *_test_name,U8 *files_find_mask,I64 fuf_flags=0)
if (*mask2) {
if (*mask2=='~') {
if (WildMatch(ptr,mask2+1)) {
result=FALSE;
res=FALSE;
break;
}
} else {
if (WildMatch(ptr,mask2)) {
if (Bt(&fuf_flags,FUf_JUST_TXT) &&
!FilesFindMatch(_test_name,FILEMASK_TXT)) {
result=FALSE;
res=FALSE;
break;
} else if (Bt(&fuf_flags,FUf_JUST_SRC) &&
!FilesFindMatch(_test_name,FILEMASK_SRC)) {
result=FALSE;
res=FALSE;
break;
} else if (Bt(&fuf_flags,FUf_JUST_AOT) &&
!FilesFindMatch(_test_name,FILEMASK_AOT)) {
result=FALSE;
res=FALSE;
break;
} else if (Bt(&fuf_flags,FUf_JUST_JIT) &&
!FilesFindMatch(_test_name,FILEMASK_JIT)) {
result=FALSE;
res=FALSE;
break;
} else if (Bt(&fuf_flags,FUf_JUST_GRA) &&
!FilesFindMatch(_test_name,FILEMASK_GRA)) {
result=FALSE;
res=FALSE;
break;
} else
result=TRUE;
res=TRUE;
}
}
} else
@@ -98,13 +98,13 @@ Bool FilesFindMatch(U8 *_test_name,U8 *files_find_mask,I64 fuf_flags=0)
Free(test_name2);
Free(mask1);
Free(mask2);
return result;
return res;
}
U8 *DirNameAbs(U8 *_dirname)
{//MAlloc absolute dir string with drv letter.
I64 maxlen;
U8 drv[3],*result,*buf,*buf2,*buf3,*buf4,*dirname,*free_dirname;
U8 drv[3],*res,*buf,*buf2,*buf3,*buf4,*dirname,*free_dirname;
if (!Fs->cur_dir || !*Fs->cur_dir)
return StrNew(_dirname);
free_dirname=dirname=MStrUtil(_dirname,
@@ -148,19 +148,19 @@ U8 *DirNameAbs(U8 *_dirname)
}
}
Free(buf);
result=MAlloc(StrLen(buf3)+3);
StrCpy(result,drv);
StrCpy(result+2,buf3);
res=MAlloc(StrLen(buf3)+3);
StrCpy(res,drv);
StrCpy(res+2,buf3);
Free(buf2);
Free(buf3);
Free(buf4);
Free(free_dirname);
return result;
return res;
}
U8 *FileNameAbs(U8 *_filename,I64 fuf_flags=0)
{//Absolute filename. Accepts $LK,"FUF_Z_OR_NOT_Z",A="MN:FUF_Z_OR_NOT_Z"$, $LK,"FUF_SCAN_PARENTS",A="MN:FUF_SCAN_PARENTS"$.
U8 *result,*filename,*buf,*buf_file,*buf_dir,*free_filename,*free_buf;
U8 *res,*filename,*buf,*buf_file,*buf_dir,*free_filename,*free_buf;
CDirEntry de;
free_filename=filename=MStrUtil(_filename,
SUF_REM_LEADING|SUF_REM_TRAILING|SUF_REM_CTRL_CHARS);
@@ -175,37 +175,37 @@ U8 *FileNameAbs(U8 *_filename,I64 fuf_flags=0)
StrCpy(buf,"/");
buf_dir=DirNameAbs(free_buf);
Free(free_buf);
result=MAlloc(StrLen(buf_dir)+1+StrLen(buf_file)+1);
StrCpy(result,buf_dir);
if (result[StrLen(result)-1]!='/')
CatPrint(result,"/");
CatPrint(result,buf_file);
res=MAlloc(StrLen(buf_dir)+1+StrLen(buf_file)+1);
StrCpy(res,buf_dir);
if (res[StrLen(res)-1]!='/')
CatPrint(res,"/");
CatPrint(res,buf_file);
Free(buf_file);
Free(buf_dir);
Free(free_filename);
if (fuf_flags && FileFind(result,&de,fuf_flags|FUF_JUST_FILES)) {
Free(result);
result=de.full_name;
if (fuf_flags && FileFind(res,&de,fuf_flags|FUF_JUST_FILES)) {
Free(res);
res=de.full_name;
}
return result;
return res;
}
U8 *ChgExt(U8 *filename,U8 *extension)
{//Change filename extension.
U8 *result=MAlloc(StrLen(filename)+1+StrLen(extension)+1);
StrCpy(result,filename);
U8 *res=MAlloc(StrLen(filename)+1+StrLen(extension)+1);
StrCpy(res,filename);
if (FileExtDot(filename))
FileExtRem(result);
return CatPrint(result,".%s",extension);
FileExtRem(res);
return CatPrint(res,".%s",extension);
}
U8 *DftExt(U8 *filename,U8 *extension)
{//Give extension if has none.
U8 *result=MAlloc(StrLen(filename)+1+StrLen(extension)+1);
StrCpy(result,filename);
U8 *res=MAlloc(StrLen(filename)+1+StrLen(extension)+1);
StrCpy(res,filename);
if (!FileExtDot(filename))
CatPrint(result,".%s",extension);
return result;
CatPrint(res,".%s",extension);
return res;
}
CDirEntry *Cd2DirEntry(CDirEntry *tempde,U8 *abs_name)
@@ -254,13 +254,13 @@ Bool FileNameChk(U8 *filename)
U8 *ToggleZorNotZ(U8 *name)
{//MAlloc name with Z if not Z or vice versa.
U8 *result;
U8 *res;
if (IsDotZ(name)) {
result=StrNew(name);
result[StrLen(name)-2]=0;
res=StrNew(name);
res[StrLen(name)-2]=0;
} else
result=MStrPrint("%s.Z",name);
return result;
res=MStrPrint("%s.Z",name);
return res;
}
U8 *FileNameTempTxt()
@@ -290,7 +290,7 @@ returns default.
("/Kernel/BlkDev",NULL,"PRJ.Z") returns "D:/Kernel/Kernel.PRJ.Z"
("/Apps/Psalmody","Load","CPP.Z") returns "D:/Apps/Psalmody/Load.CPP.Z"
*/
U8 *st=DirNameAbs(dirname),*st2,*st3,*result,*dft=NULL,*ext;
U8 *st=DirNameAbs(dirname),*st2,*st3,*res,*dft=NULL,*ext;
if (_extension && *_extension) {
if (*_extension=='.')
ext=StrNew(_extension);
@@ -306,22 +306,22 @@ returns default.
StrLastRem(st2,"/",st3);
if (name)
result=MStrPrint("%s/%s%s",st,name,ext);
res=MStrPrint("%s/%s%s",st,name,ext);
else {
if (*ext)
result=MStrPrint("%s/%s%s",st,st3,ext);
res=MStrPrint("%s/%s%s",st,st3,ext);
else
result=StrNew(st);
res=StrNew(st);
}
if (!dft)
dft=StrNew(result);
if (!*ext && (!name||!*name) || FileFind(result)) {
dft=StrNew(res);
if (!*ext && (!name||!*name) || FileFind(res)) {
Free(st3);
Free(st2);
Free(st);
Free(dft);
Free(ext);
return result;
return res;
}
Free(st);
st=st2;
+32 -32
View File
@@ -156,13 +156,13 @@ Bool FATNameTo(U8 *dst,U8 *src)
I64 FATNameXSum(U8 *src)
{
I64 i,result=0;
I64 i,res=0;
for (i=0;i<11;i++)
if (result&1)
result.u8[0]=0x80+result>>1+*src++;
if (res&1)
res.u8[0]=0x80+res>>1+*src++;
else
result.u8[0]=result>>1+*src++;
return result;
res.u8[0]=res>>1+*src++;
return res;
}
Bool FATFromName(U8 *dst,U8 *src)
@@ -226,16 +226,16 @@ Bool DirLongNameFill(CDirEntry *tempde,CFAT32DirEntryLong *de,I64 *xsum)
Bool FAT32CDirFill(CDirEntry *tempde,
CFAT32DirEntry *de,CDate _local_time_offset)
{
Bool result;
Bool res;
if (*tempde->name)
result=TRUE;
res=TRUE;
else
result=FATFromName(tempde->name,de->name);
res=FATFromName(tempde->name,de->name);
tempde->cluster=de->cluster_lo+de->cluster_hi<<16;
tempde->size=de->size;
tempde->attr=de->attr;
tempde->datetime=Dos2CDate(de->WrtTime,de->WrtDate)-_local_time_offset;
return result;
return res;
}
Bool FAT32DirFill(CFAT32DirEntry *de,
@@ -244,10 +244,10 @@ Bool FAT32DirFill(CFAT32DirEntry *de,
I64 de_cnt=0,i,l,xsum,ord;
U8 *ptr,dname[16];
CFAT32DirEntryLong *ld=de;
Bool result;
Bool res;
MemSet(de,0,sizeof(CFAT32DirEntry));
result=FATNameTo(de->name,tempde->name);
res=FATNameTo(de->name,tempde->name);
FATFromName(dname,de->name);
if (StrCmp(dname,tempde->name)) {
ord=0x41;
@@ -279,7 +279,7 @@ Bool FAT32DirFill(CFAT32DirEntry *de,
ptr[fat_long_name_map[i]](U16)=0xFFFF;
de_cnt++;
MemSet(&de[de_cnt],0,sizeof(CFAT32DirEntry));
result=FATNameTo(de[de_cnt].name,tempde->name);
res=FATNameTo(de[de_cnt].name,tempde->name);
}
de[de_cnt].cluster_lo=tempde->cluster.u16[0];
de[de_cnt].cluster_hi=tempde->cluster.u16[1];
@@ -292,20 +292,20 @@ Bool FAT32DirFill(CFAT32DirEntry *de,
tempde->datetime+_local_time_offset);
if (_de_cnt)
*_de_cnt=de_cnt+1;
return result;
return res;
}
Bool FAT32FileFind(CDrv *dv,I64 cur_dir_cluster,
U8 *name,CDirEntry *_result,I64 fuf_flags=0)
U8 *name,CDirEntry *_res,I64 fuf_flags=0)
{//$LK,"FUF_JUST_DIRS",A="MN:FUF_JUST_DIRS"$, $LK,"FUF_JUST_FILES",A="MN:FUF_JUST_FILES"$
Bool result=FALSE,unlock;
Bool res=FALSE,unlock;
CFAT32DirEntry *buf;
I64 xsum=0,attr,cur_dir_entry,entries_per_cluster;
U8 dname[CDIR_FILENAME_LEN],ch;
CDirEntry long_name;
if (fuf_flags&~FUG_FILE_FIND)
throw('FUF');
MemSet(_result,0,sizeof(CDirEntry));
MemSet(_res,0,sizeof(CDirEntry));
MemSet(&long_name,0,sizeof(CDirEntry));
DrvChk(dv);
if (dv->fs_type!=FSt_FAT32)
@@ -327,15 +327,15 @@ Bool FAT32FileFind(CDrv *dv,I64 cur_dir_cluster,
else {
if (!(attr&RS_ATTR_VOL_ID)) {
if (xsum==FATNameXSum(buf[cur_dir_entry].name))
MemCpy(_result,&long_name,sizeof(CDirEntry));
MemCpy(_res,&long_name,sizeof(CDirEntry));
else
MemSet(_result,0,sizeof(CDirEntry));
MemSet(_res,0,sizeof(CDirEntry));
if (!(fuf_flags&FUF_JUST_DIRS && !(attr & RS_ATTR_DIR)) &&
!(fuf_flags&FUF_JUST_FILES && attr & RS_ATTR_DIR) &&
FAT32CDirFill(_result,&buf[cur_dir_entry],
FAT32CDirFill(_res,&buf[cur_dir_entry],
dv->fat32_local_time_offset) &&
!StrCmp(dname,_result->name)) {
result=TRUE;
!StrCmp(dname,_res->name)) {
res=TRUE;
goto fff_done;
}
}
@@ -353,7 +353,7 @@ Bool FAT32FileFind(CDrv *dv,I64 cur_dir_cluster,
}
}
}
MemSet(_result,0,sizeof(CDirEntry));
MemSet(_res,0,sizeof(CDirEntry));
fff_done:
Free(buf);
if (unlock)
@@ -361,7 +361,7 @@ fff_done:
} catch
if (unlock)
DrvUnlock(dv);
return result;
return res;
}
U8 *FAT32FileRead(CDrv *dv,U8 *cur_dir,U8 *filename,I64 *_size,I64 *_attr)
@@ -727,7 +727,7 @@ I64 FAT32FilesDel(CDrv *dv,U8 *cur_dir,U8 *files_find_mask,I64 fuf_flags,
Bool del_dir,Bool print_msg)
{
CFAT32DirEntry *buf,*last_buf,*temp_buf;
I64 i,result=0,attr,xsum=0,last_dir_cluster=INVALID_CLUSTER,
I64 i,res=0,attr,xsum=0,last_dir_cluster=INVALID_CLUSTER,
cur_dir_entry,entries_per_cluster,cur_dir_cluster;
U8 ch;
Bool unlock_break;
@@ -755,7 +755,7 @@ I64 FAT32FilesDel(CDrv *dv,U8 *cur_dir,U8 *files_find_mask,I64 fuf_flags,
if (!*long_name.name)
FATFromName(long_name.name,buf[cur_dir_entry].name);
if (FilesFindMatch(long_name.name,files_find_mask,fuf_flags)) {
if (!(attr & RS_ATTR_DIR)) result++;
if (!(attr & RS_ATTR_DIR)) res++;
if (print_msg)
"Del %s\n",long_name.name;
*buf[cur_dir_entry].name=0xE5;
@@ -807,7 +807,7 @@ I64 FAT32FilesDel(CDrv *dv,U8 *cur_dir,U8 *files_find_mask,I64 fuf_flags,
if (unlock_break)
BreakUnlock;
}
return result;
return res;
}
I64 FAT32FileWrite(CDrv *dv,U8 *cur_dir,U8 *name,U8 *buf,I64 size,
@@ -851,7 +851,7 @@ CDirEntry *FAT32FilesFind(U8 *files_find_mask,
I64 attr,xsum=0,dir_size=0,sub_dir_size,
cur_dir_cluster,cur_dir_entry,entries_per_cluster;
U8 ch;
CDirEntry *result=NULL,*tempde,long_name;
CDirEntry *res=NULL,*tempde,long_name;
if (fuf_flags&~FUG_FILES_FIND)
throw('FUF');
try {
@@ -880,8 +880,8 @@ CDirEntry *FAT32FilesFind(U8 *files_find_mask,
tempde->parent=parent;
if (Bt(&fuf_flags,FUf_RECURSE) && attr&RS_ATTR_DIR &&
*tempde->name!='.') {
tempde->next=result;
result=tempde;
tempde->next=res;
res=tempde;
tempde->full_name=DirNameAbs(tempde->name);
DrvUnlock(dv);
if (Cd(tempde->name)) {
@@ -898,8 +898,8 @@ CDirEntry *FAT32FilesFind(U8 *files_find_mask,
*tempde->name=='.' && attr&RS_ATTR_DIR) &&
FilesFindMatch(tempde->full_name,files_find_mask,
fuf_flags)) {
tempde->next=result;
result=tempde;
tempde->next=res;
res=tempde;
} else
DirEntryDel(tempde);
}
@@ -927,7 +927,7 @@ CDirEntry *FAT32FilesFind(U8 *files_find_mask,
DrvUnlock(dv);
if (_dir_size)
*_dir_size=dir_size;
return result;
return res;
}
Bool FAT32MkDir(CDrv *dv,U8 *cur_dir,U8 *name)
+20 -20
View File
@@ -8,7 +8,7 @@ Bool ISODrvInit(CDrv *dv,I64 blk)
I64 spc=bd->blk_size>>BLK_SIZE_BITS,i=blk/spc;
CISO1PriDesc *iso=MAlloc(bd->blk_size);
CISO1DirEntry *de;
Bool unlock,result=FALSE;
Bool unlock,res=FALSE;
U8 buf[8];
try {
@@ -31,7 +31,7 @@ Bool ISODrvInit(CDrv *dv,I64 blk)
de=&iso->root_dir_record;
dv->root_cluster=de->loc.little;
dv->size=iso->vol_space_size.little*bd->blk_size>>BLK_SIZE_BITS;
result=TRUE;
res=TRUE;
goto ipi_done;
case ISO1T_TERMINATOR:
throw('Drv');
@@ -55,7 +55,7 @@ ipi_done:
if (unlock)
DrvUnlock(dv);
}
return result;
return res;
}
U0 Date2ISO1(CISO1Date *dst,CDate cdt)
@@ -115,24 +115,24 @@ Bool ISO1FromName(U8 *dst,U8 *src)
Bool ISO1CDirFill(CDirEntry *tempde,CISO1DirEntry *de)
{
Bool result;
Bool res;
MemSet(tempde,0,sizeof(CDirEntry));
result=ISO1FromName(tempde->name,&de->name_len);
res=ISO1FromName(tempde->name,&de->name_len);
tempde->cluster=de->loc.little;
tempde->size=de->size.little;
tempde->attr=FileAttr(tempde->name);
if (de->flags & ISO1_ATTR_DIR)
tempde->attr|=RS_ATTR_DIR;
tempde->datetime=ISO1DateStruct2CDate(&de->date);
return result;
return res;
}
Bool ISO1FileFind(CDrv *dv,I64 cur_dir_cluster,U8 *name,
CDirEntry *_result,I64 fuf_flags=0)
CDirEntry *_res,I64 fuf_flags=0)
{//$LK,"FUF_JUST_DIRS",A="MN:FUF_JUST_DIRS"$, $LK,"FUF_JUST_FILES",A="MN:FUF_JUST_FILES"$
CISO1DirEntry *isoptr,*buf;
U8 dname[CDIR_FILENAME_LEN];
Bool result=FALSE,unlock;
Bool res=FALSE,unlock;
I64 i;
if (fuf_flags&~FUG_FILE_FIND)
throw('FUF');
@@ -163,14 +163,14 @@ Bool ISO1FileFind(CDrv *dv,I64 cur_dir_cluster,U8 *name,
ISO1FromName(dname,&isoptr->name_len);
if (*dname) {
if (!StrCmp(name,dname)) {
result=ISO1CDirFill(_result,isoptr);
if (result &&
res=ISO1CDirFill(_res,isoptr);
if (res &&
!(fuf_flags&FUF_JUST_DIRS &&
!(_result->attr & RS_ATTR_DIR)) &&
!(fuf_flags&FUF_JUST_FILES && _result->attr & RS_ATTR_DIR) )
!(_res->attr & RS_ATTR_DIR)) &&
!(fuf_flags&FUF_JUST_FILES && _res->attr & RS_ATTR_DIR) )
goto iff_done;
else
result=FALSE;
res=FALSE;
}
}
i-=isoptr->len;
@@ -184,7 +184,7 @@ iff_done:
} catch
if (unlock)
DrvUnlock(dv);
return result;
return res;
}
U8 *ISO1FileRead(CDrv *dv,U8 *cur_dir,U8 *filename,I64 *_size,I64 *_attr)
@@ -236,7 +236,7 @@ CDirEntry *ISO1FilesFind(U8 *files_find_mask,
CDrv *dv=Fs->cur_dv;
CISO1DirEntry *buf,*buf2,*isoptr;
I64 i,cur_dir_cluster=Name2DirCluster(dv,Fs->cur_dir);
CDirEntry *result=NULL,*tempde;
CDirEntry *res=NULL,*tempde;
if (fuf_flags&~FUG_FILES_FIND)
throw('FUF');
isoptr=MAlloc(dv->spc<<BLK_SIZE_BITS);
@@ -262,8 +262,8 @@ CDirEntry *ISO1FilesFind(U8 *files_find_mask,
tempde->parent=parent;
if (Bt(&fuf_flags,FUf_RECURSE) && tempde->attr&RS_ATTR_DIR &&
*tempde->name!='.') {
tempde->next=result;
result=tempde;
tempde->next=res;
res=tempde;
tempde->full_name=DirNameAbs(tempde->name);
if (Cd(tempde->name)) {
tempde->sub=ISO1FilesFind(files_find_mask,fuf_flags,tempde);
@@ -276,8 +276,8 @@ CDirEntry *ISO1FilesFind(U8 *files_find_mask,
!(Bt(&fuf_flags,FUf_RECURSE) &&
*tempde->name=='.' && tempde->attr&RS_ATTR_DIR) &&
FilesFindMatch(tempde->full_name,files_find_mask,fuf_flags)) {
tempde->next=result;
result=tempde;
tempde->next=res;
res=tempde;
} else
DirEntryDel(tempde);
}
@@ -288,5 +288,5 @@ CDirEntry *ISO1FilesFind(U8 *files_find_mask,
}
}
Free(buf2);
return result;
return res;
}
+15 -15
View File
@@ -151,15 +151,15 @@ U0 RedSeaFmt(U8 drv_let,Bool quick=TRUE)
}
Bool RedSeaFileFind(CDrv *dv,I64 cur_dir_cluster,U8 *name,
CDirEntry *_result,I64 fuf_flags=0)
CDirEntry *_res,I64 fuf_flags=0)
{//$LK,"FUF_JUST_DIRS",A="MN:FUF_JUST_DIRS"$, $LK,"FUF_JUST_FILES",A="MN:FUF_JUST_FILES"$
CDirEntry *buf,*buf2,*ptr;
U8 dname[CDIR_FILENAME_LEN];
I64 ch;
Bool result=FALSE,unlock;
Bool res=FALSE,unlock;
if (fuf_flags&~FUG_FILE_FIND)
throw('FUF');
MemSet(_result,0,sizeof(CDirEntry));
MemSet(_res,0,sizeof(CDirEntry));
DrvChk(dv);
if (dv->fs_type!=FSt_REDSEA)
PrintErr("Not RedSea Drv\n");
@@ -186,8 +186,8 @@ Bool RedSeaFileFind(CDrv *dv,I64 cur_dir_cluster,U8 *name,
!(fuf_flags&FUF_JUST_DIRS && !(ptr->attr & RS_ATTR_DIR)) &&
!(fuf_flags&FUF_JUST_FILES && ptr->attr & RS_ATTR_DIR) &&
!StrCmp(dname,ptr->name)) {
MemCpy(&_result->attr,&ptr->attr,CDIR_SIZE);
result=TRUE;
MemCpy(&_res->attr,&ptr->attr,CDIR_SIZE);
res=TRUE;
goto rsff_done;
}
ptr(U8 *)+=CDIR_SIZE;
@@ -199,7 +199,7 @@ rsff_done:
} catch
if (unlock)
DrvUnlock(dv);
return result;
return res;
}
U8 *RedSeaFileRead(CDrv *dv,U8 *cur_dir,U8 *filename,I64 *_size,I64 *_attr)
@@ -457,7 +457,7 @@ I64 RedSeaFilesDel(CDrv *dv,U8 *cur_dir,U8 *files_find_mask,I64 fuf_flags,
Bool del_dir,Bool print_msg)
{
CDirEntry *buf,*buf2,*ptr;
I64 i=0,result=0,ch,j=0,n=BLK_SIZE/CDIR_SIZE,cur_dir_cluster;
I64 i=0,res=0,ch,j=0,n=BLK_SIZE/CDIR_SIZE,cur_dir_cluster;
Bool unlock_break;
try {
unlock_break=BreakLock;
@@ -480,7 +480,7 @@ I64 RedSeaFilesDel(CDrv *dv,U8 *cur_dir,U8 *files_find_mask,I64 fuf_flags,
else if (!(ptr->attr & RS_ATTR_DELETED) && ch!='.' && (del_dir ||
!(ptr->attr & RS_ATTR_DIR)) &&
FilesFindMatch(ptr->name,files_find_mask,fuf_flags)) {
if (!(ptr->attr & RS_ATTR_DIR)) result++;
if (!(ptr->attr & RS_ATTR_DIR)) res++;
if (print_msg)
"Del %s\n",ptr->name;
ptr->attr|=RS_ATTR_DELETED;
@@ -503,7 +503,7 @@ I64 RedSeaFilesDel(CDrv *dv,U8 *cur_dir,U8 *files_find_mask,I64 fuf_flags,
if (unlock_break)
BreakUnlock;
}
return result;
return res;
}
I64 RedSeaFileWrite(CDrv *dv,U8 *cur_dir,U8 *name,U8 *buf,I64 size,
@@ -538,7 +538,7 @@ CDirEntry *RedSeaFilesFind(U8 *files_find_mask,I64 fuf_flags,
CDirEntry *parent=NULL)
{
CDrv *dv=Fs->cur_dv;
CDirEntry *buf,*buf2,*ptr,*result=NULL,*tempde;
CDirEntry *buf,*buf2,*ptr,*res=NULL,*tempde;
I64 ch,cur_dir_cluster;
if (fuf_flags&~FUG_FILES_FIND)
throw('FUF');
@@ -568,8 +568,8 @@ CDirEntry *RedSeaFilesFind(U8 *files_find_mask,I64 fuf_flags,
tempde->parent=parent;
if (Bt(&fuf_flags,FUf_RECURSE) && tempde->attr&RS_ATTR_DIR &&
*tempde->name!='.') {
tempde->next=result;
result=tempde;
tempde->next=res;
res=tempde;
tempde->full_name=DirNameAbs(tempde->name);
DrvUnlock(dv);
if (Cd(tempde->name)) {
@@ -584,8 +584,8 @@ CDirEntry *RedSeaFilesFind(U8 *files_find_mask,I64 fuf_flags,
!(Bt(&fuf_flags,FUf_RECURSE) && *tempde->name=='.' &&
tempde->attr&RS_ATTR_DIR) &&
FilesFindMatch(tempde->full_name,files_find_mask,fuf_flags)) {
tempde->next=result;
result=tempde;
tempde->next=res;
res=tempde;
} else
DirEntryDel(tempde);
}
@@ -596,7 +596,7 @@ CDirEntry *RedSeaFilesFind(U8 *files_find_mask,I64 fuf_flags,
DrvUnlock(dv);
} catch
DrvUnlock(dv);
return result;
return res;
}
Bool RedSeaMkDir(CDrv *dv,U8 *cur_dir,U8 *name)