From 7eccb655b3bfd0476d6834f3c271bdc10440b6ae Mon Sep 17 00:00:00 2001 From: "sgehani%netscape.com" Date: Tue, 26 Oct 1999 00:35:41 +0000 Subject: [PATCH] First Checked In. git-svn-id: svn://10.0.0.236/trunk@51788 18797224-902f-48f8-a5cc-f745e15eee43 --- .../mac/ASEncoder/build/ASEncoder.mcp | Bin 0 -> 108673 bytes .../mac/ASEncoder/rsrc/ASEncoder.rsrc | Bin 0 -> 3258 bytes .../mac/ASEncoder/src/ASEncoderUsage.script | 83 ++++ .../packager/mac/ASEncoder/src/nsASEApp.cpp | 291 +++++++++++++ .../packager/mac/ASEncoder/src/nsASEApp.h | 88 ++++ .../ASEncoder/src/nsAppleSingleEncoder.cpp | 388 ++++++++++++++++++ .../mac/ASEncoder/src/nsAppleSingleEncoder.h | 79 ++++ .../mac/ASEncoder/src/nsEventHandler.cpp | 233 +++++++++++ .../mac/ASEncoder/src/nsEventHandler.h | 47 +++ .../mac/ASEncoder/src/nsFileSelector.cpp | 176 ++++++++ .../mac/ASEncoder/src/nsFileSelector.h | 50 +++ 11 files changed, 1435 insertions(+) create mode 100644 mozilla/xpinstall/packager/mac/ASEncoder/build/ASEncoder.mcp create mode 100644 mozilla/xpinstall/packager/mac/ASEncoder/rsrc/ASEncoder.rsrc create mode 100644 mozilla/xpinstall/packager/mac/ASEncoder/src/ASEncoderUsage.script create mode 100644 mozilla/xpinstall/packager/mac/ASEncoder/src/nsASEApp.cpp create mode 100644 mozilla/xpinstall/packager/mac/ASEncoder/src/nsASEApp.h create mode 100644 mozilla/xpinstall/packager/mac/ASEncoder/src/nsAppleSingleEncoder.cpp create mode 100644 mozilla/xpinstall/packager/mac/ASEncoder/src/nsAppleSingleEncoder.h create mode 100644 mozilla/xpinstall/packager/mac/ASEncoder/src/nsEventHandler.cpp create mode 100644 mozilla/xpinstall/packager/mac/ASEncoder/src/nsEventHandler.h create mode 100644 mozilla/xpinstall/packager/mac/ASEncoder/src/nsFileSelector.cpp create mode 100644 mozilla/xpinstall/packager/mac/ASEncoder/src/nsFileSelector.h diff --git a/mozilla/xpinstall/packager/mac/ASEncoder/build/ASEncoder.mcp b/mozilla/xpinstall/packager/mac/ASEncoder/build/ASEncoder.mcp new file mode 100644 index 0000000000000000000000000000000000000000..25b185d2c6e0ab062600161897293635a8fab455 GIT binary patch literal 108673 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 LzL!ZCKezr5t}Uoc literal 0 HcmV?d00001 diff --git a/mozilla/xpinstall/packager/mac/ASEncoder/rsrc/ASEncoder.rsrc b/mozilla/xpinstall/packager/mac/ASEncoder/rsrc/ASEncoder.rsrc new file mode 100644 index 0000000000000000000000000000000000000000..76f2f05c233467712c01dbd6232d263c52075a99 GIT binary patch literal 3258 zcmds3UuauZ82?Uko2Gx(l%X_^z&79O zCVJo)G<I!&4nOf-H58A+{2HLpk&)H^>@bLq8 zKH+KO8G1VYefVDJpQq;Ags?v&_WRKvVc)WE0;hw|Kx2NMY+0Tcq}gNeGAn9<%g+%% z3g;oo(yiHxx>*th?%KR$>jgfm*Ucr}HEoMmg;O^TQ9XL#0N=gM)lAnlttB3lKeYWy zI8oFc!`4eQ(LP?oq{Gnrr2lP?+7NO6OUe5G0Is3ucnweWH|-+s?r^+PDTypDvLv{2 zJ8!iZsapn@t9@>I2iAX;XQvNfZ(_a-; zuJc8VHj?cMI3UAZ?jw-(scK z&%3A4_DK7Pw*~pm{N-@GAD*P>b3Ey7N^Pqi$lu^uy=*#sT407Td2jKv)g>A}Zwa?* z=oJw|XPD}$0J4}m=2Fq+$Bh&G)a2wOpY=p}0{te&XDlNo&!+yb7XrUvs%z;kmRpNL zV-zLiaNk-8g6qT3|Hom7Y@BOEHg4UGY;4|-Y*f}F8xs}eD>%N!er5L|5WK6gU?afR zfxU@!s!Wa=W}uRWMS;s9i)!1doXy( zC>Jm@Uo9JM9((6fYIYvI>Gq`y@eIm*p)3AtQ}y@a=}Znw;ZMn#TpBd?crrbG1^c`% zFaZF2ebj;eW!Q6-L-a1Rj5oaFh7&y7;FFFBAWEM<(z|mrSvPnffpxJFL>h zt2{(};2p&Sa9|%3UWOqK!G4LOEqDm=!-QAh1mY)1rU`Q#LVps*y`b(YVO$%^JWKK| z!e0_zA^Z!;;Jh6ABZTQ30>=r{zO<)E9(D0^@I%6=i~gbHY0cqNBoBb|^xY&(cEX=a zJZS0lG=3nZ9A`imGgz7tMPEv$F3e9~ToKLU~NoADS$bZ_o~XX)dBS#oVQ=g OWHX5*)@|uBz1m-#d_Keg literal 0 HcmV?d00001 diff --git a/mozilla/xpinstall/packager/mac/ASEncoder/src/ASEncoderUsage.script b/mozilla/xpinstall/packager/mac/ASEncoder/src/ASEncoderUsage.script new file mode 100644 index 00000000000..4c246a43832 --- /dev/null +++ b/mozilla/xpinstall/packager/mac/ASEncoder/src/ASEncoderUsage.script @@ -0,0 +1,83 @@ +(* + * The contents of this file are subject to the Netscape Public License + * Version 1.1 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are Copyright (C) 1999 + * Netscape Communications Corporation. All Rights Reserved. + * + * Contributors: + * Samir Gehani + *) + +-- +-- Simple demo script of ASEncoder's usage from a a script component/client +-- +-- Commands supported by ASEncoder: +-- +---------------------------------------- +-- Required Suite: +---------------------------------------- +-- quit +-- Description: Quit ASEncoder (you can open it using activate) +-- Params: No params +-- Return value: No retval +-- +---------------------------------------- +-- ASEncoder Suite: +---------------------------------------- +-- encode +-- Description: Encode a file in AppleSingle format in place +-- Params: A file system specification +-- Return value: A success boolean (false also returned if file didn't have a res fork) +-- +-- decode +-- Description: Decode an AppleSingle file in place +-- Params: A file system specification +-- Return value: A success boolean (false also returned if file wasn't in AS format) +-- + +on run + set kTargetFile to "HD:genJS:ASEncoder" + 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) + + -- post-condition: kTargetFile is a decoded (containing a res fork) file as it originally was + + quit + end tell +end run + +on SUCCESS_MSG(target, method, retval) + + display dialog "ASEncoder's " & method & " command + of file " & target & " + returned success value: " & retval + +end SUCCESS_MSG \ No newline at end of file diff --git a/mozilla/xpinstall/packager/mac/ASEncoder/src/nsASEApp.cpp b/mozilla/xpinstall/packager/mac/ASEncoder/src/nsASEApp.cpp new file mode 100644 index 00000000000..eb7759e5bef --- /dev/null +++ b/mozilla/xpinstall/packager/mac/ASEncoder/src/nsASEApp.cpp @@ -0,0 +1,291 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* The contents of this file are subject to the Netscape Public License + * Version 1.1 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are Copyright (C) 1999 + * Netscape Communications Corporation. All Rights Reserved. + * + * Contributors: + * Samir Gehani + */ + + +#ifndef _NS_ASEAPP_H_ + #include "nsASEApp.h" +#endif + +#include +#include "nsEventHandler.h" +#include "nsAppleSingleEncoder.h" +#include "nsAppleSingleDecoder.h" + +Boolean gDone; + +nsASEApp::nsASEApp() +{ + InitManagers(); + InitAEHandlers(); + mWindow = NULL; + SetCompletionStatus(false); + + OSErr err = NavLoad(); + if (err!= noErr) + FatalError(navLoadErr); + + MakeMenus(); +} + +nsASEApp::~nsASEApp() +{ + NavUnload(); +} + +void +nsASEApp::InitManagers(void) +{ + MaxApplZone(); + MoreMasters(); MoreMasters(); MoreMasters(); + + InitGraf(&qd.thePort); + InitFonts(); + InitWindows(); + InitMenus(); + TEInit(); + InitDialogs(NULL); + + InitCursor(); + FlushEvents(everyEvent, 0); +} + +#pragma mark - +#pragma mark *** Apple Event Handlers *** +#pragma mark - + +pascal OSErr +EncodeEvent(AppleEvent *appEvent, AppleEvent *reply, SInt32 handlerRefCon) +{ + OSErr err = noErr; + FSSpec param; + Boolean result = false; + AEDesc fileDesc; + + // extract FSSpec from params + err = AEGetParamDesc(appEvent, keyDirectObject, typeFSS, &fileDesc); + if (err != noErr) + goto reply; + BlockMoveData(*fileDesc.dataHandle, ¶m, sizeof(FSSpec)); + + // param check + err = nsASEApp::GotRequiredParams(appEvent); + if (err != noErr) + goto reply; + + // 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); + } + else + err = -1; // so that result boolean is set to false + + // if noErr thus far + if (err == noErr) + { + // then set result to true + result = true; + } + +reply: + // package reply + AEPutParamPtr(reply, keyDirectObject, typeBoolean, &result, sizeof(result)); + + // set err to noErr -- boolean takes care of failures + err = noErr; + + return err; +} + +pascal OSErr +DecodeEvent(AppleEvent *appEvent, AppleEvent *reply, SInt32 handlerRefCon) +{ + OSErr err = noErr; + FSSpec param, outFile; + Boolean result = false; + AEDesc fileDesc; + + // extract FSSpec from params + err = AEGetParamDesc(appEvent, keyDirectObject, typeFSS, &fileDesc); + if (err != noErr) + goto reply; + BlockMoveData(*fileDesc.dataHandle, ¶m, sizeof(FSSpec)); + + // param check + 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)) + { + // decode given file + nsAppleSingleDecoder decoder; + err = decoder.Decode(¶m, &outFile); + } + else + err = -1; // so that result boolean is set to false + + // if noErr thus far + if (err == noErr) + { + // then set result to true + result = true; + } + +reply: + // package reply + AEPutParamPtr(reply, keyDirectObject, typeBoolean, &result, sizeof(result)); + + // set err to noErr -- boolean takes care of failures + err = noErr; + + return err; +} + +pascal OSErr +QuitEvent(AppleEvent *appEvent, AppleEvent *reply, SInt32 handlerRefCon) +{ + OSErr err = noErr; + + nsASEApp::SetCompletionStatus(true); + + return err; +} + +#pragma mark - + +void +nsASEApp::InitAEHandlers() +{ + OSErr err = noErr; + + mEncodeUPP = NewAEEventHandlerProc((ProcPtr) EncodeEvent); + err = AEInstallEventHandler(kASEncoderEventClass, kAEEncode, + mEncodeUPP, 0L, false); + if (err != noErr) + ::CautionAlert(aeInitErr, nil); + + mDecodeUPP = NewAEEventHandlerProc((ProcPtr) DecodeEvent); + err = AEInstallEventHandler(kASEncoderEventClass, kAEDecode, + mDecodeUPP, 0L, false); + if (err != noErr) + ::CautionAlert(aeInitErr, nil); + + mQuitUPP = NewAEEventHandlerProc((ProcPtr) QuitEvent); + err = AEInstallEventHandler(kCoreEventClass, kAEQuitApplication, + mQuitUPP, 0L, false); + if (err != noErr) + ::CautionAlert(aeInitErr, nil); +} +OSErr +nsASEApp::GotRequiredParams(AppleEvent *appEvent) +{ + OSErr err = noErr; + DescType returnedType; + Size actualSize; + + err = AEGetAttributePtr(appEvent, keyMissedKeywordAttr, typeWildCard, + &returnedType, NULL, 0, &actualSize); + + if (err == errAEDescNotFound) + err = noErr; + else if (err == noErr) + err = errAEParamMissed; + + return err; +} + +void +nsASEApp::MakeMenus() +{ + Handle mbarHdl; + MenuHandle menuHdl; + + mbarHdl = ::GetNewMBar(rMenuBar); + ::SetMenuBar(mbarHdl); + + if (menuHdl = ::GetMenuHandle(rMenuApple)) + { + ::AppendResMenu(menuHdl, 'DRVR'); + } + + if (menuHdl = GetMenuHandle(rMenuEdit)) + ::DisableItem(menuHdl, 0); + + ::HMGetHelpMenuHandle(&menuHdl); + ::DisableItem(menuHdl, 0); + + ::DrawMenuBar(); +} + +void +nsASEApp::SetCompletionStatus(Boolean aVal) +{ + gDone = aVal; +} + +Boolean +nsASEApp::GetCompletionStatus() +{ + return gDone; +} + + + +void +nsASEApp::FatalError(short aErrID) +{ + ::StopAlert(aErrID, nil); + SetCompletionStatus(true); +} + +OSErr +nsASEApp::Run() +{ + OSErr err = noErr; + EventRecord evt; + nsEventHandler handler; + + while (!gDone) + { + if (::WaitNextEvent(everyEvent, &evt, 180, NULL)) + { + handler.HandleNextEvent(&evt); + } + } + + return err; +} + +int +main(void) +{ + nsASEApp app; + + app.Run(); + + return 0; +} + diff --git a/mozilla/xpinstall/packager/mac/ASEncoder/src/nsASEApp.h b/mozilla/xpinstall/packager/mac/ASEncoder/src/nsASEApp.h new file mode 100644 index 00000000000..9fc98fdba52 --- /dev/null +++ b/mozilla/xpinstall/packager/mac/ASEncoder/src/nsASEApp.h @@ -0,0 +1,88 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* The contents of this file are subject to the Netscape Public License + * Version 1.1 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are Copyright (C) 1999 + * Netscape Communications Corporation. All Rights Reserved. + * + * Contributors: + * Samir Gehani + */ + + +#ifndef _NS_ASEAPP_H_ +#define _NS_ASEAPP_H_ + +#include +#include +#include +#include + +class nsASEApp +{ + +public: + nsASEApp(); + ~nsASEApp(); + + OSErr Run(); + + static void SetCompletionStatus(Boolean aVal); + static Boolean GetCompletionStatus(void); + static void FatalError(short aErrID); + static OSErr GotRequiredParams(AppleEvent *appEvent); + +private: + void InitManagers(void); + void InitAEHandlers(void); + void MakeMenus(void); + + WindowPtr mWindow; + AEEventHandlerUPP mEncodeUPP; + AEEventHandlerUPP mDecodeUPP; + AEEventHandlerUPP mQuitUPP; +}; + +extern Boolean gDone; + + +/*---------------------------------------------------------------* + * Errors + *---------------------------------------------------------------*/ +#define navLoadErr 128 +#define aeInitErr 130 + +/*---------------------------------------------------------------* + * Resources + *---------------------------------------------------------------*/ +#define rMenuBar 128 +#define rMenuApple 128 +#define rMenuItemAbout 1 +#define rMenuFile 129 +#define rMenuItemASEncode 1 +#define rMenuItemASDecode 2 +#define rMenuItemQuit 4 +#define rMenuEdit 130 + +#define rAboutBox 129 + + +/*---------------------------------------------------------------* + * Constants + *---------------------------------------------------------------*/ +#define kASEncoderEventClass FOUR_CHAR_CODE('ASEn') +#define kAEEncode FOUR_CHAR_CODE('enco') +#define kAEDecode FOUR_CHAR_CODE('deco') + +#endif /* _NS_ASEAPP_H_ */ \ No newline at end of file diff --git a/mozilla/xpinstall/packager/mac/ASEncoder/src/nsAppleSingleEncoder.cpp b/mozilla/xpinstall/packager/mac/ASEncoder/src/nsAppleSingleEncoder.cpp new file mode 100644 index 00000000000..d4526bd5eaa --- /dev/null +++ b/mozilla/xpinstall/packager/mac/ASEncoder/src/nsAppleSingleEncoder.cpp @@ -0,0 +1,388 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* The contents of this file are subject to the Netscape Public License + * Version 1.1 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are Copyright (C) 1999 + * Netscape Communications Corporation. All Rights Reserved. + * + * Contributors: + * Samir Gehani + */ + + +#ifndef _NS_APPLESINGLEENCODER_H_ + #include "nsAppleSingleEncoder.h" +#endif + +#include +#include +#include "nsAppleSingleDecoder.h" /* AppleSingle struct definitions */ + +nsAppleSingleEncoder::nsAppleSingleEncoder() +{ + mInFile = NULL; + mOutFile = NULL; +} + +nsAppleSingleEncoder::~nsAppleSingleEncoder() +{ +} + +Boolean +nsAppleSingleEncoder::HasResourceFork(FSSpecPtr aFile) +{ + OSErr err = noErr; + Boolean bHasResFork = false; + short refnum; + long bytes2Read = 1; + char buf[2]; + + err = FSpOpenRF(aFile, fsRdPerm, &refnum); + if (err == noErr) + { + err = FSRead(refnum, &bytes2Read, &buf[0]); + if (err == noErr) /* err==eofErr if all OK but no res fork */ + bHasResFork = true; + } + + FSClose(refnum); + + return bHasResFork; +} + +OSErr +nsAppleSingleEncoder::Encode(FSSpecPtr aFile) +{ + OSErr err = noErr; + FSSpec transient, exists; + + // handle init in lieu of overloading + if (!mOutFile || !mInFile) + { + mInFile = aFile; + mOutFile = aFile; + } + + // param check + if (!mInFile) + return paramErr; + + // stomp old temp file + mTransient = &transient; + err = FSMakeFSSpec( mInFile->vRefNum, mInFile->parID, kTransientName, + mTransient); + if (err == noErr) + FSpDelete(mTransient); + + // write to transient file + ERR_CHECK( WriteHeader() ); + ERR_CHECK( WriteEntryDescs() ); + ERR_CHECK( WriteEntries() ); + + // rename transient file to out file + err = FSMakeFSSpec( mOutFile->vRefNum, mOutFile->parID, mOutFile->name, + &exists ); + if (err == noErr) + FSpDelete(mOutFile); + FSpRename(mTransient, mOutFile->name); + + return err; +} + +OSErr +nsAppleSingleEncoder::Encode(FSSpecPtr aInFile, FSSpecPtr aOutFile) +{ + OSErr err = noErr; + + // param check + if (!aInFile || !aOutFile) + return paramErr; + + mInFile = aInFile; + mOutFile = aOutFile; + + err = Encode(NULL); + + return err; +} + +OSErr +nsAppleSingleEncoder::WriteHeader() +{ + OSErr err = noErr; + ASHeader hdr; + int i; + long bytes2Wr; + + // init header info + hdr.magicNum = kAppleSingleMagicNum; + hdr.versionNum = kAppleSingleVerNum; + for (i=0; i<16; i++) + hdr.filler[i] = 0; + hdr.numEntries = kNumASEntries; + /* + ** Entries: + ** + ** 1> Real name + ** 2> Finder info + ** 3> File dates + ** 4> Resource fork + ** 5> Data fork + ** 6> Mac info + */ + + bytes2Wr = sizeof(ASHeader); + ERR_CHECK( FSpCreate(mTransient, 'MOZZ', '????', 0) ); + ERR_CHECK( FSpOpenDF(mTransient, fsRdWrPerm, &mTransRefNum) ); + // ERR_CHECK( SetFPos(mTransRefNum, fsFromStart, 0) ); // XXX revisit + ERR_CHECK( FSWrite(mTransRefNum, &bytes2Wr, &hdr) ); + if (bytes2Wr != sizeof(ASHeader)) + err = -1; + + return err; +} + +OSErr +nsAppleSingleEncoder::WriteEntryDescs() +{ + OSErr err = noErr; + long offset = sizeof(ASHeader), bytes2Wr = kNumASEntries*sizeof(ASEntry); + ASEntry entries[kNumASEntries]; + int i; + CInfoPBRec pb; + + ERR_CHECK( FSpGetCatInfo(&pb, mInFile) ); + + // real name + entries[0].entryOffset = sizeof(ASHeader) + (sizeof(ASEntry) * kNumASEntries); + entries[0].entryID = AS_REALNAME; + entries[0].entryLength = pb.hFileInfo.ioNamePtr[0]; + + // finder info + entries[1].entryID = AS_FINDERINFO; + entries[1].entryLength = sizeof(FInfo) + sizeof(FXInfo); + + // file dates + entries[2].entryID = AS_FILEDATES; + entries[2].entryLength = sizeof(ASFileDates); + + // resource fork + entries[3].entryID = AS_RESOURCE; + entries[3].entryLength = pb.hFileInfo.ioFlRLgLen; + + // data fork + entries[4].entryID = AS_DATA; + entries[4].entryLength = pb.hFileInfo.ioFlLgLen; + + // mac info + entries[5].entryID = AS_MACINFO; + entries[5].entryLength = sizeof(ASMacInfo); + + for (i=1; iname, aFile->name[0]); + name[0] = aFile->name[0]; // XXX paranoia + + pb->hFileInfo.ioNamePtr = name; + pb->hFileInfo.ioVRefNum = aFile->vRefNum; + pb->hFileInfo.ioDirID = aFile->parID; + pb->hFileInfo.ioFDirIndex = 0; // use ioNamePtr and ioDirID + ERR_CHECK( PBGetCatInfoSync(pb) ); + + return err; +} \ No newline at end of file diff --git a/mozilla/xpinstall/packager/mac/ASEncoder/src/nsAppleSingleEncoder.h b/mozilla/xpinstall/packager/mac/ASEncoder/src/nsAppleSingleEncoder.h new file mode 100644 index 00000000000..21603b65bad --- /dev/null +++ b/mozilla/xpinstall/packager/mac/ASEncoder/src/nsAppleSingleEncoder.h @@ -0,0 +1,79 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* The contents of this file are subject to the Netscape Public License + * Version 1.1 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are Copyright (C) 1999 + * Netscape Communications Corporation. All Rights Reserved. + * + * Contributors: + * Samir Gehani + */ + + +/*----------------------------------------------------------------------* + * Implements a simple AppleSingle encoder, as described in RFC1740 + * http://andrew2.andrew.cmu.edu/rfc/rfc1740.html + *----------------------------------------------------------------------*/ + +#ifndef macintosh +#error Sorry! This is Mac only functionality! +#endif + +#pragma options align=mac68k + +#ifndef _NS_APPLESINGLEENCODER_H_ +#define _NS_APPLESINGLEENCODER_H_ + +class nsAppleSingleEncoder +{ + +public: + nsAppleSingleEncoder(); + ~nsAppleSingleEncoder(); + + static Boolean HasResourceFork(FSSpecPtr aFile); + OSErr Encode(FSSpecPtr aFile); + OSErr Encode(FSSpecPtr aInFile, FSSpecPtr aOutFile); + + static OSErr FSpGetCatInfo(CInfoPBRec *pb, FSSpecPtr aFile); + +private: + FSSpecPtr mInFile; + FSSpecPtr mOutFile; + FSSpecPtr mTransient; + short mTransRefNum; + + OSErr WriteHeader(); + OSErr WriteEntryDescs(); + OSErr WriteEntries(); + OSErr WriteResourceFork(); + OSErr WriteDataFork(); +}; + +#define kTransientName "\pzz__ASEncoder_TMP__zz" +#define kAppleSingleMagicNum 0x00051600 +#define kAppleSingleVerNum 0x00020000 +#define kNumASEntries 6 +#define kConvertTime 1265437696L + +#define ERR_CHECK(_func) \ + err = _func; \ + if (err != noErr) \ + return err; + +#pragma options align=reset + +#endif /* _NS_APPLESINGLEENCODER_H_ */ + + \ No newline at end of file diff --git a/mozilla/xpinstall/packager/mac/ASEncoder/src/nsEventHandler.cpp b/mozilla/xpinstall/packager/mac/ASEncoder/src/nsEventHandler.cpp new file mode 100644 index 00000000000..aef59692690 --- /dev/null +++ b/mozilla/xpinstall/packager/mac/ASEncoder/src/nsEventHandler.cpp @@ -0,0 +1,233 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* The contents of this file are subject to the Netscape Public License + * Version 1.1 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are Copyright (C) 1999 + * Netscape Communications Corporation. All Rights Reserved. + * + * Contributors: + * Samir Gehani + */ + + +#ifndef _NS_EVENTHANDLER_H_ + #include "nsEventHandler.h" +#endif + +#include "nsASEApp.h" +#include "nsFileSelector.h" +#include "nsAppleSingleEncoder.h" +#include "nsAppleSingleDecoder.h" + +nsEventHandler::nsEventHandler() +{ + +} + +nsEventHandler::~nsEventHandler() +{ + +} + +OSErr +nsEventHandler::HandleNextEvent(EventRecord *aEvt) +{ + OSErr err = noErr; + + mCurrEvent = aEvt; + + switch(aEvt->what) + { + case kHighLevelEvent: + err = AEProcessAppleEvent(aEvt); + if (err != errAEEventNotHandled) + break; + + case mouseDown: + err = HandleMouseDown(); + break; + + case mouseUp: + break; + + case autoKey: + case keyDown: + err = HandleKeyDown(); + break; + + case updateEvt: + err = HandleUpdateEvt(); + break; + + case activateEvt: + err = HandleActivateEvt(); + break; + + case osEvt: + err = HandleOSEvt(); + break; + + case nullEvent: + break; + + default: + break; + } + + return err; +} + +OSErr +nsEventHandler::HandleMouseDown() +{ + OSErr err = noErr; + WindowPtr currWindow; + SInt16 cntlPartCode; + SInt32 menuChoice; + + cntlPartCode = FindWindow(mCurrEvent->where, &currWindow); + switch (cntlPartCode) + { + case inMenuBar: + menuChoice = MenuSelect(mCurrEvent->where); + HandleMenuChoice(menuChoice); + ::InvalMenuBar(); + break; + + default: + break; + } + + return err; +} + +OSErr +nsEventHandler::HandleKeyDown() +{ + OSErr err = noErr; + SInt8 charCode; + SInt32 menuChoice = 0; + + charCode = mCurrEvent->message & charCodeMask; + if ((mCurrEvent->modifiers & cmdKey) != 0) + { + switch (charCode) + { + case 'E': + case 'e': + menuChoice = rMenuFile; + menuChoice <<= 16; + menuChoice |= rMenuItemASEncode; + break; + + case 'D': + case 'd': + menuChoice = rMenuFile; + menuChoice <<= 16; + menuChoice |= rMenuItemASDecode; + break; + + case 'Q': + case 'q': + menuChoice = rMenuFile; + menuChoice <<= 16; + menuChoice |= rMenuItemQuit; + break; + + default: + menuChoice = 0; + break; + } + err = HandleMenuChoice(menuChoice); + } + + return err; +} + +OSErr +nsEventHandler::HandleUpdateEvt() +{ +} + +OSErr +nsEventHandler::HandleActivateEvt() +{ +} + +OSErr +nsEventHandler::HandleOSEvt() +{ + ::HiliteMenu(0); +} + +OSErr +nsEventHandler::HandleInContent() +{ +} + +OSErr +nsEventHandler::HandleMenuChoice(SInt32 aChoice) +{ + OSErr err = noErr; + long menuID = HiWord(aChoice); + long menuItem = LoWord(aChoice); + FSSpec file, outFile; + nsFileSelector selector; + + switch (menuID) + { + case rMenuFile: + switch (menuItem) + { + case rMenuItemASEncode: /* AS Encode... */ + err = selector.SelectFile(&file); + if (err == noErr) + { + if (nsAppleSingleEncoder::HasResourceFork(&file)) + { + nsAppleSingleEncoder encoder; + err = encoder.Encode(&file); + } + } + break; + + case rMenuItemASDecode: /* AS Decode... */ + err = selector.SelectFile(&file); + if (err == noErr) + { + if (nsAppleSingleDecoder::IsAppleSingleFile(&file)) + { + nsAppleSingleDecoder decoder; + err = decoder.Decode(&file, &outFile); + } + } + break; + + case rMenuItemQuit: /* Quit */ + nsASEApp::SetCompletionStatus(true); + break; + } + break; + + case rMenuApple: + if (menuItem == rMenuItemAbout) + ::Alert(rAboutBox, nil); + break; + + default: + break; + } + + return err; +} \ No newline at end of file diff --git a/mozilla/xpinstall/packager/mac/ASEncoder/src/nsEventHandler.h b/mozilla/xpinstall/packager/mac/ASEncoder/src/nsEventHandler.h new file mode 100644 index 00000000000..83ebc692ef6 --- /dev/null +++ b/mozilla/xpinstall/packager/mac/ASEncoder/src/nsEventHandler.h @@ -0,0 +1,47 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* The contents of this file are subject to the Netscape Public License + * Version 1.1 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are Copyright (C) 1999 + * Netscape Communications Corporation. All Rights Reserved. + * + * Contributors: + * Samir Gehani + */ + + +#ifndef _NS_EVENTHANDLER_H_ +#define _NS_EVENTHANDLER_H_ + +class nsEventHandler +{ + +public: + nsEventHandler(); + ~nsEventHandler(); + + OSErr HandleNextEvent(EventRecord *aEvt); + OSErr HandleMouseDown(); + OSErr HandleKeyDown(); + OSErr HandleUpdateEvt(); + OSErr HandleActivateEvt(); + OSErr HandleOSEvt(); + OSErr HandleInContent(); + OSErr HandleMenuChoice(SInt32 aChoice); + +private: + EventRecord *mCurrEvent; +}; + +#endif /* _NS_EVENTHANDLER_H_ */ \ No newline at end of file diff --git a/mozilla/xpinstall/packager/mac/ASEncoder/src/nsFileSelector.cpp b/mozilla/xpinstall/packager/mac/ASEncoder/src/nsFileSelector.cpp new file mode 100644 index 00000000000..251c900c37c --- /dev/null +++ b/mozilla/xpinstall/packager/mac/ASEncoder/src/nsFileSelector.cpp @@ -0,0 +1,176 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* The contents of this file are subject to the Netscape Public License + * Version 1.1 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are Copyright (C) 1999 + * Netscape Communications Corporation. All Rights Reserved. + * + * Contributors: + * Samir Gehani + */ + + +#ifndef _NS_FILESELECTOR_H_ + #include "nsFileSelector.h" +#endif + +#include "nsAppleSingleDecoder.h" + +nsFileSelector::nsFileSelector() +{ + mFile = NULL; +} + +nsFileSelector::~nsFileSelector() +{ + +} + +pascal void +OurNavEventFunction(NavEventCallbackMessage callBackSelector, NavCBRecPtr callBackParms, + NavCallBackUserData callBackUD) +{ + WindowPtr windowPtr; + + windowPtr = (WindowPtr) callBackParms->eventData.eventDataParms.event->message; + if (!windowPtr) + return; + + switch(callBackSelector) + { + case kNavCBEvent: + switch(callBackParms->eventData.eventDataParms.event->what) + { + case updateEvt: + if(((WindowPeek) windowPtr)->windowKind != kDialogWindowKind) + // XXX irrelevant + // HandleUpdateEvt((EventRecord *) callBackParms->eventData.eventDataParms.event); + break; + } + break; + } +} + +OSErr +nsFileSelector::SelectFile(FSSpecPtr aOutFile) +{ + OSErr err = noErr; + NavReplyRecord reply; + NavDialogOptions dlgOpts; + NavEventUPP eventProc; + AEDesc resultDesc, initDesc; + FSSpec tmp; + short cwdVRefNum; + long cwdDirID, len; + + mFile = aOutFile; + + err = NavGetDefaultDialogOptions(&dlgOpts); + len = strlen("Please select a file"); + nsAppleSingleDecoder::PLstrncpy(dlgOpts.message, "\pPlease select a file", len); + eventProc = NewNavEventProc( (ProcPtr) OurNavEventFunction ); + + ERR_CHECK( GetCWD(&cwdDirID, &cwdVRefNum) ); + ERR_CHECK( FSMakeFSSpec(cwdVRefNum, cwdDirID, NULL, &tmp) ); + ERR_CHECK( AECreateDesc(typeFSS, (void*) &tmp, sizeof(FSSpec), &initDesc) ); + + err = NavChooseFile( &initDesc, &reply, &dlgOpts, eventProc, NULL, NULL, NULL, NULL ); + + AEDisposeDesc(&initDesc); + DisposeRoutineDescriptor(eventProc); + + if((reply.validRecord) && (err == noErr)) + { + if((err = AECoerceDesc(&(reply.selection),typeFSS,&resultDesc)) == noErr) + { + BlockMoveData(*resultDesc.dataHandle,&tmp,sizeof(FSSpec)); + /* forces name to get filled */ + FSMakeFSSpec(tmp.vRefNum, tmp.parID, tmp.name, aOutFile); + } + + AEDisposeDesc(&resultDesc); + NavDisposeReply(&reply); + } + + return err; +} + +OSErr +nsFileSelector::SelectFolder(FSSpecPtr aOutFolder) +{ + OSErr err = noErr; + NavReplyRecord reply; + NavDialogOptions dlgOpts; + NavEventUPP eventProc; + AEDesc resultDesc, initDesc; + FSSpec tmp; + short cwdVRefNum; + long cwdDirID, len; + + mFile = aOutFolder; + + err = NavGetDefaultDialogOptions(&dlgOpts); + len = strlen("Please select a folder"); + nsAppleSingleDecoder::PLstrncpy(dlgOpts.message, "\pPlease select a folder", len); + eventProc = NewNavEventProc( (ProcPtr) OurNavEventFunction ); + + ERR_CHECK( GetCWD(&cwdDirID, &cwdVRefNum) ); + ERR_CHECK( FSMakeFSSpec(cwdVRefNum, cwdDirID, NULL, &tmp) ); + ERR_CHECK( AECreateDesc(typeFSS, (void*) &tmp, sizeof(FSSpec), &initDesc) ); + + err = NavChooseFolder( &initDesc, &reply, &dlgOpts, eventProc, NULL, NULL ); + + AEDisposeDesc(&initDesc); + DisposeRoutineDescriptor(eventProc); + + if((reply.validRecord) && (err == noErr)) + { + if((err = AECoerceDesc(&(reply.selection),typeFSS,&resultDesc)) == noErr) + { + BlockMoveData(*resultDesc.dataHandle,&tmp,sizeof(FSSpec)); + /* forces name to get filled */ + FSMakeFSSpec(tmp.vRefNum, tmp.parID, tmp.name, aOutFolder); + } + + AEDisposeDesc(&resultDesc); + NavDisposeReply(&reply); + } + + return err; +} + +OSErr +nsFileSelector::GetCWD(long *aOutDirID, short *aOutVRefNum) +{ + OSErr err = noErr; + ProcessSerialNumber psn; + ProcessInfoRec pInfo; + FSSpec tmp; + + /* get cwd based on curr ps info */ + if (!(err = GetCurrentProcess(&psn))) + { + pInfo.processName = nil; + pInfo.processAppSpec = &tmp; + pInfo.processInfoLength = (sizeof(ProcessInfoRec)); + + if(!(err = GetProcessInformation(&psn, &pInfo))) + { + *aOutDirID = pInfo.processAppSpec->parID; + *aOutVRefNum = pInfo.processAppSpec->vRefNum; + } + } + + return err; +} \ No newline at end of file diff --git a/mozilla/xpinstall/packager/mac/ASEncoder/src/nsFileSelector.h b/mozilla/xpinstall/packager/mac/ASEncoder/src/nsFileSelector.h new file mode 100644 index 00000000000..7dcffaaede9 --- /dev/null +++ b/mozilla/xpinstall/packager/mac/ASEncoder/src/nsFileSelector.h @@ -0,0 +1,50 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* The contents of this file are subject to the Netscape Public License + * Version 1.1 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Mozilla Communicator client code, released March + * 31, 1998. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are Copyright (C) 1999 + * Netscape Communications Corporation. All Rights Reserved. + * + * Contributors: + * Samir Gehani + */ + + +#ifndef _NS_FILESELECTOR_H_ +#define _NS_FILESELECTOR_H_ + +#include + +class nsFileSelector +{ + +public: + nsFileSelector(); + ~nsFileSelector(); + + OSErr SelectFile(FSSpecPtr aOutFile); + OSErr SelectFolder(FSSpecPtr aOutFolder); + +private: + OSErr GetCWD(long *aOutDirID, short *aOutVRefNum); + + FSSpecPtr mFile; +}; + +#define ERR_CHECK(_func) \ + err = _func; \ + if (err != noErr) \ + return err; + +#endif _NS_FILESELECTOR_H_ \ No newline at end of file