SparrowOSTS_121127.ISO
This commit is contained in:
1 parent
0e9364ff4c
commit
e57428affb
1218 files changed
+247142
-165507
No files matched your search
@@ -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,\"Name:%s\"$$\n";
|
||||
U8 addr[64] fmtstr "$$DA-P,64,\"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,"Acct")) {
|
||||
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("Acct",&a);
|
||||
}
|
||||
}
|
||||
|
||||
U0 DatabaseDemo()
|
||||
{
|
||||
I64 ch;
|
||||
if (!FileFind(DB_FILENAME))
|
||||
InitDatabase;
|
||||
do {
|
||||
"$$FG,GREEN$$R$$FG$$ead acct, $$FG,GREEN$$W$$FG$$rite acct or $$FG,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;
|
||||
@@ -0,0 +1,27 @@
|
||||
/* 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","MN:CDoc"$
|
||||
framework is convenient for this.
|
||||
*/
|
||||
|
||||
#include "/SparrowOS/Demo/Shared/TreeDemoJoin"
|
||||
|
||||
U0 FPrintFDemo(U8 *output_filename=NULL)
|
||||
{
|
||||
I64 fuf_flags=0;
|
||||
CDoc *doc=DocNew;
|
||||
GetFFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),"+r");
|
||||
DocPutS(doc,"$$TR-C+AL,\"\"$$\n");
|
||||
DocPutS(doc,"$$ID,+2$$");
|
||||
TreeSub(doc,FilesFind("/SparrowOS/*",fuf_flags));
|
||||
DocPutS(doc,"$$ID,-2$$");
|
||||
DocRecalc(doc);
|
||||
if (output_filename) {
|
||||
StrCpy(doc->filename.name,output_filename);
|
||||
DocWrite(doc,FALSE);
|
||||
} else
|
||||
DocWrite(doc,TRUE);
|
||||
DocDel(doc);
|
||||
}
|
||||
|
||||
FPrintFDemo;
|
||||
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
$WW,1$This gets a list of files, flattens the list from a tree into an array and sorts them by cluster num, to speed-up access time by avoiding moving the disk head around.
|
||||
$WW,0$*/
|
||||
|
||||
U0 Main()
|
||||
{
|
||||
I64 i,cnt=0;
|
||||
CDirEntry *tempm=FilesFind("::/SparrowOS/*",1<<FUf_RECURSE),
|
||||
**a=FilesOrder(tempm,&cnt);
|
||||
for (i=0;i<cnt;i++) {
|
||||
"%08X %s\n",a[i]->cluster,a[i]->full_name;
|
||||
CDirEntryDel(a[i]);
|
||||
}
|
||||
Free(a);
|
||||
}
|
||||
|
||||
Main;
|
||||
@@ -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("CPrt",p);
|
||||
PressAKey;
|
||||
|
||||
ClassRep("CBlkDev",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
|
||||
CatchAll;
|
||||
|
||||
p->offset=old_offset;
|
||||
p->size =old_size;
|
||||
|
||||
Free(buf);
|
||||
}
|
||||
|
||||
RawAccess;
|
||||
|
||||
//See $LK,"RBlks","MN:RBlks"$(), $LK,"WBlks","MN:WBlks"$(), $LK,"PrtLock","MN:PrtLock"$(), $LK,"PrtUnlock","MN:PrtUnlock"$()
|
||||
//$LK,"DBlk","MN:DBlk"$(), $LK,"DCluster","MN:DCluster"$(), $LK,"BlkDevLock","MN:BlkDevLock"$() and $LK,"BlkDevUnlock","MN:BlkDevUnlock"$().
|
||||
@@ -0,0 +1,16 @@
|
||||
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_NATIVE)
|
||||
"%C: %7.3f%% Free\n",
|
||||
Prt2Drv(p),UnusedDrvSpace(Prt2Drv(p))*100.0/(p->size*BLK_SIZE);
|
||||
} catch
|
||||
Fs->catch_except=TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
UnusedSpaceRep;
|
||||
Reference in new issue
Block a user