|
From: <sle...@us...> - 2006-12-02 00:25:37
|
Revision: 689
http://svn.sourceforge.net/hackndev/?rev=689&view=rev
Author: sleep_walker
Date: 2006-12-01 16:25:32 -0800 (Fri, 01 Dec 2006)
Log Message:
-----------
l4p: BFUGarux initial module selection support
Modified Paths:
--------------
linux4palm/BFUGarux/BFUDefaultSettings.h
linux4palm/BFUGarux/BFUSettings-alone.c
linux4palm/BFUGarux/BFUSettings.Rsrc
linux4palm/BFUGarux/BFUSettings.Rsrc.h
linux4palm/BFUGarux/garux-clean.c
Modified: linux4palm/BFUGarux/BFUDefaultSettings.h
===================================================================
--- linux4palm/BFUGarux/BFUDefaultSettings.h 2006-12-01 23:16:34 UTC (rev 688)
+++ linux4palm/BFUGarux/BFUDefaultSettings.h 2006-12-02 00:25:32 UTC (rev 689)
@@ -13,6 +13,7 @@
#define BFUDefaultFileNameOnCard "/BFUSavedSettings.pdb"
#define BFUDefaultFileNameSize 256
+#define BFURowsInTable 6
#define BFUDefaultSource 0
#define BFUDefaultAddress "/linux2ram"
Modified: linux4palm/BFUGarux/BFUSettings-alone.c
===================================================================
--- linux4palm/BFUGarux/BFUSettings-alone.c 2006-12-01 23:16:34 UTC (rev 688)
+++ linux4palm/BFUGarux/BFUSettings-alone.c 2006-12-02 00:25:32 UTC (rev 689)
@@ -1,4 +1,11 @@
//#define BFU_VERBOSE
+#define MODULES_DEBUG
+#define MODULES_VERBOSE_DEBUG
+
+// #define BFUContentsTest
+#define BFUSaveContentsTest
+
+
#include "BFUDefaultSettings.h"
#include "BFUSettings.Rsrc.h"
@@ -24,6 +31,7 @@
UInt8 mask[4];
//modules
UInt32 modules;
+ UInt8 modlist;
//advanced settings
UInt8 debug;
UInt8 silentBoot;
@@ -34,7 +42,6 @@
UInt8 fsck;
UInt8 copy2ram;
Char RAMdiskSize[BFURAMdiskMaxLength];
-
UInt8 save2card;
} BFUSettingsType;
@@ -66,6 +73,19 @@
static Boolean BFUToolsFormEventHandler (EventPtr pEvent);
static Boolean BFUAdvancedFormEventHandler (EventPtr pEvent);
static void BFUSetFieldText(FormType *pForm,UInt32 index,Char *new_text,UInt32 MaxLength);
+//from modules.c
+static Boolean BFUReadFileNames(UInt16 volRefNum);
+static Boolean BFUInitFileLists();
+void BFUdoDie(const Char * ErrStr,Err error);
+static Boolean BFUPush2ModList(const Char *name);
+static Boolean BFUIsModList(const Char *name);
+static Boolean BFUReadModLists(UInt16 volRefNum);
+static Boolean BFUInitModList();
+Int16 BFUCompare(void **v1,void **v2,Int32 other);
+static Boolean BFUInitTable();
+static void BFUSetTableFromBar(Int16 val);
+static Boolean BFUSaveNames();
+static Boolean BFUInitModList();
Char BFUCommandLinePart[BFUCommandLinePartLength];
@@ -78,7 +98,16 @@
UInt16 cardNo;
//UInt32 volIterator;
UInt16 BFUPrefsVolRefNum;
+//from modules.c
+MemHandle listHandle, modListHandle,modPtrHandle;
+MemHandle ptrHandle,saveHandle;
+UInt8 size,msize,modCount;
+UInt32 mlength,length;
+Boolean UseSclBar,CardIn;
+
+
+
static Boolean BFUCopySettingsStruct(BFUSettingsType *source,BFUSettingsType *dest)
{
UInt8 i;
@@ -111,6 +140,8 @@
dest->reflash = source->reflash;
dest->copy2ram = source->copy2ram;
dest->fsck = source->fsck;
+ dest->modules = source->modules;
+ dest->modlist = source->modlist;
return true;
}
@@ -173,7 +204,6 @@
options |= BFUSettingsValues.fs;
options = options << 2;
options |= BFUSettingsValues.source;
-
// BFUPrintHex(options,optstr);
// StrPrintF(optstr,"%x",options);
// BFUdoDie(optstr,options);
@@ -291,6 +321,9 @@
StrCat(BFUCommandLinePart,BFUSettingsValues.RAMdiskSize);
// BFUdoDie(BFUCommandLinePart,0);
StrCat(BFUCommandLinePart,del);
+//Modules selection
+ StrPrintF(netSet,"%x",BFUSettingsValues.modules);
+ BFUdoDie(netSet,0);
#ifdef BFU_VERBOSE
BFUdoDie(BFUCommandLinePart,0);
#endif
@@ -336,7 +369,9 @@
BFUSettingsValues.save2card = BFUDefaultSave2Card;
BFUSettingsValues.reflash = BFUDefaultReflash;
BFUSettingsValues.copy2ram = BFUDefaultCopy2RAM;
- BFUSettingsValues.fsck = 0;
+ BFUSettingsValues.fsck = BFUDefaultFSCK;
+ BFUSettingsValues.modules = 0;
+ BFUSettingsValues.modlist = 0;
}
@@ -855,7 +890,11 @@
Boolean BFUModulesFormEventHandler(EventPtr pEvent)
{
Boolean handled = false;
+ Int16 row,val;
+ TableType *tab;
+ ScrollBarType *bar;
FormPtr pForm = FrmGetActiveForm();
+
switch (pEvent->eType)
{
case frmOpenEvent: // Form's 1st event
@@ -888,6 +927,59 @@
break;
}
break;
+ case tblEnterEvent:
+ tab=getObjectPtr(pForm,BFUModulesTable);
+ row = pEvent->data.tblEnter.row;
+ val=TblGetItemInt(tab,row,1);
+ val = (val+1)%2;
+ TblSetItemInt(tab,row,1,val);
+ TblSetSelection(tab,row,0);
+ TblMarkRowInvalid(tab,row);
+ TblRedrawTable(tab);
+ break;
+ case sclRepeatEvent:
+// BFUSaveNames();
+ tab=getObjectPtr(pForm,BFUModulesTable);
+ bar = pEvent->data.sclRepeat.pScrollBar;
+ val = pEvent->data.sclRepeat.newValue;
+ if (UseSclBar)
+ {
+ BFUSetTableFromBar(val);
+ SclSetScrollBar(bar,val, 0,(UInt16)(size-BFURowsInTable), 1);
+ SclDrawScrollBar(bar);
+ }
+ break;
+ case keyDownEvent:
+ if (UseSclBar)
+ switch(pEvent->data.keyDown.chr)
+ {
+ case 11://up
+ bar=getObjectPtr(pForm,BFUModScrollBar);
+ SclGetScrollBar(bar,&val,0,0,0);
+ if (val)
+ {
+ --val;
+ BFUSetTableFromBar(val);
+ SclSetScrollBar(bar,val, 0,
+ (UInt16)(size-BFURowsInTable), 1);
+ SclDrawScrollBar(bar);
+ }
+ break;
+ case 12://down
+ bar=getObjectPtr(pForm,BFUModScrollBar);
+ SclGetScrollBar(bar,&val,0,0,0);
+ if (val<size-BFURowsInTable)
+ {
+ ++val;
+ BFUSetTableFromBar(val);
+ SclSetScrollBar(bar,val, 0,
+ (UInt16)(size-BFURowsInTable), 1);
+ SclDrawScrollBar(bar);
+ }
+
+ break;
+ }
+ break;
case popSelectEvent:
switch(pEvent->data.popSelect.controlID)
{
@@ -1132,6 +1224,11 @@
static void BFUModulesFormInit (FormPtr pForm)
{
CtlSetValue(getObjectPtr(pForm,BFUSave2CardBox),BFUSettingsValues.save2card);
+ if ((CardIn = BFUInitFileLists()))
+ BFUInitTable();
+ else
+ BFUdoDie("No card or error occured.",0);
+ BFUInitModList();
}
static void BFUToolsFormInit (FormPtr pForm)
@@ -1167,6 +1264,8 @@
static void BFUOKButtonPressed()
{
BFUPrefs2String();
+ if (saveHandle)
+ MemHandleFree(saveHandle);
// FrmCustomAlert(BFUAlert,"Output string:\n",BFUCommandLinePart,NULL);
FrmGotoForm(1000);
}
@@ -1182,6 +1281,8 @@
static void BFUCancelButtonPressed()
{
*BFUCommandLinePart = '\0';
+ if (saveHandle)
+ MemHandleFree(saveHandle);
FrmGotoForm(1000);
}
@@ -1217,7 +1318,37 @@
static void BFUModulesFormSaveFields(FormType *pForm)
-{
+{
+ BFUSaveNames();
+ BFUdoDie("Removing listHandle",0);
+ if (listHandle)
+ {
+#ifdef MODULES_VERBOSE_DEBUG
+ BFUdoDie("Unlock listHandle",0);
+#endif
+ MemHandleUnlock(listHandle);
+ MemHandleFree(listHandle);
+ listHandle = 0;
+ }
+ BFUdoDie("Removing ptrHandle",0);
+ if (ptrHandle)
+ {
+ MemHandleFree(ptrHandle);
+ ptrHandle = 0;
+ }
+ BFUdoDie("Removing modListHandle",0);
+ if (modListHandle)
+ {
+ MemHandleFree(modListHandle);
+ modListHandle = 0;
+ }
+ BFUdoDie("Removing modPtrHandle",0);
+ if (modPtrHandle)
+ {
+ MemHandleFree(modPtrHandle);
+ modPtrHandle = 0;
+ }
+ return;
}
static void BFUToolsFormSaveFields(FormType *pForm)
@@ -1229,3 +1360,484 @@
StrNCopy(BFUSettingsValues.RAMdiskSize,
FldGetTextPtr(getObjectPtr(pForm,BFURAMdiskSizeField)),BFURAMdiskMaxLength);
}
+
+static Boolean BFUPush2List(const Char *name)
+{
+ Char *ptr;
+ Err err;
+
+#ifdef MODULES_VERBOSE_DEBUG
+ BFUdoDie("Entering BFUPush2List()",0);
+#endif
+
+ if (size)
+ {
+ ++size;
+ err = MemHandleResize(listHandle,size*BFUDefaultFileNameSize);
+ switch (err)
+ {
+ case 0:
+ //OK
+ break;
+ default:
+ BFUdoDie("Cannot resize modListHandle! That's fatal error for this form",0);
+ return false;
+ }
+ }
+ else
+ {
+ size=1;
+ listHandle=MemHandleNew(BFUDefaultFileNameSize);
+ }
+ ptr = MemHandleLock(listHandle);
+ StrNCopy(ptr+length,name, BFUDefaultFileNameSize);
+ length += StrLen(name)+1;
+ MemHandleUnlock(listHandle);
+#ifdef MODULES_VERBOSE_DEBUG
+ BFUdoDie("Leaving BFUPush2List()",0);
+#endif
+ return true;
+}
+
+static Boolean BFUIsSquashFS(const Char *name)
+{
+ UInt8 l;
+ if ((l=StrLen(name))>9)
+ {
+ if (!StrCaselessCompare(".squashfs",name+l-9))
+ return true;
+ }
+ return false;
+}
+
+
+static Boolean BFUReadFileNames(UInt16 volRefNum)
+{
+ FileInfoType info;
+ FileRef dirRef;
+ UInt32 dirIterator;
+ Boolean result = true;
+ Char *fileName = MemPtrNew(256);
+ Char *ptr, **pptr;
+// FormPtr pForm=FrmGetActiveForm();
+ Err err;
+
+
+#ifdef BFUContentsTest
+ UInt32 i;
+#endif
+
+
+ size = 0;
+ msize=1;
+ listHandle = 0;
+ ptrHandle = 0;
+ modPtrHandle = 0;
+ modListHandle = 0;
+
+ if (!fileName)
+ {
+ BFUdoDie("Couldn't allocate memory for fileName buffer",0);
+ return false;
+ }
+
+ modListHandle = MemHandleNew(BFUDefaultFileNameSize);
+ if (!modListHandle)
+ {
+ BFUdoDie("Couldn't allocate memory for modListHandle",0);
+ return false;
+ }
+ ptr = MemHandleLock(modListHandle);
+ StrCopy(ptr,"Custom");
+ ptr[6]='\0';
+ mlength=7;//"Custom"
+ MemHandleUnlock(modListHandle);
+
+
+#ifdef MODULES_DEBUG
+ BFUdoDie("Entering BFUReadFileNames()",0);
+#endif
+
+ err = VFSFileOpen(volRefNum,"/"/* "linux2ram"*/,vfsModeRead,&dirRef);
+ switch(err)
+ {
+ case errNone:
+ info.nameP = fileName;
+ info.nameBufLen = 256;
+ dirIterator = vfsIteratorStart;
+ while (dirIterator != vfsIteratorStop)
+ {
+ err = VFSDirEntryEnumerate (dirRef, &dirIterator,&info);
+ if (err == errNone)
+ {
+ if (BFUIsSquashFS(fileName))
+ {
+ BFUPush2List(fileName);
+ }
+ else
+ if (BFUIsModList(fileName))
+ {
+ BFUPush2ModList(fileName);
+ }
+
+ }
+ else
+ {
+ dirIterator = vfsIteratorStop;
+ result = false;
+ }
+ }
+ }
+ if (result)
+ {
+//sort names here
+ if (size)
+ {
+ ptr = MemHandleLock(listHandle);
+ if (!ptr)
+ {
+ BFUdoDie("Couldn't lock listHandle",0);
+ return false;
+ }
+ ptrHandle = SysFormPointerArrayToStrings(ptr,size);
+ if (!ptrHandle)
+ {
+ BFUdoDie("ptrHandle error",0);
+ return false;
+ }
+ pptr = MemHandleLock(ptrHandle);
+ if (size > 1)
+ SysQSort(pptr, size, sizeof(Char *),(CmpFuncPtr)&BFUCompare,0);
+
+#ifdef BFUContentsTest
+ for (i = 0; i < size ; ++i)
+ {
+ BFUdoDie(pptr[i],0);
+ }
+#endif
+// MemHandleUnlock(listHandle);
+ MemHandleUnlock(ptrHandle);
+ }
+
+ ptr = MemHandleLock(modListHandle);
+ if (!ptr)
+ {
+ BFUdoDie("Couldn't lock modListHandle error",0);
+ return false;
+ }
+
+ modPtrHandle = SysFormPointerArrayToStrings(ptr,msize);
+ if (!modPtrHandle)
+ {
+ BFUdoDie("modPtrHandle error",0);
+ return false;
+ }
+ pptr = MemHandleLock(modPtrHandle);
+ if (!modPtrHandle)
+ {
+ BFUdoDie("Couldn't lock modPtrHandle",0);
+ return false;
+ }
+ if (size > 1)
+ SysQSort(pptr, msize, sizeof(Char *), (CmpFuncPtr)(&BFUCompare),0);
+
+#ifdef BFUContentsTest
+ for (i = 0; i < msize ; ++i)
+ {
+ BFUdoDie(pptr[i],0);
+ }
+#endif
+ }
+ MemPtrFree(fileName);
+ VFSFileClose(dirRef);
+ return true;
+}
+
+static Boolean BFUInitFileLists()
+{
+ UInt16 volRefNum;
+ UInt32 vfsIterator=vfsIteratorStart;
+ Err err;
+ Boolean result=false;
+
+#ifdef MODULES_DEBUG
+ BFUdoDie("Entering BFUInitFileList()",0);
+#endif
+
+ while(vfsIterator != vfsIteratorStop)
+ {
+ err = VFSVolumeEnumerate(&volRefNum,&vfsIterator);
+ switch (err)
+ {
+ case errNone:
+ if ((result=BFUReadFileNames(volRefNum)))
+ vfsIterator = vfsIteratorStop;
+ break;
+ default:
+ vfsIterator = vfsIteratorStop;
+ break;
+ }
+ }
+#ifdef MODULES_DEBUG
+ BFUdoDie("Leaving BFUInitFileList()",0);
+#endif
+ return result;
+}
+
+static Boolean BFUInitTable()
+{
+ int i;
+ Char **ptr;
+ TableType *table = getObjectPtr(FrmGetActiveForm(),BFUModulesTable);
+ Int16 numRow = size;
+ FormPtr pForm = FrmGetActiveForm();
+
+#ifdef MODULES_DEBUG
+ BFUdoDie("Entering BFUInitTable()",0);
+#endif
+
+ if (ptrHandle)
+ ptr = MemHandleLock(ptrHandle);
+ else
+ {
+ BFUdoDie("ptrHandle not allocated,shouldn't happen",0);
+ return false;
+ }
+ for (i=0; i < numRow; ++i)
+ {
+ TblSetItemStyle(table,i,1,checkboxTableItem);
+ TblSetItemInt(table,i,1,0);
+ TblSetItemStyle(table,i,0,labelTableItem);
+ TblSetItemPtr(table,i,0,ptr[i]);
+ TblSetRowUsable(table,i,true);
+ TblSetRowSelectable(table,i,true);
+ TblSetRowStaticHeight(table,i,true);
+ TblSetRowHeight(table,i,15);
+ }
+ TblMarkTableInvalid(table);
+ TblSetColumnSpacing(table,0,7);
+ TblSetColumnSpacing(table,1,20);
+ TblSetColumnUsable(table,0,true);
+ TblSetColumnUsable(table,1,true);
+ TblHasScrollBar(table,true);
+ if ((UseSclBar = size>BFURowsInTable))
+ {
+ SclSetScrollBar(getObjectPtr(pForm,
+ BFUModScrollBar), 0,0, (UInt16)(size-BFURowsInTable),1);
+// FrmShowObject(pForm,BFUModScrollBar);
+ }
+#ifdef MODULES_VERBOSE_DEBUG
+ BFUdoDie("Going to set",0);
+#endif
+ if (UseSclBar)
+ BFUSetTableFromBar(0);
+#ifdef MODULES_DEBUG
+ BFUdoDie("leaving BFUInitTable()",0);
+#endif
+ return true;
+}
+
+static void BFUSetTableFromBar(Int16 val)
+{
+ Int16 i;
+ TableType *tab=getObjectPtr(FrmGetActiveForm(),BFUModulesTable);
+
+#ifdef MODULES_DEBUG
+ BFUdoDie("Entering BFUSetTableFromBar()",0);
+#endif
+
+ for (i = 0 ; i < size ; ++i)
+ {
+ TblSetRowMasked(tab,i,((i>=val)&&(i<val+BFURowsInTable)));
+ TblSetRowUsable(tab,i,((i>=val)&&(i<val+BFURowsInTable)));
+ TblMarkRowInvalid(tab,i);
+ }
+ TblMarkTableInvalid(tab);
+ TblRedrawTable(tab);
+#ifdef MODULES_DEBUG
+ BFUdoDie("leaving BFUSetTableFromBar()",0);
+#endif
+}
+
+static Boolean BFUPush2ModList(const Char *name)
+{
+ Char *ptr;
+ Err err;
+
+#ifdef MODULES_VERBOSE_DEBUG
+ BFUdoDie("Entering BFUPush2ModList()",0);
+#endif
+
+ if (msize)
+ {
+ ++msize;
+ err = MemHandleResize(modListHandle,msize*BFUDefaultFileNameSize);
+ switch (err)
+ {
+ case 0:
+ //OK
+ break;
+ default:
+ BFUdoDie("Cannot resize modListHandle! That's fatal error for this form",0);
+ return false;
+ }
+ }
+ else
+ {
+ msize=1;
+ modListHandle=MemHandleNew(BFUDefaultFileNameSize);
+ }
+ ptr = MemHandleLock(modListHandle);
+ StrNCopy(ptr+mlength,name, BFUDefaultFileNameSize);
+ mlength += StrLen(name)+1;
+ MemHandleUnlock(modListHandle);
+#ifdef MODULES_VERBOSE_DEBUG
+ BFUdoDie("leaving BFUPush2ModList()",0);
+#endif
+ return true;
+}
+
+
+
+static Boolean BFUIsModList(const Char *name)
+{
+ Char mod[8];//length of "modlist"
+ UInt8 l;
+#ifdef MODULES_VERBOSE_DEBUG
+ BFUdoDie("entering BFUIsModList()",0);
+#endif
+ if ((l=StrLen(name))>11)
+ {
+ StrNCopy(mod,name,7); //copy "modlist" from beginning
+ mod[7]='\0';
+ if (!StrCaselessCompare(".txt",name+l-4) && !StrCaselessCompare("modlist",mod))
+ return true;
+ }
+ return false;
+#ifdef MODULES_VERBOSE_DEBUG
+ BFUdoDie("leaving BFUIsModList()",0);
+#endif
+}
+
+
+
+Int16 BFUCompare(void **v1,void **v2,Int32 other)
+{
+ return StrNCaselessCompare((Char *)*v1,(Char *)*v2,BFUDefaultFileNameSize);
+}
+
+static Boolean BFUSaveNames()
+{
+ Int16 i;
+ UInt32 len=0,slen;
+ UInt32 bitmap=0;
+ Char **pptr,*sptr;
+ MemHandle ptrs;
+ TableType *tab=getObjectPtr(FrmGetActiveForm(),BFUModulesTable);
+ Err err;
+#ifdef MODULES_DEBUG
+ BFUdoDie("entered BFUSaveNames()",0);
+#endif
+
+ if (saveHandle)
+ {
+ MemHandleFree(saveHandle);
+ saveHandle = 0;
+ }
+ modCount = 0;
+ if (size)
+ {
+ saveHandle = MemHandleNew(BFUDefaultFileNameSize);
+ if (!saveHandle)
+ {
+ BFUdoDie("Couldn't create new handle. Can't save.",0);
+ return false;
+ }
+ pptr = MemHandleLock(ptrHandle);
+ if (!pptr)
+ {
+ BFUdoDie("Couldn't lock new handle. Can't save.",0);
+ return false;
+ }
+ for (i = 0; i < size ; ++i)
+ {
+ if (TblGetItemInt(tab,i,1))
+ {
+ ++modCount;
+ bitmap |=1;
+ slen = StrLen(pptr[i]);
+ err=MemHandleResize(saveHandle,len+slen+1);
+ if (err)
+ {
+ BFUdoDie("Couldn't resize new handle. Can't save.",0);
+ return false;
+ }
+ sptr=MemHandleLock(saveHandle);
+ if (!sptr)
+ {
+ BFUdoDie("Couldn't lock resized handle. Can't save.",0);
+ return false;
+ }
+ BFUdoDie(pptr[i],0);
+ StrNCopy(sptr+len,pptr[i],slen);
+ len+=slen+1;
+ sptr[len-1]='\0';
+ MemHandleUnlock(saveHandle);
+ }
+ bitmap <<=1;
+ }
+ bitmap >>=1;
+// BFUdoDie("Bitmap",bitmap);
+#ifdef BFUSaveContentsTest
+ sptr=MemHandleLock(saveHandle);
+ ptrs = SysFormPointerArrayToStrings(sptr,size);
+ if (!ptrs)
+ {
+ BFUdoDie("ptrs error",0);
+ return false;
+ }
+ pptr = MemHandleLock(ptrs);
+ if (!pptr)
+ {
+ BFUdoDie("Couldn't lock ptrs. Can't save.",0);
+ return false;
+ }
+ for (i = 0; i < modCount ; ++i)
+ {
+ BFUdoDie(pptr[i],0);
+ }
+#ifdef MODULES_VERBOSE_DEBUG
+ BFUdoDie("Unlock saveHandle",0);
+#endif
+ MemHandleUnlock(saveHandle);
+#ifdef MODULES_VERBOSE_DEBUG
+ BFUdoDie("Unlock ptrs",0);
+#endif
+ MemHandleUnlock(ptrs);
+ MemHandleFree(ptrs);
+ ptrs = 0;
+#endif
+#ifdef MODULES_VERBOSE_DEBUG
+ BFUdoDie("Unlock ptrHandle",0);
+#endif
+ MemHandleUnlock(ptrHandle);
+#ifdef MODULES_DEBUG
+ BFUdoDie("leaving BFUSaveNames()",0);
+#endif
+ }
+ return true;
+}
+
+static Boolean BFUInitModList()
+{
+ FormPtr pForm=FrmGetActiveForm();
+ Char **pptr = MemHandleLock(modPtrHandle);
+
+ LstNewList ((void **)&pForm, BFUModList, 72, 29,85, 44,stdFont, 4,BFUModListTrigger);
+ LstSetListChoices(getObjectPtr(pForm,BFUModList),pptr,msize);
+ MemHandleUnlock(modListHandle);
+ MemHandleUnlock(modPtrHandle);
+ MemHandleUnlock(modPtrHandle);
+ return true;
+}
+
Modified: linux4palm/BFUGarux/BFUSettings.Rsrc
===================================================================
--- linux4palm/BFUGarux/BFUSettings.Rsrc 2006-12-01 23:16:34 UTC (rev 688)
+++ linux4palm/BFUGarux/BFUSettings.Rsrc 2006-12-02 00:25:32 UTC (rev 689)
@@ -81,7 +81,10 @@
POPUPLIST ID BFUPartTrigger BFUPartList
LABEL "Set:" ID 8035 AT (9 16) USABLE FONT 1
CHECKBOX "To card" ID BFUSave2CardBox AT (74 140 47 15) USABLE LEFTANCHOR GROUP 0
- TABLE ID BFUModuleTable AT (9 31 141 100) ROWS 8 COLUMNS 2 COLUMNWIDTHS 120 8
+ TABLE ID BFUModulesTable AT (2 39 157 97) ROWS 8 COLUMNS 2 COLUMNWIDTHS 120 8
+ LABEL "Modules list:" ID 8210 AT (9 31) USABLE FONT 1
+ POPUPTRIGGER "Custom" ID BFUModListTrigger AT (72 29 47 15) USABLE LEFTANCHOR
+ SCROLLBAR ID BFUModScrollBar AT (150 46 7 85) USABLE VALUE 0 MIN 0 MAX 0 PAGESIZE 1
END
FORM ID BFUToolsForm AT (0 0 160 160)
Modified: linux4palm/BFUGarux/BFUSettings.Rsrc.h
===================================================================
--- linux4palm/BFUGarux/BFUSettings.Rsrc.h 2006-12-01 23:16:34 UTC (rev 688)
+++ linux4palm/BFUGarux/BFUSettings.Rsrc.h 2006-12-02 00:25:32 UTC (rev 689)
@@ -7,8 +7,12 @@
#define BFUSave2CardBox 8543
#define BFUModulesForm 8200 //"BFUSettings - Modules"
-#define BFUModuleTable 8201
+#define BFUModulesTable 8201
+#define BFUModListTrigger 8202
+#define BFUModScrollBar 8203
+#define BFUModList 8205
+
#define BFUToolsForm 8300 //"BFUSettings - Tools"
#define BFUSilentBootBox 8301
#define BFUKeyboardSupportBox 8303
Modified: linux4palm/BFUGarux/garux-clean.c
===================================================================
--- linux4palm/BFUGarux/garux-clean.c 2006-12-01 23:16:34 UTC (rev 688)
+++ linux4palm/BFUGarux/garux-clean.c 2006-12-02 00:25:32 UTC (rev 689)
@@ -82,7 +82,14 @@
StrNCopy(parameters,KernelDefaultParam,KernelParamLength+1);
return;
}
-static void stopApp() {return;}
+static void stopApp()
+{
+#ifdef with_BFUSettings
+ if (saveHandle)
+ MemHandleFree(saveHandle);
+#endif
+ return;
+}
static void BFUdoDie(const Char * ErrStr,Err error)
{
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|