* Sync up to trunk head (r65183).
authorAmine Khaldi <amine.khaldi@reactos.org>
Sun, 2 Nov 2014 16:12:38 +0000 (16:12 +0000)
committerAmine Khaldi <amine.khaldi@reactos.org>
Sun, 2 Nov 2014 16:12:38 +0000 (16:12 +0000)
svn path=/branches/shell-experiments/; revision=65184

81 files changed:
base/applications/network/net/cmdUser.c
base/applications/rapps/winmain.c
base/services/eventlog/rpc.c
base/services/umpnpmgr/umpnpmgr.c
base/setup/usetup/interface/usetup.c
base/setup/usetup/partlist.c
dll/win32/kernel32/client/console/alias.c
dll/win32/kernel32/client/console/console.c
dll/win32/kernel32/client/console/history.c
dll/win32/kernel32/client/console/readwrite.c
dll/win32/kernel32/client/console/vista.c
dll/win32/kernel32/client/version.c
dll/win32/kernel32/kernel32.rc
dll/win32/kernel32/winnls/lang/cs-CZ.rc
dll/win32/kernel32/winnls/lang/de-DE.rc
dll/win32/kernel32/winnls/lang/en-US.rc
dll/win32/kernel32/winnls/lang/es-ES.rc
dll/win32/kernel32/winnls/lang/fr-FR.rc
dll/win32/kernel32/winnls/lang/ro-RO.rc
dll/win32/kernel32/winnls/lang/ru-RU.rc
dll/win32/kernel32/winnls/lang/sq-AL.rc
dll/win32/kernel32/winnls/lang/tr-TR.rc
dll/win32/kernel32/winnls/lang/uk-UA.rc
dll/win32/kernel32/winnls/string/lang.c
dll/win32/kernel32/winnls/string/nls.c
dll/win32/msgina/msgina.c
dll/win32/newdev/wizard.c
dll/win32/shell32/openwithmenu.cpp
dll/win32/shell32/shlfileop.cpp
dll/win32/syssetup/security.c
drivers/bus/acpi/busmgr/bus.c
drivers/bus/acpi/main.c
drivers/bus/pci/pdo.c
drivers/filesystems/fastfat/close.c
drivers/filesystems/fastfat/create.c
drivers/filesystems/fastfat/fcb.c
drivers/filesystems/fastfat/fsctl.c
drivers/filesystems/ntfs/fsctl.c
drivers/network/ndis/ndis/miniport.c
drivers/network/ndis/ndis/protocol.c
drivers/sac/driver/concmd.c
drivers/sac/driver/conmgr.c
drivers/sac/driver/data.c
drivers/sac/driver/util.c
drivers/usb/usbhub/fdo.c
drivers/usb/usbohci/hardware.cpp
hal/halx86/acpi/halpnpdd.c
hal/halx86/legacy/halpnpdd.c
include/psdk/winioctl.h
include/reactos/undocshell.h
lib/cmlib/hivewrt.c
lib/drivers/libusb/hub_controller.cpp
lib/drivers/libusb/libusb.cpp
lib/fslib/ext2lib/Mke2fs.c
lib/lsalib/lsa.c
ntoskrnl/ex/init.c
ntoskrnl/ex/shutdown.c
ntoskrnl/io/iomgr/arcname.c
ntoskrnl/io/pnpmgr/pnpmgr.c
ntoskrnl/io/pnpmgr/pnpreport.c
ntoskrnl/io/pnpmgr/pnpres.c
ntoskrnl/mm/ARM3/zeropage.c
ntoskrnl/po/poshtdwn.c
ntoskrnl/po/povolume.c
ntoskrnl/po/power.c
ntoskrnl/se/sd.c
subsystems/win/basesrv/proc.c
subsystems/win/basesrv/vdm.c
subsystems/win32/csrsrv/init.c
win32ss/drivers/videoprt/registry.c
win32ss/gdi/ntgdi/freetype.c
win32ss/user/ntuser/desktop.c
win32ss/user/ntuser/display.c
win32ss/user/ntuser/focus.c
win32ss/user/ntuser/hotkey.c
win32ss/user/ntuser/keyboard.c
win32ss/user/ntuser/msgqueue.c
win32ss/user/ntuser/ntuser.c
win32ss/user/user32/misc/dllmain.c
win32ss/user/user32/windows/window.c
win32ss/user/winsrv/consrv/frontends/gui/conwnd.c

index 9f9dcb2..c9d07c4 100644 (file)
@@ -130,7 +130,12 @@ DisplayUser(LPWSTR lpUserName)
 {
     PUSER_MODALS_INFO_0 pUserModals = NULL;
     PUSER_INFO_4 pUserInfo = NULL;
+    PLOCALGROUP_USERS_INFO_0 pLocalGroupInfo = NULL;
+    PGROUP_USERS_INFO_0 pGroupInfo = NULL;
+    DWORD dwLocalGroupRead, dwLocalGroupTotal;
+    DWORD dwGroupRead, dwGroupTotal;
     DWORD dwLastSet;
+    DWORD i;
     NET_API_STATUS Status;
 
     /* Modify the user */
@@ -147,6 +152,27 @@ DisplayUser(LPWSTR lpUserName)
     if (Status != NERR_Success)
         goto done;
 
+    Status = NetUserGetLocalGroups(NULL,
+                                   lpUserName,
+                                   0,
+                                   0,
+                                   (LPBYTE*)&pLocalGroupInfo,
+                                   MAX_PREFERRED_LENGTH,
+                                   &dwLocalGroupRead,
+                                   &dwLocalGroupTotal);
+    if (Status != NERR_Success)
+        goto done;
+
+    Status = NetUserGetGroups(NULL,
+                              lpUserName,
+                              0,
+                              (LPBYTE*)&pGroupInfo,
+                              MAX_PREFERRED_LENGTH,
+                              &dwGroupRead,
+                              &dwGroupTotal);
+    if (Status != NERR_Success)
+        goto done;
+
     PrintToConsole(L"User name                    %s\n", pUserInfo->usri4_name);
     PrintToConsole(L"Full name                    %s\n", pUserInfo->usri4_full_name);
     PrintToConsole(L"Comment                      %s\n", pUserInfo->usri4_comment);
@@ -161,7 +187,7 @@ DisplayUser(LPWSTR lpUserName)
 
     PrintToConsole(L"\n");
 
-    PrintToConsole(L"Password expires             ");
+    PrintToConsole(L"Password last set            ");
     dwLastSet = GetTimeInSeconds() - pUserInfo->usri4_password_age;
     PrintDateTime(dwLastSet);
 
@@ -178,7 +204,7 @@ DisplayUser(LPWSTR lpUserName)
     PrintToConsole(L"User may change password     %s\n", (pUserInfo->usri4_flags & UF_PASSWD_CANT_CHANGE) ? L"No" : L"Yes");
 
     PrintToConsole(L"\n");
-    PrintToConsole(L"Workstation allowed          %s\n", pUserInfo->usri4_workstations);
+    PrintToConsole(L"Workstations allowed         %s\n", (pUserInfo->usri4_workstations == NULL || wcslen(pUserInfo->usri4_workstations) == 0) ? L"All" : pUserInfo->usri4_workstations);
     PrintToConsole(L"Logon script                 %s\n", pUserInfo->usri4_script_path);
     PrintToConsole(L"User profile                 %s\n", pUserInfo->usri4_profile);
     PrintToConsole(L"Home directory               %s\n", pUserInfo->usri4_home_dir);
@@ -188,12 +214,49 @@ DisplayUser(LPWSTR lpUserName)
     else
         PrintDateTime(pUserInfo->usri4_last_logon);
     PrintToConsole(L"\n");
-    PrintToConsole(L"Logon hours allowed          \n");
+    PrintToConsole(L"Logon hours allowed          ");
+    if (pUserInfo->usri4_logon_hours == NULL)
+        PrintToConsole(L"All\n");
     PrintToConsole(L"\n");
-    PrintToConsole(L"Local group memberships      \n");
-    PrintToConsole(L"Global group memberships     \n");
+
+    PrintToConsole(L"\n");
+    PrintToConsole(L"Local group memberships      ");
+    if (dwLocalGroupTotal != 0 && pLocalGroupInfo != NULL)
+    {
+        for (i = 0; i < dwLocalGroupTotal; i++)
+        {
+            if (i != 0)
+                PrintToConsole(L"                             ");
+            PrintToConsole(L"*%s\n", pLocalGroupInfo[i].lgrui0_name);
+        }
+    }
+    else
+    {
+        PrintToConsole(L"\n");
+    }
+
+    PrintToConsole(L"Global group memberships     ");
+    if (dwGroupTotal != 0 && pGroupInfo != NULL)
+    {
+        for (i = 0; i < dwGroupTotal; i++)
+        {
+            if (i != 0)
+                PrintToConsole(L"                             ");
+            PrintToConsole(L"*%s\n", pGroupInfo[i].grui0_name);
+        }
+    }
+    else
+    {
+        PrintToConsole(L"\n");
+    }
 
 done:
+    if (pGroupInfo != NULL)
+        NetApiBufferFree(pGroupInfo);
+
+    if (pLocalGroupInfo != NULL)
+        NetApiBufferFree(pLocalGroupInfo);
+
     if (pUserModals != NULL)
         NetApiBufferFree(pUserModals);
 
@@ -221,6 +284,8 @@ cmdUser(
     PUSER_INFO_4 pUserInfo = NULL;
     USER_INFO_4 UserInfo;
     LPWSTR p;
+    LPWSTR endptr;
+    DWORD value;
     NET_API_STATUS Status;
 
     if (argc == 2)
@@ -288,7 +353,12 @@ cmdUser(
                                 lpUserName,
                                 4,
                                 (LPBYTE*)&pUserInfo);
-        printf("Status: %lu\n", Status);
+        if (Status != NERR_Success)
+        {
+            printf("Status: %lu\n", Status);
+            result = 1;
+            goto done;
+        }
     }
     else if (bAdd && !bDelete)
     {
@@ -309,11 +379,11 @@ cmdUser(
             p = &argv[i][8];
             if (_wcsicmp(p, L"yes") == 0)
             {
-
+                pUserInfo->usri4_flags &= ~UF_ACCOUNTDISABLE;
             }
             else if (_wcsicmp(p, L"no") == 0)
             {
-
+                pUserInfo->usri4_flags |= UF_ACCOUNTDISABLE;
             }
             else
             {
@@ -328,6 +398,18 @@ cmdUser(
         }
         else if (_wcsnicmp(argv[j], L"/countrycode:", 13) == 0)
         {
+            p = &argv[i][13];
+            value = wcstoul(p, &endptr, 10);
+            if (*endptr != 0)
+            {
+                PrintToConsole(L"You entered an invalid value for the /COUNTRYCODE option.\n");
+                result = 1;
+                goto done;
+            }
+
+            /* FIXME: verify the country code */
+
+            pUserInfo->usri4_country_code = value;
         }
         else if (_wcsnicmp(argv[j], L"/expires:", 9) == 0)
         {
@@ -342,9 +424,39 @@ cmdUser(
         }
         else if (_wcsnicmp(argv[j], L"/passwordchg:", 13) == 0)
         {
+            p = &argv[i][13];
+            if (_wcsicmp(p, L"yes") == 0)
+            {
+                pUserInfo->usri4_flags &= ~UF_PASSWD_CANT_CHANGE;
+            }
+            else if (_wcsicmp(p, L"no") == 0)
+            {
+                pUserInfo->usri4_flags |= UF_PASSWD_CANT_CHANGE;
+            }
+            else
+            {
+                PrintToConsole(L"You entered an invalid value for the /PASSWORDCHG option.\n");
+                result = 1;
+                goto done;
+            }
         }
         else if (_wcsnicmp(argv[j], L"/passwordreq:", 13) == 0)
         {
+            p = &argv[i][13];
+            if (_wcsicmp(p, L"yes") == 0)
+            {
+                pUserInfo->usri4_flags &= ~UF_PASSWD_NOTREQD;
+            }
+            else if (_wcsicmp(p, L"no") == 0)
+            {
+                pUserInfo->usri4_flags |= UF_PASSWD_NOTREQD;
+            }
+            else
+            {
+                PrintToConsole(L"You entered an invalid value for the /PASSWORDREQ option.\n");
+                result = 1;
+                goto done;
+            }
         }
         else if (_wcsnicmp(argv[j], L"/profilepath:", 13) == 0)
         {
index f7b3dbd..92d3ed3 100644 (file)
@@ -545,11 +545,14 @@ MainWndOnSize(HWND hwnd, WPARAM wParam, LPARAM lParam)
                    HIWORD(lParam) - GetWindowHeight(hToolBar) - GetWindowHeight(hStatusBar),
                    SWP_NOZORDER|SWP_NOACTIVATE);
 
-    while (NewPos < SPLIT_WIDTH + GetWindowHeight(hToolBar))
+    if(wParam != SIZE_MINIMIZED)
     {
-        RichPos--;
-        NewPos = HIWORD(lParam) - (RichPos +
-                 SPLIT_WIDTH + GetWindowHeight(hStatusBar));
+        while (NewPos < SPLIT_WIDTH + GetWindowHeight(hToolBar))
+        {
+            RichPos--;
+            NewPos = HIWORD(lParam) - (RichPos +
+                     SPLIT_WIDTH + GetWindowHeight(hStatusBar));
+        }
     }
     SetHSplitterPos(NewPos);
 
index 99f8d72..403e827 100644 (file)
@@ -118,6 +118,14 @@ ElfCreateEventLogHandle(PLOGHANDLE *LogHandle,
         if (lpLogHandle->LogFile == NULL)
         {
             lpLogHandle->LogFile = LogfListItemByName(L"Application");
+
+            if (lpLogHandle->LogFile == NULL)
+            {
+                DPRINT1("Application log is missing!\n");
+                Status = STATUS_UNSUCCESSFUL;
+                goto Done;
+            }
+
             lpLogHandle->CurrentRecord = LogfGetOldestRecord(lpLogHandle->LogFile);
         }
     }
index eb80514..c28d9ab 100644 (file)
@@ -1683,7 +1683,7 @@ PNP_CreateDevInst(
             dwInstanceNumber++;
         }
         while (ret == CR_ALREADY_SUCH_DEVINST);
-        
+
         if (ret == CR_SUCCESS)
         {
             /* pszDeviceID is an out parameter too for generated IDs */
@@ -3106,7 +3106,10 @@ cleanup:
     if(ProcessInfo.hThread)
         CloseHandle(ProcessInfo.hThread);
 
-    DPRINT1("Success? %d\n", DeviceInstalled);
+    if (!DeviceInstalled)
+    {
+        DPRINT1("InstallDevice failed for DeviceInstance '%ws'\n", DeviceInstance);
+    }
 
     return DeviceInstalled;
 }
index 7ea98bb..25c95f1 100644 (file)
@@ -2757,7 +2757,7 @@ FormatPartitionPage(PINPUT_RECORD Ir)
 #if 0
             else if (wcscmp(FileSystemList->Selected->FileSystem, L"EXT2") == 0)
             {
-                PartEntry->PartInfo[PartNum].PartitionType = PARTITION_EXT2;
+                PartEntry->PartitionType = PARTITION_EXT2;
                 DiskEntry->LayoutBuffer->PartitionEntry[PartEntry->PartitionIndex].PartitionType = PartEntry->PartitionType;
             }
 #endif
index 0e0bbc9..6f8cd09 100644 (file)
@@ -47,7 +47,7 @@ DumpPartitionTable(
     for (i = 0; i < DiskEntry->LayoutBuffer->PartitionCount; i++)
     {
         PartitionInfo = &DiskEntry->LayoutBuffer->PartitionEntry[i];
-        DbgPrint("%lu: %12I64u  %12I64u  %10lu  %2lu  %2x  %c  %c\n",
+        DPRINT("\n%lu: %12I64u  %12I64u  %10lu  %2lu  %2x  %c  %c\n",
                 i,
                 PartitionInfo->StartingOffset.QuadPart,
                 PartitionInfo->PartitionLength.QuadPart,
@@ -638,7 +638,7 @@ ScanForUnpartitionedDiskSpace(
     PPARTENTRY NewPartEntry;
     PLIST_ENTRY Entry;
 
-    DPRINT1("ScanForUnpartitionedDiskSpace()\n");
+    DPRINT("ScanForUnpartitionedDiskSpace()\n");
 
     if (IsListEmpty(&DiskEntry->PrimaryPartListHead))
     {
@@ -741,9 +741,9 @@ DPRINT1("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart);
             NewPartEntry->StartSector.QuadPart = LastStartSector + LastSectorCount;
             NewPartEntry->SectorCount.QuadPart = Align(NewPartEntry->StartSector.QuadPart + LastUnusedSectorCount, DiskEntry->SectorAlignment) -
                                                  NewPartEntry->StartSector.QuadPart;
-DPRINT1("First Sector: %I64u\n", NewPartEntry->StartSector.QuadPart);
-DPRINT1("Last Sector: %I64u\n", NewPartEntry->StartSector.QuadPart + NewPartEntry->SectorCount.QuadPart - 1);
-DPRINT1("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart);
+            DPRINT("First Sector: %I64u\n", NewPartEntry->StartSector.QuadPart);
+            DPRINT("Last Sector: %I64u\n", NewPartEntry->StartSector.QuadPart + NewPartEntry->SectorCount.QuadPart - 1);
+            DPRINT("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart);
 
             NewPartEntry->FormatState = Unformatted;
 
@@ -819,9 +819,9 @@ DPRINT1("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart);
                     NewPartEntry->StartSector.QuadPart = LastStartSector + LastSectorCount;
                     NewPartEntry->SectorCount.QuadPart = Align(NewPartEntry->StartSector.QuadPart + LastUnusedSectorCount, DiskEntry->SectorAlignment) -
                                                          NewPartEntry->StartSector.QuadPart;
-DPRINT1("First Sector: %I64u\n", NewPartEntry->StartSector.QuadPart);
-DPRINT1("Last Sector: %I64u\n", NewPartEntry->StartSector.QuadPart + NewPartEntry->SectorCount.QuadPart - 1);
-DPRINT1("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart);
+                    DPRINT("First Sector: %I64u\n", NewPartEntry->StartSector.QuadPart);
+                    DPRINT("Last Sector: %I64u\n", NewPartEntry->StartSector.QuadPart + NewPartEntry->SectorCount.QuadPart - 1);
+                    DPRINT("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart);
 
                     NewPartEntry->FormatState = Unformatted;
 
@@ -859,9 +859,9 @@ DPRINT1("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart);
                 NewPartEntry->StartSector.QuadPart = LastStartSector + LastSectorCount;
                 NewPartEntry->SectorCount.QuadPart = Align(NewPartEntry->StartSector.QuadPart + LastUnusedSectorCount, DiskEntry->SectorAlignment) -
                                                      NewPartEntry->StartSector.QuadPart;
-DPRINT1("First Sector: %I64u\n", NewPartEntry->StartSector.QuadPart);
-DPRINT1("Last Sector: %I64u\n", NewPartEntry->StartSector.QuadPart + NewPartEntry->SectorCount.QuadPart - 1);
-DPRINT1("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart);
+                DPRINT("First Sector: %I64u\n", NewPartEntry->StartSector.QuadPart);
+                DPRINT("Last Sector: %I64u\n", NewPartEntry->StartSector.QuadPart + NewPartEntry->SectorCount.QuadPart - 1);
+                DPRINT("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart);
 
                 NewPartEntry->FormatState = Unformatted;
 
@@ -872,7 +872,7 @@ DPRINT1("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart);
         }
     }
 
-    DPRINT1("ScanForUnpartitionedDiskSpace() done\n");
+    DPRINT("ScanForUnpartitionedDiskSpace() done\n");
 }
 
 
@@ -1132,8 +1132,8 @@ AddDiskToList(
 
     DiskEntry->SectorAlignment = DiskGeometry.SectorsPerTrack;
 
-    DPRINT1("SectorCount %I64u\n", DiskEntry->SectorCount);
-    DPRINT1("SectorAlignment %lu\n", DiskEntry->SectorAlignment);
+    DPRINT("SectorCount %I64u\n", DiskEntry->SectorCount);
+    DPRINT("SectorAlignment %lu\n", DiskEntry->SectorAlignment);
 
     DiskEntry->DiskNumber = DiskNumber;
     DiskEntry->Port = ScsiAddress.PortNumber;
@@ -1145,7 +1145,7 @@ AddDiskToList(
     InsertAscendingList(&List->DiskListHead, DiskEntry, DISKENTRY, ListEntry, DiskNumber);
 
     /*
-     * Allocate a buffer for 26 logical drives (2 entries each == 52) 
+     * Allocate a buffer for 26 logical drives (2 entries each == 52)
      * plus the main partiton table (4 entries). Total 56 entries.
      */
     LayoutBufferSize = sizeof(DRIVE_LAYOUT_INFORMATION) +
@@ -1180,7 +1180,7 @@ AddDiskToList(
         {
             if ((DiskEntry->LayoutBuffer->PartitionEntry[0].StartingOffset.QuadPart / DiskEntry->BytesPerSector) % DiskEntry->SectorsPerTrack == 0)
             {
-                DPRINT1("Use %lu Sector alignment!\n", DiskEntry->SectorsPerTrack);
+                DPRINT("Use %lu Sector alignment!\n", DiskEntry->SectorsPerTrack);
             }
             else if (DiskEntry->LayoutBuffer->PartitionEntry[0].StartingOffset.QuadPart % 1048756 == 0)
             {
index a949c75..cb05c89 100644 (file)
@@ -116,6 +116,7 @@ IntAddConsoleAlias(LPCVOID Source,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 AddConsoleAliasW(LPCWSTR lpSource,
                  LPCWSTR lpTarget,
                  LPCWSTR lpExeName)
@@ -140,6 +141,7 @@ AddConsoleAliasW(LPCWSTR lpSource,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 AddConsoleAliasA(LPCSTR lpSource,
                  LPCSTR lpTarget,
                  LPCSTR lpExeName)
@@ -254,6 +256,7 @@ IntGetConsoleAlias(LPVOID Source,
  */
 DWORD
 WINAPI
+DECLSPEC_HOTPATCH
 GetConsoleAliasW(LPWSTR lpSource,
                  LPWSTR lpTargetBuffer,
                  DWORD TargetBufferLength,
@@ -276,6 +279,7 @@ GetConsoleAliasW(LPWSTR lpSource,
  */
 DWORD
 WINAPI
+DECLSPEC_HOTPATCH
 GetConsoleAliasA(LPSTR lpSource,
                  LPSTR lpTargetBuffer,
                  DWORD TargetBufferLength,
@@ -368,6 +372,7 @@ IntGetConsoleAliases(LPVOID  AliasBuffer,
  */
 DWORD
 WINAPI
+DECLSPEC_HOTPATCH
 GetConsoleAliasesW(LPWSTR AliasBuffer,
                    DWORD AliasBufferLength,
                    LPWSTR ExeName)
@@ -387,6 +392,7 @@ GetConsoleAliasesW(LPWSTR AliasBuffer,
  */
 DWORD
 WINAPI
+DECLSPEC_HOTPATCH
 GetConsoleAliasesA(LPSTR AliasBuffer,
                    DWORD AliasBufferLength,
                    LPSTR ExeName)
@@ -456,6 +462,7 @@ IntGetConsoleAliasesLength(LPVOID lpExeName, BOOLEAN bUnicode)
  */
 DWORD
 WINAPI
+DECLSPEC_HOTPATCH
 GetConsoleAliasesLengthW(LPWSTR lpExeName)
 {
     return IntGetConsoleAliasesLength(lpExeName, TRUE);
@@ -467,6 +474,7 @@ GetConsoleAliasesLengthW(LPWSTR lpExeName)
  */
 DWORD
 WINAPI
+DECLSPEC_HOTPATCH
 GetConsoleAliasesLengthA(LPSTR lpExeName)
 {
     return IntGetConsoleAliasesLength(lpExeName, FALSE);
@@ -523,6 +531,7 @@ IntGetConsoleAliasExes(PVOID lpExeNameBuffer,
  */
 DWORD
 WINAPI
+DECLSPEC_HOTPATCH
 GetConsoleAliasExesW(LPWSTR lpExeNameBuffer,
                      DWORD ExeNameBufferLength)
 {
@@ -536,6 +545,7 @@ GetConsoleAliasExesW(LPWSTR lpExeNameBuffer,
  */
 DWORD
 WINAPI
+DECLSPEC_HOTPATCH
 GetConsoleAliasExesA(LPSTR lpExeNameBuffer,
                      DWORD ExeNameBufferLength)
 {
@@ -572,6 +582,7 @@ IntGetConsoleAliasExesLength(BOOLEAN bUnicode)
  */
 DWORD
 WINAPI
+DECLSPEC_HOTPATCH
 GetConsoleAliasExesLengthW(VOID)
 {
     DPRINT1("GetConsoleAliasExesLengthW called\n");
@@ -584,6 +595,7 @@ GetConsoleAliasExesLengthW(VOID)
  */
 DWORD
 WINAPI
+DECLSPEC_HOTPATCH
 GetConsoleAliasExesLengthA(VOID)
 {
     DPRINT1("GetConsoleAliasExesLengthA called\n");
index ee630cb..df6c02f 100644 (file)
@@ -392,6 +392,7 @@ IntCheckForConsoleFileName(IN LPCWSTR pszName,
  */
 HMENU
 WINAPI
+DECLSPEC_HOTPATCH
 ConsoleMenuControl(HANDLE hConsoleOutput,
                    DWORD dwCmdIdLow,
                    DWORD dwCmdIdHigh)
@@ -419,6 +420,7 @@ ConsoleMenuControl(HANDLE hConsoleOutput,
  */
 HANDLE
 WINAPI
+DECLSPEC_HOTPATCH
 DuplicateConsoleHandle(HANDLE hConsole,
                        DWORD dwDesiredAccess,
                        BOOL bInheritHandle,
@@ -571,6 +573,7 @@ GetConsoleFontInfo(HANDLE hConsoleOutput,
  */
 COORD
 WINAPI
+DECLSPEC_HOTPATCH
 GetConsoleFontSize(HANDLE hConsoleOutput,
                    DWORD nFont)
 {
@@ -652,6 +655,7 @@ GetCurrentConsoleFont(HANDLE hConsoleOutput,
  */
 ULONG
 WINAPI
+DECLSPEC_HOTPATCH
 GetNumberOfConsoleFonts(VOID)
 {
     DPRINT1("GetNumberOfConsoleFonts() UNIMPLEMENTED!\n");
@@ -757,6 +761,7 @@ OpenConsoleW(LPCWSTR wsName,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 SetConsoleCursor(HANDLE  hConsoleOutput,
                  HCURSOR hCursor)
 {
@@ -822,6 +827,7 @@ SetConsoleDisplayMode(HANDLE hConsoleOutput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 SetConsoleFont(HANDLE hConsoleOutput,
                DWORD nFont)
 {
@@ -869,6 +875,7 @@ SetConsoleHardwareState(HANDLE hConsoleOutput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 SetConsoleKeyShortcuts(DWORD Unknown0,
                        DWORD Unknown1,
                        DWORD Unknown2,
@@ -901,6 +908,7 @@ SetConsoleMaximumWindowSize(HANDLE hConsoleOutput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 SetConsoleMenuClose(BOOL bEnable)
 {
     CONSOLE_API_MESSAGE ApiMessage;
@@ -930,6 +938,7 @@ SetConsoleMenuClose(BOOL bEnable)
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 SetConsolePalette(HANDLE hConsoleOutput,
                   HPALETTE hPalette,
                   UINT dwUsage)
@@ -961,6 +970,7 @@ SetConsolePalette(HANDLE hConsoleOutput,
  */
 INT
 WINAPI
+DECLSPEC_HOTPATCH
 ShowConsoleCursor(HANDLE hConsoleOutput,
                   BOOL bShow)
 {
@@ -997,6 +1007,7 @@ ShowConsoleCursor(HANDLE hConsoleOutput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 VerifyConsoleIoHandle(HANDLE hIoHandle)
 {
     CONSOLE_API_MESSAGE ApiMessage;
@@ -1028,6 +1039,7 @@ VerifyConsoleIoHandle(HANDLE hIoHandle)
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 CloseConsoleHandle(HANDLE hHandle)
 {
     CONSOLE_API_MESSAGE ApiMessage;
@@ -1055,6 +1067,7 @@ CloseConsoleHandle(HANDLE hHandle)
  */
 HANDLE
 WINAPI
+DECLSPEC_HOTPATCH
 GetStdHandle(DWORD nStdHandle)
 /*
  * FUNCTION: Get a handle for the standard input, standard output
@@ -1097,6 +1110,7 @@ GetStdHandle(DWORD nStdHandle)
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 SetStdHandle(DWORD  nStdHandle,
              HANDLE hHandle)
 /*
@@ -1249,6 +1263,7 @@ Quit:
 
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 AllocConsole(VOID)
 {
     BOOL Success;
@@ -1331,6 +1346,7 @@ Quit:
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 FreeConsole(VOID)
 {
     CONSOLE_API_MESSAGE ApiMessage;
@@ -1419,6 +1435,7 @@ GetConsoleScreenBufferInfo(HANDLE hConsoleOutput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 SetConsoleCursorPosition(HANDLE hConsoleOutput,
                          COORD dwCursorPosition)
 {
@@ -1484,6 +1501,7 @@ GetConsoleMode(HANDLE hConsoleHandle,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 SetConsoleMode(HANDLE hConsoleHandle,
                DWORD dwMode)
 {
@@ -1550,6 +1568,7 @@ GetNumberOfConsoleInputEvents(HANDLE hConsoleInput,
  */
 COORD
 WINAPI
+DECLSPEC_HOTPATCH
 GetLargestConsoleWindowSize(HANDLE hConsoleOutput)
 {
     CONSOLE_API_MESSAGE ApiMessage;
@@ -1675,6 +1694,7 @@ GetNumberOfConsoleMouseButtons(LPDWORD lpNumberOfMouseButtons)
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 SetConsoleActiveScreenBuffer(HANDLE hConsoleOutput)
 {
     CONSOLE_API_MESSAGE ApiMessage;
@@ -1702,6 +1722,7 @@ SetConsoleActiveScreenBuffer(HANDLE hConsoleOutput)
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 FlushConsoleInputBuffer(HANDLE hConsoleInput)
 {
     CONSOLE_API_MESSAGE ApiMessage;
@@ -1729,6 +1750,7 @@ FlushConsoleInputBuffer(HANDLE hConsoleInput)
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 SetConsoleScreenBufferSize(HANDLE hConsoleOutput,
                            COORD dwSize)
 {
@@ -1802,6 +1824,7 @@ IntScrollConsoleScreenBuffer(HANDLE hConsoleOutput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 ScrollConsoleScreenBufferA(HANDLE hConsoleOutput,
                            CONST SMALL_RECT* lpScrollRectangle,
                            CONST SMALL_RECT* lpClipRectangle,
@@ -1822,6 +1845,7 @@ ScrollConsoleScreenBufferA(HANDLE hConsoleOutput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 ScrollConsoleScreenBufferW(HANDLE hConsoleOutput,
                            CONST SMALL_RECT *lpScrollRectangle,
                            CONST SMALL_RECT *lpClipRectangle,
@@ -1879,6 +1903,7 @@ SetConsoleWindowInfo(HANDLE hConsoleOutput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 SetConsoleTextAttribute(HANDLE hConsoleOutput,
                         WORD wAttributes)
 {
@@ -1979,6 +2004,7 @@ RemoveConsoleCtrlHandler(PHANDLER_ROUTINE HandlerRoutine)
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 SetConsoleCtrlHandler(PHANDLER_ROUTINE HandlerRoutine,
                       BOOL Add)
 {
@@ -2004,6 +2030,7 @@ SetConsoleCtrlHandler(PHANDLER_ROUTINE HandlerRoutine,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 GenerateConsoleCtrlEvent(DWORD dwCtrlEvent,
                          DWORD dwProcessGroupId)
 {
@@ -2093,6 +2120,7 @@ IntGetConsoleTitle(LPVOID lpConsoleTitle, DWORD dwNumChars, BOOLEAN bUnicode)
  */
 DWORD
 WINAPI
+DECLSPEC_HOTPATCH
 GetConsoleTitleW(LPWSTR lpConsoleTitle,
                  DWORD nSize)
 {
@@ -2105,6 +2133,7 @@ GetConsoleTitleW(LPWSTR lpConsoleTitle,
  */
 DWORD
 WINAPI
+DECLSPEC_HOTPATCH
 GetConsoleTitleA(LPSTR lpConsoleTitle,
                  DWORD nSize)
 {
@@ -2159,6 +2188,7 @@ IntSetConsoleTitle(CONST VOID *lpConsoleTitle, BOOLEAN bUnicode)
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 SetConsoleTitleW(LPCWSTR lpConsoleTitle)
 {
     return IntSetConsoleTitle(lpConsoleTitle, TRUE);
@@ -2170,6 +2200,7 @@ SetConsoleTitleW(LPCWSTR lpConsoleTitle)
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 SetConsoleTitleA(LPCSTR lpConsoleTitle)
 {
     return IntSetConsoleTitle(lpConsoleTitle, FALSE);
@@ -2258,6 +2289,7 @@ CreateConsoleScreenBuffer(DWORD dwDesiredAccess,
  */
 UINT
 WINAPI
+DECLSPEC_HOTPATCH
 GetConsoleCP(VOID)
 {
     CONSOLE_API_MESSAGE ApiMessage;
@@ -2286,6 +2318,7 @@ GetConsoleCP(VOID)
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 SetConsoleCP(UINT wCodePageID)
 {
     CONSOLE_API_MESSAGE ApiMessage;
@@ -2316,6 +2349,7 @@ SetConsoleCP(UINT wCodePageID)
  */
 UINT
 WINAPI
+DECLSPEC_HOTPATCH
 GetConsoleOutputCP(VOID)
 {
     CONSOLE_API_MESSAGE ApiMessage;
@@ -2344,6 +2378,7 @@ GetConsoleOutputCP(VOID)
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 SetConsoleOutputCP(UINT wCodePageID)
 {
     CONSOLE_API_MESSAGE ApiMessage;
@@ -2594,6 +2629,7 @@ Quit:
  */
 HWND
 WINAPI
+DECLSPEC_HOTPATCH
 GetConsoleWindow(VOID)
 {
     CONSOLE_API_MESSAGE ApiMessage;
@@ -2620,6 +2656,7 @@ GetConsoleWindow(VOID)
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 SetConsoleIcon(HICON hIcon)
 {
     CONSOLE_API_MESSAGE ApiMessage;
@@ -2652,6 +2689,7 @@ SetConsoleIcon(HICON hIcon)
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 SetConsoleInputExeNameW(IN LPWSTR lpExeName)
 {
     DWORD ExeLength;
@@ -2691,6 +2729,7 @@ SetConsoleInputExeNameW(IN LPWSTR lpExeName)
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 SetConsoleInputExeNameA(IN LPSTR lpExeName)
 {
     NTSTATUS Status;
@@ -2766,6 +2805,7 @@ SetConsoleInputExeNameA(IN LPSTR lpExeName)
  */
 DWORD
 WINAPI
+DECLSPEC_HOTPATCH
 GetConsoleInputExeNameW(IN DWORD nBufferLength,
                         OUT LPWSTR lpExeName)
 {
@@ -2804,6 +2844,7 @@ GetConsoleInputExeNameW(IN DWORD nBufferLength,
  */
 DWORD
 WINAPI
+DECLSPEC_HOTPATCH
 GetConsoleInputExeNameA(IN DWORD nBufferLength,
                         OUT LPSTR lpExeName)
 {
@@ -2850,6 +2891,7 @@ GetConsoleCharType(HANDLE hConsole, COORD Coord, PDWORD Type)
 
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 GetConsoleCursorMode(HANDLE hConsole, PBOOL pUnknown1, PBOOL pUnknown2)
 {
     STUB;
@@ -2858,6 +2900,7 @@ GetConsoleCursorMode(HANDLE hConsole, PBOOL pUnknown1, PBOOL pUnknown2)
 
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 SetConsoleCursorMode(HANDLE hConsole, BOOL Unknown1, BOOL Unknown2)
 {
     STUB;
@@ -2866,6 +2909,7 @@ SetConsoleCursorMode(HANDLE hConsole, BOOL Unknown1, BOOL Unknown2)
 
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 GetConsoleNlsMode(HANDLE hConsole, LPDWORD lpMode)
 {
     STUB;
@@ -2874,6 +2918,7 @@ GetConsoleNlsMode(HANDLE hConsole, LPDWORD lpMode)
 
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 SetConsoleNlsMode(HANDLE hConsole, DWORD dwMode)
 {
     STUB;
@@ -2882,6 +2927,7 @@ SetConsoleNlsMode(HANDLE hConsole, DWORD dwMode)
 
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 SetConsoleLocalEUDC(DWORD Unknown1, DWORD Unknown2, DWORD Unknown3, DWORD Unknown4)
 {
     STUB;
@@ -2890,6 +2936,7 @@ SetConsoleLocalEUDC(DWORD Unknown1, DWORD Unknown2, DWORD Unknown3, DWORD Unknow
 
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 RegisterConsoleIME(HWND hWnd, LPDWORD ThreadId)
 {
     STUB;
@@ -2898,6 +2945,7 @@ RegisterConsoleIME(HWND hWnd, LPDWORD ThreadId)
 
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 RegisterConsoleOS2(BOOL bUnknown)
 {
     STUB;
@@ -2906,6 +2954,7 @@ RegisterConsoleOS2(BOOL bUnknown)
 
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 SetConsoleOS2OemFormat(BOOL bUnknown)
 {
     STUB;
@@ -2914,6 +2963,7 @@ SetConsoleOS2OemFormat(BOOL bUnknown)
 
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 UnregisterConsoleIME(VOID)
 {
     STUB;
@@ -2921,6 +2971,7 @@ UnregisterConsoleIME(VOID)
 }
 
 
+static
 BOOL
 IntGetConsoleKeyboardLayoutName(OUT PVOID pszLayoutName,
                                 IN BOOL bAnsi)
@@ -2969,6 +3020,7 @@ IntGetConsoleKeyboardLayoutName(OUT PVOID pszLayoutName,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 GetConsoleKeyboardLayoutNameA(OUT LPSTR pszLayoutName)
 {
     return IntGetConsoleKeyboardLayoutName(pszLayoutName, TRUE);
@@ -2979,6 +3031,7 @@ GetConsoleKeyboardLayoutNameA(OUT LPSTR pszLayoutName)
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 GetConsoleKeyboardLayoutNameW(OUT LPWSTR pszLayoutName)
 {
     return IntGetConsoleKeyboardLayoutName(pszLayoutName, FALSE);
index fdc5826..e874ca4 100644 (file)
@@ -246,6 +246,7 @@ IntSetConsoleNumberOfCommands(DWORD dwNumCommands,
  */
 VOID
 WINAPI
+DECLSPEC_HOTPATCH
 ExpungeConsoleCommandHistoryW(LPCWSTR lpExeName)
 {
     IntExpungeConsoleCommandHistory(lpExeName, TRUE);
@@ -257,6 +258,7 @@ ExpungeConsoleCommandHistoryW(LPCWSTR lpExeName)
  */
 VOID
 WINAPI
+DECLSPEC_HOTPATCH
 ExpungeConsoleCommandHistoryA(LPCSTR lpExeName)
 {
     IntExpungeConsoleCommandHistory(lpExeName, FALSE);
@@ -268,6 +270,7 @@ ExpungeConsoleCommandHistoryA(LPCSTR lpExeName)
  */
 DWORD
 WINAPI
+DECLSPEC_HOTPATCH
 GetConsoleCommandHistoryW(LPWSTR lpHistory,
                           DWORD cbHistory,
                           LPCWSTR lpExeName)
@@ -281,6 +284,7 @@ GetConsoleCommandHistoryW(LPWSTR lpHistory,
  */
 DWORD
 WINAPI
+DECLSPEC_HOTPATCH
 GetConsoleCommandHistoryA(LPSTR lpHistory,
                           DWORD cbHistory,
                           LPCSTR lpExeName)
@@ -294,6 +298,7 @@ GetConsoleCommandHistoryA(LPSTR lpHistory,
  */
 DWORD
 WINAPI
+DECLSPEC_HOTPATCH
 GetConsoleCommandHistoryLengthW(LPCWSTR lpExeName)
 {
     return IntGetConsoleCommandHistoryLength(lpExeName, TRUE);
@@ -305,6 +310,7 @@ GetConsoleCommandHistoryLengthW(LPCWSTR lpExeName)
  */
 DWORD
 WINAPI
+DECLSPEC_HOTPATCH
 GetConsoleCommandHistoryLengthA(LPCSTR lpExeName)
 {
     return IntGetConsoleCommandHistoryLength(lpExeName, FALSE);
@@ -316,6 +322,7 @@ GetConsoleCommandHistoryLengthA(LPCSTR lpExeName)
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 SetConsoleNumberOfCommandsW(DWORD dwNumCommands,
                             LPCWSTR lpExeName)
 {
@@ -328,6 +335,7 @@ SetConsoleNumberOfCommandsW(DWORD dwNumCommands,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 SetConsoleNumberOfCommandsA(DWORD dwNumCommands,
                             LPCSTR lpExeName)
 {
@@ -340,6 +348,7 @@ SetConsoleNumberOfCommandsA(DWORD dwNumCommands,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 SetConsoleCommandHistoryMode(IN DWORD dwMode)
 {
     CONSOLE_API_MESSAGE ApiMessage;
index e231b41..1721fef 100644 (file)
@@ -1172,6 +1172,7 @@ IntFillConsoleOutputCode(IN HANDLE hConsoleOutput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 ReadConsoleW(IN HANDLE hConsoleInput,
              OUT LPVOID lpBuffer,
              IN DWORD nNumberOfCharsToRead,
@@ -1192,6 +1193,7 @@ ReadConsoleW(IN HANDLE hConsoleInput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 ReadConsoleA(IN HANDLE hConsoleInput,
              OUT LPVOID lpBuffer,
              IN DWORD nNumberOfCharsToRead,
@@ -1212,6 +1214,7 @@ ReadConsoleA(IN HANDLE hConsoleInput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 PeekConsoleInputW(IN HANDLE hConsoleInput,
                   OUT PINPUT_RECORD lpBuffer,
                   IN DWORD nLength,
@@ -1231,6 +1234,7 @@ PeekConsoleInputW(IN HANDLE hConsoleInput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 PeekConsoleInputA(IN HANDLE hConsoleInput,
                   OUT PINPUT_RECORD lpBuffer,
                   IN DWORD nLength,
@@ -1250,6 +1254,7 @@ PeekConsoleInputA(IN HANDLE hConsoleInput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 ReadConsoleInputW(IN HANDLE hConsoleInput,
                   OUT PINPUT_RECORD lpBuffer,
                   IN DWORD nLength,
@@ -1269,6 +1274,7 @@ ReadConsoleInputW(IN HANDLE hConsoleInput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 ReadConsoleInputA(IN HANDLE hConsoleInput,
                   OUT PINPUT_RECORD lpBuffer,
                   IN DWORD nLength,
@@ -1288,6 +1294,7 @@ ReadConsoleInputA(IN HANDLE hConsoleInput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 ReadConsoleInputExW(IN HANDLE hConsoleInput,
                     OUT PINPUT_RECORD lpBuffer,
                     IN DWORD nLength,
@@ -1308,6 +1315,7 @@ ReadConsoleInputExW(IN HANDLE hConsoleInput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 ReadConsoleInputExA(IN HANDLE hConsoleInput,
                     OUT PINPUT_RECORD lpBuffer,
                     IN DWORD nLength,
@@ -1328,6 +1336,7 @@ ReadConsoleInputExA(IN HANDLE hConsoleInput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 ReadConsoleOutputW(IN HANDLE hConsoleOutput,
                    OUT PCHAR_INFO lpBuffer,
                    IN COORD dwBufferSize,
@@ -1348,6 +1357,7 @@ ReadConsoleOutputW(IN HANDLE hConsoleOutput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 ReadConsoleOutputA(IN HANDLE hConsoleOutput,
                    OUT PCHAR_INFO lpBuffer,
                    IN COORD dwBufferSize,
@@ -1368,6 +1378,7 @@ ReadConsoleOutputA(IN HANDLE hConsoleOutput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 ReadConsoleOutputCharacterW(IN HANDLE hConsoleOutput,
                             OUT LPWSTR lpCharacter,
                             IN DWORD nLength,
@@ -1388,6 +1399,7 @@ ReadConsoleOutputCharacterW(IN HANDLE hConsoleOutput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 ReadConsoleOutputCharacterA(IN HANDLE hConsoleOutput,
                             OUT LPSTR lpCharacter,
                             IN DWORD nLength,
@@ -1408,6 +1420,7 @@ ReadConsoleOutputCharacterA(IN HANDLE hConsoleOutput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 ReadConsoleOutputAttribute(IN HANDLE hConsoleOutput,
                            OUT LPWORD lpAttribute,
                            IN DWORD nLength,
@@ -1432,6 +1445,7 @@ ReadConsoleOutputAttribute(IN HANDLE hConsoleOutput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 WriteConsoleW(IN HANDLE hConsoleOutput,
               IN CONST VOID *lpBuffer,
               IN DWORD nNumberOfCharsToWrite,
@@ -1452,6 +1466,7 @@ WriteConsoleW(IN HANDLE hConsoleOutput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 WriteConsoleA(IN HANDLE hConsoleOutput,
               IN CONST VOID *lpBuffer,
               IN DWORD nNumberOfCharsToWrite,
@@ -1472,6 +1487,7 @@ WriteConsoleA(IN HANDLE hConsoleOutput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 WriteConsoleInputW(IN HANDLE hConsoleInput,
                    IN CONST INPUT_RECORD *lpBuffer,
                    IN DWORD nLength,
@@ -1491,6 +1507,7 @@ WriteConsoleInputW(IN HANDLE hConsoleInput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 WriteConsoleInputA(IN HANDLE hConsoleInput,
                    IN CONST INPUT_RECORD *lpBuffer,
                    IN DWORD nLength,
@@ -1510,6 +1527,7 @@ WriteConsoleInputA(IN HANDLE hConsoleInput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 WriteConsoleInputVDMW(IN HANDLE hConsoleInput,
                       IN CONST INPUT_RECORD *lpBuffer,
                       IN DWORD nLength,
@@ -1529,6 +1547,7 @@ WriteConsoleInputVDMW(IN HANDLE hConsoleInput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 WriteConsoleInputVDMA(IN HANDLE hConsoleInput,
                       IN CONST INPUT_RECORD *lpBuffer,
                       IN DWORD nLength,
@@ -1548,6 +1567,7 @@ WriteConsoleInputVDMA(IN HANDLE hConsoleInput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 WriteConsoleOutputW(IN HANDLE hConsoleOutput,
                     IN CONST CHAR_INFO *lpBuffer,
                     IN COORD dwBufferSize,
@@ -1568,6 +1588,7 @@ WriteConsoleOutputW(IN HANDLE hConsoleOutput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 WriteConsoleOutputA(IN HANDLE hConsoleOutput,
                     IN CONST CHAR_INFO *lpBuffer,
                     IN COORD dwBufferSize,
@@ -1588,6 +1609,7 @@ WriteConsoleOutputA(IN HANDLE hConsoleOutput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 WriteConsoleOutputCharacterW(IN HANDLE hConsoleOutput,
                              IN LPCWSTR lpCharacter,
                              IN DWORD nLength,
@@ -1608,6 +1630,7 @@ WriteConsoleOutputCharacterW(IN HANDLE hConsoleOutput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 WriteConsoleOutputCharacterA(IN HANDLE hConsoleOutput,
                              IN LPCSTR lpCharacter,
                              IN DWORD nLength,
@@ -1628,6 +1651,7 @@ WriteConsoleOutputCharacterA(IN HANDLE hConsoleOutput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 WriteConsoleOutputAttribute(IN HANDLE hConsoleOutput,
                             IN CONST WORD *lpAttribute,
                             IN DWORD nLength,
@@ -1648,6 +1672,7 @@ WriteConsoleOutputAttribute(IN HANDLE hConsoleOutput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 FillConsoleOutputCharacterW(IN HANDLE hConsoleOutput,
                             IN WCHAR cCharacter,
                             IN DWORD nLength,
@@ -1670,6 +1695,7 @@ FillConsoleOutputCharacterW(IN HANDLE hConsoleOutput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 FillConsoleOutputCharacterA(IN HANDLE hConsoleOutput,
                             IN CHAR cCharacter,
                             IN DWORD nLength,
@@ -1692,6 +1718,7 @@ FillConsoleOutputCharacterA(IN HANDLE hConsoleOutput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 FillConsoleOutputAttribute(IN HANDLE hConsoleOutput,
                            IN WORD wAttribute,
                            IN DWORD nLength,
index ca691dd..ed18684 100644 (file)
@@ -23,6 +23,7 @@
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 GetConsoleHistoryInfo(PCONSOLE_HISTORY_INFO lpConsoleHistoryInfo)
 {
     NTSTATUS Status;
@@ -58,6 +59,7 @@ GetConsoleHistoryInfo(PCONSOLE_HISTORY_INFO lpConsoleHistoryInfo)
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 SetConsoleHistoryInfo(IN PCONSOLE_HISTORY_INFO lpConsoleHistoryInfo)
 {
     NTSTATUS Status;
@@ -93,6 +95,7 @@ SetConsoleHistoryInfo(IN PCONSOLE_HISTORY_INFO lpConsoleHistoryInfo)
  */
 DWORD
 WINAPI
+DECLSPEC_HOTPATCH
 GetConsoleOriginalTitleW(OUT LPWSTR lpConsoleTitle,
                          IN DWORD nSize)
 {
@@ -107,6 +110,7 @@ GetConsoleOriginalTitleW(OUT LPWSTR lpConsoleTitle,
  */
 DWORD
 WINAPI
+DECLSPEC_HOTPATCH
 GetConsoleOriginalTitleA(OUT LPSTR lpConsoleTitle,
                          IN DWORD nSize)
 {
@@ -121,6 +125,7 @@ GetConsoleOriginalTitleA(OUT LPSTR lpConsoleTitle,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 GetConsoleScreenBufferInfoEx(IN HANDLE hConsoleOutput,
                              OUT PCONSOLE_SCREEN_BUFFER_INFOEX lpConsoleScreenBufferInfoEx)
 {
@@ -135,6 +140,7 @@ GetConsoleScreenBufferInfoEx(IN HANDLE hConsoleOutput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 SetConsoleScreenBufferInfoEx(IN HANDLE hConsoleOutput,
                              IN PCONSOLE_SCREEN_BUFFER_INFOEX lpConsoleScreenBufferInfoEx)
 {
@@ -149,6 +155,7 @@ SetConsoleScreenBufferInfoEx(IN HANDLE hConsoleOutput,
  */
 BOOL
 WINAPI
+DECLSPEC_HOTPATCH
 GetCurrentConsoleFontEx(IN HANDLE hConsoleOutput,
                         IN BOOL bMaximumWindow,
                         OUT PCONSOLE_FONT_INFOEX lpConsoleCurrentFontEx)
index c0afdbf..7e008ab 100644 (file)
@@ -131,7 +131,7 @@ VerifyVersionInfoW(IN LPOSVERSIONINFOEXW lpVersionInformation,
             return FALSE;
 
         case STATUS_REVISION_MISMATCH:
-            DPRINT1("ReactOS returning version mismatch. Investigate!\n");
+            DPRINT1("VerifyVersionInfo -- Version mismatch\n");
             SetLastError(ERROR_OLD_WIN_VERSION);
             return FALSE;
 
index e69b662..1491e1f 100644 (file)
@@ -9,6 +9,9 @@
 
 #include "winnls/locale_rc.rc"
 
+/* FIXME */
+#define NLSRC_OFFSET 5000
+
 /* UTF-8 */
 #pragma code_page(65001)
 #ifdef LANGUAGE_CS_CZ
index cc88926..d28ae51 100644 (file)
@@ -158,4 +158,271 @@ BEGIN
 
     52936 "52936 (HZ-GB2312 zjednodušená čínština)"
     54936 "54936 (GB18030 zjednodušená čínština)"
+    
+    /* Locations */
+    2+NLSRC_OFFSET "Antigua and Barbuda"
+    3+NLSRC_OFFSET "Afghanistan"
+    4+NLSRC_OFFSET "Algeria"
+    5+NLSRC_OFFSET "Azerbaijan"
+    6+NLSRC_OFFSET "Albania"
+    7+NLSRC_OFFSET "Armenia"
+    8+NLSRC_OFFSET "Andorra"
+    9+NLSRC_OFFSET "Angola"
+    10+NLSRC_OFFSET "American Samoa"
+    11+NLSRC_OFFSET "Argentina"
+    12+NLSRC_OFFSET "Australia"
+    14+NLSRC_OFFSET "Austria"
+    17+NLSRC_OFFSET "Bahrain"
+    18+NLSRC_OFFSET "Barbados"
+    19+NLSRC_OFFSET "Botswana"
+    20+NLSRC_OFFSET "Bermuda"
+    21+NLSRC_OFFSET "Belgium"
+    22+NLSRC_OFFSET "Bahamas, The"
+    23+NLSRC_OFFSET "Bangladesh"
+    24+NLSRC_OFFSET "Belize"
+    25+NLSRC_OFFSET "Bosnia and Herzegovina"
+    26+NLSRC_OFFSET "Bolivia"
+    27+NLSRC_OFFSET "Myanmar"
+    28+NLSRC_OFFSET "Benin"
+    29+NLSRC_OFFSET "Belarus"
+    30+NLSRC_OFFSET "Solomon Islands"
+    32+NLSRC_OFFSET "Brazil"
+    34+NLSRC_OFFSET "Bhutan"
+    35+NLSRC_OFFSET "Bulgaria"
+    38+NLSRC_OFFSET "Burundi"
+    39+NLSRC_OFFSET "Canada"
+    40+NLSRC_OFFSET "Cambodia"
+    41+NLSRC_OFFSET "Chad"
+    42+NLSRC_OFFSET "Sri Lanka"
+    43+NLSRC_OFFSET "Congo"
+    44+NLSRC_OFFSET "Congo (DRC)"
+    45+NLSRC_OFFSET "China"
+    46+NLSRC_OFFSET "Chile"
+    49+NLSRC_OFFSET "Cameroon"
+    50+NLSRC_OFFSET "Comoros"
+    51+NLSRC_OFFSET "Colombia"
+    54+NLSRC_OFFSET "Costa Rica"
+    55+NLSRC_OFFSET "Central African Republic"
+    56+NLSRC_OFFSET "Cuba"
+    57+NLSRC_OFFSET "Cape Verde"
+    59+NLSRC_OFFSET "Cyprus"
+    61+NLSRC_OFFSET "Denmark"
+    62+NLSRC_OFFSET "Djibouti"
+    63+NLSRC_OFFSET "Dominica"
+    65+NLSRC_OFFSET "Dominican Republic"
+    66+NLSRC_OFFSET "Ecuador"
+    67+NLSRC_OFFSET "Egypt"
+    68+NLSRC_OFFSET "Ireland"
+    69+NLSRC_OFFSET "Equatorial Guinea"
+    70+NLSRC_OFFSET "Estonia"
+    71+NLSRC_OFFSET "Eritrea"
+    72+NLSRC_OFFSET "El Salvador"
+    73+NLSRC_OFFSET "Ethiopia"
+    75+NLSRC_OFFSET "Czech Republic"
+    77+NLSRC_OFFSET "Finland"
+    78+NLSRC_OFFSET "Fiji Islands"
+    80+NLSRC_OFFSET "Micronesia"
+    81+NLSRC_OFFSET "Faroe Islands"
+    84+NLSRC_OFFSET "France"
+    86+NLSRC_OFFSET "Gambia, The"
+    87+NLSRC_OFFSET "Gabon"
+    88+NLSRC_OFFSET "Georgia"
+    89+NLSRC_OFFSET "Ghana"
+    90+NLSRC_OFFSET "Gibraltar"
+    91+NLSRC_OFFSET "Grenada"
+    93+NLSRC_OFFSET "Greenland"
+    94+NLSRC_OFFSET "Germany"
+    98+NLSRC_OFFSET "Greece"
+    99+NLSRC_OFFSET "Guatemala"
+    100+NLSRC_OFFSET "Guinea"
+    101+NLSRC_OFFSET "Guyana"
+    103+NLSRC_OFFSET "Haiti"
+    104+NLSRC_OFFSET "Hong Kong S.A.R."
+    106+NLSRC_OFFSET "Honduras"
+    108+NLSRC_OFFSET "Croatia"
+    109+NLSRC_OFFSET "Hungary"
+    110+NLSRC_OFFSET "Iceland"
+    111+NLSRC_OFFSET "Indonesia"
+    113+NLSRC_OFFSET "India"
+    114+NLSRC_OFFSET "British Indian Ocean Territory"
+    116+NLSRC_OFFSET "Iran"
+    117+NLSRC_OFFSET "Israel"
+    118+NLSRC_OFFSET "Italy"
+    119+NLSRC_OFFSET "Côte d'Ivoire"
+    121+NLSRC_OFFSET "Iraq"
+    122+NLSRC_OFFSET "Japan"
+    124+NLSRC_OFFSET "Jamaica"
+    125+NLSRC_OFFSET "Jan Mayen"
+    126+NLSRC_OFFSET "Jordan"
+    127+NLSRC_OFFSET "Johnston Atoll"
+    129+NLSRC_OFFSET "Kenya"
+    130+NLSRC_OFFSET "Kyrgyzstan"
+    131+NLSRC_OFFSET "North Korea"
+    133+NLSRC_OFFSET "Kiribati"
+    134+NLSRC_OFFSET "Korea"
+    136+NLSRC_OFFSET "Kuwait"
+    137+NLSRC_OFFSET "Kazakhstan"
+    138+NLSRC_OFFSET "Laos"
+    139+NLSRC_OFFSET "Lebanon"
+    140+NLSRC_OFFSET "Latvia"
+    141+NLSRC_OFFSET "Lithuania"
+    142+NLSRC_OFFSET "Liberia"
+    143+NLSRC_OFFSET "Slovakia"
+    145+NLSRC_OFFSET "Liechtenstein"
+    146+NLSRC_OFFSET "Lesotho"
+    147+NLSRC_OFFSET "Luxembourg"
+    148+NLSRC_OFFSET "Libya"
+    149+NLSRC_OFFSET "Madagascar"
+    151+NLSRC_OFFSET "Macao S.A.R."
+    152+NLSRC_OFFSET "Moldova"
+    154+NLSRC_OFFSET "Mongolia"
+    156+NLSRC_OFFSET "Malawi"
+    157+NLSRC_OFFSET "Mali"
+    158+NLSRC_OFFSET "Monaco"
+    159+NLSRC_OFFSET "Morocco"
+    160+NLSRC_OFFSET "Mauritius"
+    162+NLSRC_OFFSET "Mauritania"
+    163+NLSRC_OFFSET "Malta"
+    164+NLSRC_OFFSET "Oman"
+    165+NLSRC_OFFSET "Maldives"
+    166+NLSRC_OFFSET "Mexico"
+    167+NLSRC_OFFSET "Malaysia"
+    168+NLSRC_OFFSET "Mozambique"
+    173+NLSRC_OFFSET "Niger"
+    174+NLSRC_OFFSET "Vanuatu"
+    175+NLSRC_OFFSET "Nigeria"
+    176+NLSRC_OFFSET "Netherlands"
+    177+NLSRC_OFFSET "Norway"
+    178+NLSRC_OFFSET "Nepal"
+    180+NLSRC_OFFSET "Nauru"
+    181+NLSRC_OFFSET "Suriname"
+    182+NLSRC_OFFSET "Nicaragua"
+    183+NLSRC_OFFSET "New Zealand"
+    184+NLSRC_OFFSET "Palestinian Authority"
+    185+NLSRC_OFFSET "Paraguay"
+    187+NLSRC_OFFSET "Peru"
+    190+NLSRC_OFFSET "Pakistan"
+    191+NLSRC_OFFSET "Poland"
+    192+NLSRC_OFFSET "Panama"
+    193+NLSRC_OFFSET "Portugal"
+    194+NLSRC_OFFSET "Papua New Guinea"
+    195+NLSRC_OFFSET "Palau"
+    196+NLSRC_OFFSET "Guinea-Bissau"
+    197+NLSRC_OFFSET "Qatar"
+    198+NLSRC_OFFSET "Reunion"
+    199+NLSRC_OFFSET "Marshall Islands"
+    200+NLSRC_OFFSET "Romania"
+    201+NLSRC_OFFSET "Philippines"
+    202+NLSRC_OFFSET "Puerto Rico"
+    203+NLSRC_OFFSET "Russia"
+    204+NLSRC_OFFSET "Rwanda"
+    205+NLSRC_OFFSET "Saudi Arabia"
+    206+NLSRC_OFFSET "St. Pierre and Miquelon"
+    207+NLSRC_OFFSET "St. Kitts and Nevis"
+    208+NLSRC_OFFSET "Seychelles"
+    209+NLSRC_OFFSET "South Africa"
+    210+NLSRC_OFFSET "Senegal"
+    212+NLSRC_OFFSET "Slovenia"
+    213+NLSRC_OFFSET "Sierra Leone"
+    214+NLSRC_OFFSET "San Marino"
+    215+NLSRC_OFFSET "Singapore"
+    216+NLSRC_OFFSET "Somalia"
+    217+NLSRC_OFFSET "Spain"
+    218+NLSRC_OFFSET "St. Lucia"
+    219+NLSRC_OFFSET "Sudan"
+    220+NLSRC_OFFSET "Svalbard"
+    221+NLSRC_OFFSET "Sweden"
+    222+NLSRC_OFFSET "Syria"
+    223+NLSRC_OFFSET "Switzerland"
+    224+NLSRC_OFFSET "United Arab Emirates"
+    225+NLSRC_OFFSET "Trinidad and Tobago"
+    227+NLSRC_OFFSET "Thailand"
+    228+NLSRC_OFFSET "Tajikistan"
+    231+NLSRC_OFFSET "Tonga"
+    232+NLSRC_OFFSET "Togo"
+    233+NLSRC_OFFSET "São Tomé and Príncipe"
+    234+NLSRC_OFFSET "Tunisia"
+    235+NLSRC_OFFSET "Turkey"
+    236+NLSRC_OFFSET "Tuvalu"
+    237+NLSRC_OFFSET "Taiwan"
+    238+NLSRC_OFFSET "Turkmenistan"
+    239+NLSRC_OFFSET "Tanzania"
+    240+NLSRC_OFFSET "Uganda"
+    241+NLSRC_OFFSET "Ukraine"
+    242+NLSRC_OFFSET "United Kingdom"
+    244+NLSRC_OFFSET "United States"
+    245+NLSRC_OFFSET "Burkina Faso"
+    246+NLSRC_OFFSET "Uruguay"
+    247+NLSRC_OFFSET "Uzbekistan"
+    248+NLSRC_OFFSET "St. Vincent and the Grenadines"
+    249+NLSRC_OFFSET "Bolivarian Republic of Venezuela"
+    251+NLSRC_OFFSET "Vietnam"
+    252+NLSRC_OFFSET "Virgin Islands"
+    253+NLSRC_OFFSET "Vatican City"
+    254+NLSRC_OFFSET "Namibia"
+    257+NLSRC_OFFSET "Western Sahara (disputed)"
+    258+NLSRC_OFFSET "Wake Island"
+    259+NLSRC_OFFSET "Samoa"
+    260+NLSRC_OFFSET "Swaziland"
+    261+NLSRC_OFFSET "Yemen"
+    263+NLSRC_OFFSET "Zambia"
+    264+NLSRC_OFFSET "Zimbabwe"
+    269+NLSRC_OFFSET "Serbia and Montenegro (Former)"
+    270+NLSRC_OFFSET "Montenegro"
+    271+NLSRC_OFFSET "Serbia"
+    273+NLSRC_OFFSET "Curaçao"
+    276+NLSRC_OFFSET "South Sudan"
+    300+NLSRC_OFFSET "Anguilla"
+    301+NLSRC_OFFSET "Antarctica"
+    302+NLSRC_OFFSET "Aruba"
+    303+NLSRC_OFFSET "Ascension Island"
+    304+NLSRC_OFFSET "Ashmore and Cartier Islands"
+    305+NLSRC_OFFSET "Baker Island"
+    306+NLSRC_OFFSET "Bouvet Island"
+    307+NLSRC_OFFSET "Cayman Islands"
+    308+NLSRC_OFFSET "Channel Islands"
+    309+NLSRC_OFFSET "Christmas Island"
+    310+NLSRC_OFFSET "Clipperton Island"
+    311+NLSRC_OFFSET "Cocos (Keeling) Islands"
+    312+NLSRC_OFFSET "Cook Islands"
+    313+NLSRC_OFFSET "Coral Sea Islands"
+    314+NLSRC_OFFSET "Diego Garcia"
+    315+NLSRC_OFFSET "Falkland Islands (Islas Malvinas)"
+    317+NLSRC_OFFSET "French Guiana"
+    318+NLSRC_OFFSET "French Polynesia"
+    319+NLSRC_OFFSET "French Southern and Antarctic Lands"
+    321+NLSRC_OFFSET "Guadeloupe"
+    322+NLSRC_OFFSET "Guam"
+    323+NLSRC_OFFSET "Guantanamo Bay"
+    324+NLSRC_OFFSET "Guernsey"
+    325+NLSRC_OFFSET "Heard Island and McDonald Islands"
+    326+NLSRC_OFFSET "Howland Island"
+    327+NLSRC_OFFSET "Jarvis Island"
+    328+NLSRC_OFFSET "Jersey"
+    329+NLSRC_OFFSET "Kingman Reef"
+    330+NLSRC_OFFSET "Martinique"
+    331+NLSRC_OFFSET "Mayotte"
+    332+NLSRC_OFFSET "Montserrat"
+    333+NLSRC_OFFSET "Netherlands Antilles (Former)"
+    334+NLSRC_OFFSET "New Caledonia"
+    335+NLSRC_OFFSET "Niue"
+    336+NLSRC_OFFSET "Norfolk Island"
+    337+NLSRC_OFFSET "Northern Mariana Islands"
+    338+NLSRC_OFFSET "Palmyra Atoll"
+    339+NLSRC_OFFSET "Pitcairn Islands"
+    340+NLSRC_OFFSET "Rota Island"
+    341+NLSRC_OFFSET "Saipan"
+    342+NLSRC_OFFSET "South Georgia and the South Sandwich Islands"
+    343+NLSRC_OFFSET "St. Helena"
+    346+NLSRC_OFFSET "Tinian Island"
+    347+NLSRC_OFFSET "Tokelau"
+    348+NLSRC_OFFSET "Tristan da Cunha"
+    349+NLSRC_OFFSET "Turks and Caicos Islands"
+    351+NLSRC_OFFSET "Virgin Islands, British"
+    352+NLSRC_OFFSET "Wallis and Futuna"
+    15126+NLSRC_OFFSET "Man, Isle of"
+    19618+NLSRC_OFFSET "Macedonia, Former Yugoslav Republic of"
+    21242+NLSRC_OFFSET "Midway Islands"
+    30967+NLSRC_OFFSET "Sint Maarten (Dutch part)"
+    31706+NLSRC_OFFSET "Saint Martin (French part)"
 END
index a5735ae..170a2af 100644 (file)
@@ -158,4 +158,271 @@ BEGIN
 
     52936 "52936 (Chinesisch vereinfacht (HZ))"
     54936 "54936 (Chinesisch vereinfacht (GB18030))"
+    
+    /* Locations */
+    2+NLSRC_OFFSET "Antigua and Barbuda"
+    3+NLSRC_OFFSET "Afghanistan"
+    4+NLSRC_OFFSET "Algeria"
+    5+NLSRC_OFFSET "Azerbaijan"
+    6+NLSRC_OFFSET "Albania"
+    7+NLSRC_OFFSET "Armenia"
+    8+NLSRC_OFFSET "Andorra"
+    9+NLSRC_OFFSET "Angola"
+    10+NLSRC_OFFSET "American Samoa"
+    11+NLSRC_OFFSET "Argentina"
+    12+NLSRC_OFFSET "Australia"
+    14+NLSRC_OFFSET "Austria"
+    17+NLSRC_OFFSET "Bahrain"
+    18+NLSRC_OFFSET "Barbados"
+    19+NLSRC_OFFSET "Botswana"
+    20+NLSRC_OFFSET "Bermuda"
+    21+NLSRC_OFFSET "Belgium"
+    22+NLSRC_OFFSET "Bahamas, The"
+    23+NLSRC_OFFSET "Bangladesh"
+    24+NLSRC_OFFSET "Belize"
+    25+NLSRC_OFFSET "Bosnia and Herzegovina"
+    26+NLSRC_OFFSET "Bolivia"
+    27+NLSRC_OFFSET "Myanmar"
+    28+NLSRC_OFFSET "Benin"
+    29+NLSRC_OFFSET "Belarus"
+    30+NLSRC_OFFSET "Solomon Islands"
+    32+NLSRC_OFFSET "Brazil"
+    34+NLSRC_OFFSET "Bhutan"
+    35+NLSRC_OFFSET "Bulgaria"
+    38+NLSRC_OFFSET "Burundi"
+    39+NLSRC_OFFSET "Canada"
+    40+NLSRC_OFFSET "Cambodia"
+    41+NLSRC_OFFSET "Chad"
+    42+NLSRC_OFFSET "Sri Lanka"
+    43+NLSRC_OFFSET "Congo"
+    44+NLSRC_OFFSET "Congo (DRC)"
+    45+NLSRC_OFFSET "China"
+    46+NLSRC_OFFSET "Chile"
+    49+NLSRC_OFFSET "Cameroon"
+    50+NLSRC_OFFSET "Comoros"
+    51+NLSRC_OFFSET "Colombia"
+    54+NLSRC_OFFSET "Costa Rica"
+    55+NLSRC_OFFSET "Central African Republic"
+    56+NLSRC_OFFSET "Cuba"
+    57+NLSRC_OFFSET "Cape Verde"
+    59+NLSRC_OFFSET "Cyprus"
+    61+NLSRC_OFFSET "Denmark"
+    62+NLSRC_OFFSET "Djibouti"
+    63+NLSRC_OFFSET "Dominica"
+    65+NLSRC_OFFSET "Dominican Republic"
+    66+NLSRC_OFFSET "Ecuador"
+    67+NLSRC_OFFSET "Egypt"
+    68+NLSRC_OFFSET "Ireland"
+    69+NLSRC_OFFSET "Equatorial Guinea"
+    70+NLSRC_OFFSET "Estonia"
+    71+NLSRC_OFFSET "Eritrea"
+    72+NLSRC_OFFSET "El Salvador"
+    73+NLSRC_OFFSET "Ethiopia"
+    75+NLSRC_OFFSET "Czech Republic"
+    77+NLSRC_OFFSET "Finland"
+    78+NLSRC_OFFSET "Fiji Islands"
+    80+NLSRC_OFFSET "Micronesia"
+    81+NLSRC_OFFSET "Faroe Islands"
+    84+NLSRC_OFFSET "France"
+    86+NLSRC_OFFSET "Gambia, The"
+    87+NLSRC_OFFSET "Gabon"
+    88+NLSRC_OFFSET "Georgia"
+    89+NLSRC_OFFSET "Ghana"
+    90+NLSRC_OFFSET "Gibraltar"
+    91+NLSRC_OFFSET "Grenada"
+    93+NLSRC_OFFSET "Greenland"
+    94+NLSRC_OFFSET "Germany"
+    98+NLSRC_OFFSET "Greece"
+    99+NLSRC_OFFSET "Guatemala"
+    100+NLSRC_OFFSET "Guinea"
+    101+NLSRC_OFFSET "Guyana"
+    103+NLSRC_OFFSET "Haiti"
+    104+NLSRC_OFFSET "Hong Kong S.A.R."
+    106+NLSRC_OFFSET "Honduras"
+    108+NLSRC_OFFSET "Croatia"
+    109+NLSRC_OFFSET "Hungary"
+    110+NLSRC_OFFSET "Iceland"
+    111+NLSRC_OFFSET "Indonesia"
+    113+NLSRC_OFFSET "India"
+    114+NLSRC_OFFSET "British Indian Ocean Territory"
+    116+NLSRC_OFFSET "Iran"
+    117+NLSRC_OFFSET "Israel"
+    118+NLSRC_OFFSET "Italy"
+    119+NLSRC_OFFSET "Côte d'Ivoire"
+    121+NLSRC_OFFSET "Iraq"
+    122+NLSRC_OFFSET "Japan"
+    124+NLSRC_OFFSET "Jamaica"
+    125+NLSRC_OFFSET "Jan Mayen"
+    126+NLSRC_OFFSET "Jordan"
+    127+NLSRC_OFFSET "Johnston Atoll"
+    129+NLSRC_OFFSET "Kenya"
+    130+NLSRC_OFFSET "Kyrgyzstan"
+    131+NLSRC_OFFSET "North Korea"
+    133+NLSRC_OFFSET "Kiribati"
+    134+NLSRC_OFFSET "Korea"
+    136+NLSRC_OFFSET "Kuwait"
+    137+NLSRC_OFFSET "Kazakhstan"
+    138+NLSRC_OFFSET "Laos"
+    139+NLSRC_OFFSET "Lebanon"
+    140+NLSRC_OFFSET "Latvia"
+    141+NLSRC_OFFSET "Lithuania"
+    142+NLSRC_OFFSET "Liberia"
+    143+NLSRC_OFFSET "Slovakia"
+    145+NLSRC_OFFSET "Liechtenstein"
+    146+NLSRC_OFFSET "Lesotho"
+    147+NLSRC_OFFSET "Luxembourg"
+    148+NLSRC_OFFSET "Libya"
+    149+NLSRC_OFFSET "Madagascar"
+    151+NLSRC_OFFSET "Macao S.A.R."
+    152+NLSRC_OFFSET "Moldova"
+    154+NLSRC_OFFSET "Mongolia"
+    156+NLSRC_OFFSET "Malawi"
+    157+NLSRC_OFFSET "Mali"
+    158+NLSRC_OFFSET "Monaco"
+    159+NLSRC_OFFSET "Morocco"
+    160+NLSRC_OFFSET "Mauritius"
+    162+NLSRC_OFFSET "Mauritania"
+    163+NLSRC_OFFSET "Malta"
+    164+NLSRC_OFFSET "Oman"
+    165+NLSRC_OFFSET "Maldives"
+    166+NLSRC_OFFSET "Mexico"
+    167+NLSRC_OFFSET "Malaysia"
+    168+NLSRC_OFFSET "Mozambique"
+    173+NLSRC_OFFSET "Niger"
+    174+NLSRC_OFFSET "Vanuatu"
+    175+NLSRC_OFFSET "Nigeria"
+    176+NLSRC_OFFSET "Netherlands"
+    177+NLSRC_OFFSET "Norway"
+    178+NLSRC_OFFSET "Nepal"
+    180+NLSRC_OFFSET "Nauru"
+    181+NLSRC_OFFSET "Suriname"
+    182+NLSRC_OFFSET "Nicaragua"
+    183+NLSRC_OFFSET "New Zealand"
+    184+NLSRC_OFFSET "Palestinian Authority"
+    185+NLSRC_OFFSET "Paraguay"
+    187+NLSRC_OFFSET "Peru"
+    190+NLSRC_OFFSET "Pakistan"
+    191+NLSRC_OFFSET "Poland"
+    192+NLSRC_OFFSET "Panama"
+    193+NLSRC_OFFSET "Portugal"
+    194+NLSRC_OFFSET "Papua New Guinea"
+    195+NLSRC_OFFSET "Palau"
+    196+NLSRC_OFFSET "Guinea-Bissau"
+    197+NLSRC_OFFSET "Qatar"
+    198+NLSRC_OFFSET "Reunion"
+    199+NLSRC_OFFSET "Marshall Islands"
+    200+NLSRC_OFFSET "Romania"
+    201+NLSRC_OFFSET "Philippines"
+    202+NLSRC_OFFSET "Puerto Rico"
+    203+NLSRC_OFFSET "Russia"
+    204+NLSRC_OFFSET "Rwanda"
+    205+NLSRC_OFFSET "Saudi Arabia"
+    206+NLSRC_OFFSET "St. Pierre and Miquelon"
+    207+NLSRC_OFFSET "St. Kitts and Nevis"
+    208+NLSRC_OFFSET "Seychelles"
+    209+NLSRC_OFFSET "South Africa"
+    210+NLSRC_OFFSET "Senegal"
+    212+NLSRC_OFFSET "Slovenia"
+    213+NLSRC_OFFSET "Sierra Leone"
+    214+NLSRC_OFFSET "San Marino"
+    215+NLSRC_OFFSET "Singapore"
+    216+NLSRC_OFFSET "Somalia"
+    217+NLSRC_OFFSET "Spain"
+    218+NLSRC_OFFSET "St. Lucia"
+    219+NLSRC_OFFSET "Sudan"
+    220+NLSRC_OFFSET "Svalbard"
+    221+NLSRC_OFFSET "Sweden"
+    222+NLSRC_OFFSET "Syria"
+    223+NLSRC_OFFSET "Switzerland"
+    224+NLSRC_OFFSET "United Arab Emirates"
+    225+NLSRC_OFFSET "Trinidad and Tobago"
+    227+NLSRC_OFFSET "Thailand"
+    228+NLSRC_OFFSET "Tajikistan"
+    231+NLSRC_OFFSET "Tonga"
+    232+NLSRC_OFFSET "Togo"
+    233+NLSRC_OFFSET "São Tomé and Príncipe"
+    234+NLSRC_OFFSET "Tunisia"
+    235+NLSRC_OFFSET "Turkey"
+    236+NLSRC_OFFSET "Tuvalu"
+    237+NLSRC_OFFSET "Taiwan"
+    238+NLSRC_OFFSET "Turkmenistan"
+    239+NLSRC_OFFSET "Tanzania"
+    240+NLSRC_OFFSET "Uganda"
+    241+NLSRC_OFFSET "Ukraine"
+    242+NLSRC_OFFSET "United Kingdom"
+    244+NLSRC_OFFSET "United States"
+    245+NLSRC_OFFSET "Burkina Faso"
+    246+NLSRC_OFFSET "Uruguay"
+    247+NLSRC_OFFSET "Uzbekistan"
+    248+NLSRC_OFFSET "St. Vincent and the Grenadines"
+    249+NLSRC_OFFSET "Bolivarian Republic of Venezuela"
+    251+NLSRC_OFFSET "Vietnam"
+    252+NLSRC_OFFSET "Virgin Islands"
+    253+NLSRC_OFFSET "Vatican City"
+    254+NLSRC_OFFSET "Namibia"
+    257+NLSRC_OFFSET "Western Sahara (disputed)"
+    258+NLSRC_OFFSET "Wake Island"
+    259+NLSRC_OFFSET "Samoa"
+    260+NLSRC_OFFSET "Swaziland"
+    261+NLSRC_OFFSET "Yemen"
+    263+NLSRC_OFFSET "Zambia"
+    264+NLSRC_OFFSET "Zimbabwe"
+    269+NLSRC_OFFSET "Serbia and Montenegro (Former)"
+    270+NLSRC_OFFSET "Montenegro"
+    271+NLSRC_OFFSET "Serbia"
+    273+NLSRC_OFFSET "Curaçao"
+    276+NLSRC_OFFSET "South Sudan"
+    300+NLSRC_OFFSET "Anguilla"
+    301+NLSRC_OFFSET "Antarctica"
+    302+NLSRC_OFFSET "Aruba"
+    303+NLSRC_OFFSET "Ascension Island"
+    304+NLSRC_OFFSET "Ashmore and Cartier Islands"
+    305+NLSRC_OFFSET "Baker Island"
+    306+NLSRC_OFFSET "Bouvet Island"
+    307+NLSRC_OFFSET "Cayman Islands"
+    308+NLSRC_OFFSET "Channel Islands"
+    309+NLSRC_OFFSET "Christmas Island"
+    310+NLSRC_OFFSET "Clipperton Island"
+    311+NLSRC_OFFSET "Cocos (Keeling) Islands"
+    312+NLSRC_OFFSET "Cook Islands"
+    313+NLSRC_OFFSET "Coral Sea Islands"
+    314+NLSRC_OFFSET "Diego Garcia"
+    315+NLSRC_OFFSET "Falkland Islands (Islas Malvinas)"
+    317+NLSRC_OFFSET "French Guiana"
+    318+NLSRC_OFFSET "French Polynesia"
+    319+NLSRC_OFFSET "French Southern and Antarctic Lands"
+    321+NLSRC_OFFSET "Guadeloupe"
+    322+NLSRC_OFFSET "Guam"
+    323+NLSRC_OFFSET "Guantanamo Bay"
+    324+NLSRC_OFFSET "Guernsey"
+    325+NLSRC_OFFSET "Heard Island and McDonald Islands"
+    326+NLSRC_OFFSET "Howland Island"
+    327+NLSRC_OFFSET "Jarvis Island"
+    328+NLSRC_OFFSET "Jersey"
+    329+NLSRC_OFFSET "Kingman Reef"
+    330+NLSRC_OFFSET "Martinique"
+    331+NLSRC_OFFSET "Mayotte"
+    332+NLSRC_OFFSET "Montserrat"
+    333+NLSRC_OFFSET "Netherlands Antilles (Former)"
+    334+NLSRC_OFFSET "New Caledonia"
+    335+NLSRC_OFFSET "Niue"
+    336+NLSRC_OFFSET "Norfolk Island"
+    337+NLSRC_OFFSET "Northern Mariana Islands"
+    338+NLSRC_OFFSET "Palmyra Atoll"
+    339+NLSRC_OFFSET "Pitcairn Islands"
+    340+NLSRC_OFFSET "Rota Island"
+    341+NLSRC_OFFSET "Saipan"
+    342+NLSRC_OFFSET "South Georgia and the South Sandwich Islands"
+    343+NLSRC_OFFSET "St. Helena"
+    346+NLSRC_OFFSET "Tinian Island"
+    347+NLSRC_OFFSET "Tokelau"
+    348+NLSRC_OFFSET "Tristan da Cunha"
+    349+NLSRC_OFFSET "Turks and Caicos Islands"
+    351+NLSRC_OFFSET "Virgin Islands, British"
+    352+NLSRC_OFFSET "Wallis and Futuna"
+    15126+NLSRC_OFFSET "Man, Isle of"
+    19618+NLSRC_OFFSET "Macedonia, Former Yugoslav Republic of"
+    21242+NLSRC_OFFSET "Midway Islands"
+    30967+NLSRC_OFFSET "Sint Maarten (Dutch part)"
+    31706+NLSRC_OFFSET "Saint Martin (French part)"
 END
index 9ca09c7..177b00b 100644 (file)
@@ -158,4 +158,271 @@ BEGIN
 
     52936 "52936 (HZ-GB2312 Simplified Chinese)"
     54936 "54936 (GB18030 Simplified Chinese)"
+    
+/* Locations */
+    2+NLSRC_OFFSET "Antigua and Barbuda"
+    3+NLSRC_OFFSET "Afghanistan"
+    4+NLSRC_OFFSET "Algeria"
+    5+NLSRC_OFFSET "Azerbaijan"
+    6+NLSRC_OFFSET "Albania"
+    7+NLSRC_OFFSET "Armenia"
+    8+NLSRC_OFFSET "Andorra"
+    9+NLSRC_OFFSET "Angola"
+    10+NLSRC_OFFSET "American Samoa"
+    11+NLSRC_OFFSET "Argentina"
+    12+NLSRC_OFFSET "Australia"
+    14+NLSRC_OFFSET "Austria"
+    17+NLSRC_OFFSET "Bahrain"
+    18+NLSRC_OFFSET "Barbados"
+    19+NLSRC_OFFSET "Botswana"
+    20+NLSRC_OFFSET "Bermuda"
+    21+NLSRC_OFFSET "Belgium"
+    22+NLSRC_OFFSET "Bahamas, The"
+    23+NLSRC_OFFSET "Bangladesh"
+    24+NLSRC_OFFSET "Belize"
+    25+NLSRC_OFFSET "Bosnia and Herzegovina"
+    26+NLSRC_OFFSET "Bolivia"
+    27+NLSRC_OFFSET "Myanmar"
+    28+NLSRC_OFFSET "Benin"
+    29+NLSRC_OFFSET "Belarus"
+    30+NLSRC_OFFSET "Solomon Islands"
+    32+NLSRC_OFFSET "Brazil"
+    34+NLSRC_OFFSET "Bhutan"
+    35+NLSRC_OFFSET "Bulgaria"
+    38+NLSRC_OFFSET "Burundi"
+    39+NLSRC_OFFSET "Canada"
+    40+NLSRC_OFFSET "Cambodia"
+    41+NLSRC_OFFSET "Chad"
+    42+NLSRC_OFFSET "Sri Lanka"
+    43+NLSRC_OFFSET "Congo"
+    44+NLSRC_OFFSET "Congo (DRC)"
+    45+NLSRC_OFFSET "China"
+    46+NLSRC_OFFSET "Chile"
+    49+NLSRC_OFFSET "Cameroon"
+    50+NLSRC_OFFSET "Comoros"
+    51+NLSRC_OFFSET "Colombia"
+    54+NLSRC_OFFSET "Costa Rica"
+    55+NLSRC_OFFSET "Central African Republic"
+    56+NLSRC_OFFSET "Cuba"
+    57+NLSRC_OFFSET "Cape Verde"
+    59+NLSRC_OFFSET "Cyprus"
+    61+NLSRC_OFFSET "Denmark"
+    62+NLSRC_OFFSET "Djibouti"
+    63+NLSRC_OFFSET "Dominica"
+    65+NLSRC_OFFSET "Dominican Republic"
+    66+NLSRC_OFFSET "Ecuador"
+    67+NLSRC_OFFSET "Egypt"
+    68+NLSRC_OFFSET "Ireland"
+    69+NLSRC_OFFSET "Equatorial Guinea"
+    70+NLSRC_OFFSET "Estonia"
+    71+NLSRC_OFFSET "Eritrea"
+    72+NLSRC_OFFSET "El Salvador"
+    73+NLSRC_OFFSET "Ethiopia"
+    75+NLSRC_OFFSET "Czech Republic"
+    77+NLSRC_OFFSET "Finland"
+    78+NLSRC_OFFSET "Fiji Islands"
+    80+NLSRC_OFFSET "Micronesia"
+    81+NLSRC_OFFSET "Faroe Islands"
+    84+NLSRC_OFFSET "France"
+    86+NLSRC_OFFSET "Gambia, The"
+    87+NLSRC_OFFSET "Gabon"
+    88+NLSRC_OFFSET "Georgia"
+    89+NLSRC_OFFSET "Ghana"
+    90+NLSRC_OFFSET "Gibraltar"
+    91+NLSRC_OFFSET "Grenada"
+    93+NLSRC_OFFSET "Greenland"
+    94+NLSRC_OFFSET "Germany"
+    98+NLSRC_OFFSET "Greece"
+    99+NLSRC_OFFSET "Guatemala"
+    100+NLSRC_OFFSET "Guinea"
+    101+NLSRC_OFFSET "Guyana"
+    103+NLSRC_OFFSET "Haiti"
+    104+NLSRC_OFFSET "Hong Kong S.A.R."
+    106+NLSRC_OFFSET "Honduras"
+    108+NLSRC_OFFSET "Croatia"
+    109+NLSRC_OFFSET "Hungary"
+    110+NLSRC_OFFSET "Iceland"
+    111+NLSRC_OFFSET "Indonesia"
+    113+NLSRC_OFFSET "India"
+    114+NLSRC_OFFSET "British Indian Ocean Territory"
+    116+NLSRC_OFFSET "Iran"
+    117+NLSRC_OFFSET "Israel"
+    118+NLSRC_OFFSET "Italy"
+    119+NLSRC_OFFSET "Côte d'Ivoire"
+    121+NLSRC_OFFSET "Iraq"
+    122+NLSRC_OFFSET "Japan"
+    124+NLSRC_OFFSET "Jamaica"
+    125+NLSRC_OFFSET "Jan Mayen"
+    126+NLSRC_OFFSET "Jordan"
+    127+NLSRC_OFFSET "Johnston Atoll"
+    129+NLSRC_OFFSET "Kenya"
+    130+NLSRC_OFFSET "Kyrgyzstan"
+    131+NLSRC_OFFSET "North Korea"
+    133+NLSRC_OFFSET "Kiribati"
+    134+NLSRC_OFFSET "Korea"
+    136+NLSRC_OFFSET "Kuwait"
+    137+NLSRC_OFFSET "Kazakhstan"
+    138+NLSRC_OFFSET "Laos"
+    139+NLSRC_OFFSET "Lebanon"
+    140+NLSRC_OFFSET "Latvia"
+    141+NLSRC_OFFSET "Lithuania"
+    142+NLSRC_OFFSET "Liberia"
+    143+NLSRC_OFFSET "Slovakia"
+    145+NLSRC_OFFSET "Liechtenstein"
+    146+NLSRC_OFFSET "Lesotho"
+    147+NLSRC_OFFSET "Luxembourg"
+    148+NLSRC_OFFSET "Libya"
+    149+NLSRC_OFFSET "Madagascar"
+    151+NLSRC_OFFSET "Macao S.A.R."
+    152+NLSRC_OFFSET "Moldova"
+    154+NLSRC_OFFSET "Mongolia"
+    156+NLSRC_OFFSET "Malawi"
+    157+NLSRC_OFFSET "Mali"
+    158+NLSRC_OFFSET "Monaco"
+    159+NLSRC_OFFSET "Morocco"
+    160+NLSRC_OFFSET "Mauritius"
+    162+NLSRC_OFFSET "Mauritania"
+    163+NLSRC_OFFSET "Malta"
+    164+NLSRC_OFFSET "Oman"
+    165+NLSRC_OFFSET "Maldives"
+    166+NLSRC_OFFSET "Mexico"
+    167+NLSRC_OFFSET "Malaysia"
+    168+NLSRC_OFFSET "Mozambique"
+    173+NLSRC_OFFSET "Niger"
+    174+NLSRC_OFFSET "Vanuatu"
+    175+NLSRC_OFFSET "Nigeria"
+    176+NLSRC_OFFSET "Netherlands"
+    177+NLSRC_OFFSET "Norway"
+    178+NLSRC_OFFSET "Nepal"
+    180+NLSRC_OFFSET "Nauru"
+    181+NLSRC_OFFSET "Suriname"
+    182+NLSRC_OFFSET "Nicaragua"
+    183+NLSRC_OFFSET "New Zealand"
+    184+NLSRC_OFFSET "Palestinian Authority"
+    185+NLSRC_OFFSET "Paraguay"
+    187+NLSRC_OFFSET "Peru"
+    190+NLSRC_OFFSET "Pakistan"
+    191+NLSRC_OFFSET "Poland"
+    192+NLSRC_OFFSET "Panama"
+    193+NLSRC_OFFSET "Portugal"
+    194+NLSRC_OFFSET "Papua New Guinea"
+    195+NLSRC_OFFSET "Palau"
+    196+NLSRC_OFFSET "Guinea-Bissau"
+    197+NLSRC_OFFSET "Qatar"
+    198+NLSRC_OFFSET "Reunion"
+    199+NLSRC_OFFSET "Marshall Islands"
+    200+NLSRC_OFFSET "Romania"
+    201+NLSRC_OFFSET "Philippines"
+    202+NLSRC_OFFSET "Puerto Rico"
+    203+NLSRC_OFFSET "Russia"
+    204+NLSRC_OFFSET "Rwanda"
+    205+NLSRC_OFFSET "Saudi Arabia"
+    206+NLSRC_OFFSET "St. Pierre and Miquelon"
+    207+NLSRC_OFFSET "St. Kitts and Nevis"
+    208+NLSRC_OFFSET "Seychelles"
+    209+NLSRC_OFFSET "South Africa"
+    210+NLSRC_OFFSET "Senegal"
+    212+NLSRC_OFFSET "Slovenia"
+    213+NLSRC_OFFSET "Sierra Leone"
+    214+NLSRC_OFFSET "San Marino"
+    215+NLSRC_OFFSET "Singapore"
+    216+NLSRC_OFFSET "Somalia"
+    217+NLSRC_OFFSET "Spain"
+    218+NLSRC_OFFSET "St. Lucia"
+    219+NLSRC_OFFSET "Sudan"
+    220+NLSRC_OFFSET "Svalbard"
+    221+NLSRC_OFFSET "Sweden"
+    222+NLSRC_OFFSET "Syria"
+    223+NLSRC_OFFSET "Switzerland"
+    224+NLSRC_OFFSET "United Arab Emirates"
+    225+NLSRC_OFFSET "Trinidad and Tobago"
+    227+NLSRC_OFFSET "Thailand"
+    228+NLSRC_OFFSET "Tajikistan"
+    231+NLSRC_OFFSET "Tonga"
+    232+NLSRC_OFFSET "Togo"
+    233+NLSRC_OFFSET "São Tomé and Príncipe"
+    234+NLSRC_OFFSET "Tunisia"
+    235+NLSRC_OFFSET "Turkey"
+    236+NLSRC_OFFSET "Tuvalu"
+    237+NLSRC_OFFSET "Taiwan"
+    238+NLSRC_OFFSET "Turkmenistan"
+    239+NLSRC_OFFSET "Tanzania"
+    240+NLSRC_OFFSET "Uganda"
+    241+NLSRC_OFFSET "Ukraine"
+    242+NLSRC_OFFSET "United Kingdom"
+    244+NLSRC_OFFSET "United States"
+    245+NLSRC_OFFSET "Burkina Faso"
+    246+NLSRC_OFFSET "Uruguay"
+    247+NLSRC_OFFSET "Uzbekistan"
+    248+NLSRC_OFFSET "St. Vincent and the Grenadines"
+    249+NLSRC_OFFSET "Bolivarian Republic of Venezuela"
+    251+NLSRC_OFFSET "Vietnam"
+    252+NLSRC_OFFSET "Virgin Islands"
+    253+NLSRC_OFFSET "Vatican City"
+    254+NLSRC_OFFSET "Namibia"
+    257+NLSRC_OFFSET "Western Sahara (disputed)"
+    258+NLSRC_OFFSET "Wake Island"
+    259+NLSRC_OFFSET "Samoa"
+    260+NLSRC_OFFSET "Swaziland"
+    261+NLSRC_OFFSET "Yemen"
+    263+NLSRC_OFFSET "Zambia"
+    264+NLSRC_OFFSET "Zimbabwe"
+    269+NLSRC_OFFSET "Serbia and Montenegro (Former)"
+    270+NLSRC_OFFSET "Montenegro"
+    271+NLSRC_OFFSET "Serbia"
+    273+NLSRC_OFFSET "Curaçao"
+    276+NLSRC_OFFSET "South Sudan"
+    300+NLSRC_OFFSET "Anguilla"
+    301+NLSRC_OFFSET "Antarctica"
+    302+NLSRC_OFFSET "Aruba"
+    303+NLSRC_OFFSET "Ascension Island"
+    304+NLSRC_OFFSET "Ashmore and Cartier Islands"
+    305+NLSRC_OFFSET "Baker Island"
+    306+NLSRC_OFFSET "Bouvet Island"
+    307+NLSRC_OFFSET "Cayman Islands"
+    308+NLSRC_OFFSET "Channel Islands"
+    309+NLSRC_OFFSET "Christmas Island"
+    310+NLSRC_OFFSET "Clipperton Island"
+    311+NLSRC_OFFSET "Cocos (Keeling) Islands"
+    312+NLSRC_OFFSET "Cook Islands"
+    313+NLSRC_OFFSET "Coral Sea Islands"
+    314+NLSRC_OFFSET "Diego Garcia"
+    315+NLSRC_OFFSET "Falkland Islands (Islas Malvinas)"
+    317+NLSRC_OFFSET "French Guiana"
+    318+NLSRC_OFFSET "French Polynesia"
+    319+NLSRC_OFFSET "French Southern and Antarctic Lands"
+    321+NLSRC_OFFSET "Guadeloupe"
+    322+NLSRC_OFFSET "Guam"
+    323+NLSRC_OFFSET "Guantanamo Bay"
+    324+NLSRC_OFFSET "Guernsey"
+    325+NLSRC_OFFSET "Heard Island and McDonald Islands"
+    326+NLSRC_OFFSET "Howland Island"
+    327+NLSRC_OFFSET "Jarvis Island"
+    328+NLSRC_OFFSET "Jersey"
+    329+NLSRC_OFFSET "Kingman Reef"
+    330+NLSRC_OFFSET "Martinique"
+    331+NLSRC_OFFSET "Mayotte"
+    332+NLSRC_OFFSET "Montserrat"
+    333+NLSRC_OFFSET "Netherlands Antilles (Former)"
+    334+NLSRC_OFFSET "New Caledonia"
+    335+NLSRC_OFFSET "Niue"
+    336+NLSRC_OFFSET "Norfolk Island"
+    337+NLSRC_OFFSET "Northern Mariana Islands"
+    338+NLSRC_OFFSET "Palmyra Atoll"
+    339+NLSRC_OFFSET "Pitcairn Islands"
+    340+NLSRC_OFFSET "Rota Island"
+    341+NLSRC_OFFSET "Saipan"
+    342+NLSRC_OFFSET "South Georgia and the South Sandwich Islands"
+    343+NLSRC_OFFSET "St. Helena"
+    346+NLSRC_OFFSET "Tinian Island"
+    347+NLSRC_OFFSET "Tokelau"
+    348+NLSRC_OFFSET "Tristan da Cunha"
+    349+NLSRC_OFFSET "Turks and Caicos Islands"
+    351+NLSRC_OFFSET "Virgin Islands, British"
+    352+NLSRC_OFFSET "Wallis and Futuna"
+    15126+NLSRC_OFFSET "Man, Isle of"
+    19618+NLSRC_OFFSET "Macedonia, Former Yugoslav Republic of"
+    21242+NLSRC_OFFSET "Midway Islands"
+    30967+NLSRC_OFFSET "Sint Maarten (Dutch part)"
+    31706+NLSRC_OFFSET "Saint Martin (French part)"
 END
index 26b7661..985235d 100644 (file)
@@ -158,4 +158,271 @@ BEGIN
 
     52936 "52936 (HZ-GB2312 Chino simplificado)"
     54936 "54936 (GB18030 Chino simplificado)"
+    
+    /* Locations */
+    2+NLSRC_OFFSET "Antigua and Barbuda"
+    3+NLSRC_OFFSET "Afghanistan"
+    4+NLSRC_OFFSET "Algeria"
+    5+NLSRC_OFFSET "Azerbaijan"
+    6+NLSRC_OFFSET "Albania"
+    7+NLSRC_OFFSET "Armenia"
+    8+NLSRC_OFFSET "Andorra"
+    9+NLSRC_OFFSET "Angola"
+    10+NLSRC_OFFSET "American Samoa"
+    11+NLSRC_OFFSET "Argentina"
+    12+NLSRC_OFFSET "Australia"
+    14+NLSRC_OFFSET "Austria"
+    17+NLSRC_OFFSET "Bahrain"
+    18+NLSRC_OFFSET "Barbados"
+    19+NLSRC_OFFSET "Botswana"
+    20+NLSRC_OFFSET "Bermuda"
+    21+NLSRC_OFFSET "Belgium"
+    22+NLSRC_OFFSET "Bahamas, The"
+    23+NLSRC_OFFSET "Bangladesh"
+    24+NLSRC_OFFSET "Belize"
+    25+NLSRC_OFFSET "Bosnia and Herzegovina"
+    26+NLSRC_OFFSET "Bolivia"
+    27+NLSRC_OFFSET "Myanmar"
+    28+NLSRC_OFFSET "Benin"
+    29+NLSRC_OFFSET "Belarus"
+    30+NLSRC_OFFSET "Solomon Islands"
+    32+NLSRC_OFFSET "Brazil"
+    34+NLSRC_OFFSET "Bhutan"
+    35+NLSRC_OFFSET "Bulgaria"
+    38+NLSRC_OFFSET "Burundi"
+    39+NLSRC_OFFSET "Canada"
+    40+NLSRC_OFFSET "Cambodia"
+    41+NLSRC_OFFSET "Chad"
+    42+NLSRC_OFFSET "Sri Lanka"
+    43+NLSRC_OFFSET "Congo"
+    44+NLSRC_OFFSET "Congo (DRC)"
+    45+NLSRC_OFFSET "China"
+    46+NLSRC_OFFSET "Chile"
+    49+NLSRC_OFFSET "Cameroon"
+    50+NLSRC_OFFSET "Comoros"
+    51+NLSRC_OFFSET "Colombia"
+    54+NLSRC_OFFSET "Costa Rica"
+    55+NLSRC_OFFSET "Central African Republic"
+    56+NLSRC_OFFSET "Cuba"
+    57+NLSRC_OFFSET "Cape Verde"
+    59+NLSRC_OFFSET "Cyprus"
+    61+NLSRC_OFFSET "Denmark"
+    62+NLSRC_OFFSET "Djibouti"
+    63+NLSRC_OFFSET "Dominica"
+    65+NLSRC_OFFSET "Dominican Republic"
+    66+NLSRC_OFFSET "Ecuador"
+    67+NLSRC_OFFSET "Egypt"
+    68+NLSRC_OFFSET "Ireland"
+    69+NLSRC_OFFSET "Equatorial Guinea"
+    70+NLSRC_OFFSET "Estonia"
+    71+NLSRC_OFFSET "Eritrea"
+    72+NLSRC_OFFSET "El Salvador"
+    73+NLSRC_OFFSET "Ethiopia"
+    75+NLSRC_OFFSET "Czech Republic"
+    77+NLSRC_OFFSET "Finland"
+    78+NLSRC_OFFSET "Fiji Islands"
+    80+NLSRC_OFFSET "Micronesia"
+    81+NLSRC_OFFSET "Faroe Islands"
+    84+NLSRC_OFFSET "France"
+    86+NLSRC_OFFSET "Gambia, The"
+    87+NLSRC_OFFSET "Gabon"
+    88+NLSRC_OFFSET "Georgia"
+    89+NLSRC_OFFSET "Ghana"
+    90+NLSRC_OFFSET "Gibraltar"
+    91+NLSRC_OFFSET "Grenada"
+    93+NLSRC_OFFSET "Greenland"
+    94+NLSRC_OFFSET "Germany"
+    98+NLSRC_OFFSET "Greece"
+    99+NLSRC_OFFSET "Guatemala"
+    100+NLSRC_OFFSET "Guinea"
+    101+NLSRC_OFFSET "Guyana"
+    103+NLSRC_OFFSET "Haiti"
+    104+NLSRC_OFFSET "Hong Kong S.A.R."
+    106+NLSRC_OFFSET "Honduras"
+    108+NLSRC_OFFSET "Croatia"
+    109+NLSRC_OFFSET "Hungary"
+    110+NLSRC_OFFSET "Iceland"
+    111+NLSRC_OFFSET "Indonesia"
+    113+NLSRC_OFFSET "India"
+    114+NLSRC_OFFSET "British Indian Ocean Territory"
+    116+NLSRC_OFFSET "Iran"
+    117+NLSRC_OFFSET "Israel"
+    118+NLSRC_OFFSET "Italy"
+    119+NLSRC_OFFSET "Côte d'Ivoire"
+    121+NLSRC_OFFSET "Iraq"
+    122+NLSRC_OFFSET "Japan"
+    124+NLSRC_OFFSET "Jamaica"
+    125+NLSRC_OFFSET "Jan Mayen"
+    126+NLSRC_OFFSET "Jordan"
+    127+NLSRC_OFFSET "Johnston Atoll"
+    129+NLSRC_OFFSET "Kenya"
+    130+NLSRC_OFFSET "Kyrgyzstan"
+    131+NLSRC_OFFSET "North Korea"
+    133+NLSRC_OFFSET "Kiribati"
+    134+NLSRC_OFFSET "Korea"
+    136+NLSRC_OFFSET "Kuwait"
+    137+NLSRC_OFFSET "Kazakhstan"
+    138+NLSRC_OFFSET "Laos"
+    139+NLSRC_OFFSET "Lebanon"
+    140+NLSRC_OFFSET "Latvia"
+    141+NLSRC_OFFSET "Lithuania"
+    142+NLSRC_OFFSET "Liberia"
+    143+NLSRC_OFFSET "Slovakia"
+    145+NLSRC_OFFSET "Liechtenstein"
+    146+NLSRC_OFFSET "Lesotho"
+    147+NLSRC_OFFSET "Luxembourg"
+    148+NLSRC_OFFSET "Libya"
+    149+NLSRC_OFFSET "Madagascar"
+    151+NLSRC_OFFSET "Macao S.A.R."
+    152+NLSRC_OFFSET "Moldova"
+    154+NLSRC_OFFSET "Mongolia"
+    156+NLSRC_OFFSET "Malawi"
+    157+NLSRC_OFFSET "Mali"
+    158+NLSRC_OFFSET "Monaco"
+    159+NLSRC_OFFSET "Morocco"
+    160+NLSRC_OFFSET "Mauritius"
+    162+NLSRC_OFFSET "Mauritania"
+    163+NLSRC_OFFSET "Malta"
+    164+NLSRC_OFFSET "Oman"
+    165+NLSRC_OFFSET "Maldives"
+    166+NLSRC_OFFSET "Mexico"
+    167+NLSRC_OFFSET "Malaysia"
+    168+NLSRC_OFFSET "Mozambique"
+    173+NLSRC_OFFSET "Niger"
+    174+NLSRC_OFFSET "Vanuatu"
+    175+NLSRC_OFFSET "Nigeria"
+    176+NLSRC_OFFSET "Netherlands"
+    177+NLSRC_OFFSET "Norway"
+    178+NLSRC_OFFSET "Nepal"
+    180+NLSRC_OFFSET "Nauru"
+    181+NLSRC_OFFSET "Suriname"
+    182+NLSRC_OFFSET "Nicaragua"
+    183+NLSRC_OFFSET "New Zealand"
+    184+NLSRC_OFFSET "Palestinian Authority"
+    185+NLSRC_OFFSET "Paraguay"
+    187+NLSRC_OFFSET "Peru"
+    190+NLSRC_OFFSET "Pakistan"
+    191+NLSRC_OFFSET "Poland"
+    192+NLSRC_OFFSET "Panama"
+    193+NLSRC_OFFSET "Portugal"
+    194+NLSRC_OFFSET "Papua New Guinea"
+    195+NLSRC_OFFSET "Palau"
+    196+NLSRC_OFFSET "Guinea-Bissau"
+    197+NLSRC_OFFSET "Qatar"
+    198+NLSRC_OFFSET "Reunion"
+    199+NLSRC_OFFSET "Marshall Islands"
+    200+NLSRC_OFFSET "Romania"
+    201+NLSRC_OFFSET "Philippines"
+    202+NLSRC_OFFSET "Puerto Rico"
+    203+NLSRC_OFFSET "Russia"
+    204+NLSRC_OFFSET "Rwanda"
+    205+NLSRC_OFFSET "Saudi Arabia"
+    206+NLSRC_OFFSET "St. Pierre and Miquelon"
+    207+NLSRC_OFFSET "St. Kitts and Nevis"
+    208+NLSRC_OFFSET "Seychelles"
+    209+NLSRC_OFFSET "South Africa"
+    210+NLSRC_OFFSET "Senegal"
+    212+NLSRC_OFFSET "Slovenia"
+    213+NLSRC_OFFSET "Sierra Leone"
+    214+NLSRC_OFFSET "San Marino"
+    215+NLSRC_OFFSET "Singapore"
+    216+NLSRC_OFFSET "Somalia"
+    217+NLSRC_OFFSET "Spain"
+    218+NLSRC_OFFSET "St. Lucia"
+    219+NLSRC_OFFSET "Sudan"
+    220+NLSRC_OFFSET "Svalbard"
+    221+NLSRC_OFFSET "Sweden"
+    222+NLSRC_OFFSET "Syria"
+    223+NLSRC_OFFSET "Switzerland"
+    224+NLSRC_OFFSET "United Arab Emirates"
+    225+NLSRC_OFFSET "Trinidad and Tobago"
+    227+NLSRC_OFFSET "Thailand"
+    228+NLSRC_OFFSET "Tajikistan"
+    231+NLSRC_OFFSET "Tonga"
+    232+NLSRC_OFFSET "Togo"
+    233+NLSRC_OFFSET "São Tomé and Príncipe"
+    234+NLSRC_OFFSET "Tunisia"
+    235+NLSRC_OFFSET "Turkey"
+    236+NLSRC_OFFSET "Tuvalu"
+    237+NLSRC_OFFSET "Taiwan"
+    238+NLSRC_OFFSET "Turkmenistan"
+    239+NLSRC_OFFSET "Tanzania"
+    240+NLSRC_OFFSET "Uganda"
+    241+NLSRC_OFFSET "Ukraine"
+    242+NLSRC_OFFSET "United Kingdom"
+    244+NLSRC_OFFSET "United States"
+    245+NLSRC_OFFSET "Burkina Faso"
+    246+NLSRC_OFFSET "Uruguay"
+    247+NLSRC_OFFSET "Uzbekistan"
+    248+NLSRC_OFFSET "St. Vincent and the Grenadines"
+    249+NLSRC_OFFSET "Bolivarian Republic of Venezuela"
+    251+NLSRC_OFFSET "Vietnam"
+    252+NLSRC_OFFSET "Virgin Islands"
+    253+NLSRC_OFFSET "Vatican City"
+    254+NLSRC_OFFSET "Namibia"
+    257+NLSRC_OFFSET "Western Sahara (disputed)"
+    258+NLSRC_OFFSET "Wake Island"
+    259+NLSRC_OFFSET "Samoa"
+    260+NLSRC_OFFSET "Swaziland"
+    261+NLSRC_OFFSET "Yemen"
+    263+NLSRC_OFFSET "Zambia"
+    264+NLSRC_OFFSET "Zimbabwe"
+    269+NLSRC_OFFSET "Serbia and Montenegro (Former)"
+    270+NLSRC_OFFSET "Montenegro"
+    271+NLSRC_OFFSET "Serbia"
+    273+NLSRC_OFFSET "Curaçao"
+    276+NLSRC_OFFSET "South Sudan"
+    300+NLSRC_OFFSET "Anguilla"
+    301+NLSRC_OFFSET "Antarctica"
+    302+NLSRC_OFFSET "Aruba"
+    303+NLSRC_OFFSET "Ascension Island"
+    304+NLSRC_OFFSET "Ashmore and Cartier Islands"
+    305+NLSRC_OFFSET "Baker Island"
+    306+NLSRC_OFFSET "Bouvet Island"
+    307+NLSRC_OFFSET "Cayman Islands"
+    308+NLSRC_OFFSET "Channel Islands"
+    309+NLSRC_OFFSET "Christmas Island"
+    310+NLSRC_OFFSET "Clipperton Island"
+    311+NLSRC_OFFSET "Cocos (Keeling) Islands"
+    312+NLSRC_OFFSET "Cook Islands"
+    313+NLSRC_OFFSET "Coral Sea Islands"
+    314+NLSRC_OFFSET "Diego Garcia"
+    315+NLSRC_OFFSET "Falkland Islands (Islas Malvinas)"
+    317+NLSRC_OFFSET "French Guiana"
+    318+NLSRC_OFFSET "French Polynesia"
+    319+NLSRC_OFFSET "French Southern and Antarctic Lands"
+    321+NLSRC_OFFSET "Guadeloupe"
+    322+NLSRC_OFFSET "Guam"
+    323+NLSRC_OFFSET "Guantanamo Bay"
+    324+NLSRC_OFFSET "Guernsey"
+    325+NLSRC_OFFSET "Heard Island and McDonald Islands"
+    326+NLSRC_OFFSET "Howland Island"
+    327+NLSRC_OFFSET "Jarvis Island"
+    328+NLSRC_OFFSET "Jersey"
+    329+NLSRC_OFFSET "Kingman Reef"
+    330+NLSRC_OFFSET "Martinique"
+    331+NLSRC_OFFSET "Mayotte"
+    332+NLSRC_OFFSET "Montserrat"
+    333+NLSRC_OFFSET "Netherlands Antilles (Former)"
+    334+NLSRC_OFFSET "New Caledonia"
+    335+NLSRC_OFFSET "Niue"
+    336+NLSRC_OFFSET "Norfolk Island"
+    337+NLSRC_OFFSET "Northern Mariana Islands"
+    338+NLSRC_OFFSET "Palmyra Atoll"
+    339+NLSRC_OFFSET "Pitcairn Islands"
+    340+NLSRC_OFFSET "Rota Island"
+    341+NLSRC_OFFSET "Saipan"
+    342+NLSRC_OFFSET "South Georgia and the South Sandwich Islands"
+    343+NLSRC_OFFSET "St. Helena"
+    346+NLSRC_OFFSET "Tinian Island"
+    347+NLSRC_OFFSET "Tokelau"
+    348+NLSRC_OFFSET "Tristan da Cunha"
+    349+NLSRC_OFFSET "Turks and Caicos Islands"
+    351+NLSRC_OFFSET "Virgin Islands, British"
+    352+NLSRC_OFFSET "Wallis and Futuna"
+    15126+NLSRC_OFFSET "Man, Isle of"
+    19618+NLSRC_OFFSET "Macedonia, Former Yugoslav Republic of"
+    21242+NLSRC_OFFSET "Midway Islands"
+    30967+NLSRC_OFFSET "Sint Maarten (Dutch part)"
+    31706+NLSRC_OFFSET "Saint Martin (French part)"
 END
index 98be5d1..249acb1 100644 (file)
@@ -158,4 +158,271 @@ BEGIN
 
     52936 "52936 (HZ-GB2312 Simplified Chinese)"
     54936 "54936 (GB18030 Simplified Chinese)"
+    
+    /* Locations */
+    2+NLSRC_OFFSET "Antigua and Barbuda"
+    3+NLSRC_OFFSET "Afghanistan"
+    4+NLSRC_OFFSET "Algeria"
+    5+NLSRC_OFFSET "Azerbaijan"
+    6+NLSRC_OFFSET "Albania"
+    7+NLSRC_OFFSET "Armenia"
+    8+NLSRC_OFFSET "Andorra"
+    9+NLSRC_OFFSET "Angola"
+    10+NLSRC_OFFSET "American Samoa"
+    11+NLSRC_OFFSET "Argentina"
+    12+NLSRC_OFFSET "Australia"
+    14+NLSRC_OFFSET "Austria"
+    17+NLSRC_OFFSET "Bahrain"
+    18+NLSRC_OFFSET "Barbados"
+    19+NLSRC_OFFSET "Botswana"
+    20+NLSRC_OFFSET "Bermuda"
+    21+NLSRC_OFFSET "Belgium"
+    22+NLSRC_OFFSET "Bahamas, The"
+    23+NLSRC_OFFSET "Bangladesh"
+    24+NLSRC_OFFSET "Belize"
+    25+NLSRC_OFFSET "Bosnia and Herzegovina"
+    26+NLSRC_OFFSET "Bolivia"
+    27+NLSRC_OFFSET "Myanmar"
+    28+NLSRC_OFFSET "Benin"
+    29+NLSRC_OFFSET "Belarus"
+    30+NLSRC_OFFSET "Solomon Islands"
+    32+NLSRC_OFFSET "Brazil"
+    34+NLSRC_OFFSET "Bhutan"
+    35+NLSRC_OFFSET "Bulgaria"
+    38+NLSRC_OFFSET "Burundi"
+    39+NLSRC_OFFSET "Canada"
+    40+NLSRC_OFFSET "Cambodia"
+    41+NLSRC_OFFSET "Chad"
+    42+NLSRC_OFFSET "Sri Lanka"
+    43+NLSRC_OFFSET "Congo"
+    44+NLSRC_OFFSET "Congo (DRC)"
+    45+NLSRC_OFFSET "China"
+    46+NLSRC_OFFSET "Chile"
+    49+NLSRC_OFFSET "Cameroon"
+    50+NLSRC_OFFSET "Comoros"
+    51+NLSRC_OFFSET "Colombia"
+    54+NLSRC_OFFSET "Costa Rica"
+    55+NLSRC_OFFSET "Central African Republic"
+    56+NLSRC_OFFSET "Cuba"
+    57+NLSRC_OFFSET "Cape Verde"
+    59+NLSRC_OFFSET "Cyprus"
+    61+NLSRC_OFFSET "Denmark"
+    62+NLSRC_OFFSET "Djibouti"
+    63+NLSRC_OFFSET "Dominica"
+    65+NLSRC_OFFSET "Dominican Republic"
+    66+NLSRC_OFFSET "Ecuador"
+    67+NLSRC_OFFSET "Egypt"
+    68+NLSRC_OFFSET "Ireland"
+    69+NLSRC_OFFSET "Equatorial Guinea"
+    70+NLSRC_OFFSET "Estonia"
+    71+NLSRC_OFFSET "Eritrea"
+    72+NLSRC_OFFSET "El Salvador"
+    73+NLSRC_OFFSET "Ethiopia"
+    75+NLSRC_OFFSET "Czech Republic"
+    77+NLSRC_OFFSET "Finland"
+    78+NLSRC_OFFSET "Fiji Islands"
+    80+NLSRC_OFFSET "Micronesia"
+    81+NLSRC_OFFSET "Faroe Islands"
+    84+NLSRC_OFFSET "France"
+    86+NLSRC_OFFSET "Gambia, The"
+    87+NLSRC_OFFSET "Gabon"
+    88+NLSRC_OFFSET "Georgia"
+    89+NLSRC_OFFSET "Ghana"
+    90+NLSRC_OFFSET "Gibraltar"
+    91+NLSRC_OFFSET "Grenada"
+    93+NLSRC_OFFSET "Greenland"
+    94+NLSRC_OFFSET "Germany"
+    98+NLSRC_OFFSET "Greece"
+    99+NLSRC_OFFSET "Guatemala"
+    100+NLSRC_OFFSET "Guinea"
+    101+NLSRC_OFFSET "Guyana"
+    103+NLSRC_OFFSET "Haiti"
+    104+NLSRC_OFFSET "Hong Kong S.A.R."
+    106+NLSRC_OFFSET "Honduras"
+    108+NLSRC_OFFSET "Croatia"
+    109+NLSRC_OFFSET "Hungary"
+    110+NLSRC_OFFSET "Iceland"
+    111+NLSRC_OFFSET "Indonesia"
+    113+NLSRC_OFFSET "India"
+    114+NLSRC_OFFSET "British Indian Ocean Territory"
+    116+NLSRC_OFFSET "Iran"
+    117+NLSRC_OFFSET "Israel"
+    118+NLSRC_OFFSET "Italy"
+    119+NLSRC_OFFSET "Côte d'Ivoire"
+    121+NLSRC_OFFSET "Iraq"
+    122+NLSRC_OFFSET "Japan"
+    124+NLSRC_OFFSET "Jamaica"
+    125+NLSRC_OFFSET "Jan Mayen"
+    126+NLSRC_OFFSET "Jordan"
+    127+NLSRC_OFFSET "Johnston Atoll"
+    129+NLSRC_OFFSET "Kenya"
+    130+NLSRC_OFFSET "Kyrgyzstan"
+    131+NLSRC_OFFSET "North Korea"
+    133+NLSRC_OFFSET "Kiribati"
+    134+NLSRC_OFFSET "Korea"
+    136+NLSRC_OFFSET "Kuwait"
+    137+NLSRC_OFFSET "Kazakhstan"
+    138+NLSRC_OFFSET "Laos"
+    139+NLSRC_OFFSET "Lebanon"
+    140+NLSRC_OFFSET "Latvia"
+    141+NLSRC_OFFSET "Lithuania"
+    142+NLSRC_OFFSET "Liberia"
+    143+NLSRC_OFFSET "Slovakia"
+    145+NLSRC_OFFSET "Liechtenstein"
+    146+NLSRC_OFFSET "Lesotho"
+    147+NLSRC_OFFSET "Luxembourg"
+    148+NLSRC_OFFSET "Libya"
+    149+NLSRC_OFFSET "Madagascar"
+    151+NLSRC_OFFSET "Macao S.A.R."
+    152+NLSRC_OFFSET "Moldova"
+    154+NLSRC_OFFSET "Mongolia"
+    156+NLSRC_OFFSET "Malawi"
+    157+NLSRC_OFFSET "Mali"
+    158+NLSRC_OFFSET "Monaco"
+    159+NLSRC_OFFSET "Morocco"
+    160+NLSRC_OFFSET "Mauritius"
+    162+NLSRC_OFFSET "Mauritania"
+    163+NLSRC_OFFSET "Malta"
+    164+NLSRC_OFFSET "Oman"
+    165+NLSRC_OFFSET "Maldives"
+    166+NLSRC_OFFSET "Mexico"
+    167+NLSRC_OFFSET "Malaysia"
+    168+NLSRC_OFFSET "Mozambique"
+    173+NLSRC_OFFSET "Niger"
+    174+NLSRC_OFFSET "Vanuatu"
+    175+NLSRC_OFFSET "Nigeria"
+    176+NLSRC_OFFSET "Netherlands"
+    177+NLSRC_OFFSET "Norway"
+    178+NLSRC_OFFSET "Nepal"
+    180+NLSRC_OFFSET "Nauru"
+    181+NLSRC_OFFSET "Suriname"
+    182+NLSRC_OFFSET "Nicaragua"
+    183+NLSRC_OFFSET "New Zealand"
+    184+NLSRC_OFFSET "Palestinian Authority"
+    185+NLSRC_OFFSET "Paraguay"
+    187+NLSRC_OFFSET "Peru"
+    190+NLSRC_OFFSET "Pakistan"
+    191+NLSRC_OFFSET "Poland"
+    192+NLSRC_OFFSET "Panama"
+    193+NLSRC_OFFSET "Portugal"
+    194+NLSRC_OFFSET "Papua New Guinea"
+    195+NLSRC_OFFSET "Palau"
+    196+NLSRC_OFFSET "Guinea-Bissau"
+    197+NLSRC_OFFSET "Qatar"
+    198+NLSRC_OFFSET "Reunion"
+    199+NLSRC_OFFSET "Marshall Islands"
+    200+NLSRC_OFFSET "Romania"
+    201+NLSRC_OFFSET "Philippines"
+    202+NLSRC_OFFSET "Puerto Rico"
+    203+NLSRC_OFFSET "Russia"
+    204+NLSRC_OFFSET "Rwanda"
+    205+NLSRC_OFFSET "Saudi Arabia"
+    206+NLSRC_OFFSET "St. Pierre and Miquelon"
+    207+NLSRC_OFFSET "St. Kitts and Nevis"
+    208+NLSRC_OFFSET "Seychelles"
+    209+NLSRC_OFFSET "South Africa"
+    210+NLSRC_OFFSET "Senegal"
+    212+NLSRC_OFFSET "Slovenia"
+    213+NLSRC_OFFSET "Sierra Leone"
+    214+NLSRC_OFFSET "San Marino"
+    215+NLSRC_OFFSET "Singapore"
+    216+NLSRC_OFFSET "Somalia"
+    217+NLSRC_OFFSET "Spain"
+    218+NLSRC_OFFSET "St. Lucia"
+    219+NLSRC_OFFSET "Sudan"
+    220+NLSRC_OFFSET "Svalbard"
+    221+NLSRC_OFFSET "Sweden"
+    222+NLSRC_OFFSET "Syria"
+    223+NLSRC_OFFSET "Switzerland"
+    224+NLSRC_OFFSET "United Arab Emirates"
+    225+NLSRC_OFFSET "Trinidad and Tobago"
+    227+NLSRC_OFFSET "Thailand"
+    228+NLSRC_OFFSET "Tajikistan"
+    231+NLSRC_OFFSET "Tonga"
+    232+NLSRC_OFFSET "Togo"
+    233+NLSRC_OFFSET "São Tomé and Príncipe"
+    234+NLSRC_OFFSET "Tunisia"
+    235+NLSRC_OFFSET "Turkey"
+    236+NLSRC_OFFSET "Tuvalu"
+    237+NLSRC_OFFSET "Taiwan"
+    238+NLSRC_OFFSET "Turkmenistan"
+    239+NLSRC_OFFSET "Tanzania"
+    240+NLSRC_OFFSET "Uganda"
+    241+NLSRC_OFFSET "Ukraine"
+    242+NLSRC_OFFSET "United Kingdom"
+    244+NLSRC_OFFSET "United States"
+    245+NLSRC_OFFSET "Burkina Faso"
+    246+NLSRC_OFFSET "Uruguay"
+    247+NLSRC_OFFSET "Uzbekistan"
+    248+NLSRC_OFFSET "St. Vincent and the Grenadines"
+    249+NLSRC_OFFSET "Bolivarian Republic of Venezuela"
+    251+NLSRC_OFFSET "Vietnam"
+    252+NLSRC_OFFSET "Virgin Islands"
+    253+NLSRC_OFFSET "Vatican City"
+    254+NLSRC_OFFSET "Namibia"
+    257+NLSRC_OFFSET "Western Sahara (disputed)"
+    258+NLSRC_OFFSET "Wake Island"
+    259+NLSRC_OFFSET "Samoa"
+    260+NLSRC_OFFSET "Swaziland"
+    261+NLSRC_OFFSET "Yemen"
+    263+NLSRC_OFFSET "Zambia"
+    264+NLSRC_OFFSET "Zimbabwe"
+    269+NLSRC_OFFSET "Serbia and Montenegro (Former)"
+    270+NLSRC_OFFSET "Montenegro"
+    271+NLSRC_OFFSET "Serbia"
+    273+NLSRC_OFFSET "Curaçao"
+    276+NLSRC_OFFSET "South Sudan"
+    300+NLSRC_OFFSET "Anguilla"
+    301+NLSRC_OFFSET "Antarctica"
+    302+NLSRC_OFFSET "Aruba"
+    303+NLSRC_OFFSET "Ascension Island"
+    304+NLSRC_OFFSET "Ashmore and Cartier Islands"
+    305+NLSRC_OFFSET "Baker Island"
+    306+NLSRC_OFFSET "Bouvet Island"
+    307+NLSRC_OFFSET "Cayman Islands"
+    308+NLSRC_OFFSET "Channel Islands"
+    309+NLSRC_OFFSET "Christmas Island"
+    310+NLSRC_OFFSET "Clipperton Island"
+    311+NLSRC_OFFSET "Cocos (Keeling) Islands"
+    312+NLSRC_OFFSET "Cook Islands"
+    313+NLSRC_OFFSET "Coral Sea Islands"
+    314+NLSRC_OFFSET "Diego Garcia"
+    315+NLSRC_OFFSET "Falkland Islands (Islas Malvinas)"
+    317+NLSRC_OFFSET "French Guiana"
+    318+NLSRC_OFFSET "French Polynesia"
+    319+NLSRC_OFFSET "French Southern and Antarctic Lands"
+    321+NLSRC_OFFSET "Guadeloupe"
+    322+NLSRC_OFFSET "Guam"
+    323+NLSRC_OFFSET "Guantanamo Bay"
+    324+NLSRC_OFFSET "Guernsey"
+    325+NLSRC_OFFSET "Heard Island and McDonald Islands"
+    326+NLSRC_OFFSET "Howland Island"
+    327+NLSRC_OFFSET "Jarvis Island"
+    328+NLSRC_OFFSET "Jersey"
+    329+NLSRC_OFFSET "Kingman Reef"
+    330+NLSRC_OFFSET "Martinique"
+    331+NLSRC_OFFSET "Mayotte"
+    332+NLSRC_OFFSET "Montserrat"
+    333+NLSRC_OFFSET "Netherlands Antilles (Former)"
+    334+NLSRC_OFFSET "New Caledonia"
+    335+NLSRC_OFFSET "Niue"
+    336+NLSRC_OFFSET "Norfolk Island"
+    337+NLSRC_OFFSET "Northern Mariana Islands"
+    338+NLSRC_OFFSET "Palmyra Atoll"
+    339+NLSRC_OFFSET "Pitcairn Islands"
+    340+NLSRC_OFFSET "Rota Island"
+    341+NLSRC_OFFSET "Saipan"
+    342+NLSRC_OFFSET "South Georgia and the South Sandwich Islands"
+    343+NLSRC_OFFSET "St. Helena"
+    346+NLSRC_OFFSET "Tinian Island"
+    347+NLSRC_OFFSET "Tokelau"
+    348+NLSRC_OFFSET "Tristan da Cunha"
+    349+NLSRC_OFFSET "Turks and Caicos Islands"
+    351+NLSRC_OFFSET "Virgin Islands, British"
+    352+NLSRC_OFFSET "Wallis and Futuna"
+    15126+NLSRC_OFFSET "Man, Isle of"
+    19618+NLSRC_OFFSET "Macedonia, Former Yugoslav Republic of"
+    21242+NLSRC_OFFSET "Midway Islands"
+    30967+NLSRC_OFFSET "Sint Maarten (Dutch part)"
+    31706+NLSRC_OFFSET "Saint Martin (French part)"
 END
index dc29325..569aaa6 100644 (file)
@@ -160,4 +160,271 @@ BEGIN
 
     52936 "52936 (HZ-GB2312 chinezesc simplificat)"
     54936 "54936 (GB18030 chinezesc simplificat)"
+    
+    /* Locations */
+    2+NLSRC_OFFSET "Antigua and Barbuda"
+    3+NLSRC_OFFSET "Afghanistan"
+    4+NLSRC_OFFSET "Algeria"
+    5+NLSRC_OFFSET "Azerbaijan"
+    6+NLSRC_OFFSET "Albania"
+    7+NLSRC_OFFSET "Armenia"
+    8+NLSRC_OFFSET "Andorra"
+    9+NLSRC_OFFSET "Angola"
+    10+NLSRC_OFFSET "American Samoa"
+    11+NLSRC_OFFSET "Argentina"
+    12+NLSRC_OFFSET "Australia"
+    14+NLSRC_OFFSET "Austria"
+    17+NLSRC_OFFSET "Bahrain"
+    18+NLSRC_OFFSET "Barbados"
+    19+NLSRC_OFFSET "Botswana"
+    20+NLSRC_OFFSET "Bermuda"
+    21+NLSRC_OFFSET "Belgium"
+    22+NLSRC_OFFSET "Bahamas, The"
+    23+NLSRC_OFFSET "Bangladesh"
+    24+NLSRC_OFFSET "Belize"
+    25+NLSRC_OFFSET "Bosnia and Herzegovina"
+    26+NLSRC_OFFSET "Bolivia"
+    27+NLSRC_OFFSET "Myanmar"
+    28+NLSRC_OFFSET "Benin"
+    29+NLSRC_OFFSET "Belarus"
+    30+NLSRC_OFFSET "Solomon Islands"
+    32+NLSRC_OFFSET "Brazil"
+    34+NLSRC_OFFSET "Bhutan"
+    35+NLSRC_OFFSET "Bulgaria"
+    38+NLSRC_OFFSET "Burundi"
+    39+NLSRC_OFFSET "Canada"
+    40+NLSRC_OFFSET "Cambodia"
+    41+NLSRC_OFFSET "Chad"
+    42+NLSRC_OFFSET "Sri Lanka"
+    43+NLSRC_OFFSET "Congo"
+    44+NLSRC_OFFSET "Congo (DRC)"
+    45+NLSRC_OFFSET "China"
+    46+NLSRC_OFFSET "Chile"
+    49+NLSRC_OFFSET "Cameroon"
+    50+NLSRC_OFFSET "Comoros"
+    51+NLSRC_OFFSET "Colombia"
+    54+NLSRC_OFFSET "Costa Rica"
+    55+NLSRC_OFFSET "Central African Republic"
+    56+NLSRC_OFFSET "Cuba"
+    57+NLSRC_OFFSET "Cape Verde"
+    59+NLSRC_OFFSET "Cyprus"
+    61+NLSRC_OFFSET "Denmark"
+    62+NLSRC_OFFSET "Djibouti"
+    63+NLSRC_OFFSET "Dominica"
+    65+NLSRC_OFFSET "Dominican Republic"
+    66+NLSRC_OFFSET "Ecuador"
+    67+NLSRC_OFFSET "Egypt"
+    68+NLSRC_OFFSET "Ireland"
+    69+NLSRC_OFFSET "Equatorial Guinea"
+    70+NLSRC_OFFSET "Estonia"
+    71+NLSRC_OFFSET "Eritrea"
+    72+NLSRC_OFFSET "El Salvador"
+    73+NLSRC_OFFSET "Ethiopia"
+    75+NLSRC_OFFSET "Czech Republic"
+    77+NLSRC_OFFSET "Finland"
+    78+NLSRC_OFFSET "Fiji Islands"
+    80+NLSRC_OFFSET "Micronesia"
+    81+NLSRC_OFFSET "Faroe Islands"
+    84+NLSRC_OFFSET "France"
+    86+NLSRC_OFFSET "Gambia, The"
+    87+NLSRC_OFFSET "Gabon"
+    88+NLSRC_OFFSET "Georgia"
+    89+NLSRC_OFFSET "Ghana"
+    90+NLSRC_OFFSET "Gibraltar"
+    91+NLSRC_OFFSET "Grenada"
+    93+NLSRC_OFFSET "Greenland"
+    94+NLSRC_OFFSET "Germany"
+    98+NLSRC_OFFSET "Greece"
+    99+NLSRC_OFFSET "Guatemala"
+    100+NLSRC_OFFSET "Guinea"
+    101+NLSRC_OFFSET "Guyana"
+    103+NLSRC_OFFSET "Haiti"
+    104+NLSRC_OFFSET "Hong Kong S.A.R."
+    106+NLSRC_OFFSET "Honduras"
+    108+NLSRC_OFFSET "Croatia"
+    109+NLSRC_OFFSET "Hungary"
+    110+NLSRC_OFFSET "Iceland"
+    111+NLSRC_OFFSET "Indonesia"
+    113+NLSRC_OFFSET "India"
+    114+NLSRC_OFFSET "British Indian Ocean Territory"
+    116+NLSRC_OFFSET "Iran"
+    117+NLSRC_OFFSET "Israel"
+    118+NLSRC_OFFSET "Italy"
+    119+NLSRC_OFFSET "Côte d'Ivoire"
+    121+NLSRC_OFFSET "Iraq"
+    122+NLSRC_OFFSET "Japan"
+    124+NLSRC_OFFSET "Jamaica"
+    125+NLSRC_OFFSET "Jan Mayen"
+    126+NLSRC_OFFSET "Jordan"
+    127+NLSRC_OFFSET "Johnston Atoll"
+    129+NLSRC_OFFSET "Kenya"
+    130+NLSRC_OFFSET "Kyrgyzstan"
+    131+NLSRC_OFFSET "North Korea"
+    133+NLSRC_OFFSET "Kiribati"
+    134+NLSRC_OFFSET "Korea"
+    136+NLSRC_OFFSET "Kuwait"
+    137+NLSRC_OFFSET "Kazakhstan"
+    138+NLSRC_OFFSET "Laos"
+    139+NLSRC_OFFSET "Lebanon"
+    140+NLSRC_OFFSET "Latvia"
+    141+NLSRC_OFFSET "Lithuania"
+    142+NLSRC_OFFSET "Liberia"
+    143+NLSRC_OFFSET "Slovakia"
+    145+NLSRC_OFFSET "Liechtenstein"
+    146+NLSRC_OFFSET "Lesotho"
+    147+NLSRC_OFFSET "Luxembourg"
+    148+NLSRC_OFFSET "Libya"
+    149+NLSRC_OFFSET "Madagascar"
+    151+NLSRC_OFFSET "Macao S.A.R."
+    152+NLSRC_OFFSET "Moldova"
+    154+NLSRC_OFFSET "Mongolia"
+    156+NLSRC_OFFSET "Malawi"
+    157+NLSRC_OFFSET "Mali"
+    158+NLSRC_OFFSET "Monaco"
+    159+NLSRC_OFFSET "Morocco"
+    160+NLSRC_OFFSET "Mauritius"
+    162+NLSRC_OFFSET "Mauritania"
+    163+NLSRC_OFFSET "Malta"
+    164+NLSRC_OFFSET "Oman"
+    165+NLSRC_OFFSET "Maldives"
+    166+NLSRC_OFFSET "Mexico"
+    167+NLSRC_OFFSET "Malaysia"
+    168+NLSRC_OFFSET "Mozambique"
+    173+NLSRC_OFFSET "Niger"
+    174+NLSRC_OFFSET "Vanuatu"
+    175+NLSRC_OFFSET "Nigeria"
+    176+NLSRC_OFFSET "Netherlands"
+    177+NLSRC_OFFSET "Norway"
+    178+NLSRC_OFFSET "Nepal"
+    180+NLSRC_OFFSET "Nauru"
+    181+NLSRC_OFFSET "Suriname"
+    182+NLSRC_OFFSET "Nicaragua"
+    183+NLSRC_OFFSET "New Zealand"
+    184+NLSRC_OFFSET "Palestinian Authority"
+    185+NLSRC_OFFSET "Paraguay"
+    187+NLSRC_OFFSET "Peru"
+    190+NLSRC_OFFSET "Pakistan"
+    191+NLSRC_OFFSET "Poland"
+    192+NLSRC_OFFSET "Panama"
+    193+NLSRC_OFFSET "Portugal"
+    194+NLSRC_OFFSET "Papua New Guinea"
+    195+NLSRC_OFFSET "Palau"
+    196+NLSRC_OFFSET "Guinea-Bissau"
+    197+NLSRC_OFFSET "Qatar"
+    198+NLSRC_OFFSET "Reunion"
+    199+NLSRC_OFFSET "Marshall Islands"
+    200+NLSRC_OFFSET "Romania"
+    201+NLSRC_OFFSET "Philippines"
+    202+NLSRC_OFFSET "Puerto Rico"
+    203+NLSRC_OFFSET "Russia"
+    204+NLSRC_OFFSET "Rwanda"
+    205+NLSRC_OFFSET "Saudi Arabia"
+    206+NLSRC_OFFSET "St. Pierre and Miquelon"
+    207+NLSRC_OFFSET "St. Kitts and Nevis"
+    208+NLSRC_OFFSET "Seychelles"
+    209+NLSRC_OFFSET "South Africa"
+    210+NLSRC_OFFSET "Senegal"
+    212+NLSRC_OFFSET "Slovenia"
+    213+NLSRC_OFFSET "Sierra Leone"
+    214+NLSRC_OFFSET "San Marino"
+    215+NLSRC_OFFSET "Singapore"
+    216+NLSRC_OFFSET "Somalia"
+    217+NLSRC_OFFSET "Spain"
+    218+NLSRC_OFFSET "St. Lucia"
+    219+NLSRC_OFFSET "Sudan"
+    220+NLSRC_OFFSET "Svalbard"
+    221+NLSRC_OFFSET "Sweden"
+    222+NLSRC_OFFSET "Syria"
+    223+NLSRC_OFFSET "Switzerland"
+    224+NLSRC_OFFSET "United Arab Emirates"
+    225+NLSRC_OFFSET "Trinidad and Tobago"
+    227+NLSRC_OFFSET "Thailand"
+    228+NLSRC_OFFSET "Tajikistan"
+    231+NLSRC_OFFSET "Tonga"
+    232+NLSRC_OFFSET "Togo"
+    233+NLSRC_OFFSET "São Tomé and Príncipe"
+    234+NLSRC_OFFSET "Tunisia"
+    235+NLSRC_OFFSET "Turkey"
+    236+NLSRC_OFFSET "Tuvalu"
+    237+NLSRC_OFFSET "Taiwan"
+    238+NLSRC_OFFSET "Turkmenistan"
+    239+NLSRC_OFFSET "Tanzania"
+    240+NLSRC_OFFSET "Uganda"
+    241+NLSRC_OFFSET "Ukraine"
+    242+NLSRC_OFFSET "United Kingdom"
+    244+NLSRC_OFFSET "United States"
+    245+NLSRC_OFFSET "Burkina Faso"
+    246+NLSRC_OFFSET "Uruguay"
+    247+NLSRC_OFFSET "Uzbekistan"
+    248+NLSRC_OFFSET "St. Vincent and the Grenadines"
+    249+NLSRC_OFFSET "Bolivarian Republic of Venezuela"
+    251+NLSRC_OFFSET "Vietnam"
+    252+NLSRC_OFFSET "Virgin Islands"
+    253+NLSRC_OFFSET "Vatican City"
+    254+NLSRC_OFFSET "Namibia"
+    257+NLSRC_OFFSET "Western Sahara (disputed)"
+    258+NLSRC_OFFSET "Wake Island"
+    259+NLSRC_OFFSET "Samoa"
+    260+NLSRC_OFFSET "Swaziland"
+    261+NLSRC_OFFSET "Yemen"
+    263+NLSRC_OFFSET "Zambia"
+    264+NLSRC_OFFSET "Zimbabwe"
+    269+NLSRC_OFFSET "Serbia and Montenegro (Former)"
+    270+NLSRC_OFFSET "Montenegro"
+    271+NLSRC_OFFSET "Serbia"
+    273+NLSRC_OFFSET "Curaçao"
+    276+NLSRC_OFFSET "South Sudan"
+    300+NLSRC_OFFSET "Anguilla"
+    301+NLSRC_OFFSET "Antarctica"
+    302+NLSRC_OFFSET "Aruba"
+    303+NLSRC_OFFSET "Ascension Island"
+    304+NLSRC_OFFSET "Ashmore and Cartier Islands"
+    305+NLSRC_OFFSET "Baker Island"
+    306+NLSRC_OFFSET "Bouvet Island"
+    307+NLSRC_OFFSET "Cayman Islands"
+    308+NLSRC_OFFSET "Channel Islands"
+    309+NLSRC_OFFSET "Christmas Island"
+    310+NLSRC_OFFSET "Clipperton Island"
+    311+NLSRC_OFFSET "Cocos (Keeling) Islands"
+    312+NLSRC_OFFSET "Cook Islands"
+    313+NLSRC_OFFSET "Coral Sea Islands"
+    314+NLSRC_OFFSET "Diego Garcia"
+    315+NLSRC_OFFSET "Falkland Islands (Islas Malvinas)"
+    317+NLSRC_OFFSET "French Guiana"
+    318+NLSRC_OFFSET "French Polynesia"
+    319+NLSRC_OFFSET "French Southern and Antarctic Lands"
+    321+NLSRC_OFFSET "Guadeloupe"
+    322+NLSRC_OFFSET "Guam"
+    323+NLSRC_OFFSET "Guantanamo Bay"
+    324+NLSRC_OFFSET "Guernsey"
+    325+NLSRC_OFFSET "Heard Island and McDonald Islands"
+    326+NLSRC_OFFSET "Howland Island"
+    327+NLSRC_OFFSET "Jarvis Island"
+    328+NLSRC_OFFSET "Jersey"
+    329+NLSRC_OFFSET "Kingman Reef"
+    330+NLSRC_OFFSET "Martinique"
+    331+NLSRC_OFFSET "Mayotte"
+    332+NLSRC_OFFSET "Montserrat"
+    333+NLSRC_OFFSET "Netherlands Antilles (Former)"
+    334+NLSRC_OFFSET "New Caledonia"
+    335+NLSRC_OFFSET "Niue"
+    336+NLSRC_OFFSET "Norfolk Island"
+    337+NLSRC_OFFSET "Northern Mariana Islands"
+    338+NLSRC_OFFSET "Palmyra Atoll"
+    339+NLSRC_OFFSET "Pitcairn Islands"
+    340+NLSRC_OFFSET "Rota Island"
+    341+NLSRC_OFFSET "Saipan"
+    342+NLSRC_OFFSET "South Georgia and the South Sandwich Islands"
+    343+NLSRC_OFFSET "St. Helena"
+    346+NLSRC_OFFSET "Tinian Island"
+    347+NLSRC_OFFSET "Tokelau"
+    348+NLSRC_OFFSET "Tristan da Cunha"
+    349+NLSRC_OFFSET "Turks and Caicos Islands"
+    351+NLSRC_OFFSET "Virgin Islands, British"
+    352+NLSRC_OFFSET "Wallis and Futuna"
+    15126+NLSRC_OFFSET "Man, Isle of"
+    19618+NLSRC_OFFSET "Macedonia, Former Yugoslav Republic of"
+    21242+NLSRC_OFFSET "Midway Islands"
+    30967+NLSRC_OFFSET "Sint Maarten (Dutch part)"
+    31706+NLSRC_OFFSET "Saint Martin (French part)"
 END
index 29c7981..14af091 100644 (file)
@@ -158,4 +158,271 @@ BEGIN
 
     52936 "52936 (HZ-GB2312 китайская упрощенная)"
     54936 "54936 (GB18030 китайская упрощенная)"
+    
+    /* Locations */
+    2+NLSRC_OFFSET "Antigua and Barbuda"
+    3+NLSRC_OFFSET "Afghanistan"
+    4+NLSRC_OFFSET "Algeria"
+    5+NLSRC_OFFSET "Azerbaijan"
+    6+NLSRC_OFFSET "Albania"
+    7+NLSRC_OFFSET "Armenia"
+    8+NLSRC_OFFSET "Andorra"
+    9+NLSRC_OFFSET "Angola"
+    10+NLSRC_OFFSET "American Samoa"
+    11+NLSRC_OFFSET "Argentina"
+    12+NLSRC_OFFSET "Australia"
+    14+NLSRC_OFFSET "Austria"
+    17+NLSRC_OFFSET "Bahrain"
+    18+NLSRC_OFFSET "Barbados"
+    19+NLSRC_OFFSET "Botswana"
+    20+NLSRC_OFFSET "Bermuda"
+    21+NLSRC_OFFSET "Belgium"
+    22+NLSRC_OFFSET "Bahamas, The"
+    23+NLSRC_OFFSET "Bangladesh"
+    24+NLSRC_OFFSET "Belize"
+    25+NLSRC_OFFSET "Bosnia and Herzegovina"
+    26+NLSRC_OFFSET "Bolivia"
+    27+NLSRC_OFFSET "Myanmar"
+    28+NLSRC_OFFSET "Benin"
+    29+NLSRC_OFFSET "Belarus"
+    30+NLSRC_OFFSET "Solomon Islands"
+    32+NLSRC_OFFSET "Brazil"
+    34+NLSRC_OFFSET "Bhutan"
+    35+NLSRC_OFFSET "Bulgaria"
+    38+NLSRC_OFFSET "Burundi"
+    39+NLSRC_OFFSET "Canada"
+    40+NLSRC_OFFSET "Cambodia"
+    41+NLSRC_OFFSET "Chad"
+    42+NLSRC_OFFSET "Sri Lanka"
+    43+NLSRC_OFFSET "Congo"
+    44+NLSRC_OFFSET "Congo (DRC)"
+    45+NLSRC_OFFSET "China"
+    46+NLSRC_OFFSET "Chile"
+    49+NLSRC_OFFSET "Cameroon"
+    50+NLSRC_OFFSET "Comoros"
+    51+NLSRC_OFFSET "Colombia"
+    54+NLSRC_OFFSET "Costa Rica"
+    55+NLSRC_OFFSET "Central African Republic"
+    56+NLSRC_OFFSET "Cuba"
+    57+NLSRC_OFFSET "Cape Verde"
+    59+NLSRC_OFFSET "Cyprus"
+    61+NLSRC_OFFSET "Denmark"
+    62+NLSRC_OFFSET "Djibouti"
+    63+NLSRC_OFFSET "Dominica"
+    65+NLSRC_OFFSET "Dominican Republic"
+    66+NLSRC_OFFSET "Ecuador"
+    67+NLSRC_OFFSET "Egypt"
+    68+NLSRC_OFFSET "Ireland"
+    69+NLSRC_OFFSET "Equatorial Guinea"
+    70+NLSRC_OFFSET "Estonia"
+    71+NLSRC_OFFSET "Eritrea"
+    72+NLSRC_OFFSET "El Salvador"
+    73+NLSRC_OFFSET "Ethiopia"
+    75+NLSRC_OFFSET "Czech Republic"
+    77+NLSRC_OFFSET "Finland"
+    78+NLSRC_OFFSET "Fiji Islands"
+    80+NLSRC_OFFSET "Micronesia"
+    81+NLSRC_OFFSET "Faroe Islands"
+    84+NLSRC_OFFSET "France"
+    86+NLSRC_OFFSET "Gambia, The"
+    87+NLSRC_OFFSET "Gabon"
+    88+NLSRC_OFFSET "Georgia"
+    89+NLSRC_OFFSET "Ghana"
+    90+NLSRC_OFFSET "Gibraltar"
+    91+NLSRC_OFFSET "Grenada"
+    93+NLSRC_OFFSET "Greenland"
+    94+NLSRC_OFFSET "Germany"
+    98+NLSRC_OFFSET "Greece"
+    99+NLSRC_OFFSET "Guatemala"
+    100+NLSRC_OFFSET "Guinea"
+    101+NLSRC_OFFSET "Guyana"
+    103+NLSRC_OFFSET "Haiti"
+    104+NLSRC_OFFSET "Hong Kong S.A.R."
+    106+NLSRC_OFFSET "Honduras"
+    108+NLSRC_OFFSET "Croatia"
+    109+NLSRC_OFFSET "Hungary"
+    110+NLSRC_OFFSET "Iceland"
+    111+NLSRC_OFFSET "Indonesia"
+    113+NLSRC_OFFSET "India"
+    114+NLSRC_OFFSET "British Indian Ocean Territory"
+    116+NLSRC_OFFSET "Iran"
+    117+NLSRC_OFFSET "Israel"
+    118+NLSRC_OFFSET "Italy"
+    119+NLSRC_OFFSET "Côte d'Ivoire"
+    121+NLSRC_OFFSET "Iraq"
+    122+NLSRC_OFFSET "Japan"
+    124+NLSRC_OFFSET "Jamaica"
+    125+NLSRC_OFFSET "Jan Mayen"
+    126+NLSRC_OFFSET "Jordan"
+    127+NLSRC_OFFSET "Johnston Atoll"
+    129+NLSRC_OFFSET "Kenya"
+    130+NLSRC_OFFSET "Kyrgyzstan"
+    131+NLSRC_OFFSET "North Korea"
+    133+NLSRC_OFFSET "Kiribati"
+    134+NLSRC_OFFSET "Korea"
+    136+NLSRC_OFFSET "Kuwait"
+    137+NLSRC_OFFSET "Kazakhstan"
+    138+NLSRC_OFFSET "Laos"
+    139+NLSRC_OFFSET "Lebanon"
+    140+NLSRC_OFFSET "Latvia"
+    141+NLSRC_OFFSET "Lithuania"
+    142+NLSRC_OFFSET "Liberia"
+    143+NLSRC_OFFSET "Slovakia"
+    145+NLSRC_OFFSET "Liechtenstein"
+    146+NLSRC_OFFSET "Lesotho"
+    147+NLSRC_OFFSET "Luxembourg"
+    148+NLSRC_OFFSET "Libya"
+    149+NLSRC_OFFSET "Madagascar"
+    151+NLSRC_OFFSET "Macao S.A.R."
+    152+NLSRC_OFFSET "Moldova"
+    154+NLSRC_OFFSET "Mongolia"
+    156+NLSRC_OFFSET "Malawi"
+    157+NLSRC_OFFSET "Mali"
+    158+NLSRC_OFFSET "Monaco"
+    159+NLSRC_OFFSET "Morocco"
+    160+NLSRC_OFFSET "Mauritius"
+    162+NLSRC_OFFSET "Mauritania"
+    163+NLSRC_OFFSET "Malta"
+    164+NLSRC_OFFSET "Oman"
+    165+NLSRC_OFFSET "Maldives"
+    166+NLSRC_OFFSET "Mexico"
+    167+NLSRC_OFFSET "Malaysia"
+    168+NLSRC_OFFSET "Mozambique"
+    173+NLSRC_OFFSET "Niger"
+    174+NLSRC_OFFSET "Vanuatu"
+    175+NLSRC_OFFSET "Nigeria"
+    176+NLSRC_OFFSET "Netherlands"
+    177+NLSRC_OFFSET "Norway"
+    178+NLSRC_OFFSET "Nepal"
+    180+NLSRC_OFFSET "Nauru"
+    181+NLSRC_OFFSET "Suriname"
+    182+NLSRC_OFFSET "Nicaragua"
+    183+NLSRC_OFFSET "New Zealand"
+    184+NLSRC_OFFSET "Palestinian Authority"
+    185+NLSRC_OFFSET "Paraguay"
+    187+NLSRC_OFFSET "Peru"
+    190+NLSRC_OFFSET "Pakistan"
+    191+NLSRC_OFFSET "Poland"
+    192+NLSRC_OFFSET "Panama"
+    193+NLSRC_OFFSET "Portugal"
+    194+NLSRC_OFFSET "Papua New Guinea"
+    195+NLSRC_OFFSET "Palau"
+    196+NLSRC_OFFSET "Guinea-Bissau"
+    197+NLSRC_OFFSET "Qatar"
+    198+NLSRC_OFFSET "Reunion"
+    199+NLSRC_OFFSET "Marshall Islands"
+    200+NLSRC_OFFSET "Romania"
+    201+NLSRC_OFFSET "Philippines"
+    202+NLSRC_OFFSET "Puerto Rico"
+    203+NLSRC_OFFSET "Russia"
+    204+NLSRC_OFFSET "Rwanda"
+    205+NLSRC_OFFSET "Saudi Arabia"
+    206+NLSRC_OFFSET "St. Pierre and Miquelon"
+    207+NLSRC_OFFSET "St. Kitts and Nevis"
+    208+NLSRC_OFFSET "Seychelles"
+    209+NLSRC_OFFSET "South Africa"
+    210+NLSRC_OFFSET "Senegal"
+    212+NLSRC_OFFSET "Slovenia"
+    213+NLSRC_OFFSET "Sierra Leone"
+    214+NLSRC_OFFSET "San Marino"
+    215+NLSRC_OFFSET "Singapore"
+    216+NLSRC_OFFSET "Somalia"
+    217+NLSRC_OFFSET "Spain"
+    218+NLSRC_OFFSET "St. Lucia"
+    219+NLSRC_OFFSET "Sudan"
+    220+NLSRC_OFFSET "Svalbard"
+    221+NLSRC_OFFSET "Sweden"
+    222+NLSRC_OFFSET "Syria"
+    223+NLSRC_OFFSET "Switzerland"
+    224+NLSRC_OFFSET "United Arab Emirates"
+    225+NLSRC_OFFSET "Trinidad and Tobago"
+    227+NLSRC_OFFSET "Thailand"
+    228+NLSRC_OFFSET "Tajikistan"
+    231+NLSRC_OFFSET "Tonga"
+    232+NLSRC_OFFSET "Togo"
+    233+NLSRC_OFFSET "São Tomé and Príncipe"
+    234+NLSRC_OFFSET "Tunisia"
+    235+NLSRC_OFFSET "Turkey"
+    236+NLSRC_OFFSET "Tuvalu"
+    237+NLSRC_OFFSET "Taiwan"
+    238+NLSRC_OFFSET "Turkmenistan"
+    239+NLSRC_OFFSET "Tanzania"
+    240+NLSRC_OFFSET "Uganda"
+    241+NLSRC_OFFSET "Ukraine"
+    242+NLSRC_OFFSET "United Kingdom"
+    244+NLSRC_OFFSET "United States"
+    245+NLSRC_OFFSET "Burkina Faso"
+    246+NLSRC_OFFSET "Uruguay"
+    247+NLSRC_OFFSET "Uzbekistan"
+    248+NLSRC_OFFSET "St. Vincent and the Grenadines"
+    249+NLSRC_OFFSET "Bolivarian Republic of Venezuela"
+    251+NLSRC_OFFSET "Vietnam"
+    252+NLSRC_OFFSET "Virgin Islands"
+    253+NLSRC_OFFSET "Vatican City"
+    254+NLSRC_OFFSET "Namibia"
+    257+NLSRC_OFFSET "Western Sahara (disputed)"
+    258+NLSRC_OFFSET "Wake Island"
+    259+NLSRC_OFFSET "Samoa"
+    260+NLSRC_OFFSET "Swaziland"
+    261+NLSRC_OFFSET "Yemen"
+    263+NLSRC_OFFSET "Zambia"
+    264+NLSRC_OFFSET "Zimbabwe"
+    269+NLSRC_OFFSET "Serbia and Montenegro (Former)"
+    270+NLSRC_OFFSET "Montenegro"
+    271+NLSRC_OFFSET "Serbia"
+    273+NLSRC_OFFSET "Curaçao"
+    276+NLSRC_OFFSET "South Sudan"
+    300+NLSRC_OFFSET "Anguilla"
+    301+NLSRC_OFFSET "Antarctica"
+    302+NLSRC_OFFSET "Aruba"
+    303+NLSRC_OFFSET "Ascension Island"
+    304+NLSRC_OFFSET "Ashmore and Cartier Islands"
+    305+NLSRC_OFFSET "Baker Island"
+    306+NLSRC_OFFSET "Bouvet Island"
+    307+NLSRC_OFFSET "Cayman Islands"
+    308+NLSRC_OFFSET "Channel Islands"
+    309+NLSRC_OFFSET "Christmas Island"
+    310+NLSRC_OFFSET "Clipperton Island"
+    311+NLSRC_OFFSET "Cocos (Keeling) Islands"
+    312+NLSRC_OFFSET "Cook Islands"
+    313+NLSRC_OFFSET "Coral Sea Islands"
+    314+NLSRC_OFFSET "Diego Garcia"
+    315+NLSRC_OFFSET "Falkland Islands (Islas Malvinas)"
+    317+NLSRC_OFFSET "French Guiana"
+    318+NLSRC_OFFSET "French Polynesia"
+    319+NLSRC_OFFSET "French Southern and Antarctic Lands"
+    321+NLSRC_OFFSET "Guadeloupe"
+    322+NLSRC_OFFSET "Guam"
+    323+NLSRC_OFFSET "Guantanamo Bay"
+    324+NLSRC_OFFSET "Guernsey"
+    325+NLSRC_OFFSET "Heard Island and McDonald Islands"
+    326+NLSRC_OFFSET "Howland Island"
+    327+NLSRC_OFFSET "Jarvis Island"
+    328+NLSRC_OFFSET "Jersey"
+    329+NLSRC_OFFSET "Kingman Reef"
+    330+NLSRC_OFFSET "Martinique"
+    331+NLSRC_OFFSET "Mayotte"
+    332+NLSRC_OFFSET "Montserrat"
+    333+NLSRC_OFFSET "Netherlands Antilles (Former)"
+    334+NLSRC_OFFSET "New Caledonia"
+    335+NLSRC_OFFSET "Niue"
+    336+NLSRC_OFFSET "Norfolk Island"
+    337+NLSRC_OFFSET "Northern Mariana Islands"
+    338+NLSRC_OFFSET "Palmyra Atoll"
+    339+NLSRC_OFFSET "Pitcairn Islands"
+    340+NLSRC_OFFSET "Rota Island"
+    341+NLSRC_OFFSET "Saipan"
+    342+NLSRC_OFFSET "South Georgia and the South Sandwich Islands"
+    343+NLSRC_OFFSET "St. Helena"
+    346+NLSRC_OFFSET "Tinian Island"
+    347+NLSRC_OFFSET "Tokelau"
+    348+NLSRC_OFFSET "Tristan da Cunha"
+    349+NLSRC_OFFSET "Turks and Caicos Islands"
+    351+NLSRC_OFFSET "Virgin Islands, British"
+    352+NLSRC_OFFSET "Wallis and Futuna"
+    15126+NLSRC_OFFSET "Man, Isle of"
+    19618+NLSRC_OFFSET "Macedonia, Former Yugoslav Republic of"
+    21242+NLSRC_OFFSET "Midway Islands"
+    30967+NLSRC_OFFSET "Sint Maarten (Dutch part)"
+    31706+NLSRC_OFFSET "Saint Martin (French part)"
 END
index 911ba90..448b9b3 100644 (file)
@@ -158,4 +158,271 @@ BEGIN
 
     52936 "52936 (HZ-GB2312 Kineze Thjeshtuar)"
     54936 "54936 (GB18030 Kineze Thjeshtesuar)"
+    
+    /* Locations */
+    2+NLSRC_OFFSET "Antigua and Barbuda"
+    3+NLSRC_OFFSET "Afghanistan"
+    4+NLSRC_OFFSET "Algeria"
+    5+NLSRC_OFFSET "Azerbaijan"
+    6+NLSRC_OFFSET "Albania"
+    7+NLSRC_OFFSET "Armenia"
+    8+NLSRC_OFFSET "Andorra"
+    9+NLSRC_OFFSET "Angola"
+    10+NLSRC_OFFSET "American Samoa"
+    11+NLSRC_OFFSET "Argentina"
+    12+NLSRC_OFFSET "Australia"
+    14+NLSRC_OFFSET "Austria"
+    17+NLSRC_OFFSET "Bahrain"
+    18+NLSRC_OFFSET "Barbados"
+    19+NLSRC_OFFSET "Botswana"
+    20+NLSRC_OFFSET "Bermuda"
+    21+NLSRC_OFFSET "Belgium"
+    22+NLSRC_OFFSET "Bahamas, The"
+    23+NLSRC_OFFSET "Bangladesh"
+    24+NLSRC_OFFSET "Belize"
+    25+NLSRC_OFFSET "Bosnia and Herzegovina"
+    26+NLSRC_OFFSET "Bolivia"
+    27+NLSRC_OFFSET "Myanmar"
+    28+NLSRC_OFFSET "Benin"
+    29+NLSRC_OFFSET "Belarus"
+    30+NLSRC_OFFSET "Solomon Islands"
+    32+NLSRC_OFFSET "Brazil"
+    34+NLSRC_OFFSET "Bhutan"
+    35+NLSRC_OFFSET "Bulgaria"
+    38+NLSRC_OFFSET "Burundi"
+    39+NLSRC_OFFSET "Canada"
+    40+NLSRC_OFFSET "Cambodia"
+    41+NLSRC_OFFSET "Chad"
+    42+NLSRC_OFFSET "Sri Lanka"
+    43+NLSRC_OFFSET "Congo"
+    44+NLSRC_OFFSET "Congo (DRC)"
+    45+NLSRC_OFFSET "China"
+    46+NLSRC_OFFSET "Chile"
+    49+NLSRC_OFFSET "Cameroon"
+    50+NLSRC_OFFSET "Comoros"
+    51+NLSRC_OFFSET "Colombia"
+    54+NLSRC_OFFSET "Costa Rica"
+    55+NLSRC_OFFSET "Central African Republic"
+    56+NLSRC_OFFSET "Cuba"
+    57+NLSRC_OFFSET "Cape Verde"
+    59+NLSRC_OFFSET "Cyprus"
+    61+NLSRC_OFFSET "Denmark"
+    62+NLSRC_OFFSET "Djibouti"
+    63+NLSRC_OFFSET "Dominica"
+    65+NLSRC_OFFSET "Dominican Republic"
+    66+NLSRC_OFFSET "Ecuador"
+    67+NLSRC_OFFSET "Egypt"
+    68+NLSRC_OFFSET "Ireland"
+    69+NLSRC_OFFSET "Equatorial Guinea"
+    70+NLSRC_OFFSET "Estonia"
+    71+NLSRC_OFFSET "Eritrea"
+    72+NLSRC_OFFSET "El Salvador"
+    73+NLSRC_OFFSET "Ethiopia"
+    75+NLSRC_OFFSET "Czech Republic"
+    77+NLSRC_OFFSET "Finland"
+    78+NLSRC_OFFSET "Fiji Islands"
+    80+NLSRC_OFFSET "Micronesia"
+    81+NLSRC_OFFSET "Faroe Islands"
+    84+NLSRC_OFFSET "France"
+    86+NLSRC_OFFSET "Gambia, The"
+    87+NLSRC_OFFSET "Gabon"
+    88+NLSRC_OFFSET "Georgia"
+    89+NLSRC_OFFSET "Ghana"
+    90+NLSRC_OFFSET "Gibraltar"
+    91+NLSRC_OFFSET "Grenada"
+    93+NLSRC_OFFSET "Greenland"
+    94+NLSRC_OFFSET "Germany"
+    98+NLSRC_OFFSET "Greece"
+    99+NLSRC_OFFSET "Guatemala"
+    100+NLSRC_OFFSET "Guinea"
+    101+NLSRC_OFFSET "Guyana"
+    103+NLSRC_OFFSET "Haiti"
+    104+NLSRC_OFFSET "Hong Kong S.A.R."
+    106+NLSRC_OFFSET "Honduras"
+    108+NLSRC_OFFSET "Croatia"
+    109+NLSRC_OFFSET "Hungary"
+    110+NLSRC_OFFSET "Iceland"
+    111+NLSRC_OFFSET "Indonesia"
+    113+NLSRC_OFFSET "India"
+    114+NLSRC_OFFSET "British Indian Ocean Territory"
+    116+NLSRC_OFFSET "Iran"
+    117+NLSRC_OFFSET "Israel"
+    118+NLSRC_OFFSET "Italy"
+    119+NLSRC_OFFSET "Côte d'Ivoire"
+    121+NLSRC_OFFSET "Iraq"
+    122+NLSRC_OFFSET "Japan"
+    124+NLSRC_OFFSET "Jamaica"
+    125+NLSRC_OFFSET "Jan Mayen"
+    126+NLSRC_OFFSET "Jordan"
+    127+NLSRC_OFFSET "Johnston Atoll"
+    129+NLSRC_OFFSET "Kenya"
+    130+NLSRC_OFFSET "Kyrgyzstan"
+    131+NLSRC_OFFSET "North Korea"
+    133+NLSRC_OFFSET "Kiribati"
+    134+NLSRC_OFFSET "Korea"
+    136+NLSRC_OFFSET "Kuwait"
+    137+NLSRC_OFFSET "Kazakhstan"
+    138+NLSRC_OFFSET "Laos"
+    139+NLSRC_OFFSET "Lebanon"
+    140+NLSRC_OFFSET "Latvia"
+    141+NLSRC_OFFSET "Lithuania"
+    142+NLSRC_OFFSET "Liberia"
+    143+NLSRC_OFFSET "Slovakia"
+    145+NLSRC_OFFSET "Liechtenstein"
+    146+NLSRC_OFFSET "Lesotho"
+    147+NLSRC_OFFSET "Luxembourg"
+    148+NLSRC_OFFSET "Libya"
+    149+NLSRC_OFFSET "Madagascar"
+    151+NLSRC_OFFSET "Macao S.A.R."
+    152+NLSRC_OFFSET "Moldova"
+    154+NLSRC_OFFSET "Mongolia"
+    156+NLSRC_OFFSET "Malawi"
+    157+NLSRC_OFFSET "Mali"
+    158+NLSRC_OFFSET "Monaco"
+    159+NLSRC_OFFSET "Morocco"
+    160+NLSRC_OFFSET "Mauritius"
+    162+NLSRC_OFFSET "Mauritania"
+    163+NLSRC_OFFSET "Malta"
+    164+NLSRC_OFFSET "Oman"
+    165+NLSRC_OFFSET "Maldives"
+    166+NLSRC_OFFSET "Mexico"
+    167+NLSRC_OFFSET "Malaysia"
+    168+NLSRC_OFFSET "Mozambique"
+    173+NLSRC_OFFSET "Niger"
+    174+NLSRC_OFFSET "Vanuatu"
+    175+NLSRC_OFFSET "Nigeria"
+    176+NLSRC_OFFSET "Netherlands"
+    177+NLSRC_OFFSET "Norway"
+    178+NLSRC_OFFSET "Nepal"
+    180+NLSRC_OFFSET "Nauru"
+    181+NLSRC_OFFSET "Suriname"
+    182+NLSRC_OFFSET "Nicaragua"
+    183+NLSRC_OFFSET "New Zealand"
+    184+NLSRC_OFFSET "Palestinian Authority"
+    185+NLSRC_OFFSET "Paraguay"
+    187+NLSRC_OFFSET "Peru"
+    190+NLSRC_OFFSET "Pakistan"
+    191+NLSRC_OFFSET "Poland"
+    192+NLSRC_OFFSET "Panama"
+    193+NLSRC_OFFSET "Portugal"
+    194+NLSRC_OFFSET "Papua New Guinea"
+    195+NLSRC_OFFSET "Palau"
+    196+NLSRC_OFFSET "Guinea-Bissau"
+    197+NLSRC_OFFSET "Qatar"
+    198+NLSRC_OFFSET "Reunion"
+    199+NLSRC_OFFSET "Marshall Islands"
+    200+NLSRC_OFFSET "Romania"
+    201+NLSRC_OFFSET "Philippines"
+    202+NLSRC_OFFSET "Puerto Rico"
+    203+NLSRC_OFFSET "Russia"
+    204+NLSRC_OFFSET "Rwanda"
+    205+NLSRC_OFFSET "Saudi Arabia"
+    206+NLSRC_OFFSET "St. Pierre and Miquelon"
+    207+NLSRC_OFFSET "St. Kitts and Nevis"
+    208+NLSRC_OFFSET "Seychelles"
+    209+NLSRC_OFFSET "South Africa"
+    210+NLSRC_OFFSET "Senegal"
+    212+NLSRC_OFFSET "Slovenia"
+    213+NLSRC_OFFSET "Sierra Leone"
+    214+NLSRC_OFFSET "San Marino"
+    215+NLSRC_OFFSET "Singapore"
+    216+NLSRC_OFFSET "Somalia"
+    217+NLSRC_OFFSET "Spain"
+    218+NLSRC_OFFSET "St. Lucia"
+    219+NLSRC_OFFSET "Sudan"
+    220+NLSRC_OFFSET "Svalbard"
+    221+NLSRC_OFFSET "Sweden"
+    222+NLSRC_OFFSET "Syria"
+    223+NLSRC_OFFSET "Switzerland"
+    224+NLSRC_OFFSET "United Arab Emirates"
+    225+NLSRC_OFFSET "Trinidad and Tobago"
+    227+NLSRC_OFFSET "Thailand"
+    228+NLSRC_OFFSET "Tajikistan"
+    231+NLSRC_OFFSET "Tonga"
+    232+NLSRC_OFFSET "Togo"
+    233+NLSRC_OFFSET "São Tomé and Príncipe"
+    234+NLSRC_OFFSET "Tunisia"
+    235+NLSRC_OFFSET "Turkey"
+    236+NLSRC_OFFSET "Tuvalu"
+    237+NLSRC_OFFSET "Taiwan"
+    238+NLSRC_OFFSET "Turkmenistan"
+    239+NLSRC_OFFSET "Tanzania"
+    240+NLSRC_OFFSET "Uganda"
+    241+NLSRC_OFFSET "Ukraine"
+    242+NLSRC_OFFSET "United Kingdom"
+    244+NLSRC_OFFSET "United States"
+    245+NLSRC_OFFSET "Burkina Faso"
+    246+NLSRC_OFFSET "Uruguay"
+    247+NLSRC_OFFSET "Uzbekistan"
+    248+NLSRC_OFFSET "St. Vincent and the Grenadines"
+    249+NLSRC_OFFSET "Bolivarian Republic of Venezuela"
+    251+NLSRC_OFFSET "Vietnam"
+    252+NLSRC_OFFSET "Virgin Islands"
+    253+NLSRC_OFFSET "Vatican City"
+    254+NLSRC_OFFSET "Namibia"
+    257+NLSRC_OFFSET "Western Sahara (disputed)"
+    258+NLSRC_OFFSET "Wake Island"
+    259+NLSRC_OFFSET "Samoa"
+    260+NLSRC_OFFSET "Swaziland"
+    261+NLSRC_OFFSET "Yemen"
+    263+NLSRC_OFFSET "Zambia"
+    264+NLSRC_OFFSET "Zimbabwe"
+    269+NLSRC_OFFSET "Serbia and Montenegro (Former)"
+    270+NLSRC_OFFSET "Montenegro"
+    271+NLSRC_OFFSET "Serbia"
+    273+NLSRC_OFFSET "Curaçao"
+    276+NLSRC_OFFSET "South Sudan"
+    300+NLSRC_OFFSET "Anguilla"
+    301+NLSRC_OFFSET "Antarctica"
+    302+NLSRC_OFFSET "Aruba"
+    303+NLSRC_OFFSET "Ascension Island"
+    304+NLSRC_OFFSET "Ashmore and Cartier Islands"
+    305+NLSRC_OFFSET "Baker Island"
+    306+NLSRC_OFFSET "Bouvet Island"
+    307+NLSRC_OFFSET "Cayman Islands"
+    308+NLSRC_OFFSET "Channel Islands"
+    309+NLSRC_OFFSET "Christmas Island"
+    310+NLSRC_OFFSET "Clipperton Island"
+    311+NLSRC_OFFSET "Cocos (Keeling) Islands"
+    312+NLSRC_OFFSET "Cook Islands"
+    313+NLSRC_OFFSET "Coral Sea Islands"
+    314+NLSRC_OFFSET "Diego Garcia"
+    315+NLSRC_OFFSET "Falkland Islands (Islas Malvinas)"
+    317+NLSRC_OFFSET "French Guiana"
+    318+NLSRC_OFFSET "French Polynesia"
+    319+NLSRC_OFFSET "French Southern and Antarctic Lands"
+    321+NLSRC_OFFSET "Guadeloupe"
+    322+NLSRC_OFFSET "Guam"
+    323+NLSRC_OFFSET "Guantanamo Bay"
+    324+NLSRC_OFFSET "Guernsey"
+    325+NLSRC_OFFSET "Heard Island and McDonald Islands"
+    326+NLSRC_OFFSET "Howland Island"
+    327+NLSRC_OFFSET "Jarvis Island"
+    328+NLSRC_OFFSET "Jersey"
+    329+NLSRC_OFFSET "Kingman Reef"
+    330+NLSRC_OFFSET "Martinique"
+    331+NLSRC_OFFSET "Mayotte"
+    332+NLSRC_OFFSET "Montserrat"
+    333+NLSRC_OFFSET "Netherlands Antilles (Former)"
+    334+NLSRC_OFFSET "New Caledonia"
+    335+NLSRC_OFFSET "Niue"
+    336+NLSRC_OFFSET "Norfolk Island"
+    337+NLSRC_OFFSET "Northern Mariana Islands"
+    338+NLSRC_OFFSET "Palmyra Atoll"
+    339+NLSRC_OFFSET "Pitcairn Islands"
+    340+NLSRC_OFFSET "Rota Island"
+    341+NLSRC_OFFSET "Saipan"
+    342+NLSRC_OFFSET "South Georgia and the South Sandwich Islands"
+    343+NLSRC_OFFSET "St. Helena"
+    346+NLSRC_OFFSET "Tinian Island"
+    347+NLSRC_OFFSET "Tokelau"
+    348+NLSRC_OFFSET "Tristan da Cunha"
+    349+NLSRC_OFFSET "Turks and Caicos Islands"
+    351+NLSRC_OFFSET "Virgin Islands, British"
+    352+NLSRC_OFFSET "Wallis and Futuna"
+    15126+NLSRC_OFFSET "Man, Isle of"
+    19618+NLSRC_OFFSET "Macedonia, Former Yugoslav Republic of"
+    21242+NLSRC_OFFSET "Midway Islands"
+    30967+NLSRC_OFFSET "Sint Maarten (Dutch part)"
+    31706+NLSRC_OFFSET "Saint Martin (French part)"
 END
index 54a97f8..4a7fb24 100644 (file)
@@ -159,4 +159,271 @@ BEGIN
 
     52936 "52936 (HZ-GB2312 Bayağılaştırılmış Çince)"
     54936 "54936 (GB18030 Bayağılaştırılmış Çince)"
+    
+    /* Locations */
+    2+NLSRC_OFFSET "Antigua and Barbuda"
+    3+NLSRC_OFFSET "Afghanistan"
+    4+NLSRC_OFFSET "Algeria"
+    5+NLSRC_OFFSET "Azerbaijan"
+    6+NLSRC_OFFSET "Albania"
+    7+NLSRC_OFFSET "Armenia"
+    8+NLSRC_OFFSET "Andorra"
+    9+NLSRC_OFFSET "Angola"
+    10+NLSRC_OFFSET "American Samoa"
+    11+NLSRC_OFFSET "Argentina"
+    12+NLSRC_OFFSET "Australia"
+    14+NLSRC_OFFSET "Austria"
+    17+NLSRC_OFFSET "Bahrain"
+    18+NLSRC_OFFSET "Barbados"
+    19+NLSRC_OFFSET "Botswana"
+    20+NLSRC_OFFSET "Bermuda"
+    21+NLSRC_OFFSET "Belgium"
+    22+NLSRC_OFFSET "Bahamas, The"
+    23+NLSRC_OFFSET "Bangladesh"
+    24+NLSRC_OFFSET "Belize"
+    25+NLSRC_OFFSET "Bosnia and Herzegovina"
+    26+NLSRC_OFFSET "Bolivia"
+    27+NLSRC_OFFSET "Myanmar"
+    28+NLSRC_OFFSET "Benin"
+    29+NLSRC_OFFSET "Belarus"
+    30+NLSRC_OFFSET "Solomon Islands"
+    32+NLSRC_OFFSET "Brazil"
+    34+NLSRC_OFFSET "Bhutan"
+    35+NLSRC_OFFSET "Bulgaria"
+    38+NLSRC_OFFSET "Burundi"
+    39+NLSRC_OFFSET "Canada"
+    40+NLSRC_OFFSET "Cambodia"
+    41+NLSRC_OFFSET "Chad"
+    42+NLSRC_OFFSET "Sri Lanka"
+    43+NLSRC_OFFSET "Congo"
+    44+NLSRC_OFFSET "Congo (DRC)"
+    45+NLSRC_OFFSET "China"
+    46+NLSRC_OFFSET "Chile"
+    49+NLSRC_OFFSET "Cameroon"
+    50+NLSRC_OFFSET "Comoros"
+    51+NLSRC_OFFSET "Colombia"
+    54+NLSRC_OFFSET "Costa Rica"
+    55+NLSRC_OFFSET "Central African Republic"
+    56+NLSRC_OFFSET "Cuba"
+    57+NLSRC_OFFSET "Cape Verde"
+    59+NLSRC_OFFSET "Cyprus"
+    61+NLSRC_OFFSET "Denmark"
+    62+NLSRC_OFFSET "Djibouti"
+    63+NLSRC_OFFSET "Dominica"
+    65+NLSRC_OFFSET "Dominican Republic"
+    66+NLSRC_OFFSET "Ecuador"
+    67+NLSRC_OFFSET "Egypt"
+    68+NLSRC_OFFSET "Ireland"
+    69+NLSRC_OFFSET "Equatorial Guinea"
+    70+NLSRC_OFFSET "Estonia"
+    71+NLSRC_OFFSET "Eritrea"
+    72+NLSRC_OFFSET "El Salvador"
+    73+NLSRC_OFFSET "Ethiopia"
+    75+NLSRC_OFFSET "Czech Republic"
+    77+NLSRC_OFFSET "Finland"
+    78+NLSRC_OFFSET "Fiji Islands"
+    80+NLSRC_OFFSET "Micronesia"
+    81+NLSRC_OFFSET "Faroe Islands"
+    84+NLSRC_OFFSET "France"
+    86+NLSRC_OFFSET "Gambia, The"
+    87+NLSRC_OFFSET "Gabon"
+    88+NLSRC_OFFSET "Georgia"
+    89+NLSRC_OFFSET "Ghana"
+    90+NLSRC_OFFSET "Gibraltar"
+    91+NLSRC_OFFSET "Grenada"
+    93+NLSRC_OFFSET "Greenland"
+    94+NLSRC_OFFSET "Germany"
+    98+NLSRC_OFFSET "Greece"
+    99+NLSRC_OFFSET "Guatemala"
+    100+NLSRC_OFFSET "Guinea"
+    101+NLSRC_OFFSET "Guyana"
+    103+NLSRC_OFFSET "Haiti"
+    104+NLSRC_OFFSET "Hong Kong S.A.R."
+    106+NLSRC_OFFSET "Honduras"
+    108+NLSRC_OFFSET "Croatia"
+    109+NLSRC_OFFSET "Hungary"
+    110+NLSRC_OFFSET "Iceland"
+    111+NLSRC_OFFSET "Indonesia"
+    113+NLSRC_OFFSET "India"
+    114+NLSRC_OFFSET "British Indian Ocean Territory"
+    116+NLSRC_OFFSET "Iran"
+    117+NLSRC_OFFSET "Israel"
+    118+NLSRC_OFFSET "Italy"
+    119+NLSRC_OFFSET "Côte d'Ivoire"
+    121+NLSRC_OFFSET "Iraq"
+    122+NLSRC_OFFSET "Japan"
+    124+NLSRC_OFFSET "Jamaica"
+    125+NLSRC_OFFSET "Jan Mayen"
+    126+NLSRC_OFFSET "Jordan"
+    127+NLSRC_OFFSET "Johnston Atoll"
+    129+NLSRC_OFFSET "Kenya"
+    130+NLSRC_OFFSET "Kyrgyzstan"
+    131+NLSRC_OFFSET "North Korea"
+    133+NLSRC_OFFSET "Kiribati"
+    134+NLSRC_OFFSET "Korea"
+    136+NLSRC_OFFSET "Kuwait"
+    137+NLSRC_OFFSET "Kazakhstan"
+    138+NLSRC_OFFSET "Laos"
+    139+NLSRC_OFFSET "Lebanon"
+    140+NLSRC_OFFSET "Latvia"
+    141+NLSRC_OFFSET "Lithuania"
+    142+NLSRC_OFFSET "Liberia"
+    143+NLSRC_OFFSET "Slovakia"
+    145+NLSRC_OFFSET "Liechtenstein"
+    146+NLSRC_OFFSET "Lesotho"
+    147+NLSRC_OFFSET "Luxembourg"
+    148+NLSRC_OFFSET "Libya"
+    149+NLSRC_OFFSET "Madagascar"
+    151+NLSRC_OFFSET "Macao S.A.R."
+    152+NLSRC_OFFSET "Moldova"
+    154+NLSRC_OFFSET "Mongolia"
+    156+NLSRC_OFFSET "Malawi"
+    157+NLSRC_OFFSET "Mali"
+    158+NLSRC_OFFSET "Monaco"
+    159+NLSRC_OFFSET "Morocco"
+    160+NLSRC_OFFSET "Mauritius"
+    162+NLSRC_OFFSET "Mauritania"
+    163+NLSRC_OFFSET "Malta"
+    164+NLSRC_OFFSET "Oman"
+    165+NLSRC_OFFSET "Maldives"
+    166+NLSRC_OFFSET "Mexico"
+    167+NLSRC_OFFSET "Malaysia"
+    168+NLSRC_OFFSET "Mozambique"
+    173+NLSRC_OFFSET "Niger"
+    174+NLSRC_OFFSET "Vanuatu"
+    175+NLSRC_OFFSET "Nigeria"
+    176+NLSRC_OFFSET "Netherlands"
+    177+NLSRC_OFFSET "Norway"
+    178+NLSRC_OFFSET "Nepal"
+    180+NLSRC_OFFSET "Nauru"
+    181+NLSRC_OFFSET "Suriname"
+    182+NLSRC_OFFSET "Nicaragua"
+    183+NLSRC_OFFSET "New Zealand"
+    184+NLSRC_OFFSET "Palestinian Authority"
+    185+NLSRC_OFFSET "Paraguay"
+    187+NLSRC_OFFSET "Peru"
+    190+NLSRC_OFFSET "Pakistan"
+    191+NLSRC_OFFSET "Poland"
+    192+NLSRC_OFFSET "Panama"
+    193+NLSRC_OFFSET "Portugal"
+    194+NLSRC_OFFSET "Papua New Guinea"
+    195+NLSRC_OFFSET "Palau"
+    196+NLSRC_OFFSET "Guinea-Bissau"
+    197+NLSRC_OFFSET "Qatar"
+    198+NLSRC_OFFSET "Reunion"
+    199+NLSRC_OFFSET "Marshall Islands"
+    200+NLSRC_OFFSET "Romania"
+    201+NLSRC_OFFSET "Philippines"
+    202+NLSRC_OFFSET "Puerto Rico"
+    203+NLSRC_OFFSET "Russia"
+    204+NLSRC_OFFSET "Rwanda"
+    205+NLSRC_OFFSET "Saudi Arabia"
+    206+NLSRC_OFFSET "St. Pierre and Miquelon"
+    207+NLSRC_OFFSET "St. Kitts and Nevis"
+    208+NLSRC_OFFSET "Seychelles"
+    209+NLSRC_OFFSET "South Africa"
+    210+NLSRC_OFFSET "Senegal"
+    212+NLSRC_OFFSET "Slovenia"
+    213+NLSRC_OFFSET "Sierra Leone"
+    214+NLSRC_OFFSET "San Marino"
+    215+NLSRC_OFFSET "Singapore"
+    216+NLSRC_OFFSET "Somalia"
+    217+NLSRC_OFFSET "Spain"
+    218+NLSRC_OFFSET "St. Lucia"
+    219+NLSRC_OFFSET "Sudan"
+    220+NLSRC_OFFSET "Svalbard"
+    221+NLSRC_OFFSET "Sweden"
+    222+NLSRC_OFFSET "Syria"
+    223+NLSRC_OFFSET "Switzerland"
+    224+NLSRC_OFFSET "United Arab Emirates"
+    225+NLSRC_OFFSET "Trinidad and Tobago"
+    227+NLSRC_OFFSET "Thailand"
+    228+NLSRC_OFFSET "Tajikistan"
+    231+NLSRC_OFFSET "Tonga"
+    232+NLSRC_OFFSET "Togo"
+    233+NLSRC_OFFSET "São Tomé and Príncipe"
+    234+NLSRC_OFFSET "Tunisia"
+    235+NLSRC_OFFSET "Turkey"
+    236+NLSRC_OFFSET "Tuvalu"
+    237+NLSRC_OFFSET "Taiwan"
+    238+NLSRC_OFFSET "Turkmenistan"
+    239+NLSRC_OFFSET "Tanzania"
+    240+NLSRC_OFFSET "Uganda"
+    241+NLSRC_OFFSET "Ukraine"
+    242+NLSRC_OFFSET "United Kingdom"
+    244+NLSRC_OFFSET "United States"
+    245+NLSRC_OFFSET "Burkina Faso"
+    246+NLSRC_OFFSET "Uruguay"
+    247+NLSRC_OFFSET "Uzbekistan"
+    248+NLSRC_OFFSET "St. Vincent and the Grenadines"
+    249+NLSRC_OFFSET "Bolivarian Republic of Venezuela"
+    251+NLSRC_OFFSET "Vietnam"
+    252+NLSRC_OFFSET "Virgin Islands"
+    253+NLSRC_OFFSET "Vatican City"
+    254+NLSRC_OFFSET "Namibia"
+    257+NLSRC_OFFSET "Western Sahara (disputed)"
+    258+NLSRC_OFFSET "Wake Island"
+    259+NLSRC_OFFSET "Samoa"
+    260+NLSRC_OFFSET "Swaziland"
+    261+NLSRC_OFFSET "Yemen"
+    263+NLSRC_OFFSET "Zambia"
+    264+NLSRC_OFFSET "Zimbabwe"
+    269+NLSRC_OFFSET "Serbia and Montenegro (Former)"
+    270+NLSRC_OFFSET "Montenegro"
+    271+NLSRC_OFFSET "Serbia"
+    273+NLSRC_OFFSET "Curaçao"
+    276+NLSRC_OFFSET "South Sudan"
+    300+NLSRC_OFFSET "Anguilla"
+    301+NLSRC_OFFSET "Antarctica"
+    302+NLSRC_OFFSET "Aruba"
+    303+NLSRC_OFFSET "Ascension Island"
+    304+NLSRC_OFFSET "Ashmore and Cartier Islands"
+    305+NLSRC_OFFSET "Baker Island"
+    306+NLSRC_OFFSET "Bouvet Island"
+    307+NLSRC_OFFSET "Cayman Islands"
+    308+NLSRC_OFFSET "Channel Islands"
+    309+NLSRC_OFFSET "Christmas Island"
+    310+NLSRC_OFFSET "Clipperton Island"
+    311+NLSRC_OFFSET "Cocos (Keeling) Islands"
+    312+NLSRC_OFFSET "Cook Islands"
+    313+NLSRC_OFFSET "Coral Sea Islands"
+    314+NLSRC_OFFSET "Diego Garcia"
+    315+NLSRC_OFFSET "Falkland Islands (Islas Malvinas)"
+    317+NLSRC_OFFSET "French Guiana"
+    318+NLSRC_OFFSET "French Polynesia"
+    319+NLSRC_OFFSET "French Southern and Antarctic Lands"
+    321+NLSRC_OFFSET "Guadeloupe"
+    322+NLSRC_OFFSET "Guam"
+    323+NLSRC_OFFSET "Guantanamo Bay"
+    324+NLSRC_OFFSET "Guernsey"
+    325+NLSRC_OFFSET "Heard Island and McDonald Islands"
+    326+NLSRC_OFFSET "Howland Island"
+    327+NLSRC_OFFSET "Jarvis Island"
+    328+NLSRC_OFFSET "Jersey"
+    329+NLSRC_OFFSET "Kingman Reef"
+    330+NLSRC_OFFSET "Martinique"
+    331+NLSRC_OFFSET "Mayotte"
+    332+NLSRC_OFFSET "Montserrat"
+    333+NLSRC_OFFSET "Netherlands Antilles (Former)"
+    334+NLSRC_OFFSET "New Caledonia"
+    335+NLSRC_OFFSET "Niue"
+    336+NLSRC_OFFSET "Norfolk Island"
+    337+NLSRC_OFFSET "Northern Mariana Islands"
+    338+NLSRC_OFFSET "Palmyra Atoll"
+    339+NLSRC_OFFSET "Pitcairn Islands"
+    340+NLSRC_OFFSET "Rota Island"
+    341+NLSRC_OFFSET "Saipan"
+    342+NLSRC_OFFSET "South Georgia and the South Sandwich Islands"
+    343+NLSRC_OFFSET "St. Helena"
+    346+NLSRC_OFFSET "Tinian Island"
+    347+NLSRC_OFFSET "Tokelau"
+    348+NLSRC_OFFSET "Tristan da Cunha"
+    349+NLSRC_OFFSET "Turks and Caicos Islands"
+    351+NLSRC_OFFSET "Virgin Islands, British"
+    352+NLSRC_OFFSET "Wallis and Futuna"
+    15126+NLSRC_OFFSET "Man, Isle of"
+    19618+NLSRC_OFFSET "Macedonia, Former Yugoslav Republic of"
+    21242+NLSRC_OFFSET "Midway Islands"
+    30967+NLSRC_OFFSET "Sint Maarten (Dutch part)"
+    31706+NLSRC_OFFSET "Saint Martin (French part)"
 END
index f299f67..3c9ac2a 100644 (file)
@@ -158,4 +158,271 @@ BEGIN
 
     52936 "52936 (HZ-GB2312 Китайська спрощена)"
     54936 "54936 (GB18030 Китайська спрощена)"
+    
+    /* Locations */
+    2+NLSRC_OFFSET "Antigua and Barbuda"
+    3+NLSRC_OFFSET "Afghanistan"
+    4+NLSRC_OFFSET "Algeria"
+    5+NLSRC_OFFSET "Azerbaijan"
+    6+NLSRC_OFFSET "Albania"
+    7+NLSRC_OFFSET "Armenia"
+    8+NLSRC_OFFSET "Andorra"
+    9+NLSRC_OFFSET "Angola"
+    10+NLSRC_OFFSET "American Samoa"
+    11+NLSRC_OFFSET "Argentina"
+    12+NLSRC_OFFSET "Australia"
+    14+NLSRC_OFFSET "Austria"
+    17+NLSRC_OFFSET "Bahrain"
+    18+NLSRC_OFFSET "Barbados"
+    19+NLSRC_OFFSET "Botswana"
+    20+NLSRC_OFFSET "Bermuda"
+    21+NLSRC_OFFSET "Belgium"
+    22+NLSRC_OFFSET "Bahamas, The"
+    23+NLSRC_OFFSET "Bangladesh"
+    24+NLSRC_OFFSET "Belize"
+    25+NLSRC_OFFSET "Bosnia and Herzegovina"
+    26+NLSRC_OFFSET "Bolivia"
+    27+NLSRC_OFFSET "Myanmar"
+    28+NLSRC_OFFSET "Benin"
+    29+NLSRC_OFFSET "Belarus"
+    30+NLSRC_OFFSET "Solomon Islands"
+    32+NLSRC_OFFSET "Brazil"
+    34+NLSRC_OFFSET "Bhutan"
+    35+NLSRC_OFFSET "Bulgaria"
+    38+NLSRC_OFFSET "Burundi"
+    39+NLSRC_OFFSET "Canada"
+    40+NLSRC_OFFSET "Cambodia"
+    41+NLSRC_OFFSET "Chad"
+    42+NLSRC_OFFSET "Sri Lanka"
+    43+NLSRC_OFFSET "Congo"
+    44+NLSRC_OFFSET "Congo (DRC)"
+    45+NLSRC_OFFSET "China"
+    46+NLSRC_OFFSET "Chile"
+    49+NLSRC_OFFSET "Cameroon"
+    50+NLSRC_OFFSET "Comoros"
+    51+NLSRC_OFFSET "Colombia"
+    54+NLSRC_OFFSET "Costa Rica"
+    55+NLSRC_OFFSET "Central African Republic"
+    56+NLSRC_OFFSET "Cuba"
+    57+NLSRC_OFFSET "Cape Verde"
+    59+NLSRC_OFFSET "Cyprus"
+    61+NLSRC_OFFSET "Denmark"
+    62+NLSRC_OFFSET "Djibouti"
+    63+NLSRC_OFFSET "Dominica"
+    65+NLSRC_OFFSET "Dominican Republic"
+    66+NLSRC_OFFSET "Ecuador"
+    67+NLSRC_OFFSET "Egypt"
+    68+NLSRC_OFFSET "Ireland"
+    69+NLSRC_OFFSET "Equatorial Guinea"
+    70+NLSRC_OFFSET "Estonia"
+    71+NLSRC_OFFSET "Eritrea"
+    72+NLSRC_OFFSET "El Salvador"
+    73+NLSRC_OFFSET "Ethiopia"
+    75+NLSRC_OFFSET "Czech Republic"
+    77+NLSRC_OFFSET "Finland"
+    78+NLSRC_OFFSET "Fiji Islands"
+    80+NLSRC_OFFSET "Micronesia"
+    81+NLSRC_OFFSET "Faroe Islands"
+    84+NLSRC_OFFSET "France"
+    86+NLSRC_OFFSET "Gambia, The"
+    87+NLSRC_OFFSET "Gabon"
+    88+NLSRC_OFFSET "Georgia"
+    89+NLSRC_OFFSET "Ghana"
+    90+NLSRC_OFFSET "Gibraltar"
+    91+NLSRC_OFFSET "Grenada"
+    93+NLSRC_OFFSET "Greenland"
+    94+NLSRC_OFFSET "Germany"
+    98+NLSRC_OFFSET "Greece"
+    99+NLSRC_OFFSET "Guatemala"
+    100+NLSRC_OFFSET "Guinea"
+    101+NLSRC_OFFSET "Guyana"
+    103+NLSRC_OFFSET "Haiti"
+    104+NLSRC_OFFSET "Hong Kong S.A.R."
+    106+NLSRC_OFFSET "Honduras"
+    108+NLSRC_OFFSET "Croatia"
+    109+NLSRC_OFFSET "Hungary"
+    110+NLSRC_OFFSET "Iceland"
+    111+NLSRC_OFFSET "Indonesia"
+    113+NLSRC_OFFSET "India"
+    114+NLSRC_OFFSET "British Indian Ocean Territory"
+    116+NLSRC_OFFSET "Iran"
+    117+NLSRC_OFFSET "Israel"
+    118+NLSRC_OFFSET "Italy"
+    119+NLSRC_OFFSET "Côte d'Ivoire"
+    121+NLSRC_OFFSET "Iraq"
+    122+NLSRC_OFFSET "Japan"
+    124+NLSRC_OFFSET "Jamaica"
+    125+NLSRC_OFFSET "Jan Mayen"
+    126+NLSRC_OFFSET "Jordan"
+    127+NLSRC_OFFSET "Johnston Atoll"
+    129+NLSRC_OFFSET "Kenya"
+    130+NLSRC_OFFSET "Kyrgyzstan"
+    131+NLSRC_OFFSET "North Korea"
+    133+NLSRC_OFFSET "Kiribati"
+    134+NLSRC_OFFSET "Korea"
+    136+NLSRC_OFFSET "Kuwait"
+    137+NLSRC_OFFSET "Kazakhstan"
+    138+NLSRC_OFFSET "Laos"
+    139+NLSRC_OFFSET "Lebanon"
+    140+NLSRC_OFFSET "Latvia"
+    141+NLSRC_OFFSET "Lithuania"
+    142+NLSRC_OFFSET "Liberia"
+    143+NLSRC_OFFSET "Slovakia"
+    145+NLSRC_OFFSET "Liechtenstein"
+    146+NLSRC_OFFSET "Lesotho"
+    147+NLSRC_OFFSET "Luxembourg"
+    148+NLSRC_OFFSET "Libya"
+    149+NLSRC_OFFSET "Madagascar"
+    151+NLSRC_OFFSET "Macao S.A.R."
+    152+NLSRC_OFFSET "Moldova"
+    154+NLSRC_OFFSET "Mongolia"
+    156+NLSRC_OFFSET "Malawi"
+    157+NLSRC_OFFSET "Mali"
+    158+NLSRC_OFFSET "Monaco"
+    159+NLSRC_OFFSET "Morocco"
+    160+NLSRC_OFFSET "Mauritius"
+    162+NLSRC_OFFSET "Mauritania"
+    163+NLSRC_OFFSET "Malta"
+    164+NLSRC_OFFSET "Oman"
+    165+NLSRC_OFFSET "Maldives"
+    166+NLSRC_OFFSET "Mexico"
+    167+NLSRC_OFFSET "Malaysia"
+    168+NLSRC_OFFSET "Mozambique"
+    173+NLSRC_OFFSET "Niger"
+    174+NLSRC_OFFSET "Vanuatu"
+    175+NLSRC_OFFSET "Nigeria"
+    176+NLSRC_OFFSET "Netherlands"
+    177+NLSRC_OFFSET "Norway"
+    178+NLSRC_OFFSET "Nepal"
+    180+NLSRC_OFFSET "Nauru"
+    181+NLSRC_OFFSET "Suriname"
+    182+NLSRC_OFFSET "Nicaragua"
+    183+NLSRC_OFFSET "New Zealand"
+    184+NLSRC_OFFSET "Palestinian Authority"
+    185+NLSRC_OFFSET "Paraguay"
+    187+NLSRC_OFFSET "Peru"
+    190+NLSRC_OFFSET "Pakistan"
+    191+NLSRC_OFFSET "Poland"
+    192+NLSRC_OFFSET "Panama"
+    193+NLSRC_OFFSET "Portugal"
+    194+NLSRC_OFFSET "Papua New Guinea"
+    195+NLSRC_OFFSET "Palau"
+    196+NLSRC_OFFSET "Guinea-Bissau"
+    197+NLSRC_OFFSET "Qatar"
+    198+NLSRC_OFFSET "Reunion"
+    199+NLSRC_OFFSET "Marshall Islands"
+    200+NLSRC_OFFSET "Romania"
+    201+NLSRC_OFFSET "Philippines"
+    202+NLSRC_OFFSET "Puerto Rico"
+    203+NLSRC_OFFSET "Russia"
+    204+NLSRC_OFFSET "Rwanda"
+    205+NLSRC_OFFSET "Saudi Arabia"
+    206+NLSRC_OFFSET "St. Pierre and Miquelon"
+    207+NLSRC_OFFSET "St. Kitts and Nevis"
+    208+NLSRC_OFFSET "Seychelles"
+    209+NLSRC_OFFSET "South Africa"
+    210+NLSRC_OFFSET "Senegal"
+    212+NLSRC_OFFSET "Slovenia"
+    213+NLSRC_OFFSET "Sierra Leone"
+    214+NLSRC_OFFSET "San Marino"
+    215+NLSRC_OFFSET "Singapore"
+    216+NLSRC_OFFSET "Somalia"
+    217+NLSRC_OFFSET "Spain"
+    218+NLSRC_OFFSET "St. Lucia"
+    219+NLSRC_OFFSET "Sudan"
+    220+NLSRC_OFFSET "Svalbard"
+    221+NLSRC_OFFSET "Sweden"
+    222+NLSRC_OFFSET "Syria"
+    223+NLSRC_OFFSET "Switzerland"
+    224+NLSRC_OFFSET "United Arab Emirates"
+    225+NLSRC_OFFSET "Trinidad and Tobago"
+    227+NLSRC_OFFSET "Thailand"
+    228+NLSRC_OFFSET "Tajikistan"
+    231+NLSRC_OFFSET "Tonga"
+    232+NLSRC_OFFSET "Togo"
+    233+NLSRC_OFFSET "São Tomé and Príncipe"
+    234+NLSRC_OFFSET "Tunisia"
+    235+NLSRC_OFFSET "Turkey"
+    236+NLSRC_OFFSET "Tuvalu"
+    237+NLSRC_OFFSET "Taiwan"
+    238+NLSRC_OFFSET "Turkmenistan"
+    239+NLSRC_OFFSET "Tanzania"
+    240+NLSRC_OFFSET "Uganda"
+    241+NLSRC_OFFSET "Ukraine"
+    242+NLSRC_OFFSET "United Kingdom"
+    244+NLSRC_OFFSET "United States"
+    245+NLSRC_OFFSET "Burkina Faso"
+    246+NLSRC_OFFSET "Uruguay"
+    247+NLSRC_OFFSET "Uzbekistan"
+    248+NLSRC_OFFSET "St. Vincent and the Grenadines"
+    249+NLSRC_OFFSET "Bolivarian Republic of Venezuela"
+    251+NLSRC_OFFSET "Vietnam"
+    252+NLSRC_OFFSET "Virgin Islands"
+    253+NLSRC_OFFSET "Vatican City"
+    254+NLSRC_OFFSET "Namibia"
+    257+NLSRC_OFFSET "Western Sahara (disputed)"
+    258+NLSRC_OFFSET "Wake Island"
+    259+NLSRC_OFFSET "Samoa"
+    260+NLSRC_OFFSET "Swaziland"
+    261+NLSRC_OFFSET "Yemen"
+    263+NLSRC_OFFSET "Zambia"
+    264+NLSRC_OFFSET "Zimbabwe"
+    269+NLSRC_OFFSET "Serbia and Montenegro (Former)"
+    270+NLSRC_OFFSET "Montenegro"
+    271+NLSRC_OFFSET "Serbia"
+    273+NLSRC_OFFSET "Curaçao"
+    276+NLSRC_OFFSET "South Sudan"
+    300+NLSRC_OFFSET "Anguilla"
+    301+NLSRC_OFFSET "Antarctica"
+    302+NLSRC_OFFSET "Aruba"
+    303+NLSRC_OFFSET "Ascension Island"
+    304+NLSRC_OFFSET "Ashmore and Cartier Islands"
+    305+NLSRC_OFFSET "Baker Island"
+    306+NLSRC_OFFSET "Bouvet Island"
+    307+NLSRC_OFFSET "Cayman Islands"
+    308+NLSRC_OFFSET "Channel Islands"
+    309+NLSRC_OFFSET "Christmas Island"
+    310+NLSRC_OFFSET "Clipperton Island"
+    311+NLSRC_OFFSET "Cocos (Keeling) Islands"
+    312+NLSRC_OFFSET "Cook Islands"
+    313+NLSRC_OFFSET "Coral Sea Islands"
+    314+NLSRC_OFFSET "Diego Garcia"
+    315+NLSRC_OFFSET "Falkland Islands (Islas Malvinas)"
+    317+NLSRC_OFFSET "French Guiana"
+    318+NLSRC_OFFSET "French Polynesia"
+    319+NLSRC_OFFSET "French Southern and Antarctic Lands"
+    321+NLSRC_OFFSET "Guadeloupe"
+    322+NLSRC_OFFSET "Guam"
+    323+NLSRC_OFFSET "Guantanamo Bay"
+    324+NLSRC_OFFSET "Guernsey"
+    325+NLSRC_OFFSET "Heard Island and McDonald Islands"
+    326+NLSRC_OFFSET "Howland Island"
+    327+NLSRC_OFFSET "Jarvis Island"
+    328+NLSRC_OFFSET "Jersey"
+    329+NLSRC_OFFSET "Kingman Reef"
+    330+NLSRC_OFFSET "Martinique"
+    331+NLSRC_OFFSET "Mayotte"
+    332+NLSRC_OFFSET "Montserrat"
+    333+NLSRC_OFFSET "Netherlands Antilles (Former)"
+    334+NLSRC_OFFSET "New Caledonia"
+    335+NLSRC_OFFSET "Niue"
+    336+NLSRC_OFFSET "Norfolk Island"
+    337+NLSRC_OFFSET "Northern Mariana Islands"
+    338+NLSRC_OFFSET "Palmyra Atoll"
+    339+NLSRC_OFFSET "Pitcairn Islands"
+    340+NLSRC_OFFSET "Rota Island"
+    341+NLSRC_OFFSET "Saipan"
+    342+NLSRC_OFFSET "South Georgia and the South Sandwich Islands"
+    343+NLSRC_OFFSET "St. Helena"
+    346+NLSRC_OFFSET "Tinian Island"
+    347+NLSRC_OFFSET "Tokelau"
+    348+NLSRC_OFFSET "Tristan da Cunha"
+    349+NLSRC_OFFSET "Turks and Caicos Islands"
+    351+NLSRC_OFFSET "Virgin Islands, British"
+    352+NLSRC_OFFSET "Wallis and Futuna"
+    15126+NLSRC_OFFSET "Man, Isle of"
+    19618+NLSRC_OFFSET "Macedonia, Former Yugoslav Republic of"
+    21242+NLSRC_OFFSET "Midway Islands"
+    30967+NLSRC_OFFSET "Sint Maarten (Dutch part)"
+    31706+NLSRC_OFFSET "Saint Martin (French part)"
 END
index f9cb3d3..b415738 100644 (file)
@@ -33,6 +33,8 @@ DEBUG_CHANNEL(nls);
 extern int wine_fold_string(int flags, const WCHAR *src, int srclen, WCHAR *dst, int dstlen);
 extern int wine_get_sortkey(int flags, const WCHAR *src, int srclen, char *dst, int dstlen);
 extern int wine_compare_string(int flags, const WCHAR *str1, int len1, const WCHAR *str2, int len2);
+extern DWORD GetLocalisedText(DWORD dwResId, WCHAR *lpszDest, DWORD dwDestSize);
+#define NLSRC_OFFSET 5000 /* FIXME */
 
 extern HMODULE kernel32_handle;
 
@@ -2992,77 +2994,33 @@ BOOL WINAPI EnumUILanguagesW(UILANGUAGE_ENUMPROCW pUILangEnumProc, DWORD dwFlags
 static int
 NLS_GetGeoFriendlyName(GEOID Location, LPWSTR szFriendlyName, int cchData)
 {
-    HANDLE hKey;
-    WCHAR szPath[MAX_PATH];
-    UNICODE_STRING ValueName;
-    KEY_VALUE_PARTIAL_INFORMATION *info;
-    const int info_size = FIELD_OFFSET(KEY_VALUE_PARTIAL_INFORMATION, Data);
+    LPWSTR szBuffer;
     DWORD dwSize;
-    NTSTATUS Status;
-    int Ret;
 
-    swprintf(szPath, L"\\REGISTRY\\Machine\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Telephony\\Country List\\%lu", Location);
+    /* FIXME: move *.nls resources out of kernel32 into locale.nls */
+    Location += NLSRC_OFFSET;
 
-    hKey = NLS_RegOpenKey(0, szPath);
-    if (!hKey)
-    {
-        WARN("NLS_RegOpenKey() failed\n");
-        return 0;
-    }
+    if(cchData == 0)
+        return GetLocalisedText(Location, NULL, 0);
 
-    dwSize = info_size + cchData * sizeof(WCHAR);
+    dwSize = cchData * sizeof(WCHAR);
+    szBuffer = HeapAlloc(GetProcessHeap(), 0, dwSize);
 
-    if (!(info = HeapAlloc(GetProcessHeap(), 0, dwSize)))
+    if (!szBuffer)
     {
-        NtClose(hKey);
         SetLastError(ERROR_NOT_ENOUGH_MEMORY);
         return 0;
     }
 
-    RtlInitUnicodeString(&ValueName, L"Name");
-
-    Status = NtQueryValueKey(hKey, &ValueName, KeyValuePartialInformation,
-                             (LPBYTE)info, dwSize, &dwSize);
-
-    if (!Status)
+    if(GetLocalisedText(Location, szBuffer, dwSize))
     {
-        Ret = (dwSize - info_size) / sizeof(WCHAR);
-
-        if (!Ret || ((WCHAR *)info->Data)[Ret-1])
-        {
-            if (Ret < cchData || !szFriendlyName) Ret++;
-            else
-            {
-                WARN("ERROR_INSUFFICIENT_BUFFER\n");
-                SetLastError(ERROR_INSUFFICIENT_BUFFER);
-                Ret = 0;
-            }
-        }
-
-        if (Ret && szFriendlyName)
-        {
-            memcpy(szFriendlyName, info->Data, (Ret-1) * sizeof(WCHAR));
-            szFriendlyName[Ret-1] = 0;
-        }
-    }
-    else if (Status == STATUS_BUFFER_OVERFLOW && !szFriendlyName)
-    {
-        Ret = (dwSize - info_size) / sizeof(WCHAR) + 1;
+        memcpy(szFriendlyName, szBuffer, dwSize);
+        HeapFree(GetProcessHeap(), 0, szBuffer);
+        return strlenW(szFriendlyName) + 1;
     }
-    else if (Status == STATUS_OBJECT_NAME_NOT_FOUND)
-    {
-        Ret = -1;
-    }
-    else
-    {
-        SetLastError(RtlNtStatusToDosError(Status));
-        Ret = 0;
-    }
-
-    NtClose(hKey);
-    HeapFree(GetProcessHeap(), 0, info);
 
-    return Ret;
+    HeapFree(GetProcessHeap(), 0, szBuffer);
+    return 0;
 }
 
 static const struct geoinfo_t *get_geoinfo_dataptr(GEOID geoid)
index 02a5681..f88be12 100644 (file)
@@ -1679,8 +1679,8 @@ static INT WideCharToUtf7(LPCWSTR pszWide, INT cchWide, LPSTR pszUtf7, INT cchUt
     return c;
 }
 
-static BOOL
-GetLocalisedText(DWORD dwResId, WCHAR *lpszDest)
+DWORD
+GetLocalisedText(DWORD dwResId, WCHAR *lpszDest, DWORD dwDestSize)
 {
     HRSRC hrsrc;
     LCID lcid;
@@ -1704,6 +1704,16 @@ GetLocalisedText(DWORD dwResId, WCHAR *lpszDest)
                             (LPWSTR)RT_STRING,
                             MAKEINTRESOURCEW((dwId >> 4) + 1),
                             langId);
+
+    /* english fallback */
+    if(!hrsrc)
+    {
+        hrsrc = FindResourceExW(hCurrentModule,
+                            (LPWSTR)RT_STRING,
+                            MAKEINTRESOURCEW((dwId >> 4) + 1),
+                            MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
+    }
+
     if (hrsrc)
     {
         HGLOBAL hmem = LoadResource(hCurrentModule, hrsrc);
@@ -1712,18 +1722,32 @@ GetLocalisedText(DWORD dwResId, WCHAR *lpszDest)
         {
             const WCHAR *p;
             unsigned int i;
+            unsigned int len;
 
             p = LockResource(hmem);
+
             for (i = 0; i < (dwId & 0x0f); i++) p += *p + 1;
 
-            memcpy(lpszDest, p + 1, *p * sizeof(WCHAR));
+            if(dwDestSize == 0)
+                return *p + 1;
+
+            len = *p * sizeof(WCHAR);
+
+            if(len + sizeof(WCHAR) > dwDestSize)
+            {
+                SetLastError(ERROR_INSUFFICIENT_BUFFER);
+                return FALSE;
+            }
+
+            memcpy(lpszDest, p + 1, len);
             lpszDest[*p] = '\0';
 
             return TRUE;
         }
     }
 
-    DPRINT1("Could not get codepage name. dwResId = %lu\n", dwResId);
+    DPRINT1("Resource not found: dwResId = %lu\n", dwResId);
+    SetLastError(ERROR_INVALID_PARAMETER);
     return FALSE;
 }
 
@@ -1799,7 +1823,7 @@ GetCPInfoExW(UINT CodePage,
         {
             lpCPInfoEx->CodePage = CP_UTF7;
             lpCPInfoEx->UnicodeDefaultChar = 0x3f;
-            return GetLocalisedText((DWORD)CodePage, lpCPInfoEx->CodePageName);
+            return GetLocalisedText((DWORD)CodePage, lpCPInfoEx->CodePageName, sizeof(lpCPInfoEx->CodePageName)) != 0;
         }
         break;
 
@@ -1807,7 +1831,7 @@ GetCPInfoExW(UINT CodePage,
         {
             lpCPInfoEx->CodePage = CP_UTF8;
             lpCPInfoEx->UnicodeDefaultChar = 0x3f;
-            return GetLocalisedText((DWORD)CodePage, lpCPInfoEx->CodePageName);
+            return GetLocalisedText((DWORD)CodePage, lpCPInfoEx->CodePageName, sizeof(lpCPInfoEx->CodePageName)) != 0;
         }
 
         default:
@@ -1824,7 +1848,7 @@ GetCPInfoExW(UINT CodePage,
 
             lpCPInfoEx->CodePage = CodePageEntry->CodePageTable.CodePage;
             lpCPInfoEx->UnicodeDefaultChar = CodePageEntry->CodePageTable.UniDefaultChar;
-            return GetLocalisedText(CodePageEntry->CodePageTable.CodePage, lpCPInfoEx->CodePageName);
+            return GetLocalisedText(CodePageEntry->CodePageTable.CodePage, lpCPInfoEx->CodePageName, sizeof(lpCPInfoEx->CodePageName)) != 0;
         }
         break;
     }
index 6974725..2a45e7e 100644 (file)
@@ -30,6 +30,7 @@
 #include <winsvc.h>
 #include <userenv.h>
 #include <ndk/sefuncs.h>
+#include <strsafe.h>
 
 HINSTANCE hDllInstance;
 
@@ -778,15 +779,19 @@ CreateProfile(
     pProfile->dwType = WLX_PROFILE_TYPE_V2_0;
     pProfile->pszProfile = ProfilePath;
 
-    lpEnvironment = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
-                              (wcslen(pgContext->Domain)+ 14 + 1) * sizeof(WCHAR));
+    cbSize = sizeof(L"LOGONSERVER=\\\\") +
+             wcslen(pgContext->Domain) * sizeof(WCHAR) +
+             sizeof(UNICODE_NULL);
+    lpEnvironment = HeapAlloc(GetProcessHeap(), 0, cbSize);
     if (!lpEnvironment)
     {
         WARN("HeapAlloc() failed\n");
         goto cleanup;
     }
 
-    wsprintfW(lpEnvironment, L"LOGONSERVER=\\\\%s", pgContext->Domain);
+    StringCbPrintfW(lpEnvironment, cbSize, L"LOGONSERVER=\\\\%ls", pgContext->Domain);
+    ASSERT(wcslen(lpEnvironment) == cbSize / sizeof(WCHAR) - 2);
+    lpEnvironment[cbSize / sizeof(WCHAR) - 1] = UNICODE_NULL;
 
     pProfile->pszEnvironment = lpEnvironment;
 
index d3ec237..a903761 100644 (file)
@@ -280,7 +280,9 @@ PopulateCustomPathCombo(
         TRACE("RegQueryValueEx() failed with error 0x%lx\n", rc);
         goto cleanup;
     }
-    Buffer[dwPathLength] = Buffer[dwPathLength + 1] = '\0';
+
+    Buffer[dwPathLength / sizeof(WCHAR)] = UNICODE_NULL;
+    Buffer[dwPathLength / sizeof(WCHAR) + 1] = UNICODE_NULL;
 
     /* Populate combo box */
     for (Path = Buffer; *Path; Path += wcslen(Path) + 1)
@@ -305,7 +307,7 @@ SaveCustomPath(
     LPWSTR Buffer = NULL;
     LPWSTR pBuffer; /* Pointer into Buffer */
     int ItemsCount, Length;
-    DWORD i;
+    int i;
     DWORD TotalLength = 0;
     BOOL UseCustomPath = TRUE;
     HKEY hKey = NULL;
index 70495d4..b73a41e 100644 (file)
@@ -1334,6 +1334,14 @@ COpenWithMenu::Initialize(LPCITEMIDLIST pidlFolder,
     pidlFolder2 = (LPCITEMIDLIST) ((LPBYTE)pida + pida->aoffset[0]);
     pidlChild = (LPCITEMIDLIST) ((LPBYTE)pida + pida->aoffset[1]);
 
+    if (!_ILIsValue(pidlChild))
+    {
+        TRACE("pidl is not a file\n");
+        GlobalUnlock(medium.hGlobal);
+        GlobalFree(medium.hGlobal);
+        return E_FAIL;
+    }
+
     pidl = ILCombine(pidlFolder2, pidlChild);
 
     GlobalUnlock(medium.hGlobal);
@@ -1344,12 +1352,6 @@ COpenWithMenu::Initialize(LPCITEMIDLIST pidlFolder,
         ERR("no mem\n");
         return E_OUTOFMEMORY;
     }
-    if (!_ILIsValue(pidlChild))
-    {
-        TRACE("pidl is not a file\n");
-        SHFree((void*)pidl);
-        return E_FAIL;
-    }
 
     if (!SHGetPathFromIDListW(pidl, m_wszPath))
     {
index e8dddf1..49b47f0 100644 (file)
@@ -1590,14 +1590,18 @@ static void move_to_dir(LPSHFILEOPSTRUCTW lpFileOp, const FILE_ENTRY *feFrom, co
 }
 
 /* the FO_MOVE operation */
-static HRESULT move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, const FILE_LIST *flTo)
+static DWORD move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, const FILE_LIST *flTo)
 {
     DWORD i;
+    INT mismatched = 0;
     const FILE_ENTRY *entryToMove;
     const FILE_ENTRY *fileDest;
 
-    if (!flFrom->dwNumFiles || !flTo->dwNumFiles)
-        return ERROR_CANCELLED;
+    if (!flFrom->dwNumFiles)
+        return ERROR_SUCCESS;
+
+    if (!flTo->dwNumFiles)
+        return ERROR_FILE_NOT_FOUND;
 
     if (!(lpFileOp->fFlags & FOF_MULTIDESTFILES) &&
         flTo->dwNumFiles > 1 && flFrom->dwNumFiles > 1)
@@ -1615,29 +1619,44 @@ static HRESULT move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, c
     if (!PathFileExistsW(flTo->feFiles[0].szDirectory))
         return ERROR_CANCELLED;
 
-    if ((lpFileOp->fFlags & FOF_MULTIDESTFILES) &&
-        flFrom->dwNumFiles != flTo->dwNumFiles)
-    {
-        return ERROR_CANCELLED;
-    }
+    if (lpFileOp->fFlags & FOF_MULTIDESTFILES)
+        mismatched = flFrom->dwNumFiles - flTo->dwNumFiles;
 
     fileDest = &flTo->feFiles[0];
     for (i = 0; i < flFrom->dwNumFiles; i++)
     {
         entryToMove = &flFrom->feFiles[i];
 
-        if (lpFileOp->fFlags & FOF_MULTIDESTFILES)
-            fileDest = &flTo->feFiles[i];
-
         if (!PathFileExistsW(fileDest->szDirectory))
             return ERROR_CANCELLED;
 
+        if (lpFileOp->fFlags & FOF_MULTIDESTFILES)
+        {
+            if (i >= flTo->dwNumFiles)
+                break;
+            fileDest = &flTo->feFiles[i];
+            if (mismatched && !fileDest->bExists)
+            {
+                create_dest_dirs(flTo->feFiles[i].szFullPath);
+                flTo->feFiles[i].bExists = TRUE;
+                flTo->feFiles[i].attributes = FILE_ATTRIBUTE_DIRECTORY;
+            }
+        }
+
         if (fileDest->bExists && IsAttribDir(fileDest->attributes))
             move_to_dir(lpFileOp, entryToMove, fileDest);
         else
             SHNotifyMoveFileW(entryToMove->szFullPath, fileDest->szFullPath, IsAttribDir(entryToMove->attributes));
     }
 
+    if (mismatched > 0)
+    {
+        if (flFrom->bAnyDirectories)
+            return DE_DESTSAMETREE;
+        else
+            return DE_SAMEFILE;
+    }
+
     return ERROR_SUCCESS;
 }
 
index 09c42f5..92448c5 100644 (file)
@@ -35,7 +35,7 @@ SetAccountDomain(LPCWSTR DomainName,
 
     NTSTATUS Status;
 
-    DPRINT1("SYSSETUP: SetAccountDomain\n");
+    DPRINT("SYSSETUP: SetAccountDomain\n");
 
     memset(&ObjectAttributes, 0, sizeof(LSA_OBJECT_ATTRIBUTES));
     ObjectAttributes.Length = sizeof(LSA_OBJECT_ATTRIBUTES);
index f562fd0..cbc240e 100644 (file)
@@ -24,7 +24,7 @@
 
  /*
   * Modified for ReactOS and latest ACPICA
-  * Copyright (C)2009  Samuel Serapion 
+  * Copyright (C)2009  Samuel Serapion
   */
 
 #include <precomp.h>
@@ -219,11 +219,11 @@ acpi_bus_get_power (
        }
        else {
                /*
-                * Get the device's power state either directly (via _PSC) or 
+                * Get the device's power state either directly (via _PSC) or
                 * indirectly (via power resources).
                 */
                if (device->power.flags.explicit_get) {
-                       status = acpi_evaluate_integer(device->handle, "_PSC", 
+                       status = acpi_evaluate_integer(device->handle, "_PSC",
                                NULL, &psc);
                        if (ACPI_FAILURE(status))
                                return_VALUE(AE_NOT_FOUND);
@@ -305,7 +305,7 @@ acpi_bus_set_power (
         * On transitions to a high-powered state we first apply power (via
         * power resources) then evalute _PSx.  Conversly for transitions to
         * a lower-powered state.
-        */ 
+        */
        if (state < device->power.state) {
                if (device->power.flags.power_resources) {
                        result = acpi_power_transition(device, state);
@@ -313,7 +313,7 @@ acpi_bus_set_power (
                                goto end;
                }
                if (device->power.states[state].flags.explicit_set) {
-                       status = AcpiEvaluateObject(device->handle, 
+                       status = AcpiEvaluateObject(device->handle,
                                object_name, NULL, NULL);
                        if (ACPI_FAILURE(status)) {
                                result = AE_NOT_FOUND;
@@ -323,7 +323,7 @@ acpi_bus_set_power (
        }
        else {
                if (device->power.states[state].flags.explicit_set) {
-                       status = AcpiEvaluateObject(device->handle, 
+                       status = AcpiEvaluateObject(device->handle,
                                object_name, NULL, NULL);
                        if (ACPI_FAILURE(status)) {
                                result = AE_NOT_FOUND;
@@ -464,11 +464,11 @@ acpi_bus_generate_event_dpc(PKDPC Dpc,
     struct acpi_device *device = SystemArgument1;
     ULONG_PTR TypeData = (ULONG_PTR)SystemArgument2;
        KIRQL OldIrql;
-    
+
     event = ExAllocatePoolWithTag(NonPagedPool,sizeof(struct acpi_bus_event), 'IPCA');
        if (!event)
                return;
-    
+
        sprintf(event->device_class, "%s", device->pnp.device_class);
        sprintf(event->bus_id, "%s", device->pnp.bus_id);
        event->type = (TypeData & 0xFF000000) >> 24;
@@ -497,10 +497,10 @@ acpi_bus_generate_event (
        /* drop event on the floor if no one's listening */
        if (!event_is_open)
                return_VALUE(0);
-    
+
     /* Data shouldn't even get near 24 bits */
     ASSERT(!(data & 0xFF000000));
-    
+
     TypeData = data;
     TypeData |= type << 24;
 
@@ -573,9 +573,9 @@ acpi_bus_receive_event (
  */
 static int
 acpi_bus_walk (
-       struct acpi_device      *start, 
-       acpi_bus_walk_callback  callback, 
-       int                     direction, 
+       struct acpi_device      *start,
+       acpi_bus_walk_callback  callback,
+       int                     direction,
        void                    *data)
 {
        int                     result = 0;
@@ -707,7 +707,7 @@ acpi_bus_check_scope (ACPI_HANDLE handle)
  * ---------------
  * Callback for all 'system-level' device notifications (values 0x00-0x7F).
  */
-static void 
+static void
 acpi_bus_notify (
        ACPI_HANDLE             handle,
        UINT32                     type,
@@ -724,27 +724,27 @@ acpi_bus_notify (
        switch (type) {
 
        case ACPI_NOTIFY_BUS_CHECK:
-               DPRINT("Received BUS CHECK notification for device [%s]\n", 
+               DPRINT("Received BUS CHECK notification for device [%s]\n",
                        device->pnp.bus_id);
                acpi_bus_check_scope(handle);
-               /* 
+               /*
                 * TBD: We'll need to outsource certain events to non-ACPI
                 *      drivers via the device manager (device.c).
                 */
                break;
 
        case ACPI_NOTIFY_DEVICE_CHECK:
-               DPRINT("Received DEVICE CHECK notification for device [%s]\n", 
+               DPRINT("Received DEVICE CHECK notification for device [%s]\n",
                        device->pnp.bus_id);
                acpi_bus_check_device(handle);
-               /* 
+               /*
                 * TBD: We'll need to outsource certain events to non-ACPI
                 *      drivers via the device manager (device.c).
                 */
                break;
 
        case ACPI_NOTIFY_DEVICE_WAKE:
-               DPRINT("Received DEVICE WAKE notification for device [%s]\n", 
+               DPRINT("Received DEVICE WAKE notification for device [%s]\n",
                        device->pnp.bus_id);
                acpi_bus_check_device(handle);
                /*
@@ -754,37 +754,37 @@ acpi_bus_notify (
                break;
 
        case ACPI_NOTIFY_EJECT_REQUEST:
-               DPRINT1("Received EJECT REQUEST notification for device [%s]\n", 
+               DPRINT1("Received EJECT REQUEST notification for device [%s]\n",
                        device->pnp.bus_id);
                /* TBD */
                break;
 
        case ACPI_NOTIFY_DEVICE_CHECK_LIGHT:
-               DPRINT1("Received DEVICE CHECK LIGHT notification for device [%s]\n", 
+               DPRINT1("Received DEVICE CHECK LIGHT notification for device [%s]\n",
                        device->pnp.bus_id);
                /* TBD: Exactly what does 'light' mean? */
                break;
 
        case ACPI_NOTIFY_FREQUENCY_MISMATCH:
-               DPRINT1("Received FREQUENCY MISMATCH notification for device [%s]\n", 
+               DPRINT1("Received FREQUENCY MISMATCH notification for device [%s]\n",
                        device->pnp.bus_id);
                /* TBD */
                break;
 
        case ACPI_NOTIFY_BUS_MODE_MISMATCH:
-               DPRINT1("Received BUS MODE MISMATCH notification for device [%s]\n", 
+               DPRINT1("Received BUS MODE MISMATCH notification for device [%s]\n",
                        device->pnp.bus_id);
                /* TBD */
                break;
 
        case ACPI_NOTIFY_POWER_FAULT:
-               DPRINT1("Received POWER FAULT notification for device [%s]\n", 
+               DPRINT1("Received POWER FAULT notification for device [%s]\n",
                        device->pnp.bus_id);
                /* TBD */
                break;
 
        default:
-               DPRINT1("Received unknown/unsupported notification [%08x]\n", 
+               DPRINT1("Received unknown/unsupported notification [%08x]\n",
                        type);
                break;
        }
@@ -810,7 +810,7 @@ static FAST_MUTEX acpi_bus_drivers_lock;
 
 
 /**
- * acpi_bus_match 
+ * acpi_bus_match
  * --------------
  * Checks the device's hardware (_HID) or compatible (_CID) ids to see if it
  * matches the specified driver's criteria.
@@ -840,20 +840,20 @@ acpi_bus_match (
        error = -2;
 
  Done:
-       
+
        return error;
 }
 
 
 /**
- * acpi_bus_driver_init 
+ * acpi_bus_driver_init
  * --------------------
- * Used to initialize a device via its device driver.  Called whenever a 
+ * Used to initialize a device via its device driver.  Called whenever a
  * driver is bound to a device.  Invokes the driver's add() and start() ops.
  */
 static int
 acpi_bus_driver_init (
-       struct acpi_device      *device, 
+       struct acpi_device      *device,
        struct acpi_driver      *driver)
 {
        int                     result = 0;
@@ -896,15 +896,15 @@ acpi_bus_driver_init (
 
 
 /**
- * acpi_bus_attach 
+ * acpi_bus_attach
  * -------------
- * Callback for acpi_bus_walk() used to find devices that match a specific 
+ * Callback for acpi_bus_walk() used to find devices that match a specific
  * driver's criteria and then attach the driver.
  */
 static int
 acpi_bus_attach (
-       struct acpi_device      *device, 
-       int                     level, 
+       struct acpi_device      *device,
+       int                     level,
        void                    *data)
 {
        int                     result = 0;
@@ -927,7 +927,7 @@ acpi_bus_attach (
 
        DPRINT("Found driver [%s] for device [%s]\n",
                driver->name, device->pnp.bus_id);
-       
+
        result = acpi_bus_driver_init(device, driver);
        if (result)
                return_VALUE(result);
@@ -941,15 +941,15 @@ acpi_bus_attach (
 
 
 /**
- * acpi_bus_unattach 
+ * acpi_bus_unattach
  * -----------------
- * Callback for acpi_bus_walk() used to find devices that match a specific 
+ * Callback for acpi_bus_walk() used to find devices that match a specific
  * driver's criteria and unattach the driver.
  */
 static int
 acpi_bus_unattach (
-       struct acpi_device      *device, 
-       int                     level, 
+       struct acpi_device      *device,
+       int                     level,
        void                    *data)
 {
        int                     result = 0;
@@ -980,7 +980,7 @@ acpi_bus_unattach (
 
 
 /**
- * acpi_bus_find_driver 
+ * acpi_bus_find_driver
  * --------------------
  * Parses the list of registered drivers looking for a driver applicable for
  * the specified device.
@@ -1019,8 +1019,8 @@ acpi_bus_find_driver (
 
 
 /**
- * acpi_bus_register_driver 
- * ------------------------ 
+ * acpi_bus_register_driver
+ * ------------------------
  * Registers a driver with the ACPI bus.  Searches the namespace for all
  * devices that match the driver's criteria and binds.
  */
@@ -1038,7 +1038,7 @@ acpi_bus_register_driver (
        list_add_tail(&driver->node, &acpi_bus_drivers);
        up(&acpi_bus_drivers_lock);
 
-       acpi_bus_walk(acpi_root, acpi_bus_attach, 
+       acpi_bus_walk(acpi_root, acpi_bus_attach,
                WALK_DOWN, driver);
 
        return_VALUE(driver->references);
@@ -1046,7 +1046,7 @@ acpi_bus_register_driver (
 
 
 /**
- * acpi_bus_unregister_driver 
+ * acpi_bus_unregister_driver
  * --------------------------
  * Unregisters a driver with the ACPI bus.  Searches the namespace for all
  * devices that match the driver's criteria and unbinds.
@@ -1075,7 +1075,7 @@ acpi_bus_unregister_driver (
                                  Device Enumeration
    -------------------------------------------------------------------------- */
 
-static int 
+static int
 acpi_bus_get_flags (
        struct acpi_device      *device)
 {
@@ -1125,7 +1125,7 @@ acpi_bus_get_flags (
 }
 
 
-int 
+int
 acpi_bus_add (
        struct acpi_device      **child,
        struct acpi_device      *parent,
@@ -1180,7 +1180,7 @@ acpi_bus_add (
                buffer.Pointer = bus_id;
                AcpiGetName(handle, ACPI_SINGLE_NAME, &buffer);
 
-                       
+
                /* Clean up trailing underscores (if any) */
                for (i = 3; i > 1; i--) {
                        if (bus_id[i] == '_')
@@ -1194,7 +1194,7 @@ acpi_bus_add (
         /* HACK: Skip HPET */
         if (strstr(device->pnp.bus_id, "HPET"))
         {
-            DPRINT1("Using HPET hack\n");
+            DPRINT("Using HPET hack\n");
             result = -1;
             goto end;
         }
@@ -1314,7 +1314,7 @@ acpi_bus_add (
                break;
        }
 
-       /* 
+       /*
         * \_SB
         * ----
         * Fix for the system root bus device -- the only root-level device.
@@ -1411,7 +1411,7 @@ acpi_bus_add (
        /*
         * Bind _ADR-Based Devices
         * -----------------------
-        * If there's a a bus address (_ADR) then we utilize the parent's 
+        * If there's a a bus address (_ADR) then we utilize the parent's
         * 'bind' function (if exists) to bind the ACPI- and natively-
         * enumerated device representations.
         */
@@ -1451,7 +1451,7 @@ end:
 
 static int
 acpi_bus_remove (
-       struct acpi_device      *device, 
+       struct acpi_device      *device,
        int                     type)
 {
 
@@ -1490,7 +1490,7 @@ acpi_bus_scan (
 
        parent = start;
        phandle = start->handle;
-       
+
        /*
         * Parse through the ACPI namespace, identify all 'devices', and
         * create a new 'struct acpi_device' for each.
@@ -1591,7 +1591,7 @@ acpi_bus_scan_fixed (
         * power button is present.
         */
        if (AcpiGbl_FADT.Flags & ACPI_FADT_POWER_BUTTON)
-               result = acpi_bus_add(&device, acpi_root, 
+               result = acpi_bus_add(&device, acpi_root,
                        NULL, ACPI_BUS_TYPE_POWER_BUTTON);
        else
        {
@@ -1610,7 +1610,7 @@ acpi_bus_scan_fixed (
         * the we have a control method button just like above.
         */
        if (AcpiGbl_FADT.Flags & ACPI_FADT_SLEEP_BUTTON)
-               result = acpi_bus_add(&device, acpi_root, 
+               result = acpi_bus_add(&device, acpi_root,
                        NULL, ACPI_BUS_TYPE_SLEEP_BUTTON);
        else
        {
@@ -1635,7 +1635,7 @@ acpi_bus_init (void)
        int                     result = 0;
        ACPI_STATUS             status = AE_OK;
 
-       DPRINT1("acpi_bus_init\n");
+       DPRINT("acpi_bus_init\n");
 
         KeInitializeDpc(&event_dpc, acpi_bus_generate_event_dpc, NULL);
 
@@ -1682,7 +1682,7 @@ acpi_bus_init (void)
        /*
         * Create the root device in the bus's device tree
         */
-       result = acpi_bus_add(&acpi_root, NULL, ACPI_ROOT_OBJECT, 
+       result = acpi_bus_add(&acpi_root, NULL, ACPI_ROOT_OBJECT,
                ACPI_BUS_TYPE_SYSTEM);
        if (result)
                goto error2;
index 32b74c5..746a0b1 100644 (file)
@@ -270,23 +270,23 @@ ACPIDispatchDeviceControl(
                    */
                   if (power_button)
                   {
-                      DPRINT1("Fixed power button reported to power manager\n");
+                      DPRINT("Fixed power button reported to power manager\n");
                       Caps |= SYS_BUTTON_POWER;
                   }
                   if (sleep_button)
                   {
-                      DPRINT1("Fixed sleep button reported to power manager\n");
+                      DPRINT("Fixed sleep button reported to power manager\n");
                       Caps |= SYS_BUTTON_SLEEP;
                   }
               }
               else if (wcsstr(((PPDO_DEVICE_DATA)commonData)->HardwareIDs, L"PNP0C0C"))
               {
-                  DPRINT1("Control method power button reported to power manager\n");
+                  DPRINT("Control method power button reported to power manager\n");
                   Caps |= SYS_BUTTON_POWER;
               }
               else if (wcsstr(((PPDO_DEVICE_DATA)commonData)->HardwareIDs, L"PNP0C0E"))
               {
-                  DPRINT1("Control method sleep reported to power manager\n");
+                  DPRINT("Control method sleep reported to power manager\n");
                   Caps |= SYS_BUTTON_SLEEP;
               }
               else
index 08306f0..c75a654 100644 (file)
 #define NDEBUG
 #include <debug.h>
 
+#if 0
+#define DBGPRINT(...) DbgPrint(__VA_ARGS__)
+#else
+#define DBGPRINT(...)
+#endif
+
 /*** PRIVATE *****************************************************************/
 
 static NTSTATUS
@@ -1266,7 +1272,7 @@ PdoStartDevice(
 
             if (RawPartialDesc->Type == CmResourceTypeInterrupt)
             {
-                DPRINT1("Assigning IRQ %u to PCI device 0x%x on bus 0x%x\n",
+                DPRINT("Assigning IRQ %u to PCI device 0x%x on bus 0x%x\n",
                         RawPartialDesc->u.Interrupt.Vector,
                         DeviceExtension->PciDevice->SlotNumber.u.AsULONG,
                         DeviceExtension->PciDevice->BusNumber);
@@ -1284,30 +1290,30 @@ PdoStartDevice(
 
     Command = 0;
 
-    DPRINT1("Enabling command flags for PCI device 0x%x on bus 0x%x: ",
+    DBGPRINT("pci!PdoStartDevice: Enabling command flags for PCI device 0x%x on bus 0x%x: ",
             DeviceExtension->PciDevice->SlotNumber.u.AsULONG,
             DeviceExtension->PciDevice->BusNumber);
     if (DeviceExtension->PciDevice->EnableBusMaster)
     {
         Command |= PCI_ENABLE_BUS_MASTER;
-        DbgPrint("[Bus master] ");
+        DBGPRINT("[Bus master] ");
     }
 
     if (DeviceExtension->PciDevice->EnableMemorySpace)
     {
         Command |= PCI_ENABLE_MEMORY_SPACE;
-        DbgPrint("[Memory space enable] ");
+        DBGPRINT("[Memory space enable] ");
     }
 
     if (DeviceExtension->PciDevice->EnableIoSpace)
     {
         Command |= PCI_ENABLE_IO_SPACE;
-        DbgPrint("[I/O space enable] ");
+        DBGPRINT("[I/O space enable] ");
     }
 
     if (Command != 0)
     {
-        DbgPrint("\n");
+        DBGPRINT("\n");
 
         /* OR with the previous value */
         Command |= DeviceExtension->PciDevice->PciConfig.Command;
index 3ad1a9f..b91b85b 100644 (file)
@@ -41,8 +41,7 @@ VfatCloseFile(
 
     if (pFcb->Flags & FCB_IS_VOLUME)
     {
-        DPRINT1("Volume\n");
-        pFcb->RefCount--;
+        DPRINT("Volume\n");
         FileObject->FsContext2 = NULL;
     }
     else
index eda08cf..32b372e 100644 (file)
@@ -482,7 +482,7 @@ VfatCreateFile(
     if (FileObject->FileName.Length == 0 &&
         (FileObject->RelatedFileObject == NULL || FileObject->RelatedFileObject->FsContext2 != NULL))
     {
-        DPRINT1("Volume opening\n");
+        DPRINT("Volume opening\n");
 
         if (RequestedDisposition != FILE_OPEN &&
             RequestedDisposition != FILE_OPEN_IF)
index c698ba7..d443be3 100644 (file)
@@ -294,6 +294,7 @@ vfatGrabFCB(
 {
     ASSERT(ExIsResourceAcquiredExclusive(&pVCB->DirResource));
 
+    ASSERT(pFCB != pVCB->VolumeFcb);
     ++pFCB->RefCount;
 }
 
@@ -311,6 +312,7 @@ vfatReleaseFCB(
 
     while (pFCB)
     {
+        ASSERT(pFCB != pVCB->VolumeFcb);
         pFCB->RefCount--;
         if (pFCB->RefCount == 0)
         {
index 19f9785..ab9d3af 100644 (file)
@@ -612,7 +612,7 @@ VfatMount(
     FsRtlNotifyInitializeSync(&DeviceExt->NotifySync);
     InitializeListHead(&DeviceExt->NotifyList);
 
-    DPRINT1("Mount success\n");
+    DPRINT("Mount success\n");
 
     Status = STATUS_SUCCESS;
 
@@ -866,7 +866,7 @@ VfatLockOrUnlockVolume(
     PFILE_OBJECT FileObject;
     PDEVICE_EXTENSION DeviceExt;
 
-    DPRINT1("VfatLockOrUnlockVolume(%p, %d)\n", IrpContext, Lock);
+    DPRINT("VfatLockOrUnlockVolume(%p, %d)\n", IrpContext, Lock);
 
     DeviceExt = IrpContext->DeviceExt;
     FileObject = IrpContext->FileObject;
@@ -909,18 +909,77 @@ VfatDismountVolume(
     PVFAT_IRP_CONTEXT IrpContext)
 {
     PDEVICE_EXTENSION DeviceExt;
+    PLIST_ENTRY NextEntry;
+    PVFATFCB Fcb;
 
-    DPRINT1("VfatDismountVolume(%p)\n", IrpContext);
+    DPRINT("VfatDismountVolume(%p)\n", IrpContext);
 
     DeviceExt = IrpContext->DeviceExt;
 
+    /* We HAVE to be locked. Windows also allows dismount with no lock
+     * but we're here mainly for 1st stage, so KISS
+     */
     if (!(DeviceExt->Flags & VCB_VOLUME_LOCKED))
     {
         return STATUS_ACCESS_DENIED;
     }
 
-    UNIMPLEMENTED;
-    return STATUS_NOT_IMPLEMENTED;
+    /* Race condition? */
+    if (DeviceExt->Flags & VCB_DISMOUNT_PENDING)
+    {
+        return STATUS_VOLUME_DISMOUNTED;
+    }
+
+    /* Notify we'll dismount. Pass that point there's no reason we fail */
+    FsRtlNotifyVolumeEvent(IrpContext->Stack->FileObject, FSRTL_VOLUME_DISMOUNT);
+
+    ExAcquireResourceExclusiveLite(&DeviceExt->FatResource, TRUE);
+
+    /* Browse all the available FCBs first, and force data writing to disk */
+    for (NextEntry = DeviceExt->FcbListHead.Flink;
+         NextEntry != &DeviceExt->FcbListHead;
+         NextEntry = NextEntry->Flink)
+    {
+        Fcb = CONTAINING_RECORD(NextEntry, VFATFCB, FcbListEntry);
+
+        ExAcquireResourceExclusiveLite(&Fcb->MainResource, TRUE);
+        ExAcquireResourceExclusiveLite(&Fcb->PagingIoResource, TRUE);
+
+        if (Fcb->FileObject)
+        {
+            if (Fcb->Flags & FCB_IS_DIRTY)
+            {
+                VfatUpdateEntry(Fcb);
+            }
+
+            CcPurgeCacheSection(Fcb->FileObject->SectionObjectPointer, NULL, 0, FALSE);
+            CcUninitializeCacheMap(Fcb->FileObject, &Fcb->RFCB.FileSize, NULL);
+        }
+
+        ExReleaseResourceLite(&Fcb->PagingIoResource);
+        ExReleaseResourceLite(&Fcb->MainResource);
+    }
+
+    /* Rebrowse the FCB in order to free them now */
+    while (!IsListEmpty(&DeviceExt->FcbListHead))
+    {
+        NextEntry = RemoveHeadList(&DeviceExt->FcbListHead);
+        Fcb = CONTAINING_RECORD(NextEntry, VFATFCB, FcbListEntry);
+        vfatDestroyFCB(Fcb);
+    }
+
+    /* Mark we're being dismounted */
+    DeviceExt->Flags |= VCB_DISMOUNT_PENDING;
+    IrpContext->DeviceObject->Vpb->Flags &= ~VPB_MOUNTED;
+
+    ExReleaseResourceLite(&DeviceExt->FatResource);
+
+    /* Release a few resources and quit, we're done */
+    ExDeleteResourceLite(&DeviceExt->DirResource);
+    ExDeleteResourceLite(&DeviceExt->FatResource);
+    ObDereferenceObject(DeviceExt->FATFileObject);
+
+    return STATUS_SUCCESS;
 }
 
 /*
index be50379..71f884c 100644 (file)
@@ -608,7 +608,7 @@ GetNtfsFileRecord(PDEVICE_EXTENSION DeviceExt,
         return STATUS_INVALID_PARAMETER;
     }
 
-    if (Stack->Parameters.FileSystemControl.OutputBufferLength < sizeof(NTFS_FILE_RECORD_OUTPUT_BUFFER) ||
+    if (Stack->Parameters.FileSystemControl.OutputBufferLength < (FIELD_OFFSET(NTFS_FILE_RECORD_OUTPUT_BUFFER, FileRecordBuffer) + DeviceExt->NtfsInfo.BytesPerFileRecord) ||
         Irp->AssociatedIrp.SystemBuffer == NULL)
     {
         DPRINT1("Invalid output! %d %p\n", Stack->Parameters.FileSystemControl.OutputBufferLength, Irp->AssociatedIrp.SystemBuffer);
@@ -634,17 +634,10 @@ GetNtfsFileRecord(PDEVICE_EXTENSION DeviceExt,
         return Status;
     }
 
-    if (Stack->Parameters.FileSystemControl.OutputBufferLength < (FIELD_OFFSET(NTFS_FILE_RECORD_OUTPUT_BUFFER, FileRecordBuffer) + FileRecord->BytesInUse))
-    {
-        DPRINT1("Buffer too small: %lu vs %lu\n", Stack->Parameters.FileSystemControl.OutputBufferLength, FileRecord->BytesInUse);
-        ExFreePoolWithTag(FileRecord, TAG_NTFS);
-        return STATUS_BUFFER_TOO_SMALL;
-    }
-
     OutputBuffer = (PNTFS_FILE_RECORD_OUTPUT_BUFFER)Irp->AssociatedIrp.SystemBuffer;
     OutputBuffer->FileReferenceNumber.QuadPart = MFTRecord;
-    OutputBuffer->FileRecordLength = FileRecord->BytesInUse;
-    RtlCopyMemory(OutputBuffer->FileRecordBuffer, FileRecord, FileRecord->BytesInUse);
+    OutputBuffer->FileRecordLength = DeviceExt->NtfsInfo.BytesPerFileRecord;
+    RtlCopyMemory(OutputBuffer->FileRecordBuffer, FileRecord, DeviceExt->NtfsInfo.BytesPerFileRecord);
 
     ExFreePoolWithTag(FileRecord, TAG_NTFS);
 
index f84df4e..cd5c61b 100644 (file)
@@ -160,7 +160,7 @@ MiniIsBusy(
     {
        Busy = TRUE;
     }
-    else if (Type == NdisWorkItemResetRequested && 
+    else if (Type == NdisWorkItemResetRequested &&
              Adapter->NdisMiniportBlock.ResetStatus == NDIS_STATUS_PENDING)
     {
        Busy = TRUE;
@@ -340,7 +340,7 @@ MiniIndicateReceivePacket(
                                              &NdisBufferVA,
                                              &FirstBufferLength,
                                              &TotalBufferLength);
-                
+
                 HeaderSize = NDIS_GET_PACKET_HEADER_SIZE(PacketArray[i]);
 
                 LookAheadSize = TotalBufferLength - HeaderSize;
@@ -352,12 +352,12 @@ MiniIndicateReceivePacket(
                     KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql);
                     return;
                 }
-                
+
                 CopyBufferChainToBuffer(LookAheadBuffer,
                                         NdisBuffer,
                                         HeaderSize,
                                         LookAheadSize);
-                
+
                 NDIS_DbgPrint(MID_TRACE, ("Indicating packet to protocol's legacy Receive handler\n"));
                 (*AdapterBinding->ProtocolBinding->Chars.ReceiveHandler)(
                      AdapterBinding->NdisOpenBlock.ProtocolBindingContext,
@@ -367,7 +367,7 @@ MiniIndicateReceivePacket(
                      LookAheadBuffer,
                      LookAheadSize,
                      TotalBufferLength - HeaderSize);
-                
+
                 ExFreePool(LookAheadBuffer);
             }
         }
@@ -506,7 +506,7 @@ MiniRequestComplete(
     Adapter->NdisMiniportBlock.PendingRequest = NULL;
     KeReleaseSpinLockFromDpcLevel(&Adapter->NdisMiniportBlock.Lock);
     KeLowerIrql(OldIrql);
-    
+
     MiniWorkItemComplete(Adapter, NdisWorkItemRequest);
 }
 
@@ -558,7 +558,7 @@ MiniSendComplete(
         Status);
 
     KeLowerIrql(OldIrql);
-    
+
     MiniWorkItemComplete(Adapter, NdisWorkItemSend);
 }
 
@@ -702,7 +702,7 @@ MiniLocateDevice(
     KeAcquireSpinLock(&AdapterListLock, &OldIrql);
     {
         CurrentEntry = AdapterListHead.Flink;
-        
+
         while (CurrentEntry != &AdapterListHead)
         {
             Adapter = CONTAINING_RECORD(CurrentEntry, LOGICAL_ADAPTER, ListEntry);
@@ -902,7 +902,7 @@ MiniReset(
 
        NdisMIndicateStatus(Adapter, NDIS_STATUS_RESET_END, NULL, 0);
        NdisMIndicateStatusComplete(Adapter);
-       
+
        MiniWorkItemComplete(Adapter, NdisWorkItemResetRequested);
    }
 
@@ -2608,11 +2608,11 @@ NdisMRegisterMiniport(
             case 0x00:
                 MinSize = sizeof(NDIS50_MINIPORT_CHARACTERISTICS);
                 break;
-                
+
             case 0x01:
                 MinSize = sizeof(NDIS51_MINIPORT_CHARACTERISTICS);
                 break;
-                
+
             default:
                 NDIS_DbgPrint(MIN_TRACE, ("Bad 5.x minor characteristics version.\n"));
                 return NDIS_STATUS_BAD_VERSION;
@@ -2624,7 +2624,7 @@ NdisMRegisterMiniport(
         return NDIS_STATUS_BAD_VERSION;
     }
 
-   NDIS_DbgPrint(MIN_TRACE, ("Initializing an NDIS %u.%u miniport\n", 
+   NDIS_DbgPrint(MID_TRACE, ("Initializing an NDIS %u.%u miniport\n",
                               MiniportCharacteristics->MajorNdisVersion,
                               MiniportCharacteristics->MinorNdisVersion));
 
@@ -2845,7 +2845,7 @@ NdisMSetAttributesEx(
   if (AttributeFlags & NDIS_ATTRIBUTE_INTERMEDIATE_DRIVER)
     NDIS_DbgPrint(MIN_TRACE, ("Intermediate drivers not supported yet.\n"));
 
-  NDIS_DbgPrint(MIN_TRACE, ("Miniport attribute flags: 0x%x\n", AttributeFlags));
+  NDIS_DbgPrint(MID_TRACE, ("Miniport attribute flags: 0x%x\n", AttributeFlags));
 
   if (Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.AdapterShutdownHandler)
   {
@@ -3141,7 +3141,7 @@ NdisMRegisterDevice(
         NDIS_DbgPrint(MIN_TRACE, ("IoCreateDevice failed (%x)\n", Status));
         return Status;
     }
-    
+
     Status = IoCreateSymbolicLink(SymbolicName, DeviceName);
 
     if (!NT_SUCCESS(Status))
index 6417da6..bef9c3c 100644 (file)
@@ -424,7 +424,7 @@ proSendPacketToMiniport(PLOGICAL_ADAPTER Adapter, PNDIS_PACKET Packet)
                 NdisStatus = NDIS_STATUS_PENDING;
             }
         }
-        
+
         if (NdisStatus != NDIS_STATUS_PENDING) {
             MiniWorkItemComplete(Adapter, NdisWorkItemSend);
         }
@@ -451,7 +451,7 @@ proSendPacketToMiniport(PLOGICAL_ADAPTER Adapter, PNDIS_PACKET Packet)
                 NdisStatus = NDIS_STATUS_PENDING;
             }
         }
-        
+
         if (NdisStatus != NDIS_STATUS_PENDING) {
             MiniWorkItemComplete(Adapter, NdisWorkItemSend);
         }
@@ -602,7 +602,7 @@ ProSendPackets(
      else
      {
        if(Adapter->NdisMiniportBlock.Flags & NDIS_ATTRIBUTE_DESERIALIZE)
-       {  
+       {
           for (i = 0; i < NumberOfPackets; i++)
           {
              NdisStatus = (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.SendHandler)(
@@ -978,14 +978,14 @@ ndisBindMiniportsToProtocol(OUT PNDIS_STATUS Status, IN PPROTOCOL_BINDING Protoc
 
     if (!NT_SUCCESS(NtStatus))
     {
-        NDIS_DbgPrint(MIN_TRACE, ("Performing global bind for protocol '%wZ'\n", &ProtocolCharacteristics->Name));
+        NDIS_DbgPrint(MID_TRACE, ("Performing global bind for protocol '%wZ'\n", &ProtocolCharacteristics->Name));
         KeyInformation = NULL;
 
         CurrentEntry = AdapterListHead.Flink;
     }
     else
     {
-        NDIS_DbgPrint(MIN_TRACE, ("Performing standard bind for protocol '%wZ'\n", &ProtocolCharacteristics->Name));
+        NDIS_DbgPrint(MID_TRACE, ("Performing standard bind for protocol '%wZ'\n", &ProtocolCharacteristics->Name));
 
         DataPtr = (WCHAR*)KeyInformation->Data;
     }
@@ -1028,7 +1028,7 @@ ndisBindMiniportsToProtocol(OUT PNDIS_STATUS Status, IN PPROTOCOL_BINDING Protoc
             /* It wasn't in the global miniport list, so skip the bind entry */
             goto next;
         }
-        
+
         /* Make sure this device isn't already bound to this protocol */
         if (LocateAdapterBindingByName(Protocol, &DeviceName))
         {
@@ -1074,10 +1074,10 @@ ndisBindMiniportsToProtocol(OUT PNDIS_STATUS Status, IN PPROTOCOL_BINDING Protoc
             if(BindHandler)
             {
                 BindHandler(Status, BindContext, &DeviceName, &RegistryPath, 0);
-                NDIS_DbgPrint(MIN_TRACE, ("%wZ's BindAdapter handler returned 0x%x for %wZ\n", &ProtocolCharacteristics->Name, *Status, &DeviceName));
+                NDIS_DbgPrint(MID_TRACE, ("%wZ's BindAdapter handler returned 0x%x for %wZ\n", &ProtocolCharacteristics->Name, *Status, &DeviceName));
             }
             else
-                NDIS_DbgPrint(MIN_TRACE, ("No protocol bind handler specified\n"));
+                NDIS_DbgPrint(MID_TRACE, ("No protocol bind handler specified\n"));
         }
 
     next:
@@ -1190,7 +1190,7 @@ NdisRegisterProtocol(
 
   InitializeListHead(&Protocol->AdapterListHead);
 
-  /* We must set this before the call to ndisBindMiniportsToProtocol because the protocol's 
+  /* We must set this before the call to ndisBindMiniportsToProtocol because the protocol's
    * BindAdapter handler might need it */
 
   *NdisProtocolHandle = Protocol;
index 252273a..4ec8725 100644 (file)
@@ -311,7 +311,7 @@ VOID
 NTAPI
 PrintTListInfo(IN PSAC_SYSTEM_INFORMATION SacInfo)
 {
-    SAC_DBG(1, "Testing: %d %d %I64d\n",
+    SAC_DBG(SAC_DBG_ENTRY_EXIT, "Testing: %d %d %I64d\n",
             SacInfo->BasicInfo.NumberOfPhysicalPages,
             SacInfo->PerfInfo.AvailablePages,
             SacInfo->TimeInfo.BootTime);
@@ -357,7 +357,7 @@ DoRebootCommand(IN BOOLEAN Reboot)
     LARGE_INTEGER Timeout, TickCount;
     NTSTATUS Status;
     KEVENT Event;
-    SAC_DBG(1, "SAC DoRebootCommand: Entering.\n");
+    SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC DoRebootCommand: Entering.\n");
 
     /* Get the current time now, and setup a timeout in 1 second */
     KeQueryTickCount(&TickCount);
@@ -430,42 +430,42 @@ VOID
 NTAPI
 DoSetTimeCommand(IN PCHAR InputTime)
 {
-    SAC_DBG(1, "Entering\n");
+    SAC_DBG(SAC_DBG_ENTRY_EXIT, "Entering\n");
 }
 
 VOID
 NTAPI
 DoKillCommand(IN PCHAR KillString)
 {
-    SAC_DBG(1, "Entering\n");
+    SAC_DBG(SAC_DBG_ENTRY_EXIT, "Entering\n");
 }
 
 VOID
 NTAPI
 DoLowerPriorityCommand(IN PCHAR PrioString)
 {
-    SAC_DBG(1, "Entering\n");
+    SAC_DBG(SAC_DBG_ENTRY_EXIT, "Entering\n");
 }
 
 VOID
 NTAPI
 DoRaisePriorityCommand(IN PCHAR PrioString)
 {
-    SAC_DBG(1, "Entering\n");
+    SAC_DBG(SAC_DBG_ENTRY_EXIT, "Entering\n");
 }
 
 VOID
 NTAPI
 DoLimitMemoryCommand(IN PCHAR LimitString)
 {
-    SAC_DBG(1, "Entering\n");
+    SAC_DBG(SAC_DBG_ENTRY_EXIT, "Entering\n");
 }
 
 VOID
 NTAPI
 DoCrashCommand(VOID)
 {
-    SAC_DBG(1, "SAC DoCrashCommand: Entering.\n");
+    SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC DoCrashCommand: Entering.\n");
 
     /* Crash the machine */
     KeBugCheckEx(MANUALLY_INITIATED_CRASH, 0, 0, 0, 0);
@@ -476,28 +476,28 @@ VOID
 NTAPI
 DoMachineInformationCommand(VOID)
 {
-    SAC_DBG(1, "Entering\n");
+    SAC_DBG(SAC_DBG_ENTRY_EXIT, "Entering\n");
 }
 
 VOID
 NTAPI
 DoChannelCommand(IN PCHAR ChannelString)
 {
-    SAC_DBG(1, "Entering\n");
+    SAC_DBG(SAC_DBG_ENTRY_EXIT, "Entering\n");
 }
 
 VOID
 NTAPI
 DoCmdCommand(IN PCHAR InputString)
 {
-    SAC_DBG(1, "Entering\n");
+    SAC_DBG(SAC_DBG_ENTRY_EXIT, "Entering\n");
 }
 
 VOID
 NTAPI
 DoLockCommand(VOID)
 {
-    SAC_DBG(1, "Entering\n");
+    SAC_DBG(SAC_DBG_ENTRY_EXIT, "Entering\n");
 }
 
 FORCEINLINE
@@ -556,14 +556,14 @@ VOID
 NTAPI
 DoGetNetInfo(IN BOOLEAN DoPrint)
 {
-    SAC_DBG(1, "Entering\n");
+    SAC_DBG(SAC_DBG_ENTRY_EXIT, "Entering\n");
 }
 
 VOID
 NTAPI
 DoSetIpAddressCommand(IN PCHAR IpString)
 {
-    SAC_DBG(1, "Entering\n");
+    SAC_DBG(SAC_DBG_ENTRY_EXIT, "Entering\n");
 }
 
 VOID
@@ -589,7 +589,7 @@ DoTlistCommand(VOID)
         {
             /* Out of memory, bail out */
             SacPutSimpleMessage(11);
-            SAC_DBG(1, "SAC DoTlistCommand: Exiting.\n");
+            SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC DoTlistCommand: Exiting.\n");
             return;
         }
     }
@@ -613,7 +613,7 @@ DoTlistCommand(VOID)
         {
             /* Out of memory, bail out */
             SacPutSimpleMessage(11);
-            SAC_DBG(1, "SAC DoTlistCommand: Exiting.\n");
+            SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC DoTlistCommand: Exiting.\n");
             return;
         }
 
@@ -637,5 +637,5 @@ DoTlistCommand(VOID)
         PrintTListInfo(GlobalBuffer);
     }
 
-    SAC_DBG(1, "SAC DoTlistCommand: Exiting.\n");
+    SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC DoTlistCommand: Exiting.\n");
 }
index fd73883..ffc4b9d 100644 (file)
@@ -458,7 +458,7 @@ ConMgrProcessInputLine(VOID)
     BOOLEAN EnablePaging;
     NTSTATUS Status;
 
-    SAC_DBG(4, "SAC Input Test: %s\n", InputBuffer);
+    SAC_DBG(SAC_DBG_INIT, "SAC Input Test: %s\n", InputBuffer);
 
     if (!strncmp(InputBuffer, "t", 1))
     {
@@ -508,7 +508,7 @@ ConMgrProcessInputLine(VOID)
                                   sizeof(EnablePaging),
                                   NULL,
                                   0);
-        if (!NT_SUCCESS(Status)) SAC_DBG(4, "SAC Display Log failed.\n");
+        if (!NT_SUCCESS(Status)) SAC_DBG(SAC_DBG_INIT, "SAC Display Log failed.\n");
     }
     else if (!strncmp(InputBuffer, "cmd", 3))
     {
index 43e2292..3dcb70e 100644 (file)
@@ -12,7 +12,7 @@
 
 /* GLOBALS ********************************************************************/
 
-ULONG SACDebug = 0xFFFFFFFF;
+ULONG SACDebug = 0;
 BOOLEAN CommandConsoleLaunchingEnabled;
 BOOLEAN GlobalDataInitialized;
 KMUTEX SACCMDEventInfoMutex;
@@ -100,7 +100,7 @@ NTAPI
 FreeGlobalData(VOID)
 {
     UNICODE_STRING SymbolicLink;
-    SAC_DBG(1, "SAC FreeGlobalData: Entering.\n");
+    SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC FreeGlobalData: Entering.\n");
 
     /* Only free if we allocated */
     if (GlobalDataInitialized)
@@ -139,7 +139,7 @@ FreeGlobalData(VOID)
     }
 
     /* All done */
-    SAC_DBG(1, "SAC FreeGlobalData: Exiting.\n");
+    SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC FreeGlobalData: Exiting.\n");
 }
 
 VOID
@@ -313,7 +313,7 @@ InitializeDeviceData(IN PDEVICE_OBJECT DeviceObject)
     if (!NT_SUCCESS(Status))
     {
         /* For debugging, write down why we failed */
-        SAC_DBG(1, "Exiting (6) with status FALSE\n");
+        SAC_DBG(SAC_DBG_ENTRY_EXIT, "Exiting (6) with status FALSE\n");
         DeviceExtension->PriorityFail = TRUE;
 
         /* Initialize rundown and wait for the thread to do it */
index 06738ea..64fd88e 100644 (file)
@@ -434,7 +434,7 @@ GetRegistryValueBuffer(IN PCWSTR KeyName,
     *Buffer = SacAllocatePool(ResultLength, GLOBAL_BLOCK_TAG);
     if (!*Buffer)
     {
-        SAC_DBG(1, "SAC GetRegistryValueBuffer: failed allocation\n");
+        SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC GetRegistryValueBuffer: failed allocation\n");
         return Status;
     }
 
@@ -497,7 +497,7 @@ SetRegistryValue(IN PCWSTR KeyName,
     if (!NT_SUCCESS(Status))
     {
         /* Print error on failure */
-        SAC_DBG(1, "SAC SetRegistryValue: failed ZwSetValueKey: %X.\n", Status);
+        SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC SetRegistryValue: failed ZwSetValueKey: %X.\n", Status);
     }
 
     /* Close the handle and exit */
index 3e3cfaf..4e954cc 100644 (file)
@@ -245,7 +245,7 @@ DeviceStatusChangeThread(
         if (PortStatus.Change & USB_PORT_STATUS_CONNECT)
         {
             //
-            // Clear Port Connect 
+            // Clear Port Connect
             //
             Status = ClearPortFeature(RootHubDeviceObject, PortId, C_PORT_CONNECTION);
             if (!NT_SUCCESS(Status))
@@ -794,7 +794,7 @@ IsCompositeDevice(
         return TRUE;
     }
 
-    if (DeviceDescriptor->bDeviceClass == 0xEF && 
+    if (DeviceDescriptor->bDeviceClass == 0xEF &&
         DeviceDescriptor->bDeviceSubClass == 0x02 &&
         DeviceDescriptor->bDeviceProtocol == 0x01)
     {
@@ -888,7 +888,7 @@ CreateDeviceIds(
 
         if (DeviceDescriptor->bDeviceClass == 0)
         {
-            Index += swprintf(&Buffer[Index], 
+            Index += swprintf(&Buffer[Index],
                           L"USB\\Class_%02x&SubClass_%02x&Prot_%02x",
                           InterfaceDescriptor->bInterfaceClass, InterfaceDescriptor->bInterfaceSubClass, InterfaceDescriptor->bInterfaceProtocol) + 1;
             Index += swprintf(&Buffer[Index],
@@ -900,7 +900,7 @@ CreateDeviceIds(
         }
         else
         {
-            Index += swprintf(&Buffer[Index], 
+            Index += swprintf(&Buffer[Index],
                           L"USB\\Class_%02x&SubClass_%02x&Prot_%02x",
                           DeviceDescriptor->bDeviceClass, DeviceDescriptor->bDeviceSubClass, DeviceDescriptor->bDeviceProtocol) + 1;
             Index += swprintf(&Buffer[Index],
@@ -964,7 +964,7 @@ CreateDeviceIds(
     // Construct HardwareIds
     //
     Index = 0;
-    Index += swprintf(&Buffer[Index], 
+    Index += swprintf(&Buffer[Index],
                       L"USB\\Vid_%04x&Pid_%04x&Rev_%04x",
                       UsbChildExtension->DeviceDesc.idVendor, UsbChildExtension->DeviceDesc.idProduct, UsbChildExtension->DeviceDesc.bcdDevice) + 1;
     Index += swprintf(&Buffer[Index],
@@ -1146,7 +1146,7 @@ CreateUsbChildDeviceObject(
     RootHubDeviceObject = HubDeviceExtension->RootHubPhysicalDeviceObject;
     HubInterfaceBusContext = HubDeviceExtension->UsbDInterface.BusContext;
     //
-    // Find an empty slot in the child device array 
+    // Find an empty slot in the child device array
     //
     for (ChildDeviceCount = 0; ChildDeviceCount < USB_MAXCHILDREN; ChildDeviceCount++)
     {
@@ -1318,7 +1318,7 @@ CreateUsbChildDeviceObject(
     }
 
     // query device details
-    Status = HubInterface->QueryDeviceInformation(HubInterfaceBusContext, 
+    Status = HubInterface->QueryDeviceInformation(HubInterfaceBusContext,
                                          UsbChildExtension->UsbDeviceHandle,
                                          &UsbChildExtension->DeviceInformation,
                                          sizeof(USB_DEVICE_INFORMATION_0),
@@ -1638,13 +1638,13 @@ USBHUB_FdoStartDevice(
                                                                         sizeof(USB_DEVICE_INFORMATION_0),
                                                                         &Result);
 
-    DPRINT1("Status %x, Result 0x%08lx\n", Status, Result);
-    DPRINT1("InformationLevel %x\n", HubDeviceExtension->DeviceInformation.InformationLevel);
-    DPRINT1("ActualLength %x\n", HubDeviceExtension->DeviceInformation.ActualLength);
-    DPRINT1("PortNumber %x\n", HubDeviceExtension->DeviceInformation.PortNumber);
-    DPRINT1("DeviceDescriptor %x\n", HubDeviceExtension->DeviceInformation.DeviceDescriptor);
-    DPRINT1("HubAddress %x\n", HubDeviceExtension->DeviceInformation.HubAddress);
-    DPRINT1("NumberofPipes %x\n", HubDeviceExtension->DeviceInformation.NumberOfOpenPipes);
+    DPRINT("Status %x, Result 0x%08lx\n", Status, Result);
+    DPRINT("InformationLevel %x\n", HubDeviceExtension->DeviceInformation.InformationLevel);
+    DPRINT("ActualLength %x\n", HubDeviceExtension->DeviceInformation.ActualLength);
+    DPRINT("PortNumber %x\n", HubDeviceExtension->DeviceInformation.PortNumber);
+    DPRINT("DeviceDescriptor %x\n", HubDeviceExtension->DeviceInformation.DeviceDescriptor);
+    DPRINT("HubAddress %x\n", HubDeviceExtension->DeviceInformation.HubAddress);
+    DPRINT("NumberofPipes %x\n", HubDeviceExtension->DeviceInformation.NumberOfOpenPipes);
 
     // Get Root Hubs Device Descriptor
     UsbBuildGetDescriptorRequest(Urb,
@@ -1737,7 +1737,7 @@ USBHUB_FdoStartDevice(
         return STATUS_UNSUCCESSFUL;
     }
 
-    DPRINT1("HubDeviceExtension->UsbExtHubInfo.NumberOfPorts %x\n", HubDeviceExtension->UsbExtHubInfo.NumberOfPorts);
+    DPRINT("HubDeviceExtension->UsbExtHubInfo.NumberOfPorts %x\n", HubDeviceExtension->UsbExtHubInfo.NumberOfPorts);
 
     // Build hub descriptor request
     UsbBuildVendorRequest(Urb,
@@ -2222,7 +2222,7 @@ USBHUB_FdoHandleDeviceControl(
     }
     else
     {
-        DPRINT1("UNIMPLEMENTED FdoHandleDeviceControl IoCtl %x InputBufferLength %x OutputBufferLength %x\n", IoStack->Parameters.DeviceIoControl.IoControlCode, 
+        DPRINT1("UNIMPLEMENTED FdoHandleDeviceControl IoCtl %x InputBufferLength %x OutputBufferLength %x\n", IoStack->Parameters.DeviceIoControl.IoControlCode,
            IoStack->Parameters.DeviceIoControl.InputBufferLength, IoStack->Parameters.DeviceIoControl.OutputBufferLength);
     }
 
index 9900cfe..710ef9f 100644 (file)
@@ -178,7 +178,7 @@ CUSBHardwareDevice::Initialize(
 
     //
     // store device objects
-    // 
+    //
     m_DriverObject = DriverObject;
     m_FunctionalDeviceObject = FunctionalDeviceObject;
     m_PhysicalDeviceObject = PhysicalDeviceObject;
@@ -289,7 +289,7 @@ CUSBHardwareDevice::PnpStart(
                 }
 
                 //
-                // Get controllers capabilities 
+                // Get controllers capabilities
                 //
                 Version = READ_REGISTER_ULONG((PULONG)((ULONG_PTR)ResourceBase + OHCI_REVISION_OFFSET));
 
@@ -380,7 +380,7 @@ CUSBHardwareDevice::PnpStart(
     //
     // Start the controller
     //
-    DPRINT1("Starting Controller\n");
+    DPRINT("Starting Controller\n");
     Status = StartController();
 
     //
@@ -503,7 +503,7 @@ CUSBHardwareDevice::StartController(void)
                 //
                 break;
             }
-        }    
+        }
 
         //
         // if the ownership is still not changed, perform reset
@@ -521,17 +521,17 @@ CUSBHardwareDevice::StartController(void)
     //
     // read contents of control register
     //
-    
+
     Control = (READ_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_CONTROL_OFFSET)) & OHCI_HC_FUNCTIONAL_STATE_MASK);
-    DPRINT1("Controller State %x\n", Control);
-    
+    DPRINT("Controller State %x\n", Control);
+
     switch (Control)
     {
         case OHCI_HC_FUNCTIONAL_STATE_RESET:
             NewControl |= OHCI_HC_FUNCTIONAL_STATE_RESET;
             WaitInMs = 50;
             break;
-        
+
         case OHCI_HC_FUNCTIONAL_STATE_SUSPEND:
         case OHCI_HC_FUNCTIONAL_STATE_RESUME:
             NewControl |= OHCI_HC_FUNCTIONAL_STATE_RESUME;
@@ -555,13 +555,13 @@ retry:
             // delay is 100 ms
             //
             Timeout.QuadPart = WaitInMs;
-            DPRINT1("Waiting %lu milliseconds for controller to transition state\n", Timeout.LowPart);
-            
+            DPRINT("Waiting %lu milliseconds for controller to transition state\n", Timeout.LowPart);
+
             //
             // convert to 100 ns units (absolute)
             //
             Timeout.QuadPart *= -10000;
-            
+
             //
             // perform the wait
             //
@@ -617,9 +617,9 @@ retry:
 
     FrameInterval = ((FrameInterval & OHCI_FRAME_INTERVAL_TOGGLE) ^ OHCI_FRAME_INTERVAL_TOGGLE);
 
-    DPRINT1("FrameInterval %x IntervalValue %x\n", FrameInterval, m_IntervalValue);
+    DPRINT("FrameInterval %x IntervalValue %x\n", FrameInterval, m_IntervalValue);
     FrameInterval |= OHCI_FSMPS(m_IntervalValue) | m_IntervalValue;
-    DPRINT1("Computed FrameInterval %x\n", FrameInterval);
+    DPRINT("Computed FrameInterval %x\n", FrameInterval);
 
     //
     // write frame interval
@@ -627,17 +627,17 @@ retry:
     WRITE_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_FRAME_INTERVAL_OFFSET), FrameInterval);
 
     FrameInterval = READ_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_FRAME_INTERVAL_OFFSET));
-    DPRINT1("Read FrameInterval %x\n", FrameInterval);
+    DPRINT("Read FrameInterval %x\n", FrameInterval);
 
     //
     // 90 % periodic
     //
     Periodic = OHCI_PERIODIC(m_IntervalValue);
     WRITE_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_PERIODIC_START_OFFSET), Periodic);
-    DPRINT1("Computed Periodic Start %x\n", Periodic);
+    DPRINT("Computed Periodic Start %x\n", Periodic);
 
     Periodic = READ_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_PERIODIC_START_OFFSET));
-    DPRINT1("Read Periodic Start %x\n", Periodic);
+    DPRINT("Read Periodic Start %x\n", Periodic);
 
     // Linux does this hack for some bad controllers
     if (!(FrameInterval & 0x3FFF0000) ||
@@ -680,7 +680,7 @@ retry:
         m_NumberOfPorts = OHCI_RH_GET_PORT_COUNT(Descriptor);
     } while (m_NumberOfPorts == 0);
 
-    DPRINT1("NumberOfPorts %lu\n", m_NumberOfPorts);
+    DPRINT("NumberOfPorts %lu\n", m_NumberOfPorts);
     ASSERT(m_NumberOfPorts < OHCI_MAX_PORT_COUNT);
 
     //
@@ -701,7 +701,7 @@ retry:
     //
     // write the configuration back
     //
-    DPRINT1("Descriptor A: %x\n", Descriptor);
+    DPRINT("Descriptor A: %x\n", Descriptor);
     WRITE_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_RH_DESCRIPTOR_A_OFFSET), Descriptor);
 
     //
@@ -720,7 +720,7 @@ retry:
     //
     // write the configuration back
     //
-    DPRINT1("Descriptor B: %x\n", Descriptor);
+    DPRINT("Descriptor B: %x\n", Descriptor);
     WRITE_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_RH_DESCRIPTOR_B_OFFSET), Descriptor);
 
     //
@@ -730,7 +730,7 @@ retry:
     KeStallExecutionProcessor(10);
     Control = READ_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_HCCA_OFFSET));
     ASSERT((m_HCCAPhysicalAddress.LowPart & Control) == m_HCCAPhysicalAddress.LowPart);
-    DPRINT1("HCCA: %x Alignment mask: %x\n", m_HCCAPhysicalAddress.LowPart, Control);
+    DPRINT("HCCA: %x Alignment mask: %x\n", m_HCCAPhysicalAddress.LowPart, Control);
 
     //
     // write address of HCCA
@@ -770,12 +770,12 @@ retry:
     //
     ASSERT((Control & OHCI_HC_FUNCTIONAL_STATE_MASK) == OHCI_HC_FUNCTIONAL_STATE_OPERATIONAL);
     ASSERT((Control & OHCI_ENABLE_LIST) == OHCI_ENABLE_LIST);
-    DPRINT1("Control %x\n", Control);
+    DPRINT("Control %x\n", Control);
 
     //
     // done
     //
-    DPRINT1("OHCI controller is operational\n");
+    DPRINT("OHCI controller is operational\n");
     return STATUS_SUCCESS;
 }
 
@@ -1152,7 +1152,7 @@ CUSBHardwareDevice::ClearPortStatus(
     //
     // re-enable root hub change
     //
-    DPRINT1("Enabling status change\n");
+    DPRINT("Enabling status change\n");
     WRITE_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_INTERRUPT_ENABLE_OFFSET), OHCI_ROOT_HUB_STATUS_CHANGE);
 
     return STATUS_SUCCESS;
@@ -1206,7 +1206,7 @@ CUSBHardwareDevice::SetPortFeature(
         // delay is multiplied by 2 ms
         //
         Timeout.QuadPart *= 2;
-        DPRINT1("Waiting %lu milliseconds for port power up\n", Timeout.LowPart);
+        DPRINT("Waiting %lu milliseconds for port power up\n", Timeout.LowPart);
 
         //
         // convert to 100 ns units (absolute)
@@ -1322,9 +1322,9 @@ InterruptServiceRoutine(
         // the interrupt was not caused by DoneHead update
         // check if something important happened
         //
-        DPRINT("InterruptStatus %x  InterruptEnable %x\n", READ_REGISTER_ULONG((PULONG)((PUCHAR)This->m_Base + OHCI_INTERRUPT_STATUS_OFFSET)), 
+        DPRINT("InterruptStatus %x  InterruptEnable %x\n", READ_REGISTER_ULONG((PULONG)((PUCHAR)This->m_Base + OHCI_INTERRUPT_STATUS_OFFSET)),
                                                             READ_REGISTER_ULONG((PULONG)((PUCHAR)This->m_Base + OHCI_INTERRUPT_ENABLE_OFFSET)));
-        Status = READ_REGISTER_ULONG((PULONG)((PUCHAR)This->m_Base + OHCI_INTERRUPT_STATUS_OFFSET)) & READ_REGISTER_ULONG((PULONG)((PUCHAR)This->m_Base + OHCI_INTERRUPT_ENABLE_OFFSET)) & (~OHCI_WRITEBACK_DONE_HEAD); 
+        Status = READ_REGISTER_ULONG((PULONG)((PUCHAR)This->m_Base + OHCI_INTERRUPT_STATUS_OFFSET)) & READ_REGISTER_ULONG((PULONG)((PUCHAR)This->m_Base + OHCI_INTERRUPT_ENABLE_OFFSET)) & (~OHCI_WRITEBACK_DONE_HEAD);
         if (Status == 0)
         {
             //
@@ -1387,7 +1387,7 @@ InterruptServiceRoutine(
         WRITE_REGISTER_ULONG((PULONG)((PUCHAR)This->m_Base + OHCI_CONTROL_OFFSET), OHCI_HC_FUNCTIONAL_STATE_RESET);
     }
 
-    if (Status & OHCI_ROOT_HUB_STATUS_CHANGE) 
+    if (Status & OHCI_ROOT_HUB_STATUS_CHANGE)
     {
         //
         // disable interrupt as it will fire untill the port has been reset
index 5b7cac2..da2d414 100644 (file)
@@ -822,7 +822,7 @@ NTAPI
 HalpDispatchPower(IN PDEVICE_OBJECT DeviceObject,
                   IN PIRP Irp)
 {
-    DPRINT1("HAL: PnP Driver Power!\n");
+    DPRINT("HAL: PnP Driver Power!\n");
     return STATUS_SUCCESS;
 }
 
index 6c25d3e..c950a11 100644 (file)
@@ -713,14 +713,14 @@ HalpDispatchPnp(IN PDEVICE_OBJECT DeviceObject,
             case IRP_MN_START_DEVICE:
 
                 /* We only care about a PCI PDO */
-                DPRINT1("Start device received\n");
+                DPRINT("Start device received\n");
                 /* Complete the IRP normally */
                 break;
 
             case IRP_MN_REMOVE_DEVICE:
 
                 /* Check if this is a PCI device */
-                DPRINT1("Remove device received\n");
+                DPRINT("Remove device received\n");
 
                 /* We're done */
                 Status = STATUS_SUCCESS;
@@ -729,7 +729,7 @@ HalpDispatchPnp(IN PDEVICE_OBJECT DeviceObject,
             case IRP_MN_SURPRISE_REMOVAL:
 
                 /* Inherit whatever status we had */
-                DPRINT1("Surprise removal IRP\n");
+                DPRINT("Surprise removal IRP\n");
                 Status = Irp->IoStatus.Status;
                 break;
 
@@ -790,7 +790,7 @@ HalpDispatchPnp(IN PDEVICE_OBJECT DeviceObject,
             default:
 
                 /* We don't handle anything else, so inherit the old state */
-                DPRINT("Illegal IRP: %lx\n", Minor);
+                DPRINT1("Illegal IRP: %lx\n", Minor);
                 Status = Irp->IoStatus.Status;
                 break;
         }
index 06099bb..d304100 100644 (file)
@@ -90,6 +90,7 @@ extern "C" {
 #define FSCTL_READ_COMPRESSION       CTL_CODE(FILE_DEVICE_FILE_SYSTEM,17,METHOD_NEITHER,FILE_READ_DATA)
 #define FSCTL_WRITE_COMPRESSION      CTL_CODE(FILE_DEVICE_FILE_SYSTEM,18,METHOD_NEITHER,FILE_WRITE_DATA)
 #define FSCTL_GET_NTFS_VOLUME_DATA   CTL_CODE(FILE_DEVICE_FILE_SYSTEM,25,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define FSCTL_GET_NTFS_FILE_RECORD   CTL_CODE(FILE_DEVICE_FILE_SYSTEM,26,METHOD_BUFFERED,FILE_ANY_ACCESS)
 #define FSCTL_GET_VOLUME_BITMAP      CTL_CODE(FILE_DEVICE_FILE_SYSTEM,27,METHOD_NEITHER,FILE_ANY_ACCESS)
 #define FSCTL_GET_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM,28,METHOD_NEITHER,FILE_ANY_ACCESS)
 #define FSCTL_MOVE_FILE              CTL_CODE(FILE_DEVICE_FILE_SYSTEM,29,METHOD_BUFFERED,FILE_ANY_ACCESS)
@@ -556,6 +557,19 @@ typedef struct {
   LARGE_INTEGER MftZoneStart;
   LARGE_INTEGER MftZoneEnd;
 } NTFS_VOLUME_DATA_BUFFER, *PNTFS_VOLUME_DATA_BUFFER;
+typedef struct {
+  ULONG ByteCount;
+  USHORT MajorVersion;
+  USHORT MinorVersion;
+} NTFS_EXTENDED_VOLUME_DATA, *PNTFS_EXTENDED_VOLUME_DATA;
+typedef struct {
+  LARGE_INTEGER FileReferenceNumber;
+} NTFS_FILE_RECORD_INPUT_BUFFER, *PNTFS_FILE_RECORD_INPUT_BUFFER;
+typedef struct {
+  LARGE_INTEGER FileReferenceNumber;
+  ULONG FileRecordLength;
+  UCHAR FileRecordBuffer[1];
+} NTFS_FILE_RECORD_OUTPUT_BUFFER, *PNTFS_FILE_RECORD_OUTPUT_BUFFER;
 
 #define IsRecognizedPartition(t)\
   (((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT_12))||\
index 16c32f9..942ca8b 100644 (file)
@@ -83,7 +83,8 @@ BOOL WINAPI StrRetToStrNW(LPWSTR,DWORD,LPSTRRET,const ITEMIDLIST*);
 #define RFF_NOLABEL        0x08
 #define RFF_NOSEPARATEMEM  0x20  /* NT only */
 
-#define DE_SAMEFILE 0x71
+#define DE_SAMEFILE     0x71
+#define DE_DESTSAMETREE 0x7D
 
 /* RunFileFlg notification structure */
 typedef struct
index 6110806..f82b6b7 100644 (file)
@@ -22,8 +22,12 @@ HvpWriteLog(
    ULONG LastIndex;
    PVOID BlockPtr;
    BOOLEAN Success;
+   static ULONG PrintCount = 0;
 
-   UNIMPLEMENTED;
+   if (PrintCount++ == 0)
+   {
+      UNIMPLEMENTED;
+   }
    return TRUE;
 
    ASSERT(RegistryHive->ReadOnly == FALSE);
index 0a1be71..111ce31 100644 (file)
@@ -312,7 +312,7 @@ CHubController::QueryStatusChangeEndpoint(
     // Get the number of ports and check each one for device connected
     //
     m_Hardware->GetDeviceDetails(NULL, NULL, &PortCount, NULL);
-    DPRINT1("[%s] SCE Request %p TransferBufferLength %lu Flags %x MDL %p\n", m_USBType, Urb->UrbBulkOrInterruptTransfer.TransferBuffer, Urb->UrbBulkOrInterruptTransfer.TransferBufferLength, Urb->UrbBulkOrInterruptTransfer.TransferFlags, Urb->UrbBulkOrInterruptTransfer.TransferBufferMDL);
+    DPRINT("[%s] SCE Request %p TransferBufferLength %lu Flags %x MDL %p\n", m_USBType, Urb->UrbBulkOrInterruptTransfer.TransferBuffer, Urb->UrbBulkOrInterruptTransfer.TransferBufferLength, Urb->UrbBulkOrInterruptTransfer.TransferFlags, Urb->UrbBulkOrInterruptTransfer.TransferBufferMDL);
 
     TransferBuffer = (PUCHAR)Urb->UrbBulkOrInterruptTransfer.TransferBuffer;
 
@@ -323,7 +323,7 @@ CHubController::QueryStatusChangeEndpoint(
     {
         m_Hardware->GetPortStatus(PortId, &PortStatus, &PortChange);
 
-        DPRINT1("[%s] Port %d: Status %x, Change %x\n", m_USBType, PortId, PortStatus, PortChange);
+        DPRINT("[%s] Port %d: Status %x, Change %x\n", m_USBType, PortId, PortStatus, PortChange);
 
 
         //
@@ -3935,7 +3935,7 @@ CHubController::CreatePDO(
         }
     }
 
-    DPRINT1("CHubController::CreatePDO: DeviceName %wZ\n", &DeviceName);
+    DPRINT("CHubController::CreatePDO: DeviceName %wZ\n", &DeviceName);
 
     //
     // fixup device stack voodoo part #1
index 8f51eb1..f5dc0f1 100644 (file)
@@ -30,7 +30,7 @@ USBLIB_AddDevice(
     NTSTATUS Status;
     PHCDCONTROLLER HcdController;
 
-    DPRINT1("USBLIB_AddDevice\n");
+    DPRINT("USBLIB_AddDevice\n");
 
     /* first create the controller object */
     Status = CreateHCDController(&HcdController);
@@ -67,7 +67,7 @@ extern
 NTSTATUS
 NTAPI
 USBLIB_Dispatch(
-    PDEVICE_OBJECT DeviceObject, 
+    PDEVICE_OBJECT DeviceObject,
     PIRP Irp)
 {
     PCOMMON_DEVICE_EXTENSION DeviceExtension;
@@ -137,4 +137,4 @@ USBLIB_Dispatch(
 
     return Status;
 }
-}
\ No newline at end of file
+}
index 6477408..62757e9 100644 (file)
@@ -987,16 +987,10 @@ clean_up:
     ext2_free_block_bitmap(&FileSys);
     ext2_free_inode_bitmap(&FileSys);
 
-    if (!bRet)
+    if(bLocked)
     {
         Ext2DisMountVolume(&FileSys);
-    }
-    else
-    {
-        if(bLocked)
-        {
-            Ext2UnLockVolume(&FileSys);
-        }
+        Ext2UnLockVolume(&FileSys);
     }
 
     Ext2CloseDevice(&FileSys);
index eb4f60a..27651da 100644 (file)
@@ -36,7 +36,7 @@ LsaDeregisterLogonProcess(HANDLE LsaHandle)
     LSA_API_MSG ApiMessage;
     NTSTATUS Status;
 
-    DPRINT1("LsaDeregisterLogonProcess()\n");
+    DPRINT("LsaDeregisterLogonProcess()\n");
 
     ApiMessage.ApiNumber = LSASS_REQUEST_DEREGISTER_LOGON_PROCESS;
     ApiMessage.h.u1.s1.DataLength = LSA_PORT_DATA_SIZE(ApiMessage.DeregisterLogonProcess);
@@ -60,7 +60,7 @@ LsaDeregisterLogonProcess(HANDLE LsaHandle)
 
     NtClose(LsaHandle);
 
-    DPRINT1("LsaDeregisterLogonProcess() done (Status 0x%08lx)\n", Status);
+    DPRINT("LsaDeregisterLogonProcess() done (Status 0x%08lx)\n", Status);
 
     return Status;
 }
@@ -79,7 +79,7 @@ LsaConnectUntrusted(PHANDLE LsaHandle)
     ULONG ConnectInfoLength = sizeof(ConnectInfo);
     NTSTATUS Status;
 
-    DPRINT1("LsaConnectUntrusted(%p)\n", LsaHandle);
+    DPRINT("LsaConnectUntrusted(%p)\n", LsaHandle);
 
     RtlInitUnicodeString(&PortName,
                          L"\\LsaAuthenticationPort");
@@ -311,7 +311,7 @@ LsaRegisterLogonProcess(PLSA_STRING LsaLogonProcessName,
     ULONG ConnectInfoLength = sizeof(ConnectInfo);
     NTSTATUS Status;
 
-    DPRINT1("LsaRegisterLogonProcess()\n");
+    DPRINT("LsaRegisterLogonProcess()\n");
 
     /* Check the logon process name length */
     if (LsaLogonProcessName->Length > LSASS_MAX_LOGON_PROCESS_NAME_LENGTH)
index 04f8e78..5880dda 100644 (file)
@@ -668,52 +668,52 @@ ExpInitSystemPhase1(VOID)
         DPRINT1("Executive: Event Pair initialization failed\n");
         return FALSE;
     }
-    
+
     /* Initialize mutants */
     if (ExpInitializeMutantImplementation() == FALSE)
     {
         DPRINT1("Executive: Mutant initialization failed\n");
         return FALSE;
     }
-    
+
     /* Initialize callbacks */
     if (ExpInitializeCallbacks() == FALSE)
     {
         DPRINT1("Executive: Callback initialization failed\n");
         return FALSE;
     }
-    
+
     /* Initialize semaphores */
     if (ExpInitializeSemaphoreImplementation() == FALSE)
     {
         DPRINT1("Executive: Semaphore initialization failed\n");
         return FALSE;
     }
-    
+
     /* Initialize timers */
     if (ExpInitializeTimerImplementation() == FALSE)
     {
         DPRINT1("Executive: Timer initialization failed\n");
         return FALSE;
     }
-    
+
     /* Initialize profiling */
     if (ExpInitializeProfileImplementation() == FALSE)
     {
         DPRINT1("Executive: Profile initialization failed\n");
         return FALSE;
     }
-    
+
     /* Initialize UUIDs */
     ExpInitUuids();
-    
+
     /* Initialize keyed events */
     if (ExpInitializeKeyedEventImplementation() == FALSE)
     {
         DPRINT1("Executive: Keyed event initialization failed\n");
         return FALSE;
     }
-    
+
     /* Initialize Win32K */
     if (ExpWin32kInit() == FALSE)
     {
@@ -1956,7 +1956,7 @@ Phase1InitializationDiscard(IN PVOID Context)
     InbvEnableDisplayString(TRUE);
 
     /* Launch initial process */
-    DPRINT1("Free non-cache pages: %lx\n", MmAvailablePages + MiMemoryConsumers[MC_CACHE].PagesUsed);
+    DPRINT("Free non-cache pages: %lx\n", MmAvailablePages + MiMemoryConsumers[MC_CACHE].PagesUsed);
     ProcessInfo = &InitBuffer->ProcessInfo;
     ExpLoadInitialProcess(InitBuffer, &ProcessParameters, &Environment);
 
@@ -1998,7 +1998,7 @@ Phase1InitializationDiscard(IN PVOID Context)
 
     /* Free the boot buffer */
     ExFreePoolWithTag(InitBuffer, TAG_INIT);
-    DPRINT1("Free non-cache pages: %lx\n", MmAvailablePages + MiMemoryConsumers[MC_CACHE].PagesUsed);
+    DPRINT("Free non-cache pages: %lx\n", MmAvailablePages + MiMemoryConsumers[MC_CACHE].PagesUsed);
 }
 
 VOID
index 40736b2..6022f27 100644 (file)
@@ -10,6 +10,8 @@
 /* INCLUDES *****************************************************************/
 
 #include <ntoskrnl.h>
+
+#define NDEBUG
 #include <debug.h>
 
 /* FUNCTIONS *****************************************************************/
@@ -22,7 +24,7 @@ NTAPI
 NtShutdownSystem(IN SHUTDOWN_ACTION Action)
 {
     POWER_ACTION PowerAction;
-    
+
     /* Convert to power action */
     if (Action == ShutdownNoReboot)
     {
@@ -40,9 +42,9 @@ NtShutdownSystem(IN SHUTDOWN_ACTION Action)
     {
         return STATUS_INVALID_PARAMETER;
     }
-    
+
     /* Now call the power manager */
-    DPRINT1("Setting state to: %lx\n", PowerAction);
+    DPRINT("Setting state to: %lx\n", PowerAction);
     return NtSetSystemPowerState(PowerAction,
                                  PowerSystemSleeping3,
                                  POWER_ACTION_OVERRIDE_APPS |
index c56359b..8f4678d 100644 (file)
@@ -383,7 +383,7 @@ IopCreateArcNamesCd(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
                 /* Create symbolic link */
                 IoAssignArcName(&ArcNameStringW, &DeviceStringW);
                 RtlFreeUnicodeString(&ArcNameStringW);
-                DPRINT1("Boot device found\n");
+                DPRINT("Boot device found\n");
             }
 
             /* And quit, whatever happens */
index 3fe5e6e..811513d 100644 (file)
@@ -390,7 +390,7 @@ IopInstallCriticalDevice(PDEVICE_NODE DeviceNode)
                             continue;
                         }
 
-                        DPRINT1("Installed service '%S' for critical device '%wZ'\n", PartialInfo->Data, &ChildIdNameU);
+                        DPRINT("Installed service '%S' for critical device '%wZ'\n", PartialInfo->Data, &ChildIdNameU);
                     }
                     else
                     {
@@ -3212,7 +3212,7 @@ IopIsFirmwareMapperDisabled(VOID)
        DPRINT1("ZwOpenKey(%wZ) failed with status 0x%08lx\n", &KeyPathU, Status);
    }
 
-   DPRINT1("Firmware mapper is %s\n", KeyValue != 0 ? "disabled" : "enabled");
+   DPRINT("Firmware mapper is %s\n", KeyValue != 0 ? "disabled" : "enabled");
 
    return (KeyValue != 0) ? TRUE : FALSE;
 }
index 206fccf..3f324d9 100644 (file)
@@ -350,7 +350,7 @@ IoReportDetectedDevice(IN PDRIVER_OBJECT DriverObject,
     IopQueueTargetDeviceEvent(&GUID_DEVICE_ARRIVAL,
                               &DeviceNode->InstancePath);
 
-    DPRINT1("Reported device: %S (%wZ)\n", HardwareId, &DeviceNode->InstancePath);
+    DPRINT("Reported device: %S (%wZ)\n", HardwareId, &DeviceNode->InstancePath);
 
     /* Return the PDO */
     if (DeviceObject) *DeviceObject = Pdo;
index 42e6cfe..85ae784 100644 (file)
@@ -132,11 +132,12 @@ IopFindPortResource(
         }
         else
         {
-            DPRINT1("Satisfying port requirement with 0x%I64x (length: 0x%x)\n", Start, CmDesc->u.Port.Length);
+            DPRINT("Satisfying port requirement with 0x%I64x (length: 0x%x)\n", Start, CmDesc->u.Port.Length);
             return TRUE;
         }
    }
 
+   DPRINT1("IopFindPortResource failed!\n");
    return FALSE;
 }
 
index 9cc8727..63f8f98 100644 (file)
@@ -47,7 +47,7 @@ MmZeroPageThread(VOID)
     /* Get the discardable sections to free them */
     MiFindInitializationCode(&StartAddress, &EndAddress);
     if (StartAddress) MiFreeInitializationCode(StartAddress, EndAddress);
-    DPRINT1("Free non-cache pages: %lx\n", MmAvailablePages + MiMemoryConsumers[MC_CACHE].PagesUsed);
+    DPRINT("Free non-cache pages: %lx\n", MmAvailablePages + MiMemoryConsumers[MC_CACHE].PagesUsed);
 
     /* Set our priority to 0 */
     Thread->BasePriority = 0;
index ea2557b..be8e956 100644 (file)
@@ -191,7 +191,7 @@ PopShutdownSystem(IN POWER_ACTION SystemAction)
     /* Note should notify caller of NtPowerInformation(PowerShutdownNotification) */
 
     /* Unload symbols */
-    DPRINT1("It's the final countdown...%lx\n", SystemAction);
+    DPRINT("It's the final countdown...%lx\n", SystemAction);
     DbgUnLoadImageSymbols(NULL, (PVOID)-1, 0);
 
     /* Run the thread on the boot processor */
@@ -264,15 +264,15 @@ PopGracefulShutdown(IN PVOID Context)
     }
 
     /* First, the HAL handles any "end of boot" special functionality */
-    DPRINT1("HAL shutting down\n");
+    DPRINT("HAL shutting down\n");
     HalEndOfBoot();
 
     /* In this step, the I/O manager does first-chance shutdown notification */
-    DPRINT1("I/O manager shutting down in phase 0\n");
+    DPRINT("I/O manager shutting down in phase 0\n");
     IoShutdownSystem(0);
 
     /* In this step, all workers are killed and hives are flushed */
-    DPRINT1("Configuration Manager shutting down\n");
+    DPRINT("Configuration Manager shutting down\n");
     CmShutdownSystem();
 
     /* Note that modified pages should be written here (MiShutdownSystem) */
@@ -283,18 +283,18 @@ PopGracefulShutdown(IN PVOID Context)
 #endif
 
     /* In this step, the I/O manager does last-chance shutdown notification */
-    DPRINT1("I/O manager shutting down in phase 1\n");
+    DPRINT("I/O manager shutting down in phase 1\n");
     IoShutdownSystem(1);
     CcWaitForCurrentLazyWriterActivity();
 
     /* Note that here, we should broadcast the power IRP to devices */
 
     /* In this step, the HAL disables any wake timers */
-    DPRINT1("Disabling wake timers\n");
+    DPRINT("Disabling wake timers\n");
     HalSetWakeEnable(FALSE);
 
     /* And finally the power request is sent */
-    DPRINT1("Taking the system down\n");
+    DPRINT("Taking the system down\n");
     PopShutdownSystem(PopAction.Action);
 }
 
index 053cefb..22f4f8c 100644 (file)
@@ -20,7 +20,7 @@ typedef struct _POP_FLUSH_VOLUME
     LONG Count;
     KEVENT Wait;
 } POP_FLUSH_VOLUME, *PPOP_FLUSH_VOLUME;
+
 ULONG PopFlushPolicy = 0;
 
 KGUARDED_MUTEX PopVolumeLock;
@@ -56,7 +56,7 @@ PopGetDope(IN PDEVICE_OBJECT DeviceObject)
 
     /* Make sure only one caller can assign dope to a device */
     KeAcquireSpinLock(&PopDopeGlobalLock, &OldIrql);
-    
+
     /* Make sure the device still has no dope */
     if (!DeviceExtension->Dope)
     {
@@ -67,7 +67,7 @@ PopGetDope(IN PDEVICE_OBJECT DeviceObject)
 
     /* Allow other dope transactions now */
     KeReleaseSpinLock(&PopDopeGlobalLock, OldIrql);
-    
+
     /* Check if someone other than us already assigned the dope, so free ours */
     if (Dope) ExFreePoolWithTag(Dope, 'Dope');
 
@@ -92,7 +92,7 @@ PoVolumeDevice(IN PDEVICE_OBJECT DeviceObject)
 
         /* Add this volume into the list of power-manager volumes */
         if (!Dope->Volume.Flink) InsertTailList(&PopVolumeDevices, &Dope->Volume);
-        
+
         /* Allow flushes to go through */
         KeReleaseGuardedMutex(&PopVolumeLock);
     }
@@ -167,10 +167,10 @@ PopFlushVolumeWorker(IN PVOID Context)
         /* Grab the next (ie: current) entry and remove it */
         NextEntry = FlushContext->List.Flink;
         RemoveEntryList(NextEntry);
-        
+
         /* Add it back on the volume list */
         InsertTailList(&PopVolumeDevices, NextEntry);
-        
+
         /* Done touching the volume list */
         KeReleaseGuardedMutex(&PopVolumeLock);
 
@@ -185,7 +185,7 @@ PopFlushVolumeWorker(IN PVOID Context)
         if ((NT_SUCCESS(Status)) && (NameInfo->Name.Buffer))
         {
             /* Open the volume */
-            DPRINT1("Opening: %wZ\n", &NameInfo->Name);
+            DPRINT("Opening: %wZ\n", &NameInfo->Name);
             InitializeObjectAttributes(&ObjectAttributes,
                                        &NameInfo->Name,
                                        OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE,
@@ -205,7 +205,7 @@ PopFlushVolumeWorker(IN PVOID Context)
             if (NT_SUCCESS(Status))
             {
                 /* Flush it and close it */
-                DPRINT1("Sending flush to: %p\n", VolumeHandle);
+                DPRINT("Sending flush to: %p\n", VolumeHandle);
                 ZwFlushBuffersFile(VolumeHandle, &IoStatusBlock);
                 ZwClose(VolumeHandle);
             }
@@ -232,7 +232,7 @@ PopFlushVolumes(IN BOOLEAN ShuttingDown)
     OBJECT_ATTRIBUTES ObjectAttributes;
     HANDLE RegistryHandle;
     PLIST_ENTRY NextEntry;
-    PDEVICE_OBJECT_POWER_EXTENSION  Dope;    
+    PDEVICE_OBJECT_POWER_EXTENSION  Dope;
     ULONG VolumeCount = 0;
     NTSTATUS Status;
     HANDLE ThreadHandle;
@@ -247,7 +247,7 @@ PopFlushVolumes(IN BOOLEAN ShuttingDown)
     if ((FlushPolicy & 1))
     {
         /* Registry flush requested, so open it */
-        DPRINT1("Opening registry\n");
+        DPRINT("Opening registry\n");
         InitializeObjectAttributes(&ObjectAttributes,
                                    &RegistryName,
                                    OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE,
@@ -257,7 +257,7 @@ PopFlushVolumes(IN BOOLEAN ShuttingDown)
         if (NT_SUCCESS(Status))
         {
             /* Flush the registry */
-            DPRINT1("Flushing registry\n");
+            DPRINT("Flushing registry\n");
             ZwFlushKey(RegistryHandle);
             ZwClose(RegistryHandle);
         }
@@ -265,14 +265,14 @@ PopFlushVolumes(IN BOOLEAN ShuttingDown)
 
     /* Serialize with other flushes */
     KeAcquireGuardedMutex(&PopVolumeLock);
-    
+
     /* Scan the volume list */
     NextEntry = PopVolumeDevices.Flink;
     while (NextEntry != &PopVolumeDevices)
     {
         /* Get the dope from the link */
         Dope = CONTAINING_RECORD(NextEntry, DEVICE_OBJECT_POWER_EXTENSION, Volume);
-        
+
         /* Grab the next entry now, since we'll be modifying the list */
         NextEntry = NextEntry->Flink;
 
@@ -290,7 +290,7 @@ PopFlushVolumes(IN BOOLEAN ShuttingDown)
         /* Remove it from the dope and add it to the flush context list */
         RemoveEntryList(&Dope->Volume);
         InsertTailList(&FlushContext.List, &Dope->Volume);
-        
+
         /* Next */
         VolumeCount++;
     }
@@ -321,13 +321,13 @@ PopFlushVolumes(IN BOOLEAN ShuttingDown)
     /* We will ourselves become a flusher thread */
     FlushContext.Count = 1;
     ThreadCount--;
-    
+
     /* Look for any extra ones we might need */
     while (ThreadCount > 0)
     {
         /* Create a new one */
         ThreadCount--;
-        DPRINT1("Creating flush thread\n");
+        DPRINT("Creating flush thread\n");
         Status = PsCreateSystemThread(&ThreadHandle,
                                       THREAD_ALL_ACCESS,
                                       &ObjectAttributes,
@@ -347,13 +347,13 @@ PopFlushVolumes(IN BOOLEAN ShuttingDown)
     KeReleaseGuardedMutex(&PopVolumeLock);
 
     /* Enter the flush work */
-    DPRINT1("Local flush\n");
+    DPRINT("Local flush\n");
     PopFlushVolumeWorker(&FlushContext);
-    
+
     /* Wait for all flushes to be over */
-    DPRINT1("Waiting for flushes\n");
+    DPRINT("Waiting for flushes\n");
     KeWaitForSingleObject(&FlushContext.Wait, Executive, KernelMode, FALSE, NULL);
-    DPRINT1("Flushes have completed\n");
+    DPRINT("Flushes have completed\n");
 }
 
 VOID
index cb7d2cc..758eb9d 100644 (file)
@@ -46,10 +46,10 @@ PopRequestPowerIrpCompletion(IN PDEVICE_OBJECT DeviceObject,
 {
     PIO_STACK_LOCATION Stack;
     PREQUEST_POWER_ITEM RequestPowerItem;
-  
+
     Stack = IoGetNextIrpStackLocation(Irp);
     RequestPowerItem = (PREQUEST_POWER_ITEM)Context;
-  
+
     RequestPowerItem->CompletionRoutine(DeviceObject,
                                         Stack->MinorFunction,
                                         RequestPowerItem->PowerState,
@@ -161,12 +161,12 @@ PopQuerySystemPowerStateTraverse(PDEVICE_NODE DeviceNode,
 {
     PPOWER_STATE_TRAVERSE_CONTEXT PowerStateContext = Context;
     NTSTATUS Status;
-    
+
     DPRINT("PopQuerySystemPowerStateTraverse(%p, %p)\n", DeviceNode, Context);
-    
+
     if (DeviceNode == IopRootDeviceNode)
         return STATUS_SUCCESS;
-    
+
     if (DeviceNode->Flags & DNF_LEGACY_DRIVER)
         return STATUS_SUCCESS;
 
@@ -177,7 +177,7 @@ PopQuerySystemPowerStateTraverse(PDEVICE_NODE DeviceNode,
     {
         DPRINT1("Device '%wZ' failed IRP_MN_QUERY_POWER\n", &DeviceNode->InstancePath);
     }
-    
+
 #if 0
     return Status;
 #else
@@ -191,15 +191,15 @@ PopSetSystemPowerStateTraverse(PDEVICE_NODE DeviceNode,
 {
     PPOWER_STATE_TRAVERSE_CONTEXT PowerStateContext = Context;
     NTSTATUS Status;
-    
+
     DPRINT("PopSetSystemPowerStateTraverse(%p, %p)\n", DeviceNode, Context);
-    
+
     if (DeviceNode == IopRootDeviceNode)
         return STATUS_SUCCESS;
-    
+
     if (DeviceNode->PhysicalDeviceObject == PowerStateContext->PowerDevice)
         return STATUS_SUCCESS;
-    
+
     if (DeviceNode->Flags & DNF_LEGACY_DRIVER)
         return STATUS_SUCCESS;
 
@@ -210,7 +210,7 @@ PopSetSystemPowerStateTraverse(PDEVICE_NODE DeviceNode,
     {
         DPRINT1("Device '%wZ' failed IRP_MN_SET_POWER\n", &DeviceNode->InstancePath);
     }
-    
+
 #if 0
     return Status;
 #else
@@ -227,7 +227,7 @@ PopSetSystemPowerState(SYSTEM_POWER_STATE PowerState, POWER_ACTION PowerAction)
     NTSTATUS Status;
     DEVICETREE_TRAVERSE_CONTEXT Context;
     POWER_STATE_TRAVERSE_CONTEXT PowerContext;
-    
+
     Status = IopGetSystemPowerDeviceObject(&DeviceObject);
     if (!NT_SUCCESS(Status))
     {
@@ -243,34 +243,34 @@ PopSetSystemPowerState(SYSTEM_POWER_STATE PowerState, POWER_ACTION PowerAction)
             return STATUS_UNSUCCESSFUL;
         }
     }
-    
+
     /* Set up context */
     PowerContext.PowerAction = PowerAction;
     PowerContext.SystemPowerState = PowerState;
     PowerContext.PowerDevice = Fdo;
-    
+
     /* Query for system power change */
     IopInitDeviceTreeTraverseContext(&Context,
                                      IopRootDeviceNode,
                                      PopQuerySystemPowerStateTraverse,
                                      &PowerContext);
-    
+
     Status = IopTraverseDeviceTree(&Context);
     if (!NT_SUCCESS(Status))
     {
         DPRINT1("Query system power state failed; changing state anyway\n");
     }
-    
+
     /* Set system power change */
     IopInitDeviceTreeTraverseContext(&Context,
                                      IopRootDeviceNode,
                                      PopSetSystemPowerStateTraverse,
                                      &PowerContext);
-    
+
     IopTraverseDeviceTree(&Context);
 
     if (!PopAcpiPresent) return STATUS_NOT_IMPLEMENTED;
-    
+
     if (Fdo != NULL)
     {
         if (PowerAction != PowerActionShutdownReset)
@@ -303,7 +303,7 @@ PoInitSystem(IN ULONG BootPhase)
                                        PopAddRemoveSysCapsCallback,
                                        NULL,
                                        &NotificationEntry);
-        
+
         /* Register lid notification */
         IoRegisterPlugPlayNotification(EventCategoryDeviceInterfaceChange,
                                        PNPNOTIFY_DEVICE_INTERFACE_INCLUDE_EXISTING_INTERFACES,
@@ -336,11 +336,11 @@ PoInitSystem(IN ULONG BootPhase)
         PopAcpiPresent = KeLoaderBlock->Extension->AcpiTable != NULL ? TRUE : FALSE;
     }
 
-    
+
     /* Initialize volume support */
     InitializeListHead(&PopVolumeDevices);
     KeInitializeGuardedMutex(&PopVolumeLock);
-    
+
     /* Initialize support for dope */
     KeInitializeSpinLock(&PopDopeGlobalLock);
 
@@ -522,19 +522,19 @@ PoRequestPowerIrp(IN PDEVICE_OBJECT DeviceObject,
     PIO_STACK_LOCATION Stack;
     PIRP Irp;
     PREQUEST_POWER_ITEM RequestPowerItem;
-  
+
     if (MinorFunction != IRP_MN_QUERY_POWER
         && MinorFunction != IRP_MN_SET_POWER
         && MinorFunction != IRP_MN_WAIT_WAKE)
         return STATUS_INVALID_PARAMETER_2;
-  
+
     RequestPowerItem = ExAllocatePool(NonPagedPool, sizeof(REQUEST_POWER_ITEM));
     if (!RequestPowerItem)
         return STATUS_INSUFFICIENT_RESOURCES;
-  
+
     /* Always call the top of the device stack */
     TopDeviceObject = IoGetAttachedDeviceReference(DeviceObject);
-  
+
     Irp = IoBuildAsynchronousFsdRequest(IRP_MJ_POWER,
                                         TopDeviceObject,
                                         NULL,
@@ -547,12 +547,12 @@ PoRequestPowerIrp(IN PDEVICE_OBJECT DeviceObject,
         ExFreePool(RequestPowerItem);
         return STATUS_INSUFFICIENT_RESOURCES;
     }
-  
+
     /* POWER IRPs are always initialized with a status code of
        STATUS_NOT_IMPLEMENTED */
     Irp->IoStatus.Status = STATUS_NOT_IMPLEMENTED;
     Irp->IoStatus.Information = 0;
-  
+
     Stack = IoGetNextIrpStackLocation(Irp);
     Stack->MinorFunction = MinorFunction;
     if (MinorFunction == IRP_MN_WAIT_WAKE)
@@ -562,18 +562,18 @@ PoRequestPowerIrp(IN PDEVICE_OBJECT DeviceObject,
         Stack->Parameters.Power.Type = DevicePowerState;
         Stack->Parameters.Power.State = PowerState;
     }
-  
+
     RequestPowerItem->CompletionRoutine = CompletionFunction;
     RequestPowerItem->PowerState = PowerState;
     RequestPowerItem->Context = Context;
     RequestPowerItem->TopDeviceObject = TopDeviceObject;
-  
+
     if (pIrp != NULL)
         *pIrp = Irp;
-  
+
     IoSetCompletionRoutine(Irp, PopRequestPowerIrpCompletion, RequestPowerItem, TRUE, TRUE, TRUE);
     PoCallDriver(TopDeviceObject, Irp);
-  
+
     /* Always return STATUS_PENDING. The completion routine
      * will call CompletionFunction and complete the Irp.
      */
@@ -663,7 +663,7 @@ NtPowerInformation(IN POWER_INFORMATION_LEVEL PowerInformationLevel,
            PowerInformationLevel,
            InputBuffer, InputBufferLength,
            OutputBuffer, OutputBufferLength);
-    
+
     switch (PowerInformationLevel)
     {
         case SystemBatteryState:
@@ -841,7 +841,7 @@ NtSetSystemPowerState(IN POWER_ACTION SystemAction,
     if (SystemAction == PowerActionShutdown) PopReadShutdownPolicy();
 
     /* Disable lazy flushing of registry */
-    DPRINT1("Stopping lazy flush\n");
+    DPRINT("Stopping lazy flush\n");
     CmSetLazyFlushState(FALSE);
 
     /* Setup the power action */
@@ -849,13 +849,13 @@ NtSetSystemPowerState(IN POWER_ACTION SystemAction,
     Action.Flags = Flags;
 
     /* Notify callbacks */
-    DPRINT1("Notifying callbacks\n");
+    DPRINT("Notifying callbacks\n");
     ExNotifyCallback(PowerStateCallback, (PVOID)3, NULL);
+
     /* Swap in any worker thread stacks */
-    DPRINT1("Swapping worker threads\n");
+    DPRINT("Swapping worker threads\n");
     ExSwapinWorkerThreads(FALSE);
-    
+
     /* Make our action global */
     PopAction = Action;
 
@@ -884,7 +884,7 @@ NtSetSystemPowerState(IN POWER_ACTION SystemAction,
 
         /* Check if we're still in an invalid status */
         if (!NT_SUCCESS(Status)) break;
-        
+
 #ifndef NEWCC
         /* Flush dirty cache pages */
         CcRosFlushDirtyPages(-1, &Dummy, FALSE); //HACK: We really should wait here!
@@ -893,14 +893,14 @@ NtSetSystemPowerState(IN POWER_ACTION SystemAction,
 #endif
 
         /* Flush all volumes and the registry */
-        DPRINT1("Flushing volumes, cache flushed %lu pages\n", Dummy);
+        DPRINT("Flushing volumes, cache flushed %lu pages\n", Dummy);
         PopFlushVolumes(PopAction.Shutdown);
 
         /* Set IRP for drivers */
         PopAction.IrpMinor = IRP_MN_SET_POWER;
         if (PopAction.Shutdown)
         {
-            DPRINT1("Queueing shutdown thread\n");
+            DPRINT("Queueing shutdown thread\n");
             /* Check if we are running in the system context */
             if (PsGetCurrentProcess() != PsInitialSystemProcess)
             {
@@ -910,7 +910,7 @@ NtSetSystemPowerState(IN POWER_ACTION SystemAction,
                                      NULL);
 
                 ExQueueWorkItem(&PopShutdownWorkItem, CriticalWorkQueue);
-                                
+
                 /* Spend us -- when we wake up, the system is good to go down */
                 KeSuspendThread(KeGetCurrentThread());
                 Status = STATUS_SYSTEM_SHUTDOWN;
@@ -923,7 +923,7 @@ NtSetSystemPowerState(IN POWER_ACTION SystemAction,
                 PopGracefulShutdown(NULL);
             }
         }
-        
+
         /* You should not have made it this far */
         ASSERTMSG("System is still up and running?!", FALSE);
         break;
index f8f8c31..7d1a817 100644 (file)
@@ -1134,8 +1134,11 @@ SeValidSecurityDescriptor(IN ULONG Length,
 /*
  * @implemented
  */
-NTSTATUS NTAPI
-SeDeassignSecurity(PSECURITY_DESCRIPTOR *SecurityDescriptor)
+_IRQL_requires_max_(PASSIVE_LEVEL)
+NTSTATUS
+NTAPI
+SeDeassignSecurity(
+    _Inout_ PSECURITY_DESCRIPTOR *SecurityDescriptor)
 {
     PAGED_CODE();
 
@@ -1149,36 +1152,22 @@ SeDeassignSecurity(PSECURITY_DESCRIPTOR *SecurityDescriptor)
 }
 
 
-
-/*
- * @unimplemented
- */
-NTSTATUS NTAPI
-SeAssignSecurityEx(IN PSECURITY_DESCRIPTOR ParentDescriptor OPTIONAL,
-                   IN PSECURITY_DESCRIPTOR ExplicitDescriptor OPTIONAL,
-                   OUT PSECURITY_DESCRIPTOR *NewDescriptor,
-                   IN GUID *ObjectType OPTIONAL,
-                   IN BOOLEAN IsDirectoryObject,
-                   IN ULONG AutoInheritFlags,
-                   IN PSECURITY_SUBJECT_CONTEXT SubjectContext,
-                   IN PGENERIC_MAPPING GenericMapping,
-                   IN POOL_TYPE PoolType)
-{
-    UNIMPLEMENTED;
-    return STATUS_NOT_IMPLEMENTED;
-}
-
 /*
  * @implemented
  */
-NTSTATUS NTAPI
-SeAssignSecurity(PSECURITY_DESCRIPTOR _ParentDescriptor OPTIONAL,
-                 PSECURITY_DESCRIPTOR _ExplicitDescriptor OPTIONAL,
-                 PSECURITY_DESCRIPTOR *NewDescriptor,
-                 BOOLEAN IsDirectoryObject,
-                 PSECURITY_SUBJECT_CONTEXT SubjectContext,
-                 PGENERIC_MAPPING GenericMapping,
-                 POOL_TYPE PoolType)
+_IRQL_requires_max_(PASSIVE_LEVEL)
+NTSTATUS
+NTAPI
+SeAssignSecurityEx(
+    _In_opt_ PSECURITY_DESCRIPTOR _ParentDescriptor,
+    _In_opt_ PSECURITY_DESCRIPTOR _ExplicitDescriptor,
+    _Out_ PSECURITY_DESCRIPTOR *NewDescriptor,
+    _In_opt_ GUID *ObjectType,
+    _In_ BOOLEAN IsDirectoryObject,
+    _In_ ULONG AutoInheritFlags,
+    _In_ PSECURITY_SUBJECT_CONTEXT SubjectContext,
+    _In_ PGENERIC_MAPPING GenericMapping,
+    _In_ POOL_TYPE PoolType)
 {
     PISECURITY_DESCRIPTOR ParentDescriptor = _ParentDescriptor;
     PISECURITY_DESCRIPTOR ExplicitDescriptor = _ExplicitDescriptor;
@@ -1196,6 +1185,11 @@ SeAssignSecurity(PSECURITY_DESCRIPTOR _ParentDescriptor OPTIONAL,
     PACL Dacl = NULL;
     PACL Sacl = NULL;
 
+    DBG_UNREFERENCED_PARAMETER(ObjectType);
+    DBG_UNREFERENCED_PARAMETER(AutoInheritFlags);
+    DBG_UNREFERENCED_PARAMETER(GenericMapping);
+    UNREFERENCED_PARAMETER(PoolType);
+
     PAGED_CODE();
 
     /* Lock subject context */
@@ -1327,7 +1321,7 @@ SeAssignSecurity(PSECURITY_DESCRIPTOR _ParentDescriptor OPTIONAL,
     if (Descriptor == NULL)
     {
         DPRINT1("ExAlloctePool() failed\n");
-        /* FIXME: Unlock subject context */
+        SeUnlockSubjectContext(SubjectContext);
         return STATUS_INSUFFICIENT_RESOURCES;
     }
 
@@ -1375,10 +1369,38 @@ SeAssignSecurity(PSECURITY_DESCRIPTOR _ParentDescriptor OPTIONAL,
 
     *NewDescriptor = Descriptor;
 
-    DPRINT("Descrptor %p\n", Descriptor);
+    DPRINT("Descriptor %p\n", Descriptor);
     ASSERT(RtlLengthSecurityDescriptor(Descriptor));
 
     return STATUS_SUCCESS;
 }
 
+/*
+ * @implemented
+ */
+_IRQL_requires_max_(PASSIVE_LEVEL)
+NTSTATUS
+NTAPI
+SeAssignSecurity(
+    _In_opt_ PSECURITY_DESCRIPTOR ParentDescriptor,
+    _In_opt_ PSECURITY_DESCRIPTOR ExplicitDescriptor,
+    _Out_ PSECURITY_DESCRIPTOR *NewDescriptor,
+    _In_ BOOLEAN IsDirectoryObject,
+    _In_ PSECURITY_SUBJECT_CONTEXT SubjectContext,
+    _In_ PGENERIC_MAPPING GenericMapping,
+    _In_ POOL_TYPE PoolType)
+{
+    PAGED_CODE();
+
+    return SeAssignSecurityEx(ParentDescriptor,
+                              ExplicitDescriptor,
+                              NewDescriptor,
+                              NULL,
+                              IsDirectoryObject,
+                              0,
+                              SubjectContext,
+                              GenericMapping,
+                              PoolType);
+}
+
 /* EOF */
index 53113f7..707c549 100644 (file)
@@ -71,7 +71,7 @@ CSR_API(BaseSrvCreateProcess)
     HANDLE ProcessHandle, ThreadHandle;
     PCSR_THREAD CsrThread;
     PCSR_PROCESS Process;
-    ULONG Flags = 0, VdmPower = 0, DebugFlags = 0;
+    ULONG Flags = 0, DebugFlags = 0, VdmPower = 0;
 
     /* Get the current client thread */
     CsrThread = CsrGetClientThread();
@@ -83,6 +83,13 @@ CSR_API(BaseSrvCreateProcess)
     Flags = (ULONG_PTR)CreateProcessRequest->ProcessHandle & 3;
     CreateProcessRequest->ProcessHandle = (HANDLE)((ULONG_PTR)CreateProcessRequest->ProcessHandle & ~3);
 
+    /* Some things should be done if this is a VDM process */
+    if (CreateProcessRequest->VdmBinaryType)
+    {
+        /* We need to set the VDM power later on */
+        VdmPower = 1;
+    }
+
     /* Duplicate the process handle */
     Status = NtDuplicateObject(Process->ProcessHandle,
                                CreateProcessRequest->ProcessHandle,
@@ -112,10 +119,9 @@ CSR_API(BaseSrvCreateProcess)
         return Status;
     }
 
-    /* See if this is a VDM process */
+    /* If this is a VDM process, request VDM power */
     if (VdmPower)
     {
-        /* Request VDM powers */
         Status = NtSetInformationProcess(ProcessHandle,
                                          ProcessWx86Information,
                                          &VdmPower,
index 81873a1..09bf071 100644 (file)
@@ -576,7 +576,7 @@ CSR_API(BaseSrvCheckVDM)
     BOOLEAN NewConsoleRecord = FALSE;
 
     /* Don't do anything if the VDM has been disabled in the registry */
-    if (!BaseSrvIsVdmAllowed()) return STATUS_ACCESS_DENIED;
+    if (!BaseSrvIsVdmAllowed()) return STATUS_VDM_DISALLOWED;
 
     /* Validate the message buffers */
     if (!CsrValidateMessageBuffer(ApiMessage,
index 694bb1e..49df131 100644 (file)
@@ -576,7 +576,7 @@ CsrParseServerCommandLine(IN ULONG ArgumentCount,
         ParameterValue = NULL;
         ParameterValue = strchr(ParameterName, '=');
         if (ParameterValue) *ParameterValue++ = ANSI_NULL;
-        DPRINT1("Name=%s, Value=%s\n", ParameterName, ParameterValue);
+        DPRINT("Name=%s, Value=%s\n", ParameterName, ParameterValue);
 
         /* Check for Object Directory */
         if (_stricmp(ParameterName, "ObjectDirectory") == 0)
index 16648a1..d539dfe 100644 (file)
@@ -633,8 +633,8 @@ IntCreateRegistryPath(
         RtlAppendUnicodeToString(DeviceRegistryPath, Insert2);
     }
 
-    DbgPrint("Formatted registry key '%wZ' -> '%wZ'\n",
-             DriverRegistryPath, DeviceRegistryPath);
+    DPRINT("Formatted registry key '%wZ' -> '%wZ'\n",
+           DriverRegistryPath, DeviceRegistryPath);
 
     return STATUS_SUCCESS;
 }
index 472ed54..8afca53 100644 (file)
@@ -3365,7 +3365,7 @@ GreExtTextOutW(
     BrushOrigin.x = 0;
     BrushOrigin.y = 0;
 
-    psurf = dc->dclevel.pSurface ;
+    psurf = dc->dclevel.pSurface;
 
     if(!psurf) 
         psurf = psurfDefaultBitmap;
@@ -3921,7 +3921,7 @@ NtGdiGetCharABCWidthsW(
     IN HDC hDC,
     IN UINT FirstChar,
     IN ULONG Count,
-    IN OPTIONAL PWCHAR pwch,
+    IN OPTIONAL PWCHAR UnSafepwch,
     IN FLONG fl,
     OUT PVOID Buffer)
 {
@@ -3937,14 +3937,29 @@ NtGdiGetCharABCWidthsW(
     HFONT hFont = 0;
     NTSTATUS Status = STATUS_SUCCESS;
     PMATRIX pmxWorldToDevice;
+    PWCHAR Safepwch = NULL;
 
-    if (pwch)
+    if (!Buffer)
     {
+        EngSetLastError(ERROR_INVALID_PARAMETER);
+        return FALSE;
+    }
+
+    if (UnSafepwch)
+    {
+        UINT pwchSize = Count * sizeof(WCHAR);
+        Safepwch = ExAllocatePoolWithTag(PagedPool, pwchSize, GDITAG_TEXT);
+
+        if(!Safepwch)
+        {
+            EngSetLastError(ERROR_NOT_ENOUGH_MEMORY);
+            return FALSE;
+        }
+
         _SEH2_TRY
         {
-            ProbeForRead(pwch,
-            sizeof(PWSTR),
-            1);
+            ProbeForRead(UnSafepwch, pwchSize, 1);
+            RtlCopyMemory(Safepwch, UnSafepwch, pwchSize);
         }
         _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
         {
@@ -3952,15 +3967,13 @@ NtGdiGetCharABCWidthsW(
         }
         _SEH2_END;
     }
+
     if (!NT_SUCCESS(Status))
     {
-        EngSetLastError(Status);
-        return FALSE;
-    }
+        if(Safepwch)
+            ExFreePoolWithTag(Safepwch , GDITAG_TEXT);
 
-    if (!Buffer)
-    {
-        EngSetLastError(ERROR_INVALID_PARAMETER);
+        EngSetLastError(Status);
         return FALSE;
     }
 
@@ -3969,6 +3982,10 @@ NtGdiGetCharABCWidthsW(
     if (!fl) SafeBuffF = (LPABCFLOAT) SafeBuff;
     if (SafeBuff == NULL)
     {
+
+        if(Safepwch)
+            ExFreePoolWithTag(Safepwch , GDITAG_TEXT);
+
         EngSetLastError(ERROR_NOT_ENOUGH_MEMORY);
         return FALSE;
     }
@@ -3977,6 +3994,10 @@ NtGdiGetCharABCWidthsW(
     if (dc == NULL)
     {
         ExFreePoolWithTag(SafeBuff, GDITAG_TEXT);
+
+        if(Safepwch)
+            ExFreePoolWithTag(Safepwch , GDITAG_TEXT);
+
         EngSetLastError(ERROR_INVALID_HANDLE);
         return FALSE;
     }
@@ -3991,6 +4012,10 @@ NtGdiGetCharABCWidthsW(
     if (TextObj == NULL)
     {
         ExFreePoolWithTag(SafeBuff, GDITAG_TEXT);
+
+        if(Safepwch)
+            ExFreePoolWithTag(Safepwch , GDITAG_TEXT);
+
         EngSetLastError(ERROR_INVALID_HANDLE);
         return FALSE;
     }
@@ -4014,6 +4039,10 @@ NtGdiGetCharABCWidthsW(
         {
             DPRINT1("WARNING: Could not find desired charmap!\n");
             ExFreePoolWithTag(SafeBuff, GDITAG_TEXT);
+
+            if(Safepwch)
+                ExFreePoolWithTag(Safepwch , GDITAG_TEXT);
+
             EngSetLastError(ERROR_INVALID_HANDLE);
             return FALSE;
         }
@@ -4035,12 +4064,12 @@ NtGdiGetCharABCWidthsW(
     {
         int adv, lsb, bbx, left, right;
 
-        if (pwch)
+        if (Safepwch)
         {
             if (fl & GCABCW_INDICES)
-                glyph_index = pwch[i - FirstChar];
+                glyph_index = Safepwch[i - FirstChar];
             else
-                glyph_index = FT_Get_Char_Index(face, pwch[i - FirstChar]);
+                glyph_index = FT_Get_Char_Index(face, Safepwch[i - FirstChar]);
         }
         else
         {
@@ -4079,13 +4108,18 @@ NtGdiGetCharABCWidthsW(
     IntUnLockFreeType;
     TEXTOBJ_UnlockText(TextObj);
     Status = MmCopyToCaller(Buffer, SafeBuff, BufferSize);
+
+    ExFreePoolWithTag(SafeBuff, GDITAG_TEXT);
+
+    if(Safepwch)
+        ExFreePoolWithTag(Safepwch , GDITAG_TEXT);
+
     if (! NT_SUCCESS(Status))
     {
         SetLastNtError(Status);
-        ExFreePoolWithTag(SafeBuff, GDITAG_TEXT);
         return FALSE;
     }
-    ExFreePoolWithTag(SafeBuff, GDITAG_TEXT);
+
     DPRINT("NtGdiGetCharABCWidths Worked!\n");
     return TRUE;
 }
@@ -4099,7 +4133,7 @@ NtGdiGetCharWidthW(
     IN HDC hDC,
     IN UINT FirstChar,
     IN UINT Count,
-    IN OPTIONAL PWCHAR pwc,
+    IN OPTIONAL PWCHAR UnSafepwc,
     IN FLONG fl,
     OUT PVOID Buffer)
 {
@@ -4115,14 +4149,22 @@ NtGdiGetCharWidthW(
     UINT i, glyph_index, BufferSize;
     HFONT hFont = 0;
     PMATRIX pmxWorldToDevice;
+    PWCHAR Safepwc = NULL;
 
-    if (pwc)
+    if (UnSafepwc)
     {
+        UINT pwcSize = Count * sizeof(WCHAR);
+        Safepwc = ExAllocatePoolWithTag(PagedPool, pwcSize, GDITAG_TEXT);
+
+        if(!Safepwc)
+        {
+            EngSetLastError(ERROR_NOT_ENOUGH_MEMORY);
+            return FALSE;
+        }
         _SEH2_TRY
         {
-            ProbeForRead(pwc,
-            sizeof(PWSTR),
-            1);
+            ProbeForRead(UnSafepwc, pwcSize, 1);
+            RtlCopyMemory(Safepwc, UnSafepwc, pwcSize);
         }
         _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
         {
@@ -4130,6 +4172,7 @@ NtGdiGetCharWidthW(
         }
         _SEH2_END;
     }
+
     if (!NT_SUCCESS(Status))
     {
         EngSetLastError(Status);
@@ -4141,6 +4184,9 @@ NtGdiGetCharWidthW(
     if (!fl) SafeBuffF = (PFLOAT) SafeBuff;
     if (SafeBuff == NULL)
     {
+        if(Safepwc)
+            ExFreePoolWithTag(Safepwc, GDITAG_TEXT);
+
         EngSetLastError(ERROR_NOT_ENOUGH_MEMORY);
         return FALSE;
     }
@@ -4148,6 +4194,9 @@ NtGdiGetCharWidthW(
     dc = DC_LockDc(hDC);
     if (dc == NULL)
     {
+        if(Safepwc)
+            ExFreePoolWithTag(Safepwc, GDITAG_TEXT);
+
         ExFreePoolWithTag(SafeBuff, GDITAG_TEXT);
         EngSetLastError(ERROR_INVALID_HANDLE);
         return FALSE;
@@ -4161,6 +4210,9 @@ NtGdiGetCharWidthW(
 
     if (TextObj == NULL)
     {
+        if(Safepwc)
+            ExFreePoolWithTag(Safepwc, GDITAG_TEXT);
+
         ExFreePoolWithTag(SafeBuff, GDITAG_TEXT);
         EngSetLastError(ERROR_INVALID_HANDLE);
         return FALSE;
@@ -4184,7 +4236,11 @@ NtGdiGetCharWidthW(
         if (!found)
         {
             DPRINT1("WARNING: Could not find desired charmap!\n");
-            ExFreePool(SafeBuff);
+
+            if(Safepwc)
+                ExFreePoolWithTag(Safepwc, GDITAG_TEXT);
+
+            ExFreePoolWithTag(SafeBuff, GDITAG_TEXT);
             EngSetLastError(ERROR_INVALID_HANDLE);
             return FALSE;
         }
@@ -4204,12 +4260,12 @@ NtGdiGetCharWidthW(
 
     for (i = FirstChar; i < FirstChar+Count; i++)
     {
-        if (pwc)
+        if (Safepwc)
         {
             if (fl & GCW_INDICES)
-                glyph_index = pwc[i - FirstChar];
+                glyph_index = Safepwc[i - FirstChar];
             else
-                glyph_index = FT_Get_Char_Index(face, pwc[i - FirstChar]);
+                glyph_index = FT_Get_Char_Index(face, Safepwc[i - FirstChar]);
         }
         else
         {
@@ -4227,6 +4283,10 @@ NtGdiGetCharWidthW(
     IntUnLockFreeType;
     TEXTOBJ_UnlockText(TextObj);
     MmCopyToCaller(Buffer, SafeBuff, BufferSize);
+
+    if(Safepwc)
+        ExFreePoolWithTag(Safepwc, GDITAG_TEXT);
+
     ExFreePoolWithTag(SafeBuff, GDITAG_TEXT);
     return TRUE;
 }
@@ -4347,7 +4407,8 @@ NtGdiGetGlyphIndicesW(
     FT_Face face;
     WCHAR DefChar = 0xffff;
     PWSTR Buffer = NULL;
-    ULONG Size;
+    ULONG Size, pwcSize;
+    PWSTR Safepwc = NULL;
 
     if ((!UnSafepwc) && (!UnSafepgi)) return cwc;
 
@@ -4392,11 +4453,19 @@ NtGdiGetGlyphIndicesW(
         ExFreePoolWithTag(potm, GDITAG_TEXT);
     }
 
+    pwcSize = cwc * sizeof(WCHAR);
+    Safepwc = ExAllocatePoolWithTag(PagedPool, pwcSize, GDITAG_TEXT);
+
+    if (!Safepwc)
+    {
+        EngSetLastError(ERROR_NOT_ENOUGH_MEMORY);
+        return GDI_ERROR;
+    }
+
     _SEH2_TRY
     {
-        ProbeForRead(UnSafepwc,
-        sizeof(PWSTR),
-        1);
+        ProbeForRead(UnSafepwc, pwcSize, 1);
+        RtlCopyMemory(Safepwc, UnSafepwc, pwcSize);
     }
     _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
     {
@@ -4417,7 +4486,7 @@ NtGdiGetGlyphIndicesW(
 
     for (i = 0; i < cwc; i++)
     {
-        Buffer[i] = FT_Get_Char_Index(face, UnSafepwc[i]); // FIXME: Unsafe!
+        Buffer[i] = FT_Get_Char_Index(face, Safepwc[i]);
         if (Buffer[i] == 0)
         {
             Buffer[i] = DefChar;
@@ -4428,12 +4497,8 @@ NtGdiGetGlyphIndicesW(
 
     _SEH2_TRY
     {
-        ProbeForWrite(UnSafepgi,
-        sizeof(WORD),
-        1);
-        RtlCopyMemory(UnSafepgi,
-                      Buffer,
-                      cwc*sizeof(WORD));
+        ProbeForWrite(UnSafepgi, cwc * sizeof(WORD), 1);
+        RtlCopyMemory(UnSafepgi, Buffer, cwc * sizeof(WORD));
     }
     _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
     {
@@ -4443,6 +4508,7 @@ NtGdiGetGlyphIndicesW(
 
 ErrorRet:
     ExFreePoolWithTag(Buffer, GDITAG_TEXT);
+    ExFreePoolWithTag(Safepwc, GDITAG_TEXT);
     if (NT_SUCCESS(Status)) return cwc;
     EngSetLastError(Status);
     return GDI_ERROR;
index 5759d26..37357ac 100644 (file)
@@ -473,7 +473,7 @@ IntGetDesktopObjectHandle(PDESKTOP DesktopObject)
    }
    else
    {
-       ERR("Got handle: %p\n", Ret);
+       TRACE("Got handle: %p\n", Ret);
    }
 
    return Ret;
index 4705199..62d2b8b 100644 (file)
@@ -75,8 +75,8 @@ InitDisplayDriver(
     DEVMODEW dmDefault;
     DWORD dwVga;
 
-    ERR("InitDisplayDriver(%S, %S);\n",
-            pwszDeviceName, pwszRegKey);
+    TRACE("InitDisplayDriver(%S, %S);\n",
+          pwszDeviceName, pwszRegKey);
 
     /* Open the driver's registry key */
     Status = RegOpenKey(pwszRegKey, &hkey);
index 98f107f..ace2852 100644 (file)
@@ -632,7 +632,7 @@ co_IntMouseActivateWindow(PWND Wnd)
       }
       return FALSE;
    }
-   ERR("Mouse Active\n");
+   TRACE("Mouse Active\n");
    co_IntSetForegroundAndFocusWindow(Wnd, TRUE);
    return TRUE;
 }
@@ -820,7 +820,7 @@ UserSetActiveWindow(PWND Wnd)
   }
   /*
      Yes your eye are not deceiving you~!
-  
+
      First part of wines Win.c test_SetActiveWindow:
 
      flush_events( TRUE );
index 93038bb..4be4c21 100644 (file)
@@ -52,7 +52,7 @@ StartDebugHotKeys(VOID)
     }
     UserRegisterHotKey(PWND_BOTTOM, IDHK_SHIFTF12, MOD_SHIFT, vk);
     UserRegisterHotKey(PWND_BOTTOM, IDHK_F12, 0, vk);
-    ERR("Start up the debugger hotkeys!! Should see this once!\n");
+    TRACE("Start up the debugger hotkeys!! If you see this you eneabled debugprints. Congrats!\n");
 }
 
 /*
@@ -248,8 +248,8 @@ co_UserProcessHotKeys(WORD wVk, BOOL bIsDown)
                if (pHotKey->pWnd == PWND_BOTTOM)
                {
                    if (gpqForeground != NULL)
-                   { 
-                      pWnd = gpqForeground->spwndFocus; 
+                   {
+                      pWnd = gpqForeground->spwndFocus;
                    }
                    else
                       return FALSE;
@@ -354,7 +354,7 @@ DefWndSetHotKey(PWND pWnd, WPARAM wParam)
             pHotKey = pHotKey->pNext;
         }
     }
-    
+
     pHotKey = gphkFirst;
     pLink = &gphkFirst;
     while (pHotKey)
index 705f4ff..097b852 100644 (file)
@@ -197,7 +197,7 @@ UserInitKeyboard(HANDLE hKeyboardDevice)
     {
         ERR("NtDeviceIoControlFile() failed, ignored\n");
     }
-    ERR("Keyboard type %d, subtype %d and number of func keys %d\n",
+    TRACE("Keyboard type %d, subtype %d and number of func keys %d\n",
              gKeyboardInfo.KeyboardIdentifier.Type,
              gKeyboardInfo.KeyboardIdentifier.Subtype,
              gKeyboardInfo.NumberOfFunctionKeys);
@@ -820,7 +820,7 @@ ProcessKeyEvent(WORD wVk, WORD wScanCode, DWORD dwFlags, BOOL bInjected, DWORD d
         TRACE("HotKey Processed\n");
         bPostMsg = FALSE;
     }
+
     wFixedVk = IntFixVk(wSimpleVk, bExt); /* LSHIFT + EXT = RSHIFT */
     if (wSimpleVk == VK_SHIFT) /* shift can't be extended */
         bExt = FALSE;
index 812c8d1..ea922da 100644 (file)
@@ -2068,7 +2068,7 @@ MsqCleanupMessageQueue(PTHREADINFO pti)
            IntGetSysCursorInfo()->CurrentCursorObject = NULL;
        }
 
-       ERR("DereferenceObject pCursor\n");
+       TRACE("DereferenceObject pCursor\n");
        UserDereferenceObject(pCursor);
    }
 
@@ -2200,7 +2200,7 @@ MsqSetStateWindow(PTHREADINFO pti, ULONG Type, HWND hWnd)
 {
    HWND Prev;
    PUSER_MESSAGE_QUEUE MessageQueue;
-   
+
    MessageQueue = pti->MessageQueue;
 
    switch(Type)
index 12f389c..e811f2a 100644 (file)
@@ -164,8 +164,8 @@ NtUserInitialize(
 {
     NTSTATUS Status;
 
-    ERR("Enter NtUserInitialize(%lx, %p, %p)\n",
-            dwWinVersion, hPowerRequestEvent, hMediaRequestEvent);
+    TRACE("Enter NtUserInitialize(%lx, %p, %p)\n",
+          dwWinVersion, hPowerRequestEvent, hMediaRequestEvent);
 
     /* Check the Windows version */
     if (dwWinVersion != 0)
index b344aef..416534b 100644 (file)
@@ -250,7 +250,7 @@ ClientThreadSetup(VOID)
     // CsrConnectToUser, we'll pretend we "did something" here. Then the rest will
     // continue as normal.
     //
-    UNIMPLEMENTED;
+    //UNIMPLEMENTED;
     return TRUE;
 }
 
@@ -258,7 +258,7 @@ BOOL
 Init(VOID)
 {
    USERCONNECT UserCon;
+
    /* Set PEB data */
    NtCurrentPeb()->KernelCallbackTable = apfnDispatch;
    NtCurrentPeb()->PostProcessInitRoutine = NULL;
@@ -379,7 +379,7 @@ GetConnected(VOID)
   g_ulSharedDelta = UserCon.siClient.ulSharedDelta;
   gpsi = SharedPtrToUser(UserCon.siClient.psi);
   gHandleTable = SharedPtrToUser(UserCon.siClient.aheList);
-  gHandleEntries = SharedPtrToUser(gHandleTable->handles);  
+  gHandleEntries = SharedPtrToUser(gHandleTable->handles);
 
 }
 
@@ -387,9 +387,9 @@ NTSTATUS
 WINAPI
 User32CallClientThreadSetupFromKernel(PVOID Arguments, ULONG ArgumentLength)
 {
-  ERR("ClientThreadSetup\n");
+  TRACE("ClientThreadSetup\n");
   ClientThreadSetup();
-  return ZwCallbackReturn(NULL, 0, STATUS_SUCCESS);  
+  return ZwCallbackReturn(NULL, 0, STATUS_SUCCESS);
 }
 
 NTSTATUS
@@ -403,7 +403,7 @@ User32CallGetCharsetInfo(PVOID Arguments, ULONG ArgumentLength)
 
   Ret = TranslateCharsetInfo((DWORD *)pgci->Locale, &pgci->Cs, TCI_SRCLOCALE);
 
-  return ZwCallbackReturn(Arguments, ArgumentLength, Ret ? STATUS_SUCCESS : STATUS_UNSUCCESSFUL);  
+  return ZwCallbackReturn(Arguments, ArgumentLength, Ret ? STATUS_SUCCESS : STATUS_UNSUCCESSFUL);
 }
 
 NTSTATUS
index a2c22c6..885c56f 100644 (file)
@@ -202,7 +202,7 @@ User32CreateWindowEx(DWORD dwExStyle,
                 return (HWND)0;
             }
         }
-        
+
         /* Copy it to a LARGE_STRING */
         lstrClassName.Buffer = ClassName.Buffer;
         lstrClassName.Length = ClassName.Length;
@@ -219,7 +219,7 @@ User32CreateWindowEx(DWORD dwExStyle,
         NTSTATUS Status;
         PSTR AnsiBuffer = WindowName.Buffer;
         ULONG AnsiLength = WindowName.Length;
-        
+
         WindowName.Length = 0;
         WindowName.MaximumLength = AnsiLength * sizeof(WCHAR);
         WindowName.Buffer = RtlAllocateHeap(RtlGetProcessHeap(),