From 57e1b1595d30c3b27d0b4f1b8e25cd92b1c69e1e Mon Sep 17 00:00:00 2001 From: "rjc%netscape.com" Date: Mon, 21 Jun 1999 23:35:23 +0000 Subject: [PATCH] Unescape FTP names (in case they were encoded). --- rdf/datasource/src/nsFTPDataSource.cpp | 34 +++++++++++++++++++------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/rdf/datasource/src/nsFTPDataSource.cpp b/rdf/datasource/src/nsFTPDataSource.cpp index 53bcb89b8600..c5e116b10cc1 100644 --- a/rdf/datasource/src/nsFTPDataSource.cpp +++ b/rdf/datasource/src/nsFTPDataSource.cpp @@ -42,6 +42,8 @@ #include "prio.h" #include "rdf.h" +#include "nsEscape.h" + #include "nsIURL.h" #ifdef NECKO #include "nsIEventQueueService.h" @@ -371,11 +373,12 @@ FTPDataSource::GetURL(nsIRDFResource *source, nsIRDFLiteral** aResult) NS_METHOD FTPDataSource::GetName(nsIRDFResource *source, nsIRDFLiteral** aResult) { - nsresult rv; + nsresult rv = NS_OK; nsXPIDLCString uri; rv = source->GetValue( getter_Copies(uri) ); - if (NS_FAILED(rv)) return rv; + if (NS_FAILED(rv)) + return(rv); nsAutoString url(uri); @@ -388,6 +391,7 @@ FTPDataSource::GetName(nsIRDFResource *source, nsIRDFLiteral** aResult) url.Cut(len-1, 1); } } + // get basename PRInt32 slash = url.RFind('/'); if (slash > 0) @@ -395,14 +399,26 @@ FTPDataSource::GetName(nsIRDFResource *source, nsIRDFLiteral** aResult) url.Cut(0, slash+1); } - // XXX To Do: unescape basename - - nsIRDFLiteral *literal; - rv = gRDFService->GetLiteral(url.GetUnicode(), &literal); - if (NS_FAILED(rv)) return rv; + // unescape basename + rv = NS_ERROR_NULL_POINTER; + char *basename = url.ToNewCString(); + if (basename) + { + basename = nsUnescape(basename); + if (basename) + { + url = basename; + delete [] basename; + basename = nsnull; - *aResult = literal; - return NS_OK; + nsIRDFLiteral *literal; + if (NS_SUCCEEDED(rv = gRDFService->GetLiteral(url.GetUnicode(), &literal))) + { + *aResult = literal; + } + } + } + return(rv); }