Index: trunk/src/shlwapi/makefile
===================================================================
--- trunk/src/shlwapi/makefile	(revision 3561)
+++ trunk/src/shlwapi/makefile	(revision 3562)
@@ -1,3 +1,3 @@
-# $Id: makefile,v 1.13 2000-05-18 14:07:22 sandervl Exp $
+# $Id: makefile,v 1.14 2000-05-19 12:10:03 sandervl Exp $
 
 #
@@ -25,4 +25,5 @@
 OBJS = \
 $(OBJDIR)\shlwapi.obj \
+$(OBJDIR)\shlstub.obj \
 $(OBJDIR)\mem.obj \
 $(OBJDIR)\url.obj \
Index: trunk/src/shlwapi/pathcpp.cpp
===================================================================
--- trunk/src/shlwapi/pathcpp.cpp	(revision 3561)
+++ trunk/src/shlwapi/pathcpp.cpp	(revision 3562)
@@ -1,3 +1,3 @@
-/* $Id: pathcpp.cpp,v 1.1 2000-05-18 14:07:23 sandervl Exp $ */
+/* $Id: pathcpp.cpp,v 1.2 2000-05-19 12:10:04 sandervl Exp $ */
 
 /*
@@ -37,4 +37,8 @@
 
 #include "debugtools.h"
+
+#include <winreg.h>
+
+#include <heapstring.h>
 
 ODINDEBUGCHANNEL(SHLWAPI-SHELLPATH)
@@ -94,2 +98,16 @@
   return (LPWSTR)pszPath;
 }
+
+//SvL: NT seems to concatenate both strings (not tested very well)
+ODINFUNCTION2(BOOL, PathAddExtensionA, LPSTR, pszPath, LPSTR, pszExtension)
+{
+  lstrcatA(pszPath, pszExtension);
+  return 1;
+}
+
+ODINFUNCTION2(BOOL, PathAddExtensionW, LPWSTR, pszPath, LPWSTR, pszExtension)
+{
+  lstrcatW(pszPath, pszExtension);
+  return 1;
+}
+
Index: trunk/src/shlwapi/shlstub.cpp
===================================================================
--- trunk/src/shlwapi/shlstub.cpp	(revision 3562)
+++ trunk/src/shlwapi/shlstub.cpp	(revision 3562)
@@ -0,0 +1,40 @@
+/* $Id: shlstub.cpp,v 1.1 2000-05-19 12:10:04 sandervl Exp $ */
+
+/*
+ * Win32 stub shlwapi APIs for OS/2
+ *
+ * Project Odin Software License can be found in LICENSE.TXT
+ *
+ */
+
+
+#include <odin.h>
+#include <odinwrap.h>
+#include <os2sel.h>
+
+#include <string.h>
+#include <ctype.h>
+#include <wctype.h>
+#define HAVE_WCTYPE_H
+#include <odin.h>
+
+#define ICOM_CINTERFACE 1
+#define CINTERFACE 1
+
+#include "debugtools.h"
+#include "winnls.h"
+#include "winversion.h"
+#include "winreg.h"
+#include "crtdll.h"
+
+#include <heapstring.h>
+#include <misc.h>
+#include <win\shell.h>
+#include <win\winerror.h>
+
+
+ODINDEBUGCHANNEL(SHLWAPI-SHLSTUB)
+
+#include "shlwapi.h"
+
+
Index: trunk/src/shlwapi/shlwapi.def
===================================================================
--- trunk/src/shlwapi/shlwapi.def	(revision 3561)
+++ trunk/src/shlwapi/shlwapi.def	(revision 3562)
@@ -1,5 +1,5 @@
-; $Id: shlwapi.def,v 1.13 2000-05-18 14:07:23 sandervl Exp $
-
-; updated export ordinals to NT4 version of SHLWAPI.DLL
+; $Id: shlwapi.def,v 1.14 2000-05-19 12:10:04 sandervl Exp $
+
+; updated export ordinals to NT4 SP6 version of SHLWAPI.DLL
 ; Note: W95/W98 has DIFFERENT export ordinals
 
@@ -9,302 +9,233 @@
 
 EXPORTS
