Back to index

lightning-sunbird  0.9+nobinonly
nsMsgEncoders.cpp
Go to the documentation of this file.
00001 /* -*- Mode: C++; tab-width: 2; 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.org code.
00016  *
00017  * The Initial Developer of the Original Code is
00018  * Netscape Communications Corporation.
00019  * Portions created by the Initial Developer are Copyright (C) 1998
00020  * the Initial Developer. All Rights Reserved.
00021  *
00022  * Contributor(s):
00023  *   Pierre Phaneuf <pp@ludusdesign.com>
00024  *
00025  * Alternatively, the contents of this file may be used under the terms of
00026  * either of the GNU General Public License Version 2 or later (the "GPL"),
00027  * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
00028  * in which case the provisions of the GPL or the LGPL are applicable instead
00029  * of those above. If you wish to allow use of your version of this file only
00030  * under the terms of either the GPL or the LGPL, and not to allow others to
00031  * use your version of this file under the terms of the MPL, indicate your
00032  * decision by deleting the provisions above and replace them with the notice
00033  * and other provisions required by the GPL or the LGPL. If you do not delete
00034  * the provisions above, a recipient may use your version of this file under
00035  * the terms of any one of the MPL, the GPL or the LGPL.
00036  *
00037  * ***** END LICENSE BLOCK ***** */
00038 #include "prprf.h"
00039 #include "prmem.h"
00040 #include "nsCOMPtr.h"
00041 #include "nsIStringBundle.h"
00042 #include "nsMsgComposeStringBundle.h"
00043 #include "nsIServiceManager.h"
00044 #include "nsMsgMimeCID.h"
00045 #include "nsIMimeConverter.h"
00046 
00047 extern "C" MimeEncoderData *
00048 MIME_B64EncoderInit(nsresult (*output_fn) (const char *buf, PRInt32 size, void *closure), void *closure) 
00049 {
00050   MimeEncoderData *returnEncoderData = nsnull;
00051   nsIMimeConverter *converter;
00052   nsresult res = CallCreateInstance(NS_MIME_CONVERTER_CONTRACTID, &converter);
00053   if (NS_SUCCEEDED(res) && nsnull != converter) 
00054   {
00055     res = converter->B64EncoderInit(output_fn, closure, &returnEncoderData);
00056     NS_RELEASE(converter);
00057   }
00058   return NS_SUCCEEDED(res) ? returnEncoderData : nsnull;
00059 }
00060 
00061 extern "C" MimeEncoderData *       
00062 MIME_QPEncoderInit(nsresult (*output_fn) (const char *buf, PRInt32 size, void *closure), void *closure) 
00063 {
00064   MimeEncoderData *returnEncoderData = nsnull;
00065   nsIMimeConverter *converter;
00066   nsresult res = CallCreateInstance(NS_MIME_CONVERTER_CONTRACTID, &converter);
00067   if (NS_SUCCEEDED(res) && nsnull != converter) 
00068   {
00069     res = converter->QPEncoderInit(output_fn, closure, &returnEncoderData);
00070     NS_RELEASE(converter);
00071   }
00072   return NS_SUCCEEDED(res) ? returnEncoderData : nsnull;
00073 }
00074 
00075 extern "C" MimeEncoderData *       
00076 MIME_UUEncoderInit(char *filename, nsresult (*output_fn) (const char *buf, PRInt32 size, void *closure), void *closure) 
00077 {
00078   MimeEncoderData *returnEncoderData = nsnull;
00079   nsIMimeConverter *converter;
00080   nsresult res = CallCreateInstance(NS_MIME_CONVERTER_CONTRACTID, &converter);
00081   if (NS_SUCCEEDED(res) && nsnull != converter) 
00082   {
00083     res = converter->UUEncoderInit(filename, output_fn, closure, &returnEncoderData);
00084     NS_RELEASE(converter);
00085   }
00086   return NS_SUCCEEDED(res) ? returnEncoderData : nsnull;
00087 }
00088 
00089 extern "C" nsresult
00090 MIME_EncoderDestroy(MimeEncoderData *data, PRBool abort_p) 
00091 {
00092   //MimeEncoderData *returnEncoderData = nsnull;
00093   nsIMimeConverter *converter;
00094   nsresult res = CallCreateInstance(NS_MIME_CONVERTER_CONTRACTID, &converter);
00095   if (NS_SUCCEEDED(res) && nsnull != converter) 
00096   {
00097     res = converter->EncoderDestroy(data, abort_p);
00098     NS_RELEASE(converter);
00099   }
00100 
00101   return NS_SUCCEEDED(res) ? 0 : -1;
00102 }
00103 
00104 extern "C" nsresult
00105 MIME_EncoderWrite(MimeEncoderData *data, const char *buffer, PRInt32 size) 
00106 {
00107   //  MimeEncoderData *returnEncoderData = nsnull;
00108   nsIMimeConverter *converter;
00109   PRInt32 written = 0;
00110   nsresult res = CallCreateInstance(NS_MIME_CONVERTER_CONTRACTID, &converter);
00111   if (NS_SUCCEEDED(res) && nsnull != converter) {
00112     res = converter->EncoderWrite(data, buffer, size, &written);
00113     NS_RELEASE(converter);
00114   }
00115   return NS_SUCCEEDED(res) ? 0 : -1;
00116 }