зеркало из https://github.com/mozilla/gecko-dev.git
203 строки
6.8 KiB
C++
203 строки
6.8 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
*
|
|
* The contents of this file are subject to the Netscape Public License
|
|
* Version 1.0 (the "NPL"); you may not use this file except in
|
|
* compliance with the NPL. You may obtain a copy of the NPL at
|
|
* http://www.mozilla.org/NPL/
|
|
*
|
|
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
|
* for the specific language governing rights and limitations under the
|
|
* NPL.
|
|
*
|
|
* The Initial Developer of this code under the NPL is Netscape
|
|
* Communications Corporation. Portions created by Netscape are
|
|
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
|
* Reserved.
|
|
*/
|
|
|
|
|
|
#ifndef FSFILE_H
|
|
#define FSFILE_H
|
|
|
|
#ifdef EDITOR
|
|
|
|
#include "xp.h"
|
|
#include "xp_file.h"
|
|
#include "streams.h"
|
|
#include "bits.h" // mac seems to need it for garray.h to work. hardts
|
|
#include "garray.h"
|
|
|
|
// Same as TXP_GrowableArray_pChar
|
|
Declare_GrowableArray(char,char*) // TXP_GrowableArray_char
|
|
|
|
Declare_GrowableArray(CStreamOutFile,CStreamOutFile *) // TXP_GrowableArray_CStreamOutFile
|
|
|
|
class CFileBackup;
|
|
Declare_GrowableArray(CFileBackup,CFileBackup *) // TXP_GrowableArray_CFileBackup
|
|
|
|
//-----------------------------------------------------------------------
|
|
// File based version of ITapeFileSystem
|
|
//-----------------------------------------------------------------------
|
|
|
|
|
|
class CTapeFSFile: public ITapeFileSystem {
|
|
public:
|
|
// Give the directory where everything will be saved.
|
|
CTapeFSFile(char *pDestPathURL,char *pDestURL);
|
|
virtual ~CTapeFSFile();
|
|
|
|
virtual intn GetType();
|
|
|
|
virtual void SetSourceBaseURL( char* pURL );
|
|
|
|
// See ITapeFileSystem::AddFile().
|
|
virtual intn AddFile( char* pURL, char *pMIMEType, int16 iDocCharSetID );
|
|
|
|
virtual intn GetNumFiles() {return m_srcURLs.Size();}
|
|
|
|
// Simply returns the URL given in AddFile(). Allocated with XP_STRDUP().
|
|
virtual char* GetSourceURL(intn iFileIndex);
|
|
|
|
virtual char* GetDestAbsURL();
|
|
|
|
// iFileIndex must be in {0...GetNumFiles()-1}
|
|
// Returns URL relative to document, i.e. just the stripped local file name.
|
|
virtual char* GetDestURL( intn iFileIndex );
|
|
virtual char* GetHumanName( intn iFileIndex ) {return GetDestURL(iFileIndex);}
|
|
|
|
virtual char* GetDestPathURL();
|
|
|
|
virtual XP_Bool IsLocalPersistentFile(intn iFileIndex);
|
|
|
|
virtual XP_Bool FileExists(intn iFileIndex);
|
|
|
|
// Save old file first.
|
|
virtual IStreamOut *OpenStream( intn iFileIndex );
|
|
|
|
virtual void CloseStream( intn iFileIndex );
|
|
|
|
virtual void Complete( XP_Bool bSuccess,
|
|
EDT_ITapeFileSystemComplete *complete, void *pArg );
|
|
|
|
void CopyURLInfo(intn iFileIndex, const URL_Struct *pURL);
|
|
|
|
protected:
|
|
// Can be NULL.
|
|
char *m_pSrcBaseURL;
|
|
// These are absolute URLs.
|
|
TXP_GrowableArray_char m_srcURLs;
|
|
// All dest filenames relative to pDestPathURL, which is a directory.
|
|
char *m_pDestPathURL;
|
|
// The destination filename for the root HTML document. Should be file:// url.
|
|
char *m_pDestURL;
|
|
// relative filenames
|
|
TXP_GrowableArray_char m_destFilenames;
|
|
|
|
TXP_GrowableArray_CStreamOutFile m_streamOuts;
|
|
TXP_GrowableArray_CFileBackup m_fileBackups;
|
|
};
|
|
|
|
//-----------------------------------------------------------------------
|
|
// HTTP/FTP publish based version of ITapeFileSystem
|
|
// Similar to CTapeFSFile because it writes to temporary files,
|
|
// then publishes.
|
|
//-----------------------------------------------------------------------
|
|
class CTapeFSPublish: public ITapeFileSystem {
|
|
public:
|
|
// Important: If pRemoteURL is a directory, it must end with a slash.
|
|
// pUsername and pPassword may be NULL.
|
|
CTapeFSPublish(MWContext *, char *pRemoteURL, char *pUsername, char *pPassword,
|
|
char *pTempDir); // where to put temp files, in xpURL format, ends in slash.
|
|
virtual ~CTapeFSPublish();
|
|
|
|
virtual intn GetType();
|
|
|
|
virtual void SetSourceBaseURL( char* pURL );
|
|
|
|
// See ITapeFileSystem::AddFile().
|
|
virtual intn AddFile( char* pURL, char *pMIMEType, int16 iDocCharSetID );
|
|
|
|
virtual intn GetNumFiles() {return m_srcURLs.Size();}
|
|
|
|
// Simply returns the URL given in AddFile(). Allocated with XP_STRDUP().
|
|
virtual char* GetSourceURL(intn iFileIndex);
|
|
|
|
virtual char* GetDestAbsURL();
|
|
|
|
char *GetUsername();
|
|
char *GetPassword();
|
|
|
|
// iFileIndex must be in {0...GetNumFiles()-1}
|
|
// Returns URL relative to document, i.e. just the stripped local file name.
|
|
virtual char* GetDestURL( intn iFileIndex );
|
|
virtual char* GetHumanName( intn iFileIndex ) {return GetDestURL(iFileIndex);}
|
|
|
|
// Returns the directory on the remote server (with trailing slash) where the document will
|
|
// be published. Does not contain username or password info.
|
|
// E.g. http://the_machine/the_directory/ not http://username:password@the_machine/the_directory/
|
|
virtual char* GetDestPathURL();
|
|
|
|
virtual XP_Bool IsLocalPersistentFile(intn iFileIndex);
|
|
|
|
virtual XP_Bool FileExists(intn /* iFileIndex */ ) {return FALSE;}
|
|
|
|
// Save old file first.
|
|
virtual IStreamOut *OpenStream( intn iFileIndex );
|
|
|
|
virtual void CloseStream( intn iFileIndex );
|
|
|
|
// Calls Net_PublishFiles().
|
|
virtual void Complete( XP_Bool bSuccess,
|
|
EDT_ITapeFileSystemComplete *pfComplete, void *pArg );
|
|
|
|
XP_Bool Verify() {return m_iVerifier == iVerifierKey;}
|
|
|
|
void CopyURLInfo(intn iFileIndex, const URL_Struct *pURL);
|
|
|
|
public:
|
|
// These are just here to pass data to edt_CTapeFSExit().
|
|
EDT_ITapeFileSystemComplete *m_pfComplete;
|
|
void *m_pArg;
|
|
|
|
private:
|
|
int32 m_iVerifier;
|
|
static int32 iVerifierKey;
|
|
|
|
// Makes a new url pointing to a file in the same directory as baseURL, baseURL may also be a
|
|
// directory, e.g. http://home.netscape.com/
|
|
// Uses srcURL to choose the name and returns an absolute URL.
|
|
char *makeLocal(char *baseURL, char *srcURL);
|
|
|
|
// For call to NET_PublishFiles.
|
|
MWContext *m_pMWContext;
|
|
|
|
// Can be NULL.
|
|
char *m_pSrcBaseURL;
|
|
|
|
// These are absolute URLs.
|
|
TXP_GrowableArray_char m_srcURLs;
|
|
|
|
// final location of the HTML file
|
|
char *m_pRemoteURL; // {http,ftp}://location
|
|
char *m_pUsername;
|
|
char *m_pPassword;
|
|
|
|
// final locations of all the files. Note that element 0 will be a copy of m_pRemoteURL.
|
|
// These contain username:password information.
|
|
TXP_GrowableArray_char m_remoteURLs;
|
|
|
|
char *m_pTempDir; // xpURL format.
|
|
// Absolute platform specific filenames. The temp files.
|
|
TXP_GrowableArray_char m_tempFilenames;
|
|
|
|
// Streams to write to temp files.
|
|
TXP_GrowableArray_CStreamOutFile m_streamOuts;
|
|
|
|
// TRUE if http, FALSE if ftp
|
|
XP_Bool m_bIsHTTP;
|
|
};
|
|
|
|
#endif // EDITOR
|
|
#endif
|