[RTL]
authorDmitry Chapyshev <dmitry@reactos.org>
Sat, 3 Sep 2016 22:43:29 +0000 (22:43 +0000)
committerDmitry Chapyshev <dmitry@reactos.org>
Sat, 3 Sep 2016 22:43:29 +0000 (22:43 +0000)
- Formatting only (no code changes)

svn path=/trunk/; revision=72557

reactos/sdk/lib/rtl/dos8dot3.c

index 75524c1..b63d5c4 100644 (file)
@@ -24,259 +24,279 @@ const PCHAR RtlpShortIllegals = ";+=[],\"*\\<>/?:|";
 static BOOLEAN
 RtlpIsShortIllegal(CHAR Char)
 {
-   return strchr(RtlpShortIllegals, Char) ? TRUE : FALSE;
+    return strchr(RtlpShortIllegals, Char) ? TRUE : FALSE;
 }
 
 static USHORT
 RtlpGetCheckSum(PUNICODE_STRING Name)
 {
-   USHORT Hash, Saved;
-   WCHAR * CurChar;
-   USHORT Len;
-
-   if (Name->Length == 0)
-   {
-      return 0;
-   }
-
-   if (Name->Length == sizeof(WCHAR))
-   {
-      return Name->Buffer[0];
-   }
-
-   CurChar = Name->Buffer;
-   Hash = (*CurChar << 8) + *(CurChar + 1);
-   if (Name->Length == 2 * sizeof(WCHAR))
-   {
-      return Hash;
-   }
-
-   Saved = Hash;
-   Len = 2;
-   do
-   {
-      CurChar = CurChar + 2;
-      Hash = (Hash << 7) + *CurChar;
-      Hash = (Saved >> 1) + (Hash << 8);
-      if (Len + 1 < Name->Length / sizeof(WCHAR))
-      {
-         Hash += *(CurChar + 1);
-      }
-      Saved = Hash;
-      Len += 2;
-   } while (Len < Name->Length / sizeof(WCHAR));
-
-   return Hash;
+    USHORT Hash, Saved;
+    WCHAR* CurChar;
+    USHORT Len;
+
+    if (Name->Length == 0)
+    {
+        return 0;
+    }
+
+    if (Name->Length == sizeof(WCHAR))
+    {
+        return Name->Buffer[0];
+    }
+
+    CurChar = Name->Buffer;
+    Hash = (*CurChar << 8) + *(CurChar + 1);
+
+    if (Name->Length == 2 * sizeof(WCHAR))
+    {
+        return Hash;
+    }
+
+    Saved = Hash;
+    Len = 2;
+
+    do
+    {
+        CurChar = CurChar + 2;
+        Hash = (Hash << 7) + *CurChar;
+        Hash = (Saved >> 1) + (Hash << 8);
+
+        if (Len + 1 < Name->Length / sizeof(WCHAR))
+        {
+            Hash += *(CurChar + 1);
+        }
+
+        Saved = Hash;
+        Len += 2;
+    } while (Len < Name->Length / sizeof(WCHAR));
+
+    return Hash;
 }
 
 static ULONG
 RtlpGetIndexLength(ULONG Index)
 {
-   ULONG Length = 0;
-   while (Index)
-   {
-      Index /= 10;
-      Length++;
-   }
-   return Length ? Length : 1;
+    ULONG Length = 0;
+
+    while (Index)
+    {
+        Index /= 10;
+        Length++;
+    }
+
+    return Length ? Length : 1;
 }
 
 
 /*
  * @implemented
  */
