Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Net / System / Net / Mail / DotAtomReader.cs / 1305376 / DotAtomReader.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Net.Mail { using System; using System.Diagnostics; using System.Net.Mime; using System.Text; // // RFC 2822 Section 3.2.4 - Atom, Dot-Atom // // A Dot-Atom is a string of ASCII characters separated by dots. Dots would normally not be allowed at the start // or end, but we do allow dots at the end for compatibility with other mail clients. We also allow // multiple consecutive dots, which would normally be invalid. // internal static class DotAtomReader { // Reads a Dot Atom in reverse. // // Preconditions: // - Index must be within the bounds of the data string. // // Return value: // - The first index of of a character not valid in a dot-atom. It is then up to the caller to // determine if the next character is a valid delimiter. // e.g. "user.name@domain.com", starting at index 19 (m) returns 9 (@). // e.g. "user.name@dom in.com", starting at index 19 (m) returns 13 (space). // - -1 if the dot-atom section terminated at the start of the data string. // e.g. "user.name@domain.com", starting at index 8 (e) returns -1. // // A FormatException will be thrown if: // - The initial character at data[index] is invalid in a dot-atom. // e.g. "a@b.com", starting at index 1 (@). // - The leading character is a dot. // e.g. "a@.b.com", starting at index 7 (m), throws because the leading char (index 2) is a dot. // internal static int ReadReverse(string data, int index) { Debug.Assert(0 <= index && index < data.Length, "index was outside the bounds of the string: " + index); int startIndex = index; // Scan for the first Unicode or invalid chars (including whitespace) for ( ; 0 <= index; index--) { if (data[index] > MailBnfHelper.Ascii7bitMaxValue // Unicode || (data[index] != MailBnfHelper.Dot && !MailBnfHelper.Atext[data[index]])) // Invalid char { break; } } // Check for empty/invalid dot-atom if (startIndex == index) { throw new FormatException(SR.GetString(SR.MailHeaderFieldInvalidCharacter, data[index])); } // Check for leading dot else if (data[index + 1] == MailBnfHelper.Dot) { throw new FormatException(SR.GetString(SR.MailHeaderFieldInvalidCharacter, MailBnfHelper.Dot)); } return index; } } } // 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
- ControlCachePolicy.cs
- RIPEMD160.cs
- UpdateException.cs
- RectangleHotSpot.cs
- EditorServiceContext.cs
- SchemaUtility.cs
- WebScriptMetadataMessageEncodingBindingElement.cs
- CardSpaceSelector.cs
- XmlComplianceUtil.cs
- SerializationFieldInfo.cs
- StatusBar.cs
- RemotingServices.cs
- PackageDigitalSignature.cs
- BamlLocalizableResource.cs
- BitmapEffectInput.cs
- EditorPartChrome.cs
- CompilerParameters.cs
- Expression.DebuggerProxy.cs
- MouseButton.cs
- WebPartZoneAutoFormat.cs
- GradientSpreadMethodValidation.cs
- HtmlString.cs
- HttpHandlerActionCollection.cs
- XmlHierarchyData.cs
- NetworkStream.cs
- ToolStripContainer.cs
- DesignerCategoryAttribute.cs
- ListSortDescription.cs
- FilterableAttribute.cs
- RequestCachingSection.cs
- TreeViewImageGenerator.cs
- SafePointer.cs
- PermissionSetTriple.cs
- PageStatePersister.cs
- HostingEnvironmentWrapper.cs
- StorageFunctionMapping.cs
- AttachedAnnotationChangedEventArgs.cs
- versioninfo.cs
- ArrayTypeMismatchException.cs
- TableCellsCollectionEditor.cs
- RuntimeArgumentHandle.cs
- NameTable.cs
- recordstatescratchpad.cs
- Wizard.cs
- CodeIdentifier.cs
- PeerNameResolver.cs
- WindowsAuthenticationModule.cs
- EdmProperty.cs
- ConfigXmlSignificantWhitespace.cs
- LogicalChannel.cs
- ConcurrentStack.cs
- SpecialNameAttribute.cs
- Dictionary.cs
- EntityContainerRelationshipSet.cs
- COM2IVsPerPropertyBrowsingHandler.cs
- PenCursorManager.cs
- HTTPNotFoundHandler.cs
- HostProtectionException.cs
- DefaultEventAttribute.cs
- RuntimeHandles.cs
- UniqueIdentifierService.cs
- MonitoringDescriptionAttribute.cs
- CallbackWrapper.cs
- webeventbuffer.cs
- Exceptions.cs
- HtmlInputRadioButton.cs
- MediaTimeline.cs
- DataGridViewCheckBoxColumn.cs
- ModifierKeysConverter.cs
- FontWeightConverter.cs
- EdmComplexTypeAttribute.cs
- Polygon.cs
- CompositeScriptReference.cs
- SmtpFailedRecipientsException.cs
- NativeMethods.cs
- ScriptManagerProxy.cs
- DataPagerFieldCommandEventArgs.cs
- SingleConverter.cs
- ActivityPropertyReference.cs
- SqlClientFactory.cs
- CacheEntry.cs
- AsyncDataRequest.cs
- PolyQuadraticBezierSegment.cs
- BasicExpressionVisitor.cs
- IsolatedStorageException.cs
- TextBox.cs
- DataGridViewComboBoxColumn.cs
- SHA1CryptoServiceProvider.cs
- PreloadedPackages.cs
- AppManager.cs
- ScriptManager.cs
- PrivilegedConfigurationManager.cs
- QuaternionAnimationUsingKeyFrames.cs
- URLIdentityPermission.cs
- DesignerEventService.cs
- PublisherIdentityPermission.cs
- EventWaitHandle.cs
- DiscoveryExceptionDictionary.cs
- ObjectFullSpanRewriter.cs
- FileSystemInfo.cs