зеркало из https://github.com/mozilla/gecko-dev.git
*** NOT PART OF BUILD ***
This commit is contained in:
Родитель
3715eaa957
Коммит
e5a056cfa2
Двоичные данные
xpinstall/packager/mac/ASEncoder/rsrc/ASEncoder.rsrc
Двоичные данные
xpinstall/packager/mac/ASEncoder/rsrc/ASEncoder.rsrc
Двоичный файл не отображается.
|
@ -49,24 +49,15 @@
|
|||
|
||||
on run
|
||||
set kTargetFile to "HD:genJS:ASEncoder"
|
||||
set kTargetFolder to "HD:genJS"
|
||||
tell application "ASEncoder"
|
||||
activate
|
||||
|
||||
-- pre-condition: kTargetFile is set to a local un-encoded (containing a res fork) file
|
||||
|
||||
-- encode should succeed
|
||||
set bSuccess to encode file kTargetFile
|
||||
SUCCESS_MSG(kTargetFile, "encode", bSuccess)
|
||||
-- encode should fail
|
||||
set bSuccess to encode file kTargetFile
|
||||
SUCCESS_MSG(kTargetFile, "encode", bSuccess)
|
||||
|
||||
-- decode should succeed
|
||||
set bSuccess to decode file kTargetFile
|
||||
SUCCESS_MSG(kTargetFile, "decode", bSuccess)
|
||||
--decode should fail
|
||||
set bSuccess to decode file kTargetFile
|
||||
SUCCESS_MSG(kTargetFile, "decode", bSuccess)
|
||||
set bSuccess to encode file kTargetFolder
|
||||
SUCCESS_MSG(kTargetFolder, "encode", bSuccess)
|
||||
|
||||
-- post-condition: kTargetFile is a decoded (containing a res fork) file as it originally was
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
#include "nsEventHandler.h"
|
||||
#include "nsAppleSingleEncoder.h"
|
||||
#include "nsAppleSingleDecoder.h"
|
||||
#include "MoreFilesExtras.h"
|
||||
|
||||
Boolean gDone;
|
||||
|
||||
|
@ -77,8 +78,9 @@ EncodeEvent(AppleEvent *appEvent, AppleEvent *reply, SInt32 handlerRefCon)
|
|||
{
|
||||
OSErr err = noErr;
|
||||
FSSpec param;
|
||||
Boolean result = false;
|
||||
Boolean result = false, isDir = false;
|
||||
AEDesc fileDesc;
|
||||
long dummy;
|
||||
|
||||
// extract FSSpec from params
|
||||
err = AEGetParamDesc(appEvent, keyDirectObject, typeFSS, &fileDesc);
|
||||
|
@ -91,15 +93,26 @@ EncodeEvent(AppleEvent *appEvent, AppleEvent *reply, SInt32 handlerRefCon)
|
|||
if (err != noErr)
|
||||
goto reply;
|
||||
|
||||
// check if given file has res fork (takes care of existence check)
|
||||
if (nsAppleSingleEncoder::HasResourceFork(¶m))
|
||||
FSpGetDirectoryID(¶m, &dummy, &isDir);
|
||||
|
||||
// if folder recursively traverse and encode contents
|
||||
if (isDir)
|
||||
{
|
||||
// encode given file
|
||||
nsAppleSingleEncoder encoder;
|
||||
err = encoder.Encode(¶m);
|
||||
err = encoder.EncodeFolder(¶m);
|
||||
}
|
||||
else
|
||||
err = -1; // so that result boolean is set to false
|
||||
{
|
||||
// it's a file not a folder so proceed as usual
|
||||
|
||||
// check if given file has res fork (takes care of existence check)
|
||||
if (nsAppleSingleEncoder::HasResourceFork(¶m))
|
||||
{
|
||||
// encode given file
|
||||
nsAppleSingleEncoder encoder;
|
||||
err = encoder.Encode(¶m);
|
||||
}
|
||||
}
|
||||
|
||||
// if noErr thus far
|
||||
if (err == noErr)
|
||||
|
@ -112,10 +125,8 @@ reply:
|
|||
// package reply
|
||||
AEPutParamPtr(reply, keyDirectObject, typeBoolean, &result, sizeof(result));
|
||||
|
||||
// set err to noErr -- boolean takes care of failures
|
||||
err = noErr;
|
||||
|
||||
return err;
|
||||
// boolean takes care of failures
|
||||
return noErr;
|
||||
}
|
||||
|
||||
pascal OSErr
|
||||
|
@ -123,8 +134,9 @@ DecodeEvent(AppleEvent *appEvent, AppleEvent *reply, SInt32 handlerRefCon)
|
|||
{
|
||||
OSErr err = noErr;
|
||||
FSSpec param, outFile;
|
||||
Boolean result = false;
|
||||
Boolean result = false, isDir = false;
|
||||
AEDesc fileDesc;
|
||||
long dummy;
|
||||
|
||||
// extract FSSpec from params
|
||||
err = AEGetParamDesc(appEvent, keyDirectObject, typeFSS, &fileDesc);
|
||||
|
@ -136,16 +148,27 @@ DecodeEvent(AppleEvent *appEvent, AppleEvent *reply, SInt32 handlerRefCon)
|
|||
err = nsASEApp::GotRequiredParams(appEvent);
|
||||
if (err != noErr)
|
||||
goto reply;
|
||||
|
||||
// check if given file is in AS format (takes care of existence check)
|
||||
if (nsAppleSingleDecoder::IsAppleSingleFile(¶m))
|
||||
|
||||
FSpGetDirectoryID(¶m, &dummy, &isDir);
|
||||
|
||||
// if folder recursively traverse and encode contents
|
||||
if (isDir)
|
||||
{
|
||||
// decode given file
|
||||
nsAppleSingleDecoder decoder;
|
||||
err = decoder.Decode(¶m, &outFile);
|
||||
err = decoder.DecodeFolder(¶m);
|
||||
}
|
||||
else
|
||||
err = -1; // so that result boolean is set to false
|
||||
{
|
||||
// it's a file not a folder so proceed as usual
|
||||
|
||||
// check if given file is in AS format (takes care of existence check)
|
||||
if (nsAppleSingleDecoder::IsAppleSingleFile(¶m))
|
||||
{
|
||||
// decode given file
|
||||
nsAppleSingleDecoder decoder;
|
||||
err = decoder.Decode(¶m, &outFile);
|
||||
}
|
||||
}
|
||||
|
||||
// if noErr thus far
|
||||
if (err == noErr)
|
||||
|
@ -158,10 +181,8 @@ reply:
|
|||
// package reply
|
||||
AEPutParamPtr(reply, keyDirectObject, typeBoolean, &result, sizeof(result));
|
||||
|
||||
// set err to noErr -- boolean takes care of failures
|
||||
err = noErr;
|
||||
|
||||
return err;
|
||||
// boolean takes care of failures
|
||||
return noErr;
|
||||
}
|
||||
|
||||
pascal OSErr
|
||||
|
|
|
@ -72,7 +72,9 @@ extern Boolean gDone;
|
|||
#define rMenuFile 129
|
||||
#define rMenuItemASEncode 1
|
||||
#define rMenuItemASDecode 2
|
||||
#define rMenuItemQuit 4
|
||||
#define rMenuItemASEncodeFolder 3
|
||||
#define rMenuItemASDecodeFolder 4
|
||||
#define rMenuItemQuit 6
|
||||
#define rMenuEdit 130
|
||||
|
||||
#define rAboutBox 129
|
||||
|
|
|
@ -28,6 +28,8 @@
|
|||
#include <Files.h>
|
||||
#include <OSUtils.h>
|
||||
#include "nsAppleSingleDecoder.h" /* AppleSingle struct definitions */
|
||||
#include "MoreFilesExtras.h"
|
||||
#include "IterateDirectory.h"
|
||||
|
||||
nsAppleSingleEncoder::nsAppleSingleEncoder()
|
||||
{
|
||||
|
@ -117,6 +119,79 @@ nsAppleSingleEncoder::Encode(FSSpecPtr aInFile, FSSpecPtr aOutFile)
|
|||
return err;
|
||||
}
|
||||
|
||||
pascal void
|
||||
EncodeDirIterateFilter(const CInfoPBRec * const cpbPtr, Boolean *quitFlag, void *yourDataPtr)
|
||||
{
|
||||
OSErr err = noErr;
|
||||
FSSpec currFSp;
|
||||
nsAppleSingleEncoder* thisObj = NULL;
|
||||
Boolean isDir = false;
|
||||
long dummy;
|
||||
|
||||
// param check
|
||||
if (!yourDataPtr || !cpbPtr || !quitFlag)
|
||||
return;
|
||||
|
||||
*quitFlag = false;
|
||||
|
||||
// extract 'this' -- an nsAppleSingleEncoder instance
|
||||
thisObj = (nsAppleSingleEncoder*) yourDataPtr;
|
||||
thisObj->ReInit();
|
||||
|
||||
// make an FSSpec from the CInfoPBRec*
|
||||
err = FSMakeFSSpec(cpbPtr->hFileInfo.ioVRefNum, cpbPtr->hFileInfo.ioFlParID,
|
||||
cpbPtr->hFileInfo.ioNamePtr, &currFSp);
|
||||
if (err == noErr)
|
||||
{
|
||||
FSpGetDirectoryID(&currFSp, &dummy, &isDir);
|
||||
|
||||
// if current FSSpec is file
|
||||
if (!isDir)
|
||||
{
|
||||
// if file has res fork
|
||||
if (nsAppleSingleEncoder::HasResourceFork(&currFSp))
|
||||
{
|
||||
// encode file
|
||||
thisObj->Encode(&currFSp);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// else if current FSSpec is folder ignore
|
||||
// XXX never reached?
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
OSErr
|
||||
nsAppleSingleEncoder::EncodeFolder(FSSpecPtr aFolder)
|
||||
{
|
||||
OSErr err = noErr;
|
||||
long dummy;
|
||||
Boolean isDir = false;
|
||||
|
||||
// check that FSSpec is folder
|
||||
if (aFolder)
|
||||
{
|
||||
FSpGetDirectoryID(aFolder, &dummy, &isDir);
|
||||
if (!isDir)
|
||||
return dirNFErr;
|
||||
}
|
||||
|
||||
// recursively enumerate contents of folder (maxLevels=0 means recurse all)
|
||||
FSpIterateDirectory(aFolder, 0, EncodeDirIterateFilter, (void*)this);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
void
|
||||
nsAppleSingleEncoder::ReInit()
|
||||
{
|
||||
mInFile = NULL;
|
||||
mOutFile = NULL;
|
||||
}
|
||||
|
||||
OSErr
|
||||
nsAppleSingleEncoder::WriteHeader()
|
||||
{
|
||||
|
|
|
@ -45,6 +45,8 @@ public:
|
|||
static Boolean HasResourceFork(FSSpecPtr aFile);
|
||||
OSErr Encode(FSSpecPtr aFile);
|
||||
OSErr Encode(FSSpecPtr aInFile, FSSpecPtr aOutFile);
|
||||
OSErr EncodeFolder(FSSpecPtr aFolder);
|
||||
void ReInit();
|
||||
|
||||
static OSErr FSpGetCatInfo(CInfoPBRec *pb, FSSpecPtr aFile);
|
||||
|
||||
|
|
|
@ -138,6 +138,20 @@ nsEventHandler::HandleKeyDown()
|
|||
menuChoice |= rMenuItemASDecode;
|
||||
break;
|
||||
|
||||
case 'F':
|
||||
case 'f':
|
||||
menuChoice = rMenuFile;
|
||||
menuChoice <<= 16;
|
||||
menuChoice |= rMenuItemASEncodeFolder;
|
||||
break;
|
||||
|
||||
case 'O':
|
||||
case 'o':
|
||||
menuChoice = rMenuFile;
|
||||
menuChoice <<= 16;
|
||||
menuChoice |= rMenuItemASDecodeFolder;
|
||||
break;
|
||||
|
||||
case 'Q':
|
||||
case 'q':
|
||||
menuChoice = rMenuFile;
|
||||
|
@ -213,7 +227,25 @@ nsEventHandler::HandleMenuChoice(SInt32 aChoice)
|
|||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case rMenuItemASEncodeFolder: /* AS Encode Folder... */
|
||||
err = selector.SelectFolder(&file);
|
||||
if (err == noErr)
|
||||
{
|
||||
nsAppleSingleEncoder encoder;
|
||||
err = encoder.EncodeFolder(&file);
|
||||
}
|
||||
break;
|
||||
|
||||
case rMenuItemASDecodeFolder: /* AS Decode Folder... */
|
||||
err = selector.SelectFolder(&file);
|
||||
if (err == noErr)
|
||||
{
|
||||
nsAppleSingleDecoder decoder;
|
||||
err = decoder.DecodeFolder(&file);
|
||||
}
|
||||
break;
|
||||
|
||||
case rMenuItemQuit: /* Quit */
|
||||
nsASEApp::SetCompletionStatus(true);
|
||||
break;
|
||||
|
|
Загрузка…
Ссылка в новой задаче