TempleOSTS_140317.ISO

This commit is contained in:
Terry A. Davis authored and minexew committed 2018-09-08 21:46:02 +02:00
1 parent 2d2a65d572
commit 7ef616a20e
1416 files changed
+223873 -53917

No files matched your search

+68
View File
@@ -0,0 +1,68 @@
#define DB_FILENAME "HOME/DataBaseDemo.BIN"
#define DB_MAX_ACCT 100
#define DB_ACCT_BLKS 1
class Acct
{ //Use <CTRL-L> to help generate fmtstrs.
U8 name[32] fmtstr "$$DA-P,32,A=\"Name:%s\"$$\n";
U8 addr[64] fmtstr "$$DA-P,64,A=\"Addr:%s\"$$\n";
U8 pad[DB_ACCT_BLKS*BLK_SIZE-64-32];
};
U0 InitDatabase()
{
CFile *f;
//Write new contiguous file
f=FOpen(DB_FILENAME,"w",DB_MAX_ACCT*DB_ACCT_BLKS);
FClose(f);
}
U0 WriteAcct()
{
CFile *f;
Acct a;
I64 acctnum;
acctnum=PmtI64("Acct #",-1);
if (0<=acctnum<DB_MAX_ACCT) {
MemSet(&a,0,BLK_SIZE);
if (DocFormDo(&a)) {
f=FOpen(DB_FILENAME,"w+");
FWBlks(f,&a,acctnum*DB_ACCT_BLKS,DB_ACCT_BLKS);
FClose(f);
}
}
}
U0 ReadAcct()
{
CFile *f;
Acct a;
I64 acctnum;
acctnum=PmtI64("Acct #",-1);
if (0<=acctnum<DB_MAX_ACCT) {
f=FOpen(DB_FILENAME,"r");
FRBlks(f,&a,acctnum*DB_ACCT_BLKS,DB_ACCT_BLKS);
FClose(f);
ClassRep(&a);
}
}
U0 DatabaseDemo()
{
I64 ch;
if (!FileFind(DB_FILENAME))
InitDatabase;
do {
"$$GREEN$$R$$FG$$ead acct, $$GREEN$$W$$FG$$rite acct or $$GREEN$$<SHIFT-ESC>$$FG$$:";
ch=ToUpper(GetChar);
NewLine;
if (ch=='R') ReadAcct;
if (ch=='W') WriteAcct;
} while (ch!=CH_SHIFT_ESC && ch!=CH_ESC);
}
DatabaseDemo;
+41
View File
@@ -0,0 +1,41 @@
U0 RawAccess(I64 drv_let=0)
{
CPrt *p=Drv2Prt(drv_let);
CBlkDev *bdev=Drv2BlkDev(drv_let);
I64 blk,old_offset,old_size;
U8 *buf=MAlloc(BLK_SIZE);
PrtRep;
PressAKey;
ClassRep(p);
PressAKey;
ClassRep(bdev);
PressAKey;
//Temporarily change partition range to full device.
//Normally, you are limited to just your partition.
//This is obviously $BK,1$dangerous$BK,0$!
old_offset=p->offset;
old_size =p->size;
p->offset=bdev->min_blk;
p->size=bdev->max_blk-bdev->min_blk+1;
try {
blk=PmtI64("Blk to Read: ",old_offset,bdev->min_blk,bdev->max_blk);
RBlks(p,buf,blk,1);
D(buf,BLK_SIZE);
} catch
PutExcept;
p->offset=old_offset;
p->size =old_size;
Free(buf);
}
RawAccess;
//See $LK,"RBlks",A="MN:RBlks"$(), $LK,"WBlks",A="MN:WBlks"$(), $LK,"PrtLock",A="MN:PrtLock"$(), $LK,"PrtUnlock",A="MN:PrtUnlock"$()
//$LK,"DBlk",A="MN:DBlk"$(), $LK,"DCluster",A="MN:DCluster"$(), $LK,"BlkDevLock",A="MN:BlkDevLock"$() and $LK,"BlkDevUnlock",A="MN:BlkDevUnlock"$().
+49
View File
@@ -0,0 +1,49 @@
/* There is no FPrintF type function and no
way to grow files. Therefore, use mem to
hold the file until you are done. The $LK,"CDoc",A="MN:CDoc"$
framework is convenient for this.
*/
U0 TreeSub(CDoc *doc,CDirEntry *tempde)
{
CDirEntry *tempde1;
while (tempde) {
tempde1=tempde->next;
if (tempde->attr & _ATTR_DIR) {
DocPrint(doc,"$$TR,\"\"$$");
DocPrint(doc,"$$MA,T=\"%s\",LM=\"Cd(\\\"%s\\\");Dir;\n\"$$\n",
tempde->name,tempde->full_name);
if (tempde->sub) {
DocPrint(doc,"$$ID,+2$$");
TreeSub(doc,tempde->sub);
DocPrint(doc,"$$ID,-2$$");
}
} else
DocPrint(doc,"$$LK,\"%s\",A=\"FI:%s\"$$\n",
tempde->name,tempde->full_name);
//Note there is also a routine
//to delete an entire CDirEntry tree.
//See $LK,"DirLstDel",A="MN:DirLstDel"$().
DirEntryDel(tempde);
tempde=tempde1;
}
}
U0 FPrintFDemo(U8 *output_filename=NULL)
{
I64 fuf_flags=0;
CDoc *doc=DocNew(output_filename);
ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),"+r");
DocPrint(doc,"$$TR-C,\"\"$$\n");
DocPrint(doc,"$$ID,+2$$");
TreeSub(doc,FilesFind("/*",fuf_flags));
DocPrint(doc,"$$ID,-2$$");
DocRecalc(doc);
if (output_filename)
DocWrite(doc,FALSE);
else
DocWrite(doc,TRUE);
DocDel(doc);
}
FPrintFDemo;
+15
View File
@@ -0,0 +1,15 @@
U0 UnusedSpaceRep()
{
I64 i;
CPrt *p;
for (i=0;i<26;i++)
try {
p=Drv2Prt(i+'A');
if (p->type==PT_FAT32 || p->type==PT_REDSEA)
"%C: %7.3f%% Free\n",
Prt2Drv(p),UnusedDrvSpace(Prt2Drv(p))*100.0/(p->size*BLK_SIZE);
} catch
Fs->catch_except=TRUE;
}
UnusedSpaceRep;