From aea366fb04a20c113ad5496754d2085ddd586387 Mon Sep 17 00:00:00 2001 From: rpotts Date: Fri, 1 May 1998 04:53:42 +0000 Subject: [PATCH] nsIURL.h and nsURL.cpp have been moved to mozilla\lib\libnet --- base/src/nsIURL.h | 90 ------------ base/src/nsURL.cpp | 344 --------------------------------------------- 2 files changed, 434 deletions(-) delete mode 100644 base/src/nsIURL.h delete mode 100644 base/src/nsURL.cpp diff --git a/base/src/nsIURL.h b/base/src/nsIURL.h deleted file mode 100644 index 7126b8a03571..000000000000 --- a/base/src/nsIURL.h +++ /dev/null @@ -1,90 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; 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 nsIURL_h___ -#define nsIURL_h___ - -#include "nscore.h" -#include "nsISupports.h" -class nsIInputStream; -class nsString; - -#define NS_IURL_IID \ -{ 0x6ecb2900, 0x93b5, 0x11d1, \ - {0x89, 0x5b, 0x00, 0x60, 0x08, 0x91, 0x1b, 0x81} } - -/** - * TEMPORARY INTERFACE; this will will be - * going away - */ -class nsIURL : public nsISupports { -public: - /** Open the url for reading and return a new input stream for the - * url. The caller must release the input stream when done with it. - */ - virtual nsIInputStream* Open(PRInt32* aErrorCode) const = 0; - - /** Equality operator */ - virtual PRBool operator==(const nsIURL& aURL) const = 0; - - - /** Accessors */ - //@{ - /** - @return protocol part of the URL */ - virtual const char* GetProtocol() const = 0; - - /** @return host part of the URL */ - virtual const char* GetHost() const = 0; - - /** @return file part of the URL */ - virtual const char* GetFile() const = 0; - - /** @return ref part of the URL */ - virtual const char* GetRef() const = 0; - - /** @return string originally used to construct the URL */ - virtual const char* GetSpec() const = 0; - - /** @return ref part of the URL */ - virtual PRInt32 GetPort() const = 0; - //@} - - /** Write the URL to aString, overwriting previous contents. */ - virtual void ToString(nsString& aString) const = 0; -}; - -/** Create a new URL from aSpec. */ -extern NS_BASE nsresult NS_NewURL(nsIURL** aInstancePtrResult, - const nsString& aSpec); - -/** Create a new URL, interpreting aSpec as relative to aURL. */ -extern NS_BASE nsresult NS_NewURL(nsIURL** aInstancePtrResult, - const nsIURL* aURL, - const nsString& aSpec); - -/** - * Utility routine to take a url (may be nsnull) and a base url (may - * be empty), and a url spec and combine them properly into a new - * absolute url. - */ -extern NS_BASE nsresult NS_MakeAbsoluteURL(nsIURL* aURL, - const nsString& aBaseURL, - const nsString& aSpec, - nsString& aResult); - -#endif /* nsIURL_h___ */ diff --git a/base/src/nsURL.cpp b/base/src/nsURL.cpp deleted file mode 100644 index 3f3827955d5c..000000000000 --- a/base/src/nsURL.cpp +++ /dev/null @@ -1,344 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; 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 "nsIURL.h" -#include "nsIInputStream.h" -#include "nsINetService.h" -#include "nsString.h" -#include - -#include /* XXX */ -#include "plstr.h" - -class URLImpl : public nsIURL { -public: - URLImpl(const nsString& aSpec); - URLImpl(const nsIURL* aURL, const nsString& aSpec); - ~URLImpl(); - - NS_DECL_ISUPPORTS - - virtual PRBool operator==(const nsIURL& aURL) const; - virtual nsIInputStream* Open(PRInt32* aErrorCode) const; - virtual const char* GetProtocol() const; - virtual const char* GetHost() const; - virtual const char* GetFile() const; - virtual const char* GetRef() const; - virtual const char* GetSpec() const; - virtual PRInt32 GetPort() const; - - virtual void ToString(nsString& aString) const; - - char* mSpec; - char* mProtocol; - char* mHost; - char* mFile; - char* mRef; - PRInt32 mPort; - PRBool mOK; - - nsresult ParseURL(const nsIURL* aURL, const nsString& aSpec); -}; - -URLImpl::URLImpl(const nsString& aSpec) -{ - NS_INIT_REFCNT(); - ParseURL(nsnull, aSpec); -} - -URLImpl::URLImpl(const nsIURL* aURL, const nsString& aSpec) -{ - NS_INIT_REFCNT(); - ParseURL(aURL, aSpec); -} - -NS_DEFINE_IID(kURLIID, NS_IURL_IID); - -NS_IMPL_ISUPPORTS(URLImpl, kURLIID) - -URLImpl::~URLImpl() -{ - free(mSpec); - free(mProtocol); - free(mHost); - free(mFile); - free(mRef); -} - -PRBool URLImpl::operator==(const nsIURL& aURL) const -{ - URLImpl& other = (URLImpl&)aURL; // XXX ? - return PRBool((0 == PL_strcmp(mProtocol, other.mProtocol)) && - (0 == PL_strcasecmp(mHost, other.mHost)) && - (0 == PL_strcmp(mFile, other.mFile))); -} - -const char* URLImpl::GetProtocol() const -{ - return mProtocol; -} - -const char* URLImpl::GetHost() const -{ - return mHost; -} - -const char* URLImpl::GetFile() const -{ - return mFile; -} - -const char* URLImpl::GetSpec() const -{ - return mSpec; -} - -const char* URLImpl::GetRef() const -{ - return mRef; -} - -PRInt32 URLImpl::GetPort() const -{ - return mPort; -} - - -void URLImpl::ToString(nsString& aString) const -{ - aString.SetLength(0); - aString.Append(mProtocol); - aString.Append("://"); - if (nsnull != mHost) { - aString.Append(mHost); - if (0 < mPort) { - aString.Append(':'); - aString.Append(mPort, 10); - } - } - aString.Append(mFile); - if (nsnull != mRef) { - aString.Append('#'); - aString.Append(mRef); - } -} - -// XXX recode to use nsString api's - -// XXX don't bother with port numbers -// XXX don't bother with ref's -// XXX null pointer checks are incomplete -nsresult URLImpl::ParseURL(const nsIURL* aURL, const nsString& aSpec) -{ - // XXX hack! - char* cSpec = aSpec.ToNewCString(); - - const char* uProtocol = nsnull; - const char* uHost = nsnull; - const char* uFile = nsnull; - PRInt32 uPort = -1; - if (nsnull != aURL) { - uProtocol = aURL->GetProtocol(); - uHost = aURL->GetHost(); - uFile = aURL->GetFile(); - uPort = aURL->GetPort(); - } - - mProtocol = nsnull; - mHost = nsnull; - mFile = nsnull; - mRef = nsnull; - mPort = -1; - mSpec = nsnull; - - if (nsnull == cSpec) { - delete cSpec; - if (nsnull == aURL) { - delete cSpec; - return NS_ERROR_ILLEGAL_VALUE; - } - mProtocol = (nsnull != uProtocol) ? PL_strdup(uProtocol) : nsnull; - mHost = (nsnull != uHost) ? PL_strdup(uHost) : nsnull; - mPort = uPort; - mFile = (nsnull != uFile) ? PL_strdup(uFile) : nsnull; - delete cSpec; - return NS_OK; - } - - mSpec = PL_strdup(cSpec); - const char* cp = PL_strchr(cSpec, ':'); - if (nsnull == cp) { - // relative spec - if (nsnull == aURL) { - delete cSpec; - return NS_ERROR_ILLEGAL_VALUE; - } - - // keep protocol and host - mProtocol = (nsnull != uProtocol) ? PL_strdup(uProtocol) : nsnull; - mHost = (nsnull != uHost) ? PL_strdup(uHost) : nsnull; - mPort = uPort; - - // figure out file name - PRInt32 len = PL_strlen(cSpec) + 1; - if ((len > 1) && (cSpec[0] == '/')) { - // Relative spec is absolute to the server - mFile = PL_strdup(cSpec); - } else { - char* dp = PL_strrchr(uFile, '/'); - PRInt32 dirlen = (dp + 1) - uFile; - mFile = (char*) malloc(dirlen + len); - PL_strncpy(mFile, uFile, dirlen); - PL_strcpy(mFile + dirlen, cSpec); - } - } else { - // absolute spec - - // get protocol first - PRInt32 plen = cp - cSpec; - mProtocol = (char*) malloc(plen + 1); - PL_strncpy(mProtocol, cSpec, plen); - mProtocol[plen] = 0; - cp++; // eat : in protocol - - // skip over one, two or three slashes - if (*cp == '/') { - cp++; - if (*cp == '/') { - cp++; - if (*cp == '/') { - cp++; - } - } - } else { - delete cSpec; - return NS_ERROR_ILLEGAL_VALUE; - } - - const char* cp0 = cp; - if ((PL_strcmp(mProtocol, "resource") == 0) || - (PL_strcmp(mProtocol, "file") == 0)) { - // resource/file url's do not have host names. - // The remainder of the string is the file name - PRInt32 flen = PL_strlen(cp); - mFile = (char*) malloc(flen + 1); - PL_strcpy(mFile, cp); - -#ifdef NS_WIN32 - if (PL_strcmp(mProtocol, "file") == 0) { - // If the filename starts with a "x|" where is an single - // character then we assume it's a drive name and change the - // vertical bar back to a ":" - if ((flen >= 2) && (mFile[1] == '|')) { - mFile[1] = ':'; - } - } -#endif - } else { - // Host name follows protocol for http style urls - cp = PL_strchr(cp, '/'); - if (nsnull == cp) { - // There is no file name, only a host name - PRInt32 hlen = PL_strlen(cp0); - mHost = (char*) malloc(hlen + 1); - PL_strcpy(mHost, cp0); - - // Set filename to "/" - mFile = (char*) malloc(2); - mFile[0] = '/'; - mFile[1] = 0; - } - else { - PRInt32 hlen = cp - cp0; - mHost = (char*) malloc(hlen + 1); - PL_strncpy(mHost, cp0, hlen); - mHost[hlen] = 0; - - // The rest is the file name - PRInt32 flen = PL_strlen(cp); - mFile = (char*) malloc(flen + 1); - PL_strcpy(mFile, cp); - } - } - } - -//printf("protocol='%s' host='%s' file='%s'\n", mProtocol, mHost, mFile); - delete cSpec; - return NS_OK; -} - -nsIInputStream* URLImpl::Open(PRInt32* aErrorCode) const -{ - nsresult rv; - nsIInputStream* in = nsnull; - - if (PL_strcmp(mProtocol, "file") == 0) { - rv = NS_OpenFile(&in, mFile); - } else if (PL_strcmp(mProtocol, "resource") == 0) { - rv = NS_OpenResource(&in, mFile); - } else { - nsINetService *inet; - - rv = NS_NewINetService(&inet, nsnull); - if (NS_OK == rv) { - rv = inet->OpenBlockingStream(mSpec, NULL, &in); - } - } - *aErrorCode = rv; - return in; -} - -NS_BASE nsresult NS_NewURL(nsIURL** aInstancePtrResult, - const nsString& aSpec) -{ - NS_PRECONDITION(nsnull != aInstancePtrResult, "null ptr"); - if (nsnull == aInstancePtrResult) { - return NS_ERROR_NULL_POINTER; - } - URLImpl* it = new URLImpl(aSpec); - if (nsnull == it) { - return NS_ERROR_OUT_OF_MEMORY; - } - return it->QueryInterface(kURLIID, (void **) aInstancePtrResult); -} - -NS_BASE nsresult NS_NewURL(nsIURL** aInstancePtrResult, - const nsIURL* aURL, - const nsString& aSpec) -{ - URLImpl* it = new URLImpl(aURL, aSpec); - if (nsnull == it) { - return NS_ERROR_OUT_OF_MEMORY; - } - return it->QueryInterface(kURLIID, (void **) aInstancePtrResult); -} - -NS_BASE nsresult NS_MakeAbsoluteURL(nsIURL* aURL, - const nsString& aBaseURL, - const nsString& aSpec, - nsString& aResult) -{ - if (0 < aBaseURL.Length()) { - URLImpl base(aBaseURL); - URLImpl url(&base, aSpec); - url.ToString(aResult); - } else { - URLImpl url(aURL, aSpec); - url.ToString(aResult); - } - return NS_OK; -}