Back to index

lightning-sunbird  0.9+nobinonly
nsAppleSingleEncoder.h
Go to the documentation of this file.
00001 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
00002 /* ***** BEGIN LICENSE BLOCK *****
00003  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
00004  *
00005  * The contents of this file are subject to the Mozilla Public License Version
00006  * 1.1 (the "License"); you may not use this file except in compliance with
00007  * the License. You may obtain a copy of the License at
00008  * http://www.mozilla.org/MPL/
00009  *
00010  * Software distributed under the License is distributed on an "AS IS" basis,
00011  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
00012  * for the specific language governing rights and limitations under the
00013  * License.
00014  *
00015  * The Original Code is Mozilla Communicator client code, released
00016  * March 31, 1998.
00017  *
00018  * The Initial Developer of the Original Code is
00019  * Netscape Communications Corporation.
00020  * Portions created by the Initial Developer are Copyright (C) 1999
00021  * the Initial Developer. All Rights Reserved.
00022  *
00023  * Contributor(s):
00024  *   Samir Gehani <sgehani@netscape.com>
00025  *
00026  * Alternatively, the contents of this file may be used under the terms of
00027  * either of the GNU General Public License Version 2 or later (the "GPL"),
00028  * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
00029  * in which case the provisions of the GPL or the LGPL are applicable instead
00030  * of those above. If you wish to allow use of your version of this file only
00031  * under the terms of either the GPL or the LGPL, and not to allow others to
00032  * use your version of this file under the terms of the MPL, indicate your
00033  * decision by deleting the provisions above and replace them with the notice
00034  * and other provisions required by the GPL or the LGPL. If you do not delete
00035  * the provisions above, a recipient may use your version of this file under
00036  * the terms of any one of the MPL, the GPL or the LGPL.
00037  *
00038  * ***** END LICENSE BLOCK ***** */
00039 
00040 
00041 /*----------------------------------------------------------------------*
00042  *   Implements a simple AppleSingle encoder, as described in RFC1740 
00043  *      http://andrew2.andrew.cmu.edu/rfc/rfc1740.html
00044  *----------------------------------------------------------------------*/
00045 
00046 #ifndef macintosh
00047 #error Sorry! This is Mac only functionality!
00048 #endif
00049 
00050 #pragma options align=mac68k
00051  
00052 #ifndef _NS_APPLESINGLEENCODER_H_
00053 #define _NS_APPLESINGLEENCODER_H_
00054 
00055 #include <MacTypes.h>
00056 #include <Files.h>
00057 
00058 class nsAppleSingleEncoder
00059 {
00060 
00061 public:
00062        nsAppleSingleEncoder();
00063        ~nsAppleSingleEncoder();
00064        
00065        static Boolean              HasResourceFork(FSSpecPtr aFile);
00066        OSErr                       Encode(FSSpecPtr aFile);
00067        OSErr                       Encode(FSSpecPtr aInFile, FSSpecPtr aOutFile);
00068        OSErr                       EncodeFolder(FSSpecPtr aFolder);
00069        void                        ReInit();
00070        
00071        static OSErr         FSpGetCatInfo(CInfoPBRec *pb, FSSpecPtr aFile);
00072        
00073 private:
00074        FSSpecPtr                   mInFile;
00075        FSSpecPtr                   mOutFile;
00076        FSSpecPtr                   mTransient;
00077        short                       mTransRefNum;
00078        
00079        OSErr                       WriteHeader();
00080        OSErr                       WriteEntryDescs();
00081        OSErr                       WriteEntries();
00082        OSErr                       WriteResourceFork();
00083        OSErr                       WriteDataFork();
00084 };
00085 
00086 #ifdef __cplusplus
00087 extern "C" {
00088 #endif
00089 
00090 pascal void
00091 EncodeDirIterateFilter(const CInfoPBRec * const cpbPtr, Boolean *quitFlag, void *yourDataPtr);
00092 
00093 #ifdef __cplusplus
00094 }
00095 #endif
00096 
00097 #define kTransientName                    "\pzz__ASEncoder_TMP__zz"
00098 #define kAppleSingleMagicNum       0x00051600
00099 #define kAppleSingleVerNum         0x00020000
00100 #define kNumASEntries                     6
00101 #define kConvertTime                      1265437696L
00102 
00103 #define ERR_CHECK(_func)                  \
00104                      err = _func;                \
00105                      if (err != noErr)           \
00106                             return err;
00107 
00108 #pragma options align=reset
00109 
00110 #endif /* _NS_APPLESINGLEENCODER_H_ */
00111 
00112