System.UncNameHelper.IsValid C# (CSharp) Method

IsValid() static private method

static private IsValid ( char name, ushort start, int &returnedEnd, bool notImplicitFile ) : bool
name char
start ushort
returnedEnd int
notImplicitFile bool
return bool
        internal unsafe static bool IsValid(char* name, ushort start, ref int returnedEnd, bool notImplicitFile) {
            ushort end = (ushort) returnedEnd;

            if (start==end)
                return false;
            //
            // First segment could consist of only '_' or '-' but it cannot be all digits or empty
            //
            bool validShortName = false;
            ushort i = start;
            for (; i < end; ++i)
            {
                if (name[i] == '/' || name[i] == '\\' || (notImplicitFile && (name[i] == ':' || name[i] == '?' || name[i] == '#')))
                {
                    end = i;
                    break;
                }
                else if (name[i] == '.')
                {
                    ++i;
                    break;
                }
                if (Char.IsLetter(name[i]) || name[i] == '-' || name[i] == '_')
                {
                    validShortName = true;
                }
                else if (name[i] < '0' || name[i] > '9')
                    return false;
            }

            if (!validShortName)
                return false;

            //
            // Subsequent segments must start with a letter or a digit
            //

            for (; i < end; ++i)
            {
                if (name[i] == '/' || name[i] == '\\' || (notImplicitFile && (name[i] == ':' || name[i] == '?' || name[i] == '#')))
                {
                    end = i;
                    break;
                }
                else if (name[i] == '.')
                {
                    if (!validShortName || ((i-1) >= start && name[i-1] == '.'))
                        return false;

                    validShortName = false;
                }
                else if (name[i] == '-' || name[i] == '_')
                {
                    if (!validShortName)
                        return false;
                }
                else if (Char.IsLetter(name[i]) || (name[i] >= '0' && name[i] <= '9'))
                {
                    if (!validShortName)
                        validShortName = true;
                }
                else
                    return false;
            }

            // last segment can end with the dot
            if (((i-1) >= start && name[i-1] == '.'))
                validShortName = true;

            if (!validShortName)
                return false;

            //  caller must check for (end - start <= MaximumInternetNameLength)

            returnedEnd = end;
            return true;
        }
    }