diff --git a/mozilla/xpinstall/src/nsInstallFileOpEnums.h b/mozilla/xpinstall/src/nsInstallFileOpEnums.h new file mode 100644 index 00000000000..20be4843ac0 --- /dev/null +++ b/mozilla/xpinstall/src/nsInstallFileOpEnums.h @@ -0,0 +1,38 @@ +/* -*- 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.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 nsInstallFileOpEnums_h__ +#define nsInstallFileOpEnums_h__ + +typedef enum nsInstallFileOpEnums { + NS_FOP_DIR_CREATE = 0, + NS_FOP_DIR_REMOVE = 1, + NS_FOP_DIR_RENAME = 2, + NS_FOP_FILE_COPY = 3, + NS_FOP_FILE_DELETE = 4, + NS_FOP_FILE_EXECUTE = 5, + NS_FOP_FILE_MOVE = 6, + NS_FOP_FILE_RENAME = 7, + NS_FOP_WIN_SHORTCUT_CREATE = 8, + NS_FOP_MAC_ALIAS_CREATE = 9, + NS_FOP_UNIX_LINK_CREATE = 10, + NS_FOP_FILE_SET_STAT = 11 + +} nsInstallFileOpEnums; + +#endif /* nsInstallFileOpEnums_h__ */ diff --git a/mozilla/xpinstall/src/nsInstallFileOpItem.cpp b/mozilla/xpinstall/src/nsInstallFileOpItem.cpp new file mode 100644 index 00000000000..94ea7b260c7 --- /dev/null +++ b/mozilla/xpinstall/src/nsInstallFileOpItem.cpp @@ -0,0 +1,316 @@ +/* -*- 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.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. + */ + +#include "nspr.h" +#include "nsInstall.h" +#include "nsInstallFileOpEnums.h" +#include "nsInstallFileOpItem.h" + +/* Public Methods */ + +nsInstallFileOpItem::nsInstallFileOpItem(nsInstall* aInstallObj, + PRInt32 aCommand, + nsFileSpec& aTarget, + PRInt32 aFlags, + PRInt32* aReturn) +:nsInstallObject(aInstallObj) +{ + mIObj = aInstallObj; + mCommand = aCommand; + mFlags = aFlags; + mSrc = nsnull; + mParams = nsnull; + mTarget = new nsFileSpec(aTarget); + + *aReturn = NS_OK; +} + +nsInstallFileOpItem::nsInstallFileOpItem(nsInstall* aInstallObj, + PRInt32 aCommand, + nsFileSpec& aSrc, + nsFileSpec& aTarget, + PRInt32* aReturn) +:nsInstallObject(aInstallObj) +{ + mIObj = aInstallObj; + mCommand = aCommand; + mFlags = 0; + mSrc = new nsFileSpec(aSrc); + mParams = nsnull; + mTarget = new nsFileSpec(aTarget); + + *aReturn = NS_OK; +} + +nsInstallFileOpItem::nsInstallFileOpItem(nsInstall* aInstallObj, + PRInt32 aCommand, + nsFileSpec& aTarget, + PRInt32* aReturn) +:nsInstallObject(aInstallObj) +{ + mIObj = aInstallObj; + mCommand = aCommand; + mFlags = 0; + mSrc = nsnull; + mParams = nsnull; + mTarget = new nsFileSpec(aTarget); + + *aReturn = NS_OK; +} + +nsInstallFileOpItem::nsInstallFileOpItem(nsInstall* aInstallObj, + PRInt32 aCommand, + nsFileSpec& aTarget, + nsString& aParams, + PRInt32* aReturn) +:nsInstallObject(aInstallObj) +{ + mIObj = aInstallObj; + mCommand = aCommand; + mFlags = 0; + mSrc = nsnull; + mParams = new nsString(aParams); + mTarget = new nsFileSpec(aTarget); + + *aReturn = NS_OK; +} + +nsInstallFileOpItem::~nsInstallFileOpItem() +{ + if(mSrc) + delete mSrc; + if(mTarget) + delete mTarget; +} + +PRInt32 nsInstallFileOpItem::Complete() +{ + PRInt32 aReturn = NS_OK; + + switch(mCommand) + { + case NS_FOP_DIR_CREATE: + NativeFileOpDirCreate(mTarget); + break; + case NS_FOP_DIR_REMOVE: + NativeFileOpDirRemove(mTarget, mFlags); + break; + case NS_FOP_DIR_RENAME: + NativeFileOpDirRename(mSrc, mTarget); + break; + case NS_FOP_FILE_COPY: + NativeFileOpFileCopy(mSrc, mTarget); + break; + case NS_FOP_FILE_DELETE: + NativeFileOpFileDelete(mTarget, mFlags); + break; + case NS_FOP_FILE_EXECUTE: + NativeFileOpFileExecute(mTarget, mParams); + break; + case NS_FOP_FILE_MOVE: + NativeFileOpFileMove(mSrc, mTarget); + break; + case NS_FOP_FILE_RENAME: + NativeFileOpFileRename(mSrc, mTarget); + break; + case NS_FOP_WIN_SHORTCUT_CREATE: + NativeFileOpWinShortcutCreate(); + break; + case NS_FOP_MAC_ALIAS_CREATE: + NativeFileOpMacAliasCreate(); + break; + case NS_FOP_UNIX_LINK_CREATE: + NativeFileOpUnixLinkCreate(); + break; + } + return aReturn; +} + +float nsInstallFileOpItem::GetInstallOrder() +{ + return 3; +} + +char* nsInstallFileOpItem::toString() +{ + nsString result; + char* resultCString; + + switch(mCommand) + { + case NS_FOP_FILE_COPY: + result = "Copy file: "; + result.Append(mSrc->GetNativePathCString()); + result.Append(" to "); + result.Append(mTarget->GetNativePathCString()); + resultCString = result.ToNewCString(); + break; + case NS_FOP_FILE_DELETE: + result = "Delete file: "; + result.Append(mTarget->GetNativePathCString()); + resultCString = result.ToNewCString(); + break; + case NS_FOP_FILE_MOVE: + result = "Move file: "; + result.Append(mSrc->GetNativePathCString()); + result.Append(" to "); + result.Append(mTarget->GetNativePathCString()); + resultCString = result.ToNewCString(); + break; + case NS_FOP_FILE_RENAME: + result = "Rename file: "; + result.Append(mTarget->GetNativePathCString()); + resultCString = result.ToNewCString(); + break; + case NS_FOP_DIR_CREATE: + result = "Create Folder: "; + result.Append(mTarget->GetNativePathCString()); + resultCString = result.ToNewCString(); + break; + case NS_FOP_DIR_REMOVE: + result = "Remove Folder: "; + result.Append(mTarget->GetNativePathCString()); + resultCString = result.ToNewCString(); + break; + case NS_FOP_WIN_SHORTCUT_CREATE: + break; + case NS_FOP_MAC_ALIAS_CREATE: + break; + case NS_FOP_UNIX_LINK_CREATE: + break; + case NS_FOP_FILE_SET_STAT: + result = "Set file stat: "; + result.Append(mTarget->GetNativePathCString()); + resultCString = result.ToNewCString(); + break; + default: + result = "Unkown file operation command!"; + resultCString = result.ToNewCString(); + break; + } + return resultCString; +} + +PRInt32 nsInstallFileOpItem::Prepare() +{ + return NULL; +} + +void nsInstallFileOpItem::Abort() +{ +} + +/* Private Methods */ + +/* CanUninstall +* InstallFileOpItem() does not install any files which can be uninstalled, +* hence this function returns false. +*/ +PRBool +nsInstallFileOpItem::CanUninstall() +{ + return FALSE; +} + +/* RegisterPackageNode +* InstallFileOpItem() does notinstall files which need to be registered, +* hence this function returns false. +*/ +PRBool +nsInstallFileOpItem::RegisterPackageNode() +{ + return FALSE; +} + +// +// File operation functions begin here +// +PRInt32 +nsInstallFileOpItem::NativeFileOpDirCreate(nsFileSpec* aTarget) +{ + aTarget->CreateDirectory(); + return NS_OK; +} + +PRInt32 +nsInstallFileOpItem::NativeFileOpDirRemove(nsFileSpec* aTarget, PRInt32 aFlags) +{ + aTarget->Delete(aFlags); + return NS_OK; +} + +PRInt32 +nsInstallFileOpItem::NativeFileOpDirRename(nsFileSpec* aSrc, nsFileSpec* aTarget) +{ + aSrc->Rename(*aTarget); + return NS_OK; +} + +PRInt32 +nsInstallFileOpItem::NativeFileOpFileCopy(nsFileSpec* aSrc, nsFileSpec* aTarget) +{ + aSrc->Copy(*aTarget); + return NS_OK; +} + +PRInt32 +nsInstallFileOpItem::NativeFileOpFileDelete(nsFileSpec* aTarget, PRInt32 aFlags) +{ + aTarget->Delete(aFlags); + return NS_OK; +} + +PRInt32 +nsInstallFileOpItem::NativeFileOpFileExecute(nsFileSpec* aTarget, nsString* aParams) +{ + aTarget->Execute(*aParams); + return NS_OK; +} + +PRInt32 +nsInstallFileOpItem::NativeFileOpFileMove(nsFileSpec* aSrc, nsFileSpec* aTarget) +{ + aSrc->Move(*aTarget); + return NS_OK; +} + +PRInt32 +nsInstallFileOpItem::NativeFileOpFileRename(nsFileSpec* aSrc, nsFileSpec* aTarget) +{ + aSrc->Rename(*aTarget); + return NS_OK; +} + +PRInt32 +nsInstallFileOpItem::NativeFileOpWinShortcutCreate() +{ + return NS_OK; +} + +PRInt32 +nsInstallFileOpItem::NativeFileOpMacAliasCreate() +{ + return NS_OK; +} + +PRInt32 +nsInstallFileOpItem::NativeFileOpUnixLinkCreate() +{ + return NS_OK; +} + diff --git a/mozilla/xpinstall/src/nsInstallFileOpItem.h b/mozilla/xpinstall/src/nsInstallFileOpItem.h new file mode 100644 index 00000000000..a39985e97d5 --- /dev/null +++ b/mozilla/xpinstall/src/nsInstallFileOpItem.h @@ -0,0 +1,111 @@ +/* -*- 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.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 nsInstallFileOpItem_h__ +#define nsInstallFileOpItem_h__ + +#include "prtypes.h" + +#include "nsFileSpec.h" +#include "nsSoftwareUpdate.h" +#include "nsInstallObject.h" +#include "nsInstall.h" + +class nsInstallFileOpItem : public nsInstallObject +{ + public: + /* Public Fields */ + + /* Public Methods */ + // used by: + // FileOpFileDelete() + nsInstallFileOpItem(nsInstall* installObj, + PRInt32 aCommand, + nsFileSpec& aTarget, + PRInt32 aFlags, + PRInt32* aReturn); + + // used by: + // FileOpDirRemove() + // FileOpDirRename() + // FileOpFileCopy() + // FileOpFileMove() + // FileOpFileRename() + nsInstallFileOpItem(nsInstall* installObj, + PRInt32 aCommand, + nsFileSpec& aSrc, + nsFileSpec& aTarget, + PRInt32* aReturn); + + // used by: + // FileOpDirCreate() + nsInstallFileOpItem(nsInstall* aInstallObj, + PRInt32 aCommand, + nsFileSpec& aTarget, + PRInt32* aReturn); + + // used by: + // FileOpFileExecute() + nsInstallFileOpItem(nsInstall* aInstallObj, + PRInt32 aCommand, + nsFileSpec& aTarget, + nsString& aParams, + PRInt32* aReturn); + + ~nsInstallFileOpItem(); + + PRInt32 Prepare(void); + PRInt32 Complete(); + char* toString(); + void Abort(); + float GetInstallOrder(); + + /* should these be protected? */ + PRBool CanUninstall(); + PRBool RegisterPackageNode(); + + private: + + /* Private Fields */ + + nsInstall* mIObj; // initiating Install object + nsFileSpec* mSrc; + nsFileSpec* mTarget; + nsString* mParams; + long mFStat; + PRInt32 mFlags; + PRInt32 mCommand; + + /* Private Methods */ + + PRInt32 NativeFileOpDirCreate(nsFileSpec* aTarget); + PRInt32 NativeFileOpDirRemove(nsFileSpec* aTarget, PRInt32 aFlags); + PRInt32 NativeFileOpDirRename(nsFileSpec* aSrc, nsFileSpec* aTarget); + PRInt32 NativeFileOpFileCopy(nsFileSpec* aSrc, nsFileSpec* aTarget); + PRInt32 NativeFileOpFileDelete(nsFileSpec* aTarget, PRInt32 aFlags); + PRInt32 NativeFileOpFileExecute(nsFileSpec* aTarget, nsString* aParams); + PRInt32 NativeFileOpFileMove(nsFileSpec* aSrc, nsFileSpec* aTarget); + PRInt32 NativeFileOpFileRename(nsFileSpec* aSrc, nsFileSpec* aTarget); + PRInt32 NativeFileOpWinShortcutCreate(); + PRInt32 NativeFileOpMacAliasCreate(); + PRInt32 NativeFileOpUnixLinkCreate(); + +}; + +#endif /* nsInstallFileOpItem_h__ */ +