diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 (patch) | |
tree | 67208f7c145782a7e90b123b982ca78d88cc2c87 /mimelib/mimelib/binhex.h | |
download | tdepim-460c52653ab0dcca6f19a4f492ed2c5e4e963ab0.tar.gz tdepim-460c52653ab0dcca6f19a4f492ed2c5e4e963ab0.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'mimelib/mimelib/binhex.h')
-rw-r--r-- | mimelib/mimelib/binhex.h | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/mimelib/mimelib/binhex.h b/mimelib/mimelib/binhex.h new file mode 100644 index 00000000..468dcfd7 --- /dev/null +++ b/mimelib/mimelib/binhex.h @@ -0,0 +1,159 @@ +//============================================================================= +// File: binhex.h +// Contents: Declarations for DwBinhex +// Maintainer: Doug Sauder <dwsauder@fwb.gulf.net> +// WWW: http://www.fwb.gulf.net/~dwsauder/mimepp.html +// +// Copyright (c) 1996, 1997 Douglas W. Sauder +// All rights reserved. +// +// IN NO EVENT SHALL DOUGLAS W. SAUDER BE LIABLE TO ANY PARTY FOR DIRECT, +// INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF +// THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF DOUGLAS W. SAUDER +// HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// DOUGLAS W. SAUDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT +// NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +// PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" +// BASIS, AND DOUGLAS W. SAUDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, +// SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. +// +//============================================================================= + +#ifndef DW_BINHEX_H +#define DW_BINHEX_H + +#ifndef DW_CONFIG_H +#include <mimelib/config.h> +#endif + +#ifndef DW_STRING_H +#include <mimelib/string.h> +#endif + +//============================================================================= +//+ Name DwBinhex -- Class for converting files to or from Binhex 4.0 format +//+ Description +//. {\tt DwBinhex} converts data to or from Binhex 4.0 format. Binhex is a +//. format used almost exclusively on Macintosh computers for encoding +//. files into text characters for transmission through the mail transport +//. system or for archiving on non-Macintosh systems. The format includes +//. the file name, file type, file creator, Macintosh Finder flags, data fork, +//. resource fork, and checksums. In MIME, the use of Binhex is deprecated; +//. applesingle and appledouble are the preferred format for encoding +//. Macintosh files. The Binhex 4.0 format is described in RFC-1741. +//. Binhex is a widely used, {\it de facto} standard, but it is not an +//. official Internet standard. +//. +//. To use {\tt DwBinhex} for converting a Macintosh file to Binex format, +//. call the member functions {\tt SetFileName()}, {\tt SetFileType()}, +//. {\tt SetFileCreator()}, {\tt SetFlag1()}, {\tt SetFlag2()}, +//. {\tt SetDataFork()}, and {\tt SetResourceFork()} to set the elements +//. to be encoded. Any elements that are not set by calling one of the +//. member functions are assigned reasonable defaults. Then call the +//. {\tt Encode()} member function to actually perform the conversion to +//. Binhex. Finally, call {\tt BinhexChars()} to retrieve the Binhex +//. characters. +//. +//. To use {\tt DwBinhex} for converting a Macintosh file from Binhex format, +//. call the member function {\tt SetBinhexChars()} to assign the Binhex +//. characters to be converted. Then call {\tt Decode()} to actually +//. perform the conversion. Finally, call {\tt FileName()}, {\tt FileType()}, +//. {\tt FileCreator()}, {\tt Flag1()}, {\tt Flag2()}, {\tt DataFork()}, +//. and {\tt ResourceFork()} to extract the decoded elements. +//. +//. Note: {\tt DwBinhex} does not change the file name in any way. When you +//. you are dealing with file names, you should be aware of the fact that +//. some filenames that are valid on a Macintosh may cause problems or +//. unexpected results on a non-Macintosh system, and vice versa. Such +//. problem characters include slash ('/'), colon (':'), space and possibly +//. other characters. +//============================================================================= +// Last modified 1997-08-25 +//+ Noentry ~DwBinhex + + +class DW_EXPORT DwBinhex { + +public: + + DwBinhex(); + //. This is the default constructor. + + virtual ~DwBinhex(); + + void Initialize(); + //. Resets the object's internal state to its initial state. Call + //. this member function to reuse the object for more than one encode + //. or decode operation. + + const char* FileName() const; + void SetFileName(const char* aName); + //. Gets or sets the file name. The file name is restricted + //. to a maximum length of 63 characters. + + void FileType(char* aBuf) const; + void SetFileType(const char* aType); + //. Gets or sets the file type. All Macintosh files have a file type, + //. which is represented by four bytes. Some examples include "TEXT" + //. for a text file, or "APPL" for an application. {\tt aBuf} should + //. point to an array of at least four characters. + + void FileCreator(char* aBuf) const; + void SetFileCreator(const char* aType); + //. Gets or sets the file creator. Most Macintosh files have a creator, + //. which is represented by a signature of four bytes. The creator + //. specifies which application to launch when a file's icon is double + //. clicked. {\tt aBuf} should point to an array of at least four + //. characters. + + DwUint8 Flag1() const; + void SetFlag1(DwUint8 aFlag); + //. Gets or sets the first byte of the Macintosh Finder flags. For + //. files that originate on non-Macintosh systems, this byte should + //. be set to zero (the default). + + DwUint8 Flag2() const; + void SetFlag2(DwUint8 aFlag); + //. Gets or sets the second byte of the Macintosh Finder flags. For + //. files that originate on non-Macintosh systems, this byte should + //. be set to zero (the default). + + const DwString& DataFork() const; + void SetDataFork(const DwString& aStr); + //. Gets or sets the data fork for the file. For files that originate + //. on non-Macintosh systems, such as a GIF or JPEG file, the file data + //. should be set as the data fork. + + const DwString& ResourceFork() const; + void SetResourceFork(const DwString& aStr); + //. Gets or sets the resource fork for the file. For files that originate + //. on non-Macintosh systems, such as a GIF or JPEG file, the resource + //. should be normally be empty. + + const DwString& BinhexChars() const; + void SetBinhexChars(const DwString& aStr); + //. Gets or sets the characters of the Binhex encoded file. + + void Encode(); + //. Converts the Macintosh file information to Binhex format. + + int Decode(); + //. Converts the Macintosh file information from Binhex format. Returns + //. zero if the decode operation completes successufully; otherwise, + //. the function returns -1. + +private: + + char mFileName[64]; + char mFileType[8]; + char mFileCreator[8]; + DwUint8 mFlag1; + DwUint8 mFlag2; + DwString mDataFork; + DwString mResourceFork; + DwString mBinhexChars; + +}; + +#endif |