-  ; AssocCreate            = _AssocCreate@?                       @252  ; NT4
-  ; AssocQueryKeyA         = _AssocQueryKeyA@?                    @253  ; NT4
-  ; AssocQueryKeyW         = _AssocQueryKeyW@?                    @254  ; NT4
-  ; AssocQueryStringA      = _AssocQueryStringA@?                 @380  ; NT4
-  ; AssocQueryStringByKeyA = _AssocQueryStringByKeyA@?            @381  ; NT4
-  ; AssocQueryStringByKeyW = _AssocQueryStringByKeyW@?            @382  ; NT4
-  ; AssocQueryStringW      = _AssocQueryStringW@?                 @383  ; NT4
-  ; ChrCmpIA               = _ChrCmpIA@?                          @384
-  ; ChrCmpIW               = _ChrCmpIW@?                          @385
-  ; ColorAdjustLuma        = _ColorAdjustLuma@?                   @386  ; NT4
-  ; ColorHLSToRGB          = _ColorHLSToRGB@?                     @403  ; NT4
-  ; ColorRGBToHLS          = _ColorRGBToHLS@?                     @444  ; NT4
-  ; DllGetVersion          = _DllGetVersion@?                     @445
-  ; GetMenuPosFromID       = _GetMenuPosFromID@?                  @446
-  ; HashData               = _HashData@?                          @447
-  ; IntlStrEqWorkerA       = _IntlStrEqWorkerA@?                  @448
-  ; IntlStrEqWorkerW       = _IntlStrEqWorkerW@?                  @449
-    PathAddBackslashA      = _PathAddBackslashA@4                 @450
-  ;*PathAddBackslashAW     = _PathAddBackslashAW@4
-    PathAddBackslashW      = _PathAddBackslashW@4                 @451
-  ; PathAddExtensionA      = _PathAddExtensionA@?                 @452
-  ; PathAddExtensionW      = _PathAddExtensionW@?                 @453
-    PathAppendA            = _PathAppendA@8                       @454
-    PathAppendW            = _PathAppendW@8                       @455
-    PathBuildRootA         = _PathBuildRootA@8                    @456
-    PathBuildRootW         = _PathBuildRootW@8                    @457
-    PathCanonicalizeA      = _PathCanonicalizeA@8                 @458
-    PathCanonicalizeW      = _PathCanonicalizeW@8                 @459
-    PathCombineA           = _PathCombineA@12                     @460
-  ;*PathCombineAW          = _PathCombineAW@12
-    PathCombineW           = _PathCombineW@12                     @461
-  ; PathCommonPrefixA      = _PathCommonPrefixA@?                 @462
-  ; PathCommonPrefixW      = _PathCommonPrefixW@?                 @463
-  ; PathCompactPathA       = _PathCompactPathA@?                  @464
-  ; PathCompactPathExA     = _PathCompactPathExA@?                @465
-  ; PathCompactPathExW     = _PathCompactPathExW@?                @466
-  ; PathCompactPathW       = _PathCompactPathW@?                  @467
-  ; PathCreateFromUrlA     = _PathCreateFromUrlA@?                @468
-  ; PathCreateFromUrlW     = _PathCreateFromUrlW@?                @469
-    PathFileExistsA        = _PathFileExistsA@4                   @470
-    PathFileExistsW        = _PathFileExistsW@4                   @471
-    PathFindExtensionA     = _PathFindExtensionA@4                @472
-  ;*PathFindExtensionAW    = _PathFindExtensionAW@4
-    PathFindExtensionW     = _PathFindExtensionW@4                @473
-    PathFindFileNameA      = _PathFindFileNameA@4                 @474
-  ;*PathFindFileNameAW     = _PathFindFileNameAW@4
-    PathFindFileNameW      = _PathFindFileNameW@4                 @475
-    PathFindNextComponentA = _PathFindNextComponentA@4            @476
-    PathFindNextComponentW = _PathFindNextComponentW@4            @477
-    PathFindOnPathA        = _PathFindOnPathA@8                   @478
-  ;*PathFindOnPathAW       = _PathFindOnPathAW@8
-    PathFindOnPathW        = _PathFindOnPathW@8                   @479
-  ; PathFindSuffixArrayA   = _PathFindSuffixArrayA@?              @480  ; NT4
-  ; PathFindSuffixArrayW   = _PathFindSuffixArrayW@?              @481  ; NT4
-    PathGetArgsA           = _PathGetArgsA@4                      @482
-  ;*PathGetArgsAW          = _PathGetArgsAW@4
-    PathGetArgsW           = _PathGetArgsW@4                      @483
-  ; PathGetCharTypeA       = _PathGetCharTypeA@?                  @484
-  ; PathGetCharTypeW       = _PathGetCharTypeW@?                  @485
-    PathGetDriveNumberA    = _PathGetDriveNumberA@4               @486
-  ;*PathGetDriveNumberAW   = _PathGetDriveNumberAW@4
-    PathGetDriveNumberW    = _PathGetDriveNumberW@4               @487
-  ; PathIsContentTypeA     = _PathIsContentTypeA@?                @488
-  ; PathIsContentTypeW     = _PathIsContentTypeW@?                @489
-    PathIsDirectoryA       = _PathIsDirectoryA@4                  @490
-  ; PathIsDirectoryEmptyA  = _PathIsDirectoryEmptyA@?             @491  ; NT4
-  ; PathIsDirectoryEmptyW  = _PathIsDirectoryEmptyW@?             @492  ; NT4
-  ; PathIsDirectoryW       = _PathIsDirectoryW@?                  @493
-  ; PathIsFileSpecA        = _PathIsFileSpecA@?                   @494
-  ; PathIsFileSpecW        = _PathIsFileSpecW@?                   @495
-  ; PathIsLFNFileSpecA     = _PathIsLFNFileSpecA@?                @496  ; NT4
-  ; PathIsLFNFileSpecW     = _PathIsLFNFileSpecW@?                @497  ; NT4
-  ; PathIsNetworkPathA     = _PathIsNetworkPathA@?                @498  ; NT4
-  ; PathIsNetworkPathW     = _PathIsNetworkPathW@?                @499  ; NT4
-  ; PathIsPrefixA          = _PathIsPrefixA@?                     @500
-  ; PathIsPrefixW          = _PathIsPrefixW@?                     @501
-    PathIsRelativeA        = _PathIsRelativeA@4                   @502
-  ;*PathIsRelativeAW       = _PathIsRelativeAW@4
-    PathIsRelativeW        = _PathIsRelativeW@4                   @503
-    PathIsRootA            = _PathIsRootA@4                       @504
-  ;*PathIsRootAW           = _PathIsRootAW@4
-    PathIsRootW            = _PathIsRootW@4                       @505
-    PathIsSameRootA        = _PathIsSameRootA@8                   @506
-    PathIsSameRootW        = _PathIsSameRootW@8                   @507
-  ; PathIsSystemFolderA    = _PathIsSystemFolderA@?               @508
-  ; PathIsSystemFolderW    = _PathIsSystemFolderW@?               @509
-    PathIsUNCA             = _PathIsUNCA@4                        @510
-  ; PathIsUNCServerA       = _PathIsUNCServerA@?                  @511
-  ; PathIsUNCServerShareA  = _PathIsUNCServerShareA@?             @512
-  ; PathIsUNCServerShareW  = _PathIsUNCServerShareW@?             @513
-  ; PathIsUNCServerW       = _PathIsUNCServerW@?                  @514
-  ;*PathIsUNCAW            = _PathIsUNCAW@4
-    PathIsUNCW             = _PathIsUNCW@4                        @515
-    PathIsURLA             = _PathIsURLA@4                        @516
-    PathIsURLW             = _PathIsURLW@4                        @517
-  ; PathMakePrettyA        = _PathMakePrettyA@?                   @518
-  ; PathMakePrettyW        = _PathMakePrettyW@?                   @519
-  ; PathMakeSystemFolderA  = _PathMakeSystemFolderA@?             @520
-  ; PathMakeSystemFolderW  = _PathMakeSystemFolderW@?             @521
-    PathMatchSpecA         = _PathMatchSpecA@8                    @522
-  ;*PathMatchSpecAW        = _PathMatchSpecAW@8
-    PathMatchSpecW         = _PathMatchSpecW@8                    @523
-    PathParseIconLocationA = _PathParseIconLocationA@4            @524
-    PathParseIconLocationW = _PathParseIconLocationW@4            @525
-    PathQuoteSpacesA       = _PathQuoteSpacesA@4                  @526
-  ;*PathQuoteSpacesAW      = _PathQuoteSpacesAW@4
-    PathQuoteSpacesW       = _PathQuoteSpacesW@4                  @527
-  ;  PathRelativePathToA    = _PathRelativePathToA@?               @528
-  ;  PathRelativePathToW    = _PathRelativePathToW@?               @529
-    PathRemoveArgsA        = _PathRemoveArgsA@4                   @530
-    PathRemoveArgsW        = _PathRemoveArgsW@4                   @531
-    PathRemoveBackslashA   = _PathRemoveBackslashA@4              @532
-    PathRemoveBackslashW   = _PathRemoveBackslashW@4              @533
-    PathRemoveBlanksA      = _PathRemoveBlanksA@4                 @534
-  ;*PathRemoveBlanksAW     = _PathRemoveBlanksAW@4
-    PathRemoveBlanksW      = _PathRemoveBlanksW@4                 @535
-    PathRemoveExtensionA   = _PathRemoveExtensionA@4              @536
-    PathRemoveExtensionW   = _PathRemoveExtensionW@4              @537
-    PathRemoveFileSpecA    = _PathRemoveFileSpecA@4               @538
-    PathRemoveFileSpecW    = _PathRemoveFileSpecW@4               @539
-  ; PathRenameExtensionA   = _PathRenameExtensionA@?              @540
-  ; PathRenameExtensionW   = _PathRenameExtensionW@?              @541
-  ;  PathSearchAndQualifyA  = _PathSearchAndQualifyA@?             @542
-  ;  PathSearchAndQualifyW  = _PathSearchAndQualifyW@?             @543
-    PathSetDlgItemPathA    = _PathSetDlgItemPathA@12              @544
-  ;*PathSetDlgItemPathAW   = _PathSetDlgItemPathAW@12
-    PathSetDlgItemPathW    = _PathSetDlgItemPathW@12              @545
-    PathSkipRootA          = _PathSkipRootA@4                     @546
-    PathSkipRootW          = _PathSkipRootW@4                     @547
-    PathStripPathA         = _PathStripPathA@4                    @548
-    PathStripPathW         = _PathStripPathW@4                    @549
-    PathStripToRootA       = _PathStripToRootA@4                  @550
-    PathStripToRootW       = _PathStripToRootW@4                  @551
-  ; PathUndecorateA        = _PathUndecorateA@?                   @552  ; NT4
-  ; PathUndecorateW        = _PathUndecorateW@?                   @553  ; NT4
-  ; PathUnmakeSystemFolderA= _PathUnmakeSystemFolderA@?           @554
-  ; PathUnmakeSystemFolderW= _PathUnmakeSystemFolderW@?           @555
-    PathUnquoteSpacesA     = _PathUnquoteSpacesA@4                @556
-  ;*PathUnquoteSpacesAW    = _PathUnquoteSpacesAW@4
-    PathUnquoteSpacesW     = _PathUnquoteSpacesW@4                @557
-  ; SHAutoComplete         = _SHAutoComplete@?                    @558  ; NT4
-  ; SHCopyKeyA             = _SHCopyKeyA@?                        @559  ; NT4
-  ; SHCopyKeyW             = _SHCopyKeyW@?                        @560  ; NT4
-  ; SHCreateShellPalette   = _SHCreateShellPalette@?              @561
-  ; SHCreateStreamOnFileA  = _SHCreateStreamOnFileA@?             @562  ; NT4
-  ; SHCreateStreamOnFileAOld = _SHCreateStreamOnFileAOld@?        @315  ; NT4
-  ; SHCreateStreamOnFileW  = _SHCreateStreamOnFileW@?             @563  ; NT4
-  ; SHCreateStreamOnFileWOld = _SHCreateStreamOnFileWOld@?        @316  ; NT4
-  ; SHCreateStreamWrapper  = _SHCreateStreamWrapper@?             @564  ; NT4
-  ; SHCreateThread         = _SHCreateThread@?                    @565  ; NT4
-  ; SHDeleteEmptyKeyA      = _SHDeleteEmptyKeyA@?                 @566
-  ; SHDeleteEmptyKeyW      = _SHDeleteEmptyKeyW@?                 @567
-  ; SHDeleteKeyA           = _SHDeleteKeyA@?                      @568
-  ; SHDeleteKeyW           = _SHDeleteKeyW@?                      @569
-  ; SHDeleteOrphanKeyA     = _SHDeleteOrphanKeyA@?                @570
-  ; SHDeleteOrphanKeyW     = _SHDeleteOrphanKeyW@?                @571
-  ; SHDeleteValueA         = _SHDeleteValueA@?                    @572
-  ; SHDeleteValueW         = _SHDeleteValueW@?                    @573
-  ; SHEnumKeyExA           = _SHEnumKeyExA@?                      @574
-  ; SHEnumKeyExW           = _SHEnumKeyExW@?                      @575
-  ; SHEnumValueA           = _SHEnumValueA@?                      @576
-  ; SHEnumValueW           = _SHEnumValueW@?                      @577
-  ; SHGetInverseCMAP       = _SHGetInverseCMAP@?                  @579
-  ; SHGetThreadRef         = _SHGetThreadRef@?                    @580
-    SHGetValueA            = _SHGetValueA@24                      @581
-    SHGetValueW            = _SHGetValueW@24                      @582
-  ; SHIsLowMemoryMachine   = _SHIsLowMemoryMachine@?              @583
-  ; SHOpenRegStream2A      = _SHOpenRegStream2A@?                 @584
-  ; SHOpenRegStream2W      = _SHOpenRegStream2W@?                 @585
-  ; SHOpenRegStreamA       = _SHOpenRegStreamA@?                  @586
-  ; SHOpenRegStreamW       = _SHOpenRegStreamW@?                  @587
-  ; SHQueryInfoKeyA        = _SHQueryInfoKeyA@?                   @588
-  ; SHQueryInfoKeyW        = _SHQueryInfoKeyW@?                   @589
-  ; SHQueryValueExA        = _SHQueryValueExA@?                   @590
-  ; SHQueryValueExW        = _SHQueryValueExW@?                   @591
-  ; SHRegCloseUSKey        = _SHRegCloseUSKey@?                   @592
-  ; SHRegCreateUSKeyA      = _SHRegCreateUSKeyA@?                 @593
-  ; SHRegCreateUSKeyW      = _SHRegCreateUSKeyW@?                 @594
-  ; SHRegDeleteEmptyUSKeyA = _SHRegDeleteEmptyUSKeyA@?            @595
-  ; SHRegDeleteEmptyUSKeyW = _SHRegDeleteEmptyUSKeyW@?            @596
-  ; SHRegDeleteUSKeyA      = _SHRegDeleteUSKeyA@?                 @597
-  ; SHRegDeleteUSKeyW      = _SHRegDeleteUSKeyW@?                 @598
-  ; SHRegDuplicateHKey     = _SHRegDuplicateHKey@?                @599
-  ; SHRegEnumUSKeyA        = _SHRegEnumUSKeyA@?                   @600
-  ; SHRegEnumUSKeyW        = _SHRegEnumUSKeyW@?                   @601
-  ; SHRegEnumUSValueA      = _SHRegEnumUSValueA@?                 @602
-  ; SHRegEnumUSValueA      = _SHRegEnumUSValueW@?                 @603
-    SHRegGetBoolUSValueA   = _SHRegGetBoolUSValueA@20             @604
-    SHRegGetBoolUSValueW   = _SHRegGetBoolUSValueW@20             @605
-    SHRegGetUSValueA       = _SHRegGetUSValueA@32                 @606
-    SHRegGetUSValueW       = _SHRegGetUSValueW@32                 @607
-  ; SHRegOpenUSKeyA        = _SHRegOpenUSKeyA@?                   @608
-  ; SHRegOpenUSKeyW        = _SHRegOpenUSKeyW@?                   @609
-  ; SHRegQueryInfoKeyA     = _SHRegQueryInfoKeyA@?                @610
-  ; SHRegQueryInfoKeyW     = _SHRegQueryInfoKeyW@?                @611
-  ; SHRegQueryUSValueA     = _SHRegQueryUSValueA@?                @612
-  ; SHRegQueryUSValueW     = _SHRegQueryUSValueW@?                @613
-  ; SHRegSetUSValueA       = _SHRegSetUSValueA@?                  @614
-  ; SHRegSetUSValueW       = _SHRegSetUSValueW@?                  @615
-  ; SHRegWriteUSValueA     = _SHRegWriteUSValueA@?                @616
-  ; SHRegWriteUSValueW     = _SHRegWriteUSValueW@?                @617
-  ; SHSetThreadRef         = _SHSetThreadRef@?                    @618  ; NT4
-  ; SHSetValueA            = _SHSetValueA@?                       @619  ; NT4
-  ; SHSetValueW            = _SHSetValueW@?                       @620  ; NT4
-  ; SHSkipJunction         = _SHSkipJunction@?                    @621  ; NT4
-  ; SHStrDupA              = _SHStrDupA@?                         @622  ; NT4
-  ; SHStrDupW              = _SHStrDupW@?                         @623  ; NT4
-
-  ; StrCSpnA               = _StrCSpnA@?                          @624
-  ; StrCSpnIA              = _StrCSpnIA@?                         @625
-  ; StrCSpnIW              = _StrCSpnIW@?                         @626
-  ; StrCSpnW               = _StrCSpnW@?                          @627
-  ; StrCatBuffA            = _StrCatBuffA@?                       @628
-  ; StrCatBuffW            = _StrCatBuffW@?                       @629
-  ; StrCatA ?
-  ; StrCatW                = _StrCatW@?                           @630
-    StrChrA                = _StrChrA@8                           @631
-    StrChrIA               = _StrChrIA@8                          @632
-    StrChrIW               = _StrChrIW@8                          @633
-    StrChrW                = _StrChrW@8                           @634
-  ; StrCmpIA ?
-  ; StrCmpIW               = _StrCmpIW@?                          @635
-  ; StrCmpNA               = _StrCmpNA@12                         @636
-    StrCmpNIA              = _StrCmpNIA@12                        @637
-    StrCmpNIW              = _StrCmpNIW@12                        @638
-  ; StrCmpNW               = _StrCmpNW@12                         @639
-  ; StrCmpA ?
-  ; StrCmpW                = _StrCmpW@?                           @640
-  ; StrCpyNW               = _StrCpyNW@?                          @641
-  ; StrCpyW                = _StrCpyW@?                           @642
-  ; StrDupA                = _StrDupA@?                           @643
-  ; StrDupW                = _StrDupW@?                           @644
-  ; StrFormatByteSize64A   = _StrFormatByteSize64A@?              @645  ; NT4
-    StrFormatByteSizeA     = _StrFormatByteSizeA@12               @646
-    StrFormatByteSizeW     = _StrFormatByteSizeW@12               @647
-  ; StrFormatKBSizeA       = _StrFormatKBSizeA@?                  @648  ; NT4
-  ; StrFormatKBSizeW       = _StrFormatKBSizeW@?                  @649  ; NT4
-  ; StrFromTimeIntervalA   = _StrFromTimeIntervalA@?              @650
-  ; StrFromTimeIntervalW   = _StrFromTimeIntervalW@?              @651
-  ; StrIsIntlEqualA        = _StrIsIntlEqualA@?                   @652
-  ; StrIsIntlEqualW        = _StrIsIntlEqualW@?                   @653
-  ; StrNCatA               = _StrNCatA@?                          @654
-  ; StrNCatW               = _StrNCatW@?                          @655
-  ; StrPBrkA               = _StrPBrkA@?                          @656
-  ; StrPBrkW               = _StrPBrkW@?                          @657
-    StrRChrA               = _StrRChrA@12                         @658
-  ; StrRChrIA              = _StrRChrIA@12                        @659
-  ; StrRChrIW              = _StrRChrIW@12                        @660
-    StrRChrW               = _StrRChrW@12                         @661
-  ; StrRStrIA              = _StrRStrIA@?                         @662
-  ; StrRStrIW              = _StrRStrIW@?                         @663
-    StrRetToBufA           = _StrRetToBufA@16                     @664
-    StrRetToBufW           = _StrRetToBufW@16                     @665
-  ; StrRetToStrA           = _StrRetToStrA@16                     @666
-  ; StrRetToStrW           = _StrRetToStrW@16                     @667
-  ; StrSpnA                = _StrSpnA@?                           @668
-  ; StrSpnW                = _StrSpnW@?                           @669
-  ; StrStrA                = _StrStrA@8                           @670
-    StrStrIA               = _StrStrIA@8                          @671
-    StrStrIW               = _StrStrIW@8                          @672
-  ; StrStrW                = _StrStrW@8                           @673
-    StrToIntA              = _StrToIntA@4                         @674
-  ; StrToIntExA            = _StrToIntExA@?                       @675
-  ; StrToIntExW            = _StrToIntExW@?                       @676
-  ; StrToIntW              = _StrToIntW@4                         @677
-  ; StrTrimA               = _StrTrimA@?                          @678
-  ; StrTrimW               = _StrTrimW@?                          @679
-    UrlApplySchemeA        = _UrlApplySchemeA@16                  @680
-    UrlApplySchemeW        = _UrlApplySchemeW@16                  @681
-    UrlCanonicalizeA       = _UrlCanonicalizeA@16                 @682
-    UrlCanonicalizeW       = _UrlCanonicalizeW@16                 @683
-    UrlCombineA            = _UrlCombineA@20                      @684
-    UrlCombineW            = _UrlCombineW@20                      @685
-    UrlCompareA            = _UrlCompareA@12                      @686
-    UrlCompareW            = _UrlCompareW@12                      @687
-    UrlCreateFromPathA     = _UrlCreateFromPathA@16               @688
-    UrlCreateFromPathW     = _UrlCreateFromPathW@16               @689
-    UrlEscapeA             = _UrlEscapeA@16                       @690
-    UrlEscapeW             = _UrlEscapeW@16                       @691
-    UrlGetLocationA        = _UrlGetLocationA@4                   @692
-    UrlGetLocationW        = _UrlGetLocationW@4                   @693
-    UrlGetPartA            = _UrlGetPartA@20                      @694
-    UrlGetPartW            = _UrlGetPartW@20                      @695
-    UrlHashA               = _UrlHashA@12                         @696
-    UrlHashW               = _UrlHashW@12                         @697
-    UrlIsA                 = _UrlIsA@8                            @698
-    UrlIsNoHistoryA        = _UrlIsNoHistoryA@4                   @699
-    UrlIsNoHistoryW        = _UrlIsNoHistoryW@4                   @700
-    UrlIsOpaqueA           = _UrlIsOpaqueA@4                      @701
-    UrlIsOpaqueW           = _UrlIsOpaqueW@4                      @702
-    UrlIsW                 = _UrlIsW@8                            @703
-    UrlUnescapeA           = _UrlUnescapeA@16                     @704
-    UrlUnescapeW           = _UrlUnescapeW@16                     @705
-  ; _SHGetInstanceExplorer@4 = __SHGetInstanceExplorer@4@?        @578  ; NT4
-  ; wnsprintfA             = _wnsprintfA@?                        @706  ; NT4
-  ; wnsprintfW             = _wnsprintfW@?                        @707  ; NT4
-  ; wvnsprintfA            = _wvnsprintfA@?                       @708  ; NT4
-  ; wvnsprintfW            = _wvnsprintfW@?                       @709  ; NT4
+  ; ChrCmpIA               = _ChrCmpIA@?                          @162
+  ; ChrCmpIW               = _ChrCmpIW@?                          @163
+  ; DllGetVersion          = _DllGetVersion@?                     @164
+  ; GetMenuPosFromID       = _GetMenuPosFromID@?                  @165
+  ; HashData               = _HashData@?                          @166
+  ; IntlStrEqWorkerA       = _IntlStrEqWorkerA@?                  @167
+  ; IntlStrEqWorkerW       = _IntlStrEqWorkerW@?                  @168
+    PathAddBackslashA      = _PathAddBackslashA@4                 @169
+    PathAddBackslashW      = _PathAddBackslashW@4                 @170
+    PathAddExtensionA      = _PathAddExtensionA@8                 @171
+    PathAddExtensionW      = _PathAddExtensionW@8                 @172
+    PathAppendA            = _PathAppendA@8                       @173
+    PathAppendW            = _PathAppendW@8                       @174
+    PathBuildRootA         = _PathBuildRootA@8                    @175
+    PathBuildRootW         = _PathBuildRootW@8                    @176
+    PathCanonicalizeA      = _PathCanonicalizeA@8                 @177
+    PathCanonicalizeW      = _PathCanonicalizeW@8                 @178
+    PathCombineA           = _PathCombineA@12                     @179
+    PathCombineW           = _PathCombineW@12                     @180
+  ; PathCommonPrefixA      = _PathCommonPrefixA@?                 @181
+  ; PathCommonPrefixW      = _PathCommonPrefixW@?                 @182
+  ; PathCompactPathA       = _PathCompactPathA@?                  @183
+  ; PathCompactPathExA     = _PathCompactPathExA@?                @184
+  ; PathCompactPathExW     = _PathCompactPathExW@?                @185
+  ; PathCompactPathW       = _PathCompactPathW@?                  @186
+  ; PathCreateFromUrlA     = _PathCreateFromUrlA@?                @187
+  ; PathCreateFromUrlW     = _PathCreateFromUrlW@?                @188
+    PathFileExistsA        = _PathFileExistsA@4                   @189
+    PathFileExistsW        = _PathFileExistsW@4                   @190
+    PathFindExtensionA     = _PathFindExtensionA@4                @191
+    PathFindExtensionW     = _PathFindExtensionW@4                @192
+    PathFindFileNameA      = _PathFindFileNameA@4                 @193
+    PathFindFileNameW      = _PathFindFileNameW@4                 @194
+    PathFindNextComponentA = _PathFindNextComponentA@4            @195
+    PathFindNextComponentW = _PathFindNextComponentW@4            @196
+    PathFindOnPathA        = _PathFindOnPathA@8                   @197
+    PathFindOnPathW        = _PathFindOnPathW@8                   @198
+    PathGetArgsA           = _PathGetArgsA@4                      @199
+    PathGetArgsW           = _PathGetArgsW@4                      @200
+  ; PathGetCharTypeA       = _PathGetCharTypeA@?                  @201
+  ; PathGetCharTypeW       = _PathGetCharTypeW@?                  @202
+    PathGetDriveNumberA    = _PathGetDriveNumberA@4               @203
+    PathGetDriveNumberW    = _PathGetDriveNumberW@4               @204
+  ; PathIsContentTypeA     = _PathIsContentTypeA@?                @205
+  ; PathIsContentTypeW     = _PathIsContentTypeW@?                @206
+    PathIsDirectoryA       = _PathIsDirectoryA@4                  @207
+  ; PathIsDirectoryW       = _PathIsDirectoryW@?                  @208
+  ; PathIsFileSpecA        = _PathIsFileSpecA@?                   @209
+  ; PathIsFileSpecW        = _PathIsFileSpecW@?                   @210
+  ; PathIsPrefixA          = _PathIsPrefixA@?                     @211
+  ; PathIsPrefixW          = _PathIsPrefixW@?                     @212
+    PathIsRelativeA        = _PathIsRelativeA@4                   @213
+    PathIsRelativeW        = _PathIsRelativeW@4                   @214
+    PathIsRootA            = _PathIsRootA@4                       @215
+    PathIsRootW            = _PathIsRootW@4                       @216
+    PathIsSameRootA        = _PathIsSameRootA@8                   @217
+    PathIsSameRootW        = _PathIsSameRootW@8                   @218
+  ; PathIsSystemFolderA    = _PathIsSystemFolderA@?               @219
+  ; PathIsSystemFolderW    = _PathIsSystemFolderW@?               @220
+    PathIsUNCA             = _PathIsUNCA@4                        @221
+  ; PathIsUNCServerA       = _PathIsUNCServerA@?                  @222
+  ; PathIsUNCServerShareA  = _PathIsUNCServerShareA@?             @223
+  ; PathIsUNCServerShareW  = _PathIsUNCServerShareW@?             @224
+  ; PathIsUNCServerW       = _PathIsUNCServerW@?                  @225
+    PathIsUNCW             = _PathIsUNCW@4                        @226
+    PathIsURLA             = _PathIsURLA@4                        @227
+    PathIsURLW             = _PathIsURLW@4                        @228
+  ; PathMakePrettyA        = _PathMakePrettyA@?                   @229
+  ; PathMakePrettyW        = _PathMakePrettyW@?                   @230
+  ; PathMakeSystemFolderA  = _PathMakeSystemFolderA@?             @231
+  ; PathMakeSystemFolderW  = _PathMakeSystemFolderW@?             @232
+    PathMatchSpecA         = _PathMatchSpecA@8                    @233
+    PathMatchSpecW         = _PathMatchSpecW@8                    @234
+    PathParseIconLocationA = _PathParseIconLocationA@4            @235
+    PathParseIconLocationW = _PathParseIconLocationW@4            @236
+    PathQuoteSpacesA       = _PathQuoteSpacesA@4                  @237
+    PathQuoteSpacesW       = _PathQuoteSpacesW@4                  @238
+  ;  PathRelativePathToA    = _PathRelativePathToA@?              @239
+  ;  PathRelativePathToW    = _PathRelativePathToW@?              @240
+    PathRemoveArgsA        = _PathRemoveArgsA@4                   @241
+    PathRemoveArgsW        = _PathRemoveArgsW@4                   @242
+    PathRemoveBackslashA   = _PathRemoveBackslashA@4              @243
+    PathRemoveBackslashW   = _PathRemoveBackslashW@4              @244
+    PathRemoveBlanksA      = _PathRemoveBlanksA@4                 @245
+    PathRemoveBlanksW      = _PathRemoveBlanksW@4                 @246
+    PathRemoveExtensionA   = _PathRemoveExtensionA@4              @247
+    PathRemoveExtensionW   = _PathRemoveExtensionW@4              @248
+    PathRemoveFileSpecA    = _PathRemoveFileSpecA@4               @249
+    PathRemoveFileSpecW    = _PathRemoveFileSpecW@4               @250
+  ; PathRenameExtensionA   = _PathRenameExtensionA@?              @251
+  ; PathRenameExtensionW   = _PathRenameExtensionW@?              @252
+  ;  PathSearchAndQualifyA  = _PathSearchAndQualifyA@?            @253
+  ;  PathSearchAndQualifyW  = _PathSearchAndQualifyW@?            @254
+    PathSetDlgItemPathA    = _PathSetDlgItemPathA@12              @255
+    PathSetDlgItemPathW    = _PathSetDlgItemPathW@12              @256
+    PathSkipRootA          = _PathSkipRootA@4                     @257
+    PathSkipRootW          = _PathSkipRootW@4                     @258
+    PathStripPathA         = _PathStripPathA@4                    @259
+    PathStripPathW         = _PathStripPathW@4                    @260
+    PathStripToRootA       = _PathStripToRootA@4                  @261
+    PathStripToRootW       = _PathStripToRootW@4                  @262
+  ; PathUnmakeSystemFolderA= _PathUnmakeSystemFolderA@?           @263
+  ; PathUnmakeSystemFolderW= _PathUnmakeSystemFolderW@?           @264
+    PathUnquoteSpacesA     = _PathUnquoteSpacesA@4                @265
+    PathUnquoteSpacesW     = _PathUnquoteSpacesW@4                @266
+  ; SHCreateShellPalette   = _SHCreateShellPalette@?              @267
+  ; SHDeleteEmptyKeyA      = _SHDeleteEmptyKeyA@?                 @268
+  ; SHDeleteEmptyKeyW      = _SHDeleteEmptyKeyW@?                 @269
+  ; SHDeleteKeyA           = _SHDeleteKeyA@?                      @270
+  ; SHDeleteKeyW           = _SHDeleteKeyW@?                      @271
+  ; SHDeleteOrphanKeyA     = _SHDeleteOrphanKeyA@?                @272
+  ; SHDeleteOrphanKeyW     = _SHDeleteOrphanKeyW@?                @273
+  ; SHDeleteValueA         = _SHDeleteValueA@?                    @274
+  ; SHDeleteValueW         = _SHDeleteValueW@?                    @275
+  ; SHEnumKeyExA           = _SHEnumKeyExA@?                      @276
+  ; SHEnumKeyExW           = _SHEnumKeyExW@?                      @277
+  ; SHEnumValueA           = _SHEnumValueA@?                      @278
+  ; SHEnumValueW           = _SHEnumValueW@?                      @279
+  ; SHGetInverseCMAP       = _SHGetInverseCMAP@?                  @280
+    SHGetValueA            = _SHGetValueA@24                      @281
+    SHGetValueW            = _SHGetValueW@24                      @282
+  ; SHIsLowMemoryMachine   = _SHIsLowMemoryMachine@?              @283
+  ; SHOpenRegStreamA       = _SHOpenRegStreamA@?                  @284
+  ; SHOpenRegStreamW       = _SHOpenRegStreamW@?                  @285
+  ; SHQueryInfoKeyA        = _SHQueryInfoKeyA@?                   @286
+  ; SHQueryInfoKeyW        = _SHQueryInfoKeyW@?                   @287
+  ; SHQueryValueExA        = _SHQueryValueExA@?                   @288
+  ; SHQueryValueExW        = _SHQueryValueExW@?                   @289
+  ; SHRegCloseUSKey        = _SHRegCloseUSKey@?                   @290
+  ; SHRegCreateUSKeyA      = _SHRegCreateUSKeyA@?                 @291
+  ; SHRegCreateUSKeyW      = _SHRegCreateUSKeyW@?                 @292
+  ; SHRegDeleteEmptyUSKeyA = _SHRegDeleteEmptyUSKeyA@?            @293
+  ; SHRegDeleteEmptyUSKeyW = _SHRegDeleteEmptyUSKeyW@?            @294
+  ; SHRegDeleteUSKeyA      = _SHRegDeleteUSKeyA@?                 @295
+  ; SHRegDeleteUSKeyW      = _SHRegDeleteUSKeyW@?                 @296
+  ; SHRegEnumUSKeyA        = _SHRegEnumUSKeyA@?                   @297
+  ; SHRegEnumUSKeyW        = _SHRegEnumUSKeyW@?                   @298
+  ; SHRegEnumUSValueA      = _SHRegEnumUSValueA@?                 @299
+  ; SHRegEnumUSValueA      = _SHRegEnumUSValueW@?                 @300
+    SHRegGetBoolUSValueA   = _SHRegGetBoolUSValueA@20             @301
+    SHRegGetBoolUSValueW   = _SHRegGetBoolUSValueW@20             @302
+    SHRegGetUSValueA       = _SHRegGetUSValueA@32                 @303
+    SHRegGetUSValueW       = _SHRegGetUSValueW@32                 @304
+  ; SHRegOpenUSKeyA        = _SHRegOpenUSKeyA@?                   @305
+  ; SHRegOpenUSKeyW        = _SHRegOpenUSKeyW@?                   @306
+  ; SHRegQueryInfoKeyA     = _SHRegQueryInfoKeyA@?                @307
+  ; SHRegQueryInfoKeyW     = _SHRegQueryInfoKeyW@?                @308
+  ; SHRegQueryUSValueA     = _SHRegQueryUSValueA@?                @309
+  ; SHRegQueryUSValueW     = _SHRegQueryUSValueW@?                @310
+  ; SHRegSetUSValueA       = _SHRegSetUSValueA@?                  @311
+  ; SHRegSetUSValueW       = _SHRegSetUSValueW@?                  @312
+  ; SHRegWriteUSValueA     = _SHRegWriteUSValueA@?                @313
+  ; SHRegWriteUSValueW     = _SHRegWriteUSValueW@?                @314
+  ; SHSetValueA            = _SHSetValueA@?                       @315
+  ; SHSetValueW            = _SHSetValueW@?                       @316
+
+  ; StrCSpnA               = _StrCSpnA@?                          @317
+  ; StrCSpnIA              = _StrCSpnIA@?                         @318
+  ; StrCSpnIW              = _StrCSpnIW@?                         @319
+  ; StrCSpnW               = _StrCSpnW@?                          @320
+  ; StrCatW                = _StrCatW@?                           @321
+    StrChrA                = _StrChrA@8                           @322
+    StrChrIA               = _StrChrIA@8                          @323
+    StrChrIW               = _StrChrIW@8                          @324
+    StrChrW                = _StrChrW@8                           @325
+  ; StrCmpIW               = _StrCmpIW@?                          @326
+  ; StrCmpNA               = _StrCmpNA@12                         @327
+    StrCmpNIA              = _StrCmpNIA@12                        @328
+    StrCmpNIW              = _StrCmpNIW@12                        @329
+  ; StrCmpNW               = _StrCmpNW@12                         @330
+  ; StrCmpW                = _StrCmpW@?                           @331
+  ; StrCpyNW               = _StrCpyNW@?                          @332
+  ; StrCpyW                = _StrCpyW@?                           @333
+  ; StrDupA                = _StrDupA@?                           @334
+  ; StrDupW                = _StrDupW@?                           @335
+    StrFormatByteSizeA     = _StrFormatByteSizeA@12               @336
+    StrFormatByteSizeW     = _StrFormatByteSizeW@12               @337
+  ; StrFromTimeIntervalA   = _StrFromTimeIntervalA@?              @338
+  ; StrFromTimeIntervalW   = _StrFromTimeIntervalW@?              @339
+  ; StrIsIntlEqualA        = _StrIsIntlEqualA@?                   @340
+  ; StrIsIntlEqualW        = _StrIsIntlEqualW@?                   @341
+  ; StrNCatA               = _StrNCatA@?                          @342
+  ; StrNCatW               = _StrNCatW@?                          @343
+  ; StrPBrkA               = _StrPBrkA@?                          @344
+  ; StrPBrkW               = _StrPBrkW@?                          @345
+    StrRChrA               = _StrRChrA@12                         @346
+  ; StrRChrIA              = _StrRChrIA@12                        @347
+  ; StrRChrIW              = _StrRChrIW@12                        @348
+    StrRChrW               = _StrRChrW@12                         @349
+  ; StrRStrIA              = _StrRStrIA@?                         @350
+  ; StrRStrIW              = _StrRStrIW@?                         @351
+  ; StrSpnA                = _StrSpnA@?                           @352
+  ; StrSpnW                = _StrSpnW@?                           @353
+  ; StrStrA                = _StrStrA@8                           @354
+    StrStrIA               = _StrStrIA@8                          @355
+    StrStrIW               = _StrStrIW@8                          @356
+  ; StrStrW                = _StrStrW@8                           @357
+    StrToIntA              = _StrToIntA@4                         @358
+  ; StrToIntExA            = _StrToIntExA@?                       @359
+  ; StrToIntExW            = _StrToIntExW@?                       @360
+  ; StrToIntW              = _StrToIntW@4                         @361
+  ; StrTrimA               = _StrTrimA@?                          @362
+  ; StrTrimW               = _StrTrimW@?                          @363
+    UrlApplySchemeA        = _UrlApplySchemeA@16                  @364
+    UrlApplySchemeW        = _UrlApplySchemeW@16                  @365
+    UrlCanonicalizeA       = _UrlCanonicalizeA@16                 @366
+    UrlCanonicalizeW       = _UrlCanonicalizeW@16                 @367
+    UrlCombineA            = _UrlCombineA@20                      @368
+    UrlCombineW            = _UrlCombineW@20                      @369
+    UrlCompareA            = _UrlCompareA@12                      @370
+    UrlCompareW            = _UrlCompareW@12                      @371
+    UrlCreateFromPathA     = _UrlCreateFromPathA@16               @372
+    UrlCreateFromPathW     = _UrlCreateFromPathW@16               @373
+    UrlEscapeA             = _UrlEscapeA@16                       @374
+    UrlEscapeW             = _UrlEscapeW@16                       @375
+    UrlGetLocationA        = _UrlGetLocationA@4                   @376
+    UrlGetLocationW        = _UrlGetLocationW@4                   @377
+    UrlGetPartA            = _UrlGetPartA@20                      @378
+    UrlGetPartW            = _UrlGetPartW@20                      @379
+    UrlHashA               = _UrlHashA@12                         @380
+    UrlHashW               = _UrlHashW@12                         @381
+    UrlIsA                 = _UrlIsA@8                            @382
+    UrlIsNoHistoryA        = _UrlIsNoHistoryA@4                   @383
+    UrlIsNoHistoryW        = _UrlIsNoHistoryW@4                   @384
+    UrlIsOpaqueA           = _UrlIsOpaqueA@4                      @385
+    UrlIsOpaqueW           = _UrlIsOpaqueW@4                      @386
+    UrlIsW                 = _UrlIsW@8                            @387
+    UrlUnescapeA           = _UrlUnescapeA@16                     @388
+    UrlUnescapeW           = _UrlUnescapeW@16                     @389
 
    _PathIsRootAW@4                      @1000