-VOID NTAPI
+VOID
+NTAPI
 RtlGenerate8dot3Name(IN PUNICODE_STRING Name,
                      IN BOOLEAN AllowExtendedCharacters,
                      IN OUT PGENERATE_NAME_CONTEXT Context,
                      OUT PUNICODE_STRING Name8dot3)
 {
-   ULONG Count;
-   WCHAR NameBuffer[8];
-   WCHAR ExtBuffer[4];
-   ULONG StrLength;
-   ULONG NameLength;
-   ULONG ExtLength;
-   ULONG CopyLength;
-   ULONG DotPos;
-   ULONG i, j;
-   ULONG IndexLength;
-   ULONG CurrentIndex;
-   USHORT Checksum;
-   WCHAR c;
-
-   StrLength = Name->Length / sizeof(WCHAR);
-   DPRINT("StrLength: %lu\n", StrLength);
-
-   /* Find last dot in Name */
-   DotPos = StrLength;
-   for (i = 0; i < StrLength; i++)
-   {
-      if (Name->Buffer[i] == L'.')
-      {
-         DotPos = i;
-      }
-   }
-
-   DPRINT("DotPos: %lu\n", DotPos);
-
-   /* Copy name (6 valid characters max) */
-   for (i = 0, NameLength = 0; NameLength < 6 && i < DotPos; i++)
-   {
-      c = UNICODE_NULL;
-      if (AllowExtendedCharacters)
-      {
-          c = RtlUpcaseUnicodeChar(Name->Buffer[i]);
-          Count = 1;
-      }
-      else
-      {
-          RtlUpcaseUnicodeToOemN((CHAR *)&c, sizeof(CHAR), &Count, &Name->Buffer[i], sizeof(WCHAR));
-      }
-
-      if (Count != 1 || c == UNICODE_NULL || RtlpIsShortIllegal(c))
-      {
-         NameBuffer[NameLength++] = L'_';
-      }
-      else if (c != L'.' && c != L' ')
-      {
-         if (isgraph(c) || (AllowExtendedCharacters && iswgraph(c)))
-         {
-            NameBuffer[NameLength++] = c;
-         }
-      }
-   }
-
-   DPRINT("NameBuffer: '%.08S'\n", NameBuffer);
-   DPRINT("NameLength: %lu\n", NameLength);
-
-   /* Copy extension (4 valid characters max) */
-   if (DotPos < StrLength)
-   {
-      for (i = DotPos, ExtLength = 0; ExtLength < 4 && i < StrLength; i++)
-      {
-          c = UNICODE_NULL;
-          if (AllowExtendedCharacters)
-          {
-              c = RtlUpcaseUnicodeChar(Name->Buffer[i]);
-              Count = 1;
-          }
-          else
-          {
-              RtlUpcaseUnicodeToOemN((CHAR *)&c, sizeof(CHAR), &Count, &Name->Buffer[i], sizeof(WCHAR));
-          }
-
-         if (Count != 1 || c == UNICODE_NULL || RtlpIsShortIllegal(c))
-         {
-            ExtBuffer[ExtLength++] = L'_';
-         }
-         else if (c != L' ')
-         {
-            if (isgraph(c) || c == L'.' || (AllowExtendedCharacters && iswgraph(c)))
+    ULONG Count;
+    WCHAR NameBuffer[8];
+    WCHAR ExtBuffer[4];
+    ULONG StrLength;
+    ULONG NameLength;
+    ULONG ExtLength;
+    ULONG CopyLength;
+    ULONG DotPos;
+    ULONG i, j;
+    ULONG IndexLength;
+    ULONG CurrentIndex;
+    USHORT Checksum;
+    WCHAR c;
+
+    StrLength = Name->Length / sizeof(WCHAR);
+
+    DPRINT("StrLength: %lu\n", StrLength);
+
+    /* Find last dot in Name */
+    DotPos = StrLength;
+    for (i = 0; i < StrLength; i++)
+    {
+        if (Name->Buffer[i] == L'.')
+        {
+            DotPos = i;
+        }
+    }
+
+    DPRINT("DotPos: %lu\n", DotPos);
+
+    /* Copy name (6 valid characters max) */
+    for (i = 0, NameLength = 0; NameLength < 6 && i < DotPos; i++)
+    {
+        c = UNICODE_NULL;
+        if (AllowExtendedCharacters)
+        {
+            c = RtlUpcaseUnicodeChar(Name->Buffer[i]);
+            Count = 1;
+        }
+        else
+        {
+            RtlUpcaseUnicodeToOemN((CHAR *)&c, sizeof(CHAR), &Count, &Name->Buffer[i], sizeof(WCHAR));
+        }
+
+        if (Count != 1 || c == UNICODE_NULL || RtlpIsShortIllegal(c))
+        {
+            NameBuffer[NameLength++] = L'_';
+        }
+        else if (c != L'.' && c != L' ')
+        {
+            if (isgraph(c) || (AllowExtendedCharacters && iswgraph(c)))
             {
-               ExtBuffer[ExtLength++] = c;
+                NameBuffer[NameLength++] = c;
             }
-         }
-      }
-   }
-   else
-   {
-      ExtLength = 0;
-   }
-   DPRINT("ExtBuffer: '%.04S'\n", ExtBuffer);
-   DPRINT("ExtLength: %lu\n", ExtLength);
-
-   /* Determine next index */
-   IndexLength = RtlpGetIndexLength(Context->LastIndexValue);
-   if (Context->CheckSumInserted)
-   {
-      CopyLength = min(NameLength, 8 - 4 - 1 - IndexLength);
-      Checksum = RtlpGetCheckSum(Name);
-   }
-   else
-   {
-      CopyLength = min(NameLength, 8 - 1 - IndexLength);
-      Checksum = 0;
-   }
-
-   DPRINT("CopyLength: %lu\n", CopyLength);
-
-   if ((Context->NameLength == CopyLength) &&
-         (wcsncmp(Context->NameBuffer, NameBuffer, CopyLength) == 0) &&
-         (Context->ExtensionLength == ExtLength) &&
-         (wcsncmp(Context->ExtensionBuffer, ExtBuffer, ExtLength) == 0) &&
-         (Checksum == Context->Checksum) &&
-         (Context->LastIndexValue < 999))
-   {
-      Context->LastIndexValue++;
-      if (Context->CheckSumInserted == FALSE &&
+        }
+    }
+
+    DPRINT("NameBuffer: '%.08S'\n", NameBuffer);
+    DPRINT("NameLength: %lu\n", NameLength);
+
+    /* Copy extension (4 valid characters max) */
+    if (DotPos < StrLength)
+    {
+        for (i = DotPos, ExtLength = 0; ExtLength < 4 && i < StrLength; i++)
+        {
+            c = UNICODE_NULL;
+
+            if (AllowExtendedCharacters)
+            {
+                c = RtlUpcaseUnicodeChar(Name->Buffer[i]);
+                Count = 1;
+            }
+            else
+            {
+                RtlUpcaseUnicodeToOemN((CHAR *)&c, sizeof(CHAR), &Count, &Name->Buffer[i], sizeof(WCHAR));
+            }
+
+            if (Count != 1 || c == UNICODE_NULL || RtlpIsShortIllegal(c))
+            {
+                ExtBuffer[ExtLength++] = L'_';
+            }
+            else if (c != L' ')
+            {
+                if (isgraph(c) || c == L'.' || (AllowExtendedCharacters && iswgraph(c)))
+                {
+                    ExtBuffer[ExtLength++] = c;
+                }
+            }
+        }
+    }
+    else
+    {
+        ExtLength = 0;
+    }
+
+    DPRINT("ExtBuffer: '%.04S'\n", ExtBuffer);
+    DPRINT("ExtLength: %lu\n", ExtLength);
+
+    /* Determine next index */
+    IndexLength = RtlpGetIndexLength(Context->LastIndexValue);
+    if (Context->CheckSumInserted)
+    {
+        CopyLength = min(NameLength, 8 - 4 - 1 - IndexLength);
+        Checksum = RtlpGetCheckSum(Name);
+    }
+    else
+    {
+        CopyLength = min(NameLength, 8 - 1 - IndexLength);
+        Checksum = 0;
+    }
+
+    DPRINT("CopyLength: %lu\n", CopyLength);
+
+    if ((Context->NameLength == CopyLength) &&
+        (wcsncmp(Context->NameBuffer, NameBuffer, CopyLength) == 0) &&
+        (Context->ExtensionLength == ExtLength) &&
+        (wcsncmp(Context->ExtensionBuffer, ExtBuffer, ExtLength) == 0) &&
+        (Checksum == Context->Checksum) &&
+        (Context->LastIndexValue < 999))
+    {
+        Context->LastIndexValue++;
+
+        if (Context->CheckSumInserted == FALSE &&
             Context->LastIndexValue > 9)
-      {
-         Context->CheckSumInserted = TRUE;
-         Context->LastIndexValue = 1;
-         Context->Checksum = RtlpGetCheckSum(Name);
-      }
-   }
-   else
-   {
-      Context->LastIndexValue = 1;
-      if (NameLength == 0)
-      {
-         Context->CheckSumInserted = TRUE;
-         Context->Checksum = RtlpGetCheckSum(Name);
-      }
-      else
-      {
-         Context->CheckSumInserted = FALSE;
-      }
-   }
-
-   IndexLength = RtlpGetIndexLength(Context->LastIndexValue);
-
-   DPRINT("CurrentIndex: %lu, IndexLength %lu\n", Context->LastIndexValue, IndexLength);
-
-   if (Context->CheckSumInserted)
-   {
-      CopyLength = min(NameLength, 8 - 4 - 1 - IndexLength);
-   }
-   else
-   {
-      CopyLength = min(NameLength, 8 - 1 - IndexLength);
-   }
-
-   /* Build the short name */
-   memcpy(Name8dot3->Buffer, NameBuffer, CopyLength * sizeof(WCHAR));
-   j = CopyLength;
-   if (Context->CheckSumInserted)
-   {
-      Checksum = Context->Checksum;
-      for (i = 0; i < 4; i++)
-      {
-         Name8dot3->Buffer[j++] = (Checksum & 0xF) > 9 ? (Checksum & 0xF) + L'A' - 10 : (Checksum & 0xF) + L'0';
-         Checksum >>= 4;
-      }
-      j = CopyLength + 4;
-   }
-   Name8dot3->Buffer[j++] = L'~';
-   j += IndexLength - 1;
-   CurrentIndex = Context->LastIndexValue;
-   for (i = 0; i < IndexLength; i++)
-   {
-      Name8dot3->Buffer[j--] = (CurrentIndex % 10) + L'0';
-      CurrentIndex /= 10;
-   }
-   j += IndexLength + 1;
-
-   memcpy(Name8dot3->Buffer + j, ExtBuffer, ExtLength * sizeof(WCHAR));
-   Name8dot3->Length = (USHORT)(j + ExtLength) * sizeof(WCHAR);
-
-   DPRINT("Name8dot3: '%wZ'\n", Name8dot3);
-
-   /* Update context */
-   Context->NameLength = (UCHAR)CopyLength;
-   Context->ExtensionLength = ExtLength;
-   memcpy(Context->NameBuffer, NameBuffer, CopyLength * sizeof(WCHAR));
-   memcpy(Context->ExtensionBuffer, ExtBuffer, ExtLength * sizeof(WCHAR));
+        {
+            Context->CheckSumInserted = TRUE;
+            Context->LastIndexValue = 1;
+            Context->Checksum = RtlpGetCheckSum(Name);
+        }
+    }
+    else
+    {
+        Context->LastIndexValue = 1;
+
+        if (NameLength == 0)
+        {
+            Context->CheckSumInserted = TRUE;
+            Context->Checksum = RtlpGetCheckSum(Name);
+        }
+        else
+        {
+            Context->CheckSumInserted = FALSE;
+        }
+    }
+
+    IndexLength = RtlpGetIndexLength(Context->LastIndexValue);
+
+    DPRINT("CurrentIndex: %lu, IndexLength %lu\n", Context->LastIndexValue, IndexLength);
+
+    if (Context->CheckSumInserted)
+    {
+        CopyLength = min(NameLength, 8 - 4 - 1 - IndexLength);
+    }
+    else
+    {
+        CopyLength = min(NameLength, 8 - 1 - IndexLength);
+    }
+
+    /* Build the short name */
+    memcpy(Name8dot3->Buffer, NameBuffer, CopyLength * sizeof(WCHAR));
+
+    j = CopyLength;
+
+    if (Context->CheckSumInserted)
+    {
+        Checksum = Context->Checksum;
+
+        for (i = 0; i < 4; i++)
+        {
+            Name8dot3->Buffer[j++] = (Checksum & 0xF) > 9 ? (Checksum & 0xF) + L'A' - 10 : (Checksum & 0xF) + L'0';
+            Checksum >>= 4;
+        }
+
+        j = CopyLength + 4;
+    }
+
+    Name8dot3->Buffer[j++] = L'~';
+    j += IndexLength - 1;
+    CurrentIndex = Context->LastIndexValue;
+
+    for (i = 0; i < IndexLength; i++)
+    {
+        Name8dot3->Buffer[j--] = (CurrentIndex % 10) + L'0';
+        CurrentIndex /= 10;
+    }
+
+    j += IndexLength + 1;
+
+    memcpy(Name8dot3->Buffer + j, ExtBuffer, ExtLength * sizeof(WCHAR));
+    Name8dot3->Length = (USHORT)(j + ExtLength) * sizeof(WCHAR);
+
+    DPRINT("Name8dot3: '%wZ'\n", Name8dot3);
+
+    /* Update context */
+    Context->NameLength = (UCHAR)CopyLength;
+    Context->ExtensionLength = ExtLength;
+
+    memcpy(Context->NameBuffer, NameBuffer, CopyLength * sizeof(WCHAR));
+    memcpy(Context->ExtensionBuffer, ExtBuffer, ExtLength * sizeof(WCHAR));
 }
 
 
@@ -290,10 +310,9 @@ _Must_inspect_result_
 NTSYSAPI
 BOOLEAN
 NTAPI
-RtlIsNameLegalDOS8Dot3 (
-    _In_ PCUNICODE_STRING Name,
-    _Inout_opt_ POEM_STRING OemName,
-    _Out_opt_ PBOOLEAN NameContainsSpaces)
+RtlIsNameLegalDOS8Dot3(IN PCUNICODE_STRING Name,
+                       IN OUT POEM_STRING OemName,
+                       OUT PBOOLEAN NameContainsSpaces OPTIONAL)
 {
     static const char Illegal[] = "*?<>|\"+=,;[]:/\\\345";
     int Dot = -1;
@@ -322,6 +341,7 @@ RtlIsNameLegalDOS8Dot3 (
     {
         if (OemName->Length != 1 && (OemName->Length != 2 || OemName->Buffer[1] != '.')) return FALSE;
         if (NameContainsSpaces) *NameContainsSpaces = FALSE;
+
         return TRUE;
     }
 
@@ -329,18 +349,20 @@ RtlIsNameLegalDOS8Dot3 (
     {
         switch (OemName->Buffer[i])
         {
-        case ' ':
-            /* leading/trailing spaces not allowed */
-            if (!i || i == OemName->Length-1 || OemName->Buffer[i+1] == '.') return FALSE;
-            GotSpace = TRUE;
-            break;
-        case '.':
-            if (Dot != -1) return FALSE;
-            Dot = i;
-            break;
-        default:
-            if (strchr(Illegal, OemName->Buffer[i])) return FALSE;
-            break;
+            case ' ':
+                /* leading/trailing spaces not allowed */
+                if (!i || i == OemName->Length-1 || OemName->Buffer[i+1] == '.') return FALSE;
+                GotSpace = TRUE;
+                break;
+
+            case '.':
+                if (Dot != -1) return FALSE;
+                Dot = i;
+                break;
+
+            default:
+                if (strchr(Illegal, OemName->Buffer[i])) return FALSE;
+                break;
         }
     }
     /* check file part is shorter than 8, extension shorter than 3
@@ -354,7 +376,9 @@ RtlIsNameLegalDOS8Dot3 (
     {
         if (Dot > 8 || (OemName->Length - Dot > 4) || Dot == OemName->Length - 1) return FALSE;
     }
+
     if (NameContainsSpaces) *NameContainsSpaces = GotSpace;
+
     return TRUE;
 }