Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / Configuration / System / Configuration / UrlPath.cs / 1 / UrlPath.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Configuration {
using System.Collections;
using System.Collections.Specialized;
using System.Configuration;
using System.Globalization;
using System.IO;
using System.Runtime.InteropServices;
using System.Security.Permissions;
using System.Security;
using System.Text;
using System.Xml;
using Microsoft.Win32;
static internal class UrlPath {
internal static string GetDirectoryOrRootName(string path) {
string dir;
dir = Path.GetDirectoryName(path);
if (dir == null) {
// dir == null if path = "c:\"
dir = Path.GetPathRoot(path);
}
return dir;
}
//
// Determine if subdir is equal to or a subdirectory of dir.
// For example, c:\mydir\subdir is a subdirectory of c:\mydir
// Account for optional trailing backslashes.
//
internal static bool IsEqualOrSubdirectory(string dir, string subdir) {
if (String.IsNullOrEmpty(dir))
return true;
if (String.IsNullOrEmpty(subdir))
return false;
//
// Compare up to but not including trailing backslash
//
int lDir = dir.Length;
if (dir[lDir - 1] == '\\') {
lDir -= 1;
}
int lSubdir = subdir.Length;
if (subdir[lSubdir - 1] == '\\') {
lSubdir -= 1;
}
if (lSubdir < lDir)
return false;
if (String.Compare(dir, 0, subdir, 0, lDir, StringComparison.OrdinalIgnoreCase) != 0)
return false;
// Check subdir that character following length of dir is a backslash
if (lSubdir > lDir && subdir[lDir] != '\\')
return false;
return true;
}
//
// NOTE: This function is also present in fx\src\xsp\system\web\util\urlpath.cs
// Please propagate any changes to that file.
//
// Determine if subpath is equal to or a subpath of path.
// For example, /myapp/foo.aspx is a subpath of /myapp
// Account for optional trailing slashes.
//
internal static bool IsEqualOrSubpath(string path, string subpath) {
return IsEqualOrSubpathImpl(path, subpath, false);
}
//
// Determine if subpath is a subpath of path, but return
// false if subpath & path are the same.
// For example, /myapp/foo.aspx is a subpath of /myapp
// Account for optional trailing slashes.
//
internal static bool IsSubpath(string path, string subpath) {
return IsEqualOrSubpathImpl(path, subpath, true);
}
private static bool IsEqualOrSubpathImpl(string path, string subpath, bool excludeEqual) {
if (String.IsNullOrEmpty(path))
return true;
if (String.IsNullOrEmpty(subpath))
return false;
//
// Compare up to but not including trailing slash
//
int lPath = path.Length;
if (path[lPath - 1] == '/') {
lPath -= 1;
}
int lSubpath = subpath.Length;
if (subpath[lSubpath - 1] == '/') {
lSubpath -= 1;
}
if (lSubpath < lPath)
return false;
if (excludeEqual && lSubpath == lPath)
return false;
if (String.Compare(path, 0, subpath, 0, lPath, StringComparison.OrdinalIgnoreCase) != 0)
return false;
// Check subpath that character following length of path is a slash
if (lSubpath > lPath && subpath[lPath] != '/')
return false;
return true;
}
private static bool IsDirectorySeparatorChar(char ch) {
return (ch == '\\' || ch == '/');
}
private static bool IsAbsoluteLocalPhysicalPath(string path) {
if (path == null || path.Length < 3)
return false;
// e.g c:\foo
return (path[1] == ':' && IsDirectorySeparatorChar(path[2]));
}
private static bool IsAbsoluteUNCPhysicalPath(string path) {
if (path == null || path.Length < 3)
return false;
// e.g \\server\share\foo or //server/share/foo
return (IsDirectorySeparatorChar(path[0]) && IsDirectorySeparatorChar(path[1]));
}
const string FILE_URL_LOCAL = "file:///";
const string FILE_URL_UNC = "file:";
internal static string ConvertFileNameToUrl(string fileName) {
string prefix;
if (IsAbsoluteLocalPhysicalPath(fileName)) {
prefix = FILE_URL_LOCAL;
}
else if (IsAbsoluteUNCPhysicalPath(fileName)) {
prefix = FILE_URL_UNC;
}
else {
// We should never get here, but if we do we are likely to have
// serious security problems, so throw an exception rather than simply
// asserting.
throw ExceptionUtil.ParameterInvalid("filename");
}
string newFileName = prefix + fileName.Replace('\\', '/');
return newFileName;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Configuration {
using System.Collections;
using System.Collections.Specialized;
using System.Configuration;
using System.Globalization;
using System.IO;
using System.Runtime.InteropServices;
using System.Security.Permissions;
using System.Security;
using System.Text;
using System.Xml;
using Microsoft.Win32;
static internal class UrlPath {
internal static string GetDirectoryOrRootName(string path) {
string dir;
dir = Path.GetDirectoryName(path);
if (dir == null) {
// dir == null if path = "c:\"
dir = Path.GetPathRoot(path);
}
return dir;
}
//
// Determine if subdir is equal to or a subdirectory of dir.
// For example, c:\mydir\subdir is a subdirectory of c:\mydir
// Account for optional trailing backslashes.
//
internal static bool IsEqualOrSubdirectory(string dir, string subdir) {
if (String.IsNullOrEmpty(dir))
return true;
if (String.IsNullOrEmpty(subdir))
return false;
//
// Compare up to but not including trailing backslash
//
int lDir = dir.Length;
if (dir[lDir - 1] == '\\') {
lDir -= 1;
}
int lSubdir = subdir.Length;
if (subdir[lSubdir - 1] == '\\') {
lSubdir -= 1;
}
if (lSubdir < lDir)
return false;
if (String.Compare(dir, 0, subdir, 0, lDir, StringComparison.OrdinalIgnoreCase) != 0)
return false;
// Check subdir that character following length of dir is a backslash
if (lSubdir > lDir && subdir[lDir] != '\\')
return false;
return true;
}
//
// NOTE: This function is also present in fx\src\xsp\system\web\util\urlpath.cs
// Please propagate any changes to that file.
//
// Determine if subpath is equal to or a subpath of path.
// For example, /myapp/foo.aspx is a subpath of /myapp
// Account for optional trailing slashes.
//
internal static bool IsEqualOrSubpath(string path, string subpath) {
return IsEqualOrSubpathImpl(path, subpath, false);
}
//
// Determine if subpath is a subpath of path, but return
// false if subpath & path are the same.
// For example, /myapp/foo.aspx is a subpath of /myapp
// Account for optional trailing slashes.
//
internal static bool IsSubpath(string path, string subpath) {
return IsEqualOrSubpathImpl(path, subpath, true);
}
private static bool IsEqualOrSubpathImpl(string path, string subpath, bool excludeEqual) {
if (String.IsNullOrEmpty(path))
return true;
if (String.IsNullOrEmpty(subpath))
return false;
//
// Compare up to but not including trailing slash
//
int lPath = path.Length;
if (path[lPath - 1] == '/') {
lPath -= 1;
}
int lSubpath = subpath.Length;
if (subpath[lSubpath - 1] == '/') {
lSubpath -= 1;
}
if (lSubpath < lPath)
return false;
if (excludeEqual && lSubpath == lPath)
return false;
if (String.Compare(path, 0, subpath, 0, lPath, StringComparison.OrdinalIgnoreCase) != 0)
return false;
// Check subpath that character following length of path is a slash
if (lSubpath > lPath && subpath[lPath] != '/')
return false;
return true;
}
private static bool IsDirectorySeparatorChar(char ch) {
return (ch == '\\' || ch == '/');
}
private static bool IsAbsoluteLocalPhysicalPath(string path) {
if (path == null || path.Length < 3)
return false;
// e.g c:\foo
return (path[1] == ':' && IsDirectorySeparatorChar(path[2]));
}
private static bool IsAbsoluteUNCPhysicalPath(string path) {
if (path == null || path.Length < 3)
return false;
// e.g \\server\share\foo or //server/share/foo
return (IsDirectorySeparatorChar(path[0]) && IsDirectorySeparatorChar(path[1]));
}
const string FILE_URL_LOCAL = "file:///";
const string FILE_URL_UNC = "file:";
internal static string ConvertFileNameToUrl(string fileName) {
string prefix;
if (IsAbsoluteLocalPhysicalPath(fileName)) {
prefix = FILE_URL_LOCAL;
}
else if (IsAbsoluteUNCPhysicalPath(fileName)) {
prefix = FILE_URL_UNC;
}
else {
// We should never get here, but if we do we are likely to have
// serious security problems, so throw an exception rather than simply
// asserting.
throw ExceptionUtil.ParameterInvalid("filename");
}
string newFileName = prefix + fileName.Replace('\\', '/');
return newFileName;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- QuaternionAnimation.cs
- Ipv6Element.cs
- DataContractSerializerSection.cs
- TreeViewAutomationPeer.cs
- RSAPKCS1SignatureFormatter.cs
- AnnotationResourceCollection.cs
- WebPartTransformer.cs
- ReferencedAssembly.cs
- RectAnimationUsingKeyFrames.cs
- DataObjectFieldAttribute.cs
- AmbientEnvironment.cs
- XmlSchemaAnyAttribute.cs
- CommandExpr.cs
- FileDetails.cs
- ClientOptions.cs
- Rotation3D.cs
- DataRowComparer.cs
- PriorityQueue.cs
- StrokeFIndices.cs
- EventSourceCreationData.cs
- SubMenuStyleCollection.cs
- DocumentReferenceCollection.cs
- TreeViewItemAutomationPeer.cs
- XmlImplementation.cs
- TreeViewItemAutomationPeer.cs
- EntityViewGenerationAttribute.cs
- ImageButton.cs
- XPathNodeHelper.cs
- ArcSegment.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- InvalidOleVariantTypeException.cs
- RequestCacheManager.cs
- ServerValidateEventArgs.cs
- FieldDescriptor.cs
- PreservationFileReader.cs
- FontFamilyValueSerializer.cs
- TrackingParameters.cs
- MDIControlStrip.cs
- Point3D.cs
- PagesSection.cs
- ReadOnlyTernaryTree.cs
- BaseParagraph.cs
- SetterTriggerConditionValueConverter.cs
- SecureEnvironment.cs
- UnsafeNativeMethods.cs
- SoapAttributes.cs
- Timer.cs
- PackageRelationshipSelector.cs
- TraceContextRecord.cs
- DataGridViewCell.cs
- PassportPrincipal.cs
- ColumnResizeAdorner.cs
- _TransmitFileOverlappedAsyncResult.cs
- CollectionBuilder.cs
- ErrorItem.cs
- SimpleParser.cs
- InputBindingCollection.cs
- Stackframe.cs
- PropertyNames.cs
- RoutedEventArgs.cs
- RelationshipEnd.cs
- DispatchRuntime.cs
- Pen.cs
- ConfigurationProperty.cs
- EventLogSession.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- DoubleKeyFrameCollection.cs
- ColorTransform.cs
- ItemChangedEventArgs.cs
- TypeForwardedToAttribute.cs
- StringSource.cs
- SpecularMaterial.cs
- HwndProxyElementProvider.cs
- RepeatInfo.cs
- RoleManagerEventArgs.cs
- MouseGestureConverter.cs
- Int64AnimationBase.cs
- StrokeNodeData.cs
- TypeLoadException.cs
- DynamicMethod.cs
- MetadataFile.cs
- HttpGetClientProtocol.cs
- GlyphTypeface.cs
- NeutralResourcesLanguageAttribute.cs
- SystemWebCachingSectionGroup.cs
- ValuePattern.cs
- TableSectionStyle.cs
- GetLedgerEntryForRecipientRequest.cs
- documentation.cs
- EnumConverter.cs
- DrawListViewItemEventArgs.cs
- PageCatalogPart.cs
- ResourceSet.cs
- SystemWebSectionGroup.cs
- ContextMenu.cs
- ExpressionsCollectionConverter.cs
- LocalizedNameDescriptionPair.cs
- DataGridView.cs
- StrongNameIdentityPermission.cs
- TreeNodeMouseHoverEvent.cs