Index: trunk/src/shlwapi/string.cpp
===================================================================
--- trunk/src/shlwapi/string.cpp	(revision 3561)
+++ trunk/src/shlwapi/string.cpp	(revision 3562)
@@ -1,3 +1,3 @@
-/* $Id: string.cpp,v 1.1 2000-05-15 02:43:17 phaller Exp $ */
+/* $Id: string.cpp,v 1.2 2000-05-19 12:10:04 sandervl Exp $ */
 
 /*
@@ -306,45 +306,4 @@
         return wptr;
 }
-
-/*************************************************************************
-* StrFormatByteSize                             [SHLWAPI]
-*/
-LPSTR WINAPI StrFormatByteSizeA ( DWORD dw, LPSTR pszBuf, UINT cchBuf )
-{       char buf[64];
-        TRACE("%lx %p %i\n", dw, pszBuf, cchBuf);
-        if ( dw<1024L )
-        { sprintf (buf,"%3.0f bytes", (FLOAT)dw);
-        }
-        else if ( dw<1048576L)
-        { sprintf (buf,"%3.2f KB", (FLOAT)dw/1024);
-        }
-        else if ( dw < 1073741824L)
-        { sprintf (buf,"%3.2f MB", (FLOAT)dw/1048576L);
-        }
-        else
-        { sprintf (buf,"%3.2f GB", (FLOAT)dw/1073741824L);
-        }
-        lstrcpynA (pszBuf, buf, cchBuf);
-        return pszBuf;
-}
-LPWSTR WINAPI StrFormatByteSizeW ( DWORD dw, LPWSTR pszBuf, UINT cchBuf )
-{       char buf[64];
-        TRACE("%lx %p %i\n", dw, pszBuf, cchBuf);
-        if ( dw<1024L )
-        { sprintf (buf,"%3.0f bytes", (FLOAT)dw);
-        }
-        else if ( dw<1048576L)
-        { sprintf (buf,"%3.2f KB", (FLOAT)dw/1024);
-        }
-        else if ( dw < 1073741824L)
-        { sprintf (buf,"%3.2f MB", (FLOAT)dw/1048576L);
-        }
-        else
-        { sprintf (buf,"%3.2f GB", (FLOAT)dw/1073741824L);
-        }
-        lstrcpynAtoW (pszBuf, buf, cchBuf);
-        return pszBuf;
-}
-
 
 /************************************************************************
@@ -556,2 +515,46 @@
   return NULL;
 }
+
+/*************************************************************************
+ * StrFormatByteSizeA				[SHLWAPI]
+ */
+ODINFUNCTION3(LPSTR, StrFormatByteSizeA, DWORD, dw, LPSTR, pszBuf, UINT, cchBuf )
+{	char buf[64];
+	TRACE("%lx %p %i\n", dw, pszBuf, cchBuf);
+	if ( dw<1024L )
+	{ sprintf (buf,"%3.1f bytes", (FLOAT)dw);
+	}
+	else if ( dw<1048576L)
+	{ sprintf (buf,"%3.1f KB", (FLOAT)dw/1024);
+	}
+	else if ( dw < 1073741824L)
+	{ sprintf (buf,"%3.1f MB", (FLOAT)dw/1048576L);
+	}
+	else
+	{ sprintf (buf,"%3.1f GB", (FLOAT)dw/1073741824L);
+	}
+	lstrcpynA (pszBuf, buf, cchBuf);
+	return pszBuf;	
+}
+
+/*************************************************************************
+ * StrFormatByteSizeW				[SHLWAPI]
+ */
+ODINFUNCTION3(LPWSTR, StrFormatByteSizeW, DWORD, dw, LPWSTR, pszBuf, UINT, cchBuf)
+{	char buf[64];
+	TRACE("%lx %p %i\n", dw, pszBuf, cchBuf);
+	if ( dw<1024L )
+	{ sprintf (buf,"%3.1f bytes", (FLOAT)dw);
+	}
+	else if ( dw<1048576L)
+	{ sprintf (buf,"%3.1f KB", (FLOAT)dw/1024);
+	}
+	else if ( dw < 1073741824L)
+	{ sprintf (buf,"%3.1f MB", (FLOAT)dw/1048576L);
+	}
+	else
+	{ sprintf (buf,"%3.1f GB", (FLOAT)dw/1073741824L);
+	}
+	lstrcpynAtoW (pszBuf, buf, cchBuf);
+	return pszBuf;	
+}
