diff --git a/ANNOUNCE b/ANNOUNCE index 605e438639c..3c55f20bdf0 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -1,15 +1,15 @@ -This is release 980628 of Wine, the MS Windows emulator. This is still a +This is release 980712 of Wine, the MS Windows emulator. This is still a developer's only release. There are many bugs and many unimplemented API features. Most applications still do not work correctly. Patches should be submitted to "julliard@lrc.epfl.ch". Please don't forget to include a ChangeLog entry. -WHAT'S NEW with Wine-980628: (see ChangeLog for details) - - Common controls improvements. - - Win16 DLL snooping. - - Preliminary internal Postscript driver. - - Improved DIB section handling. +WHAT'S NEW with Wine-980712: (see ChangeLog for details) + - More common controls stuff. + - Win32s VxD support. + - Beginnings of client/server architecture. + - More NLS support. - Lots of bug fixes. See the README file in the distribution for installation instructions. @@ -18,10 +18,10 @@ Because of lags created by using mirror, this message may reach you before the release is available at the ftp sites. The sources will be available from the following locations: - ftp://sunsite.unc.edu/pub/Linux/ALPHA/wine/development/Wine-980628.tar.gz - ftp://tsx-11.mit.edu/pub/linux/ALPHA/Wine/development/Wine-980628.tar.gz - ftp://ftp.infomagic.com/pub/mirrors/linux/sunsite/ALPHA/wine/development/Wine-980628.tar.gz - ftp://ftp.progsoc.uts.edu.au/pub/Wine/development/Wine-980628.tar.gz + ftp://sunsite.unc.edu/pub/Linux/ALPHA/wine/development/Wine-980712.tar.gz + ftp://tsx-11.mit.edu/pub/linux/ALPHA/Wine/development/Wine-980712.tar.gz + ftp://ftp.infomagic.com/pub/mirrors/linux/sunsite/ALPHA/wine/development/Wine-980712.tar.gz + ftp://ftp.progsoc.uts.edu.au/pub/Wine/development/Wine-980712.tar.gz It should also be available from any site that mirrors tsx-11 or sunsite. diff --git a/AUTHORS b/AUTHORS index 6e4acf41718..04c6de34fe5 100644 --- a/AUTHORS +++ b/AUTHORS @@ -57,6 +57,7 @@ Bang Jun-Young, Pavel Kankovsky, Jochen Karrer, Andreas Kirschbaum, +Rein Klazes, Albrecht Kleine, Eric Kohl, Jon Konrath, @@ -66,6 +67,7 @@ Anand Kumria, Scott A. Laird, David Lee Lambert, Andrew Lewycky, +Per Lindström, Martin von Loewis, Michiel van Loon, Kenneth MacDonald, @@ -102,6 +104,7 @@ Daniel Schepler, Peter Schlaile, Ulrich Schmid, Bernd Schmidt, +Juergen Schmied, Ingo Schneider, Victor Schneider, Yngvi Sigurjonsson, diff --git a/ChangeLog b/ChangeLog index 143d7613a67..f65a7e0e7e7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,209 @@ +---------------------------------------------------------------------- +Sun Jul 12 16:23:36 1998 Alexandre Julliard + + * [server/*] [scheduler/client.c] (new files) + [scheduler/sysdeps.c] [scheduler/thread.c] [scheduler/process.c] + Beginnings of client/server communication for inter-process + synchronisation. + +Sat Jul 11 19:45:45 1998 Ulrich Weigand + + * [include/bitmap.h] [objects/bitmap.c] [objects/dib.c] + [objects/oembitmap.c] + Speed up DIB section handling by using pre-allocated colormap and + XImage. Moved DIB section data out of general BITMAPOBJ structure. + Bugfix: GetDIBits32 would overwrite one byte beyond bitmap data. + + * [if1632/shell.spec] [if1632/kernel.spec] [win32/kernel32.c] + More verbose error message if ThunkConnect fails. + Implemented KERNEL_475. + + * [files/profile.c] [ole/ole2nls.c] + Minor bugfixes. + + * [if1632/builtin.c] [if1632/kernel.spec] [include/task.h] + [loader/ne/module.c] [loader/task.c] + Implemented KERNEL.THHOOK. + + * [if1632/wprocs.spec] [include/process.h] [msdos/dpmi.c] [msdos/vxd.c] + Implemented Win32s VxD services (W32S.386). + +Sat Jul 11 17:52:23 1998 Huw D M Davies + + * [graphics/x11drv/xfont.c] [graphics/x11drv/text.c] + [include/x11font.h] + Improve handling of rotated X11 fonts. Metrics/extents should now be + correct. ExtTextOut should behave better (still doesn't handle lpDx). + + * [graphics/painting.c] + DrawFocusRect32: Don't do anything if width or height are zero. + +Sat Jul 11 15:21:35 1998 Andreas Mohr <100.30936@germany.net> + + * [files/profile.c] [include/windows.h] + The length arguments of *Profile*() need to be treated + as UINTxx instead of INTxx. + + * [graphics/env.c] [graphics/win16drv/init.c] [include/print.h] + [misc/printdrv.c] + Many printer driver fixes/changes (many thanks go to Huw !). + Most printers should work again ;) + + * [memory/atom.c] + Fixed ATOM_AddAtom to store atoms exactly like Windows. + + * [*/*] + Fixed misc compiler warnings. + +Fri Jul 10 15:58:36 1998 Marcus Meissner + + * [files/drive.c] + Fixed GetDriveType16 to return DRIVE_REMOTE again. + + * [loader/pe_image.c][loader/module.c] + Look for modules that have the same modulename or the same + filename (they sometimes differ). + Fixed up fixup_imports, removed one of the loops. + + * [windows/winpos.c] + Added some NULL ptr checks. Needs more. + + * [graphics/ddraw.c] + Some stubs added. + + * [if1632/snoop.c] + Updated, made WINELIB compatible. + +Fri Jul 10 04:39:56 1998 Douglas Ridgway + + * [objects/enhmetafile.c] [relay32/gdi32.spec] + Small tweaks for documentation system. + +Thu Jul 9 22:00:18 1998 Eric Kohl + + * [controls/commctrl.c][include/commctrl.h][relay32/comctl32.spec] + Fixed GetEffectiveClientRect, CreateToolbarEx and CreateMappedBitmap. + Added stub for ShowHideMenuCtl. Added some documentation. + + * [documentation/common_controls] + Added and updated some information. + + * [controls/toolbar.c][include/toolbar.h] + Added string support. + + * [misc/shell.c][misc/shellord.c][relay32/shell.spec] + Changed names of undocumented functions to their real names and + fixed the export table. + + * [controls/imagelist.c][relay32/comctl32.spec] + Added stub for ImageList_SetFilter. + Fixed some minor bugs and typos. + + * [objects/font.c][include/windows.h][relay32/gdi32.spec] + Added stubs for GetCharacterPlacement32[A/W]. + + * [objects/region.c][relay32/gdi32.spec] + Added stub for UNDOCUMENTED GetRandomRgn. + + * [controls/commctrl.c][controls/*.c][include/*.h] + Added dummy listview, pager, rebar, tooltips, trackbar and + treeview control. This keeps some programs from complaining. + +Thu Jul 9 11:23:58 1998 Rein Klazes + + * [graphics/painting.c] [graphics/*/init.c] + [graphics/x11drv/graphics.c] [relay32/gdi32.spec] + [if1632/gdi.spec] [include/gdi.h] [include/x11drv.h] + Implemented drawing bezier curves: PolyBezier16/32 and + PolyBezierTo16/32. + + * [graphics/x11drv/graphics.c] + Improved accuracy of several graphic routines, especially the + drawing of pie's. + + * [include/windows.h] [misc/spy.c] + Added 25 window messages related to programs based on MFC and/or OLE. + +Wed Jul 8 22:00:00 1998 James Juran + + * [documentation/wine.man] + Updated manpage. + + * [wine.ini] + Added section for Win95Look=true (commented out by default). + +Wed Jul 8 06:23:19 1998 Matthew Becker + + * [misc/registry.c] + Fixed a crash in RegEnumValue32A when the dwType parameter is + NULL. + + * [programs/regtest/regtest.c] + Improved the printing of errors. + + * [misc/ntdll.c] + Added stub for RtlFormatCurrentUserKeyPath. + + * [win32/console.c] + Added stub for ScrollConsoleScreenBuffer. + +Mon Jul 6 16:41:47 1998 Per Lindström + + * [include/windows.h] [relay32/kernel.spec] [win32/newfns.c] + Added stubs for SleepEx and TerminateProcess. + + * [rc/README] + Corrected a grammatical error. + +Mon Jul 3 12:00:00 1998 Juergen Schmied + + * [misc/shellord.c] + Put some TRACE in. + + * [memory/string.c] + Deleted unused variable in lstrcmpi32A. + + * [include/windows.h][memory/string.c] + Added functions WideCharToLocal32 LocalToWideChar32 for + OLE-strings + + * [include/shlobj.h][include/winerror.h][misc/shell.c] + [ole/folders.c] + Added definition of internal class pidlmgr. + Changed definitions of EnumIDList, IShellFolder. + Added some OLE error constants. + Implemented EnumIDList, IShellFolder, IClassFactory, + PidlMgr, SHELL32_DllGetClassObject, SHGetDesktopFolder, + SHGetSpecialFolderLocation (half), SHGetPathFromIDList + (!!This stuff is not finished yet!!) + + * [include/windows.h][misc/network][reley32/mpr.spec] + Added stubs for WNetConnectionDialog32[A|W|API]. + Added struct LPCONNECTDLGSTRUCT32[A|W] and some constants. + Added some SetLastError(WN_NO_NETWORK) to the stubs. + Fixed bufferhandling in WNetCancelConnection + Added stub for MultinetGetErrorText[A|W] + + * [ole/ole2nls.c] + Rewrote GetTimeFormat32A. + +Fri Jul 3 10:27:30 1998 Michael Poole + + * [graphics/ddraw.c] [tsx11/X11_calls] + Implement IDirectDrawPalette_GetEntries. + Use CopyColormapAndFree to avoid erasing previously-set + palette entries. + + * [graphics/ddraw.c] [include/ddraw.h] + [tools/make_X11wrappers] [tsx11/X11_calls] + Provide a preliminary, not-yet-working framework for doing + DirectDraw via Xlib or XShm as well as DGA. + +Tue Jun 30 00:16:09 1998 Marcel Baur + + * [ole/nls/*.nls] + Added remaining 22 locales (including arabic locales). + ---------------------------------------------------------------------- Sun Jun 28 18:37:02 1998 Alexandre Julliard @@ -4102,7 +4308,7 @@ Sun May 25 14:59:33 1997 Jimen Ching Fixed pointer copy of args keywords array. ---------------------------------------------------------------------- -Tue May 20 19:20:23 1997 Pablo Saratxaga +Tue May 20 19:20:23 1997 Pablo Saratxaga * [resources/sysres_Es.rc] Updated CHOOSE_FONT, CHOOSE_COLOR, EDITMENU for Spanish. @@ -4544,7 +4750,7 @@ Sat Feb 22 23:05:47 1997 Morten Welinder * [files/*] Fix function names in error messages. -Sat Feb 22 06:15:13 1997 Pablo Saratxaga +Sat Feb 22 06:15:13 1997 Pablo Saratxaga * [windows/keyboard.c] [windows/message.c] Support for more latin alphabet dead keys for iso-8859-{1,2,3,4,9} diff --git a/Makefile.in b/Makefile.in index 4f95dbd2ec8..e79008c898b 100644 --- a/Makefile.in +++ b/Makefile.in @@ -13,7 +13,6 @@ # Main target to build MAIN_TARGET = @MAIN_TARGET@ -LIB_TARGET = @LIB_TARGET@ # Directories @@ -44,6 +43,7 @@ LIBSUBDIRS = \ relay32 \ resources \ scheduler \ + server \ tsx11 \ win32 \ windows @@ -90,6 +90,7 @@ LIBOBJS = \ relay32/relay32.o \ resources/resources.o \ scheduler/scheduler.o \ + server/server.o \ tsx11/tsx11.o \ win32/win32.o \ windows/windows.o @@ -101,6 +102,8 @@ EMUOBJS = \ if1632/if1632.o \ miscemu/miscemu.o +LIB_TARGET = @LIB_TARGET@ + all: $(MAIN_TARGET) @MAKE_RULES@ diff --git a/configure b/configure index b008d4d3554..cbde259ca3c 100755 --- a/configure +++ b/configure @@ -16,6 +16,8 @@ ac_help="$ac_help --disable-emulator build only the Wine library, not the emulator" ac_help="$ac_help --enable-dll build the Wine library as a DLL" +ac_help="$ac_help + --disable-lib build the Wine without building libwine.a" ac_help="$ac_help --disable-debug compile out all debugging messages" ac_help="$ac_help @@ -576,6 +578,13 @@ if test "${enable_dll+set}" = set; then fi +# Check whether --enable-lib or --disable-lib was given. +if test "${enable_lib+set}" = set; then + enableval="$enable_lib" + if test "$enableval" = "no"; then LIB_TARGET="\$LIBOBJS"; fi +fi + + # Check whether --enable-debug or --disable-debug was given. if test "${enable_debug+set}" = set; then @@ -624,7 +633,7 @@ fi echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:628: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo "configure:637: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -653,7 +662,7 @@ fi # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:657: checking for $ac_word" >&5 +echo "configure:666: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -682,7 +691,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:686: checking for $ac_word" >&5 +echo "configure:695: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -730,7 +739,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:734: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:743: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -740,11 +749,11 @@ ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:757: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -764,12 +773,12 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:768: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:777: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:773: checking whether we are using GNU C" >&5 +echo "configure:782: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -778,7 +787,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:782: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:791: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -793,7 +802,7 @@ if test $ac_cv_prog_gcc = yes; then ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:797: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:806: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -821,7 +830,7 @@ else fi echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:825: checking how to run the C preprocessor" >&5 +echo "configure:834: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -836,13 +845,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:846: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:855: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then : @@ -853,13 +862,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:863: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:872: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then : @@ -886,7 +895,7 @@ echo "$ac_t""$CPP" 1>&6 # Uses ac_ vars as temps to allow command line to override cache and checks. # --without-x overrides everything else, but does not touch the cache. echo $ac_n "checking for X""... $ac_c" 1>&6 -echo "configure:890: checking for X" >&5 +echo "configure:899: checking for X" >&5 # Check whether --with-x or --without-x was given. if test "${with_x+set}" = set; then @@ -948,12 +957,12 @@ if test "$ac_x_includes" = NO; then # First, try using that file with no special directory specified. cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:957: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:966: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -1022,14 +1031,14 @@ if test "$ac_x_libraries" = NO; then ac_save_LIBS="$LIBS" LIBS="-l$x_direct_test_library $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1042: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* LIBS="$ac_save_LIBS" # We can link X programs with no special library path. @@ -1135,17 +1144,17 @@ else case "`(uname -sr) 2>/dev/null`" in "SunOS 5"*) echo $ac_n "checking whether -R must be followed by a space""... $ac_c" 1>&6 -echo "configure:1139: checking whether -R must be followed by a space" >&5 +echo "configure:1148: checking whether -R must be followed by a space" >&5 ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1158: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_R_nospace=yes else @@ -1161,14 +1170,14 @@ rm -f conftest* else LIBS="$ac_xsave_LIBS -R $x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1181: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_R_space=yes else @@ -1200,7 +1209,7 @@ rm -f conftest* # libraries were built with DECnet support. And karl@cs.umb.edu says # the Alpha needs dnet_stub (dnet does not exist). echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6 -echo "configure:1204: checking for dnet_ntoa in -ldnet" >&5 +echo "configure:1213: checking for dnet_ntoa in -ldnet" >&5 ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1208,7 +1217,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldnet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1232: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1241,7 +1250,7 @@ fi if test $ac_cv_lib_dnet_dnet_ntoa = no; then echo $ac_n "checking for dnet_ntoa in -ldnet_stub""... $ac_c" 1>&6 -echo "configure:1245: checking for dnet_ntoa in -ldnet_stub" >&5 +echo "configure:1254: checking for dnet_ntoa in -ldnet_stub" >&5 ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1249,7 +1258,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldnet_stub $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1273: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1289,12 +1298,12 @@ fi # The nsl library prevents programs from opening the X display # on Irix 5.2, according to dickey@clark.net. echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:1293: checking for gethostbyname" >&5 +echo "configure:1302: checking for gethostbyname" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1330: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -1338,7 +1347,7 @@ fi if test $ac_cv_func_gethostbyname = no; then echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:1342: checking for gethostbyname in -lnsl" >&5 +echo "configure:1351: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1346,7 +1355,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1370: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1387,12 +1396,12 @@ fi # -lsocket must be given before -lnsl if both are needed. # We assume that if connect needs -lnsl, so does gethostbyname. echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:1391: checking for connect" >&5 +echo "configure:1400: checking for connect" >&5 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1428: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -1436,7 +1445,7 @@ fi if test $ac_cv_func_connect = no; then echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6 -echo "configure:1440: checking for connect in -lsocket" >&5 +echo "configure:1449: checking for connect in -lsocket" >&5 ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1444,7 +1453,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1468: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1479,12 +1488,12 @@ fi # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX. echo $ac_n "checking for remove""... $ac_c" 1>&6 -echo "configure:1483: checking for remove" >&5 +echo "configure:1492: checking for remove" >&5 if eval "test \"`echo '$''{'ac_cv_func_remove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1520: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_remove=yes" else @@ -1528,7 +1537,7 @@ fi if test $ac_cv_func_remove = no; then echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6 -echo "configure:1532: checking for remove in -lposix" >&5 +echo "configure:1541: checking for remove in -lposix" >&5 ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1536,7 +1545,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lposix $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1560: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1571,12 +1580,12 @@ fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo $ac_n "checking for shmat""... $ac_c" 1>&6 -echo "configure:1575: checking for shmat" >&5 +echo "configure:1584: checking for shmat" >&5 if eval "test \"`echo '$''{'ac_cv_func_shmat'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1612: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_shmat=yes" else @@ -1620,7 +1629,7 @@ fi if test $ac_cv_func_shmat = no; then echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6 -echo "configure:1624: checking for shmat in -lipc" >&5 +echo "configure:1633: checking for shmat in -lipc" >&5 ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1628,7 +1637,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lipc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1652: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1672,7 +1681,7 @@ fi # libraries we check for below, so use a different variable. # --interran@uluru.Stanford.EDU, kb@cs.umb.edu. echo $ac_n "checking for IceConnectionNumber in -lICE""... $ac_c" 1>&6 -echo "configure:1676: checking for IceConnectionNumber in -lICE" >&5 +echo "configure:1685: checking for IceConnectionNumber in -lICE" >&5 ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1680,7 +1689,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lICE $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1704: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1720,7 +1729,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1724: checking for $ac_word" >&5 +echo "configure:1733: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1752,7 +1761,7 @@ test -n "$YACC" || YACC="yacc" # Extract the first word of "flex", so it can be a program name with args. set dummy flex; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1756: checking for $ac_word" >&5 +echo "configure:1765: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1785,7 +1794,7 @@ then *) ac_lib=l ;; esac echo $ac_n "checking for yywrap in -l$ac_lib""... $ac_c" 1>&6 -echo "configure:1789: checking for yywrap in -l$ac_lib" >&5 +echo "configure:1798: checking for yywrap in -l$ac_lib" >&5 ac_lib_var=`echo $ac_lib'_'yywrap | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1793,7 +1802,7 @@ else ac_save_LIBS="$LIBS" LIBS="-l$ac_lib $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1817: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1829,7 +1838,7 @@ fi # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1833: checking for $ac_word" >&5 +echo "configure:1842: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1866,7 +1875,7 @@ fi # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:1870: checking for a BSD compatible install" >&5 +echo "configure:1879: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1916,7 +1925,7 @@ test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -echo "configure:1920: checking whether ln -s works" >&5 +echo "configure:1929: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1939,7 +1948,7 @@ fi # Extract the first word of "c2man", so it can be a program name with args. set dummy c2man; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1943: checking for $ac_word" >&5 +echo "configure:1952: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_C2MAN'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1968,7 +1977,7 @@ fi echo $ac_n "checking for i386_set_ldt in -li386""... $ac_c" 1>&6 -echo "configure:1972: checking for i386_set_ldt in -li386" >&5 +echo "configure:1981: checking for i386_set_ldt in -li386" >&5 ac_lib_var=`echo i386'_'i386_set_ldt | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1976,7 +1985,7 @@ else ac_save_LIBS="$LIBS" LIBS="-li386 $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2000: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2015,7 +2024,7 @@ else fi echo $ac_n "checking for iswalnum in -lw""... $ac_c" 1>&6 -echo "configure:2019: checking for iswalnum in -lw" >&5 +echo "configure:2028: checking for iswalnum in -lw" >&5 ac_lib_var=`echo w'_'iswalnum | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2023,7 +2032,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lw $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2047: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2062,7 +2071,7 @@ else fi echo $ac_n "checking for XF86DGAQueryExtension in -lXxf86dga""... $ac_c" 1>&6 -echo "configure:2066: checking for XF86DGAQueryExtension in -lXxf86dga" >&5 +echo "configure:2075: checking for XF86DGAQueryExtension in -lXxf86dga" >&5 ac_lib_var=`echo Xxf86dga'_'XF86DGAQueryExtension | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2070,7 +2079,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lXxf86dga $X_LIBS -lXext -lX11 $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2094: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2109,17 +2118,17 @@ for ac_hdr in sys/soundcard.h machine/soundcard.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2113: checking for $ac_hdr" >&5 +echo "configure:2122: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2123: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2132: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -2147,12 +2156,12 @@ done echo $ac_n "checking "for Open Sound System"""... $ac_c" 1>&6 -echo "configure:2151: checking "for Open Sound System"" >&5 +echo "configure:2160: checking "for Open Sound System"" >&5 if eval "test \"`echo '$''{'ac_cv_c_opensoundsystem'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2185: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_opensoundsystem="yes" else @@ -2196,12 +2205,12 @@ fi echo $ac_n "checking "for union semun"""... $ac_c" 1>&6 -echo "configure:2200: checking "for union semun"" >&5 +echo "configure:2209: checking "for union semun"" >&5 if eval "test \"`echo '$''{'ac_cv_c_union_semun'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2209,7 +2218,7 @@ int main() { union semun foo ; return 0; } EOF -if { (eval echo configure:2213: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2222: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_union_semun="yes" else @@ -2237,7 +2246,7 @@ if test "x${GCC}" = "xyes" then CFLAGS="$CFLAGS -Wall" echo $ac_n "checking "for gcc strength-reduce bug"""... $ac_c" 1>&6 -echo "configure:2241: checking "for gcc strength-reduce bug"" >&5 +echo "configure:2250: checking "for gcc strength-reduce bug"" >&5 if eval "test \"`echo '$''{'ac_cv_c_gcc_strength_bug'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2245,7 +2254,7 @@ else ac_cv_c_gcc_strength_bug="yes" else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2269: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then ac_cv_c_gcc_strength_bug="no" else @@ -2279,7 +2288,7 @@ fi echo $ac_n "checking "whether external symbols need an underscore prefix"""... $ac_c" 1>&6 -echo "configure:2283: checking "whether external symbols need an underscore prefix"" >&5 +echo "configure:2292: checking "whether external symbols need an underscore prefix"" >&5 if eval "test \"`echo '$''{'ac_cv_c_extern_prefix'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2291,14 +2300,14 @@ _ac_test: .long 0 EOF cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2311: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_cv_c_extern_prefix="yes" else @@ -2322,7 +2331,7 @@ fi echo $ac_n "checking "whether assembler accepts .string"""... $ac_c" 1>&6 -echo "configure:2326: checking "whether assembler accepts .string"" >&5 +echo "configure:2335: checking "whether assembler accepts .string"" >&5 if eval "test \"`echo '$''{'ac_cv_c_asm_string'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2332,14 +2341,14 @@ cat > conftest_asm.s < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2352: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_cv_c_asm_string="yes" else @@ -2366,21 +2375,21 @@ DLLFLAGS="" if test "$LIB_TARGET" = "libwine.so.1.0" then echo $ac_n "checking "whether we can build a dll"""... $ac_c" 1>&6 -echo "configure:2370: checking "whether we can build a dll"" >&5 +echo "configure:2379: checking "whether we can build a dll"" >&5 if eval "test \"`echo '$''{'ac_cv_c_dll'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else saved_cflags=$CFLAGS CFLAGS="$CFLAGS -fPIC -shared -Wl,-soname,conftest.so.1.0" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2393: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_cv_c_dll="yes" else @@ -2406,7 +2415,7 @@ fi echo $ac_n "checking "for reentrant X libraries"""... $ac_c" 1>&6 -echo "configure:2410: checking "for reentrant X libraries"" >&5 +echo "configure:2419: checking "for reentrant X libraries"" >&5 if eval "test \"`echo '$''{'wine_cv_x_reentrant'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2450,12 +2459,12 @@ fi for ac_func in clone getpagesize memmove sigaltstack strerror stricmp tcgetattr timegm usleep wait4 waitpid vfscanf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2454: checking for $ac_func" >&5 +echo "configure:2463: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2491: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2506,17 +2515,17 @@ for ac_hdr in wctype.h sys/syscall.h syscall.h sys/param.h sys/vfs.h sys/mount.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2510: checking for $ac_hdr" >&5 +echo "configure:2519: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2520: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2529: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -2543,12 +2552,12 @@ fi done echo $ac_n "checking whether stat file-mode macros are broken""... $ac_c" 1>&6 -echo "configure:2547: checking whether stat file-mode macros are broken" >&5 +echo "configure:2556: checking whether stat file-mode macros are broken" >&5 if eval "test \"`echo '$''{'ac_cv_header_stat_broken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2599,12 +2608,12 @@ EOF fi echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:2603: checking for working const" >&5 +echo "configure:2612: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2666: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -2674,12 +2683,12 @@ EOF fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:2678: checking for ANSI C header files" >&5 +echo "configure:2687: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2687,7 +2696,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2691: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2700: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -2704,7 +2713,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -2722,7 +2731,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -2743,7 +2752,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -2754,7 +2763,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:2758: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2767: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then : else @@ -2778,12 +2787,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:2782: checking for size_t" >&5 +echo "configure:2791: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -2811,7 +2820,7 @@ EOF fi echo $ac_n "checking size of long long""... $ac_c" 1>&6 -echo "configure:2815: checking size of long long" >&5 +echo "configure:2824: checking size of long long" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_long_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2819,7 +2828,7 @@ else ac_cv_sizeof_long_long=0 else cat > conftest.$ac_ext < main() @@ -2830,7 +2839,7 @@ main() exit(0); } EOF -if { (eval echo configure:2834: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2843: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_long_long=`cat conftestval` else @@ -2854,12 +2863,12 @@ EOF if test "$ac_cv_header_sys_vfs_h" = "yes" then echo $ac_n "checking "whether sys/vfs.h defines statfs"""... $ac_c" 1>&6 -echo "configure:2858: checking "whether sys/vfs.h defines statfs"" >&5 +echo "configure:2867: checking "whether sys/vfs.h defines statfs"" >&5 if eval "test \"`echo '$''{'wine_cv_sys_vfs_has_statfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -2876,7 +2885,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:2880: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2889: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wine_cv_sys_vfs_has_statfs=yes else @@ -2903,12 +2912,12 @@ fi if test "$ac_cv_header_sys_statfs_h" = "yes" then echo $ac_n "checking "whether sys/statfs.h defines statfs"""... $ac_c" 1>&6 -echo "configure:2907: checking "whether sys/statfs.h defines statfs"" >&5 +echo "configure:2916: checking "whether sys/statfs.h defines statfs"" >&5 if eval "test \"`echo '$''{'wine_cv_sys_statfs_has_statfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -2923,7 +2932,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:2927: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2936: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wine_cv_sys_statfs_has_statfs=yes else @@ -2950,12 +2959,12 @@ fi if test "$ac_cv_header_sys_mount_h" = "yes" then echo $ac_n "checking "whether sys/mount.h defines statfs"""... $ac_c" 1>&6 -echo "configure:2954: checking "whether sys/mount.h defines statfs"" >&5 +echo "configure:2963: checking "whether sys/mount.h defines statfs"" >&5 if eval "test \"`echo '$''{'wine_cv_sys_mount_has_statfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -2970,7 +2979,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:2974: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2983: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wine_cv_sys_mount_has_statfs=yes else @@ -2996,7 +3005,7 @@ fi echo $ac_n "checking "for statfs.f_bfree"""... $ac_c" 1>&6 -echo "configure:3000: checking "for statfs.f_bfree"" >&5 +echo "configure:3009: checking "for statfs.f_bfree"" >&5 if eval "test \"`echo '$''{'wine_cv_statfs_bfree'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3005,7 +3014,7 @@ else wine_cv_statfs_bfree=no else cat > conftest.$ac_ext < @@ -3032,7 +3041,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3036: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3045: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wine_cv_statfs_bfree=yes else @@ -3056,7 +3065,7 @@ EOF fi echo $ac_n "checking "for statfs.f_bavail"""... $ac_c" 1>&6 -echo "configure:3060: checking "for statfs.f_bavail"" >&5 +echo "configure:3069: checking "for statfs.f_bavail"" >&5 if eval "test \"`echo '$''{'wine_cv_statfs_bavail'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3065,7 +3074,7 @@ else wine_cv_statfs_bavail=no else cat > conftest.$ac_ext < @@ -3092,7 +3101,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:3096: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3105: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wine_cv_statfs_bavail=yes else @@ -3117,7 +3126,7 @@ fi echo $ac_n "checking "for working sigaltstack"""... $ac_c" 1>&6 -echo "configure:3121: checking "for working sigaltstack"" >&5 +echo "configure:3130: checking "for working sigaltstack"" >&5 if eval "test \"`echo '$''{'ac_cv_c_working_sigaltstack'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3126,7 +3135,7 @@ else else cat > conftest.$ac_ext < @@ -3164,7 +3173,7 @@ else } EOF -if { (eval echo configure:3168: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3177: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then ac_cv_c_working_sigaltstack="yes" else @@ -3331,6 +3340,7 @@ rc/Makefile relay32/Makefile resources/Makefile scheduler/Makefile +server/Makefile tools/Makefile tools/wrc/Makefile tsx11/Makefile @@ -3464,6 +3474,7 @@ rc/Makefile relay32/Makefile resources/Makefile scheduler/Makefile +server/Makefile tools/Makefile tools/wrc/Makefile tsx11/Makefile diff --git a/configure.in b/configure.in index f33f07f54b4..553ea5f4ac9 100644 --- a/configure.in +++ b/configure.in @@ -26,6 +26,10 @@ AC_ARG_ENABLE(dll, [ --enable-dll build the Wine library as a DLL], [if test "$enableval" = "no"; then : ; else LIB_TARGET="libwine.so.1.0"; fi]) +AC_ARG_ENABLE(lib, +[ --disable-lib build the Wine without building libwine.a], +[if test "$enableval" = "no"; then LIB_TARGET="\$LIBOBJS"; fi]) + dnl AC_ARG_WITH(ipc, dnl [ --enable-ipc use inter-process communication for DDE], dnl [if test "$enableval" = "no"; then : ; else OPTIONS="-DCONFIG_IPC"; fi]) @@ -470,6 +474,7 @@ rc/Makefile relay32/Makefile resources/Makefile scheduler/Makefile +server/Makefile tools/Makefile tools/wrc/Makefile tsx11/Makefile diff --git a/controls/Makefile.in b/controls/Makefile.in index f36a3827322..a49d7101aaf 100644 --- a/controls/Makefile.in +++ b/controls/Makefile.in @@ -15,12 +15,18 @@ C_SRCS = \ header.c \ icontitle.c \ listbox.c \ + listview.c \ menu.c \ + pager.c \ progress.c \ + rebar.c \ scroll.c \ static.c \ status.c \ toolbar.c \ + tooltips.c \ + trackbar.c \ + treeview.c \ uitools.c \ updown.c \ widgets.c diff --git a/controls/comctl32undoc.c b/controls/comctl32undoc.c index 88b57d5b4e9..baa7a71ed98 100644 --- a/controls/comctl32undoc.c +++ b/controls/comctl32undoc.c @@ -5,7 +5,7 @@ * * NOTES * All of these functions are UNDOCUMENTED!! And I mean UNDOCUMENTED!!!! - * Do NOT rely on names of undocumented structures and types!!! + * Do NOT rely on names or contents of undocumented structures and types!!! * These functions are used by EXPLORER.EXE, IEXPLORE.EXE and * COMCTL32.DLL (internally). * @@ -16,6 +16,7 @@ */ #include +#include #include "windows.h" #include "heap.h" #include "debug.h" @@ -50,64 +51,91 @@ DWORD WINAPI DPA_InsertPtr (DWORD, DWORD, DWORD); +/************************************************************************** + * Alloc [COMCTL32.71] + * + */ -DWORD WINAPI +LPVOID WINAPI COMCTL32_Alloc (DWORD dwParam) { - DWORD dwPtr; + LPVOID lpPtr; - dwPtr = (DWORD)HeapAlloc (GetProcessHeap (), HEAP_ZERO_MEMORY, dwParam); + lpPtr = HeapAlloc (GetProcessHeap (), HEAP_ZERO_MEMORY, dwParam); - TRACE (commctrl, "(0x%08lx) ret=0x%08lx\n", dwParam, dwPtr); + TRACE (commctrl, "(0x%08lx) ret=0x%08lx\n", dwParam, (DWORD)lpPtr); - return dwPtr; + return lpPtr; } -DWORD WINAPI -COMCTL32_ReAlloc (DWORD dwParam1, DWORD dwParam2) +/************************************************************************** + * ReAlloc [COMCTL32.72] + * + */ + +LPVOID WINAPI +COMCTL32_ReAlloc (LPVOID dwParam1, DWORD dwParam2) { - DWORD dwPtr; + LPVOID dwPtr; if (dwParam1 == 0) - dwPtr = (DWORD)HeapAlloc (GetProcessHeap (), HEAP_ZERO_MEMORY, - dwParam2); + dwPtr = HeapAlloc (GetProcessHeap (), HEAP_ZERO_MEMORY, + dwParam2); else - dwPtr = (DWORD)HeapReAlloc (GetProcessHeap (), HEAP_ZERO_MEMORY, - (LPVOID)dwParam1, dwParam2); + dwPtr = HeapReAlloc (GetProcessHeap (), HEAP_ZERO_MEMORY, + dwParam1, dwParam2); TRACE (commctrl, "(0x%08lx 0x%08lx) ret=0x%08lx\n", - dwParam1, dwParam2, dwPtr); + (DWORD)dwParam1, dwParam2, (DWORD)dwPtr); return dwPtr; } +/************************************************************************** + * Free [COMCTL32.73] + * + */ + DWORD WINAPI -COMCTL32_Free (DWORD dwParam) +COMCTL32_Free (LPVOID dwParam) { - TRACE (commctrl, "(0x%08lx)\n", dwParam); - HeapFree (GetProcessHeap (), 0, (LPVOID)dwParam); + TRACE (commctrl, "(0x%08lx)\n", (DWORD)dwParam); + HeapFree (GetProcessHeap (), 0, dwParam); return 0; } +/************************************************************************** + * GetSize [COMCTL32.74] + * + */ + DWORD WINAPI -COMCTL32_GetSize (DWORD dwParam) +COMCTL32_GetSize (LPVOID dwParam) { - TRACE (commctrl, "(0x%08lx)\n", dwParam); - return (HeapSize (GetProcessHeap (), 0, (LPVOID)dwParam)); + TRACE (commctrl, "(0x%08lx)\n", (DWORD)dwParam); + return (HeapSize (GetProcessHeap (), 0, dwParam)); } +/************************************************************************** + * DSA_Create [COMCTL32.320] Creates a dynamic string array + * + * PARAMS + * dwParam1 [I] + * dwParam2 [I] + */ DWORD WINAPI DSA_Create (DWORD dwParam1, DWORD dwParam2) { LPDSA_DATA dsaPtr; - dsaPtr = (LPDSA_DATA)HeapAlloc (SystemHeap, HEAP_ZERO_MEMORY, sizeof(DSA_DATA)); + dsaPtr = (LPDSA_DATA)HeapAlloc (GetProcessHeap (), HEAP_ZERO_MEMORY, + sizeof(DSA_DATA)); dsaPtr->dwInitial = dwParam1; dsaPtr->dwGrow = dwParam2; @@ -129,11 +157,11 @@ DSA_Destroy (DWORD dwParam1) if (dsaPtr->ptrs) { for (i = 0; i < dsaPtr->dwEntryCount; i++) { if (dsaPtr->ptrs[i]) - HeapFree (SystemHeap, 0, (LPSTR)dsaPtr->ptrs[i]); + HeapFree (GetProcessHeap (), 0, (LPSTR)dsaPtr->ptrs[i]); } } - HeapFree (SystemHeap, 0, dsaPtr); + HeapFree (GetProcessHeap (), 0, dsaPtr); return 0; } @@ -142,10 +170,23 @@ DSA_Destroy (DWORD dwParam1) DWORD WINAPI DSA_GetItem (DWORD dwParam1, DWORD dwParam2, DWORD dwParam3) { + LPDSA_DATA dsaPtr = (LPDSA_DATA)dwParam1; + FIXME (commctrl, "(0x%08lx 0x%08lx 0x%08lx): stub!\n", dwParam1, dwParam2, dwParam3); - return 0; + if (dsaPtr == NULL) + return 0; + if (dsaPtr->ptrs == NULL) + return 0; + if ((dwParam2 < 0) || (dwParam2 >= dsaPtr->dwEntryCount)) + return 0; + +// FIXME (commctrl, "\"%s\"\n", (LPSTR)dsaPtr->ptrs[dwParam2]); + + return lstrcpy32A ((LPSTR)dwParam3, (LPSTR)dsaPtr->ptrs[dwParam2]); + +// return 0; } @@ -180,13 +221,13 @@ DSA_InsertItem (DWORD dwParam1, DWORD dwParam2, DWORD dwParam3) dwParam1, dwParam2, (LPSTR)dwParam3); if (dsaPtr->ptrs == NULL) { - dsaPtr->ptrs = (LPSTR*)HeapAlloc (SystemHeap, HEAP_ZERO_MEMORY, + dsaPtr->ptrs = (LPSTR*)HeapAlloc (GetProcessHeap (), HEAP_ZERO_MEMORY, dsaPtr->dwInitial * sizeof(LPVOID)); dsaPtr->dwMaxCount = dsaPtr->dwInitial; dwIndex = 0; len = lstrlen32A ((LPSTR)dwParam3); dsaPtr->ptrs[dwIndex] = - (LPSTR)HeapAlloc (SystemHeap, HEAP_ZERO_MEMORY, len+1); + (LPSTR)HeapAlloc (GetProcessHeap (), HEAP_ZERO_MEMORY, len+1); lstrcpy32A (dsaPtr->ptrs[dwIndex], (LPSTR)dwParam3); } else { @@ -197,14 +238,26 @@ DSA_InsertItem (DWORD dwParam1, DWORD dwParam2, DWORD dwParam3) dwIndex = dsaPtr->dwEntryCount; len = lstrlen32A ((LPSTR)dwParam3); dsaPtr->ptrs[dwIndex] = - (LPSTR)HeapAlloc (SystemHeap, HEAP_ZERO_MEMORY, len+1); + (LPSTR)HeapAlloc (GetProcessHeap (), HEAP_ZERO_MEMORY, len+1); lstrcpy32A (dsaPtr->ptrs[dwIndex], (LPSTR)dwParam3); } else { - FIXME (commctrl, "resizing array! stub!\n"); - - dwIndex = dwParam2; + /* allocate new pointer list and copy all pointers */ + LPSTR *lpOldPtrs = dsaPtr->ptrs; + dsaPtr->ptrs = (LPSTR*)HeapAlloc (SystemHeap, HEAP_ZERO_MEMORY, + (dsaPtr->dwInitial + dsaPtr->dwGrow) * + sizeof(LPVOID)); + memcpy (dsaPtr->ptrs, lpOldPtrs, + dsaPtr->dwMaxCount * sizeof(LPVOID)); + dsaPtr->dwMaxCount += dsaPtr->dwGrow; + HeapFree (GetProcessHeap (), 0, lpOldPtrs); + /* add new string */ + dwIndex = dsaPtr->dwEntryCount; + len = lstrlen32A ((LPSTR)dwParam3); + dsaPtr->ptrs[dwIndex] = + (LPSTR)HeapAlloc (GetProcessHeap (), HEAP_ZERO_MEMORY, len+1); + lstrcpy32A (dsaPtr->ptrs[dwIndex], (LPSTR)dwParam3); } } else { @@ -235,7 +288,7 @@ DSA_DeleteItem (DWORD dwParam1, DWORD dwParam2) if (dsaPtr->ptrs) { if (dsaPtr->dwEntryCount == 1) { if (dsaPtr->ptrs[dwParam2]) - HeapFree (SystemHeap, 0, dsaPtr->ptrs[dwParam2]); + HeapFree (GetProcessHeap (), 0, dsaPtr->ptrs[dwParam2]); dsaPtr->dwEntryCount--; } else { @@ -243,11 +296,11 @@ DSA_DeleteItem (DWORD dwParam1, DWORD dwParam2) TRACE (commctrl, "complex delete!\n"); if (dsaPtr->ptrs[dwParam2]) - HeapFree (SystemHeap, 0, dsaPtr->ptrs[dwParam2]); + HeapFree (GetProcessHeap (), 0, dsaPtr->ptrs[dwParam2]); dsaPtr->dwEntryCount--; dsaPtr->ptrs = - (LPSTR*)HeapAlloc (SystemHeap, HEAP_ZERO_MEMORY, + (LPSTR*)HeapAlloc (GetProcessHeap (), HEAP_ZERO_MEMORY, dsaPtr->dwEntryCount * sizeof(LPVOID)); if (dwParam2 > 0) { memcpy (&dsaPtr->ptrs[0], &oldPtrs[0], @@ -258,11 +311,11 @@ DSA_DeleteItem (DWORD dwParam1, DWORD dwParam2) memcpy (&dsaPtr->ptrs[dwParam2], &oldPtrs[dwParam2+1], (dsaPtr->dwEntryCount - dwParam2) * sizeof(LPSTR)); } - HeapFree (SystemHeap, 0, oldPtrs); + HeapFree (GetProcessHeap (), 0, oldPtrs); } if (dsaPtr->dwEntryCount == 0) { - HeapFree (SystemHeap, 0, dsaPtr->ptrs); + HeapFree (GetProcessHeap (), 0, dsaPtr->ptrs); dsaPtr->ptrs = NULL; } } @@ -341,9 +394,70 @@ DPA_InsertPtr (DWORD dwParam1, DWORD dwParam2, DWORD dwParam3) } +/************************************************************************** + * DPA_CreateEx [COMCTL32.340] + * + */ + +DWORD WINAPI +DPA_CreateEx (DWORD dwParam1, DWORD dwParam2) +{ + FIXME (commctrl, "(0x%08lx 0x%08lx)\n", + dwParam1, dwParam2); + + return 0; +} + + +/************************************************************************** + * SendNotify [COMCTL32.341] + * + */ + +DWORD WINAPI +COMCTL32_SendNotify (DWORD dw1, DWORD dw2, DWORD dw3, DWORD dw4) +{ + FIXME (commctrl, "(0x%08lx 0x%08lx 0x%08lx 0x%08lx)\n", + dw1, dw2, dw3, dw4); + + return 0; +} + + + +/************************************************************************** + * StrChrA [COMCTL32.350] + * + */ + LPSTR WINAPI COMCTL32_StrChrA (LPSTR lpString, CHAR cChar) { return strchr (lpString, cChar); } + +/************************************************************************** + * StrStrIA [COMCTL32.350] + * + * BUGS + * This implementation is case sensitive, but it mustn't. + */ + +LPSTR WINAPI +COMCTL32_StrStrIA (LPSTR lpStr1, LPSTR lpStr2) +{ + return strstr (lpStr1, lpStr2); +} + + +/************************************************************************** + * StrToIntA [COMCTL32.357] + */ + +INT32 WINAPI +COMCTL32_StrToIntA (LPSTR lpString) +{ + return atoi(lpString); +} + diff --git a/controls/commctrl.c b/controls/commctrl.c index 8dddf5b7863..2838976e245 100644 --- a/controls/commctrl.c +++ b/controls/commctrl.c @@ -2,6 +2,7 @@ * Common controls functions * * Copyright 1997 Dimitrie O. Paun + * Copyright 1998 Eric Kohl * */ @@ -9,43 +10,58 @@ #include "heap.h" #include "commctrl.h" #include "header.h" +#include "listview.h" +#include "pager.h" #include "progress.h" +#include "rebar.h" #include "status.h" #include "toolbar.h" +#include "tooltips.h" +#include "trackbar.h" +#include "treeview.h" #include "updown.h" #include "debug.h" /*********************************************************************** * DrawStatusText32A [COMCTL32.5][COMCTL32.27] + * + * Draws text with borders, like in a status bar. + * + * PARAMS + * hdc [I] handle to the window's display context + * lprc [I] pointer to a rectangle + * text [I] pointer to the text + * style [I] */ -void WINAPI DrawStatusText32A( HDC32 hdc, LPRECT32 lprc, LPCSTR text, - UINT32 style ) + +VOID WINAPI +DrawStatusText32A (HDC32 hdc, LPRECT32 lprc, LPCSTR text, UINT32 style) { RECT32 r = *lprc; UINT32 border = BDR_SUNKENOUTER; - if(style==SBT_POPOUT) + if (style == SBT_POPOUT) border = BDR_RAISEDOUTER; - else if(style==SBT_NOBORDERS) + else if (style == SBT_NOBORDERS) border = 0; - DrawEdge32(hdc, &r, border, BF_RECT|BF_ADJUST|BF_MIDDLE); + DrawEdge32 (hdc, &r, border, BF_RECT|BF_ADJUST|BF_MIDDLE); /* now draw text */ if (text) { - int oldbkmode = SetBkMode32(hdc, TRANSPARENT); + int oldbkmode = SetBkMode32 (hdc, TRANSPARENT); r.left += 3; - DrawText32A(hdc, text, lstrlen32A(text), - &r, DT_LEFT|DT_VCENTER|DT_SINGLELINE); + DrawText32A (hdc, text, lstrlen32A(text), + &r, DT_LEFT|DT_VCENTER|DT_SINGLELINE); if (oldbkmode != TRANSPARENT) SetBkMode32(hdc, oldbkmode); } - } + /*********************************************************************** - * DrawStatusText32W (COMCTL32.28) + * DrawStatusText32W [COMCTL32.28] */ void WINAPI DrawStatusText32W( HDC32 hdc, LPRECT32 lprc, LPCWSTR text, UINT32 style ) @@ -55,6 +71,7 @@ void WINAPI DrawStatusText32W( HDC32 hdc, LPRECT32 lprc, LPCWSTR text, HeapFree( GetProcessHeap(), 0, p ); } + /*********************************************************************** * CreateStatusWindow32A [COMCTL32.6][COMCTL32.21] */ @@ -67,6 +84,7 @@ HWND32 WINAPI CreateStatusWindow32A( INT32 style, LPCSTR text, HWND32 parent, parent, wid, 0, 0); } + /*********************************************************************** * CreateStatusWindow32W (COMCTL32.22) */ @@ -102,8 +120,14 @@ HWND32 WINAPI CreateUpDownControl( DWORD style, INT32 x, INT32 y, /*********************************************************************** * InitCommonControls [COMCTL32.17] * + * Registers the common controls. * + * PARAMS + * None. * + * NOTES + * Calls InitCommonControlsEx. + * InitCommonControlsEx should be used instead. */ VOID WINAPI @@ -121,8 +145,10 @@ InitCommonControls (VOID) /*********************************************************************** * InitCommonControlsEx [COMCTL32.81] * + * Registers the common controls. * - * + * PARAMS + * lpInitCtrls [I] pointer to a INITCOMMONCONTROLS structure. */ BOOL32 WINAPI @@ -141,25 +167,25 @@ InitCommonControlsEx (LPINITCOMMONCONTROLSEX lpInitCtrls) switch (lpInitCtrls->dwICC & dwMask) { case ICC_LISTVIEW_CLASSES: - TRACE (commctrl, "No listview class implemented!\n"); - HEADER_Register(); + LISTVIEW_Register (); + HEADER_Register (); break; case ICC_TREEVIEW_CLASSES: - TRACE (commctrl, "No treeview class implemented!\n"); - TRACE (commctrl, "No tooltip class implemented!\n"); + TREEVIEW_Register (); + TOOLTIPS_Register (); break; case ICC_BAR_CLASSES: TOOLBAR_Register (); STATUS_Register (); - TRACE (commctrl, "No trackbar class implemented!\n"); - TRACE (commctrl, "No tooltip class implemented!\n"); + TRACKBAR_Register (); + TOOLTIPS_Register (); break; case ICC_TAB_CLASSES: TRACE (commctrl, "No tab class implemented!\n"); - TRACE (commctrl, "No tooltip class implemented!\n"); + TOOLTIPS_Register (); UPDOWN_Register (); break; @@ -192,7 +218,7 @@ InitCommonControlsEx (LPINITCOMMONCONTROLSEX lpInitCtrls) break; case ICC_COOL_CLASSES: - TRACE (commctrl, "No rebar class implemented!\n"); + REBAR_Register (); break; case ICC_INTERNET_CLASSES: @@ -200,7 +226,7 @@ InitCommonControlsEx (LPINITCOMMONCONTROLSEX lpInitCtrls) break; case ICC_PAGESCROLLER_CLASS: - TRACE (commctrl, "No page scroller class implemented!\n"); + PAGER_Register (); break; case ICC_NATIVEFNTCTL_CLASS: @@ -220,9 +246,14 @@ InitCommonControlsEx (LPINITCOMMONCONTROLSEX lpInitCtrls) /*********************************************************************** * MenuHelp [COMCTL32.2] * - * - * - * + * PARAMS + * uMsg + * wParam + * lParam + * hMainMenu + * hInst + * hwndStatus + * lpwIDs */ VOID WINAPI @@ -244,7 +275,7 @@ MenuHelp (UINT32 uMsg, WPARAM32 wParam, LPARAM lParam, HMENU32 hMainMenu, } else { if (HIWORD(wParam) & MF_POPUP) { - TRACE (commctrl, "popup menu selected!\n"); + FIXME (commctrl, "popup 0x%08x 0x%08lx\n", wParam, lParam); szStatusText[0] = 0; } @@ -289,16 +320,25 @@ CreateToolbarEx (HWND32 hwnd, DWORD style, UINT32 wID, INT32 nBitmaps, (WPARAM32)uStructSize, 0); /* set bitmap and button size */ + SendMessage32A (hwndTB, TB_SETBITMAPSIZE, 0, + MAKELPARAM((WORD)dyBitmap, (WORD)dxBitmap)); +#if 0 + SendMessage32A (hwndTB, TB_SETBUTTONSIZE, 0, + MAKELONG((WORD)dyButton, (WORD)dxButton)); +#endif /* add bitmaps */ - tbab.hInst = hBMInst; - tbab.nID = wBMID; - SendMessage32A (hwndTB, TB_ADDBITMAP, - (WPARAM32)nBitmaps, (LPARAM)&tbab); + if (nBitmaps > 0) { + tbab.hInst = hBMInst; + tbab.nID = wBMID; + SendMessage32A (hwndTB, TB_ADDBITMAP, + (WPARAM32)nBitmaps, (LPARAM)&tbab); + } /* add buttons */ - SendMessage32A (hwndTB, TB_ADDBUTTONS32A, - (WPARAM32)iNumButtons, (LPARAM)lpButtons); + if (iNumButtons > 0) + SendMessage32A (hwndTB, TB_ADDBUTTONS32A, + (WPARAM32)iNumButtons, (LPARAM)lpButtons); } return hwndTB; @@ -308,22 +348,100 @@ CreateToolbarEx (HWND32 hwnd, DWORD style, UINT32 wID, INT32 nBitmaps, /*********************************************************************** * CreateMappedBitmap [COMCTL32.8] * - * - * + * PARAMS + * hInstance + * idBitmap + * wFlags + * lpColorMap + * iNumMaps */ HBITMAP32 WINAPI CreateMappedBitmap (HINSTANCE32 hInstance, INT32 idBitmap, UINT32 wFlags, LPCOLORMAP lpColorMap, INT32 iNumMaps) { + HGLOBAL32 hglb; + HRSRC32 hRsrc; + LPBITMAPINFOHEADER lpBitmap, lpBitmapInfo; + UINT32 nSize, nColorTableSize; + DWORD *pColorTable; + INT32 iColor, i, iMaps, nWidth, nHeight; + HDC32 hdcScreen; HBITMAP32 hbm; + LPCOLORMAP sysColorMap; + COLORMAP internalColorMap[4] = + {{0x000000, 0}, {0x808080, 0}, {0xC0C0C0, 0}, {0xFFFFFF, 0}}; - FIXME (commctrl, "semi-stub!\n"); + /* initialize pointer to colortable and default color table */ + if (lpColorMap) { + iMaps = iNumMaps; + sysColorMap = lpColorMap; + } + else { + internalColorMap[0].to = GetSysColor32 (COLOR_BTNTEXT); + internalColorMap[1].to = GetSysColor32 (COLOR_BTNSHADOW); + internalColorMap[2].to = GetSysColor32 (COLOR_BTNFACE); + internalColorMap[3].to = GetSysColor32 (COLOR_BTNHIGHLIGHT); + iMaps = 4; + sysColorMap = (LPCOLORMAP)internalColorMap; + } - hbm = LoadBitmap32A (hInstance, MAKEINTRESOURCE32A(idBitmap)); + hRsrc = FindResource32A (hInstance, (LPSTR)idBitmap, RT_BITMAP32A); + if (hRsrc == NULL) + return NULL; + hglb = LoadResource32 (hInstance, hRsrc); + if (hglb == NULL) + return NULL; + lpBitmap = (LPBITMAPINFOHEADER)LockResource32 (hglb); + if (lpBitmap == NULL) + return NULL; + + nColorTableSize = (1 << lpBitmap->biBitCount); + nSize = lpBitmap->biSize + nColorTableSize * sizeof(RGBQUAD); + lpBitmapInfo = (LPBITMAPINFOHEADER)GlobalAlloc32 (GMEM_FIXED, nSize); + if (lpBitmapInfo == NULL) + return NULL; + RtlMoveMemory (lpBitmapInfo, lpBitmap, nSize); + + pColorTable = (DWORD*)(((LPBYTE)lpBitmapInfo)+(UINT32)lpBitmapInfo->biSize); + + for (iColor = 0; iColor < nColorTableSize; iColor++) { + for (i = 0; i < iMaps; i++) { + if (pColorTable[iColor] == sysColorMap[i].from) { +#if 0 + if (wFlags & CBS_MASKED) { + if (sysColorMap[i].to != COLOR_BTNTEXT) + pColorTable[iColor] = RGB(255, 255, 255); + } + else +#endif + pColorTable[iColor] = sysColorMap[i].to; + break; + } + } + } + + nWidth = (INT32)lpBitmapInfo->biWidth; + nHeight = (INT32)lpBitmapInfo->biHeight; + hdcScreen = GetDC32 (NULL); + hbm = CreateCompatibleBitmap32 (hdcScreen, nWidth, nHeight); + if (hbm) { + HDC32 hdcDst = CreateCompatibleDC32 (hdcScreen); + HBITMAP32 hbmOld = SelectObject32 (hdcDst, hbm); + LPBYTE lpBits = (LPBYTE)(lpBitmap + 1); + lpBits += (1 << (lpBitmapInfo->biBitCount)) * sizeof(RGBQUAD); + StretchDIBits32 (hdcDst, 0, 0, nWidth, nHeight, 0, 0, nWidth, nHeight, + lpBits, (LPBITMAPINFO)lpBitmapInfo, DIB_RGB_COLORS, + SRCCOPY); + SelectObject32 (hdcDst, hbmOld); + DeleteDC32 (hdcDst); + } + ReleaseDC32 (NULL, hdcScreen); + GlobalFree32 ((HGLOBAL32)lpBitmapInfo); + FreeResource32 (hglb); return hbm; - } +} /*********************************************************************** @@ -358,28 +476,61 @@ CreateToolbar (HWND32 hwnd, DWORD style, UINT32 wID, INT32 nBitmaps, VOID WINAPI GetEffectiveClientRect (HWND32 hwnd, LPRECT32 lpRect, LPINT32 lpInfo) { - RECT32 rcClient, rcCtrl; - INT32 idCtrl, *lpRun; + RECT32 rcCtrl; + INT32 *lpRun; + HWND32 hwndCtrl; - TRACE (commctrl, "hwnd=0x%08lx lpRect=0x%08lx lpInfo=0x%08lx\n", + TRACE (commctrl, "(0x%08lx 0x%08lx 0x%08lx)\n", (DWORD)hwnd, (DWORD)lpRect, (DWORD)lpInfo); - GetClientRect32 (hwnd, &rcClient); -#if 0 + GetClientRect32 (hwnd, lpRect); lpRun = lpInfo; do { - lpRun += 3; - idCtrl = *lpRun; - if (idCtrl) { - TRACE (commctrl, "control id 0x%x\n", idCtrl); - GetWindowRect32 (GetDlgItem32 (hwnd, idCtrl), &rcCtrl); + lpRun += 2; + if (*lpRun == 0) + return; + lpRun++; + hwndCtrl = GetDlgItem32 (hwnd, *lpRun); + if (GetWindowLong32A (hwndCtrl, GWL_STYLE) & WS_VISIBLE) { + TRACE (commctrl, "control id 0x%x\n", *lpRun); + GetWindowRect32 (hwndCtrl, &rcCtrl); MapWindowPoints32 (NULL, hwnd, (LPPOINT32)&rcCtrl, 2); - SubtractRect32 (&rcClient, &rcClient, &rcCtrl); - lpRun++; + SubtractRect32 (lpRect, lpRect, &rcCtrl); } - } while (idCtrl); -#endif - CopyRect32 (lpRect, &rcClient); + lpRun++; + } while (*lpRun); +} + + +/*********************************************************************** + * ShowHideMenuCtl [COMCTL32.3] + * + * PARAMS + * hwnd [I] handle to the client window. + * uFlags [I] menu command id + * lpInfo [I] pointer to an array of integers + * + * NOTES + */ + +BOOL32 WINAPI +ShowHideMenuCtl (HWND32 hwnd, UINT32 uFlags, LPINT32 lpInfo) +{ + FIXME (commctrl, "(0x%08x 0x%08x %p): empty stub!\n", + hwnd, uFlags, lpInfo); +#if 0 + if (GetMenuState (lpInfo[1], uFlags, MF_BYCOMMAND) & MFS_CHECKED) { + /* checked -> hide control */ + + } + else { + /* not checked -> show control */ + + } + +#endif + + return FALSE; } diff --git a/controls/listview.c b/controls/listview.c new file mode 100644 index 00000000000..d2d4622636e --- /dev/null +++ b/controls/listview.c @@ -0,0 +1,245 @@ +/* + * Listview control + * + * Copyright 1998 Eric Kohl + * + * NOTES + * This is just a dummy control. An author is needed! Any volunteers? + * I will only improve this control once in a while. + * Eric + * + * TODO: + * - All messages. + * - All notifications. + */ + +#include "windows.h" +#include "commctrl.h" +#include "listview.h" +#include "heap.h" +#include "win.h" +#include "debug.h" + + +#define LISTVIEW_GetInfoPtr(wndPtr) ((LISTVIEW_INFO *)wndPtr->wExtra[0]) + + +static VOID +LISTVIEW_Refresh (WND *wndPtr, HDC32 hdc) +{ + LISTVIEW_INFO *infoPtr = LISTVIEW_GetInfoPtr(wndPtr); + + + +} + + + +static LRESULT +LISTVIEW_SetBkColor (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + LISTVIEW_INFO *infoPtr = LISTVIEW_GetInfoPtr(wndPtr); + + if (!(infoPtr)) return FALSE; + + /* set background color */ + infoPtr->clrBk = (COLORREF)lParam; + + return TRUE; +} + + +static LRESULT +LISTVIEW_SetImageList (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + LISTVIEW_INFO *infoPtr = LISTVIEW_GetInfoPtr(wndPtr); + + fprintf (stderr, "LISTVIEW: SetImageList (0x%08x 0x%08lx)\n", + wParam, lParam); + + return 0; +} + + +static LRESULT +LISTVIEW_Create (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + LISTVIEW_INFO *infoPtr = LISTVIEW_GetInfoPtr(wndPtr); + + /* initialize info structure */ + infoPtr->clrBk = CLR_NONE; + + return 0; +} + + +static LRESULT +LISTVIEW_Destroy (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + LISTVIEW_INFO *infoPtr = LISTVIEW_GetInfoPtr(wndPtr); + + + return 0; +} + + +static LRESULT +LISTVIEW_EraseBackground (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + LISTVIEW_INFO *infoPtr = LISTVIEW_GetInfoPtr(wndPtr); + + if (infoPtr->clrBk == CLR_NONE) { + return SendMessage32A (GetParent32 (wndPtr->hwndSelf), + WM_ERASEBKGND, wParam, lParam); + } + else { + RECT32 rect; + HBRUSH32 hBrush = CreateSolidBrush32 (infoPtr->clrBk); + GetClientRect32 (wndPtr->hwndSelf, &rect); + FillRect32 ((HDC32)wParam, &rect, hBrush); + DeleteObject32 (hBrush); + return FALSE; + } + return FALSE; +} + + +static LRESULT +LISTVIEW_NCCreate (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + LISTVIEW_INFO *infoPtr; + + /* allocate memory for info structure */ + infoPtr = (LISTVIEW_INFO *)HeapAlloc (GetProcessHeap (), HEAP_ZERO_MEMORY, + sizeof(LISTVIEW_INFO)); + wndPtr->wExtra[0] = (DWORD)infoPtr; + + if (infoPtr == NULL) { + ERR (listview, "could not allocate info memory!\n"); + return 0; + } + + if ((LISTVIEW_INFO*)wndPtr->wExtra[0] != infoPtr) { + ERR (listview, "pointer assignment error!\n"); + return 0; + } + + return DefWindowProc32A (wndPtr->hwndSelf, WM_NCCREATE, wParam, lParam); +} + + +static LRESULT +LISTVIEW_NCDestroy (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + LISTVIEW_INFO *infoPtr = LISTVIEW_GetInfoPtr(wndPtr); + + + + + /* free list view info data */ + HeapFree (GetProcessHeap (), 0, infoPtr); + + return 0; +} + + +static LRESULT +LISTVIEW_Paint (WND *wndPtr, WPARAM32 wParam) +{ + HDC32 hdc; + PAINTSTRUCT32 ps; + + hdc = wParam==0 ? BeginPaint32 (wndPtr->hwndSelf, &ps) : (HDC32)wParam; + LISTVIEW_Refresh (wndPtr, hdc); + if (!wParam) + EndPaint32 (wndPtr->hwndSelf, &ps); + return 0; +} + + +LRESULT WINAPI +ListviewWindowProc (HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam) +{ + WND *wndPtr = WIN_FindWndPtr(hwnd); + + switch (uMsg) + { + + case LVM_SETBKCOLOR: + return LISTVIEW_SetBkColor (wndPtr, wParam, lParam); + + + case LVM_SETIMAGELIST: + return LISTVIEW_SetImageList (wndPtr, wParam, lParam); + + + + +// case WM_CHAR: +// case WM_COMMAND: + + case WM_CREATE: + return LISTVIEW_Create (wndPtr, wParam, lParam); + + case WM_DESTROY: + return LISTVIEW_Destroy (wndPtr, wParam, lParam); + + case WM_ERASEBKGND: + return LISTVIEW_EraseBackground (wndPtr, wParam, lParam); + +// case WM_GETDLGCODE: +// case WM_GETFONT: +// case WM_HSCROLL: + +// case WM_MOUSEMOVE: +// return LISTVIEW_MouseMove (wndPtr, wParam, lParam); + + case WM_NCCREATE: + return LISTVIEW_NCCreate (wndPtr, wParam, lParam); + + case WM_NCDESTROY: + return LISTVIEW_NCDestroy (wndPtr, wParam, lParam); + +// case WM_NOTIFY: + + case WM_PAINT: + return LISTVIEW_Paint (wndPtr, wParam); + +// case WM_RBUTTONDOWN: +// case WM_SETFOCUS: +// case WM_SETFONT: +// case WM_SETREDRAW: +// case WM_TIMER: +// case WM_VSCROLL: +// case WM_WINDOWPOSCHANGED: +// case WM_WININICHANGE: + + default: + if (uMsg >= WM_USER) + ERR (listview, "unknown msg %04x wp=%08x lp=%08lx\n", + uMsg, wParam, lParam); + return DefWindowProc32A (hwnd, uMsg, wParam, lParam); + } + return 0; +} + + +void +LISTVIEW_Register (void) +{ + WNDCLASS32A wndClass; + + if (GlobalFindAtom32A (WC_LISTVIEW32A)) return; + + ZeroMemory (&wndClass, sizeof(WNDCLASS32A)); + wndClass.style = CS_GLOBALCLASS | CS_DBLCLKS; + wndClass.lpfnWndProc = (WNDPROC32)ListviewWindowProc; + wndClass.cbClsExtra = 0; + wndClass.cbWndExtra = sizeof(LISTVIEW_INFO *); + wndClass.hCursor = LoadCursor32A (0, IDC_ARROW32A); + wndClass.hbrBackground = (HBRUSH32)(COLOR_WINDOW + 1); + wndClass.lpszClassName = WC_LISTVIEW32A; + + RegisterClass32A (&wndClass); +} + diff --git a/controls/pager.c b/controls/pager.c new file mode 100644 index 00000000000..e85e60aaf70 --- /dev/null +++ b/controls/pager.c @@ -0,0 +1,75 @@ +/* + * Pager control + * + * Copyright 1998 Eric Kohl + * + * NOTES + * This is just a dummy control. An author is needed! Any volunteers? + * I will only improve this control once in a while. + * Eric + * + * TODO: + * - All messages. + * - All notifications. + */ + +#include "windows.h" +#include "commctrl.h" +#include "pager.h" +#include "heap.h" +#include "win.h" +#include "debug.h" + + +#define PAGER_GetInfoPtr(wndPtr) ((PAGER_INFO *)wndPtr->wExtra[0]) + + +LRESULT WINAPI +PagerWindowProc (HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam) +{ + WND *wndPtr = WIN_FindWndPtr(hwnd); + + switch (uMsg) + { +// case WM_CREATE: +// return PAGER_Create (wndPtr, wParam, lParam); + +// case WM_DESTROY: +// return PAGER_Destroy (wndPtr, wParam, lParam); + +// case WM_MOUSEMOVE: +// return PAGER_MouseMove (wndPtr, wParam, lParam); + +// case WM_PAINT: +// return PAGER_Paint (wndPtr, wParam); + + + default: + if (uMsg >= WM_USER) + ERR (pager, "unknown msg %04x wp=%08x lp=%08lx\n", + uMsg, wParam, lParam); + return DefWindowProc32A (hwnd, uMsg, wParam, lParam); + } + return 0; +} + + +void +PAGER_Register (void) +{ + WNDCLASS32A wndClass; + + if (GlobalFindAtom32A (WC_PAGESCROLLER32A)) return; + + ZeroMemory (&wndClass, sizeof(WNDCLASS32A)); + wndClass.style = CS_GLOBALCLASS | CS_DBLCLKS | CS_SAVEBITS; + wndClass.lpfnWndProc = (WNDPROC32)PagerWindowProc; + wndClass.cbClsExtra = 0; + wndClass.cbWndExtra = sizeof(PAGER_INFO *); + wndClass.hCursor = LoadCursor32A (0, IDC_ARROW32A); + wndClass.hbrBackground = 0; + wndClass.lpszClassName = WC_PAGESCROLLER32A; + + RegisterClass32A (&wndClass); +} + diff --git a/controls/rebar.c b/controls/rebar.c new file mode 100644 index 00000000000..9280cf93fb7 --- /dev/null +++ b/controls/rebar.c @@ -0,0 +1,82 @@ +/* + * Rebar control + * + * Copyright 1998 Eric Kohl + * + * NOTES + * This is just a dummy control. An author is needed! Any volunteers? + * I will only improve this control once in a while. + * Eric + * + * TODO: + * - All messages. + * - All notifications. + */ + +#include "windows.h" +#include "commctrl.h" +#include "rebar.h" +#include "heap.h" +#include "win.h" +#include "debug.h" + + +#define REBAR_GetInfoPtr(wndPtr) ((REBAR_INFO *)wndPtr->wExtra[0]) + + +LRESULT WINAPI +RebarWindowProc (HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam) +{ + WND *wndPtr = WIN_FindWndPtr(hwnd); + + switch (uMsg) + { +// case WM_CREATE: +// return REBAR_Create (wndPtr, wParam, lParam); + +// case WM_DESTROY: +// return REBAR_Destroy (wndPtr, wParam, lParam); + +// case WM_GETFONT: + +// case WM_MOUSEMOVE: +// return REBAR_MouseMove (wndPtr, wParam, lParam); + +// case WM_PAINT: +// return REBAR_Paint (wndPtr, wParam); + +// case WM_SETFONT: + +// case WM_TIMER: + +// case WM_WININICHANGE: + + default: + if (uMsg >= WM_USER) + ERR (rebar, "unknown msg %04x wp=%08x lp=%08lx\n", + uMsg, wParam, lParam); + return DefWindowProc32A (hwnd, uMsg, wParam, lParam); + } + return 0; +} + + +void +REBAR_Register (void) +{ + WNDCLASS32A wndClass; + + if (GlobalFindAtom32A (REBARCLASSNAME32A)) return; + + ZeroMemory (&wndClass, sizeof(WNDCLASS32A)); + wndClass.style = CS_GLOBALCLASS | CS_DBLCLKS | CS_SAVEBITS; + wndClass.lpfnWndProc = (WNDPROC32)RebarWindowProc; + wndClass.cbClsExtra = 0; + wndClass.cbWndExtra = sizeof(REBAR_INFO *); + wndClass.hCursor = LoadCursor32A (0, IDC_ARROW32A); + wndClass.hbrBackground = 0; + wndClass.lpszClassName = REBARCLASSNAME32A; + + RegisterClass32A (&wndClass); +} + diff --git a/controls/toolbar.c b/controls/toolbar.c index 4f3ce96ff76..b562df11fff 100644 --- a/controls/toolbar.c +++ b/controls/toolbar.c @@ -3,13 +3,6 @@ * * Copyright 1998 Eric Kohl * - * NOTES - * PLEASE don't try to improve or change this code right now. Many - * features are still missing, but I'm working on it. I want to avoid - * any confusion. This note will be removed as soon as most of the - * features are implemented. - * Eric - * * TODO: * - Bitmap drawing. * - Button wrapping. @@ -68,6 +61,54 @@ TOOLBAR_DrawFlatSeparator (LPRECT32 lpRect, HDC32 hdc) } +static void +TOOLBAR_DrawString (TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, + HDC32 hdc, INT32 nState) +{ + RECT32 rcText = btnPtr->rect; + HFONT32 hOldFont; + INT32 nOldBkMode; + + /* draw text */ + if ((btnPtr->iString > -1) && (btnPtr->iString < infoPtr->nNumStrings)) { + + InflateRect32 (&rcText, -3, -3); + rcText.top += infoPtr->nBitmapHeight; + if (nState & (TBSTATE_PRESSED | TBSTATE_CHECKED)) + OffsetRect32 (&rcText, 1, 1); + + hOldFont = SelectObject32 (hdc, infoPtr->hFont); + nOldBkMode = SetBkMode32 (hdc, TRANSPARENT); + if (!(nState & TBSTATE_ENABLED)) { + COLORREF clrOld = + SetTextColor32 (hdc, GetSysColor32 (COLOR_3DHILIGHT)); + OffsetRect32 (&rcText, 1, 1); + DrawText32A (hdc, infoPtr->strings[btnPtr->iString], -1, &rcText, + DT_CENTER); + SetTextColor32 (hdc, GetSysColor32 (COLOR_3DSHADOW)); + OffsetRect32 (&rcText, -1, -1); + DrawText32A (hdc, infoPtr->strings[btnPtr->iString], -1, &rcText, + DT_CENTER); + SetTextColor32 (hdc, clrOld); + } + else if (nState & TBSTATE_INDETERMINATE) { + COLORREF clrOld = + SetTextColor32 (hdc, GetSysColor32 (COLOR_3DSHADOW)); + DrawText32A (hdc, infoPtr->strings[btnPtr->iString], -1, &rcText, + DT_CENTER); + SetTextColor32 (hdc, clrOld); + } + else + DrawText32A (hdc, infoPtr->strings[btnPtr->iString], -1, &rcText, + DT_CENTER); + + SelectObject32 (hdc, hOldFont); + if (nOldBkMode != TRANSPARENT) + SetBkMode32 (hdc, nOldBkMode); + } +} + + static void TOOLBAR_DrawButton (WND *wndPtr, TBUTTON_INFO *btnPtr, HDC32 hdc) { @@ -92,6 +133,7 @@ TOOLBAR_DrawButton (WND *wndPtr, TBUTTON_INFO *btnPtr, HDC32 hdc) // ImageList_Draw (infoPtr->himlDis, btnPtr->iBitmap, hdc, // rc.left+1, rc.top+1, ILD_NORMAL); + TOOLBAR_DrawString (infoPtr, btnPtr, hdc, btnPtr->fsState); return; } @@ -101,6 +143,7 @@ TOOLBAR_DrawButton (WND *wndPtr, TBUTTON_INFO *btnPtr, HDC32 hdc) BF_RECT | BF_MIDDLE | BF_ADJUST); ImageList_Draw (infoPtr->himlDef, btnPtr->iBitmap, hdc, rc.left+2, rc.top+2, ILD_NORMAL); + TOOLBAR_DrawString (infoPtr, btnPtr, hdc, btnPtr->fsState); return; } @@ -117,6 +160,7 @@ TOOLBAR_DrawButton (WND *wndPtr, TBUTTON_INFO *btnPtr, HDC32 hdc) SelectObject32 (hdc, hbr); ImageList_Draw (infoPtr->himlDef, btnPtr->iBitmap, hdc, rc.left+2, rc.top+2, ILD_NORMAL); + TOOLBAR_DrawString (infoPtr, btnPtr, hdc, btnPtr->fsState); return; } @@ -132,6 +176,7 @@ TOOLBAR_DrawButton (WND *wndPtr, TBUTTON_INFO *btnPtr, HDC32 hdc) SelectObject32 (hdc, hbr); // ImageList_Draw (infoPtr->himlDis, btnPtr->iBitmap, hdc, // rc.left+1, rc.top+1, ILD_NORMAL); + TOOLBAR_DrawString (infoPtr, btnPtr, hdc, btnPtr->fsState); return; } @@ -140,10 +185,10 @@ TOOLBAR_DrawButton (WND *wndPtr, TBUTTON_INFO *btnPtr, HDC32 hdc) BF_SOFT | BF_RECT | BF_MIDDLE | BF_ADJUST); ImageList_Draw (infoPtr->himlDef, btnPtr->iBitmap, hdc, rc.left+1, rc.top+1, ILD_NORMAL); + TOOLBAR_DrawString (infoPtr, btnPtr, hdc, btnPtr->fsState); } - static void TOOLBAR_Refresh (WND *wndPtr, HDC32 hdc) { @@ -158,6 +203,42 @@ TOOLBAR_Refresh (WND *wndPtr, HDC32 hdc) } +static void +TOOLBAR_CalcStrings (WND *wndPtr, LPSIZE32 lpSize) +{ + TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr); + TBUTTON_INFO *btnPtr; + INT32 i; + HDC32 hdc; + HFONT32 hOldFont; + SIZE32 sz; + + lpSize->cx = 0; + lpSize->cy = 0; + hdc = GetDC32 (0); + hOldFont = SelectObject32 (hdc, infoPtr->hFont); + + btnPtr = infoPtr->buttons; + for (i = 0; i < infoPtr->nNumButtons; i++, btnPtr++) { + if (!(btnPtr->fsState & TBSTATE_HIDDEN) && + (btnPtr->iString > -1) && + (btnPtr->iString < infoPtr->nNumStrings)) { + LPSTR lpText = infoPtr->strings[btnPtr->iString]; + GetTextExtentPoint32A (hdc, lpText, lstrlen32A(lpText), &sz); + if (sz.cx > lpSize->cx) + lpSize->cx = sz.cx; + if (sz.cy > lpSize->cy) + lpSize->cy = sz.cy; + } + } + + SelectObject32 (hdc, hOldFont); + ReleaseDC32 (0, hdc); + + TRACE (toolbar, "string size %d x %d!\n", lpSize->cx, lpSize->cy); +} + + static void TOOLBAR_CalcToolbar (WND *wndPtr) { @@ -166,6 +247,17 @@ TOOLBAR_CalcToolbar (WND *wndPtr) INT32 i, j, nRows; INT32 x, y, cx, cy; BOOL32 bVertical; + SIZE32 sizeString; + + + /* test */ + TOOLBAR_CalcStrings (wndPtr, &sizeString); + + if (sizeString.cy > 0) + infoPtr->nButtonHeight = sizeString.cy + infoPtr->nBitmapHeight + 6; + + if (sizeString.cx > infoPtr->nBitmapWidth) + infoPtr->nButtonWidth = sizeString.cx + 6; x = infoPtr->nIndent; y = TOP_BORDER; @@ -220,6 +312,7 @@ TOOLBAR_CalcToolbar (WND *wndPtr) } infoPtr->nHeight = y + cy + BOTTOM_BORDER; + TRACE (toolbar, "toolbar height %d\n", infoPtr->nHeight); } @@ -335,6 +428,17 @@ TOOLBAR_AddBitmap (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) ILC_COLOR | ILC_MASK, (INT32)wParam, 2); } +#if 0 + if (!(infoPtr->himlDis)) { + /* create new disabled image list */ + TRACE (toolbar, "creating disabled image list!\n"); + infoPtr->himlDis = + ImageList_Create (infoPtr->nBitmapWidth, + infoPtr->nBitmapHeight, ILC_COLOR | ILC_MASK, + (INT32)wParam, 2); + } +#endif + /* Add bitmaps to the default image list */ if (lpAddBmp->hInst == (HINSTANCE32)0) { nIndex = @@ -434,7 +538,7 @@ TOOLBAR_AddString32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) len = LoadString32A ((HINSTANCE32)wParam, (UINT32)lParam, szString, 256); - TRACE (toolbar, "len=%d\n", len); + TRACE (toolbar, "len=%d \"%s\"\n", len, szString); nIndex = infoPtr->nNumStrings; if (infoPtr->nNumStrings == 0) { infoPtr->strings = @@ -464,7 +568,7 @@ TOOLBAR_AddString32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) nIndex = infoPtr->nNumStrings; while (*p) { len = lstrlen32A (p); - TRACE (toolbar, "len=%d\n", len); + TRACE (toolbar, "len=%d \"%s\"\n", len, p); if (infoPtr->nNumStrings == 0) { infoPtr->strings = @@ -487,7 +591,6 @@ TOOLBAR_AddString32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) p += (len+1); } - } return nIndex; @@ -501,8 +604,50 @@ static LRESULT TOOLBAR_AutoSize (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) { TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr); + RECT32 parent_rect; + HWND32 parent; + INT32 x, y, cx, cy; + UINT32 uPosFlags = 0; - TRACE (toolbar, "auto size!\n"); + FIXME (toolbar, "auto size!\n"); + + parent = GetParent32 (wndPtr->hwndSelf); + GetClientRect32(parent, &parent_rect); + + if (wndPtr->dwStyle & CCS_NORESIZE) + uPosFlags |= SWP_NOSIZE; + else { + infoPtr->nWidth = parent_rect.right - parent_rect.left; + TOOLBAR_CalcToolbar (wndPtr); + cy = infoPtr->nHeight; + cx = infoPtr->nWidth; + } + + if (wndPtr->dwStyle & CCS_NOPARENTALIGN) { + uPosFlags |= SWP_NOMOVE; +// if (wndPtr->dwStyle & (CCS_TOP | CCS_BOTTOM)) +// cy = (INT32)HIWORD(lParam); + } +#if 0 + if (wndPtr->dwStyle & CCS_NORESIZE) { + uPosFlags |= SWP_NOSIZE; +// cx = (INT32)LOWORD(lParam); +// cy = (INT32)HIWORD(lParam); + } + else { + /* FIXME: handle CCS_NOMOVEX and CCS_NOMOVEY */ + + } + + infoPtr->nWidth = cx; + infoPtr->nHeight = cy; +#endif + if (!(wndPtr->dwStyle & CCS_NODIVIDER)) + cy += 2; + + infoPtr->bAutoSize = TRUE; + SetWindowPos32 (wndPtr->hwndSelf, 0, parent_rect.left, parent_rect.top, + cx, cy, uPosFlags | SWP_NOZORDER); return 0; } @@ -595,7 +740,7 @@ TOOLBAR_CheckButton (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) TOOLBAR_DrawButton (wndPtr, btnPtr, hdc); ReleaseDC32 (wndPtr->hwndSelf, hdc); - /* FIXME: Send a WM_COMMAND or WM_NOTIFY */ + /* FIXME: Send a WM_NOTIFY?? */ return TRUE; } @@ -784,7 +929,16 @@ TOOLBAR_GetButtonText32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) // << TOOLBAR_GetExtendedStyle >> // << TOOLBAR_GetHotImageList >> // << TOOLBAR_GetHotItem >> -// << TOOLBAR_GetImageList >> + + +static LRESULT +TOOLBAR_GetImageList (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr); + return (LRESULT)infoPtr->himlDef; +} + + // << TOOLBAR_GetInsertMark >> // << TOOLBAR_GetInsertMarkColor >> @@ -1200,7 +1354,21 @@ TOOLBAR_SetCmdId (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) // << TOOLBAR_SetExtendedStyle >> // << TOOLBAR_SetHotImageList >> // << TOOLBAR_SetHotItem >> -// << TOOLBAR_SetImageList >> + + +static LRESULT +TOOLBAR_SetImageList (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr); + HIMAGELIST himlTemp; + + himlTemp = infoPtr->himlDef; + infoPtr->himlDef = (HIMAGELIST)lParam; + + /* FIXME: redraw ? */ + + return (LRESULT)himlTemp; +} static LRESULT @@ -1220,7 +1388,21 @@ TOOLBAR_SetIndent (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) // << TOOLBAR_SetInsertMark >> -// << TOOLBAR_SetInsertMarkColor >> + + +static LRESULT +TOOLBAR_SetInsertMarkColor (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr); + + infoPtr->clrInsertMark = (COLORREF)lParam; + + /* FIXME : redraw ??*/ + + return 0; +} + + // << TOOLBAR_SetMaxTextRows >> // << TOOLBAR_SetPadding >> @@ -1307,13 +1489,22 @@ TOOLBAR_SetToolTips (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) } -// << TOOLBAR_SetUnicodeFormat >> +static LRESULT +TOOLBAR_SetUnicodeFormat (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr); + + FIXME (toolbar, "hwnd=0x%04x stub!\n", wndPtr->hwndSelf); + + return 0; +} static LRESULT TOOLBAR_Create (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) { TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr); + LOGFONT32A logFont; /* initialize info structure */ infoPtr->nButtonHeight = 22; @@ -1332,6 +1523,9 @@ TOOLBAR_Create (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) infoPtr->bTransparent = (wndPtr->dwStyle & TBSTYLE_FLAT); infoPtr->nHotItem = -1; + SystemParametersInfo32A (SPI_GETICONTITLELOGFONT, 0, &logFont, 0); + infoPtr->hFont = CreateFontIndirect32A (&logFont); + return 0; } @@ -1371,6 +1565,10 @@ TOOLBAR_Destroy (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) if (infoPtr->himlHot) ImageList_Destroy (infoPtr->himlHot); + /* delete default font */ + if (infoPtr->hFont) + DeleteObject32 (infoPtr->hFont); + /* free toolbar info data */ HeapFree (GetProcessHeap (), 0, infoPtr); @@ -1378,6 +1576,19 @@ TOOLBAR_Destroy (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) } +static LRESULT +TOOLBAR_EraseBackground (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr); + + if (infoPtr->bTransparent) + return SendMessage32A (GetParent32 (wndPtr->hwndSelf), WM_ERASEBKGND, + wParam, lParam); + + return DefWindowProc32A (wndPtr->hwndSelf, WM_ERASEBKGND, wParam, lParam); +} + + static LRESULT TOOLBAR_LButtonDblClk (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) { @@ -1546,6 +1757,9 @@ TOOLBAR_MouseMove (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) } + + + static LRESULT TOOLBAR_NCCalcSize (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) { @@ -1657,12 +1871,19 @@ TOOLBAR_Size (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) INT32 flags; UINT32 uPosFlags = 0; + if (infoPtr->bAutoSize) { + infoPtr->bAutoSize = FALSE; + return 0; + } + flags = (INT32) wParam; /* FIXME for flags = * SIZE_MAXIMIZED, SIZE_MAXSHOW, SIZE_MINIMIZED */ + TRACE (toolbar, "sizing toolbar!\n"); + if (flags == SIZE_RESTORED) { /* width and height don't apply */ parent = GetParent32 (wndPtr->hwndSelf); @@ -1679,8 +1900,23 @@ TOOLBAR_Size (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) if (wndPtr->dwStyle & CCS_NOPARENTALIGN) { uPosFlags |= SWP_NOMOVE; +// if (wndPtr->dwStyle & (CCS_TOP | CCS_BOTTOM)) +// cy = (INT32)HIWORD(lParam); + } +#if 0 + if (wndPtr->dwStyle & CCS_NORESIZE) { + uPosFlags |= SWP_NOSIZE; +// cx = (INT32)LOWORD(lParam); +// cy = (INT32)HIWORD(lParam); + } + else { + /* FIXME: handle CCS_NOMOVEX and CCS_NOMOVEY */ + } + infoPtr->nWidth = cx; + infoPtr->nHeight = cy; +#endif if (!(wndPtr->dwStyle & CCS_NODIVIDER)) cy += 2; @@ -1691,6 +1927,11 @@ TOOLBAR_Size (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) } + + + + + LRESULT WINAPI ToolbarWindowProc (HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam) { @@ -1763,7 +2004,10 @@ ToolbarWindowProc (HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam) // case TB_GETEXTENDEDSTYLE: /* 4.71 */ // case TB_GETHOTIMAGELIST: /* 4.70 */ // case TB_GETHOTITEM: /* 4.71 */ -// case TB_GETIMAGELIST: /* 4.70 */ + + case TB_GETIMAGELIST: + return TOOLBAR_GetImageList (wndPtr, wParam, lParam); + // case TB_GETINSERTMARK: /* 4.71 */ // case TB_GETINSERTMARKCOLOR: /* 4.71 */ @@ -1860,13 +2104,18 @@ ToolbarWindowProc (HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam) // case TB_SETEXTENDEDSTYLE: /* 4.71 */ // case TB_SETHOTIMAGELIST: /* 4.70 */ // case TB_SETHOTITEM: /* 4.71 */ -// case TB_SETIMAGELIST: /* 4.70 */ + + case TB_SETIMAGELIST: + return TOOLBAR_SetImageList (wndPtr, wParam, lParam); case TB_SETINDENT: return TOOLBAR_SetIndent (wndPtr, wParam, lParam); // case TB_SETINSERTMARK: /* 4.71 */ -// case TB_SETINSERTMARKCOLOR: /* 4.71 */ + + case TB_SETINSERTMARKCOLOR: + return TOOLBAR_SetInsertMarkColor (wndPtr, wParam, lParam); + // case TB_SETMAXTEXTROWS: /* 4.70 */ // case TB_SETPADDING: /* 4.71 */ @@ -1885,7 +2134,8 @@ ToolbarWindowProc (HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam) case TB_SETTOOLTIPS: return TOOLBAR_SetToolTips (wndPtr, wParam, lParam); -// case TB_SETUNICODEFORMAT: + case TB_SETUNICODEFORMAT: + return TOOLBAR_SetUnicodeFormat (wndPtr, wParam, lParam); case WM_CREATE: return TOOLBAR_Create (wndPtr, wParam, lParam); @@ -1893,8 +2143,8 @@ ToolbarWindowProc (HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam) case WM_DESTROY: return TOOLBAR_Destroy (wndPtr, wParam, lParam); -// case WM_ERASEBKGND: -// return TOOLBAR_EraseBackground (wndPtr, wParam, lParam); + case WM_ERASEBKGND: + return TOOLBAR_EraseBackground (wndPtr, wParam, lParam); case WM_LBUTTONDBLCLK: return TOOLBAR_LButtonDblClk (wndPtr, wParam, lParam); @@ -1921,6 +2171,7 @@ ToolbarWindowProc (HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam) return TOOLBAR_NCPaint (wndPtr, wParam, lParam); // case WM_NOTIFY: +// SendMessage32A (GetParent32 (hwnd), uMsg, wParam, lParam); case WM_PAINT: return TOOLBAR_Paint (wndPtr, wParam); diff --git a/controls/tooltips.c b/controls/tooltips.c new file mode 100644 index 00000000000..3efcf87c032 --- /dev/null +++ b/controls/tooltips.c @@ -0,0 +1,698 @@ +/* + * Tool tip control + * + * Copyright 1998 Eric Kohl + * + * NOTES + * PLEASE don't try to improve or change this code right now. Many + * features are still missing, but I'm working on it. I want to avoid + * any confusion. This note will be removed as soon as most of the + * features are implemented. + * Eric + * + * TODO: + * - Most messages. + * - All notifications. + * + * Testing: + * - Run tests using Waite Group Windows95 API Bible Volume 2. + * The second cdrom contains executables enumtools.exe ... + * - additional features. + * + * FIXME: + * - DelTool32A incomplete. + * - GetCurrentTool32A incomplete. + */ + +#include "windows.h" +#include "commctrl.h" +#include "tooltips.h" +#include "heap.h" +#include "win.h" +#include "debug.h" + + +#define TOOLTIPS_GetInfoPtr(wndPtr) ((TOOLTIPS_INFO *)wndPtr->wExtra[0]) + + +static INT32 +TOOLTIPS_GetIndexFromInfoA (TOOLTIPS_INFO *infoPtr, LPTOOLINFOA lpToolInfo) +{ + TTTOOL_INFO *toolPtr; + INT32 nIndex; + + for (nIndex = 0; nIndex < infoPtr->uNumTools; nIndex++) { + toolPtr = &infoPtr->tools[nIndex]; + + if ((lpToolInfo->hwnd == toolPtr->hwnd) && + (lpToolInfo->uId == toolPtr->uId)) + return nIndex; + } + + return -1; +} + +/* +static INT32 +TOOLTIPS_GetIndexFromPoint (TOOLTIPS_INFO *infoPtr, LPPOINT32 lpPt) +{ + TTTOOL_INFO *toolPtr; + INT32 nIndex; + + for (nIndex = 0; nIndex < infoPtr->uNumTools; nIndex++) { + toolPtr = &infoPtr->tools[nIndex]; + + if (lpToolInfo->uFlags & TTF_IDISHWND) { + if (PtInRect ( + } + else { + + return nIndex; + } + } + + return -1; +} +*/ + +static LRESULT +TOOLTIPS_Activate (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr); + + infoPtr->bActive = (BOOL32)wParam; + + if (infoPtr->bActive) { + FIXME (tooltips, "activated!\n"); + } + else { + FIXME (tooltips, "deactivated!\n"); + } + + return 0; +} + + +static LRESULT +TOOLTIPS_AddTool32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr); + LPTOOLINFOA lpToolInfo = (LPTOOLINFOA)lParam; + TTTOOL_INFO *toolPtr; + + if (lpToolInfo == NULL) return FALSE; + + if (infoPtr->uNumTools == 0) { + infoPtr->tools = + HeapAlloc (GetProcessHeap (), HEAP_ZERO_MEMORY, + sizeof(TTTOOL_INFO)); + toolPtr = infoPtr->tools; + } + else { + TTTOOL_INFO *oldTools = infoPtr->tools; + infoPtr->tools = + HeapAlloc (GetProcessHeap (), HEAP_ZERO_MEMORY, + sizeof(TTTOOL_INFO) * (infoPtr->uNumTools + 1)); + memcpy (infoPtr->tools, oldTools, + infoPtr->uNumTools * sizeof(TTTOOL_INFO)); + HeapFree (GetProcessHeap (), 0, oldTools); + toolPtr = &infoPtr->tools[infoPtr->uNumTools]; + } + + infoPtr->uNumTools++; + + /* copy tool data */ + toolPtr->uFlags = lpToolInfo->uFlags; + toolPtr->hwnd = lpToolInfo->hwnd; + toolPtr->uId = lpToolInfo->uId; + toolPtr->rect = lpToolInfo->rect; + toolPtr->hinst = lpToolInfo->hinst; + + if (lpToolInfo->hinst) { + toolPtr->lpszText = lpToolInfo->lpszText; + } + else if (lpToolInfo->lpszText) { + if (lpToolInfo->lpszText == LPSTR_TEXTCALLBACK32A) + toolPtr->lpszText = lpToolInfo->lpszText; + else { + INT32 len = lstrlen32A (lpToolInfo->lpszText); + toolPtr->lpszText = + HeapAlloc (GetProcessHeap (), HEAP_ZERO_MEMORY, len + 1); + lstrcpy32A (toolPtr->lpszText, lpToolInfo->lpszText); + } + } + + if (lpToolInfo->cbSize >= sizeof(TOOLINFOA)) + toolPtr->lParam = lpToolInfo->lParam; + + + return TRUE; +} + + +// << TOOLTIPS_AddTool32W >> + + +static LRESULT +TOOLTIPS_DelTool32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr); + LPTOOLINFOA lpToolInfo = (LPTOOLINFOA)lParam; + TTTOOL_INFO *toolPtr; + INT32 nIndex; + + if (lpToolInfo == NULL) return 0; + if (infoPtr->uNumTools == 0) return 0; + + nIndex = TOOLTIPS_GetIndexFromInfoA (infoPtr, lpToolInfo); + if (nIndex == -1) return 0; + + TRACE (tooltips, "index=%d\n", nIndex); + + +/* delete tool from tool list */ +/* + toolPtr = &infoPtr->tools[nIndex]; + + // delete text string + if ((toolPtr->hinst) && (toolPtr->lpszText)) { + if (toolPtr->lpszText != LPSTR_TEXTCALLBACK32A) + HeapFree (GetProcessHeap (), 0, toolPtr->lpszText); + } + + +*/ + return 0; +} + + +// << TOOLTIPS_DelTool32W >> + + +static LRESULT +TOOLTIPS_EnumTools32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr); + UINT32 uIndex = (UINT32)wParam; + LPTOOLINFOA lpToolInfo = (LPTOOLINFOA)lParam; + TTTOOL_INFO *toolPtr; + + if (uIndex >= infoPtr->uNumTools) return FALSE; + if (lpToolInfo == NULL) return FALSE; + + TRACE (tooltips, "index=%u\n", uIndex); + + toolPtr = &infoPtr->tools[uIndex]; + + /* copy tool data */ + lpToolInfo->uFlags = toolPtr->uFlags; + lpToolInfo->hwnd = toolPtr->hwnd; + lpToolInfo->uId = toolPtr->uId; + lpToolInfo->rect = toolPtr->rect; + lpToolInfo->hinst = toolPtr->hinst; + lpToolInfo->lpszText = toolPtr->lpszText; + + if (lpToolInfo->cbSize >= sizeof(TOOLINFOA)) + lpToolInfo->lParam = toolPtr->lParam; + + return TRUE; +} + + +// << TOOLTIPS_EnumTools32W >> + + +static LRESULT +TOOLTIPS_GetCurrentTool32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr); + LPTOOLINFOA lpti = (LPTOOLINFOA)lParam; + + if (lpti) { + if (infoPtr->iCurrentTool > -1) { + /* FIXME */ + + return TRUE; + } + else + return FALSE; + } + else + return (infoPtr->iCurrentTool != -1); + + return FALSE; +} + + +// << TOOLTIPS_GetCurrentTool32W >> +// << TOOLTIPS_GetDelayTime >> +// << TOOLTIPS_GetMargin >> + + +static LRESULT +TOOLTIPS_GetMaxTipWidth (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr); + + return infoPtr->iMaxTipWidth; +} + + +static LRESULT +TOOLTIPS_GetText32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr); + LPTOOLINFOA lpti = (LPTOOLINFOA)lParam; + INT32 nIndex; + + if (!(lpti)) return 0; + if (lpti->cbSize < sizeof(TOOLINFOA)) return 0; + + nIndex = TOOLTIPS_GetIndexFromInfoA (infoPtr, lpti); + if (nIndex == -1) return 0; + + lstrcpy32A (lpti->lpszText, infoPtr->tools[nIndex].lpszText); + + return 0; +} + + +// << TOOLTIPS_GetText32W >> + + +static LRESULT +TOOLTIPS_GetTipBkColor (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr); + return infoPtr->clrBk; +} + + +static LRESULT +TOOLTIPS_GetTipTextColor (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr); + return infoPtr->clrText; +} + + +static LRESULT +TOOLTIPS_GetToolCount (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr); + return infoPtr->uNumTools; +} + + +static LRESULT +TOOLTIPS_GetToolInfo32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr); + LPTOOLINFOA lpToolInfo = (LPTOOLINFOA)lParam; + TTTOOL_INFO *toolPtr; + INT32 nIndex; + + if (lpToolInfo == NULL) return FALSE; + if (infoPtr->uNumTools == 0) return FALSE; + + nIndex = TOOLTIPS_GetIndexFromInfoA (infoPtr, lpToolInfo); + if (nIndex == -1) return FALSE; + + TRACE (tooltips, "index=%d\n", nIndex); + + toolPtr = &infoPtr->tools[nIndex]; + + /* copy tool data */ + lpToolInfo->uFlags = toolPtr->uFlags; + lpToolInfo->rect = toolPtr->rect; + lpToolInfo->hinst = toolPtr->hinst; + lpToolInfo->lpszText = toolPtr->lpszText; + + if (lpToolInfo->cbSize >= sizeof(TOOLINFOA)) + lpToolInfo->lParam = toolPtr->lParam; + + return TRUE; +} + + +// << TOOLTIPS_GetToolInfo32W >> +// << TOOLTIPS_HitTest32A >> +// << TOOLTIPS_HitTest32W >> + + +static LRESULT +TOOLTIPS_NewToolRect32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr); + LPTOOLINFOA lpti = (LPTOOLINFOA)lParam; + INT32 nIndex; + + if (!(lpti)) return 0; + if (lpti->cbSize < sizeof(TOOLINFOA)) return 0; + + nIndex = TOOLTIPS_GetIndexFromInfoA (infoPtr, lpti); + if (nIndex == -1) return 0; + + infoPtr->tools[nIndex].rect = lpti->rect; + + return 0; +} + + +// << TOOLTIPS_NewToolRect32W >> +// << TOOLTIPS_Pop >> + + +static LRESULT +TOOLTIPS_RelayEvent (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr); + LPMSG16 lpMsg = (LPMSG16)lParam; + + if (lpMsg == NULL) return 0; + + if (lpMsg->message == WM_MOUSEMOVE) { + FIXME (tooltips, "WM_MOUSEMOVE (%d %d)\n", lpMsg->pt.x, lpMsg->pt.y); + } + +// FIXME (tooltips, "empty stub!\n"); + + return 0; +} + + +// << TOOLTIPS_SetDelayTime >> +// << TOOLTIPS_SetMargin >> + + +static LRESULT +TOOLTIPS_SetMaxTipWidth (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr); + INT32 iTemp = infoPtr->iMaxTipWidth; + + infoPtr->iMaxTipWidth = (INT32)lParam; + + return iTemp; +} + + +static LRESULT +TOOLTIPS_SetTipBkColor (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr); + + infoPtr->clrBk = (COLORREF)wParam; + + return 0; +} + + +static LRESULT +TOOLTIPS_SetTipTextColor (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr); + + infoPtr->clrText = (COLORREF)wParam; + + return 0; +} + + +static LRESULT +TOOLTIPS_SetToolInfo32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr); + LPTOOLINFOA lpToolInfo = (LPTOOLINFOA)lParam; + TTTOOL_INFO *toolPtr; + INT32 nIndex; + + if (lpToolInfo == NULL) return 0; + + nIndex = TOOLTIPS_GetIndexFromInfoA (infoPtr, lpToolInfo); + if (nIndex == -1) return 0; + + TRACE (tooltips, "index=%d\n", nIndex); + + toolPtr = &infoPtr->tools[nIndex]; + + /* copy tool data */ + toolPtr->uFlags = lpToolInfo->uFlags; + toolPtr->hwnd = lpToolInfo->hwnd; + toolPtr->uId = lpToolInfo->uId; + toolPtr->rect = lpToolInfo->rect; + toolPtr->hinst = lpToolInfo->hinst; + + if (lpToolInfo->lpszText) { + if (lpToolInfo->lpszText == LPSTR_TEXTCALLBACK32A) + toolPtr->lpszText = lpToolInfo->lpszText; + else { + INT32 len = lstrlen32A (lpToolInfo->lpszText); + HeapFree (GetProcessHeap (), 0, toolPtr->lpszText); + toolPtr->lpszText = + HeapAlloc (GetProcessHeap (), HEAP_ZERO_MEMORY, len + 1); + lstrcpy32A (toolPtr->lpszText, lpToolInfo->lpszText); + } + } + + if (lpToolInfo->cbSize >= sizeof(TOOLINFOA)) + toolPtr->lParam = lpToolInfo->lParam; + + return 0; +} + + +// << TOOLTIPS_SetToolInfo32W >> +// << TOOLTIPS_TrackActive >> +// << TOOLTIPS_TrackPosition >> +// << TOOLTIPS_Update >> +// << TOOLTIPS_UpdateTipText32A >> +// << TOOLTIPS_UpdateTipText32W >> +// << TOOLTIPS_WindowFromPoint >> + + +static LRESULT +TOOLTIPS_Create (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TOOLTIPS_INFO *infoPtr; + + /* allocate memory for info structure */ + infoPtr = (TOOLTIPS_INFO *)HeapAlloc (GetProcessHeap (), HEAP_ZERO_MEMORY, + sizeof(TOOLTIPS_INFO)); + wndPtr->wExtra[0] = (DWORD)infoPtr; + + if (infoPtr == NULL) { + ERR (tooltips, "could not allocate info memory!\n"); + return 0; + } + + /* initialize info structure */ + infoPtr->bActive = TRUE; + infoPtr->clrBk = GetSysColor32 (COLOR_INFOBK); + infoPtr->clrText = GetSysColor32 (COLOR_INFOTEXT); + infoPtr->hFont = NULL; + infoPtr->iMaxTipWidth = -1; + infoPtr->iCurrentTool = -1; + + return 0; +} + + +static LRESULT +TOOLTIPS_Destroy (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr); + + + /* free tools */ + if (infoPtr->tools) { + INT32 i; + for (i = 0; i < infoPtr->uNumTools; i++) { + if ((infoPtr->tools[i].hinst) && (infoPtr->tools[i].lpszText)) { + if (infoPtr->tools[i].lpszText != LPSTR_TEXTCALLBACK32A) + HeapFree (GetProcessHeap (), 0, infoPtr->tools[i].lpszText); + } + } + HeapFree (GetProcessHeap (), 0, infoPtr->tools); + } + + /* free tool tips info data */ + HeapFree (GetProcessHeap (), 0, infoPtr); + + return 0; +} + + +static LRESULT +TOOLTIPS_GetFont (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr); + + return infoPtr->hFont; +} + + +// << TOOLTIPS_MouseMove >> +// << TOOLTIPS_Paint >> + + +static LRESULT +TOOLTIPS_SetFont (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr); + + infoPtr->hFont = (HFONT32)wParam; + + if (LOWORD(lParam)) { + /* redraw */ + + } + + return 0; +} + + +// << TOOLTIPS_Timer >> +// << TOOLTIPS_WinIniChange >> + + +LRESULT WINAPI +ToolTipsWindowProc (HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam) +{ + WND *wndPtr = WIN_FindWndPtr(hwnd); + + switch (uMsg) + { + case TTM_ACTIVATE: + return TOOLTIPS_Activate (wndPtr, wParam, lParam); + + case TTM_ADDTOOL32A: + return TOOLTIPS_AddTool32A (wndPtr, wParam, lParam); + +// case TTM_ADDTOOL32W: + + case TTM_DELTOOL32A: + return TOOLTIPS_DelTool32A (wndPtr, wParam, lParam); + +// case TTM_DELTOOL32W: + + case TTM_ENUMTOOLS32A: + return TOOLTIPS_EnumTools32A (wndPtr, wParam, lParam); + +// case TTM_ENUMTOOLS32W: + + case TTM_GETCURRENTTOOL32A: + return TOOLTIPS_GetCurrentTool32A (wndPtr, wParam, lParam); + +// case TTM_GETCURRENTTOOL32W: +// case TTM_GETDELAYTIME: /* 4.70 */ +// case TTM_GETMARGIN: /* 4.70 */ + + case TTM_GETMAXTIPWIDTH: + return TOOLTIPS_GetMaxTipWidth (wndPtr, wParam, lParam); + + case TTM_GETTEXT32A: + return TOOLTIPS_GetText32A (wndPtr, wParam, lParam); + +// case TTM_GETTEXT32W: + + case TTM_GETTIPBKCOLOR: + return TOOLTIPS_GetTipBkColor (wndPtr, wParam, lParam); + + case TTM_GETTIPTEXTCOLOR: + return TOOLTIPS_GetTipTextColor (wndPtr, wParam, lParam); + + case TTM_GETTOOLCOUNT: + return TOOLTIPS_GetToolCount (wndPtr, wParam, lParam); + + case TTM_GETTOOLINFO32A: + return TOOLTIPS_GetToolInfo32A (wndPtr, wParam, lParam); + +// case TTM_GETTOOLINFO32W: +// case TTM_HITTEST32A: +// case TTM_HITTEST32W: + + case TTM_NEWTOOLRECT32A: + return TOOLTIPS_NewToolRect32A (wndPtr, wParam, lParam); + +// case TTM_NEWTOOLRECT32W: +// case TTM_POP: /* 4.70 */ + + case TTM_RELAYEVENT: + return TOOLTIPS_RelayEvent (wndPtr, wParam, lParam); + +// case TTM_SETDELAYTIME: /* 4.70 */ +// case TTM_SETMARGIN: /* 4.70 */ + + case TTM_SETMAXTIPWIDTH: + return TOOLTIPS_SetMaxTipWidth (wndPtr, wParam, lParam); + + case TTM_SETTIPBKCOLOR: + return TOOLTIPS_SetTipBkColor (wndPtr, wParam, lParam); + + case TTM_SETTIPTEXTCOLOR: + return TOOLTIPS_SetTipTextColor (wndPtr, wParam, lParam); + + case TTM_SETTOOLINFO32A: + return TOOLTIPS_SetToolInfo32A (wndPtr, wParam, lParam); + +// case TTM_SETTOOLINFO32W: +// case TTM_TRACKACTIVE: /* 4.70 */ +// case TTM_TRACKPOSITION: /* 4.70 */ +// case TTM_UPDATE: /* 4.71 */ +// case TTM_UPDATETIPTEXT32A: +// case TTM_UPDATETIPTEXT32W: +// case TTM_WINDOWFROMPOINT: + + + case WM_CREATE: + return TOOLTIPS_Create (wndPtr, wParam, lParam); + + case WM_DESTROY: + return TOOLTIPS_Destroy (wndPtr, wParam, lParam); + + case WM_GETFONT: + return TOOLTIPS_GetFont (wndPtr, wParam, lParam); + +// case WM_MOUSEMOVE: +// return TOOLTIPS_MouseMove (wndPtr, wParam, lParam); + +// case WM_PAINT: +// return TOOLTIPS_Paint (wndPtr, wParam); + + case WM_SETFONT: + return TOOLTIPS_SetFont (wndPtr, wParam, lParam); + +// case WM_TIMER: + +// case WM_WININICHANGE: + + default: + if (uMsg >= WM_USER) + ERR (tooltips, "unknown msg %04x wp=%08x lp=%08lx\n", + uMsg, wParam, lParam); + return DefWindowProc32A (hwnd, uMsg, wParam, lParam); + } + return 0; +} + + +void +TOOLTIPS_Register (void) +{ + WNDCLASS32A wndClass; + + if (GlobalFindAtom32A (TOOLTIPS_CLASS32A)) return; + + ZeroMemory (&wndClass, sizeof(WNDCLASS32A)); + wndClass.style = CS_GLOBALCLASS | CS_DBLCLKS | CS_SAVEBITS; + wndClass.lpfnWndProc = (WNDPROC32)ToolTipsWindowProc; + wndClass.cbClsExtra = 0; + wndClass.cbWndExtra = sizeof(TOOLTIPS_INFO *); + wndClass.hCursor = LoadCursor32A (0, IDC_ARROW32A); + wndClass.hbrBackground = 0; + wndClass.lpszClassName = TOOLTIPS_CLASS32A; + + RegisterClass32A (&wndClass); +} + diff --git a/controls/trackbar.c b/controls/trackbar.c new file mode 100644 index 00000000000..48e587ba437 --- /dev/null +++ b/controls/trackbar.c @@ -0,0 +1,437 @@ +/* + * Trackbar control + * + * Copyright 1998 Eric Kohl + * + * NOTES + * This is just a dummy control. An author is needed! Any volunteers? + * I will only improve this control once in a while. + * Eric + * + * TODO: + * - All messages. + * - All notifications. + */ + +#include "windows.h" +#include "commctrl.h" +#include "trackbar.h" +#include "heap.h" +#include "win.h" +#include "debug.h" + + +#define TRACKBAR_GetInfoPtr(wndPtr) ((TRACKBAR_INFO *)wndPtr->wExtra[0]) + + +static VOID +TRACKBAR_Refresh (WND *wndPtr, HDC32 hdc) +{ + TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr); + RECT32 rect; + + GetClientRect32 (wndPtr->hwndSelf, &rect); + + /* draw channel */ + DrawEdge32 (hdc, &infoPtr->rcChannel, EDGE_SUNKEN, BF_RECT); + + /* draw thumb */ + if (!(wndPtr->dwStyle & TBS_NOTHUMB)) { + + } + + /* draw ticks */ + if (!(wndPtr->dwStyle & TBS_NOTICKS)) { + + } + + if (infoPtr->bFocus) + DrawFocusRect32 (hdc, &rect); +} + + +static LRESULT +TRACKBAR_ClearSel (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr); + + infoPtr->nSelMin = 0; + infoPtr->nSelMax = 0; + + if ((BOOL32)wParam) { + HDC32 hdc = GetDC32 (wndPtr->hwndSelf); + TRACKBAR_Refresh (wndPtr, hdc); + ReleaseDC32 (wndPtr->hwndSelf, hdc); + } + + return 0; +} + + +// << TRACKBAR_ClearTics >> +// << TRACKBAR_GetChannelRect >> + + +static LRESULT +TRACKBAR_GetLineSize (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr); + + return infoPtr->nLineSize; +} + + +// << TRACKBAR_GetNumTics >> + + +static LRESULT +TRACKBAR_GetPageSize (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr); + + return infoPtr->nPageSize; +} + + +static LRESULT +TRACKBAR_GetPos (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr); + + return infoPtr->nPos; +} + + +// << TRACKBAR_GetPTics >> + + +static LRESULT +TRACKBAR_GetRangeMax (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr); + + return infoPtr->nRangeMax; +} + + +static LRESULT +TRACKBAR_GetRangeMin (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr); + + return infoPtr->nRangeMin; +} + + +static LRESULT +TRACKBAR_GetSelEnd (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr); + + return infoPtr->nSelMax; +} + + +static LRESULT +TRACKBAR_GetSelStart (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr); + + return infoPtr->nSelMin; +} + + +static LRESULT +TRACKBAR_GetThumbLength (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr); + + return infoPtr->nThumbLen; +} + + + + + + +static LRESULT +TRACKBAR_Create (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TRACKBAR_INFO *infoPtr; + + infoPtr = (TRACKBAR_INFO *)HeapAlloc (GetProcessHeap (), HEAP_ZERO_MEMORY, + sizeof(TRACKBAR_INFO)); + wndPtr->wExtra[0] = (DWORD)infoPtr; + + + /* default values */ + infoPtr->nRangeMin = 0; + infoPtr->nRangeMax = 100; + infoPtr->nLineSize = 1; + infoPtr->nPageSize = 20; + infoPtr->nSelMin = 0; + infoPtr->nSelMax = 0; + infoPtr->nPos = 0; + infoPtr->nThumbLen = 23; /* initial thumb length */ + + + return 0; +} + + +static LRESULT +TRACKBAR_Destroy (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr); + + + + + HeapFree (GetProcessHeap (), 0, infoPtr); + + return 0; +} + + +static LRESULT +TRACKBAR_KillFocus (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr); + HDC32 hdc; + + infoPtr->bFocus = FALSE; + + hdc = GetDC32 (wndPtr->hwndSelf); + TRACKBAR_Refresh (wndPtr, hdc); + ReleaseDC32 (wndPtr->hwndSelf, hdc); + + return 0; +} + + +static LRESULT +TRACKBAR_LButtonDown (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr); + + SetFocus32 (wndPtr->hwndSelf); + + return 0; +} + + +static LRESULT +TRACKBAR_Paint (WND *wndPtr, WPARAM32 wParam) +{ + HDC32 hdc; + PAINTSTRUCT32 ps; + + hdc = wParam==0 ? BeginPaint32 (wndPtr->hwndSelf, &ps) : (HDC32)wParam; + TRACKBAR_Refresh (wndPtr, hdc); + if(!wParam) + EndPaint32 (wndPtr->hwndSelf, &ps); + return 0; +} + + +static LRESULT +TRACKBAR_SetFocus (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr); + HDC32 hdc; + + infoPtr->bFocus = TRUE; + + hdc = GetDC32 (wndPtr->hwndSelf); + TRACKBAR_Refresh (wndPtr, hdc); + ReleaseDC32 (wndPtr->hwndSelf, hdc); + + return 0; +} + + +static LRESULT +TRACKBAR_Size (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr); + RECT32 rect; + + GetClientRect32 (wndPtr->hwndSelf, &rect); + + /* calculate channel rect */ + if (wndPtr->dwStyle & TBS_VERT) { + infoPtr->rcChannel.top = rect.top + 8; + infoPtr->rcChannel.bottom = rect.bottom - 8; + + /* FIXME */ + infoPtr->rcChannel.left = rect.left + 10; + infoPtr->rcChannel.right = rect.left + 14; + + } + else { + infoPtr->rcChannel.left = rect.left + 8; + infoPtr->rcChannel.right = rect.right - 8; + + /* FIXME */ + if (wndPtr->dwStyle & TBS_BOTH) { + infoPtr->rcChannel.top = rect.bottom / 2 - 2; + infoPtr->rcChannel.bottom = rect.bottom / 2 + 2; + + } + else if (wndPtr->dwStyle & TBS_TOP) { + infoPtr->rcChannel.top = rect.top + 10; + infoPtr->rcChannel.bottom = rect.top + 14; + + } + else { + /* TBS_BOTTOM */ + infoPtr->rcChannel.top = rect.bottom - 14; + infoPtr->rcChannel.bottom = rect.bottom - 10; + } + } + + return 0; +} + + +// << TRACKBAR_Timer >> +// << TRACKBAR_WinIniChange >> + + +LRESULT WINAPI +TrackbarWindowProc (HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam) +{ + WND *wndPtr = WIN_FindWndPtr(hwnd); + + switch (uMsg) + { + case TBM_CLEARSEL: + return TRACKBAR_ClearSel (wndPtr, wParam, lParam); + +// case TBM_CLEARTICS: +// case TBM_GETBUDDY: +// case TBM_GETCHANNELRECT: + + case TBM_GETLINESIZE: + return TRACKBAR_GetLineSize (wndPtr, wParam, lParam); + +// case TBM_GETNUMTICS: + + case TBM_GETPAGESIZE: + return TRACKBAR_GetPageSize (wndPtr, wParam, lParam); + + case TBM_GETPOS: + return TRACKBAR_GetPos (wndPtr, wParam, lParam); + +// case TBM_GETPTICS: + + case TBM_GETRANGEMAX: + return TRACKBAR_GetRangeMax (wndPtr, wParam, lParam); + + case TBM_GETRANGEMIN: + return TRACKBAR_GetRangeMin (wndPtr, wParam, lParam); + + case TBM_GETSELEND: + return TRACKBAR_GetSelEnd (wndPtr, wParam, lParam); + + case TBM_GETSELSTART: + return TRACKBAR_GetSelStart (wndPtr, wParam, lParam); + + case TBM_GETTHUMBLENGTH: + return TRACKBAR_GetThumbLength (wndPtr, wParam, lParam); + +// case TBM_GETTHUMBRECT: +// case TBM_GETTIC: +// case TBM_GETTICPOS: +// case TBM_GETTOOLTIPS: +// case TBM_GETUNICODEFORMAT: +// case TBM_SETBUDDY: +// case TBM_SETPAGESIZE: +// case TBM_SETPOS: +// case TBM_SETRANGE: +// case TBM_SETRANGEMAX: +// case TBM_SETRANGEMIN: +// case TBM_SETSEL: +// case TBM_SETSELEND: +// case TBM_SETSELSTART: +// case TBM_SETTHUMBLENGTH: +// case TBM_SETTIC: +// case TBM_SETTICFREQ: +// case TBM_SETTIPSIDE: +// case TBM_SETTOOLTIPS: +// case TBM_SETUNICODEFORMAT: + + +// case WM_CAPTURECHANGED: + + case WM_CREATE: + return TRACKBAR_Create (wndPtr, wParam, lParam); + + case WM_DESTROY: + return TRACKBAR_Destroy (wndPtr, wParam, lParam); + +// case WM_ENABLE: + +// case WM_ERASEBKGND: +// return 0; + + case WM_GETDLGCODE: + return DLGC_WANTARROWS; + +// case WM_KEYDOWN: + +// case WM_KEYUP: + + case WM_KILLFOCUS: + return TRACKBAR_KillFocus (wndPtr, wParam, lParam); + + case WM_LBUTTONDOWN: + return TRACKBAR_LButtonDown (wndPtr, wParam, lParam); + +// case WM_LBUTTONUP: + +// case WM_MOUSEMOVE: +// return TRACKBAR_MouseMove (wndPtr, wParam, lParam); + + case WM_PAINT: + return TRACKBAR_Paint (wndPtr, wParam); + + case WM_SETFOCUS: + return TRACKBAR_SetFocus (wndPtr, wParam, lParam); + + case WM_SIZE: + return TRACKBAR_Size (wndPtr, wParam, lParam); + +// case WM_TIMER: + +// case WM_WININICHANGE: + + default: + if (uMsg >= WM_USER) + ERR (trackbar, "unknown msg %04x wp=%08x lp=%08lx\n", + uMsg, wParam, lParam); + return DefWindowProc32A (hwnd, uMsg, wParam, lParam); + } + return 0; +} + + +void +TRACKBAR_Register (void) +{ + WNDCLASS32A wndClass; + + if (GlobalFindAtom32A (TRACKBAR_CLASS32A)) return; + + ZeroMemory (&wndClass, sizeof(WNDCLASS32A)); + wndClass.style = CS_GLOBALCLASS; + wndClass.lpfnWndProc = (WNDPROC32)TrackbarWindowProc; + wndClass.cbClsExtra = 0; + wndClass.cbWndExtra = sizeof(TRACKBAR_INFO *); + wndClass.hCursor = LoadCursor32A (0, IDC_ARROW32A); + wndClass.hbrBackground = (HBRUSH32)(COLOR_3DFACE + 1); + wndClass.lpszClassName = TRACKBAR_CLASS32A; + + RegisterClass32A (&wndClass); +} + diff --git a/controls/treeview.c b/controls/treeview.c new file mode 100644 index 00000000000..65c1e6ec9b0 --- /dev/null +++ b/controls/treeview.c @@ -0,0 +1,77 @@ +/* + * Treeview control + * + * Copyright 1998 Eric Kohl + * + * NOTES + * This is just a dummy control. An author is needed! Any volunteers? + * I will only improve this control once in a while. + * Eric + * + * TODO: + * - All messages. + * - All notifications. + */ + +#include "windows.h" +#include "commctrl.h" +#include "treeview.h" +#include "heap.h" +#include "win.h" +#include "debug.h" + + +#define TREEVIEW_GetInfoPtr(wndPtr) ((TREEVIEW_INFO *)wndPtr->wExtra[0]) + + +LRESULT WINAPI +TreeviewWindowProc (HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam) +{ + WND *wndPtr = WIN_FindWndPtr(hwnd); + + switch (uMsg) + { +// case WM_CREATE: +// return TREEVIEW_Create (wndPtr, wParam, lParam); + +// case WM_DESTROY: +// return TREEVIEW_Destroy (wndPtr, wParam, lParam); + +// case WM_PAINT: +// return TREEVIEW_Paint (wndPtr, wParam); + +// case WM_SETFONT: + +// case WM_TIMER: + +// case WM_WININICHANGE: + + default: + if (uMsg >= WM_USER) + ERR (treeview, "unknown msg %04x wp=%08x lp=%08lx\n", + uMsg, wParam, lParam); + return DefWindowProc32A (hwnd, uMsg, wParam, lParam); + } + return 0; +} + + +void +TREEVIEW_Register (void) +{ + WNDCLASS32A wndClass; + + if (GlobalFindAtom32A (WC_TREEVIEW32A)) return; + + ZeroMemory (&wndClass, sizeof(WNDCLASS32A)); + wndClass.style = CS_GLOBALCLASS | CS_DBLCLKS; + wndClass.lpfnWndProc = (WNDPROC32)TreeviewWindowProc; + wndClass.cbClsExtra = 0; + wndClass.cbWndExtra = sizeof(TREEVIEW_INFO *); + wndClass.hCursor = LoadCursor32A (0, IDC_ARROW32A); + wndClass.hbrBackground = 0; + wndClass.lpszClassName = WC_TREEVIEW32A; + + RegisterClass32A (&wndClass); +} + diff --git a/controls/updown.c b/controls/updown.c index 03d6ed01c10..e93b5ef5712 100644 --- a/controls/updown.c +++ b/controls/updown.c @@ -8,7 +8,7 @@ * arrow keys * - I am not sure about the default values for the Min, Max, Pos * (in the UPDOWN_INFO the fields: MinVal, MaxVal, CurVal) - * - I think I don not handle correctly the WS_BORDER style. + * - I think I do not handle correctly the WS_BORDER style. * (Should be fixed. ) * * Testing: diff --git a/documentation/common_controls b/documentation/common_controls index e6c4a2f60e5..83ccdb8777b 100644 --- a/documentation/common_controls +++ b/documentation/common_controls @@ -29,6 +29,7 @@ ----------- This paragraph describes the development status of the common controls. + 3.1 Animation Control @@ -98,11 +99,14 @@ 3.10 List View Control ---------------------- + Author: + Dummy written by Eric Kohl. + Status: - - Nothing done at all. + - Dummy control. No functionality. Notes: - This control id NEEDED in many places. Any volunteers?? + This control is NEEDED in many places. Any volunteers?? 3.11 Month Calendar Control @@ -113,12 +117,14 @@ 3.12 Pager Control ------------------ + Author: + Dummy written by Eric Kohl. + Status: - - Dummy control. No functionality. - - Not yet published. + Dummy control. No functionality. Notes: - The dummy source code is available from the author. + Author needed!! Any volunteers?? 3.13 Progress Bar Control @@ -139,23 +145,27 @@ 3.14 Property Sheet ------------------- + Author: + Anders Carlsson + Status: - - Nothing done at all. + - Development in progress. + - Not yet published. Notes: - - This control id NEEDED in many places. - - Tab control has to be implemented first. - Any volunteers?? + Tab control must be implemented first. 3.15 Rebar Control (Cool Bar) ----------------------------- + Author: + Dummy written by Eric Kohl. + Status: - Dummy control. No functionality. - - Not yet published. Notes: - The dummy source code is available from the author. + Author needed!! Any volunteers?? 3.16 Status Bar Control @@ -176,9 +186,12 @@ 3.17 Tab Control ---------------- + Author: + Anders Carlsson + Status: - - Nothing done at all. - - needed. + - Development in progress. + - Not yet published. 3.18 Toolbar Control @@ -190,6 +203,9 @@ - Development in progress. - Basic functionality is almost done. (dll version 4.0) + Notes + Bitmaps are not correctly displayed. + 3.19 Tooltip Control -------------------- @@ -198,17 +214,21 @@ Status: - Development in progress. - - Not yet published, but will be published soon. + + Notes + The control does not show. 3.20 Trackbar Control --------------------- Author: - Eric Kohl + Dummy written by Eric Kohl. Status: - - Development in progress. - - Not yet published, but will be published soon. + - Dummy control. No functionality. + + Notes: + Author needed!! Any volunteers?? 3.21 Tree View Control diff --git a/documentation/wine.man b/documentation/wine.man index af45f42ab20..bf57e1c4c5c 100644 --- a/documentation/wine.man +++ b/documentation/wine.man @@ -1,5 +1,5 @@ .\" -*- nroff -*- -.TH WINE 1 "June 22, 1998" "Version 980614" "Windows Emulator" +.TH WINE 1 "July 8, 1998" "Version 980628" "Windows Emulator" .SH NAME wine \- run Windows programs under Unix .SH SYNOPSIS @@ -38,11 +38,15 @@ compiled the libraries yourself, they were probably compiled with the reetrant option enabled. .PP .B libXpm -must be installed. It is probably available from the same site -.B wine -was, or the sources may be FTP'd from ftp.x.org. Usually it's in a -package named something like XFree86-devel. - +must be installed. If you're using Red Hat, the name of the package is +XFree86-devel. The sources may be FTP'd from ftp.Xfree86.org or its +mirrors. +.PP +.B gcc +2.7.x or later is required to build +.B wine. +Versions earlier than 2.7.2.3 may have problems when certain files are +compiled with optimization. .SH INSTALLATION To install .B Wine, @@ -59,7 +63,7 @@ the --prefix option when running .PP For more information, see the .B README -file contained in the source distribution +file contained in the source distribution. .SH OPTIONS .TP .I -backingstore @@ -72,13 +76,20 @@ Enter the debugger before starting application Turn debugging messages on or off. .RS +7 .PP -xxx can be one of the following: err, warn, fixme, or trace, and # can be -either + or -. Note that there is not a space between names. +xxx is optional and can be one of the following: +.I err, +.I warn, +.I fixme, +or +.I trace. +If xxx is not specified, all debugging messages for the specified +channel are turned on. # is required and can be either + or -. Note that +there is not a space after the comma between names. .PP For instance: .PP .I -debugmsg warn+dll,+heap -will turn on DLL and heap warning messages. +will turn on DLL warning messages and all heap messages. .br .I -debugmsg fixme-all,warn+cursor,+relay will turn off all FIXME messages, turn on cursor warning messages, and turn @@ -165,7 +176,7 @@ Possible arguments are: win31, win95, nt351, and nt40. .PD 1 .SH PROGRAM/ARGUMENTS The program name may be specified in DOS format (C:\\WINDOWS\\SOL.EXE) or in -Linux format (/msdos/windows/sol.exe). The program being executed may be +Unix format (/msdos/windows/sol.exe). The program being executed may be passed arguments by adding them on to the end of the command line invoking .B wine (such as: wine "notepad C:\\TEMP\\README.TXT"). Note that @@ -183,7 +194,7 @@ the .B configure script. Alternatively, you may have a .I .winerc -file of this format in your home directory or the environment variable +file of this format in your home directory or have the environment variable .B WINE_INI pointing to a configuration file. .SH CONFIGURATION FILE FORMAT @@ -327,7 +338,7 @@ default: none .br default: false .br -Use Win95 look (true) or Win3.1 look (false). +Use Win95-like window displays or Win3.1-like window displays. .SH SAMPLE CONFIGURATION FILE [Drive A] .br @@ -380,26 +391,14 @@ Exclude=WM_TIMER;WM_SETCURSOR;WM_MOUSEMOVE;WM_NCHITTEST; Include=WM_COMMAND; .PP [Tweak.Layout] -.br Win95Look=[true|false] -.br Win95Look=true enables Win95-like windows layouts; Win95Look=false -uses Win3.1-like displays. If this section is not included, it defaults -to false. +.br +Win95Look=true .SH AUTHORS .B Wine -is available thanks to the work of Bob Amstadt, Dag Asheim, -Martin Ayotte, Ross Biro, Erik Bos, Fons Botman, John Brezak, -Andrew Bulhak, John Burton, Paul Falstad, Olaf Flebbe, Peter Galbavy, -Ramon Garcia, Hans de Graaf, Charles M. Hannum, Cameron Heide, -Jochen Hoenicke, Jeffrey Hsu, Miguel de Icaza, Alexandre Julliard, -Jon Konrath, Scott A. Laird, Martin von Loewis, Kenneth MacDonald, -Peter MacDonald, William Magro, Marcus Meissner, Graham Menhennitt, -David Metcalfe, Michael Patra, John Richardson, Johannes Ruscheinski, -Thomas Sandford, Constantine Sapuntzakis, Daniel Schepler, -Bernd Schmidt, Yngvi Sigurjonsson, Rick Sladkey, William Smith, -Erik Svendsen, Goran Thyni, Jimmy Tirtawangsa, Jon Tombs, -Linus Torvalds, Gregory Trubetskoy, Michael Veksler, Morten Welinder, -Jan Willamowius, Carl Williams, Karl Guenter Wuensch, Eric Youngdale, -and James Youngman. +is available thanks to the work of many developers. For a listing +of the authors, please see the file +.B AUTHORS +in the top-level directory of the source distribution. .SH BUGS There are too many to count, much less list. Some bugs of note, however, are that programs requiring VBRUNxxx.DLL are unreliable (with reports of @@ -416,7 +415,7 @@ Bug reports and successes may be posted to .SH AVAILABILITY The most recent public version of .B wine -can be ftp'ed from tsx-11.mit.edu in the /pub/linux/ALPHA/Wine/development +can be ftp'ed from sunsite.unc.edu or tsx-11.mit.edu in the /pub/linux/ALPHA/Wine/development directory. The releases are in the format 'Wine-yymmdd.tar.gz', or 'Wine-yymmdd.diff.gz' for the diff's from the previous release. .PP diff --git a/files/drive.c b/files/drive.c index 72ede3d9abf..de25491cd3d 100644 --- a/files/drive.c +++ b/files/drive.c @@ -742,15 +742,24 @@ BOOL32 WINAPI GetDiskFreeSpaceEx32W( LPCWSTR root, LPULARGE_INTEGER avail, /*********************************************************************** * GetDriveType16 (KERNEL.136) + * This functions returns the drivetype of a drive in Win16. + * Note that it returns DRIVE_REMOTE for CD-ROMs, since MSCDEX uses the + * remote drive API. The returnvalue DRIVE_REMOTE for CD-ROMs has been + * verified on Win3.11 and Windows 95. Some programs rely on it, so don't + * do any pseudo-clever changes. + * + * RETURNS + * drivetype DRIVE_xxx */ -UINT16 WINAPI GetDriveType16( UINT16 drive ) -{ +UINT16 WINAPI GetDriveType16( + UINT16 drive /* [in] number (NOT letter) of drive */ +) { TRACE(dosfs, "(%c:)\n", 'A' + drive ); switch(DRIVE_GetType(drive)) { case TYPE_FLOPPY: return DRIVE_REMOVABLE; case TYPE_HD: return DRIVE_FIXED; - case TYPE_CDROM: return DRIVE_REMOVABLE; + case TYPE_CDROM: return DRIVE_REMOTE; case TYPE_NETWORK: return DRIVE_REMOTE; case TYPE_INVALID: default: return DRIVE_CANNOTDETERMINE; diff --git a/files/profile.c b/files/profile.c index fa4796e1b87..4110e7154ea 100644 --- a/files/profile.c +++ b/files/profile.c @@ -170,21 +170,20 @@ static PROFILESECTION *PROFILE_Load( FILE *file ) char *p, *p2; int line = 0; PROFILESECTION *section, *first_section; - PROFILESECTION **prev_section; - PROFILEKEY *key, **prev_key; + PROFILESECTION **next_section; + PROFILEKEY *key, *prev_key, **next_key; first_section = HEAP_xalloc( SystemHeap, 0, sizeof(*section) ); first_section->name = NULL; first_section->key = NULL; first_section->next = NULL; - prev_section = &first_section->next; - prev_key = &first_section->key; + next_section = &first_section->next; + next_key = &first_section->key; + prev_key = NULL; while (fgets( buffer, PROFILE_MAX_LINE_LEN, file )) { line++; - p = buffer + strlen(buffer) - 1; - while ((p > buffer) && ((*p == '\n') || PROFILE_isspace(*p))) *p--='\0'; p = buffer; while (*p && PROFILE_isspace(*p)) p++; if (*p == '[') /* section start */ @@ -202,9 +201,10 @@ static PROFILESECTION *PROFILE_Load( FILE *file ) section->name = HEAP_strdupA( SystemHeap, 0, p ); section->key = NULL; section->next = NULL; - *prev_section = section; - prev_section = §ion->next; - prev_key = §ion->key; + *next_section = section; + next_section = §ion->next; + next_key = §ion->key; + prev_key = NULL; continue; } } @@ -214,20 +214,22 @@ static PROFILESECTION *PROFILE_Load( FILE *file ) while ((p3 > p) && PROFILE_isspace(*p3)) *p3-- = '\0'; *p2++ = '\0'; while (*p2 && PROFILE_isspace(*p2)) p2++; + p3 = p2 + strlen(p2) - 1; + while ((p3 > p2) && ((*p3 == '\n') || PROFILE_isspace(*p3))) *p3--='\0'; } - key = HEAP_xalloc( SystemHeap, 0, sizeof(*key) ); - key->name = HEAP_strdupA( SystemHeap, 0, p ); - key->value = p2 ? HEAP_strdupA( SystemHeap, 0, p2 ) : NULL; - key->next = NULL; - *prev_key = key; - prev_key = &key->next; - } - if (TRACE_ON(profile)) - { - TRACE(profile, "dump:\n" ); - /* FIXME: improper use of stddeb! */ - PROFILE_Save(stddeb, first_section ); - TRACE(profile, "finished.\n" ); + + if(*p || !prev_key || *prev_key->name) + { + key = HEAP_xalloc( SystemHeap, 0, sizeof(*key) ); + key->name = HEAP_strdupA( SystemHeap, 0, p ); + key->value = p2 ? HEAP_strdupA( SystemHeap, 0, p2 ) : NULL; + key->next = NULL; + *next_key = key; + next_key = &key->next; + prev_key = key; + + TRACE(profile, "New key: name='%s', value='%s'\n",key->name,key->value?key->value:"(none)"); + } } return first_section; } @@ -467,10 +469,10 @@ static BOOL32 PROFILE_Open( LPCSTR filename ) * PROFILE_GetSection * * Returns all keys of a section. - * If return_values is TRUE, also include the corrseponding values. + * If return_values is TRUE, also include the corresponding values. */ static INT32 PROFILE_GetSection( PROFILESECTION *section, LPCSTR section_name, - LPSTR buffer, INT32 len, BOOL32 handle_env, + LPSTR buffer, UINT32 len, BOOL32 handle_env, BOOL32 return_values ) { PROFILEKEY *key; @@ -478,7 +480,7 @@ static INT32 PROFILE_GetSection( PROFILESECTION *section, LPCSTR section_name, { if (section->name && !strcasecmp( section->name, section_name )) { - INT32 oldlen = len; + UINT32 oldlen = len; for (key = section->key; key; key = key->next) { if (len <= 2) break; @@ -520,7 +522,7 @@ static INT32 PROFILE_GetSection( PROFILESECTION *section, LPCSTR section_name, * Get a profile string. */ static INT32 PROFILE_GetString( LPCSTR section, LPCSTR key_name, - LPCSTR def_val, LPSTR buffer, INT32 len ) + LPCSTR def_val, LPSTR buffer, UINT32 len ) { PROFILEKEY *key = NULL; @@ -843,7 +845,7 @@ UINT32 WINAPI GetProfileInt32W( LPCWSTR section, LPCWSTR entry, INT32 def_val ) * GetProfileString16 (KERNEL.58) */ INT16 WINAPI GetProfileString16( LPCSTR section, LPCSTR entry, LPCSTR def_val, - LPSTR buffer, INT16 len ) + LPSTR buffer, UINT16 len ) { return GetPrivateProfileString16( section, entry, def_val, buffer, len, "win.ini" ); @@ -853,7 +855,7 @@ INT16 WINAPI GetProfileString16( LPCSTR section, LPCSTR entry, LPCSTR def_val, * GetProfileString32A (KERNEL32.268) */ INT32 WINAPI GetProfileString32A( LPCSTR section, LPCSTR entry, LPCSTR def_val, - LPSTR buffer, INT32 len ) + LPSTR buffer, UINT32 len ) { return GetPrivateProfileString32A( section, entry, def_val, buffer, len, "win.ini" ); @@ -863,7 +865,7 @@ INT32 WINAPI GetProfileString32A( LPCSTR section, LPCSTR entry, LPCSTR def_val, * GetProfileString32W (KERNEL32.269) */ INT32 WINAPI GetProfileString32W( LPCWSTR section, LPCWSTR entry, - LPCWSTR def_val, LPWSTR buffer, INT32 len ) + LPCWSTR def_val, LPWSTR buffer, UINT32 len ) { if (!wininiW) wininiW = HEAP_strdupAtoW( SystemHeap, 0, "win.ini" ); return GetPrivateProfileString32W( section, entry, def_val, @@ -873,7 +875,7 @@ INT32 WINAPI GetProfileString32W( LPCWSTR section, LPCWSTR entry, /*********************************************************************** * GetProfileSection32A (KERNEL32.268) */ -INT32 WINAPI GetProfileSection32A( LPCSTR section, LPSTR buffer, INT32 len ) +INT32 WINAPI GetProfileSection32A( LPCSTR section, LPSTR buffer, UINT32 len ) { return GetPrivateProfileSection32A( section, buffer, len, "win.ini" ); } @@ -961,7 +963,7 @@ UINT32 WINAPI GetPrivateProfileInt32W( LPCWSTR section, LPCWSTR entry, */ INT16 WINAPI GetPrivateProfileString16( LPCSTR section, LPCSTR entry, LPCSTR def_val, LPSTR buffer, - INT16 len, LPCSTR filename ) + UINT16 len, LPCSTR filename ) { return GetPrivateProfileString32A(section,entry,def_val,buffer,len,filename); } @@ -971,7 +973,7 @@ INT16 WINAPI GetPrivateProfileString16( LPCSTR section, LPCSTR entry, */ INT32 WINAPI GetPrivateProfileString32A( LPCSTR section, LPCSTR entry, LPCSTR def_val, LPSTR buffer, - INT32 len, LPCSTR filename ) + UINT32 len, LPCSTR filename ) { if (!filename) filename = "win.ini"; @@ -986,7 +988,7 @@ INT32 WINAPI GetPrivateProfileString32A( LPCSTR section, LPCSTR entry, */ INT32 WINAPI GetPrivateProfileString32W( LPCWSTR section, LPCWSTR entry, LPCWSTR def_val, LPWSTR buffer, - INT32 len, LPCWSTR filename ) + UINT32 len, LPCWSTR filename ) { LPSTR sectionA = HEAP_strdupWtoA( GetProcessHeap(), 0, section ); LPSTR entryA = HEAP_strdupWtoA( GetProcessHeap(), 0, entry ); @@ -1008,7 +1010,7 @@ INT32 WINAPI GetPrivateProfileString32W( LPCWSTR section, LPCWSTR entry, * GetPrivateProfileSection32A (KERNEL32.255) */ INT32 WINAPI GetPrivateProfileSection32A( LPCSTR section, LPSTR buffer, - INT32 len, LPCSTR filename ) + UINT32 len, LPCSTR filename ) { if (PROFILE_Open( filename )) return PROFILE_GetSection(CurProfile.section, section, buffer, len, @@ -1091,7 +1093,8 @@ WORD WINAPI GetPrivateProfileSectionNames16( LPSTR buffer, WORD size, buf=buffer; cursize=0; section=CurProfile.section; - for ( ; section; section = section->next) { + for ( ; section; section = section->next) + if (section->name) { l=strlen (section->name); cursize+=l+1; if (cursize > size+1) diff --git a/graphics/ddraw.c b/graphics/ddraw.c index 5c46c13416e..2c5add556e6 100644 --- a/graphics/ddraw.c +++ b/graphics/ddraw.c @@ -1,4 +1,4 @@ -/* DirectDraw using DGA +/* DirectDraw using DGA, XShm, or Xlib * * Copyright 1997,1998 Marcus Meissner */ @@ -51,6 +51,11 @@ #include #include #include "ts_xlib.h" +#ifdef HAVE_LIBXXSHM +#include "ts_xshm.h" +#include +#include +#endif #include #include "windows.h" @@ -65,6 +70,7 @@ #include "ddraw.h" #include "d3d.h" #include "debug.h" +#include "compobj.h" #ifdef HAVE_LIBXXF86DGA #include @@ -75,22 +81,73 @@ */ #undef RESTORE_SIGNALS -static struct IDirectDrawSurface3_VTable dds3vt; -static struct IDirectDrawSurface2_VTable dds2vt; -static struct IDirectDrawSurface_VTable ddsvt; -static struct IDirectDraw_VTable ddvt; -static struct IDirectDraw2_VTable dd2vt; +/* Where do these GUIDs come from? mkuuid. + * They exist solely to distinguish between the targets Wine support, + * and should be different than any other GUIDs in existence. + */ +static GUID DGA_DirectDraw_GUID = { /* e2dcb020-dc60-11d1-8407-9714f5d50802 */ + 0xe2dcb020, + 0xdc60, + 0x11d1, + {0x84, 0x07, 0x97, 0x14, 0xf5, 0xd5, 0x08, 0x02} +}; +static GUID XSHM_DirectDraw_GUID = { /* 2e494ff0-dc61-11d1-8407-860cf3f59f7a */ + 0x2e494ff0, + 0xdc61, + 0x11d1, + {0x84, 0x07, 0x86, 0x0c, 0xf3, 0xf5, 0x9f, 0x7a} +}; +static GUID XLIB_DirectDraw_GUID = { /* 1574a740-dc61-11d1-8407-f7875a7d1879 */ + 0x1574a740, + 0xdc61, + 0x11d1, + {0x84, 0x07, 0xf7, 0x87, 0x5a, 0x7d, 0x18, 0x79} +}; + +static struct IDirectDrawSurface3_VTable dga_dds3vt, xshm_dds3vt, xlib_dds3vt; +static struct IDirectDrawSurface2_VTable dga_dds2vt, xshm_dds2vt, xlib_dds2vt; +static struct IDirectDrawSurface_VTable dga_ddsvt, xshm_ddsvt, xlib_ddsvt; +static struct IDirectDraw_VTable dga_ddvt, xshm_ddvt, xlib_ddvt; +static struct IDirectDraw2_VTable dga_dd2vt, xshm_dd2vt, xlib_dd2vt; +static struct IDirectDrawClipper_VTable ddclipvt; +static struct IDirectDrawPalette_VTable dga_ddpalvt, xshm_ddpalvt, xlib_ddpalvt; static struct IDirect3D_VTable d3dvt; static struct IDirect3D2_VTable d3d2vt; +BOOL32 +DDRAW_DGA_Available() +{ +#ifdef HAVE_LIBXXF86DGA + int evbase, evret; + return (getuid() == 0) && XF86DGAQueryExtension(display,&evbase,&evret); +#else /* defined(HAVE_LIBXXF86DGA) */ + return 0; +#endif /* defined(HAVE_LIBXXF86DGA) */ +} + +BOOL32 +DDRAW_XShm_Available() +{ +#ifdef HAVE_LIBXXSHM + return TSXShmQueryExtension(display); +#else /* defined(HAVE_LIBXXSHM) */ + return 0; +#endif /* defined(HAVE_LIBXXSHM) */ +} HRESULT WINAPI DirectDrawEnumerate32A(LPDDENUMCALLBACK32A ddenumproc,LPVOID data) { - /* we have just one display driver right now ... */ - ddenumproc(0,"WINE Display","display",data); + if (DDRAW_DGA_Available()) { + ddenumproc(&DGA_DirectDraw_GUID,"WINE with XFree86 DGA","wine-dga",data); + } + if (DDRAW_XShm_Available()) { + ddenumproc(&XSHM_DirectDraw_GUID,"WINE with MIT XShm","wine-xshm",data); + } + ddenumproc(&XLIB_DirectDraw_GUID,"WINE with Xlib","wine-xlib",data); return 0; } +/* What is this doing here? */ HRESULT WINAPI DSoundHelp(DWORD x,DWORD y,DWORD z) { FIXME(ddraw,"(0x%08lx,0x%08lx,0x%08lx),stub!\n",x,y,z); @@ -98,8 +155,6 @@ DSoundHelp(DWORD x,DWORD y,DWORD z) { } -#ifdef HAVE_LIBXXF86DGA - /****************************************************************************** * internal helper functions */ @@ -230,7 +285,7 @@ static void _dump_DDSCAPS(DWORD flagmask) { DUMP("\n"); } -void _dump_DDCAPS(DWORD flagmask) { +static void _dump_DDCAPS(DWORD flagmask) { int i; const struct { DWORD mask; @@ -353,11 +408,12 @@ static HRESULT WINAPI IDirectDrawSurface_Lock( TRACE(ddraw," lprect: %dx%d-%dx%d\n", lprect->top,lprect->left,lprect->bottom,lprect->right ); - lpddsd->y.lpSurface = this->s.surface+ - (lprect->top*this->s.lpitch)+ - (lprect->left*(this->s.ddraw->d.depth/8)); - } else + lpddsd->y.lpSurface = this->s.surface + + (lprect->top*this->s.lpitch) + + (lprect->left*(this->s.ddraw->d.depth/8)); + } else { lpddsd->y.lpSurface = this->s.surface; + } lpddsd->dwFlags = DDSD_WIDTH|DDSD_HEIGHT|DDSD_PIXELFORMAT|DDSD_PITCH|DDSD_LPSURFACE; lpddsd->dwWidth = this->s.width; lpddsd->dwHeight = this->s.height; @@ -366,14 +422,135 @@ static HRESULT WINAPI IDirectDrawSurface_Lock( return 0; } -static HRESULT WINAPI IDirectDrawSurface_Unlock( +static HRESULT WINAPI DGA_IDirectDrawSurface_Unlock( LPDIRECTDRAWSURFACE this,LPVOID surface ) { TRACE(ddraw,"(%p)->Unlock(%p)\n",this,surface); return 0; } -static HRESULT WINAPI IDirectDrawSurface_Flip( +static HRESULT WINAPI XShm_IDirectDrawSurface_Unlock( + LPDIRECTDRAWSURFACE this,LPVOID surface +) { +#ifdef HAVE_LIBXXSHM + TRACE(ddraw,"(%p)->Unlock(%p)\n",this,surface); + if (!this->t.xshm.surface_is_image_data) { + FIXME(ddraw,"(%p)->Unlock(%p) needs an image copy!\n",this,surface); + } + /* FIXME: is it really right to display the image on unlock? + * or should it wait for a Flip()? */ + TSXShmPutImage(display, + this->s.ddraw->e.xshm.drawable, + DefaultGCOfScreen(screen), + this->t.xshm.image, + 0, 0, 0, 0, + this->t.xshm.image->width, + this->t.xshm.image->height, + False); + if (this->s.palette && this->s.palette->cm) { + TSXInstallColormap(display,this->s.palette->cm); + } + TSXSync(display,False); + return 0; +#else /* defined(HAVE_LIBXXSHM) */ + return E_UNEXPECTED; +#endif /* defined(HAVE_LIBXXSHM) */ +} + +static HRESULT WINAPI Xlib_IDirectDrawSurface_Unlock( + LPDIRECTDRAWSURFACE this,LPVOID surface +) { + TRACE(ddraw,"(%p)->Unlock(%p)\n",this,surface); + if (!this->t.xshm.surface_is_image_data) { + FIXME(ddraw,"(%p)->Unlock(%p) needs an image copy!\n",this,surface); + } + /* FIXME: is it really right to display the image on unlock? + * or should it wait for a Flip()? */ + TSXPutImage(display, + this->s.ddraw->e.xlib.drawable, + DefaultGCOfScreen(screen), + this->t.xlib.image, + 0, 0, 0, 0, + this->t.xlib.image->width, + this->t.xlib.image->width); + if (this->s.palette && this->s.palette->cm) { + TSXInstallColormap(display,this->s.palette->cm); + } + TSXSync(display,False); + return 0; +} + +static HRESULT WINAPI DGA_IDirectDrawSurface_Flip( + LPDIRECTDRAWSURFACE this,LPDIRECTDRAWSURFACE flipto,DWORD dwFlags +) { +#ifdef HAVE_LIBXXF86DGA + TRACE(ddraw,"(%p)->Flip(%p,%08lx)\n",this,flipto,dwFlags); + if (!flipto) { + if (this->s.backbuffer) + flipto = this->s.backbuffer; + else + flipto = this; + } + XF86DGASetViewPort(display,DefaultScreen(display),0,flipto->t.dga.fb_height); + if (flipto->s.palette && flipto->s.palette->cm) { + XF86DGAInstallColormap(display,DefaultScreen(display),flipto->s.palette->cm); + } + while (!XF86DGAViewPortChanged(display,DefaultScreen(display),2)) { + } + if (flipto!=this) { + int tmp; + LPVOID ptmp; + + tmp = this->t.dga.fb_height; + this->t.dga.fb_height = flipto->t.dga.fb_height; + flipto->t.dga.fb_height = tmp; + + ptmp = this->s.surface; + this->s.surface = flipto->s.surface; + flipto->s.surface = ptmp; + } + return 0; +#else /* defined(HAVE_LIBXXF86DGA) */ + return E_UNEXPECTED; +#endif /* defined(HAVE_LIBXXF86DGA) */ +} + +static HRESULT WINAPI XShm_IDirectDrawSurface_Flip( + LPDIRECTDRAWSURFACE this,LPDIRECTDRAWSURFACE flipto,DWORD dwFlags +) { +#ifdef HAVE_LIBXXSHM + TRACE(ddraw,"(%p)->Flip(%p,%08lx)\n",this,flipto,dwFlags); + if (!flipto) { + if (this->s.backbuffer) + flipto = this->s.backbuffer; + else + flipto = this; + } + TSXShmPutImage(display, + this->s.ddraw->e.xshm.drawable, + DefaultGCOfScreen(screen), + flipto->t.xshm.image, + 0, 0, 0, 0, + flipto->t.xshm.image->width, + flipto->t.xshm.image->height, + False); + if (flipto->s.palette && flipto->s.palette->cm) { + TSXInstallColormap(display,flipto->s.palette->cm); + } + TSXSync(display,False); + if (flipto!=this) { + XImage *tmp; + tmp = this->t.xshm.image; + this->t.xshm.image = flipto->t.xshm.image; + flipto->t.xshm.image = tmp; + } + return 0; +#else /* defined(HAVE_LIBXXSHM) */ + return E_UNEXPECTED; +#endif /* defined(HAVE_LIBXXSHM) */ +} + +static HRESULT WINAPI Xlib_IDirectDrawSurface_Flip( LPDIRECTDRAWSURFACE this,LPDIRECTDRAWSURFACE flipto,DWORD dwFlags ) { TRACE(ddraw,"(%p)->Flip(%p,%08lx)\n",this,flipto,dwFlags); @@ -383,22 +560,22 @@ static HRESULT WINAPI IDirectDrawSurface_Flip( else flipto = this; } - XF86DGASetViewPort(display,DefaultScreen(display),0,flipto->s.fb_height); - if (flipto->s.palette && flipto->s.palette->cm) - XF86DGAInstallColormap(display,DefaultScreen(display),flipto->s.palette->cm); - while (!XF86DGAViewPortChanged(display,DefaultScreen(display),2)) { + TSXPutImage(display, + this->s.ddraw->e.xlib.drawable, + DefaultGCOfScreen(screen), + flipto->t.xlib.image, + 0, 0, 0, 0, + flipto->t.xlib.image->width, + flipto->t.xlib.image->width); + if (flipto->s.palette && flipto->s.palette->cm) { + TSXInstallColormap(display,flipto->s.palette->cm); } + TSXSync(display,False); if (flipto!=this) { - int tmp; - LPVOID ptmp; - - tmp = this->s.fb_height; - this->s.fb_height = flipto->s.fb_height; - flipto->s.fb_height = tmp; - - ptmp = this->s.surface; - this->s.surface = flipto->s.surface; - flipto->s.surface = ptmp; + XImage *tmp; + tmp = this->t.xshm.image; + this->t.xshm.image = flipto->t.xshm.image; + flipto->t.xshm.image = tmp; } return 0; } @@ -417,17 +594,18 @@ static HRESULT WINAPI IDirectDrawSurface_Blt( RECT32 xdst,xsrc; int i,j; - if (rdst) + if (rdst) { memcpy(&xdst,rdst,sizeof(xdst)); - else { + } else { xdst.top = 0; xdst.bottom = this->s.height; xdst.left = 0; xdst.right = this->s.width; } - if (rsrc) + + if (rsrc) { memcpy(&xsrc,rsrc,sizeof(xsrc)); - else if (src) { + } else if (src) { xsrc.top = 0; xsrc.bottom = src->s.height; xsrc.left = 0; @@ -545,19 +723,54 @@ static ULONG WINAPI IDirectDrawSurface_AddRef(LPDIRECTDRAWSURFACE this) { return ++(this->ref); } -static ULONG WINAPI IDirectDrawSurface_Release(LPDIRECTDRAWSURFACE this) { +static ULONG WINAPI DGA_IDirectDrawSurface_Release(LPDIRECTDRAWSURFACE this) { TRACE(ddraw,"(%p)->Release()\n",this); +#ifdef HAVE_LIBXXF86DGA if (!--(this->ref)) { this->s.ddraw->lpvtbl->fnRelease(this->s.ddraw); /* clear out of surface list */ - if (this->s.fb_height == -1) { + if (this->t.dga.fb_height == -1) { HeapFree(GetProcessHeap(),0,this->s.surface); } else { - this->s.ddraw->d.vpmask &= ~(1<<(this->s.fb_height/this->s.ddraw->d.fb_height)); + this->s.ddraw->e.dga.vpmask &= ~(1<<(this->t.dga.fb_height/this->s.ddraw->e.dga.fb_height)); } HeapFree(GetProcessHeap(),0,this); return 0; } +#endif /* defined(HAVE_LIBXXF86DGA) */ + return this->ref; +} + +static ULONG WINAPI XShm_IDirectDrawSurface_Release(LPDIRECTDRAWSURFACE this) { + TRACE(ddraw,"(%p)->Release()\n",this); +#ifdef HAVE_LIBXXSHM + if (!--(this->ref)) { + this->s.ddraw->lpvtbl->fnRelease(this->s.ddraw); + if (!this->t.xshm.surface_is_image_data) { + HeapFree(GetProcessHeap(),0,this->s.surface); + } + XShmDetach(display,&this->t.xshm.shminfo); + XDestroyImage(this->t.xshm.image); + shmdt(this->t.xshm.shminfo.shmaddr); + shmctl(this->t.xshm.shminfo.shmid, IPC_RMID, 0); + HeapFree(GetProcessHeap(),0,this); + return 0; + } +#endif /* defined(HAVE_LIBXXSHM) */ + return this->ref; +} + +static ULONG WINAPI Xlib_IDirectDrawSurface_Release(LPDIRECTDRAWSURFACE this) { + TRACE(ddraw,"(%p)->Release()\n",this); + if (!--(this->ref)) { + this->s.ddraw->lpvtbl->fnRelease(this->s.ddraw); + if (!this->t.xshm.surface_is_image_data) { + HeapFree(GetProcessHeap(),0,this->s.surface); + } + XDestroyImage(this->t.xshm.image); + HeapFree(GetProcessHeap(),0,this); + return 0; + } return this->ref; } @@ -627,7 +840,36 @@ static HRESULT WINAPI IDirectDrawSurface_GetDC(LPDIRECTDRAWSURFACE this,HDC32* l return 0; } -static HRESULT WINAPI IDirectDrawSurface_QueryInterface(LPDIRECTDRAWSURFACE this,REFIID refiid,LPVOID *obj) { +static HRESULT WINAPI DGA_IDirectDrawSurface_QueryInterface(LPDIRECTDRAWSURFACE this,REFIID refiid,LPVOID *obj) { + char xrefiid[50]; + + WINE_StringFromCLSID((LPCLSID)refiid,xrefiid); + TRACE(ddraw,"(%p)->(%s,%p)\n",this,xrefiid,obj); + + /* thats version 3 (DirectX 5) */ + if (!memcmp(&IID_IDirectDrawSurface3,refiid,sizeof(IID_IDirectDrawSurface3))) { + this->lpvtbl = (LPDIRECTDRAWSURFACE_VTABLE)&dga_dds3vt; + this->lpvtbl->fnAddRef(this); + *obj = this; + return 0; + } + /* thats version 2 (DirectX 3) */ + if (!memcmp(&IID_IDirectDrawSurface2,refiid,sizeof(IID_IDirectDrawSurface2))) { + this->lpvtbl = (LPDIRECTDRAWSURFACE_VTABLE)&dga_dds2vt; + *obj = this; + return 0; + } + /* thats us */ + if (!memcmp(&IID_IDirectDrawSurface,refiid,sizeof(IID_IDirectDrawSurface))) { + this->lpvtbl->fnAddRef(this); + *obj = this; + return 0; + } + WARN(ddraw,"(%p):interface for IID %s _NOT_ found!\n",this,xrefiid); + return OLE_E_ENUM_NOMORE; +} + +static HRESULT WINAPI XShm_IDirectDrawSurface_QueryInterface(LPDIRECTDRAWSURFACE this,REFIID refiid,LPVOID *obj) { char xrefiid[50]; WINE_StringFromCLSID((LPCLSID)refiid,xrefiid); @@ -636,14 +878,42 @@ static HRESULT WINAPI IDirectDrawSurface_QueryInterface(LPDIRECTDRAWSURFACE this /* thats version 3 (DirectX 5) */ if ( !memcmp(&IID_IDirectDrawSurface3,refiid,sizeof(IID_IDirectDrawSurface3))) { this->lpvtbl->fnAddRef(this); - this->lpvtbl = (LPDIRECTDRAWSURFACE_VTABLE)&dds3vt; + this->lpvtbl = (LPDIRECTDRAWSURFACE_VTABLE)&xshm_dds3vt; *obj = this; return 0; } /* thats version 2 (DirectX 3) */ - if ( !memcmp(&IID_IDirectDrawSurface2,refiid,sizeof(IID_IDirectDrawSurface2))) { + if (!memcmp(&IID_IDirectDrawSurface2,refiid,sizeof(IID_IDirectDrawSurface2))) { + this->lpvtbl = (LPDIRECTDRAWSURFACE_VTABLE)&xshm_dds2vt; + *obj = this; + return 0; + } + /* thats us */ + if (!memcmp(&IID_IDirectDrawSurface,refiid,sizeof(IID_IDirectDrawSurface))) { this->lpvtbl->fnAddRef(this); - this->lpvtbl = (LPDIRECTDRAWSURFACE_VTABLE)&dds2vt; + *obj = this; + return 0; + } + WARN(ddraw,"(%p):interface for IID %s _NOT_ found!\n",this,xrefiid); + return OLE_E_ENUM_NOMORE; +} + +static HRESULT WINAPI Xlib_IDirectDrawSurface_QueryInterface(LPDIRECTDRAWSURFACE this,REFIID refiid,LPVOID *obj) { + char xrefiid[50]; + + WINE_StringFromCLSID((LPCLSID)refiid,xrefiid); + TRACE(ddraw,"(%p)->(%s,%p)\n",this,xrefiid,obj); + + /* thats version 3 (DirectX 5) */ + if (!memcmp(&IID_IDirectDrawSurface3,refiid,sizeof(IID_IDirectDrawSurface3))) { + this->lpvtbl = (LPDIRECTDRAWSURFACE_VTABLE)&xlib_dds3vt; + this->lpvtbl->fnAddRef(this); + *obj = this; + return 0; + } + /* thats version 2 (DirectX 3) */ + if (!memcmp(&IID_IDirectDrawSurface2,refiid,sizeof(IID_IDirectDrawSurface2))) { + this->lpvtbl = (LPDIRECTDRAWSURFACE_VTABLE)&xlib_dds2vt; *obj = this; return 0; } @@ -661,10 +931,10 @@ static HRESULT WINAPI IDirectDrawSurface_IsLost(LPDIRECTDRAWSURFACE this) { return 0; /* hmm */ } -static struct IDirectDrawSurface_VTable ddsvt = { - IDirectDrawSurface_QueryInterface, +static struct IDirectDrawSurface_VTable dga_ddsvt = { + DGA_IDirectDrawSurface_QueryInterface, IDirectDrawSurface_AddRef, - IDirectDrawSurface_Release, + DGA_IDirectDrawSurface_Release, IDirectDrawSurface_AddAttachedSurface, (void*)5, IDirectDrawSurface_Blt, @@ -673,7 +943,7 @@ static struct IDirectDrawSurface_VTable ddsvt = { (void*)9, (void*)10, (void*)11, - IDirectDrawSurface_Flip, + DGA_IDirectDrawSurface_Flip, IDirectDrawSurface_GetAttachedSurface, IDirectDrawSurface_GetBltStatus, IDirectDrawSurface_GetCaps, @@ -694,7 +964,85 @@ static struct IDirectDrawSurface_VTable ddsvt = { (void*)30, (void*)31, IDirectDrawSurface_SetPalette, - IDirectDrawSurface_Unlock, + DGA_IDirectDrawSurface_Unlock, + (void*)34, + (void*)35, + (void*)36, +}; + +static struct IDirectDrawSurface_VTable xshm_ddsvt = { + XShm_IDirectDrawSurface_QueryInterface, + IDirectDrawSurface_AddRef, + XShm_IDirectDrawSurface_Release, + IDirectDrawSurface_AddAttachedSurface, + (void*)5, + IDirectDrawSurface_Blt, + IDirectDrawSurface_BltBatch, + IDirectDrawSurface_BltFast, + (void*)9, + (void*)10, + (void*)11, + XShm_IDirectDrawSurface_Flip, + IDirectDrawSurface_GetAttachedSurface, + IDirectDrawSurface_GetBltStatus, + IDirectDrawSurface_GetCaps, + (void*)16, + (void*)17, + IDirectDrawSurface_GetDC, + (void*)19, + IDirectDrawSurface_GetOverlayPosition, + (void*)21, + IDirectDrawSurface_GetPixelFormat, + IDirectDrawSurface_GetSurfaceDesc, + IDirectDrawSurface_Initialize, + IDirectDrawSurface_IsLost, + IDirectDrawSurface_Lock, + (void*)27, + (void*)28, + IDirectDrawSurface_SetClipper, + (void*)30, + (void*)31, + IDirectDrawSurface_SetPalette, + XShm_IDirectDrawSurface_Unlock, + (void*)34, + (void*)35, + (void*)36, +}; + +static struct IDirectDrawSurface_VTable xlib_ddsvt = { + Xlib_IDirectDrawSurface_QueryInterface, + IDirectDrawSurface_AddRef, + Xlib_IDirectDrawSurface_Release, + IDirectDrawSurface_AddAttachedSurface, + (void*)5, + IDirectDrawSurface_Blt, + IDirectDrawSurface_BltBatch, + IDirectDrawSurface_BltFast, + (void*)9, + (void*)10, + (void*)11, + Xlib_IDirectDrawSurface_Flip, + IDirectDrawSurface_GetAttachedSurface, + IDirectDrawSurface_GetBltStatus, + IDirectDrawSurface_GetCaps, + (void*)16, + (void*)17, + IDirectDrawSurface_GetDC, + (void*)19, + IDirectDrawSurface_GetOverlayPosition, + (void*)21, + IDirectDrawSurface_GetPixelFormat, + IDirectDrawSurface_GetSurfaceDesc, + IDirectDrawSurface_Initialize, + IDirectDrawSurface_IsLost, + IDirectDrawSurface_Lock, + (void*)27, + (void*)28, + IDirectDrawSurface_SetClipper, + (void*)30, + (void*)31, + IDirectDrawSurface_SetPalette, + Xlib_IDirectDrawSurface_Unlock, (void*)34, (void*)35, (void*)36, @@ -711,11 +1059,22 @@ static HRESULT WINAPI IDirectDrawSurface2_Lock( return IDirectDrawSurface_Lock((LPDIRECTDRAWSURFACE)this,lprect,lpddsd,flags,hnd); } -static HRESULT WINAPI IDirectDrawSurface2_Unlock( +static HRESULT WINAPI DGA_IDirectDrawSurface2_Unlock( LPDIRECTDRAWSURFACE2 this,LPVOID surface ) { - TRACE(ddraw,"(%p)->Unlock(%p)\n",this,surface); - return 0; + return DGA_IDirectDrawSurface_Unlock((LPDIRECTDRAWSURFACE)this,surface); +} + +static HRESULT WINAPI XShm_IDirectDrawSurface2_Unlock( + LPDIRECTDRAWSURFACE2 this,LPVOID surface +) { + return DGA_IDirectDrawSurface_Unlock((LPDIRECTDRAWSURFACE)this,surface); +} + +static HRESULT WINAPI Xlib_IDirectDrawSurface2_Unlock( + LPDIRECTDRAWSURFACE2 this,LPVOID surface +) { + return DGA_IDirectDrawSurface_Unlock((LPDIRECTDRAWSURFACE)this,surface); } static HRESULT WINAPI IDirectDrawSurface2_SetPalette( @@ -729,50 +1088,134 @@ static ULONG WINAPI IDirectDrawSurface2_AddRef(LPDIRECTDRAWSURFACE2 this) { return ++(this->ref); } -static ULONG WINAPI IDirectDrawSurface2_Release(LPDIRECTDRAWSURFACE2 this) { - return IDirectDrawSurface_Release((LPDIRECTDRAWSURFACE)this); +static ULONG WINAPI DGA_IDirectDrawSurface2_Release(LPDIRECTDRAWSURFACE2 this) { + return DGA_IDirectDrawSurface_Release((LPDIRECTDRAWSURFACE)this); } -static HRESULT WINAPI IDirectDrawSurface2_GetAttachedSurface( +static ULONG WINAPI XShm_IDirectDrawSurface2_Release(LPDIRECTDRAWSURFACE2 this) { + return XShm_IDirectDrawSurface_Release((LPDIRECTDRAWSURFACE)this); +} + +static ULONG WINAPI Xlib_IDirectDrawSurface2_Release(LPDIRECTDRAWSURFACE2 this) { + return Xlib_IDirectDrawSurface_Release((LPDIRECTDRAWSURFACE)this); +} + +static HRESULT WINAPI IDirectDrawSurface2_Blt( + LPDIRECTDRAWSURFACE2 this,LPRECT32 rdst,LPDIRECTDRAWSURFACE2 src,LPRECT32 rsrc,DWORD dwFlags,LPDDBLTFX lpbltfx +) { + return IDirectDrawSurface_Blt((LPDIRECTDRAWSURFACE)this, rdst, (LPDIRECTDRAWSURFACE)src, rsrc, dwFlags,lpbltfx); +} + +static HRESULT WINAPI IDirectDrawSurface2_BltFast( + LPDIRECTDRAWSURFACE2 this,DWORD dstx,DWORD dsty,LPDIRECTDRAWSURFACE2 src,LPRECT32 rsrc,DWORD trans +) { + return IDirectDrawSurface_BltFast((LPDIRECTDRAWSURFACE)this,dstx,dsty,(LPDIRECTDRAWSURFACE)src,rsrc,trans); +} + +static HRESULT WINAPI IDirectDrawSurface2_BltBatch( + LPDIRECTDRAWSURFACE2 this,LPDDBLTBATCH ddbltbatch,DWORD x,DWORD y +) { + return IDirectDrawSurface_BltBatch((LPDIRECTDRAWSURFACE)this,ddbltbatch,x,y); +} + +static HRESULT WINAPI DGA_IDirectDrawSurface2_GetAttachedSurface( LPDIRECTDRAWSURFACE2 this,LPDDSCAPS lpddsd,LPDIRECTDRAWSURFACE2 *lpdsf ) { - HRESULT ret = IDirectDrawSurface_GetAttachedSurface((LPDIRECTDRAWSURFACE)this,lpddsd,(LPDIRECTDRAWSURFACE*)lpdsf); + HRESULT ret; - if (!ret) - (*lpdsf)->lpvtbl = &dds2vt; + ret = IDirectDrawSurface_GetAttachedSurface((LPDIRECTDRAWSURFACE)this,lpddsd,(LPDIRECTDRAWSURFACE*)lpdsf); + + if (!ret) { + (*lpdsf)->lpvtbl = &dga_dds2vt; + } return ret; } +static HRESULT WINAPI XShm_IDirectDrawSurface2_GetAttachedSurface( + LPDIRECTDRAWSURFACE2 this,LPDDSCAPS lpddsd,LPDIRECTDRAWSURFACE2 *lpdsf +) { + HRESULT ret; + + ret = IDirectDrawSurface_GetAttachedSurface((LPDIRECTDRAWSURFACE)this,lpddsd,(LPDIRECTDRAWSURFACE*)lpdsf); + + if (!ret) { + (*lpdsf)->lpvtbl = &xshm_dds2vt; + } + return ret; +} + +static HRESULT WINAPI Xlib_IDirectDrawSurface2_GetAttachedSurface( + LPDIRECTDRAWSURFACE2 this,LPDDSCAPS lpddsd,LPDIRECTDRAWSURFACE2 *lpdsf +) { + HRESULT ret; + + ret = IDirectDrawSurface_GetAttachedSurface((LPDIRECTDRAWSURFACE)this,lpddsd,(LPDIRECTDRAWSURFACE*)lpdsf); + + if (!ret) { + (*lpdsf)->lpvtbl = &xlib_dds2vt; + } + return ret; +} + +static HRESULT WINAPI DGA_IDirectDrawSurface2_Flip( + LPDIRECTDRAWSURFACE2 this,LPDIRECTDRAWSURFACE2 flipto,DWORD dwFlags +) { + return DGA_IDirectDrawSurface_Flip((LPDIRECTDRAWSURFACE)this,(LPDIRECTDRAWSURFACE)flipto,dwFlags); +} + +static HRESULT WINAPI XShm_IDirectDrawSurface2_Flip( + LPDIRECTDRAWSURFACE2 this,LPDIRECTDRAWSURFACE2 flipto,DWORD dwFlags +) { + return XShm_IDirectDrawSurface_Flip((LPDIRECTDRAWSURFACE)this,(LPDIRECTDRAWSURFACE)flipto,dwFlags); +} + +static HRESULT WINAPI Xlib_IDirectDrawSurface2_Flip( + LPDIRECTDRAWSURFACE2 this,LPDIRECTDRAWSURFACE2 flipto,DWORD dwFlags +) { + return Xlib_IDirectDrawSurface_Flip((LPDIRECTDRAWSURFACE)this,(LPDIRECTDRAWSURFACE)flipto,dwFlags); +} + static HRESULT WINAPI IDirectDrawSurface2_EnumAttachedSurfaces(LPDIRECTDRAWSURFACE2 this,LPVOID context,LPDDENUMSURFACESCALLBACK esfcb) { FIXME(ddraw,"(%p)->(%p,%p),stub!\n",this,context,esfcb); return 0; } -static HRESULT WINAPI IDirectDrawSurface2_QueryInterface( +static HRESULT WINAPI DGA_IDirectDrawSurface2_QueryInterface( LPDIRECTDRAWSURFACE2 this,REFIID riid,LPVOID *ppobj ) { - return IDirectDrawSurface_QueryInterface((LPDIRECTDRAWSURFACE)this,riid,ppobj); + return DGA_IDirectDrawSurface_QueryInterface((LPDIRECTDRAWSURFACE)this,riid,ppobj); +} + +static HRESULT WINAPI XShm_IDirectDrawSurface2_QueryInterface( + LPDIRECTDRAWSURFACE2 this,REFIID riid,LPVOID *ppobj +) { + return XShm_IDirectDrawSurface_QueryInterface((LPDIRECTDRAWSURFACE)this,riid,ppobj); +} + +static HRESULT WINAPI Xlib_IDirectDrawSurface2_QueryInterface( + LPDIRECTDRAWSURFACE2 this,REFIID riid,LPVOID *ppobj +) { + return Xlib_IDirectDrawSurface_QueryInterface((LPDIRECTDRAWSURFACE)this,riid,ppobj); } static HRESULT WINAPI IDirectDrawSurface2_IsLost(LPDIRECTDRAWSURFACE2 this) { return 0; /* hmm */ } - -static struct IDirectDrawSurface2_VTable dds2vt = { - IDirectDrawSurface2_QueryInterface, +static struct IDirectDrawSurface2_VTable dga_dds2vt = { + DGA_IDirectDrawSurface2_QueryInterface, IDirectDrawSurface2_AddRef, - IDirectDrawSurface2_Release, + DGA_IDirectDrawSurface2_Release, (void*)4, (void*)5, - (void*)6/*IDirectDrawSurface_Blt*/, - (void*)7/*IDirectDrawSurface_BltBatch*/, - (void*)8, + IDirectDrawSurface2_Blt, + IDirectDrawSurface2_BltBatch, + IDirectDrawSurface2_BltFast, (void*)9, IDirectDrawSurface2_EnumAttachedSurfaces, (void*)11, - (void*)12, - IDirectDrawSurface2_GetAttachedSurface, + DGA_IDirectDrawSurface2_Flip, + DGA_IDirectDrawSurface2_GetAttachedSurface, (void*)14, (void*)15/*IDirectDrawSurface_GetCaps*/, (void*)16, @@ -792,7 +1235,91 @@ static struct IDirectDrawSurface2_VTable dds2vt = { (void*)30, (void*)31, IDirectDrawSurface2_SetPalette, - IDirectDrawSurface2_Unlock, + DGA_IDirectDrawSurface2_Unlock, + (void*)34, + (void*)35, + (void*)36, + (void*)37, + (void*)38, + (void*)39, +}; + +static struct IDirectDrawSurface2_VTable xshm_dds2vt = { + XShm_IDirectDrawSurface2_QueryInterface, + IDirectDrawSurface2_AddRef, + XShm_IDirectDrawSurface2_Release, + (void*)4, + (void*)5, + IDirectDrawSurface2_Blt, + IDirectDrawSurface2_BltBatch, + IDirectDrawSurface2_BltFast, + (void*)9, + IDirectDrawSurface2_EnumAttachedSurfaces, + (void*)11, + XShm_IDirectDrawSurface2_Flip, + XShm_IDirectDrawSurface2_GetAttachedSurface, + (void*)14, + (void*)15/*IDirectDrawSurface_GetCaps*/, + (void*)16, + (void*)17, + (void*)18, + (void*)19, + (void*)20, + (void*)21, + (void*)22, + (void*)23/*IDirectDrawSurface_GetSurfaceDesc*/, + (void*)24, + IDirectDrawSurface2_IsLost, + IDirectDrawSurface2_Lock, + (void*)27, + (void*)28, + (void*)29, + (void*)30, + (void*)31, + IDirectDrawSurface2_SetPalette, + XShm_IDirectDrawSurface2_Unlock, + (void*)34, + (void*)35, + (void*)36, + (void*)37, + (void*)38, + (void*)39, +}; + +static struct IDirectDrawSurface2_VTable xlib_dds2vt = { + Xlib_IDirectDrawSurface2_QueryInterface, + IDirectDrawSurface2_AddRef, + Xlib_IDirectDrawSurface2_Release, + (void*)4, + (void*)5, + IDirectDrawSurface2_Blt, + IDirectDrawSurface2_BltBatch, + IDirectDrawSurface2_BltFast, + (void*)9, + IDirectDrawSurface2_EnumAttachedSurfaces, + (void*)11, + Xlib_IDirectDrawSurface2_Flip, + Xlib_IDirectDrawSurface2_GetAttachedSurface, + (void*)14, + (void*)15/*IDirectDrawSurface_GetCaps*/, + (void*)16, + (void*)17, + (void*)18, + (void*)19, + (void*)20, + (void*)21, + (void*)22, + (void*)23/*IDirectDrawSurface_GetSurfaceDesc*/, + (void*)24, + IDirectDrawSurface2_IsLost, + IDirectDrawSurface2_Lock, + (void*)27, + (void*)28, + (void*)29, + (void*)30, + (void*)31, + IDirectDrawSurface2_SetPalette, + Xlib_IDirectDrawSurface2_Unlock, (void*)34, (void*)35, (void*)36, @@ -816,13 +1343,42 @@ static HRESULT WINAPI IDirectDrawSurface3_GetPixelFormat( return _getpixelformat(this->s.ddraw,pf); } -static HRESULT WINAPI IDirectDrawSurface3_GetAttachedSurface( +static HRESULT WINAPI DGA_IDirectDrawSurface3_GetAttachedSurface( LPDIRECTDRAWSURFACE3 this,LPDDSCAPS lpddsd,LPDIRECTDRAWSURFACE3 *lpdsf ) { - HRESULT ret = IDirectDrawSurface_GetAttachedSurface((LPDIRECTDRAWSURFACE)this,lpddsd,(LPDIRECTDRAWSURFACE*)lpdsf); + HRESULT ret; - if (!ret) - (*lpdsf)->lpvtbl = &dds3vt; + ret = IDirectDrawSurface_GetAttachedSurface((LPDIRECTDRAWSURFACE)this,lpddsd,(LPDIRECTDRAWSURFACE*)lpdsf); + + if (!ret) { + (*lpdsf)->lpvtbl = &dga_dds3vt; + } + return ret; +} + +static HRESULT WINAPI XShm_IDirectDrawSurface3_GetAttachedSurface( + LPDIRECTDRAWSURFACE3 this,LPDDSCAPS lpddsd,LPDIRECTDRAWSURFACE3 *lpdsf +) { + HRESULT ret; + + ret = IDirectDrawSurface_GetAttachedSurface((LPDIRECTDRAWSURFACE)this,lpddsd,(LPDIRECTDRAWSURFACE*)lpdsf); + + if (!ret) { + (*lpdsf)->lpvtbl = &xshm_dds3vt; + } + return ret; +} + +static HRESULT WINAPI Xlib_IDirectDrawSurface3_GetAttachedSurface( + LPDIRECTDRAWSURFACE3 this,LPDDSCAPS lpddsd,LPDIRECTDRAWSURFACE3 *lpdsf +) { + HRESULT ret; + + ret = IDirectDrawSurface_GetAttachedSurface((LPDIRECTDRAWSURFACE)this,lpddsd,(LPDIRECTDRAWSURFACE*)lpdsf); + + if (!ret) { + (*lpdsf)->lpvtbl = &xlib_dds3vt; + } return ret; } @@ -831,15 +1387,16 @@ static ULONG WINAPI IDirectDrawSurface3_AddRef(LPDIRECTDRAWSURFACE3 this) { return ++(this->ref); } -static ULONG WINAPI IDirectDrawSurface3_Release(LPDIRECTDRAWSURFACE3 this) { - TRACE(ddraw,"(%p)->Release()\n",this); - if (!--(this->ref)) { - this->s.ddraw->lpvtbl->fnRelease(this->s.ddraw); - this->s.ddraw->d.vpmask &= ~(1<<(this->s.fb_height/this->s.ddraw->d.fb_height)); - HeapFree(GetProcessHeap(),0,this); - return 0; - } - return this->ref; +static ULONG WINAPI DGA_IDirectDrawSurface3_Release(LPDIRECTDRAWSURFACE3 this) { + return DGA_IDirectDrawSurface_Release((LPDIRECTDRAWSURFACE)this); +} + +static ULONG WINAPI XShm_IDirectDrawSurface3_Release(LPDIRECTDRAWSURFACE3 this) { + return XShm_IDirectDrawSurface_Release((LPDIRECTDRAWSURFACE)this); +} + +static ULONG WINAPI Xlib_IDirectDrawSurface3_Release(LPDIRECTDRAWSURFACE3 this) { + return Xlib_IDirectDrawSurface_Release((LPDIRECTDRAWSURFACE)this); } static HRESULT WINAPI IDirectDrawSurface3_Blt( @@ -863,10 +1420,22 @@ static HRESULT WINAPI IDirectDrawSurface3_GetBltStatus( return IDirectDrawSurface_GetBltStatus((LPDIRECTDRAWSURFACE)this,dwflags); } -static HRESULT WINAPI IDirectDrawSurface3_Flip( +static HRESULT WINAPI DGA_IDirectDrawSurface3_Flip( LPDIRECTDRAWSURFACE3 this,LPDIRECTDRAWSURFACE3 flipto,DWORD dwFlags ) { - return IDirectDrawSurface_Flip((LPDIRECTDRAWSURFACE)this,(LPDIRECTDRAWSURFACE)flipto,dwFlags); + return DGA_IDirectDrawSurface_Flip((LPDIRECTDRAWSURFACE)this,(LPDIRECTDRAWSURFACE)flipto,dwFlags); +} + +static HRESULT WINAPI XShm_IDirectDrawSurface3_Flip( + LPDIRECTDRAWSURFACE3 this,LPDIRECTDRAWSURFACE3 flipto,DWORD dwFlags +) { + return XShm_IDirectDrawSurface_Flip((LPDIRECTDRAWSURFACE)this,(LPDIRECTDRAWSURFACE)flipto,dwFlags); +} + +static HRESULT WINAPI Xlib_IDirectDrawSurface3_Flip( + LPDIRECTDRAWSURFACE3 this,LPDIRECTDRAWSURFACE3 flipto,DWORD dwFlags +) { + return Xlib_IDirectDrawSurface_Flip((LPDIRECTDRAWSURFACE)this,(LPDIRECTDRAWSURFACE)flipto,dwFlags); } static HRESULT WINAPI IDirectDrawSurface3_Lock( @@ -875,10 +1444,22 @@ static HRESULT WINAPI IDirectDrawSurface3_Lock( return IDirectDrawSurface_Lock((LPDIRECTDRAWSURFACE)this,lprect,lpddsd,flags,hnd); } -static HRESULT WINAPI IDirectDrawSurface3_Unlock( +static HRESULT WINAPI DGA_IDirectDrawSurface3_Unlock( LPDIRECTDRAWSURFACE3 this,LPVOID surface ) { - return IDirectDrawSurface_Unlock((LPDIRECTDRAWSURFACE)this,surface); + return DGA_IDirectDrawSurface_Unlock((LPDIRECTDRAWSURFACE)this,surface); +} + +static HRESULT WINAPI XShm_IDirectDrawSurface3_Unlock( + LPDIRECTDRAWSURFACE3 this,LPVOID surface +) { + return XShm_IDirectDrawSurface_Unlock((LPDIRECTDRAWSURFACE)this,surface); +} + +static HRESULT WINAPI Xlib_IDirectDrawSurface3_Unlock( + LPDIRECTDRAWSURFACE3 this,LPVOID surface +) { + return Xlib_IDirectDrawSurface_Unlock((LPDIRECTDRAWSURFACE)this,surface); } static HRESULT WINAPI IDirectDrawSurface3_EnumAttachedSurfaces(LPDIRECTDRAWSURFACE3 this,LPVOID context,LPDDENUMSURFACESCALLBACK esfcb) { @@ -892,16 +1473,28 @@ static HRESULT WINAPI IDirectDrawSurface3_SetClipper( return IDirectDrawSurface_SetClipper((LPDIRECTDRAWSURFACE)this,clipper); } -static HRESULT WINAPI IDirectDrawSurface3_QueryInterface( +static HRESULT WINAPI DGA_IDirectDrawSurface3_QueryInterface( LPDIRECTDRAWSURFACE3 this,REFIID riid,LPVOID *ppobj ) { - return IDirectDrawSurface_QueryInterface((LPDIRECTDRAWSURFACE)this,riid,ppobj); + return DGA_IDirectDrawSurface_QueryInterface((LPDIRECTDRAWSURFACE)this,riid,ppobj); } -static struct IDirectDrawSurface3_VTable dds3vt = { - IDirectDrawSurface3_QueryInterface, +static HRESULT WINAPI XShm_IDirectDrawSurface3_QueryInterface( + LPDIRECTDRAWSURFACE3 this,REFIID riid,LPVOID *ppobj +) { + return XShm_IDirectDrawSurface_QueryInterface((LPDIRECTDRAWSURFACE)this,riid,ppobj); +} + +static HRESULT WINAPI Xlib_IDirectDrawSurface3_QueryInterface( + LPDIRECTDRAWSURFACE3 this,REFIID riid,LPVOID *ppobj +) { + return Xlib_IDirectDrawSurface_QueryInterface((LPDIRECTDRAWSURFACE)this,riid,ppobj); +} + +static struct IDirectDrawSurface3_VTable dga_dds3vt = { + DGA_IDirectDrawSurface3_QueryInterface, IDirectDrawSurface3_AddRef, - IDirectDrawSurface3_Release, + DGA_IDirectDrawSurface3_Release, (void*)4, (void*)5, IDirectDrawSurface3_Blt, @@ -910,8 +1503,8 @@ static struct IDirectDrawSurface3_VTable dds3vt = { (void*)9, IDirectDrawSurface3_EnumAttachedSurfaces, (void*)11, - IDirectDrawSurface3_Flip, - IDirectDrawSurface3_GetAttachedSurface, + DGA_IDirectDrawSurface3_Flip, + DGA_IDirectDrawSurface3_GetAttachedSurface, IDirectDrawSurface3_GetBltStatus, (void*)15, (void*)16, @@ -931,7 +1524,7 @@ static struct IDirectDrawSurface3_VTable dds3vt = { (void*)30, (void*)31, IDirectDrawSurface3_SetPalette, - IDirectDrawSurface3_Unlock, + DGA_IDirectDrawSurface3_Unlock, (void*)34, (void*)35, (void*)36, @@ -941,6 +1534,91 @@ static struct IDirectDrawSurface3_VTable dds3vt = { (void*)40, }; +static struct IDirectDrawSurface3_VTable xshm_dds3vt = { + XShm_IDirectDrawSurface3_QueryInterface, + IDirectDrawSurface3_AddRef, + XShm_IDirectDrawSurface3_Release, + (void*)4, + (void*)5, + IDirectDrawSurface3_Blt, + (void*)7, + (void*)8, + (void*)9, + IDirectDrawSurface3_EnumAttachedSurfaces, + (void*)11, + XShm_IDirectDrawSurface3_Flip, + XShm_IDirectDrawSurface3_GetAttachedSurface, + IDirectDrawSurface3_GetBltStatus, + (void*)15, + (void*)16, + (void*)17, + (void*)18, + (void*)19, + (void*)20, + (void*)21, + IDirectDrawSurface3_GetPixelFormat, + (void*)23, + (void*)24, + IDirectDrawSurface3_IsLost, + IDirectDrawSurface3_Lock, + (void*)27, + IDirectDrawSurface3_Restore, + IDirectDrawSurface3_SetClipper, + (void*)30, + (void*)31, + IDirectDrawSurface3_SetPalette, + XShm_IDirectDrawSurface3_Unlock, + (void*)34, + (void*)35, + (void*)36, + (void*)37, + (void*)38, + (void*)39, + (void*)40, +}; + +static struct IDirectDrawSurface3_VTable xlib_dds3vt = { + Xlib_IDirectDrawSurface3_QueryInterface, + IDirectDrawSurface3_AddRef, + Xlib_IDirectDrawSurface3_Release, + (void*)4, + (void*)5, + IDirectDrawSurface3_Blt, + (void*)7, + (void*)8, + (void*)9, + IDirectDrawSurface3_EnumAttachedSurfaces, + (void*)11, + Xlib_IDirectDrawSurface3_Flip, + Xlib_IDirectDrawSurface3_GetAttachedSurface, + IDirectDrawSurface3_GetBltStatus, + (void*)15, + (void*)16, + (void*)17, + (void*)18, + (void*)19, + (void*)20, + (void*)21, + IDirectDrawSurface3_GetPixelFormat, + (void*)23, + (void*)24, + IDirectDrawSurface3_IsLost, + IDirectDrawSurface3_Lock, + (void*)27, + IDirectDrawSurface3_Restore, + IDirectDrawSurface3_SetClipper, + (void*)30, + (void*)31, + IDirectDrawSurface3_SetPalette, + Xlib_IDirectDrawSurface3_Unlock, + (void*)34, + (void*)35, + (void*)36, + (void*)37, + (void*)38, + (void*)39, + (void*)40, +}; /****************************************************************************** * IDirectDrawClipper @@ -986,20 +1664,24 @@ static struct IDirectDrawClipper_VTable ddclipvt = { static HRESULT WINAPI IDirectDrawPalette_GetEntries( LPDIRECTDRAWPALETTE this,DWORD x,DWORD start,DWORD end,LPPALETTEENTRY palent ) { + XColor xc; int i; - FIXME(ddraw,"(%p)->GetEntries(%08lx,%ld,%ld,%p),stub!\n", - this,x,start,end,palent - ); + if (!this->cm) /* should not happen */ { + TRACE(ddraw,"app tried to read colormap for non-palettized mode\n"); + return DDERR_GENERIC; + } for (i=start;icm,&xc); + palent[i-start].peRed = xc.red>>8; + palent[i-start].peGreen = xc.green>>8; + palent[i-start].peBlue = xc.blue>>8; } return 0; } -static HRESULT WINAPI IDirectDrawPalette_SetEntries( +static HRESULT WINAPI common_IDirectDrawPalette_SetEntries( LPDIRECTDRAWPALETTE this,DWORD x,DWORD start,DWORD end,LPPALETTEENTRY palent ) { XColor xc; @@ -1009,24 +1691,11 @@ static HRESULT WINAPI IDirectDrawPalette_SetEntries( this,x,start,end,palent ); if (!this->cm) /* should not happen */ { - ERR(ddraw,"no colormap in SetEntries???\n"); + TRACE(ddraw,"app tried to set colormap in non-palettized mode\n"); return DDERR_GENERIC; } -/* FIXME: free colorcells instead of freeing whole map */ - TSXFreeColormap(display,this->cm); - this->cm = TSXCreateColormap(display,DefaultRootWindow(display),DefaultVisualOfScreen(screen),AllocAll); - if (start>0) { - xc.red = xc.blue = xc.green = 0; xc.flags = DoRed|DoGreen|DoBlue; xc.pixel = 0; TSXStoreColor(display,this->cm,&xc); - this->palents[0].peRed = 0; - this->palents[0].peBlue = 0; - this->palents[0].peGreen = 0; - } - if (end<256) { - xc.red = xc.blue = xc.green = 0xffff; xc.flags = DoRed|DoGreen|DoBlue; xc.pixel = 255; TSXStoreColor(display,this->cm,&xc); - this->palents[255].peRed = 255; - this->palents[255].peBlue = 255; - this->palents[255].peGreen = 255; - } + /* FIXME: free colorcells instead of freeing whole map */ + this->cm = TSXCopyColormapAndFree(display,this->cm); for (i=start;ipalents[i].peBlue = palent[i-start].peBlue; this->palents[i].peGreen = palent[i-start].peGreen; } + return 0; +} -/* Insomnia's (Stea Greene's) Mods Start Here */ -/* FIXME: Still should free individual cells, but this fixes loss of */ -/* unchange sections of old palette */ - - for (i=0;ipalents[i].peRed<<8; - xc.blue = this->palents[i].peBlue<<8; - xc.green = this->palents[i].peGreen<<8; - xc.flags = DoRed|DoBlue|DoGreen; - xc.pixel = i; - TSXStoreColor(display,this->cm,&xc); - } - for (i=end;i<256;i++) { - xc.red = this->palents[i].peRed<<8; - xc.blue = this->palents[i].peBlue<<8; - xc.green = this->palents[i].peGreen<<8; - xc.flags = DoRed|DoBlue|DoGreen; - xc.pixel = i; - TSXStoreColor(display,this->cm,&xc); - } -/* End Insomnia's Mods */ - +static HRESULT WINAPI DGA_IDirectDrawPalette_SetEntries( + LPDIRECTDRAWPALETTE this,DWORD x,DWORD start,DWORD end,LPPALETTEENTRY palent +) { +#ifdef HAVE_LIBXXF86DGA + HRESULT hres; + hres = common_IDirectDrawPalette_SetEntries(this,x,start,end,palent); + if (hres != 0) return hres; XF86DGAInstallColormap(display,DefaultScreen(display),this->cm); return 0; +#else /* defined(HAVE_LIBXXF86DGA) */ + return E_UNEXPECTED; +#endif /* defined(HAVE_LIBXXF86DGA) */ +} + +static HRESULT WINAPI Xlib_IDirectDrawPalette_SetEntries( + LPDIRECTDRAWPALETTE this,DWORD x,DWORD start,DWORD end,LPPALETTEENTRY palent +) { + HRESULT hres; + hres = common_IDirectDrawPalette_SetEntries(this,x,start,end,palent); + if (hres != 0) return hres; + TSXInstallColormap(display,this->cm); + return 0; } static ULONG WINAPI IDirectDrawPalette_Release(LPDIRECTDRAWPALETTE this) { @@ -1087,14 +1756,34 @@ static HRESULT WINAPI IDirectDrawPalette_Initialize( return DDERR_ALREADYINITIALIZED; } -static struct IDirectDrawPalette_VTable ddpalvt = { +static struct IDirectDrawPalette_VTable dga_ddpalvt = { (void*)1, IDirectDrawPalette_AddRef, IDirectDrawPalette_Release, (void*)4, IDirectDrawPalette_GetEntries, IDirectDrawPalette_Initialize, - IDirectDrawPalette_SetEntries + DGA_IDirectDrawPalette_SetEntries +}; + +static struct IDirectDrawPalette_VTable xshm_ddpalvt = { + (void*)1, + IDirectDrawPalette_AddRef, + IDirectDrawPalette_Release, + (void*)4, + IDirectDrawPalette_GetEntries, + IDirectDrawPalette_Initialize, + Xlib_IDirectDrawPalette_SetEntries +}; + +static struct IDirectDrawPalette_VTable xlib_ddpalvt = { + (void*)1, + IDirectDrawPalette_AddRef, + IDirectDrawPalette_Release, + (void*)4, + IDirectDrawPalette_GetEntries, + IDirectDrawPalette_Initialize, + Xlib_IDirectDrawPalette_SetEntries }; /******************************************************************************* @@ -1155,9 +1844,10 @@ static struct IDirect3D2_VTable d3d2vt = { /******************************************************************************* * IDirectDraw */ -static HRESULT WINAPI IDirectDraw_CreateSurface( +static HRESULT WINAPI DGA_IDirectDraw_CreateSurface( LPDIRECTDRAW this,LPDDSURFACEDESC lpddsd,LPDIRECTDRAWSURFACE *lpdsf,IUnknown *lpunk ) { +#ifdef HAVE_LIBXXF86DGA int i; TRACE(ddraw, "(%p)->(%p,%p,%p)\n", @@ -1173,28 +1863,28 @@ static HRESULT WINAPI IDirectDraw_CreateSurface( *lpdsf = (LPDIRECTDRAWSURFACE)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(IDirectDrawSurface)); this->lpvtbl->fnAddRef(this); (*lpdsf)->ref = 1; - (*lpdsf)->lpvtbl = &ddsvt; + (*lpdsf)->lpvtbl = &dga_ddsvt; if ( (lpddsd->dwFlags & DDSD_CAPS) && (lpddsd->ddsCaps.dwCaps & DDSCAPS_OFFSCREENPLAIN) ) { if (!(lpddsd->dwFlags & DDSD_WIDTH)) - lpddsd->dwWidth = this->d.fb_width; + lpddsd->dwWidth = this->e.dga.fb_width; if (!(lpddsd->dwFlags & DDSD_HEIGHT)) - lpddsd->dwWidth = this->d.fb_height; + lpddsd->dwWidth = this->e.dga.fb_height; (*lpdsf)->s.surface = (LPBYTE)HeapAlloc(GetProcessHeap(),0,lpddsd->dwWidth*lpddsd->dwHeight*this->d.depth/8); - (*lpdsf)->s.fb_height = -1; + (*lpdsf)->t.dga.fb_height = -1; (*lpdsf)->s.lpitch = lpddsd->dwWidth*this->d.depth/8; TRACE(ddraw,"using system memory for a primary surface\n"); } else { for (i=0;i<32;i++) - if (!(this->d.vpmask & (1<e.dga.vpmask & (1<d.vpmask|=(1<s.surface = this->d.fb_addr+((i*this->d.fb_height)*this->d.fb_width*this->d.depth/8); - (*lpdsf)->s.fb_height = i*this->d.fb_height; - (*lpdsf)->s.lpitch = this->d.fb_width*this->d.depth/8; + this->e.dga.vpmask|=(1<s.surface = this->e.dga.fb_addr+((i*this->e.dga.fb_height)*this->e.dga.fb_width*this->d.depth/8); + (*lpdsf)->t.dga.fb_height = i*this->e.dga.fb_height; + (*lpdsf)->s.lpitch = this->e.dga.fb_width*this->d.depth/8; } lpddsd->lPitch = (*lpdsf)->s.lpitch; @@ -1212,24 +1902,106 @@ static HRESULT WINAPI IDirectDraw_CreateSurface( (*lpdsf)->s.backbuffer = back = (LPDIRECTDRAWSURFACE)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(IDirectDrawSurface)); this->lpvtbl->fnAddRef(this); back->ref = 1; - back->lpvtbl = &ddsvt; + back->lpvtbl = &dga_ddsvt; for (i=0;i<32;i++) - if (!(this->d.vpmask & (1<e.dga.vpmask & (1<d.vpmask|=(1<s.surface = this->d.fb_addr+((i*this->d.fb_height)*this->d.fb_width*this->d.depth/8); - back->s.fb_height = i*this->d.fb_height; + this->e.dga.vpmask|=(1<s.surface = this->e.dga.fb_addr+((i*this->e.dga.fb_height)*this->e.dga.fb_width*this->d.depth/8); + back->t.dga.fb_height = i*this->e.dga.fb_height; back->s.width = this->d.width; back->s.height = this->d.height; back->s.ddraw = this; - back->s.lpitch = this->d.fb_width*this->d.depth/8; + back->s.lpitch = this->e.dga.fb_width*this->d.depth/8; back->s.backbuffer = NULL; /* does not have a backbuffer, it is - * one! */ + * one! */ } return 0; +#else /* defined(HAVE_LIBXXF86DGA) */ + return E_UNEXPECTED; +#endif /* defined(HAVE_LIBXXF86DGA) */ +} + +static HRESULT WINAPI XShm_IDirectDraw_CreateSurface( + LPDIRECTDRAW this,LPDDSURFACEDESC lpddsd,LPDIRECTDRAWSURFACE *lpdsf,IUnknown *lpunk +) { +#ifdef HAVE_LIBXXSHM + XImage *img; + int shmid; + TRACE(ddraw, "(%p)->CreateSurface(%p,%p,%p)\n", + this,lpddsd,lpdsf,lpunk); + if (TRACE_ON(ddraw)) { + fprintf(stderr,"[w=%ld,h=%ld,flags ",lpddsd->dwWidth,lpddsd->dwHeight); + _dump_DDSD(lpddsd->dwFlags); + fprintf(stderr,"caps "); + _dump_DDSCAPS(lpddsd->ddsCaps.dwCaps); + fprintf(stderr,"]\n"); + } + + TRACE(ddraw,"using shared XImage for a primary surface\n"); + *lpdsf = (LPDIRECTDRAWSURFACE)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(IDirectDrawSurface)); + this->lpvtbl->fnAddRef(this); + (*lpdsf)->ref = 1; + (*lpdsf)->lpvtbl = &xshm_ddsvt; + (*lpdsf)->t.xshm.image = img = + XShmCreateImage(display, /*FIXME:visual*/0, /*FIXME:depth*/8, ZPixmap, + NULL, &(*lpdsf)->t.xshm.shminfo, + /*FIXME:width*/640, /*FIXME:height*/480); + (*lpdsf)->t.xshm.shminfo.shmid = shmid = + shmget(IPC_PRIVATE, img->bytes_per_line*img->height, IPC_CREAT|0777); + (*lpdsf)->t.xshm.shminfo.shmaddr = img->data = shmat(shmid, 0, 0); + XShmAttach(display, &(*lpdsf)->t.xshm.shminfo); + /* POOLE FIXME: XShm: this will easily break */ + (*lpdsf)->t.xshm.surface_is_image_data = TRUE; + (*lpdsf)->s.surface = img->data; + /* END FIXME: XShm */ + (*lpdsf)->s.lpitch = img->bytes_per_line; + (*lpdsf)->s.width = img->width; + (*lpdsf)->s.height = img->height; + (*lpdsf)->s.ddraw = this; + (*lpdsf)->s.backbuffer = NULL; + return 0; +#else /* defined(HAVE_LIBXXSHM) */ + return E_UNEXPECTED; +#endif /* defined(HAVE_LIBXXSHM) */ +} + +static HRESULT WINAPI Xlib_IDirectDraw_CreateSurface( + LPDIRECTDRAW this,LPDDSURFACEDESC lpddsd,LPDIRECTDRAWSURFACE *lpdsf,IUnknown *lpunk +) { + XImage *img; + TRACE(ddraw, "(%p)->CreateSurface(%p,%p,%p)\n", + this,lpddsd,lpdsf,lpunk); + if (TRACE_ON(ddraw)) { + fprintf(stderr,"[w=%ld,h=%ld,flags ",lpddsd->dwWidth,lpddsd->dwHeight); + _dump_DDSD(lpddsd->dwFlags); + fprintf(stderr,"caps "); + _dump_DDSCAPS(lpddsd->ddsCaps.dwCaps); + fprintf(stderr,"]\n"); + } + + *lpdsf = (LPDIRECTDRAWSURFACE)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(IDirectDrawSurface)); + this->lpvtbl->fnAddRef(this); + (*lpdsf)->ref = 1; + (*lpdsf)->lpvtbl = &xlib_ddsvt; + TRACE(ddraw,"using standard XImage for a primary surface\n"); + /* POOLE FIXME: Xlib: this will easily break */ + (*lpdsf)->t.xshm.surface_is_image_data = TRUE; + (*lpdsf)->s.surface = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,640*480); + (*lpdsf)->t.xlib.image = img = + XCreateImage(display, /*FIXME:visual*/0, /*FIXME: depth*/8, ZPixmap, + 0, (*lpdsf)->s.surface, + /*FIXME:width*/640, /*FIXME:height*/480, 0, 640*1); + /* END FIXME: Xlib */ + (*lpdsf)->s.lpitch = img->bytes_per_line; + (*lpdsf)->s.width = img->width; + (*lpdsf)->s.height = img->height; + (*lpdsf)->s.ddraw = this; + (*lpdsf)->s.backbuffer = NULL; + return 0; } static HRESULT WINAPI IDirectDraw_DuplicateSurface( @@ -1274,9 +2046,10 @@ static HRESULT WINAPI IDirectDraw_SetCooperativeLevel( } -static HRESULT WINAPI IDirectDraw_SetDisplayMode( +static HRESULT WINAPI DGA_IDirectDraw_SetDisplayMode( LPDIRECTDRAW this,DWORD width,DWORD height,DWORD depth ) { +#ifdef HAVE_LIBXXF86DGA int i,*depths,depcount; TRACE(ddraw, "(%p)->(%ld,%ld,%ld)\n", @@ -1291,15 +2064,15 @@ static HRESULT WINAPI IDirectDraw_SetDisplayMode( ERR(ddraw,"(w=%ld,h=%ld,d=%ld), unsupported depth!\n",width,height,depth); return DDERR_UNSUPPORTEDMODE; } - if (this->d.fb_width < width) { - ERR(ddraw,"SetDisplayMode(w=%ld,h=%ld,d=%ld), width %ld exceeds framebuffer width %ld\n",width,height,depth,width,this->d.fb_width); + if (this->e.dga.fb_width < width) { + ERR(ddraw,"SetDisplayMode(w=%ld,h=%ld,d=%ld), width %ld exceeds framebuffer width %ld\n",width,height,depth,width,this->e.dga.fb_width); return DDERR_UNSUPPORTEDMODE; } this->d.width = width; this->d.height = height; /* adjust fb_height, so we don't overlap */ - if (this->d.fb_height < height) - this->d.fb_height = height; + if (this->e.dga.fb_height < height) + this->e.dga.fb_height = height; this->d.depth = depth; /* FIXME: this function OVERWRITES several signal handlers. @@ -1315,21 +2088,140 @@ static HRESULT WINAPI IDirectDraw_SetDisplayMode( SIGNAL_InitEmulator(); #endif return 0; +#else /* defined(HAVE_LIBXXF86DGA) */ + return E_UNEXPECTED +#endif /* defined(HAVE_LIBXXF86DGA) */ } -static HRESULT WINAPI IDirectDraw_GetCaps( +static HRESULT WINAPI XShm_IDirectDraw_SetDisplayMode( + LPDIRECTDRAW this,DWORD width,DWORD height,DWORD depth +) { +#ifdef HAVE_LIBXXSHM + int i,*depths,depcount; + char buf[200]; + + TRACE(ddraw, "(%p)->SetDisplayMode(%ld,%ld,%ld)\n", + this, width, height, depth); + + depths = TSXListDepths(display,DefaultScreen(display),&depcount); + for (i=0;ie.dga.fb_width < width) { + sprintf(buf,"SetDisplayMode(w=%ld,h=%ld,d=%ld), width %ld exceeds framebuffer width %ld",width,height,depth,width,this->e.dga.fb_width); + MessageBox32A(0,buf,"WINE DirectDraw",MB_OK|MB_ICONSTOP); + return DDERR_UNSUPPORTEDMODE; + } + this->d.width = width; + this->d.height = height; + /* adjust fb_height, so we don't overlap */ + if (this->e.dga.fb_height < height) + this->e.dga.fb_height = height; + this->d.depth = depth; + /* END FIXME: XShm */ + return 0; +#else /* defined(HAVE_LIBXXSHM) */ + return E_UNEXPECTED; +#endif /* defined(HAVE_LIBXXSHM) */ +} + +static HRESULT WINAPI Xlib_IDirectDraw_SetDisplayMode( + LPDIRECTDRAW this,DWORD width,DWORD height,DWORD depth +) { + int i,*depths,depcount; + char buf[200]; + + TRACE(ddraw, "(%p)->SetDisplayMode(%ld,%ld,%ld)\n", + this, width, height, depth); + + depths = TSXListDepths(display,DefaultScreen(display),&depcount); + for (i=0;ie.dga.fb_width < width) { + sprintf(buf,"SetDisplayMode(w=%ld,h=%ld,d=%ld), width %ld exceeds framebuffer width %ld",width,height,depth,width,this->e.dga.fb_width); + MessageBox32A(0,buf,"WINE DirectDraw",MB_OK|MB_ICONSTOP); + return DDERR_UNSUPPORTEDMODE; + } + this->d.width = width; + this->d.height = height; + /* adjust fb_height, so we don't overlap */ + if (this->e.dga.fb_height < height) + this->e.dga.fb_height = height; + this->d.depth = depth; + /* END FIXME: Xlib */ + return 0; +} + +static HRESULT WINAPI DGA_IDirectDraw_GetCaps( LPDIRECTDRAW this,LPDDCAPS caps1,LPDDCAPS caps2 -) { - TRACE(ddraw,"(%p)->(%p,%p)\n",this,caps1,caps2); - caps1->dwVidMemTotal = this->d.fb_memsize; +) { +#ifdef HAVE_LIBXXF86DGA + TRACE(ddraw,"(%p)->GetCaps(%p,%p)\n",this,caps1,caps2); + caps1->dwVidMemTotal = this->e.dga.fb_memsize; caps1->dwCaps = 0xffffffff&~(DDCAPS_BANKSWITCHED); /* we can do anything */ caps1->ddsCaps.dwCaps = 0xffffffff; /* we can do anything */ if (caps2) { - caps2->dwVidMemTotal = this->d.fb_memsize; + caps2->dwVidMemTotal = this->e.dga.fb_memsize; caps2->dwCaps = 0xffffffff&~(DDCAPS_BANKSWITCHED); /* we can do anything */ caps2->ddsCaps.dwCaps = 0xffffffff; /* we can do anything */ } return 0; +#else /* defined(HAVE_LIBXXF86DGA) */ + return E_UNEXPECTED; +#endif /* defined(HAVE_LIBXXF86DGA) */ +} + +static HRESULT WINAPI XShm_IDirectDraw_GetCaps( + LPDIRECTDRAW this,LPDDCAPS caps1,LPDDCAPS caps2 +) { +#ifdef HAVE_LIBXXSHM + TRACE(ddraw,"(%p)->GetCaps(%p,%p)\n",this,caps1,caps2); + /* FIXME: XShm */ + caps1->dwVidMemTotal = 2048*1024; + caps1->dwCaps = 0xffffffff&~(DDCAPS_BANKSWITCHED); /* we can do anything */ + caps1->ddsCaps.dwCaps = 0xffffffff; /* we can do anything */ + if (caps2) { + caps2->dwVidMemTotal = 2048*1024; + caps2->dwCaps = 0xffffffff&~(DDCAPS_BANKSWITCHED); /* we can do anything */ + caps2->ddsCaps.dwCaps = 0xffffffff; /* we can do anything */ + } + /* END FIXME: XShm */ + return 0; +#else /* defined(HAVE_LIBXXSHM) */ + return E_UNEXPECTED; +#endif /* defined(HAVE_LIBXXSHM) */ +} + +static HRESULT WINAPI Xlib_IDirectDraw_GetCaps( + LPDIRECTDRAW this,LPDDCAPS caps1,LPDDCAPS caps2 +) { + TRACE(ddraw,"(%p)->GetCaps(%p,%p)\n",this,caps1,caps2); + /* FIXME: Xlib */ + caps1->dwVidMemTotal = 2048*1024; + caps1->dwCaps = 0xffffffff&~(DDCAPS_BANKSWITCHED); /* we can do anything */ + caps1->ddsCaps.dwCaps = 0xffffffff; /* we can do anything */ + if (caps2) { + caps2->dwVidMemTotal = 2048*1024; + caps2->dwCaps = 0xffffffff&~(DDCAPS_BANKSWITCHED); /* we can do anything */ + caps2->ddsCaps.dwCaps = 0xffffffff; /* we can do anything */ + } + /* END FIXME: Xlib */ + return 0; } static HRESULT WINAPI IDirectDraw_CreateClipper( @@ -1344,25 +2236,63 @@ static HRESULT WINAPI IDirectDraw_CreateClipper( return 0; } -static HRESULT WINAPI IDirectDraw_CreatePalette( +static HRESULT WINAPI common_IDirectDraw_CreatePalette( LPDIRECTDRAW this,DWORD x,LPPALETTEENTRY palent,LPDIRECTDRAWPALETTE *lpddpal,LPUNKNOWN lpunk ) { - TRACE(ddraw,"(%p)->(%08lx,%p,%p,%p)\n", - this,x,palent,lpddpal,lpunk - ); *lpddpal = (LPDIRECTDRAWPALETTE)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(IDirectDrawPalette)); + if (*lpddpal == NULL) return E_OUTOFMEMORY; (*lpddpal)->ref = 1; - (*lpddpal)->lpvtbl = &ddpalvt; (*lpddpal)->ddraw = this; if (this->d.depth<=8) { (*lpddpal)->cm = TSXCreateColormap(display,DefaultRootWindow(display),DefaultVisualOfScreen(screen),AllocAll); - } else /* we don't want palettes in hicolor or truecolor */ + } else { + /* we don't want palettes in hicolor or truecolor */ (*lpddpal)->cm = 0; - + } return 0; } -static HRESULT WINAPI IDirectDraw_RestoreDisplayMode(LPDIRECTDRAW this) { +static HRESULT WINAPI DGA_IDirectDraw_CreatePalette( + LPDIRECTDRAW this,DWORD x,LPPALETTEENTRY palent,LPDIRECTDRAWPALETTE *lpddpal,LPUNKNOWN lpunk +) { + HRESULT res; + TRACE(ddraw,"(%p)->(%08lx,%p,%p,%p)\n", + this,x,palent,lpddpal,lpunk + ); + res = common_IDirectDraw_CreatePalette(this,x,palent,lpddpal,lpunk); + if (res != 0) return res; + (*lpddpal)->lpvtbl = &dga_ddpalvt; + return 0; +} + +static HRESULT WINAPI XShm_IDirectDraw_CreatePalette( + LPDIRECTDRAW this,DWORD x,LPPALETTEENTRY palent,LPDIRECTDRAWPALETTE *lpddpal,LPUNKNOWN lpunk +) { + HRESULT res; + TRACE(ddraw,"(%p)->(%08lx,%p,%p,%p)\n", + this,x,palent,lpddpal,lpunk + ); + res = common_IDirectDraw_CreatePalette(this,x,palent,lpddpal,lpunk); + if (res != 0) return res; + (*lpddpal)->lpvtbl = &xshm_ddpalvt; + return 0; +} + +static HRESULT WINAPI Xlib_IDirectDraw_CreatePalette( + LPDIRECTDRAW this,DWORD x,LPPALETTEENTRY palent,LPDIRECTDRAWPALETTE *lpddpal,LPUNKNOWN lpunk +) { + HRESULT res; + TRACE(ddraw,"(%p)->(%08lx,%p,%p,%p)\n", + this,x,palent,lpddpal,lpunk + ); + res = common_IDirectDraw_CreatePalette(this,x,palent,lpddpal,lpunk); + if (res != 0) return res; + (*lpddpal)->lpvtbl = &xlib_ddpalvt; + return 0; +} + +static HRESULT WINAPI DGA_IDirectDraw_RestoreDisplayMode(LPDIRECTDRAW this) { +#ifdef HAVE_LIBXXF86DGA TRACE(ddraw, "(%p)->()\n", this); Sleep(1000); @@ -1371,8 +2301,27 @@ static HRESULT WINAPI IDirectDraw_RestoreDisplayMode(LPDIRECTDRAW this) { SIGNAL_InitEmulator(); #endif return 0; +#else /* defined(HAVE_LIBXXF86DGA) */ + return E_UNEXPECTED; +#endif } +static HRESULT WINAPI XShm_IDirectDraw_RestoreDisplayMode(LPDIRECTDRAW this) { +#ifdef HAVE_LIBXXF86DGA + TRACE(ddraw, "(%p)->RestoreDisplayMode()\n", + this); + Sleep(1000); + return 0; +#else /* defined(HAVE_LIBXXF86DGA) */ + return E_UNEXPECTED; +#endif +} + +static HRESULT WINAPI Xlib_IDirectDraw_RestoreDisplayMode(LPDIRECTDRAW this) { + TRACE(ddraw, "(%p)->RestoreDisplayMode()\n", + this); + return 0; +} static HRESULT WINAPI IDirectDraw_WaitForVerticalBlank( LPDIRECTDRAW this,DWORD x,HANDLE32 h @@ -1385,7 +2334,8 @@ static ULONG WINAPI IDirectDraw_AddRef(LPDIRECTDRAW this) { return ++(this->ref); } -static ULONG WINAPI IDirectDraw_Release(LPDIRECTDRAW this) { +static ULONG WINAPI DGA_IDirectDraw_Release(LPDIRECTDRAW this) { +#ifdef HAVE_LIBXXF86DGA if (!--(this->ref)) { XF86DGADirectVideo(display,DefaultScreen(display),0); #ifdef RESTORE_SIGNALS @@ -1394,32 +2344,149 @@ static ULONG WINAPI IDirectDraw_Release(LPDIRECTDRAW this) { HeapFree(GetProcessHeap(),0,this); return 0; } +#endif /* defined(HAVE_LIBXXF86DGA) */ return this->ref; } -static HRESULT WINAPI IDirectDraw_QueryInterface( +static ULONG WINAPI XShm_IDirectDraw_Release(LPDIRECTDRAW this) { +#ifdef HAVE_LIBXXSHM + if (!--(this->ref)) { + HeapFree(GetProcessHeap(),0,this); + return 0; + } +#endif /* defined(HAVE_LIBXXSHM) */ + return this->ref; +} + +static ULONG WINAPI Xlib_IDirectDraw_Release(LPDIRECTDRAW this) { + if (!--(this->ref)) { + HeapFree(GetProcessHeap(),0,this); + return 0; + } + return this->ref; +} + +static HRESULT WINAPI DGA_IDirectDraw_QueryInterface( LPDIRECTDRAW this,REFIID refiid,LPVOID *obj ) { - char xrefiid[50]; + char xrefiid[50]; - WINE_StringFromCLSID((LPCLSID)refiid,xrefiid); - TRACE(ddraw,"(%p)->(%s,%p)\n",this,xrefiid,obj); - if (!memcmp(&IID_IUnknown,refiid,sizeof(IID_IUnknown))) { - *obj = this; + WINE_StringFromCLSID((LPCLSID)refiid,xrefiid); + TRACE(ddraw,"(%p)->(%s,%p)\n",this,xrefiid,obj); + if (!memcmp(&IID_IUnknown,refiid,sizeof(IID_IUnknown))) { + *obj = this; this->lpvtbl->fnAddRef(this); - return 0; - } - if (!memcmp(&IID_IDirectDraw,refiid,sizeof(IID_IDirectDraw))) { - *obj = this; + return 0; + } + if (!memcmp(&IID_IDirectDraw,refiid,sizeof(IID_IDirectDraw))) { + *obj = this; this->lpvtbl->fnAddRef(this); - return 0; - } - if (!memcmp(&IID_IDirectDraw2,refiid,sizeof(IID_IDirectDraw2))) { - this->lpvtbl = (LPDIRECTDRAW_VTABLE)&dd2vt; + return 0; + } + if (!memcmp(&IID_IDirectDraw2,refiid,sizeof(IID_IDirectDraw2))) { + this->lpvtbl = (LPDIRECTDRAW_VTABLE)&dga_dd2vt; this->lpvtbl->fnAddRef(this); - *obj = this; - return 0; - } + *obj = this; + return 0; + } + if (!memcmp(&IID_IDirect3D,refiid,sizeof(IID_IDirect3D))) { + LPDIRECT3D d3d; + + d3d = HeapAlloc(GetProcessHeap(),0,sizeof(*d3d)); + d3d->ref = 1; + d3d->ddraw = this; + this->lpvtbl->fnAddRef(this); + d3d->lpvtbl = &d3dvt; + *obj = d3d; + return 0; + } + if (!memcmp(&IID_IDirect3D2,refiid,sizeof(IID_IDirect3D))) { + LPDIRECT3D2 d3d; + + d3d = HeapAlloc(GetProcessHeap(),0,sizeof(*d3d)); + d3d->ref = 1; + d3d->ddraw = this; + this->lpvtbl->fnAddRef(this); + d3d->lpvtbl = &d3d2vt; + *obj = d3d; + return 0; + } + WARN(ddraw,"(%p):interface for IID %s _NOT_ found!\n",this,xrefiid); + return OLE_E_ENUM_NOMORE; +} + +static HRESULT WINAPI XShm_IDirectDraw_QueryInterface( + LPDIRECTDRAW this,REFIID refiid,LPVOID *obj + ) { + char xrefiid[50]; + + WINE_StringFromCLSID((LPCLSID)refiid,xrefiid); + TRACE(ddraw,"(%p)->(%s,%p)\n",this,xrefiid,obj); + if (!memcmp(&IID_IUnknown,refiid,sizeof(IID_IUnknown))) { + *obj = this; + this->lpvtbl->fnAddRef(this); + return 0; + } + if (!memcmp(&IID_IDirectDraw,refiid,sizeof(IID_IDirectDraw))) { + *obj = this; + this->lpvtbl->fnAddRef(this); + return 0; + } + if (!memcmp(&IID_IDirectDraw2,refiid,sizeof(IID_IDirectDraw2))) { + this->lpvtbl = (LPDIRECTDRAW_VTABLE)&xshm_dd2vt; + this->lpvtbl->fnAddRef(this); + *obj = this; + return 0; + } + if (!memcmp(&IID_IDirect3D,refiid,sizeof(IID_IDirect3D))) { + LPDIRECT3D d3d; + + d3d = HeapAlloc(GetProcessHeap(),0,sizeof(*d3d)); + d3d->ref = 1; + d3d->ddraw = this; + this->lpvtbl->fnAddRef(this); + d3d->lpvtbl = &d3dvt; + *obj = d3d; + return 0; + } + if (!memcmp(&IID_IDirect3D2,refiid,sizeof(IID_IDirect3D))) { + LPDIRECT3D2 d3d; + + d3d = HeapAlloc(GetProcessHeap(),0,sizeof(*d3d)); + d3d->ref = 1; + d3d->ddraw = this; + this->lpvtbl->fnAddRef(this); + d3d->lpvtbl = &d3d2vt; + *obj = d3d; + return 0; + } + WARN(ddraw,"(%p):interface for IID %s _NOT_ found!\n",this,xrefiid); + return OLE_E_ENUM_NOMORE; +} + +static HRESULT WINAPI Xlib_IDirectDraw_QueryInterface( + LPDIRECTDRAW this,REFIID refiid,LPVOID *obj +) { + char xrefiid[50]; + + WINE_StringFromCLSID((LPCLSID)refiid,xrefiid); + TRACE(ddraw,"(%p)->(%s,%p)\n",this,xrefiid,obj); + if (!memcmp(&IID_IUnknown,refiid,sizeof(IID_IUnknown))) { + *obj = this; + this->lpvtbl->fnAddRef(this); + return 0; + } + if (!memcmp(&IID_IDirectDraw,refiid,sizeof(IID_IDirectDraw))) { + *obj = this; + this->lpvtbl->fnAddRef(this); + return 0; + } + if (!memcmp(&IID_IDirectDraw2,refiid,sizeof(IID_IDirectDraw2))) { + this->lpvtbl = (LPDIRECTDRAW_VTABLE)&xlib_dd2vt; + this->lpvtbl->fnAddRef(this); + *obj = this; + return 0; + } if (!memcmp(&IID_IDirect3D,refiid,sizeof(IID_IDirect3D))) { LPDIRECT3D d3d; @@ -1461,7 +2528,6 @@ static HRESULT WINAPI IDirectDraw_EnumDisplayModes( TRACE(ddraw,"(%p)->(0x%08lx,%p,%p,%p)\n",this,dwFlags,lpddsfd,context,modescb); - _getpixelformat(this,&(ddsfd.ddpfPixelFormat)); ddsfd.dwSize = sizeof(ddsfd); ddsfd.dwFlags = DDSD_HEIGHT|DDSD_WIDTH|DDSD_BACKBUFFERCOUNT|DDSD_PIXELFORMAT|DDSD_CAPS; @@ -1491,14 +2557,56 @@ static HRESULT WINAPI IDirectDraw_EnumDisplayModes( return DD_OK; } -static HRESULT WINAPI IDirectDraw_GetDisplayMode( +static HRESULT WINAPI DGA_IDirectDraw_GetDisplayMode( LPDIRECTDRAW this,LPDDSURFACEDESC lpddsfd ) { +#ifdef HAVE_LIBXXF86DGA TRACE(ddraw,"(%p)->(%p)\n",this,lpddsfd); lpddsfd->dwFlags = DDSD_HEIGHT|DDSD_WIDTH|DDSD_PITCH|DDSD_BACKBUFFERCOUNT|DDSD_PIXELFORMAT|DDSD_CAPS; lpddsfd->dwHeight = screenHeight; lpddsfd->dwWidth = screenWidth; - lpddsfd->lPitch = this->d.fb_width*this->d.depth/8; + lpddsfd->lPitch = this->e.dga.fb_width*this->d.depth/8; + lpddsfd->dwBackBufferCount = 1; + lpddsfd->x.dwRefreshRate = 60; + lpddsfd->ddsCaps.dwCaps = DDSCAPS_PALETTE; + _getpixelformat(this,&(lpddsfd->ddpfPixelFormat)); + return DD_OK; +#else /* defined(HAVE_LIBXXF86DGA) */ + return E_UNEXPECTED; +#endif /* defined(HAVE_LIBXXF86DGA) */ +} + +static HRESULT WINAPI XShm_IDirectDraw_GetDisplayMode( + LPDIRECTDRAW this,LPDDSURFACEDESC lpddsfd +) { +#ifdef HAVE_LIBXXSM + TRACE(ddraw,"(%p)->GetDisplayMode(%p)\n",this,lpddsfd); + lpddsfd->dwFlags = DDSD_HEIGHT|DDSD_WIDTH|DDSD_PITCH|DDSD_BACKBUFFERCOUNT|DDSD_PIXELFORMAT|DDSD_CAPS; + lpddsfd->dwHeight = screenHeight; + lpddsfd->dwWidth = screenWidth; + /* POOLE FIXME: XShm */ + lpddsfd->lPitch = this->e.dga.fb_width*this->d.depth/8; + /* END FIXME: XShm */ + lpddsfd->dwBackBufferCount = 1; + lpddsfd->x.dwRefreshRate = 60; + lpddsfd->ddsCaps.dwCaps = DDSCAPS_PALETTE; + _getpixelformat(this,&(lpddsfd->ddpfPixelFormat)); + return DD_OK; +#else /* defined(HAVE_LIBXXSHM) */ + return E_UNEXPECTED; +#endif /* defined(HAVE_LIBXXSHM) */ +} + +static HRESULT WINAPI Xlib_IDirectDraw_GetDisplayMode( + LPDIRECTDRAW this,LPDDSURFACEDESC lpddsfd +) { + TRACE(ddraw,"(%p)->GetDisplayMode(%p)\n",this,lpddsfd); + lpddsfd->dwFlags = DDSD_HEIGHT|DDSD_WIDTH|DDSD_PITCH|DDSD_BACKBUFFERCOUNT|DDSD_PIXELFORMAT|DDSD_CAPS; + lpddsfd->dwHeight = screenHeight; + lpddsfd->dwWidth = screenWidth; + /* POOLE FIXME: Xlib */ + lpddsfd->lPitch = this->e.dga.fb_width*this->d.depth/8; + /* END FIXME: Xlib */ lpddsfd->dwBackBufferCount = 1; lpddsfd->x.dwRefreshRate = 60; lpddsfd->ddsCaps.dwCaps = DDSCAPS_PALETTE; @@ -1527,29 +2635,81 @@ static HRESULT WINAPI IDirectDraw_GetFourCCCodes( return 0; } -static IDirectDraw_VTable ddvt = { - IDirectDraw_QueryInterface, +static struct IDirectDraw_VTable dga_ddvt = { + DGA_IDirectDraw_QueryInterface, IDirectDraw_AddRef, - IDirectDraw_Release, + DGA_IDirectDraw_Release, (void*)4, IDirectDraw_CreateClipper, - IDirectDraw_CreatePalette, - IDirectDraw_CreateSurface, + DGA_IDirectDraw_CreatePalette, + DGA_IDirectDraw_CreateSurface, IDirectDraw_DuplicateSurface, IDirectDraw_EnumDisplayModes, (void*)10, IDirectDraw_FlipToGDISurface, - IDirectDraw_GetCaps, - IDirectDraw_GetDisplayMode, + DGA_IDirectDraw_GetCaps, + DGA_IDirectDraw_GetDisplayMode, IDirectDraw_GetFourCCCodes, (void*)15, IDirectDraw_GetMonitorFrequency, (void*)17, IDirectDraw_GetVerticalBlankStatus, (void*)19, - IDirectDraw_RestoreDisplayMode, + DGA_IDirectDraw_RestoreDisplayMode, IDirectDraw_SetCooperativeLevel, - IDirectDraw_SetDisplayMode, + DGA_IDirectDraw_SetDisplayMode, + IDirectDraw_WaitForVerticalBlank, +}; + +static struct IDirectDraw_VTable xshm_ddvt = { + XShm_IDirectDraw_QueryInterface, + IDirectDraw_AddRef, + XShm_IDirectDraw_Release, + (void*)4, + IDirectDraw_CreateClipper, + XShm_IDirectDraw_CreatePalette, + XShm_IDirectDraw_CreateSurface, + IDirectDraw_DuplicateSurface, + IDirectDraw_EnumDisplayModes, + (void*)10, + IDirectDraw_FlipToGDISurface, + XShm_IDirectDraw_GetCaps, + XShm_IDirectDraw_GetDisplayMode, + IDirectDraw_GetFourCCCodes, + (void*)15, + IDirectDraw_GetMonitorFrequency, + (void*)17, + IDirectDraw_GetVerticalBlankStatus, + (void*)19, + XShm_IDirectDraw_RestoreDisplayMode, + IDirectDraw_SetCooperativeLevel, + XShm_IDirectDraw_SetDisplayMode, + IDirectDraw_WaitForVerticalBlank, +}; + +static struct IDirectDraw_VTable xlib_ddvt = { + Xlib_IDirectDraw_QueryInterface, + IDirectDraw_AddRef, + Xlib_IDirectDraw_Release, + (void*)4, + IDirectDraw_CreateClipper, + Xlib_IDirectDraw_CreatePalette, + Xlib_IDirectDraw_CreateSurface, + IDirectDraw_DuplicateSurface, + IDirectDraw_EnumDisplayModes, + (void*)10, + IDirectDraw_FlipToGDISurface, + Xlib_IDirectDraw_GetCaps, + Xlib_IDirectDraw_GetDisplayMode, + IDirectDraw_GetFourCCCodes, + (void*)15, + IDirectDraw_GetMonitorFrequency, + (void*)17, + IDirectDraw_GetVerticalBlankStatus, + (void*)19, + Xlib_IDirectDraw_RestoreDisplayMode, + IDirectDraw_SetCooperativeLevel, + Xlib_IDirectDraw_SetDisplayMode, IDirectDraw_WaitForVerticalBlank, }; @@ -1563,30 +2723,74 @@ static HRESULT WINAPI IDirectDraw2_CreateClipper( return IDirectDraw_CreateClipper((LPDIRECTDRAW)this,x,lpddclip,lpunk); } -static HRESULT WINAPI IDirectDraw2_CreateSurface( +static HRESULT WINAPI DGA_IDirectDraw2_CreateSurface( LPDIRECTDRAW2 this,LPDDSURFACEDESC lpddsd,LPDIRECTDRAWSURFACE *lpdsf,IUnknown *lpunk ) { - return IDirectDraw_CreateSurface((LPDIRECTDRAW)this,lpddsd,(LPDIRECTDRAWSURFACE*)lpdsf,lpunk); + return DGA_IDirectDraw_CreateSurface((LPDIRECTDRAW)this,lpddsd,(LPDIRECTDRAWSURFACE*)lpdsf,lpunk); } -static HRESULT WINAPI IDirectDraw2_QueryInterface( +static HRESULT WINAPI XShm_IDirectDraw2_CreateSurface( + LPDIRECTDRAW2 this,LPDDSURFACEDESC lpddsd,LPDIRECTDRAWSURFACE *lpdsf,IUnknown *lpunk +) { + return XShm_IDirectDraw_CreateSurface((LPDIRECTDRAW)this,lpddsd,(LPDIRECTDRAWSURFACE*)lpdsf,lpunk); +} + +static HRESULT WINAPI Xlib_IDirectDraw2_CreateSurface( + LPDIRECTDRAW2 this,LPDDSURFACEDESC lpddsd,LPDIRECTDRAWSURFACE *lpdsf,IUnknown *lpunk +) { + return Xlib_IDirectDraw_CreateSurface((LPDIRECTDRAW)this,lpddsd,(LPDIRECTDRAWSURFACE*)lpdsf,lpunk); +} + +static HRESULT WINAPI DGA_IDirectDraw2_QueryInterface( LPDIRECTDRAW2 this,REFIID refiid,LPVOID *obj ) { - return IDirectDraw_QueryInterface((LPDIRECTDRAW)this,refiid,obj); + return DGA_IDirectDraw_QueryInterface((LPDIRECTDRAW)this,refiid,obj); +} + +static HRESULT WINAPI XShm_IDirectDraw2_QueryInterface( + LPDIRECTDRAW2 this,REFIID refiid,LPVOID *obj +) { + return XShm_IDirectDraw_QueryInterface((LPDIRECTDRAW)this,refiid,obj); +} + +static HRESULT WINAPI Xlib_IDirectDraw2_QueryInterface( + LPDIRECTDRAW2 this,REFIID refiid,LPVOID *obj +) { + return Xlib_IDirectDraw_QueryInterface((LPDIRECTDRAW)this,refiid,obj); } static ULONG WINAPI IDirectDraw2_AddRef(LPDIRECTDRAW2 this) { return IDirectDraw_AddRef((LPDIRECTDRAW)this); } -static ULONG WINAPI IDirectDraw2_Release(LPDIRECTDRAW2 this) { - return IDirectDraw_Release((LPDIRECTDRAW)this); +static ULONG WINAPI DGA_IDirectDraw2_Release(LPDIRECTDRAW2 this) { + return DGA_IDirectDraw_Release((LPDIRECTDRAW)this); } -static HRESULT WINAPI IDirectDraw2_GetCaps( +static ULONG WINAPI XShm_IDirectDraw2_Release(LPDIRECTDRAW2 this) { + return XShm_IDirectDraw_Release((LPDIRECTDRAW)this); +} + +static ULONG WINAPI Xlib_IDirectDraw2_Release(LPDIRECTDRAW2 this) { + return Xlib_IDirectDraw_Release((LPDIRECTDRAW)this); +} + +static HRESULT WINAPI DGA_IDirectDraw2_GetCaps( LPDIRECTDRAW2 this,LPDDCAPS caps1,LPDDCAPS caps2 ) { - return IDirectDraw_GetCaps((LPDIRECTDRAW)this,caps1,caps2); + return DGA_IDirectDraw_GetCaps((LPDIRECTDRAW)this,caps1,caps2); +} + +static HRESULT WINAPI XShm_IDirectDraw2_GetCaps( + LPDIRECTDRAW2 this,LPDDCAPS caps1,LPDDCAPS caps2 +) { + return XShm_IDirectDraw_GetCaps((LPDIRECTDRAW)this,caps1,caps2); +} + +static HRESULT WINAPI Xlib_IDirectDraw2_GetCaps( + LPDIRECTDRAW2 this,LPDDCAPS caps1,LPDDCAPS caps2 +) { + return Xlib_IDirectDraw_GetCaps((LPDIRECTDRAW)this,caps1,caps2); } static HRESULT WINAPI IDirectDraw2_SetCooperativeLevel( @@ -1595,24 +2799,52 @@ static HRESULT WINAPI IDirectDraw2_SetCooperativeLevel( return IDirectDraw_SetCooperativeLevel((LPDIRECTDRAW)this,hwnd,x); } -static HRESULT WINAPI IDirectDraw2_CreatePalette( +static HRESULT WINAPI DGA_IDirectDraw2_CreatePalette( LPDIRECTDRAW2 this,DWORD x,LPPALETTEENTRY palent,LPDIRECTDRAWPALETTE *lpddpal,LPUNKNOWN lpunk ) { - return IDirectDraw_CreatePalette((LPDIRECTDRAW)this,x,palent,lpddpal,lpunk); + return DGA_IDirectDraw_CreatePalette((LPDIRECTDRAW)this,x,palent,lpddpal,lpunk); } +static HRESULT WINAPI XShm_IDirectDraw2_CreatePalette( + LPDIRECTDRAW2 this,DWORD x,LPPALETTEENTRY palent,LPDIRECTDRAWPALETTE *lpddpal,LPUNKNOWN lpunk +) { + return XShm_IDirectDraw_CreatePalette((LPDIRECTDRAW)this,x,palent,lpddpal,lpunk); +} -static HRESULT WINAPI IDirectDraw2_SetDisplayMode( +static HRESULT WINAPI Xlib_IDirectDraw2_CreatePalette( + LPDIRECTDRAW2 this,DWORD x,LPPALETTEENTRY palent,LPDIRECTDRAWPALETTE *lpddpal,LPUNKNOWN lpunk +) { + return Xlib_IDirectDraw_CreatePalette((LPDIRECTDRAW)this,x,palent,lpddpal,lpunk); +} + +static HRESULT WINAPI DGA_IDirectDraw2_SetDisplayMode( LPDIRECTDRAW2 this,DWORD width,DWORD height,DWORD depth,DWORD xx,DWORD yy ) { - TRACE(ddraw,"(%p)->(%ld,%ld,%ld,%08lx,%08lx)\n", - this, width, height, depth, xx, yy); - - return IDirectDraw_SetDisplayMode((LPDIRECTDRAW)this,width,height,depth); + return DGA_IDirectDraw_SetDisplayMode((LPDIRECTDRAW)this,width,height,depth); } -static HRESULT WINAPI IDirectDraw2_RestoreDisplayMode(LPDIRECTDRAW2 this) { - return IDirectDraw_RestoreDisplayMode((LPDIRECTDRAW)this); +static HRESULT WINAPI XShm_IDirectDraw2_SetDisplayMode( + LPDIRECTDRAW2 this,DWORD width,DWORD height,DWORD depth,DWORD xx,DWORD yy +) { + return XShm_IDirectDraw_SetDisplayMode((LPDIRECTDRAW)this,width,height,depth); +} + +static HRESULT WINAPI Xlib_IDirectDraw2_SetDisplayMode( + LPDIRECTDRAW2 this,DWORD width,DWORD height,DWORD depth,DWORD xx,DWORD yy +) { + return Xlib_IDirectDraw_SetDisplayMode((LPDIRECTDRAW)this,width,height,depth); +} + +static HRESULT WINAPI DGA_IDirectDraw2_RestoreDisplayMode(LPDIRECTDRAW2 this) { + return DGA_IDirectDraw_RestoreDisplayMode((LPDIRECTDRAW)this); +} + +static HRESULT WINAPI XShm_IDirectDraw2_RestoreDisplayMode(LPDIRECTDRAW2 this) { + return XShm_IDirectDraw_RestoreDisplayMode((LPDIRECTDRAW)this); +} + +static HRESULT WINAPI Xlib_IDirectDraw2_RestoreDisplayMode(LPDIRECTDRAW2 this) { + return Xlib_IDirectDraw_RestoreDisplayMode((LPDIRECTDRAW)this); } static HRESULT WINAPI IDirectDraw2_EnumSurfaces( @@ -1628,20 +2860,43 @@ static HRESULT WINAPI IDirectDraw2_EnumDisplayModes( return IDirectDraw_EnumDisplayModes((LPDIRECTDRAW)this,dwFlags,lpddsfd,context,modescb); } -static HRESULT WINAPI IDirectDraw2_GetDisplayMode( +static HRESULT WINAPI DGA_IDirectDraw2_GetDisplayMode( LPDIRECTDRAW2 this,LPDDSURFACEDESC lpddsfd ) { - return IDirectDraw_GetDisplayMode((LPDIRECTDRAW)this,lpddsfd); + return DGA_IDirectDraw_GetDisplayMode((LPDIRECTDRAW)this,lpddsfd); } -static HRESULT WINAPI IDirectDraw2_GetAvailableVidMem( +static HRESULT WINAPI XShm_IDirectDraw2_GetDisplayMode( + LPDIRECTDRAW2 this,LPDDSURFACEDESC lpddsfd +) { + return XShm_IDirectDraw_GetDisplayMode((LPDIRECTDRAW)this,lpddsfd); +} + +static HRESULT WINAPI Xlib_IDirectDraw2_GetDisplayMode( + LPDIRECTDRAW2 this,LPDDSURFACEDESC lpddsfd +) { + return Xlib_IDirectDraw_GetDisplayMode((LPDIRECTDRAW)this,lpddsfd); +} + +static HRESULT WINAPI DGA_IDirectDraw2_GetAvailableVidMem( LPDIRECTDRAW2 this,LPDDSCAPS ddscaps,LPDWORD total,LPDWORD free ) { TRACE(ddraw,"(%p)->(%p,%p,%p)\n", this,ddscaps,total,free ); - if (total) *total = this->d.fb_memsize * 1024; - if (free) *free = this->d.fb_memsize * 1024; + if (total) *total = this->e.dga.fb_memsize * 1024; + if (free) *free = this->e.dga.fb_memsize * 1024; + return 0; +} + +static HRESULT WINAPI Xlib_IDirectDraw2_GetAvailableVidMem( + LPDIRECTDRAW2 this,LPDDSCAPS ddscaps,LPDWORD total,LPDWORD free +) { + TRACE(ddraw,"(%p)->(%p,%p,%p)\n", + this,ddscaps,total,free + ); + if (total) *total = 2048 * 1024; + if (free) *free = 2048 * 1024; return 0; } @@ -1663,62 +2918,108 @@ static HRESULT WINAPI IDirectDraw2_WaitForVerticalBlank( return IDirectDraw_WaitForVerticalBlank((LPDIRECTDRAW)this,x,h); } -static IDirectDraw2_VTable dd2vt = { - IDirectDraw2_QueryInterface, +static IDirectDraw2_VTable dga_dd2vt = { + DGA_IDirectDraw2_QueryInterface, IDirectDraw2_AddRef, - IDirectDraw2_Release, + DGA_IDirectDraw2_Release, (void*)4, IDirectDraw2_CreateClipper, - IDirectDraw2_CreatePalette, - IDirectDraw2_CreateSurface, + DGA_IDirectDraw2_CreatePalette, + DGA_IDirectDraw2_CreateSurface, (void*)8, IDirectDraw2_EnumDisplayModes, IDirectDraw2_EnumSurfaces, (void*)11, - IDirectDraw2_GetCaps, - IDirectDraw2_GetDisplayMode, + DGA_IDirectDraw2_GetCaps, + DGA_IDirectDraw2_GetDisplayMode, (void*)14, (void*)15, IDirectDraw2_GetMonitorFrequency, (void*)17, IDirectDraw2_GetVerticalBlankStatus, (void*)19, - IDirectDraw2_RestoreDisplayMode, + DGA_IDirectDraw2_RestoreDisplayMode, IDirectDraw2_SetCooperativeLevel, - IDirectDraw2_SetDisplayMode, + DGA_IDirectDraw2_SetDisplayMode, IDirectDraw2_WaitForVerticalBlank, - IDirectDraw2_GetAvailableVidMem - + DGA_IDirectDraw2_GetAvailableVidMem +}; + +static IDirectDraw2_VTable xshm_dd2vt = { + XShm_IDirectDraw2_QueryInterface, + IDirectDraw2_AddRef, + XShm_IDirectDraw2_Release, + (void*)4, + IDirectDraw2_CreateClipper, + XShm_IDirectDraw2_CreatePalette, + XShm_IDirectDraw2_CreateSurface, + (void*)8, + IDirectDraw2_EnumDisplayModes, + IDirectDraw2_EnumSurfaces, + (void*)11, + XShm_IDirectDraw2_GetCaps, + XShm_IDirectDraw2_GetDisplayMode, + (void*)14, + (void*)15, + IDirectDraw2_GetMonitorFrequency, + (void*)17, + IDirectDraw2_GetVerticalBlankStatus, + (void*)19, + XShm_IDirectDraw2_RestoreDisplayMode, + IDirectDraw2_SetCooperativeLevel, + XShm_IDirectDraw2_SetDisplayMode, + IDirectDraw2_WaitForVerticalBlank, + Xlib_IDirectDraw2_GetAvailableVidMem +}; + +static struct IDirectDraw2_VTable xlib_dd2vt = { + Xlib_IDirectDraw2_QueryInterface, + IDirectDraw2_AddRef, + Xlib_IDirectDraw2_Release, + (void*)4, + IDirectDraw2_CreateClipper, + Xlib_IDirectDraw2_CreatePalette, + Xlib_IDirectDraw2_CreateSurface, + (void*)8, + IDirectDraw2_EnumDisplayModes, + IDirectDraw2_EnumSurfaces, + (void*)11, + Xlib_IDirectDraw2_GetCaps, + Xlib_IDirectDraw2_GetDisplayMode, + (void*)14, + (void*)15, + IDirectDraw2_GetMonitorFrequency, + (void*)17, + IDirectDraw2_GetVerticalBlankStatus, + (void*)19, + Xlib_IDirectDraw2_RestoreDisplayMode, + IDirectDraw2_SetCooperativeLevel, + Xlib_IDirectDraw2_SetDisplayMode, + IDirectDraw2_WaitForVerticalBlank, + Xlib_IDirectDraw2_GetAvailableVidMem }; /****************************************************************************** * DirectDrawCreate */ -HRESULT WINAPI DirectDrawCreate( LPGUID lpGUID, LPDIRECTDRAW *lplpDD, LPUNKNOWN pUnkOuter ) { - - char xclsid[50]; - int memsize,banksize,width,evbase,evret,major,minor,flags,height; +HRESULT WINAPI DGA_DirectDrawCreate( LPDIRECTDRAW *lplpDD, LPUNKNOWN pUnkOuter) { +#ifdef HAVE_LIBXXF86DGA + int memsize,banksize,width,major,minor,flags,height; char *addr; - if (lpGUID) - WINE_StringFromCLSID(lpGUID,xclsid); - else - strcpy(xclsid,""); - - TRACE(ddraw,"(%s,%p,%p)\n",xclsid,lplpDD,pUnkOuter); - if (getuid()) { + if (getuid() != 0) { MSG("Must be root to use XF86DGA!\n"); MessageBox32A(0,"Using the XF86DGA extension requires the program to be run using UID 0.","WINE DirectDraw",MB_OK|MB_ICONSTOP); return E_UNEXPECTED; } - *lplpDD = (LPDIRECTDRAW)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(IDirectDraw)); - (*lplpDD)->lpvtbl = &ddvt; - (*lplpDD)->ref = 1; - if (!XF86DGAQueryExtension(display,&evbase,&evret)) { - MSG("Wine DirectDraw: No XF86DGA detected.\n"); - return 0; + if (!DDRAW_DGA_Available()) { + TRACE(ddraw,"No XF86DGA detected.\n"); + return DDERR_GENERIC; } + *lplpDD = (LPDIRECTDRAW)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(IDirectDraw)); + (*lplpDD)->lpvtbl = &dga_ddvt; + (*lplpDD)->ref = 1; XF86DGAQueryVersion(display,&major,&minor); TRACE(ddraw,"XF86DGA is version %d.%d\n",major,minor); XF86DGAQueryDirectVideo(display,DefaultScreen(display),&flags); @@ -1728,17 +3029,15 @@ HRESULT WINAPI DirectDrawCreate( LPGUID lpGUID, LPDIRECTDRAW *lplpDD, LPUNKNOWN TRACE(ddraw,"video framebuffer: begin %p, width %d,banksize %d,memsize %d\n", addr,width,banksize,memsize ); - (*lplpDD)->d.fb_width = width; - (*lplpDD)->d.fb_addr = addr; - (*lplpDD)->d.fb_memsize = memsize; - (*lplpDD)->d.fb_banksize = banksize; + (*lplpDD)->e.dga.fb_width = width; + (*lplpDD)->e.dga.fb_addr = addr; + (*lplpDD)->e.dga.fb_memsize = memsize; + (*lplpDD)->e.dga.fb_banksize = banksize; XF86DGAGetViewPortSize(display,DefaultScreen(display),&width,&height); XF86DGASetViewPort(display,DefaultScreen(display),0,0); - (*lplpDD)->d.vp_width = width; - (*lplpDD)->d.vp_height = height; - (*lplpDD)->d.fb_height = screenHeight; - (*lplpDD)->d.vpmask = 0; + (*lplpDD)->e.dga.fb_height = screenHeight; + (*lplpDD)->e.dga.vpmask = 0; /* just assume the default depth is the DGA depth too */ (*lplpDD)->d.depth = DefaultDepthOfScreen(screen); @@ -1746,11 +3045,69 @@ HRESULT WINAPI DirectDrawCreate( LPGUID lpGUID, LPDIRECTDRAW *lplpDD, LPUNKNOWN SIGNAL_InitEmulator(); #endif return 0; +#else /* defined(HAVE_LIBXXF86DGA) */ + return DDERR_INVALIDDIRECTDRAWGUID; +#endif /* defined(HAVE_LIBXXF86DGA) */ +} + +HRESULT WINAPI XShm_DirectDrawCreate( LPDIRECTDRAW *lplpDD, LPUNKNOWN pUnkOuter) { +#ifdef HAVE_LIBXXSHM + if (!DDRAW_XShm_Available()) { + fprintf(stderr,"No XShm detected.\n"); + return DDERR_GENERIC; + } + *lplpDD = (LPDIRECTDRAW)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(IDirectDraw)); + (*lplpDD)->lpvtbl = &xshm_ddvt; + (*lplpDD)->ref = 1; + (*lplpDD)->e.xshm.drawable = 0; /* FIXME: make a window */ + (*lplpDD)->d.depth = DefaultDepthOfScreen(screen); + (*lplpDD)->d.height = (*lplpDD)->d.width = 0; /* FIXME */ + return 0; +#else /* defined(HAVE_LIBXXSHM) */ + return DDERR_INVALIDDIRECTDRAWGUID; +#endif /* defined(HAVE_LIBXXSHM) */ +} + +HRESULT WINAPI Xlib_DirectDrawCreate( LPDIRECTDRAW *lplpDD, LPUNKNOWN pUnkOuter) { + *lplpDD = (LPDIRECTDRAW)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(IDirectDraw)); + (*lplpDD)->lpvtbl = &xlib_ddvt; + (*lplpDD)->ref = 1; + (*lplpDD)->e.xshm.drawable = 0; /* FIXME: make a window */ + (*lplpDD)->d.depth = DefaultDepthOfScreen(screen); + (*lplpDD)->d.height = (*lplpDD)->d.width = 0; /* FIXME */ + return 0; } -#else HRESULT WINAPI DirectDrawCreate( LPGUID lpGUID, LPDIRECTDRAW *lplpDD, LPUNKNOWN pUnkOuter ) { - MessageBox32A(0,"WINE DirectDraw needs the XF86DGA extensions compiled in. (libXxf86dga.a).","WINE DirectDraw",MB_OK|MB_ICONSTOP); - return E_OUTOFMEMORY; + char xclsid[50]; + + if (lpGUID) + WINE_StringFromCLSID(lpGUID,xclsid); + else + strcpy(xclsid,""); + + TRACE(ddraw,"(%s,%p,%p)\n",xclsid,lplpDD,pUnkOuter); + + if (!lpGUID) { + /* if they didn't request a particular interface, use the best + * supported one */ + if (DDRAW_DGA_Available()) { + lpGUID = &DGA_DirectDraw_GUID; + } else if (DDRAW_XShm_Available()) { + lpGUID = &XSHM_DirectDraw_GUID; + } else { + lpGUID = &XLIB_DirectDraw_GUID; + } + } + + if (!memcmp(lpGUID, &DGA_DirectDraw_GUID, sizeof(GUID))) { + return DGA_DirectDrawCreate(lplpDD, pUnkOuter); + } else if (!memcmp(lpGUID, &XSHM_DirectDraw_GUID, sizeof(GUID))) { + return XShm_DirectDrawCreate(lplpDD, pUnkOuter); + } else if (!memcmp(lpGUID, &XLIB_DirectDraw_GUID, sizeof(GUID))) { + return Xlib_DirectDrawCreate(lplpDD, pUnkOuter); + } + + fprintf(stderr,"DirectDrawCreate(%s,%p,%p): did not recognize requested GUID\n",xclsid,lplpDD,pUnkOuter); + return DDERR_INVALIDDIRECTDRAWGUID; } -#endif diff --git a/graphics/env.c b/graphics/env.c index cb1f498583d..8220a216a90 100644 --- a/graphics/env.c +++ b/graphics/env.c @@ -6,12 +6,13 @@ * Copyright 1997 Marcus Meissner * Copyright 1998 Andreas Mohr */ -#include #include #include -#include -#include -#include +#include "windows.h" +#include "config.h" +#include "gdi.h" +#include "debug.h" +#include "heap.h" typedef struct { ATOM atom; @@ -24,8 +25,9 @@ static ENVTABLE *SearchEnvTable(ATOM atom) { INT16 i; - for (i = 20; i; i--) { - if (EnvTable[i].atom == atom) return &EnvTable[i]; + for (i = 19; i >= 0; i--) { + if (EnvTable[i].atom == atom) + return &EnvTable[i]; } return NULL; } @@ -46,20 +48,26 @@ static ATOM GDI_GetNullPortAtom(void) static ATOM PortNameToAtom(LPCSTR lpPortName, BOOL16 add) { - char PortName[256]; - LPCSTR p; + char *p; + BOOL32 needfree = FALSE; + ATOM ret; if (lpPortName[strlen(lpPortName) - 1] == ':') { - strncpy(PortName, lpPortName, strlen(lpPortName) - 1); - p = PortName; + p = HEAP_strdupA(GetProcessHeap(), 0, lpPortName); + p[strlen(lpPortName) - 1] = '\0'; + needfree = TRUE; } else - p = lpPortName; + p = (char *)lpPortName; if (add) - return AddAtom32A(p); + ret = AddAtom32A(p); else - return FindAtom32A(p); + ret = FindAtom32A(p); + + if(needfree) HeapFree(GetProcessHeap(), 0, p); + + return ret; } diff --git a/graphics/metafiledrv/init.c b/graphics/metafiledrv/init.c index a789159ae92..a9b5d2e009b 100644 --- a/graphics/metafiledrv/init.c +++ b/graphics/metafiledrv/init.c @@ -46,6 +46,7 @@ static const DC_FUNCTIONS MFDRV_Funcs = NULL, /* pPolyPolyline */ MFDRV_Polygon, /* pPolygon */ MFDRV_Polyline, /* pPolyline */ + NULL, /* pPolyBezier */ NULL, /* pRealizePalette */ MFDRV_Rectangle, /* pRectangle */ NULL, /* pRestoreDC */ diff --git a/graphics/painting.c b/graphics/painting.c index 4d75dddf16e..659e9e8c55c 100644 --- a/graphics/painting.c +++ b/graphics/painting.c @@ -629,7 +629,10 @@ void WINAPI DrawFocusRect32( HDC32 hdc, const RECT32* rc ) top = YLPTODP( dc, rc->top ); right = XLPTODP( dc, rc->right ); bottom = YLPTODP( dc, rc->bottom ); - + + if(left == right || top == bottom) + return; + hnewPen = CreatePen32(PS_DOT, 1, GetSysColor32(COLOR_WINDOWTEXT) ); hOldPen = SelectObject32( hdc, hnewPen ); oldDrawMode = SetROP232(hdc, R2_XORPEN); @@ -1057,8 +1060,31 @@ BOOL16 WINAPI DrawState16(HDC16 hdc, HBRUSH16 hbr, */ BOOL16 WINAPI PolyBezier16( HDC16 hDc, LPPOINT16 lppt, INT16 cPoints ) { - FIXME(gdi, "(%x,%p,%d): stub\n",hDc,lppt,cPoints); - return TRUE; + int i; + BOOL16 ret; + LPPOINT32 pt32 = (LPPOINT32)HeapAlloc( GetProcessHeap(), 0, + cPoints*sizeof(POINT32) ); + if(!pt32) return FALSE; + for (i=cPoints;i--;) CONV_POINT16TO32(&(lppt[i]),&(pt32[i])); + ret= PolyBezier32(hDc, pt32, cPoints); + HeapFree( GetProcessHeap(), 0, pt32 ); + return ret; +} + +/****************************************************************************** + * PolyBezierTo16 [GDI.503] + */ +BOOL16 WINAPI PolyBezierTo16( HDC16 hDc, LPPOINT16 lppt, INT16 cPoints ) +{ + int i; + BOOL16 ret; + LPPOINT32 pt32 = (LPPOINT32)HeapAlloc( GetProcessHeap(), 0, + cPoints*sizeof(POINT32) ); + if(!pt32) return FALSE; + for (i=cPoints;i--;) CONV_POINT16TO32(&(lppt[i]),&(pt32[i])); + ret= PolyBezierTo32(hDc, pt32, cPoints); + HeapFree( GetProcessHeap(), 0, pt32 ); + return ret; } /****************************************************************************** @@ -1072,9 +1098,44 @@ BOOL16 WINAPI PolyBezier16( HDC16 hDc, LPPOINT16 lppt, INT16 cPoints ) * * RETURNS STD */ -BOOL32 WINAPI PolyBezier32( HDC32 hDc, LPPOINT32 lppt, DWORD cPoints ) +BOOL32 WINAPI PolyBezier32( HDC32 hdc, LPPOINT32 lppt, DWORD cPoints ) { - FIXME(gdi, "(%x,%p,%ld): stub\n",hDc,lppt,cPoints); - return TRUE; + DC * dc = DC_GetDCPtr( hdc ); + if(!dc) return FALSE; + if(dc && PATH_IsPathOpen(dc->w.path)) + FIXME(gdi, "PATH_PolyBezier is not implemented!\n"); +// if(!PATH_PolyBezier(hdc, x, y)) +// return FALSE; + return dc->funcs->pPolyBezier&& + dc->funcs->pPolyBezier(dc, lppt[0], lppt+1, cPoints-1); } +/****************************************************************************** + * PolyBezierTo32 [GDI32.269] + * Draws one or more Bezier curves + * + * PARAMS + * hDc [I] Handle to device context + * lppt [I] Pointer to endpoints and control points + * cPoints [I] Count of endpoints and control points + * + * RETURNS STD + */ +BOOL32 WINAPI PolyBezierTo32( HDC32 hdc, LPPOINT32 lppt, DWORD cPoints ) +{ + DC * dc = DC_GetDCPtr( hdc ); + POINT32 pt; + BOOL32 ret; + if(!dc) return FALSE; + pt.x=dc->w.CursPosX; + pt.y=dc->w.CursPosY; + if(dc && PATH_IsPathOpen(dc->w.path)) + FIXME(gdi, "PATH_PolyBezierTo is not implemented!\n"); +// if(!PATH_PolyBezier(hdc, x, y)) +// return FALSE; + ret= dc->funcs->pPolyBezier && + dc->funcs->pPolyBezier(dc, pt, lppt, cPoints); + if( dc->funcs->pMoveToEx) + dc->funcs->pMoveToEx(dc,lppt[cPoints].x,lppt[cPoints].y,&pt); + return ret; +} diff --git a/graphics/psdrv/init.c b/graphics/psdrv/init.c index e99b519ce9b..e68f64cfe2e 100644 --- a/graphics/psdrv/init.c +++ b/graphics/psdrv/init.c @@ -48,6 +48,7 @@ static const DC_FUNCTIONS PSDRV_Funcs = NULL, /* pPolyPolyline */ NULL, /* pPolygon */ NULL, /* pPolyline */ + NULL, /* pPolyBezier */ NULL, /* pRealizePalette */ PSDRV_Rectangle, /* pRectangle */ NULL, /* pRestoreDC */ diff --git a/graphics/win16drv/init.c b/graphics/win16drv/init.c index e7ad018d284..10dbf6556b9 100644 --- a/graphics/win16drv/init.c +++ b/graphics/win16drv/init.c @@ -80,6 +80,7 @@ static const DC_FUNCTIONS WIN16DRV_Funcs = NULL, /* pPolyPolyline */ WIN16DRV_Polygon, /* pPolygon */ WIN16DRV_Polyline, /* pPolyline */ + NULL, /* pPolyBezier */ NULL, /* pRealizePalette */ WIN16DRV_Rectangle, /* pRectangle */ NULL, /* pRestoreDC */ @@ -175,8 +176,8 @@ BOOL32 WIN16DRV_CreateDC( DC *dc, LPCSTR driver, LPCSTR device, LPCSTR output, printerEnabled, sizeof(printerEnabled) ); if (lstrcmpi32A(printerEnabled,"on")) { - MSG("WIN16DRV_CreateDC disabled in wine.conf file\n"); - MSG("Enable printing with \"printer=on\""); + MSG("Printing disabled in wine.conf or .winerc file\n"); + MSG("Use \"printer=on\" in the \"[wine]\" section to enable it."); return FALSE; } @@ -398,14 +399,33 @@ static struct hpq *hpqueue; HPQ WINAPI CreatePQ(int size) { +#if 0 + HGLOBAL16 hpq = 0; + WORD tmp_size; + LPWORD pPQ; + + tmp_size = size << 2; + if (!(hpq = GlobalAlloc16(GMEM_SHARE|GMEM_MOVEABLE, tmp_size + 8))) + return 0xffff; + pPQ = GlobalLock16(hpq); + *pPQ++ = 0; + *pPQ++ = tmp_size; + *pPQ++ = 0; + *pPQ++ = 0; + GlobalUnlock16(hpq); + + return (HPQ)hpq; +#else FIXME(win16drv, "(%d): stub\n",size); return 1; +#endif } + int WINAPI DeletePQ(HPQ hPQ) { - FIXME(win16drv, "(%x): stub\n", hPQ); - return 0; + return GlobalFree16((HGLOBAL16)hPQ); } + int WINAPI ExtractPQ(HPQ hPQ) { struct hpq *queue, *prev, *current, *currentPrev; diff --git a/graphics/x11drv/clipping.c b/graphics/x11drv/clipping.c index 88b3455e4a1..bf5f880399e 100644 --- a/graphics/x11drv/clipping.c +++ b/graphics/x11drv/clipping.c @@ -25,7 +25,8 @@ void X11DRV_SetDeviceClipping( DC * dc ) if (!obj) { ERR(x11drv, "Rgn is 0. Please report this.\n"); - exit(1); + return; + /*exit(1);*/ } if (obj->rgn->numRects > 0) diff --git a/graphics/x11drv/graphics.c b/graphics/x11drv/graphics.c index 1912e5586e5..0f385ad902e 100644 --- a/graphics/x11drv/graphics.c +++ b/graphics/x11drv/graphics.c @@ -38,7 +38,7 @@ #include "debug.h" #include "xmalloc.h" - +#define ABS(x) ((x)<0?(-(x)):(x)) /********************************************************************** * X11DRV_MoveToEx */ @@ -79,17 +79,16 @@ X11DRV_LineTo( DC *dc, INT32 x, INT32 y ) * Helper functions for Arc(), Chord() and Pie(). * 'lines' is the number of lines to draw: 0 for Arc, 1 for Chord, 2 for Pie. * - * FIXME: incorrect with thick pen and/or PS_INSIDEFRAME style - * see ellipse and rectangle functions */ static BOOL32 X11DRV_DrawArc( DC *dc, INT32 left, INT32 top, INT32 right, INT32 bottom, INT32 xstart, INT32 ystart, INT32 xend, INT32 yend, INT32 lines ) { - INT32 xcenter, ycenter, istart_angle, idiff_angle, tmp; + INT32 xcenter, ycenter, istart_angle, idiff_angle; + INT32 width, oldwidth, oldendcap; double start_angle, end_angle; - XPoint points[3]; + XPoint points[4]; left = XLPTODP( dc, left ); top = YLPTODP( dc, top ); @@ -100,10 +99,29 @@ X11DRV_DrawArc( DC *dc, INT32 left, INT32 top, INT32 right, xend = XLPTODP( dc, xend ); yend = YLPTODP( dc, yend ); - if ((left == right) || (top == bottom)) return TRUE; + if (right < left) { INT32 tmp = right; right = left; left = tmp; } + if (bottom < top) { INT32 tmp = bottom; bottom = top; top = tmp; } + if ((left == right) || (top == bottom) + ||(lines && ((right-left==1)||(bottom-top==1)))) return TRUE; + + oldwidth = width = dc->u.x.pen.width; + oldendcap= dc->u.x.pen.endcap; + if (!width) width = 1; + if(dc->u.x.pen.style == PS_NULL) width = 0; + + if ((dc->u.x.pen.style == PS_INSIDEFRAME)) + { + if (2*width > (right-left)) width=(right-left + 1)/2; + if (2*width > (bottom-top)) width=(bottom-top + 1)/2; + left += width / 2; + right -= (width - 1) / 2; + top += width / 2; + bottom -= (width - 1) / 2; + } + if(width == 0) width=1; /* more accurate */ + dc->u.x.pen.width=width; + dc->u.x.pen.endcap=PS_ENDCAP_SQUARE; - if (left > right) { tmp=left; left=right; right=tmp; } - if (top > bottom) { tmp=top; top=bottom; bottom=tmp; } xcenter = (right + left) / 2; ycenter = (bottom + top) / 2; start_angle = atan2( (double)(ycenter-ystart)*(right-left), @@ -121,14 +139,13 @@ X11DRV_DrawArc( DC *dc, INT32 left, INT32 top, INT32 right, else if ((end_angle == PI)&&( start_angle <0)) end_angle = - PI; - istart_angle = (INT32)(start_angle * 180 * 64 / PI); - idiff_angle = (INT32)((end_angle - start_angle) * 180 * 64 / PI ); + istart_angle = (INT32)(start_angle * 180 * 64 / PI + 0.5); + idiff_angle = (INT32)((end_angle - start_angle) * 180 * 64 / PI + 0.5); if (idiff_angle <= 0) idiff_angle += 360 * 64; /* Fill arc with brush if Chord() or Pie() */ - if ((lines > 0) && DC_SetupGCForBrush( dc )) - { + if ((lines > 0) && DC_SetupGCForBrush( dc )) { TSXSetArcMode( display, dc->u.x.gc, (lines==1) ? ArcChord : ArcPieSlice); TSXFillArc( display, dc->u.x.drawable, dc->u.x.gc, dc->w.DCOrgX + left, dc->w.DCOrgY + top, @@ -137,24 +154,69 @@ X11DRV_DrawArc( DC *dc, INT32 left, INT32 top, INT32 right, /* Draw arc and lines */ - if (!DC_SetupGCForPen( dc )) return TRUE; + if (DC_SetupGCForPen( dc )){ TSXDrawArc( display, dc->u.x.drawable, dc->u.x.gc, dc->w.DCOrgX + left, dc->w.DCOrgY + top, right-left-1, bottom-top-1, istart_angle, idiff_angle ); - if (!lines) return TRUE; - - points[0].x = dc->w.DCOrgX + xcenter + (int)(cos(start_angle) * (right-left) / 2); - points[0].y = dc->w.DCOrgY + ycenter - (int)(sin(start_angle) * (bottom-top) / 2); - points[1].x = dc->w.DCOrgX + xcenter + (int)(cos(end_angle) * (right-left) / 2); - points[1].y = dc->w.DCOrgY + ycenter - (int)(sin(end_angle) * (bottom-top) / 2); - if (lines == 2) - { - points[2] = points[1]; + if (lines) { + /* use the truncated values */ + start_angle=(double)istart_angle*PI/64./180.; + end_angle=(double)(istart_angle+idiff_angle)*PI/64./180.; + /* calculate the endpoints and round correctly */ + points[0].x = (int) floor(dc->w.DCOrgX + (right+left)/2.0 + + cos(start_angle) * (right-left-width*2+2) / 2. + 0.5); + points[0].y = (int) floor(dc->w.DCOrgY + (top+bottom)/2.0 - + sin(start_angle) * (bottom-top-width*2+2) / 2. + 0.5); + points[1].x = (int) floor(dc->w.DCOrgX + (right+left)/2.0 + + cos(end_angle) * (right-left-width*2+2) / 2. + 0.5); + points[1].y = (int) floor(dc->w.DCOrgY + (top+bottom)/2.0 - + sin(end_angle) * (bottom-top-width*2+2) / 2. + 0.5); + + /* OK this stuff is optimized for Xfree86 + * which is probably the most used server by + * wine users. Other X servers will not + * display correctly. (eXceed for instance) + * so if you feel you must change make sure that + * you either use Xfree86 or seperate your changes + * from these (compile switch or whatever) + */ + if (lines == 2) { + INT32 dx1,dy1; + points[3] = points[1]; points[1].x = dc->w.DCOrgX + xcenter; points[1].y = dc->w.DCOrgY + ycenter; + points[2] = points[1]; + dx1=points[1].x-points[0].x; + dy1=points[1].y-points[0].y; + if(((top-bottom) | -2) == -2) + if(dy1>0) points[1].y--; + if(dx1<0) { + if (((-dx1)*64)<=ABS(dy1)*37) points[0].x--; + if(((-dx1*9))<(dy1*16)) points[0].y--; + if( dy1<0 && ((dx1*9)) < (dy1*16)) points[0].y--; + } else { + if(dy1 < 0) points[0].y--; + if(((right-left) | -2) == -2) points[1].x--; + } + dx1=points[3].x-points[2].x; + dy1=points[3].y-points[2].y; + if(((top-bottom) | -2 ) == -2) + if(dy1 < 0) points[2].y--; + if( dx1<0){ + if( dy1>0) points[3].y--; + if(((right-left) | -2) == -2 ) points[2].x--; + }else { + points[3].y--; + if( dx1 * 64 < dy1 * -37 ) points[3].x--; + } + lines++; } TSXDrawLines( display, dc->u.x.drawable, dc->u.x.gc, points, lines+1, CoordModeOrigin ); + } + } + dc->u.x.pen.width=oldwidth; + dc->u.x.pen.endcap=oldendcap; return TRUE; } @@ -201,7 +263,6 @@ BOOL32 X11DRV_Ellipse( DC *dc, INT32 left, INT32 top, INT32 right, INT32 bottom ) { INT32 width, oldwidth; - left = XLPTODP( dc, left ); top = YLPTODP( dc, top ); right = XLPTODP( dc, right ); @@ -224,7 +285,7 @@ X11DRV_Ellipse( DC *dc, INT32 left, INT32 top, INT32 right, INT32 bottom ) top += width / 2; bottom -= (width - 1) / 2; } - if(width == 1) width=0; + if(width == 0) width=1; /* more accurate */ dc->u.x.pen.width=width; if (DC_SetupGCForBrush( dc )) @@ -305,7 +366,7 @@ BOOL32 X11DRV_RoundRect( DC *dc, INT32 left, INT32 top, INT32 right, INT32 bottom, INT32 ell_width, INT32 ell_height ) { - INT32 width, oldwidth; + INT32 width, oldwidth, oldendcap; TRACE(graphics, "(%d %d %d %d %d %d\n", left, top, right, bottom, ell_width, ell_height); @@ -327,6 +388,7 @@ X11DRV_RoundRect( DC *dc, INT32 left, INT32 top, INT32 right, if (bottom < top) { INT32 tmp = bottom; bottom = top; top = tmp; } oldwidth=width = dc->u.x.pen.width; + oldendcap = dc->u.x.pen.endcap; if (!width) width = 1; if(dc->u.x.pen.style == PS_NULL) width = 0; @@ -339,8 +401,9 @@ X11DRV_RoundRect( DC *dc, INT32 left, INT32 top, INT32 right, top += width / 2; bottom -= (width - 1) / 2; } - if(width == 1) width=0; + if(width == 0) width=1; dc->u.x.pen.width=width; + dc->u.x.pen.endcap=PS_ENDCAP_SQUARE; if (DC_SetupGCForBrush( dc )) { @@ -386,23 +449,34 @@ X11DRV_RoundRect( DC *dc, INT32 left, INT32 top, INT32 right, if (ell_width < right - left) { TSXFillRectangle( display, dc->u.x.drawable, dc->u.x.gc, - dc->w.DCOrgX + left + ell_width / 2, - dc->w.DCOrgY + top, - right - left - ell_width, ell_height / 2 ); + dc->w.DCOrgX + left + (ell_width + 1) / 2, + dc->w.DCOrgY + top + 1, + right - left - ell_width - 1, + (ell_height + 1) / 2 - 1); TSXFillRectangle( display, dc->u.x.drawable, dc->u.x.gc, - dc->w.DCOrgX + left + ell_width / 2, - dc->w.DCOrgY + bottom - (ell_height+1) / 2, - right - left - ell_width, - (ell_height+1) / 2 - 1 ); + dc->w.DCOrgX + left + (ell_width + 1) / 2, + dc->w.DCOrgY + bottom - (ell_height) / 2 - 1, + right - left - ell_width - 1, + (ell_height) / 2 ); } if (ell_height < bottom - top) { TSXFillRectangle( display, dc->u.x.drawable, dc->u.x.gc, - dc->w.DCOrgX + left, - dc->w.DCOrgY + top + ell_height / 2, - right - left - 1, bottom - top - ell_height ); + dc->w.DCOrgX + left + 1, + dc->w.DCOrgY + top + (ell_height + 1) / 2, + right - left - 2, + bottom - top - ell_height - 1); } } + /* FIXME: this could be done with on X call + * more efficient and probably more correct + * on any X server: XDrawArcs will draw + * straight horizontal and vertical lines + * if width or height are zero. + * + * BTW this stuff is optimized for an Xfree86 server + * read the comments inside the X11DRV_DrawArc function + */ if (DC_SetupGCForPen(dc)) { if (ell_width > (right-left) ) if (ell_height > (bottom-top) ) @@ -444,31 +518,32 @@ X11DRV_RoundRect( DC *dc, INT32 left, INT32 top, INT32 right, if (ell_width < right - left) { TSXDrawLine( display, dc->u.x.drawable, dc->u.x.gc, - dc->w.DCOrgX + left + ell_width / 2 - 2, + dc->w.DCOrgX + left + ell_width / 2, dc->w.DCOrgY + top, - dc->w.DCOrgX + right - ell_width / 2, + dc->w.DCOrgX + right - (ell_width+1) / 2, dc->w.DCOrgY + top); TSXDrawLine( display, dc->u.x.drawable, dc->u.x.gc, - dc->w.DCOrgX + left + ell_width / 2 - 2, + dc->w.DCOrgX + left + ell_width / 2 , dc->w.DCOrgY + bottom - 1, - dc->w.DCOrgX + right - ell_width / 2, + dc->w.DCOrgX + right - (ell_width+1)/ 2, dc->w.DCOrgY + bottom - 1); } if (ell_height < bottom - top) { TSXDrawLine( display, dc->u.x.drawable, dc->u.x.gc, dc->w.DCOrgX + right - 1, - dc->w.DCOrgY + top + ell_height / 2 - 1, + dc->w.DCOrgY + top + ell_height / 2, dc->w.DCOrgX + right - 1, - dc->w.DCOrgY + bottom - ell_height / 2); + dc->w.DCOrgY + bottom - (ell_height+1) / 2); TSXDrawLine( display, dc->u.x.drawable, dc->u.x.gc, dc->w.DCOrgX + left, - dc->w.DCOrgY + top + ell_height / 2 - 1, + dc->w.DCOrgY + top + ell_height / 2, dc->w.DCOrgX + left, - dc->w.DCOrgY + bottom - ell_height / 2); + dc->w.DCOrgY + bottom - (ell_height+1) / 2); } } dc->u.x.pen.width=oldwidth; + dc->u.x.pen.endcap=oldendcap; return TRUE; } @@ -576,17 +651,26 @@ X11DRV_PaintRgn( DC *dc, HRGN32 hrgn ) * X11DRV_Polyline */ BOOL32 -X11DRV_Polyline( DC *dc, const LPPOINT32 pt, INT32 count ) +X11DRV_Polyline( DC *dc, LPPOINT32 pt, INT32 count ) { + INT32 oldwidth; register int i; + XPoint *points; + if((oldwidth=dc->u.x.pen.width)==0) dc->u.x.pen.width=1; - if (DC_SetupGCForPen( dc )) - for (i = 0; i < count-1; i ++) - TSXDrawLine (display, dc->u.x.drawable, dc->u.x.gc, - dc->w.DCOrgX + XLPTODP(dc, pt [i].x), - dc->w.DCOrgY + YLPTODP(dc, pt [i].y), - dc->w.DCOrgX + XLPTODP(dc, pt [i+1].x), - dc->w.DCOrgY + YLPTODP(dc, pt [i+1].y)); + points = (XPoint *) xmalloc (sizeof (XPoint) * (count)); + for (i = 0; i < count; i++) + { + points[i].x = dc->w.DCOrgX + XLPTODP( dc, pt[i].x ); + points[i].y = dc->w.DCOrgY + YLPTODP( dc, pt[i].y ); + } + + if (DC_SetupGCForPen ( dc )) + TSXDrawLines( display, dc->u.x.drawable, dc->u.x.gc, + points, count, CoordModeOrigin ); + + free( points ); + dc->u.x.pen.width=oldwidth; return TRUE; } @@ -835,3 +919,189 @@ X11DRV_ExtFloodFill( DC *dc, INT32 x, INT32 y, COLORREF color, LeaveCriticalSection( &X11DRV_CritSection ); return result; } + +/****************** WARNING: WORK IN PROGRESS AHEAD !!!! **************** + * + * *Very* simple bezier drawing code, + * + * It uses a recursive algorithm to divide the curve in a series + * of straight line segements. Not ideal but for me sufficient. + * If you are in need for something better look for some incremental + * algorithm. + * + * 7 July 1998 Rein Klazes + */ + + /* + * some macro definitions for bezier drawing + * + * to avoid trucation errors the coordinates are + * shifted upwards. When used in drawing they are + * shifted down again, including correct rounding + * and avoiding floating points + */ + +#define BEZIERSHIFTBITS 4 +#define BEZIERSHIFTUP(x) ((x)<>BEZIERSHIFTBITS) +/* maximum depth of recursion */ +#define BEZIERMAXDEPTH 6 + +/* size of array to store points on */ +/* enough for one curve */ +#define BEZMAXPOINTS ((1<Points[0].x) + if(Points[1].x > Points[3].x+BEZIERFACTOR || + Points[1].x < Points[0].x-BEZIERFACTOR || + Points[2].x > Points[3].x+BEZIERFACTOR || + Points[2].x < Points[0].x-BEZIERFACTOR) + return FALSE; + else + if(Points[1].x < Points[3].x-BEZIERFACTOR || + Points[1].x > Points[0].x+BEZIERFACTOR || + Points[2].x < Points[3].x-BEZIERFACTOR || + Points[2].x > Points[0].x+BEZIERFACTOR) + return FALSE; + if(Points[3].y>Points[0].y) + if(Points[1].y > Points[3].y+BEZIERFACTOR || + Points[1].y < Points[0].y-BEZIERFACTOR || + Points[2].y > Points[3].y+BEZIERFACTOR || + Points[2].y < Points[0].y-BEZIERFACTOR) + return FALSE; + else + if(Points[1].x < Points[3].x-BEZIERFACTOR || + Points[1].x > Points[0].x+BEZIERFACTOR || + Points[2].x < Points[3].x-BEZIERFACTOR || + Points[2].x > Points[0].x+BEZIERFACTOR) + return FALSE;o + + /* calculate the distance squared of the control point from + * the line from begin and endpoint + */ + + hyp=((double)(Points[3].x-Points[0].x)*(double)(Points[3].x-Points[0].x)+ + (double) (Points[3].y-Points[0].y)*(double)(Points[3].y-Points[0].y)); + r1=((double)(Points[2].y-Points[0].y)*(double)(Points[3].x-Points[0].x)- + (double) (Points[3].y-Points[0].y)*(double)(Points[2].x-Points[0].x)) + /BEZIERFACTOR; + r2=((double)(Points[1].y-Points[0].y)*(double)(Points[3].x-Points[0].x)- + (double)(Points[3].y-Points[0].y)*(double)(Points[1].x-Points[0].x)) + /BEZIERFACTOR; + r1=r1*r1/hyp; + r1=r2*r2/hyp; + if( r1<1 && r2 <1){ /* distance less then a pixel */ +// fprintf(stderr,"level is %d\n", level); + return TRUE; + } +#endif + return FALSE; + +} + +/*********************************************************************** + * X11DRV_Bezier + * Draw a -what microsoft calls- bezier curve + * The routine recursively devides the curve + * in two parts until a straight line can be drawn + */ +static void X11DRV_Bezier(int level, DC * dc, POINT32 *Points, + XPoint* xpoints, unsigned int* pix) +{ + if(*pix == BEZMAXPOINTS){ + TSXDrawLines( display, dc->u.x.drawable, dc->u.x.gc, + xpoints, *pix, CoordModeOrigin ); + *pix=0; + } + if(!level || BezierCheck(level, Points)) { + if(*pix == 0){ + xpoints[*pix].x= dc->w.DCOrgX + BEZIERSHIFTDOWN(Points[0].x); + xpoints[*pix].y= dc->w.DCOrgY + BEZIERSHIFTDOWN(Points[0].y); + *pix=1; + } + xpoints[*pix].x= dc->w.DCOrgX + BEZIERSHIFTDOWN(Points[3].x); + xpoints[*pix].y= dc->w.DCOrgY + BEZIERSHIFTDOWN(Points[3].y); + (*pix) ++; + } else { + POINT32 Points2[4]; /* for the second recursive call */ + Points2[3]=Points[3]; + BEZIERMIDDLE(Points2[2], Points[2], Points[3]); + BEZIERMIDDLE(Points2[0], Points[1], Points[2]); + BEZIERMIDDLE(Points2[1],Points2[0],Points2[2]); + + BEZIERMIDDLE(Points[1], Points[0], Points[1]); + BEZIERMIDDLE(Points[2], Points[1], Points2[0]); + BEZIERMIDDLE(Points[3], Points[2], Points2[1]); + + Points2[0]=Points[3]; + + /* do the two halves */ + X11DRV_Bezier(level-1, dc, Points, xpoints, pix); + X11DRV_Bezier(level-1, dc, Points2, xpoints, pix); + } +} + +/*********************************************************************** + * X11DRV_PolyBezier + * Implement functionality for PolyBezier and PolyBezierTo + * calls. + * [i] dc pointer to device context + * [i] start, first point in curve + * [i] BezierPoints , array of point filled with rest of the points + * [i] count, number of points in BezierPoints, must be a + * multiple of 3. + */ +BOOL32 +X11DRV_PolyBezier(DC *dc, POINT32 start, POINT32 *BezierPoints, DWORD count) +{ + POINT32 Points[4]; + int i; + unsigned int ix=0; + XPoint* xpoints; + TRACE(graphics, "dc=%04x count=%ld %d,%d - %d,%d - %d,%d -%d,%d \n", + (int)dc, count, + start.x, start.y, + (Points+0)->x, (Points+0)->y, + (Points+1)->x, (Points+1)->y, + (Points+2)->x, (Points+2)->y); + if(!count || count % 3){ + WARN(graphics," bad value for count : %ld\n", count); + return FALSE; /* paranoid */ + } + xpoints=(XPoint*) xmalloc( sizeof(XPoint)*BEZMAXPOINTS); + Points[3].x=BEZIERSHIFTUP(XLPTODP(dc,start.x)); + Points[3].y=BEZIERSHIFTUP(YLPTODP(dc,start.y)); + while(count){ + Points[0]=Points[3]; + for(i=1;i<4;i++) { + Points[i].x= BEZIERSHIFTUP(XLPTODP(dc,BezierPoints->x)); + Points[i].y= BEZIERSHIFTUP(YLPTODP(dc,BezierPoints->y)); + BezierPoints++; + } + X11DRV_Bezier(BEZIERMAXDEPTH , dc, Points, xpoints, &ix ); + count -=3; + } + if( ix) TSXDrawLines( display, dc->u.x.drawable, dc->u.x.gc, + xpoints, ix, CoordModeOrigin ); +// fprintf(stderr," ix is %d\n",ix); + free(xpoints); + return TRUE; +} +/***************************END OF WORK IN PROGRESS ********************/ diff --git a/graphics/x11drv/init.c b/graphics/x11drv/init.c index d5f11aa7063..cf91c6d575d 100644 --- a/graphics/x11drv/init.c +++ b/graphics/x11drv/init.c @@ -50,6 +50,7 @@ static const DC_FUNCTIONS X11DRV_Funcs = X11DRV_PolyPolyline, /* pPolyPolyline */ X11DRV_Polygon, /* pPolygon */ X11DRV_Polyline, /* pPolyline */ + X11DRV_PolyBezier, /* pPolyBezier */ NULL, /* pRealizePalette */ X11DRV_Rectangle, /* pRectangle */ NULL, /* pRestoreDC */ diff --git a/graphics/x11drv/text.c b/graphics/x11drv/text.c index ea8c361cb70..09c78b0d27b 100644 --- a/graphics/x11drv/text.c +++ b/graphics/x11drv/text.c @@ -29,25 +29,28 @@ X11DRV_ExtTextOut( DC *dc, INT32 x, INT32 y, UINT32 flags, const INT32 *lpDx ) { HRGN32 hRgnClip = 0; - int dir, ascent, descent, i; + int i; fontObject* pfo; - XCharStruct info; + INT32 width, ascent, descent, xwidth, ywidth; XFontStruct* font; RECT32 rect; char dfBreakChar, lfUnderline, lfStrikeOut; + BOOL32 rotated = FALSE; if (!DC_SetupGCForText( dc )) return TRUE; pfo = XFONT_GetFontObject( dc->u.x.font ); font = pfo->fs; - + + if (pfo->lf.lfEscapement && pfo->lpX11Trans) + rotated = TRUE; dfBreakChar = (char)pfo->fi->df.dfBreakChar; lfUnderline = (pfo->fo_flags & FO_SYNTH_UNDERLINE) ? 1 : 0; lfStrikeOut = (pfo->fo_flags & FO_SYNTH_STRIKEOUT) ? 1 : 0; - TRACE(text,"hdc=%04x df=%04x %d,%d %s, %d flags=%d\n", + TRACE(text,"hdc=%04x df=%04x %d,%d %s, %d flags=%d lpDx=%p\n", dc->hSelf, (UINT16)(dc->u.x.font), x, y, - debugstr_an (str, count), count, flags); + debugstr_an (str, count), count, flags, lpDx); /* some strings sent here end in a newline for whatever reason. I have no clue what the right treatment should be in general, but ignoring @@ -112,37 +115,58 @@ X11DRV_ExtTextOut( DC *dc, INT32 x, INT32 y, UINT32 flags, if (lpDx) /* have explicit character cell x offsets in logical coordinates */ { int extra = dc->wndExtX / 2; - for (i = info.width = 0; i < count; i++) info.width += lpDx[i]; - info.width = (info.width * dc->vportExtX + extra ) / dc->wndExtX; + for (i = width = 0; i < count; i++) width += lpDx[i]; + width = (width * dc->vportExtX + extra ) / dc->wndExtX; } else { - TSXTextExtents( font, str, count, &dir, &ascent, &descent, &info ); - info.width += count*dc->w.charExtra + dc->w.breakExtra*dc->w.breakCount; + SIZE32 sz; + if (!X11DRV_GetTextExtentPoint( dc, str, count, &sz )) + return FALSE; + width = XLSTODS(dc, sz.cx); } + ascent = pfo->lpX11Trans ? pfo->lpX11Trans->ascent : font->ascent; + descent = pfo->lpX11Trans ? pfo->lpX11Trans->descent : font->descent; + xwidth = pfo->lpX11Trans ? width * pfo->lpX11Trans->a / + pfo->lpX11Trans->pixelsize : width; + ywidth = pfo->lpX11Trans ? width * pfo->lpX11Trans->b / + pfo->lpX11Trans->pixelsize : 0; switch( dc->w.textAlign & (TA_LEFT | TA_RIGHT | TA_CENTER) ) { case TA_LEFT: - if (dc->w.textAlign & TA_UPDATECP) - dc->w.CursPosX = XDPTOLP( dc, x + info.width ); + if (dc->w.textAlign & TA_UPDATECP) { + dc->w.CursPosX = XDPTOLP( dc, x + xwidth ); + dc->w.CursPosY = YDPTOLP( dc, y - ywidth ); + } break; case TA_RIGHT: - x -= info.width; - if (dc->w.textAlign & TA_UPDATECP) dc->w.CursPosX = XDPTOLP( dc, x ); + x -= xwidth; + y += ywidth; + if (dc->w.textAlign & TA_UPDATECP) { + dc->w.CursPosX = XDPTOLP( dc, x ); + dc->w.CursPosY = YDPTOLP( dc, y ); + } break; case TA_CENTER: - x -= info.width / 2; + x -= xwidth / 2; + y += ywidth / 2; break; } switch( dc->w.textAlign & (TA_TOP | TA_BOTTOM | TA_BASELINE) ) { case TA_TOP: - y += font->ascent; + x -= pfo->lpX11Trans ? ascent * pfo->lpX11Trans->c / + pfo->lpX11Trans->pixelsize : 0; + y += pfo->lpX11Trans ? ascent * pfo->lpX11Trans->d / + pfo->lpX11Trans->pixelsize : ascent; break; case TA_BOTTOM: - y -= font->descent; + x += pfo->lpX11Trans ? descent * pfo->lpX11Trans->c / + pfo->lpX11Trans->pixelsize : 0; + y -= pfo->lpX11Trans ? descent * pfo->lpX11Trans->d / + pfo->lpX11Trans->pixelsize : descent; break; case TA_BASELINE: break; @@ -168,16 +192,16 @@ X11DRV_ExtTextOut( DC *dc, INT32 x, INT32 y, UINT32 flags, /* text is outside the rectangle */ if (!(flags & ETO_OPAQUE) || (x < rect.left) || - (x + info.width >= rect.right) || - (y-font->ascent < rect.top) || - (y+font->descent >= rect.bottom)) + (x + width >= rect.right) || + (y - ascent < rect.top) || + (y + descent >= rect.bottom)) { TSXSetForeground( display, dc->u.x.gc, dc->w.backgroundPixel ); TSXFillRectangle( display, dc->u.x.drawable, dc->u.x.gc, dc->w.DCOrgX + x, - dc->w.DCOrgY + y - font->ascent, - info.width, - font->ascent + font->descent ); + dc->w.DCOrgY + y - ascent, + width, + ascent + descent ); } } } @@ -187,7 +211,7 @@ X11DRV_ExtTextOut( DC *dc, INT32 x, INT32 y, UINT32 flags, TSXSetForeground( display, dc->u.x.gc, dc->w.textPixel ); if (!dc->w.charExtra && !dc->w.breakExtra && !lpDx) { - if (!pfo->lf.lfOrientation) /* angled baseline? */ + if(!rotated) { TSXDrawString( display, dc->u.x.drawable, dc->u.x.gc, dc->w.DCOrgX + x, dc->w.DCOrgY + y, str, count ); @@ -197,18 +221,15 @@ X11DRV_ExtTextOut( DC *dc, INT32 x, INT32 y, UINT32 flags, /* have to render character by character. */ double offset = 0.0; int i; - /* tenths of degrees to radians */ - double theta = M_PI*pfo->lf.lfOrientation/1800.; - /* components of pointsize matrix */ - double xc = pfo->fi->lfd_decipoints*cos(theta)/10.; - double yc = pfo->fi->lfd_decipoints*sin(theta)/10.; - + for(i=0; imin_char_or_byte2; - int x_i = IROUND((double) (dc->w.DCOrgX + x) + offset*xc/1000. ); - int y_i = IROUND((double) (dc->w.DCOrgY + y) - offset*yc/1000. ); - + int x_i = IROUND((double) (dc->w.DCOrgX + x) + offset * + pfo->lpX11Trans->a / 1000.0 ); + int y_i = IROUND((double) (dc->w.DCOrgY + y) - offset * + pfo->lpX11Trans->b / 1000.0 ); + TSXDrawString( display, dc->u.x.drawable, dc->u.x.gc, x_i, y_i, &str[i], 1); offset += (double) (font->per_char ? @@ -285,7 +306,7 @@ X11DRV_ExtTextOut( DC *dc, INT32 x, INT32 y, UINT32 flags, long linePos, lineWidth; if (!TSXGetFontProperty( font, XA_UNDERLINE_POSITION, &linePos )) - linePos = font->descent-1; + linePos = descent - 1; if (!TSXGetFontProperty( font, XA_UNDERLINE_THICKNESS, &lineWidth )) lineWidth = 0; else if (lineWidth == 1) lineWidth = 0; @@ -293,20 +314,20 @@ X11DRV_ExtTextOut( DC *dc, INT32 x, INT32 y, UINT32 flags, LineSolid, CapRound, JoinBevel ); TSXDrawLine( display, dc->u.x.drawable, dc->u.x.gc, dc->w.DCOrgX + x, dc->w.DCOrgY + y + linePos, - dc->w.DCOrgX + x + info.width, dc->w.DCOrgY + y + linePos ); + dc->w.DCOrgX + x + width, dc->w.DCOrgY + y + linePos ); } if (lfStrikeOut) { long lineAscent, lineDescent; if (!TSXGetFontProperty( font, XA_STRIKEOUT_ASCENT, &lineAscent )) - lineAscent = font->ascent / 2; + lineAscent = ascent / 2; if (!TSXGetFontProperty( font, XA_STRIKEOUT_DESCENT, &lineDescent )) lineDescent = -lineAscent * 2 / 3; TSXSetLineAttributes( display, dc->u.x.gc, lineAscent + lineDescent, LineSolid, CapRound, JoinBevel ); TSXDrawLine( display, dc->u.x.drawable, dc->u.x.gc, dc->w.DCOrgX + x, dc->w.DCOrgY + y - lineAscent, - dc->w.DCOrgX + x + info.width, dc->w.DCOrgY + y - lineAscent ); + dc->w.DCOrgX + x + width, dc->w.DCOrgY + y - lineAscent ); } if (flags & ETO_CLIPPED) @@ -316,3 +337,4 @@ X11DRV_ExtTextOut( DC *dc, INT32 x, INT32 y, UINT32 flags, } return TRUE; } + diff --git a/graphics/x11drv/xfont.c b/graphics/x11drv/xfont.c index 85762c6e5e7..edefaf7f240 100644 --- a/graphics/x11drv/xfont.c +++ b/graphics/x11drv/xfont.c @@ -87,7 +87,8 @@ static BYTE CPTranslation[] = { EE_CHARSET, /* cp125-0 */ BALTIC_CHARSET /* cp125-7 */ }; -UINT16 XTextCaps = TC_OP_CHARACTER | TC_OP_STROKE | TC_CP_STROKE | +UINT16 XTextCaps = TC_OP_CHARACTER | TC_OP_STROKE | +TC_CP_STROKE | TC_CR_ANY | TC_SA_DOUBLE | TC_SA_INTEGER | TC_SA_CONTIN | TC_UA_ABLE | TC_SO_ABLE | TC_RA_ABLE; @@ -122,6 +123,10 @@ static INT32 XFONT_IsSubset(fontInfo*, fontInfo*); static void XFONT_CheckFIList(fontResource*, fontInfo*, int subset_action); static void XFONT_GrowFreeList(int start, int end); + +static Atom RAW_ASCENT; +static Atom RAW_DESCENT; + /*********************************************************************** * Helper macros from X distribution */ @@ -556,7 +561,8 @@ static BOOL32 LFD_ComposeLFD( fontObject* fo, * font info - http://www.microsoft.com/kb/articles/q65/1/23.htm * Windows font metrics - http://www.microsoft.com/kb/articles/q32/6/67.htm */ -static BOOL32 XFONT_GetLeading( LPIFONTINFO16 pFI, XFontStruct* x_fs, INT32* pIL, INT32* pEL ) +static BOOL32 XFONT_GetLeading( LPIFONTINFO16 pFI, XFontStruct* x_fs, INT32* + pIL, INT32* pEL, XFONTTRANS *XFT ) { unsigned long height; unsigned min = (unsigned char)pFI->dfFirstChar; @@ -564,11 +570,22 @@ static BOOL32 XFONT_GetLeading( LPIFONTINFO16 pFI, XFontStruct* x_fs, INT32* pIL BOOL32 bHaveCapHeight = (pFI->dfCharSet == ANSI_CHARSET && 'X' >= min && 'X' <= max ); if( pEL ) *pEL = 0; - if( TSXGetFontProperty(x_fs, XA_CAP_HEIGHT, &height) == False ) + + if(XFT) { + Atom RAW_CAP_HEIGHT = TSXInternAtom(display, "RAW_CAP_HEIGHT", TRUE); + if(TSXGetFontProperty(x_fs, RAW_CAP_HEIGHT, &height)) + *pIL = XFT->ascent - + (INT32)(hypotf(XFT->a, XFT->b) / 1000.0 * height); + else + *pIL = 0; + return bHaveCapHeight && x_fs->per_char; + } + + if( TSXGetFontProperty(x_fs, XA_CAP_HEIGHT, &height) == FALSE ) { - if( x_fs->per_char ) + if( x_fs->per_char ) if( bHaveCapHeight ) - height = x_fs->per_char['X' - min].ascent; + height = x_fs->per_char['X' - min].ascent; else if (x_fs->ascent >= x_fs->max_bounds.ascent) height = x_fs->max_bounds.ascent; @@ -586,7 +603,8 @@ static BOOL32 XFONT_GetLeading( LPIFONTINFO16 pFI, XFontStruct* x_fs, INT32* pIL return (bHaveCapHeight && x_fs->per_char); } -static INT32 XFONT_GetAvgCharWidth( LPIFONTINFO16 pFI, XFontStruct* x_fs) +static INT32 XFONT_GetAvgCharWidth( LPIFONTINFO16 pFI, XFontStruct* x_fs, + XFONTTRANS *XFT) { unsigned min = (unsigned char)pFI->dfFirstChar; unsigned max = (unsigned char)pFI->dfLastChar; @@ -597,7 +615,11 @@ static INT32 XFONT_GetAvgCharWidth( LPIFONTINFO16 pFI, XFontStruct* x_fs) for( j = 0, width = 0, chars = 0, max -= min; j <= max; j++ ) if( !CI_NONEXISTCHAR(x_fs->per_char + j) ) { - width += x_fs->per_char[j].width; + if(!XFT) + width += x_fs->per_char[j].width; + else + width += x_fs->per_char[j].attributes * + XFT->pixelsize / 1000.0; chars++; } return (width / chars); @@ -606,6 +628,28 @@ static INT32 XFONT_GetAvgCharWidth( LPIFONTINFO16 pFI, XFontStruct* x_fs) return x_fs->min_bounds.width; } +static INT32 XFONT_GetMaxCharWidth(fontObject *pfo) +{ + unsigned min = (unsigned char)pfo->fs->min_char_or_byte2; + unsigned max = (unsigned char)pfo->fs->max_char_or_byte2; + + if(!pfo->lpX11Trans) + return abs(pfo->fs->max_bounds.width); + + if( pfo->fs->per_char ) + { + int maxwidth, j; + for( j = 0, maxwidth = 0, max -= min; j <= max; j++ ) + if( !CI_NONEXISTCHAR(pfo->fs->per_char + j) ) + if(maxwidth < pfo->fs->per_char[j].attributes) + maxwidth = pfo->fs->per_char[j].attributes; + + maxwidth *= pfo->lpX11Trans->pixelsize / 1000.0; + return maxwidth; + } + return pfo->foAvgCharWidth; +} + /*********************************************************************** * XFONT_SetFontMetric * @@ -626,10 +670,10 @@ static void XFONT_SetFontMetric(fontInfo* fi, fontResource* fr, XFontStruct* xfs fi->df.dfPixWidth = (xfs->per_char) ? 0 : xfs->min_bounds.width; fi->df.dfMaxWidth = (INT16)abs(xfs->max_bounds.width); - if( XFONT_GetLeading( &fi->df, xfs, &il, &el ) ) + if( XFONT_GetLeading( &fi->df, xfs, &il, &el, NULL ) ) fi->df.dfAvgWidth = (INT16)xfs->per_char['X' - min].width; else - fi->df.dfAvgWidth = (INT16)XFONT_GetAvgCharWidth( &fi->df, xfs); + fi->df.dfAvgWidth = (INT16)XFONT_GetAvgCharWidth( &fi->df, xfs, NULL); fi->df.dfInternalLeading = (INT16)il; fi->df.dfExternalLeading = (INT16)el; @@ -659,12 +703,17 @@ static void XFONT_GetTextMetric( fontObject* pfo, LPTEXTMETRIC32A pTM ) { LPIFONTINFO16 pdf = &pfo->fi->df; - pTM->tmAscent = pfo->fs->ascent; - pTM->tmDescent = pfo->fs->descent; + if( ! pfo->lpX11Trans ) { + pTM->tmAscent = pfo->fs->ascent; + pTM->tmDescent = pfo->fs->descent; + } else { + pTM->tmAscent = pfo->lpX11Trans->ascent; + pTM->tmDescent = pfo->lpX11Trans->descent; + } pTM->tmHeight = pTM->tmAscent + pTM->tmDescent; pTM->tmAveCharWidth = pfo->foAvgCharWidth; - pTM->tmMaxCharWidth = abs(pfo->fs->max_bounds.width); + pTM->tmMaxCharWidth = pfo->foMaxCharWidth; pTM->tmInternalLeading = pfo->foInternalLeading; pTM->tmExternalLeading = pdf->dfExternalLeading; @@ -1504,6 +1553,10 @@ BOOL32 X11DRV_FONT_Init( DeviceCaps* pDevCaps ) /* update text caps parameter */ pDevCaps->textCaps = XTextCaps; + + RAW_ASCENT = TSXInternAtom(display, "RAW_ASCENT", TRUE); + RAW_DESCENT = TSXInternAtom(display, "RAW_DESCENT", TRUE); + return TRUE; } @@ -1886,6 +1939,9 @@ static fontObject* XFONT_GetCacheEntry() else fontMRU = (INT16)fontCache[j].lru; /* FIXME: lpXForm, lpPixmap */ + if(fontCache[j].lpX11Trans) + HeapFree( SystemHeap, 0, fontCache[j].lpX11Trans ); + TSXFreeFont( display, fontCache[j].fs ); memset( fontCache + j, 0, sizeof(fontObject) ); @@ -1927,6 +1983,50 @@ static int XFONT_ReleaseCacheEntry(fontObject* pfo) return -1; } +/********************************************************************** + * XFONT_SetX11Trans + */ +static BOOL32 XFONT_SetX11Trans( fontObject *pfo ) +{ + char *fontName; + Atom nameAtom; + int i; + char *cp, *start; + + XGetFontProperty( pfo->fs, XA_FONT, &nameAtom ); + fontName = XGetAtomName( display, nameAtom ); + for(i = 0, cp = fontName; i < 7; i++) { + cp = strchr(cp, '-'); + cp++; + } + if(*cp != '[') { + XFree(fontName); + return FALSE; + } + start = cp; + while((cp = strchr(cp, '~'))) + *cp = '-'; + +#define PX pfo->lpX11Trans + + sscanf(start, "[%f%f%f%f]", &PX->a, &PX->b, &PX->c, &PX->d); + XFree(fontName); + + XGetFontProperty( pfo->fs, RAW_ASCENT, &PX->RAW_ASCENT ); + XGetFontProperty( pfo->fs, RAW_DESCENT, &PX->RAW_DESCENT ); + + PX->pixelsize = hypotf(PX->a, PX->b); + PX->ascent = PX->pixelsize / 1000.0 * PX->RAW_ASCENT; + PX->descent = PX->pixelsize / 1000.0 * PX->RAW_DESCENT; + + TRACE(font, "[%f %f %f %f] RA = %ld RD = %ld\n", pfo->lpX11Trans->a, + pfo->lpX11Trans->b, pfo->lpX11Trans->c, pfo->lpX11Trans->d, + pfo->lpX11Trans->RAW_ASCENT, pfo->lpX11Trans->RAW_DESCENT); + +#undef PX + return TRUE; +} + /*********************************************************************** * X Device Font Objects */ @@ -1971,10 +2071,30 @@ static X_PHYSFONT XFONT_RealizeFont( LPLOGFONT16 plf ) if( (pfo->fs = TSXLoadQueryFont( display, lpLFD )) ) break; } while( uRelaxLevel ); - if( XFONT_GetLeading( &pfo->fi->df, pfo->fs, &i, NULL ) ) - pfo->foAvgCharWidth = (INT16)pfo->fs->per_char['X' - pfo->fs->min_char_or_byte2].width; + + if(pfo->lf.lfEscapement != 0) { + pfo->lpX11Trans = HeapAlloc(SystemHeap, 0, + sizeof(XFONTTRANS)); + if(!XFONT_SetX11Trans( pfo )) { + HeapFree(SystemHeap, 0, pfo->lpX11Trans); + pfo->lpX11Trans = NULL; + } + } + + if( XFONT_GetLeading( &pfo->fi->df, pfo->fs, &i, NULL, + pfo->lpX11Trans ) ) + + if(!pfo->lpX11Trans) + pfo->foAvgCharWidth = + (INT16)pfo->fs->per_char['X' - pfo->fs->min_char_or_byte2].width; + else + pfo->foAvgCharWidth = + (INT16)pfo->fs->per_char['X' - pfo->fs->min_char_or_byte2].attributes + * pfo->lpX11Trans->pixelsize / 1000.0; else - pfo->foAvgCharWidth = (INT16)XFONT_GetAvgCharWidth( &pfo->fi->df, pfo->fs ); + pfo->foAvgCharWidth = (INT16)XFONT_GetAvgCharWidth( + &pfo->fi->df, pfo->fs, pfo->lpX11Trans ); + pfo->foMaxCharWidth = (INT16)XFONT_GetMaxCharWidth(pfo); pfo->foInternalLeading = (INT16)i; /* FIXME: If we've got a soft font or @@ -2135,17 +2255,34 @@ BOOL32 X11DRV_EnumDeviceFonts( DC* dc, LPLOGFONT16 plf, BOOL32 X11DRV_GetTextExtentPoint( DC *dc, LPCSTR str, INT32 count, LPSIZE32 size ) { - XFontStruct* pfs = XFONT_GetFontStruct( dc->u.x.font ); - if( pfs ) - { - int dir, ascent, descent; - XCharStruct info; + fontObject* pfo = XFONT_GetFontObject( dc->u.x.font ); + if( pfo ) { + if( !pfo->lpX11Trans ) { + int dir, ascent, descent; + XCharStruct info; - TSXTextExtents( pfs, str, count, &dir, &ascent, &descent, &info ); - size->cx = abs((info.width + dc->w.breakRem + count * dc->w.charExtra) - * dc->wndExtX / dc->vportExtX); - size->cy = abs((pfs->ascent + pfs->descent) * dc->wndExtY / dc->vportExtY); + TSXTextExtents( pfo->fs, str, count, &dir, &ascent, &descent, &info ); + size->cx = abs((info.width + dc->w.breakRem + count * + dc->w.charExtra) * dc->wndExtX / dc->vportExtX); + size->cy = abs((pfo->fs->ascent + pfo->fs->descent) * + dc->wndExtY / dc->vportExtY); + } else { + INT32 i; + float x = 0.0, y = 0.0; + for(i = 0; i < count; i++) { + x += pfo->fs->per_char ? + pfo->fs->per_char[str[i] - pfo->fs->min_char_or_byte2].attributes : + pfo->fs->min_bounds.attributes; + } + y = pfo->lpX11Trans->RAW_ASCENT + pfo->lpX11Trans->RAW_DESCENT; + TRACE(font, "x = %f y = %f\n", x, y); + x *= pfo->lpX11Trans->pixelsize / 1000.0; + y *= pfo->lpX11Trans->pixelsize / 1000.0; + size->cx = fabsf((x + dc->w.breakRem + count * dc->w.charExtra) * + dc->wndExtX / dc->vportExtX); + size->cy = fabsf(y * dc->wndExtY / dc->vportExtY); + } return TRUE; } return FALSE; @@ -2174,30 +2311,40 @@ BOOL32 X11DRV_GetTextMetrics(DC *dc, TEXTMETRIC32A *metrics) BOOL32 X11DRV_GetCharWidth( DC *dc, UINT32 firstChar, UINT32 lastChar, LPINT32 buffer ) { - XFontStruct* xfs = XFONT_GetFontStruct( dc->u.x.font ); + fontObject* pfo = XFONT_GetFontObject( dc->u.x.font ); - if( xfs ) + if( pfo ) { int i; - if (xfs->per_char == NULL) + if (pfo->fs->per_char == NULL) for (i = firstChar; i <= lastChar; i++) - *buffer++ = xfs->min_bounds.width; + if(pfo->lpX11Trans) + *buffer++ = pfo->fs->min_bounds.attributes * + pfo->lpX11Trans->pixelsize / 1000.0; + else + *buffer++ = pfo->fs->min_bounds.width; else { XCharStruct *cs, *def; static XCharStruct __null_char = { 0, 0, 0, 0, 0, 0 }; - CI_GET_CHAR_INFO(xfs, xfs->default_char, &__null_char, def); + CI_GET_CHAR_INFO(pfo->fs, pfo->fs->default_char, &__null_char, + def); for (i = firstChar; i <= lastChar; i++) { - if (i >= xfs->min_char_or_byte2 && i <= xfs->max_char_or_byte2) + if (i >= pfo->fs->min_char_or_byte2 && + i <= pfo->fs->max_char_or_byte2) { - cs = &xfs->per_char[(i - xfs->min_char_or_byte2)]; + cs = &pfo->fs->per_char[(i - pfo->fs->min_char_or_byte2)]; if (CI_NONEXISTCHAR(cs)) cs = def; } else cs = def; - *buffer++ = MAX(cs->width, 0 ); + if(pfo->lpX11Trans) + *buffer++ = MAX(cs->attributes, 0) * + pfo->lpX11Trans->pixelsize / 1000.0; + else + *buffer++ = MAX(cs->width, 0 ); } } diff --git a/if1632/builtin.c b/if1632/builtin.c index 40c3652dd7f..b300732d65c 100644 --- a/if1632/builtin.c +++ b/if1632/builtin.c @@ -18,6 +18,8 @@ #include "stackframe.h" #include "user.h" #include "process.h" +#include "snoop.h" +#include "task.h" #include "debug.h" /* Built-in modules descriptors */ @@ -114,8 +116,8 @@ static BUILTIN16_DLL BuiltinDLLs[] = { &TOOLHELP_Descriptor, 0 }, { &TYPELIB_Descriptor, DLL_FLAG_NOT_USED }, { &VER_Descriptor, 0 }, - { &W32SYS_Descriptor, 0 }, - { &WIN32S16_Descriptor, 0 }, + { &W32SYS_Descriptor, DLL_FLAG_NOT_USED }, + { &WIN32S16_Descriptor, DLL_FLAG_NOT_USED }, { &WIN87EM_Descriptor, DLL_FLAG_NOT_USED }, { &WINASPI_Descriptor, 0 }, { &WINEPS_Descriptor, DLL_FLAG_ALWAYS_USED }, @@ -217,6 +219,11 @@ BOOL32 BUILTIN_Init(void) GET_CS(cs); GET_DS(ds); NE_SetEntryPoint( hModule, 454, cs ); NE_SetEntryPoint( hModule, 455, ds ); + + /* Initialize KERNEL.THHOOK */ + + TASK_InstallTHHook((THHOOK *)PTR_SEG_TO_LIN( + (SEGPTR)NE_GetEntryPoint( hModule, 332 ))); /* Initialize the real-mode selector entry points */ @@ -248,6 +255,8 @@ BOOL32 BUILTIN_Init(void) INT_SetHandler( vector, proc ); } + SNOOP16_Init(); + return TRUE; } diff --git a/if1632/gdi.spec b/if1632/gdi.spec index 34322b4b459..d0a7ef17912 100644 --- a/if1632/gdi.spec +++ b/if1632/gdi.spec @@ -327,7 +327,7 @@ file gdi.exe 499 stub GetEnhMetafileHeader 501 stub GetEnhMetafilePaletteEntries 502 pascal16 PolyBezier(word ptr word) PolyBezier16 -503 stub PolyBezierTo +503 pascal16 PolyBezierTo(word ptr word) PolyBezierTo16 504 stub PlayEnhMetafileRecord 505 stub SetEnhMetafileBits 506 stub SetMetaRgn diff --git a/if1632/kernel.spec b/if1632/kernel.spec index a57c9872ecf..918f129c427 100644 --- a/if1632/kernel.spec +++ b/if1632/kernel.spec @@ -253,7 +253,7 @@ file krnl386.exe 327 stub KERNEL_327 328 stub _DebugOutput 329 pascal16 K329(str word) DebugFillBuffer -#332 stub THHOOK +332 long THHOOK(0 0 0 0 0 0 0 0) 334 pascal16 IsBadReadPtr(segptr word) IsBadReadPtr16 335 pascal16 IsBadWritePtr(segptr word) IsBadWritePtr16 336 pascal16 IsBadCodePtr(segptr) IsBadCodePtr16 @@ -318,7 +318,7 @@ file krnl386.exe 471 pascal KERNEL_471() _KERNEL_471 472 register KERNEL_472() _KERNEL_472 473 stub KERNEL_473 -475 return KERNEL_475 0 0 +475 register KERNEL_475() _KERNEL_475 480 stub KERNEL_480 481 stub KERNEL_481 482 pascal LoadLibrary32(str) LoadLibrary32A diff --git a/if1632/mmsystem.spec b/if1632/mmsystem.spec index 4b118bfcb86..d13ae12f2e3 100644 --- a/if1632/mmsystem.spec +++ b/if1632/mmsystem.spec @@ -134,7 +134,7 @@ type win16 900 pascal mmTaskCreate(ptr long long) mmTaskCreate16 902 stub MMTASKBLOCK 903 pascal mmTaskSignal(word) mmTaskSignal16 -904 stub MMGETCURRENTTASK +904 pascal mmGetCurrentTask() WIN16_GetCurrentTask #just the same 905 stub MMTASKYIELD 1100 pascal DRVOPEN(str str long) DrvOpen 1101 pascal DRVCLOSE(word long long) DrvClose diff --git a/if1632/shell.spec b/if1632/shell.spec index 2d9b1305933..f8a99b2de94 100644 --- a/if1632/shell.spec +++ b/if1632/shell.spec @@ -22,8 +22,8 @@ type win16 38 pascal FindEnvironmentString(ptr) FindEnvironmentString 39 pascal16 InternalExtractIcon(word ptr s_word word) InternalExtractIcon 40 stub ExtractIconEx - 98 stub SHL3216_THUNKDATA16 - 99 stub SHL1632_THUNKDATA16 +# 98 stub SHL3216_THUNKDATA16 +# 99 stub SHL1632_THUNKDATA16 #100 4 0550 HERETHARBETYGARS exported, shared data #101 8 010e FINDEXEDLGPROC exported, shared data diff --git a/if1632/snoop.c b/if1632/snoop.c index e2246625ed6..3935901345a 100644 --- a/if1632/snoop.c +++ b/if1632/snoop.c @@ -186,6 +186,16 @@ SNOOP16_GetProcAddress16(HMODULE16 hmod,DWORD ordinal,FARPROC16 origfun) { fun->name = HEAP_strdupA(SystemHeap,0,name); else fun->name = HEAP_strdupA(SystemHeap,0,""); + /* more magic. do not try to snoop thunk data entries (MMSYSTEM) */ + if (strchr(fun->name,'_')) { + char *s=strchr(fun->name,'_'); + + if (!strncasecmp(s,"_thunkdata",10)) { + HeapFree(SystemHeap,0,fun->name); + fun->name = NULL; + return origfun; + } + } fun->lcall = 0x9a; fun->snr = MAKELONG(0,xsnr); fun->origfun = origfun; @@ -314,3 +324,9 @@ FARPROC16 SNOOP16_GetProcAddress16(HMODULE16 hmod,DWORD ordinal,FARPROC16 origfu return origfun; } #endif /* !__i386__ */ + +void +SNOOP16_Init() { + fnSNOOP16_GetProcAddress16=SNOOP16_GetProcAddress16; + fnSNOOP16_RegisterDLL=SNOOP16_RegisterDLL; +} diff --git a/if1632/wprocs.spec b/if1632/wprocs.spec index 965b6bbedce..3695a741200 100644 --- a/if1632/wprocs.spec +++ b/if1632/wprocs.spec @@ -286,3 +286,4 @@ type win16 #415 register VXD_Printer() VXD_Printer 423 register VXD_Shell() VXD_Shell 433 register VXD_PageFile() VXD_PageFile +445 register VXD_Win32s() VXD_Win32s diff --git a/include/bitmap.h b/include/bitmap.h index a9e8c3367b2..5993b1acab0 100644 --- a/include/bitmap.h +++ b/include/bitmap.h @@ -22,6 +22,24 @@ typedef struct #endif + /* Additional info for DIB section objects */ +typedef struct +{ + /* Windows DIB section */ + DIBSECTION dibSection; + + /* Mapping status */ + enum { DIB_NoHandler, DIB_InSync, DIB_AppMod, DIB_GdiMod } status; + + /* Color map info */ + int nColorMap; + int *colorMap; + + /* Cached XImage */ + XImage *image; + +} DIBSECTIONOBJ; + /* GDI logical bitmap object */ typedef struct { @@ -31,11 +49,7 @@ typedef struct SIZE16 size; /* For SetBitmapDimension() */ /* For device-independent bitmaps: */ - DIBSECTION *dibSection; - RGBQUAD *colorMap; - int nColorMap; - /* DIBSECTION mapping status */ - enum { DIB_NoHandler, DIB_InSync, DIB_AppMod, DIB_GdiMod } status; + DIBSECTIONOBJ *dib; } BITMAPOBJ; @@ -71,7 +85,8 @@ extern int DIB_GetDIBWidthBytes( int width, int depth ); extern int DIB_GetXImageWidthBytes( int width, int depth ); extern int DIB_BitmapInfoSize( BITMAPINFO * info, WORD coloruse ); extern void DIB_UpdateDIBSection( DC *dc, BOOL32 toDIB ); - +extern void DIB_DeleteDIBSection( BITMAPOBJ *bmp ); +extern void DIB_SelectDIBSection( DC *dc, BITMAPOBJ *bmp ); /* objects/oembitmap.c */ extern BOOL32 OBM_Init(void); diff --git a/include/commctrl.h b/include/commctrl.h index 523cca2c59a..32a5372f814 100644 --- a/include/commctrl.h +++ b/include/commctrl.h @@ -7,17 +7,16 @@ #include "windows.h" +BOOL32 WINAPI ShowHideMenuCtl (HWND32, UINT32, LPINT32); VOID WINAPI GetEffectiveClientRect (HWND32, LPRECT32, LPINT32); - - -void WINAPI InitCommonControls(void); +VOID WINAPI InitCommonControls (VOID); typedef struct tagINITCOMMONCONTROLSEX { DWORD dwSize; DWORD dwICC; } INITCOMMONCONTROLSEX, *LPINITCOMMONCONTROLSEX; -BOOL32 WINAPI InitCommonControlsEx(LPINITCOMMONCONTROLSEX); +BOOL32 WINAPI InitCommonControlsEx (LPINITCOMMONCONTROLSEX); #define ICC_LISTVIEW_CLASSES 0x00000001 /* listview, header */ #define ICC_TREEVIEW_CLASSES 0x00000002 /* treeview, tooltips */ @@ -52,9 +51,12 @@ BOOL32 WINAPI InitCommonControlsEx(LPINITCOMMONCONTROLSEX); /* common control shared messages */ -#define CCM_FIRST 0x2000 +#define CCM_FIRST 0x2000 -#define CCM_SETBKCOLOR (CCM_FIRST+1) /* lParam = bkColor */ +#define CCM_SETBKCOLOR (CCM_FIRST+1) /* lParam = bkColor */ + +#define CCM_SETUNICODEFORMAT (CCM_FIRST+5) +#define CCM_GETUNICODEFORMAT (CCM_FIRST+6) /* common notification codes */ @@ -704,4 +706,184 @@ HBITMAP32 WINAPI CreateMappedBitmap (HINSTANCE32, INT32, UINT32, LPCOLORMAP, INT32); +/* Tool tips */ + +#define TOOLTIPS_CLASS16 "tooltips_class" +#define TOOLTIPS_CLASS32W L"tooltips_class32" +#define TOOLTIPS_CLASS32A "tooltips_class32" +#define TOOLTIPS_CLASS WINELIB_NAME_AW(TOOLTIPS_CLASS) + +#define TTS_ALWAYSTIP 0x01 +#define TTS_NOPREFIX 0x02 + +#define TTF_IDISHWND 0x0001 +#define TTF_CENTERTIP 0x0002 +#define TTF_RTLREADING 0x0004 +#define TTF_SUBCLASS 0x0010 +#define TTF_TRACK 0x0020 +#define TTF_ABSOLUTE 0x0080 +#define TTF_TRANSPARENT 0x0100 +#define TTF_DI_SETITEM 0x8000 /* valid only on the TTN_NEEDTEXT callback */ + + +#define TTDT_AUTOMATIC 0 +#define TTDT_RESHOW 1 +#define TTDT_AUTOPOP 2 +#define TTDT_INITIAL 3 + + +#define TTM_ACTIVATE (WM_USER+1) +#define TTM_SETDELAYTIME (WM_USER+3) +#define TTM_ADDTOOL32A (WM_USER+4) +#define TTM_ADDTOOL32W (WM_USER+50) +#define TTM_ADDTOOL WINELIB_NAME_AW(TTM_ADDTOOL) +#define TTM_DELTOOL32A (WM_USER+5) +#define TTM_DELTOOL32W (WM_USER+51) +#define TTM_DELTOOL WINELIB_NAME_AW(TTM_DELTOOL) +#define TTM_NEWTOOLRECT32A (WM_USER+6) +#define TTM_NEWTOOLRECT32W (WM_USER+52) +#define TTM_NEWTOOLRECT WINELIB_NAME_AW(TTM_NEWTOOLRECT) +#define TTM_RELAYEVENT (WM_USER+7) +#define TTM_GETTOOLINFO32A (WM_USER+8) +#define TTM_GETTOOLINFO32W (WM_USER+53) +#define TTM_GETTOOLINFO WINELIB_NAME_AW(TTM_GETTOOLINFO) +#define TTM_SETTOOLINFO32A (WM_USER+9) +#define TTM_SETTOOLINFO32W (WM_USER+54) +#define TTM_SETTOOLINFO WINELIB_NAME_AW(TTM_SETTOOLINFO) +#define TTM_HITTEST32A (WM_USER+10) +#define TTM_HITTEST32W (WM_USER+55) +#define TTM_HITTEST WINELIB_NAME_AW(TTM_HITTEST) +#define TTM_GETTEXT32A (WM_USER+11) +#define TTM_GETTEXT32W (WM_USER+56) +#define TTM_GETTEXT WINELIB_NAME_AW(TTM_GETTEXT) +#define TTM_UPDATETIPTEXT32A (WM_USER+12) +#define TTM_UPDATETIPTEXT32W (WM_USER+57) +#define TTM_UPDATETIPTEXT WINELIB_NAME_AW(TTM_UPDATETIPTEXT) +#define TTM_GETTOOLCOUNT (WM_USER+13) +#define TTM_ENUMTOOLS32A (WM_USER+14) +#define TTM_ENUMTOOLS32W (WM_USER+58) +#define TTM_ENUMTOOLS WINELIB_NAME_AW(TTM_ENUMTOOLS) +#define TTM_GETCURRENTTOOL32A (WM_USER+15) +#define TTM_GETCURRENTTOOL32W (WM_USER+59) +#define TTM_GETCURRENTTOOL WINELIB_NAME_AW(TTM_GETCURRENTTOOL) +#define TTM_WINDOWFROMPOINT (WM_USER+16) +#define TTM_TRACKACTIVATE (WM_USER+17) +#define TTM_TRACKPOSITION (WM_USER+18) +#define TTM_SETTIPBKCOLOR (WM_USER+19) +#define TTM_SETTIPTEXTCOLOR (WM_USER+20) +#define TTM_GETDELAYTIME (WM_USER+21) +#define TTM_GETTIPBKCOLOR (WM_USER+22) +#define TTM_GETTIPTEXTCOLOR (WM_USER+23) +#define TTM_SETMAXTIPWIDTH (WM_USER+24) +#define TTM_GETMAXTIPWIDTH (WM_USER+25) +#define TTM_SETMARGIN (WM_USER+26) +#define TTM_GETMARGIN (WM_USER+27) +#define TTM_POP (WM_USER+28) +#define TTM_UPDATE (WM_USER+29) + +typedef struct tagTOOLINFOA { + UINT32 cbSize; + UINT32 uFlags; + HWND32 hwnd; + UINT32 uId; + RECT32 rect; + HINSTANCE32 hinst; + LPSTR lpszText; + LPARAM lParam; +} TOOLINFOA, *PTOOLINFOA, *LPTOOLINFOA; + +typedef struct tagTOOLINFOW { + UINT32 cbSize; + UINT32 uFlags; + HWND32 hwnd; + UINT32 uId; + RECT32 rect; + HINSTANCE32 hinst; + LPWSTR lpszText; + LPARAM lParam; +} TOOLINFOW, *PTOOLINFOW, *LPTOOLINFOW; + + + + + +/* Rebar control */ + +#define REBARCLASSNAME16 "ReBarWindow" +#define REBARCLASSNAME32A "ReBarWindow32" +#define REBARCLASSNAME32W L"ReBarWindow32" +#define REBARCLASSNAME WINELIB_NAME_AW(REBARCLASSNAME) + + +/* Trackbar control */ + +#define TRACKBAR_CLASS16 "msctls_trackbar" +#define TRACKBAR_CLASS32A "msctls_trackbar32" +#define TRACKBAR_CLASS32W L"msctls_trackbar32" +#define TRACKBAR_CLASS WINELIB_NAME_AW(TRACKBAR_CLASS) + +#define TBS_AUTOTICKS 0x0001 +#define TBS_VERT 0x0002 +#define TBS_HORZ 0x0000 +#define TBS_TOP 0x0004 +#define TBS_BOTTOM 0x0000 +#define TBS_LEFT 0x0004 +#define TBS_RIGHT 0x0000 +#define TBS_BOTH 0x0008 +#define TBS_NOTICKS 0x0010 +#define TBS_ENABLESELRANGE 0x0020 +#define TBS_FIXEDLENGTH 0x0040 +#define TBS_NOTHUMB 0x0080 +#define TBS_TOOLTIPS 0x0100 + +#define TBM_GETPOS (WM_USER) +#define TBM_GETRANGEMIN (WM_USER+1) +#define TBM_GETRANGEMAX (WM_USER+2) +#define TBM_GETTIC (WM_USER+3) +#define TBM_SETTIC (WM_USER+4) +#define TBM_SETPOS (WM_USER+5) + +#define TBM_GETSELSTART (WM_USER+17) +#define TBM_GETSELEND (WM_USER+18) +#define TBM_CLEARSEL (WM_USER+19) +#define TBM_SETTICFREQ (WM_USER+20) +#define TBM_SETPAGESIZE (WM_USER+21) +#define TBM_GETPAGESIZE (WM_USER+22) +#define TBM_SETLINESIZE (WM_USER+23) +#define TBM_GETLINESIZE (WM_USER+24) +#define TBM_GETTHUMBRECT (WM_USER+25) +#define TBM_GETCHANNELRECT (WM_USER+26) +#define TBM_SETTHUMBLENGTH (WM_USER+27) +#define TBM_GETTHUMBLENGTH (WM_USER+28) + + +/* Pager control */ + +#define WC_PAGESCROLLER32A "SysPager" +#define WC_PAGESCROLLER32W L"SysPager" +#define WC_PAGESCROLLER WINELIB_NAME_AW(WC_PAGESCROLLER) + + +/* Treeview control */ + +#define WC_TREEVIEW32A "SysTreeView32" +#define WC_TREEVIEW32W L"SysTreeView32" +#define WC_TREEVIEW WINELIB_NAME_AW(WC_TREEVIEW) + +#define TV_FIRST 0x1100 + + +/* Listview control */ + +#define WC_LISTVIEW32A "SysListView32" +#define WC_LISTVIEW32W L"SysListView32" +#define WC_LISTVIEW WINELIB_NAME_AW(WC_LISTVIEW) + +#define LVM_FIRST 0x1000 + +#define LVM_SETBKCOLOR (LVM_FIRST+1) +#define LVM_SETIMAGELIST (LVM_FIRST+3) + + + #endif /* __WINE_COMMCTRL_H */ diff --git a/include/ddraw.h b/include/ddraw.h index 04d49c50a9d..cc0818e7520 100644 --- a/include/ddraw.h +++ b/include/ddraw.h @@ -2,6 +2,9 @@ #define __WINE_DDRAW_H #include "ts_xlib.h" +#ifdef HAVE_LIBXXSHM +#include "ts_xshm.h" +#endif #ifndef DIRECTDRAW_VERSION #define DIRECTDRAW_VERSION 0x0500 @@ -869,21 +872,34 @@ FAR * ) PURE; STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE32 ) PURE; } *LPDIRECTDRAW_VTABLE,IDirectDraw_VTable; -struct _directdrawdata { +struct _common_directdrawdata { DWORD depth; - DWORD vp_width,vp_height; /* viewport dimension */ DWORD height,width; /* SetDisplayMode */ - DWORD fb_width,fb_height,fb_banksize,fb_memsize; HWND32 mainwindow; +}; + +struct _dga_directdrawdata { + DWORD fb_width,fb_height,fb_banksize,fb_memsize; void *fb_addr; unsigned int vpmask; }; +struct _xlib_directdrawdata { + Window drawable; + /* are these needed for anything? (draw_surf is the active surface) + IDirectDrawSurface *surfs; + DWORD num_surfs, alloc_surfs, draw_surf; */ +}; struct IDirectDraw { LPDIRECTDRAW_VTABLE lpvtbl; DWORD ref; - struct _directdrawdata d; + struct _common_directdrawdata d; + union { + struct _xlib_directdrawdata xlib; + struct _xlib_directdrawdata xshm; + struct _dga_directdrawdata dga; + } e; }; #undef THIS @@ -932,19 +948,41 @@ FAR * ) PURE; /* MUST HAVE THE SAME LAYOUT AS struct IDirectDraw */ struct IDirectDraw2 { - LPDIRECTDRAW2_VTABLE lpvtbl; - DWORD ref; - struct _directdrawdata d; + LPDIRECTDRAW2_VTABLE lpvtbl; + DWORD ref; + struct _common_directdrawdata d; + union { + struct _xlib_directdrawdata xlib; + /* only different in image create&put */ + struct _xlib_directdrawdata xshm; + struct _dga_directdrawdata dga; + } e; }; #undef THIS #define THIS LPDIRECTDRAWSURFACE this -struct _directdrawsurface { - LPVOID surface; +struct _common_directdrawsurface { LPDIRECTDRAWPALETTE palette; - DWORD fb_height,lpitch,width,height; LPDIRECTDRAW ddraw; LPDIRECTDRAWSURFACE backbuffer; + LPVOID surface; + DWORD lpitch,width,height; +}; + +struct _dga_directdrawsurface { + DWORD fb_height; +}; + +struct _xshm_directdrawsurface { + XImage *image; + BOOL32 surface_is_image_data; +#ifdef HAVE_LIBXXSHM + XShmSegmentInfo shminfo; +#endif +}; +struct _xlib_directdrawsurface { + XImage *image; + BOOL32 surface_is_image_data; }; typedef struct IDirectDrawSurface_VTable { @@ -990,7 +1028,12 @@ typedef struct IDirectDrawSurface_VTable { struct IDirectDrawSurface { LPDIRECTDRAWSURFACE_VTABLE lpvtbl; DWORD ref; - struct _directdrawsurface s; + struct _common_directdrawsurface s; + union { + struct _dga_directdrawsurface dga; + struct _xshm_directdrawsurface xshm; + struct _xlib_directdrawsurface xlib; + } t; }; #undef THIS #define THIS LPDIRECTDRAWSURFACE2 this @@ -1007,7 +1050,8 @@ typedef struct IDirectDrawSurface2_VTable { STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE; STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE2, LPRECT32,DWORD) PURE; STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE2) PURE; - STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE; STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE; + STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE; + STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE; STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE2, DWORD) PURE; STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE2 FAR *) PURE; STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE; @@ -1042,7 +1086,12 @@ typedef struct IDirectDrawSurface2_VTable { struct IDirectDrawSurface2 { LPDIRECTDRAWSURFACE2_VTABLE lpvtbl; DWORD ref; - struct _directdrawsurface s; + struct _common_directdrawsurface s; + union { + struct _dga_directdrawsurface dga; + struct _xlib_directdrawsurface xshm; + struct _xlib_directdrawsurface xlib; + } t; }; #undef THIS #define THIS LPDIRECTDRAWSURFACE3 this @@ -1097,7 +1146,12 @@ typedef struct IDirectDrawSurface3_VTable { struct IDirectDrawSurface3 { LPDIRECTDRAWSURFACE3_VTABLE lpvtbl; DWORD ref; - struct _directdrawsurface s; + struct _common_directdrawsurface s; + union { + struct _dga_directdrawsurface dga; + struct _xlib_directdrawsurface xshm; + struct _xlib_directdrawsurface xlib; + } t; }; #undef THIS diff --git a/include/debug.h b/include/debug.h index ad65c532a86..b21d3849378 100644 --- a/include/debug.h +++ b/include/debug.h @@ -5,125 +5,138 @@ #endif /* Definitions for channels identifiers */ -#define dbch_accel 0 -#define dbch_advapi 1 -#define dbch_aspi 2 -#define dbch_atom 3 -#define dbch_bitblt 4 -#define dbch_bitmap 5 -#define dbch_caret 6 -#define dbch_cd 7 -#define dbch_cdaudio 8 -#define dbch_class 9 -#define dbch_clipboard 10 -#define dbch_clipping 11 -#define dbch_combo 12 -#define dbch_comm 13 -#define dbch_commctrl 14 -#define dbch_commdlg 15 -#define dbch_console 16 -#define dbch_crtdll 17 -#define dbch_cursor 18 -#define dbch_dc 19 -#define dbch_dde 20 -#define dbch_ddeml 21 -#define dbch_ddraw 22 -#define dbch_debug 23 -#define dbch_dialog 24 -#define dbch_dinput 25 -#define dbch_dll 26 -#define dbch_dosfs 27 -#define dbch_dosmem 28 -#define dbch_dplay 29 -#define dbch_driver 30 -#define dbch_dsound 31 -#define dbch_edit 32 -#define dbch_event 33 -#define dbch_exec 34 -#define dbch_file 35 -#define dbch_fixup 36 -#define dbch_font 37 -#define dbch_gdi 38 -#define dbch_global 39 -#define dbch_graphics 40 -#define dbch_header 41 -#define dbch_heap 42 -#define dbch_hook 43 -#define dbch_icon 44 -#define dbch_imagelist 45 -#define dbch_int 46 -#define dbch_int21 47 -#define dbch_int31 48 -#define dbch_key 49 -#define dbch_keyboard 50 -#define dbch_ldt 51 -#define dbch_listbox 52 -#define dbch_local 53 -#define dbch_mci 54 -#define dbch_mcianim 55 -#define dbch_mciwave 56 -#define dbch_mdi 57 -#define dbch_menu 58 -#define dbch_message 59 -#define dbch_metafile 60 -#define dbch_midi 61 -#define dbch_mmaux 62 -#define dbch_mmio 63 -#define dbch_mmsys 64 -#define dbch_mmtime 65 -#define dbch_module 66 -#define dbch_mpr 67 -#define dbch_msg 68 -#define dbch_nonclient 69 -#define dbch_ntdll 70 -#define dbch_ole 71 -#define dbch_palette 72 -#define dbch_print 73 -#define dbch_process 74 -#define dbch_profile 75 -#define dbch_progress 76 -#define dbch_prop 77 -#define dbch_psdrv 78 -#define dbch_reg 79 -#define dbch_region 80 -#define dbch_relay 81 -#define dbch_resource 82 -#define dbch_scroll 83 -#define dbch_security 84 -#define dbch_segment 85 -#define dbch_selector 86 -#define dbch_sem 87 -#define dbch_sendmsg 88 -#define dbch_shell 89 -#define dbch_shm 90 -#define dbch_snoop 91 -#define dbch_sound 92 -#define dbch_static 93 -#define dbch_stress 94 -#define dbch_string 95 -#define dbch_syscolor 96 -#define dbch_system 97 -#define dbch_task 98 -#define dbch_text 99 -#define dbch_thread 100 -#define dbch_thunk 101 -#define dbch_timer 102 -#define dbch_toolbar 103 -#define dbch_toolhelp 104 -#define dbch_tweak 105 -#define dbch_uitools 106 -#define dbch_updown 107 -#define dbch_ver 108 -#define dbch_virtual 109 -#define dbch_vxd 110 -#define dbch_win 111 -#define dbch_win16drv 112 -#define dbch_win32 113 -#define dbch_wing 114 -#define dbch_winsock 115 -#define dbch_wnet 116 -#define dbch_x11 117 -#define dbch_x11drv 118 +#define dbch_1 0 +#define dbch_2 1 +#define dbch_3 2 +#define dbch_4 3 +#define dbch_5 4 +#define dbch_6 5 +#define dbch_accel 6 +#define dbch_advapi 7 +#define dbch_aspi 8 +#define dbch_atom 9 +#define dbch_bitblt 10 +#define dbch_bitmap 11 +#define dbch_caret 12 +#define dbch_cd 13 +#define dbch_cdaudio 14 +#define dbch_class 15 +#define dbch_clipboard 16 +#define dbch_clipping 17 +#define dbch_combo 18 +#define dbch_comm 19 +#define dbch_commctrl 20 +#define dbch_commdlg 21 +#define dbch_console 22 +#define dbch_crtdll 23 +#define dbch_cursor 24 +#define dbch_dc 25 +#define dbch_dde 26 +#define dbch_ddeml 27 +#define dbch_ddraw 28 +#define dbch_debug 29 +#define dbch_dialog 30 +#define dbch_dinput 31 +#define dbch_dll 32 +#define dbch_dosfs 33 +#define dbch_dosmem 34 +#define dbch_dplay 35 +#define dbch_driver 36 +#define dbch_dsound 37 +#define dbch_edit 38 +#define dbch_event 39 +#define dbch_exec 40 +#define dbch_file 41 +#define dbch_fixup 42 +#define dbch_font 43 +#define dbch_gdi 44 +#define dbch_global 45 +#define dbch_graphics 46 +#define dbch_header 47 +#define dbch_heap 48 +#define dbch_hook 49 +#define dbch_icon 50 +#define dbch_imagelist 51 +#define dbch_int 52 +#define dbch_int21 53 +#define dbch_int31 54 +#define dbch_key 55 +#define dbch_keyboard 56 +#define dbch_ldt 57 +#define dbch_listbox 58 +#define dbch_listview 59 +#define dbch_local 60 +#define dbch_mci 61 +#define dbch_mcianim 62 +#define dbch_mciwave 63 +#define dbch_mdi 64 +#define dbch_menu 65 +#define dbch_message 66 +#define dbch_metafile 67 +#define dbch_midi 68 +#define dbch_mmaux 69 +#define dbch_mmio 70 +#define dbch_mmsys 71 +#define dbch_mmtime 72 +#define dbch_module 73 +#define dbch_mpr 74 +#define dbch_msg 75 +#define dbch_nonclient 76 +#define dbch_ntdll 77 +#define dbch_ole 78 +#define dbch_pager 79 +#define dbch_palette 80 +#define dbch_print 81 +#define dbch_process 82 +#define dbch_profile 83 +#define dbch_progress 84 +#define dbch_prop 85 +#define dbch_psdrv 86 +#define dbch_rebar 87 +#define dbch_reg 88 +#define dbch_region 89 +#define dbch_relay 90 +#define dbch_resource 91 +#define dbch_s 92 +#define dbch_scroll 93 +#define dbch_security 94 +#define dbch_segment 95 +#define dbch_selector 96 +#define dbch_sem 97 +#define dbch_sendmsg 98 +#define dbch_shell 99 +#define dbch_shm 100 +#define dbch_snoop 101 +#define dbch_sound 102 +#define dbch_static 103 +#define dbch_stress 104 +#define dbch_string 105 +#define dbch_syscolor 106 +#define dbch_system 107 +#define dbch_task 108 +#define dbch_text 109 +#define dbch_thread 110 +#define dbch_thunk 111 +#define dbch_timer 112 +#define dbch_toolbar 113 +#define dbch_toolhelp 114 +#define dbch_tooltips 115 +#define dbch_trackbar 116 +#define dbch_treeview 117 +#define dbch_tweak 118 +#define dbch_uitools 119 +#define dbch_updown 120 +#define dbch_ver 121 +#define dbch_virtual 122 +#define dbch_vxd 123 +#define dbch_win 124 +#define dbch_win16drv 125 +#define dbch_win32 126 +#define dbch_wing 127 +#define dbch_winsock 128 +#define dbch_wnet 129 +#define dbch_x11 130 +#define dbch_x11drv 131 /* Definitions for classes identifiers */ #define dbcl_fixme 0 #define dbcl_err 1 diff --git a/include/debugdefs.h b/include/debugdefs.h index a8ddd2fa759..3a8bb3042ba 100644 --- a/include/debugdefs.h +++ b/include/debugdefs.h @@ -4,7 +4,7 @@ #include "debugtools.h" #endif -#define DEBUG_CHANNEL_COUNT 119 +#define DEBUG_CHANNEL_COUNT 132 #ifdef DEBUG_RUNTIME short debug_msg_enabled[][DEBUG_CLASS_COUNT] = { {1, 1, 0, 0}, @@ -126,8 +126,27 @@ short debug_msg_enabled[][DEBUG_CLASS_COUNT] = { {1, 1, 0, 0}, {1, 1, 0, 0}, {1, 1, 0, 0}, +{1, 1, 0, 0}, +{1, 1, 0, 0}, +{1, 1, 0, 0}, +{1, 1, 0, 0}, +{1, 1, 0, 0}, +{1, 1, 0, 0}, +{1, 1, 0, 0}, +{1, 1, 0, 0}, +{1, 1, 0, 0}, +{1, 1, 0, 0}, +{1, 1, 0, 0}, +{1, 1, 0, 0}, +{1, 1, 0, 0}, }; const char* debug_ch_name[] = { +"1", +"2", +"3", +"4", +"5", +"6", "accel", "advapi", "aspi", @@ -181,6 +200,7 @@ const char* debug_ch_name[] = { "keyboard", "ldt", "listbox", +"listview", "local", "mci", "mcianim", @@ -200,6 +220,7 @@ const char* debug_ch_name[] = { "nonclient", "ntdll", "ole", +"pager", "palette", "print", "process", @@ -207,10 +228,12 @@ const char* debug_ch_name[] = { "progress", "prop", "psdrv", +"rebar", "reg", "region", "relay", "resource", +"s", "scroll", "security", "segment", @@ -233,6 +256,9 @@ const char* debug_ch_name[] = { "timer", "toolbar", "toolhelp", +"tooltips", +"trackbar", +"treeview", "tweak", "uitools", "updown", diff --git a/include/gdi.h b/include/gdi.h index 723aa2f4e6c..fcb1786b339 100644 --- a/include/gdi.h +++ b/include/gdi.h @@ -203,6 +203,7 @@ typedef struct tagDC_FUNCS BOOL32 (*pPolyPolyline)(DC*,LPPOINT32,LPINT32,UINT32); BOOL32 (*pPolygon)(DC*,LPPOINT32,INT32); BOOL32 (*pPolyline)(DC*,LPPOINT32,INT32); + BOOL32 (*pPolyBezier)(DC*,POINT32, LPPOINT32,DWORD); UINT32 (*pRealizePalette)(DC*); BOOL32 (*pRectangle)(DC*,INT32,INT32,INT32,INT32); BOOL32 (*pRestoreDC)(DC*,INT32); diff --git a/include/listview.h b/include/listview.h new file mode 100644 index 00000000000..7e8c920ea58 --- /dev/null +++ b/include/listview.h @@ -0,0 +1,21 @@ +/* + * Listview class extra info + * + * Copyright 1998 Eric Kohl + */ + +#ifndef __WINE_LISTVIEW_H +#define __WINE_LISTVIEW_H + + +typedef struct tagLISTVIEW_INFO +{ + COLORREF clrBk; + + +} LISTVIEW_INFO; + + +extern void LISTVIEW_Register (void); + +#endif /* __WINE_LISTVIEW_H */ diff --git a/include/msdos.h b/include/msdos.h index f8276ac4ce3..f154dab296f 100644 --- a/include/msdos.h +++ b/include/msdos.h @@ -194,5 +194,6 @@ extern BYTE DOS_ErrorClass, DOS_ErrorAction, DOS_ErrorLocus; void WINAPI DOS3Call( CONTEXT *context ); void do_mscdex( CONTEXT *context, int dorealmode ); +void do_mscdex_dd (CONTEXT * context, int dorealmode); #endif /* __WINE_MSDOS_H */ diff --git a/include/pager.h b/include/pager.h new file mode 100644 index 00000000000..428a8f07a0b --- /dev/null +++ b/include/pager.h @@ -0,0 +1,20 @@ +/* + * Pager class extra info + * + * Copyright 1998 Eric Kohl + */ + +#ifndef __WINE_PAGER_H +#define __WINE_PAGER_H + + +typedef struct tagPAGER_INFO +{ + UINT32 uDummy; /* this is just a dummy to keep the compiler happy */ + +} PAGER_INFO; + + +extern void PAGER_Register (void); + +#endif /* __WINE_PAGER_H */ diff --git a/include/print.h b/include/print.h index 1cc5628926c..fa64a494959 100644 --- a/include/print.h +++ b/include/print.h @@ -1,5 +1,30 @@ +/* Definitions for printing + * + * Copyright 1998 Huw Davies, Andreas Mohr + */ +#ifndef __WINE_PRINT_H +#define __WINE_PRINT_H + #include "windows.h" +#define INT_PD_DEFAULT_DEVMODE 1 +#define INT_PD_DEFAULT_MODEL 2 + +#define PRINTER_ATTRIBUTE_QUEUED 0x00000001 +#define PRINTER_ATTRIBUTE_DIRECT 0x00000002 +#define PRINTER_ATTRIBUTE_DEFAULT 0x00000004 +#define PRINTER_ATTRIBUTE_SHARED 0x00000008 +#define PRINTER_ATTRIBUTE_NETWORK 0x00000010 +#define PRINTER_ATTRIBUTE_HIDDEN 0x00000020 +#define PRINTER_ATTRIBUTE_LOCAL 0x00000040 + +#define PRINTER_ATTRIBUTE_ENABLE_DEVQ 0x00000080 +#define PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS 0x00000100 +#define PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST 0x00000200 + +#define PRINTER_ATTRIBUTE_WORK_OFFLINE 0x00000400 +#define PRINTER_ATTRIBUTE_ENABLE_BIDI 0x00000800 + HANDLE16 WINAPI OpenJob(LPSTR lpOutput, LPSTR lpTitle, HDC16 hDC); int WINAPI CloseJob(HANDLE16 hJob); int WINAPI WriteSpool(HANDLE16 hJob, LPSTR lpData, WORD cch); @@ -9,7 +34,4 @@ int WINAPI EndSpoolPage(HANDLE16 hJob); DWORD WINAPI GetSpoolJob(int nOption, LONG param); int WINAPI WriteDialog(HANDLE16 hJob, LPSTR lpMsg, WORD cchMsg); - - - - +#endif /* __WINE_PRINT_H */ diff --git a/include/process.h b/include/process.h index e669c2dd008..a5abc051f5b 100644 --- a/include/process.h +++ b/include/process.h @@ -101,6 +101,8 @@ typedef struct _PDB32 DWORD unknown7; /* bc Unknown */ DWORD unknown8; /* c0 Unknown (NT) */ LCID locale; /* c4 Locale to be queried by GetThreadLocale (NT) */ + /* The following are Wine-specific fields */ + void *server_pid; /* Server id for this process */ } PDB32; /* Process flags */ @@ -108,6 +110,7 @@ typedef struct _PDB32 #define PDB32_DOS_PROC 0x0010 /* Dos process */ #define PDB32_CONSOLE_PROC 0x0020 /* Console process */ #define PDB32_FILE_APIS_OEM 0x0040 /* File APIs are OEM */ +#define PDB32_WIN32S_PROC 0x8000 /* Win32s process */ /* PDB <-> Process id conversion macros */ #define PROCESS_OBFUSCATOR ((DWORD)0xdeadbeef) diff --git a/include/rebar.h b/include/rebar.h new file mode 100644 index 00000000000..152d6ee1359 --- /dev/null +++ b/include/rebar.h @@ -0,0 +1,20 @@ +/* + * Rebar class extra info + * + * Copyright 1998 Eric Kohl + */ + +#ifndef __WINE_REBAR_H +#define __WINE_REBAR_H + + +typedef struct tagREBAR_INFO +{ + UINT32 uDummy; /* this is just a dummy to keep the compiler happy */ + +} REBAR_INFO; + + +extern void REBAR_Register (void); + +#endif /* __WINE_REBAR_H */ diff --git a/include/server.h b/include/server.h new file mode 100644 index 00000000000..ab3dcc80062 --- /dev/null +++ b/include/server.h @@ -0,0 +1,64 @@ +/* + * Wine server definitions + * + * Copyright (C) 1998 Alexandre Julliard + */ + +#ifndef __WINE_SERVER_H +#define __WINE_SERVER_H + +/* message header as sent on the wire */ +struct header +{ + unsigned int len; /* total msg length (including this header) */ + unsigned int type; /* msg type */ + unsigned int seq; /* sequence number */ +}; + +/* max msg length (not including the header) */ +#define MAX_MSG_LENGTH (16384 - sizeof(struct header)) + +/* request from client to server */ + +enum request +{ + REQ_TIMEOUT, /* internal timeout msg */ + REQ_KILL_THREAD, /* internal kill thread msg */ + REQ_NEW_THREAD, /* create a new thread (called from the creator) */ + REQ_INIT_THREAD, /* init a new thread (called by itself) */ + REQ_NB_REQUESTS +}; + +/* request structures */ + +struct new_thread_request +{ + void *pid; /* process id for the new thread (or 0 if none yet) */ +}; + +struct new_thread_reply +{ + void *tid; /* thread id */ + void *pid; /* process id (created if necessary) */ +}; + +struct init_thread_request +{ + int pid; +/* char name[...];*/ +}; + +/* server-side functions */ + +extern void server_main_loop( int fd ); + + +/* client-side functions */ + +#ifndef __WINE_SERVER__ +struct _THDB; +extern int CLIENT_NewThread( struct _THDB *thdb ); +extern int CLIENT_InitThread(void); +#endif /* __WINE_SERVER__ */ + +#endif /* __WINE_SERVER_H */ diff --git a/include/shlobj.h b/include/shlobj.h index 411ca0bc709..3deeb401721 100644 --- a/include/shlobj.h +++ b/include/shlobj.h @@ -40,14 +40,12 @@ DEFINE_SHLGUID(IID_IFileViewerSite, 0x000214F3L, 0, 0); #define STRRET_CSTR 0x0002 typedef struct _STRRET -{ - UINT32 uType; /* STRRET_xxx */ - union - { - LPWSTR pOleStr; /* OLESTR that will be freed */ - UINT32 uOffset; /* Offset into SHITEMID (ANSI) */ - char cStr[MAX_PATH]; /* Buffer to fill in */ - } DUMMYUNIONNAME; +{ UINT32 uType; /* STRRET_xxx */ + union + { LPWSTR pOleStr; /* OLESTR that will be freed */ + UINT32 uOffset; /* Offset into SHITEMID (ANSI) */ + char cStr[MAX_PATH]; /* Buffer to fill in */ + }u; } STRRET,*LPSTRRET; typedef struct { @@ -59,16 +57,87 @@ typedef struct { SHITEMID mkid; /* first itemid in list */ } ITEMIDLIST,*LPITEMIDLIST,*LPCITEMIDLIST; + +/**************************************************************************** + * INTERNAL CLASS: PIDL-Manager + * Source: HOWTO extend the explorer namespace + * ftp.microsoft.com/ ... softlib ... regview.exe + */ +#define THIS LPPIDLMGR this +typedef enum tagPIDLTYPE +{ PT_DESKTOP = 0x00000000, + PT_DRIVE = 0x00000001, + PT_FOLDER = 0x00000002, + PT_VALUE = 0x00000004, + PT_TEXT = PT_FOLDER | PT_VALUE +} PIDLTYPE; + +typedef struct tagPIDLDATA +{ PIDLTYPE type; + CHAR szText[1]; +}PIDLDATA, FAR *LPPIDLDATA; + +typedef struct pidlmgr pidlmgr,*LPPIDLMGR; +typedef struct PidlMgr_VTable { + STDMETHOD_(LPITEMIDLIST, CreateDesktop) (THIS); + STDMETHOD_(LPITEMIDLIST, CreateDrive) (THIS_ LPCSTR); + STDMETHOD_(LPITEMIDLIST, CreateFolder) (THIS_ LPCSTR); + STDMETHOD_(LPITEMIDLIST, CreateValue) (THIS_ LPCSTR); + STDMETHOD_(void, Delete) (THIS_ LPITEMIDLIST); + STDMETHOD_(LPITEMIDLIST, GetNextItem) (THIS_ LPCITEMIDLIST); + STDMETHOD_(LPITEMIDLIST, Copy) (THIS_ LPCITEMIDLIST); + STDMETHOD_(UINT16, GetSize) (THIS_ LPCITEMIDLIST); + STDMETHOD_(BOOL32, GetDesktop) (THIS_ LPCITEMIDLIST, LPSTR); + STDMETHOD_(BOOL32, GetDrive) (THIS_ LPCITEMIDLIST, LPSTR, UINT16); + STDMETHOD_(LPITEMIDLIST, GetLastItem) (THIS_ LPCITEMIDLIST); + STDMETHOD_(DWORD, GetItemText) (THIS_ LPCITEMIDLIST, LPSTR, UINT16); + STDMETHOD_(BOOL32, IsDesktop) (THIS_ LPCITEMIDLIST); + STDMETHOD_(BOOL32, IsDrive) (THIS_ LPCITEMIDLIST); + STDMETHOD_(BOOL32, IsFolder) (THIS_ LPCITEMIDLIST); + STDMETHOD_(BOOL32, IsValue) (THIS_ LPCITEMIDLIST); + STDMETHOD_(BOOL32, HasFolders) (THIS_ LPSTR, LPCITEMIDLIST); + STDMETHOD_(DWORD, GetFolderText) (THIS_ LPCITEMIDLIST, LPSTR, DWORD); + STDMETHOD_(DWORD, GetValueText) (THIS_ LPCITEMIDLIST, LPSTR, DWORD); + +/* STDMETHOD_(BOOL32, GetValueType) (THIS_ LPCITEMIDLIST, LPDWORD);*/ + STDMETHOD_(BOOL32, GetValueType) (THIS_ LPCITEMIDLIST, LPCITEMIDLIST, LPDWORD); + +/* STDMETHOD_(DWORD, GetDataText) (THIS_ LPCITEMIDLIST, LPSTR, DWORD);*/ + STDMETHOD_(DWORD, GetDataText) (THIS_ LPCITEMIDLIST, LPCITEMIDLIST, LPSTR, DWORD); + + STDMETHOD_(DWORD, GetPidlPath) (THIS_ LPCITEMIDLIST, LPSTR, DWORD); + STDMETHOD_(LPITEMIDLIST, Concatenate) (THIS_ LPCITEMIDLIST, LPCITEMIDLIST); + STDMETHOD_(LPITEMIDLIST, Create) (THIS_ PIDLTYPE, LPVOID, UINT16); + STDMETHOD_(DWORD, GetData) (THIS_ PIDLTYPE, LPCITEMIDLIST, LPVOID, UINT16); + STDMETHOD_(LPPIDLDATA, GetDataPointer) (THIS_ LPCITEMIDLIST); + STDMETHOD_(BOOL32, SeparatePathAndValue) (THIS_ LPCITEMIDLIST, LPITEMIDLIST*, LPITEMIDLIST*); + +} *LPPIDLMGR_VTABLE,PidlMgr_VTable; + +struct pidlmgr { + LPPIDLMGR_VTABLE lpvtbl; +}; +#ifdef __WINE__ +extern LPPIDLMGR PidlMgr_Constructor(); +extern void PidlMgr_Destructor(THIS); +#endif + +#undef THIS + /***************************************************************************** * IEnumIDList interface */ #define THIS LPENUMIDLIST this +typedef struct tagENUMLIST +{ struct tagENUMLIST *pNext; + LPITEMIDLIST pidl; +} ENUMLIST, *LPENUMLIST; typedef struct IEnumIDList IEnumIDList,*LPENUMIDLIST; typedef struct IEnumIDList_VTable { /* *** IUnknown methods *** */ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; /* *** IEnumIDList methods *** */ @@ -78,12 +147,24 @@ typedef struct IEnumIDList_VTable { STDMETHOD(Skip) (THIS_ ULONG celt) PURE; STDMETHOD(Reset) (THIS) PURE; STDMETHOD(Clone) (THIS_ IEnumIDList **ppenum) PURE; + /* *** private methods *** */ + STDMETHOD_(BOOL32,CreateEnumList)(THIS_ LPCSTR, DWORD) PURE; + STDMETHOD_(BOOL32,AddToEnumList)(THIS_ LPITEMIDLIST) PURE; + STDMETHOD_(BOOL32,DeleteList)(THIS) PURE; + + } IEnumIDList_VTable,*LPENUMIDLIST_VTABLE; struct IEnumIDList { LPENUMIDLIST_VTABLE lpvtbl; - DWORD ref; + DWORD ref; + LPPIDLMGR mpPidlMgr; + LPENUMLIST mpFirst; + LPENUMLIST mpLast; + LPENUMLIST mpCurrent; + }; + #undef THIS /************************************************************************ * The IShellFolder interface ... the basic interface for a lot of stuff @@ -143,7 +224,8 @@ typedef struct IShellFolder_VTable { STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; - + /* *** IPersist Folder methods *** */ + STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST pidl) PURE; /* *** IShellFolder methods *** */ STDMETHOD(ParseDisplayName) (THIS_ HWND32 hwndOwner, LPBC pbcReserved, LPOLESTR32 lpszDisplayName, @@ -169,7 +251,12 @@ typedef struct IShellFolder_VTable { struct tagSHELLFOLDER { LPSHELLFOLDER_VTABLE lpvtbl; - DWORD ref; + DWORD ref; + LPSTR mlpszFolder; + LPPIDLMGR pPidlMgr; + LPITEMIDLIST mpidl; + LPITEMIDLIST mpidlNSRoot; + LPSHELLFOLDER mpSFParent; }; #undef THIS @@ -240,9 +327,10 @@ struct IShellLink { #undef THIS #ifdef __WINE__ -extern LPSHELLFOLDER IShellFolder_Constructor(); +extern LPCLASSFACTORY IClassFactory_Constructor(); +extern LPSHELLFOLDER IShellFolder_Constructor(LPSHELLFOLDER,LPITEMIDLIST); extern LPSHELLLINK IShellLink_Constructor(); -extern LPENUMIDLIST IEnumIDList_Constructor(); +extern LPENUMIDLIST IEnumIDList_Constructor(LPCSTR,DWORD,HRESULT*); #endif DWORD WINAPI SHELL32_DllGetClassObject(LPCLSID,REFIID,LPVOID*); @@ -324,7 +412,6 @@ LPITEMIDLIST WINAPI SHBrowseForFolder32W(LPBROWSEINFO32W lpbi); #endif */ - #undef PURE #undef FAR #undef THIS diff --git a/include/snoop.h b/include/snoop.h index 29a7b919844..72466f6e12e 100644 --- a/include/snoop.h +++ b/include/snoop.h @@ -8,6 +8,7 @@ extern void SNOOP_RegisterDLL(HMODULE32,LPCSTR,DWORD); extern FARPROC32 SNOOP_GetProcAddress32(HMODULE32,LPCSTR,DWORD,FARPROC32); -extern void SNOOP16_RegisterDLL(NE_MODULE*,LPCSTR); -extern FARPROC16 SNOOP16_GetProcAddress16(HMODULE16,DWORD,FARPROC16); +extern void (*fnSNOOP16_RegisterDLL)(NE_MODULE*,LPCSTR); +extern FARPROC16 (*fnSNOOP16_GetProcAddress16)(HMODULE16,DWORD,FARPROC16); +extern void SNOOP16_Init(); #endif diff --git a/include/task.h b/include/task.h index 0a3cc86ddfb..85f38cb62a4 100644 --- a/include/task.h +++ b/include/task.h @@ -123,13 +123,33 @@ typedef struct _TDB #define USIG_DLL_UNLOAD 0x0080 #define USIG_GPF 0x0666 + + /* THHOOK Kernel Data Structure */ +typedef struct _THHOOK +{ + HANDLE16 hGlobalHeap; /* 00 (handle BURGERMASTER) */ + WORD pGlobalHeap; /* 02 (selector BURGERMASTER) */ + HMODULE16 hExeHead; /* 04 hFirstModule */ + HMODULE16 hExeSweep; /* 06 (unused) */ + HANDLE16 TopPDB; /* 08 (handle of KERNEL PDB) */ + HANDLE16 HeadPDB; /* 0A (first PDB in list) */ + HANDLE16 TopSizePDB; /* 0C (unused) */ + HTASK16 HeadTDB; /* 0E hFirstTask */ + HTASK16 CurTDB; /* 10 hCurrentTask */ + HTASK16 LoadTDB; /* 12 (unused) */ + HTASK16 LockTDB; /* 14 hLockedTask */ +} THHOOK; + #pragma pack(4) +extern THHOOK *pThhook; + extern HTASK16 TASK_Create( struct _THDB *thdb, struct _NE_MODULE *pModule, HINSTANCE16 hInstance, HINSTANCE16 hPrevInstance, UINT16 cmdShow ); extern void TASK_KillCurrentTask( INT16 exitCode ); extern HTASK16 TASK_GetNextTask( HTASK16 hTask ); extern void TASK_Reschedule(void); +extern void TASK_InstallTHHook( THHOOK *pNewThook ); #endif /* __WINE_TASK_H */ diff --git a/include/thread.h b/include/thread.h index 9e95d294ff6..8d81fd2f729 100644 --- a/include/thread.h +++ b/include/thread.h @@ -92,6 +92,9 @@ typedef struct _THDB /* The following are Wine-specific fields */ CONTEXT context; /* 200 Thread context */ WAIT_STRUCT wait_struct; /* Event wait structure */ + int socket; /* Socket for server communication */ + unsigned int seq; /* Server sequence number */ + void *server_tid; /* Server id for this thread */ } THDB; /* Thread queue entry */ diff --git a/include/toolbar.h b/include/toolbar.h index 407c331c62b..e036a125f18 100644 --- a/include/toolbar.h +++ b/include/toolbar.h @@ -43,12 +43,16 @@ typedef struct tagTOOLBAR_INFO INT32 nOldHit; INT32 nHotItem; /* index of the "hot" item */ + HFONT32 hFont; /* text font */ HIMAGELIST himlDef; /* default image list */ HIMAGELIST himlHot; /* hot image list */ HIMAGELIST himlDis; /* disabled image list */ HWND32 hwndToolTip; /* handle to tool tip control */ HWND32 hwndNotify; /* handle to the window that gets notifications */ BOOL32 bTransparent; /* background transparency flag */ + BOOL32 bAutoSize; + + COLORREF clrInsertMark; /* insert mark color */ TBUTTON_INFO *buttons; CHAR **strings; diff --git a/include/tooltips.h b/include/tooltips.h new file mode 100644 index 00000000000..1c071356361 --- /dev/null +++ b/include/tooltips.h @@ -0,0 +1,40 @@ +/* + * Tool tips class extra info + * + * Copyright 1998 Eric Kohl + */ + +#ifndef __WINE_TOOLTIPS_H +#define __WINE_TOOLTIPS_H + + +typedef struct tagTTTOOL_INFO +{ + UINT32 uFlags; + HWND32 hwnd; + UINT32 uId; + RECT32 rect; + HINSTANCE32 hinst; + LPSTR lpszText; + LPARAM lParam; + +} TTTOOL_INFO; + + +typedef struct tagTOOLTIPS_INFO +{ + BOOL32 bActive; + UINT32 uNumTools; + COLORREF clrBk; + COLORREF clrText; + HFONT32 hFont; + INT32 iMaxTipWidth; + INT32 iCurrentTool; + + TTTOOL_INFO *tools; +} TOOLTIPS_INFO; + + +extern void TOOLTIPS_Register (void); + +#endif /* __WINE_TOOLTIPS_H */ diff --git a/include/trackbar.h b/include/trackbar.h new file mode 100644 index 00000000000..0645f6a4780 --- /dev/null +++ b/include/trackbar.h @@ -0,0 +1,28 @@ +/* + * Trackbar class extra info + * + * Copyright 1998 Eric Kohl + */ + +#ifndef __WINE_TRACKBAR_H +#define __WINE_TRACKBAR_H + +typedef struct tagTRACKBAR_INFO +{ + INT32 nRangeMin; + INT32 nRangeMax; + INT32 nLineSize; + INT32 nPageSize; + INT32 nSelMin; + INT32 nSelMax; + INT32 nPos; + INT32 nThumbLen; + + BOOL32 bFocus; + RECT32 rcChannel; +} TRACKBAR_INFO; + + +extern void TRACKBAR_Register (void); + +#endif /* __WINE_TRACKBAR_H */ diff --git a/include/treeview.h b/include/treeview.h new file mode 100644 index 00000000000..2d92a8036db --- /dev/null +++ b/include/treeview.h @@ -0,0 +1,19 @@ +/* + * Treeview class extra info + * + * Copyright 1998 Eric Kohl + */ + +#ifndef __WINE_TREEVIEW_H +#define __WINE_TREEVIEW_H + +typedef struct tagTREEVIEW_INFO +{ + UINT32 uDummy; /* this is just a dummy to keep the compiler happy */ + +} TREEVIEW_INFO; + + +extern void TREEVIEW_Register (void); + +#endif /* __WINE_TREEVIEW_H */ diff --git a/include/ts_xlib.h b/include/ts_xlib.h index 70885991025..f49bdee8aa1 100644 --- a/include/ts_xlib.h +++ b/include/ts_xlib.h @@ -20,6 +20,7 @@ extern void TSXrmInitialize(void); extern char * TSXGetAtomName(Display*, Atom); extern char * TSXKeysymToString(KeySym); extern Atom TSXInternAtom(Display*, const char*, int); +extern Colormap TSXCopyColormapAndFree(Display*, Colormap); extern Colormap TSXCreateColormap(Display*, Window, Visual*, int); extern Cursor TSXCreatePixmapCursor(Display*, Pixmap, Pixmap, XColor*, XColor*, unsigned int, unsigned int); extern Cursor TSXCreateFontCursor(Display*, unsigned int); diff --git a/include/ts_xshm.h b/include/ts_xshm.h index 01a2b51f029..817da7d2523 100644 --- a/include/ts_xshm.h +++ b/include/ts_xshm.h @@ -16,5 +16,6 @@ extern Bool TSXShmQueryExtension(Display *); extern int TSXShmPixmapFormat(Display *); extern Status TSXShmDetach(Display *, XShmSegmentInfo *); extern Status TSXShmAttach(Display *, XShmSegmentInfo *); +extern Status TSXShmPutImage(Display *, Drawable, GC, XImage *, int, int, int, int, unsigned int, unsigned int, Bool); #endif /* __WINE_TSXSHM_H */ diff --git a/include/version.h b/include/version.h index abb9b65a9c5..0554a0e9c36 100644 --- a/include/version.h +++ b/include/version.h @@ -1 +1 @@ -#define WINE_RELEASE_INFO "Wine release 980628" +#define WINE_RELEASE_INFO "Wine release 980712" diff --git a/include/windows.h b/include/windows.h index 6b7bfccb301..5184273124f 100644 --- a/include/windows.h +++ b/include/windows.h @@ -1684,6 +1684,35 @@ typedef struct DECL_WINELIB_TYPE(ABC) DECL_WINELIB_TYPE(LPABC) + /* for GetCharacterPlacement () */ +typedef struct tagGCP_RESULTS32A +{ + DWORD lStructSize; + LPSTR lpOutString; + UINT32 *lpOrder; + INT32 *lpDx; + INT32 *lpCaretPos; + LPSTR lpClass; + UINT32 *lpGlyphs; + UINT32 nGlyphs; + UINT32 nMaxFit; +} GCP_RESULTS32A; + +typedef struct tagGCP_RESULTS32W +{ + DWORD lStructSize; + LPWSTR lpOutString; + UINT32 *lpOrder; + INT32 *lpDx; + INT32 *lpCaretPos; + LPWSTR lpClass; + UINT32 *lpGlyphs; + UINT32 nGlyphs; + UINT32 nMaxFit; +} GCP_RESULTS32W; + +DECL_WINELIB_TYPE_AW(GCP_RESULTS) + /* Rasterizer status */ typedef struct { @@ -3186,6 +3215,36 @@ typedef struct #define WM_PRINT 0x0317 #define WM_PRINTCLIENT 0x0318 + /* MFC messages [370-37f] */ + +#define WM_QUERYAFXWNDPROC 0x0360 +#define WM_SIZEPARENT 0x0361 +#define WM_SETMESSAGESTRING 0x0362 +#define WM_IDLEUPDATECMDUI 0x0363 +#define WM_INITIALUPDATE 0x0364 +#define WM_COMMANDHELP 0x0365 +#define WM_HELPHITTEST 0x0366 +#define WM_EXITHELPMODE 0x0367 +#define WM_RECALCPARENT 0x0368 +#define WM_SIZECHILD 0x0369 +#define WM_KICKIDLE 0x036A +#define WM_QUERYCENTERWND 0x036B +#define WM_DISABLEMODAL 0x036C +#define WM_FLOATSTATUS 0x036D +#define WM_ACTIVATETOPLEVEL 0x036E +#define WM_QUERY3DCONTROLS 0x036F +#define WM_SOCKET_NOTIFY 0x0373 +#define WM_SOCKET_DEAD 0x0374 +#define WM_POPMESSAGESTRING 0x0375 +#define WM_OCC_LOADFROMSTREAM 0x0376 +#define WM_OCC_LOADFROMSTORAGE 0x0377 +#define WM_OCC_INITNEW 0x0378 +#define WM_OCC_LOADFROMSTREAM_EX 0x037A +#define WM_OCC_LOADFROMSTORAGE_EX 0x037B +#define WM_QUEUE_SENTINEL 0x0379 + +/* end of MFC messages */ + #define WM_COALESCE_FIRST 0x0390 #define WM_COALESCE_LAST 0x039F @@ -5876,6 +5935,33 @@ typedef struct { DECL_WINELIB_TYPE_AW(NETRESOURCE) DECL_WINELIB_TYPE_AW(LPNETRESOURCE) +typedef struct { + DWORD cbStructure; /* size of this structure in bytes */ + HWND32 hwndOwner; /* owner window for the dialog */ + LPNETRESOURCE32A lpConnRes;/* Requested Resource info */ + DWORD dwFlags; /* flags (see below) */ + DWORD dwDevNum; /* number of devices connected to */ +} CONNECTDLGSTRUCT32A, *LPCONNECTDLGSTRUCT32A; +typedef struct { + DWORD cbStructure; /* size of this structure in bytes */ + HWND32 hwndOwner; /* owner window for the dialog */ + LPNETRESOURCE32W lpConnRes;/* Requested Resource info */ + DWORD dwFlags; /* flags (see below) */ + DWORD dwDevNum; /* number of devices connected to */ +} CONNECTDLGSTRUCT32W, *LPCONNECTDLGSTRUCT32W; + +DECL_WINELIB_TYPE_AW(CONNECTDLGSTRUCT) +DECL_WINELIB_TYPE_AW(LPCONNECTDLGSTRUCT) + +/**/ +#define CONNDLG_RO_PATH 0x00000001 /* Resource path should be read-only */ +#define CONNDLG_CONN_POINT 0x00000002 /* Netware -style movable connection point enabled */ +#define CONNDLG_USE_MRU 0x00000004 /* Use MRU combobox */ +#define CONNDLG_HIDE_BOX 0x00000008 /* Hide persistent connect checkbox */ +#define CONNDLG_PERSIST 0x00000010 /* Force persistent connection */ +#define CONNDLG_NOT_PERSIST 0x00000020 /* Force connection NOT persistent */ + + typedef struct { DWORD cbStructure; DWORD dwFlags; @@ -6159,7 +6245,7 @@ INT16 WINAPI ExcludeVisRect(HDC16,INT16,INT16,INT16,INT16); HANDLE16 WINAPI FarGetOwner(HGLOBAL16); VOID WINAPI FarSetOwner(HGLOBAL16,HANDLE16); BOOL16 WINAPI FastWindowFrame(HDC16,const RECT16*,INT16,INT16,DWORD); -VOID WINAPI FileCDR(FARPROC16); +FARPROC16 WINAPI FileCDR(FARPROC16); VOID WINAPI FillWindow(HWND16,HWND16,HDC16,HBRUSH16); INT16 WINAPI FlushComm(INT16,INT16); WORD WINAPI FreeSelector(WORD); @@ -6449,8 +6535,8 @@ BOOL32 WINAPI GetNumberOfConsoleMouseButtons(LPDWORD); DWORD WINAPI GetObjectType(HANDLE32); UINT32 WINAPI GetOEMCP(void); DWORD WINAPI GetPriorityClass(HANDLE32); -INT32 WINAPI GetPrivateProfileSection32A(LPCSTR,LPSTR,INT32,LPCSTR); -INT32 WINAPI GetPrivateProfileSection32W(LPCWSTR,LPWSTR,INT32,LPCWSTR); +INT32 WINAPI GetPrivateProfileSection32A(LPCSTR,LPSTR,UINT32,LPCSTR); +INT32 WINAPI GetPrivateProfileSection32W(LPCWSTR,LPWSTR,UINT32,LPCWSTR); #define GetPrivateProfileSection WINELIB_NAME_AW(GetPrivateProfileSection) HANDLE32 WINAPI GetProcessHeap(void); DWORD WINAPI GetRegionData(HRGN32,DWORD,LPRGNDATA); @@ -6647,6 +6733,7 @@ BOOL32 WINAPI SetTimeZoneInformation(const LPTIME_ZONE_INFORMATION); BOOL32 WINAPI SetWindowContextHelpId(HWND32,DWORD); BOOL32 WINAPI SetWorldTransform(HDC32,const XFORM*); VOID WINAPI Sleep(DWORD); +DWORD WINAPI SleepEx(DWORD,BOOL32); BOOL32 WINAPI StartService32A(HANDLE32,DWORD,LPCSTR*); BOOL32 WINAPI StartService32W(HANDLE32,DWORD,LPCWSTR*); #define StartService WINELIB_NAME_AW(StartService) @@ -6682,6 +6769,13 @@ UINT32 WINAPI WNetAddConnection2_32W(LPNETRESOURCE32W,LPCWSTR,LPCWSTR,DWORD UINT32 WINAPI WNetAddConnection3_32A(HWND32,LPNETRESOURCE32A,LPCSTR,LPCSTR,DWORD); UINT32 WINAPI WNetAddConnection3_32W(HWND32,LPNETRESOURCE32W,LPCWSTR,LPCWSTR,DWORD); #define WNetAddConnection3 WINELIB_NAME_AW(WNetAddConnection3_) +UINT32 WINAPI WNetConnectionDialog1_32(HWND32,DWORD); +UINT32 WINAPI WNetConnectionDialog1_32A(LPCONNECTDLGSTRUCT32A); +UINT32 WINAPI WNetConnectionDialog1_32W(LPCONNECTDLGSTRUCT32W); +#define WNetConnectionDialog1 WINELIB_NAME_AW(WNetConnectionDialog1_) +UINT32 WINAPI MultinetGetErrorText32A(DWORD,DWORD,DWORD); +UINT32 WINAPI MultinetGetErrorText32W(DWORD,DWORD,DWORD); +#define MultinetGetErrorText WINELIB_NAME_AW(MultinetGetErrorText_) SEGPTR WINAPI WOWGlobalAllocLock16(DWORD,DWORD,HGLOBAL16*); DWORD WINAPI WOWCallback16(FARPROC16,DWORD); BOOL32 WINAPI WOWCallback16Ex(FARPROC16,DWORD,DWORD,LPVOID,LPDWORD); @@ -7704,9 +7798,9 @@ UINT16 WINAPI GetPrivateProfileInt16(LPCSTR,LPCSTR,INT16,LPCSTR); UINT32 WINAPI GetPrivateProfileInt32A(LPCSTR,LPCSTR,INT32,LPCSTR); UINT32 WINAPI GetPrivateProfileInt32W(LPCWSTR,LPCWSTR,INT32,LPCWSTR); #define GetPrivateProfileInt WINELIB_NAME_AW(GetPrivateProfileInt) -INT16 WINAPI GetPrivateProfileString16(LPCSTR,LPCSTR,LPCSTR,LPSTR,INT16,LPCSTR); -INT32 WINAPI GetPrivateProfileString32A(LPCSTR,LPCSTR,LPCSTR,LPSTR,INT32,LPCSTR); -INT32 WINAPI GetPrivateProfileString32W(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,INT32,LPCWSTR); +INT16 WINAPI GetPrivateProfileString16(LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT16,LPCSTR); +INT32 WINAPI GetPrivateProfileString32A(LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT32,LPCSTR); +INT32 WINAPI GetPrivateProfileString32W(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,UINT32,LPCWSTR); #define GetPrivateProfileString WINELIB_NAME_AW(GetPrivateProfileString) FARPROC16 WINAPI GetProcAddress16(HMODULE16,SEGPTR); FARPROC32 WINAPI GetProcAddress32(HMODULE32,LPCSTR); @@ -7715,9 +7809,9 @@ UINT16 WINAPI GetProfileInt16(LPCSTR,LPCSTR,INT16); UINT32 WINAPI GetProfileInt32A(LPCSTR,LPCSTR,INT32); UINT32 WINAPI GetProfileInt32W(LPCWSTR,LPCWSTR,INT32); #define GetProfileInt WINELIB_NAME_AW(GetProfileInt) -INT16 WINAPI GetProfileString16(LPCSTR,LPCSTR,LPCSTR,LPSTR,INT16); -INT32 WINAPI GetProfileString32A(LPCSTR,LPCSTR,LPCSTR,LPSTR,INT32); -INT32 WINAPI GetProfileString32W(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,INT32); +INT16 WINAPI GetProfileString16(LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT16); +INT32 WINAPI GetProfileString32A(LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT32); +INT32 WINAPI GetProfileString32W(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,UINT32); #define GetProfileString WINELIB_NAME_AW(GetProfileString) HANDLE16 WINAPI GetProp16(HWND16,LPCSTR); HANDLE32 WINAPI GetProp32A(HWND32,LPCSTR); @@ -8253,6 +8347,12 @@ BOOL32 WINAPI OemToChar32W(LPCSTR,LPWSTR); BOOL32 WINAPI OemToCharBuff32A(LPCSTR,LPSTR,DWORD); BOOL32 WINAPI OemToCharBuff32W(LPCSTR,LPWSTR,DWORD); #define OemToCharBuff WINELIB_NAME_AW(OemToCharBuff) +INT16 WINAPI WideCharToLocal16(LPSTR,LPWSTR,INT16); +INT32 WINAPI WideCharToLocal32(LPSTR,LPWSTR,INT32); +#define WideCharToLocal WINELIB_NAME(WideCharToLocal) +INT16 WINAPI LocalToWideChar16(LPWSTR,LPSTR,INT16); +INT32 WINAPI LocalToWideChar32(LPWSTR,LPSTR,INT32); +#define LocalToWideChar WINELIB_NAME(LocalToWideChar) INT16 WINAPI OffsetClipRgn16(HDC16,INT16,INT16); INT32 WINAPI OffsetClipRgn32(HDC32,INT32,INT32); #define OffsetClipRgn WINELIB_NAME(OffsetClipRgn) diff --git a/include/winerror.h b/include/winerror.h index 441f839b427..8c6c8d62e8f 100644 --- a/include/winerror.h +++ b/include/winerror.h @@ -97,14 +97,13 @@ extern int WIN32_LastError; #define CO_E_INIT_SCM_EXEC_FAILURE 0x80004011 #define CO_E_INIT_ONLY_SINGLE_THREADED 0x80004012 */ - -#define OLE_E_ENUM_NOMORE 0x80040002 +#define OLE_E_ENUM_NOMORE 0x80040002 +#define CLASS_E_NOAGGREGATION 0x80040110 #define CLASS_E_CLASSNOTAVAILABLE 0x80040111 - -#define E_ACCESSDENIED 0x80070005 -#define E_HANDLE 0x80070006 -#define E_OUTOFMEMORY 0x8007000E -#define E_INVALIDARG 0x80070057 +#define E_ACCESSDENIED 0x80070005 +#define E_HANDLE 0x80070006 +#define E_OUTOFMEMORY 0x8007000E +#define E_INVALIDARG 0x80070057 //#define OLE_E_FIRST 0x80040000L //#define OLE_E_LAST 0x800400FFL diff --git a/include/x11drv.h b/include/x11drv.h index d8e7d7af7d3..0bb9b246ab1 100644 --- a/include/x11drv.h +++ b/include/x11drv.h @@ -93,6 +93,7 @@ extern COLORREF X11DRV_SetPixel( struct tagDC *dc, INT32 x, INT32 y, extern COLORREF X11DRV_GetPixel( struct tagDC *dc, INT32 x, INT32 y); extern BOOL32 X11DRV_PaintRgn( struct tagDC *dc, HRGN32 hrgn ); extern BOOL32 X11DRV_Polyline( struct tagDC *dc,const LPPOINT32 pt,INT32 count); +extern BOOL32 X11DRV_PolyBezier( struct tagDC *dc,const POINT32 start, const LPPOINT32 lppt,DWORD cPoints); extern BOOL32 X11DRV_Polygon( struct tagDC *dc, LPPOINT32 pt, INT32 count ); extern BOOL32 X11DRV_PolyPolygon( struct tagDC *dc, LPPOINT32 pt, LPINT32 counts, UINT32 polygons); diff --git a/include/x11font.h b/include/x11font.h index aed042c4dbd..268fe1a7f33 100644 --- a/include/x11font.h +++ b/include/x11font.h @@ -76,7 +76,6 @@ typedef struct tagFontInfo UINT16 lfd_width; UINT16 lfd_decipoints; UINT16 lfd_resolution; - IFONTINFO16 df; } fontInfo; @@ -97,6 +96,15 @@ typedef struct tagFontResource CHAR lfFaceName[LF_FACESIZE]; } fontResource; +typedef struct { + float a,b,c,d; /* pixelsize matrix */ + unsigned long RAW_ASCENT; + unsigned long RAW_DESCENT; + float pixelsize; + float ascent; + float descent; +} XFONTTRANS; + #define FO_RESOURCE_MASK 0x000F #define FO_SYSTEM 0x0001 /* resident in cache */ #define FO_SOFTFONT 0x0002 /* installed at runtime */ @@ -127,8 +135,10 @@ typedef struct LPMAT2* lpXForm; /* optional transformation matrix */ Pixmap* lpPixmap; /* optional character bitmasks for synth fonts */ + XFONTTRANS *lpX11Trans; /* Info for X11R6 transform */ INT16 foInternalLeading; INT16 foAvgCharWidth; + INT16 foMaxCharWidth; UINT16 fo_flags; /* font cache housekeeping */ @@ -176,4 +186,3 @@ extern XFontStruct* XFONT_GetFontStruct( X_PHYSFONT pFont ); extern LPIFONTINFO16 XFONT_GetFontInfo( X_PHYSFONT pFont ); #endif __WINE_X11FONT_H - diff --git a/loader/module.c b/loader/module.c index 2668174964d..b6f859be43d 100644 --- a/loader/module.c +++ b/loader/module.c @@ -220,16 +220,14 @@ HMODULE32 MODULE_FindModule32( LPSTR dotptr; WINE_MODREF *wm; + if (!process) + return 0; if (!(filename = strrchr( path, '\\' ))) filename = HEAP_strdupA(process->heap,0,path); else filename = HEAP_strdupA(process->heap,0,filename+1); dotptr=strrchr(filename,'.'); - if (!process) { - HeapFree(process->heap,0,filename); - return 0; - } for (wm=process->modref_list;wm;wm=wm->next) { LPSTR xmodname,xdotptr; @@ -251,6 +249,33 @@ HMODULE32 MODULE_FindModule32( /* FIXME: add paths, shortname */ HeapFree(process->heap,0,xmodname); } + /* if that fails, try looking for the filename... */ + for (wm=process->modref_list;wm;wm=wm->next) { + LPSTR xlname,xdotptr; + + assert (wm->longname); + xlname = strrchr(wm->longname,'/'); + if (!xlname) + xlname = wm->longname; + else + xlname++; + xlname = HEAP_strdupA(process->heap,0,xlname); + xdotptr=strrchr(xlname,'.'); + if ( (xdotptr && !dotptr) || + (!xdotptr && dotptr) + ) { + if (dotptr) *dotptr = '\0'; + if (xdotptr) *xdotptr = '\0'; + } + if (!strcasecmp( filename, xlname)) { + HeapFree(process->heap,0,filename); + HeapFree(process->heap,0,xlname); + return wm->module; + } + if (dotptr) *dotptr='.'; + /* FIXME: add paths, shortname */ + HeapFree(process->heap,0,xlname); + } HeapFree(process->heap,0,filename); return 0; } diff --git a/loader/ne/module.c b/loader/ne/module.c index 148efbc280f..0bf46e44ac2 100644 --- a/loader/ne/module.c +++ b/loader/ne/module.c @@ -21,7 +21,11 @@ #include "snoop.h" #include "debug.h" -static HMODULE16 hFirstModule = 0; +FARPROC16 (*fnSNOOP16_GetProcAddress16)(HMODULE16,DWORD,FARPROC16) = NULL; +void (*fnSNOOP16_RegisterDLL)(NE_MODULE*,LPCSTR) = NULL; + +#define hFirstModule (pThhook->hExeHead) + static NE_MODULE *pCachedModule = 0; /* Module cached by NE_OpenFile */ static HMODULE16 NE_LoadBuiltin(LPCSTR name,BOOL32 force) { return 0; } @@ -330,8 +334,10 @@ FARPROC16 NE_GetEntryPoint( HMODULE16 hModule, WORD ordinal ) else sel = (WORD)(DWORD)NE_SEG_TABLE(pModule)[sel-1].selector; if (sel==0xffff) return (FARPROC16)PTR_SEG_OFF_TO_SEGPTR( sel, offset ); + if (!fnSNOOP16_GetProcAddress16) + return (FARPROC16)PTR_SEG_OFF_TO_SEGPTR( sel, offset ); else - return (FARPROC16)SNOOP16_GetProcAddress16(hModule,ordinal,(FARPROC16)PTR_SEG_OFF_TO_SEGPTR( sel, offset )); + return (FARPROC16)fnSNOOP16_GetProcAddress16(hModule,ordinal,(FARPROC16)PTR_SEG_OFF_TO_SEGPTR( sel, offset )); } @@ -654,7 +660,8 @@ static HMODULE16 NE_LoadExeHeader( HFILE16 hFile, OFSTRUCT *ofs ) else pModule->dlls_to_init = 0; NE_RegisterModule( pModule ); - SNOOP16_RegisterDLL(pModule,ofs->szPathName); + if (fnSNOOP16_RegisterDLL) + fnSNOOP16_RegisterDLL(pModule,ofs->szPathName); return hModule; } diff --git a/loader/ne/segment.c b/loader/ne/segment.c index 28caa772121..fcaa0851f5e 100644 --- a/loader/ne/segment.c +++ b/loader/ne/segment.c @@ -105,8 +105,12 @@ BOOL32 NE_LoadSegment( NE_MODULE *pModule, WORD segnum ) stack16Top->bp = 0; stack16Top->ip = 0; stack16Top->cs = 0; + TRACE(dll,"CallLoadAppSegProc(hmodule=0x%04x,hf=0x%04x,segnum=%d\n", + pModule->self,hf,segnum + ); newselector = Callbacks->CallLoadAppSegProc(selfloadheader->LoadAppSeg, pModule->self, hf, segnum ); + TRACE(dll,"Ret CallLoadAppSegProc: selector = 0x%04x\n",newselector); _lclose32( hf ); if (newselector != oldselector) { /* Self loaders like creating their own selectors; @@ -410,7 +414,9 @@ BOOL32 NE_LoadAllSegments( NE_MODULE *pModule ) stack16Top->cs = 0; hf = FILE_DupUnixHandle( NE_OpenFile( pModule ) ); + TRACE(dll,"CallBootAppProc(hModule=0x%04x,hf=0x%04x)\n",pModule->self,hf); Callbacks->CallBootAppProc(selfloadheader->BootApp, pModule->self, hf); + TRACE(dll,"Return from CallBootAppProc\n"); _lclose32(hf); /* some BootApp procs overwrite the selector of dgroup */ pSegTable[pModule->dgroup - 1].selector = saved_dgroup; diff --git a/loader/pe_image.c b/loader/pe_image.c index aaf2dec2e8d..30273cbf86a 100644 --- a/loader/pe_image.c +++ b/loader/pe_image.c @@ -217,7 +217,6 @@ DWORD fixup_imports (PDB32 *process,WINE_MODREF *wm) IMAGE_IMPORT_DESCRIPTOR *pe_imp; WINE_MODREF *xwm; PE_MODREF *pem; - int fixup_failed = 0; unsigned int load_addr = wm->module; int i; char *modname; @@ -247,13 +246,15 @@ DWORD fixup_imports (PDB32 *process,WINE_MODREF *wm) /* FIXME: should terminate on 0 Characteristics */ for (i = 0, pe_imp = pem->pe_import; pe_imp->Name; pe_imp++) { - HMODULE32 res; - WINE_MODREF **ywm; - char *name = (char *) RVA(pe_imp->Name); + HMODULE32 hImpModule; + WINE_MODREF **ywm; + IMAGE_IMPORT_BY_NAME *pe_name; + LPIMAGE_THUNK_DATA import_list,thunk_list; + char *name = (char *) RVA(pe_imp->Name); /* don't use MODULE_Load, Win32 creates new task differently */ - res = PE_LoadLibraryEx32A( name, process, 0, 0 ); - if (res <= (HMODULE32) 32) { + hImpModule = PE_LoadLibraryEx32A( name, process, 0, 0 ); + if (!hImpModule) { char *p,buffer[2000]; /* GetModuleFileName would use the wrong process, so don't use it */ @@ -261,15 +262,15 @@ DWORD fixup_imports (PDB32 *process,WINE_MODREF *wm) if (!(p = strrchr (buffer, '\\'))) p = buffer; strcpy (p + 1, name); - res = PE_LoadLibraryEx32A( buffer, process, 0, 0 ); + hImpModule = PE_LoadLibraryEx32A( buffer, process, 0, 0 ); } - if (res <= (HMODULE32) 32) { + if (!hImpModule) { ERR (module, "Module %s not found\n", name); - return res; + return 1; } xwm = wm->next; while (xwm) { - if (xwm->module == res) + if (xwm->module == hImpModule) break; xwm = xwm->next; } @@ -296,18 +297,6 @@ DWORD fixup_imports (PDB32 *process,WINE_MODREF *wm) } i++; - } - pe_imp = pem->pe_import; - while (pe_imp->Name) { - char *Module; - IMAGE_IMPORT_BY_NAME *pe_name; - LPIMAGE_THUNK_DATA import_list,thunk_list; - HMODULE32 hImpModule; - - Module = (char *) RVA(pe_imp->Name); - hImpModule = MODULE_FindModule32(process,Module); - assert(hImpModule); /* we have imported it, so it MUST be there */ - TRACE(win32, "%s\n", Module); /* FIXME: forwarder entries ... */ @@ -320,25 +309,23 @@ DWORD fixup_imports (PDB32 *process,WINE_MODREF *wm) if (IMAGE_SNAP_BY_ORDINAL(import_list->u1.Ordinal)) { int ordinal = IMAGE_ORDINAL(import_list->u1.Ordinal); - TRACE(win32, "--- Ordinal %s,%d\n", Module, ordinal); + TRACE(win32, "--- Ordinal %s,%d\n", name, ordinal); thunk_list->u1.Function=(LPDWORD)MODULE_GetProcAddress32( process, hImpModule, (LPCSTR)ordinal ); if (!thunk_list->u1.Function) { - WARN(win32,"No implementation for %s.%d, setting to NULL\n", - Module, ordinal); - /* fixup_failed=1; */ + ERR(win32,"No implementation for %s.%d, setting to NULL\n", + name, ordinal); } } else { /* import by name */ pe_name = (LPIMAGE_IMPORT_BY_NAME)RVA(import_list->u1.AddressOfData); - TRACE(win32, "--- %s %s.%d\n", pe_name->Name, Module, pe_name->Hint); + TRACE(win32, "--- %s %s.%d\n", pe_name->Name, name, pe_name->Hint); thunk_list->u1.Function=(LPDWORD)MODULE_GetProcAddress32( process, hImpModule, pe_name->Name ); if (!thunk_list->u1.Function) { - WARN(win32,"No implementation for %s.%d(%s), setting to NULL\n", - Module,pe_name->Hint,pe_name->Name); - /* fixup_failed=1; */ + ERR(win32,"No implementation for %s.%d(%s), setting to NULL\n", + name,pe_name->Hint,pe_name->Name); } } import_list++; @@ -352,34 +339,30 @@ DWORD fixup_imports (PDB32 *process,WINE_MODREF *wm) /* not sure about this branch, but it seems to work */ int ordinal = IMAGE_ORDINAL(thunk_list->u1.Ordinal); - TRACE(win32,"--- Ordinal %s.%d\n",Module,ordinal); + TRACE(win32,"--- Ordinal %s.%d\n",name,ordinal); thunk_list->u1.Function=(LPDWORD)MODULE_GetProcAddress32( process, hImpModule, (LPCSTR) ordinal ); if (!thunk_list->u1.Function) { - WARN(win32, "No implementation for %s.%d, setting to NULL\n", - Module,ordinal); - /* fixup_failed=1; */ + ERR(win32, "No implementation for %s.%d, setting to NULL\n", + name,ordinal); } } else { pe_name=(LPIMAGE_IMPORT_BY_NAME) RVA(thunk_list->u1.AddressOfData); TRACE(win32,"--- %s %s.%d\n", - pe_name->Name,Module,pe_name->Hint); + pe_name->Name,name,pe_name->Hint); thunk_list->u1.Function=(LPDWORD)MODULE_GetProcAddress32( process, hImpModule, pe_name->Name ); if (!thunk_list->u1.Function) { - WARN(win32, "No implementation for %s.%d, setting to NULL\n", - Module, pe_name->Hint); - /* fixup_failed=1; */ + ERR(win32, "No implementation for %s.%d, setting to NULL\n", + name, pe_name->Hint); } } thunk_list++; } } - pe_imp++; } - if (fixup_failed) return 22; return 0; } diff --git a/loader/task.c b/loader/task.c index 5483f0f5f2b..84d5b1d34d5 100644 --- a/loader/task.c +++ b/loader/task.c @@ -32,6 +32,7 @@ #include "thread.h" #include "debug.h" #include "dde_proc.h" +#include "server.h" /* Min. number of thunks allocated when creating a new segment */ #define MIN_THUNKS 32 @@ -39,14 +40,30 @@ /* Pointer to function to switch to a larger stack */ int (*IF1632_CallLargeStack)( int (*func)(), void *arg ) = NULL; -static HTASK16 hFirstTask = 0; -static HTASK16 hCurrentTask = 0; + +static THHOOK DefaultThhook = { 0 }; +THHOOK *pThhook = &DefaultThhook; + +#define hCurrentTask (pThhook->CurTDB) +#define hFirstTask (pThhook->HeadTDB) +#define hLockedTask (pThhook->LockTDB) + static HTASK16 hTaskToKill = 0; -static HTASK16 hLockedTask = 0; static UINT16 nTaskCount = 0; static void TASK_YieldToSystem(TDB*); +/*********************************************************************** + * TASK_InstallTHHook + */ +void TASK_InstallTHHook( THHOOK *pNewThhook ) +{ + THHOOK *pOldThhook = pThhook; + + pThhook = pNewThhook? pNewThhook : &DefaultThhook; + + *pThhook = *pOldThhook; +} /*********************************************************************** * TASK_GetNextTask @@ -209,6 +226,7 @@ static void TASK_CallToStart(void) SEGTABLEENTRY *pSegTable = NE_SEG_TABLE( pModule ); SET_CUR_THREAD( pTask->thdb ); + CLIENT_InitThread(); /* Terminate the stack frame */ THREAD_STACK16(pTask->thdb)->frame32 = NULL; if (pModule->flags & NE_FFLAGS_WIN32) diff --git a/memory/atom.c b/memory/atom.c index 6da969437a2..f2744cbcf07 100644 --- a/memory/atom.c +++ b/memory/atom.c @@ -144,6 +144,11 @@ static WORD ATOM_Hash( /*********************************************************************** * ATOM_AddAtom * + * Windows DWORD aligns the atom entry size. + * The remaining unused string space created by the alignment + * gets padded with '\0's in a certain way to ensure + * that at least one trailing '\0' remains. + * * RETURNS * Atom: Success * 0: Failure @@ -156,7 +161,7 @@ static ATOM ATOM_AddAtom( HANDLE16 entry; ATOMENTRY * entryPtr; ATOMTABLE * table; - int len; + int len, ae_len; if (str[0] == '#') return atoi( &str[1] ); /* Check for integer atom */ if ((len = strlen( str )) > MAX_ATOM_LEN) len = MAX_ATOM_LEN; @@ -175,7 +180,8 @@ static ATOM ATOM_AddAtom( entry = entryPtr->next; } - entry = LOCAL_Alloc( selector, LMEM_FIXED, sizeof(ATOMENTRY)+len-1 ); + ae_len = (sizeof(ATOMENTRY)+len+3) & ~3; + entry = LOCAL_Alloc( selector, LMEM_FIXED, ae_len); if (!entry) return 0; /* Reload the table ptr in case it moved in linear memory */ table = ATOM_GetTable( selector, FALSE ); @@ -183,7 +189,7 @@ static ATOM ATOM_AddAtom( entryPtr->next = table->entries[hash]; entryPtr->refCount = 1; entryPtr->length = len; - memcpy( entryPtr->str, str, len ); + strncpy( entryPtr->str, str, ae_len - sizeof(ATOMENTRY) + 1); /* always use strncpy ('\0's padding) */ table->entries[hash] = entry; return HANDLETOATOM( entry ); } diff --git a/memory/string.c b/memory/string.c index 262667f2cd4..85f77f2251d 100644 --- a/memory/string.c +++ b/memory/string.c @@ -189,10 +189,7 @@ INT16 WINAPI lstrcmpi16( LPCSTR str1, LPCSTR str2 ) * lstrcmpi32A (KERNEL32.605) */ INT32 WINAPI lstrcmpi32A( LPCSTR str1, LPCSTR str2 ) -{ - INT32 res; - - TRACE(string,"strcmpi %s and %s\n", +{ TRACE(string,"strcmpi %s and %s\n", debugstr_a (str1), debugstr_a (str2)); return CompareString32A(LOCALE_SYSTEM_DEFAULT,NORM_IGNORECASE,str1,-1,str2,-1)-2; } @@ -616,3 +613,37 @@ BOOL32 WINAPI OemToChar32W( LPCSTR s, LPWSTR d ) while ((*d++ = (WCHAR)OEM_TO_ANSI(*s++))); return TRUE; } + +/*********************************************************************** + * WideCharToLocal (Not a Windows API) + * similar lstrcpyWtoA, should handle codepages properly + * + * RETURNS + * strlen of the destination string + */ + +INT32 WINAPI WideCharToLocal32( + LPSTR pLocal, + LPWSTR pWide, + INT32 dwChars) +{ *pLocal = 0; + TRACE(string,"(%p, %s, %li)\n", pLocal, debugstr_w(pWide),dwChars); + WideCharToMultiByte(CP_ACP,0,pWide,-1,pLocal,dwChars,NULL,NULL); + return strlen(pLocal); +} +/*********************************************************************** + * LocalToWideChar (Not a Windows API) + * similar lstrcpyAtoW, should handle codepages properly + * + * RETURNS + * strlen of the destination string + */ +INT32 WINAPI LocalToWideChar32( + LPWSTR pWide, + LPSTR pLocal, + INT32 dwChars) +{ *pWide = 0; + TRACE(string,"(%p, %s, %li)\n",pWide, pLocal, dwChars); + MultiByteToWideChar(CP_ACP,0,pLocal,-1,pWide,dwChars); + return lstrlen32W(pWide); +} diff --git a/misc/comm.c b/misc/comm.c index a1f69d3af91..f0bcc0f8c49 100644 --- a/misc/comm.c +++ b/misc/comm.c @@ -14,6 +14,24 @@ * * August 12, 1997. Take a bash at SetCommEventMask - Lawson Whitney * + * July 6, 1998. Fixes and comments by Valentijn Sessink + * [V] + * I only quick-fixed an error for the output buffers. The thing is this: if a + * WinApp starts using serial ports, it calls OpenComm, asking it to open two + * buffers, cbInQueue and cbOutQueue size, to hold data to/from the serial + * ports. Wine OpenComm only returns "OK". Now the kernel buffer size for + * serial communication is only 4096 bytes large. Error: (App asks for + * a 104,000 bytes size buffer, Wine returns "OK", App asks "How many char's + * are in the buffer", Wine returns "4000" and App thinks "OK, another + * 100,000 chars left, good!") + * The solution below is a bad but working quickfix for the transmit buffer: + * the cbInQueue is saved in a variable; when the program asks how many chars + * there are in the buffer, GetCommError returns # in buffer PLUS + * the additional (cbOutQeueu - 4096), which leaves the application thinking + * "wow, almost full". + * Sorry for the rather chatty explanation - but I think comm.c needs to be + * redefined with real working buffers make it work; maybe these comments are + * of help. */ #include "config.h" @@ -56,6 +74,14 @@ */ int commerror = 0, eventmask = 0; +/* + * [V] If above globals are wrong, the one below will be wrong as well. It + * should probably be in the DosDeviceStruct on per port basis too. +*/ +int iGlobalOutQueueFiller; + +#define SERIAL_XMIT_SIZE 4096 + struct DosDeviceStruct COM[MAX_PORTS]; struct DosDeviceStruct LPT[MAX_PORTS]; LPCVOID *unknown[MAX_PORTS]; @@ -439,6 +465,10 @@ INT16 WINAPI OpenComm(LPCSTR device,UINT16 cbInQueue,UINT16 cbOutQueue) ERR(comm, "BUG ! COM0 doesn't exist !\n"); commerror = IE_BADID; } + + /* to help GetCommError return left buffsize [V] */ + iGlobalOutQueueFiller = (cbOutQueue - SERIAL_XMIT_SIZE); + if (iGlobalOutQueueFiller < 0) iGlobalOutQueueFiller = 0; TRACE(comm, "%s = %s\n", device, COM[port].devicename); @@ -780,7 +810,7 @@ INT16 WINAPI GetCommError(INT16 fd,LPCOMSTAT lpStat) rc = ioctl(fd, TIOCOUTQ, &cnt); if (rc) WARN(comm, "Error !\n"); - lpStat->cbOutQue = cnt; + lpStat->cbOutQue = cnt + iGlobalOutQueueFiller; rc = ioctl(fd, TIOCINQ, &cnt); if (rc) WARN(comm, "Error !\n"); diff --git a/misc/imagelist.c b/misc/imagelist.c index 5ca6e24c0f1..0514c0f7e04 100644 --- a/misc/imagelist.c +++ b/misc/imagelist.c @@ -10,7 +10,7 @@ * ILD_TRANSPARENT error in ImageList_DrawIndirect). * - Fix drag functions. * - Fix ImageList_Read and ImageList_Write. - * - Add ImageList_SetFilter (undocumented). + * - Fix ImageList_SetFilter (undocumented). * BTW does anybody know anything about this function??? * - It removes 12 Bytes from the stack (3 Parameters). * - First parameter SHOULD be a HIMAGELIST. @@ -31,10 +31,7 @@ */ #define __WINE_IMAGELIST_C -/* This must be defined until "GetIconInfo" is implemented completely. - * To do that the cursor and icon code in objects/cursoricon.c must - * be rewritten. - */ +/* This must be defined until "GetIconInfo" is not fully implemented. */ #define __GET_ICON_INFO_HACK__ #include "windows.h" @@ -1446,21 +1443,23 @@ ImageList_LoadImage32A (HINSTANCE32 hi, LPCSTR lpbmp, INT32 cx, INT32 cGrow, ptr->bBitsPerPixel, (char *)(ptr + 1) + ptr->nHeight * BITMAP_WIDTH_BYTES(ptr->nWidth, 1)); + GlobalUnlock16 (handle); himl = ImageList_Create (ptr->nWidth, ptr->nHeight, ILC_MASK | ILC_COLOR, 1, cGrow); ImageList_Add (himl, hbmImage, hbmMask); DeleteObject32 (hbmImage); DeleteObject32 (hbmMask); - GlobalUnlock16 (handle); #else ICONINFO32 ii; BITMAP32 bmp; GetIconInfo (hIcon, &ii); - GetObject32A (ii->hbmMask, sizeof(BITMAP32), (LPVOID)&bmp); + GetObject32A (ii->hbmColor, sizeof(BITMAP32), (LPVOID)&bmp); himl = ImageList_Create (bmp.bmWidth, bmp.bmHeight, ILC_MASK | ILC_COLOR, 1, cGrow); ImageList_Add (himl, ii->hbmColor, ii->hbmMask); + DeleteObject32 (ii->hbmColor); + DeleteObject32 (ii->hbmMask); #endif } @@ -1543,6 +1542,8 @@ ImageList_LoadImage32W (HINSTANCE32 hi, LPCWSTR lpbmp, INT32 cx, INT32 cGrow, himl = ImageList_Create (bmp.bmWidth, bmp.bmHeight, ILC_MASK | ILC_COLOR, 1, cGrow); ImageList_Add (himl, ii->hbmColor, ii->hbmMask); + DeleteObject32 (ii->hbmColor); + DeleteObject32 (ii->hbmMask); #endif } @@ -1915,6 +1916,8 @@ ImageList_ReplaceIcon (HIMAGELIST himl, INT32 i, HICON32 hIcon) BITMAP32 bmp; #endif + TRACE (imagelist, "(0x%x 0x%x 0x%x)\n", himl, i, hIcon); + if (himl == NULL) return (-1); if ((i >= himl->cCurImage) || (i < -1)) return (-1); @@ -1922,10 +1925,14 @@ ImageList_ReplaceIcon (HIMAGELIST himl, INT32 i, HICON32 hIcon) if (!(ptr = (CURSORICONINFO *)GlobalLock16(hIcon))) return (-1); hbmMask = CreateBitmap32 (ptr->nWidth, ptr->nHeight, 1, 1, (char *)(ptr + 1)); + if (!(hbmMask)) + ERR (imagelist, " no mask!\n"); hbmImage = CreateBitmap32 (ptr->nWidth, ptr->nHeight, ptr->bPlanes, ptr->bBitsPerPixel, (char *)(ptr + 1) + ptr->nHeight * BITMAP_WIDTH_BYTES(ptr->nWidth, 1)); + if (!(hbmMask)) + ERR (imagelist, " no image!\n"); #else GetIconInfo (hIcon, &ii); GetObject32A (ii->hbmMask, sizeof(BITMAP32), (LPVOID)&bmp); @@ -1970,10 +1977,13 @@ ImageList_ReplaceIcon (HIMAGELIST himl, INT32 i, HICON32 hIcon) DeleteDC32 (hdcImageList); DeleteDC32 (hdcImage); -#ifdef __GET_ICON_INFO_HACK +#ifdef __GET_ICON_INFO_HACK__ DeleteObject32 (hbmImage); DeleteObject32 (hbmMask); GlobalUnlock16 (hIcon); +#else + DeleteObject32 (ii->hbmColor); + DeleteObject32 (ii->hbmMask); #endif return (nIndex); } @@ -2071,15 +2081,14 @@ ImageList_SetDragCursorImage (HIMAGELIST himlDrag, INT32 iDrag, * empty stub. */ -#if 0 BOOL32 WINAPI ImageList_SetFilter (HIMAGELIST himl, INT32 i, DWORD dwFilter) { - FIXME (imagelist, "empty stub!\n"); - + FIXME (imagelist, "(%p 0x%08x 0x%08x):empty stub!\n", + himl, i, dwFilter); + return FALSE; } -#endif /* 0 */ /************************************************************************* diff --git a/misc/main.c b/misc/main.c index 9819e55faf6..6a459da5f42 100644 --- a/misc/main.c +++ b/misc/main.c @@ -1149,7 +1149,7 @@ BOOL32 WINAPI SystemParametersInfo32W( UINT32 uAction, UINT32 uParam, case SPI_GETHIGHCONTRAST: { - LPHIGHCONTRASTA lpHighContrastW = (LPHIGHCONTRASTW)lpvParam; + LPHIGHCONTRASTW lpHighContrastW = (LPHIGHCONTRASTW)lpvParam; FIXME(system,"SPI_GETHIGHCONTRAST not fully implemented\n"); @@ -1178,7 +1178,8 @@ BOOL32 WINAPI SystemParametersInfo32W( UINT32 uAction, UINT32 uParam, /*********************************************************************** * FileCDR (KERNEL.130) */ -void WINAPI FileCDR(FARPROC16 x) +FARPROC16 WINAPI FileCDR(FARPROC16 x) { FIXME(file,"(%8x): stub\n", (int) x); + return (FARPROC16)TRUE; } diff --git a/misc/network.c b/misc/network.c index a0eedadabb1..d95501670b1 100644 --- a/misc/network.c +++ b/misc/network.c @@ -14,6 +14,7 @@ #include "wnet.h" #include "debug.h" #include "win.h" +#include "heap.h" /******************************************************************** * WNetAddConnection16 [USER.517] Directs a local device to net @@ -27,7 +28,9 @@ UINT16 WINAPI WNetAddConnection16(LPCSTR lpNetPath, LPCSTR lpPassWord, return WNetAddConnection32A(lpNetPath, lpPassWord, lpLocalName); } -/* [MPR.50] */ +/********************************************************************* + * WNetAddConnection32 [MPR.50] + */ UINT32 WINAPI WNetAddConnection32A(LPCSTR NetPath, LPCSTR PassWord, LPCSTR LocalName) @@ -44,6 +47,7 @@ UINT32 WINAPI WNetAddConnection32W(LPCWSTR NetPath, LPCWSTR LocalName) { FIXME(wnet, " stub!\n"); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -108,7 +112,32 @@ UINT32 WINAPI WNetAddConnection3_32W(HWND32 owner, flags); } +/******************************************************************* + * WNetConnectionDialog1_32A [MPR.59] + */ +UINT32 WNetConnectionDialog1_32A (LPCONNECTDLGSTRUCT32A lpConnDlgStruct) +{ FIXME(wnet,"%p stub\n", lpConnDlgStruct); + SetLastError(WN_NO_NETWORK); + return ERROR_NO_NETWORK; +} +/******************************************************************* + * WNetConnectionDialog1_32W [MPR.60] + */ +UINT32 WNetConnectionDialog1_32W (LPCONNECTDLGSTRUCT32W lpConnDlgStruct) +{ FIXME(wnet,"%p stub\n", lpConnDlgStruct); + SetLastError(WN_NO_NETWORK); + return ERROR_NO_NETWORK; +} + +/******************************************************************* + * WNetConnectionDialog1_32 [MPR.61] + */ +UINT32 WNetConnectionDialog1_32(HWND32 owner, DWORD flags ) +{ FIXME(wnet,"owner = 0x%x, flags=0x%lx stub\n", owner,flags); + SetLastError(WN_NO_NETWORK); + return ERROR_NO_NETWORK; +} /******************************************************************** * WNetCancelConnection [USER.518] undirects a local device */ @@ -285,15 +314,15 @@ WNetGetConnection32A(LPCSTR localname,LPSTR remotename,LPDWORD buflen) * WNetGetConnectionW [MPR.72] */ DWORD WINAPI -WNetGetConnection32W(LPCWSTR localnameW,LPSTR remotenameW,LPDWORD buflen) +WNetGetConnection32W(LPCWSTR localnameW,LPWSTR remotenameW,LPDWORD buflen) { UINT16 x; CHAR buf[200]; LPSTR lnA = HEAP_strdupWtoA(GetProcessHeap(),0,localnameW); DWORD ret = WNetGetConnection16(lnA,buf,&x); - *buflen = x; /* FIXME: *2 ? */ lstrcpyAtoW(remotenameW,buf); + *buflen=lstrlen32W(remotenameW); HeapFree(GetProcessHeap(),0,lnA); return ret; } @@ -572,6 +601,7 @@ UINT32 WINAPI WNetOpenEnum32A(DWORD dwScope, DWORD dwType, DWORD dwUsage, { FIXME(wnet, "(%08lX, %08lX, %08lX, %p, %p): stub\n", dwScope, dwType, dwUsage, lpNet, lphEnum); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -584,6 +614,7 @@ WNetGetResourceInformation32A( LPNETRESOURCE32A netres,LPVOID buf,LPDWORD buflen,LPSTR systemstr ) { FIXME(wnet,"(%p,%p,%p,%p): stub!\n",netres,buf,buflen,systemstr); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -667,4 +698,19 @@ DWORD WINAPI _MPR_25(DWORD x, DWORD y) FIXME(mpr,"(%lx,%lx): stub\n",x,y); return 1; } +/***************************************************************** + * MultinetGetErrorTextA [MPR.28] + */ +UINT32 WINAPI MultinetGetErrorText32A (DWORD x, DWORD y, DWORD z) +{ FIXME(mpr,"(%lx,%lx,%lx): stub\n",x,y,z); + return 0; +} +/***************************************************************** + * MultinetGetErrorTextW [MPR.29] + */ + +UINT32 WINAPI MultinetGetErrorText32W (DWORD x, DWORD y, DWORD z) +{ FIXME(mpr,"(%lx,%lx,%lx): stub\n",x,y,z); + return 0; +} diff --git a/misc/ntdll.c b/misc/ntdll.c index 169cf451224..faee4d8b34a 100644 --- a/misc/ntdll.c +++ b/misc/ntdll.c @@ -712,3 +712,9 @@ DWORD WINAPI NtQueryInformationProcess(DWORD x1,DWORD x2,DWORD x3,DWORD x4,DWORD ); return 0; } + +DWORD WINAPI RtlFormatCurrentUserKeyPath() +{ + FIXME(ntdll,"(): stub\n"); + return 1; +} diff --git a/misc/printdrv.c b/misc/printdrv.c index 37a1748d640..75a6a8f5e05 100644 --- a/misc/printdrv.c +++ b/misc/printdrv.c @@ -2,6 +2,7 @@ * Implementation of some printer driver bits * * Copyright 1996 John Harvey + * Copyright 1998 Andreas Mohr */ #include @@ -12,9 +13,7 @@ #include "winerror.h" #include "winreg.h" #include "debug.h" - -#define INT_PD_DEFAULT_DEVMODE 1 -#define INT_PD_DEFAULT_MODEL 2 +#include "print.h" static char PrinterModel[] = "Printer Model"; static char DefaultDevMode[] = "Default DevMode"; @@ -31,7 +30,8 @@ INT16 WINAPI StartDoc16( HDC16 hdc, const DOCINFO16 *lpdoc ) TRACE(print, "%d %s %s\n",lpdoc->cbSize, (LPSTR)PTR_SEG_TO_LIN(lpdoc->lpszDocName), (LPSTR)PTR_SEG_TO_LIN(lpdoc->lpszOutput)); - retVal = Escape16(hdc, STARTDOC, sizeof(DOCINFO16), lpdoc->lpszDocName, 0); + retVal = Escape16(hdc, STARTDOC, + strlen((LPSTR)PTR_SEG_TO_LIN(lpdoc->lpszDocName)), lpdoc->lpszDocName, 0); TRACE(print,"Escape16 returned %d\n",retVal); return retVal; } @@ -100,8 +100,8 @@ DWORD WINAPI DrvGetPrinterData(LPSTR lpPrinter, LPSTR lpProfile, strcpy(RegStr_Printer, Printers); strcat(RegStr_Printer, lpPrinter); - if (((DWORD)lpProfile == INT_PD_DEFAULT_DEVMODE) || - (!lstrcmp32A(lpProfile, DefaultDevMode))) { + if (((DWORD)lpProfile == INT_PD_DEFAULT_DEVMODE) || (HIWORD(lpProfile) && + (!strcmp(lpProfile, DefaultDevMode)))) { size = DrvGetPrinterDataInternal(RegStr_Printer, lpPrinterData, cbData); if (size+1) { *lpNeeded = size; @@ -111,8 +111,8 @@ DWORD WINAPI DrvGetPrinterData(LPSTR lpPrinter, LPSTR lpProfile, else res = ERROR_INVALID_PRINTER_NAME; } else - if (((DWORD)lpProfile == INT_PD_DEFAULT_MODEL) || - (!lstrcmp32A(lpProfile, PrinterModel))) { + if (((DWORD)lpProfile == INT_PD_DEFAULT_MODEL) || (HIWORD(lpProfile) && + (!strcmp(lpProfile, PrinterModel)))) { *lpNeeded = 32; if (!lpPrinterData) goto failed; if (cbData < 32) { @@ -130,13 +130,18 @@ DWORD WINAPI DrvGetPrinterData(LPSTR lpPrinter, LPSTR lpProfile, if ((res = RegOpenKey32A(HKEY_LOCAL_MACHINE, RegStr_Printer, &hkey))) goto failed; cbPrinterAttr = 4; - if ((res = RegQueryValueEx32A(hkey, "Attributes", 0, &dwType, (LPBYTE)&PrinterAttr, &cbPrinterAttr))) + if ((res = RegQueryValueEx32A(hkey, "Attributes", 0, + &dwType, (LPBYTE)&PrinterAttr, &cbPrinterAttr))) goto failed; if ((res = RegOpenKey32A(hkey, PrinterDriverData, &hkey2))) goto failed; *lpNeeded = cbData; - res = RegQueryValueEx32A(hkey2, lpProfile, 0, lpType, lpPrinterData, lpNeeded); - if ((res != ERROR_CANTREAD) && ((PrinterAttr & (0x800|0x10)) == 0x10)) + res = RegQueryValueEx32A(hkey2, lpProfile, 0, + lpType, lpPrinterData, lpNeeded); + if ((res != ERROR_CANTREAD) && + ((PrinterAttr & + (PRINTER_ATTRIBUTE_ENABLE_BIDI|PRINTER_ATTRIBUTE_NETWORK)) + == PRINTER_ATTRIBUTE_NETWORK)) { if (!(res) && (*lpType == REG_DWORD) && (*(LPDWORD)lpPrinterData == -1)) res = ERROR_INVALID_DATA; @@ -176,8 +181,8 @@ DWORD WINAPI DrvSetPrinterData(LPSTR lpPrinter, LPSTR lpProfile, TRACE(print,"lpType %08lx\n",lpType); if ((!lpPrinter) || (!lpProfile) || - ((DWORD)lpProfile == INT_PD_DEFAULT_MODEL) || - (!lstrcmp32A(lpProfile, PrinterModel))) + ((DWORD)lpProfile == INT_PD_DEFAULT_MODEL) || (HIWORD(lpProfile) && + (!strcmp(lpProfile, PrinterModel)))) return ERROR_INVALID_PARAMETER; RegStr_Printer = HeapAlloc(GetProcessHeap(), 0, @@ -185,8 +190,8 @@ DWORD WINAPI DrvSetPrinterData(LPSTR lpPrinter, LPSTR lpProfile, strcpy(RegStr_Printer, Printers); strcat(RegStr_Printer, lpPrinter); - if (((DWORD)lpProfile == INT_PD_DEFAULT_DEVMODE) || - (!lstrcmp32A(lpProfile, DefaultDevMode))) { + if (((DWORD)lpProfile == INT_PD_DEFAULT_DEVMODE) || (HIWORD(lpProfile) && + (!strcmp(lpProfile, DefaultDevMode)))) { if (!(RegOpenKey32A(HKEY_LOCAL_MACHINE, RegStr_Printer, &hkey)) || (RegSetValueEx32A(hkey, DefaultDevMode, 0, REG_BINARY, lpPrinterData, dwSize))) res = ERROR_INVALID_PRINTER_NAME; diff --git a/misc/registry.c b/misc/registry.c index 01b7498a588..6f7ff914b7f 100644 --- a/misc/registry.c +++ b/misc/registry.c @@ -15,6 +15,7 @@ * TODO * Security access * Option handling + * Time for RegEnumKey*, RegQueryInfoKey* */ #include @@ -2080,7 +2081,7 @@ DWORD WINAPI RegCreateKey16( HKEY hkey, LPCSTR lpszSubKey, LPHKEY retkey ) * * Callpath: * RegQueryValue16 -> RegQueryValue32A -> RegQueryValueEx32A \ - * RegQueryValue32W -> RegQueryValueEx32W + * RegQueryValue32W -> RegQueryValueEx32W */ @@ -2602,12 +2603,22 @@ DWORD WINAPI RegSetValue16( HKEY hkey, LPCSTR lpszSubKey, DWORD dwType, * * Callpath: * RegEnumKey16 -> RegEnumKey32A -> RegEnumKeyEx32A \ - * RegEnumKey32W -> RegEnumKeyEx32W + * RegEnumKey32W -> RegEnumKeyEx32W */ /****************************************************************************** * RegEnumKeyEx32W [ADVAPI32.139] + * + * PARAMS + * hkey [I] Handle to key to enumerate + * iSubKey [I] Index of subkey to enumerate + * lpszName [O] Buffer for subkey name + * lpcchName [O] Size of subkey buffer + * lpdwReserved [I] Reserved + * lpszClass [O] Buffer for class string + * lpcchClass [O] Size of class buffer + * ft [O] Time key last written to */ DWORD WINAPI RegEnumKeyEx32W( HKEY hkey, DWORD iSubkey, LPWSTR lpszName, LPDWORD lpcchName, LPDWORD lpdwReserved, @@ -2626,17 +2637,24 @@ DWORD WINAPI RegEnumKeyEx32W( HKEY hkey, DWORD iSubkey, LPWSTR lpszName, if (!lpkey->nextsub) return ERROR_NO_MORE_ITEMS; lpxkey=lpkey->nextsub; + + /* Traverse the subkeys */ while (iSubkey && lpxkey) { iSubkey--; lpxkey=lpxkey->next; } + if (iSubkey || !lpxkey) return ERROR_NO_MORE_ITEMS; if (2*lstrlen32W(lpxkey->keyname)+2>*lpcchName) return ERROR_MORE_DATA; memcpy(lpszName,lpxkey->keyname,lstrlen32W(lpxkey->keyname)*2+2); + + if (*lpcchName) + *lpcchName = lstrlen32W(lpszName); + if (lpszClass) { - /* what should we write into it? */ + /* FIXME: what should we write into it? */ *lpszClass = 0; *lpcchClass = 2; } @@ -2749,9 +2767,14 @@ DWORD WINAPI RegEnumKey16( HKEY hkey, DWORD iSubkey, LPSTR lpszName, * RegEnumValue32W [ADVAPI32.142] * * PARAMS - * hkey [I] - * iValue [I] - * ... + * hkey [I] Handle to key to query + * iValue [I] Index of value to query + * lpszValue [O] Value string + * lpcchValue [O] Size of value buffer + * lpdReserved [I] Reserved + * lpdwType [O] Type code + * lpbData [O] Value data + * lpcbData [O] Size of data buffer */ DWORD WINAPI RegEnumValue32W( HKEY hkey, DWORD iValue, LPWSTR lpszValue, LPDWORD lpcchValue, LPDWORD lpdReserved, @@ -2772,10 +2795,11 @@ DWORD WINAPI RegEnumValue32W( HKEY hkey, DWORD iValue, LPWSTR lpszValue, if (!iValue) return ERROR_SUCCESS; - if (lpkey->nrofvalues<=iValue) - return ERROR_NO_MORE_ITEMS; + if (lpkey->nrofvalues <= iValue) + return ERROR_NO_MORE_ITEMS; - val = lpkey->values+iValue; + /* FIXME: Should this be lpkey->values + iValue * sizeof(KEYVALUE)? */ + val = lpkey->values + iValue; if (val->name) { if (lstrlen32W(val->name)*2+2>*lpcchValue) { @@ -2788,8 +2812,11 @@ DWORD WINAPI RegEnumValue32W( HKEY hkey, DWORD iValue, LPWSTR lpszValue, *lpszValue = 0; *lpcchValue = 0; } - if (lpdwType) - *lpdwType=val->type; + + /* Can be NULL if the type code is not required */ + if (lpdwType) + *lpdwType = val->type; + if (lpbData) { if (val->len>*lpcbData) return ERROR_MORE_DATA; @@ -2811,10 +2838,10 @@ DWORD WINAPI RegEnumValue32A( HKEY hkey, DWORD iValue, LPSTR lpszValue, LPWSTR lpszValueW; LPBYTE lpbDataW; DWORD ret,lpcbDataW; + DWORD dwType; - TRACE(reg,"(%x,%ld,%p,%p,%p,%p,%p,%p)\n", - hkey,iValue,lpszValue,lpcchValue,lpdReserved,lpdwType,lpbData,lpcbData - ); + TRACE(reg,"(%x,%ld,%p,%p,%p,%p,%p,%p)\n",hkey,iValue,lpszValue,lpcchValue, + lpdReserved,lpdwType,lpbData,lpcbData); lpszValueW = (LPWSTR)xmalloc(*lpcchValue*2); if (lpbData) { @@ -2822,21 +2849,17 @@ DWORD WINAPI RegEnumValue32A( HKEY hkey, DWORD iValue, LPSTR lpszValue, lpcbDataW = *lpcbData*2; } else lpbDataW = NULL; - ret=RegEnumValue32W( - hkey, - iValue, - lpszValueW, - lpcchValue, - lpdReserved, - lpdwType, - lpbDataW, - &lpcbDataW - ); + + ret = RegEnumValue32W( hkey, iValue, lpszValueW, lpcchValue, + lpdReserved, &dwType, lpbDataW, &lpcbDataW ); + + if (lpdwType) + *lpdwType = dwType; if (ret==ERROR_SUCCESS) { lstrcpyWtoA(lpszValue,lpszValueW); if (lpbData) { - if ((1<<*lpdwType) & UNICONVMASK) { + if ((1< *lpcbData) @@ -2847,11 +2870,9 @@ DWORD WINAPI RegEnumValue32A( HKEY hkey, DWORD iValue, LPSTR lpszValue, *lpcbData = lpcbDataW; } } - if (lpbDataW) - free(lpbDataW); - if (lpszValueW) - free(lpszValueW); - return ret; + if (lpbDataW) free(lpbDataW); + if (lpszValueW) free(lpszValueW); + return ret; } @@ -2906,8 +2927,8 @@ DWORD WINAPI RegCloseKey( HKEY hkey ) * RegDeleteKey32W [ADVAPI32.134] * * PARAMS - * hkey [I] - * lpszSubKey [I] + * hkey [I] Handle to open key + * lpszSubKey [I] Name of subkey to delete * * RETURNS * Success: ERROR_SUCCESS @@ -2925,10 +2946,11 @@ DWORD WINAPI RegDeleteKey32W( HKEY hkey, LPWSTR lpszSubKey ) if (!lpNextKey) return ERROR_INVALID_HANDLE; - /* We need to know the previous key in the hier. */ + /* Subkey param cannot be NULL */ if (!lpszSubKey || !*lpszSubKey) return ERROR_BADKEY; + /* We need to know the previous key in the hier. */ split_keypath(lpszSubKey,&wps,&wpc); i = 0; lpxkey = lpNextKey; @@ -3133,28 +3155,37 @@ DWORD WINAPI RegFlushKey( HKEY hkey ) /* FIXME: lpcchXXXX ... is this counting in WCHARS or in BYTEs ?? */ + /****************************************************************************** * RegQueryInfoKey32W [ADVAPI32.153] + * + * PARAMS + * hkey [I] Handle to key to query + * lpszClass [O] Buffer for class string + * lpcchClass [O] Size of class string buffer + * lpdwReserved [I] Reserved + * lpcSubKeys [I] Buffer for number of subkeys + * lpcchMaxSubKey [O] Buffer for longest subkey name length + * lpcchMaxClass [O] Buffer for longest class string length + * lpcValues [O] Buffer for number of value entries + * lpcchMaxValueName [O] Buffer for longest value name length + * lpccbMaxValueData [O] Buffer for longest value data length + * lpcbSecurityDescriptor [O] Buffer for security descriptor length + * ft */ -DWORD WINAPI RegQueryInfoKey32W( - HKEY hkey, - LPWSTR lpszClass, - LPDWORD lpcchClass, - LPDWORD lpdwReserved, - LPDWORD lpcSubKeys, - LPDWORD lpcchMaxSubkey, - LPDWORD lpcchMaxClass, - LPDWORD lpcValues, - LPDWORD lpcchMaxValueName, - LPDWORD lpccbMaxValueData, - LPDWORD lpcbSecurityDescriptor, - FILETIME *ft -) { +DWORD WINAPI RegQueryInfoKey32W( HKEY hkey, LPWSTR lpszClass, + LPDWORD lpcchClass, LPDWORD lpdwReserved, + LPDWORD lpcSubKeys, LPDWORD lpcchMaxSubkey, + LPDWORD lpcchMaxClass, LPDWORD lpcValues, + LPDWORD lpcchMaxValueName, + LPDWORD lpccbMaxValueData, + LPDWORD lpcbSecurityDescriptor, FILETIME *ft ) +{ LPKEYSTRUCT lpkey,lpxkey; int nrofkeys,maxsubkey,maxclass,maxvname,maxvdata; int i; - TRACE(reg,"(%x,......)\n",hkey); + TRACE(reg,"(%x,%p,...)\n",hkey,lpszClass); lpkey = lookup_hkey(hkey); if (!lpkey) return ERROR_INVALID_HANDLE; @@ -3210,21 +3241,16 @@ DWORD WINAPI RegQueryInfoKey32W( } -/* RegQueryInfoKeyA [ADVAPI32.152] */ -DWORD WINAPI RegQueryInfoKey32A( - HKEY hkey, - LPSTR lpszClass, - LPDWORD lpcchClass, - LPDWORD lpdwReserved, - LPDWORD lpcSubKeys, - LPDWORD lpcchMaxSubkey, - LPDWORD lpcchMaxClass, - LPDWORD lpcValues, - LPDWORD lpcchMaxValueName, - LPDWORD lpccbMaxValueData, - LPDWORD lpcbSecurityDescriptor, - FILETIME *ft -) { +/****************************************************************************** + * RegQueryInfoKey32A [ADVAPI32.152] + */ +DWORD WINAPI RegQueryInfoKey32A( HKEY hkey, LPSTR lpszClass, LPDWORD lpcchClass, + LPDWORD lpdwReserved, LPDWORD lpcSubKeys, + LPDWORD lpcchMaxSubkey, LPDWORD lpcchMaxClass, + LPDWORD lpcValues, LPDWORD lpcchMaxValueName, + LPDWORD lpccbMaxValueData, + LPDWORD lpcbSecurityDescriptor, FILETIME *ft ) +{ LPWSTR lpszClassW; DWORD ret; @@ -3322,16 +3348,21 @@ LONG WINAPI RegGetKeySecurity( HKEY hkey, { LPKEYSTRUCT lpkey; - FIXME(reg, "(%x,%ld,%p,%ld): stub\n",hkey,SecurityInformation, - pSecurityDescriptor,lpcbSecurityDescriptor?*lpcbSecurityDescriptor:0); + TRACE(reg,"(%x,%ld,%p,%ld)\n",hkey,SecurityInformation,pSecurityDescriptor, + lpcbSecurityDescriptor?*lpcbSecurityDescriptor:0); lpkey = lookup_hkey( hkey ); if (!lpkey) return ERROR_INVALID_HANDLE; + /* FIXME: Check for valid SecurityInformation values */ + if (*lpcbSecurityDescriptor < sizeof(*pSecurityDescriptor)) return ERROR_INSUFFICIENT_BUFFER; + FIXME(reg, "(%x,%ld,%p,%ld): stub\n",hkey,SecurityInformation, + pSecurityDescriptor,lpcbSecurityDescriptor?*lpcbSecurityDescriptor:0); + return ERROR_SUCCESS; } @@ -3347,8 +3378,7 @@ LONG WINAPI RegGetKeySecurity( HKEY hkey, LONG WINAPI RegLoadKey32W( HKEY hkey, LPCWSTR lpszSubKey, LPCWSTR lpszFile ) { LPKEYSTRUCT lpkey; - FIXME(reg,"(%x,%s,%s): stub\n",hkey,debugstr_w(lpszSubKey), - debugstr_w(lpszFile)); + TRACE(reg,"(%x,%s,%s)\n",hkey,debugstr_w(lpszSubKey),debugstr_w(lpszFile)); /* Do this check before the hkey check */ if (!lpszSubKey || !*lpszSubKey || !lpszFile || !*lpszFile) @@ -3358,6 +3388,9 @@ LONG WINAPI RegLoadKey32W( HKEY hkey, LPCWSTR lpszSubKey, LPCWSTR lpszFile ) if (!lpkey) return ERROR_INVALID_HANDLE; + FIXME(reg,"(%x,%s,%s): stub\n",hkey,debugstr_w(lpszSubKey), + debugstr_w(lpszFile)); + return ERROR_SUCCESS; } @@ -3392,13 +3425,16 @@ LONG WINAPI RegNotifyChangeKeyValue( HKEY hkey, BOOL32 fWatchSubTree, BOOL32 fAsync ) { LPKEYSTRUCT lpkey; - FIXME(reg,"(%x,%i,%ld,%x,%i): stub\n",hkey,fWatchSubTree,fdwNotifyFilter, + TRACE(reg,"(%x,%i,%ld,%x,%i)\n",hkey,fWatchSubTree,fdwNotifyFilter, hEvent,fAsync); lpkey = lookup_hkey( hkey ); if (!lpkey) return ERROR_INVALID_HANDLE; + FIXME(reg,"(%x,%i,%ld,%x,%i): stub\n",hkey,fWatchSubTree,fdwNotifyFilter, + hEvent,fAsync); + return ERROR_SUCCESS; } @@ -3443,7 +3479,7 @@ LONG WINAPI RegSetKeySecurity( HKEY hkey, SECURITY_INFORMATION SecurityInfo, { LPKEYSTRUCT lpkey; - FIXME(reg, "(%x,%ld,%p): stub\n", hkey, SecurityInfo, pSecurityDesc); + TRACE(reg,"(%x,%ld,%p)\n",hkey,SecurityInfo,pSecurityDesc); /* It seems to perform this check before the hkey check */ if ((SecurityInfo & OWNER_SECURITY_INFORMATION) || @@ -3461,6 +3497,8 @@ LONG WINAPI RegSetKeySecurity( HKEY hkey, SECURITY_INFORMATION SecurityInfo, if (!lpkey) return ERROR_INVALID_HANDLE; + FIXME(reg,":(%x,%ld,%p): stub\n",hkey,SecurityInfo,pSecurityDesc); + return ERROR_SUCCESS; } @@ -3478,7 +3516,7 @@ LONG WINAPI RegSaveKey32W( HKEY hkey, LPCWSTR lpFile, { LPKEYSTRUCT lpkey; - FIXME(reg, "(%x,%s,%p): stub\n", hkey, debugstr_w(lpFile), sa); + TRACE(reg, "(%x,%s,%p)\n", hkey, debugstr_w(lpFile), sa); /* It appears to do this check before the hkey check */ if (!lpFile || !*lpFile) @@ -3488,6 +3526,8 @@ LONG WINAPI RegSaveKey32W( HKEY hkey, LPCWSTR lpFile, if (!lpkey) return ERROR_INVALID_HANDLE; + FIXME(reg, "(%x,%s,%p): stub\n", hkey, debugstr_w(lpFile), sa); + return ERROR_SUCCESS; } @@ -3517,7 +3557,8 @@ LONG WINAPI RegSaveKey32A( HKEY hkey, LPCSTR lpFile, LONG WINAPI RegRestoreKey32W( HKEY hkey, LPCWSTR lpFile, DWORD dwFlags ) { LPKEYSTRUCT lpkey; - FIXME(reg, "(%x,%s,%ld): stub\n", hkey, debugstr_w(lpFile), dwFlags); + + TRACE(reg, "(%x,%s,%ld)\n",hkey,debugstr_w(lpFile),dwFlags); /* It seems to do this check before the hkey check */ if (!lpFile || !*lpFile) @@ -3527,6 +3568,8 @@ LONG WINAPI RegRestoreKey32W( HKEY hkey, LPCWSTR lpFile, DWORD dwFlags ) if (!lpkey) return ERROR_INVALID_HANDLE; + FIXME(reg,"(%x,%s,%ld): stub\n",hkey,debugstr_w(lpFile),dwFlags); + /* Check for file existence */ return ERROR_SUCCESS; @@ -3560,13 +3603,16 @@ LONG WINAPI RegReplaceKey32W( HKEY hkey, LPCWSTR lpSubKey, LPCWSTR lpNewFile, { LPKEYSTRUCT lpkey; - FIXME(reg, "(%x,%s,%s,%s): stub\n", hkey, debugstr_w(lpSubKey), + TRACE(reg,"(%x,%s,%s,%s)\n",hkey,debugstr_w(lpSubKey), debugstr_w(lpNewFile),debugstr_w(lpOldFile)); lpkey = lookup_hkey( hkey ); if (!lpkey) return ERROR_INVALID_HANDLE; + FIXME(reg, "(%x,%s,%s,%s): stub\n", hkey, debugstr_w(lpSubKey), + debugstr_w(lpNewFile),debugstr_w(lpOldFile)); + return ERROR_SUCCESS; } diff --git a/misc/shell.c b/misc/shell.c index b1400839928..75d830f0731 100644 --- a/misc/shell.c +++ b/misc/shell.c @@ -1,6 +1,8 @@ /* * Shell Library Functions * + * 1998 Marcus Meissner + * 1998 Juergen Schmied (jsch) * currently work in progress on SH* and SHELL32_DllGetClassObject functions * */ @@ -27,12 +29,18 @@ #include "debug.h" #include "winreg.h" +/* FIXME should be moved to a header file. IsEqualGUID +is declared but not exported in compobj.c !!!*/ +#define IsEqualGUID(rguid1, rguid2) (!memcmp(rguid1, rguid2, sizeof(GUID))) +#define IsEqualIID(riid1, riid2) IsEqualGUID(riid1, riid2) +#define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID(rclsid1, rclsid2) + static const char * const SHELL_People[] = { "Bob Amstadt", "Dag Asheim", "Martin Ayotte", - "Karl Backstr\366m", + "Karl Backström", "Peter Bajusz", "Marcel Baur", "Georg Beyerle", @@ -81,6 +89,7 @@ static const char * const SHELL_People[] = "Pavel Kankovsky", "Jochen Karrer", "Andreas Kirschbaum", + "Rein Klazes", "Albrecht Kleine", "Eric Kohl", "Jon Konrath", @@ -90,6 +99,7 @@ static const char * const SHELL_People[] = "Scott A. Laird", "David Lee Lambert", "Andrew Lewycky", + "Per Lindström", "Martin von Loewis", "Michiel van Loon", "Kenneth MacDonald", @@ -126,6 +136,7 @@ static const char * const SHELL_People[] = "Peter Schlaile", "Ulrich Schmid", "Bernd Schmidt", + "Juergen Schmied", "Ingo Schneider", "Victor Schneider", "Yngvi Sigurjonsson", @@ -1574,65 +1585,88 @@ void WINAPI FreeIconList( DWORD dw ) } /************************************************************************* - * SHELL32_DllGetClassObject [SHELL32.14] + * SHELL32_DllGetClassObject [SHELL32.128] + * + * [Standart OLE/COM Interface Method] + * This Function retrives the pointer to a specified interface (iid) of + * a given class (rclsid). + * With this pointer it's possible to call the IClassFactory_CreateInstance + * method to get a instance of the requested Class. + * This function does NOT instantiate the Class!!! + * + * RETURNS + * HRESULT * - * http://premium.microsoft.com/msdn/library/sdkdoc/api2_48fo.htm */ DWORD WINAPI SHELL32_DllGetClassObject(REFCLSID rclsid,REFIID iid,LPVOID *ppv) -{ - char xclsid[50],xiid[50]; - HRESULT hres = E_OUTOFMEMORY; +{ HRESULT hres = E_OUTOFMEMORY; + LPCLASSFACTORY lpclf; + char xclsid[50],xiid[50]; + WINE_StringFromCLSID((LPCLSID)rclsid,xclsid); + WINE_StringFromCLSID((LPCLSID)iid,xiid); + TRACE(shell,"\n\tCLSID:\t%s,\n\tIID:\t%s\n",xclsid,xiid); + + *ppv = NULL; + if(IsEqualCLSID(rclsid, &CLSID_ShellDesktop)|| + IsEqualCLSID(rclsid, &CLSID_ShellLink)) + { if(IsEqualCLSID(rclsid, &CLSID_ShellDesktop)) /*debug*/ + TRACE(shell,"requested CLSID_ShellDesktop\n"); + if(IsEqualCLSID(rclsid, &CLSID_ShellLink)) /*debug*/ + TRACE(shell,"requested CLSID_ShellLink\n"); - WINE_StringFromCLSID((LPCLSID)rclsid,xclsid); - WINE_StringFromCLSID((LPCLSID)iid,xiid); - TRACE(shell,"(%s,%s,%p)\n",xclsid,xiid,ppv); - - *ppv = NULL; -/* SDK example code looks like this: - * - HRESULT hres = E_OUTOFMEMORY; - - *ppv = NULL; - CClassFactory *pClassFactory = new CClassFactory(rclsid); - - if (pClassFactory) { - hRes = pClassFactory->QueryInterface(riid,ppv); - pClassFactory->Release(); - } - return hRes; - * - * The magic of the whole stuff is still unclear to me, so just hack together - * something. - */ - - if (!memcmp(rclsid,&CLSID_ShellDesktop,sizeof(CLSID_ShellDesktop))) - { TRACE(shell," requested CLSID_ShellDesktop, creating it.\n"); - *ppv = IShellFolder_Constructor(); -/* FIXME(shell,"Initialize this folder to be the shell desktop folder\n")*/ - return S_OK; + /* fixme: the IClassFactory_Constructor at the moment only + for rclsid=CLSID_ShellDesktop, so we get the right Interface (jsch)*/ + lpclf = IClassFactory_Constructor(); + if(lpclf) + { hres = lpclf->lpvtbl->fnQueryInterface(lpclf,iid, ppv); + lpclf->lpvtbl->fnRelease(lpclf); + } } - - FIXME(shell, "clsid(%s) not found, return CLASS_E_CLASSNOTAVAILABLE.\n",xclsid); - *ppv=NULL; - return CLASS_E_CLASSNOTAVAILABLE; + else + { WARN(shell, "clsid(%s) not in buildin SHELL32\n",xclsid); + hres = CLASS_E_CLASSNOTAVAILABLE; + } + TRACE(shell,"RETURN pointer to interface: %p\n",ppv); + return hres; } /************************************************************************* - * SHGetDesktopFolder [SHELL32.216] - * returns the interface to the shell desktop folder. + * SHGetDesktopFolder [SHELL32.216] + * + * SDK header win95/shlobj.h: This is equivalent to call CoCreateInstance with + * CLSID_ShellDesktop + * CoCreateInstance(CLSID_Desktop, NULL, CLSCTX_INPROC, IID_IShellFolder, &pshf); * - * [SDK header win95/shlobj.h: This is equivalent to call CoCreateInstance with - * CLSID_ShellDesktop. + * RETURNS + * the interface to the shell desktop folder. * - * CoCreateInstance(CLSID_Desktop, NULL, - * CLSCTX_INPROC, IID_IShellFolder, &pshf); - * ] - * So what we are doing is currently wrong.... */ -DWORD WINAPI SHGetDesktopFolder(LPSHELLFOLDER *shellfolder) { - *shellfolder = IShellFolder_Constructor(); - return NOERROR; +LPSHELLFOLDER pdesktopfolder=NULL; + +DWORD WINAPI SHGetDesktopFolder(LPSHELLFOLDER *shellfolder) +{ HRESULT hres = E_OUTOFMEMORY; + LPCLASSFACTORY lpclf; + TRACE(shell,"%p->(%p)\n",shellfolder,*shellfolder); + + if (pdesktopfolder) + { *shellfolder = pdesktopfolder; + hres = NOERROR; + } + else + { lpclf = IClassFactory_Constructor(); + /* fixme: the buildin IClassFactory_Constructor is at the moment only + for rclsid=CLSID_ShellDesktop, so we get the right Interface (jsch)*/ + if(lpclf) + { hres = lpclf->lpvtbl->fnCreateInstance(lpclf,NULL,(REFIID)&IID_IShellFolder, (void*)&pdesktopfolder); + lpclf->lpvtbl->fnRelease(lpclf); + } + } + if (pdesktopfolder) + { *shellfolder = pdesktopfolder; + } + TRACE(shell,"-- %p->(%p)\n",shellfolder, *shellfolder); + return hres; } /************************************************************************* @@ -1645,61 +1679,95 @@ DWORD WINAPI SHGetDesktopFolder(LPSHELLFOLDER *shellfolder) { * What we are currently doing is not very wrong, since we always use the same * heap (ProcessHeap). */ -DWORD WINAPI SHGetMalloc(LPMALLOC32 *lpmal) { - TRACE(shell,"(%p)\n", lpmal); +DWORD WINAPI SHGetMalloc(LPMALLOC32 *lpmal) +{ TRACE(shell,"(%p)\n", lpmal); return CoGetMalloc32(0,lpmal); } /************************************************************************* * SHGetSpecialFolderLocation [SHELL32.223] - * returns the PIDL of a special folder + * nFolder is a CSIDL_xxxxx. * - * nFolder is a CSIDL_xxxxx. + * RETURNS + * returns the PIDL of a special folder + * + * FIXME + * the path is every time x:\\windows\\desktop + * we should get the path's from the registry */ -HRESULT WINAPI SHGetSpecialFolderLocation(HWND32 hwndOwner, INT32 nFolder, LPITEMIDLIST * ppidl) -{ FIXME(shell,"(%04x,%d,%p),stub!\n", hwndOwner,nFolder,ppidl); +HRESULT WINAPI SHGetSpecialFolderLocation( + HWND32 hwndOwner, + INT32 nFolder, + LPITEMIDLIST * ppidl) +{ LPSHELLFOLDER shellfolder; + DWORD pchEaten; + CHAR pszTemp[256]; + LPWSTR lpszDisplayName = (LPWSTR)&pszTemp[0]; + + FIXME(shell,"(%04x,%d,%p),stub!\n", hwndOwner,nFolder,ppidl); - switch (nFolder) - { case CSIDL_BITBUCKET: TRACE (shell,"looking for Recyceler\n"); - break; - case CSIDL_CONTROLS: TRACE (shell,"looking for Control\n"); - break; - case CSIDL_DESKTOP: TRACE (shell,"looking for Desktop\n"); - break; - case CSIDL_DESKTOPDIRECTORY: TRACE (shell,"looking for DeskDir\n"); - break; - case CSIDL_DRIVES: TRACE (shell,"looking for Drives\n"); - break; - case CSIDL_FONTS: TRACE (shell,"looking for Fonts\n"); - break; - case CSIDL_NETHOOD: TRACE (shell,"looking for Nethood\n"); - break; - case CSIDL_NETWORK: TRACE (shell,"looking for Network\n"); - break; - case CSIDL_PERSONAL: TRACE (shell,"looking for Personal\n"); - break; - case CSIDL_PRINTERS: TRACE (shell,"looking for Printers\n"); - break; - case CSIDL_PROGRAMS: TRACE (shell,"looking for Programms\n"); - break; - case CSIDL_RECENT: TRACE (shell,"looking for Recent\n"); - break; - case CSIDL_SENDTO: TRACE (shell,"looking for Sendto\n"); - break; - case CSIDL_STARTMENU: TRACE (shell,"looking for Startmenu\n"); - break; - case CSIDL_STARTUP: TRACE (shell,"looking for Startup\n"); - break; - case CSIDL_TEMPLATES: TRACE (shell,"looking for Templates\n"); - break; - default: ERR (shell,"unknown CSIDL\n"); - break; + LocalToWideChar32(lpszDisplayName, "x:\\windows\\desktop\\", 256); + + if (SHGetDesktopFolder(&shellfolder)==S_OK) + { shellfolder->lpvtbl->fnParseDisplayName(shellfolder,hwndOwner, + NULL,lpszDisplayName,&pchEaten,ppidl,NULL); } - *ppidl = (LPITEMIDLIST)HeapAlloc(GetProcessHeap(),0,sizeof(ITEMIDLIST)); - (*ppidl)->mkid.cb = 0; /*the first ITEMIDLIST*/ + switch (nFolder) + { case CSIDL_BITBUCKET: + TRACE (shell,"looking for Recyceler\n"); + break; + case CSIDL_CONTROLS: + TRACE (shell,"looking for Control\n"); + break; + case CSIDL_DESKTOP: + TRACE (shell,"looking for Desktop\n"); + break; + case CSIDL_DESKTOPDIRECTORY: + TRACE (shell,"looking for DeskDir\n"); + break; + case CSIDL_DRIVES: + TRACE (shell,"looking for Drives\n"); + break; + case CSIDL_FONTS: + TRACE (shell,"looking for Fonts\n"); + break; + case CSIDL_NETHOOD: + TRACE (shell,"looking for Nethood\n"); + break; + case CSIDL_NETWORK: + TRACE (shell,"looking for Network\n"); + break; + case CSIDL_PERSONAL: + TRACE (shell,"looking for Personal\n"); + break; + case CSIDL_PRINTERS: + TRACE (shell,"looking for Printers\n"); + break; + case CSIDL_PROGRAMS: + TRACE (shell,"looking for Programms\n"); + break; + case CSIDL_RECENT: + TRACE (shell,"looking for Recent\n"); + break; + case CSIDL_SENDTO: + TRACE (shell,"looking for Sendto\n"); + break; + case CSIDL_STARTMENU: + TRACE (shell,"looking for Startmenu\n"); + break; + case CSIDL_STARTUP: + TRACE (shell,"looking for Startup\n"); + break; + case CSIDL_TEMPLATES: + TRACE (shell,"looking for Templates\n"); + break; + default: + ERR (shell,"unknown CSIDL\n"); + break; + } - FIXME(shell, "return empty ITEMIDLIST only (pidl %p)\n",*ppidl); + TRACE(shell, "-- (new pidl %p)\n",*ppidl); return NOERROR; } @@ -1709,8 +1777,16 @@ HRESULT WINAPI SHGetSpecialFolderLocation(HWND32 hwndOwner, INT32 nFolder, LPITE * returns the path from a passed PIDL. */ BOOL32 WINAPI SHGetPathFromIDList(LPCITEMIDLIST pidl,LPSTR pszPath) -{ FIXME(shell,"(pidl %p,%p),stub, returning E:\\\\ \n",pidl,pszPath); - strcpy(pszPath,"E:\\"); /* FIXME */ +{ STRRET lpName; + LPSHELLFOLDER shellfolder; + TRACE(shell,"(pidl=%p,%p)\n",pidl,pszPath); + + if (SHGetDesktopFolder(&shellfolder)==S_OK) + { shellfolder->lpvtbl->fnGetDisplayNameOf(shellfolder,pidl,SHGDN_FORPARSING,&lpName); + } + WideCharToLocal32(pszPath, lpName.u.pOleStr, MAX_PATH); + /* fixme free the olestring*/ + TRACE(shell,"-- (%s)\n",pszPath); return NOERROR; } @@ -1721,14 +1797,25 @@ BOOL32 WINAPI SHGetPathFromIDList(LPCITEMIDLIST pidl,LPSTR pszPath) DWORD WINAPI SHHelpShortcuts_RunDLL (DWORD dwArg1, DWORD dwArg2, DWORD dwArg3, DWORD dwArg4) +{ FIXME (exec, "(%lx, %lx, %lx, %lx) empty stub!\n", + dwArg1, dwArg2, dwArg3, dwArg4); + + return 0; +} + +/************************************************************************* + * SHLoadInProc [SHELL32.225] + * + */ + +DWORD WINAPI +SHLoadInProc (DWORD dwArg1) { - FIXME (exec, "(%lx, %lx, %lx, %lx) empty stub!\n", - dwArg1, dwArg2, dwArg3, dwArg4); + FIXME (shell, "(%lx) empty stub!\n", dwArg1); return 0; } - /************************************************************************* * SHBrowseForFolderA [SHELL32.209] * @@ -1736,10 +1823,8 @@ SHHelpShortcuts_RunDLL (DWORD dwArg1, DWORD dwArg2, DWORD dwArg3, DWORD dwArg4) LPITEMIDLIST WINAPI SHBrowseForFolder32A (LPBROWSEINFO32A lpbi) -{ - FIXME (exec, "(%lx) empty stub!\n", (DWORD)lpbi); - FIXME (exec, "(%s) empty stub!\n", lpbi->lpszTitle); - - return NULL; +{ FIXME (shell, "(%lx) empty stub!\n", (DWORD)lpbi); + FIXME (shell, "(%s) empty stub!\n", lpbi->lpszTitle); + return NULL; } diff --git a/misc/shellord.c b/misc/shellord.c index 432e5ca2ceb..2f6a3437c2b 100644 --- a/misc/shellord.c +++ b/misc/shellord.c @@ -31,24 +31,32 @@ #include "winreg.h" /************************************************************************* - * SHELL32_2 [SHELL32.2] + * SHChangeNotifyRegister [SHELL32.2] */ -DWORD WINAPI SHELL32_2(HWND32 hwnd,DWORD x2,DWORD x3,DWORD x4,DWORD x5,DWORD x6) { +DWORD WINAPI +SHChangeNotifyRegister(HWND32 hwnd,DWORD x2,DWORD x3,DWORD x4,DWORD x5,DWORD x6) { FIXME(shell,"(0x%04x,0x%08lx,0x%08lx,0x%08lx,0x%08lx,0x%08lx):stub.\n", hwnd,x2,x3,x4,x5,x6 ); return 0; } + /************************************************************************* - * SHELL32_16 [SHELL32.16] - * find_lastitem_in_itemidlist() - * - * NOTES - * Original name: ILFindLast (exported by ordinal) + * ILGetDisplayName [SHELL32.15] + * get_path_from_itemlist(itemlist,path); ? not sure... */ -LPSHITEMID WINAPI SHELL32_16(LPITEMIDLIST iil) { +BOOL32 WINAPI ILGetDisplayName(LPCITEMIDLIST iil,LPSTR path) { + FIXME(shell,"(%p,%p),stub, return e:!\n",iil,path); + strcpy(path,"e:\\"); + return TRUE; +} +/************************************************************************* + * ILFindLastID [SHELL32.16] + */ +LPSHITEMID WINAPI ILFindLastID(LPITEMIDLIST iil) { LPSHITEMID lastsii,sii; + TRACE(shell,"%p\n",iil); if (!iil) return NULL; sii = &(iil->mkid); @@ -61,13 +69,10 @@ LPSHITEMID WINAPI SHELL32_16(LPITEMIDLIST iil) { } /************************************************************************* - * SHELL32_29 [SHELL32.29] - * is_rootdir(const char*path) - * - * NOTES - * Original Name: PathIsRoot + * PathIsRoot [SHELL32.29] */ -BOOL32 WINAPI SHELL32_29(LPCSTR x) { +BOOL32 WINAPI PathIsRoot(LPCSTR x) { + TRACE(shell,"%s\n",x); if (!strcmp(x+1,":\\")) /* "X:\" */ return 1; if (!strcmp(x,"\\")) /* "\" */ @@ -86,25 +91,24 @@ BOOL32 WINAPI SHELL32_29(LPCSTR x) { } /************************************************************************* - * SHELL32_30 [SHELL32.30] - * get_rootdir(char*path,int drive) - * - * NOTES - * Original Name: PathBuildRoot + * PathBuildRoot [SHELL32.30] */ -LPSTR WINAPI SHELL32_30(LPSTR root,BYTE drive) { +LPSTR WINAPI PathBuildRoot(LPSTR root,BYTE drive) { + TRACE(shell,"%p %i\n",root, drive); strcpy(root,"A:\\"); root[0]+=drive; return root; } /************************************************************************* - * SHELL32_31 [SHELL32.31] - * returns pointer to last . in last pathcomponent or at \0. + * PathFindExtension [SHELL32.31] + * + * NOTES + * returns pointer to last . in last pathcomponent or at \0. */ -LPSTR WINAPI SHELL32_31(LPSTR path) { - LPSTR lastpoint = NULL; - +LPSTR WINAPI PathFindExtension(LPSTR path) { + LPSTR lastpoint = NULL; + TRACE(shell,"%p %s\n",path,path); while (*path) { if (*path=='\\'||*path==' ') lastpoint=NULL; @@ -116,12 +120,14 @@ LPSTR WINAPI SHELL32_31(LPSTR path) { } /************************************************************************* - * SHELL32_32 [SHELL32.32] - * append \ if there is none + * PathAddBackslash [SHELL32.32] + * + * NOTES + * append \ if there is none */ -LPSTR WINAPI SHELL32_32(LPSTR path) { +LPSTR WINAPI PathAddBackslash(LPSTR path) { int len; - + TRACE(shell,"%p->%s\n",path,path); len = lstrlen32A(path); if (len && path[len-1]!='\\') { path[len+0]='\\'; @@ -132,12 +138,14 @@ LPSTR WINAPI SHELL32_32(LPSTR path) { } /************************************************************************* - * SHELL32_33 [SHELL32.33] - * remove spaces from beginning and end of passed string + * PathRemoveBlanks [SHELL32.33] + * + * NOTES + * remove spaces from beginning and end of passed string */ -LPSTR WINAPI SHELL32_33(LPSTR str) { +LPSTR WINAPI PathRemoveBlanks(LPSTR str) { LPSTR x = str; - + TRACE(shell,"PathRemoveBlanks %s\n",str); while (*x==' ') x++; if (x!=str) lstrcpy32A(str,x); @@ -153,12 +161,14 @@ LPSTR WINAPI SHELL32_33(LPSTR str) { /************************************************************************* - * SHELL32_34 [SHELL32.34] - * basename(char *fn); + * PathFindFilename [SHELL32.34] + * + * NOTES + * basename(char *fn); */ -LPSTR WINAPI SHELL32_34(LPSTR fn) { +LPSTR WINAPI PathFindFilename(LPSTR fn) { LPSTR basefn; - + TRACE(shell,"PathFindFilename %s\n",fn); basefn = fn; while (fn[0]) { if (((fn[0]=='\\') || (fn[0]==':')) && fn[1] && fn[1]!='\\') @@ -169,16 +179,18 @@ LPSTR WINAPI SHELL32_34(LPSTR fn) { } /************************************************************************* - * SHELL32_35 [SHELL32.35] - * bool getpath(char *pathname); truncates passed argument to a valid path - * returns if the string was modified or not. - * "\foo\xx\foo"-> "\foo\xx" - * "\" -> "\" - * "a:\foo" -> "a:\" + * PathRemoveFileSpec [SHELL32.35] + * + * NOTES + * bool getpath(char *pathname); truncates passed argument to a valid path + * returns if the string was modified or not. + * "\foo\xx\foo"-> "\foo\xx" + * "\" -> "\" + * "a:\foo" -> "a:\" */ -DWORD WINAPI SHELL32_35(LPSTR fn) { +DWORD WINAPI PathRemoveFileSpec(LPSTR fn) { LPSTR x,cutplace; - + TRACE(shell,"%s\n",fn); if (!fn[0]) return 0; x=fn; @@ -211,71 +223,84 @@ DWORD WINAPI SHELL32_35(LPSTR fn) { } /************************************************************************* - * SHELL32_37 [SHELL32.37] - * concat_paths(char*target,const char*add); - * concats "target\\add" and writes them to target + * PathCombine [SHELL32.37] + * + * NOTES + * concat_paths(char*target,const char*add); + * concats "target\\add" and writes them to target */ -LPSTR WINAPI SHELL32_37(LPSTR target,LPSTR x1,LPSTR x2) { +LPSTR WINAPI PathCombine(LPSTR target,LPSTR x1,LPSTR x2) { char buf[260]; - + TRACE(shell,"%s %s\n",x1,x2); if (!x2 || !x2[0]) { lstrcpy32A(target,x1); return target; } lstrcpy32A(buf,x1); - SHELL32_32(buf); /* append \ if not there */ + PathAddBackslash(buf); /* append \ if not there */ lstrcat32A(buf,x2); lstrcpy32A(target,buf); return target; } /************************************************************************* - * SHELL32_36 [SHELL32.36] - * concat_paths(char*target,const char*add); - * concats "target\\add" and writes them to target + * PathAppend [SHELL32.36] + * + * NOTES + * concat_paths(char*target,const char*add); + * concats "target\\add" and writes them to target */ -LPSTR WINAPI SHELL32_36(LPSTR x1,LPSTR x2) { +LPSTR WINAPI PathAppend(LPSTR x1,LPSTR x2) { + TRACE(shell,"%s %s\n",x1,x2); while (x2[0]=='\\') x2++; - return SHELL32_37(x1,x1,x2); + return PathCombine(x1,x1,x2); } /************************************************************************* - * SHELL32_39 [SHELL32.39] - * isUNC(const char*path); + * PathIsUNC [SHELL32.39] + * + * NOTES + * isUNC(const char*path); */ -BOOL32 WINAPI SHELL32_39(LPCSTR path) { +BOOL32 WINAPI PathIsUNC(LPCSTR path) { + TRACE(shell,"%s\n",path); if ((path[0]=='\\') && (path[1]=='\\')) return TRUE; return FALSE; } /************************************************************************* - * SHELL32_45 [SHELL32.45] - * file_exists(char *fn); + * PathFileExists [SHELL32.45] + * + * NOTES + * file_exists(char *fn); */ -BOOL32 WINAPI SHELL32_45(LPSTR fn) { - if (GetFileAttributes32A(fn)==-1) +BOOL32 WINAPI PathFileExists(LPSTR fn) { + TRACE(shell,"%s\n",fn); + if (GetFileAttributes32A(fn)==-1) return FALSE; else return TRUE; } /************************************************************************* - * SHELL32_51 [SHELL32.51] + * PathResolve [SHELL32.51] */ -DWORD WINAPI SHELL32_51(LPCSTR s,DWORD x2,DWORD x3) { +DWORD WINAPI PathResolve(LPCSTR s,DWORD x2,DWORD x3) { FIXME(shell,"(%s,0x%08lx,0x%08lx),stub!\n",s,x2,x3); return 0; } /************************************************************************* - * SHELL32_52 [SHELL32.52] - * look for next arg in string. handle "quoted" strings - * returns pointer to argument *AFTER* the space. Or to the \0. + * PathGetArgs [SHELL32.52] + * + * NOTES + * look for next arg in string. handle "quoted" strings + * returns pointer to argument *AFTER* the space. Or to the \0. */ -LPSTR WINAPI SHELL32_52(LPSTR cmdline) { +LPSTR WINAPI PathGetArgs(LPSTR cmdline) { BOOL32 qflag = FALSE; - + TRACE(shell,"%s\n",cmdline); while (*cmdline) { if ((*cmdline==' ') && !qflag) return cmdline+1; @@ -287,12 +312,14 @@ LPSTR WINAPI SHELL32_52(LPSTR cmdline) { } /************************************************************************* - * SHELL32_56 [SHELL32.56] - * unquote string (remove ") + * PathUnquoteSpaces [SHELL32.56] + * + * NOTES + * unquote string (remove ") */ -VOID WINAPI SHELL32_56(LPSTR str) { +VOID WINAPI PathUnquoteSpaces(LPSTR str) { DWORD len = lstrlen32A(str); - + TRACE(shell,"%s\n",str); if (*str!='"') return; if (str[len-1]!='"') return; str[len-1]='\0'; @@ -301,9 +328,10 @@ VOID WINAPI SHELL32_56(LPSTR str) { } /************************************************************************* - * SHELL32_58 [SHELL32.58] + * ParseField [SHELL32.58] + * */ -DWORD WINAPI SHELL32_58(LPCSTR src,DWORD x2,LPSTR target,DWORD pathlen) { +DWORD WINAPI ParseField(LPCSTR src,DWORD x2,LPSTR target,DWORD pathlen) { FIXME(shell,"(%s,0x%08lx,%p,%ld):stub.\n", src,x2,target,pathlen ); @@ -313,17 +341,19 @@ DWORD WINAPI SHELL32_58(LPCSTR src,DWORD x2,LPSTR target,DWORD pathlen) { } /************************************************************************* - * SHELL32_62 [SHELL32.62] + * PickIconDlg [SHELL32.62] + * */ -DWORD WINAPI SHELL32_62(DWORD x,DWORD y,DWORD z,DWORD a) { +DWORD WINAPI PickIconDlg(DWORD x,DWORD y,DWORD z,DWORD a) { FIXME(shell,"(%08lx,%08lx,%08lx,%08lx):stub.\n",x,y,z,a); return 0xffffffff; } /************************************************************************* - * SHELL32_63 [SHELL32.63] + * GetFileNameFromBrowse [SHELL32.63] + * */ -DWORD WINAPI SHELL32_63(HWND32 howner, LPSTR targetbuf, DWORD len, DWORD x, LPCSTR suffix, LPCSTR y, LPCSTR cmd) { +DWORD WINAPI GetFileNameFromBrowse(HWND32 howner, LPSTR targetbuf, DWORD len, DWORD x, LPCSTR suffix, LPCSTR y, LPCSTR cmd) { FIXME(shell,"(%04x,%p,%ld,%08lx,%s,%s,%s):stub.\n", howner,targetbuf,len,x,suffix,y,cmd ); @@ -334,36 +364,42 @@ DWORD WINAPI SHELL32_63(HWND32 howner, LPSTR targetbuf, DWORD len, DWORD x, LPCS } /************************************************************************* - * SHELL32_68 [SHELL32.68] + * SHGetSettings [SHELL32.68] + * */ -DWORD WINAPI SHELL32_68(DWORD x,DWORD y,DWORD z) { +DWORD WINAPI SHGetSettings(DWORD x,DWORD y,DWORD z) { FIXME(shell,"(0x%08lx,0x%08lx,0x%08lx):stub.\n", x,y,z ); return 0; } /************************************************************************* - * SHELL32_71 [SHELL32.71] - * returns internal shell values in the passed pointers + * Shell_GetImageList [SHELL32.71] + * + * NOTES + * returns internal shell values in the passed pointers */ -BOOL32 WINAPI SHELL32_71(LPDWORD x,LPDWORD y) { +BOOL32 WINAPI Shell_GetImageList(LPDWORD x,LPDWORD y) { FIXME(shell,"(%p,%p):stub.\n",x,y); return TRUE; } /************************************************************************* - * SHELL32_72 [SHELL32.72] - * dunno. something with icons + * Shell_GetCachedImageIndex [SHELL32.72] + * */ -void WINAPI SHELL32_72(LPSTR x,DWORD y,DWORD z) { +void WINAPI Shell_GetCachedImageIndex(LPSTR x,DWORD y,DWORD z) { FIXME(shell,"(%s,%08lx,%08lx):stub.\n",x,y,z); } /************************************************************************* - * SHELL32_89 [SHELL32.89] + * SHCloneSpecialIDList [SHELL32.89] + * + * NOTES + * exported by ordinal */ -DWORD WINAPI SHELL32_89(DWORD x1,DWORD x2,DWORD x3) { +DWORD WINAPI SHCloneSpecialIDList(DWORD x1,DWORD x2,DWORD x3) { FIXME(shell,"(0x%08lx,0x%08lx,0x%08lx):stub.\n", x1,x2,x3 ); @@ -371,58 +407,70 @@ DWORD WINAPI SHELL32_89(DWORD x1,DWORD x2,DWORD x3) { } /************************************************************************* - * SHELL32_119 [SHELL32.119] - * unknown + * IsLFNDrive [SHELL32.119] + * + * NOTES + * exported by ordinal Name */ -void WINAPI SHELL32_119(LPVOID x) { +void WINAPI IsLFNDrive(LPVOID x) { FIXME(shell,"(%p(%s)):stub.\n",x,(char *)x); } /************************************************************************* - * SHELL32_175 [SHELL32.175] - * unknown + * SHGetSpecialFolderPath [SHELL32.175] + * + * NOTES + * exported by ordinal */ -void WINAPI SHELL32_175(DWORD x1,DWORD x2,DWORD x3,DWORD x4) { +void WINAPI SHGetSpecialFolderPath(DWORD x1,DWORD x2,DWORD x3,DWORD x4) { FIXME(shell,"(0x%08lx,0x%08lx,0x%08lx,0x%08lx):stub.\n", x1,x2,x3,x4 ); } /************************************************************************* - * SHELL32_181 [SHELL32.181] - * unknown + * RegisterShellHook [SHELL32.181] * * PARAMS * hwnd [I] window handle * y [I] flag ???? * * NOTES - * Original name: RegisterShellHook (exported by ordinal) + * exported by ordinal */ -void WINAPI SHELL32_181(HWND32 hwnd, DWORD y) { - FIXME(shell,"(0x%08lx,0x%08x):stub.\n",hwnd,y); +void WINAPI RegisterShellHook32(HWND32 hwnd, DWORD y) { + FIXME(shell,"(0x%08x,0x%08lx):stub.\n",hwnd,y); } /************************************************************************* - * SHELL32_75 [SHELL32.75] - * unknown + * PathYetAnotherMakeUniqueName [SHELL32.75] + * + * NOTES + * exported by ordinal */ -BOOL32 WINAPI SHELL32_75(LPDWORD x,LPDWORD y) { +BOOL32 WINAPI PathYetAnotherMakeUniqueName(LPDWORD x,LPDWORD y) { FIXME(shell,"(%p,%p):stub.\n",x,y); return TRUE; } /************************************************************************* - * SHELL32_77 [SHELL32.77] + * SHMapPIDLToSystemImageListIndex [SHELL32.77] + * + * NOTES + * exported by ordinal */ -DWORD WINAPI SHELL32_77(DWORD x,DWORD y,DWORD z) { +DWORD WINAPI +SHMapPIDLToSystemImageListIndex(DWORD x,DWORD y,DWORD z) { FIXME(shell,"(%08lx,%08lx,%08lx):stub.\n",x,y,z); return 0; } /************************************************************************* - * SHELL32_79 [SHELL32.79] + * SHELL32_79 [SHELL32.79] * create_directory_and_notify(...) + * + * NOTES + * (isn't it StrToOleStrN ??? jsch) */ DWORD WINAPI SHELL32_79(LPCSTR dir,LPVOID xvoid) { TRACE(shell,"mkdir %s,%p\n",dir,xvoid); @@ -432,6 +480,9 @@ DWORD WINAPI SHELL32_79(LPCSTR dir,LPVOID xvoid) { return TRUE; } +/************************************************************************* + * + */ typedef DWORD (* WINAPI GetClassPtr)(REFCLSID,REFIID,LPVOID); static GetClassPtr SH_find_moduleproc(LPSTR dllname,HMODULE32 *xhmod, @@ -441,7 +492,7 @@ static GetClassPtr SH_find_moduleproc(LPSTR dllname,HMODULE32 *xhmod, FARPROC32 dllunload,nameproc; if (xhmod) *xhmod = 0; - if (!strcasecmp(SHELL32_34(dllname),"shell32.dll")) + if (!strcasecmp(PathFindFilename(dllname),"shell32.dll")) return (GetClassPtr)SHELL32_DllGetClassObject; hmod = LoadLibraryEx32A(dllname,0,LOAD_WITH_ALTERED_SEARCH_PATH); @@ -458,7 +509,9 @@ static GetClassPtr SH_find_moduleproc(LPSTR dllname,HMODULE32 *xhmod, /* register unloadable dll with unloadproc ... */ return (GetClassPtr)nameproc; } - +/************************************************************************* + * + */ static DWORD SH_get_instance(REFCLSID clsid,LPSTR dllname, LPVOID unknownouter,REFIID refiid,LPVOID inst ) { @@ -466,6 +519,8 @@ static DWORD SH_get_instance(REFCLSID clsid,LPSTR dllname, DWORD hres; LPCLASSFACTORY classfac; + TRACE(shell,"%s\n",dllname); + dllgetclassob = SH_find_moduleproc(dllname,NULL,"DllGetClassObject"); if (!dllgetclassob) return 0x80070000|GetLastError(); @@ -490,10 +545,12 @@ static DWORD SH_get_instance(REFCLSID clsid,LPSTR dllname, } /************************************************************************* - * SHELL32_102 [SHELL32.102] - * unknown + * SHCoCreateInstance [SHELL32.102] + * + * NOTES + * exported by ordinal */ -LRESULT WINAPI SHELL32_102( +LRESULT WINAPI SHCoCreateInstance( LPSTR aclsid,CLSID *clsid,LPUNKNOWN unknownouter,REFIID refiid,LPVOID inst ) { char buffer[256],xclsid[48],xiid[48],path[260],tmodel[100]; @@ -510,9 +567,7 @@ LRESULT WINAPI SHELL32_102( return 0x80040154; strcpy(xclsid,aclsid); } - TRACE(shell,"(%p,%s,%p,%s,%p)\n", - aclsid,xclsid,unknownouter,xiid,inst - ); + TRACE(shell,"(%p,\n\tSID:\t%s,%p,\n\tIID:\t%s,%p)\n",aclsid,xclsid,unknownouter,xiid,inst); sprintf(buffer,"CLSID\\%s\\InProcServer32",xclsid); if (RegOpenKeyEx32A(HKEY_CLASSES_ROOT,buffer,0,0x02000000,&inprockey)) @@ -539,21 +594,23 @@ LRESULT WINAPI SHELL32_102( /************************************************************************* - * SHELL32_183 [SHELL32.183] + * ShellMessageBoxA [SHELL32.183] + * * Format and output errormessage. * * NOTES - * Original name: ShellMessageBoxA + * exported by ordinal */ -void __cdecl SHELL32_183(HMODULE32 hmod,HWND32 hwnd,DWORD id,DWORD x,DWORD type,LPVOID arglist) { +void __cdecl +ShellMessageBoxA(HMODULE32 hmod,HWND32 hwnd,DWORD id,DWORD x,DWORD type,LPVOID arglist) { char buf[100],buf2[100],*buf3; LPVOID args = &arglist; if (!LoadString32A(hmod,x,buf,100)) strcpy(buf,"Desktop"); - LoadString32A(hmod,id,buf2,100); +// LoadString32A(hmod,id,buf2,100); /* FIXME: the varargs handling doesn't. */ - FormatMessage32A(0x500,buf2,0,0,(LPSTR)&buf3,256,(LPDWORD)&args); +// FormatMessage32A(0x500,buf2,0,0,(LPSTR)&buf3,256,(LPDWORD)&args); FIXME(shell,"(%08lx,%08lx,%08lx(%s),%08lx(%s),%08lx,%p):stub.\n", (DWORD)hmod,(DWORD)hwnd,id,buf2,x,buf,type,arglist @@ -563,7 +620,8 @@ void __cdecl SHELL32_183(HMODULE32 hmod,HWND32 hwnd,DWORD id,DWORD x,DWORD type, /************************************************************************* - * SHELL32_100 [SHELL32.100] + * SHRestricted [SHELL32.100] + * * walks through policy table, queries key, value, returns * queried (DWORD) value. * {0x00001,Explorer,NoRun} @@ -586,8 +644,11 @@ void __cdecl SHELL32_183(HMODULE32 hmod,HWND32 hwnd,DWORD id,DWORD x,DWORD type, * {0x20000,Explorer,NoStartMenuSubFolders} * {0x40000,Explorer,MyDocsOnNet} * {0x80000,WinOldApp,NoRealMode} + * + * NOTES + * exported by ordinal */ -DWORD WINAPI SHELL32_100(DWORD pol) { +DWORD WINAPI SHRestricted (DWORD pol) { HKEY xhkey; FIXME(shell,"(%08lx):stub.\n",pol); @@ -596,17 +657,18 @@ DWORD WINAPI SHELL32_100(DWORD pol) { /* FIXME: do nothing for now, just return 0 (== "allowed") */ RegCloseKey(xhkey); return 0; - } /************************************************************************* - * SHELL32_152 [SHELL32.152] - * itemlist_length + * ILGetSize [SHELL32.152] + * + * NOTES + * exported by ordinal */ -DWORD WINAPI SHELL32_152(LPITEMIDLIST iil) { +DWORD WINAPI ILGetSize(LPITEMIDLIST iil) { LPSHITEMID si; DWORD len; - + TRACE(shell,"%p\n",iil); if (!iil) return 0; si = &(iil->mkid); @@ -619,96 +681,114 @@ DWORD WINAPI SHELL32_152(LPITEMIDLIST iil) { } /************************************************************************* - * SHELL32_158 [SHELL32.158] + * PathGetExtension [SHELL32.158] + * + * NOTES + * exported by ordinal */ -LPSTR WINAPI SHELL32_158(LPSTR path,DWORD y,DWORD z) { +LPSTR WINAPI PathGetExtension(LPSTR path,DWORD y,DWORD z) { TRACE(shell,"(%s,%08lx,%08lx)\n",path,y,z); - path = SHELL32_31(path); + path = PathFindExtension(path); return *path?(path+1):path; } /************************************************************************* - * SHELL32_165 [SHELL32.165] - * create_path_and_notify(...) + * SHCreateDirectory [SHELL32.165] + * + * NOTES + * exported by ordinal */ -DWORD WINAPI SHELL32_165(DWORD x,LPCSTR path) { +DWORD WINAPI SHCreateDirectory(DWORD x,LPCSTR path) { + TRACE(shell,"(%08lx,%s):stub.\n",x,path); + if (CreateDirectory32A(path,x)) + return TRUE; + /* SHChangeNotify(8,1,path,0); */ + return FALSE; +#if 0 if (SHELL32_79(path,(LPVOID)x)) return 0; FIXME(shell,"(%08lx,%s):stub.\n",x,path); return 0; +#endif } /************************************************************************* - * SHELL32_195 [SHELL32.195] - * free_ptr() - frees memory using IMalloc + * SHFree [SHELL32.195] * * NOTES - * Original name: SHFree (exported by ordinal) + * free_ptr() - frees memory using IMalloc + * exported by ordinal */ -DWORD WINAPI SHELL32_195(LPVOID x) { +DWORD WINAPI SHFree(LPVOID x) { + TRACE(shell,"%p\n",x); return LocalFree32((HANDLE32)x); } /************************************************************************* - * SHELL32_196 [SHELL32.196] - * void *task_alloc(DWORD len), uses SHMalloc allocator + * SHAlloc [SHELL32.196] + * + * NOTES + * void *task_alloc(DWORD len), uses SHMalloc allocator + * exported by ordinal */ -LPVOID WINAPI SHELL32_196(DWORD len) { +LPVOID WINAPI SHAlloc(DWORD len) { + TRACE(shell,"%lu\n",len); return (LPVOID)LocalAlloc32(len,LMEM_ZEROINIT); /* FIXME */ } /************************************************************************* - * SHELL32_18 [SHELL32.18] - * copy_itemidlist() + * ILClone [SHELL32.18] + * */ -LPITEMIDLIST WINAPI SHELL32_18(LPITEMIDLIST iil) { +LPITEMIDLIST WINAPI ILClone (LPITEMIDLIST iil) { DWORD len; LPITEMIDLIST newiil; - - len = SHELL32_152(iil); - newiil = (LPITEMIDLIST)SHELL32_196(len); + TRACE(shell,"%p\n",iil); + len = ILGetSize(iil); + newiil = (LPITEMIDLIST)SHAlloc(len); if (newiil) memcpy(newiil,iil,len); return newiil; } /************************************************************************* - * SHELL32_25 [SHELL32.25] - * merge_itemidlist() + * ILCombine [SHELL32.25] + * */ -LPITEMIDLIST WINAPI SHELL32_25(LPITEMIDLIST iil1,LPITEMIDLIST iil2) { +LPITEMIDLIST WINAPI ILCombine(LPITEMIDLIST iil1,LPITEMIDLIST iil2) { DWORD len1,len2; LPITEMIDLIST newiil; - - len1 = SHELL32_152(iil1)-2; - len2 = SHELL32_152(iil2); - newiil = SHELL32_196(len1+len2); + TRACE(shell,"%p %p\n",iil1,iil2); + len1 = ILGetSize(iil1)-2; + len2 = ILGetSize(iil2); + newiil = SHAlloc(len1+len2); memcpy(newiil,iil1,len1); memcpy(((char*)newiil)+len1,iil2,len2); return newiil; } /************************************************************************* - * SHELL32_155 [SHELL32.155] - * free_check_ptr - frees memory (if not NULL) allocated by SHMalloc allocator + * ILFree [SHELL32.155] * * NOTES - * Original name: ILFree (exported by ordinal) + * free_check_ptr - frees memory (if not NULL) + * allocated by SHMalloc allocator + * exported by ordinal */ -DWORD WINAPI SHELL32_155(LPVOID x) { +DWORD WINAPI ILFree(LPVOID x) { FIXME (shell,"(0x%08lx):stub.\n", (DWORD)x); -// if (!x) + if (!x) return 0; -// return SHELL32_195(x); + return SHFree(x); } /************************************************************************* - * SHELL32_85 [SHELL32.85] + * OpenRegStream [SHELL32.85] * * NOTES - * Original name: OpenRegStream (exported by ordinal) + * exported by ordinal */ -DWORD WINAPI SHELL32_85(DWORD x1,DWORD x2,DWORD x3,DWORD x4) { +DWORD WINAPI OpenRegStream(DWORD x1,DWORD x2,DWORD x3,DWORD x4) { FIXME(shell,"(0x%08lx,0x%08lx,0x%08lx,0x%08lx):stub.\n", x1,x2,x3,x4 ); @@ -716,38 +796,36 @@ DWORD WINAPI SHELL32_85(DWORD x1,DWORD x2,DWORD x3,DWORD x4) { } /************************************************************************* - * SHELL32_86 [SHELL32.86] - * unknown + * SHRegisterDragDrop [SHELL32.86] * * NOTES - * Original name: SHRegisterDragDrop (exported by ordinal) + * exported by ordinal */ -DWORD WINAPI SHELL32_86(HWND32 hwnd,DWORD x2) { - FIXME (shell, "(0x%08lx,0x%08x):stub.\n", hwnd, x2); +DWORD WINAPI SHRegisterDragDrop(HWND32 hwnd,DWORD x2) { + FIXME (shell, "(0x%08x,0x%08lx):stub.\n", hwnd, x2); return 0; } /************************************************************************* - * SHELL32_87 [SHELL32.87] - * unknown + * SHRevokeDragDrop [SHELL32.87] * * NOTES - * Original name: SHRevokeDragDrop (exported by ordinal) + * exported by ordinal */ -DWORD WINAPI SHELL32_87(DWORD x) { +DWORD WINAPI SHRevokeDragDrop(DWORD x) { FIXME(shell,"(0x%08lx):stub.\n",x); return 0; } /************************************************************************* - * SHELL32_61 [SHELL32.61] + * RunFileDlg [SHELL32.61] * * NOTES * Original name: RunFileDlg (exported by ordinal) */ DWORD WINAPI -SHELL32_61 (HWND32 hwndOwner, DWORD dwParam1, DWORD dwParam2, +RunFileDlg (HWND32 hwndOwner, DWORD dwParam1, DWORD dwParam2, LPSTR lpszTitle, LPSTR lpszPrompt, UINT32 uFlags) { FIXME (shell,"(0x%08x 0x%lx 0x%lx \"%s\" \"%s\" 0x%x):stub.\n", @@ -757,11 +835,13 @@ SHELL32_61 (HWND32 hwndOwner, DWORD dwParam1, DWORD dwParam2, /************************************************************************* - * SHELL32_60 [SHELL32.60] - * Shell/Shutdown-Dialog + * ExitWindowsDialog [SHELL32.60] + * + * NOTES + * exported by ordinal */ DWORD WINAPI -SHELL32_60 (HWND32 hwndOwner) +ExitWindowsDialog (HWND32 hwndOwner) { FIXME (shell,"(0x%08x):stub.\n", hwndOwner); return 0; @@ -769,12 +849,12 @@ SHELL32_60 (HWND32 hwndOwner) /************************************************************************* - * SHELL32_184 [SHELL32.184] - * unknown + * ArrangeWindows [SHELL32.184] + * */ DWORD WINAPI -SHELL32_184 (DWORD dwParam1, DWORD dwParam2, DWORD dwParam3, - DWORD dwParam4, DWORD dwParam5) +ArrangeWindows (DWORD dwParam1, DWORD dwParam2, DWORD dwParam3, + DWORD dwParam4, DWORD dwParam5) { FIXME (shell,"(0x%lx 0x%lx 0x%lx 0x%lx 0x%lx):stub.\n", dwParam1, dwParam2, dwParam3, dwParam4, dwParam5); @@ -783,15 +863,33 @@ SHELL32_184 (DWORD dwParam1, DWORD dwParam2, DWORD dwParam3, /************************************************************************* - * SHELL32_147 [SHELL32.147] + * SHCLSIDFromString [SHELL32.147] * * NOTES - * Original name: SHCLSIDFromString (exported by ordinal) + * exported by ordinal */ DWORD WINAPI -SHELL32_147 (DWORD dwParam1, DWORD dwParam2) +SHCLSIDFromString (DWORD dwParam1, DWORD dwParam2) { FIXME (shell,"(0x%lx 0x%lx):stub.\n", dwParam1, dwParam2); + + FIXME (shell,"(\"%s\" \"%s\"):stub.\n", (LPSTR)dwParam1, (LPSTR)dwParam2); + + return 0; +} + + +/************************************************************************* + * SignalFileOpen [SHELL32.103] + * + * NOTES + * exported by ordinal + */ +DWORD WINAPI +SignalFileOpen (DWORD dwParam1) +{ + FIXME (shell,"(0x%08lx):stub.\n", dwParam1); + return 0; } diff --git a/misc/spy.c b/misc/spy.c index 0419c055e9b..39960039fd6 100644 --- a/misc/spy.c +++ b/misc/spy.c @@ -492,10 +492,34 @@ static const char * const MessageTypeNames[SPY_MAX_MSGNUM + 1] = NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + "WM_QUERYAFXWNDPROC", /* 0x0360 */ + "WM_SIZEPARENT", /* 0x0361 */ + "WM_SETMESSAGESTRING", /* 0x0362 */ + "WM_IDLEUPDATECMDUI", /* 0x0363 */ + "WM_INITIALUPDATE", /* 0x0364 */ + "WM_COMMANDHELP", /* 0x0365 */ + "WM_HELPHITTEST", /* 0x0366 */ + "WM_EXITHELPMODE", /* 0x0367 */ + "WM_RECALCPARENT", /* 0x0368 */ + "WM_SIZECHILD", /* 0x0369 */ + "WM_KICKIDLE", /* 0x036A */ + "WM_QUERYCENTERWND", /* 0x036B */ + "WM_DISABLEMODAL", /* 0x036C */ + "WM_FLOATSTATUS", /* 0x036D */ + "WM_ACTIVATETOPLEVEL", /* 0x036E */ + "WM_QUERY3DCONTROLS", /* 0x036F */ + NULL,NULL,NULL, + "WM_SOCKET_NOTIFY", /* 0x0373 */ + "WM_SOCKET_DEAD", /* 0x0374 */ + "WM_POPMESSAGESTRING", /* 0x0375 */ + "WM_OCC_LOADFROMSTREAM", /* 0x0376 */ + "WM_OCC_LOADFROMSTORAGE", /* 0x0377 */ + "WM_OCC_INITNEW", /* 0x0378 */ + "WM_QUEUE_SENTINEL", /* 0x0379 */ + "WM_OCC_LOADFROMSTREAM_EX", /* 0x037A */ + "WM_OCC_LOADFROMSTORAGE_EX", /* 0x037B */ + + NULL,NULL,NULL,NULL, /* 0x0380 */ "WM_PENWINFIRST", diff --git a/msdos/Makefile.in b/msdos/Makefile.in index a30b2511b91..6ec0f26af54 100644 --- a/msdos/Makefile.in +++ b/msdos/Makefile.in @@ -6,6 +6,7 @@ VPATH = @srcdir@ MODULE = msdos C_SRCS = \ + cdrom.c \ dosmem.c \ dpmi.c \ int10.c \ diff --git a/msdos/cdrom.c b/msdos/cdrom.c new file mode 100644 index 00000000000..37d73a89e79 --- /dev/null +++ b/msdos/cdrom.c @@ -0,0 +1,303 @@ + +/* + * Cdrom - device driver emulation - Audio features. + * (c) 1998 Petr Tomasek + * + */ + +#ifdef linux + +#include +#include +#include +/* FIXME - how to make this OS independent ?? */ +#include +#include + +#include "ldt.h" +#include "drive.h" +#include "msdos.h" +#include "miscemu.h" +#include "module.h" +/* #define DEBUG_INT */ +#include "debug.h" + + +/* FIXME - more general ?? */ +#define cdrom_dev "/dev/cdrom" + +u_char cdrom_a_status (int fd) +{ +struct cdrom_subchnl sc; + +ioctl(fd,CDROMSUBCHNL,&sc); +return sc.cdsc_audiostatus; +} + +BYTE * get_io_stru (WORD * reqh,int dorealmode) +{ +WORD ofst,segm; +BYTE * io_stru; +ofst = reqh[7]; segm = reqh[8]; + +if (dorealmode) + io_stru = DOSMEM_MapRealToLinear (MAKELONG(ofst,segm)); +else + io_stru = PTR_SEG_OFF_TO_LIN(segm,ofst); + +return io_stru; +} + +DWORD msf0_to_abs (struct cdrom_msf0 msf) +{ +return (msf.minute *60 + + msf.second) *75 + + msf.frame-150; +} + +void abs_to_msf0 (DWORD abs, struct cdrom_msf0 * msf) +{ +DWORD d; +d=abs+150; +msf->frame=d%75; d=d/75; +msf->second=d%60; msf->minute=d/60; +} + +void msf0_to_msf (struct cdrom_msf0 from, struct cdrom_msf0 to, struct cdrom_msf * msf) +{ +msf->cdmsf_min0=from.minute; +msf->cdmsf_min1=to.minute; +msf->cdmsf_sec0=from.second; +msf->cdmsf_sec1=to.second; +msf->cdmsf_frame0=from.frame; +msf->cdmsf_frame1=to.frame; +} + +void abs_to_msf (DWORD from, DWORD to, struct cdrom_msf * msf) +{ +struct cdrom_msf0 fr,tt; +abs_to_msf0(from, &fr); +abs_to_msf0(to, &tt); +msf0_to_msf(fr,tt,msf); +} + +/************************************************************ + * + * Cdrom ms-dos driver emulation. + * (accesible throught the MSCDEX 0x10 function.) + */ + +extern void do_mscdex_dd (CONTEXT * context, int dorealmode) + { + BYTE * driver_request; + BYTE * io_stru; + static int fdcd=-1; /* file descriptor.. */ + struct cdrom_tochdr tochdr; /* the Toc header */ + struct cdrom_tocentry tocentry; /* a Toc entry */ + struct cdrom_msf msf; + struct cdrom_subchnl subchnl; + u_char Error=255; /*No Error */ + +if (dorealmode) + driver_request=DOSMEM_MapRealToLinear + (MAKELONG(BX_reg(context),ES_reg(context))); +else + driver_request=PTR_SEG_OFF_TO_LIN(ES_reg(context),BX_reg(context)); + +if (!driver_request) + { /* FIXME - to be deleted ?? */ + ERR(int," ES:BX==0 ! SEGFAULT ?\n"); + ERR(int," -->BX=0x%04X, ES=0x%04X, DS=0x%04X, CX=0x%04X\n\n", + BX_reg(context), + ES_reg(context), + DS_reg(context), + CX_reg(context)); + } +else + +/* FIXME - would be best to open the device at the begining of the wine + session .... */ + if (fdcd<0) fdcd=open(cdrom_dev,O_RDONLY); + + TRACE(int,"CDROM device driver -> command <%d>\n", + (unsigned char)driver_request[2]); + +/* set status to 0 */ + driver_request[3]=0; + driver_request[4]=0; + + + switch(driver_request[2]) + { + case 3: + io_stru=get_io_stru((WORD *)driver_request,dorealmode); + FIXME(int," --> IOCTL INPUT <%d>\n",io_stru[0]); + switch (io_stru[0]) + { + case 1: /* location of head */ + if (io_stru[1]==0) + { + ioctl(fdcd,CDROMSUBCHNL,&subchnl); + ((DWORD*)io_stru+2)[0]=(DWORD)msf0_to_abs(subchnl.cdsc_absaddr.msf); + FIXME(int," ----> HEAD LOCATION <%ld>\n\n", + ((DWORD *)io_stru+2)[0]); + } + else + { + ERR(int,"CDRom-Driver: Unsupported address mode !!\n"); + Error=0x0c; + } + break; + + case 6: /* device status */ + /* FIXME .. does this work properly ?? */ + io_stru[3]=io_stru[4]=0; + io_stru[2]=1; /* supports audio channels (?? FIXME ??) */ + io_stru[1]=16; /* data read and plays audio racks */ + io_stru[1]|=(ioctl(fdcd,CDROM_DRIVE_STATUS,0)==CDS_TRAY_OPEN); + TRACE(int," ----> DEVICE STATUS <0x%08X>\n\n",(DWORD)io_stru[1]); + break; + + case 9: /* media changed ? */ + if (ioctl(fdcd,CDROM_MEDIA_CHANGED,0)) + io_stru[1]=0xff; + else + io_stru[0]=0; /* FIXME? 1? */ + break; + + case 10: /* audio disk info */ + ioctl(fdcd,CDROMREADTOCHDR,&tochdr); + io_stru[1]=tochdr.cdth_trk0; /* staring track of the disc */ + io_stru[2]=tochdr.cdth_trk1; /* ending track */ + tocentry.cdte_track=CDROM_LEADOUT; /* Now the leadout track ...*/ + tocentry.cdte_format=CDROM_MSF; + ioctl(fdcd,CDROMREADTOCENTRY,&tocentry); /* ... get position of it */ + ((DWORD*)io_stru+3)[0]=(DWORD)msf0_to_abs(tocentry.cdte_addr.msf); + TRACE(int," ----> AUDIO DISK INFO <%d-%d/%ld>\n\n", + io_stru[1],io_stru[2], + ((DWORD *)io_stru+3)[0]); + break; + + + case 11: /* audio track info */ + tocentry.cdte_track=io_stru[1]; /* track of the disc */ + tocentry.cdte_format=CDROM_MSF; + ioctl(fdcd,CDROMREADTOCENTRY,&tocentry); + ((DWORD*)io_stru+2)[0]=(DWORD)msf0_to_abs(tocentry.cdte_addr.msf); + /* starting point if the track */ + io_stru[6]=tocentry.cdte_adr+16*tocentry.cdte_ctrl; + TRACE(int," ----> AUDIO TRACK INFO [%ld] \n\n", + io_stru[1],((DWORD *)io_stru+2)[0]); + break; + + case 12: /* get Q-Channel / Subchannel (??) info */ + subchnl.cdsc_format=CDROM_MSF; + ioctl(fdcd,CDROMSUBCHNL,&subchnl); + io_stru[1]=subchnl.cdsc_adr+16*subchnl.cdsc_ctrl; + io_stru[2]=subchnl.cdsc_trk; + io_stru[3]=subchnl.cdsc_ind; /* FIXME - ?? */ + io_stru[4]=subchnl.cdsc_reladdr.msf.minute; + io_stru[5]=subchnl.cdsc_reladdr.msf.second; + io_stru[6]=subchnl.cdsc_reladdr.msf.frame; + io_stru[7]=0; /* always zero */ + io_stru[8]=subchnl.cdsc_absaddr.msf.minute; + io_stru[9]=subchnl.cdsc_absaddr.msf.second; + io_stru[10]=subchnl.cdsc_absaddr.msf.frame; + break; + + case 15: /* fixme !!!!!!! just a small workaround ! */ + /* !!!! FIXME FIXME FIXME !! */ + tocentry.cdte_track=CDROM_LEADOUT; /* Now the leadout track ...*/ + tocentry.cdte_format=CDROM_MSF; + ioctl(fdcd,CDROMREADTOCENTRY,&tocentry); /* ... get position of it */ + ((DWORD*)io_stru+7)[0]=(DWORD)msf0_to_abs(tocentry.cdte_addr.msf); + break; + + default: + FIXME(int," Cdrom-driver: IOCTL INPUT: Unimplemented <%d>!! \n", + io_stru[0]); + Error=0x0c; + break; + } + break; + + case 12: + io_stru=get_io_stru((WORD *)driver_request,dorealmode); + TRACE(int," --> IOCTL OUTPUT <%d>\n",io_stru[0]); + switch (io_stru[0]) + { + case 0: /* eject */ + ioctl (fdcd,CDROMEJECT); + TRACE(int," ----> EJECT \n\n"); + break; + case 5: /* close tray */ + ioctl (fdcd,CDROMCLOSETRAY); + TRACE(int," ----> CLOSE TRAY \n\n"); + break; + case 2: /* reset drive */ + ioctl (fdcd,CDROMRESET); + TRACE(int," ----> RESET \n\n"); + break; + default: + FIXME(int," Cdrom-driver: IOCTL OUPUT: Unimplemented <%d>!! \n", + io_stru[0]); + Error=0x0c; + break; + } + break; + +case 133: + if (cdrom_a_status(fdcd)==CDROM_AUDIO_PLAY) + { + ioctl (fdcd,CDROMPAUSE); + TRACE(int," --> STOP AUDIO (Paused)\n\n"); + } + else + { + ioctl (fdcd,CDROMSTOP); + TRACE(int," --> STOP AUDIO (Stopped)\n\n"); + } + break; + + case 132: /* FIXME - It didn't function for me... */ + FIXME(int," --> PLAY AUDIO \n"); + ioctl (fdcd,CDROMSTART); + FIXME(int,"Mode :<0x%02X> , [%ld-%ld]\n\n", + (unsigned char)driver_request[13], + ((DWORD*)driver_request+14)[0], + ((DWORD*)driver_request+18)[0]); + if (driver_request[13]==0) + { + abs_to_msf(((DWORD*)driver_request+14)[0], + ((DWORD*)driver_request+18)[0],&msf); + ioctl(fdcd,CDROMPLAYMSF,&msf); + } + else + { + ERR(int,"CDRom-Driver: Unsupported address mode !!\n"); + Error=0x0c; + } + break; + case 136: + TRACE(int," --> RESUME AUDIO \n\n"); + ioctl(fdcd,CDROMRESUME); + break; + default: + FIXME(int," CDRom-Driver - ioctl uninplemented <%d>\n",driver_request[2]); + Error=0x0c; + + } + +if (Error<255) + { + driver_request[4]|=127; + driver_request[3]=Error; + } + driver_request[4]|=2*(cdrom_a_status(fdcd)==CDROM_AUDIO_PLAY); + +/* close (fdcd); FIXME !! -- cannot use close when ejecting + the cd-rom - close would close it again */ +} + +#endif + diff --git a/msdos/dpmi.c b/msdos/dpmi.c index 1aa802f583b..ee20a38fed4 100644 --- a/msdos/dpmi.c +++ b/msdos/dpmi.c @@ -18,6 +18,7 @@ #include "debug.h" #include "selectors.h" #include "thread.h" +#include "process.h" #include "stackframe.h" #include "callback.h" @@ -110,19 +111,24 @@ DPMI_xrealloc(LPVOID ptr,int newsize) { MEMORY_BASIC_INFORMATION mbi; LPVOID newptr; - if (!VirtualQuery(ptr,&mbi,sizeof(mbi))) { - FIXME(int31,"reallocing non DPMI_xalloced region?\n"); - return NULL; - } - /* We do not shrink allocated memory. most reallocs only do grows - * anyway - */ - if (newsize<=mbi.RegionSize) - return ptr; - newptr = DPMI_xalloc(newsize); - memcpy(newptr,ptr,newsize); - DPMI_xfree(ptr); + if (ptr) { + if (!VirtualQuery(ptr,&mbi,sizeof(mbi))) { + FIXME(int31,"realloc of DPMI_xallocd region %p?\n",ptr); + return NULL; + } + if (mbi.State == MEM_FREE) { + FIXME(int31,"realloc of DPMI_xallocd region %p?\n",ptr); + return NULL; + } + /* We do not shrink allocated memory. most reallocs + * only do grows anyway + */ + if (newsize<=mbi.RegionSize) + return ptr; + memcpy(newptr,ptr,newsize); + DPMI_xfree(ptr); + } return newptr; } /********************************************************************** @@ -293,6 +299,23 @@ static void INT_DoRealModeInt( CONTEXT *context ) break; } break; + case 0x58: /* GET OR SET MEMORY/UMB ALLOCATION STRATEGY */ + TRACE(int31,"GET OR SET MEMORY/UMB ALLOCATION STRATEGY subfunction %d\n", + AL_reg(context)); + switch (AL_reg(context)) + { + case 0x00: + AX_reg(context) = 1; + break; + case 0x02: + AX_reg(context) = 0; + break; + case 0x01: + case 0x03: + break; + } + RESET_CFLAG(context); + break; case 0x60: {/* CANONICALIZE PATH */ LPCSTR path = (LPCSTR)DOSMEM_MapRealToLinear((DS_reg(&realmode_ctx)<<16)+SI_reg(&realmode_ctx)); @@ -460,8 +483,18 @@ static void FreeRMCB( CONTEXT *context ) * * Handler for int 31h (DPMI). */ + void WINAPI INT_Int31Handler( CONTEXT *context ) { + /* + * Note: For Win32s processes, the whole linear address space is + * shifted by 0x10000 relative to the OS linear address space. + * See the comment in msdos/vxd.c. + */ + DWORD offset = PROCESS_Current()->flags & PDB32_WIN32S_PROC ? 0x10000 : 0; + #define AppToWine(addr) ((addr)? ((DWORD)(addr)) + offset : 0) + #define WineToApp(addr) ((addr)? ((DWORD)(addr)) - offset : 0) + DWORD dw; BYTE *ptr; @@ -547,15 +580,17 @@ void WINAPI INT_Int31Handler( CONTEXT *context ) } else { - CX_reg(context) = HIWORD(dw); - DX_reg(context) = LOWORD(dw); + CX_reg(context) = HIWORD(WineToApp(dw)); + DX_reg(context) = LOWORD(WineToApp(dw)); } break; case 0x0007: /* Set selector base address */ - TRACE(int31,"set selector base address (0x%04x,0x%08lx)\n",BX_reg(context),MAKELONG(DX_reg(context),CX_reg(context))); - SetSelectorBase( BX_reg(context), - MAKELONG( DX_reg(context), CX_reg(context) ) ); + TRACE(int31, "set selector base address (0x%04x,0x%08lx)\n", + BX_reg(context), + AppToWine(MAKELONG(DX_reg(context),CX_reg(context)))); + SetSelectorBase(BX_reg(context), + AppToWine(MAKELONG(DX_reg(context), CX_reg(context)))); break; case 0x0008: /* Set selector limit */ @@ -583,6 +618,8 @@ void WINAPI INT_Int31Handler( CONTEXT *context ) { ldt_entry entry; LDT_GetEntry( SELECTOR_TO_ENTRY( BX_reg(context) ), &entry ); + entry.base = WineToApp(entry.base); + /* FIXME: should use ES:EDI for 32-bit clients */ LDT_EntryToBytes( PTR_SEG_OFF_TO_LIN( ES_reg(context), DI_reg(context) ), &entry ); @@ -595,6 +632,8 @@ void WINAPI INT_Int31Handler( CONTEXT *context ) ldt_entry entry; LDT_BytesToEntry( PTR_SEG_OFF_TO_LIN( ES_reg(context), DI_reg(context) ), &entry ); + entry.base = AppToWine(entry.base); + LDT_SetEntry( SELECTOR_TO_ENTRY( BX_reg(context) ), &entry ); } break; @@ -621,7 +660,7 @@ void WINAPI INT_Int31Handler( CONTEXT *context ) break; case 0x0205: /* Set protected mode interrupt vector */ - TRACE(int31,"set protected mode interrupt handler (0x%02x,0x%08lx), stub!\n", + TRACE(int31,"set protected mode interrupt handler (0x%02x,%p), stub!\n", BL_reg(context),PTR_SEG_OFF_TO_LIN(CX_reg(context),DX_reg(context))); INT_SetHandler( BL_reg(context), (FARPROC16)PTR_SEG_OFF_TO_SEGPTR( CX_reg(context), @@ -686,27 +725,31 @@ void WINAPI INT_Int31Handler( CONTEXT *context ) AX_reg(context) = 0x8012; /* linear memory not available */ SET_CFLAG(context); } else { - BX_reg(context) = SI_reg(context) = HIWORD(ptr); - CX_reg(context) = DI_reg(context) = LOWORD(ptr); + BX_reg(context) = SI_reg(context) = HIWORD(WineToApp(ptr)); + CX_reg(context) = DI_reg(context) = LOWORD(WineToApp(ptr)); } break; case 0x0502: /* Free memory block */ - TRACE(int31,"free memory block (0x%08lx)\n",MAKELONG(DI_reg(context),SI_reg(context))); - DPMI_xfree((void *)MAKELONG(DI_reg(context), SI_reg(context))); + TRACE(int31, "free memory block (0x%08lx)\n", + AppToWine(MAKELONG(DI_reg(context),SI_reg(context)))); + DPMI_xfree( (void *)AppToWine(MAKELONG(DI_reg(context), + SI_reg(context))) ); break; case 0x0503: /* Resize memory block */ - TRACE(int31,"resize memory block (0x%08lx,%ld)\n",MAKELONG(DI_reg(context),SI_reg(context)),MAKELONG(CX_reg(context),BX_reg(context))); + TRACE(int31, "resize memory block (0x%08lx,%ld)\n", + AppToWine(MAKELONG(DI_reg(context),SI_reg(context))), + MAKELONG(CX_reg(context),BX_reg(context))); if (!(ptr = (BYTE *)DPMI_xrealloc( - (void *)MAKELONG(DI_reg(context),SI_reg(context)), - MAKELONG(CX_reg(context),BX_reg(context))))) + (void *)AppToWine(MAKELONG(DI_reg(context),SI_reg(context))), + MAKELONG(CX_reg(context),BX_reg(context))))) { AX_reg(context) = 0x8012; /* linear memory not available */ SET_CFLAG(context); } else { - BX_reg(context) = SI_reg(context) = HIWORD(ptr); - CX_reg(context) = DI_reg(context) = LOWORD(ptr); + BX_reg(context) = SI_reg(context) = HIWORD(WineToApp(ptr)); + CX_reg(context) = DI_reg(context) = LOWORD(WineToApp(ptr)); } break; @@ -749,8 +792,8 @@ void WINAPI INT_Int31Handler( CONTEXT *context ) } else { - BX_reg(context) = HIWORD(ptr); - CX_reg(context) = LOWORD(ptr); + BX_reg(context) = HIWORD(WineToApp(ptr)); + CX_reg(context) = LOWORD(WineToApp(ptr)); RESET_CFLAG(context); } break; @@ -761,4 +804,7 @@ void WINAPI INT_Int31Handler( CONTEXT *context ) SET_CFLAG(context); break; } + + #undef AppToWine + #undef WineToApp } diff --git a/msdos/int21.c b/msdos/int21.c index cbb181cb477..ec8543969dd 100644 --- a/msdos/int21.c +++ b/msdos/int21.c @@ -1649,7 +1649,7 @@ void WINAPI DOS3Call( CONTEXT *context ) *(WORD*)(dataptr+1) = 41; *(WORD*)(dataptr+3) = WINE_LanguageId; *(WORD*)(dataptr+5) = CodePage; - *(DWORD*)(dataptr+0x19) = NULL; /* FIXME: ptr to case map routine */ + *(DWORD*)(dataptr+0x19) = 0; /* FIXME: ptr to case map routine */ break; case 0x06: TRACE(int21,"\tget pointer to collating sequence table\n"); diff --git a/msdos/int2f.c b/msdos/int2f.c index e6a0dd29a80..914333a5a76 100644 --- a/msdos/int2f.c +++ b/msdos/int2f.c @@ -5,6 +5,7 @@ #include #include #include + #include "ldt.h" #include "drive.h" #include "msdos.h" @@ -228,6 +229,13 @@ void do_mscdex( CONTEXT *context, int dorealmode ) } break; +#ifdef linux + case 0x10: /* direct driver acces */ + do_mscdex_dd(context,dorealmode); + break; + +#endif + default: FIXME(int, "Unimplemented MSCDEX function 0x%02X.\n", AL_reg(context)); break; diff --git a/msdos/vxd.c b/msdos/vxd.c index 708cd360569..186bdb32bd2 100644 --- a/msdos/vxd.c +++ b/msdos/vxd.c @@ -4,9 +4,17 @@ * Copyright 1995 Anand Kumria */ +#include +#include #include "windows.h" +#include "winbase.h" #include "msdos.h" #include "miscemu.h" +#include "selectors.h" +#include "module.h" +#include "task.h" +#include "process.h" +#include "file.h" #include "debug.h" @@ -190,3 +198,1180 @@ void VXD_Timer( CONTEXT *context ) } } +/*********************************************************************** + * VXD_Win32s + * + * This is an implementation of the services of the Win32s VxD. + * Since official documentation of these does not seem to be available, + * certain arguments of some of the services remain unclear. + * + * FIXME: The following services are currently unimplemented: + * Exception handling (0x01, 0x1C) + * Debugger support (0x0C, 0x14, 0x17) + * Low-level memory access (0x02, 0x03, 0x0A, 0x0B) + * Memory Statistics (0x1B) + * + * + * We have a specific problem running Win32s on Linux (and probably also + * the other x86 unixes), since Win32s tries to allocate its main 'flat + * code/data segment' selectors with a base of 0xffff0000 (and limit 4GB). + * The rationale for this seems to be that they want one the one hand to + * be able to leave the Win 3.1 memory (starting with the main DOS memory) + * at linear address 0, but want at other hand to have offset 0 of the + * flat data/code segment point to an unmapped page (to catch NULL pointer + * accesses). Hence they allocate the flat segments with a base of 0xffff0000 + * so that the Win 3.1 memory area at linear address zero shows up in the + * flat segments at offset 0x10000 (since linear addresses wrap around at + * 4GB). To compensate for that discrepancy between flat segment offsets + * and plain linear addresses, all flat pointers passed between the 32-bit + * and the 16-bit parts of Win32s are shifted by 0x10000 in the appropriate + * direction by the glue code (mainly) in W32SKRNL and WIN32S16. + * + * The problem for us is now that Linux does not allow a LDT selector with + * base 0xffff0000 to be created, since it would 'see' a part of the kernel + * address space. To address this problem we introduce *another* offset: + * We add 0x10000 to every linear address we get as an argument from Win32s. + * This means especially that the flat code/data selectors get actually + * allocated with base 0x0, so that flat offsets and (real) linear addresses + * do again agree! In fact, every call e.g. of a Win32s VxD service now + * has all pointer arguments (which are offsets in the flat data segement) + * first reduced by 0x10000 by the W32SKRNL glue code, and then again + * increased by 0x10000 by *our* code. + * + * Note that to keep everything consistent, this offset has to be applied by + * every Wine function that operates on 'linear addresses' passed to it by + * Win32s. Fortunately, since Win32s does not directly call any Wine 32-bit + * API routines, this affects only two locations: this VxD and the DPMI + * handler. (NOTE: Should any Win32s application pass a linear address to + * any routine apart from those, e.g. some other VxD handler, that code + * would have to take the offset into account as well!) + * + * The application of the offset is triggered by marking the current process + * as a Win32s process by setting the PDB32_WIN32S_PROC flag in the process + * database. This is done the first time any application calls the GetVersion() + * service of the Win32s VxD. (Note that the flag is never removed.) + * + */ + +void VXD_Win32s( CONTEXT *context ) +{ + #define AppToWine(addr) ((addr)? ((LPBYTE)(addr)) + 0x10000 : NULL) + #define WineToApp(addr) ((addr)? ((DWORD) (addr)) - 0x10000 : 0) + + switch (AX_reg(context)) + { + case 0x0000: /* Get Version */ + /* + * Input: None + * + * Output: EAX: LoWord: Win32s Version (1.30) + * HiWord: VxD Version (200) + * + * EBX: Build (172) + * + * ECX: ??? (1) + * + * EDX: Debugging Flags + * + * EDI: Error Flag + * 0 if OK, + * 1 if VMCPD VxD not found + */ + + TRACE(vxd, "GetVersion()\n"); + + EAX_reg(context) = VXD_WinVersion() | (200 << 16); + EBX_reg(context) = 0; + ECX_reg(context) = 0; + EDX_reg(context) = 0; + EDI_reg(context) = 0; + + /* + * If this is the first time we are called for this process, + * hack the memory image of WIN32S16 so that it doesn't try + * to access the GDT directly ... + * + * The first code segment of WIN32S16 (version 1.30) contains + * an unexported function somewhere between the exported functions + * SetFS and StackLinearToSegmented that tries to find a selector + * in the LDT that maps to the memory image of the LDT itself. + * If it succeeds, it stores this selector into a global variable + * which will be used to speed up execution by using this selector + * to modify the LDT directly instead of using the DPMI calls. + * + * To perform this search of the LDT, this function uses the + * sgdt and sldt instructions to find the linear address of + * the (GDT and then) LDT. While those instructions themselves + * execute without problem, the linear address that sgdt returns + * points (at least under Linux) to the kernel address space, so + * that any subsequent access leads to a segfault. + * + * Fortunately, WIN32S16 still contains as a fallback option the + * mechanism of using DPMI calls to modify LDT selectors instead + * of direct writes to the LDT. Thus we can circumvent the problem + * by simply replacing the first byte of the offending function + * with an 'retf' instruction. This means that the global variable + * supposed to contain the LDT alias selector will remain zero, + * and hence WIN32S16 will fall back to using DPMI calls. + * + * The heuristic we employ to _find_ that function is as follows: + * We search between the addresses of the exported symbols SetFS + * and StackLinearToSegmented for the byte sequence '0F 01 04' + * (this is the opcode of 'sgdt [si]'). We then search backwards + * from this address for the last occurrance of 'CB' (retf) that marks + * the end of the preceeding function. The following byte (which + * should now be the first byte of the function we are looking for) + * will be replaced by 'CB' (retf). + * + * This heuristic works for the retail as well as the debug version + * of Win32s version 1.30. For versions earlier than that this + * hack should not be necessary at all, since the whole mechanism + * ('PERF130') was introduced only in 1.30 to improve the overall + * performance of Win32s. + */ + + if (!(PROCESS_Current()->flags & PDB32_WIN32S_PROC)) + { + HMODULE16 hModule = GetModuleHandle16("win32s16"); + SEGPTR func1 = (SEGPTR)WIN32_GetProcAddress16(hModule, "SetFS"); + SEGPTR func2 = (SEGPTR)WIN32_GetProcAddress16(hModule, + "StackLinearToSegmented"); + + if ( hModule && func1 && func2 + && SELECTOROF(func1) == SELECTOROF(func2)) + { + BYTE *start = PTR_SEG_TO_LIN(func1); + BYTE *end = PTR_SEG_TO_LIN(func2); + BYTE *p, *retv = NULL; + int found = 0; + + for (p = start; p < end; p++) + if (*p == 0xCB) found = 0, retv = p; + else if (*p == 0x0F) found = 1; + else if (*p == 0x01 && found == 1) found = 2; + else if (*p == 0x04 && found == 2) { found = 3; break; } + else found = 0; + + if (found == 3 && retv) + { + TRACE(vxd, "PERF130 hack: " + "Replacing byte %02X at offset %04X:%04X\n", + *(retv+1), SELECTOROF(func1), + OFFSETOF(func1) + retv+1-start); + + *(retv+1) = (BYTE)0xCB; + } + } + } + + /* + * Mark process as Win32s, so that subsequent DPMI calls + * will perform the AppToWine/WineToApp address shift. + */ + + PROCESS_Current()->flags |= PDB32_WIN32S_PROC; + break; + + + case 0x0001: /* Install Exception Handling */ + /* + * Input: EBX: Flat address of W32SKRNL Exception Data + * + * ECX: LoWord: Flat Code Selector + * HiWord: Flat Data Selector + * + * EDX: Flat address of W32SKRNL Exception Handler + * (this is equal to W32S_BackTo32 + 0x40) + * + * ESI: SEGPTR KERNEL.HASGPHANDLER + * + * EDI: SEGPTR phCurrentTask (KERNEL.THHOOK + 0x10) + * + * Output: EAX: 0 if OK + */ + + TRACE(vxd, "[0001] EBX=%lx ECX=%lx EDX=%lx ESI=%lx EDI=%lx\n", + EBX_reg(context), ECX_reg(context), EDX_reg(context), + ESI_reg(context), EDI_reg(context)); + + /* FIXME */ + + EAX_reg(context) = 0; + break; + + + case 0x0002: /* Set Page Access Flags */ + /* + * Input: EBX: New access flags + * Bit 2: User Page if set, Supervisor Page if clear + * Bit 1: Read-Write if set, Read-Only if clear + * + * ECX: Size of memory area to change + * + * EDX: Flat start address of memory area + * + * Output: EAX: Size of area changed + */ + + TRACE(vxd, "[0002] EBX=%lx ECX=%lx EDX=%lx\n", + EBX_reg(context), ECX_reg(context), EDX_reg(context)); + + /* FIXME */ + + EAX_reg(context) = ECX_reg(context); + break; + + + case 0x0003: /* Get Page Access Flags */ + /* + * Input: EDX: Flat address of page to query + * + * Output: EAX: Page access flags + * Bit 2: User Page if set, Supervisor Page if clear + * Bit 1: Read-Write if set, Read-Only if clear + */ + + TRACE(vxd, "[0003] EDX=%lx\n", EDX_reg(context)); + + /* FIXME */ + + EAX_reg(context) = 6; + break; + + + case 0x0004: /* Map Module */ + /* + * Input: ECX: IMTE (offset in Module Table) of new module + * + * EDX: Flat address of Win32s Module Table + * + * Output: EAX: 0 if OK + */ + + if (!EDX_reg(context) || CX_reg(context) == 0xFFFF) + { + TRACE(vxd, "MapModule: Initialization call\n"); + EAX_reg(context) = 0; + } + else + { + /* + * Structure of a Win32s Module Table Entry: + */ + struct Win32sModule + { + DWORD flags; + DWORD flatBaseAddr; + LPCSTR moduleName; + LPCSTR pathName; + LPCSTR unknown; + LPBYTE baseAddr; + DWORD hModule; + DWORD relocDelta; + }; + + /* + * Note: This function should set up a demand-paged memory image + * of the given module. Since mmap does not allow file offsets + * not aligned at 1024 bytes, we simply load the image fully + * into memory. + */ + + struct Win32sModule *moduleTable = + (struct Win32sModule *)AppToWine(EDX_reg(context)); + struct Win32sModule *module = moduleTable + ECX_reg(context); + + IMAGE_NT_HEADERS *nt_header = PE_HEADER(module->baseAddr); + IMAGE_SECTION_HEADER *pe_seg = PE_SECTIONS(module->baseAddr); + + HFILE32 image = FILE_Open(module->pathName, O_RDONLY); + BOOL32 error = (image == INVALID_HANDLE_VALUE32); + UINT32 i; + + TRACE(vxd, "MapModule: Loading %s\n", module->pathName); + + for (i = 0; + !error && i < nt_header->FileHeader.NumberOfSections; + i++, pe_seg++) + if(!(pe_seg->Characteristics & IMAGE_SCN_CNT_UNINITIALIZED_DATA)) + { + DWORD off = pe_seg->PointerToRawData; + DWORD len = pe_seg->SizeOfRawData; + LPBYTE addr = module->baseAddr + pe_seg->VirtualAddress; + + TRACE(vxd, "MapModule: " + "Section %d at %08lx from %08lx len %08lx\n", + i, (DWORD)addr, off, len); + + if ( _llseek32(image, off, SEEK_SET) != off + || _lread32(image, addr, len) != len) + error = TRUE; + } + + _lclose32(image); + + if (error) + ERR(vxd, "MapModule: Unable to load %s\n", module->pathName); + + else if (module->relocDelta != 0) + { + IMAGE_DATA_DIRECTORY *dir = nt_header->OptionalHeader.DataDirectory + + IMAGE_DIRECTORY_ENTRY_BASERELOC; + IMAGE_BASE_RELOCATION *r = (IMAGE_BASE_RELOCATION *) + (dir->Size? module->baseAddr + dir->VirtualAddress : 0); + + TRACE(vxd, "MapModule: Reloc delta %08lx\n", module->relocDelta); + + while (r && r->VirtualAddress) + { + LPBYTE page = module->baseAddr + r->VirtualAddress; + int count = (r->SizeOfBlock - 8) / 2; + + TRACE(vxd, "MapModule: %d relocations for page %08lx\n", + count, (DWORD)page); + + for(i = 0; i < count; i++) + { + int offset = r->TypeOffset[i] & 0xFFF; + int type = r->TypeOffset[i] >> 12; + switch(type) + { + case IMAGE_REL_BASED_ABSOLUTE: + break; + case IMAGE_REL_BASED_HIGH: + *(WORD *)(page+offset) += HIWORD(module->relocDelta); + break; + case IMAGE_REL_BASED_LOW: + *(WORD *)(page+offset) += LOWORD(module->relocDelta); + break; + case IMAGE_REL_BASED_HIGHLOW: + *(DWORD*)(page+offset) += module->relocDelta; + break; + default: + WARN(vxd, "MapModule: Unsupported fixup type\n"); + break; + } + } + + r = (IMAGE_BASE_RELOCATION *)((LPBYTE)r + r->SizeOfBlock); + } + } + + EAX_reg(context) = 0; + RESET_CFLAG(context); + } + break; + + + case 0x0005: /* UnMap Module */ + /* + * Input: EDX: Flat address of module image + * + * Output: EAX: 1 if OK + */ + + TRACE(vxd, "UnMapModule: %lx\n", (DWORD)AppToWine(EDX_reg(context))); + + /* As we didn't map anything, there's nothing to unmap ... */ + + EAX_reg(context) = 1; + break; + + + case 0x0006: /* VirtualAlloc */ + /* + * Input: ECX: Current Process + * + * EDX: Flat address of arguments on stack + * + * DWORD *retv [out] Flat base address of allocated region + * LPVOID base [in] Flat address of region to reserve/commit + * DWORD size [in] Size of region + * DWORD type [in] Type of allocation + * DWORD prot [in] Type of access protection + * + * Output: EAX: NtStatus + */ + { + DWORD *stack = (DWORD *)AppToWine(EDX_reg(context)); + DWORD *retv = (DWORD *)AppToWine(stack[0]); + LPVOID base = (LPVOID) AppToWine(stack[1]); + DWORD size = stack[2]; + DWORD type = stack[3]; + DWORD prot = stack[4]; + DWORD result; + + TRACE(vxd, "VirtualAlloc(%lx, %lx, %lx, %lx, %lx)\n", + (DWORD)retv, (DWORD)base, size, type, prot); + + if (type & 0x80000000) + { + WARN(vxd, "VirtualAlloc: strange type %lx\n", type); + type &= 0x7fffffff; + } + + if (!base && (type & MEM_COMMIT) && prot == PAGE_READONLY) + { + WARN(vxd, "VirtualAlloc: NLS hack, allowing write access!\n"); + prot = PAGE_READWRITE; + } + + result = (DWORD)VirtualAlloc(base, size, type, prot); + + if (WineToApp(result)) + *retv = WineToApp(result), + EAX_reg(context) = STATUS_SUCCESS; + else + *retv = 0, + EAX_reg(context) = STATUS_NO_MEMORY; /* FIXME */ + } + break; + + + case 0x0007: /* VirtualFree */ + /* + * Input: ECX: Current Process + * + * EDX: Flat address of arguments on stack + * + * DWORD *retv [out] TRUE if success, FALSE if failure + * LPVOID base [in] Flat address of region + * DWORD size [in] Size of region + * DWORD type [in] Type of operation + * + * Output: EAX: NtStatus + */ + { + DWORD *stack = (DWORD *)AppToWine(EDX_reg(context)); + DWORD *retv = (DWORD *)AppToWine(stack[0]); + LPVOID base = (LPVOID) AppToWine(stack[1]); + DWORD size = stack[2]; + DWORD type = stack[3]; + DWORD result; + + TRACE(vxd, "VirtualFree(%lx, %lx, %lx, %lx)\n", + (DWORD)retv, (DWORD)base, size, type); + + result = VirtualFree(base, size, type); + + if (result) + *retv = TRUE, + EAX_reg(context) = STATUS_SUCCESS; + else + *retv = FALSE, + EAX_reg(context) = STATUS_NO_MEMORY; /* FIXME */ + } + break; + + + case 0x0008: /* VirtualProtect */ + /* + * Input: ECX: Current Process + * + * EDX: Flat address of arguments on stack + * + * DWORD *retv [out] TRUE if success, FALSE if failure + * LPVOID base [in] Flat address of region + * DWORD size [in] Size of region + * DWORD new_prot [in] Desired access protection + * DWORD *old_prot [out] Previous access protection + * + * Output: EAX: NtStatus + */ + { + DWORD *stack = (DWORD *)AppToWine(EDX_reg(context)); + DWORD *retv = (DWORD *)AppToWine(stack[0]); + LPVOID base = (LPVOID) AppToWine(stack[1]); + DWORD size = stack[2]; + DWORD new_prot = stack[3]; + DWORD *old_prot = (DWORD *)AppToWine(stack[4]); + DWORD result; + + TRACE(vxd, "VirtualProtect(%lx, %lx, %lx, %lx, %lx)\n", + (DWORD)retv, (DWORD)base, size, new_prot, (DWORD)old_prot); + + result = VirtualProtect(base, size, new_prot, old_prot); + + if (result) + *retv = TRUE, + EAX_reg(context) = STATUS_SUCCESS; + else + *retv = FALSE, + EAX_reg(context) = STATUS_NO_MEMORY; /* FIXME */ + } + break; + + + case 0x0009: /* VirtualQuery */ + /* + * Input: ECX: Current Process + * + * EDX: Flat address of arguments on stack + * + * DWORD *retv [out] Nr. bytes returned + * LPVOID base [in] Flat address of region + * LPMEMORY_BASIC_INFORMATION info [out] Info buffer + * DWORD len [in] Size of buffer + * + * Output: EAX: NtStatus + */ + { + DWORD *stack = (DWORD *)AppToWine(EDX_reg(context)); + DWORD *retv = (DWORD *)AppToWine(stack[0]); + LPVOID base = (LPVOID) AppToWine(stack[1]); + LPMEMORY_BASIC_INFORMATION info = + (LPMEMORY_BASIC_INFORMATION)AppToWine(stack[2]); + DWORD len = stack[3]; + DWORD result; + + TRACE(vxd, "VirtualQuery(%lx, %lx, %lx, %lx)\n", + (DWORD)retv, (DWORD)base, (DWORD)info, len); + + result = VirtualQuery(base, info, len); + + *retv = result; + EAX_reg(context) = STATUS_SUCCESS; + } + break; + + + case 0x000A: /* SetVirtMemProcess */ + /* + * Input: ECX: Process Handle + * + * EDX: Flat address of region + * + * Output: EAX: NtStatus + */ + + TRACE(vxd, "[000a] ECX=%lx EDX=%lx\n", + ECX_reg(context), EDX_reg(context)); + + /* FIXME */ + + EAX_reg(context) = STATUS_SUCCESS; + break; + + + case 0x000B: /* ??? some kind of cleanup */ + /* + * Input: ECX: Process Handle + * + * Output: EAX: NtStatus + */ + + TRACE(vxd, "[000b] ECX=%lx\n", ECX_reg(context)); + + /* FIXME */ + + EAX_reg(context) = STATUS_SUCCESS; + break; + + + case 0x000C: /* Set Debug Flags */ + /* + * Input: EDX: Debug Flags + * + * Output: EDX: Previous Debug Flags + */ + + FIXME(vxd, "[000c] EDX=%lx\n", EDX_reg(context)); + + /* FIXME */ + + EDX_reg(context) = 0; + break; + + + case 0x000D: /* NtCreateSection */ + /* + * Input: EDX: Flat address of arguments on stack + * + * HANDLE32 *retv [out] Handle of Section created + * DWORD flags1 [in] (?? unknown ??) + * DWORD atom [in] Name of Section to create + * LARGE_INTEGER *size [in] Size of Section + * DWORD protect [in] Access protection + * DWORD flags2 [in] (?? unknown ??) + * HFILE32 hFile [in] Handle of file to map + * DWORD psp [in] (Win32s: PSP that hFile belongs to) + * + * Output: EAX: NtStatus + */ + { + DWORD *stack = (DWORD *) AppToWine(EDX_reg(context)); + HANDLE32 *retv = (HANDLE32 *)AppToWine(stack[0]); + DWORD flags1 = stack[1]; + DWORD atom = stack[2]; + LARGE_INTEGER *size = (LARGE_INTEGER *)AppToWine(stack[3]); + DWORD protect = stack[4]; + DWORD flags2 = stack[5]; + HFILE32 hFile = stack[6]; + DWORD psp = stack[7]; + + HANDLE32 result = INVALID_HANDLE_VALUE32; + char name[128]; + + TRACE(vxd, "NtCreateSection(%lx, %lx, %lx, %lx, %lx, %lx, %lx, %lx)\n", + (DWORD)retv, flags1, atom, (DWORD)size, protect, flags2, + (DWORD)hFile, psp); + + if (!atom || GlobalGetAtomName32A(atom, name, sizeof(name))) + { + TRACE(vxd, "NtCreateSection: name=%s\n", atom? name : NULL); + + result = CreateFileMapping32A(hFile, NULL, protect, + size? size->HighPart : 0, + size? size->LowPart : 0, + atom? name : NULL); + } + + if (result == INVALID_HANDLE_VALUE32) + WARN(vxd, "NtCreateSection: failed!\n"); + else + TRACE(vxd, "NtCreateSection: returned %lx\n", (DWORD)result); + + if (result != INVALID_HANDLE_VALUE32) + *retv = result, + EAX_reg(context) = STATUS_SUCCESS; + else + *retv = result, + EAX_reg(context) = STATUS_NO_MEMORY; /* FIXME */ + } + break; + + + case 0x000E: /* NtOpenSection */ + /* + * Input: EDX: Flat address of arguments on stack + * + * HANDLE32 *retv [out] Handle of Section opened + * DWORD protect [in] Access protection + * DWORD atom [in] Name of Section to create + * + * Output: EAX: NtStatus + */ + { + DWORD *stack = (DWORD *) AppToWine(EDX_reg(context)); + HANDLE32 *retv = (HANDLE32 *)AppToWine(stack[0]); + DWORD protect = stack[1]; + DWORD atom = stack[2]; + + HANDLE32 result = INVALID_HANDLE_VALUE32; + char name[128]; + + TRACE(vxd, "NtOpenSection(%lx, %lx, %lx)\n", + (DWORD)retv, protect, atom); + + if (atom && GlobalGetAtomName32A(atom, name, sizeof(name))) + { + TRACE(vxd, "NtOpenSection: name=%s\n", name); + + result = OpenFileMapping32A(protect, FALSE, name); + } + + if (result == INVALID_HANDLE_VALUE32) + WARN(vxd, "NtOpenSection: failed!\n"); + else + TRACE(vxd, "NtOpenSection: returned %lx\n", (DWORD)result); + + if (result != INVALID_HANDLE_VALUE32) + *retv = result, + EAX_reg(context) = STATUS_SUCCESS; + else + *retv = result, + EAX_reg(context) = STATUS_NO_MEMORY; /* FIXME */ + } + break; + + + case 0x000F: /* NtCloseSection */ + /* + * Input: EDX: Flat address of arguments on stack + * + * HANDLE32 handle [in] Handle of Section to close + * DWORD *id [out] Unique ID (?? unclear ??) + * + * Output: EAX: NtStatus + */ + { + DWORD *stack = (DWORD *)AppToWine(EDX_reg(context)); + HANDLE32 handle = stack[0]; + DWORD *id = (DWORD *)AppToWine(stack[1]); + + TRACE(vxd, "NtCloseSection(%lx, %lx)\n", (DWORD)handle, (DWORD)id); + + CloseHandle(handle); + if (id) *id = 0; /* FIXME */ + + EAX_reg(context) = STATUS_SUCCESS; + } + break; + + + case 0x0010: /* NtDupSection */ + /* + * Input: EDX: Flat address of arguments on stack + * + * HANDLE32 handle [in] Handle of Section to duplicate + * + * Output: EAX: NtStatus + */ + { + DWORD *stack = (DWORD *)AppToWine(EDX_reg(context)); + HANDLE32 handle = stack[0]; + + TRACE(vxd, "NtDupSection(%lx)\n", (DWORD)handle); + + /* Handle is 'duplicated' by incrementing RefCount */ + HANDLE_GetObjPtr(PROCESS_Current(), handle, K32OBJ_MEM_MAPPED_FILE, 0); + + EAX_reg(context) = STATUS_SUCCESS; + } + break; + + + case 0x0011: /* NtMapViewOfSection */ + /* + * Input: EDX: Flat address of arguments on stack + * + * HANDLE32 SectionHandle [in] Section to be mapped + * DWORD ProcessHandle [in] Process to be mapped into + * DWORD * BaseAddress [in/out] Address to be mapped at + * DWORD ZeroBits [in] (?? unclear ??) + * DWORD CommitSize [in] (?? unclear ??) + * LARGE_INTEGER *SectionOffset [in] Offset within section + * DWORD * ViewSize [in] Size of view + * DWORD InheritDisposition [in] (?? unclear ??) + * DWORD AllocationType [in] (?? unclear ??) + * DWORD Protect [in] Access protection + * + * Output: EAX: NtStatus + */ + { + DWORD * stack = (DWORD *)AppToWine(EDX_reg(context)); + HANDLE32 SectionHandle = stack[0]; + DWORD ProcessHandle = stack[1]; /* ignored */ + DWORD * BaseAddress = (DWORD *)AppToWine(stack[2]); + DWORD ZeroBits = stack[3]; + DWORD CommitSize = stack[4]; + LARGE_INTEGER *SectionOffset = (LARGE_INTEGER *)AppToWine(stack[5]); + DWORD * ViewSize = (DWORD *)AppToWine(stack[6]); + DWORD InheritDisposition = stack[7]; + DWORD AllocationType = stack[8]; + DWORD Protect = stack[9]; + + LPBYTE address = (LPBYTE)(BaseAddress? AppToWine(*BaseAddress) : 0); + DWORD access = 0, result; + + switch (Protect & ~(PAGE_GUARD|PAGE_NOCACHE)) + { + case PAGE_READONLY: access = FILE_MAP_READ; break; + case PAGE_READWRITE: access = FILE_MAP_WRITE; break; + case PAGE_WRITECOPY: access = FILE_MAP_COPY; break; + + case PAGE_EXECUTE_READ: access = FILE_MAP_READ; break; + case PAGE_EXECUTE_READWRITE: access = FILE_MAP_WRITE; break; + case PAGE_EXECUTE_WRITECOPY: access = FILE_MAP_COPY; break; + } + + TRACE(vxd, "NtMapViewOfSection" + "(%lx, %lx, %lx, %lx, %lx, %lx, %lx, %lx, %lx, %lx)\n", + (DWORD)SectionHandle, ProcessHandle, (DWORD)BaseAddress, + ZeroBits, CommitSize, (DWORD)SectionOffset, (DWORD)ViewSize, + InheritDisposition, AllocationType, Protect); + TRACE(vxd, "NtMapViewOfSection: " + "base=%lx, offset=%lx, size=%lx, access=%lx\n", + (DWORD)address, SectionOffset? SectionOffset->LowPart : 0, + ViewSize? *ViewSize : 0, access); + + result = (DWORD)MapViewOfFileEx(SectionHandle, access, + SectionOffset? SectionOffset->HighPart : 0, + SectionOffset? SectionOffset->LowPart : 0, + ViewSize? *ViewSize : 0, address); + + TRACE(vxd, "NtMapViewOfSection: result=%lx\n", result); + + if (WineToApp(result)) + { + if (BaseAddress) *BaseAddress = WineToApp(result); + EAX_reg(context) = STATUS_SUCCESS; + } + else + EAX_reg(context) = STATUS_NO_MEMORY; /* FIXME */ + } + break; + + + case 0x0012: /* NtUnmapViewOfSection */ + /* + * Input: EDX: Flat address of arguments on stack + * + * DWORD ProcessHandle [in] Process (defining address space) + * LPBYTE BaseAddress [in] Base address of view to be unmapped + * + * Output: EAX: NtStatus + */ + { + DWORD *stack = (DWORD *)AppToWine(EDX_reg(context)); + DWORD ProcessHandle = stack[0]; /* ignored */ + LPBYTE BaseAddress = (LPBYTE)AppToWine(stack[1]); + + TRACE(vxd, "NtUnmapViewOfSection(%lx, %lx)\n", + ProcessHandle, (DWORD)BaseAddress); + + UnmapViewOfFile(BaseAddress); + + EAX_reg(context) = STATUS_SUCCESS; + } + break; + + + case 0x0013: /* NtFlushVirtualMemory */ + /* + * Input: EDX: Flat address of arguments on stack + * + * DWORD ProcessHandle [in] Process (defining address space) + * LPBYTE *BaseAddress [in?] Base address of range to be flushed + * DWORD *ViewSize [in?] Number of bytes to be flushed + * DWORD *unknown [???] (?? unknown ??) + * + * Output: EAX: NtStatus + */ + { + DWORD *stack = (DWORD *)AppToWine(EDX_reg(context)); + DWORD ProcessHandle = stack[0]; /* ignored */ + DWORD *BaseAddress = (DWORD *)AppToWine(stack[1]); + DWORD *ViewSize = (DWORD *)AppToWine(stack[2]); + DWORD *unknown = (DWORD *)AppToWine(stack[3]); + + LPBYTE address = (LPBYTE)(BaseAddress? AppToWine(*BaseAddress) : 0); + DWORD size = ViewSize? *ViewSize : 0; + + TRACE(vxd, "NtFlushVirtualMemory(%lx, %lx, %lx, %lx)\n", + ProcessHandle, (DWORD)BaseAddress, (DWORD)ViewSize, + (DWORD)unknown); + TRACE(vxd, "NtFlushVirtualMemory: base=%lx, size=%lx\n", + (DWORD)address, size); + + FlushViewOfFile(address, size); + + EAX_reg(context) = STATUS_SUCCESS; + } + break; + + + case 0x0014: /* Get/Set Debug Registers */ + /* + * Input: ECX: 0 if Get, 1 if Set + * + * EDX: Get: Flat address of buffer to receive values of + * debug registers DR0 .. DR7 + * Set: Flat address of buffer containing values of + * debug registers DR0 .. DR7 to be set + * Output: None + */ + + FIXME(vxd, "[0014] ECX=%lx EDX=%lx\n", + ECX_reg(context), EDX_reg(context)); + + /* FIXME */ + break; + + + case 0x0015: /* Set Coprocessor Emulation Flag */ + /* + * Input: EDX: 0 to deactivate, 1 to activate coprocessor emulation + * + * Output: None + */ + + TRACE(vxd, "[0015] EDX=%lx\n", EDX_reg(context)); + + /* We don't care, as we always have a coprocessor anyway */ + break; + + + case 0x0016: /* Init Win32S VxD PSP */ + /* + * If called to query required PSP size: + * + * Input: EBX: 0 + * Output: EDX: Required size of Win32s VxD PSP + * + * If called to initialize allocated PSP: + * + * Input: EBX: LoWord: Selector of Win32s VxD PSP + * HiWord: Paragraph of Win32s VxD PSP (DOSMEM) + * Output: None + */ + + if (EBX_reg(context) == 0) + EDX_reg(context) = 0x80; + else + { + PDB *psp = PTR_SEG_OFF_TO_LIN(BX_reg(context), 0); + psp->nbFiles = 32; + psp->fileHandlesPtr = MAKELONG(HIWORD(EBX_reg(context)), 0x5c); + memset((LPBYTE)psp + 0x5c, '\xFF', 32); + } + break; + + + case 0x0017: /* Set Break Point */ + /* + * Input: EBX: Offset of Break Point + * CX: Selector of Break Point + * + * Output: None + */ + + FIXME(vxd, "[0017] EBX=%lx CX=%x\n", + EBX_reg(context), CX_reg(context)); + + /* FIXME */ + break; + + + case 0x0018: /* VirtualLock */ + /* + * Input: ECX: Current Process + * + * EDX: Flat address of arguments on stack + * + * DWORD *retv [out] TRUE if success, FALSE if failure + * LPVOID base [in] Flat address of range to lock + * DWORD size [in] Size of range + * + * Output: EAX: NtStatus + */ + { + DWORD *stack = (DWORD *)AppToWine(EDX_reg(context)); + DWORD *retv = (DWORD *)AppToWine(stack[0]); + LPVOID base = (LPVOID) AppToWine(stack[1]); + DWORD size = stack[2]; + DWORD result; + + TRACE(vxd, "VirtualLock(%lx, %lx, %lx)\n", + (DWORD)retv, (DWORD)base, size); + + result = VirtualLock(base, size); + + if (result) + *retv = TRUE, + EAX_reg(context) = STATUS_SUCCESS; + else + *retv = FALSE, + EAX_reg(context) = STATUS_NO_MEMORY; /* FIXME */ + } + break; + + + case 0x0019: /* VirtualUnlock */ + /* + * Input: ECX: Current Process + * + * EDX: Flat address of arguments on stack + * + * DWORD *retv [out] TRUE if success, FALSE if failure + * LPVOID base [in] Flat address of range to unlock + * DWORD size [in] Size of range + * + * Output: EAX: NtStatus + */ + { + DWORD *stack = (DWORD *)AppToWine(EDX_reg(context)); + DWORD *retv = (DWORD *)AppToWine(stack[0]); + LPVOID base = (LPVOID) AppToWine(stack[1]); + DWORD size = stack[2]; + DWORD result; + + TRACE(vxd, "VirtualUnlock(%lx, %lx, %lx)\n", + (DWORD)retv, (DWORD)base, size); + + result = VirtualUnlock(base, size); + + if (result) + *retv = TRUE, + EAX_reg(context) = STATUS_SUCCESS; + else + *retv = FALSE, + EAX_reg(context) = STATUS_NO_MEMORY; /* FIXME */ + } + break; + + + case 0x001A: /* KGetSystemInfo */ + /* + * Input: None + * + * Output: ECX: Start of sparse memory arena + * EDX: End of sparse memory arena + */ + + TRACE(vxd, "KGetSystemInfo()\n"); + + /* + * Note: Win32s reserves 0GB - 2GB for Win 3.1 and uses 2GB - 4GB as + * sparse memory arena. We do it the other way around, since + * we have to reserve 3GB - 4GB for Linux, and thus use + * 0GB - 3GB as sparse memory arena. + * + * FIXME: What about other OSes ? + */ + + ECX_reg(context) = WineToApp(0x00000000); + EDX_reg(context) = WineToApp(0xbfffffff); + break; + + + case 0x001B: /* KGlobalMemStat */ + /* + * Input: ESI: Flat address of buffer to receive memory info + * + * Output: None + */ + { + struct Win32sMemoryInfo + { + DWORD DIPhys_Count; /* Total physical pages */ + DWORD DIFree_Count; /* Free physical pages */ + DWORD DILin_Total_Count; /* Total virtual pages (private arena) */ + DWORD DILin_Total_Free; /* Free virtual pages (private arena) */ + + DWORD SparseTotal; /* Total size of sparse arena (bytes ?) */ + DWORD SparseFree; /* Free size of sparse arena (bytes ?) */ + }; + + struct Win32sMemoryInfo *info = + (struct Win32sMemoryInfo *)AppToWine(ESI_reg(context)); + + FIXME(vxd, "KGlobalMemStat(%lx)\n", (DWORD)info); + + /* FIXME */ + } + break; + + + case 0x001C: /* Enable/Disable Exceptions */ + /* + * Input: ECX: 0 to disable, 1 to enable exception handling + * + * Output: None + */ + + TRACE(vxd, "[001c] ECX=%lx\n", ECX_reg(context)); + + /* FIXME */ + break; + + + case 0x001D: /* VirtualAlloc called from 16-bit code */ + /* + * Input: EDX: Segmented address of arguments on stack + * + * LPVOID base [in] Flat address of region to reserve/commit + * DWORD size [in] Size of region + * DWORD type [in] Type of allocation + * DWORD prot [in] Type of access protection + * + * Output: EAX: NtStatus + * EDX: Flat base address of allocated region + */ + { + DWORD *stack = PTR_SEG_OFF_TO_LIN(LOWORD(EDX_reg(context)), + HIWORD(EDX_reg(context))); + LPVOID base = (LPVOID)AppToWine(stack[0]); + DWORD size = stack[1]; + DWORD type = stack[2]; + DWORD prot = stack[3]; + DWORD result; + + TRACE(vxd, "VirtualAlloc16(%lx, %lx, %lx, %lx)\n", + (DWORD)base, size, type, prot); + + if (type & 0x80000000) + { + WARN(vxd, "VirtualAlloc16: strange type %lx\n", type); + type &= 0x7fffffff; + } + + result = (DWORD)VirtualAlloc(base, size, type, prot); + + if (WineToApp(result)) + EDX_reg(context) = WineToApp(result), + EAX_reg(context) = STATUS_SUCCESS; + else + EDX_reg(context) = 0, + EAX_reg(context) = STATUS_NO_MEMORY; /* FIXME */ + } + break; + + + case 0x001E: /* VirtualFree called from 16-bit code */ + /* + * Input: EDX: Segmented address of arguments on stack + * + * LPVOID base [in] Flat address of region + * DWORD size [in] Size of region + * DWORD type [in] Type of operation + * + * Output: EAX: NtStatus + * EDX: TRUE if success, FALSE if failure + */ + { + DWORD *stack = PTR_SEG_OFF_TO_LIN(LOWORD(EDX_reg(context)), + HIWORD(EDX_reg(context))); + LPVOID base = (LPVOID)AppToWine(stack[0]); + DWORD size = stack[1]; + DWORD type = stack[2]; + DWORD result; + + TRACE(vxd, "VirtualFree16(%lx, %lx, %lx)\n", + (DWORD)base, size, type); + + result = VirtualFree(base, size, type); + + if (result) + EDX_reg(context) = TRUE, + EAX_reg(context) = STATUS_SUCCESS; + else + EDX_reg(context) = FALSE, + EAX_reg(context) = STATUS_NO_MEMORY; /* FIXME */ + } + break; + + + case 0x001F: /* FWorkingSetSize */ + /* + * Input: EDX: 0 if Get, 1 if Set + * + * ECX: Get: Buffer to receive Working Set Size + * Set: Buffer containing Working Set Size + * + * Output: NtStatus + */ + { + DWORD *ptr = (DWORD *)AppToWine(ECX_reg(context)); + BOOL32 set = EDX_reg(context); + + TRACE(vxd, "FWorkingSetSize(%lx, %lx)\n", (DWORD)ptr, (DWORD)set); + + if (set) + /* We do it differently ... */; + else + *ptr = 0x100; + + EAX_reg(context) = STATUS_SUCCESS; + } + break; + + + default: + VXD_BARF( context, "W32S" ); + } + + #undef AppToWine + #undef WineToApp +} + diff --git a/objects/bitmap.c b/objects/bitmap.c index 4d6fd4bc5bb..a3df02bc92c 100644 --- a/objects/bitmap.c +++ b/objects/bitmap.c @@ -175,10 +175,7 @@ HBITMAP32 WINAPI CreateBitmap32( INT32 width, INT32 height, UINT32 planes, bmpObjPtr->bitmap.bmWidthBytes = (INT16)BITMAP_WIDTH_BYTES( width, bpp ); bmpObjPtr->bitmap.bmBits = NULL; - bmpObjPtr->dibSection = NULL; - bmpObjPtr->colorMap = NULL; - bmpObjPtr->nColorMap = 0; - bmpObjPtr->status = DIB_NoHandler; + bmpObjPtr->dib = NULL; /* Create the pixmap */ bmpObjPtr->pixmap = TSXCreatePixmap(display, rootWindow, width, height, bpp); @@ -829,20 +826,7 @@ BOOL32 BITMAP_DeleteObject( HBITMAP16 hbitmap, BITMAPOBJ * bmp ) } #endif - if (bmp->dibSection) - { - DIBSECTION *dib = bmp->dibSection; - - if (dib->dsBm.bmBits) - if (dib->dshSection) - UnmapViewOfFile(dib->dsBm.bmBits); - else - VirtualFree(dib->dsBm.bmBits, MEM_RELEASE, 0L); - - HeapFree(GetProcessHeap(), 0, dib); - } - if (bmp->colorMap) - HeapFree(GetProcessHeap(), 0, bmp->colorMap); + DIB_DeleteDIBSection( bmp ); return GDI_FreeObject( hbitmap ); } @@ -853,7 +837,7 @@ BOOL32 BITMAP_DeleteObject( HBITMAP16 hbitmap, BITMAPOBJ * bmp ) */ INT16 BITMAP_GetObject16( BITMAPOBJ * bmp, INT16 count, LPVOID buffer ) { - if (bmp->dibSection) + if (bmp->dib) { FIXME(bitmap, "not implemented for DIBs\n"); return 0; @@ -872,7 +856,7 @@ INT16 BITMAP_GetObject16( BITMAPOBJ * bmp, INT16 count, LPVOID buffer ) */ INT32 BITMAP_GetObject32( BITMAPOBJ * bmp, INT32 count, LPVOID buffer ) { - if (bmp->dibSection) + if (bmp->dib) { if (count < sizeof(DIBSECTION)) { @@ -883,7 +867,7 @@ INT32 BITMAP_GetObject32( BITMAPOBJ * bmp, INT32 count, LPVOID buffer ) if (count > sizeof(DIBSECTION)) count = sizeof(DIBSECTION); } - memcpy( buffer, bmp->dibSection, count ); + memcpy( buffer, &bmp->dib->dibSection, count ); return count; } else diff --git a/objects/dib.c b/objects/dib.c index 72780f903e0..413e233d85d 100644 --- a/objects/dib.c +++ b/objects/dib.c @@ -24,12 +24,13 @@ typedef struct { DC *dc; LPCVOID bits; + XImage *image; int lines; DWORD infoWidth; WORD depth; WORD infoBpp; WORD compression; - RGBQUAD *colorMap; + int *colorMap; int nColorMap; Drawable drawable; GC gc; @@ -174,13 +175,13 @@ static int DIB_GetBitmapInfo( const BITMAPINFOHEADER *header, DWORD *width, * Build the color map from the bitmap palette. Should not be called * for a >8-bit deep bitmap. */ -static RGBQUAD *DIB_BuildColorMap( const BITMAPINFO *info, - HPALETTE16 hPalette, int *nColors ) +static int *DIB_BuildColorMap( DC *dc, WORD coloruse, WORD depth, + const BITMAPINFO *info, int *nColors ) { int i, colors; BOOL32 isInfo; WORD *colorPtr; - RGBQUAD *colorMapping; + int *colorMapping; if ((isInfo = (info->bmiHeader.biSize == sizeof(BITMAPINFOHEADER)))) { @@ -200,85 +201,51 @@ static RGBQUAD *DIB_BuildColorMap( const BITMAPINFO *info, return NULL; } - if (!(colorMapping = (RGBQUAD *)HeapAlloc(GetProcessHeap(), 0, - colors * sizeof(RGBQUAD) ))) + if (!(colorMapping = (int *)HeapAlloc(GetProcessHeap(), 0, + colors * sizeof(int) ))) return NULL; - if (hPalette == 0) /* DIB_RGB_COLORS */ + if (coloruse == DIB_RGB_COLORS) { if (isInfo) { RGBQUAD * rgb = (RGBQUAD *)colorPtr; - for (i = 0; i < colors; i++, rgb++) - colorMapping[i] = *rgb; + if (depth == 1) /* Monochrome */ + for (i = 0; i < colors; i++, rgb++) + colorMapping[i] = (rgb->rgbRed + rgb->rgbGreen + + rgb->rgbBlue > 255*3/2); + else + for (i = 0; i < colors; i++, rgb++) + colorMapping[i] = COLOR_ToPhysical( dc, RGB(rgb->rgbRed, + rgb->rgbGreen, + rgb->rgbBlue)); } else { RGBTRIPLE * rgb = (RGBTRIPLE *)colorPtr; - - for (i = 0; i < colors; i++, rgb++) - colorMapping[i].rgbRed = rgb->rgbtRed, - colorMapping[i].rgbGreen = rgb->rgbtGreen, - colorMapping[i].rgbBlue = rgb->rgbtBlue; + + if (depth == 1) /* Monochrome */ + for (i = 0; i < colors; i++, rgb++) + colorMapping[i] = (rgb->rgbtRed + rgb->rgbtGreen + + rgb->rgbtBlue > 255*3/2); + else + for (i = 0; i < colors; i++, rgb++) + colorMapping[i] = COLOR_ToPhysical( dc, RGB(rgb->rgbtRed, + rgb->rgbtGreen, + rgb->rgbtBlue)); } } else /* DIB_PAL_COLORS */ { - PALETTEOBJ *palPtr = (PALETTEOBJ *)GDI_GetObjPtr(hPalette, PALETTE_MAGIC); - if (!palPtr) - { - HeapFree(GetProcessHeap(), 0, colorMapping); - return NULL; - } - for (i = 0; i < colors; i++, colorPtr++) - if (*colorPtr >= palPtr->logpalette.palNumEntries) - { - colorMapping[i].rgbRed = 0; - colorMapping[i].rgbGreen = 0; - colorMapping[i].rgbBlue = 0; - } - else - { - PALETTEENTRY *pe = palPtr->logpalette.palPalEntry + *colorPtr; - colorMapping[i].rgbRed = pe->peRed; - colorMapping[i].rgbGreen = pe->peGreen; - colorMapping[i].rgbBlue = pe->peBlue; - } - - GDI_HEAP_UNLOCK(hPalette); + colorMapping[i] = COLOR_ToPhysical( dc, PALETTEINDEX(*colorPtr) ); } *nColors = colors; return colorMapping; } -/*********************************************************************** - * DIB_PhysicalColorMap - * - * Translate color map to physical colors - */ -static int *DIB_PhysicalColorMap( DC *dc, int depth, - RGBQUAD *colorMap, int nColorMap) -{ - int *colorMapping, i; - - if (!nColorMap) return NULL; - if (!(colorMapping = (int *)HeapAlloc(GetProcessHeap(), 0, - nColorMap * sizeof(int) ))) return NULL; - - if (depth == 1) /* Monochrome */ - for (i = 0; i < nColorMap; i++, colorMap++) - colorMapping[i] = (colorMap->rgbRed + colorMap->rgbGreen + - colorMap->rgbBlue > 255*3/2); - else - for (i = 0; i < nColorMap; i++, colorMap++) - colorMapping[i] = COLOR_ToPhysical( dc, RGB(colorMap->rgbRed, - colorMap->rgbGreen, - colorMap->rgbBlue)); - return colorMapping; -} /*********************************************************************** * DIB_MapColor @@ -834,8 +801,8 @@ static void DIB_SetImageBits_16( int lines, const BYTE *srcbits, * GetDIBits for an 16-bit deep DIB. */ static void DIB_GetImageBits_16( int lines, BYTE *srcbits, - DWORD srcwidth, DWORD dstwidth, int left, - int *colors, int nColors, XImage *bmpImage ) + DWORD srcwidth, DWORD dstwidth, int left, + XImage *bmpImage ) { DWORD x; LPWORD ptr; @@ -927,8 +894,8 @@ static void DIB_SetImageBits_24( int lines, const BYTE *srcbits, * GetDIBits for an 24-bit deep DIB. */ static void DIB_GetImageBits_24( int lines, BYTE *srcbits, - DWORD srcwidth, DWORD dstwidth, int left, - int *colors, int nColors, XImage *bmpImage ) + DWORD srcwidth, DWORD dstwidth, int left, + XImage *bmpImage ) { DWORD x; int h; @@ -1013,8 +980,8 @@ static void DIB_SetImageBits_32( int lines, const BYTE *srcbits, * GetDIBits for an 32-bit deep DIB. */ static void DIB_GetImageBits_32( int lines, BYTE *srcbits, - DWORD srcwidth, DWORD dstwidth, int left, - int *colors, int nColors, XImage *bmpImage ) + DWORD srcwidth, DWORD dstwidth, int left, + XImage *bmpImage ) { DWORD x; int h; @@ -1064,44 +1031,37 @@ static void DIB_GetImageBits_32( int lines, BYTE *srcbits, */ static int DIB_SetImageBits( const DIB_SETIMAGEBITS_DESCR *descr ) { - int *colorMapping; + int lines = descr->lines >= 0 ? descr->lines : -descr->lines; XImage *bmpImage; - int lines; - - /* Translate the color mapping table */ - - if (descr->infoBpp > 8) colorMapping = NULL; - else if (!(colorMapping = DIB_PhysicalColorMap( descr->dc, descr->depth, - descr->colorMap, descr->nColorMap ))) - return 0; if ( descr->dc && descr->dc->w.flags & DC_DIRTY ) - CLIPPING_UpdateGCRegion(descr->dc); + CLIPPING_UpdateGCRegion( descr->dc ); + + if (descr->image) + bmpImage = descr->image; + else + XCREATEIMAGE( bmpImage, descr->infoWidth, lines, descr->depth ); /* Transfer the pixels */ - lines = descr->lines; - if (lines < 0) lines = -lines; - XCREATEIMAGE(bmpImage, descr->infoWidth, lines, descr->depth ); - switch(descr->infoBpp) { case 1: DIB_SetImageBits_1( descr->lines, descr->bits, descr->infoWidth, - descr->width, descr->xSrc, colorMapping, bmpImage ); + descr->width, descr->xSrc, descr->colorMap, bmpImage ); break; case 4: if (descr->compression) DIB_SetImageBits_RLE4( descr->lines, descr->bits, descr->infoWidth, descr->width, descr->xSrc, - colorMapping, bmpImage ); + descr->colorMap, bmpImage ); else DIB_SetImageBits_4( descr->lines, descr->bits, descr->infoWidth, - descr->width, descr->xSrc, colorMapping, bmpImage ); + descr->width, descr->xSrc, descr->colorMap, bmpImage ); break; case 8: if (descr->compression) DIB_SetImageBits_RLE8( descr->lines, descr->bits, descr->infoWidth, descr->width, descr->xSrc, - colorMapping, bmpImage ); + descr->colorMap, bmpImage ); else DIB_SetImageBits_8( descr->lines, descr->bits, descr->infoWidth, - descr->width, descr->xSrc, colorMapping, bmpImage ); + descr->width, descr->xSrc, descr->colorMap, bmpImage ); break; case 15: case 16: @@ -1120,11 +1080,12 @@ static int DIB_SetImageBits( const DIB_SETIMAGEBITS_DESCR *descr ) WARN(bitmap, "(%d): Invalid depth\n", descr->infoBpp ); break; } - if (colorMapping) HeapFree( GetProcessHeap(), 0, colorMapping ); + XPutImage( display, descr->drawable, descr->gc, bmpImage, descr->xSrc, descr->ySrc, descr->xDest, descr->yDest, descr->width, descr->height ); - XDestroyImage( bmpImage ); + + if (!descr->image) XDestroyImage( bmpImage ); return lines; } @@ -1136,24 +1097,19 @@ static int DIB_SetImageBits( const DIB_SETIMAGEBITS_DESCR *descr ) */ static int DIB_GetImageBits( const DIB_SETIMAGEBITS_DESCR *descr ) { - int *colorMapping; + int lines = descr->lines >= 0 ? descr->lines : -descr->lines; XImage *bmpImage; - int lines; - /* Translate the color mapping table */ + if (descr->image) + bmpImage = descr->image; + else + XCREATEIMAGE( bmpImage, descr->infoWidth, lines, descr->depth ); - if (descr->infoBpp > 8) colorMapping = NULL; - else if (!(colorMapping = DIB_PhysicalColorMap( descr->dc, descr->depth, - descr->colorMap, descr->nColorMap ))) - return 0; + XGetSubImage( display, descr->drawable, descr->xDest, descr->yDest, + descr->width, descr->height, AllPlanes, ZPixmap, + bmpImage, descr->xSrc, descr->ySrc ); /* Transfer the pixels */ - - lines = descr->lines; - if (lines < 0) lines = -lines; - bmpImage = XGetImage( display, descr->drawable, descr->xDest, descr->yDest, - descr->width, descr->height, AllPlanes, ZPixmap ); - switch(descr->infoBpp) { case 1: @@ -1163,34 +1119,31 @@ static int DIB_GetImageBits( const DIB_SETIMAGEBITS_DESCR *descr ) case 4: if (descr->compression) FIXME(bitmap, "Compression not yet supported!\n"); else DIB_GetImageBits_4( descr->lines, (LPVOID)descr->bits, descr->infoWidth, - descr->width, descr->xSrc, - colorMapping, descr->nColorMap, bmpImage ); + descr->width, descr->xSrc, + descr->colorMap, descr->nColorMap, bmpImage ); break; case 8: if (descr->compression) FIXME(bitmap, "Compression not yet supported!\n"); else DIB_GetImageBits_8( descr->lines, (LPVOID)descr->bits, descr->infoWidth, - descr->width, descr->xSrc, - colorMapping, descr->nColorMap, bmpImage ); + descr->width, descr->xSrc, + descr->colorMap, descr->nColorMap, bmpImage ); break; case 15: case 16: DIB_GetImageBits_16( descr->lines, (LPVOID)descr->bits, descr->infoWidth, - descr->width, descr->xSrc, - colorMapping, descr->nColorMap, bmpImage ); + descr->width, descr->xSrc, bmpImage ); break; case 24: DIB_GetImageBits_24( descr->lines, (LPVOID)descr->bits, descr->infoWidth, - descr->width, descr->xSrc, - colorMapping, descr->nColorMap, bmpImage ); + descr->width, descr->xSrc, bmpImage ); break; case 32: DIB_GetImageBits_32( descr->lines, (LPVOID)descr->bits, descr->infoWidth, - descr->width, descr->xSrc, - colorMapping, descr->nColorMap, bmpImage ); + descr->width, descr->xSrc, bmpImage ); break; default: @@ -1198,9 +1151,7 @@ static int DIB_GetImageBits( const DIB_SETIMAGEBITS_DESCR *descr ) break; } - if (colorMapping) HeapFree( GetProcessHeap(), 0, colorMapping ); - - XDestroyImage( bmpImage ); + if (!descr->image) XDestroyImage( bmpImage ); return lines; } @@ -1311,10 +1262,8 @@ INT32 WINAPI SetDIBits32( HDC32 hdc, HBITMAP32 hbitmap, UINT32 startscan, if (descr.infoBpp <= 8) { - descr.colorMap = DIB_BuildColorMap( info, coloruse == DIB_PAL_COLORS? - descr.dc->w.hPalette : 0, - &descr.nColorMap); - + descr.colorMap = DIB_BuildColorMap( descr.dc, coloruse, bmp->bitmap.bmBitsPixel, + info, &descr.nColorMap ); if (!descr.colorMap) { GDI_HEAP_UNLOCK( hbitmap ); @@ -1323,9 +1272,8 @@ INT32 WINAPI SetDIBits32( HDC32 hdc, HBITMAP32 hbitmap, UINT32 startscan, } } - - descr.bits = bits; + descr.image = NULL; descr.lines = tmpheight >= 0 ? lines : -lines; descr.depth = bmp->bitmap.bmBitsPixel; descr.drawable = bmp->pixmap; @@ -1401,17 +1349,17 @@ INT32 WINAPI SetDIBitsToDevice32(HDC32 hdc, INT32 xDest, INT32 yDest, DWORD cx, DC_SetupGCForText( dc ); /* To have the correct colors */ TSXSetFunction( display, dc->u.x.gc, DC_XROPfunction[dc->w.ROPmode-1] ); - descr.dc = dc; if (descr.infoBpp <= 8) { - descr.colorMap = DIB_BuildColorMap( info, coloruse == DIB_PAL_COLORS? - descr.dc->w.hPalette : 0, - &descr.nColorMap ); - + descr.colorMap = DIB_BuildColorMap( dc, coloruse, dc->w.bitsPerPixel, + info, &descr.nColorMap ); if (!descr.colorMap) return 0; } + + descr.dc = dc; descr.bits = bits; + descr.image = NULL; descr.lines = tmpheight >= 0 ? lines : -lines; descr.infoWidth = width; descr.depth = dc->w.bitsPerPixel; @@ -1638,14 +1586,10 @@ INT32 WINAPI GetDIBits32( pad += ((32 - (info->bmiHeader.biWidth & 31)) / 8) & 3; for( y = yend - 1; (int)y >= (int)startscan; y-- ) { - *bbits = 0; for( x = 0; x < xend; x++ ) { - + if (!(x&7)) *bbits = 0; *bbits |= XGetPixel( bmpImage, x, y)<<(7-(x&7)); - if ((x&7)==7) { - bbits++; - *bbits=0; - } + if ((x&7)==7) bbits++; } bbits += pad; } @@ -1654,14 +1598,10 @@ INT32 WINAPI GetDIBits32( pad += ((8 - (info->bmiHeader.biWidth & 7)) / 2) & 3; for( y = yend - 1; (int)y >= (int)startscan; y-- ) { - *bbits = 0; for( x = 0; x < xend; x++ ) { - + if (!(x&1)) *bbits = 0; *bbits |= XGetPixel( bmpImage, x, y)<<(4*(1-(x&1))); - if ((x&1)==1) { - bbits++; - *bbits=0; - } + if ((x&1)==1) bbits++; } bbits += pad; } @@ -1671,7 +1611,6 @@ INT32 WINAPI GetDIBits32( pad += (4 - ((info->bmiHeader.biWidth*2) & 3)) & 3; for( y = yend - 1; (int)y >= (int)startscan; y-- ) { - *bbits = 0; for( x = 0; x < xend; x++ ) { unsigned long pixel=XGetPixel( bmpImage, x, y); *bbits++ = pixel & 0xff; @@ -1684,7 +1623,6 @@ INT32 WINAPI GetDIBits32( pad += (4 - ((info->bmiHeader.biWidth*3) & 3)) & 3; for( y = yend - 1; (int)y >= (int)startscan; y-- ) { - *bbits = 0; for( x = 0; x < xend; x++ ) { unsigned long pixel=XGetPixel( bmpImage, x, y); *bbits++ = (pixel >>16) & 0xff; @@ -1697,7 +1635,6 @@ INT32 WINAPI GetDIBits32( case 32: for( y = yend - 1; (int)y >= (int)startscan; y-- ) { - *bbits = 0; for( x = 0; x < xend; x++ ) { unsigned long pixel=XGetPixel( bmpImage, x, y); *bbits++ = (pixel >>16) & 0xff; @@ -1824,7 +1761,7 @@ HBITMAP32 WINAPI CreateDIBitmap32( HDC32 hdc, const BITMAPINFOHEADER *header, */ static void DIB_DoProtectDIBSection( BITMAPOBJ *bmp, DWORD new_prot ) { - DIBSECTION *dib = bmp->dibSection; + DIBSECTION *dib = &bmp->dib->dibSection; INT32 effHeight = dib->dsBm.bmHeight >= 0? dib->dsBm.bmHeight : -dib->dsBm.bmHeight; INT32 totalSize = dib->dsBmih.biSizeImage? dib->dsBmih.biSizeImage @@ -1841,17 +1778,18 @@ static void DIB_DoProtectDIBSection( BITMAPOBJ *bmp, DWORD new_prot ) */ static void DIB_DoUpdateDIBSection( BITMAPOBJ *bmp, BOOL32 toDIB ) { - DIBSECTION *dib = bmp->dibSection; + DIBSECTIONOBJ *dib = bmp->dib; DIB_SETIMAGEBITS_DESCR descr; - if (DIB_GetBitmapInfo( &dib->dsBmih, &descr.infoWidth, &descr.lines, + if (DIB_GetBitmapInfo( &dib->dibSection.dsBmih, &descr.infoWidth, &descr.lines, &descr.infoBpp, &descr.compression ) == -1) return; descr.dc = NULL; - descr.colorMap = bmp->colorMap; - descr.nColorMap = bmp->nColorMap; - descr.bits = dib->dsBm.bmBits; + descr.image = dib->image; + descr.colorMap = dib->colorMap; + descr.nColorMap = dib->nColorMap; + descr.bits = dib->dibSection.dsBm.bmBits; descr.depth = bmp->bitmap.bmBitsPixel; descr.drawable = bmp->pixmap; descr.gc = BITMAP_GC(bmp); @@ -1889,22 +1827,22 @@ static BOOL32 DIB_FaultHandler( LPVOID res, LPVOID addr ) bmp = (BITMAPOBJ *)GDI_GetObjPtr( (HBITMAP32)res, BITMAP_MAGIC ); if (!bmp) return FALSE; - if (bmp->dibSection) - switch (bmp->status) + if (bmp->dib) + switch (bmp->dib->status) { case DIB_GdiMod: TRACE( bitmap, "called in status DIB_GdiMod\n" ); DIB_DoProtectDIBSection( bmp, PAGE_READWRITE ); DIB_DoUpdateDIBSection( bmp, TRUE ); DIB_DoProtectDIBSection( bmp, PAGE_READONLY ); - bmp->status = DIB_InSync; + bmp->dib->status = DIB_InSync; handled = TRUE; break; case DIB_InSync: TRACE( bitmap, "called in status DIB_InSync\n" ); DIB_DoProtectDIBSection( bmp, PAGE_READWRITE ); - bmp->status = DIB_AppMod; + bmp->dib->status = DIB_AppMod; handled = TRUE; break; @@ -1938,7 +1876,7 @@ void DIB_UpdateDIBSection( DC *dc, BOOL32 toDIB ) bmp = (BITMAPOBJ *)GDI_GetObjPtr( dc->w.hBitmap, BITMAP_MAGIC ); if (!bmp) return; - if (!bmp->dibSection) + if (!bmp->dib) { GDI_HEAP_UNLOCK(dc->w.hBitmap); return; @@ -1949,7 +1887,7 @@ void DIB_UpdateDIBSection( DC *dc, BOOL32 toDIB ) { /* Prepare for access to the DIB by GDI functions */ - switch (bmp->status) + switch (bmp->dib->status) { default: case DIB_NoHandler: @@ -1970,7 +1908,7 @@ void DIB_UpdateDIBSection( DC *dc, BOOL32 toDIB ) TRACE( bitmap, "fromDIB called in status DIB_AppMod\n" ); DIB_DoUpdateDIBSection( bmp, FALSE ); DIB_DoProtectDIBSection( bmp, PAGE_READONLY ); - bmp->status = DIB_InSync; + bmp->dib->status = DIB_InSync; break; } } @@ -1978,7 +1916,7 @@ void DIB_UpdateDIBSection( DC *dc, BOOL32 toDIB ) { /* Acknowledge write access to the DIB by GDI functions */ - switch (bmp->status) + switch (bmp->dib->status) { default: case DIB_NoHandler: @@ -1993,7 +1931,7 @@ void DIB_UpdateDIBSection( DC *dc, BOOL32 toDIB ) case DIB_InSync: TRACE( bitmap, " toDIB called in status DIB_InSync\n" ); DIB_DoProtectDIBSection( bmp, PAGE_NOACCESS ); - bmp->status = DIB_GdiMod; + bmp->dib->status = DIB_GdiMod; break; case DIB_AppMod: @@ -2026,8 +1964,8 @@ HBITMAP32 WINAPI CreateDIBSection32 (HDC32 hdc, BITMAPINFO *bmi, UINT32 usage, { HBITMAP32 res = 0; BITMAPOBJ *bmp = NULL; - DIBSECTION *dib = NULL; - RGBQUAD *colorMap = NULL; + DIBSECTIONOBJ *dib = NULL; + int *colorMap = NULL; int nColorMap; /* Fill BITMAP32 structure with DIB data */ @@ -2064,50 +2002,46 @@ HBITMAP32 WINAPI CreateDIBSection32 (HDC32 hdc, BITMAPINFO *bmi, UINT32 usage, bm.bmBits = VirtualAlloc(NULL, totalSize, MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE); + /* Create Color Map */ + if (bm.bmBits && bm.bmBitsPixel <= 8) + { + DC *dc = (DC *)GDI_GetObjPtr(hdc, DC_MAGIC); + if (!dc) dc = (DC *)GDI_GetObjPtr(hdc, METAFILE_DC_MAGIC); + + if (dc) colorMap = DIB_BuildColorMap( dc, usage, bm.bmBitsPixel, + bmi, &nColorMap ); + GDI_HEAP_UNLOCK(hdc); + } + /* Allocate Memory for DIB and fill structure */ if (bm.bmBits) - dib = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(DIBSECTION)); + dib = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(DIBSECTIONOBJ)); if (dib) { - dib->dsBm = bm; - dib->dsBmih = *bi; - /* FIXME: dib->dsBitfields ??? */ - dib->dshSection = section; - dib->dsOffset = offset; + dib->dibSection.dsBm = bm; + dib->dibSection.dsBmih = *bi; + /* FIXME: dib->dibSection.dsBitfields ??? */ + dib->dibSection.dshSection = section; + dib->dibSection.dsOffset = offset; + + dib->status = DIB_NoHandler; + + dib->nColorMap = nColorMap; + dib->colorMap = colorMap; } - /* Create Color Map */ - if (dib && bm.bmBitsPixel <= 8) - { - HPALETTE16 hPalette = 0; - if (usage == DIB_PAL_COLORS) - { - DC *dc = (DC *)GDI_GetObjPtr(hdc, DC_MAGIC); - if (!dc) - dc = (DC *)GDI_GetObjPtr(hdc, METAFILE_DC_MAGIC); - if (dc) - { - hPalette = dc->w.hPalette; - GDI_HEAP_UNLOCK(hdc); - } - } - colorMap = DIB_BuildColorMap(bmi, hPalette, &nColorMap); - } - - /* Create Device Dependent Bitmap and add DIB/ColorMap info */ + /* Create Device Dependent Bitmap and add DIB pointer */ if (dib) { res = CreateDIBitmap32(hdc, bi, 0, NULL, bmi, usage); bmp = (BITMAPOBJ *) GDI_GetObjPtr(res, BITMAP_MAGIC); - if (bmp) - { - bmp->dibSection = dib; - bmp->colorMap = colorMap; - bmp->nColorMap = nColorMap; - bmp->status = DIB_NoHandler; - } + if (bmp) bmp->dib = dib; } + /* Create XImage */ + if (dib && bmp) + XCREATEIMAGE( dib->image, bm.bmWidth, effHeight, bmp->bitmap.bmBitsPixel ); + /* Clean up in case of errors */ if (!res || !bmp || !dib || !bm.bmBits || (bm.bmBitsPixel <= 8 && !colorMap)) { @@ -2117,6 +2051,7 @@ HBITMAP32 WINAPI CreateDIBSection32 (HDC32 hdc, BITMAPINFO *bmi, UINT32 usage, else VirtualFree(bm.bmBits, MEM_RELEASE, 0L), bm.bmBits = NULL; + if (dib->image) XDestroyImage(dib->image), dib->image = NULL; if (colorMap) HeapFree(GetProcessHeap(), 0, colorMap), colorMap = NULL; if (dib) HeapFree(GetProcessHeap(), 0, dib), dib = NULL; if (res) DeleteObject32(res), res = 0; @@ -2127,7 +2062,7 @@ HBITMAP32 WINAPI CreateDIBSection32 (HDC32 hdc, BITMAPINFO *bmi, UINT32 usage, if (VIRTUAL_SetFaultHandler(bm.bmBits, DIB_FaultHandler, (LPVOID)res)) { DIB_DoProtectDIBSection( bmp, PAGE_READONLY ); - bmp->status = DIB_InSync; + dib->status = DIB_InSync; } /* Return BITMAP handle and storage location */ @@ -2136,3 +2071,29 @@ HBITMAP32 WINAPI CreateDIBSection32 (HDC32 hdc, BITMAPINFO *bmi, UINT32 usage, return res; } +/*********************************************************************** + * DIB_DeleteDIBSection + */ +void DIB_DeleteDIBSection( BITMAPOBJ *bmp ) +{ + if (bmp && bmp->dib) + { + DIBSECTIONOBJ *dib = bmp->dib; + + if (dib->dibSection.dsBm.bmBits) + if (dib->dibSection.dshSection) + UnmapViewOfFile(dib->dibSection.dsBm.bmBits); + else + VirtualFree(dib->dibSection.dsBm.bmBits, MEM_RELEASE, 0L); + + if (dib->image) + XDestroyImage( dib->image ); + + if (dib->colorMap) + HeapFree(GetProcessHeap(), 0, dib->colorMap); + + HeapFree(GetProcessHeap(), 0, dib); + bmp->dib = NULL; + } +} + diff --git a/objects/enhmetafile.c b/objects/enhmetafile.c index eac0c8ec0a9..dcb3dc2da50 100644 --- a/objects/enhmetafile.c +++ b/objects/enhmetafile.c @@ -82,7 +82,7 @@ UINT32 WINAPI GetEnhMetaFileDescription32A( } /***************************************************************************** - * GetEnhMetaFileDescription32W (GDI32.xxx) + * GetEnhMetaFileDescription32W (GDI32.177) * * Copies the description string of an enhanced metafile into a buffer * _buf_. @@ -142,10 +142,8 @@ UINT32 WINAPI GetEnhMetaFileBits( * Many unimplemented records. */ BOOL32 WINAPI PlayEnhMetaFileRecord( - HDC32 hdc, - /* device context in which to render EMF record */ - LPHANDLETABLE32 handletable, - /* array of handles to be used in rendering record */ + HDC32 hdc, /* device context in which to render EMF record */ + LPHANDLETABLE32 handletable, /* array of handles to be used in rendering record */ const ENHMETARECORD *mr, /* EMF record to render */ UINT32 handles /* size of handle array */ ) diff --git a/objects/font.c b/objects/font.c index 6f5a91170da..9c1d638a4bd 100644 --- a/objects/font.c +++ b/objects/font.c @@ -1230,12 +1230,14 @@ DWORD WINAPI GetKerningPairs32W( HDC32 hDC, DWORD cPairs, return GetKerningPairs32A( hDC, cPairs, lpKerningPairs ); } +/************************************************************************* + * TranslateCharSetInfo [GDI32.382] + */ BOOL32 WINAPI TranslateCharSetInfo(LPDWORD lpSrc,LPCHARSETINFO lpCs,DWORD dwFlags) { FIXME(font,"(%p,%p,0x%08lx), stub.\n",lpSrc,lpCs,dwFlags); return TRUE; } - /************************************************************************* * GetFontLanguageInfo (GDI32.182) */ @@ -1253,3 +1255,31 @@ DWORD WINAPI GetFontLanguageInfo16(HDC16 hdc) { FIXME(font,"(%x):stub!\n",hdc); return 0; } + + +/************************************************************************* + * GetCharacterPlacement32A [GDI32.160] + */ +DWORD WINAPI +GetCharacterPlacement32A(HDC32 hdc, LPCSTR lpString, UINT32 uCount, + INT32 nMaxExtent, GCP_RESULTS32A lpResults, + DWORD dwFlags) +{ + /* return value 0 is correct for most cases anyway */ + FIXME(font,":stub!\n"); + return 0; +} + +/************************************************************************* + * GetCharacterPlacement32W [GDI32.161] + */ +DWORD WINAPI +GetCharacterPlacement32W(HDC32 hdc, LPCWSTR lpString, UINT32 uCount, + INT32 nMaxExtent, GCP_RESULTS32W lpResults, + DWORD dwFlags) +{ + /* return value 0 is correct for most cases anyway */ + FIXME(font,":stub!\n"); + return 0; +} + diff --git a/objects/oembitmap.c b/objects/oembitmap.c index cc4d191e797..6a016ce133a 100644 --- a/objects/oembitmap.c +++ b/objects/oembitmap.c @@ -336,11 +336,7 @@ static HBITMAP16 OBM_MakeBitmap( WORD width, WORD height, bmpObjPtr->bitmap.bmPlanes = 1; bmpObjPtr->bitmap.bmBitsPixel = bpp; bmpObjPtr->bitmap.bmBits = (SEGPTR)NULL; - - bmpObjPtr->dibSection = NULL; - bmpObjPtr->colorMap = NULL; - bmpObjPtr->nColorMap = 0; - bmpObjPtr->status = DIB_NoHandler; + bmpObjPtr->dib = NULL; GDI_HEAP_UNLOCK( hbitmap ); return hbitmap; diff --git a/objects/palette.c b/objects/palette.c index 5752cb7d8e1..c23c784066f 100644 --- a/objects/palette.c +++ b/objects/palette.c @@ -594,6 +594,11 @@ UINT16 WINAPI GDIRealizePalette( HDC16 hdc ) return RealizeDefaultPalette( hdc ); palPtr = (PALETTEOBJ *) GDI_GetObjPtr( dc->w.hPalette, PALETTE_MAGIC ); + + if (!palPtr) { + FIXME(palette,"invalid selected palette %04x\n",dc->w.hPalette); + return 0; + } realized = COLOR_SetMapping(palPtr,0,palPtr->logpalette.palNumEntries, (dc->w.hPalette != hPrimaryPalette) || diff --git a/objects/region.c b/objects/region.c index 6c79e1ef3b1..1f014a1c31d 100644 --- a/objects/region.c +++ b/objects/region.c @@ -2506,3 +2506,20 @@ HRGN32 WINAPI CreatePolygonRgn32( const POINT32 *points, INT32 count, { return CreatePolyPolygonRgn32( points, &count, 1, mode ); } + + +/*********************************************************************** + * GetRandomRgn [GDI32.215] + * + * NOTES + * This function is UNDOCUMENTED, it isn't even in the header file. + * I assume that it will return a HRGN32!?? + */ +HRGN32 WINAPI GetRandomRgn(DWORD dwArg1, DWORD dwArg2, DWORD dwArg3) +{ + FIXME (region, "(0x%08x 0x%08x 0x%08x): empty stub!\n", + dwArg1, dwArg2, dwArg3); + + return NULL; +} + diff --git a/ole/compobj.c b/ole/compobj.c index ba84e5da8bf..a5fc327083f 100644 --- a/ole/compobj.c +++ b/ole/compobj.c @@ -231,6 +231,12 @@ OLESTATUS WINAPI WINE_StringFromCLSID( char *s; int i; + if (!id) + { ERR(ole,"called with id=Null\n"); + *idstr = 0x00; + return E_FAIL; + } + sprintf(idstr, "{%08lx-%04x-%04x-%02x%02x-", id->Data1, id->Data2, id->Data3, id->Data4[0], id->Data4[1]); diff --git a/ole/folders.c b/ole/folders.c index 1c37812fe9a..a74a2a7ace4 100644 --- a/ole/folders.c +++ b/ole/folders.c @@ -1,9 +1,10 @@ /* - * Shell Folder stuff + * Shell Folder stuff (...and all the OLE-Objects of SHELL32.DLL) * * Copyright 1997 Marcus Meissner + * Copyright 1998 Juergen Schmied * - * currently work in progress on IShellFolders,IEnumIDList and pidl handling + * !!! currently work in progress on all classes !!! * */ @@ -17,180 +18,914 @@ #include "interfaces.h" #include "shlobj.h" #include "winerror.h" +#include "winnls.h" -/****************************************************************************** - * IEnumIDList implementation +/* FIXME should be moved to a header file. IsEqualGUID +is declared but not exported in compobj.c !!!*/ +#define IsEqualGUID(rguid1, rguid2) (!memcmp(rguid1, rguid2, sizeof(GUID))) +#define IsEqualIID(riid1, riid2) IsEqualGUID(riid1, riid2) +#define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID(rclsid1, rclsid2) +/*************************************************************************** + * GetNextElement (internal function) + * + * RETURNS + * LPSTR pointer to first, not yet parsed char */ +LPSTR GetNextElement( + LPSTR pszNext, /*[IN] string to get the element from*/ + LPSTR pszOut, /*[IN] pointer to buffer whitch receives string*/ + DWORD dwOut) /*[IN] length of pszOut*/ +{ LPSTR pszTail = pszNext; + DWORD dwCopy; + TRACE(shell,"(%s %p %lx)\n",pszNext, pszOut, dwOut); -static ULONG WINAPI IEnumIDList_AddRef(LPENUMIDLIST this) { - TRACE(ole,"(%p)->()\n",this); - return ++(this->ref); + if(!pszNext || !*pszNext) + return NULL; + + while(*pszTail && (*pszTail != '\\')) + { pszTail++; + } + dwCopy=((LPBYTE)pszTail-(LPBYTE)pszNext)/sizeof(CHAR)+1; + lstrcpyn32A(pszOut, pszNext, (dwOut()\n",this); - if (!--(this->ref)) { - WARN(ole," freeing IEnumIDList(%p)\n",this); +/************************************************************************** +* IClassFactory Implementation +*/ +static HRESULT WINAPI IClassFactory_QueryInterface(LPCLASSFACTORY,REFIID,LPVOID*); +static ULONG WINAPI IClassFactory_AddRef(LPCLASSFACTORY); +static ULONG WINAPI IClassFactory_Release(LPCLASSFACTORY); +static HRESULT WINAPI IClassFactory_CreateInstance(); +/*static HRESULT WINAPI IClassFactory_LockServer();*/ +/************************************************************************** + * IClassFactory_VTable + */ +static IClassFactory_VTable clfvt = { + IClassFactory_QueryInterface, + IClassFactory_AddRef, + IClassFactory_Release, + IClassFactory_CreateInstance, +/* IClassFactory_LockServer*/ +}; + +/************************************************************************** + * IClassFactory_Constructor + */ + +LPCLASSFACTORY IClassFactory_Constructor() +{ LPCLASSFACTORY lpclf; + + lpclf= (LPCLASSFACTORY)HeapAlloc(GetProcessHeap(),0,sizeof(IClassFactory)); + lpclf->ref = 1; + lpclf->lpvtbl = &clfvt; + TRACE(shell,"(%p)->()\n",lpclf); + return lpclf; +} +/************************************************************************** + * IClassFactory::QueryInterface + */ +static HRESULT WINAPI IClassFactory_QueryInterface( + LPCLASSFACTORY this, REFIID riid, LPVOID *ppvObj) +{ char xriid[50]; + WINE_StringFromCLSID((LPCLSID)riid,xriid); + TRACE(shell,"(%p)->(\n\tIID:\t%s)\n",this,xriid); + + *ppvObj = NULL; + + if(IsEqualIID(riid, &IID_IUnknown)) /*IUnknown*/ + { *ppvObj = this; + } + else if(IsEqualIID(riid, &IID_IClassFactory)) /*IClassFactory*/ + { *ppvObj = (IClassFactory*)this; + } + + if(*ppvObj) + { (*(LPCLASSFACTORY*)ppvObj)->lpvtbl->fnAddRef(this); + TRACE(shell,"-- Interface: (%p)->(%p)\n",ppvObj,*ppvObj); + return S_OK; + } + TRACE(shell,"-- Interface: E_NOINTERFACE\n"); + return E_NOINTERFACE; +} +/****************************************************************************** + * IClassFactory_AddRef + */ +static ULONG WINAPI IClassFactory_AddRef(LPCLASSFACTORY this) +{ TRACE(shell,"(%p)->(count=%lu)\n",this,this->ref); + return ++(this->ref); +} +/****************************************************************************** + * IClassFactory_Release + */ +static ULONG WINAPI IClassFactory_Release(LPCLASSFACTORY this) +{ TRACE(shell,"(%p)->(count=%lu)\n",this,this->ref); + if (!--(this->ref)) + { TRACE(shell,"-- destroying IClassFactory(%p)\n",this); HeapFree(GetProcessHeap(),0,this); return 0; } return this->ref; } +/****************************************************************************** + * IClassFactory_CreateInstance + */ +static HRESULT WINAPI IClassFactory_CreateInstance( + LPCLASSFACTORY this, LPUNKNOWN pUnknown, REFIID riid, LPVOID *ppObject) +{ LPSHELLFOLDER pSHFolder; + HRESULT hResult=E_OUTOFMEMORY; + + char xriid[50]; + WINE_StringFromCLSID((LPCLSID)riid,xriid); + TRACE(shell,"%p->(%p,\n\tIID:\t%s)\n",this,pUnknown,xriid); -static HRESULT WINAPI IEnumIDList_Next( - LPENUMIDLIST this,ULONG celt,LPITEMIDLIST *rgelt,ULONG *pceltFetched -) { - FIXME(ole,"(%p)->(%ld,%p,%p),stub!\n", - this,celt,rgelt,pceltFetched - ); - *pceltFetched = 0; /* we don't have any ... */ - return 0; + *ppObject = NULL; + + if(pUnknown) + { return CLASS_E_NOAGGREGATION; + } + + if (IsEqualIID(riid, &IID_IShellFolder)) + { pSHFolder = IShellFolder_Constructor(NULL,NULL); + if(pSHFolder) + { hResult = pSHFolder->lpvtbl->fnQueryInterface(pSHFolder,riid, ppObject); + pSHFolder->lpvtbl->fnRelease(pSHFolder); + TRACE(shell,"-- ShellFolder created: (%p)->%p\n",this,*ppObject); + } + } + else + { FIXME(shell,"unknown IID requested\n\tIID:\t%s\n",xriid); + hResult=E_NOINTERFACE; + } + return hResult; +} +/****************************************************************************** + * IClassFactory_LockServer + */ +/*static HRESULT WINAPI IClassFactory_LockServer(LPCLASSFACTORY this, BOOL) +{ TRACE(shell,"%p->(), not implemented\n",this) + return E_NOTIMPL; } +*/ +/************************************************************************** + * IEnumIDList Implementation + */ +static HRESULT WINAPI IEnumIDList_QueryInterface(LPENUMIDLIST,REFIID,LPVOID*); +static ULONG WINAPI IEnumIDList_AddRef(LPENUMIDLIST); +static ULONG WINAPI IEnumIDList_Release(LPENUMIDLIST); +static HRESULT WINAPI IEnumIDList_Next(LPENUMIDLIST,ULONG,LPITEMIDLIST*,ULONG*); +static HRESULT WINAPI IEnumIDList_Skip(LPENUMIDLIST,ULONG); +static HRESULT WINAPI IEnumIDList_Reset(LPENUMIDLIST); +static HRESULT WINAPI IEnumIDList_Clone(LPENUMIDLIST,LPENUMIDLIST*); +static BOOL32 WINAPI IEnumIDList_CreateEnumList(LPENUMIDLIST,LPCSTR, DWORD); +static BOOL32 WINAPI IEnumIDList_AddToEnumList(LPENUMIDLIST,LPITEMIDLIST); +static BOOL32 WINAPI IEnumIDList_DeleteList(LPENUMIDLIST); +/************************************************************************** + * IEnumIDList_VTable + */ static IEnumIDList_VTable eidlvt = { - (void *)1, + IEnumIDList_QueryInterface, IEnumIDList_AddRef, IEnumIDList_Release, IEnumIDList_Next, - (void *)5, - (void *)6, - (void *)7 + IEnumIDList_Skip, + IEnumIDList_Reset, + IEnumIDList_Clone, + IEnumIDList_CreateEnumList, + IEnumIDList_AddToEnumList, + IEnumIDList_DeleteList }; -LPENUMIDLIST IEnumIDList_Constructor() { - LPENUMIDLIST lpeidl; +/************************************************************************** + * IEnumIDList_Constructor + */ - lpeidl= (LPENUMIDLIST)HeapAlloc(GetProcessHeap(),0,sizeof(IEnumIDList)); +LPENUMIDLIST IEnumIDList_Constructor( LPCSTR lpszPath, DWORD dwFlags, HRESULT* pResult) +{ LPENUMIDLIST lpeidl; + + lpeidl = (LPENUMIDLIST)HeapAlloc(GetProcessHeap(),0,sizeof(IEnumIDList)); lpeidl->ref = 1; lpeidl->lpvtbl = &eidlvt; + lpeidl->mpFirst=NULL; + lpeidl->mpLast=NULL; + lpeidl->mpCurrent=NULL; + + TRACE(shell,"(%p)->(%s %lx %p)\n",lpeidl,lpszPath,dwFlags,pResult); + + lpeidl->mpPidlMgr=PidlMgr_Constructor(); + if (!lpeidl->mpPidlMgr) + { if (pResult) + { *pResult=E_OUTOFMEMORY; + HeapFree(GetProcessHeap(),0,lpeidl); + return NULL; + } + } + + if(!IEnumIDList_CreateEnumList(lpeidl, lpszPath, dwFlags)) + { if(pResult) + { *pResult = E_OUTOFMEMORY; + HeapFree(GetProcessHeap(),0,lpeidl->mpPidlMgr); + HeapFree(GetProcessHeap(),0,lpeidl); + return NULL; + } + } + + TRACE(shell,"-- (%p)->()\n",lpeidl); return lpeidl; } -/****************************************************************************** - * IShellFolder implementation +/************************************************************************** + * EnumIDList::QueryInterface */ -static ULONG WINAPI IShellFolder_Release(LPSHELLFOLDER this) { - TRACE(ole,"(%p)->(count=%lu)\n",this,this->ref); - if (!--(this->ref)) { - WARN(ole," freeing IShellFolder(%p)\n",this); +static HRESULT WINAPI IEnumIDList_QueryInterface( + LPENUMIDLIST this, REFIID riid, LPVOID *ppvObj) +{ char xriid[50]; + WINE_StringFromCLSID((LPCLSID)riid,xriid); + TRACE(shell,"(%p)->(\n\tIID:\t%s,%p)\n",this,xriid,ppvObj); + + *ppvObj = NULL; + + if(IsEqualIID(riid, &IID_IUnknown)) /*IUnknown*/ + { *ppvObj = this; + } + else if(IsEqualIID(riid, &IID_IEnumIDList)) /*IEnumIDList*/ + { *ppvObj = (IEnumIDList*)this; + } + + if(*ppvObj) + { (*(LPENUMIDLIST*)ppvObj)->lpvtbl->fnAddRef(this); + TRACE(shell,"-- Interface: (%p)->(%p)\n",ppvObj,*ppvObj); + return S_OK; + } + TRACE(shell,"-- Interface: E_NOINTERFACE\n"); + return E_NOINTERFACE; +} + +/****************************************************************************** + * IEnumIDList_AddRef + */ +static ULONG WINAPI IEnumIDList_AddRef(LPENUMIDLIST this) +{ TRACE(shell,"(%p)->()\n",this); + return ++(this->ref); +} +/****************************************************************************** + * IEnumIDList_Release + */ +static ULONG WINAPI IEnumIDList_Release(LPENUMIDLIST this) +{ TRACE(shell,"(%p)->()\n",this); + if (!--(this->ref)) + { TRACE(shell," destroying IEnumIDList(%p)\n",this); HeapFree(GetProcessHeap(),0,this); return 0; } return this->ref; } + +/************************************************************************** + * IEnumIDList_Next + */ -static ULONG WINAPI IShellFolder_AddRef(LPSHELLFOLDER this) { - TRACE(ole,"(%p)->(count=%lu)\n",this,(this->ref)+1); - return ++(this->ref); -} +static HRESULT WINAPI IEnumIDList_Next( + LPENUMIDLIST this,ULONG celt,LPITEMIDLIST * rgelt,ULONG *pceltFetched) +{ ULONG i; + HRESULT hr = S_OK; -static HRESULT WINAPI IShellFolder_GetAttributesOf( - LPSHELLFOLDER this,UINT32 cidl,LPCITEMIDLIST *apidl,DWORD *rgfInOut -) { - FIXME(ole,"\n (%p)->(%d,%p->(%p),%p),stub!\n", - this,cidl,apidl,*apidl,rgfInOut - ); - return E_NOTIMPL; -} + LPITEMIDLIST temp; -/*--------------------------------------------------------------- -! IShellFolder_BindToObject -! -*/ -static HRESULT WINAPI IShellFolder_BindToObject( - LPSHELLFOLDER this,LPCITEMIDLIST pidl,LPBC pbcReserved, - REFIID riid,LPVOID * ppvOut) - { char xclsid[50]; + TRACE(shell,"(%p)->(%ld,%p, %p)\n",this,celt,rgelt,pceltFetched); - WINE_StringFromCLSID(riid,xclsid); - - FIXME(ole,"(%p)->(pidl:%p,%p,%s,%p),stub!\n",this,pidl,pbcReserved,xclsid,ppvOut); - *ppvOut = IShellFolder_Constructor(); - - return E_NOTIMPL; -} -/*--------------------------------------------------------------- -! IShellFolder_ParseDisplayName -! -*/ -static HRESULT WINAPI IShellFolder_ParseDisplayName( - LPSHELLFOLDER this,HWND32 hwndOwner,LPBC pbcReserved, - LPOLESTR32 lpszDisplayName,DWORD *pchEaten,LPITEMIDLIST *ppidl, - DWORD *pdwAttributes -) { TRACE(ole,"(%p)->(%08x,%p,%p=%s,%p,%p,%p)\n", - this,hwndOwner,pbcReserved,lpszDisplayName,debugstr_w(lpszDisplayName),pchEaten,ppidl,pdwAttributes - ); -// if (pbcReserved) -// *(DWORD*)pbcReserved = 0; - - *ppidl = (LPITEMIDLIST)HeapAlloc(GetProcessHeap(),0,sizeof(ITEMIDLIST)); - (*ppidl)->mkid.cb = 0x0; /*the first ITEMIDLIST*/ - (*ppidl)->mkid.abID[0] = 0x0; /*the first ITEMIDLIST*/ - -// ((LPITEMIDLIST) (((LPBYTE)ppidl)+4) )->mkid.cb=0; /*the second ITEMIDLIST*/ -// ((LPITEMIDLIST) (((LPBYTE)ppidl)+4) )->mkid.abID[0]=0; /*the second ITEMIDLIST*/ - FIXME(shell, "return dummy ITEMIDLIST only (pidl %p)\n",*ppidl); - - /* it is NULL if the caller don't request attributes*/ - if (pdwAttributes) - { *pdwAttributes=SFGAO_FOLDER; + *rgelt=0; + + if(celt > 1 && !pceltFetched) + { return E_INVALIDARG; } - //*pchEaten = lstrlen32W(lpszDisplayName); /* number of char's parsed*/ - //TRACE(shell,"%1 chars parsed",*pchEaten) - return NOERROR; + for(i = 0; i < celt; i++) + { if(!(this->mpCurrent)) + { hr = S_FALSE; + break; + } + temp = this->mpPidlMgr->lpvtbl->fnCopy(this->mpPidlMgr, this->mpCurrent->pidl); + rgelt[i] = temp; + this->mpCurrent = this->mpCurrent->pNext; + } + if(pceltFetched) + { *pceltFetched = i; + } + + return hr; } -static HRESULT WINAPI IShellFolder_EnumObjects( - LPSHELLFOLDER this,HWND32 hwndOwner,DWORD grfFlags, - LPENUMIDLIST* ppenumIDList -) { - FIXME(ole,"(%p)->(0x%04x,0x%08lx,%p),stub!\n", - this,hwndOwner,grfFlags,ppenumIDList - ); - *ppenumIDList = IEnumIDList_Constructor(); - return 0; +/************************************************************************** +* IEnumIDList_Skip +*/ +static HRESULT WINAPI IEnumIDList_Skip( + LPENUMIDLIST this,ULONG celt) +{ DWORD dwIndex; + HRESULT hr = S_OK; + + TRACE(shell,"(%p)->(%lu)\n",this,celt); + + for(dwIndex = 0; dwIndex < celt; dwIndex++) + { if(!this->mpCurrent) + { hr = S_FALSE; + break; + } + this->mpCurrent = this->mpCurrent->pNext; + } + return hr; +} +/************************************************************************** +* IEnumIDList_Reset +*/ +static HRESULT WINAPI IEnumIDList_Reset(LPENUMIDLIST this) +{ TRACE(shell,"(%p)\n",this); + this->mpCurrent = this->mpFirst; + return S_OK; +} +/************************************************************************** +* IEnumIDList_Clone +*/ +static HRESULT WINAPI IEnumIDList_Clone( + LPENUMIDLIST this,LPENUMIDLIST * ppenum) +{ TRACE(shell,"(%p)->() to (%p)->() E_NOTIMPL\n",this,ppenum); + return E_NOTIMPL; +} +/************************************************************************** + * EnumIDList_CreateEnumList() + * fixme: devices not handled + * fixme: add wildcards to path + */ +static BOOL32 WINAPI IEnumIDList_CreateEnumList(LPENUMIDLIST this, LPCSTR lpszPath, DWORD dwFlags) +{ LPITEMIDLIST pidl=NULL; + WIN32_FIND_DATA32A stffile; + HANDLE32 hFile; + + TRACE(shell,"(%p)->(%s %lx) \n",this,lpszPath,dwFlags); + + /*enumerate the folders*/ + if(dwFlags & SHCONTF_FOLDERS) + { /* special case - we can't enumerate the Desktop level Objects (MyComputer,Nethood... + so we need to fake an enumeration of those.*/ + if(!lpszPath) + { //create the pidl for this item + pidl = this->mpPidlMgr->lpvtbl->fnCreateDesktop(this->mpPidlMgr); + if(pidl) + { if(!IEnumIDList_AddToEnumList(this, pidl)) + return FALSE; + } + else + { return FALSE; + } + } + else + { hFile = FindFirstFile32A(lpszPath,&stffile); + do + { if (stffile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) + //create the pidl for this item + /* fixme: the shortname should be given too*/ + pidl = this->mpPidlMgr->lpvtbl->fnCreateFolder(this->mpPidlMgr, stffile.cFileName); + if(pidl) + { if(!IEnumIDList_AddToEnumList(this, pidl)) + return FALSE; + } + else + { return FALSE; + } + } while( FindNextFile32A(hFile,&stffile)); + FindClose32 (hFile); + } + } + //enumerate the non-folder items (values) + if(dwFlags & SHCONTF_NONFOLDERS) + { hFile = FindFirstFile32A(lpszPath,&stffile); + do + { if (! (stffile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ) + //create the pidl for this item + /* fixme: the shortname should be given too*/ + pidl = this->mpPidlMgr->lpvtbl->fnCreateFolder(this->mpPidlMgr, stffile.cFileName); + if(pidl) + { if(!IEnumIDList_AddToEnumList(this, pidl)) + { return FALSE; + } + } + else + { return FALSE; + } + } while( FindNextFile32A(hFile,&stffile)); + FindClose32 (hFile); + } + return TRUE; } -static HRESULT WINAPI IShellFolder_CreateViewObject( - LPSHELLFOLDER this,HWND32 hwndOwner,REFIID riid,LPVOID *ppv -) { - char xclsid[50]; +/************************************************************************** + * EnumIDList_AddToEnumList() + */ +static BOOL32 WINAPI IEnumIDList_AddToEnumList(LPENUMIDLIST this,LPITEMIDLIST pidl) +{ LPENUMLIST pNew; - WINE_StringFromCLSID(riid,xclsid); - FIXME(ole,"(%p)->(0x%04x,%s,%p),stub!\n", - this,hwndOwner,xclsid,ppv - ); - *(DWORD*)ppv = 0; - return 0; + TRACE(shell,"(%p)->(pidl=%p)\n",this,pidl); + pNew = (LPENUMLIST)HeapAlloc(GetProcessHeap(),0,sizeof(ENUMLIST)); + if(pNew) + { //set the next pointer + pNew->pNext = NULL; + pNew->pidl = pidl; + + //is this the first item in the list? + if(!this->mpFirst) + { this->mpFirst = pNew; + this->mpCurrent = pNew; + } + + if(this->mpLast) + { //add the new item to the end of the list + this->mpLast->pNext = pNew; + } + + //update the last item pointer + this->mpLast = pNew; + TRACE(shell,"(%p)->(first=%p, last=%p)\n",this,this->mpFirst,this->mpLast); + return TRUE; + } + return FALSE; +} +/************************************************************************** +* EnumIDList_DeleteList() +*/ +static BOOL32 WINAPI IEnumIDList_DeleteList(LPENUMIDLIST this) +{ LPENUMLIST pDelete; + + TRACE(shell,"(%p)->()\n",this); + + while(this->mpFirst) + { pDelete = this->mpFirst; + this->mpFirst = pDelete->pNext; + + //free the pidl + this->mpPidlMgr->lpvtbl->fnDelete(this->mpPidlMgr,pDelete->pidl); + + //free the list item + HeapFree(GetProcessHeap(),0,pDelete); + } + this->mpFirst = this->mpLast = this->mpCurrent = NULL; + return TRUE; } - +/*********************************************************************** +* IShellFolder implementation +*/ +/*LPSHELLFOLDER IShellFolder_Constructor();*/ +static HRESULT WINAPI IShellFolder_QueryInterface(LPSHELLFOLDER,REFIID,LPVOID*); +static ULONG WINAPI IShellFolder_AddRef(LPSHELLFOLDER); +static ULONG WINAPI IShellFolder_Release(LPSHELLFOLDER); +static HRESULT WINAPI IShellFolder_Initialize(LPSHELLFOLDER,LPCITEMIDLIST); +static HRESULT WINAPI IShellFolder_ParseDisplayName(LPSHELLFOLDER,HWND32,LPBC,LPOLESTR32,DWORD*,LPITEMIDLIST*,DWORD*); +static HRESULT WINAPI IShellFolder_EnumObjects(LPSHELLFOLDER,HWND32,DWORD,LPENUMIDLIST*); +static HRESULT WINAPI IShellFolder_BindToObject(LPSHELLFOLDER,LPCITEMIDLIST,LPBC,REFIID,LPVOID*); +static HRESULT WINAPI IShellFolder_BindToStorage(LPSHELLFOLDER,LPCITEMIDLIST,LPBC,REFIID,LPVOID*); +static HRESULT WINAPI IShellFolder_CompareIDs(LPSHELLFOLDER,LPARAM,LPCITEMIDLIST,LPCITEMIDLIST); +static HRESULT WINAPI IShellFolder_CreateViewObject(LPSHELLFOLDER,HWND32,REFIID,LPVOID*); +static HRESULT WINAPI IShellFolder_GetAttributesOf(LPSHELLFOLDER,UINT32,LPCITEMIDLIST*,DWORD*); +static HRESULT WINAPI IShellFolder_GetUIObjectOf(LPSHELLFOLDER,HWND32,UINT32,LPCITEMIDLIST*,REFIID,UINT32*,LPVOID*); +static HRESULT WINAPI IShellFolder_GetDisplayNameOf(LPSHELLFOLDER,LPCITEMIDLIST,DWORD,LPSTRRET); +static HRESULT WINAPI IShellFolder_SetNameOf(LPSHELLFOLDER,HWND32,LPCITEMIDLIST,LPCOLESTR32,DWORD,LPITEMIDLIST*); +/*********************************************************************** +* +* IShellFolder_VTable +*/ static struct IShellFolder_VTable sfvt = { - (void *)1, + IShellFolder_QueryInterface, IShellFolder_AddRef, IShellFolder_Release, + IShellFolder_Initialize, IShellFolder_ParseDisplayName, IShellFolder_EnumObjects, IShellFolder_BindToObject, - (void *)7, - (void *)8, + IShellFolder_BindToStorage, + IShellFolder_CompareIDs, IShellFolder_CreateViewObject, IShellFolder_GetAttributesOf, - (void *)11, - (void *)12, - (void *)13 + IShellFolder_GetUIObjectOf, + IShellFolder_GetDisplayNameOf, + IShellFolder_SetNameOf }; +/************************************************************************** +* IShellFolder_Constructor +*/ -LPSHELLFOLDER IShellFolder_Constructor() { +LPSHELLFOLDER IShellFolder_Constructor(LPSHELLFOLDER pParent,LPITEMIDLIST pidl) { LPSHELLFOLDER sf; + DWORD dwSize=0; + WORD wLen; sf = (LPSHELLFOLDER)HeapAlloc(GetProcessHeap(),0,sizeof(IShellFolder)); sf->ref = 1; sf->lpvtbl = &sfvt; - TRACE(ole,"(%p)->()\n",sf); + sf->mlpszFolder=NULL; + sf->mpSFParent=pParent; + + TRACE(shell,"(%p)->(parent:%p, pidl=%p)\n",sf,pParent, pidl); + + sf->pPidlMgr = PidlMgr_Constructor(); + if (! sf->pPidlMgr ) + { HeapFree(GetProcessHeap(),0,sf); + ERR (shell,"-- Could not initialize PidMGR\n"); + return NULL; + } + + sf->mpidl = sf->pPidlMgr->lpvtbl->fnCopy(sf->pPidlMgr, pidl); + sf->mpidlNSRoot = NULL; + + if(sf->mpidl) + { /*if(sf->pPidlMgr->lpvtbl->fnIsDesktop(sf->pPidlMgr,sf->mpidl)) + { sf->pPidlMgr->lpvtbl->fnGetDesktop(sf->pPidlMgr,sf->mpidl); + }*/ + dwSize = 0; + if(sf->mpSFParent->mlpszFolder) + { dwSize += strlen(sf->mpSFParent->mlpszFolder) + 1; + } + dwSize += sf->pPidlMgr->lpvtbl->fnGetFolderText(sf->pPidlMgr,sf->mpidl,NULL,0); + sf->mlpszFolder = (LPSTR)HeapAlloc(GetProcessHeap(),0,dwSize); + if(sf->mlpszFolder) + { *(sf->mlpszFolder) = 0; + if(sf->mpSFParent->mlpszFolder) + { strcpy(sf->mlpszFolder, sf->mpSFParent->mlpszFolder); + wLen = strlen(sf->mlpszFolder); + if (wLen && sf->mlpszFolder[wLen-1]!='\\') + { sf->mlpszFolder[wLen+0]='\\'; + sf->mlpszFolder[wLen+1]='\0'; + } + } + sf->pPidlMgr->lpvtbl->fnGetFolderText(sf->pPidlMgr, sf->mpidl, sf->mlpszFolder+strlen(sf->mlpszFolder), dwSize-strlen(sf->mlpszFolder)); + } + } + + TRACE(shell,"-- (%p)->(%p,%p)\n",sf,pParent, pidl); return sf; } +/************************************************************************** + * IShellFolder::QueryInterface + */ +static HRESULT WINAPI IShellFolder_QueryInterface( + LPSHELLFOLDER this, REFIID riid, LPVOID *ppvObj) +{ char xriid[50]; + WINE_StringFromCLSID((LPCLSID)riid,xriid); + TRACE(shell,"(%p)->(\n\tIID:\t%s,%p)\n",this,xriid,ppvObj); + *ppvObj = NULL; + + if(IsEqualIID(riid, &IID_IUnknown)) /*IUnknown*/ + { *ppvObj = this; + } + else if(IsEqualIID(riid, &IID_IShellFolder)) /*IShellFolder*/ + { *ppvObj = (IShellFolder*)this; + } + + if(*ppvObj) + { (*(LPSHELLFOLDER*)ppvObj)->lpvtbl->fnAddRef(this); + TRACE(shell,"-- Interface: (%p)->(%p)\n",ppvObj,*ppvObj); + return S_OK; + } + TRACE(shell,"-- Interface: E_NOINTERFACE\n"); + return E_NOINTERFACE; +} + +/************************************************************************** +* IShellFolder::AddRef +*/ + +static ULONG WINAPI IShellFolder_AddRef(LPSHELLFOLDER this) +{ TRACE(shell,"(%p)->(count=%lu)\n",this,(this->ref)+1); + return ++(this->ref); +} + +/************************************************************************** + * IShellFolder_Release + */ +static ULONG WINAPI IShellFolder_Release(LPSHELLFOLDER this) +{ TRACE(shell,"(%p)->(count=%lu)\n",this,this->ref); + if (!--(this->ref)) { + TRACE(shell,"-- destroying IShellFolder(%p)\n",this); + HeapFree(GetProcessHeap(),0,this); + return 0; + } + return this->ref; +} +/************************************************************************** +* IShellFolder_ParseDisplayName +* +* FIXME: +* pdwAttributes: not used +*/ +static HRESULT WINAPI IShellFolder_ParseDisplayName( + LPSHELLFOLDER this, + HWND32 hwndOwner, + LPBC pbcReserved, + LPOLESTR32 lpszDisplayName, /* [in] name of file or folder*/ + DWORD *pchEaten, /* [out] number of chars parsed*/ + LPITEMIDLIST *ppidl, /* [out] the pidl*/ + DWORD *pdwAttributes) +{ HRESULT hr=E_OUTOFMEMORY; + LPITEMIDLIST pidlFull=NULL; + DWORD dwChars=lstrlen32W(lpszDisplayName) + 1; + LPSTR pszTemp=(LPSTR)HeapAlloc(GetProcessHeap(),0,dwChars * sizeof(CHAR)); + LPSTR pszNext=NULL; + CHAR szElement[MAX_PATH]; + BOOL32 bType; + LPITEMIDLIST pidlTemp = NULL; + LPITEMIDLIST pidlOld = NULL; + + TRACE(shell,"(%p)->(%x,%p,%p=%s,%p,pidl=%p,%p)\n", + this,hwndOwner,pbcReserved,lpszDisplayName,debugstr_w(lpszDisplayName),pchEaten,ppidl,pdwAttributes + ); + if(pszTemp) + { hr = E_FAIL; + WideCharToLocal32(pszTemp, lpszDisplayName, dwChars); + if(*pszTemp) + { pidlFull = this->pPidlMgr->lpvtbl->fnCreateDesktop(this->pPidlMgr); + + /* check if the lpszDisplayName is Folder or File*/ + bType = ! (GetFileAttributes32A(pszNext)&FILE_ATTRIBUTE_DIRECTORY); + + pszNext = GetNextElement(pszTemp, szElement, MAX_PATH); + + pidlTemp = this->pPidlMgr->lpvtbl->fnCreateDrive(this->pPidlMgr,szElement); + pidlOld = pidlFull; + pidlFull = this->pPidlMgr->lpvtbl->fnConcatenate(this->pPidlMgr,pidlFull,pidlTemp); + this->pPidlMgr->lpvtbl->fnDelete(this->pPidlMgr,pidlOld); + + if(pidlFull) + { while((pszNext=GetNextElement(pszNext, szElement, MAX_PATH))) + { if(!*pszNext && bType) + { pidlTemp = this->pPidlMgr->lpvtbl->fnCreateValue(this->pPidlMgr,szElement); + } + else + { pidlTemp = this->pPidlMgr->lpvtbl->fnCreateFolder(this->pPidlMgr,szElement); + } + pidlOld = pidlFull; + pidlFull = this->pPidlMgr->lpvtbl->fnConcatenate(this->pPidlMgr,pidlFull,pidlTemp); + this->pPidlMgr->lpvtbl->fnDelete(this->pPidlMgr,pidlOld); + } + hr = S_OK; + } + } + HeapFree(GetProcessHeap(),0,pszTemp); + } + *ppidl = pidlFull; + return hr; + + + +} + +/************************************************************************** +* IShellFolder_EnumObjects +*/ +static HRESULT WINAPI IShellFolder_EnumObjects( + LPSHELLFOLDER this,HWND32 hwndOwner,DWORD dwFlags, + LPENUMIDLIST* ppEnumIDList) +{ HRESULT hr; + TRACE(shell,"(%p)->(%x,%lx,%p)\n",this,hwndOwner,dwFlags,ppEnumIDList); + + *ppEnumIDList = NULL; + *ppEnumIDList = IEnumIDList_Constructor (this->mlpszFolder, dwFlags, &hr); + TRACE(shell,"-- (%p)->(new ID List: %p)\n",this,*ppEnumIDList); + if(!*ppEnumIDList) + { return hr; + } + return S_OK; +} +/************************************************************************** + * IShellFolder_Initialize() + * IPersistFolder Method + */ +static HRESULT WINAPI IShellFolder_Initialize( + LPSHELLFOLDER this, + LPCITEMIDLIST pidl) +{ TRACE(shell,"(%p)->(pidl=%p)\n",this,pidl); + if(this->mpidlNSRoot) + { this->pPidlMgr->lpvtbl->fnDelete(this->pPidlMgr, this->mpidlNSRoot); + this->mpidlNSRoot = NULL; + } + this->mpidlNSRoot = this->pPidlMgr->lpvtbl->fnCopy(this->pPidlMgr, pidl); + return S_OK; +} + +/************************************************************************** +* IShellFolder_BindToObject +*/ +static HRESULT WINAPI IShellFolder_BindToObject( + LPSHELLFOLDER this, + LPCITEMIDLIST pidl, + LPBC pbcReserved, + REFIID riid, + LPVOID * ppvOut) +{ char xclsid[50]; + HRESULT hr; + LPSHELLFOLDER pShellFolder; + + WINE_StringFromCLSID(riid,xclsid); + + TRACE(shell,"(%p)->(pidl=%p,%p,\n\tSID:%s,%p)\n",this,pidl,pbcReserved,xclsid,ppvOut); + + *ppvOut = NULL; + pShellFolder = IShellFolder_Constructor(this, pidl); + if(!pShellFolder) + return E_OUTOFMEMORY; + pShellFolder->lpvtbl->fnInitialize(pShellFolder, this->mpidlNSRoot); + hr = pShellFolder->lpvtbl->fnQueryInterface(pShellFolder, riid, ppvOut); + pShellFolder->lpvtbl->fnRelease(pShellFolder); + TRACE(shell,"-- (%p)->(interface=%p)\n",this, ppvOut); + return hr; +} + +/************************************************************************** +* IShellFolder_BindToStorage +*/ +static HRESULT WINAPI IShellFolder_BindToStorage( + LPSHELLFOLDER this, + LPCITEMIDLIST pidl, + LPBC pbcReserved, + REFIID riid, + LPVOID *ppvOut) +{ char xclsid[50]; + WINE_StringFromCLSID(riid,xclsid); + + FIXME(shell,"(%p)->(pidl=%p,%p,\n\tSID:%s,%p) stub\n",this,pidl,pbcReserved,xclsid,ppvOut); + + *ppvOut = NULL; + return E_NOTIMPL; +} + +/************************************************************************** +* IShellFolder_CompareIDs +*/ +static HRESULT WINAPI IShellFolder_CompareIDs( + LPSHELLFOLDER this, + LPARAM lParam, + LPCITEMIDLIST pidl1, + LPCITEMIDLIST pidl2) +{ CHAR szString1[MAX_PATH] = ""; + CHAR szString2[MAX_PATH] = ""; + int nReturn; + LPCITEMIDLIST pidlTemp1 = pidl1, pidlTemp2 = pidl2; + + TRACE(shell,"(%p)->(%lx,pidl1=%p,pidl2=%p) stub\n",this,lParam,pidl1,pidl2); + + /*Special case - If one of the items is a Path and the other is a File, always + make the Path come before the File.*/ + + //get the last item in each list + while((this->pPidlMgr->lpvtbl->fnGetNextItem(this->pPidlMgr,pidlTemp1))->mkid.cb) + pidlTemp1 = this->pPidlMgr->lpvtbl->fnGetNextItem(this->pPidlMgr,pidlTemp1); + while((this->pPidlMgr->lpvtbl->fnGetNextItem(this->pPidlMgr,pidlTemp2))->mkid.cb) + pidlTemp2 = this->pPidlMgr->lpvtbl->fnGetNextItem(this->pPidlMgr,pidlTemp2); + + //at this point, both pidlTemp1 and pidlTemp2 point to the last item in the list + if(this->pPidlMgr->lpvtbl->fnIsValue(this->pPidlMgr,pidlTemp1) != this->pPidlMgr->lpvtbl->fnIsValue(this->pPidlMgr,pidlTemp2)) + { if(this->pPidlMgr->lpvtbl->fnIsValue(this->pPidlMgr,pidlTemp1)) + return 1; + return -1; + } + + this->pPidlMgr->lpvtbl->fnGetDrive(this->pPidlMgr, pidl1,szString1,sizeof(szString1)); + this->pPidlMgr->lpvtbl->fnGetDrive(this->pPidlMgr, pidl2,szString1,sizeof(szString2)); + nReturn = strcasecmp(szString1, szString2); + if(nReturn) + return nReturn; + + this->pPidlMgr->lpvtbl->fnGetFolderText(this->pPidlMgr, pidl1,szString1,sizeof(szString1)); + this->pPidlMgr->lpvtbl->fnGetFolderText(this->pPidlMgr, pidl2,szString2,sizeof(szString2)); + nReturn = strcasecmp(szString1, szString2); + if(nReturn) + return nReturn; + + this->pPidlMgr->lpvtbl->fnGetValueText(this->pPidlMgr,pidl1,szString1,sizeof(szString1)); + this->pPidlMgr->lpvtbl->fnGetValueText(this->pPidlMgr,pidl2,szString2,sizeof(szString2)); + return strcasecmp(szString1, szString2); +} + +/************************************************************************** +* IShellFolder_CreateViewObject +*/ +static HRESULT WINAPI IShellFolder_CreateViewObject( + LPSHELLFOLDER this,HWND32 hwndOwner,REFIID riid,LPVOID *ppv) +{ char xclsid[50]; + + WINE_StringFromCLSID(riid,xclsid); + FIXME(shell,"(%p)->(0x%04x,\n\tIID:\t%s,%p),stub!\n",this,hwndOwner,xclsid,ppv); + + *(DWORD*)ppv = 0; + return E_OUTOFMEMORY; +} + +/************************************************************************** +* IShellFolder_GetAttributesOf +*/ +static HRESULT WINAPI IShellFolder_GetAttributesOf( + LPSHELLFOLDER this, + UINT32 cidl, + LPCITEMIDLIST *apidl, + DWORD *rgfInOut) +{ FIXME(shell,"(%p)->(%d,%p,%p),stub!\n",this,cidl,apidl,rgfInOut); + return E_NOTIMPL; +} +/************************************************************************** +* IShellFolder_GetUIObjectOf +*/ +static HRESULT WINAPI IShellFolder_GetUIObjectOf( + LPSHELLFOLDER this, + HWND32 hwndOwner, + UINT32 cidl, + LPCITEMIDLIST * apidl, + REFIID riid, + UINT32 * prgfInOut, + LPVOID * ppvOut) +{ char xclsid[50]; + + WINE_StringFromCLSID(riid,xclsid); + + FIXME(shell,"(%p)->(%u %u,pidl=%p,\n\tIID:%s,%p,%p),stub!\n", + this,hwndOwner,cidl,apidl,xclsid,prgfInOut,ppvOut); + return E_FAIL; +} +/************************************************************************** +* IShellFolder_GetDisplayNameOf +*/ +#define GET_SHGDN_FOR(dwFlags) ((DWORD)dwFlags & (DWORD)0x0000FF00) +#define GET_SHGDN_RELATION(dwFlags) ((DWORD)dwFlags & (DWORD)0x000000FF) + +static HRESULT WINAPI IShellFolder_GetDisplayNameOf( + LPSHELLFOLDER this, + LPCITEMIDLIST pidl, + DWORD dwFlags, + LPSTRRET lpName) +{ CHAR szText[MAX_PATH]; + int cchOleStr; + LPITEMIDLIST pidlTemp; + + TRACE(shell,"(%p)->(pidl=%p,%lx,%p)\n",this,pidl,dwFlags,lpName); + switch(GET_SHGDN_RELATION(dwFlags)) + { case SHGDN_NORMAL: + //get the full name + this->pPidlMgr->lpvtbl->fnGetPidlPath(this->pPidlMgr, pidl, szText, sizeof(szText)); +/* FIXME if the text is NULL and this is a value, then is something wrong*/ +/* if(!*szText && this->pPidlMgr->lpvtbl->fnIsValue(this->pPidlMgr, this->pPidlMgr->lpvtbl->fnGetLastItem(this->pPidlMgr, pidl))) + { do_something() + }*/ + break; + + case SHGDN_INFOLDER: + pidlTemp = this->pPidlMgr->lpvtbl->fnGetLastItem(this->pPidlMgr,pidl); + //get the relative name + this->pPidlMgr->lpvtbl->fnGetItemText(this->pPidlMgr, pidlTemp, szText, sizeof(szText)); +/* FIXME if the text is NULL and this is a value, then is something wrong*/ + if(!*szText && this->pPidlMgr->lpvtbl->fnIsValue(this->pPidlMgr,pidlTemp)) +/* { do_something() + }*/ + break; + default: return E_INVALIDARG; + } + + //get the number of characters required + cchOleStr = strlen(szText) + 1; + + TRACE(shell,"-- (%p)->(%s)\n",this,szText); + //allocate the wide character string + lpName->u.pOleStr = (LPWSTR)HeapAlloc(GetProcessHeap(),0,cchOleStr * sizeof(WCHAR)); + + if(!(lpName->u.pOleStr)) + { return E_OUTOFMEMORY; + } + lpName->uType = STRRET_WSTR; + LocalToWideChar32(lpName->u.pOleStr, szText, cchOleStr); + return S_OK; +} + +/************************************************************************** +* IShellFolder_SetNameOf +*/ +static HRESULT WINAPI IShellFolder_SetNameOf( + LPSHELLFOLDER this, + HWND32 hwndOwner, + LPCITEMIDLIST pidl, + LPCOLESTR32 lpName, + DWORD dw, + LPITEMIDLIST *pPidlOut) +{ FIXME(shell,"(%p)->(%u,pidl=%p,%s,%lu,%p),stub!\n", + this,hwndOwner,pidl,debugstr_w(lpName),dw,pPidlOut); + return E_NOTIMPL; +} + +/************************************************************************** +* IShellLink_VTable +*/ static struct IShellLink_VTable slvt = { (void *)1, (void *)2, @@ -215,11 +950,728 @@ static struct IShellLink_VTable slvt = { (void *)21 }; -LPSHELLLINK IShellLink_Constructor() { - LPSHELLLINK sl; +/************************************************************************** + * IShellLink_Constructor + */ +LPSHELLLINK IShellLink_Constructor() +{ LPSHELLLINK sl; sl = (LPSHELLLINK)HeapAlloc(GetProcessHeap(),0,sizeof(IShellLink)); sl->ref = 1; sl->lpvtbl = &slvt; + TRACE(shell,"(%p)->()\n",sl); return sl; } + +/************************************************************************** +* INTERNAL CLASS pidlmgr +*/ +LPITEMIDLIST PidlMgr_CreateDesktop(LPPIDLMGR); +LPITEMIDLIST PidlMgr_CreateDrive(LPPIDLMGR,LPCSTR); +LPITEMIDLIST PidlMgr_CreateFolder(LPPIDLMGR,LPCSTR); +LPITEMIDLIST PidlMgr_CreateValue(LPPIDLMGR,LPCSTR); +void PidlMgr_Delete(LPPIDLMGR,LPITEMIDLIST); +LPITEMIDLIST PidlMgr_GetNextItem(LPPIDLMGR,LPITEMIDLIST); +LPITEMIDLIST PidlMgr_Copy(LPPIDLMGR,LPITEMIDLIST); +UINT16 PidlMgr_GetSize(LPPIDLMGR,LPITEMIDLIST); +BOOL32 PidlMgr_GetDesktop(LPPIDLMGR,LPCITEMIDLIST,LPSTR); +BOOL32 PidlMgr_GetDrive(LPPIDLMGR,LPCITEMIDLIST,LPSTR,UINT16); +LPITEMIDLIST PidlMgr_GetLastItem(LPPIDLMGR,LPCITEMIDLIST); +DWORD PidlMgr_GetItemText(LPPIDLMGR,LPCITEMIDLIST,LPSTR,UINT16); +BOOL32 PidlMgr_IsDesktop(LPPIDLMGR,LPCITEMIDLIST); +BOOL32 PidlMgr_IsDrive(LPPIDLMGR,LPCITEMIDLIST); +BOOL32 PidlMgr_IsFolder(LPPIDLMGR,LPCITEMIDLIST); +BOOL32 PidlMgr_IsValue(LPPIDLMGR,LPCITEMIDLIST); +BOOL32 PidlMgr_HasFolders(LPPIDLMGR,LPSTR,LPCITEMIDLIST); +DWORD PidlMgr_GetFolderText(LPPIDLMGR,LPCITEMIDLIST,LPSTR,DWORD); +DWORD PidlMgr_GetValueText(LPPIDLMGR,LPCITEMIDLIST,LPSTR,DWORD); +BOOL32 PidlMgr_GetValueType(LPPIDLMGR,LPCITEMIDLIST,LPCITEMIDLIST,LPDWORD); +DWORD PidlMgr_GetDataText(LPPIDLMGR,LPCITEMIDLIST,LPCITEMIDLIST,LPSTR,DWORD); +DWORD PidlMgr_GetPidlPath(LPPIDLMGR,LPCITEMIDLIST,LPSTR,DWORD); +LPITEMIDLIST PidlMgr_Concatenate(LPPIDLMGR,LPITEMIDLIST,LPITEMIDLIST); +LPITEMIDLIST PidlMgr_Create(LPPIDLMGR,PIDLTYPE,LPVOID,UINT16); +DWORD PidlMgr_GetData(LPPIDLMGR,PIDLTYPE,LPCITEMIDLIST,LPVOID,UINT16); +LPPIDLDATA PidlMgr_GetDataPointer(LPPIDLMGR,LPCITEMIDLIST); +BOOL32 PidlMgr_SeparatePathAndValue(LPPIDLMGR,LPITEMIDLIST,LPITEMIDLIST*,LPITEMIDLIST*); + +static struct PidlMgr_VTable pmgrvt = { + PidlMgr_CreateDesktop, + PidlMgr_CreateDrive, + PidlMgr_CreateFolder, + PidlMgr_CreateValue, + PidlMgr_Delete, + PidlMgr_GetNextItem, + PidlMgr_Copy, + PidlMgr_GetSize, + PidlMgr_GetDesktop, + PidlMgr_GetDrive, + PidlMgr_GetLastItem, + PidlMgr_GetItemText, + PidlMgr_IsDesktop, + PidlMgr_IsDrive, + PidlMgr_IsFolder, + PidlMgr_IsValue, + PidlMgr_HasFolders, + PidlMgr_GetFolderText, + PidlMgr_GetValueText, + PidlMgr_GetValueType, + PidlMgr_GetDataText, + PidlMgr_GetPidlPath, + PidlMgr_Concatenate, + PidlMgr_Create, + PidlMgr_GetData, + PidlMgr_GetDataPointer, + PidlMgr_SeparatePathAndValue +}; +/************************************************************************** + * PidlMgr_Constructor + */ +LPPIDLMGR PidlMgr_Constructor() +{ LPPIDLMGR pmgr; + pmgr = (LPPIDLMGR)HeapAlloc(GetProcessHeap(),0,sizeof(pidlmgr)); + pmgr->lpvtbl = &pmgrvt; + TRACE(shell,"(%p)->()\n",pmgr); + /** FIXME DllRefCount++;*/ + return pmgr; +} +/************************************************************************** + * PidlMgr_Destructor + */ +void PidlMgr_Destructor(LPPIDLMGR this) +{ HeapFree(GetProcessHeap(),0,this); + TRACE(shell,"(%p)->()\n",this); + /** FIXME DllRefCount--;*/ +} + +/************************************************************************** + * PidlMgr_CreateDesktop() + * PidlMgr_CreateDrive() + * PidlMgr_CreateFolder() + * PidlMgr_CreateValue() + */ +LPITEMIDLIST PidlMgr_CreateDesktop(LPPIDLMGR this) +{ TRACE(shell,"(%p)->()\n",this); + return PidlMgr_Create(this,PT_DESKTOP, (void *)"Desktop", sizeof("Desktop")); +} +LPITEMIDLIST PidlMgr_CreateDrive(LPPIDLMGR this, LPCSTR lpszNew) +{ TRACE(shell,"(%p)->(%s)\n",this,lpszNew); + return PidlMgr_Create(this,PT_DRIVE, (LPVOID)lpszNew , strlen(lpszNew)+1); +} +LPITEMIDLIST PidlMgr_CreateFolder(LPPIDLMGR this, LPCSTR lpszNew) +{ TRACE(shell,"(%p)->(%s)\n",this,lpszNew); + return PidlMgr_Create(this,PT_FOLDER, (LPVOID)lpszNew, strlen(lpszNew)+1); +} +LPITEMIDLIST PidlMgr_CreateValue(LPPIDLMGR this,LPCSTR lpszNew) +{ TRACE(shell,"(%p)->(%s)\n",this,lpszNew); + return PidlMgr_Create(this,PT_VALUE, (LPVOID)lpszNew, strlen(lpszNew)+1); +} +/************************************************************************** + * PidlMgr_Delete() + * Deletes a PIDL + */ +void PidlMgr_Delete(LPPIDLMGR this,LPITEMIDLIST pidl) +{ TRACE(shell,"(%p)->(pidl=%p)\n",this,pidl); + HeapFree(GetProcessHeap(),0,pidl); +} + +/************************************************************************** + * PidlMgr_GetNextItem() + */ +LPITEMIDLIST PidlMgr_GetNextItem(LPPIDLMGR this, LPITEMIDLIST pidl) +{ TRACE(shell,"(%p)->(pidl=%p)\n",this,pidl); + if(pidl) + { return (LPITEMIDLIST)(LPBYTE)(((LPBYTE)pidl) + pidl->mkid.cb); + } + else + { return (NULL); + } +} + +/************************************************************************** + * PidlMgr_Copy() + */ +LPITEMIDLIST PidlMgr_Copy(LPPIDLMGR this, LPITEMIDLIST pidlSource) +{ LPITEMIDLIST pidlTarget = NULL; + UINT16 cbSource = 0; + + TRACE(shell,"-- (%p)->(pidl=%p)\n",this,pidlSource); + + if(NULL == pidlSource) + { ERR(shell,"-- (%p)->(%p)\n",this,pidlSource); + return (NULL); + } + + cbSource = PidlMgr_GetSize(this, pidlSource); + pidlTarget = (LPITEMIDLIST)HeapAlloc(GetProcessHeap(),0,cbSource); + if(!pidlTarget) + { return (NULL); + } + + memcpy(pidlTarget, pidlSource, cbSource); + + TRACE(shell,"-- (%p)->(pidl=%p to new pidl=%p)\n",this,pidlSource,pidlTarget); + return pidlTarget; +} +/************************************************************************** + * PidlMgr_GetSize() + * calculates the size of the complete pidl + */ +UINT16 PidlMgr_GetSize(LPPIDLMGR this, LPITEMIDLIST pidl) +{ UINT16 cbTotal = 0; + LPITEMIDLIST pidlTemp = pidl; + + TRACE(shell,"(%p)->(pidl=%p)\n",this,pidl); + if(pidlTemp) + { while(pidlTemp->mkid.cb) + { cbTotal += pidlTemp->mkid.cb; + pidlTemp = PidlMgr_GetNextItem(this, pidlTemp); + } + //add the size of the NULL terminating ITEMIDLIST + cbTotal += sizeof(ITEMIDLIST); + } + TRACE(shell,"-- size %u\n",cbTotal); + return (cbTotal); +} +/************************************************************************** + * PidlMgr_GetDesktop() + * + * FIXME: quick hack + */ +BOOL32 PidlMgr_GetDesktop(LPPIDLMGR this,LPCITEMIDLIST pidl,LPSTR pOut) +{ TRACE(shell,"(%p)->(%p %p)\n",this,pidl,pOut); + return (BOOL32)PidlMgr_GetData(this,PT_DESKTOP, pidl, (LPVOID)pOut, 255); +} +/************************************************************************** + * PidlMgr_GetDrive() + * + * FIXME: quick hack + */ +BOOL32 PidlMgr_GetDrive(LPPIDLMGR this,LPCITEMIDLIST pidl,LPSTR pOut, UINT16 uSize) +{ LPITEMIDLIST pidlTemp=NULL; + + TRACE(shell,"(%p)->(%p,%p,%u)\n",this,pidl,pOut,uSize); + if(PidlMgr_IsDesktop(this,pidl)) + { pidlTemp = PidlMgr_GetNextItem(this,pidl); + } + else if (PidlMgr_IsDrive(this,pidl)) + { pidlTemp = PidlMgr_GetNextItem(this,pidl); + return (BOOL32)PidlMgr_GetData(this,PT_DRIVE, pidlTemp, (LPVOID)pOut, uSize); + } + return FALSE; +} +/************************************************************************** + * PidlMgr_GetLastItem() + * Gets the last item in the list + */ +LPITEMIDLIST PidlMgr_GetLastItem(LPPIDLMGR this,LPCITEMIDLIST pidl) +{ LPITEMIDLIST pidlLast = NULL; + + TRACE(shell,"(%p)->(pidl=%p)\n",this,pidl); + + if(pidl) + { while(pidl->mkid.cb) + { pidlLast = (LPITEMIDLIST)pidl; + pidl = PidlMgr_GetNextItem(this,pidl); + } + } + return pidlLast; +} +/************************************************************************** + * PidlMgr_GetItemText() + * Gets the text for only this item + */ +DWORD PidlMgr_GetItemText(LPPIDLMGR this,LPCITEMIDLIST pidl, LPSTR lpszText, UINT16 uSize) +{ TRACE(shell,"(%p)->(pidl=%p %p %x)\n",this,pidl,lpszText,uSize); + if (PidlMgr_IsDesktop(this, pidl)) + { return PidlMgr_GetData(this,PT_DESKTOP, pidl, (LPVOID)lpszText, uSize); + } + if (PidlMgr_IsDrive(this, pidl)) + { return PidlMgr_GetData(this,PT_DRIVE, pidl, (LPVOID)lpszText, uSize); + } + return PidlMgr_GetData(this,PT_TEXT, pidl, (LPVOID)lpszText, uSize); +} +/************************************************************************** + * PidlMgr_IsDesktop() + * PidlMgr_IsDrive() + * PidlMgr_IsFolder() + * PidlMgr_IsValue() +*/ +BOOL32 PidlMgr_IsDesktop(LPPIDLMGR this,LPCITEMIDLIST pidl) +{ LPPIDLDATA pData; + TRACE(shell,"%p->(%p)\n",this,pidl); + pData = PidlMgr_GetDataPointer(this,pidl); + return (PT_DESKTOP == pData->type); +} + +BOOL32 PidlMgr_IsDrive(LPPIDLMGR this,LPCITEMIDLIST pidl) +{ LPPIDLDATA pData; + TRACE(shell,"%p->(%p)\n",this,pidl); + pData = PidlMgr_GetDataPointer(this,pidl); + return (PT_DRIVE == pData->type); +} + +BOOL32 PidlMgr_IsFolder(LPPIDLMGR this,LPCITEMIDLIST pidl) +{ LPPIDLDATA pData; + TRACE(shell,"%p->(%p)\n",this,pidl); + pData = PidlMgr_GetDataPointer(this,pidl); + return (PT_FOLDER == pData->type); +} + +BOOL32 PidlMgr_IsValue(LPPIDLMGR this,LPCITEMIDLIST pidl) +{ LPPIDLDATA pData; + TRACE(shell,"%p->(%p)\n",this,pidl); + pData = PidlMgr_GetDataPointer(this,pidl); + return (PT_VALUE == pData->type); +} +/************************************************************************** + * PidlMgr_HasFolders() + * fixme: quick hack + */ +BOOL32 PidlMgr_HasFolders(LPPIDLMGR this, LPSTR pszPath, LPCITEMIDLIST pidl) +{ BOOL32 bResult= FALSE; + WIN32_FIND_DATA32A stffile; + HANDLE32 hFile; + + TRACE (shell,"(%p)->%p %p\n",this, pszPath, pidl); + + hFile = FindFirstFile32A(pszPath,&stffile); + do + { if (! (stffile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ) + { bResult= TRUE; + } + } while( FindNextFile32A(hFile,&stffile)); + FindClose32 (hFile); + + return bResult; +} + + +/************************************************************************** + * PidlMgr_GetFolderText() + * Creates a Path string from a PIDL, filtering out the Desktop and the Drive + * value, if either is present. + */ +DWORD PidlMgr_GetFolderText(LPPIDLMGR this,LPCITEMIDLIST pidl, + LPSTR lpszPath, DWORD dwSize) +{ LPITEMIDLIST pidlTemp; + DWORD dwCopied = 0; + + TRACE(shell,"(%p)->(%p)\n",this,pidl); + + if(!pidl) + { return 0; + } + + if(PidlMgr_IsDesktop(this,pidl)) + { pidlTemp = PidlMgr_GetNextItem(this,pidl); + } + else if (PidlMgr_IsFolder(this,pidl)) + { pidlTemp = PidlMgr_GetNextItem(this,pidl); + } + else + { pidlTemp = (LPITEMIDLIST)pidl; + } + + //if this is NULL, return the required size of the buffer + if(!lpszPath) + { while(pidlTemp->mkid.cb) + { LPPIDLDATA pData = PidlMgr_GetDataPointer(this,pidlTemp); + + //add the length of this item plus one for the backslash + dwCopied += strlen(pData->szText) + 1; /* fixme pData->szText is not every time a string*/ + + pidlTemp = PidlMgr_GetNextItem(this,pidlTemp); + } + + //add one for the NULL terminator + return dwCopied + 1; + } + + *lpszPath = 0; + + while(pidlTemp->mkid.cb && (dwCopied < dwSize)) + { LPPIDLDATA pData = PidlMgr_GetDataPointer(this,pidlTemp); + + //if this item is a value, then skip it and finish + if(PT_VALUE == pData->type) + { break; + } + + strcat(lpszPath, pData->szText); + strcat(lpszPath, "\\"); + + dwCopied += strlen(pData->szText) + 1; + + pidlTemp = PidlMgr_GetNextItem(this,pidlTemp); + } + + //remove the last backslash if necessary + if(dwCopied) + { if(*(lpszPath + strlen(lpszPath) - 1) == '\\') + { *(lpszPath + strlen(lpszPath) - 1) = 0; + dwCopied--; + } + } + return dwCopied; +} + + +/************************************************************************** + * PidlMgr_GetValueText() + * Gets the text for the last item in the list + */ +DWORD PidlMgr_GetValueText(LPPIDLMGR this, + LPCITEMIDLIST pidl, LPSTR lpszValue, DWORD dwSize) +{ LPITEMIDLIST pidlTemp=pidl; + CHAR szText[MAX_PATH]; + + TRACE(shell,"(%p)->(pidl=%p %p %lx)\n",this,pidl,lpszValue,dwSize); + + if(!pidl) + { return 0; + } + + while(pidlTemp->mkid.cb && !PidlMgr_IsValue(this,pidlTemp)) + { pidlTemp = PidlMgr_GetNextItem(this,pidlTemp); + } + + if(!pidlTemp->mkid.cb) + { return 0; + } + + PidlMgr_GetItemText(this, pidlTemp, szText, sizeof(szText)); + + if(!lpszValue) + { return strlen(szText) + 1; + } + strcpy(lpszValue, szText); + TRACE(shell,"-- (%p)->(pidl=%p %p=%s %lx)\n",this,pidl,lpszValue,lpszValue,dwSize); + return strlen(lpszValue); +} +/************************************************************************** + * PidlMgr_GetValueType() + */ +BOOL32 PidlMgr_GetValueType( LPPIDLMGR this, + LPCITEMIDLIST pidlPath, LPCITEMIDLIST pidlValue, LPDWORD pdwType) +{ LPSTR lpszFolder, + lpszValueName; + DWORD dwNameSize; + + FIXME(shell,"(%p)->(%p %p %p) stub\n",this,pidlPath,pidlValue,pdwType); + + if(!pidlPath) + { return FALSE; + } + + if(!pidlValue) + { return FALSE; + } + + if(!pdwType) + { return FALSE; + } + + //get the Desktop + //PidlMgr_GetDesktop(this,pidlPath); + + /* fixme: add the driveletter here*/ + + //assemble the Folder string + dwNameSize = PidlMgr_GetFolderText(this,pidlPath, NULL, 0); + lpszFolder = (LPSTR)HeapAlloc(GetProcessHeap(),0,dwNameSize); + if(!lpszFolder) + { return FALSE; + } + PidlMgr_GetFolderText(this,pidlPath, lpszFolder, dwNameSize); + + //assemble the value name + dwNameSize = PidlMgr_GetValueText(this,pidlValue, NULL, 0); + lpszValueName = (LPSTR)HeapAlloc(GetProcessHeap(),0,dwNameSize); + if(!lpszValueName) + { HeapFree(GetProcessHeap(),0,lpszFolder); + return FALSE; + } + PidlMgr_GetValueText(this,pidlValue, lpszValueName, dwNameSize); + + /* fixme: we've got the path now do something with it + -like get the filetype*/ + + pdwType=NULL; + + HeapFree(GetProcessHeap(),0,lpszFolder); + HeapFree(GetProcessHeap(),0,lpszValueName); + return TRUE; +} +/************************************************************************** + * PidlMgr_GetDataText() + */ +DWORD PidlMgr_GetDataText( LPPIDLMGR this, + LPCITEMIDLIST pidlPath, LPCITEMIDLIST pidlValue, LPSTR lpszOut, DWORD dwOutSize) +{ LPSTR lpszFolder, + lpszValueName; + DWORD dwNameSize; + + FIXME(shell,"(%p)->(pidl=%p pidl=%p) stub\n",this,pidlPath,pidlValue); + + if(!lpszOut) + { return FALSE; + } + + if(!pidlPath) + { return FALSE; + } + + if(!pidlValue) + { return FALSE; + } + + /* fixme: get the driveletter*/ + + //assemble the Folder string + dwNameSize = PidlMgr_GetFolderText(this,pidlPath, NULL, 0); + lpszFolder = (LPSTR)HeapAlloc(GetProcessHeap(),0,dwNameSize); + if(!lpszFolder) + { return FALSE; + } + PidlMgr_GetFolderText(this,pidlPath, lpszFolder, dwNameSize); + + //assemble the value name + dwNameSize = PidlMgr_GetValueText(this,pidlValue, NULL, 0); + lpszValueName = (LPSTR)HeapAlloc(GetProcessHeap(),0,dwNameSize); + if(!lpszValueName) + { HeapFree(GetProcessHeap(),0,lpszFolder); + return FALSE; + } + PidlMgr_GetValueText(this,pidlValue, lpszValueName, dwNameSize); + + /* fixme: we've got the path now do something with it*/ + + HeapFree(GetProcessHeap(),0,lpszFolder); + HeapFree(GetProcessHeap(),0,lpszValueName); + + TRACE(shell,"-- (%p)->(%p=%s %lx)\n",this,lpszOut,lpszOut,dwOutSize); + + return TRUE; +} + +/************************************************************************** + * CPidlMgr::GetPidlPath() + * Create a string that includes the Drive name, the folder text and + * the value text. + */ +DWORD PidlMgr_GetPidlPath(LPPIDLMGR this, + LPCITEMIDLIST pidl, LPSTR lpszOut, DWORD dwOutSize) +{ LPSTR lpszTemp; + WORD len; + + TRACE(shell,"(%p)->(%p,%lu)\n",this,lpszOut,dwOutSize); + + if(!lpszOut) + { return 0; + } + + *lpszOut = 0; + lpszTemp = lpszOut; + + dwOutSize -= PidlMgr_GetFolderText(this,pidl, lpszTemp, dwOutSize); + + //add a backslash if necessary + len = strlen(lpszTemp); + if (len && lpszTemp[len-1]!='\\') + { lpszTemp[len+0]='\\'; + lpszTemp[len+1]='\0'; + dwOutSize--; + } + + lpszTemp = lpszOut + strlen(lpszOut); + + //add the value string + PidlMgr_GetValueText(this,pidl, lpszTemp, dwOutSize); + + //remove the last backslash if necessary + if(*(lpszOut + strlen(lpszOut) - 1) == '\\') + { *(lpszOut + strlen(lpszOut) - 1) = 0; + } + + TRACE(shell,"-- (%p)->(%p=%s,%lu)\n",this,lpszOut,lpszOut,dwOutSize); + + return strlen(lpszOut); + +} +/************************************************************************** + * PidlMgr_Concatenate() + * Create a new PIDL by combining two existing PIDLs. + */ +LPITEMIDLIST PidlMgr_Concatenate(LPPIDLMGR this,LPITEMIDLIST pidl1, LPITEMIDLIST pidl2) +{ LPITEMIDLIST pidlNew; + UINT32 cb1 = 0, cb2 = 0; + + TRACE(shell,"(%p)->(%p,%p)\n",this,pidl1,pidl2); + + if(!pidl1 && !pidl2) + { return NULL; + } + + if(!pidl1) + { pidlNew = PidlMgr_Copy(this,pidl2); + return pidlNew; + } + + if(!pidl2) + { pidlNew = PidlMgr_Copy(this,pidl1); + return pidlNew; + } + + cb1 = PidlMgr_GetSize(this,pidl1) - sizeof(ITEMIDLIST); + cb2 = PidlMgr_GetSize(this,pidl2); + + pidlNew = (LPITEMIDLIST)HeapAlloc(GetProcessHeap(),0,cb1+cb2); + + if(pidlNew) + { memcpy(pidlNew, pidl1, cb1); + memcpy(((LPBYTE)pidlNew) + cb1, pidl2, cb2); + } + TRACE(shell,"-- (%p)-> (new pidl=%p)\n",this,pidlNew); + return pidlNew; +} +/************************************************************************** + * PidlMgr_Create() + * Creates a new PIDL + * type = PT_DESKTOP | PT_DRIVE | PT_FOLDER | PT_VALUE + * pIn = data + * uInSize = size of data + */ + +LPITEMIDLIST PidlMgr_Create(LPPIDLMGR this,PIDLTYPE type, LPVOID pIn, UINT16 uInSize) +{ LPITEMIDLIST pidlOut=NULL; + UINT16 uSize; + LPITEMIDLIST pidlTemp=NULL; + LPPIDLDATA pData; + + TRACE(shell,"(%p)->(%x %p %x)\n",this,type,pIn,uInSize); + + if (! pIn) + { return NULL; + } + uSize = sizeof(ITEMIDLIST) + (sizeof(PIDLTYPE)) + uInSize; + + /* Allocate the memory, adding an additional ITEMIDLIST for the NULL terminating + ID List. */ + pidlOut = (LPITEMIDLIST)HeapAlloc(GetProcessHeap(),0,uSize + sizeof(ITEMIDLIST)); + pidlTemp = pidlOut; + if(pidlOut) + { pidlTemp->mkid.cb = uSize; + pData = PidlMgr_GetDataPointer(this,pidlTemp); + pData->type = type; + switch(type) + { case PT_DESKTOP: memcpy(pData->szText, pIn, uInSize); + TRACE(shell,"-- (%p)->create Desktop: %s\n",this,debugstr_a(pData->szText)); + break; + case PT_DRIVE: memcpy(pData->szText, pIn, uInSize); + TRACE(shell,"-- (%p)->create Drive: %s\n",this,debugstr_a(pData->szText)); + break; + case PT_FOLDER: + case PT_VALUE: memcpy(pData->szText, pIn, uInSize); + TRACE(shell,"-- (%p)->create Value: %s\n",this,debugstr_a(pData->szText)); + break; + default: FIXME(shell,"-- (%p) wrong argument\n",this); + break; + } + + pidlTemp = PidlMgr_GetNextItem(this,pidlTemp); + pidlTemp->mkid.cb = 0; + pidlTemp->mkid.abID[0] = 0; + } + TRACE(shell,"-- (%p)->(pidl=%p)\n",this,pidlOut); + return pidlOut; +} +/************************************************************************** + * PidlMgr_GetData(PIDLTYPE, LPCITEMIDLIST, LPVOID, UINT16) + */ +DWORD PidlMgr_GetData( + LPPIDLMGR this, + PIDLTYPE type, + LPCITEMIDLIST pidl, + LPVOID pOut, + UINT16 uOutSize) +{ LPPIDLDATA pData; + DWORD dwReturn=0; + + TRACE(shell,"(%p)->(%x %p %p %x)\n",this,type,pidl,pOut,uOutSize); + + if(!pidl) + { return 0; + } + + pData = PidlMgr_GetDataPointer(this,pidl); + + //copy the data + switch(type) + { case PT_DESKTOP: if(uOutSize < 1) + return 0; + if(PT_DESKTOP != pData->type) + return 0; + *(LPSTR)pOut = 0; + strncpy((LPSTR)pOut, "DESKTOP", uOutSize); + dwReturn = strlen((LPSTR)pOut); + break; + + case PT_DRIVE: if(uOutSize < 1) + return 0; + if(PT_DESKTOP != pData->type) + return 0; + *(LPSTR)pOut = 0; + strncpy((LPSTR)pOut, "DRIVE", uOutSize); + dwReturn = strlen((LPSTR)pOut); + break; + + case PT_FOLDER: + case PT_VALUE: + case PT_TEXT: *(LPSTR)pOut = 0; + strncpy((LPSTR)pOut, pData->szText, uOutSize); + dwReturn = strlen((LPSTR)pOut); + break; + } + TRACE(shell,"-- (%p)->(%p:%s %lx)\n",this,pOut,(char*)pOut,dwReturn); + return dwReturn; +} + + +/************************************************************************** + * PidlMgr_GetDataPointer() + */ +LPPIDLDATA PidlMgr_GetDataPointer(LPPIDLMGR this,LPITEMIDLIST pidl) +{ if(!pidl) + { return NULL; + } + TRACE (shell,"(%p)->(%p)\n" ,this, pidl); + return (LPPIDLDATA)(pidl->mkid.abID); +} + +/************************************************************************** + * CPidlMgr_SeparatePathAndValue) + * Creates a separate path and value PIDL from a fully qualified PIDL. + */ +BOOL32 PidlMgr_SeparatePathAndValue(LPPIDLMGR this, + LPITEMIDLIST pidlFQ, LPITEMIDLIST *ppidlPath, LPITEMIDLIST *ppidlValue) +{ LPITEMIDLIST pidlTemp; + TRACE (shell,"(%p)->(pidl=%p pidl=%p pidl=%p)",this,pidlFQ,ppidlPath,ppidlValue); + if(!pidlFQ) + { return FALSE; + } + + *ppidlValue = PidlMgr_GetLastItem(this,pidlFQ); + + if(!PidlMgr_IsValue(this,*ppidlValue)) + { return FALSE; + } + + *ppidlValue = PidlMgr_Copy(this,*ppidlValue); + *ppidlPath = PidlMgr_Copy(this,pidlFQ); + + pidlTemp = PidlMgr_GetLastItem(this,*ppidlPath); + pidlTemp->mkid.cb = 0; + pidlTemp->mkid.abID[0] = 0; + + return TRUE; +} diff --git a/ole/nls/afk.nls b/ole/nls/afk.nls index d994f5742c5..b67bf442581 100644 --- a/ole/nls/afk.nls +++ b/ole/nls/afk.nls @@ -6,13 +6,13 @@ /* LOCVAL(LOCALE_ILANGUAGE,"") */ /* LOCVAL(LOCALE_SLANGUAGE,"") */ /* LOCVAL(LOCALE_SENGLANGUAGE,"") */ -/* LOCVAL(LOCALE_SABBREVLANGNAME,"") */ -/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +LOCVAL(LOCALE_SABBREVLANGNAME,"afk") +LOCVAL(LOCALE_SNATIVELANGNAME,"Afrikaans") /* LOCVAL(LOCALE_ICOUNTRY,"") */ /* LOCVAL(LOCALE_SCOUNTRY,"") */ /* LOCVAL(LOCALE_SENGCOUNTRY,"") */ -LOCVAL(LOCALE_SABBREVCTRYNAME,"afk") -/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +LOCVAL(LOCALE_SABBREVCTRYNAME,"ZAF") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Suid Afrika") /* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ /* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ /* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ @@ -25,12 +25,12 @@ LOCVAL(LOCALE_SABBREVCTRYNAME,"afk") /* LOCVAL(LOCALE_IDIGITS,"2") */ /* LOCVAL(LOCALE_ILZERO,"1") */ /* LOCVAL(LOCALE_INEGNUMBER) */ -/* LOCVAL(LOCALE_SNATIVEDIGITS) */ +LOCVAL(LOCALE_SNATIVEDIGITS,"0123456789") /* LOCVAL(LOCALE_SCURRENCY,"") */ /* LOCVAL(LOCALE_SINTLSYMBOL) */ /* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ /* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ -/* LOCVAL(LOCALE_SMONGROUPING) */ +LOCVAL(LOCALE_SMONGROUPING,"3;0") /* LOCVAL(LOCALE_ICURRDIGITS,"2") */ /* LOCVAL(LOCALE_IINTLCURRDIGITS) */ /* LOCVAL(LOCALE_ICURRENCY,"3") */ @@ -55,35 +55,35 @@ LOCVAL(LOCALE_SABBREVCTRYNAME,"afk") /* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ /* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ -/* LOCVAL(LOCALE_SDAYNAME1,"") */ -/* LOCVAL(LOCALE_SDAYNAME2,"") */ -/* LOCVAL(LOCALE_SDAYNAME3,"") */ -/* LOCVAL(LOCALE_SDAYNAME4,"") */ -/* LOCVAL(LOCALE_SDAYNAME5,"") */ -/* LOCVAL(LOCALE_SDAYNAME6,"") */ -/* LOCVAL(LOCALE_SDAYNAME7,"") */ +LOCVAL(LOCALE_SDAYNAME1,"Maandag") +LOCVAL(LOCALE_SDAYNAME2,"Dinsdag") +LOCVAL(LOCALE_SDAYNAME3,"Woensdag") +LOCVAL(LOCALE_SDAYNAME4,"Donderdag") +LOCVAL(LOCALE_SDAYNAME5,"Vrydag") +LOCVAL(LOCALE_SDAYNAME6,"Saterdag") +LOCVAL(LOCALE_SDAYNAME7,"Sondag") -/* LOCVAL(LOCALE_SABBREVDAYNAME1,"Ma") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME2,"Ti") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME3,"On") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME4,"To") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME6,"Lø") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME7,"Sø") */ +LOCVAL(LOCALE_SABBREVDAYNAME1,"Maan") +LOCVAL(LOCALE_SABBREVDAYNAME2,"Dins") +LOCVAL(LOCALE_SABBREVDAYNAME3,"Woen") +LOCVAL(LOCALE_SABBREVDAYNAME4,"Dond") +LOCVAL(LOCALE_SABBREVDAYNAME5,"Vry") +LOCVAL(LOCALE_SABBREVDAYNAME6,"Sat") +LOCVAL(LOCALE_SABBREVDAYNAME7,"Son") -/* LOCVAL(LOCALE_SMONTHNAME1,"") */ -/* LOCVAL(LOCALE_SMONTHNAME2,"") */ -/* LOCVAL(LOCALE_SMONTHNAME3,"") */ -/* LOCVAL(LOCALE_SMONTHNAME4,"") */ -/* LOCVAL(LOCALE_SMONTHNAME5,"") */ -/* LOCVAL(LOCALE_SMONTHNAME6,"") */ -/* LOCVAL(LOCALE_SMONTHNAME7,"") */ -/* LOCVAL(LOCALE_SMONTHNAME8,"") */ -/* LOCVAL(LOCALE_SMONTHNAME9,"") */ -/* LOCVAL(LOCALE_SMONTHNAME10,"") */ -/* LOCVAL(LOCALE_SMONTHNAME11,"") */ -/* LOCVAL(LOCALE_SMONTHNAME12,"") */ -/* LOCVAL(LOCALE_SMONTHNAME13,"") */ +LOCVAL(LOCALE_SMONTHNAME1,"Januarie") +LOCVAL(LOCALE_SMONTHNAME2,"Februarie") +LOCVAL(LOCALE_SMONTHNAME3,"Maart") +LOCVAL(LOCALE_SMONTHNAME4,"April") +LOCVAL(LOCALE_SMONTHNAME5,"Mei") +LOCVAL(LOCALE_SMONTHNAME6,"Junie") +LOCVAL(LOCALE_SMONTHNAME7,"Julie") +LOCVAL(LOCALE_SMONTHNAME8,"Augustus") +LOCVAL(LOCALE_SMONTHNAME9,"September") +LOCVAL(LOCALE_SMONTHNAME10,"Oktober") +LOCVAL(LOCALE_SMONTHNAME11,"November") +LOCVAL(LOCALE_SMONTHNAME12,"Desember") +LOCVAL(LOCALE_SMONTHNAME13,"") /* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ /* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ @@ -108,3 +108,4 @@ LOCVAL(LOCALE_SABBREVCTRYNAME,"afk") /* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ /* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ +/* Gregoriaanse kalender */ diff --git a/ole/nls/ara.nls b/ole/nls/ara.nls new file mode 100644 index 00000000000..a3ac9d4c66d --- /dev/null +++ b/ole/nls/ara.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Arabic (Saudi Arabia) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +/* LOCVAL(LOCALE_SENGLANGUAGE,"") */ +LOCVAL(LOCALE_SABBREVLANGNAME,"ara") +/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +/* LOCVAL(LOCALE_SENGCOUNTRY,"") */ +/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ +/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS,"0123456789") +/* LOCVAL(LOCALE_SCURRENCY,"") */ +LOCVAL(LOCALE_SINTLSYMBOL,"AED") +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +/* LOCVAL(LOCALE_SMONGROUPING) */ +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +/* LOCVAL(LOCALE_SDAYNAME1,"") */ +/* LOCVAL(LOCALE_SDAYNAME2,"") */ +/* LOCVAL(LOCALE_SDAYNAME3,"") */ +/* LOCVAL(LOCALE_SDAYNAME4,"") */ +/* LOCVAL(LOCALE_SDAYNAME5,"") */ +/* LOCVAL(LOCALE_SDAYNAME6,"") */ +/* LOCVAL(LOCALE_SDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* */ diff --git a/ole/nls/arb.nls b/ole/nls/arb.nls new file mode 100644 index 00000000000..5499d8ab126 --- /dev/null +++ b/ole/nls/arb.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Arabic (Lebanon) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +/* LOCVAL(LOCALE_SENGLANGUAGE,"") */ +LOCVAL(LOCALE_SABBREVLANGNAME,"arl") +/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +/* LOCVAL(LOCALE_SENGCOUNTRY,"") */ +/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ +/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS,"0123456789") +/* LOCVAL(LOCALE_SCURRENCY,"") */ +LOCVAL(LOCALE_SINTLSYMBOL,"AED") +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +/* LOCVAL(LOCALE_SMONGROUPING) */ +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +/* LOCVAL(LOCALE_SDAYNAME1,"") */ +/* LOCVAL(LOCALE_SDAYNAME2,"") */ +/* LOCVAL(LOCALE_SDAYNAME3,"") */ +/* LOCVAL(LOCALE_SDAYNAME4,"") */ +/* LOCVAL(LOCALE_SDAYNAME5,"") */ +/* LOCVAL(LOCALE_SDAYNAME6,"") */ +/* LOCVAL(LOCALE_SDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* */ diff --git a/ole/nls/are.nls b/ole/nls/are.nls new file mode 100644 index 00000000000..5fd14783666 --- /dev/null +++ b/ole/nls/are.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Arabic (Egypt) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +/* LOCVAL(LOCALE_SENGLANGUAGE,"") */ +LOCVAL(LOCALE_SABBREVLANGNAME,"are") +/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +/* LOCVAL(LOCALE_SENGCOUNTRY,"") */ +/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ +/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS,"0123456789") +/* LOCVAL(LOCALE_SCURRENCY,"") */ +LOCVAL(LOCALE_SINTLSYMBOL,"AED") +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +/* LOCVAL(LOCALE_SMONGROUPING) */ +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +/* LOCVAL(LOCALE_SDAYNAME1,"") */ +/* LOCVAL(LOCALE_SDAYNAME2,"") */ +/* LOCVAL(LOCALE_SDAYNAME3,"") */ +/* LOCVAL(LOCALE_SDAYNAME4,"") */ +/* LOCVAL(LOCALE_SDAYNAME5,"") */ +/* LOCVAL(LOCALE_SDAYNAME6,"") */ +/* LOCVAL(LOCALE_SDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* */ diff --git a/ole/nls/arg.nls b/ole/nls/arg.nls new file mode 100644 index 00000000000..a6aaf14f439 --- /dev/null +++ b/ole/nls/arg.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Arabic (Algeria) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +/* LOCVAL(LOCALE_SENGLANGUAGE,"") */ +LOCVAL(LOCALE_SABBREVLANGNAME,"ars") +/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +/* LOCVAL(LOCALE_SENGCOUNTRY,"") */ +/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ +/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS,"0123456789") +/* LOCVAL(LOCALE_SCURRENCY,"") */ +LOCVAL(LOCALE_SINTLSYMBOL,"AED") +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +/* LOCVAL(LOCALE_SMONGROUPING) */ +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +/* LOCVAL(LOCALE_SDAYNAME1,"") */ +/* LOCVAL(LOCALE_SDAYNAME2,"") */ +/* LOCVAL(LOCALE_SDAYNAME3,"") */ +/* LOCVAL(LOCALE_SDAYNAME4,"") */ +/* LOCVAL(LOCALE_SDAYNAME5,"") */ +/* LOCVAL(LOCALE_SDAYNAME6,"") */ +/* LOCVAL(LOCALE_SDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* */ diff --git a/ole/nls/ari.nls b/ole/nls/ari.nls new file mode 100644 index 00000000000..f77c6bb3bc0 --- /dev/null +++ b/ole/nls/ari.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Arabic + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +/* LOCVAL(LOCALE_SENGLANGUAGE,"") */ +LOCVAL(LOCALE_SABBREVLANGNAME,"ari") +/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +/* LOCVAL(LOCALE_SENGCOUNTRY,"") */ +/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ +/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +/* LOCVAL(LOCALE_SNATIVEDIGITS) */ +/* LOCVAL(LOCALE_SCURRENCY,"") */ +/* LOCVAL(LOCALE_SINTLSYMBOL) */ +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +/* LOCVAL(LOCALE_SMONGROUPING) */ +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +/* LOCVAL(LOCALE_SDAYNAME1,"") */ +/* LOCVAL(LOCALE_SDAYNAME2,"") */ +/* LOCVAL(LOCALE_SDAYNAME3,"") */ +/* LOCVAL(LOCALE_SDAYNAME4,"") */ +/* LOCVAL(LOCALE_SDAYNAME5,"") */ +/* LOCVAL(LOCALE_SDAYNAME6,"") */ +/* LOCVAL(LOCALE_SDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* */ diff --git a/ole/nls/ark.nls b/ole/nls/ark.nls new file mode 100644 index 00000000000..f265b493c66 --- /dev/null +++ b/ole/nls/ark.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Arabic (Kuwait) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +/* LOCVAL(LOCALE_SENGLANGUAGE,"") */ +LOCVAL(LOCALE_SABBREVLANGNAME,"ark") +/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +/* LOCVAL(LOCALE_SENGCOUNTRY,"") */ +LOCVAL(LOCALE_SABBREVCTRYNAME,"KWT") +/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS,"0123456789") +/* LOCVAL(LOCALE_SCURRENCY,"") */ +LOCVAL(LOCALE_SINTLSYMBOL,"KWD") +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +/* LOCVAL(LOCALE_SMONGROUPING) */ +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +/* LOCVAL(LOCALE_SDAYNAME1,"") */ +/* LOCVAL(LOCALE_SDAYNAME2,"") */ +/* LOCVAL(LOCALE_SDAYNAME3,"") */ +/* LOCVAL(LOCALE_SDAYNAME4,"") */ +/* LOCVAL(LOCALE_SDAYNAME5,"") */ +/* LOCVAL(LOCALE_SDAYNAME6,"") */ +/* LOCVAL(LOCALE_SDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* */ diff --git a/ole/nls/arm.nls b/ole/nls/arm.nls new file mode 100644 index 00000000000..45f17d2c99f --- /dev/null +++ b/ole/nls/arm.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Arabic (Marocco) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +/* LOCVAL(LOCALE_SENGLANGUAGE,"") */ +LOCVAL(LOCALE_SABBREVLANGNAME,"ars") +/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +/* LOCVAL(LOCALE_SENGCOUNTRY,"") */ +/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ +/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS,"0123456789") +/* LOCVAL(LOCALE_SCURRENCY,"") */ +LOCVAL(LOCALE_SINTLSYMBOL,"AED") +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +/* LOCVAL(LOCALE_SMONGROUPING) */ +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +/* LOCVAL(LOCALE_SDAYNAME1,"") */ +/* LOCVAL(LOCALE_SDAYNAME2,"") */ +/* LOCVAL(LOCALE_SDAYNAME3,"") */ +/* LOCVAL(LOCALE_SDAYNAME4,"") */ +/* LOCVAL(LOCALE_SDAYNAME5,"") */ +/* LOCVAL(LOCALE_SDAYNAME6,"") */ +/* LOCVAL(LOCALE_SDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* */ diff --git a/ole/nls/aro.nls b/ole/nls/aro.nls new file mode 100644 index 00000000000..eeaf67de9ef --- /dev/null +++ b/ole/nls/aro.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Arabic (Oman) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +/* LOCVAL(LOCALE_SENGLANGUAGE,"") */ +LOCVAL(LOCALE_SABBREVLANGNAME,"ars") +/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +/* LOCVAL(LOCALE_SENGCOUNTRY,"") */ +/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ +/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS,"0123456789") +/* LOCVAL(LOCALE_SCURRENCY,"") */ +LOCVAL(LOCALE_SINTLSYMBOL,"AED") +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +/* LOCVAL(LOCALE_SMONGROUPING) */ +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +/* LOCVAL(LOCALE_SDAYNAME1,"") */ +/* LOCVAL(LOCALE_SDAYNAME2,"") */ +/* LOCVAL(LOCALE_SDAYNAME3,"") */ +/* LOCVAL(LOCALE_SDAYNAME4,"") */ +/* LOCVAL(LOCALE_SDAYNAME5,"") */ +/* LOCVAL(LOCALE_SDAYNAME6,"") */ +/* LOCVAL(LOCALE_SDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* */ diff --git a/ole/nls/arq.nls b/ole/nls/arq.nls new file mode 100644 index 00000000000..5e5020c761e --- /dev/null +++ b/ole/nls/arq.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Arabic (Quatar) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +/* LOCVAL(LOCALE_SENGLANGUAGE,"") */ +LOCVAL(LOCALE_SABBREVLANGNAME,"arq") +/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +/* LOCVAL(LOCALE_SENGCOUNTRY,"") */ +/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ +/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +/* LOCVAL(LOCALE_SNATIVEDIGITS) */ +/* LOCVAL(LOCALE_SCURRENCY,"") */ +/* LOCVAL(LOCALE_SINTLSYMBOL) */ +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +/* LOCVAL(LOCALE_SMONGROUPING) */ +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +/* LOCVAL(LOCALE_SDAYNAME1,"") */ +/* LOCVAL(LOCALE_SDAYNAME2,"") */ +/* LOCVAL(LOCALE_SDAYNAME3,"") */ +/* LOCVAL(LOCALE_SDAYNAME4,"") */ +/* LOCVAL(LOCALE_SDAYNAME5,"") */ +/* LOCVAL(LOCALE_SDAYNAME6,"") */ +/* LOCVAL(LOCALE_SDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* */ diff --git a/ole/nls/ars.nls b/ole/nls/ars.nls new file mode 100644 index 00000000000..4fcbb353394 --- /dev/null +++ b/ole/nls/ars.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Arabic (Syria) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +/* LOCVAL(LOCALE_SENGLANGUAGE,"") */ +LOCVAL(LOCALE_SABBREVLANGNAME,"ars") +/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +/* LOCVAL(LOCALE_SENGCOUNTRY,"") */ +/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ +/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS,"0123456789") +/* LOCVAL(LOCALE_SCURRENCY,"") */ +LOCVAL(LOCALE_SINTLSYMBOL,"AED") +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +/* LOCVAL(LOCALE_SMONGROUPING) */ +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +/* LOCVAL(LOCALE_SDAYNAME1,"") */ +/* LOCVAL(LOCALE_SDAYNAME2,"") */ +/* LOCVAL(LOCALE_SDAYNAME3,"") */ +/* LOCVAL(LOCALE_SDAYNAME4,"") */ +/* LOCVAL(LOCALE_SDAYNAME5,"") */ +/* LOCVAL(LOCALE_SDAYNAME6,"") */ +/* LOCVAL(LOCALE_SDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* */ diff --git a/ole/nls/art.nls b/ole/nls/art.nls new file mode 100644 index 00000000000..73eb885b286 --- /dev/null +++ b/ole/nls/art.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Arabic (Tunesia) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +/* LOCVAL(LOCALE_SENGLANGUAGE,"") */ +LOCVAL(LOCALE_SABBREVLANGNAME,"art") +/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +/* LOCVAL(LOCALE_SENGCOUNTRY,"") */ +LOCVAL(LOCALE_SABBREVCTRYNAME,"TUN") +/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS,"0123456789") +/* LOCVAL(LOCALE_SCURRENCY,"") */ +LOCVAL(LOCALE_SINTLSYMBOL,"AED") +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +/* LOCVAL(LOCALE_SMONGROUPING) */ +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +/* LOCVAL(LOCALE_SDAYNAME1,"") */ +/* LOCVAL(LOCALE_SDAYNAME2,"") */ +/* LOCVAL(LOCALE_SDAYNAME3,"") */ +/* LOCVAL(LOCALE_SDAYNAME4,"") */ +/* LOCVAL(LOCALE_SDAYNAME5,"") */ +/* LOCVAL(LOCALE_SDAYNAME6,"") */ +/* LOCVAL(LOCALE_SDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* */ diff --git a/ole/nls/aru.nls b/ole/nls/aru.nls new file mode 100644 index 00000000000..db2c50e019b --- /dev/null +++ b/ole/nls/aru.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Arabic (aru) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +/* LOCVAL(LOCALE_SENGLANGUAGE,"") */ +LOCVAL(LOCALE_SABBREVLANGNAME,"aru") +/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +/* LOCVAL(LOCALE_SENGCOUNTRY,"") */ +/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ +/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS,"0123456789") +/* LOCVAL(LOCALE_SCURRENCY,"") */ +LOCVAL(LOCALE_SINTLSYMBOL,"AED") +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +/* LOCVAL(LOCALE_SMONGROUPING) */ +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +/* LOCVAL(LOCALE_SDAYNAME1,"") */ +/* LOCVAL(LOCALE_SDAYNAME2,"") */ +/* LOCVAL(LOCALE_SDAYNAME3,"") */ +/* LOCVAL(LOCALE_SDAYNAME4,"") */ +/* LOCVAL(LOCALE_SDAYNAME5,"") */ +/* LOCVAL(LOCALE_SDAYNAME6,"") */ +/* LOCVAL(LOCALE_SDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* */ diff --git a/ole/nls/bel.nls b/ole/nls/bel.nls index 435edcb07f0..328c2abd82a 100644 --- a/ole/nls/bel.nls +++ b/ole/nls/bel.nls @@ -63,13 +63,13 @@ LOCVAL(LOCALE_SABBREVCTRYNAME,"bel") /* LOCVAL(LOCALE_SDAYNAME6,"") */ /* LOCVAL(LOCALE_SDAYNAME7,"") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME1,"Ma") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME2,"Ti") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME3,"On") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME4,"To") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME6,"Lø") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME7,"Sø") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ /* LOCVAL(LOCALE_SMONTHNAME1,"") */ /* LOCVAL(LOCALE_SMONTHNAME2,"") */ diff --git a/ole/nls/bgr.nls b/ole/nls/bgr.nls index f423cac3812..aaaad3b1f2a 100644 --- a/ole/nls/bgr.nls +++ b/ole/nls/bgr.nls @@ -25,7 +25,7 @@ LOCVAL(LOCALE_SABBREVCTRYNAME,"bgr") /* LOCVAL(LOCALE_IDIGITS,"2") */ /* LOCVAL(LOCALE_ILZERO,"1") */ /* LOCVAL(LOCALE_INEGNUMBER) */ -/* LOCVAL(LOCALE_SNATIVEDIGITS) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") /* LOCVAL(LOCALE_SCURRENCY,"") */ /* LOCVAL(LOCALE_SINTLSYMBOL) */ /* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ @@ -63,13 +63,13 @@ LOCVAL(LOCALE_SABBREVCTRYNAME,"bgr") /* LOCVAL(LOCALE_SDAYNAME6,"") */ /* LOCVAL(LOCALE_SDAYNAME7,"") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME1,"Ma") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME2,"Ti") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME3,"On") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME4,"To") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME6,"Lø") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME7,"Sø") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ /* LOCVAL(LOCALE_SMONTHNAME1,"") */ /* LOCVAL(LOCALE_SMONTHNAME2,"") */ diff --git a/ole/nls/cat.nls b/ole/nls/cat.nls index 06b6a50a21b..f5537becd96 100644 --- a/ole/nls/cat.nls +++ b/ole/nls/cat.nls @@ -4,41 +4,41 @@ */ /* LOCVAL(LOCALE_ILANGUAGE,"") */ -/* LOCVAL(LOCALE_SLANGUAGE,"") */ -LOCVAL(LOCALE_SENGLANGUAGE,"Spanish") -LOCVAL(LOCALE_SABBREVLANGNAME,"esp") -/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +LOCVAL(LOCALE_SLANGUAGE,"Català") +LOCVAL(LOCALE_SENGLANGUAGE,"Catalan") +LOCVAL(LOCALE_SABBREVLANGNAME,"cat") +LOCVAL(LOCALE_SNATIVELANGNAME,"Català") /* LOCVAL(LOCALE_ICOUNTRY,"") */ -/* LOCVAL(LOCALE_SCOUNTRY,"") */ +LOCVAL(LOCALE_SCOUNTRY,"Espanya") LOCVAL(LOCALE_SENGCOUNTRY,"Spain") -LOCVAL(LOCALE_SABBREVCTRYNAME,"cat") -/* LOCVAL(LOCALE_SNATIVECTRYNAME,"Espa€a") */ +LOCVAL(LOCALE_SABBREVCTRYNAME,"Es") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Espanya") /* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ /* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ -/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +LOCVAL(LOCALE_IDEFAULTCODEPAGE,"850") /* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ /* LOCVAL(LOCALE_SLIST,"") */ /* LOCVAL(LOCALE_IMEASURE,"") */ -/* LOCVAL(LOCALE_SDECIMAL,"") */ -/* LOCVAL(LOCALE_STHOUSAND,"") */ -/* LOCVAL(LOCALE_SGROUPING) */ +LOCVAL(LOCALE_SDECIMAL,",") +LOCVAL(LOCALE_STHOUSAND,"") +LOCVAL(LOCALE_SGROUPING,"0;0") /* LOCVAL(LOCALE_IDIGITS,"2") */ /* LOCVAL(LOCALE_ILZERO,"1") */ /* LOCVAL(LOCALE_INEGNUMBER) */ LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") LOCVAL(LOCALE_SCURRENCY,"Pts") LOCVAL(LOCALE_SINTLSYMBOL, "ESP") -/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ -/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ -/* LOCVAL(LOCALE_SMONGROUPING) */ +LOCVAL(LOCALE_SMONDECIMALSEP,",") +LOCVAL(LOCALE_SMONTHOUSANDSEP,".") +LOCVAL(LOCALE_SMONGROUPING,"3;0") /* LOCVAL(LOCALE_ICURRDIGITS,"2") */ /* LOCVAL(LOCALE_IINTLCURRDIGITS) */ /* LOCVAL(LOCALE_ICURRENCY,"3") */ /* LOCVAL(LOCALE_INEGCURR,"8") */ -/* LOCVAL(LOCALE_SDATE,".") */ -/* LOCVAL(LOCALE_STIME,":") */ -/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ -/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +LOCVAL(LOCALE_SDATE,"/") +LOCVAL(LOCALE_STIME,":") +LOCVAL(LOCALE_SSHORTDATE,"dd/MM/yyyy") +LOCVAL(LOCALE_SLONGDATE,"ddd d MMMM yyyy") */ /* LOCVAL(LOCALE_STIMEFORMAT) */ /* LOCVAL(LOCALE_IDATE,"1") */ /* LOCVAL(LOCALE_ILDATE) */ @@ -48,59 +48,59 @@ LOCVAL(LOCALE_SINTLSYMBOL, "ESP") /* LOCVAL(LOCALE_ITLZERO,"1") /* LOCVAL(LOCALE_IDAYLZERO) */ /* LOCVAL(LOCALE_IMONLZERO) */ -/* LOCVAL(LOCALE_S1159, "") */ -/* LOCVAL(LOCALE_S2359, "") */ +LOCVAL(LOCALE_S1159, "") +LOCVAL(LOCALE_S2359, "") /* LOCVAL(LOCALE_ICALENDARTYPE) */ /* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ /* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ /* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ -LOCVAL(LOCALE_SDAYNAME1,"lunes") -LOCVAL(LOCALE_SDAYNAME2,"martes") -LOCVAL(LOCALE_SDAYNAME3,"mi?rcoles") -LOCVAL(LOCALE_SDAYNAME4,"jueves") -LOCVAL(LOCALE_SDAYNAME5,"viernes") -LOCVAL(LOCALE_SDAYNAME6,"s?abado") -LOCVAL(LOCALE_SDAYNAME7,"domingo") +LOCVAL(LOCALE_SDAYNAME1,"Dilluns") +LOCVAL(LOCALE_SDAYNAME2,"Dimarts") +LOCVAL(LOCALE_SDAYNAME3,"Dimecres") +LOCVAL(LOCALE_SDAYNAME4,"Dijous") +LOCVAL(LOCALE_SDAYNAME5,"Divendres") +LOCVAL(LOCALE_SDAYNAME6,"Dissabte") +LOCVAL(LOCALE_SDAYNAME7,"Diumenge") -/* LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME3,"mi?") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ +LOCVAL(LOCALE_SABBREVDAYNAME1,"Dl") +LOCVAL(LOCALE_SABBREVDAYNAME2,"Dt") +LOCVAL(LOCALE_SABBREVDAYNAME3,"Dc") +LOCVAL(LOCALE_SABBREVDAYNAME4,"Dj") +LOCVAL(LOCALE_SABBREVDAYNAME5,"Dv") +LOCVAL(LOCALE_SABBREVDAYNAME6,"Ds") +LOCVAL(LOCALE_SABBREVDAYNAME7,"Dg") -/* LOCVAL(LOCALE_SMONTHNAME1,"") */ -LOCVAL(LOCALE_SMONTHNAME2,"febrero") -LOCVAL(LOCALE_SMONTHNAME3,"marzo") -LOCVAL(LOCALE_SMONTHNAME4,"abril") -LOCVAL(LOCALE_SMONTHNAME5,"mayo") -LOCVAL(LOCALE_SMONTHNAME6,"junio") -LOCVAL(LOCALE_SMONTHNAME7,"julio") -LOCVAL(LOCALE_SMONTHNAME8,"agosto") -LOCVAL(LOCALE_SMONTHNAME9,"septiembre") -LOCVAL(LOCALE_SMONTHNAME10,"octubre") -LOCVAL(LOCALE_SMONTHNAME11,"noviembre") -LOCVAL(LOCALE_SMONTHNAME12,"diciembre") +LOCVAL(LOCALE_SMONTHNAME1,"Gener") +LOCVAL(LOCALE_SMONTHNAME2,"Febrer") +LOCVAL(LOCALE_SMONTHNAME3,"Març") +LOCVAL(LOCALE_SMONTHNAME4,"Abril") +LOCVAL(LOCALE_SMONTHNAME5,"Maig") +LOCVAL(LOCALE_SMONTHNAME6,"Juny") +LOCVAL(LOCALE_SMONTHNAME7,"Juliol") +LOCVAL(LOCALE_SMONTHNAME8,"Agost") +LOCVAL(LOCALE_SMONTHNAME9,"Setembre") +LOCVAL(LOCALE_SMONTHNAME10,"Octubre") +LOCVAL(LOCALE_SMONTHNAME11,"Novembre") +LOCVAL(LOCALE_SMONTHNAME12,"Desembre") LOCVAL(LOCALE_SMONTHNAME13,"") -LOCVAL(LOCALE_SABBREVMONTHNAME1,"ene") -LOCVAL(LOCALE_SABBREVMONTHNAME2,"feb") -LOCVAL(LOCALE_SABBREVMONTHNAME3,"mar") -LOCVAL(LOCALE_SABBREVMONTHNAME4,"abr") -LOCVAL(LOCALE_SABBREVMONTHNAME5,"may") -LOCVAL(LOCALE_SABBREVMONTHNAME6,"jun") -LOCVAL(LOCALE_SABBREVMONTHNAME7,"jul") -LOCVAL(LOCALE_SABBREVMONTHNAME8,"ago") -LOCVAL(LOCALE_SABBREVMONTHNAME9,"sep") -LOCVAL(LOCALE_SABBREVMONTHNAME10,"oct") -LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") -LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic") +LOCVAL(LOCALE_SABBREVMONTHNAME1,"Gn") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"Fb") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"Mç") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"Ab") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"Mg") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"Jn") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"Jl") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"Ag") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"St") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"Oc") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"Nv") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"Ds") LOCVAL(LOCALE_SABBREVMONTHNAME13,"") -/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ -/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +LOCVAL(LOCALE_SPOSITIVESIGN, "") +LOCVAL(LOCALE_SNEGATIVESIGN, "-") /* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ /* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ /* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ diff --git a/ole/nls/cht.nls b/ole/nls/cht.nls new file mode 100644 index 00000000000..9dafd4d6505 --- /dev/null +++ b/ole/nls/cht.nls @@ -0,0 +1,110 @@ +/* + * OLE2NLS library + * Chinese (Taiwan) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +/* LOCVAL(LOCALE_SENGLANGUAGE,"Chinese (Taiwan)") */ +LOCVAL(LOCALE_SABBREVLANGNAME,"cht") +/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +/* LOCVAL(LOCALE_SENGCOUNTRY,"") */ +/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ +/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +/* LOCVAL(LOCALE_SNATIVEDIGITS) */ +/* LOCVAL(LOCALE_SCURRENCY,"") */ +LOCVAL(LOCALE_SINTLSYMBOL, "TWD") +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +/* LOCVAL(LOCALE_SMONGROUPING) */ +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +/* LOCVAL(LOCALE_SDAYNAME1,"") */ +/* LOCVAL(LOCALE_SDAYNAME2,"") */ +/* LOCVAL(LOCALE_SDAYNAME3,"") */ +/* LOCVAL(LOCALE_SDAYNAME4,"") */ +/* LOCVAL(LOCALE_SDAYNAME5,"") */ +/* LOCVAL(LOCALE_SDAYNAME6,"") */ +/* LOCVAL(LOCALE_SDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + diff --git a/ole/nls/cze.nls b/ole/nls/cze.nls index 6d63603e7cc..806703f8ecf 100644 --- a/ole/nls/cze.nls +++ b/ole/nls/cze.nls @@ -5,17 +5,18 @@ /* LOCVAL(LOCALE_ILANGUAGE,"") */ /* LOCVAL(LOCALE_SLANGUAGE,"") */ -/* LOCVAL(LOCALE_SENGLANGUAGE,"Czech Republic") */ +LOCVAL(LOCALE_SENGLANGUAGE,"Czech Republic") LOCVAL(LOCALE_SABBREVLANGNAME,"cze") -/* LOCVAL(LOCALE_SNATIVELANGNAME,"?zech republika") */ + +LOCVAL(LOCALE_SNATIVELANGNAME,"Èeský jazyk") /* LOCVAL(LOCALE_ICOUNTRY,"") */ -/* LOCVAL(LOCALE_SCOUNTRY,"") */ -/* LOCVAL(LOCALE_SENGCOUNTRY,"") */ -LOCVAL(LOCALE_SABBREVCTRYNAME,"cze") -/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +LOCVAL(LOCALE_SCOUNTRY,"Èeská Republika") +LOCVAL(LOCALE_SENGCOUNTRY,"Czech Republic") +LOCVAL(LOCALE_SABBREVCTRYNAME,"Cz") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Èeská Republika") /* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ /* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ -/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +LOCVAL(LOCALE_IDEFAULTCODEPAGE,"895") /* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ /* LOCVAL(LOCALE_SLIST,"") */ /* LOCVAL(LOCALE_IMEASURE,"") */ @@ -25,20 +26,20 @@ LOCVAL(LOCALE_SABBREVCTRYNAME,"cze") /* LOCVAL(LOCALE_IDIGITS,"2") */ /* LOCVAL(LOCALE_ILZERO,"1") */ /* LOCVAL(LOCALE_INEGNUMBER) */ -/* LOCVAL(LOCALE_SNATIVEDIGITS) */ -/* LOCVAL(LOCALE_SCURRENCY,"") */ -/* LOCVAL(LOCALE_SINTLSYMBOL) */ -/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ -/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ -/* LOCVAL(LOCALE_SMONGROUPING) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +LOCVAL(LOCALE_SCURRENCY,"Kè") +LOCVAL(LOCALE_SINTLSYMBOL,"CZK") +LOCVAL(LOCALE_SMONDECIMALSEP,",") +LOCVAL(LOCALE_SMONTHOUSANDSEP," ") +LOCVAL(LOCALE_SMONGROUPING,"3;3") /* LOCVAL(LOCALE_ICURRDIGITS,"2") */ /* LOCVAL(LOCALE_IINTLCURRDIGITS) */ /* LOCVAL(LOCALE_ICURRENCY,"3") */ /* LOCVAL(LOCALE_INEGCURR,"8") */ -/* LOCVAL(LOCALE_SDATE,".") */ -/* LOCVAL(LOCALE_STIME,":") */ -/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ -/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +LOCVAL(LOCALE_SDATE,".") +LOCVAL(LOCALE_STIME,":") +LOCVAL(LOCALE_SSHORTDATE,"dd.MM.yyyy") +LOCVAL(LOCALE_SLONGDATE,"ddd d. MMMM yyyy") /* LOCVAL(LOCALE_STIMEFORMAT) */ /* LOCVAL(LOCALE_IDATE,"1") */ /* LOCVAL(LOCALE_ILDATE) */ @@ -48,59 +49,59 @@ LOCVAL(LOCALE_SABBREVCTRYNAME,"cze") /* LOCVAL(LOCALE_ITLZERO,"1") /* LOCVAL(LOCALE_IDAYLZERO) */ /* LOCVAL(LOCALE_IMONLZERO) */ -/* LOCVAL(LOCALE_S1159, "") */ -/* LOCVAL(LOCALE_S2359, "") */ +LOCVAL(LOCALE_S1159, "") +LOCVAL(LOCALE_S2359, "") /* LOCVAL(LOCALE_ICALENDARTYPE) */ /* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ /* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ /* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ -/* LOCVAL(LOCALE_SDAYNAME1,"") */ -/* LOCVAL(LOCALE_SDAYNAME2,"") */ -/* LOCVAL(LOCALE_SDAYNAME3,"") */ -/* LOCVAL(LOCALE_SDAYNAME4,"") */ -/* LOCVAL(LOCALE_SDAYNAME5,"") */ -/* LOCVAL(LOCALE_SDAYNAME6,"") */ -/* LOCVAL(LOCALE_SDAYNAME7,"") */ +LOCVAL(LOCALE_SDAYNAME1,"Ponïelí") +LOCVAL(LOCALE_SDAYNAME2,"Úterý") +LOCVAL(LOCALE_SDAYNAME3,"Støeda") +LOCVAL(LOCALE_SDAYNAME4,"Ètvrtek") +LOCVAL(LOCALE_SDAYNAME5,"Pátek") +LOCVAL(LOCALE_SDAYNAME6,"Sobota") +LOCVAL(LOCALE_SDAYNAME7,"Nedìle") -/* LOCVAL(LOCALE_SABBREVDAYNAME1,"Ma") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME2,"Ti") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME3,"On") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME4,"To") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME6,"Lø") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME7,"Sø") */ +LOCVAL(LOCALE_SABBREVDAYNAME1,"Po") +LOCVAL(LOCALE_SABBREVDAYNAME2,"Út") +LOCVAL(LOCALE_SABBREVDAYNAME3,"St") +LOCVAL(LOCALE_SABBREVDAYNAME4,"Èt") +LOCVAL(LOCALE_SABBREVDAYNAME5,"Pá") +LOCVAL(LOCALE_SABBREVDAYNAME6,"So") +LOCVAL(LOCALE_SABBREVDAYNAME7,"Ne") -/* LOCVAL(LOCALE_SMONTHNAME1,"") */ -/* LOCVAL(LOCALE_SMONTHNAME2,"") */ -/* LOCVAL(LOCALE_SMONTHNAME3,"") */ -/* LOCVAL(LOCALE_SMONTHNAME4,"") */ -/* LOCVAL(LOCALE_SMONTHNAME5,"") */ -/* LOCVAL(LOCALE_SMONTHNAME6,"") */ -/* LOCVAL(LOCALE_SMONTHNAME7,"") */ -/* LOCVAL(LOCALE_SMONTHNAME8,"") */ -/* LOCVAL(LOCALE_SMONTHNAME9,"") */ -/* LOCVAL(LOCALE_SMONTHNAME10,"") */ -/* LOCVAL(LOCALE_SMONTHNAME11,"") */ -/* LOCVAL(LOCALE_SMONTHNAME12,"") */ +LOCVAL(LOCALE_SMONTHNAME1,"Leden") +LOCVAL(LOCALE_SMONTHNAME2,"Únor") +LOCVAL(LOCALE_SMONTHNAME3,"Bøezen") +LOCVAL(LOCALE_SMONTHNAME4,"Duben") +LOCVAL(LOCALE_SMONTHNAME5,"Kvìten") +LOCVAL(LOCALE_SMONTHNAME6,"Èerven") +LOCVAL(LOCALE_SMONTHNAME7,"Èervenec") +LOCVAL(LOCALE_SMONTHNAME8,"Srpen") +LOCVAL(LOCALE_SMONTHNAME9,"Záøí") +LOCVAL(LOCALE_SMONTHNAME10,"Øíjen") +LOCVAL(LOCALE_SMONTHNAME11,"Listopad") +LOCVAL(LOCALE_SMONTHNAME12,"Prosinec") /* LOCVAL(LOCALE_SMONTHNAME13,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ +LOCVAL(LOCALE_SABBREVMONTHNAME1,"Led") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"Úno") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"Bøe") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"Dub") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"Kvì") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"Èer") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"Ènc") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"Srp") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"Záø") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"Øíj") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"Lis") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"Pro") /* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ -/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ -/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +LOCVAL(LOCALE_SPOSITIVESIGN, "") +LOCVAL(LOCALE_SNEGATIVESIGN, "-") /* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ /* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ /* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ diff --git a/ole/nls/dan.nls b/ole/nls/dan.nls new file mode 100644 index 00000000000..6baefff7701 --- /dev/null +++ b/ole/nls/dan.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Denmark + */ + +LOCVAL(LOCALE_ILANGUAGE,"6") +LOCVAL(LOCALE_SLANGUAGE,"Dansk") +LOCVAL(LOCALE_SENGLANGUAGE,"Danish") +LOCVAL(LOCALE_SABBREVLANGNAME,"dan") +LOCVAL(LOCALE_SNATIVELANGNAME,"Dansk") +LOCVAL(LOCALE_ICOUNTRY,"45") +LOCVAL(LOCALE_SCOUNTRY,"Danmark") +LOCVAL(LOCALE_SENGCOUNTRY,"Denmark") +LOCVAL(LOCALE_SABBREVCTRYNAME,"DK") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Danmark") +LOCVAL(LOCALE_IDEFAULTLANGUAGE,"6") +LOCVAL(LOCALE_IDEFAULTCOUNTRY,"45") +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +LOCVAL(LOCALE_SLIST,";") +LOCVAL(LOCALE_IMEASURE,"0") +LOCVAL(LOCALE_SDECIMAL,",") +LOCVAL(LOCALE_STHOUSAND,".") +/* LOCVAL(LOCALE_SGROUPING) */ +LOCVAL(LOCALE_IDIGITS,"2") +LOCVAL(LOCALE_ILZERO,"1") +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +LOCVAL(LOCALE_SCURRENCY,"kr") +LOCVAL(LOCALE_SINTLSYMBOL,"DKK") +LOCVAL(LOCALE_SMONDECIMALSEP,",") +LOCVAL(LOCALE_SMONTHOUSANDSEP,".") +LOCVAL(LOCALE_SMONGROUPING, "3;0") +LOCVAL(LOCALE_ICURRDIGITS,"2") +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +LOCVAL(LOCALE_ICURRENCY,"3") +LOCVAL(LOCALE_INEGCURR,"8") +LOCVAL(LOCALE_SDATE,".") +LOCVAL(LOCALE_STIME,":") +LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") +LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") +/* LOCVAL(LOCALE_STIMEFORMAT) */ +LOCVAL(LOCALE_IDATE,"1") +/* LOCVAL(LOCALE_ILDATE) */ +LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +LOCVAL(LOCALE_S1159, "") +LOCVAL(LOCALE_S2359, "") +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +LOCVAL(LOCALE_SDAYNAME1,"mandag") +LOCVAL(LOCALE_SDAYNAME2,"tirsdag") +LOCVAL(LOCALE_SDAYNAME3,"onsdag") +LOCVAL(LOCALE_SDAYNAME4,"torsdag") +LOCVAL(LOCALE_SDAYNAME5,"fredag") +LOCVAL(LOCALE_SDAYNAME6,"lørdag") +LOCVAL(LOCALE_SDAYNAME7,"søndag") + +LOCVAL(LOCALE_SABBREVDAYNAME1,"ma") +LOCVAL(LOCALE_SABBREVDAYNAME2,"ti") +LOCVAL(LOCALE_SABBREVDAYNAME3,"on") +LOCVAL(LOCALE_SABBREVDAYNAME4,"to") +LOCVAL(LOCALE_SABBREVDAYNAME5,"fr") +LOCVAL(LOCALE_SABBREVDAYNAME6,"lø") +LOCVAL(LOCALE_SABBREVDAYNAME7,"sø") + +LOCVAL(LOCALE_SMONTHNAME1,"januar") +LOCVAL(LOCALE_SMONTHNAME2,"februar") +LOCVAL(LOCALE_SMONTHNAME3,"marts") +LOCVAL(LOCALE_SMONTHNAME4,"april") +LOCVAL(LOCALE_SMONTHNAME5,"maj") +LOCVAL(LOCALE_SMONTHNAME6,"juni") +LOCVAL(LOCALE_SMONTHNAME7,"juli") +LOCVAL(LOCALE_SMONTHNAME8,"august") +LOCVAL(LOCALE_SMONTHNAME9,"september") +LOCVAL(LOCALE_SMONTHNAME10,"oktober") +LOCVAL(LOCALE_SMONTHNAME11,"november") +LOCVAL(LOCALE_SMONTHNAME12,"december") +LOCVAL(LOCALE_SMONTHNAME13,"") + +LOCVAL(LOCALE_SABBREVMONTHNAME1,"jan") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"feb") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"mar") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"apr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"maj") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"jun") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"jul") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"aug") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"okt") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"dec") +LOCVAL(LOCALE_SABBREVMONTHNAME13,"") + +LOCVAL(LOCALE_SPOSITIVESIGN, "") +LOCVAL(LOCALE_SNEGATIVESIGN, "-") +LOCVAL(LOCALE_IPOSSIGNPOSN, "3") +LOCVAL(LOCALE_INEGSIGNPOSN, "3") +LOCVAL(LOCALE_IPOSSYMPRECEDES, "1") +LOCVAL(LOCALE_IPOSSEPBYSPACE, "0") +LOCVAL(LOCALE_INEGSYMPRECEDES, "1") +LOCVAL(LOCALE_INEGSEPBYSPACE, "0") + +/* Den gregorianske Kalender */ diff --git a/ole/nls/dea.nls b/ole/nls/dea.nls index dab500f2eb7..bac90de3551 100644 --- a/ole/nls/dea.nls +++ b/ole/nls/dea.nls @@ -30,7 +30,7 @@ LOCVAL(LOCALE_SCURRENCY,"S") LOCVAL(LOCALE_SINTLSYMBOL,"ATS") /* LOCVAL(LOCALE_SMONDECIMALSEP) */ /* LOCVAL(LOCALE_SMONTHOUSANDSEP) */ -/* LOCVAL(LOCALE_SMONGROUPING) */ +LOCVAL(LOCALE_SMONGROUPING, "3;0") LOCVAL(LOCALE_ICURRDIGITS,"2") /* LOCVAL(LOCALE_IINTLCURRDIGITS) */ @@ -72,7 +72,7 @@ LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr") LOCVAL(LOCALE_SABBREVDAYNAME6,"Sa") LOCVAL(LOCALE_SABBREVDAYNAME7,"So") -LOCVAL(LOCALE_SMONTHNAME1,"Januar") +LOCVAL(LOCALE_SMONTHNAME1,"J€nner") LOCVAL(LOCALE_SMONTHNAME2,"Februar") LOCVAL(LOCALE_SMONTHNAME3,"März") LOCVAL(LOCALE_SMONTHNAME4,"April") @@ -86,7 +86,7 @@ LOCVAL(LOCALE_SMONTHNAME11,"November") LOCVAL(LOCALE_SMONTHNAME12,"Dezember") LOCVAL(LOCALE_SMONTHNAME13,"") -LOCVAL(LOCALE_SABBREVMONTHNAME1,"Jan") +LOCVAL(LOCALE_SABBREVMONTHNAME1,"J€n") LOCVAL(LOCALE_SABBREVMONTHNAME2,"Feb") LOCVAL(LOCALE_SABBREVMONTHNAME3,"Mär") LOCVAL(LOCALE_SABBREVMONTHNAME4,"Apr") @@ -108,3 +108,5 @@ LOCVAL(LOCALE_SABBREVMONTHNAME13,"") /* LOCVAL(LOCALE_IPOSSEPBYSPACE) */ /* LOCVAL(LOCALE_INEGSYMPRECEDES) */ /* LOCVAL(LOCALE_INEGSEPBYSPACE) */ + +/* Gregorianischer Kalender */ \ No newline at end of file diff --git a/ole/nls/dec.nls b/ole/nls/dec.nls new file mode 100644 index 00000000000..ed2b0a0d0e7 --- /dev/null +++ b/ole/nls/dec.nls @@ -0,0 +1,112 @@ +/* + * OLE2NLS library + * Fuerstentum Liechtenstein + */ + +LOCVAL(LOCALE_ILANGUAGE,"9") +LOCVAL(LOCALE_SLANGUAGE,"Deutsch") +LOCVAL(LOCALE_SENGLANGUAGE,"German") +LOCVAL(LOCALE_SABBREVLANGNAME,"dec") +LOCVAL(LOCALE_SNATIVELANGNAME,"Deutsch") +LOCVAL(LOCALE_ICOUNTRY,"41") +LOCVAL(LOCALE_SCOUNTRY,"Liechtenstein (Deutsch)") +LOCVAL(LOCALE_SENGCOUNTRY,"Liechtenstein") +LOCVAL(LOCALE_SABBREVCTRYNAME,"LIE") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Liechtenstein") +LOCVAL(LOCALE_IDEFAULTLANGUAGE,"9") +LOCVAL(LOCALE_IDEFAULTCOUNTRY,"41") +LOCVAL(LOCALE_IDEFAULTCODEPAGE,"851") +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +LOCVAL(LOCALE_SLIST,";") +LOCVAL(LOCALE_IMEASURE,"0") +LOCVAL(LOCALE_SDECIMAL,".") +LOCVAL(LOCALE_STHOUSAND,"'") +/* LOCVAL(LOCALE_SGROUPING) */ +LOCVAL(LOCALE_IDIGITS,"2") +LOCVAL(LOCALE_ILZERO,"1") +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +LOCVAL(LOCALE_SCURRENCY,"SFr") +LOCVAL(LOCALE_SINTLSYMBOL,"CHF") +/* LOCVAL(LOCALE_SMONDECIMALSEP) */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP) */ +LOCVAL(LOCALE_SMONGROUPING, "3;0") + +LOCVAL(LOCALE_ICURRDIGITS,"2") +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +LOCVAL(LOCALE_ICURRENCY,"3") +LOCVAL(LOCALE_INEGCURR,"8") +LOCVAL(LOCALE_SDATE,".") +LOCVAL(LOCALE_STIME,":") +LOCVAL(LOCALE_SSHORTDATE,"dd.MM.yyyy") +LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") +/* LOCVAL(LOCALE_STIMEFORMAT) */ +LOCVAL(LOCALE_IDATE,"1") +/* LOCVAL(LOCALE_ILDATE) */ +LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +LOCVAL(LOCALE_S1159,"") +LOCVAL(LOCALE_S2359,"") +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +LOCVAL(LOCALE_SDAYNAME1,"Montag") +LOCVAL(LOCALE_SDAYNAME2,"Dienstag") +LOCVAL(LOCALE_SDAYNAME3,"Mittwoch") +LOCVAL(LOCALE_SDAYNAME4,"Donnerstag") +LOCVAL(LOCALE_SDAYNAME5,"Freitag") +LOCVAL(LOCALE_SDAYNAME6,"Samstag") +LOCVAL(LOCALE_SDAYNAME7,"Sonntag") + +LOCVAL(LOCALE_SABBREVDAYNAME1,"Mo") +LOCVAL(LOCALE_SABBREVDAYNAME2,"Di") +LOCVAL(LOCALE_SABBREVDAYNAME3,"Mi") +LOCVAL(LOCALE_SABBREVDAYNAME4,"Do") +LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr") +LOCVAL(LOCALE_SABBREVDAYNAME6,"Sa") +LOCVAL(LOCALE_SABBREVDAYNAME7,"So") + +LOCVAL(LOCALE_SMONTHNAME1,"Januar") +LOCVAL(LOCALE_SMONTHNAME2,"Februar") +LOCVAL(LOCALE_SMONTHNAME3,"März") +LOCVAL(LOCALE_SMONTHNAME4,"April") +LOCVAL(LOCALE_SMONTHNAME5,"Mai") +LOCVAL(LOCALE_SMONTHNAME6,"Juni") +LOCVAL(LOCALE_SMONTHNAME7,"Juli") +LOCVAL(LOCALE_SMONTHNAME8,"August") +LOCVAL(LOCALE_SMONTHNAME9,"September") +LOCVAL(LOCALE_SMONTHNAME10,"Oktober") +LOCVAL(LOCALE_SMONTHNAME11,"November") +LOCVAL(LOCALE_SMONTHNAME12,"Dezember") +LOCVAL(LOCALE_SMONTHNAME13,"") + +LOCVAL(LOCALE_SABBREVMONTHNAME1,"Jan") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"Feb") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"Mär") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"Apr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"Mai") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"Jun") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"Jul") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"Aug") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"Sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"Okt") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"Nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"Dez") +LOCVAL(LOCALE_SABBREVMONTHNAME13,"") + +/* LOCVAL(LOCALE_SPOSITIVESIGN) */ +/* LOCVAL(LOCALE_SNEGATIVESIGN) */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN) */ +/* LOCVAL(LOCALE_INEGSIGNPOSN) */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES) */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE) */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES) */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE) */ + +/* Gregorianischer Kalender */ diff --git a/ole/nls/del.nls b/ole/nls/del.nls new file mode 100644 index 00000000000..70307a6f0c7 --- /dev/null +++ b/ole/nls/del.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Luxembourg (German) + */ + +LOCVAL(LOCALE_ILANGUAGE,"9") +LOCVAL(LOCALE_SLANGUAGE,"Deutsch") +LOCVAL(LOCALE_SENGLANGUAGE,"German") +LOCVAL(LOCALE_SABBREVLANGNAME,"deu") +LOCVAL(LOCALE_SNATIVELANGNAME,"Deutsch") +LOCVAL(LOCALE_ICOUNTRY,"49") +LOCVAL(LOCALE_SCOUNTRY,"Luxemburg") +LOCVAL(LOCALE_SENGCOUNTRY,"Luxemburg") +LOCVAL(LOCALE_SABBREVCTRYNAME,"LUX") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Luxembourg") +LOCVAL(LOCALE_IDEFAULTLANGUAGE,"9") +LOCVAL(LOCALE_IDEFAULTCOUNTRY,"49") +LOCVAL(LOCALE_IDEFAULTCODEPAGE,"851") +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +LOCVAL(LOCALE_SLIST,";") +LOCVAL(LOCALE_IMEASURE,"0") +LOCVAL(LOCALE_SDECIMAL,",") +LOCVAL(LOCALE_STHOUSAND,".") +/* LOCVAL(LOCALE_SGROUPING) */ +LOCVAL(LOCALE_IDIGITS,"2") +LOCVAL(LOCALE_ILZERO,"1") +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +LOCVAL(LOCALE_SCURRENCY,"F") +LOCVAL(LOCALE_SINTLSYMBOL, "LUF") +/* LOCVAL(LOCALE_SMONDECIMALSEP) */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP) */ +LOCVAL(LOCALE_SMONGROUPING, "3;0") +LOCVAL(LOCALE_ICURRDIGITS,"2") +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +LOCVAL(LOCALE_ICURRENCY,"3") +LOCVAL(LOCALE_INEGCURR,"8") +LOCVAL(LOCALE_SDATE,".") +LOCVAL(LOCALE_STIME,":") +LOCVAL(LOCALE_SSHORTDATE,"dd.MM.yyyy") +LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") +/* LOCVAL(LOCALE_STIMEFORMAT) */ +LOCVAL(LOCALE_IDATE,"1") +/* LOCVAL(LOCALE_ILDATE) */ +LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +LOCVAL(LOCALE_S1159,"") +LOCVAL(LOCALE_S2359,"") +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +LOCVAL(LOCALE_SDAYNAME1,"Montag") +LOCVAL(LOCALE_SDAYNAME2,"Dienstag") +LOCVAL(LOCALE_SDAYNAME3,"Mittwoch") +LOCVAL(LOCALE_SDAYNAME4,"Donnerstag") +LOCVAL(LOCALE_SDAYNAME5,"Freitag") +LOCVAL(LOCALE_SDAYNAME6,"Sonnabend") +LOCVAL(LOCALE_SDAYNAME7,"Sonntag") + +LOCVAL(LOCALE_SABBREVDAYNAME1,"Mo") +LOCVAL(LOCALE_SABBREVDAYNAME2,"Di") +LOCVAL(LOCALE_SABBREVDAYNAME3,"Mi") +LOCVAL(LOCALE_SABBREVDAYNAME4,"Do") +LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr") +LOCVAL(LOCALE_SABBREVDAYNAME6,"Sa") +LOCVAL(LOCALE_SABBREVDAYNAME7,"So") + +LOCVAL(LOCALE_SMONTHNAME1,"Januar") +LOCVAL(LOCALE_SMONTHNAME2,"Februar") +LOCVAL(LOCALE_SMONTHNAME3,"März") +LOCVAL(LOCALE_SMONTHNAME4,"April") +LOCVAL(LOCALE_SMONTHNAME5,"Mai") +LOCVAL(LOCALE_SMONTHNAME6,"Juni") +LOCVAL(LOCALE_SMONTHNAME7,"Juli") +LOCVAL(LOCALE_SMONTHNAME8,"August") +LOCVAL(LOCALE_SMONTHNAME9,"September") +LOCVAL(LOCALE_SMONTHNAME10,"Oktober") +LOCVAL(LOCALE_SMONTHNAME11,"November") +LOCVAL(LOCALE_SMONTHNAME12,"Dezember") +LOCVAL(LOCALE_SMONTHNAME13,"") + +LOCVAL(LOCALE_SABBREVMONTHNAME1,"Jan") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"Feb") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"Mär") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"Apr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"Mai") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"Jun") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"Jul") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"Aug") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"Sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"Okt") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"Nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"Dez") +LOCVAL(LOCALE_SABBREVMONTHNAME13,"") + +/* LOCVAL(LOCALE_SPOSITIVESIGN) */ +/* LOCVAL(LOCALE_SNEGATIVESIGN) */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN) */ +/* LOCVAL(LOCALE_INEGSIGNPOSN) */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES) */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE) */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES) */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE) */ + +/* Gregorianischer Kalender */ \ No newline at end of file diff --git a/ole/nls/des.nls b/ole/nls/des.nls index db5a2fd4b98..61e5ae7209d 100644 --- a/ole/nls/des.nls +++ b/ole/nls/des.nls @@ -1,6 +1,6 @@ /* * OLE2NLS library - * Switzerland + * Switzerland (German) */ LOCVAL(LOCALE_ILANGUAGE,"9") @@ -30,7 +30,7 @@ LOCVAL(LOCALE_SCURRENCY,"SFr") LOCVAL(LOCALE_SINTLSYMBOL,"CHF") /* LOCVAL(LOCALE_SMONDECIMALSEP) */ /* LOCVAL(LOCALE_SMONTHOUSANDSEP) */ -/* LOCVAL(LOCALE_SMONGROUPING) */ +LOCVAL(LOCALE_SMONGROUPING, "3;0") LOCVAL(LOCALE_ICURRDIGITS,"2") /* LOCVAL(LOCALE_IINTLCURRDIGITS) */ @@ -108,3 +108,5 @@ LOCVAL(LOCALE_SABBREVMONTHNAME13,"") /* LOCVAL(LOCALE_IPOSSEPBYSPACE) */ /* LOCVAL(LOCALE_INEGSYMPRECEDES) */ /* LOCVAL(LOCALE_INEGSEPBYSPACE) */ + +/* Gregorianischer Kalender */ diff --git a/ole/nls/deu.nls b/ole/nls/deu.nls index 1c681f94c6b..21e789173e1 100644 --- a/ole/nls/deu.nls +++ b/ole/nls/deu.nls @@ -107,3 +107,5 @@ LOCVAL(LOCALE_SABBREVMONTHNAME13,"") /* LOCVAL(LOCALE_IPOSSEPBYSPACE) */ /* LOCVAL(LOCALE_INEGSYMPRECEDES) */ /* LOCVAL(LOCALE_INEGSEPBYSPACE) */ + +/* Gregorianischer Kalender */ \ No newline at end of file diff --git a/ole/nls/empty.nls b/ole/nls/empty.nls new file mode 100644 index 00000000000..7648569c3e7 --- /dev/null +++ b/ole/nls/empty.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Language (Information) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +/* LOCVAL(LOCALE_SENGLANGUAGE,"") */ +/* LOCVAL(LOCALE_SABBREVLANGNAME,"") */ +/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +/* LOCVAL(LOCALE_SENGCOUNTRY,"") */ +/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ +/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +/* LOCVAL(LOCALE_SNATIVEDIGITS) */ +/* LOCVAL(LOCALE_SCURRENCY,"") */ +/* LOCVAL(LOCALE_SINTLSYMBOL) */ +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +/* LOCVAL(LOCALE_SMONGROUPING) */ +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +/* LOCVAL(LOCALE_SDAYNAME1,"") */ +/* LOCVAL(LOCALE_SDAYNAME2,"") */ +/* LOCVAL(LOCALE_SDAYNAME3,"") */ +/* LOCVAL(LOCALE_SDAYNAME4,"") */ +/* LOCVAL(LOCALE_SDAYNAME5,"") */ +/* LOCVAL(LOCALE_SDAYNAME6,"") */ +/* LOCVAL(LOCALE_SDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* */ diff --git a/ole/nls/ena.nls b/ole/nls/ena.nls index 76bba0e5eff..f3fa01a3bb2 100644 --- a/ole/nls/ena.nls +++ b/ole/nls/ena.nls @@ -107,3 +107,5 @@ LOCVAL(LOCALE_IPOSSYMPRECEDES, "1") LOCVAL(LOCALE_IPOSSEPBYSPACE, "0") LOCVAL(LOCALE_INEGSYMPRECEDES, "1") LOCVAL(LOCALE_INEGSEPBYSPACE, "0") + +/* Gregorian Calendar */ diff --git a/ole/nls/enb.nls b/ole/nls/enb.nls new file mode 100644 index 00000000000..f1b59b1cba9 --- /dev/null +++ b/ole/nls/enb.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Caribbean + */ + +LOCVAL(LOCALE_ILANGUAGE, "0809") +LOCVAL(LOCALE_SLANGUAGE, "English (Caribbean)") +LOCVAL(LOCALE_SENGLANGUAGE, "English") +LOCVAL(LOCALE_SABBREVLANGNAME, "enb") +LOCVAL(LOCALE_SNATIVELANGNAME, "English") +LOCVAL(LOCALE_ICOUNTRY, "44") +LOCVAL(LOCALE_SCOUNTRY, "Caribbean") +LOCVAL(LOCALE_SENGCOUNTRY, "Caribbean") +LOCVAL(LOCALE_SABBREVCTRYNAME, "CAR") +LOCVAL(LOCALE_SNATIVECTRYNAME, "Carribean") +LOCVAL(LOCALE_IDEFAULTLANGUAGE, "0809") +LOCVAL(LOCALE_IDEFAULTCOUNTRY, "44") +LOCVAL(LOCALE_IDEFAULTCODEPAGE, "850") +LOCVAL(LOCALE_IDEFAULTANSICODEPAGE, "1252") +LOCVAL(LOCALE_SLIST, ",") +LOCVAL(LOCALE_IMEASURE, "0") +LOCVAL(LOCALE_SDECIMAL, ".") +LOCVAL(LOCALE_STHOUSAND, ",") +LOCVAL(LOCALE_SGROUPING, "3;0") +LOCVAL(LOCALE_IDIGITS, "2") +LOCVAL(LOCALE_ILZERO, "1") +LOCVAL(LOCALE_INEGNUMBER, "1") +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +LOCVAL(LOCALE_SCURRENCY, "$") +LOCVAL(LOCALE_SINTLSYMBOL, "USD") +LOCVAL(LOCALE_SMONDECIMALSEP, ".") +LOCVAL(LOCALE_SMONTHOUSANDSEP, ",") +LOCVAL(LOCALE_SMONGROUPING, "3;0") +LOCVAL(LOCALE_ICURRDIGITS, "2") +LOCVAL(LOCALE_IINTLCURRDIGITS, "2") +LOCVAL(LOCALE_ICURRENCY, "0") +LOCVAL(LOCALE_INEGCURR, "1") +LOCVAL(LOCALE_SDATE, "/") +LOCVAL(LOCALE_STIME, ":") +LOCVAL(LOCALE_SSHORTDATE, "dd/MM/yy") +LOCVAL(LOCALE_SLONGDATE, "dd MMMM yyyy") +LOCVAL(LOCALE_STIMEFORMAT, "HH:mm:ss") +LOCVAL(LOCALE_IDATE, "1") +LOCVAL(LOCALE_ILDATE, "1") +LOCVAL(LOCALE_ITIME, "1") +LOCVAL(LOCALE_ITIMEMARKPOSN, "0") +LOCVAL(LOCALE_ICENTURY, "0") +LOCVAL(LOCALE_ITLZERO, "1") +LOCVAL(LOCALE_IDAYLZERO, "1") +LOCVAL(LOCALE_IMONLZERO, "1") +LOCVAL(LOCALE_S1159, "AM") +LOCVAL(LOCALE_S2359, "PM") +LOCVAL(LOCALE_ICALENDARTYPE, "1") +LOCVAL(LOCALE_IOPTIONALCALENDAR, "0") +LOCVAL(LOCALE_IFIRSTDAYOFWEEK, "0") +LOCVAL(LOCALE_IFIRSTWEEKOFYEAR, "0") + +LOCVAL(LOCALE_SDAYNAME1, "Monday") +LOCVAL(LOCALE_SDAYNAME2, "Tuesday") +LOCVAL(LOCALE_SDAYNAME3, "Wednesday") +LOCVAL(LOCALE_SDAYNAME4, "Thursday") +LOCVAL(LOCALE_SDAYNAME5, "Friday") +LOCVAL(LOCALE_SDAYNAME6, "Saturday") +LOCVAL(LOCALE_SDAYNAME7, "Sunday") + +LOCVAL(LOCALE_SABBREVDAYNAME1, "Mon") +LOCVAL(LOCALE_SABBREVDAYNAME2, "Tue") +LOCVAL(LOCALE_SABBREVDAYNAME3, "Wed") +LOCVAL(LOCALE_SABBREVDAYNAME4, "Thu") +LOCVAL(LOCALE_SABBREVDAYNAME5, "Fri") +LOCVAL(LOCALE_SABBREVDAYNAME6, "Sat") +LOCVAL(LOCALE_SABBREVDAYNAME7, "Sun") + +LOCVAL(LOCALE_SMONTHNAME1, "January") +LOCVAL(LOCALE_SMONTHNAME2, "February") +LOCVAL(LOCALE_SMONTHNAME3, "March") +LOCVAL(LOCALE_SMONTHNAME4, "April") +LOCVAL(LOCALE_SMONTHNAME5, "May") +LOCVAL(LOCALE_SMONTHNAME6, "June") +LOCVAL(LOCALE_SMONTHNAME7, "July") +LOCVAL(LOCALE_SMONTHNAME8, "August") +LOCVAL(LOCALE_SMONTHNAME9, "September") +LOCVAL(LOCALE_SMONTHNAME10, "October") +LOCVAL(LOCALE_SMONTHNAME11, "November") +LOCVAL(LOCALE_SMONTHNAME12, "December") +LOCVAL(LOCALE_SMONTHNAME13, "") + +LOCVAL(LOCALE_SABBREVMONTHNAME1, "Jan") +LOCVAL(LOCALE_SABBREVMONTHNAME2, "Feb") +LOCVAL(LOCALE_SABBREVMONTHNAME3, "Mar") +LOCVAL(LOCALE_SABBREVMONTHNAME4, "Apr") +LOCVAL(LOCALE_SABBREVMONTHNAME5, "May") +LOCVAL(LOCALE_SABBREVMONTHNAME6, "Jun") +LOCVAL(LOCALE_SABBREVMONTHNAME7, "Jul") +LOCVAL(LOCALE_SABBREVMONTHNAME8, "Aug") +LOCVAL(LOCALE_SABBREVMONTHNAME9, "Sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10, "Oct") +LOCVAL(LOCALE_SABBREVMONTHNAME11, "Nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12, "Dec") +LOCVAL(LOCALE_SABBREVMONTHNAME13, "") + +LOCVAL(LOCALE_SPOSITIVESIGN, "") +LOCVAL(LOCALE_SNEGATIVESIGN, "-") +LOCVAL(LOCALE_IPOSSIGNPOSN, "3") +LOCVAL(LOCALE_INEGSIGNPOSN, "3") +LOCVAL(LOCALE_IPOSSYMPRECEDES, "1") +LOCVAL(LOCALE_IPOSSEPBYSPACE, "0") +LOCVAL(LOCALE_INEGSYMPRECEDES, "1") +LOCVAL(LOCALE_INEGSEPBYSPACE, "0") + +/* Gregorian Calendar */ diff --git a/ole/nls/enc.nls b/ole/nls/enc.nls index 31edec42c1e..9d92ee373ab 100644 --- a/ole/nls/enc.nls +++ b/ole/nls/enc.nls @@ -1,6 +1,6 @@ /* * OLE2NLS library - * Canada + * Canada (English) */ LOCVAL(LOCALE_ILANGUAGE, "0409") @@ -107,3 +107,5 @@ LOCVAL(LOCALE_IPOSSYMPRECEDES, "1") LOCVAL(LOCALE_IPOSSEPBYSPACE, "0") LOCVAL(LOCALE_INEGSYMPRECEDES, "1") LOCVAL(LOCALE_INEGSEPBYSPACE, "0") + +/* Gregorian Calendar */ diff --git a/ole/nls/eng.nls b/ole/nls/eng.nls index 25dbd24965a..8bd2987724d 100644 --- a/ole/nls/eng.nls +++ b/ole/nls/eng.nls @@ -107,3 +107,5 @@ LOCVAL(LOCALE_IPOSSYMPRECEDES, "1") LOCVAL(LOCALE_IPOSSEPBYSPACE, "0") LOCVAL(LOCALE_INEGSYMPRECEDES, "1") LOCVAL(LOCALE_INEGSEPBYSPACE, "0") + +/* Gregorian Calendar */ diff --git a/ole/nls/enj.nls b/ole/nls/enj.nls new file mode 100644 index 00000000000..aef13b77acc --- /dev/null +++ b/ole/nls/enj.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Jamaica + */ + +LOCVAL(LOCALE_ILANGUAGE, "0809") +LOCVAL(LOCALE_SLANGUAGE, "English (Jamaica)") +LOCVAL(LOCALE_SENGLANGUAGE, "English") +LOCVAL(LOCALE_SABBREVLANGNAME, "enj") +LOCVAL(LOCALE_SNATIVELANGNAME, "English") +LOCVAL(LOCALE_ICOUNTRY, "44") +LOCVAL(LOCALE_SCOUNTRY, "Jamaica") +LOCVAL(LOCALE_SENGCOUNTRY, "Jamaica") +LOCVAL(LOCALE_SABBREVCTRYNAME, "JAM") +LOCVAL(LOCALE_SNATIVECTRYNAME, "Jamaica") +LOCVAL(LOCALE_IDEFAULTLANGUAGE, "0809") +LOCVAL(LOCALE_IDEFAULTCOUNTRY, "44") +LOCVAL(LOCALE_IDEFAULTCODEPAGE, "850") +LOCVAL(LOCALE_IDEFAULTANSICODEPAGE, "1252") +LOCVAL(LOCALE_SLIST, ",") +LOCVAL(LOCALE_IMEASURE, "0") +LOCVAL(LOCALE_SDECIMAL, ".") +LOCVAL(LOCALE_STHOUSAND, ",") +LOCVAL(LOCALE_SGROUPING, "3;0") +LOCVAL(LOCALE_IDIGITS, "2") +LOCVAL(LOCALE_ILZERO, "1") +LOCVAL(LOCALE_INEGNUMBER, "1") +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +LOCVAL(LOCALE_SCURRENCY, "$") +LOCVAL(LOCALE_SINTLSYMBOL, "USD") +LOCVAL(LOCALE_SMONDECIMALSEP, ".") +LOCVAL(LOCALE_SMONTHOUSANDSEP, ",") +LOCVAL(LOCALE_SMONGROUPING, "3;0") +LOCVAL(LOCALE_ICURRDIGITS, "2") +LOCVAL(LOCALE_IINTLCURRDIGITS, "2") +LOCVAL(LOCALE_ICURRENCY, "0") +LOCVAL(LOCALE_INEGCURR, "1") +LOCVAL(LOCALE_SDATE, "/") +LOCVAL(LOCALE_STIME, ":") +LOCVAL(LOCALE_SSHORTDATE, "dd/MM/yy") +LOCVAL(LOCALE_SLONGDATE, "dd MMMM yyyy") +LOCVAL(LOCALE_STIMEFORMAT, "HH:mm:ss") +LOCVAL(LOCALE_IDATE, "1") +LOCVAL(LOCALE_ILDATE, "1") +LOCVAL(LOCALE_ITIME, "1") +LOCVAL(LOCALE_ITIMEMARKPOSN, "0") +LOCVAL(LOCALE_ICENTURY, "0") +LOCVAL(LOCALE_ITLZERO, "1") +LOCVAL(LOCALE_IDAYLZERO, "1") +LOCVAL(LOCALE_IMONLZERO, "1") +LOCVAL(LOCALE_S1159, "AM") +LOCVAL(LOCALE_S2359, "PM") +LOCVAL(LOCALE_ICALENDARTYPE, "1") +LOCVAL(LOCALE_IOPTIONALCALENDAR, "0") +LOCVAL(LOCALE_IFIRSTDAYOFWEEK, "0") +LOCVAL(LOCALE_IFIRSTWEEKOFYEAR, "0") + +LOCVAL(LOCALE_SDAYNAME1, "Monday") +LOCVAL(LOCALE_SDAYNAME2, "Tuesday") +LOCVAL(LOCALE_SDAYNAME3, "Wednesday") +LOCVAL(LOCALE_SDAYNAME4, "Thursday") +LOCVAL(LOCALE_SDAYNAME5, "Friday") +LOCVAL(LOCALE_SDAYNAME6, "Saturday") +LOCVAL(LOCALE_SDAYNAME7, "Sunday") + +LOCVAL(LOCALE_SABBREVDAYNAME1, "Mon") +LOCVAL(LOCALE_SABBREVDAYNAME2, "Tue") +LOCVAL(LOCALE_SABBREVDAYNAME3, "Wed") +LOCVAL(LOCALE_SABBREVDAYNAME4, "Thu") +LOCVAL(LOCALE_SABBREVDAYNAME5, "Fri") +LOCVAL(LOCALE_SABBREVDAYNAME6, "Sat") +LOCVAL(LOCALE_SABBREVDAYNAME7, "Sun") + +LOCVAL(LOCALE_SMONTHNAME1, "January") +LOCVAL(LOCALE_SMONTHNAME2, "February") +LOCVAL(LOCALE_SMONTHNAME3, "March") +LOCVAL(LOCALE_SMONTHNAME4, "April") +LOCVAL(LOCALE_SMONTHNAME5, "May") +LOCVAL(LOCALE_SMONTHNAME6, "June") +LOCVAL(LOCALE_SMONTHNAME7, "July") +LOCVAL(LOCALE_SMONTHNAME8, "August") +LOCVAL(LOCALE_SMONTHNAME9, "September") +LOCVAL(LOCALE_SMONTHNAME10, "October") +LOCVAL(LOCALE_SMONTHNAME11, "November") +LOCVAL(LOCALE_SMONTHNAME12, "December") +LOCVAL(LOCALE_SMONTHNAME13, "") + +LOCVAL(LOCALE_SABBREVMONTHNAME1, "Jan") +LOCVAL(LOCALE_SABBREVMONTHNAME2, "Feb") +LOCVAL(LOCALE_SABBREVMONTHNAME3, "Mar") +LOCVAL(LOCALE_SABBREVMONTHNAME4, "Apr") +LOCVAL(LOCALE_SABBREVMONTHNAME5, "May") +LOCVAL(LOCALE_SABBREVMONTHNAME6, "Jun") +LOCVAL(LOCALE_SABBREVMONTHNAME7, "Jul") +LOCVAL(LOCALE_SABBREVMONTHNAME8, "Aug") +LOCVAL(LOCALE_SABBREVMONTHNAME9, "Sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10, "Oct") +LOCVAL(LOCALE_SABBREVMONTHNAME11, "Nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12, "Dec") +LOCVAL(LOCALE_SABBREVMONTHNAME13, "") + +LOCVAL(LOCALE_SPOSITIVESIGN, "") +LOCVAL(LOCALE_SNEGATIVESIGN, "-") +LOCVAL(LOCALE_IPOSSIGNPOSN, "3") +LOCVAL(LOCALE_INEGSIGNPOSN, "3") +LOCVAL(LOCALE_IPOSSYMPRECEDES, "1") +LOCVAL(LOCALE_IPOSSEPBYSPACE, "0") +LOCVAL(LOCALE_INEGSYMPRECEDES, "1") +LOCVAL(LOCALE_INEGSEPBYSPACE, "0") + +/* Gregorian Calendar */ diff --git a/ole/nls/ens.nls b/ole/nls/ens.nls new file mode 100644 index 00000000000..07a8e8c1c43 --- /dev/null +++ b/ole/nls/ens.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * South Africa (English) + */ + +LOCVAL(LOCALE_ILANGUAGE, "0809") +LOCVAL(LOCALE_SLANGUAGE, "English (South Africa)") +LOCVAL(LOCALE_SENGLANGUAGE, "English") +LOCVAL(LOCALE_SABBREVLANGNAME, "ens") +LOCVAL(LOCALE_SNATIVELANGNAME, "English") +/* LOCVAL(LOCALE_ICOUNTRY, "") */ +LOCVAL(LOCALE_SCOUNTRY, "South Africa") +LOCVAL(LOCALE_SENGCOUNTRY, "South Africa") +LOCVAL(LOCALE_SABBREVCTRYNAME, "ZAF") +LOCVAL(LOCALE_SNATIVECTRYNAME, "South Africa") +LOCVAL(LOCALE_IDEFAULTLANGUAGE, "0809") +LOCVAL(LOCALE_IDEFAULTCOUNTRY, "44") +LOCVAL(LOCALE_IDEFAULTCODEPAGE, "850") +LOCVAL(LOCALE_IDEFAULTANSICODEPAGE, "1252") +LOCVAL(LOCALE_SLIST, ",") +LOCVAL(LOCALE_IMEASURE, "0") +LOCVAL(LOCALE_SDECIMAL, ".") +LOCVAL(LOCALE_STHOUSAND, ",") +LOCVAL(LOCALE_SGROUPING, "3;0") +LOCVAL(LOCALE_IDIGITS, "2") +LOCVAL(LOCALE_ILZERO, "1") +LOCVAL(LOCALE_INEGNUMBER, "1") +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +LOCVAL(LOCALE_SCURRENCY, "R") +LOCVAL(LOCALE_SINTLSYMBOL, "ZAR") +LOCVAL(LOCALE_SMONDECIMALSEP, ".") +LOCVAL(LOCALE_SMONTHOUSANDSEP, ",") +LOCVAL(LOCALE_SMONGROUPING, "3;0") +LOCVAL(LOCALE_ICURRDIGITS, "2") +LOCVAL(LOCALE_IINTLCURRDIGITS, "2") +LOCVAL(LOCALE_ICURRENCY, "0") +LOCVAL(LOCALE_INEGCURR, "1") +LOCVAL(LOCALE_SDATE, "/") +LOCVAL(LOCALE_STIME, ":") +LOCVAL(LOCALE_SSHORTDATE, "dd/MM/yy") +LOCVAL(LOCALE_SLONGDATE, "dd MMMM yyyy") +LOCVAL(LOCALE_STIMEFORMAT, "HH:mm:ss") +LOCVAL(LOCALE_IDATE, "1") +LOCVAL(LOCALE_ILDATE, "1") +LOCVAL(LOCALE_ITIME, "1") +LOCVAL(LOCALE_ITIMEMARKPOSN, "0") +LOCVAL(LOCALE_ICENTURY, "0") +LOCVAL(LOCALE_ITLZERO, "1") +LOCVAL(LOCALE_IDAYLZERO, "1") +LOCVAL(LOCALE_IMONLZERO, "1") +LOCVAL(LOCALE_S1159, "AM") +LOCVAL(LOCALE_S2359, "PM") +LOCVAL(LOCALE_ICALENDARTYPE, "1") +LOCVAL(LOCALE_IOPTIONALCALENDAR, "0") +LOCVAL(LOCALE_IFIRSTDAYOFWEEK, "0") +LOCVAL(LOCALE_IFIRSTWEEKOFYEAR, "0") + +LOCVAL(LOCALE_SDAYNAME1, "Monday") +LOCVAL(LOCALE_SDAYNAME2, "Tuesday") +LOCVAL(LOCALE_SDAYNAME3, "Wednesday") +LOCVAL(LOCALE_SDAYNAME4, "Thursday") +LOCVAL(LOCALE_SDAYNAME5, "Friday") +LOCVAL(LOCALE_SDAYNAME6, "Saturday") +LOCVAL(LOCALE_SDAYNAME7, "Sunday") + +LOCVAL(LOCALE_SABBREVDAYNAME1, "Mon") +LOCVAL(LOCALE_SABBREVDAYNAME2, "Tue") +LOCVAL(LOCALE_SABBREVDAYNAME3, "Wed") +LOCVAL(LOCALE_SABBREVDAYNAME4, "Thu") +LOCVAL(LOCALE_SABBREVDAYNAME5, "Fri") +LOCVAL(LOCALE_SABBREVDAYNAME6, "Sat") +LOCVAL(LOCALE_SABBREVDAYNAME7, "Sun") + +LOCVAL(LOCALE_SMONTHNAME1, "January") +LOCVAL(LOCALE_SMONTHNAME2, "February") +LOCVAL(LOCALE_SMONTHNAME3, "March") +LOCVAL(LOCALE_SMONTHNAME4, "April") +LOCVAL(LOCALE_SMONTHNAME5, "May") +LOCVAL(LOCALE_SMONTHNAME6, "June") +LOCVAL(LOCALE_SMONTHNAME7, "July") +LOCVAL(LOCALE_SMONTHNAME8, "August") +LOCVAL(LOCALE_SMONTHNAME9, "September") +LOCVAL(LOCALE_SMONTHNAME10, "October") +LOCVAL(LOCALE_SMONTHNAME11, "November") +LOCVAL(LOCALE_SMONTHNAME12, "December") +LOCVAL(LOCALE_SMONTHNAME13, "") + +LOCVAL(LOCALE_SABBREVMONTHNAME1, "Jan") +LOCVAL(LOCALE_SABBREVMONTHNAME2, "Feb") +LOCVAL(LOCALE_SABBREVMONTHNAME3, "Mar") +LOCVAL(LOCALE_SABBREVMONTHNAME4, "Apr") +LOCVAL(LOCALE_SABBREVMONTHNAME5, "May") +LOCVAL(LOCALE_SABBREVMONTHNAME6, "Jun") +LOCVAL(LOCALE_SABBREVMONTHNAME7, "Jul") +LOCVAL(LOCALE_SABBREVMONTHNAME8, "Aug") +LOCVAL(LOCALE_SABBREVMONTHNAME9, "Sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10, "Oct") +LOCVAL(LOCALE_SABBREVMONTHNAME11, "Nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12, "Dec") +LOCVAL(LOCALE_SABBREVMONTHNAME13, "") + +LOCVAL(LOCALE_SPOSITIVESIGN, "") +LOCVAL(LOCALE_SNEGATIVESIGN, "-") +LOCVAL(LOCALE_IPOSSIGNPOSN, "3") +LOCVAL(LOCALE_INEGSIGNPOSN, "3") +LOCVAL(LOCALE_IPOSSYMPRECEDES, "1") +LOCVAL(LOCALE_IPOSSEPBYSPACE, "0") +LOCVAL(LOCALE_INEGSYMPRECEDES, "1") +LOCVAL(LOCALE_INEGSEPBYSPACE, "0") + +/* Gregorian Calendar */ diff --git a/ole/nls/enu.nls b/ole/nls/enu.nls index 631cdfde9d7..718f2f30898 100644 --- a/ole/nls/enu.nls +++ b/ole/nls/enu.nls @@ -107,3 +107,5 @@ LOCVAL(LOCALE_IPOSSYMPRECEDES, "1") LOCVAL(LOCALE_IPOSSEPBYSPACE, "0") LOCVAL(LOCALE_INEGSYMPRECEDES, "1") LOCVAL(LOCALE_INEGSEPBYSPACE, "0") + +/* Gregorian Calendar */ \ No newline at end of file diff --git a/ole/nls/enz.nls b/ole/nls/enz.nls index c6824ed508c..869b79b061f 100644 --- a/ole/nls/enz.nls +++ b/ole/nls/enz.nls @@ -26,8 +26,8 @@ LOCVAL(LOCALE_IDIGITS, "2") LOCVAL(LOCALE_ILZERO, "1") LOCVAL(LOCALE_INEGNUMBER, "1") LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") -LOCVAL(LOCALE_SCURRENCY, "£") -LOCVAL(LOCALE_SINTLSYMBOL, "GBP") +LOCVAL(LOCALE_SCURRENCY, "$") +LOCVAL(LOCALE_SINTLSYMBOL, "NZD") LOCVAL(LOCALE_SMONDECIMALSEP, ".") LOCVAL(LOCALE_SMONTHOUSANDSEP, ",") LOCVAL(LOCALE_SMONGROUPING, "3;0") @@ -107,3 +107,5 @@ LOCVAL(LOCALE_IPOSSYMPRECEDES, "1") LOCVAL(LOCALE_IPOSSEPBYSPACE, "0") LOCVAL(LOCALE_INEGSYMPRECEDES, "1") LOCVAL(LOCALE_INEGSEPBYSPACE, "0") + +/* Gregorian Calendar */ \ No newline at end of file diff --git a/ole/nls/esa.nls b/ole/nls/esa.nls new file mode 100644 index 00000000000..99c56020e75 --- /dev/null +++ b/ole/nls/esa.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Spanish (Panama) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +LOCVAL(LOCALE_SENGLANGUAGE,"Spanish") +LOCVAL(LOCALE_SABBREVLANGNAME,"esa") +LOCVAL(LOCALE_SNATIVELANGNAME,"Panama") +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +LOCVAL(LOCALE_SENGCOUNTRY,"Panama") +LOCVAL(LOCALE_SABBREVCTRYNAME,"PAN") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Panama") +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +LOCVAL(LOCALE_SCURRENCY,"B") +LOCVAL(LOCALE_SINTLSYMBOL, "PAB") +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +LOCVAL(LOCALE_SMONGROUPING,"3;0") +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +LOCVAL(LOCALE_SDAYNAME1,"lunes") +LOCVAL(LOCALE_SDAYNAME2,"martes") +LOCVAL(LOCALE_SDAYNAME3,"mi?rcoles") +LOCVAL(LOCALE_SDAYNAME4,"jueves") +LOCVAL(LOCALE_SDAYNAME5,"viernes") +LOCVAL(LOCALE_SDAYNAME6,"s?abado") +LOCVAL(LOCALE_SDAYNAME7,"domingo") + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"mi?") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +LOCVAL(LOCALE_SMONTHNAME1,"enero") +LOCVAL(LOCALE_SMONTHNAME2,"febrero") +LOCVAL(LOCALE_SMONTHNAME3,"marzo") +LOCVAL(LOCALE_SMONTHNAME4,"abril") +LOCVAL(LOCALE_SMONTHNAME5,"mayo") +LOCVAL(LOCALE_SMONTHNAME6,"junio") +LOCVAL(LOCALE_SMONTHNAME7,"julio") +LOCVAL(LOCALE_SMONTHNAME8,"agosto") +LOCVAL(LOCALE_SMONTHNAME9,"septiembre") +LOCVAL(LOCALE_SMONTHNAME10,"octubre") +LOCVAL(LOCALE_SMONTHNAME11,"noviembre") +LOCVAL(LOCALE_SMONTHNAME12,"diciembre") +LOCVAL(LOCALE_SMONTHNAME13,"") + +LOCVAL(LOCALE_SABBREVMONTHNAME1,"ene") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"feb") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"mar") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"abr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"may") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"jun") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"jul") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"ago") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"oct") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic") +LOCVAL(LOCALE_SABBREVMONTHNAME13,"") + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* calendario gregoriano */ diff --git a/ole/nls/esb.nls b/ole/nls/esb.nls new file mode 100644 index 00000000000..7fae58308b5 --- /dev/null +++ b/ole/nls/esb.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Spanish (Bolivia) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +LOCVAL(LOCALE_SENGLANGUAGE,"Spanish") +LOCVAL(LOCALE_SABBREVLANGNAME,"esb") +LOCVAL(LOCALE_SNATIVELANGNAME,"Bolivia") +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +LOCVAL(LOCALE_SENGCOUNTRY,"Bolivia") +LOCVAL(LOCALE_SABBREVCTRYNAME,"BOL") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Bolivia") +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +LOCVAL(LOCALE_SCURRENCY,"Bs") +LOCVAL(LOCALE_SINTLSYMBOL, "BOB") +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +LOCVAL(LOCALE_SMONGROUPING,"3;0") +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +LOCVAL(LOCALE_SDAYNAME1,"lunes") +LOCVAL(LOCALE_SDAYNAME2,"martes") +LOCVAL(LOCALE_SDAYNAME3,"mi?rcoles") +LOCVAL(LOCALE_SDAYNAME4,"jueves") +LOCVAL(LOCALE_SDAYNAME5,"viernes") +LOCVAL(LOCALE_SDAYNAME6,"s?abado") +LOCVAL(LOCALE_SDAYNAME7,"domingo") + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"mi?") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +LOCVAL(LOCALE_SMONTHNAME1,"enero") +LOCVAL(LOCALE_SMONTHNAME2,"febrero") +LOCVAL(LOCALE_SMONTHNAME3,"marzo") +LOCVAL(LOCALE_SMONTHNAME4,"abril") +LOCVAL(LOCALE_SMONTHNAME5,"mayo") +LOCVAL(LOCALE_SMONTHNAME6,"junio") +LOCVAL(LOCALE_SMONTHNAME7,"julio") +LOCVAL(LOCALE_SMONTHNAME8,"agosto") +LOCVAL(LOCALE_SMONTHNAME9,"septiembre") +LOCVAL(LOCALE_SMONTHNAME10,"octubre") +LOCVAL(LOCALE_SMONTHNAME11,"noviembre") +LOCVAL(LOCALE_SMONTHNAME12,"diciembre") +LOCVAL(LOCALE_SMONTHNAME13,"") + +LOCVAL(LOCALE_SABBREVMONTHNAME1,"ene") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"feb") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"mar") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"abr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"may") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"jun") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"jul") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"ago") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"oct") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic") +LOCVAL(LOCALE_SABBREVMONTHNAME13,"") + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* calendario gregoriano */ diff --git a/ole/nls/esc.nls b/ole/nls/esc.nls new file mode 100644 index 00000000000..5a9b67dcdbe --- /dev/null +++ b/ole/nls/esc.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Spanish (Costa Rica) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +LOCVAL(LOCALE_SENGLANGUAGE,"Spanish") +LOCVAL(LOCALE_SABBREVLANGNAME,"esa") +LOCVAL(LOCALE_SNATIVELANGNAME,"Costa Rica") +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +LOCVAL(LOCALE_SENGCOUNTRY,"Costa Rica") +LOCVAL(LOCALE_SABBREVCTRYNAME,"CRI") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Costa Rica") +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +LOCVAL(LOCALE_SCURRENCY,"C") +LOCVAL(LOCALE_SINTLSYMBOL, "CRC") +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +LOCVAL(LOCALE_SMONGROUPING,"3;0") +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +LOCVAL(LOCALE_S1159, "AM") +LOCVAL(LOCALE_S2359, "PM") +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +LOCVAL(LOCALE_SDAYNAME1,"lunes") +LOCVAL(LOCALE_SDAYNAME2,"martes") +LOCVAL(LOCALE_SDAYNAME3,"mi?rcoles") +LOCVAL(LOCALE_SDAYNAME4,"jueves") +LOCVAL(LOCALE_SDAYNAME5,"viernes") +LOCVAL(LOCALE_SDAYNAME6,"s?abado") +LOCVAL(LOCALE_SDAYNAME7,"domingo") + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"mi?") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +LOCVAL(LOCALE_SMONTHNAME1,"enero") +LOCVAL(LOCALE_SMONTHNAME2,"febrero") +LOCVAL(LOCALE_SMONTHNAME3,"marzo") +LOCVAL(LOCALE_SMONTHNAME4,"abril") +LOCVAL(LOCALE_SMONTHNAME5,"mayo") +LOCVAL(LOCALE_SMONTHNAME6,"junio") +LOCVAL(LOCALE_SMONTHNAME7,"julio") +LOCVAL(LOCALE_SMONTHNAME8,"agosto") +LOCVAL(LOCALE_SMONTHNAME9,"septiembre") +LOCVAL(LOCALE_SMONTHNAME10,"octubre") +LOCVAL(LOCALE_SMONTHNAME11,"noviembre") +LOCVAL(LOCALE_SMONTHNAME12,"diciembre") +LOCVAL(LOCALE_SMONTHNAME13,"") + +LOCVAL(LOCALE_SABBREVMONTHNAME1,"ene") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"feb") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"mar") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"abr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"may") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"jun") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"jul") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"ago") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"oct") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic") +LOCVAL(LOCALE_SABBREVMONTHNAME13,"") + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* calendario gregoriano */ diff --git a/ole/nls/esd.nls b/ole/nls/esd.nls new file mode 100644 index 00000000000..a1ee8c74567 --- /dev/null +++ b/ole/nls/esd.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Spanish (Dominican Republic) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +LOCVAL(LOCALE_SENGLANGUAGE,"Spanish") +LOCVAL(LOCALE_SABBREVLANGNAME,"esd") +LOCVAL(LOCALE_SNATIVELANGNAME,"Rep?blica Dominicana") +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +LOCVAL(LOCALE_SENGCOUNTRY,"Dominican Republic") +LOCVAL(LOCALE_SABBREVCTRYNAME,"DMA") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Espa€a") +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +LOCVAL(LOCALE_SCURRENCY,"RD$") +LOCVAL(LOCALE_SINTLSYMBOL, "DOP") +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +LOCVAL(LOCALE_SMONGROUPING,"3;0") +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +LOCVAL(LOCALE_SDAYNAME1,"lunes") +LOCVAL(LOCALE_SDAYNAME2,"martes") +LOCVAL(LOCALE_SDAYNAME3,"mi?rcoles") +LOCVAL(LOCALE_SDAYNAME4,"jueves") +LOCVAL(LOCALE_SDAYNAME5,"viernes") +LOCVAL(LOCALE_SDAYNAME6,"s?abado") +LOCVAL(LOCALE_SDAYNAME7,"domingo") + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"mi?") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +LOCVAL(LOCALE_SMONTHNAME1,"enero") +LOCVAL(LOCALE_SMONTHNAME2,"febrero") +LOCVAL(LOCALE_SMONTHNAME3,"marzo") +LOCVAL(LOCALE_SMONTHNAME4,"abril") +LOCVAL(LOCALE_SMONTHNAME5,"mayo") +LOCVAL(LOCALE_SMONTHNAME6,"junio") +LOCVAL(LOCALE_SMONTHNAME7,"julio") +LOCVAL(LOCALE_SMONTHNAME8,"agosto") +LOCVAL(LOCALE_SMONTHNAME9,"septiembre") +LOCVAL(LOCALE_SMONTHNAME10,"octubre") +LOCVAL(LOCALE_SMONTHNAME11,"noviembre") +LOCVAL(LOCALE_SMONTHNAME12,"diciembre") +LOCVAL(LOCALE_SMONTHNAME13,"") + +LOCVAL(LOCALE_SABBREVMONTHNAME1,"ene") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"feb") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"mar") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"abr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"may") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"jun") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"jul") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"ago") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"oct") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic") +LOCVAL(LOCALE_SABBREVMONTHNAME13,"") + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* calendario gregoriano */ diff --git a/ole/nls/ese.nls b/ole/nls/ese.nls new file mode 100644 index 00000000000..9a410accd49 --- /dev/null +++ b/ole/nls/ese.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Spanish (El Salvador) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +LOCVAL(LOCALE_SENGLANGUAGE,"Spanish") +LOCVAL(LOCALE_SABBREVLANGNAME,"ese") +LOCVAL(LOCALE_SNATIVELANGNAME,"Espa€ol") +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +LOCVAL(LOCALE_SENGCOUNTRY,"El Salvador") +LOCVAL(LOCALE_SABBREVCTRYNAME,"SVD") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Espa€a") +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +LOCVAL(LOCALE_SCURRENCY,"C") +LOCVAL(LOCALE_SINTLSYMBOL, "SVC") +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +LOCVAL(LOCALE_SMONGROUPING,"3;0") +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +LOCVAL(LOCALE_SDAYNAME1,"lunes") +LOCVAL(LOCALE_SDAYNAME2,"martes") +LOCVAL(LOCALE_SDAYNAME3,"mi?rcoles") +LOCVAL(LOCALE_SDAYNAME4,"jueves") +LOCVAL(LOCALE_SDAYNAME5,"viernes") +LOCVAL(LOCALE_SDAYNAME6,"s?abado") +LOCVAL(LOCALE_SDAYNAME7,"domingo") + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"mi?") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +LOCVAL(LOCALE_SMONTHNAME1,"enero") +LOCVAL(LOCALE_SMONTHNAME2,"febrero") +LOCVAL(LOCALE_SMONTHNAME3,"marzo") +LOCVAL(LOCALE_SMONTHNAME4,"abril") +LOCVAL(LOCALE_SMONTHNAME5,"mayo") +LOCVAL(LOCALE_SMONTHNAME6,"junio") +LOCVAL(LOCALE_SMONTHNAME7,"julio") +LOCVAL(LOCALE_SMONTHNAME8,"agosto") +LOCVAL(LOCALE_SMONTHNAME9,"septiembre") +LOCVAL(LOCALE_SMONTHNAME10,"octubre") +LOCVAL(LOCALE_SMONTHNAME11,"noviembre") +LOCVAL(LOCALE_SMONTHNAME12,"diciembre") +LOCVAL(LOCALE_SMONTHNAME13,"") + +LOCVAL(LOCALE_SABBREVMONTHNAME1,"ene") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"feb") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"mar") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"abr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"may") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"jun") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"jul") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"ago") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"oct") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic") +LOCVAL(LOCALE_SABBREVMONTHNAME13,"") + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* calendario gregoriano */ diff --git a/ole/nls/esf.nls b/ole/nls/esf.nls new file mode 100644 index 00000000000..ee3fbeb0501 --- /dev/null +++ b/ole/nls/esf.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Spanish (Ecuador) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +LOCVAL(LOCALE_SENGLANGUAGE,"Spanish") +LOCVAL(LOCALE_SABBREVLANGNAME,"esf") +LOCVAL(LOCALE_SNATIVELANGNAME,"Espa€ol") +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +LOCVAL(LOCALE_SCOUNTRY,"Ecuador") +LOCVAL(LOCALE_SENGCOUNTRY,"Ecuador") +LOCVAL(LOCALE_SABBREVCTRYNAME,"ECU") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Ecuador") +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +LOCVAL(LOCALE_SCURRENCY,"S") +LOCVAL(LOCALE_SINTLSYMBOL, "ECS") +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +LOCVAL(LOCALE_SMONGROUPING, "3;0") +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +LOCVAL(LOCALE_SDAYNAME1,"lunes") +LOCVAL(LOCALE_SDAYNAME2,"martes") +LOCVAL(LOCALE_SDAYNAME3,"mi?rcoles") +LOCVAL(LOCALE_SDAYNAME4,"jueves") +LOCVAL(LOCALE_SDAYNAME5,"viernes") +LOCVAL(LOCALE_SDAYNAME6,"s?abado") +LOCVAL(LOCALE_SDAYNAME7,"domingo") + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"mi?") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +LOCVAL(LOCALE_SMONTHNAME2,"febrero") +LOCVAL(LOCALE_SMONTHNAME3,"marzo") +LOCVAL(LOCALE_SMONTHNAME4,"abril") +LOCVAL(LOCALE_SMONTHNAME5,"mayo") +LOCVAL(LOCALE_SMONTHNAME6,"junio") +LOCVAL(LOCALE_SMONTHNAME7,"julio") +LOCVAL(LOCALE_SMONTHNAME8,"agosto") +LOCVAL(LOCALE_SMONTHNAME9,"septiembre") +LOCVAL(LOCALE_SMONTHNAME10,"octubre") +LOCVAL(LOCALE_SMONTHNAME11,"noviembre") +LOCVAL(LOCALE_SMONTHNAME12,"diciembre") +LOCVAL(LOCALE_SMONTHNAME13,"") + +LOCVAL(LOCALE_SABBREVMONTHNAME1,"ene") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"feb") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"mar") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"abr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"may") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"jun") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"jul") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"ago") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"oct") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic") +LOCVAL(LOCALE_SABBREVMONTHNAME13,"") + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* calendario gregoriano */ diff --git a/ole/nls/esg.nls b/ole/nls/esg.nls new file mode 100644 index 00000000000..cee3e236412 --- /dev/null +++ b/ole/nls/esg.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Spanish (Guatemala) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +LOCVAL(LOCALE_SENGLANGUAGE,"Spanish") +LOCVAL(LOCALE_SABBREVLANGNAME,"esg") +LOCVAL(LOCALE_SNATIVELANGNAME,"Espa€ol") +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +LOCVAL(LOCALE_SCOUNTRY,"Guatemala") +LOCVAL(LOCALE_SENGCOUNTRY,"Guatemala") +LOCVAL(LOCALE_SABBREVCTRYNAME,"GTM") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Guatemala") +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +LOCVAL(LOCALE_SCURRENCY,"Q") +LOCVAL(LOCALE_SINTLSYMBOL, "GTQ") +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +LOCVAL(LOCALE_SMONGROUPING, "3;0") +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +LOCVAL(LOCALE_SDAYNAME1,"lunes") +LOCVAL(LOCALE_SDAYNAME2,"martes") +LOCVAL(LOCALE_SDAYNAME3,"mi?rcoles") +LOCVAL(LOCALE_SDAYNAME4,"jueves") +LOCVAL(LOCALE_SDAYNAME5,"viernes") +LOCVAL(LOCALE_SDAYNAME6,"s?abado") +LOCVAL(LOCALE_SDAYNAME7,"domingo") + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"mi?") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +LOCVAL(LOCALE_SMONTHNAME2,"febrero") +LOCVAL(LOCALE_SMONTHNAME3,"marzo") +LOCVAL(LOCALE_SMONTHNAME4,"abril") +LOCVAL(LOCALE_SMONTHNAME5,"mayo") +LOCVAL(LOCALE_SMONTHNAME6,"junio") +LOCVAL(LOCALE_SMONTHNAME7,"julio") +LOCVAL(LOCALE_SMONTHNAME8,"agosto") +LOCVAL(LOCALE_SMONTHNAME9,"septiembre") +LOCVAL(LOCALE_SMONTHNAME10,"octubre") +LOCVAL(LOCALE_SMONTHNAME11,"noviembre") +LOCVAL(LOCALE_SMONTHNAME12,"diciembre") +LOCVAL(LOCALE_SMONTHNAME13,"") + +LOCVAL(LOCALE_SABBREVMONTHNAME1,"ene") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"feb") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"mar") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"abr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"may") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"jun") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"jul") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"ago") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"oct") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic") +LOCVAL(LOCALE_SABBREVMONTHNAME13,"") + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* calendario gregoriano */ diff --git a/ole/nls/esh.nls b/ole/nls/esh.nls index 9a8a9f1719f..bd2e743c156 100644 --- a/ole/nls/esh.nls +++ b/ole/nls/esh.nls @@ -4,17 +4,18 @@ */ /* LOCVAL(LOCALE_ILANGUAGE,"") */ -/* LOCVAL(LOCALE_SLANGUAGE,"") */ -LOCVAL(LOCALE_SENGLANGUAGE,"Spanish") +LOCVAL(LOCALE_SLANGUAGE,"Español (Honduras)") +LOCVAL(LOCALE_SENGLANGUAGE,"Spanish (Honduras)") LOCVAL(LOCALE_SABBREVLANGNAME,"esh") -/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +LOCVAL(LOCALE_SNATIVELANGNAME,"Español (Honduras)") /* LOCVAL(LOCALE_ICOUNTRY,"") */ -/* LOCVAL(LOCALE_SCOUNTRY,"") */ -LOCVAL(LOCALE_SENGCOUNTRY,"Spain") -/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ -/* LOCVAL(LOCALE_SNATIVECTRYNAME,"Espa€a") */ +LOCVAL(LOCALE_SCOUNTRY,"Honduras") +LOCVAL(LOCALE_SENGCOUNTRY,"Honduras") +LOCVAL(LOCALE_SABBREVCTRYNAME,"HND") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Honduras") /* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ /* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +LOCVAL(LOCALE_IDEFAULTCODEPAGE,"850") /* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ /* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ /* LOCVAL(LOCALE_SLIST,"") */ @@ -26,8 +27,8 @@ LOCVAL(LOCALE_SENGCOUNTRY,"Spain") /* LOCVAL(LOCALE_ILZERO,"1") */ /* LOCVAL(LOCALE_INEGNUMBER) */ LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") -LOCVAL(LOCALE_SCURRENCY,"Pts") -LOCVAL(LOCALE_SINTLSYMBOL, "ESP") +LOCVAL(LOCALE_SCURRENCY,"L") +LOCVAL(LOCALE_SINTLSYMBOL, "HNL") /* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ /* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ /* LOCVAL(LOCALE_SMONGROUPING) */ @@ -57,21 +58,21 @@ LOCVAL(LOCALE_SINTLSYMBOL, "ESP") LOCVAL(LOCALE_SDAYNAME1,"lunes") LOCVAL(LOCALE_SDAYNAME2,"martes") -LOCVAL(LOCALE_SDAYNAME3,"mi?rcoles") +LOCVAL(LOCALE_SDAYNAME3,"miércoles") LOCVAL(LOCALE_SDAYNAME4,"jueves") LOCVAL(LOCALE_SDAYNAME5,"viernes") -LOCVAL(LOCALE_SDAYNAME6,"s?abado") +LOCVAL(LOCALE_SDAYNAME6,"sábado") LOCVAL(LOCALE_SDAYNAME7,"domingo") -/* LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME3,"mi?") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ +LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") +LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") +LOCVAL(LOCALE_SABBREVDAYNAME3,"mié") +LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") +LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") +LOCVAL(LOCALE_SABBREVDAYNAME6,"sáb") +LOCVAL(LOCALE_SABBREVDAYNAME7,"dom") -/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +LOCVAL(LOCALE_SMONTHNAME1,"enero") LOCVAL(LOCALE_SMONTHNAME2,"febrero") LOCVAL(LOCALE_SMONTHNAME3,"marzo") LOCVAL(LOCALE_SMONTHNAME4,"abril") @@ -99,8 +100,8 @@ LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic") LOCVAL(LOCALE_SABBREVMONTHNAME13,"") -/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ -/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +LOCVAL(LOCALE_SPOSITIVESIGN, "") +LOCVAL(LOCALE_SNEGATIVESIGN, "-") /* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ /* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ /* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ @@ -108,3 +109,4 @@ LOCVAL(LOCALE_SABBREVMONTHNAME13,"") /* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ /* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ +/* calendario gregoriano */ diff --git a/ole/nls/esi.nls b/ole/nls/esi.nls index 2c5f881e168..57b05389e28 100644 --- a/ole/nls/esi.nls +++ b/ole/nls/esi.nls @@ -4,18 +4,18 @@ */ /* LOCVAL(LOCALE_ILANGUAGE,"") */ -/* LOCVAL(LOCALE_SLANGUAGE,"") */ -LOCVAL(LOCALE_SENGLANGUAGE,"Spanish") +LOCVAL(LOCALE_SLANGUAGE,"Español (Nicaragua)") +LOCVAL(LOCALE_SENGLANGUAGE,"Spanish (Nicaragua)") LOCVAL(LOCALE_SABBREVLANGNAME,"esi") -/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +LOCVAL(LOCALE_SNATIVELANGNAME,"Español (Nicaragua)") /* LOCVAL(LOCALE_ICOUNTRY,"") */ -/* LOCVAL(LOCALE_SCOUNTRY,"") */ -LOCVAL(LOCALE_SENGCOUNTRY,"Spain") -/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ -/* LOCVAL(LOCALE_SNATIVECTRYNAME,"Espa€a") */ +LOCVAL(LOCALE_SCOUNTRY,"Nicaragua") +LOCVAL(LOCALE_SENGCOUNTRY,"Nicaragua") +LOCVAL(LOCALE_SABBREVCTRYNAME,"NIC") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Nicaragua") /* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ /* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ -/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +LOCVAL(LOCALE_IDEFAULTCODEPAGE,"850") /* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ /* LOCVAL(LOCALE_SLIST,"") */ /* LOCVAL(LOCALE_IMEASURE,"") */ @@ -26,8 +26,8 @@ LOCVAL(LOCALE_SENGCOUNTRY,"Spain") /* LOCVAL(LOCALE_ILZERO,"1") */ /* LOCVAL(LOCALE_INEGNUMBER) */ LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") -LOCVAL(LOCALE_SCURRENCY,"Pts") -LOCVAL(LOCALE_SINTLSYMBOL, "ESP") +/* LOCVAL(LOCALE_SCURRENCY,"") */ +LOCVAL(LOCALE_SINTLSYMBOL, "NIO") /* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ /* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ /* LOCVAL(LOCALE_SMONGROUPING) */ @@ -57,21 +57,21 @@ LOCVAL(LOCALE_SINTLSYMBOL, "ESP") LOCVAL(LOCALE_SDAYNAME1,"lunes") LOCVAL(LOCALE_SDAYNAME2,"martes") -LOCVAL(LOCALE_SDAYNAME3,"mi?rcoles") +LOCVAL(LOCALE_SDAYNAME3,"miércoles") LOCVAL(LOCALE_SDAYNAME4,"jueves") LOCVAL(LOCALE_SDAYNAME5,"viernes") -LOCVAL(LOCALE_SDAYNAME6,"s?abado") +LOCVAL(LOCALE_SDAYNAME6,"sábado") LOCVAL(LOCALE_SDAYNAME7,"domingo") -/* LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME3,"mi?") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ +LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") +LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") +LOCVAL(LOCALE_SABBREVDAYNAME3,"mié") +LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") +LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") +LOCVAL(LOCALE_SABBREVDAYNAME6,"sáb") +LOCVAL(LOCALE_SABBREVDAYNAME7,"dom") -/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +LOCVAL(LOCALE_SMONTHNAME1,"enero") LOCVAL(LOCALE_SMONTHNAME2,"febrero") LOCVAL(LOCALE_SMONTHNAME3,"marzo") LOCVAL(LOCALE_SMONTHNAME4,"abril") @@ -99,8 +99,8 @@ LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic") LOCVAL(LOCALE_SABBREVMONTHNAME13,"") -/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ -/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +LOCVAL(LOCALE_SPOSITIVESIGN, "") +LOCVAL(LOCALE_SNEGATIVESIGN, "-") /* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ /* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ /* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ @@ -108,3 +108,5 @@ LOCVAL(LOCALE_SABBREVMONTHNAME13,"") /* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ /* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ +/* calendario gregoriano */ + diff --git a/ole/nls/esl.nls b/ole/nls/esl.nls new file mode 100644 index 00000000000..2f9339a0fa9 --- /dev/null +++ b/ole/nls/esl.nls @@ -0,0 +1,110 @@ +/* + * OLE2NLS library + * Spanish (Chile) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +LOCVAL(LOCALE_SLANGUAGE,"Spanish (Chile)") +LOCVAL(LOCALE_SENGLANGUAGE,"Spanish") +LOCVAL(LOCALE_SABBREVLANGNAME,"esl") +LOCVAL(LOCALE_SNATIVELANGNAME,"Espa€ol") +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +LOCVAL(LOCALE_SENGCOUNTRY,"Chile") +LOCVAL(LOCALE_SABBREVCTRYNAME,"CHL") +/* LOCVAL(LOCALE_SNATIVECTRYNAME,"Chile") */ +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +LOCVAL(LOCALE_SCURRENCY,"Ch$") +LOCVAL(LOCALE_SINTLSYMBOL, "CLP") +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +/* LOCVAL(LOCALE_SMONGROUPING) */ +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +LOCVAL(LOCALE_SDAYNAME1,"lunes") +LOCVAL(LOCALE_SDAYNAME2,"martes") +LOCVAL(LOCALE_SDAYNAME3,"mi?rcoles") +LOCVAL(LOCALE_SDAYNAME4,"jueves") +LOCVAL(LOCALE_SDAYNAME5,"viernes") +LOCVAL(LOCALE_SDAYNAME6,"s?abado") +LOCVAL(LOCALE_SDAYNAME7,"domingo") + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"mi?") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +LOCVAL(LOCALE_SMONTHNAME2,"febrero") +LOCVAL(LOCALE_SMONTHNAME3,"marzo") +LOCVAL(LOCALE_SMONTHNAME4,"abril") +LOCVAL(LOCALE_SMONTHNAME5,"mayo") +LOCVAL(LOCALE_SMONTHNAME6,"junio") +LOCVAL(LOCALE_SMONTHNAME7,"julio") +LOCVAL(LOCALE_SMONTHNAME8,"agosto") +LOCVAL(LOCALE_SMONTHNAME9,"septiembre") +LOCVAL(LOCALE_SMONTHNAME10,"octubre") +LOCVAL(LOCALE_SMONTHNAME11,"noviembre") +LOCVAL(LOCALE_SMONTHNAME12,"diciembre") +LOCVAL(LOCALE_SMONTHNAME13,"") + +LOCVAL(LOCALE_SABBREVMONTHNAME1,"ene") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"feb") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"mar") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"abr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"may") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"jun") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"jul") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"ago") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"oct") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic") +LOCVAL(LOCALE_SABBREVMONTHNAME13,"") + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + diff --git a/ole/nls/esm.nls b/ole/nls/esm.nls index 63023c6cc03..699059417b5 100644 --- a/ole/nls/esm.nls +++ b/ole/nls/esm.nls @@ -1,21 +1,21 @@ /* * OLE2NLS library - * Mexiko + * Mexico */ /* LOCVAL(LOCALE_ILANGUAGE,"") */ -/* LOCVAL(LOCALE_SLANGUAGE,"") */ -LOCVAL(LOCALE_SENGLANGUAGE,"Spanish") +LOCVAL(LOCALE_SLANGUAGE,"Español (Mexico)") +LOCVAL(LOCALE_SENGLANGUAGE,"Spanish (Mexico)") LOCVAL(LOCALE_SABBREVLANGNAME,"esm") -/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +LOCVAL(LOCALE_SNATIVELANGNAME,"Español (Mexico)") /* LOCVAL(LOCALE_ICOUNTRY,"") */ -/* LOCVAL(LOCALE_SCOUNTRY,"") */ +LOCVAL(LOCALE_SCOUNTRY,"Mexico") LOCVAL(LOCALE_SENGCOUNTRY,"Mexico") -/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ -/* LOCVAL(LOCALE_SNATIVECTRYNAME,"Espa€a") */ +LOCVAL(LOCALE_SABBREVCTRYNAME,"Mx") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Mexico") /* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ /* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ -/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +LOCVAL(LOCALE_IDEFAULTCODEPAGE,"850") /* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ /* LOCVAL(LOCALE_SLIST,"") */ /* LOCVAL(LOCALE_IMEASURE,"") */ @@ -30,7 +30,7 @@ LOCVAL(LOCALE_SCURRENCY,"$") LOCVAL(LOCALE_SINTLSYMBOL, "MXN") /* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ /* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ -/* LOCVAL(LOCALE_SMONGROUPING) */ +LOCVAL(LOCALE_SMONGROUPING, "3;0") /* LOCVAL(LOCALE_ICURRDIGITS,"2") */ /* LOCVAL(LOCALE_IINTLCURRDIGITS) */ /* LOCVAL(LOCALE_ICURRENCY,"3") */ @@ -57,50 +57,50 @@ LOCVAL(LOCALE_SINTLSYMBOL, "MXN") LOCVAL(LOCALE_SDAYNAME1,"lunes") LOCVAL(LOCALE_SDAYNAME2,"martes") -LOCVAL(LOCALE_SDAYNAME3,"mi?rcoles") +LOCVAL(LOCALE_SDAYNAME3,"miércoles") LOCVAL(LOCALE_SDAYNAME4,"jueves") LOCVAL(LOCALE_SDAYNAME5,"viernes") -LOCVAL(LOCALE_SDAYNAME6,"s?abado") +LOCVAL(LOCALE_SDAYNAME6,"sábado") LOCVAL(LOCALE_SDAYNAME7,"domingo") -/* LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME3,"mi?") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ +LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") +LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") +LOCVAL(LOCALE_SABBREVDAYNAME3,"mié") +LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") +LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") +LOCVAL(LOCALE_SABBREVDAYNAME6,"sáb") +LOCVAL(LOCALE_SABBREVDAYNAME7,"dom") -/* LOCVAL(LOCALE_SMONTHNAME1,"") */ -LOCVAL(LOCALE_SMONTHNAME2,"febrero") -LOCVAL(LOCALE_SMONTHNAME3,"marzo") -LOCVAL(LOCALE_SMONTHNAME4,"abril") -LOCVAL(LOCALE_SMONTHNAME5,"mayo") -LOCVAL(LOCALE_SMONTHNAME6,"junio") -LOCVAL(LOCALE_SMONTHNAME7,"julio") -LOCVAL(LOCALE_SMONTHNAME8,"agosto") -LOCVAL(LOCALE_SMONTHNAME9,"septiembre") -LOCVAL(LOCALE_SMONTHNAME10,"octubre") -LOCVAL(LOCALE_SMONTHNAME11,"noviembre") -LOCVAL(LOCALE_SMONTHNAME12,"diciembre") +LOCVAL(LOCALE_SMONTHNAME1,"Enero") +LOCVAL(LOCALE_SMONTHNAME2,"Febrero") +LOCVAL(LOCALE_SMONTHNAME3,"Marzo") +LOCVAL(LOCALE_SMONTHNAME4,"Abril") +LOCVAL(LOCALE_SMONTHNAME5,"Mayo") +LOCVAL(LOCALE_SMONTHNAME6,"Junio") +LOCVAL(LOCALE_SMONTHNAME7,"Julio") +LOCVAL(LOCALE_SMONTHNAME8,"Agosto") +LOCVAL(LOCALE_SMONTHNAME9,"Septiembre") +LOCVAL(LOCALE_SMONTHNAME10,"Octubre") +LOCVAL(LOCALE_SMONTHNAME11,"Noviembre") +LOCVAL(LOCALE_SMONTHNAME12,"Diciembre") LOCVAL(LOCALE_SMONTHNAME13,"") -LOCVAL(LOCALE_SABBREVMONTHNAME1,"ene") -LOCVAL(LOCALE_SABBREVMONTHNAME2,"feb") -LOCVAL(LOCALE_SABBREVMONTHNAME3,"mar") -LOCVAL(LOCALE_SABBREVMONTHNAME4,"abr") -LOCVAL(LOCALE_SABBREVMONTHNAME5,"may") -LOCVAL(LOCALE_SABBREVMONTHNAME6,"jun") -LOCVAL(LOCALE_SABBREVMONTHNAME7,"jul") -LOCVAL(LOCALE_SABBREVMONTHNAME8,"ago") -LOCVAL(LOCALE_SABBREVMONTHNAME9,"sep") -LOCVAL(LOCALE_SABBREVMONTHNAME10,"oct") -LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") -LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic") +LOCVAL(LOCALE_SABBREVMONTHNAME1,"Ene") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"Feb") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"Mar") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"Abr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"May") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"Jun") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"Jul") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"Ago") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"Sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"Oct") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"Nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"Dic") LOCVAL(LOCALE_SABBREVMONTHNAME13,"") -/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ -/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +LOCVAL(LOCALE_SPOSITIVESIGN, "") +LOCVAL(LOCALE_SNEGATIVESIGN, "-") /* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ /* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ /* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ @@ -108,3 +108,4 @@ LOCVAL(LOCALE_SABBREVMONTHNAME13,"") /* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ /* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ +/* calendario gregoriano */ diff --git a/ole/nls/esn.nls b/ole/nls/esn.nls index 6834c2a3caa..680f048c0c3 100644 --- a/ole/nls/esn.nls +++ b/ole/nls/esn.nls @@ -1,21 +1,21 @@ /* * OLE2NLS library - * Spanish (Modern) + * Spanish (Modern Sort) */ /* LOCVAL(LOCALE_ILANGUAGE,"") */ -/* LOCVAL(LOCALE_SLANGUAGE,"") */ -LOCVAL(LOCALE_SENGLANGUAGE,"Spanish") +LOCVAL(LOCALE_SLANGUAGE,"Español") +LOCVAL(LOCALE_SENGLANGUAGE,"Spanish - Modern Sort") LOCVAL(LOCALE_SABBREVLANGNAME,"esn") -/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +LOCVAL(LOCALE_SNATIVELANGNAME,"Español (Moderno)") /* LOCVAL(LOCALE_ICOUNTRY,"") */ /* LOCVAL(LOCALE_SCOUNTRY,"") */ LOCVAL(LOCALE_SENGCOUNTRY,"Spain") -/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ -/* LOCVAL(LOCALE_SNATIVECTRYNAME,"Espa€a") */ +LOCVAL(LOCALE_SABBREVCTRYNAME,"Es") +LOCVAL(LOCALE_SNATIVECTRYNAME,"España") /* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ /* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ -/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +LOCVAL(LOCALE_IDEFAULTCODEPAGE,"850") /* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ /* LOCVAL(LOCALE_SLIST,"") */ /* LOCVAL(LOCALE_IMEASURE,"") */ @@ -30,7 +30,7 @@ LOCVAL(LOCALE_SCURRENCY,"Pts") LOCVAL(LOCALE_SINTLSYMBOL, "ESP") /* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ /* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ -/* LOCVAL(LOCALE_SMONGROUPING) */ +LOCVAL(LOCALE_SMONGROUPING, "3;0") /* LOCVAL(LOCALE_ICURRDIGITS,"2") */ /* LOCVAL(LOCALE_IINTLCURRDIGITS) */ /* LOCVAL(LOCALE_ICURRENCY,"3") */ @@ -57,21 +57,21 @@ LOCVAL(LOCALE_SINTLSYMBOL, "ESP") LOCVAL(LOCALE_SDAYNAME1,"lunes") LOCVAL(LOCALE_SDAYNAME2,"martes") -LOCVAL(LOCALE_SDAYNAME3,"mi?rcoles") +LOCVAL(LOCALE_SDAYNAME3,"miércoles") LOCVAL(LOCALE_SDAYNAME4,"jueves") LOCVAL(LOCALE_SDAYNAME5,"viernes") -LOCVAL(LOCALE_SDAYNAME6,"s?abado") +LOCVAL(LOCALE_SDAYNAME6,"sábado") LOCVAL(LOCALE_SDAYNAME7,"domingo") -/* LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME3,"mi?") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ +LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") +LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") +LOCVAL(LOCALE_SABBREVDAYNAME3,"mié") +LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") +LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") +LOCVAL(LOCALE_SABBREVDAYNAME6,"sáb") +LOCVAL(LOCALE_SABBREVDAYNAME7,"dom") -/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +LOCVAL(LOCALE_SMONTHNAME1,"enero") LOCVAL(LOCALE_SMONTHNAME2,"febrero") LOCVAL(LOCALE_SMONTHNAME3,"marzo") LOCVAL(LOCALE_SMONTHNAME4,"abril") @@ -99,8 +99,8 @@ LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic") LOCVAL(LOCALE_SABBREVMONTHNAME13,"") -/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ -/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +LOCVAL(LOCALE_SPOSITIVESIGN, "") +LOCVAL(LOCALE_SNEGATIVESIGN, "-") /* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ /* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ /* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ @@ -108,3 +108,4 @@ LOCVAL(LOCALE_SABBREVMONTHNAME13,"") /* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ /* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ +/* calendario gregoriano */ diff --git a/ole/nls/eso.nls b/ole/nls/eso.nls new file mode 100644 index 00000000000..8780105a6d5 --- /dev/null +++ b/ole/nls/eso.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Spanish (Colombia) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +LOCVAL(LOCALE_SENGLANGUAGE,"Spanish") +LOCVAL(LOCALE_SABBREVLANGNAME,"esg") +LOCVAL(LOCALE_SNATIVELANGNAME,"Espa€ol") +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +LOCVAL(LOCALE_SCOUNTRY,"Colombia") +LOCVAL(LOCALE_SENGCOUNTRY,"Colombia") +LOCVAL(LOCALE_SABBREVCTRYNAME,"COL") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Colombia") +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +LOCVAL(LOCALE_SCURRENCY,"C$") +LOCVAL(LOCALE_SINTLSYMBOL, "COP") +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +LOCVAL(LOCALE_SMONGROUPING, "3;0") +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +LOCVAL(LOCALE_SDAYNAME1,"lunes") +LOCVAL(LOCALE_SDAYNAME2,"martes") +LOCVAL(LOCALE_SDAYNAME3,"mi?rcoles") +LOCVAL(LOCALE_SDAYNAME4,"jueves") +LOCVAL(LOCALE_SDAYNAME5,"viernes") +LOCVAL(LOCALE_SDAYNAME6,"s?abado") +LOCVAL(LOCALE_SDAYNAME7,"domingo") + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"mi?") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +LOCVAL(LOCALE_SMONTHNAME2,"febrero") +LOCVAL(LOCALE_SMONTHNAME3,"marzo") +LOCVAL(LOCALE_SMONTHNAME4,"abril") +LOCVAL(LOCALE_SMONTHNAME5,"mayo") +LOCVAL(LOCALE_SMONTHNAME6,"junio") +LOCVAL(LOCALE_SMONTHNAME7,"julio") +LOCVAL(LOCALE_SMONTHNAME8,"agosto") +LOCVAL(LOCALE_SMONTHNAME9,"septiembre") +LOCVAL(LOCALE_SMONTHNAME10,"octubre") +LOCVAL(LOCALE_SMONTHNAME11,"noviembre") +LOCVAL(LOCALE_SMONTHNAME12,"diciembre") +LOCVAL(LOCALE_SMONTHNAME13,"") + +LOCVAL(LOCALE_SABBREVMONTHNAME1,"ene") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"feb") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"mar") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"abr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"may") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"jun") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"jul") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"ago") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"oct") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic") +LOCVAL(LOCALE_SABBREVMONTHNAME13,"") + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* calendario gregoriano */ diff --git a/ole/nls/esp.nls b/ole/nls/esp.nls index 5191e89b398..dbbc0f3c9a8 100644 --- a/ole/nls/esp.nls +++ b/ole/nls/esp.nls @@ -4,18 +4,18 @@ */ /* LOCVAL(LOCALE_ILANGUAGE,"") */ -/* LOCVAL(LOCALE_SLANGUAGE,"") */ -LOCVAL(LOCALE_SENGLANGUAGE,"Spanish") +LOCVAL(LOCALE_SLANGUAGE,"Español") +LOCVAL(LOCALE_SENGLANGUAGE,"Spanish - Traditional Sort") LOCVAL(LOCALE_SABBREVLANGNAME,"esp") -/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +LOCVAL(LOCALE_SNATIVELANGNAME,"Español") /* LOCVAL(LOCALE_ICOUNTRY,"") */ -/* LOCVAL(LOCALE_SCOUNTRY,"") */ +LOCVAL(LOCALE_SCOUNTRY,"España") LOCVAL(LOCALE_SENGCOUNTRY,"Spain") -/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ -/* LOCVAL(LOCALE_SNATIVECTRYNAME,"Espa€a") */ +LOCVAL(LOCALE_SABBREVCTRYNAME,"Es") +LOCVAL(LOCALE_SNATIVECTRYNAME,"España") /* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ /* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ -/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +LOCVAL(LOCALE_IDEFAULTCODEPAGE,"850") /* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ /* LOCVAL(LOCALE_SLIST,"") */ /* LOCVAL(LOCALE_IMEASURE,"") */ @@ -30,7 +30,7 @@ LOCVAL(LOCALE_SCURRENCY,"Pts") LOCVAL(LOCALE_SINTLSYMBOL, "ESP") /* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ /* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ -/* LOCVAL(LOCALE_SMONGROUPING) */ +LOCVAL(LOCALE_SMONGROUPING, "3;0") /* LOCVAL(LOCALE_ICURRDIGITS,"2") */ /* LOCVAL(LOCALE_IINTLCURRDIGITS) */ /* LOCVAL(LOCALE_ICURRENCY,"3") */ @@ -57,21 +57,21 @@ LOCVAL(LOCALE_SINTLSYMBOL, "ESP") LOCVAL(LOCALE_SDAYNAME1,"lunes") LOCVAL(LOCALE_SDAYNAME2,"martes") -LOCVAL(LOCALE_SDAYNAME3,"mi?rcoles") +LOCVAL(LOCALE_SDAYNAME3,"miércoles") LOCVAL(LOCALE_SDAYNAME4,"jueves") LOCVAL(LOCALE_SDAYNAME5,"viernes") -LOCVAL(LOCALE_SDAYNAME6,"s?abado") +LOCVAL(LOCALE_SDAYNAME6,"sábado") LOCVAL(LOCALE_SDAYNAME7,"domingo") -/* LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME3,"mi?") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ +LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") +LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") +LOCVAL(LOCALE_SABBREVDAYNAME3,"mié") +LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") +LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") +LOCVAL(LOCALE_SABBREVDAYNAME6,"sáb") +LOCVAL(LOCALE_SABBREVDAYNAME7,"dom") -/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +LOCVAL(LOCALE_SMONTHNAME1,"enero") LOCVAL(LOCALE_SMONTHNAME2,"febrero") LOCVAL(LOCALE_SMONTHNAME3,"marzo") LOCVAL(LOCALE_SMONTHNAME4,"abril") @@ -99,8 +99,8 @@ LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic") LOCVAL(LOCALE_SABBREVMONTHNAME13,"") -/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ -/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +LOCVAL(LOCALE_SPOSITIVESIGN, "") +LOCVAL(LOCALE_SNEGATIVESIGN, "-") /* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ /* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ /* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ @@ -108,3 +108,4 @@ LOCVAL(LOCALE_SABBREVMONTHNAME13,"") /* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ /* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ +/* calendario gregoriano */ diff --git a/ole/nls/esr.nls b/ole/nls/esr.nls new file mode 100644 index 00000000000..36027af6fa6 --- /dev/null +++ b/ole/nls/esr.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Spanish (Peru) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +LOCVAL(LOCALE_SENGLANGUAGE,"Spanish") +LOCVAL(LOCALE_SABBREVLANGNAME,"esf") +LOCVAL(LOCALE_SNATIVELANGNAME,"Espa€ol") +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +LOCVAL(LOCALE_SCOUNTRY,"Peru") +LOCVAL(LOCALE_SENGCOUNTRY,"Peru") +LOCVAL(LOCALE_SABBREVCTRYNAME,"PER") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Peru") +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +LOCVAL(LOCALE_SCURRENCY,"S") +LOCVAL(LOCALE_SINTLSYMBOL, "PES") +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +LOCVAL(LOCALE_SMONGROUPING, "3;0") +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +LOCVAL(LOCALE_SDAYNAME1,"lunes") +LOCVAL(LOCALE_SDAYNAME2,"martes") +LOCVAL(LOCALE_SDAYNAME3,"mi?rcoles") +LOCVAL(LOCALE_SDAYNAME4,"jueves") +LOCVAL(LOCALE_SDAYNAME5,"viernes") +LOCVAL(LOCALE_SDAYNAME6,"s?abado") +LOCVAL(LOCALE_SDAYNAME7,"domingo") + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"mi?") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +LOCVAL(LOCALE_SMONTHNAME2,"febrero") +LOCVAL(LOCALE_SMONTHNAME3,"marzo") +LOCVAL(LOCALE_SMONTHNAME4,"abril") +LOCVAL(LOCALE_SMONTHNAME5,"mayo") +LOCVAL(LOCALE_SMONTHNAME6,"junio") +LOCVAL(LOCALE_SMONTHNAME7,"julio") +LOCVAL(LOCALE_SMONTHNAME8,"agosto") +LOCVAL(LOCALE_SMONTHNAME9,"septiembre") +LOCVAL(LOCALE_SMONTHNAME10,"octubre") +LOCVAL(LOCALE_SMONTHNAME11,"noviembre") +LOCVAL(LOCALE_SMONTHNAME12,"diciembre") +LOCVAL(LOCALE_SMONTHNAME13,"") + +LOCVAL(LOCALE_SABBREVMONTHNAME1,"ene") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"feb") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"mar") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"abr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"may") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"jun") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"jul") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"ago") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"oct") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic") +LOCVAL(LOCALE_SABBREVMONTHNAME13,"") + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* calendario gregoriano */ diff --git a/ole/nls/ess.nls b/ole/nls/ess.nls new file mode 100644 index 00000000000..6bea7816368 --- /dev/null +++ b/ole/nls/ess.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Spanish (Argentinia) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +LOCVAL(LOCALE_SENGLANGUAGE,"Spanish") +LOCVAL(LOCALE_SABBREVLANGNAME,"esg") +LOCVAL(LOCALE_SNATIVELANGNAME,"Espa€ol") +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +LOCVAL(LOCALE_SCOUNTRY,"Argentinia") +LOCVAL(LOCALE_SENGCOUNTRY,"Argentinia") +LOCVAL(LOCALE_SABBREVCTRYNAME,"ARG") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Argentinia") +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +LOCVAL(LOCALE_SCURRENCY,"$") +LOCVAL(LOCALE_SINTLSYMBOL, "ARS") +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +LOCVAL(LOCALE_SMONGROUPING, "3;0") +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +LOCVAL(LOCALE_S1159, "AM") +LOCVAL(LOCALE_S2359, "PM") +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +LOCVAL(LOCALE_SDAYNAME1,"lunes") +LOCVAL(LOCALE_SDAYNAME2,"martes") +LOCVAL(LOCALE_SDAYNAME3,"mi?rcoles") +LOCVAL(LOCALE_SDAYNAME4,"jueves") +LOCVAL(LOCALE_SDAYNAME5,"viernes") +LOCVAL(LOCALE_SDAYNAME6,"s?abado") +LOCVAL(LOCALE_SDAYNAME7,"domingo") + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"mi?") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +LOCVAL(LOCALE_SMONTHNAME2,"febrero") +LOCVAL(LOCALE_SMONTHNAME3,"marzo") +LOCVAL(LOCALE_SMONTHNAME4,"abril") +LOCVAL(LOCALE_SMONTHNAME5,"mayo") +LOCVAL(LOCALE_SMONTHNAME6,"junio") +LOCVAL(LOCALE_SMONTHNAME7,"julio") +LOCVAL(LOCALE_SMONTHNAME8,"agosto") +LOCVAL(LOCALE_SMONTHNAME9,"septiembre") +LOCVAL(LOCALE_SMONTHNAME10,"octubre") +LOCVAL(LOCALE_SMONTHNAME11,"noviembre") +LOCVAL(LOCALE_SMONTHNAME12,"diciembre") +LOCVAL(LOCALE_SMONTHNAME13,"") + +LOCVAL(LOCALE_SABBREVMONTHNAME1,"ene") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"feb") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"mar") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"abr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"may") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"jun") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"jul") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"ago") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"oct") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic") +LOCVAL(LOCALE_SABBREVMONTHNAME13,"") + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* calendario gregoriano */ diff --git a/ole/nls/est.nls b/ole/nls/est.nls index 3a453a22470..7a29465a130 100644 --- a/ole/nls/est.nls +++ b/ole/nls/est.nls @@ -5,13 +5,13 @@ /* LOCVAL(LOCALE_ILANGUAGE,"") */ /* LOCVAL(LOCALE_SLANGUAGE,"") */ -/* LOCVAL(LOCALE_SENGLANGUAGE,"") */ +LOCVAL(LOCALE_SENGLANGUAGE,"Estonian") LOCVAL(LOCALE_SABBREVLANGNAME,"est") /* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ /* LOCVAL(LOCALE_ICOUNTRY,"") */ /* LOCVAL(LOCALE_SCOUNTRY,"") */ -/* LOCVAL(LOCALE_SENGCOUNTRY,"") */ -/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ +LOCVAL(LOCALE_SENGCOUNTRY,"Estonia") +LOCVAL(LOCALE_SABBREVCTRYNAME,"Ee") /* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ /* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ /* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ @@ -27,7 +27,7 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"est") /* LOCVAL(LOCALE_INEGNUMBER) */ /* LOCVAL(LOCALE_SNATIVEDIGITS) */ /* LOCVAL(LOCALE_SCURRENCY,"") */ -/* LOCVAL(LOCALE_SINTLSYMBOL) */ +LOCVAL(LOCALE_SINTLSYMBOL,"EEK") /* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ /* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ /* LOCVAL(LOCALE_SMONGROUPING) */ @@ -55,52 +55,52 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"est") /* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ /* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ -/* LOCVAL(LOCALE_SDAYNAME1,"") */ -/* LOCVAL(LOCALE_SDAYNAME2,"") */ -/* LOCVAL(LOCALE_SDAYNAME3,"") */ -/* LOCVAL(LOCALE_SDAYNAME4,"") */ -/* LOCVAL(LOCALE_SDAYNAME5,"") */ -/* LOCVAL(LOCALE_SDAYNAME6,"") */ -/* LOCVAL(LOCALE_SDAYNAME7,"") */ +LOCVAL(LOCALE_SDAYNAME1,"esmaspäev") +LOCVAL(LOCALE_SDAYNAME2,"teisipäev") +LOCVAL(LOCALE_SDAYNAME3,"kolmapäev") +LOCVAL(LOCALE_SDAYNAME4,"meljapäev") +LOCVAL(LOCALE_SDAYNAME5,"reede") +LOCVAL(LOCALE_SDAYNAME6,"laupäev") +LOCVAL(LOCALE_SDAYNAME7,"pühapäev") -/* LOCVAL(LOCALE_SABBREVDAYNAME1,"Ma") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME2,"Ti") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME3,"On") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME4,"To") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME6,"Lø") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME7,"Sø") */ +LOCVAL(LOCALE_SABBREVDAYNAME1,"E") +LOCVAL(LOCALE_SABBREVDAYNAME2,"T") +LOCVAL(LOCALE_SABBREVDAYNAME3,"K") +LOCVAL(LOCALE_SABBREVDAYNAME4,"N") +LOCVAL(LOCALE_SABBREVDAYNAME5,"R") +LOCVAL(LOCALE_SABBREVDAYNAME6,"L") +LOCVAL(LOCALE_SABBREVDAYNAME7,"P") -/* LOCVAL(LOCALE_SMONTHNAME1,"") */ -/* LOCVAL(LOCALE_SMONTHNAME2,"") */ -/* LOCVAL(LOCALE_SMONTHNAME3,"") */ -/* LOCVAL(LOCALE_SMONTHNAME4,"") */ -/* LOCVAL(LOCALE_SMONTHNAME5,"") */ -/* LOCVAL(LOCALE_SMONTHNAME6,"") */ -/* LOCVAL(LOCALE_SMONTHNAME7,"") */ -/* LOCVAL(LOCALE_SMONTHNAME8,"") */ -/* LOCVAL(LOCALE_SMONTHNAME9,"") */ -/* LOCVAL(LOCALE_SMONTHNAME10,"") */ -/* LOCVAL(LOCALE_SMONTHNAME11,"") */ -/* LOCVAL(LOCALE_SMONTHNAME12,"") */ +LOCVAL(LOCALE_SMONTHNAME1,"jaanuar") +LOCVAL(LOCALE_SMONTHNAME2,"veebruar") +LOCVAL(LOCALE_SMONTHNAME3,"märts") +LOCVAL(LOCALE_SMONTHNAME4,"aprill") +LOCVAL(LOCALE_SMONTHNAME5,"mai") +LOCVAL(LOCALE_SMONTHNAME6,"juuni") +LOCVAL(LOCALE_SMONTHNAME7,"juuli") +LOCVAL(LOCALE_SMONTHNAME8,"august") +LOCVAL(LOCALE_SMONTHNAME9,"september") +LOCVAL(LOCALE_SMONTHNAME10,"oktoober") +LOCVAL(LOCALE_SMONTHNAME11,"november") +LOCVAL(LOCALE_SMONTHNAME12,"detsember") /* LOCVAL(LOCALE_SMONTHNAME13,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ +LOCVAL(LOCALE_SABBREVMONTHNAME1,"jaan ") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"veebr") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"märts") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"apr ") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"mai ") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"juuni") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"juuli") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"aug ") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"sept ") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"okt ") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov ") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"dets ") /* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ -/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ -/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +LOCVAL(LOCALE_SPOSITIVESIGN, "") +LOCVAL(LOCALE_SNEGATIVESIGN, "-") /* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ /* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ /* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ diff --git a/ole/nls/esu.nls b/ole/nls/esu.nls index 749690b54d4..50e9dffc7c2 100644 --- a/ole/nls/esu.nls +++ b/ole/nls/esu.nls @@ -4,18 +4,18 @@ */ /* LOCVAL(LOCALE_ILANGUAGE,"") */ -/* LOCVAL(LOCALE_SLANGUAGE,"") */ -LOCVAL(LOCALE_SENGLANGUAGE,"Spanish") +LOCVAL(LOCALE_SLANGUAGE,"Español (Puerto Rico)") +LOCVAL(LOCALE_SENGLANGUAGE,"Spanish (Puerto Rico)") LOCVAL(LOCALE_SABBREVLANGNAME,"esu") -/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +LOCVAL(LOCALE_SNATIVELANGNAME,"Español (Puerto Rico)") /* LOCVAL(LOCALE_ICOUNTRY,"") */ -/* LOCVAL(LOCALE_SCOUNTRY,"") */ -LOCVAL(LOCALE_SENGCOUNTRY,"Spain") +LOCVAL(LOCALE_SCOUNTRY,"Puerto Rico") +LOCVAL(LOCALE_SENGCOUNTRY,"Puerto Rico") /* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ -/* LOCVAL(LOCALE_SNATIVECTRYNAME,"Espa€a") */ +LOCVAL(LOCALE_SNATIVECTRYNAME,"Puerto Rico") /* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ /* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ -/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +LOCVAL(LOCALE_IDEFAULTCODEPAGE,"850") /* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ /* LOCVAL(LOCALE_SLIST,"") */ /* LOCVAL(LOCALE_IMEASURE,"") */ @@ -26,8 +26,8 @@ LOCVAL(LOCALE_SENGCOUNTRY,"Spain") /* LOCVAL(LOCALE_ILZERO,"1") */ /* LOCVAL(LOCALE_INEGNUMBER) */ LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") -LOCVAL(LOCALE_SCURRENCY,"Pts") -LOCVAL(LOCALE_SINTLSYMBOL, "ESP") +LOCVAL(LOCALE_SCURRENCY,"$") +/* LOCVAL(LOCALE_SINTLSYMBOL, "ESP") */ /* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ /* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ /* LOCVAL(LOCALE_SMONGROUPING) */ @@ -57,21 +57,21 @@ LOCVAL(LOCALE_SINTLSYMBOL, "ESP") LOCVAL(LOCALE_SDAYNAME1,"lunes") LOCVAL(LOCALE_SDAYNAME2,"martes") -LOCVAL(LOCALE_SDAYNAME3,"mi?rcoles") +LOCVAL(LOCALE_SDAYNAME3,"miércoles") LOCVAL(LOCALE_SDAYNAME4,"jueves") LOCVAL(LOCALE_SDAYNAME5,"viernes") -LOCVAL(LOCALE_SDAYNAME6,"s?abado") +LOCVAL(LOCALE_SDAYNAME6,"sábado") LOCVAL(LOCALE_SDAYNAME7,"domingo") -/* LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME3,"mi?") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ +LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") +LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") +LOCVAL(LOCALE_SABBREVDAYNAME3,"mié") +LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") +LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") +LOCVAL(LOCALE_SABBREVDAYNAME6,"sáb") +LOCVAL(LOCALE_SABBREVDAYNAME7,"dom") -/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +LOCVAL(LOCALE_SMONTHNAME1,"enero") LOCVAL(LOCALE_SMONTHNAME2,"febrero") LOCVAL(LOCALE_SMONTHNAME3,"marzo") LOCVAL(LOCALE_SMONTHNAME4,"abril") @@ -99,8 +99,8 @@ LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic") LOCVAL(LOCALE_SABBREVMONTHNAME13,"") -/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ -/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +LOCVAL(LOCALE_SPOSITIVESIGN, "") +LOCVAL(LOCALE_SNEGATIVESIGN, "-") /* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ /* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ /* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ diff --git a/ole/nls/esv.nls b/ole/nls/esv.nls new file mode 100644 index 00000000000..dac639e525a --- /dev/null +++ b/ole/nls/esv.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Spanish (Venezuela) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +LOCVAL(LOCALE_SENGLANGUAGE,"Spanish") +LOCVAL(LOCALE_SABBREVLANGNAME,"esv") +LOCVAL(LOCALE_SNATIVELANGNAME,"Espa€ol") +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +LOCVAL(LOCALE_SCOUNTRY,"Venezuela") +LOCVAL(LOCALE_SENGCOUNTRY,"Venezuela") +LOCVAL(LOCALE_SABBREVCTRYNAME,"VEN") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Venezuela") +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +LOCVAL(LOCALE_SCURRENCY,"Bs") +LOCVAL(LOCALE_SINTLSYMBOL, "VEB") +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +LOCVAL(LOCALE_SMONGROUPING, "3;0") +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +LOCVAL(LOCALE_SDAYNAME1,"lunes") +LOCVAL(LOCALE_SDAYNAME2,"martes") +LOCVAL(LOCALE_SDAYNAME3,"mi?rcoles") +LOCVAL(LOCALE_SDAYNAME4,"jueves") +LOCVAL(LOCALE_SDAYNAME5,"viernes") +LOCVAL(LOCALE_SDAYNAME6,"s?abado") +LOCVAL(LOCALE_SDAYNAME7,"domingo") + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"mi?") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +LOCVAL(LOCALE_SMONTHNAME2,"febrero") +LOCVAL(LOCALE_SMONTHNAME3,"marzo") +LOCVAL(LOCALE_SMONTHNAME4,"abril") +LOCVAL(LOCALE_SMONTHNAME5,"mayo") +LOCVAL(LOCALE_SMONTHNAME6,"junio") +LOCVAL(LOCALE_SMONTHNAME7,"julio") +LOCVAL(LOCALE_SMONTHNAME8,"agosto") +LOCVAL(LOCALE_SMONTHNAME9,"septiembre") +LOCVAL(LOCALE_SMONTHNAME10,"octubre") +LOCVAL(LOCALE_SMONTHNAME11,"noviembre") +LOCVAL(LOCALE_SMONTHNAME12,"diciembre") +LOCVAL(LOCALE_SMONTHNAME13,"") + +LOCVAL(LOCALE_SABBREVMONTHNAME1,"ene") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"feb") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"mar") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"abr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"may") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"jun") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"jul") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"ago") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"oct") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic") +LOCVAL(LOCALE_SABBREVMONTHNAME13,"") + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* calendario gregoriano */ diff --git a/ole/nls/esy.nls b/ole/nls/esy.nls new file mode 100644 index 00000000000..2f8b9ac85d1 --- /dev/null +++ b/ole/nls/esy.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Spanish (Uruguay) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +LOCVAL(LOCALE_SLANGUAGE,"Espa€ol") +LOCVAL(LOCALE_SENGLANGUAGE,"Spanish") +LOCVAL(LOCALE_SABBREVLANGNAME,"esy") +LOCVAL(LOCALE_SNATIVELANGNAME,"Uruguay") +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +LOCVAL(LOCALE_SENGCOUNTRY,"Uruguay") +LOCVAL(LOCALE_SABBREVCTRYNAME,"URY") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Uruguay") +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +LOCVAL(LOCALE_SCURRENCY,"NU$") +LOCVAL(LOCALE_SINTLSYMBOL, "UYU") +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +LOCVAL(LOCALE_SMONGROUPING,"3;0") +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +LOCVAL(LOCALE_SDAYNAME1,"lunes") +LOCVAL(LOCALE_SDAYNAME2,"martes") +LOCVAL(LOCALE_SDAYNAME3,"mi?rcoles") +LOCVAL(LOCALE_SDAYNAME4,"jueves") +LOCVAL(LOCALE_SDAYNAME5,"viernes") +LOCVAL(LOCALE_SDAYNAME6,"s?abado") +LOCVAL(LOCALE_SDAYNAME7,"domingo") + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"mi?") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +LOCVAL(LOCALE_SMONTHNAME1,"enero") +LOCVAL(LOCALE_SMONTHNAME2,"febrero") +LOCVAL(LOCALE_SMONTHNAME3,"marzo") +LOCVAL(LOCALE_SMONTHNAME4,"abril") +LOCVAL(LOCALE_SMONTHNAME5,"mayo") +LOCVAL(LOCALE_SMONTHNAME6,"junio") +LOCVAL(LOCALE_SMONTHNAME7,"julio") +LOCVAL(LOCALE_SMONTHNAME8,"agosto") +LOCVAL(LOCALE_SMONTHNAME9,"septiembre") +LOCVAL(LOCALE_SMONTHNAME10,"octubre") +LOCVAL(LOCALE_SMONTHNAME11,"noviembre") +LOCVAL(LOCALE_SMONTHNAME12,"diciembre") +LOCVAL(LOCALE_SMONTHNAME13,"") + +LOCVAL(LOCALE_SABBREVMONTHNAME1,"ene") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"feb") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"mar") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"abr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"may") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"jun") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"jul") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"ago") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"oct") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic") +LOCVAL(LOCALE_SABBREVMONTHNAME13,"") + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* calendario gregoriano */ diff --git a/ole/nls/esz.nls b/ole/nls/esz.nls new file mode 100644 index 00000000000..01ad31884e9 --- /dev/null +++ b/ole/nls/esz.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Spanish (Paraguay) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +LOCVAL(LOCALE_SENGLANGUAGE,"Spanish") +LOCVAL(LOCALE_SABBREVLANGNAME,"esz") +LOCVAL(LOCALE_SNATIVELANGNAME,"Paraguay") +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +LOCVAL(LOCALE_SENGCOUNTRY,"Paraguay") +LOCVAL(LOCALE_SABBREVCTRYNAME,"PRY") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Paraguay") +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +LOCVAL(LOCALE_SCURRENCY,"G") +LOCVAL(LOCALE_SINTLSYMBOL, "PYG") +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +LOCVAL(LOCALE_SMONGROUPING,"3;0") +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +LOCVAL(LOCALE_SDAYNAME1,"lunes") +LOCVAL(LOCALE_SDAYNAME2,"martes") +LOCVAL(LOCALE_SDAYNAME3,"mi?rcoles") +LOCVAL(LOCALE_SDAYNAME4,"jueves") +LOCVAL(LOCALE_SDAYNAME5,"viernes") +LOCVAL(LOCALE_SDAYNAME6,"s?abado") +LOCVAL(LOCALE_SDAYNAME7,"domingo") + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"mi?") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +LOCVAL(LOCALE_SMONTHNAME1,"enero") +LOCVAL(LOCALE_SMONTHNAME2,"febrero") +LOCVAL(LOCALE_SMONTHNAME3,"marzo") +LOCVAL(LOCALE_SMONTHNAME4,"abril") +LOCVAL(LOCALE_SMONTHNAME5,"mayo") +LOCVAL(LOCALE_SMONTHNAME6,"junio") +LOCVAL(LOCALE_SMONTHNAME7,"julio") +LOCVAL(LOCALE_SMONTHNAME8,"agosto") +LOCVAL(LOCALE_SMONTHNAME9,"septiembre") +LOCVAL(LOCALE_SMONTHNAME10,"octubre") +LOCVAL(LOCALE_SMONTHNAME11,"noviembre") +LOCVAL(LOCALE_SMONTHNAME12,"diciembre") +LOCVAL(LOCALE_SMONTHNAME13,"") + +LOCVAL(LOCALE_SABBREVMONTHNAME1,"ene") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"feb") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"mar") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"abr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"may") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"jun") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"jul") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"ago") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"oct") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic") +LOCVAL(LOCALE_SABBREVMONTHNAME13,"") + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* calendario gregoriano */ diff --git a/ole/nls/euq.nls b/ole/nls/euq.nls index 989c5e7cf6a..c6639fe75a3 100644 --- a/ole/nls/euq.nls +++ b/ole/nls/euq.nls @@ -4,18 +4,18 @@ */ /* LOCVAL(LOCALE_ILANGUAGE,"") */ -/* LOCVAL(LOCALE_SLANGUAGE,"") */ -LOCVAL(LOCALE_SENGLANGUAGE,"Spanish") +LOCVAL(LOCALE_SLANGUAGE,"Euskara") +LOCVAL(LOCALE_SENGLANGUAGE,"Basque") LOCVAL(LOCALE_SABBREVLANGNAME,"euq") -/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +LOCVAL(LOCALE_SNATIVELANGNAME,"Euskara") /* LOCVAL(LOCALE_ICOUNTRY,"") */ -/* LOCVAL(LOCALE_SCOUNTRY,"") */ -LOCVAL(LOCALE_SENGCOUNTRY,"Spain") -/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ -/* LOCVAL(LOCALE_SNATIVECTRYNAME,"Espa€a") */ +LOCVAL(LOCALE_SCOUNTRY,"Espaina") +LOCVAL(LOCALE_SENGCOUNTRY,"Spain (Basque)") +LOCVAL(LOCALE_SABBREVCTRYNAME,"Es") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Espaina") /* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ /* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ -/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +LOCVAL(LOCALE_IDEFAULTCODEPAGE,"850") /* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ /* LOCVAL(LOCALE_SLIST,"") */ /* LOCVAL(LOCALE_IMEASURE,"") */ @@ -37,8 +37,8 @@ LOCVAL(LOCALE_SINTLSYMBOL, "ESP") /* LOCVAL(LOCALE_INEGCURR,"8") */ /* LOCVAL(LOCALE_SDATE,".") */ /* LOCVAL(LOCALE_STIME,":") */ -/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ -/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +LOCVAL(LOCALE_SSHORTDATE,"yyyy-MM-dd") +LOCVAL(LOCALE_SLONGDATE,"ddd, yyyyeko MMMMren d.a") /* LOCVAL(LOCALE_STIMEFORMAT) */ /* LOCVAL(LOCALE_IDATE,"1") */ /* LOCVAL(LOCALE_ILDATE) */ @@ -55,13 +55,13 @@ LOCVAL(LOCALE_SINTLSYMBOL, "ESP") /* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ /* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ -LOCVAL(LOCALE_SDAYNAME1,"lunes") -LOCVAL(LOCALE_SDAYNAME2,"martes") -LOCVAL(LOCALE_SDAYNAME3,"mi?rcoles") -LOCVAL(LOCALE_SDAYNAME4,"jueves") -LOCVAL(LOCALE_SDAYNAME5,"viernes") -LOCVAL(LOCALE_SDAYNAME6,"s?abado") -LOCVAL(LOCALE_SDAYNAME7,"domingo") +LOCVAL(LOCALE_SDAYNAME1,"astelehena") +LOCVAL(LOCALE_SDAYNAME2,"asteartea") +LOCVAL(LOCALE_SDAYNAME3,"asteazkena") +LOCVAL(LOCALE_SDAYNAME4,"osteguna") +LOCVAL(LOCALE_SDAYNAME5,"ostirala") +LOCVAL(LOCALE_SDAYNAME6,"larunbata") +LOCVAL(LOCALE_SDAYNAME7,"igandea") /* LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") */ /* LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") */ @@ -71,36 +71,36 @@ LOCVAL(LOCALE_SDAYNAME7,"domingo") /* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ /* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ -/* LOCVAL(LOCALE_SMONTHNAME1,"") */ -LOCVAL(LOCALE_SMONTHNAME2,"febrero") -LOCVAL(LOCALE_SMONTHNAME3,"marzo") -LOCVAL(LOCALE_SMONTHNAME4,"abril") -LOCVAL(LOCALE_SMONTHNAME5,"mayo") -LOCVAL(LOCALE_SMONTHNAME6,"junio") -LOCVAL(LOCALE_SMONTHNAME7,"julio") -LOCVAL(LOCALE_SMONTHNAME8,"agosto") -LOCVAL(LOCALE_SMONTHNAME9,"septiembre") -LOCVAL(LOCALE_SMONTHNAME10,"octubre") -LOCVAL(LOCALE_SMONTHNAME11,"noviembre") -LOCVAL(LOCALE_SMONTHNAME12,"diciembre") +LOCVAL(LOCALE_SMONTHNAME1,"urtarrila") +LOCVAL(LOCALE_SMONTHNAME2,"otsaila") +LOCVAL(LOCALE_SMONTHNAME3,"martxoa") +LOCVAL(LOCALE_SMONTHNAME4,"apirila") +LOCVAL(LOCALE_SMONTHNAME5,"maiatza") +LOCVAL(LOCALE_SMONTHNAME6,"ekaina") +LOCVAL(LOCALE_SMONTHNAME7,"uztaila") +LOCVAL(LOCALE_SMONTHNAME8,"abuztua") +LOCVAL(LOCALE_SMONTHNAME9,"iraila") +LOCVAL(LOCALE_SMONTHNAME10,"urria") +LOCVAL(LOCALE_SMONTHNAME11,"azaroa") +LOCVAL(LOCALE_SMONTHNAME12,"abendua") LOCVAL(LOCALE_SMONTHNAME13,"") -LOCVAL(LOCALE_SABBREVMONTHNAME1,"ene") -LOCVAL(LOCALE_SABBREVMONTHNAME2,"feb") +LOCVAL(LOCALE_SABBREVMONTHNAME1,"urt") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"ots") LOCVAL(LOCALE_SABBREVMONTHNAME3,"mar") -LOCVAL(LOCALE_SABBREVMONTHNAME4,"abr") -LOCVAL(LOCALE_SABBREVMONTHNAME5,"may") -LOCVAL(LOCALE_SABBREVMONTHNAME6,"jun") -LOCVAL(LOCALE_SABBREVMONTHNAME7,"jul") -LOCVAL(LOCALE_SABBREVMONTHNAME8,"ago") -LOCVAL(LOCALE_SABBREVMONTHNAME9,"sep") -LOCVAL(LOCALE_SABBREVMONTHNAME10,"oct") -LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") -LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"api") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"mai") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"eka") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"uzt") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"abu") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"ira") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"urr") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"aza") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"abe") LOCVAL(LOCALE_SABBREVMONTHNAME13,"") -/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ -/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +LOCVAL(LOCALE_SPOSITIVESIGN, "") +LOCVAL(LOCALE_SNEGATIVESIGN, "-") /* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ /* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ /* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ diff --git a/ole/nls/fin.nls b/ole/nls/fin.nls index a06b5d3eccd..6cd954c6edd 100644 --- a/ole/nls/fin.nls +++ b/ole/nls/fin.nls @@ -30,7 +30,7 @@ LOCVAL(LOCALE_SCURRENCY,"mk") LOCVAL(LOCALE_SINTLSYMBOL,"FIM") /* LOCVAL(LOCALE_SMONDECIMALSEP) */ /* LOCVAL(LOCALE_SMONTHOUSANDSEP) */ -/* LOCVAL(LOCALE_SMONGROUPING) /* +LOCVAL(LOCALE_SMONGROUPING, "3;0") LOCVAL(LOCALE_ICURRDIGITS,"2") /* LOCVAL(LOCALE_IINTLCURRDIGITS) */ LOCVAL(LOCALE_ICURRENCY,"3") @@ -43,7 +43,7 @@ LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") LOCVAL(LOCALE_IDATE,"1") /* LOCVAL(LOCALE_ILDATE) */ LOCVAL(LOCALE_ITIME,"1") -/* LOCVAL(LOCALE_ITIMEMARKPOSN) /* +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ /* LOCVAL(LOCALE_ICENTURY) */ LOCVAL(LOCALE_ITLZERO,"1") /* LOCVAL(LOCALE_IDAYLZERO) */ @@ -107,3 +107,5 @@ LOCVAL(LOCALE_SNEGATIVESIGN, "-") /* LOCVAL(LOCALE_IPOSSEPBYSPACE) */ /* LOCVAL(LOCALE_INEGSYMPRECEDES) */ /* LOCVAL(LOCALE_INEGSEPBYSPACE) */ + +/* gregoriaaninen kalenteri */ diff --git a/ole/nls/fos.nls b/ole/nls/fos.nls new file mode 100644 index 00000000000..5a4beaf3d59 --- /dev/null +++ b/ole/nls/fos.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Faroe Islands + */ + +LOCVAL(LOCALE_ILANGUAGE,"9") +LOCVAL(LOCALE_SLANGUAGE,"") +LOCVAL(LOCALE_SENGLANGUAGE,"Faroese") +LOCVAL(LOCALE_SABBREVLANGNAME,"fos") +LOCVAL(LOCALE_SNATIVELANGNAME,"f?royskt") +/* LOCVAL(LOCALE_ICOUNTRY,"49") */ +LOCVAL(LOCALE_SCOUNTRY,"") +LOCVAL(LOCALE_SENGCOUNTRY,"Faroe Islands") +LOCVAL(LOCALE_SABBREVCTRYNAME,"FRS") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Froyar") +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"9") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"40") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE,"851") */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +LOCVAL(LOCALE_SLIST,";") +LOCVAL(LOCALE_IMEASURE,"0") +LOCVAL(LOCALE_SDECIMAL,",") +LOCVAL(LOCALE_STHOUSAND,".") +/* LOCVAL(LOCALE_SGROUPING) */ +LOCVAL(LOCALE_IDIGITS,"2") +LOCVAL(LOCALE_ILZERO,"1") +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +LOCVAL(LOCALE_SCURRENCY,"kr") +LOCVAL(LOCALE_SINTLSYMBOL, "DKK") +/* LOCVAL(LOCALE_SMONDECIMALSEP) */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP) */ +LOCVAL(LOCALE_SMONGROUPING,"3;0") +LOCVAL(LOCALE_ICURRDIGITS,"2") +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +LOCVAL(LOCALE_ICURRENCY,"3") +LOCVAL(LOCALE_INEGCURR,"8") +LOCVAL(LOCALE_SDATE,".") +LOCVAL(LOCALE_STIME,":") +LOCVAL(LOCALE_SSHORTDATE,"dd.MM.yyyy") +LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") +/* LOCVAL(LOCALE_STIMEFORMAT) */ +LOCVAL(LOCALE_IDATE,"1") +/* LOCVAL(LOCALE_ILDATE) */ +LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159) */ +/* LOCVAL(LOCALE_S2359) */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +LOCVAL(LOCALE_SDAYNAME1,"m€nadagur") +LOCVAL(LOCALE_SDAYNAME2,"?osdagur") +LOCVAL(LOCALE_SDAYNAME3,"mikudagur") +LOCVAL(LOCALE_SDAYNAME4,"h?sdagur") +LOCVAL(LOCALE_SDAYNAME5,"fr?ggjadagur") +LOCVAL(LOCALE_SDAYNAME6,"leygardagur") +LOCVAL(LOCALE_SDAYNAME7,"sunnudagur") + +LOCVAL(LOCALE_SABBREVDAYNAME1,"m?n") +LOCVAL(LOCALE_SABBREVDAYNAME2,"t?s") +LOCVAL(LOCALE_SABBREVDAYNAME3,"mik") +LOCVAL(LOCALE_SABBREVDAYNAME4,"h?s") +LOCVAL(LOCALE_SABBREVDAYNAME5,"fr?") +LOCVAL(LOCALE_SABBREVDAYNAME6,"ley") +LOCVAL(LOCALE_SABBREVDAYNAME7,"sun") + +LOCVAL(LOCALE_SMONTHNAME1,"januar") +LOCVAL(LOCALE_SMONTHNAME2,"februar") +LOCVAL(LOCALE_SMONTHNAME3,"mars") +LOCVAL(LOCALE_SMONTHNAME4,"april") +LOCVAL(LOCALE_SMONTHNAME5,"mai") +LOCVAL(LOCALE_SMONTHNAME6,"juni") +LOCVAL(LOCALE_SMONTHNAME7,"juli") +LOCVAL(LOCALE_SMONTHNAME8,"august") +LOCVAL(LOCALE_SMONTHNAME9,"september") +LOCVAL(LOCALE_SMONTHNAME10,"oktober") +LOCVAL(LOCALE_SMONTHNAME11,"november") +LOCVAL(LOCALE_SMONTHNAME12,"desember") +LOCVAL(LOCALE_SMONTHNAME13,"") + +LOCVAL(LOCALE_SABBREVMONTHNAME1,"jan") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"feb") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"mar") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"apr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"mai") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"jun") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"jul") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"aug") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"okt") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"des") +LOCVAL(LOCALE_SABBREVMONTHNAME13,"") + +/* LOCVAL(LOCALE_SPOSITIVESIGN) */ +/* LOCVAL(LOCALE_SNEGATIVESIGN) */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN) */ +/* LOCVAL(LOCALE_INEGSIGNPOSN) */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES) */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE) */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES) */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE) */ + +/* Den gregorianske kalender */ diff --git a/ole/nls/fra.nls b/ole/nls/fra.nls index db9fee27fc8..a6188d923b0 100644 --- a/ole/nls/fra.nls +++ b/ole/nls/fra.nls @@ -4,18 +4,18 @@ */ /* LOCVAL(LOCALE_ILANGUAGE,"") */ -/* LOCVAL(LOCALE_SLANGUAGE,"") */ -LOCVAL(LOCALE_SENGLANGUAGE,"France") +LOCVAL(LOCALE_SLANGUAGE,"Français") +LOCVAL(LOCALE_SENGLANGUAGE,"French") LOCVAL(LOCALE_SABBREVLANGNAME,"fra") -/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ -/* LOCVAL(LOCALE_ICOUNTRY,"") */ -/* LOCVAL(LOCALE_SCOUNTRY,"") */ -/* LOCVAL(LOCALE_SENGCOUNTRY,"") */ -/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ -/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +LOCVAL(LOCALE_SNATIVELANGNAME,"Français") +LOCVAL(LOCALE_ICOUNTRY,"33") +LOCVAL(LOCALE_SCOUNTRY,"France") +LOCVAL(LOCALE_SENGCOUNTRY,"France") +LOCVAL(LOCALE_SABBREVCTRYNAME,"Fr") +LOCVAL(LOCALE_SNATIVECTRYNAME,"France") /* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ /* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ -/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +LOCVAL(LOCALE_IDEFAULTCODEPAGE,"850") /* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ /* LOCVAL(LOCALE_SLIST,"") */ /* LOCVAL(LOCALE_IMEASURE,"") */ @@ -25,19 +25,19 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"fra") /* LOCVAL(LOCALE_IDIGITS,"2") */ /* LOCVAL(LOCALE_ILZERO,"1") */ /* LOCVAL(LOCALE_INEGNUMBER) */ -/* LOCVAL(LOCALE_SNATIVEDIGITS) */ -/* LOCVAL(LOCALE_SCURRENCY,"") */ -/* LOCVAL(LOCALE_SINTLSYMBOL) */ -/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ -/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ -/* LOCVAL(LOCALE_SMONGROUPING) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +LOCVAL(LOCALE_SCURRENCY,"F") +LOCVAL(LOCALE_SINTLSYMBOL, "FRF") +LOCVAL(LOCALE_SMONDECIMALSEP,",") +LOCVAL(LOCALE_SMONTHOUSANDSEP,".") +LOCVAL(LOCALE_SMONGROUPING, "3;0") /* LOCVAL(LOCALE_ICURRDIGITS,"2") */ /* LOCVAL(LOCALE_IINTLCURRDIGITS) */ /* LOCVAL(LOCALE_ICURRENCY,"3") */ /* LOCVAL(LOCALE_INEGCURR,"8") */ -/* LOCVAL(LOCALE_SDATE,".") */ +LOCVAL(LOCALE_SDATE,"/") /* LOCVAL(LOCALE_STIME,":") */ -/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +LOCVAL(LOCALE_SSHORTDATE,"dd/MM/yyyy") /* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ /* LOCVAL(LOCALE_STIMEFORMAT) */ /* LOCVAL(LOCALE_IDATE,"1") */ @@ -48,59 +48,59 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"fra") /* LOCVAL(LOCALE_ITLZERO,"1") /* LOCVAL(LOCALE_IDAYLZERO) */ /* LOCVAL(LOCALE_IMONLZERO) */ -/* LOCVAL(LOCALE_S1159, "") */ -/* LOCVAL(LOCALE_S2359, "") */ +LOCVAL(LOCALE_S1159, "") +LOCVAL(LOCALE_S2359, "") /* LOCVAL(LOCALE_ICALENDARTYPE) */ /* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ /* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ /* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ -/* LOCVAL(LOCALE_SDAYNAME1,"") */ -/* LOCVAL(LOCALE_SDAYNAME2,"") */ -/* LOCVAL(LOCALE_SDAYNAME3,"") */ -/* LOCVAL(LOCALE_SDAYNAME4,"") */ -/* LOCVAL(LOCALE_SDAYNAME5,"") */ -/* LOCVAL(LOCALE_SDAYNAME6,"") */ -/* LOCVAL(LOCALE_SDAYNAME7,"") */ +LOCVAL(LOCALE_SDAYNAME1,"lundi") +LOCVAL(LOCALE_SDAYNAME2,"mardi") +LOCVAL(LOCALE_SDAYNAME3,"mercredi") +LOCVAL(LOCALE_SDAYNAME4,"jeudi") +LOCVAL(LOCALE_SDAYNAME5,"vendredi") +LOCVAL(LOCALE_SDAYNAME6,"samedi") +LOCVAL(LOCALE_SDAYNAME7,"dimanche") -/* LOCVAL(LOCALE_SABBREVDAYNAME1,"Ma") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME2,"Ti") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME3,"On") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME4,"To") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME6,"Lø") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME7,"Sø") */ +LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") +LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") +LOCVAL(LOCALE_SABBREVDAYNAME3,"mer") +LOCVAL(LOCALE_SABBREVDAYNAME4,"jeu") +LOCVAL(LOCALE_SABBREVDAYNAME5,"ven") +LOCVAL(LOCALE_SABBREVDAYNAME6,"sam") +LOCVAL(LOCALE_SABBREVDAYNAME7,"dim") -/* LOCVAL(LOCALE_SMONTHNAME1,"") */ -/* LOCVAL(LOCALE_SMONTHNAME2,"") */ -/* LOCVAL(LOCALE_SMONTHNAME3,"") */ -/* LOCVAL(LOCALE_SMONTHNAME4,"") */ -/* LOCVAL(LOCALE_SMONTHNAME5,"") */ -/* LOCVAL(LOCALE_SMONTHNAME6,"") */ -/* LOCVAL(LOCALE_SMONTHNAME7,"") */ -/* LOCVAL(LOCALE_SMONTHNAME8,"") */ -/* LOCVAL(LOCALE_SMONTHNAME9,"") */ -/* LOCVAL(LOCALE_SMONTHNAME10,"") */ -/* LOCVAL(LOCALE_SMONTHNAME11,"") */ -/* LOCVAL(LOCALE_SMONTHNAME12,"") */ +LOCVAL(LOCALE_SMONTHNAME1,"janvier") +LOCVAL(LOCALE_SMONTHNAME2,"février") +LOCVAL(LOCALE_SMONTHNAME3,"mars") +LOCVAL(LOCALE_SMONTHNAME4,"avril") +LOCVAL(LOCALE_SMONTHNAME5,"mai") +LOCVAL(LOCALE_SMONTHNAME6,"juin") +LOCVAL(LOCALE_SMONTHNAME7,"juillet") +LOCVAL(LOCALE_SMONTHNAME8,"août") +LOCVAL(LOCALE_SMONTHNAME9,"septembre") +LOCVAL(LOCALE_SMONTHNAME10,"octobre") +LOCVAL(LOCALE_SMONTHNAME11,"novembre") +LOCVAL(LOCALE_SMONTHNAME12,"décembre") /* LOCVAL(LOCALE_SMONTHNAME13,"") */ - -/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ + +LOCVAL(LOCALE_SABBREVMONTHNAME1,"jan") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"fév") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"mar") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"avr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"mai") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"jun") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"jul") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"aoû") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"oct") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"déc") /* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ -/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ -/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +LOCVAL(LOCALE_SPOSITIVESIGN, "") +LOCVAL(LOCALE_SNEGATIVESIGN, "-") /* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ /* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ /* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ @@ -108,3 +108,4 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"fra") /* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ /* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ +/* calendrier gr€gorien */ diff --git a/ole/nls/frb.nls b/ole/nls/frb.nls index af6774504f8..be64b1bbf94 100644 --- a/ole/nls/frb.nls +++ b/ole/nls/frb.nls @@ -4,18 +4,18 @@ */ /* LOCVAL(LOCALE_ILANGUAGE,"") */ -/* LOCVAL(LOCALE_SLANGUAGE,"") */ -LOCVAL(LOCALE_SENGLANGUAGE,"Belgium") +LOCVAL(LOCALE_SLANGUAGE,"Français (Belgique)") +LOCVAL(LOCALE_SENGLANGUAGE,"French (Belgium)") LOCVAL(LOCALE_SABBREVLANGNAME,"frb") -/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ -/* LOCVAL(LOCALE_ICOUNTRY,"") */ -/* LOCVAL(LOCALE_SCOUNTRY,"") */ -/* LOCVAL(LOCALE_SENGCOUNTRY,"") */ -/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ -/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +LOCVAL(LOCALE_SNATIVELANGNAME,"Français (Belgique)") +LOCVAL(LOCALE_ICOUNTRY,"32") +LOCVAL(LOCALE_SCOUNTRY,"Belgique") +LOCVAL(LOCALE_SENGCOUNTRY,"Belgium") +LOCVAL(LOCALE_SABBREVCTRYNAME,"Be") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Belgique") /* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ /* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ -/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +LOCVAL(LOCALE_IDEFAULTCODEPAGE,"850") /* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ /* LOCVAL(LOCALE_SLIST,"") */ /* LOCVAL(LOCALE_IMEASURE,"") */ @@ -25,19 +25,19 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"frb") /* LOCVAL(LOCALE_IDIGITS,"2") */ /* LOCVAL(LOCALE_ILZERO,"1") */ /* LOCVAL(LOCALE_INEGNUMBER) */ -/* LOCVAL(LOCALE_SNATIVEDIGITS) */ -/* LOCVAL(LOCALE_SCURRENCY,"") */ -/* LOCVAL(LOCALE_SINTLSYMBOL) */ -/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ -/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ -/* LOCVAL(LOCALE_SMONGROUPING) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +LOCVAL(LOCALE_SCURRENCY,"FB") +LOCVAL(LOCALE_SINTLSYMBOL, "BEF") +LOCVAL(LOCALE_SMONDECIMALSEP,",") +LOCVAL(LOCALE_SMONTHOUSANDSEP,".") +LOCVAL(LOCALE_SMONGROUPING, "3;0") /* LOCVAL(LOCALE_ICURRDIGITS,"2") */ /* LOCVAL(LOCALE_IINTLCURRDIGITS) */ /* LOCVAL(LOCALE_ICURRENCY,"3") */ /* LOCVAL(LOCALE_INEGCURR,"8") */ -/* LOCVAL(LOCALE_SDATE,".") */ -/* LOCVAL(LOCALE_STIME,":") */ -/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +LOCVAL(LOCALE_SDATE,"/") +LOCVAL(LOCALE_STIME,":") +LOCVAL(LOCALE_SSHORTDATE,"dd/MM/yyyy") /* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ /* LOCVAL(LOCALE_STIMEFORMAT) */ /* LOCVAL(LOCALE_IDATE,"1") */ @@ -48,59 +48,59 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"frb") /* LOCVAL(LOCALE_ITLZERO,"1") /* LOCVAL(LOCALE_IDAYLZERO) */ /* LOCVAL(LOCALE_IMONLZERO) */ -/* LOCVAL(LOCALE_S1159, "") */ -/* LOCVAL(LOCALE_S2359, "") */ +LOCVAL(LOCALE_S1159, "") +LOCVAL(LOCALE_S2359, "") /* LOCVAL(LOCALE_ICALENDARTYPE) */ /* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ /* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ /* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ -/* LOCVAL(LOCALE_SDAYNAME1,"") */ -/* LOCVAL(LOCALE_SDAYNAME2,"") */ -/* LOCVAL(LOCALE_SDAYNAME3,"") */ -/* LOCVAL(LOCALE_SDAYNAME4,"") */ -/* LOCVAL(LOCALE_SDAYNAME5,"") */ -/* LOCVAL(LOCALE_SDAYNAME6,"") */ -/* LOCVAL(LOCALE_SDAYNAME7,"") */ +LOCVAL(LOCALE_SDAYNAME1,"lundi") +LOCVAL(LOCALE_SDAYNAME2,"mardi") +LOCVAL(LOCALE_SDAYNAME3,"mercredi") +LOCVAL(LOCALE_SDAYNAME4,"jeudi") +LOCVAL(LOCALE_SDAYNAME5,"vendredi") +LOCVAL(LOCALE_SDAYNAME6,"samedi") +LOCVAL(LOCALE_SDAYNAME7,"dimanche") -/* LOCVAL(LOCALE_SABBREVDAYNAME1,"Ma") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME2,"Ti") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME3,"On") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME4,"To") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME6,"Lø") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME7,"Sø") */ +LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") +LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") +LOCVAL(LOCALE_SABBREVDAYNAME3,"mer") +LOCVAL(LOCALE_SABBREVDAYNAME4,"jeu") +LOCVAL(LOCALE_SABBREVDAYNAME5,"ven") +LOCVAL(LOCALE_SABBREVDAYNAME6,"sam") +LOCVAL(LOCALE_SABBREVDAYNAME7,"dim") -/* LOCVAL(LOCALE_SMONTHNAME1,"") */ -/* LOCVAL(LOCALE_SMONTHNAME2,"") */ -/* LOCVAL(LOCALE_SMONTHNAME3,"") */ -/* LOCVAL(LOCALE_SMONTHNAME4,"") */ -/* LOCVAL(LOCALE_SMONTHNAME5,"") */ -/* LOCVAL(LOCALE_SMONTHNAME6,"") */ -/* LOCVAL(LOCALE_SMONTHNAME7,"") */ -/* LOCVAL(LOCALE_SMONTHNAME8,"") */ -/* LOCVAL(LOCALE_SMONTHNAME9,"") */ -/* LOCVAL(LOCALE_SMONTHNAME10,"") */ -/* LOCVAL(LOCALE_SMONTHNAME11,"") */ -/* LOCVAL(LOCALE_SMONTHNAME12,"") */ +LOCVAL(LOCALE_SMONTHNAME1,"janvier") +LOCVAL(LOCALE_SMONTHNAME2,"février") +LOCVAL(LOCALE_SMONTHNAME3,"mars") +LOCVAL(LOCALE_SMONTHNAME4,"avril") +LOCVAL(LOCALE_SMONTHNAME5,"mai") +LOCVAL(LOCALE_SMONTHNAME6,"juin") +LOCVAL(LOCALE_SMONTHNAME7,"juillet") +LOCVAL(LOCALE_SMONTHNAME8,"août") +LOCVAL(LOCALE_SMONTHNAME9,"septembre") +LOCVAL(LOCALE_SMONTHNAME10,"octobre") +LOCVAL(LOCALE_SMONTHNAME11,"novembre") +LOCVAL(LOCALE_SMONTHNAME12,"décembre") /* LOCVAL(LOCALE_SMONTHNAME13,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ +LOCVAL(LOCALE_SABBREVMONTHNAME1,"jan") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"fév") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"mar") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"avr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"mai") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"jun") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"jul") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"aoû") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"oct") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"déc") /* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ -/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ -/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +LOCVAL(LOCALE_SPOSITIVESIGN, "") +LOCVAL(LOCALE_SNEGATIVESIGN, "-") /* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ /* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ /* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ @@ -108,3 +108,4 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"frb") /* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ /* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ +/* calendrier grégorien */ diff --git a/ole/nls/frc.nls b/ole/nls/frc.nls new file mode 100644 index 00000000000..3829012ba9b --- /dev/null +++ b/ole/nls/frc.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Canada (French) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +LOCVAL(LOCALE_SENGLANGUAGE,"French") +LOCVAL(LOCALE_SABBREVLANGNAME,"frc") +LOCVAL(LOCALE_SNATIVELANGNAME,"fran€ais") +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +LOCVAL(LOCALE_SENGCOUNTRY,"Canada") +LOCVAL(LOCALE_SABBREVCTRYNAME,"CAN") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Canada") +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +LOCVAL(LOCALE_SCURRENCY,"$") +LOCVAL(LOCALE_SINTLSYMBOL, "CAD") +LOCVAL(LOCALE_SMONDECIMALSEP,",") +LOCVAL(LOCALE_SMONTHOUSANDSEP,".") +LOCVAL(LOCALE_SMONGROUPING, "3;0") +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +LOCVAL(LOCALE_SDAYNAME1,"lundi") +LOCVAL(LOCALE_SDAYNAME2,"mardi") +LOCVAL(LOCALE_SDAYNAME3,"mercredi") +LOCVAL(LOCALE_SDAYNAME4,"jeudi") +LOCVAL(LOCALE_SDAYNAME5,"vendredi") +LOCVAL(LOCALE_SDAYNAME6,"samedi") +LOCVAL(LOCALE_SDAYNAME7,"dimanche") + +LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") +LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") +LOCVAL(LOCALE_SABBREVDAYNAME3,"mer") +LOCVAL(LOCALE_SABBREVDAYNAME4,"jeu") +LOCVAL(LOCALE_SABBREVDAYNAME5,"ven") +LOCVAL(LOCALE_SABBREVDAYNAME6,"sam") +LOCVAL(LOCALE_SABBREVDAYNAME7,"dim") + +LOCVAL(LOCALE_SMONTHNAME1,"janvier") +LOCVAL(LOCALE_SMONTHNAME2,"f€vrier") +LOCVAL(LOCALE_SMONTHNAME3,"mars") +LOCVAL(LOCALE_SMONTHNAME4,"avril") +LOCVAL(LOCALE_SMONTHNAME5,"mai") +LOCVAL(LOCALE_SMONTHNAME6,"juin") +LOCVAL(LOCALE_SMONTHNAME7,"juillet") +LOCVAL(LOCALE_SMONTHNAME8,"ao€t") +LOCVAL(LOCALE_SMONTHNAME9,"septembre") +LOCVAL(LOCALE_SMONTHNAME10,"octobre") +LOCVAL(LOCALE_SMONTHNAME11,"novembre") +LOCVAL(LOCALE_SMONTHNAME12,"d€cembre") +LOCVAL(LOCALE_SMONTHNAME13,"") + +LOCVAL(LOCALE_SABBREVMONTHNAME1,"janv") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"f€vr") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"mars") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"avr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"mai") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"juin") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"juil") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"ao€t") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"sept") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"oct") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"d€c") +LOCVAL(LOCALE_SABBREVMONTHNAME13,"") + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* calendrier gr€gorien */ diff --git a/ole/nls/frl.nls b/ole/nls/frl.nls new file mode 100644 index 00000000000..a70cc5d8582 --- /dev/null +++ b/ole/nls/frl.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Luxemburg (French) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +LOCVAL(LOCALE_SENGLANGUAGE,"French") +LOCVAL(LOCALE_SABBREVLANGNAME,"frl") +LOCVAL(LOCALE_SNATIVELANGNAME,"fran€ais") +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +LOCVAL(LOCALE_SCOUNTRY,"Luxembourg") +LOCVAL(LOCALE_SENGCOUNTRY,"Luxemburg") +LOCVAL(LOCALE_SABBREVCTRYNAME,"LUX") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Luxembourg") +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +LOCVAL(LOCALE_SCURRENCY,"F") +LOCVAL(LOCALE_SINTLSYMBOL, "LUF") +LOCVAL(LOCALE_SMONDECIMALSEP,",") +LOCVAL(LOCALE_SMONTHOUSANDSEP,".") +LOCVAL(LOCALE_SMONGROUPING, "3;0") +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +LOCVAL(LOCALE_SDAYNAME1,"lundi") +LOCVAL(LOCALE_SDAYNAME2,"mardi") +LOCVAL(LOCALE_SDAYNAME3,"mercredi") +LOCVAL(LOCALE_SDAYNAME4,"jeudi") +LOCVAL(LOCALE_SDAYNAME5,"vendredi") +LOCVAL(LOCALE_SDAYNAME6,"samedi") +LOCVAL(LOCALE_SDAYNAME7,"dimanche") + +LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") +LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") +LOCVAL(LOCALE_SABBREVDAYNAME3,"mer") +LOCVAL(LOCALE_SABBREVDAYNAME4,"jeu") +LOCVAL(LOCALE_SABBREVDAYNAME5,"ven") +LOCVAL(LOCALE_SABBREVDAYNAME6,"sam") +LOCVAL(LOCALE_SABBREVDAYNAME7,"dim") + +LOCVAL(LOCALE_SMONTHNAME1,"janvier") +LOCVAL(LOCALE_SMONTHNAME2,"f€vrier") +LOCVAL(LOCALE_SMONTHNAME3,"mars") +LOCVAL(LOCALE_SMONTHNAME4,"avril") +LOCVAL(LOCALE_SMONTHNAME5,"mai") +LOCVAL(LOCALE_SMONTHNAME6,"juin") +LOCVAL(LOCALE_SMONTHNAME7,"juillet") +LOCVAL(LOCALE_SMONTHNAME8,"ao€t") +LOCVAL(LOCALE_SMONTHNAME9,"septembre") +LOCVAL(LOCALE_SMONTHNAME10,"octobre") +LOCVAL(LOCALE_SMONTHNAME11,"novembre") +LOCVAL(LOCALE_SMONTHNAME12,"d€cembre") +LOCVAL(LOCALE_SMONTHNAME13,"") + +LOCVAL(LOCALE_SABBREVMONTHNAME1,"janv") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"f€vr") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"mars") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"avr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"mai") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"juin") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"juil") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"ao€t") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"sept") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"oct") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"dec") +LOCVAL(LOCALE_SABBREVMONTHNAME13,"") + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* calendrier gr€gorien */ diff --git a/ole/nls/frs.nls b/ole/nls/frs.nls index 62c4c8dbb26..9c794f0479a 100644 --- a/ole/nls/frs.nls +++ b/ole/nls/frs.nls @@ -4,18 +4,18 @@ */ /* LOCVAL(LOCALE_ILANGUAGE,"") */ -/* LOCVAL(LOCALE_SLANGUAGE,"") */ -LOCVAL(LOCALE_SENGLANGUAGE,"Switzerland") +LOCVAL(LOCALE_SLANGUAGE,"Français (Suisse)") +LOCVAL(LOCALE_SENGLANGUAGE,"French (Switzerland)") LOCVAL(LOCALE_SABBREVLANGNAME,"frs") -/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +LOCVAL(LOCALE_SNATIVELANGNAME,"Français (Suisse)") /* LOCVAL(LOCALE_ICOUNTRY,"") */ -/* LOCVAL(LOCALE_SCOUNTRY,"") */ -/* LOCVAL(LOCALE_SENGCOUNTRY,"") */ -/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ -/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +LOCVAL(LOCALE_SCOUNTRY,"Suisse") +LOCVAL(LOCALE_SENGCOUNTRY,"Switzerland") +LOCVAL(LOCALE_SABBREVCTRYNAME,"Ch") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Suisse") /* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ /* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ -/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +LOCVAL(LOCALE_IDEFAULTCODEPAGE,"850") /* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ /* LOCVAL(LOCALE_SLIST,"") */ /* LOCVAL(LOCALE_IMEASURE,"") */ @@ -25,12 +25,12 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"frs") /* LOCVAL(LOCALE_IDIGITS,"2") */ /* LOCVAL(LOCALE_ILZERO,"1") */ /* LOCVAL(LOCALE_INEGNUMBER) */ -/* LOCVAL(LOCALE_SNATIVEDIGITS) */ -/* LOCVAL(LOCALE_SCURRENCY,"") */ -/* LOCVAL(LOCALE_SINTLSYMBOL) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +LOCVAL(LOCALE_SCURRENCY,"SFr") +LOCVAL(LOCALE_SINTLSYMBOL, "CHF") /* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ /* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ -/* LOCVAL(LOCALE_SMONGROUPING) */ +LOCVAL(LOCALE_SMONGROUPING, "3;0") /* LOCVAL(LOCALE_ICURRDIGITS,"2") */ /* LOCVAL(LOCALE_IINTLCURRDIGITS) */ /* LOCVAL(LOCALE_ICURRENCY,"3") */ @@ -55,52 +55,52 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"frs") /* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ /* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ -/* LOCVAL(LOCALE_SDAYNAME1,"") */ -/* LOCVAL(LOCALE_SDAYNAME2,"") */ -/* LOCVAL(LOCALE_SDAYNAME3,"") */ -/* LOCVAL(LOCALE_SDAYNAME4,"") */ -/* LOCVAL(LOCALE_SDAYNAME5,"") */ -/* LOCVAL(LOCALE_SDAYNAME6,"") */ -/* LOCVAL(LOCALE_SDAYNAME7,"") */ +LOCVAL(LOCALE_SDAYNAME1,"lundi") +LOCVAL(LOCALE_SDAYNAME2,"mardi") +LOCVAL(LOCALE_SDAYNAME3,"mercredi") +LOCVAL(LOCALE_SDAYNAME4,"jeudi") +LOCVAL(LOCALE_SDAYNAME5,"vendredi") +LOCVAL(LOCALE_SDAYNAME6,"samedi") +LOCVAL(LOCALE_SDAYNAME7,"dimanche") -/* LOCVAL(LOCALE_SABBREVDAYNAME1,"Ma") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME2,"Ti") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME3,"On") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME4,"To") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME6,"Lø") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME7,"Sø") */ +LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") +LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") +LOCVAL(LOCALE_SABBREVDAYNAME3,"mer") +LOCVAL(LOCALE_SABBREVDAYNAME4,"jeu") +LOCVAL(LOCALE_SABBREVDAYNAME5,"ven") +LOCVAL(LOCALE_SABBREVDAYNAME6,"sam") +LOCVAL(LOCALE_SABBREVDAYNAME7,"dim") -/* LOCVAL(LOCALE_SMONTHNAME1,"") */ -/* LOCVAL(LOCALE_SMONTHNAME2,"") */ -/* LOCVAL(LOCALE_SMONTHNAME3,"") */ -/* LOCVAL(LOCALE_SMONTHNAME4,"") */ -/* LOCVAL(LOCALE_SMONTHNAME5,"") */ -/* LOCVAL(LOCALE_SMONTHNAME6,"") */ -/* LOCVAL(LOCALE_SMONTHNAME7,"") */ -/* LOCVAL(LOCALE_SMONTHNAME8,"") */ -/* LOCVAL(LOCALE_SMONTHNAME9,"") */ -/* LOCVAL(LOCALE_SMONTHNAME10,"") */ -/* LOCVAL(LOCALE_SMONTHNAME11,"") */ -/* LOCVAL(LOCALE_SMONTHNAME12,"") */ +LOCVAL(LOCALE_SMONTHNAME1,"janvier") +LOCVAL(LOCALE_SMONTHNAME2,"février") +LOCVAL(LOCALE_SMONTHNAME3,"mars") +LOCVAL(LOCALE_SMONTHNAME4,"avril") +LOCVAL(LOCALE_SMONTHNAME5,"mai") +LOCVAL(LOCALE_SMONTHNAME6,"juin") +LOCVAL(LOCALE_SMONTHNAME7,"juillet") +LOCVAL(LOCALE_SMONTHNAME8,"août") +LOCVAL(LOCALE_SMONTHNAME9,"septembre") +LOCVAL(LOCALE_SMONTHNAME10,"octobre") +LOCVAL(LOCALE_SMONTHNAME11,"novembre") +LOCVAL(LOCALE_SMONTHNAME12,"décembre") /* LOCVAL(LOCALE_SMONTHNAME13,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ +LOCVAL(LOCALE_SABBREVMONTHNAME1,"jan") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"fév") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"mar") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"avr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"mai") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"jun") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"jul") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"aoû") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"oct") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"déc") /* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ -/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ -/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +LOCVAL(LOCALE_SPOSITIVESIGN, "") +LOCVAL(LOCALE_SNEGATIVESIGN, "-") /* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ /* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ /* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ @@ -108,3 +108,4 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"frs") /* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ /* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ +/* calendrier grégorien */ diff --git a/ole/nls/grc.nls b/ole/nls/grc.nls index 0e6e42307a1..11fd0666567 100644 --- a/ole/nls/grc.nls +++ b/ole/nls/grc.nls @@ -25,12 +25,12 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"grc") /* LOCVAL(LOCALE_IDIGITS,"2") */ /* LOCVAL(LOCALE_ILZERO,"1") */ /* LOCVAL(LOCALE_INEGNUMBER) */ -/* LOCVAL(LOCALE_SNATIVEDIGITS) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") /* LOCVAL(LOCALE_SCURRENCY,"") */ -/* LOCVAL(LOCALE_SINTLSYMBOL) */ +LOCVAL(LOCALE_SINTLSYMBOL, "GRD") /* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ /* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ -/* LOCVAL(LOCALE_SMONGROUPING) */ +LOCVAL(LOCALE_SMONGROUPING, "3;0") /* LOCVAL(LOCALE_ICURRDIGITS,"2") */ /* LOCVAL(LOCALE_IINTLCURRDIGITS) */ /* LOCVAL(LOCALE_ICURRENCY,"3") */ diff --git a/ole/nls/hrv.nls b/ole/nls/hrv.nls index b03d261846d..36d4314660d 100644 --- a/ole/nls/hrv.nls +++ b/ole/nls/hrv.nls @@ -5,14 +5,14 @@ /* LOCVAL(LOCALE_ILANGUAGE,"") */ /* LOCVAL(LOCALE_SLANGUAGE,"") */ -/* LOCVAL(LOCALE_SENGLANGUAGE,"") */ +LOCVAL(LOCALE_SENGLANGUAGE,"Croatian") LOCVAL(LOCALE_SABBREVLANGNAME,"hrv") -/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +LOCVAL(LOCALE_SNATIVELANGNAME,"hrvatski") /* LOCVAL(LOCALE_ICOUNTRY,"") */ /* LOCVAL(LOCALE_SCOUNTRY,"") */ -/* LOCVAL(LOCALE_SENGCOUNTRY,"") */ -/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ -/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +LOCVAL(LOCALE_SENGCOUNTRY,"Croatia") +/* LOCVAL(LOCALE_SABBREVCTRYNAME,"HRV") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Hrvatska") /* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ /* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ /* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ @@ -25,12 +25,12 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"hrv") /* LOCVAL(LOCALE_IDIGITS,"2") */ /* LOCVAL(LOCALE_ILZERO,"1") */ /* LOCVAL(LOCALE_INEGNUMBER) */ -/* LOCVAL(LOCALE_SNATIVEDIGITS) */ -/* LOCVAL(LOCALE_SCURRENCY,"") */ -/* LOCVAL(LOCALE_SINTLSYMBOL) */ +LOCVAL(LOCALE_SNATIVEDIGITS,"0123456789") +LOCVAL(LOCALE_SCURRENCY,"Din") +LOCVAL(LOCALE_SINTLSYMBOL,"HRD") /* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ /* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ -/* LOCVAL(LOCALE_SMONGROUPING) */ +LOCVAL(LOCALE_SMONGROUPING,"3;0") /* LOCVAL(LOCALE_ICURRDIGITS,"2") */ /* LOCVAL(LOCALE_IINTLCURRDIGITS) */ /* LOCVAL(LOCALE_ICURRENCY,"3") */ @@ -55,49 +55,50 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"hrv") /* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ /* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ -/* LOCVAL(LOCALE_SDAYNAME1,"") */ -/* LOCVAL(LOCALE_SDAYNAME2,"") */ -/* LOCVAL(LOCALE_SDAYNAME3,"") */ -/* LOCVAL(LOCALE_SDAYNAME4,"") */ -/* LOCVAL(LOCALE_SDAYNAME5,"") */ -/* LOCVAL(LOCALE_SDAYNAME6,"") */ -/* LOCVAL(LOCALE_SDAYNAME7,"") */ +/* LOCVAL(LOCALE_SDAYNAME1,"ponedj") */ +/* LOCVAL(LOCALE_SDAYNAME2,"eljak") */ +/* LOCVAL(LOCALE_SDAYNAME3,"utorak") */ +/* LOCVAL(LOCALE_SDAYNAME4,"srijeda") */ +/* LOCVAL(LOCALE_SDAYNAME5,"etvrtak") */ +/* LOCVAL(LOCALE_SDAYNAME6,"petak") */ +/* LOCVAL(LOCALE_SDAYNAME7,"subota") */ +/* LOCVAL(LOCALE_SDAYNAME?,"nedjelja") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME1,"Ma") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME2,"Ti") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME3,"On") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME4,"To") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME6,"Lø") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME7,"Sø") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ -/* LOCVAL(LOCALE_SMONTHNAME1,"") */ -/* LOCVAL(LOCALE_SMONTHNAME2,"") */ -/* LOCVAL(LOCALE_SMONTHNAME3,"") */ -/* LOCVAL(LOCALE_SMONTHNAME4,"") */ -/* LOCVAL(LOCALE_SMONTHNAME5,"") */ -/* LOCVAL(LOCALE_SMONTHNAME6,"") */ -/* LOCVAL(LOCALE_SMONTHNAME7,"") */ -/* LOCVAL(LOCALE_SMONTHNAME8,"") */ -/* LOCVAL(LOCALE_SMONTHNAME9,"") */ -/* LOCVAL(LOCALE_SMONTHNAME10,"") */ -/* LOCVAL(LOCALE_SMONTHNAME11,"") */ -/* LOCVAL(LOCALE_SMONTHNAME12,"") */ -/* LOCVAL(LOCALE_SMONTHNAME13,"") */ +LOCVAL(LOCALE_SMONTHNAME1,"sije?anj") +LOCVAL(LOCALE_SMONTHNAME2,"velja") +LOCVAL(LOCALE_SMONTHNAME3,"o?ujak") +LOCVAL(LOCALE_SMONTHNAME4,"travanj") +LOCVAL(LOCALE_SMONTHNAME5,"svibanj") +LOCVAL(LOCALE_SMONTHNAME6,"lipanj") +LOCVAL(LOCALE_SMONTHNAME7,"srpanj") +LOCVAL(LOCALE_SMONTHNAME7,"kolovoz") +LOCVAL(LOCALE_SMONTHNAME9,"rujan") +LOCVAL(LOCALE_SMONTHNAME10,"listopad") +LOCVAL(LOCALE_SMONTHNAME11,"studeni") +LOCVAL(LOCALE_SMONTHNAME12,"prosinac") +LOCVAL(LOCALE_SMONTHNAME12,"") -/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ +LOCVAL(LOCALE_SABBREVMONTHNAME1,"sij") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"vel") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"o?u") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"tra") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"svi") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"lip") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"srp") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"kol") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"ruj") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"lis") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"stu") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"pro") +LOCVAL(LOCALE_SABBREVMONTHNAME13,"") /* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ /* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ @@ -108,3 +109,4 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"hrv") /* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ /* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ +/* Gregorijanski kalendar */ diff --git a/ole/nls/hun.nls b/ole/nls/hun.nls index 466e7898a54..7db35f0496f 100644 --- a/ole/nls/hun.nls +++ b/ole/nls/hun.nls @@ -25,12 +25,12 @@ LOCVAL(LOCALE_STHOUSAND,",") LOCVAL(LOCALE_IDIGITS,"2") LOCVAL(LOCALE_ILZERO,"1") /* LOCVAL(LOCALE_INEGNUMBER) */ -/* LOCVAL(LOCALE_SNATIVEDIGITS) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") LOCVAL(LOCALE_SCURRENCY,"Ft") LOCVAL(LOCALE_SINTLSYMBOL,"HUF") /* LOCVAL(LOCALE_SMONDECIMALSEP) */ /* LOCVAL(LOCALE_SMONTHOUSANDSEP) */ -/* LOCVAL(LOCALE_SMONGROUPING) */ +LOCVAL(LOCALE_SMONGROUPING,"3;0") LOCVAL(LOCALE_ICURRDIGITS,"0") /* LOCVAL(LOCALE_IINTLCURRDIGITS) */ LOCVAL(LOCALE_ICURRENCY,"3") diff --git a/ole/nls/ind.nls b/ole/nls/ind.nls new file mode 100644 index 00000000000..7c9610fc5a6 --- /dev/null +++ b/ole/nls/ind.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Indonesia (Bahasa) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +/* LOCVAL(LOCALE_SENGLANGUAGE,"") */ +LOCVAL(LOCALE_SABBREVLANGNAME,"ind") +/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +/* LOCVAL(LOCALE_SENGCOUNTRY,"") */ +/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ +/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS,"0123456789") +/* LOCVAL(LOCALE_SCURRENCY,"") */ +LOCVAL(LOCALE_SINTLSYMBOL,"AED") +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +/* LOCVAL(LOCALE_SMONGROUPING) */ +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +/* LOCVAL(LOCALE_SDAYNAME1,"") */ +/* LOCVAL(LOCALE_SDAYNAME2,"") */ +/* LOCVAL(LOCALE_SDAYNAME3,"") */ +/* LOCVAL(LOCALE_SDAYNAME4,"") */ +/* LOCVAL(LOCALE_SDAYNAME5,"") */ +/* LOCVAL(LOCALE_SDAYNAME6,"") */ +/* LOCVAL(LOCALE_SDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* */ diff --git a/ole/nls/irl.nls b/ole/nls/irl.nls index fb15228caac..cf96e6fd414 100644 --- a/ole/nls/irl.nls +++ b/ole/nls/irl.nls @@ -9,9 +9,9 @@ LOCVAL(LOCALE_SENGLANGUAGE, "English") LOCVAL(LOCALE_SABBREVLANGNAME, "irl") LOCVAL(LOCALE_SNATIVELANGNAME, "English") LOCVAL(LOCALE_ICOUNTRY, "1") -LOCVAL(LOCALE_SCOUNTRY, "United States") -LOCVAL(LOCALE_SENGCOUNTRY, "United States") -LOCVAL(LOCALE_SABBREVCTRYNAME, "USA") +LOCVAL(LOCALE_SCOUNTRY, "Ireland") +LOCVAL(LOCALE_SENGCOUNTRY, "Ireland") +LOCVAL(LOCALE_SABBREVCTRYNAME, "IRL") LOCVAL(LOCALE_SNATIVECTRYNAME, "Eire") LOCVAL(LOCALE_IDEFAULTLANGUAGE, "0409") LOCVAL(LOCALE_IDEFAULTCOUNTRY, "1") @@ -107,3 +107,5 @@ LOCVAL(LOCALE_IPOSSYMPRECEDES, "1") LOCVAL(LOCALE_IPOSSEPBYSPACE, "0") LOCVAL(LOCALE_INEGSYMPRECEDES, "1") LOCVAL(LOCALE_INEGSEPBYSPACE, "0") + +/* Gregorian Calendar */ \ No newline at end of file diff --git a/ole/nls/isl.nls b/ole/nls/isl.nls index e207da1353b..ca7a579ac58 100644 --- a/ole/nls/isl.nls +++ b/ole/nls/isl.nls @@ -7,7 +7,7 @@ LOCVAL(LOCALE_ILANGUAGE,"9") LOCVAL(LOCALE_SLANGUAGE,"€slensk") LOCVAL(LOCALE_SENGLANGUAGE,"Icelandic") LOCVAL(LOCALE_SABBREVLANGNAME,"isl") -LOCVAL(LOCALE_SNATIVELANGNAME,"€slensk") +LOCVAL(LOCALE_SNATIVELANGNAME,"€slenska") /* LOCVAL(LOCALE_ICOUNTRY,"49") */ LOCVAL(LOCALE_SCOUNTRY,"€sland") LOCVAL(LOCALE_SENGCOUNTRY,"Iceland") @@ -30,7 +30,7 @@ LOCVAL(LOCALE_SCURRENCY,"kr") LOCVAL(LOCALE_SINTLSYMBOL, "ISK") /* LOCVAL(LOCALE_SMONDECIMALSEP) */ /* LOCVAL(LOCALE_SMONTHOUSANDSEP) */ -/* LOCVAL(LOCALE_SMONGROUPING) */ +LOCVAL(LOCALE_SMONGROUPING,"3;0") LOCVAL(LOCALE_ICURRDIGITS,"2") /* LOCVAL(LOCALE_IINTLCURRDIGITS) */ LOCVAL(LOCALE_ICURRENCY,"3") @@ -56,20 +56,20 @@ LOCVAL(LOCALE_ITLZERO,"1") /* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ LOCVAL(LOCALE_SDAYNAME1,"m€nudagur") -LOCVAL(LOCALE_SDAYNAME2,"thridjudagur") -LOCVAL(LOCALE_SDAYNAME3,"midvikudagur") +LOCVAL(LOCALE_SDAYNAME2,"?hridjudagur") +LOCVAL(LOCALE_SDAYNAME3,"mi?vikudagur") LOCVAL(LOCALE_SDAYNAME4,"fimmtudagur") LOCVAL(LOCALE_SDAYNAME5,"f€studagur") LOCVAL(LOCALE_SDAYNAME6,"laugardagur") LOCVAL(LOCALE_SDAYNAME7,"sunnudagur") -LOCVAL(LOCALE_SABBREVDAYNAME1,"m€") -LOCVAL(LOCALE_SABBREVDAYNAME2,"dr") -LOCVAL(LOCALE_SABBREVDAYNAME3,"mi") -LOCVAL(LOCALE_SABBREVDAYNAME4,"fi") -LOCVAL(LOCALE_SABBREVDAYNAME5,"f€") -LOCVAL(LOCALE_SABBREVDAYNAME6,"la") -LOCVAL(LOCALE_SABBREVDAYNAME7,"su") +LOCVAL(LOCALE_SABBREVDAYNAME1,"m€n") +LOCVAL(LOCALE_SABBREVDAYNAME2,"?ri") +LOCVAL(LOCALE_SABBREVDAYNAME3,"mi?") +LOCVAL(LOCALE_SABBREVDAYNAME4,"fim") +LOCVAL(LOCALE_SABBREVDAYNAME5,"f€s") +LOCVAL(LOCALE_SABBREVDAYNAME6,"lau") +LOCVAL(LOCALE_SABBREVDAYNAME7,"sun") LOCVAL(LOCALE_SMONTHNAME1,"jan€ar") LOCVAL(LOCALE_SMONTHNAME2,"febr€ar") @@ -107,3 +107,5 @@ LOCVAL(LOCALE_SABBREVMONTHNAME13,"") /* LOCVAL(LOCALE_IPOSSEPBYSPACE) */ /* LOCVAL(LOCALE_INEGSYMPRECEDES) */ /* LOCVAL(LOCALE_INEGSEPBYSPACE) */ + +/* gregor */ diff --git a/ole/nls/ita.nls b/ole/nls/ita.nls index 664568ea33c..282a85790f6 100644 --- a/ole/nls/ita.nls +++ b/ole/nls/ita.nls @@ -11,11 +11,11 @@ LOCVAL(LOCALE_SNATIVELANGNAME,"Italiano") LOCVAL(LOCALE_ICOUNTRY,"39") LOCVAL(LOCALE_SCOUNTRY,"Italia") LOCVAL(LOCALE_SENGCOUNTRY,"Italy") -LOCVAL(LOCALE_SABBREVCTRYNAME,"It") +LOCVAL(LOCALE_SABBREVCTRYNAME,"ITL") LOCVAL(LOCALE_SNATIVECTRYNAME,"Italia") LOCVAL(LOCALE_IDEFAULTLANGUAGE,"9") LOCVAL(LOCALE_IDEFAULTCOUNTRY,"39") -/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) /* +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ /* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ LOCVAL(LOCALE_SLIST,";") LOCVAL(LOCALE_IMEASURE,"0") @@ -30,7 +30,7 @@ LOCVAL(LOCALE_SCURRENCY,"Lit.") LOCVAL(LOCALE_SINTLSYMBOL, "ITL") /* LOCVAL(LOCALE_SMONDECIMALSEP) */ /* LOCVAL(LOCALE_SMONTHOUSANDSEP) */ -/* LOCVAL(LOCALE_SMONGROUPING) */ +LOCVAL(LOCALE_SMONGROUPING,"3;0") LOCVAL(LOCALE_ICURRDIGITS,"2") /* LOCVAL(LOCALE_IINTLCURRDIGITS) */ LOCVAL(LOCALE_ICURRENCY,"3") @@ -71,32 +71,32 @@ LOCVAL(LOCALE_SABBREVDAYNAME5,"Ve") LOCVAL(LOCALE_SABBREVDAYNAME6,"Sa") LOCVAL(LOCALE_SABBREVDAYNAME7,"Do") -LOCVAL(LOCALE_SMONTHNAME1,"Gennaio") -LOCVAL(LOCALE_SMONTHNAME2,"Febbraio") -LOCVAL(LOCALE_SMONTHNAME3,"Marzo") -LOCVAL(LOCALE_SMONTHNAME4,"Aprile") -LOCVAL(LOCALE_SMONTHNAME5,"Maggio") -LOCVAL(LOCALE_SMONTHNAME6,"Giugno") -LOCVAL(LOCALE_SMONTHNAME7,"Luglio") -LOCVAL(LOCALE_SMONTHNAME8,"Agosto") -LOCVAL(LOCALE_SMONTHNAME9,"Settembre") -LOCVAL(LOCALE_SMONTHNAME10,"Ottobre") -LOCVAL(LOCALE_SMONTHNAME11,"Novembre") -LOCVAL(LOCALE_SMONTHNAME12,"Dicembre") +LOCVAL(LOCALE_SMONTHNAME1,"gennaio") +LOCVAL(LOCALE_SMONTHNAME2,"febbraio") +LOCVAL(LOCALE_SMONTHNAME3,"marzo") +LOCVAL(LOCALE_SMONTHNAME4,"aprile") +LOCVAL(LOCALE_SMONTHNAME5,"maggio") +LOCVAL(LOCALE_SMONTHNAME6,"giugno") +LOCVAL(LOCALE_SMONTHNAME7,"luglio") +LOCVAL(LOCALE_SMONTHNAME8,"agosto") +LOCVAL(LOCALE_SMONTHNAME9,"settembre") +LOCVAL(LOCALE_SMONTHNAME10,"ottobre") +LOCVAL(LOCALE_SMONTHNAME11,"novembre") +LOCVAL(LOCALE_SMONTHNAME12,"dicembre") LOCVAL(LOCALE_SMONTHNAME13,"") -LOCVAL(LOCALE_SABBREVMONTHNAME1,"Gen") -LOCVAL(LOCALE_SABBREVMONTHNAME2,"Feb") -LOCVAL(LOCALE_SABBREVMONTHNAME3,"Mar") -LOCVAL(LOCALE_SABBREVMONTHNAME4,"Apr") -LOCVAL(LOCALE_SABBREVMONTHNAME5,"Mag") -LOCVAL(LOCALE_SABBREVMONTHNAME6,"Giu") -LOCVAL(LOCALE_SABBREVMONTHNAME7,"Lug") -LOCVAL(LOCALE_SABBREVMONTHNAME8,"Ago") -LOCVAL(LOCALE_SABBREVMONTHNAME9,"Set") -LOCVAL(LOCALE_SABBREVMONTHNAME10,"Ott") -LOCVAL(LOCALE_SABBREVMONTHNAME11,"Nov") -LOCVAL(LOCALE_SABBREVMONTHNAME12,"Dic") +LOCVAL(LOCALE_SABBREVMONTHNAME1,"gen") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"feb") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"mar") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"apr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"mag") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"giu") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"lug") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"ago") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"set") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"ott") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic") LOCVAL(LOCALE_SABBREVMONTHNAME13,"") /* LOCVAL(LOCALE_SPOSITIVESIGN) */ @@ -108,3 +108,4 @@ LOCVAL(LOCALE_SABBREVMONTHNAME13,"") /* LOCVAL(LOCALE_INEGSYMPRECEDES) */ /* LOCVAL(LOCALE_INEGSEPBYSPACE) */ +/* calendario gregoriano */ diff --git a/ole/nls/its.nls b/ole/nls/its.nls index a493fde99ff..8c4b3fb7ae4 100644 --- a/ole/nls/its.nls +++ b/ole/nls/its.nls @@ -1,6 +1,6 @@ /* * OLE2NLS library - * Switzerland + * Switzerland (Italiano) */ LOCVAL(LOCALE_ILANGUAGE,"9") @@ -11,7 +11,7 @@ LOCVAL(LOCALE_SNATIVELANGNAME,"Italiano") LOCVAL(LOCALE_ICOUNTRY,"41") LOCVAL(LOCALE_SCOUNTRY,"Svizzera") LOCVAL(LOCALE_SENGCOUNTRY,"Switzerand") -LOCVAL(LOCALE_SABBREVCTRYNAME,"CH") +LOCVAL(LOCALE_SABBREVCTRYNAME,"CHE") LOCVAL(LOCALE_SNATIVECTRYNAME,"Svizzera") LOCVAL(LOCALE_IDEFAULTLANGUAGE,"9") LOCVAL(LOCALE_IDEFAULTCOUNTRY,"41") @@ -30,7 +30,7 @@ LOCVAL(LOCALE_SCURRENCY,"SFr") LOCVAL(LOCALE_SINTLSYMBOL, "CHF") /* LOCVAL(LOCALE_SMONDECIMALSEP) */ /* LOCVAL(LOCALE_SMONTHOUSANDSEP) */ -/* LOCVAL(LOCALE_SMONGROUPING) */ +LOCVAL(LOCALE_SMONGROUPING,"3;0") LOCVAL(LOCALE_ICURRDIGITS,"2") /* LOCVAL(LOCALE_IINTLCURRDIGITS) */ LOCVAL(LOCALE_ICURRENCY,"3") @@ -55,48 +55,48 @@ LOCVAL(LOCALE_ITLZERO,"1") /* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ /* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ -LOCVAL(LOCALE_SDAYNAME1,"Lunedi'") -LOCVAL(LOCALE_SDAYNAME2,"Martedi'") -LOCVAL(LOCALE_SDAYNAME3,"Mercoledi'") -LOCVAL(LOCALE_SDAYNAME4,"Giovedi'") -LOCVAL(LOCALE_SDAYNAME5,"Venerdi'") -LOCVAL(LOCALE_SDAYNAME6,"Sabato") -LOCVAL(LOCALE_SDAYNAME7,"Domenica") +LOCVAL(LOCALE_SDAYNAME1,"lunedi'") +LOCVAL(LOCALE_SDAYNAME2,"martedi'") +LOCVAL(LOCALE_SDAYNAME3,"mercoledi'") +LOCVAL(LOCALE_SDAYNAME4,"giovedi'") +LOCVAL(LOCALE_SDAYNAME5,"venerdi'") +LOCVAL(LOCALE_SDAYNAME6,"sabato") +LOCVAL(LOCALE_SDAYNAME7,"domenica") -LOCVAL(LOCALE_SABBREVDAYNAME1,"Lu") -LOCVAL(LOCALE_SABBREVDAYNAME2,"Ma") -LOCVAL(LOCALE_SABBREVDAYNAME3,"Me") -LOCVAL(LOCALE_SABBREVDAYNAME4,"Gi") -LOCVAL(LOCALE_SABBREVDAYNAME5,"Ve") -LOCVAL(LOCALE_SABBREVDAYNAME6,"Sa") -LOCVAL(LOCALE_SABBREVDAYNAME7,"Do") +LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") +LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") +LOCVAL(LOCALE_SABBREVDAYNAME3,"mer") +LOCVAL(LOCALE_SABBREVDAYNAME4,"gio") +LOCVAL(LOCALE_SABBREVDAYNAME5,"ven") +LOCVAL(LOCALE_SABBREVDAYNAME6,"sab") +LOCVAL(LOCALE_SABBREVDAYNAME7,"dom") -LOCVAL(LOCALE_SMONTHNAME1,"Gennaio") -LOCVAL(LOCALE_SMONTHNAME2,"Febbraio") -LOCVAL(LOCALE_SMONTHNAME3,"Marzo") -LOCVAL(LOCALE_SMONTHNAME4,"Aprile") -LOCVAL(LOCALE_SMONTHNAME5,"Maggio") -LOCVAL(LOCALE_SMONTHNAME6,"Giugno") -LOCVAL(LOCALE_SMONTHNAME7,"Luglio") -LOCVAL(LOCALE_SMONTHNAME8,"Agosto") -LOCVAL(LOCALE_SMONTHNAME9,"Settembre") -LOCVAL(LOCALE_SMONTHNAME10,"Ottobre") -LOCVAL(LOCALE_SMONTHNAME11,"Novembre") -LOCVAL(LOCALE_SMONTHNAME12,"Dicembre") +LOCVAL(LOCALE_SMONTHNAME1,"gennaio") +LOCVAL(LOCALE_SMONTHNAME2,"febbraio") +LOCVAL(LOCALE_SMONTHNAME3,"marzo") +LOCVAL(LOCALE_SMONTHNAME4,"aprile") +LOCVAL(LOCALE_SMONTHNAME5,"maggio") +LOCVAL(LOCALE_SMONTHNAME6,"giugno") +LOCVAL(LOCALE_SMONTHNAME7,"luglio") +LOCVAL(LOCALE_SMONTHNAME8,"agosto") +LOCVAL(LOCALE_SMONTHNAME9,"settembre") +LOCVAL(LOCALE_SMONTHNAME10,"ottobre") +LOCVAL(LOCALE_SMONTHNAME11,"novembre") +LOCVAL(LOCALE_SMONTHNAME12,"dicembre") LOCVAL(LOCALE_SMONTHNAME13,"") -LOCVAL(LOCALE_SABBREVMONTHNAME1,"Gen") -LOCVAL(LOCALE_SABBREVMONTHNAME2,"Feb") -LOCVAL(LOCALE_SABBREVMONTHNAME3,"Mar") -LOCVAL(LOCALE_SABBREVMONTHNAME4,"Apr") -LOCVAL(LOCALE_SABBREVMONTHNAME5,"Mag") -LOCVAL(LOCALE_SABBREVMONTHNAME6,"Giu") -LOCVAL(LOCALE_SABBREVMONTHNAME7,"Lug") -LOCVAL(LOCALE_SABBREVMONTHNAME8,"Ago") -LOCVAL(LOCALE_SABBREVMONTHNAME9,"Set") -LOCVAL(LOCALE_SABBREVMONTHNAME10,"Ott") -LOCVAL(LOCALE_SABBREVMONTHNAME11,"Nov") -LOCVAL(LOCALE_SABBREVMONTHNAME12,"Dic") +LOCVAL(LOCALE_SABBREVMONTHNAME1,"gen") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"feb") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"mar") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"apr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"mag") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"giu") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"lug") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"ago") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"set") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"ott") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic") LOCVAL(LOCALE_SABBREVMONTHNAME13,"") /* LOCVAL(LOCALE_SPOSITIVESIGN) */ @@ -108,3 +108,4 @@ LOCVAL(LOCALE_SABBREVMONTHNAME13,"") /* LOCVAL(LOCALE_INEGSYMPRECEDES) */ /* LOCVAL(LOCALE_INEGSEPBYSPACE) */ +/* calendario gregoriano */ diff --git a/ole/nls/jpn.nls b/ole/nls/jpn.nls new file mode 100644 index 00000000000..941cf813a4d --- /dev/null +++ b/ole/nls/jpn.nls @@ -0,0 +1,110 @@ +/* + * OLE2NLS library + * Japanese + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +LOCVAL(LOCALE_SENGLANGUAGE,"Japanese") +LOCVAL(LOCALE_SABBREVLANGNAME,"jpn") +/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +LOCVAL(LOCALE_SENGCOUNTRY,"Japan") +LOCVAL(LOCALE_SABBREVCTRYNAME,"JPN") +/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +LOCVAL(LOCALE_SGROUPING,"3;0") +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS,"0123456789") +/* LOCVAL(LOCALE_SCURRENCY,"") */ +LOCVAL(LOCALE_SINTLSYMBOL, "JPY") +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +/* LOCVAL(LOCALE_SMONGROUPING) */ +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +/* LOCVAL(LOCALE_SDAYNAME1,"") */ +/* LOCVAL(LOCALE_SDAYNAME2,"") */ +/* LOCVAL(LOCALE_SDAYNAME3,"") */ +/* LOCVAL(LOCALE_SDAYNAME4,"") */ +/* LOCVAL(LOCALE_SDAYNAME5,"") */ +/* LOCVAL(LOCALE_SDAYNAME6,"") */ +/* LOCVAL(LOCALE_SDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + diff --git a/ole/nls/koj.nls b/ole/nls/koj.nls index 71aceb22311..4de92102320 100644 --- a/ole/nls/koj.nls +++ b/ole/nls/koj.nls @@ -1,17 +1,17 @@ /* * OLE2NLS library - * Korean + * Korean (Johab) */ /* LOCVAL(LOCALE_ILANGUAGE,"") */ -/* LOCVAL(LOCALE_SLANGUAGE,"") */ -/* LOCVAL(LOCALE_SENGLANGUAGE,"") */ +LOCVAL(LOCALE_SLANGUAGE,"Korean (Johab)") +LOCVAL(LOCALE_SENGLANGUAGE,"Korean") LOCVAL(LOCALE_SABBREVLANGNAME,"koj") /* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ /* LOCVAL(LOCALE_ICOUNTRY,"") */ /* LOCVAL(LOCALE_SCOUNTRY,"") */ /* LOCVAL(LOCALE_SENGCOUNTRY,"") */ -/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ +LOCVAL(LOCALE_SABBREVCTRYNAME,"KOR") /* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ /* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ /* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ @@ -25,12 +25,12 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"koj") /* LOCVAL(LOCALE_IDIGITS,"2") */ /* LOCVAL(LOCALE_ILZERO,"1") */ /* LOCVAL(LOCALE_INEGNUMBER) */ -/* LOCVAL(LOCALE_SNATIVEDIGITS) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") /* LOCVAL(LOCALE_SCURRENCY,"") */ /* LOCVAL(LOCALE_SINTLSYMBOL) */ /* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ /* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ -/* LOCVAL(LOCALE_SMONGROUPING) */ +LOCVAL(LOCALE_SMONGROUPING,"3;0") /* LOCVAL(LOCALE_ICURRDIGITS,"2") */ /* LOCVAL(LOCALE_IINTLCURRDIGITS) */ /* LOCVAL(LOCALE_ICURRENCY,"3") */ @@ -63,13 +63,13 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"koj") /* LOCVAL(LOCALE_SDAYNAME6,"") */ /* LOCVAL(LOCALE_SDAYNAME7,"") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME1,"Ma") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME2,"Ti") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME3,"On") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME4,"To") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME6,"Lø") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME7,"Sø") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ /* LOCVAL(LOCALE_SMONTHNAME1,"") */ /* LOCVAL(LOCALE_SMONTHNAME2,"") */ diff --git a/ole/nls/lth.nls b/ole/nls/lth.nls index f758697342b..051c1413256 100644 --- a/ole/nls/lth.nls +++ b/ole/nls/lth.nls @@ -63,13 +63,13 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"lth") /* LOCVAL(LOCALE_SDAYNAME6,"") */ /* LOCVAL(LOCALE_SDAYNAME7,"") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME1,"Ma") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME2,"Ti") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME3,"On") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME4,"To") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME6,"Lø") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME7,"Sø") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ /* LOCVAL(LOCALE_SMONTHNAME1,"") */ /* LOCVAL(LOCALE_SMONTHNAME2,"") */ diff --git a/ole/nls/lvi.nls b/ole/nls/lvi.nls index a0d1773d994..67863c7c6e4 100644 --- a/ole/nls/lvi.nls +++ b/ole/nls/lvi.nls @@ -63,13 +63,13 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"lvi") /* LOCVAL(LOCALE_SDAYNAME6,"") */ /* LOCVAL(LOCALE_SDAYNAME7,"") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME1,"Ma") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME2,"Ti") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME3,"On") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME4,"To") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME6,"Lø") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME7,"Sø") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ /* LOCVAL(LOCALE_SMONTHNAME1,"") */ /* LOCVAL(LOCALE_SMONTHNAME2,"") */ diff --git a/ole/nls/nlb.nls b/ole/nls/nlb.nls index e29103f2598..f99805956b5 100644 --- a/ole/nls/nlb.nls +++ b/ole/nls/nlb.nls @@ -1,18 +1,18 @@ /* * OLE2NLS library - * Netherlands + * Dutch (Belgium) */ /* LOCVAL(LOCALE_ILANGUAGE,"") */ /* LOCVAL(LOCALE_SLANGUAGE,"") */ -/* LOCVAL(LOCALE_SENGLANGUAGE,"") */ +LOCVAL(LOCALE_SENGLANGUAGE,"Dutch") LOCVAL(LOCALE_SABBREVLANGNAME,"nlb") -/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +LOCVAL(LOCALE_SNATIVELANGNAME,"Nederlands") /* LOCVAL(LOCALE_ICOUNTRY,"") */ /* LOCVAL(LOCALE_SCOUNTRY,"") */ -/* LOCVAL(LOCALE_SENGCOUNTRY,"") */ -/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ -/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +LOCVAL(LOCALE_SENGCOUNTRY,"Belgium") +LOCVAL(LOCALE_SABBREVCTRYNAME,"BEL") +/* LOCVAL(LOCALE_SNATIVECTRYNAME,"Belgi") */ /* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ /* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ /* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ @@ -25,12 +25,12 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"nlb") /* LOCVAL(LOCALE_IDIGITS,"2") */ /* LOCVAL(LOCALE_ILZERO,"1") */ /* LOCVAL(LOCALE_INEGNUMBER) */ -/* LOCVAL(LOCALE_SNATIVEDIGITS) */ -/* LOCVAL(LOCALE_SCURRENCY,"") */ -/* LOCVAL(LOCALE_SINTLSYMBOL) */ +LOCVAL(LOCALE_SNATIVEDIGITS,"0123456789") +LOCVAL(LOCALE_SCURRENCY,"BF") +LOCVAL(LOCALE_SINTLSYMBOL,"BEF") /* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ /* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ -/* LOCVAL(LOCALE_SMONGROUPING) */ +LOCVAL(LOCALE_SMONGROUPING,"3;0") /* LOCVAL(LOCALE_ICURRDIGITS,"2") */ /* LOCVAL(LOCALE_IINTLCURRDIGITS) */ /* LOCVAL(LOCALE_ICURRENCY,"3") */ @@ -55,49 +55,49 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"nlb") /* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ /* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ -/* LOCVAL(LOCALE_SDAYNAME1,"") */ -/* LOCVAL(LOCALE_SDAYNAME2,"") */ -/* LOCVAL(LOCALE_SDAYNAME3,"") */ -/* LOCVAL(LOCALE_SDAYNAME4,"") */ -/* LOCVAL(LOCALE_SDAYNAME5,"") */ -/* LOCVAL(LOCALE_SDAYNAME6,"") */ -/* LOCVAL(LOCALE_SDAYNAME7,"") */ +LOCVAL(LOCALE_SDAYNAME1,"maandag") +LOCVAL(LOCALE_SDAYNAME2,"dinsdag") +LOCVAL(LOCALE_SDAYNAME3,"woensdag") +LOCVAL(LOCALE_SDAYNAME4,"donderdag") +LOCVAL(LOCALE_SDAYNAME5,"vrijdag") +LOCVAL(LOCALE_SDAYNAME6,"zaterdag") +LOCVAL(LOCALE_SDAYNAME7,"zondag") -/* LOCVAL(LOCALE_SABBREVDAYNAME1,"Ma") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME2,"Ti") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME3,"On") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME4,"To") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME6,"Lø") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME7,"Sø") */ +LOCVAL(LOCALE_SABBREVDAYNAME1,"ma") +LOCVAL(LOCALE_SABBREVDAYNAME2,"di") +LOCVAL(LOCALE_SABBREVDAYNAME3,"wo") +LOCVAL(LOCALE_SABBREVDAYNAME4,"do") +LOCVAL(LOCALE_SABBREVDAYNAME5,"vr") +LOCVAL(LOCALE_SABBREVDAYNAME6,"za") +LOCVAL(LOCALE_SABBREVDAYNAME7,"zo") -/* LOCVAL(LOCALE_SMONTHNAME1,"") */ -/* LOCVAL(LOCALE_SMONTHNAME2,"") */ -/* LOCVAL(LOCALE_SMONTHNAME3,"") */ -/* LOCVAL(LOCALE_SMONTHNAME4,"") */ -/* LOCVAL(LOCALE_SMONTHNAME5,"") */ -/* LOCVAL(LOCALE_SMONTHNAME6,"") */ -/* LOCVAL(LOCALE_SMONTHNAME7,"") */ -/* LOCVAL(LOCALE_SMONTHNAME8,"") */ -/* LOCVAL(LOCALE_SMONTHNAME9,"") */ -/* LOCVAL(LOCALE_SMONTHNAME10,"") */ -/* LOCVAL(LOCALE_SMONTHNAME11,"") */ -/* LOCVAL(LOCALE_SMONTHNAME12,"") */ -/* LOCVAL(LOCALE_SMONTHNAME13,"") */ +LOCVAL(LOCALE_SMONTHNAME1,"januar") +LOCVAL(LOCALE_SMONTHNAME2,"februari") +LOCVAL(LOCALE_SMONTHNAME3,"maart") +LOCVAL(LOCALE_SMONTHNAME4,"april") +LOCVAL(LOCALE_SMONTHNAME5,"mei") +LOCVAL(LOCALE_SMONTHNAME6,"juni") +LOCVAL(LOCALE_SMONTHNAME7,"juli") +LOCVAL(LOCALE_SMONTHNAME8,"augustus") +LOCVAL(LOCALE_SMONTHNAME9,"september") +LOCVAL(LOCALE_SMONTHNAME10,"oktober") +LOCVAL(LOCALE_SMONTHNAME11,"november") +LOCVAL(LOCALE_SMONTHNAME12,"december") +LOCVAL(LOCALE_SMONTHNAME13,"") -/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ +LOCVAL(LOCALE_SABBREVMONTHNAME1,"jan") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"feb") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"mrt") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"apr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"mei") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"jun") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"jul") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"aug") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"okt") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"dec") +LOCVAL(LOCALE_SABBREVMONTHNAME13,"") /* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ /* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ @@ -108,3 +108,4 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"nlb") /* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ /* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ +/* Gregorianse kalender */ diff --git a/ole/nls/nld.nls b/ole/nls/nld.nls new file mode 100644 index 00000000000..a701df3c4bd --- /dev/null +++ b/ole/nls/nld.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Dutch (Netherlands) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +LOCVAL(LOCALE_SENGLANGUAGE,"Dutch") +LOCVAL(LOCALE_SABBREVLANGNAME,"nld") +LOCVAL(LOCALE_SNATIVELANGNAME,"Nederlands") +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +LOCVAL(LOCALE_SENGCOUNTRY,"Netherlands") +LOCVAL(LOCALE_SABBREVCTRYNAME,"NLD") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Nederland") +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS,"0123456789") +LOCVAL(LOCALE_SCURRENCY,"F") +LOCVAL(LOCALE_SINTLSYMBOL,"NLG") +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +LOCVAL(LOCALE_SMONGROUPING,"3;0") +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +LOCVAL(LOCALE_SDAYNAME1,"maandag") +LOCVAL(LOCALE_SDAYNAME2,"dinsdag") +LOCVAL(LOCALE_SDAYNAME3,"woensdag") +LOCVAL(LOCALE_SDAYNAME4,"donderdag") +LOCVAL(LOCALE_SDAYNAME5,"vrijdag") +LOCVAL(LOCALE_SDAYNAME6,"zaterdag") +LOCVAL(LOCALE_SDAYNAME7,"zondag") + +LOCVAL(LOCALE_SABBREVDAYNAME1,"ma") +LOCVAL(LOCALE_SABBREVDAYNAME2,"di") +LOCVAL(LOCALE_SABBREVDAYNAME3,"wo") +LOCVAL(LOCALE_SABBREVDAYNAME4,"do") +LOCVAL(LOCALE_SABBREVDAYNAME5,"vr") +LOCVAL(LOCALE_SABBREVDAYNAME6,"za") +LOCVAL(LOCALE_SABBREVDAYNAME7,"zo") + +LOCVAL(LOCALE_SMONTHNAME1,"januar") +LOCVAL(LOCALE_SMONTHNAME2,"februari") +LOCVAL(LOCALE_SMONTHNAME3,"maart") +LOCVAL(LOCALE_SMONTHNAME4,"april") +LOCVAL(LOCALE_SMONTHNAME5,"mei") +LOCVAL(LOCALE_SMONTHNAME6,"juni") +LOCVAL(LOCALE_SMONTHNAME7,"juli") +LOCVAL(LOCALE_SMONTHNAME8,"augustus") +LOCVAL(LOCALE_SMONTHNAME9,"september") +LOCVAL(LOCALE_SMONTHNAME10,"oktober") +LOCVAL(LOCALE_SMONTHNAME11,"november") +LOCVAL(LOCALE_SMONTHNAME12,"december") +LOCVAL(LOCALE_SMONTHNAME13,"") + +LOCVAL(LOCALE_SABBREVMONTHNAME1,"jan") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"feb") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"mrt") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"apr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"mei") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"jun") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"jul") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"aug") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"okt") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"dec") +LOCVAL(LOCALE_SABBREVMONTHNAME13,"") + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* Gregorianse kalender */ diff --git a/ole/nls/non.nls b/ole/nls/non.nls index aa92e74c8fa..c6ab9152f4b 100644 --- a/ole/nls/non.nls +++ b/ole/nls/non.nls @@ -4,15 +4,15 @@ */ /* LOCVAL(LOCALE_ILANGUAGE,"") */ -/* LOCVAL(LOCALE_SLANGUAGE,"") */ -/* LOCVAL(LOCALE_SENGLANGUAGE,"") */ +LOCVAL(LOCALE_SLANGUAGE,"Norwegian (Nynorsk)") +LOCVAL(LOCALE_SENGLANGUAGE,"Norwegian") LOCVAL(LOCALE_SABBREVLANGNAME,"non") -/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +LOCVAL(LOCALE_SNATIVELANGNAME,"nynorsk") /* LOCVAL(LOCALE_ICOUNTRY,"") */ /* LOCVAL(LOCALE_SCOUNTRY,"") */ -/* LOCVAL(LOCALE_SENGCOUNTRY,"") */ -/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ -/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +LOCVAL(LOCALE_SENGCOUNTRY,"Norway") +LOCVAL(LOCALE_SABBREVCTRYNAME,"NOR") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Noreg") /* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ /* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ /* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ @@ -25,12 +25,12 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"non") /* LOCVAL(LOCALE_IDIGITS,"2") */ /* LOCVAL(LOCALE_ILZERO,"1") */ /* LOCVAL(LOCALE_INEGNUMBER) */ -/* LOCVAL(LOCALE_SNATIVEDIGITS) */ -/* LOCVAL(LOCALE_SCURRENCY,"") */ -/* LOCVAL(LOCALE_SINTLSYMBOL) */ +LOCVAL(LOCALE_SNATIVEDIGITS,"0123456789") +/* LOCVAL(LOCALE_SCURRENCY,"kr") */ +/* LOCVAL(LOCALE_SINTLSYMBOL,"NOK") */ /* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ /* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ -/* LOCVAL(LOCALE_SMONGROUPING) */ +LOCVAL(LOCALE_SMONGROUPING,"3;0") /* LOCVAL(LOCALE_ICURRDIGITS,"2") */ /* LOCVAL(LOCALE_IINTLCURRDIGITS) */ /* LOCVAL(LOCALE_ICURRENCY,"3") */ @@ -55,49 +55,49 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"non") /* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ /* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ -/* LOCVAL(LOCALE_SDAYNAME1,"") */ -/* LOCVAL(LOCALE_SDAYNAME2,"") */ -/* LOCVAL(LOCALE_SDAYNAME3,"") */ -/* LOCVAL(LOCALE_SDAYNAME4,"") */ -/* LOCVAL(LOCALE_SDAYNAME5,"") */ -/* LOCVAL(LOCALE_SDAYNAME6,"") */ -/* LOCVAL(LOCALE_SDAYNAME7,"") */ +LOCVAL(LOCALE_SDAYNAME1,"m?ndag") +LOCVAL(LOCALE_SDAYNAME2,"tysdag") +LOCVAL(LOCALE_SDAYNAME3,"fredag") +LOCVAL(LOCALE_SDAYNAME4,"onsdag") +LOCVAL(LOCALE_SDAYNAME5,"torsdag") +LOCVAL(LOCALE_SDAYNAME6,"laurdag") +LOCVAL(LOCALE_SDAYNAME7,"sundag") -/* LOCVAL(LOCALE_SABBREVDAYNAME1,"Ma") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME2,"Ti") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME3,"On") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME4,"To") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME6,"Lø") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME7,"Sø") */ +LOCVAL(LOCALE_SABBREVDAYNAME1,"m?") +LOCVAL(LOCALE_SABBREVDAYNAME2,"ty") +LOCVAL(LOCALE_SABBREVDAYNAME3,"fr") +LOCVAL(LOCALE_SABBREVDAYNAME4,"on") +LOCVAL(LOCALE_SABBREVDAYNAME5,"to") +LOCVAL(LOCALE_SABBREVDAYNAME6,"lau") +LOCVAL(LOCALE_SABBREVDAYNAME7,"su") -/* LOCVAL(LOCALE_SMONTHNAME1,"") */ -/* LOCVAL(LOCALE_SMONTHNAME2,"") */ -/* LOCVAL(LOCALE_SMONTHNAME3,"") */ -/* LOCVAL(LOCALE_SMONTHNAME4,"") */ -/* LOCVAL(LOCALE_SMONTHNAME5,"") */ -/* LOCVAL(LOCALE_SMONTHNAME6,"") */ -/* LOCVAL(LOCALE_SMONTHNAME7,"") */ -/* LOCVAL(LOCALE_SMONTHNAME8,"") */ -/* LOCVAL(LOCALE_SMONTHNAME9,"") */ -/* LOCVAL(LOCALE_SMONTHNAME10,"") */ -/* LOCVAL(LOCALE_SMONTHNAME11,"") */ -/* LOCVAL(LOCALE_SMONTHNAME12,"") */ -/* LOCVAL(LOCALE_SMONTHNAME13,"") */ +LOCVAL(LOCALE_SMONTHNAME1,"januar") +LOCVAL(LOCALE_SMONTHNAME2,"februar") +LOCVAL(LOCALE_SMONTHNAME3,"mars") +LOCVAL(LOCALE_SMONTHNAME4,"april") +LOCVAL(LOCALE_SMONTHNAME5,"mai") +LOCVAL(LOCALE_SMONTHNAME6,"juni") +LOCVAL(LOCALE_SMONTHNAME7,"juli") +LOCVAL(LOCALE_SMONTHNAME8,"august") +LOCVAL(LOCALE_SMONTHNAME9,"september") +LOCVAL(LOCALE_SMONTHNAME10,"oktober") +LOCVAL(LOCALE_SMONTHNAME11,"november") +LOCVAL(LOCALE_SMONTHNAME12,"desember") +LOCVAL(LOCALE_SMONTHNAME13,"") -/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ +LOCVAL(LOCALE_SABBREVMONTHNAME1,"jan") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"feb") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"mar") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"apr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"mai") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"jun") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"jul") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"aug") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"okt") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"des") +LOCVAL(LOCALE_SABBREVMONTHNAME13,"") /* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ /* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ @@ -108,3 +108,4 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"non") /* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ /* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ +/* gregoriansk kalender */ diff --git a/ole/nls/nor.nls b/ole/nls/nor.nls index 90e44fd9ce3..2727ae6bf6c 100644 --- a/ole/nls/nor.nls +++ b/ole/nls/nor.nls @@ -4,15 +4,15 @@ */ /* LOCVAL(LOCALE_ILANGUAGE,"") */ -/* LOCVAL(LOCALE_SLANGUAGE,"") */ -/* LOCVAL(LOCALE_SENGLANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"Norwegian (Bokm?l)") */ +/* LOCVAL(LOCALE_SENGLANGUAGE,"Norwegian") */ LOCVAL(LOCALE_SABBREVLANGNAME,"nor") -/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +LOCVAL(LOCALE_SNATIVELANGNAME,"bokm?l") /* LOCVAL(LOCALE_ICOUNTRY,"") */ /* LOCVAL(LOCALE_SCOUNTRY,"") */ -/* LOCVAL(LOCALE_SENGCOUNTRY,"") */ -/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ -/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +LOCVAL(LOCALE_SENGCOUNTRY,"Norway") +LOCVAL(LOCALE_SABBREVCTRYNAME,"NOR") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Norge") /* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ /* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ /* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ @@ -25,12 +25,12 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"nor") /* LOCVAL(LOCALE_IDIGITS,"2") */ /* LOCVAL(LOCALE_ILZERO,"1") */ /* LOCVAL(LOCALE_INEGNUMBER) */ -/* LOCVAL(LOCALE_SNATIVEDIGITS) */ -/* LOCVAL(LOCALE_SCURRENCY,"") */ -/* LOCVAL(LOCALE_SINTLSYMBOL) */ -/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ -/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ -/* LOCVAL(LOCALE_SMONGROUPING) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +LOCVAL(LOCALE_SCURRENCY,"kr") +LOCVAL(LOCALE_SINTLSYMBOL,"NOK") +LOCVAL(LOCALE_SMONDECIMALSEP,",") +LOCVAL(LOCALE_SMONTHOUSANDSEP,".") +LOCVAL(LOCALE_SMONGROUPING,"3;0") /* LOCVAL(LOCALE_ICURRDIGITS,"2") */ /* LOCVAL(LOCALE_IINTLCURRDIGITS) */ /* LOCVAL(LOCALE_ICURRENCY,"3") */ @@ -55,49 +55,49 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"nor") /* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ /* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ -/* LOCVAL(LOCALE_SDAYNAME1,"") */ -/* LOCVAL(LOCALE_SDAYNAME2,"") */ -/* LOCVAL(LOCALE_SDAYNAME3,"") */ -/* LOCVAL(LOCALE_SDAYNAME4,"") */ -/* LOCVAL(LOCALE_SDAYNAME5,"") */ -/* LOCVAL(LOCALE_SDAYNAME6,"") */ -/* LOCVAL(LOCALE_SDAYNAME7,"") */ +LOCVAL(LOCALE_SDAYNAME1,"mandag") +LOCVAL(LOCALE_SDAYNAME2,"tirsdag") +LOCVAL(LOCALE_SDAYNAME3,"onsdag") +LOCVAL(LOCALE_SDAYNAME4,"torsdag") +LOCVAL(LOCALE_SDAYNAME5,"fredag") +LOCVAL(LOCALE_SDAYNAME6,"l?rdag") +LOCVAL(LOCALE_SDAYNAME7,"s?ndag") -/* LOCVAL(LOCALE_SABBREVDAYNAME1,"Ma") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME2,"Ti") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME3,"On") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME4,"To") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME6,"Lø") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME7,"Sø") */ +LOCVAL(LOCALE_SABBREVDAYNAME1,"ma") +LOCVAL(LOCALE_SABBREVDAYNAME2,"ti") +LOCVAL(LOCALE_SABBREVDAYNAME3,"on") +LOCVAL(LOCALE_SABBREVDAYNAME4,"to") +LOCVAL(LOCALE_SABBREVDAYNAME5,"fr") +LOCVAL(LOCALE_SABBREVDAYNAME6,"l?") +LOCVAL(LOCALE_SABBREVDAYNAME7,"s?") -/* LOCVAL(LOCALE_SMONTHNAME1,"") */ -/* LOCVAL(LOCALE_SMONTHNAME2,"") */ -/* LOCVAL(LOCALE_SMONTHNAME3,"") */ -/* LOCVAL(LOCALE_SMONTHNAME4,"") */ -/* LOCVAL(LOCALE_SMONTHNAME5,"") */ -/* LOCVAL(LOCALE_SMONTHNAME6,"") */ -/* LOCVAL(LOCALE_SMONTHNAME7,"") */ -/* LOCVAL(LOCALE_SMONTHNAME8,"") */ -/* LOCVAL(LOCALE_SMONTHNAME9,"") */ -/* LOCVAL(LOCALE_SMONTHNAME10,"") */ -/* LOCVAL(LOCALE_SMONTHNAME11,"") */ -/* LOCVAL(LOCALE_SMONTHNAME12,"") */ -/* LOCVAL(LOCALE_SMONTHNAME13,"") */ +LOCVAL(LOCALE_SMONTHNAME1,"januar") +LOCVAL(LOCALE_SMONTHNAME2,"februar") +LOCVAL(LOCALE_SMONTHNAME3,"mars") +LOCVAL(LOCALE_SMONTHNAME4,"april") +LOCVAL(LOCALE_SMONTHNAME5,"mai") +LOCVAL(LOCALE_SMONTHNAME6,"juni") +LOCVAL(LOCALE_SMONTHNAME7,"juli") +LOCVAL(LOCALE_SMONTHNAME8,"august") +LOCVAL(LOCALE_SMONTHNAME9,"september") +LOCVAL(LOCALE_SMONTHNAME10,"oktober") +LOCVAL(LOCALE_SMONTHNAME11,"november") +LOCVAL(LOCALE_SMONTHNAME12,"desember") +LOCVAL(LOCALE_SMONTHNAME13,"") -/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ +LOCVAL(LOCALE_SABBREVMONTHNAME1,"jan") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"feb") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"mar") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"apr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"mai") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"jun") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"jul") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"aug") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"okt") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"des") +LOCVAL(LOCALE_SABBREVMONTHNAME13,"") /* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ /* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ @@ -108,3 +108,4 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"nor") /* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ /* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ +/* gregoriansk kalender */ diff --git a/ole/nls/plk.nls b/ole/nls/plk.nls index 7474c885d01..5d861847d4d 100644 --- a/ole/nls/plk.nls +++ b/ole/nls/plk.nls @@ -11,7 +11,7 @@ LOCVAL(LOCALE_SNATIVELANGNAME,"Polski") LOCVAL(LOCALE_ICOUNTRY,"49") LOCVAL(LOCALE_SCOUNTRY,"Polska") LOCVAL(LOCALE_SENGCOUNTRY,"Poland") -LOCVAL(LOCALE_SABBREVCTRYNAME,"Pl") +LOCVAL(LOCALE_SABBREVCTRYNAME,"PLZ") LOCVAL(LOCALE_SNATIVECTRYNAME,"Polska") LOCVAL(LOCALE_IDEFAULTLANGUAGE,"9") LOCVAL(LOCALE_IDEFAULTCOUNTRY,"49") @@ -25,12 +25,12 @@ LOCVAL(LOCALE_STHOUSAND," ") LOCVAL(LOCALE_IDIGITS,"2") LOCVAL(LOCALE_ILZERO,"1") /* LOCVAL(LOCALE_INEGNUMBER) */ -/* LOCVAL(LOCALE_SNATIVEDIGITS) */ +LOCVAL(LOCALE_SNATIVEDIGITS,"0123456789") LOCVAL(LOCALE_SCURRENCY,"z\xB3") /* LOCVAL(LOCALE_SINTLSYMBOL) */ /* LOCVAL(LOCALE_SMONDECIMALSEP) */ /* LOCVAL(LOCALE_SMONTHOUSANDSEP) */ -/* LOCVAL(LOCALE_SMONGROUPING) */ +LOCVAL(LOCALE_SMONGROUPING,"3;0") LOCVAL(LOCALE_ICURRDIGITS,"2") /* LOCVAL(LOCALE_IINTLCURRDIGITS) */ LOCVAL(LOCALE_ICURRENCY,"3") @@ -107,3 +107,5 @@ LOCVAL(LOCALE_SABBREVMONTHNAME13,"") /* LOCVAL(LOCALE_IPOSSEPBYSPACE) */ /* LOCVAL(LOCALE_INEGSYMPRECEDES) */ /* LOCVAL(LOCALE_INEGSEPBYSPACE) */ + +/* kalendarz gregoria?dski */ diff --git a/ole/nls/ptb.nls b/ole/nls/ptb.nls index e60c91e5dcc..d9ffc3aa9a3 100644 --- a/ole/nls/ptb.nls +++ b/ole/nls/ptb.nls @@ -15,7 +15,7 @@ LOCVAL(LOCALE_SABBREVCTRYNAME, "BRA") LOCVAL(LOCALE_SNATIVECTRYNAME, "Brasil") LOCVAL(LOCALE_IDEFAULTLANGUAGE, "0409") LOCVAL(LOCALE_IDEFAULTCOUNTRY, "1") -LOCVAL(LOCALE_IDEFAULTCODEPAGE, "437") +LOCVAL(LOCALE_IDEFAULTCODEPAGE, "850") LOCVAL(LOCALE_IDEFAULTANSICODEPAGE, "1252") LOCVAL(LOCALE_SLIST, ";") LOCVAL(LOCALE_IMEASURE, "1") @@ -27,7 +27,7 @@ LOCVAL(LOCALE_ILZERO, "1") LOCVAL(LOCALE_INEGNUMBER, "1") LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") LOCVAL(LOCALE_SCURRENCY, "$") -LOCVAL(LOCALE_SINTLSYMBOL, "USD") +LOCVAL(LOCALE_SINTLSYMBOL, "BRC") LOCVAL(LOCALE_SMONDECIMALSEP, ",") LOCVAL(LOCALE_SMONTHOUSANDSEP, ".") LOCVAL(LOCALE_SMONGROUPING, "3;0") @@ -55,11 +55,11 @@ LOCVAL(LOCALE_IOPTIONALCALENDAR, "0") LOCVAL(LOCALE_IFIRSTDAYOFWEEK, "6") LOCVAL(LOCALE_IFIRSTWEEKOFYEAR, "0") -LOCVAL(LOCALE_SDAYNAME1, "Segunda") -LOCVAL(LOCALE_SDAYNAME2, "Ter\347a") -LOCVAL(LOCALE_SDAYNAME3, "Quarta") -LOCVAL(LOCALE_SDAYNAME4, "Quinta") -LOCVAL(LOCALE_SDAYNAME5, "Sexta") +LOCVAL(LOCALE_SDAYNAME1, "Segunda-feira") +LOCVAL(LOCALE_SDAYNAME2, "Ter\347a-feira") +LOCVAL(LOCALE_SDAYNAME3, "Quarta-feira") +LOCVAL(LOCALE_SDAYNAME4, "Quinta-feira") +LOCVAL(LOCALE_SDAYNAME5, "Sexta-feira") LOCVAL(LOCALE_SDAYNAME6, "S\341bado") LOCVAL(LOCALE_SDAYNAME7, "Domingo") @@ -107,3 +107,5 @@ LOCVAL(LOCALE_IPOSSYMPRECEDES, "1") LOCVAL(LOCALE_IPOSSEPBYSPACE, "0") LOCVAL(LOCALE_INEGSYMPRECEDES, "1") LOCVAL(LOCALE_INEGSEPBYSPACE, "0") + +/* Calend?rio gregoriano */ diff --git a/ole/nls/ptg.nls b/ole/nls/ptg.nls index ac429d4d5d3..9dfd6c88499 100644 --- a/ole/nls/ptg.nls +++ b/ole/nls/ptg.nls @@ -15,7 +15,7 @@ LOCVAL(LOCALE_SABBREVCTRYNAME, "PTG") LOCVAL(LOCALE_SNATIVECTRYNAME, "Portugal") LOCVAL(LOCALE_IDEFAULTLANGUAGE, "0409") LOCVAL(LOCALE_IDEFAULTCOUNTRY, "1") -LOCVAL(LOCALE_IDEFAULTCODEPAGE, "437") +LOCVAL(LOCALE_IDEFAULTCODEPAGE, "850") LOCVAL(LOCALE_IDEFAULTANSICODEPAGE, "1252") LOCVAL(LOCALE_SLIST, ";") LOCVAL(LOCALE_IMEASURE, "1") diff --git a/ole/nls/rom.nls b/ole/nls/rom.nls index 9caabf73738..85c13a73245 100644 --- a/ole/nls/rom.nls +++ b/ole/nls/rom.nls @@ -5,13 +5,13 @@ /* LOCVAL(LOCALE_ILANGUAGE,"") */ /* LOCVAL(LOCALE_SLANGUAGE,"") */ -/* LOCVAL(LOCALE_SENGLANGUAGE,"") */ +/* LOCVAL(LOCALE_SENGLANGUAGE,"Romanian") */ LOCVAL(LOCALE_SABBREVLANGNAME,"rom") /* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ /* LOCVAL(LOCALE_ICOUNTRY,"") */ /* LOCVAL(LOCALE_SCOUNTRY,"") */ -/* LOCVAL(LOCALE_SENGCOUNTRY,"") */ -/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ +LOCVAL(LOCALE_SENGCOUNTRY,"Romania") +LOCVAL(LOCALE_SABBREVCTRYNAME,"ROM") /* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ /* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ /* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ @@ -25,12 +25,12 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"rom") /* LOCVAL(LOCALE_IDIGITS,"2") */ /* LOCVAL(LOCALE_ILZERO,"1") */ /* LOCVAL(LOCALE_INEGNUMBER) */ -/* LOCVAL(LOCALE_SNATIVEDIGITS) */ -/* LOCVAL(LOCALE_SCURRENCY,"") */ -/* LOCVAL(LOCALE_SINTLSYMBOL) */ +LOCVAL(LOCALE_SNATIVEDIGITS,"0123456789") +LOCVAL(LOCALE_SCURRENCY,"LEI") +LOCVAL(LOCALE_SINTLSYMBOL,"ROL) /* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ /* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ -/* LOCVAL(LOCALE_SMONGROUPING) */ +LOCVAL(LOCALE_SMONGROUPING,"3;0") /* LOCVAL(LOCALE_ICURRDIGITS,"2") */ /* LOCVAL(LOCALE_IINTLCURRDIGITS) */ /* LOCVAL(LOCALE_ICURRENCY,"3") */ @@ -55,49 +55,49 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"rom") /* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ /* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ -/* LOCVAL(LOCALE_SDAYNAME1,"") */ -/* LOCVAL(LOCALE_SDAYNAME2,"") */ -/* LOCVAL(LOCALE_SDAYNAME3,"") */ -/* LOCVAL(LOCALE_SDAYNAME4,"") */ -/* LOCVAL(LOCALE_SDAYNAME5,"") */ -/* LOCVAL(LOCALE_SDAYNAME6,"") */ -/* LOCVAL(LOCALE_SDAYNAME7,"") */ +LOCVAL(LOCALE_SDAYNAME1,"luni") +LOCVAL(LOCALE_SDAYNAME2,"marci") +LOCVAL(LOCALE_SDAYNAME3,"miercuri") +LOCVAL(LOCALE_SDAYNAME4,"joi") +LOCVAL(LOCALE_SDAYNAME5,"vineri") +LOCVAL(LOCALE_SDAYNAME6,"s?mb?t") +LOCVAL(LOCALE_SDAYNAME7,"duminic?") -/* LOCVAL(LOCALE_SABBREVDAYNAME1,"Ma") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME2,"Ti") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME3,"On") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME4,"To") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME6,"Lø") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME7,"Sø") */ +LOCVAL(LOCALE_SABBREVDAYNAME1,"L?") +LOCVAL(LOCALE_SABBREVDAYNAME2,"Ma") +LOCVAL(LOCALE_SABBREVDAYNAME3,"Mi") +LOCVAL(LOCALE_SABBREVDAYNAME4,"J?") +LOCVAL(LOCALE_SABBREVDAYNAME5,"V?") +LOCVAL(LOCALE_SABBREVDAYNAME6,"S?") +LOCVAL(LOCALE_SABBREVDAYNAME7,"D?") -/* LOCVAL(LOCALE_SMONTHNAME1,"") */ -/* LOCVAL(LOCALE_SMONTHNAME2,"") */ -/* LOCVAL(LOCALE_SMONTHNAME3,"") */ -/* LOCVAL(LOCALE_SMONTHNAME4,"") */ -/* LOCVAL(LOCALE_SMONTHNAME5,"") */ -/* LOCVAL(LOCALE_SMONTHNAME6,"") */ -/* LOCVAL(LOCALE_SMONTHNAME7,"") */ -/* LOCVAL(LOCALE_SMONTHNAME8,"") */ -/* LOCVAL(LOCALE_SMONTHNAME9,"") */ -/* LOCVAL(LOCALE_SMONTHNAME10,"") */ -/* LOCVAL(LOCALE_SMONTHNAME11,"") */ -/* LOCVAL(LOCALE_SMONTHNAME12,"") */ -/* LOCVAL(LOCALE_SMONTHNAME13,"") */ +LOCVAL(LOCALE_SMONTHNAME1,"ianuarie") +LOCVAL(LOCALE_SMONTHNAME2,"februarie") +LOCVAL(LOCALE_SMONTHNAME3,"martie") +LOCVAL(LOCALE_SMONTHNAME4,"arpilie") +LOCVAL(LOCALE_SMONTHNAME5,"mai") +LOCVAL(LOCALE_SMONTHNAME6,"iunie") +LOCVAL(LOCALE_SMONTHNAME7,"iulie") +LOCVAL(LOCALE_SMONTHNAME8,"august") +LOCVAL(LOCALE_SMONTHNAME9,"septembrie") +LOCVAL(LOCALE_SMONTHNAME10,"octombrie") +LOCVAL(LOCALE_SMONTHNAME11,"noiembrie") +LOCVAL(LOCALE_SMONTHNAME12,"decembrie") +LOCVAL(LOCALE_SMONTHNAME13,"") -/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ -/* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ +LOCVAL(LOCALE_SABBREVMONTHNAME1,"Ian") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"Feb") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"Mar") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"Apr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"Mai") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"Iun") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"Iul") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"Aug") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"Sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"Oct") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"Nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"Dec") +LOCVAL(LOCALE_SABBREVMONTHNAME13,"") /* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ /* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ @@ -108,3 +108,4 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"rom") /* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ /* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ +/* Gregorian calendar */ diff --git a/ole/nls/rus.nls b/ole/nls/rus.nls new file mode 100644 index 00000000000..63fb68588eb --- /dev/null +++ b/ole/nls/rus.nls @@ -0,0 +1,110 @@ +/* + * OLE2NLS library + * Russia + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +LOCVAL(LOCALE_SENGLANGUAGE,"Russian") +LOCVAL(LOCALE_SABBREVLANGNAME,"rus") +/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +LOCVAL(LOCALE_SENGCOUNTRY,"Russia") +/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ +/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS,"0123456789") +/* LOCVAL(LOCALE_SCURRENCY,"") */ +LOCVAL(LOCALE_SINTLSYMBOL,"RUR") +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +LOCVAL(LOCALE_SMONGROUPING,"3;0") +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +/* LOCVAL(LOCALE_SDAYNAME1,"") */ +/* LOCVAL(LOCALE_SDAYNAME2,"") */ +/* LOCVAL(LOCALE_SDAYNAME3,"") */ +/* LOCVAL(LOCALE_SDAYNAME4,"") */ +/* LOCVAL(LOCALE_SDAYNAME5,"") */ +/* LOCVAL(LOCALE_SDAYNAME6,"") */ +/* LOCVAL(LOCALE_SDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + diff --git a/ole/nls/sky.nls b/ole/nls/sky.nls index 4d8af3a1ded..d6f9d88a12b 100644 --- a/ole/nls/sky.nls +++ b/ole/nls/sky.nls @@ -63,13 +63,13 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"sky") /* LOCVAL(LOCALE_SDAYNAME6,"") */ /* LOCVAL(LOCALE_SDAYNAME7,"") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME1,"Ma") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME2,"Ti") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME3,"On") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME4,"To") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME6,"Lø") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME7,"Sø") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ /* LOCVAL(LOCALE_SMONTHNAME1,"") */ /* LOCVAL(LOCALE_SMONTHNAME2,"") */ diff --git a/ole/nls/slv.nls b/ole/nls/slv.nls index 374062aff58..6fcd1c0669e 100644 --- a/ole/nls/slv.nls +++ b/ole/nls/slv.nls @@ -63,13 +63,13 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"slv") /* LOCVAL(LOCALE_SDAYNAME6,"") */ /* LOCVAL(LOCALE_SDAYNAME7,"") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME1,"Ma") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME2,"Ti") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME3,"On") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME4,"To") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME6,"Lø") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME7,"Sø") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ /* LOCVAL(LOCALE_SMONTHNAME1,"") */ /* LOCVAL(LOCALE_SMONTHNAME2,"") */ diff --git a/ole/nls/sqi.nls b/ole/nls/sqi.nls new file mode 100644 index 00000000000..411c719f454 --- /dev/null +++ b/ole/nls/sqi.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Albania + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +LOCVAL(LOCALE_SENGLANGUAGE,"Albanian") +LOCVAL(LOCALE_SABBREVLANGNAME,"sqi") +/* LOCVAL(LOCALE_SNATIVELANGNAME,"Shqip?ria") */ +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +/* LOCVAL(LOCALE_SENGCOUNTRY,"") */ +/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ +/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS,"0123456789") +/* LOCVAL(LOCALE_SCURRENCY,"") */ +/* LOCVAL(LOCALE_SINTLSYMBOL) */ +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +LOCVAL(LOCALE_SMONGROUPING,"3;0") +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +/* LOCVAL(LOCALE_SDAYNAME1,"") */ +/* LOCVAL(LOCALE_SDAYNAME2,"") */ +/* LOCVAL(LOCALE_SDAYNAME3,"") */ +/* LOCVAL(LOCALE_SDAYNAME4,"") */ +/* LOCVAL(LOCALE_SDAYNAME5,"") */ +/* LOCVAL(LOCALE_SDAYNAME6,"") */ +/* LOCVAL(LOCALE_SDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + +/* Gregorian Calendar */ diff --git a/ole/nls/srb.nls b/ole/nls/srb.nls index ecaaa187807..16fd09e5fb0 100644 --- a/ole/nls/srb.nls +++ b/ole/nls/srb.nls @@ -63,13 +63,13 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"srb") /* LOCVAL(LOCALE_SDAYNAME6,"") */ /* LOCVAL(LOCALE_SDAYNAME7,"") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME1,"Ma") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME2,"Ti") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME3,"On") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME4,"To") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME6,"Lø") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME7,"Sø") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ /* LOCVAL(LOCALE_SMONTHNAME1,"") */ /* LOCVAL(LOCALE_SMONTHNAME2,"") */ diff --git a/ole/nls/srl.nls b/ole/nls/srl.nls new file mode 100644 index 00000000000..ae4bb7da6e6 --- /dev/null +++ b/ole/nls/srl.nls @@ -0,0 +1,110 @@ +/* + * OLE2NLS library + * Serbian (Latin) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +/* LOCVAL(LOCALE_SENGLANGUAGE,"") */ +LOCVAL(LOCALE_SABBREVLANGNAME,"srl") +/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +/* LOCVAL(LOCALE_SENGCOUNTRY,"") */ +/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ +/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +/* LOCVAL(LOCALE_SNATIVEDIGITS) */ +/* LOCVAL(LOCALE_SCURRENCY,"") */ +/* LOCVAL(LOCALE_SINTLSYMBOL) */ +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +/* LOCVAL(LOCALE_SMONGROUPING) */ +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +/* LOCVAL(LOCALE_SDAYNAME1,"") */ +/* LOCVAL(LOCALE_SDAYNAME2,"") */ +/* LOCVAL(LOCALE_SDAYNAME3,"") */ +/* LOCVAL(LOCALE_SDAYNAME4,"") */ +/* LOCVAL(LOCALE_SDAYNAME5,"") */ +/* LOCVAL(LOCALE_SDAYNAME6,"") */ +/* LOCVAL(LOCALE_SDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + diff --git a/ole/nls/svf.nls b/ole/nls/svf.nls new file mode 100644 index 00000000000..c5177759c76 --- /dev/null +++ b/ole/nls/svf.nls @@ -0,0 +1,111 @@ +/* + * OLE2NLS library + * Finland (Swedish) + */ + +LOCVAL(LOCALE_ILANGUAGE,"1d") +LOCVAL(LOCALE_SLANGUAGE,"Svenska") +LOCVAL(LOCALE_SENGLANGUAGE,"Swedish (Finland)") +LOCVAL(LOCALE_SABBREVLANGNAME,"sve") +LOCVAL(LOCALE_SNATIVELANGNAME,"Svenska") +LOCVAL(LOCALE_ICOUNTRY,"45") +LOCVAL(LOCALE_SCOUNTRY,"SWE") +LOCVAL(LOCALE_SENGCOUNTRY,"Finland") +LOCVAL(LOCALE_SABBREVCTRYNAME,"FIN") +LOCVAL(LOCALE_SNATIVECTRYNAME,"Finland") +LOCVAL(LOCALE_IDEFAULTLANGUAGE,"1d") +LOCVAL(LOCALE_IDEFAULTCOUNTRY,"45") +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +LOCVAL(LOCALE_SLIST,";") +LOCVAL(LOCALE_IMEASURE,"0") +LOCVAL(LOCALE_SDECIMAL,",") +LOCVAL(LOCALE_STHOUSAND,".") +/* LOCVAL(LOCALE_SGROUPING) */ +LOCVAL(LOCALE_IDIGITS,"2") +LOCVAL(LOCALE_ILZERO,"1") +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +LOCVAL(LOCALE_SCURRENCY,"mk") +LOCVAL(LOCALE_SINTLSYMBOL,"FIM") +LOCVAL(LOCALE_SMONDECIMALSEP,",") +LOCVAL(LOCALE_SMONTHOUSANDSEP,".") +/* LOCVAL(LOCALE_SMONGROUPING) */ +LOCVAL(LOCALE_ICURRDIGITS,"2") +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +LOCVAL(LOCALE_ICURRENCY,"3") +LOCVAL(LOCALE_INEGCURR,"8") +LOCVAL(LOCALE_SDATE,".") +LOCVAL(LOCALE_STIME,":") +LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") +LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") +/* LOCVAL(LOCALE_STIMEFORMAT) */ +LOCVAL(LOCALE_IDATE,"1") +/* LOCVAL(LOCALE_ILDATE) */ +LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +LOCVAL(LOCALE_S1159, "") +LOCVAL(LOCALE_S2359, "") +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +LOCVAL(LOCALE_SDAYNAME1,"Måndag") +LOCVAL(LOCALE_SDAYNAME2,"Tisdag") +LOCVAL(LOCALE_SDAYNAME3,"Onsdag") +LOCVAL(LOCALE_SDAYNAME4,"Torsdag") +LOCVAL(LOCALE_SDAYNAME5,"Fredag") +LOCVAL(LOCALE_SDAYNAME6,"Lördag") +LOCVAL(LOCALE_SDAYNAME7,"Söndag") + +LOCVAL(LOCALE_SABBREVDAYNAME1,"Må") +LOCVAL(LOCALE_SABBREVDAYNAME2,"Ti") +LOCVAL(LOCALE_SABBREVDAYNAME3,"On") +LOCVAL(LOCALE_SABBREVDAYNAME4,"To") +LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr") +LOCVAL(LOCALE_SABBREVDAYNAME6,"Lö") +LOCVAL(LOCALE_SABBREVDAYNAME7,"Sö") + +LOCVAL(LOCALE_SMONTHNAME1,"Januari") +LOCVAL(LOCALE_SMONTHNAME2,"Februari") +LOCVAL(LOCALE_SMONTHNAME3,"Mars") +LOCVAL(LOCALE_SMONTHNAME4,"April") +LOCVAL(LOCALE_SMONTHNAME5,"Maj") +LOCVAL(LOCALE_SMONTHNAME6,"Juni") +LOCVAL(LOCALE_SMONTHNAME7,"Juli") +LOCVAL(LOCALE_SMONTHNAME8,"Augusti") +LOCVAL(LOCALE_SMONTHNAME9,"September") +LOCVAL(LOCALE_SMONTHNAME10,"Oktober") +LOCVAL(LOCALE_SMONTHNAME11,"November") +LOCVAL(LOCALE_SMONTHNAME12,"December") +LOCVAL(LOCALE_SMONTHNAME13,"") + +LOCVAL(LOCALE_SABBREVMONTHNAME1,"Jan") +LOCVAL(LOCALE_SABBREVMONTHNAME2,"Feb") +LOCVAL(LOCALE_SABBREVMONTHNAME3,"Mar") +LOCVAL(LOCALE_SABBREVMONTHNAME4,"Apr") +LOCVAL(LOCALE_SABBREVMONTHNAME5,"Maj") +LOCVAL(LOCALE_SABBREVMONTHNAME6,"Jun") +LOCVAL(LOCALE_SABBREVMONTHNAME7,"Jul") +LOCVAL(LOCALE_SABBREVMONTHNAME8,"Aug") +LOCVAL(LOCALE_SABBREVMONTHNAME9,"Sep") +LOCVAL(LOCALE_SABBREVMONTHNAME10,"Okt") +LOCVAL(LOCALE_SABBREVMONTHNAME11,"Nov") +LOCVAL(LOCALE_SABBREVMONTHNAME12,"Dec") +LOCVAL(LOCALE_SABBREVMONTHNAME13,"") + +LOCVAL(LOCALE_SPOSITIVESIGN, "") +LOCVAL(LOCALE_SNEGATIVESIGN, "-") +LOCVAL(LOCALE_IPOSSIGNPOSN, "3") +LOCVAL(LOCALE_INEGSIGNPOSN, "3") +LOCVAL(LOCALE_IPOSSYMPRECEDES, "1") +LOCVAL(LOCALE_IPOSSEPBYSPACE, "0") +LOCVAL(LOCALE_INEGSYMPRECEDES, "1") +LOCVAL(LOCALE_INEGSEPBYSPACE, "0") + +/* gregoriansk kalender */ diff --git a/ole/nls/trk.nls b/ole/nls/trk.nls index 3a6b7c90a35..d90462b14ea 100644 --- a/ole/nls/trk.nls +++ b/ole/nls/trk.nls @@ -63,13 +63,13 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"trk") /* LOCVAL(LOCALE_SDAYNAME6,"") */ /* LOCVAL(LOCALE_SDAYNAME7,"") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME1,"Ma") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME2,"Ti") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME3,"On") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME4,"To") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME6,"Lø") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME7,"Sø") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ /* LOCVAL(LOCALE_SMONTHNAME1,"") */ /* LOCVAL(LOCALE_SMONTHNAME2,"") */ diff --git a/ole/nls/ukr.nls b/ole/nls/ukr.nls index 0d65b28f397..b1e8b421334 100644 --- a/ole/nls/ukr.nls +++ b/ole/nls/ukr.nls @@ -63,13 +63,13 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"ukr") /* LOCVAL(LOCALE_SDAYNAME6,"") */ /* LOCVAL(LOCALE_SDAYNAME7,"") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME1,"Ma") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME2,"Ti") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME3,"On") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME4,"To") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME6,"Lø") */ -/* LOCVAL(LOCALE_SABBREVDAYNAME7,"Sø") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ /* LOCVAL(LOCALE_SMONTHNAME1,"") */ /* LOCVAL(LOCALE_SMONTHNAME2,"") */ diff --git a/ole/nls/zhh.nls b/ole/nls/zhh.nls new file mode 100644 index 00000000000..65c8c639dd7 --- /dev/null +++ b/ole/nls/zhh.nls @@ -0,0 +1,110 @@ +/* + * OLE2NLS library + * Chinese (Hong Kong) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +LOCVAL(LOCALE_SENGLANGUAGE,"Chinese (Hong Kong)") +LOCVAL(LOCALE_SABBREVLANGNAME,"zhh") +/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +/* LOCVAL(LOCALE_SENGCOUNTRY,"") */ +/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ +/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +/* LOCVAL(LOCALE_SNATIVEDIGITS) */ +/* LOCVAL(LOCALE_SCURRENCY,"") */ +/* LOCVAL(LOCALE_SINTLSYMBOL) */ +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +/* LOCVAL(LOCALE_SMONGROUPING) */ +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +/* LOCVAL(LOCALE_SDAYNAME1,"") */ +/* LOCVAL(LOCALE_SDAYNAME2,"") */ +/* LOCVAL(LOCALE_SDAYNAME3,"") */ +/* LOCVAL(LOCALE_SDAYNAME4,"") */ +/* LOCVAL(LOCALE_SDAYNAME5,"") */ +/* LOCVAL(LOCALE_SDAYNAME6,"") */ +/* LOCVAL(LOCALE_SDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + diff --git a/ole/nls/zhi.nls b/ole/nls/zhi.nls new file mode 100644 index 00000000000..f427ef41c4c --- /dev/null +++ b/ole/nls/zhi.nls @@ -0,0 +1,110 @@ +/* + * OLE2NLS library + * Chinese (Singapore) + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +LOCVAL(LOCALE_SENGLANGUAGE,"Chinese (Singapore)") +LOCVAL(LOCALE_SABBREVLANGNAME,"zhi") +/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +/* LOCVAL(LOCALE_SENGCOUNTRY,"") */ +LOCVAL(LOCALE_SABBREVCTRYNAME,"SGP") +/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +LOCVAL(LOCALE_SCURRENCY,"$") +LOCVAL(LOCALE_SINTLSYMBOL,"SGD") +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +/* LOCVAL(LOCALE_SMONGROUPING) */ +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +LOCVAL(LOCALE_S1159, "AM") +LOCVAL(LOCALE_S2359, "PM") +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +/* LOCVAL(LOCALE_SDAYNAME1,"") */ +/* LOCVAL(LOCALE_SDAYNAME2,"") */ +/* LOCVAL(LOCALE_SDAYNAME3,"") */ +/* LOCVAL(LOCALE_SDAYNAME4,"") */ +/* LOCVAL(LOCALE_SDAYNAME5,"") */ +/* LOCVAL(LOCALE_SDAYNAME6,"") */ +/* LOCVAL(LOCALE_SDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + diff --git a/ole/nls/zhs.nls b/ole/nls/zhs.nls new file mode 100644 index 00000000000..89fb2fedf9b --- /dev/null +++ b/ole/nls/zhs.nls @@ -0,0 +1,110 @@ +/* + * OLE2NLS library + * People's republic of China + */ + +/* LOCVAL(LOCALE_ILANGUAGE,"") */ +/* LOCVAL(LOCALE_SLANGUAGE,"") */ +/* LOCVAL(LOCALE_SENGLANGUAGE,"People's republic of China") */ +LOCVAL(LOCALE_SABBREVLANGNAME,"zhs") +/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */ +/* LOCVAL(LOCALE_ICOUNTRY,"") */ +/* LOCVAL(LOCALE_SCOUNTRY,"") */ +/* LOCVAL(LOCALE_SENGCOUNTRY,"") */ +/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */ +/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */ +/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */ +/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */ +/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */ +/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */ +/* LOCVAL(LOCALE_SLIST,"") */ +/* LOCVAL(LOCALE_IMEASURE,"") */ +/* LOCVAL(LOCALE_SDECIMAL,"") */ +/* LOCVAL(LOCALE_STHOUSAND,"") */ +/* LOCVAL(LOCALE_SGROUPING) */ +/* LOCVAL(LOCALE_IDIGITS,"2") */ +/* LOCVAL(LOCALE_ILZERO,"1") */ +/* LOCVAL(LOCALE_INEGNUMBER) */ +LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789") +/* LOCVAL(LOCALE_SCURRENCY,"") */ +/* LOCVAL(LOCALE_SINTLSYMBOL) */ +/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */ +/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */ +/* LOCVAL(LOCALE_SMONGROUPING) */ +/* LOCVAL(LOCALE_ICURRDIGITS,"2") */ +/* LOCVAL(LOCALE_IINTLCURRDIGITS) */ +/* LOCVAL(LOCALE_ICURRENCY,"3") */ +/* LOCVAL(LOCALE_INEGCURR,"8") */ +/* LOCVAL(LOCALE_SDATE,".") */ +/* LOCVAL(LOCALE_STIME,":") */ +/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */ +/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */ +/* LOCVAL(LOCALE_STIMEFORMAT) */ +/* LOCVAL(LOCALE_IDATE,"1") */ +/* LOCVAL(LOCALE_ILDATE) */ +/* LOCVAL(LOCALE_ITIME,"1") +/* LOCVAL(LOCALE_ITIMEMARKPOSN) */ +/* LOCVAL(LOCALE_ICENTURY) */ +/* LOCVAL(LOCALE_ITLZERO,"1") +/* LOCVAL(LOCALE_IDAYLZERO) */ +/* LOCVAL(LOCALE_IMONLZERO) */ +/* LOCVAL(LOCALE_S1159, "") */ +/* LOCVAL(LOCALE_S2359, "") */ +/* LOCVAL(LOCALE_ICALENDARTYPE) */ +/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */ +/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */ +/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */ + +/* LOCVAL(LOCALE_SDAYNAME1,"") */ +/* LOCVAL(LOCALE_SDAYNAME2,"") */ +/* LOCVAL(LOCALE_SDAYNAME3,"") */ +/* LOCVAL(LOCALE_SDAYNAME4,"") */ +/* LOCVAL(LOCALE_SDAYNAME5,"") */ +/* LOCVAL(LOCALE_SDAYNAME6,"") */ +/* LOCVAL(LOCALE_SDAYNAME7,"") */ + +/* LOCVAL(LOCALE_SABBREVDAYNAME1,"Ma") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME2,"Ti") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME3,"On") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME4,"To") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME6,"Lø") */ +/* LOCVAL(LOCALE_SABBREVDAYNAME7,"Sø") */ + +/* LOCVAL(LOCALE_SMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */ +/* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */ + +/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */ +/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */ +/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */ +/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */ +/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */ +/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */ +/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */ + diff --git a/ole/ole2nls.c b/ole/ole2nls.c index 0815d9632ea..bf4b7327ef4 100644 --- a/ole/ole2nls.c +++ b/ole/ole2nls.c @@ -2551,27 +2551,57 @@ GetTimeFormat32A(LCID locale, /* in */ LPCSTR format, /* in */ LPSTR timestr, /* out */ INT32 timelen /* in */) -{ - LPCSTR realformat; - char fmt_buf[40]; - - TRACE(ole,"GetTimeFormat(0x%04lx,0x%08lx,%p,%s,%p,%d)\n", - locale,flags,xtime,format,timestr,timelen); - - if (format) { - realformat = format; - } else if (locale) { - GetLocaleInfo32A(locale, LOCALE_STIMEFORMAT, - fmt_buf, sizeof(fmt_buf)); - realformat = fmt_buf; - } else { - WARN(ole, "Caller gave no locale and no format\n"); - realformat = "hh:mm:ss"; - }; - if (!locale) { - locale = GetSystemDefaultLCID(); - } - return OLE_GetFormatA(locale, flags, xtime, realformat, timestr, timelen); +{ char format_buf[40]; + LPCSTR thisformat; + SYSTEMTIME t; + LPSYSTEMTIME thistime; + LCID thislocale=0; + DWORD thisflags=LOCALE_STIMEFORMAT; /* standart timeformat */; + + TRACE(ole,"GetTimeFormat(0x%04lx,0x%08lx,%p,%s,%p,%d)\n",locale,flags,xtime,format,timestr,timelen); + if (!locale) + { locale = LOCALE_SYSTEM_DEFAULT; + } + + if (locale == LOCALE_SYSTEM_DEFAULT) + { thislocale = GetSystemDefaultLCID(); + } + else if (locale == LOCALE_USER_DEFAULT) + { thislocale = GetUserDefaultLCID(); + } + else + { thislocale = locale; + } + if (format == NULL) + { if (flags&LOCALE_NOUSEROVERRIDE) /*use system default*/ + { thislocale = GetSystemDefaultLCID(); + } + switch (flags) + { case TIME_NOSECONDS: + FIXME(ole,"TIME_NOSECONDS not yet implemented"); + break; + case TIME_NOMINUTESORSECONDS: + FIXME(ole,"TIME_NOMINUTESORSECONDS not yet implemented"); + break; + } + GetLocaleInfo32A(thislocale, thisflags, format_buf,sizeof(format_buf)); + thisformat = format_buf; + } + else + { thisformat = format; + } + + if (!locale) + { locale = GetSystemDefaultLCID(); + } + if (xtime == NULL) /* NULL means use the current local time*/ + { GetSystemTime(&t); + thistime = &t; + } + else + { thistime = xtime; + } + return OLE_GetFormatA(thislocale, thisflags, thistime, thisformat,timestr, timelen); } diff --git a/programs/clock/ChangeLog b/programs/clock/ChangeLog index 5906d79fd74..aecc4579733 100644 --- a/programs/clock/ChangeLog +++ b/programs/clock/ChangeLog @@ -1,8 +1,13 @@ +Sun Jul 5 20:10:53 1998 Marcel Baur + * Moved "Always on top" menu into system menu (as in Windows) + This required minor changes in + [main.h] [clock.rc] [language.c] [??.rc] + Fri Jun 12 22:47:56 1998 Marcel Baur * Fixed resource bug in UpdateWindowCaption() that caused wrong (old) locale for the displayed date * The digital clock now shows up (WINE-NLS-UNKNOWN means that there - is no locale rule for time string format in /ole/winnls.c) + is no locale rule for time string format in /ole/ole2nls.c) Thu May 28 20:42:13 1998 Marcel Baur * [language.c] @@ -36,5 +41,3 @@ Mon Feb 23 19:59:27 1998 Marcel Baur [main.c] [main.h] [winclock.c] [winclock.h] Originals by Marcel Baur - - diff --git a/programs/clock/Da.rc b/programs/clock/Da.rc index e53c30c5678..8f3243326c0 100644 --- a/programs/clock/Da.rc +++ b/programs/clock/Da.rc @@ -6,27 +6,35 @@ #define LANGUAGE_ID Da #define LANGUAGE_NUMBER 6 -#define LANGUAGE_MENU_ITEM "&Dansk" -/* Menu */ + +/* System Menu */ + +#define MENU_ON_TOP "&Altid øverst" + + +/* Window Menu */ #define MENU_PROPERTIES "&Instillinger" #define MENU_ANALOG "&Analog" #define MENU_DIGITAL "&Digital" #define MENU_FONT "&Skrifttype..." #define MENU_WITHOUT_TITLE "Skjul Titel&linje" -#define MENU_ON_TOP "&Altid øverst" + #define MENU_SECONDS "Se&kunder" #define MENU_DATE "Da&to" #define MENU_LANGUAGE "S&prog" +#define LANGUAGE_MENU_ITEM "&Dansk" #define MENU_INFO "Inf&o..." #define MENU_INFO_LICENSE "&Licens" #define MENU_INFO_NO_WARRANTY "&NO WARRANTY" #define MENU_INFO_ABOUT_WINE "&Om Ur..." -/* Strings */ + +/* Window Caption */ + #define STRING_CLOCK "Ur" diff --git a/programs/clock/De.rc b/programs/clock/De.rc index ab1371e4880..0cbbdbf5bb4 100644 --- a/programs/clock/De.rc +++ b/programs/clock/De.rc @@ -7,27 +7,35 @@ #define LANGUAGE_ID De #define LANGUAGE_NUMBER 2 -#define LANGUAGE_MENU_ITEM "&Deutsch" -/* Menu */ + +/* System Menu */ + +#define MENU_ON_TOP "&Immer im Vordergrund" + + +/* Window Menu */ #define MENU_PROPERTIES "&Einstellungen" #define MENU_ANALOG "Ana&log" #define MENU_DIGITAL "Digi&tal" #define MENU_FONT "Schrift&art..." #define MENU_WITHOUT_TITLE "&Ohne Titelleiste" -#define MENU_ON_TOP "&Immer im Vordergrund" + #define MENU_SECONDS "&Sekunden" #define MENU_DATE "&Datum" #define MENU_LANGUAGE "&Sprache" +#define LANGUAGE_MENU_ITEM "&Deutsch" #define MENU_INFO "Inf&o..." #define MENU_INFO_LICENSE "&Lizenz" #define MENU_INFO_NO_WARRANTY "&KEINE GARANTIE" #define MENU_INFO_ABOUT_WINE "&Über Uhr..." -/* Strings */ + +/* Window Caption */ + #define STRING_CLOCK "Uhr" #include "clock.rc" diff --git a/programs/clock/En.rc b/programs/clock/En.rc index 3330cf7bb34..443e97476a0 100644 --- a/programs/clock/En.rc +++ b/programs/clock/En.rc @@ -7,27 +7,32 @@ #define LANGUAGE_ID En #define LANGUAGE_NUMBER 0 -#define LANGUAGE_MENU_ITEM "&English" -/* Menu */ + +/* System Menu */ + +#define MENU_ON_TOP "&Always on Top" + +/* Window Menu */ #define MENU_PROPERTIES "&Properties" #define MENU_ANALOG "Ana&log" #define MENU_DIGITAL "Digi&tal" #define MENU_FONT "&Font..." #define MENU_WITHOUT_TITLE "&Without Titlebar" -#define MENU_ON_TOP "&Always on Top" + #define MENU_SECONDS "&Seconds" #define MENU_DATE "&Date" #define MENU_LANGUAGE "&Language" +#define LANGUAGE_MENU_ITEM "&English" #define MENU_INFO "Inf&o..." #define MENU_INFO_LICENSE "&License" #define MENU_INFO_NO_WARRANTY "&NO WARRANTY" #define MENU_INFO_ABOUT_WINE "&About Clock..." -/* Strings */ +/* Window Caption */ #define STRING_CLOCK "Clock" diff --git a/programs/clock/README b/programs/clock/README index 296a6a2f614..880579d4054 100644 --- a/programs/clock/README +++ b/programs/clock/README @@ -10,3 +10,6 @@ Code is currently under heavy construction. Please direct patches and additions to my personal email address + + If you think that the compiled binary is too big, you can reduce its size + with the command 'strip clock' (please don't try this on libraries). diff --git a/programs/clock/Sw.rc b/programs/clock/Sw.rc index 9e58cc9fc17..02fbf503f9f 100644 --- a/programs/clock/Sw.rc +++ b/programs/clock/Sw.rc @@ -2,32 +2,40 @@ * Clock (Swedish resources) * * Copyright 1998 Marcel Baur - * Translated into swedish by Karl Backström + * Translated into Swedish by Karl Backström */ #define LANGUAGE_ID Sw #define LANGUAGE_NUMBER 1d -#define LANGUAGE_MENU_ITEM "&Svenska" -/* Menu */ + +/* System Menu */ + +#define MENU_ON_TOP "&Alltid överst" + + +/* Window Menu */ #define MENU_PROPERTIES "&Egenskaper" #define MENU_ANALOG "Ana&log" #define MENU_DIGITAL "Digi&tal" #define MENU_FONT "&Font..." #define MENU_WITHOUT_TITLE "&Utan Titlebar" -#define MENU_ON_TOP "&Alltid överst" + #define MENU_SECONDS "&Sekunder" #define MENU_DATE "&Datum" #define MENU_LANGUAGE "&Språk" +#define LANGUAGE_MENU_ITEM "&Svenska" #define MENU_INFO "Inf&o..." #define MENU_INFO_LICENSE "&Licens" #define MENU_INFO_NO_WARRANTY "&INGEN GARANTI" #define MENU_INFO_ABOUT_WINE "&Om Klockan..." -/* Strings */ + +/* Window Caption */ + #define STRING_CLOCK "Klockan" #include "clock.rc" diff --git a/programs/clock/TODO b/programs/clock/TODO index f8336f02a1e..63c815f9bd8 100644 --- a/programs/clock/TODO +++ b/programs/clock/TODO @@ -5,9 +5,6 @@ Some ideas for improvements: - Make "Without Titlebar", Double-clicking the clock should reveal the caption again. -- Move the "Without Titlebar" into the System Menu (as in Windows) - (Does not work probably due to Winelib) - - Font Handling of Digital Clock. (Does not work probably due to Winelib) @@ -17,6 +14,8 @@ Some ideas for improvements: - Fix English translation by comparing strings from an original English Windows Clock application (I only have a German version). -- Add new .rc resources for all languages you know. +- Add new .rc resources for all languages you know. That's in fact very easy. + Just clone the file En.rc, change the strings and submit it. You can find + my email address in the README file. Please don't forget a ChangeLog entry. diff --git a/programs/clock/clock.rc b/programs/clock/clock.rc index 756b836a6e1..f4169c3c650 100644 --- a/programs/clock/clock.rc +++ b/programs/clock/clock.rc @@ -24,19 +24,18 @@ CONCAT(MENU_, LANGUAGE_ID) MENU MENUITEM SEPARATOR MENUITEM MENU_SECONDS, CL_SECONDS MENUITEM MENU_DATE, CL_DATE + } + + POPUP MENU_LANGUAGE { + /* Dummy item, will be removed */ MENUITEM SEPARATOR - MENUITEM MENU_ON_TOP, CL_ON_TOP - } - POPUP MENU_LANGUAGE { - /* Dummy item, will be removed */ - MENUITEM SEPARATOR - } + } - POPUP MENU_INFO { - MENUITEM MENU_INFO_LICENSE, CL_INFO_LICENSE - MENUITEM MENU_INFO_NO_WARRANTY, CL_INFO_NO_WARRANTY - MENUITEM MENU_INFO_ABOUT_WINE, CL_INFO_ABOUT_WINE - } + POPUP MENU_INFO { + MENUITEM MENU_INFO_LICENSE, CL_INFO_LICENSE + MENUITEM MENU_INFO_NO_WARRANTY, CL_INFO_NO_WARRANTY + MENUITEM MENU_INFO_ABOUT_WINE, CL_INFO_ABOUT_WINE + } } @@ -51,6 +50,7 @@ CONCAT(MENU_, LANGUAGE_ID) MENU #define STRING_LANGUAGE_ID STRINGIFY(LANGUAGE_ID) #define STRING_LANGUAGE_MENU_ITEM LANGUAGE_MENU_ITEM +#define STRING_MENU_ON_TOP MENU_ON_TOP STRINGTABLE @@ -58,4 +58,5 @@ STRINGTABLE ADDSTRING(LANGUAGE_ID) ADDSTRING(LANGUAGE_MENU_ITEM) ADDSTRING(CLOCK) +ADDSTRING(MENU_ON_TOP) } diff --git a/programs/clock/language.c b/programs/clock/language.c index a41ae6f2d5b..b0137ba1673 100644 --- a/programs/clock/language.c +++ b/programs/clock/language.c @@ -45,7 +45,7 @@ VOID LANGUAGE_UpdateMenuCheckmarks(VOID) { CheckMenuItem(Globals.hPropertiesMenu, CL_WITHOUT_TITLE, MF_BYCOMMAND | \ (Globals.bWithoutTitle ? MF_CHECKED : MF_UNCHECKED)); - CheckMenuItem(Globals.hPropertiesMenu, CL_ON_TOP, MF_BYCOMMAND | \ + CheckMenuItem(Globals.hSystemMenu, CL_ON_TOP, MF_BYCOMMAND | \ (Globals.bAlwaysOnTop ? MF_CHECKED : MF_UNCHECKED)); CheckMenuItem(Globals.hPropertiesMenu, CL_SECONDS, MF_BYCOMMAND | \ (Globals.bSeconds ? MF_CHECKED : MF_UNCHECKED)); @@ -89,11 +89,11 @@ static BOOL LANGUAGE_LoadStringOther(UINT num, UINT ids, LPSTR str, UINT len) VOID LANGUAGE_SelectByName(LPCSTR lang) { INT i; - CHAR newlang[3]; + CHAR szNewLang[3]; for (i = 0; i <= MAX_LANGUAGE_NUMBER; i++) - if (LANGUAGE_LoadStringOther(i, IDS_LANGUAGE_ID, newlang, sizeof(newlang)) && - !lstrcmp(lang, newlang)) + if (LANGUAGE_LoadStringOther(i, IDS_LANGUAGE_ID, szNewLang, + sizeof(szNewLang)) && !lstrcmp(lang, szNewLang)) { LANGUAGE_SelectByNumber(i); return; @@ -101,33 +101,33 @@ VOID LANGUAGE_SelectByName(LPCSTR lang) /* Fallback */ for (i = 0; i <= MAX_LANGUAGE_NUMBER; i++) - if (LANGUAGE_LoadStringOther(i, IDS_LANGUAGE_ID, newlang, sizeof(newlang))) + if (LANGUAGE_LoadStringOther(i, IDS_LANGUAGE_ID, szNewLang, sizeof(szNewLang))) { LANGUAGE_SelectByNumber(i); return; } - MessageBox(Globals.hMainWnd, "No language found", "FATAL ERROR", MB_OK); - PostQuitMessage(1); + MessageBox(Globals.hMainWnd, "No language found", "FATAL ERROR", MB_OK); + PostQuitMessage(1); } VOID LANGUAGE_SelectByNumber(UINT num) { INT i; - CHAR lang[3]; + CHAR szLanguage[3]; - CHAR item[MAX_STRING_LEN]; + CHAR szItem[MAX_STRING_LEN]; HMENU hMainMenu; /* Select string table */ Globals.wStringTableOffset = num * 0x100; /* Get Language id */ - LoadString(Globals.hInstance, IDS_LANGUAGE_ID, lang, sizeof(lang)); - Globals.lpszLanguage = lang; + LoadString(Globals.hInstance, IDS_LANGUAGE_ID, szLanguage, sizeof(szLanguage)); + Globals.lpszLanguage = szLanguage; /* Change Resource names */ - lstrcpyn(STRING_MENU_Xx + sizeof(STRING_MENU_Xx) - 3, lang, 3); + lstrcpyn(STRING_MENU_Xx + sizeof(STRING_MENU_Xx) - 3, szLanguage, 3); /* Create menu */ hMainMenu = LoadMenu(Globals.hInstance, STRING_MENU_Xx); @@ -139,9 +139,10 @@ VOID LANGUAGE_SelectByNumber(UINT num) RemoveMenu(Globals.hLanguageMenu, 0, MF_BYPOSITION); /* Add language items */ for (i = 0; i <= MAX_LANGUAGE_NUMBER; i++) - if (LANGUAGE_LoadStringOther(i, IDS_LANGUAGE_MENU_ITEM, item, sizeof(item))) - AppendMenu(Globals.hLanguageMenu, MF_STRING | MF_BYCOMMAND, - CL_FIRST_LANGUAGE + i, item); + if (LANGUAGE_LoadStringOther(i, IDS_LANGUAGE_MENU_ITEM, szItem, sizeof(szItem))) + AppendMenu(Globals.hLanguageMenu, MF_STRING | MF_BYCOMMAND, + CL_FIRST_LANGUAGE + i, szItem); + EnableMenuItem(Globals.hLanguageMenu, CL_FIRST_LANGUAGE + num, MF_BYCOMMAND | MF_CHECKED); SetMenu(Globals.hMainWnd, hMainMenu); @@ -151,14 +152,21 @@ VOID LANGUAGE_SelectByNumber(UINT num) #ifdef WINELIB /* Update system menus */ - for (i = 0; Languages[i].name && lstrcmp(lang, Languages[i].name);) i++; + for (i = 0; Languages[i].name && lstrcmp(szLanguage, Languages[i].name);) i++; if (Languages[i].name) Options.language = i; #endif - /* specific for Clock: */ + /* specific for Clock: */ - LANGUAGE_UpdateMenuCheckmarks(); - LANGUAGE_UpdateWindowCaption(); + LANGUAGE_UpdateMenuCheckmarks(); + LANGUAGE_UpdateWindowCaption(); + + Globals.hSystemMenu = GetSystemMenu(Globals.hMainWnd, TRUE); + + /* FIXME: Append a SEPARATOR to Globals.hSystemMenu here */ + + LoadString(Globals.hInstance, IDS_MENU_ON_TOP, szItem, sizeof(szItem)); + AppendMenu(Globals.hSystemMenu, MF_STRING | MF_BYCOMMAND, 1000, szItem); } VOID LANGUAGE_DefaultHandle(WPARAM wParam) @@ -181,7 +189,8 @@ VOID LANGUAGE_Init(VOID) sizeof(szBuffer)); Globals.lpszLanguage = LocalLock(LocalAlloc(LMEM_FIXED, lstrlen(szBuffer))); - hmemcpy(Globals.lpszLanguage, szBuffer, 1+lstrlen(szBuffer)); +// hmemcpy(Globals.lpszLanguage, szBuffer, 1+lstrlen(szBuffer)); + lstrcpyn(Globals.lpszLanguage, szBuffer, strlen(szBuffer)+1); } } diff --git a/programs/clock/license.c b/programs/clock/license.c index 095da576812..adfd586b3fa 100644 --- a/programs/clock/license.c +++ b/programs/clock/license.c @@ -11,23 +11,23 @@ static LICENSE* SelectLanguage(LPCSTR Language) { /* - if (!lstrcmp(Language, "Ca")) return(&WineLicense_Ca); - if (!lstrcmp(Language, "Cz")) return(&WineLicense_Cz); - if (!lstrcmp(Language, "Da")) return(&WineLicense_Da); - if (!lstrcmp(Language, "De")) return(&WineLicense_De); - if (!lstrcmp(Language, "En")) return(&WineLicense_En); - if (!lstrcmp(Language, "Eo")) return(&WineLicense_Eo); - if (!lstrcmp(Language, "Es")) return(&WineLicense_Es); - if (!lstrcmp(Language, "Fi")) return(&WineLicense_Fi); - if (!lstrcmp(Language, "Fr")) return(&WineLicense_Fr); - if (!lstrcmp(Language, "Hu")) return(&WineLicense_Hu); - if (!lstrcmp(Language, "It")) return(&WineLicense_It); - if (!lstrcmp(Langauge, "Ko")) return(&WineLicense_Ko); - if (!lstrcmp(Language, "No")) return(&WineLicense_No); - if (!lstrcmp(Language, "Pl")) return(&WineLicense_Pl); - if (!lstrcmp(Language, "Po")) return(&WineLicense_Po); - if (!lstrcmp(Language, "Sw")) return(&WineLicense_Sw); - if (!lstrcmp(Language, "Va")) return(&WineLicense_Va); + if (lstrcmp(Language, "Ca")) return(&WineLicense_Ca); + if (lstrcmp(Language, "Cz")) return(&WineLicense_Cz); + if (lstrcmp(Language, "Da")) return(&WineLicense_Da); + if (lstrcmp(Language, "De")) return(&WineLicense_De); + if (lstrcmp(Language, "En")) return(&WineLicense_En); + if (lstrcmp(Language, "Eo")) return(&WineLicense_Eo); + if (lstrcmp(Language, "Es")) return(&WineLicense_Es); + if (lstrcmp(Language, "Fi")) return(&WineLicense_Fi); + if (lstrcmp(Language, "Fr")) return(&WineLicense_Fr); + if (lstrcmp(Language, "Hu")) return(&WineLicense_Hu); + if (lstrcmp(Language, "It")) return(&WineLicense_It); + if (lstrcmp(Langauge, "Ko")) return(&WineLicense_Ko); + if (lstrcmp(Language, "No")) return(&WineLicense_No); + if (lstrcmp(Language, "Pl")) return(&WineLicense_Pl); + if (lstrcmp(Language, "Po")) return(&WineLicense_Po); + if (lstrcmp(Language, "Sw")) return(&WineLicense_Sw); + if (lstrcmp(Language, "Va")) return(&WineLicense_Va); */ return(&WineLicense_En); } @@ -49,4 +49,3 @@ VOID WineWarranty(HWND Wnd, LPCSTR Language) MessageBox(Wnd, License->Warranty, License->WarrantyCaption, MB_ICONEXCLAMATION | MB_OK); } - diff --git a/programs/clock/main.c b/programs/clock/main.c index e5c6591b022..42d5f370433 100644 --- a/programs/clock/main.c +++ b/programs/clock/main.c @@ -112,10 +112,10 @@ VOID MAIN_FileChooseFont(VOID) { font.lpfnHook = 0; font.lpTemplateName = 0; font.hInstance = Globals.hInstance; - font.lpszStyle = LF_FACESIZE; +// font.lpszStyle = LF_FACESIZE; font.nFontType = 0; font.nSizeMin = 0; - font.nSizeMax = 0; + font.nSizeMax = 144; if (ChooseFont(&font)) { /* do nothing yet */ @@ -203,8 +203,8 @@ int PASCAL WinMain (HANDLE hInstance, HANDLE prev, LPSTR cmdline, int show) MSG msg; WNDCLASS class; - char className[] = "CLClass"; /* To make sure className >= 0x10000 */ - char winName[] = "Clock"; + char szClassName[] = "CLClass"; /* To make sure className >= 0x10000 */ + char szWinName[] = "Clock"; #if defined(WINELIB) && !defined(HAVE_WINE_CONSTRUCTOR) /* Register resources */ @@ -239,29 +239,18 @@ int PASCAL WinMain (HANDLE hInstance, HANDLE prev, LPSTR cmdline, int show) class.hCursor = LoadCursor (0, IDC_ARROW); class.hbrBackground = GetStockObject (GRAY_BRUSH); class.lpszMenuName = 0; - class.lpszClassName = className; + class.lpszClassName = szClassName; } if (!RegisterClass (&class)) return FALSE; - Globals.hMainWnd = CreateWindow (className, winName, WS_OVERLAPPEDWINDOW, - CW_USEDEFAULT, 0, CW_USEDEFAULT, Globals.MaxX, Globals.MaxY, - LoadMenu(Globals.hInstance, STRING_MENU_Xx), - Globals.hInstance, 0); + Globals.hMainWnd = CreateWindow (szClassName, szWinName, WS_OVERLAPPEDWINDOW, + CW_USEDEFAULT, 0, CW_USEDEFAULT, Globals.MaxX, Globals.MaxY, + LoadMenu(Globals.hInstance, STRING_MENU_Xx), Globals.hInstance, 0); LANGUAGE_SelectByName(Globals.lpszLanguage); SetMenu(Globals.hMainWnd, Globals.hMainMenu); - Globals.hSystemMenu = GetSystemMenu(Globals.hMainWnd, TRUE); - - /* - FIXME: The next few lines are an attempt to add a menu item to the - window system menu. - */ - - AppendMenu(Globals.hSystemMenu, MF_STRING | MF_BYCOMMAND, 1000, "item"); - SetSystemMenu(Globals.hMainWnd, Globals.hSystemMenu); - LANGUAGE_UpdateMenuCheckmarks(); ShowWindow (Globals.hMainWnd, show); diff --git a/programs/clock/main.h b/programs/clock/main.h index 6efaf77eccb..221b1657feb 100644 --- a/programs/clock/main.h +++ b/programs/clock/main.h @@ -63,23 +63,25 @@ extern CHAR STRING_MENU_Xx[]; #define IDS_LANGUAGE_ID STRINGID(00) #define IDS_LANGUAGE_MENU_ITEM STRINGID(01) #define IDS_CLOCK STRINGID(02) +#define IDS_MENU_ON_TOP STRINGID(03) /* main menu */ +#define CL_ON_TOP 99 + #define CL_ANALOG 100 #define CL_DIGITAL 101 #define CL_FONT 102 #define CL_WITHOUT_TITLE 103 -#define CL_ON_TOP 104 -#define CL_SECONDS 105 -#define CL_DATE 106 +#define CL_SECONDS 104 +#define CL_DATE 105 -#define CL_LANGUAGE 108 +#define CL_LANGUAGE 200 -#define CL_INFO 186 -#define CL_INFO_LICENSE 187 -#define CL_INFO_NO_WARRANTY 188 -#define CL_INFO_ABOUT_WINE 189 +#define CL_INFO 301 +#define CL_INFO_LICENSE 302 +#define CL_INFO_NO_WARRANTY 303 +#define CL_INFO_ABOUT_WINE 304 -#define CL_FIRST_LANGUAGE 109 -#define CL_LAST_LANGUAGE 185 +#define CL_FIRST_LANGUAGE 200 +#define CL_LAST_LANGUAGE 220 diff --git a/programs/clock/winclock.c b/programs/clock/winclock.c index 5baf5ebd9a0..95789664140 100644 --- a/programs/clock/winclock.c +++ b/programs/clock/winclock.c @@ -36,6 +36,8 @@ COLORREF EtchColor = RGB(0,0,0); float Pi=3.1415926; +int nLastSecond = 60; + HandData OldSecond,OldHour,OldMinute; int MiddleX(void) { @@ -199,9 +201,12 @@ void AnalogClock(HDC dc) { BOOL Redraw; GetLocalTime(&st); + + S = st.wSecond; + if (nLastSecond==S) { exit; } + nLastSecond = S; H = st.wHour; M = st.wMinute; - S = st.wSecond; F = st.wMilliseconds / 10; F = F + S*100; M = M*1000+F/6; diff --git a/programs/progman/ChangeLog b/programs/progman/ChangeLog index 9db8ab83739..4d897805e7a 100644 --- a/programs/progman/ChangeLog +++ b/programs/progman/ChangeLog @@ -36,7 +36,7 @@ Sun Jun 2 13:14:55 1996 Ulrich Schmid * Program icons: repaint on WM_NCPAINT or WM_PAINTICON -Sun Apr 14 20:09:19 1996 Pablo Saratxaga +Sun Apr 14 20:09:19 1996 Pablo Saratxaga * [Fr.rc] (new) Added French language support. diff --git a/programs/progman/Fr.rc b/programs/progman/Fr.rc index 251b5bdbe83..b0b35c29767 100644 --- a/programs/progman/Fr.rc +++ b/programs/progman/Fr.rc @@ -2,7 +2,7 @@ * Program Manager * * Copyright 1996 Ulrich Schmid - * French Fr.rc by Pablo Saratxaga + * French Fr.rc by Pablo Saratxaga */ #define LANGUAGE_ID Fr diff --git a/programs/regtest/regtest.c b/programs/regtest/regtest.c index 161548be440..5dabe41cc4f 100644 --- a/programs/regtest/regtest.c +++ b/programs/regtest/regtest.c @@ -23,6 +23,8 @@ /* True this when security is implemented */ #define CHECK_SAM FALSE +#define ERR(s,d) fprintf(stderr, "%s:#%d(Status=%ld)\n", __FUNCTION__,s,d) + /* * NOTES: These individual routines are listed in alphabetical order. * @@ -36,17 +38,16 @@ void TestCloseKey() { long lSts; - fprintf(stderr, "Testing RegCloseKey...\n"); lSts = RegCloseKey((HKEY)2); - if (lSts != ERROR_INVALID_HANDLE) fprintf(stderr, " 1:%ld\n",lSts); + if (lSts != ERROR_INVALID_HANDLE) ERR(1,lSts); lSts = RegCloseKey(HKEY_LOCAL_MACHINE); - if (lSts != ERROR_SUCCESS) fprintf(stderr, " 2:%ld\n",lSts); + if (lSts != ERROR_SUCCESS) ERR(2,lSts); /* Check twice just for kicks */ lSts = RegCloseKey(HKEY_LOCAL_MACHINE); - if (lSts != ERROR_SUCCESS) fprintf(stderr, " 3:%ld\n",lSts); + if (lSts != ERROR_SUCCESS) ERR(3,lSts); } /****************************************************************************** @@ -56,17 +57,16 @@ void TestConnectRegistry() { long lSts; HKEY hkey; - fprintf(stderr, "Testing RegConnectRegistry...\n"); lSts = RegConnectRegistry("",(HKEY)2,&hkey); - if (lSts != ERROR_SUCCESS) fprintf(stderr, " 1:%ld\n",lSts); + if (lSts != ERROR_SUCCESS) ERR(1,lSts); lSts = RegConnectRegistry("",HKEY_LOCAL_MACHINE,&hkey); - if (lSts != ERROR_SUCCESS) fprintf(stderr, " 2:%ld\n",lSts); + if (lSts != ERROR_SUCCESS) ERR(2,lSts); #if TOO_SLOW lSts = RegConnectRegistry("\\\\regtest",HKEY_LOCAL_MACHINE,&hkey); - if (lSts != ERROR_BAD_NETPATH) fprintf(stderr, " 3:%ld\n",lSts); + if (lSts != ERROR_BAD_NETPATH) ERR(3,lSts); #endif } @@ -78,25 +78,23 @@ void TestCreateKey() long lSts; HKEY hkey; - fprintf(stderr, "Testing RegCreateKey...\n"); - lSts = RegCreateKey((HKEY)2,"",&hkey); - if (lSts != ERROR_BADKEY) fprintf(stderr, " 1:%ld\n",lSts); + if (lSts != ERROR_BADKEY) ERR(1,lSts); lSts = RegCreateKey(HKEY_LOCAL_MACHINE,"",&hkey); - if (lSts != ERROR_SUCCESS) fprintf(stderr, " 2:%ld\n",lSts); + if (lSts != ERROR_SUCCESS) ERR(2,lSts); RegCloseKey(hkey); lSts = RegCreateKey(HKEY_LOCAL_MACHINE,"\\asdf",&hkey); - if (lSts != ERROR_BAD_PATHNAME) fprintf(stderr, " 3:%ld\n",lSts); + if (lSts != ERROR_BAD_PATHNAME) ERR(3,lSts); #if 0 lSts = RegCreateKey(HKEY_LOCAL_MACHINE,"asdf\\",&hkey); - if (lSts != ERROR_INVALID_PARAMETER) fprintf(stderr, " 4:%ld\n",lSts); + if (lSts != ERROR_INVALID_PARAMETER) ERR(4,lSts); #endif lSts = RegCreateKey(HKEY_LOCAL_MACHINE,"\\asdf\\",&hkey); - if (lSts != ERROR_BAD_PATHNAME) fprintf(stderr, " 5:%ld\n",lSts); + if (lSts != ERROR_BAD_PATHNAME) ERR(5,lSts); } /****************************************************************************** @@ -108,22 +106,20 @@ void TestCreateKeyEx() HKEY hkey; DWORD dwDisp; - fprintf(stderr, "Testing RegCreateKeyEx...\n"); - lSts = RegCreateKeyEx((HKEY)2,"",0,"",0,0,NULL,&hkey,&dwDisp); - if (lSts != ERROR_INVALID_HANDLE) fprintf(stderr, " 1:%ld\n",lSts); + if (lSts != ERROR_INVALID_HANDLE) ERR(1,lSts); lSts = RegCreateKeyEx(HKEY_LOCAL_MACHINE,"regtest",0,"",0,0,NULL,&hkey, &dwDisp); - if (lSts != ERROR_INVALID_PARAMETER) fprintf(stderr, " 2:%ld\n",lSts); + if (lSts != ERROR_INVALID_PARAMETER) ERR(2,lSts); lSts = RegCreateKeyEx(HKEY_LOCAL_MACHINE,"regtest",0,"asdf",0, KEY_ALL_ACCESS,NULL,&hkey,&dwDisp); - if (lSts != ERROR_INVALID_PARAMETER) fprintf(stderr, " 3:%ld\n",lSts); + if (lSts != ERROR_INVALID_PARAMETER) ERR(3,lSts); lSts = RegCreateKeyEx(HKEY_LOCAL_MACHINE,"regtest",0,"",0, KEY_ALL_ACCESS,NULL,&hkey,&dwDisp); - if (lSts != ERROR_INVALID_PARAMETER) fprintf(stderr, " 4:%ld\n",lSts); + if (lSts != ERROR_INVALID_PARAMETER) ERR(4,lSts); } @@ -133,17 +129,16 @@ void TestCreateKeyEx() void TestDeleteKey() { long lSts; - fprintf(stderr, "Testing RegDeleteKey...\n"); lSts = RegDeleteKey((HKEY)2, "asdf"); - if (lSts != ERROR_INVALID_HANDLE) fprintf(stderr, " 1:%ld\n",lSts); + if (lSts != ERROR_INVALID_HANDLE) ERR(1,lSts); lSts = RegDeleteKey(HKEY_CURRENT_USER, "asdf"); - if (lSts != ERROR_FILE_NOT_FOUND) fprintf(stderr, " 2:%ld\n",lSts); + if (lSts != ERROR_FILE_NOT_FOUND) ERR(2,lSts); #if CHECK_SAM lSts = RegDeleteKey(HKEY_CURRENT_USER, ""); - if (lSts != ERROR_ACCESS_DENIED) fprintf(stderr, " 3:%ld\n",lSts); + if (lSts != ERROR_ACCESS_DENIED) ERR(3,lSts); #endif } @@ -153,19 +148,18 @@ void TestDeleteKey() void TestDeleteValue() { long lSts; - fprintf(stderr, "Testing RegDeleteValue...\n"); lSts = RegDeleteValue((HKEY)2, "asdf"); - if (lSts != ERROR_INVALID_HANDLE) fprintf(stderr, " 1:%ld\n",lSts); + if (lSts != ERROR_INVALID_HANDLE) ERR(1,lSts); lSts = RegDeleteValue(HKEY_CURRENT_USER, ""); - if (lSts != ERROR_FILE_NOT_FOUND) fprintf(stderr, " 2:%ld\n",lSts); + if (lSts != ERROR_FILE_NOT_FOUND) ERR(2,lSts); lSts = RegDeleteValue(HKEY_CURRENT_USER, "asdf"); - if (lSts != ERROR_FILE_NOT_FOUND) fprintf(stderr, " 3:%ld\n",lSts); + if (lSts != ERROR_FILE_NOT_FOUND) ERR(3,lSts); lSts = RegDeleteValue(HKEY_CURRENT_USER, "\\asdf"); - if (lSts != ERROR_FILE_NOT_FOUND) fprintf(stderr, " 4:%ld\n",lSts); + if (lSts != ERROR_FILE_NOT_FOUND) ERR(4,lSts); } /****************************************************************************** @@ -177,18 +171,17 @@ void TestEnumKey() char *sVal; long lVal; - fprintf(stderr, "Testing RegEnumKey...\n"); lVal = 1; sVal = (char *)malloc(lVal * sizeof(char)); lSts = RegEnumKey((HKEY)2,3,sVal,lVal); - if (lSts != ERROR_INVALID_HANDLE) fprintf(stderr, " 1:%ld\n",lSts); + if (lSts != ERROR_INVALID_HANDLE) ERR(1,lSts); lSts = RegEnumKey(HKEY_CURRENT_USER,-1,sVal,lVal); - if (lSts != ERROR_NO_MORE_ITEMS) fprintf(stderr, " 2:%ld\n",lSts); + if (lSts != ERROR_NO_MORE_ITEMS) ERR(2,lSts); lSts = RegEnumKey(HKEY_CURRENT_USER,0,sVal,lVal); - if (lSts != ERROR_MORE_DATA) fprintf(stderr, " 3:%ld\n",lSts); + if (lSts != ERROR_MORE_DATA) ERR(3,lSts); } /****************************************************************************** @@ -203,20 +196,19 @@ void TestEnumKeyEx() unsigned long lLen2; FILETIME ft; - fprintf(stderr, "Testing RegEnumKeyEx...\n"); lLen1 = 1; sVal = (char *)malloc(lLen1 * sizeof(char)); lLen2 = 1; sClass = (char *)malloc(lLen2 * sizeof(char)); lSts = RegEnumKeyEx((HKEY)2,0,sVal,&lLen1,0,sClass,&lLen2,&ft); - if (lSts != ERROR_INVALID_HANDLE) fprintf(stderr, " 1:%ld\n",lSts); + if (lSts != ERROR_INVALID_HANDLE) ERR(1,lSts); lSts = RegEnumKeyEx(HKEY_LOCAL_MACHINE,0,sVal,&lLen1,0,sClass,&lLen2,&ft); - if (lSts != ERROR_MORE_DATA) fprintf(stderr, " 2:%ld\n",lSts); + if (lSts != ERROR_MORE_DATA) ERR(2,lSts); lSts = RegEnumKeyEx(HKEY_LOCAL_MACHINE,0,sVal,&lLen1,0,sClass,&lLen2,&ft); - if (lSts != ERROR_MORE_DATA) fprintf(stderr, " 3:%ld\n",lSts); + if (lSts != ERROR_MORE_DATA) ERR(3,lSts); } /****************************************************************************** @@ -231,23 +223,25 @@ void TestEnumValue() unsigned long lLen1; char *bVal; - fprintf(stderr, "Testing RegEnumValue...\n"); lVal = 1; sVal = (char *)malloc(lVal * sizeof(char)); lLen1 = 1; bVal = (char *)malloc(lLen1 * sizeof(char)); lSts = RegEnumValue((HKEY)2,-1,sVal,&lVal,0,&lType,NULL,&lLen1); - if (lSts != ERROR_INVALID_HANDLE) fprintf(stderr, " 1:%ld\n",lSts); + if (lSts != ERROR_INVALID_HANDLE) ERR(1,lSts); lSts = RegEnumValue(HKEY_LOCAL_MACHINE,-1,sVal,&lVal,0,&lType,NULL,&lLen1); - if (lSts != ERROR_NO_MORE_ITEMS) fprintf(stderr, " 2:%ld\n",lSts); + if (lSts != ERROR_NO_MORE_ITEMS) ERR(2,lSts); lSts = RegEnumValue(HKEY_LOCAL_MACHINE,0,sVal,&lVal,0,&lType,NULL,&lLen1); - if (lSts != ERROR_SUCCESS) fprintf(stderr, " 3:%ld\n",lSts); + if (lSts != ERROR_SUCCESS) ERR(3,lSts); + + lSts = RegEnumValue(HKEY_LOCAL_MACHINE,0,sVal,&lVal,0,NULL,NULL,&lLen1); + if (lSts != ERROR_SUCCESS) ERR(4,lSts); lSts = RegEnumValue(HKEY_LOCAL_MACHINE,1,sVal,&lVal,0,&lType,bVal,&lLen1); - if (lSts != ERROR_NO_MORE_ITEMS) fprintf(stderr, " 4:%ld\n",lSts); + if (lSts != ERROR_NO_MORE_ITEMS) ERR(5,lSts); } /****************************************************************************** @@ -256,13 +250,12 @@ void TestEnumValue() void TestFlushKey() { long lSts; - fprintf(stderr, "Testing RegFlushKey...\n"); lSts = RegFlushKey((HKEY)2); - if (lSts != ERROR_INVALID_HANDLE) fprintf(stderr, " 1:%ld\n",lSts); + if (lSts != ERROR_INVALID_HANDLE) ERR(1,lSts); lSts = RegFlushKey(HKEY_LOCAL_MACHINE); - if (lSts != ERROR_SUCCESS) fprintf(stderr, " 2:%ld\n",lSts); + if (lSts != ERROR_SUCCESS) ERR(2,lSts); } /****************************************************************************** @@ -275,18 +268,17 @@ void TestGetKeySecurity() SECURITY_DESCRIPTOR sd; unsigned long lLen; - fprintf(stderr, "Testing RegGetKeySecurity...\n"); lLen = sizeof(sd); - + si = 0; lSts = RegGetKeySecurity((HKEY)2,si,&sd,&lLen); - if (lSts != ERROR_INVALID_HANDLE) fprintf(stderr, " 1:%ld\n",lSts); + if (lSts != ERROR_INVALID_HANDLE) ERR(1,lSts); lSts = RegGetKeySecurity(HKEY_LOCAL_MACHINE,si,&sd,&lLen); - if (lSts != ERROR_INSUFFICIENT_BUFFER) fprintf(stderr, " 2:%ld\n",lSts); + if (lSts != ERROR_INSUFFICIENT_BUFFER) ERR(2,lSts); si = GROUP_SECURITY_INFORMATION; lSts = RegGetKeySecurity(HKEY_LOCAL_MACHINE,si,&sd,&lLen); - if (lSts != ERROR_SUCCESS) fprintf(stderr, " 3:%ld\n",lSts); + if (lSts != ERROR_SUCCESS) ERR(3,lSts); } /****************************************************************************** @@ -295,26 +287,25 @@ void TestGetKeySecurity() void TestLoadKey() { long lSts; - fprintf(stderr, "Testing RegLoadKey...\n"); lSts = RegLoadKey((HKEY)2,"",""); - if (lSts != ERROR_INVALID_PARAMETER) fprintf(stderr, " 1:%ld\n",lSts); + if (lSts != ERROR_INVALID_PARAMETER) ERR(1,lSts); lSts = RegLoadKey(HKEY_CURRENT_USER,"",""); - if (lSts != ERROR_INVALID_PARAMETER) fprintf(stderr, " 2:%ld\n",lSts); + if (lSts != ERROR_INVALID_PARAMETER) ERR(2,lSts); lSts = RegLoadKey(HKEY_CURRENT_USER,"regtest",""); - if (lSts != ERROR_INVALID_PARAMETER) fprintf(stderr, " 3:%ld\n",lSts); + if (lSts != ERROR_INVALID_PARAMETER) ERR(3,lSts); lSts = RegLoadKey(HKEY_CURRENT_USER,"\\regtest",""); - if (lSts != ERROR_INVALID_PARAMETER) fprintf(stderr, " 4:%ld\n",lSts); + if (lSts != ERROR_INVALID_PARAMETER) ERR(4,lSts); #if CHECK_SAM lSts = RegLoadKey(HKEY_CURRENT_USER,"regtest","regtest.dat"); - if (lSts != ERROR_PRIVILEGE_NOT_HELD) fprintf(stderr, " 5:%ld\n",lSts); + if (lSts != ERROR_PRIVILEGE_NOT_HELD) ERR(5,lSts); lSts = RegLoadKey(HKEY_CURRENT_USER,"\\regtest","regtest.dat"); - if (lSts != ERROR_PRIVILEGE_NOT_HELD) fprintf(stderr, " 6:%ld\n",lSts); + if (lSts != ERROR_PRIVILEGE_NOT_HELD) ERR(6,lSts); #endif } @@ -326,18 +317,17 @@ void TestNotifyChangeKeyValue() long lSts; HANDLE hEvent; - fprintf(stderr, "Testing RegNotifyChangeKeyValue...\n"); hEvent = (HANDLE)0; lSts = RegNotifyChangeKeyValue((HKEY)2, TRUE, REG_NOTIFY_CHANGE_NAME, 0, 0); - if (lSts != ERROR_INVALID_HANDLE) fprintf(stderr, " 1:%ld\n",lSts); + if (lSts != ERROR_INVALID_HANDLE) ERR(1,lSts); lSts = RegNotifyChangeKeyValue(HKEY_CURRENT_USER, TRUE, REG_NOTIFY_CHANGE_NAME, 0, 1); - if (lSts != ERROR_INVALID_PARAMETER) fprintf(stderr, " 2:%ld\n",lSts); + if (lSts != ERROR_INVALID_PARAMETER) ERR(2,lSts); hEvent = (HANDLE)HKEY_CURRENT_USER; lSts = RegNotifyChangeKeyValue(HKEY_CURRENT_USER, TRUE, REG_NOTIFY_CHANGE_NAME, hEvent, 1); - if (lSts != ERROR_INVALID_HANDLE) fprintf(stderr, " 3:%ld\n",lSts); + if (lSts != ERROR_INVALID_HANDLE) ERR(3,lSts); } /****************************************************************************** @@ -347,20 +337,19 @@ void TestOpenKey() { long lSts; HKEY hkey; - fprintf(stderr, "Testing RegOpenKey...\n"); lSts = RegOpenKey((HKEY)72, "",&hkey); - if (lSts != ERROR_SUCCESS) fprintf(stderr, " 1:%ld\n",lSts); + if (lSts != ERROR_SUCCESS) ERR(1,lSts); RegCloseKey(hkey); lSts = RegOpenKey((HKEY)2, "regtest",&hkey); - if (lSts != ERROR_INVALID_HANDLE) fprintf(stderr, " 2:%ld\n",lSts); + if (lSts != ERROR_INVALID_HANDLE) ERR(2,lSts); lSts = RegOpenKey(HKEY_CURRENT_USER, "regtest",&hkey); - if (lSts != ERROR_FILE_NOT_FOUND) fprintf(stderr, " 3:%ld\n",lSts); + if (lSts != ERROR_FILE_NOT_FOUND) ERR(3,lSts); lSts = RegOpenKey(HKEY_CURRENT_USER, "\\regtest",&hkey); - if (lSts != ERROR_BAD_PATHNAME) fprintf(stderr, " 4:%ld\n",lSts); + if (lSts != ERROR_BAD_PATHNAME) ERR(4,lSts); } /****************************************************************************** @@ -370,19 +359,18 @@ void TestOpenKeyEx() { long lSts; HKEY hkey; - fprintf(stderr, "Testing RegOpenKeyEx...\n"); lSts = RegOpenKeyEx((HKEY)2,"",0,KEY_ALL_ACCESS,&hkey); - if (lSts != ERROR_INVALID_HANDLE) fprintf(stderr, " 1:%ld\n",lSts); + if (lSts != ERROR_INVALID_HANDLE) ERR(1,lSts); lSts = RegOpenKeyEx(HKEY_CURRENT_USER,"\\regtest",0,KEY_ALL_ACCESS,&hkey); - if (lSts != ERROR_BAD_PATHNAME) fprintf(stderr, " 2:%ld\n",lSts); + if (lSts != ERROR_BAD_PATHNAME) ERR(2,lSts); lSts = RegOpenKeyEx(HKEY_CURRENT_USER,"regtest",0,0,&hkey); - if (lSts != ERROR_FILE_NOT_FOUND) fprintf(stderr, " 3:%ld\n",lSts); + if (lSts != ERROR_FILE_NOT_FOUND) ERR(3,lSts); lSts = RegOpenKeyEx(HKEY_CURRENT_USER,"regtest\\",0,0,&hkey); - if (lSts != ERROR_FILE_NOT_FOUND) fprintf(stderr, " 3:%ld\n",lSts); + if (lSts != ERROR_FILE_NOT_FOUND) ERR(4,lSts); } /****************************************************************************** @@ -401,7 +389,6 @@ void TestQueryInfoKey() unsigned long lMaxValLen; unsigned long lSecDescLen; FILETIME ft; - fprintf(stderr, "Testing RegQueryInfoKey...\n"); lClass = 1; sClass = (char *)malloc(lClass * sizeof(char)); @@ -409,12 +396,12 @@ void TestQueryInfoKey() lSts = RegQueryInfoKey((HKEY)2,sClass,&lClass,0,&lSubKeys,&lMaxSubLen, &lMaxClassLen,&lValues,&lMaxValNameLen,&lMaxValLen, &lSecDescLen, &ft); - if (lSts != ERROR_INVALID_HANDLE) fprintf(stderr, " 1:%ld\n",lSts); + if (lSts != ERROR_INVALID_HANDLE) ERR(1,lSts); lSts = RegQueryInfoKey(HKEY_CURRENT_USER,sClass,&lClass,0,&lSubKeys, &lMaxSubLen,&lMaxClassLen,&lValues,&lMaxValNameLen, &lMaxValLen,&lSecDescLen, &ft); - if (lSts != ERROR_SUCCESS) fprintf(stderr, " 2:%ld\n",lSts); + if (lSts != ERROR_SUCCESS) ERR(2,lSts); } /****************************************************************************** @@ -426,21 +413,20 @@ void TestQueryValue() long lLen; char *sVal; - fprintf(stderr, "Testing RegQueryValue...\n"); sVal = (char *)malloc(80 * sizeof(char)); lLen = strlen(sVal); lSts = RegQueryValue((HKEY)2,"",NULL,&lLen); - if (lSts != ERROR_INVALID_HANDLE) fprintf(stderr, " 1:%ld\n",lSts); + if (lSts != ERROR_INVALID_HANDLE) ERR(1,lSts); lSts = RegQueryValue(HKEY_CURRENT_USER,"",NULL,&lLen); - if (lSts != ERROR_SUCCESS) fprintf(stderr, " 2:%ld\n",lSts); + if (lSts != ERROR_SUCCESS) ERR(2,lSts); lSts = RegQueryValue(HKEY_CURRENT_USER,"\\regtest",NULL,&lLen); - if (lSts != ERROR_BAD_PATHNAME) fprintf(stderr, " 3:%ld\n",lSts); + if (lSts != ERROR_BAD_PATHNAME) ERR(3,lSts); lSts = RegQueryValue(HKEY_CURRENT_USER,"",sVal,&lLen); - if (lSts != ERROR_SUCCESS) fprintf(stderr, " 4:%ld\n",lSts); + if (lSts != ERROR_SUCCESS) ERR(4,lSts); } /****************************************************************************** @@ -453,18 +439,17 @@ void TestQueryValueEx() unsigned long lType; unsigned long lLen; - fprintf(stderr, "Testing RegQueryValueEx...\n"); lLen = 80; sVal = (char *)malloc(lLen * sizeof(char)); lSts = RegQueryValueEx((HKEY)2,"",0,&lType,sVal,&lLen); - if (lSts != ERROR_INVALID_HANDLE) fprintf(stderr, " 1:%ld\n",lSts); + if (lSts != ERROR_INVALID_HANDLE) ERR(1,lSts); lSts = RegQueryValueEx(HKEY_CURRENT_USER,"",(LPDWORD)1,&lType,sVal,&lLen); - if (lSts != ERROR_INVALID_PARAMETER) fprintf(stderr, " 2:%ld\n",lSts); + if (lSts != ERROR_INVALID_PARAMETER) ERR(2,lSts); lSts = RegQueryValueEx(HKEY_LOCAL_MACHINE,"",0,&lType,sVal,&lLen); - if (lSts != ERROR_SUCCESS) fprintf(stderr, " 3:%ld\n",lSts); + if (lSts != ERROR_SUCCESS) ERR(3,lSts); } /****************************************************************************** @@ -474,17 +459,15 @@ void TestReplaceKey() { long lSts; - fprintf(stderr, "Testing RegReplaceKey...\n"); - lSts = RegReplaceKey((HKEY)2,"","",""); - if (lSts != ERROR_INVALID_HANDLE) fprintf(stderr, " 1:%ld\n",lSts); + if (lSts != ERROR_INVALID_HANDLE) ERR(1,lSts); #if CHECK_SAM lSts = RegReplaceKey(HKEY_LOCAL_MACHINE,"","",""); - if (lSts != ERROR_ACCESS_DENIED) fprintf(stderr, " 2:%ld\n",lSts); + if (lSts != ERROR_ACCESS_DENIED) ERR(2,lSts); lSts = RegReplaceKey(HKEY_LOCAL_MACHINE,"Software","",""); - if (lSts != ERROR_ACCESS_DENIED) fprintf(stderr, " 3:%ld\n",lSts); + if (lSts != ERROR_ACCESS_DENIED) ERR(3,lSts); #endif } @@ -494,16 +477,15 @@ void TestReplaceKey() void TestRestoreKey() { long lSts; - fprintf(stderr, "Testing RegRestoreKey...\n"); lSts = RegRestoreKey((HKEY)2,"",0); - if (lSts != ERROR_INVALID_PARAMETER) fprintf(stderr, " 1:%ld\n",lSts); + if (lSts != ERROR_INVALID_PARAMETER) ERR(1,lSts); lSts = RegRestoreKey(HKEY_LOCAL_MACHINE,"",0); - if (lSts != ERROR_INVALID_PARAMETER) fprintf(stderr, " 2:%ld\n",lSts); + if (lSts != ERROR_INVALID_PARAMETER) ERR(2,lSts); lSts = RegRestoreKey(HKEY_LOCAL_MACHINE,"a.a",0); - if (lSts != ERROR_FILE_NOT_FOUND) fprintf(stderr, " 3:%ld\n",lSts); + if (lSts != ERROR_FILE_NOT_FOUND) ERR(3,lSts); } /****************************************************************************** @@ -512,17 +494,16 @@ void TestRestoreKey() void TestSaveKey() { long lSts; - fprintf(stderr, "Testing RegSaveKey...\n"); lSts = RegSaveKey((HKEY)2,"",NULL); - if (lSts != ERROR_INVALID_PARAMETER) fprintf(stderr, " 1:%ld\n",lSts); + if (lSts != ERROR_INVALID_PARAMETER) ERR(1,lSts); lSts = RegSaveKey(HKEY_LOCAL_MACHINE,"",NULL); - if (lSts != ERROR_INVALID_PARAMETER) fprintf(stderr, " 2:%ld\n",lSts); + if (lSts != ERROR_INVALID_PARAMETER) ERR(2,lSts); #if CHECK_SAM lSts = RegSaveKey(HKEY_LOCAL_MACHINE,"a.a",NULL); - if (lSts != ERROR_PRIVILEGE_NOT_HELD) fprintf(stderr, " 3:%ld\n",lSts); + if (lSts != ERROR_PRIVILEGE_NOT_HELD) ERR(3,lSts); #endif } @@ -533,19 +514,18 @@ void TestSetKeySecurity() { long lSts; SECURITY_DESCRIPTOR sd; - fprintf(stderr, "Testing RegSetKeySecurity...\n"); lSts = RegSetKeySecurity((HKEY)2,0,NULL); - if (lSts != ERROR_INVALID_PARAMETER) fprintf(stderr, " 1:%ld\n",lSts); + if (lSts != ERROR_INVALID_PARAMETER) ERR(1,lSts); lSts = RegSetKeySecurity(HKEY_LOCAL_MACHINE,0,NULL); - if (lSts != ERROR_INVALID_PARAMETER) fprintf(stderr, " 2:%ld\n",lSts); + if (lSts != ERROR_INVALID_PARAMETER) ERR(2,lSts); lSts = RegSetKeySecurity(HKEY_LOCAL_MACHINE,OWNER_SECURITY_INFORMATION,NULL); - if (lSts != ERROR_INVALID_PARAMETER) fprintf(stderr, " 3:%ld\n",lSts); + if (lSts != ERROR_INVALID_PARAMETER) ERR(3,lSts); lSts = RegSetKeySecurity(HKEY_LOCAL_MACHINE,OWNER_SECURITY_INFORMATION,&sd); - if (lSts != ERROR_INVALID_PARAMETER) fprintf(stderr, " 4:%ld\n",lSts); + if (lSts != ERROR_INVALID_PARAMETER) ERR(4,lSts); } /****************************************************************************** @@ -553,27 +533,28 @@ void TestSetKeySecurity() */ void TestSetValue() { +#if MAKE_NT_CRASH long lSts; - fprintf(stderr, "Testing RegSetValue...\n"); +#endif #if MAKE_NT_CRASH lSts = RegSetValue((HKEY)2,"",0,NULL,0); - if (lSts != ERROR_INVALID_PARAMETER) fprintf(stderr, " 1:%ld\n",lSts); + if (lSts != ERROR_INVALID_PARAMETER) ERR(1,lSts); #endif #if MAKE_NT_CRASH lSts = RegSetValue((HKEY)2,"regtest",0,NULL,0); - if (lSts != ERROR_INVALID_PARAMETER) fprintf(stderr, " 2:%ld\n",lSts); + if (lSts != ERROR_INVALID_PARAMETER) ERR(2,lSts); #endif #if MAKE_NT_CRASH lSts = RegSetValue((HKEY)2,"regtest",REG_SZ,NULL,0); - if (lSts != ERROR_INVALID_HANDLE) fprintf(stderr, " 3:%ld\n",lSts); + if (lSts != ERROR_INVALID_HANDLE) ERR(3,lSts); #endif #if MAKE_NT_CRASH lSts = RegSetValue(HKEY_LOCAL_MACHINE,"regtest",REG_SZ,NULL,0); - if (lSts != ERROR_INVALID_HANDLE) fprintf(stderr, " 4:%ld\n",lSts); + if (lSts != ERROR_INVALID_HANDLE) ERR(4,lSts); #endif } @@ -583,13 +564,12 @@ void TestSetValue() void TestSetValueEx() { long lSts; - fprintf(stderr, "Testing RegSetValueEx...\n"); lSts = RegSetValueEx((HKEY)2,"",0,0,NULL,0); - if (lSts != ERROR_INVALID_HANDLE) fprintf(stderr, " 1:%ld\n",lSts); + if (lSts != ERROR_INVALID_HANDLE) ERR(1,lSts); lSts = RegSetValueEx(HKEY_LOCAL_MACHINE,"",0,0,NULL,0); - if (lSts != ERROR_SUCCESS) fprintf(stderr, " 2:%ld\n",lSts); + if (lSts != ERROR_SUCCESS) ERR(2,lSts); } /****************************************************************************** @@ -597,18 +577,19 @@ void TestSetValueEx() */ void TestUnLoadKey() { +#if CHECK_SAM long lSts; - fprintf(stderr, "Testing RegUnloadKey...\n"); +#endif #if CHECK_SAM lSts = RegUnLoadKey((HKEY)2,""); - if (lSts != ERROR_PRIVILEGE_NOT_HELD) fprintf(stderr, " 1:%ld\n",lSts); + if (lSts != ERROR_PRIVILEGE_NOT_HELD) ERR(1,lSts); lSts = RegUnLoadKey(HKEY_LOCAL_MACHINE,""); - if (lSts != ERROR_PRIVILEGE_NOT_HELD) fprintf(stderr, " 2:%ld\n",lSts); + if (lSts != ERROR_PRIVILEGE_NOT_HELD) ERR(2,lSts); lSts = RegUnLoadKey(HKEY_LOCAL_MACHINE,"\\regtest"); - if (lSts != ERROR_PRIVILEGE_NOT_HELD) fprintf(stderr, " 3:%ld\n",lSts); + if (lSts != ERROR_PRIVILEGE_NOT_HELD) ERR(3,lSts); #endif } @@ -620,17 +601,15 @@ void TestSequence1() HKEY hkey; long lSts; - fprintf(stderr, "Testing Sequence1...\n"); - lSts = RegCreateKey(HKEY_CURRENT_USER,"regtest",&hkey); - if (lSts != ERROR_SUCCESS) fprintf(stderr, " 1:%ld\n",lSts); + if (lSts != ERROR_SUCCESS) ERR(1,lSts); - fprintf(stderr, " hkey=0x%x\n", hkey); +/* fprintf(stderr, " hkey=0x%x\n", hkey); */ lSts = RegDeleteKey(HKEY_CURRENT_USER, "regtest"); - if (lSts != ERROR_SUCCESS) fprintf(stderr, " 2:%ld\n",lSts); + if (lSts != ERROR_SUCCESS) ERR(2,lSts); lSts = RegCloseKey(hkey); - if (lSts != ERROR_SUCCESS) fprintf(stderr, " 3:%ld\n",lSts); + if (lSts != ERROR_SUCCESS) ERR(3,lSts); } diff --git a/rc/README b/rc/README index 949335c0ec0..314a03f7834 100644 --- a/rc/README +++ b/rc/README @@ -9,7 +9,7 @@ Primary applications are the resources of sysres.dll and a future commdlg.dll, but the use in the library version is possible as well. The expected advantage of using winerc over sysres.dll is a speed improvement, however, actual data to support that claim are not -available. The use of winerc might also simplifies the source code. For +available. The use of winerc might also simplify the source code. For example, the system menu is managed in the function CopySysMenu (controls/menu.c). A winerc-based implementation would just call return LoadMenuIndirect(_Sysres_SYSMENU); diff --git a/relay32/comctl32.spec b/relay32/comctl32.spec index 3d04c04e136..67fe6170800 100644 --- a/relay32/comctl32.spec +++ b/relay32/comctl32.spec @@ -7,7 +7,7 @@ type win32 # This list was created from a comctl32.dll v4.72 (IE4.01). 2 stdcall MenuHelp(long long long long long long ptr) MenuHelp - 3 stub ShowHideMenuCtl + 3 stdcall ShowHideMenuCtl(long long ptr) ShowHideMenuCtl 4 stdcall GetEffectiveClientRect(long long long) GetEffectiveClientRect 5 stdcall DrawStatusTextA(long ptr str long) DrawStatusText32A 6 stdcall CreateStatusWindowA(long str long long) CreateStatusWindow32A @@ -80,7 +80,7 @@ type win32 73 stdcall Free(long) COMCTL32_Free 74 stdcall GetSize(long) COMCTL32_GetSize 75 stdcall ImageList_SetDragCursorImage(ptr long long long) ImageList_SetDragCursorImage - 76 stub ImageList_SetFilter + 76 stdcall ImageList_SetFilter(ptr long long) ImageList_SetFilter 77 stdcall ImageList_SetIconSize(ptr long long) ImageList_SetIconSize 78 stdcall ImageList_SetImageCount(ptr long) ImageList_SetImageCount 79 stdcall ImageList_SetOverlayImage(ptr long long) ImageList_SetOverlayImage @@ -133,18 +133,18 @@ type win32 337 stub DPA_DeleteAllPtrs 338 stub DPA_Sort 339 stub DPA_Search -340 stub DPA_CreateEx -341 stub SendNotify +340 stdcall DPA_CreateEx(long long) DPA_CreateEx +341 stdcall SendNotify(long long long long) COMCTL32_SendNotify 342 stub SendNotifyEx -350 stdcall StrChrA(long long) COMCTL32_StrChrA -351 stub StrRChr +350 stdcall StrChrA(str str) COMCTL32_StrChrA +351 stub StrRChrA 352 stub StrCmpNA 353 stub StrCmpNIA 354 stub StrStrA -355 stub StrStrIA +355 stdcall StrStrIA(str str) COMCTL32_StrStrIA 356 stub StrCSpnA -357 stub StrToIntA +357 stdcall StrToIntA(str) COMCTL32_StrToIntA 358 stub StrChrW 359 stub StrRChrW 360 stub StrCmpNW diff --git a/relay32/gdi32.spec b/relay32/gdi32.spec index 576ecb4dd1b..8f11c9cb3cf 100644 --- a/relay32/gdi32.spec +++ b/relay32/gdi32.spec @@ -44,12 +44,10 @@ type win32 40 stdcall CreateEllipticRgnIndirect(ptr) CreateEllipticRgnIndirect32 41 stdcall CreateEnhMetaFileA(long ptr ptr ptr) CreateEnhMetaFile32A 42 stub CreateEnhMetaFileW - 43 stdcall CreateFontA(long long long long long long long long - long long long long long str) CreateFont32A + 43 stdcall CreateFontA(long long long long long long long long long long long long long str) CreateFont32A 44 stdcall CreateFontIndirectA(ptr) CreateFontIndirect32A 45 stdcall CreateFontIndirectW(ptr) CreateFontIndirect32W - 46 stdcall CreateFontW(long long long long long long long long - long long long long long wstr) CreateFont32W + 46 stdcall CreateFontW(long long long long long long long long long long long long long wstr) CreateFont32W 47 stdcall CreateHalftonePalette(long) CreateHalftonePalette 48 stdcall CreateHatchBrush(long long) CreateHatchBrush32 49 stdcall CreateICA(str str str ptr) CreateIC32A @@ -64,8 +62,7 @@ type win32 58 stdcall CreatePolygonRgn(ptr long long) CreatePolygonRgn32 59 stdcall CreateRectRgn(long long long long) CreateRectRgn32 60 stdcall CreateRectRgnIndirect(ptr) CreateRectRgnIndirect32 - 61 stdcall CreateRoundRectRgn(long long long long long long) - CreateRoundRectRgn32 + 61 stdcall CreateRoundRectRgn(long long long long long long) CreateRoundRectRgn32 62 stdcall CreateScalableFontResourceA(long str str str) CreateScalableFontResource32A 63 stdcall CreateScalableFontResourceW(long wstr wstr wstr) CreateScalableFontResource32W 64 stdcall CreateSolidBrush(long) CreateSolidBrush32 @@ -164,8 +161,8 @@ type win32 157 stub GetCharWidthFloatW 158 stdcall GetCharWidthW(long long long long) GetCharWidth32W 159 stub GetCharWidthWOW -160 stub GetCharacterPlacementA -161 stub GetCharacterPlacementW +160 stdcall GetCharacterPlacementA(long str long long ptr long) GetCharacterPlacement32A +161 stdcall GetCharacterPlacementW(long wstr long long ptr long) GetCharacterPlacement32W 162 stdcall GetClipBox(long ptr) GetClipBox32 163 stdcall GetClipRgn(long long) GetClipRgn32 164 stub GetColorAdjustment @@ -181,7 +178,7 @@ type win32 174 stdcall GetEnhMetaFileA(ptr) GetEnhMetaFile32A 175 stdcall GetEnhMetaFileBits(long long ptr) GetEnhMetaFileBits 176 stdcall GetEnhMetaFileDescriptionA(long long ptr) GetEnhMetaFileDescription32A -177 stub GetEnhMetaFileDescriptionW +177 stdcall GetEnhMetaFileDescriptionW(long long ptr) GetEnhMetaFileDescription32W 178 stdcall GetEnhMetaFileHeader(long long ptr) GetEnhMetaFileHeader 179 stub GetEnhMetaFilePaletteEntries 180 stub GetEnhMetaFileW @@ -219,7 +216,7 @@ type win32 212 stdcall GetPixelFormat(long) GetPixelFormat 213 stdcall GetPolyFillMode(long) GetPolyFillMode32 214 stdcall GetROP2(long) GetROP232 -215 stub GetRandomRgn +215 stdcall GetRandomRgn(long long long) GetRandomRgn 216 stdcall GetRasterizerCaps(ptr long) GetRasterizerCaps32 217 stdcall GetRegionData(long long ptr) GetRegionData 218 stdcall GetRelAbs(long) GetRelAbs32 @@ -273,7 +270,7 @@ type win32 266 stdcall PlayMetaFileRecord(long ptr ptr long) PlayMetaFileRecord32 267 stub PlgBlt 268 stdcall PolyBezier(long ptr long) PolyBezier32 -269 stub PolyBezierTo +269 stdcall PolyBezierTo(long ptr long) PolyBezierTo32 270 stub PolyDraw 271 stdcall PolyPolygon(long ptr ptr long) PolyPolygon32 272 stdcall PolyPolyline(long ptr ptr long) PolyPolyline32 @@ -317,8 +314,7 @@ type win32 310 stub SetColorSpace 311 stdcall SetDIBColorTable(long long long ptr) SetDIBColorTable32 312 stdcall SetDIBits(long long long long ptr ptr long) SetDIBits32 -313 stdcall SetDIBitsToDevice(long long long long long long long long long - ptr ptr long) SetDIBitsToDevice32 +313 stdcall SetDIBitsToDevice(long long long long long long long long long ptr ptr long) SetDIBitsToDevice32 314 stub SetDeviceGammaRamp 315 stdcall SetEnhMetaFileBits(long ptr) SetEnhMetaFileBits 316 stub SetFontEnumeration @@ -355,10 +351,8 @@ type win32 347 stub StartDocA 348 stub StartDocW 349 stub StartPage -350 stdcall StretchBlt(long long long long long long long long long long long) - StretchBlt32 -351 stdcall StretchDIBits(long long long long long long long long long - ptr ptr long long) StretchDIBits32 +350 stdcall StretchBlt(long long long long long long long long long long long) StretchBlt32 +351 stdcall StretchDIBits(long long long long long long long long long ptr ptr long long) StretchDIBits32 352 stub StrokeAndFillPath 353 stub StrokePath 354 stdcall SwapBuffers(long) SwapBuffers diff --git a/relay32/kernel32.spec b/relay32/kernel32.spec index 2e356420c5f..65f2dd803dd 100644 --- a/relay32/kernel32.spec +++ b/relay32/kernel32.spec @@ -626,7 +626,7 @@ type win32 609 register SUnMapLS_IP_EBP_36() SUnMapLS_IP_EBP_36 610 register SUnMapLS_IP_EBP_40() SUnMapLS_IP_EBP_40 611 register SUnMapLS_IP_EBP_8() SUnMapLS_IP_EBP_8 -612 stub ScrollConsoleScreenBufferA +612 stdcall ScrollConsoleScreenBufferA(long ptr ptr ptr ptr) ScrollConsoleScreenBuffer 613 stub ScrollConsoleScreenBufferW 614 stdcall SearchPathA(str str str long ptr ptr) SearchPath32A 615 stdcall SearchPathW(wstr wstr wstr long ptr ptr) SearchPath32W @@ -694,11 +694,11 @@ type win32 677 stdcall SetupComm(long long long) SetupComm 678 stdcall SizeofResource(long long) SizeofResource32 679 stdcall Sleep(long) Sleep -680 stub SleepEx +680 stdcall SleepEx(long long) SleepEx 681 stdcall SuspendThread(long) SuspendThread 682 stdcall SystemTimeToFileTime(ptr ptr) SystemTimeToFileTime 683 stub SystemTimeToTzSpecificLocalTime -684 stub TerminateProcess +684 stdcall TerminateProcess(ptr long) TerminateProcess 685 stdcall TerminateThread(long long) TerminateThread 686 stub Thread32First 687 stub Thread32Next diff --git a/relay32/mpr.spec b/relay32/mpr.spec index aa83c398699..760f1dec19d 100644 --- a/relay32/mpr.spec +++ b/relay32/mpr.spec @@ -26,10 +26,10 @@ type win32 0023 stub MPR_23 0024 stub MPR_24 0025 stdcall MPR_25(str long) _MPR_25 -0026 stdcall MultinetGetConnectionPerformanceA(ptr ptr) MultinetGetConnectionPerformance32A + 0026 stdcall MultinetGetConnectionPerformanceA(ptr ptr) MultinetGetConnectionPerformance32A 0027 stub MultinetGetConnectionPerformanceW -0028 stub MultinetGetErrorTextA -0029 stub MultinetGetErrorTextW +0028 stdcall MultinetGetErrorTextA(long ptr long)MultinetGetErrorText32A +0029 stdcall MultinetGetErrorTextW(long ptr long)MultinetGetErrorText32W 0030 stub NPSAuthenticationDialogA 0031 stub NPSCopyStringA 0032 stub NPSDeviceGetNumberA @@ -59,9 +59,9 @@ type win32 0056 stub WNetCancelConnectionA 0057 stub WNetCancelConnectionW 0058 stub WNetCloseEnum -0059 stub WNetConnectionDialog1A -0060 stub WNetConnectionDialog1W -0061 stub WNetConnectionDialog +0059 stdcall WNetConnectionDialog1A(ptr) WNetConnectionDialog1_32A +0060 stdcall WNetConnectionDialog1W(ptr) WNetConnectionDialog1_32W +0061 stdcall WNetConnectionDialog1(long long) WNetConnectionDialog1_32 0062 stub WNetDisconnectDialog1A 0063 stub WNetDisconnectDialog1W 0064 stub WNetDisconnectDialog diff --git a/relay32/ntdll.spec b/relay32/ntdll.spec index aaf2d41406e..cd5daaa6fca 100644 --- a/relay32/ntdll.spec +++ b/relay32/ntdll.spec @@ -371,7 +371,7 @@ type win32 368 stub RtlFindSetBits 369 stub RtlFindSetBitsAndClear 370 stdcall RtlFirstFreeAce(ptr ptr) RtlFirstFreeAce -371 stub RtlFormatCurrentUserKeyPath +371 stdcall RtlFormatCurrentUserKeyPath() RtlFormatCurrentUserKeyPath 372 stub RtlFormatMessage 373 stdcall RtlFreeAnsiString(long) RtlFreeAnsiString 374 stdcall RtlFreeHeap(long long long) HeapFree diff --git a/relay32/shell32.spec b/relay32/shell32.spec index 2bb81269af6..894ff22d6a2 100644 --- a/relay32/shell32.spec +++ b/relay32/shell32.spec @@ -2,296 +2,374 @@ name shell32 type win32 # Functions exported by the Win95 shell32.dll -# (these need to have these exact ordinals, for some win95 dlls -# import shell32.dll by ordinal) +# (these need to have these exact ordinals, for some +# win95 and winNT dlls import shell32.dll by ordinal) +# This list was updated to dll version 4.72 - 2 stdcall SHELL32_2(long long long long long long) SHELL32_2 - 3 stub CheckEscapesA - 4 stub SHELL32_4 - 5 stub SHELL32_5 - 6 stub CheckEscapesW - 7 stdcall CommandLineToArgvW(wstr ptr) CommandLineToArgvW - 8 stub Control_FillCache_RunDLL - 12 stdcall Control_RunDLL(long long long long) Control_RunDLL - 14 stdcall DllGetClassObject(long long ptr) SHELL32_DllGetClassObject - 15 stub SHELL32_15 - 16 stdcall SHELL32_16(ptr) SHELL32_16 - 17 stub SHELL32_17 - 18 stdcall SHELL32_18(ptr) SHELL32_18 - 19 stub SHELL32_19 - 20 stub SHELL32_20 - 21 stub SHELL32_21 - 22 stub DoEnvironmentSubstA - 23 stub SHELL32_23 - 24 stub SHELL32_24 - 25 stdcall SHELL32_25(ptr ptr) SHELL32_25 - 26 stub SHELL32_26 - 27 stub SHELL32_27 - 28 stub SHELL32_28 - 29 stdcall SHELL32_29(str) SHELL32_29 - 30 stdcall SHELL32_30(ptr long) SHELL32_30 - 31 stdcall SHELL32_31(str) SHELL32_31 - 32 stdcall SHELL32_32(str) SHELL32_32 - 33 stdcall SHELL32_33(str) SHELL32_33 - 34 stdcall SHELL32_34(str) SHELL32_34 - 35 stdcall SHELL32_35(str) SHELL32_35 - 36 stdcall SHELL32_36(str str) SHELL32_36 - 37 stdcall SHELL32_37(ptr str str) SHELL32_37 - 38 stub DoEnvironmentSubstW - 39 stub SHELL32_39 - 40 stub SHELL32_40 - 41 stdcall DragAcceptFiles(long long) DragAcceptFiles - 42 stub DragFinish - 43 stub SHELL32_43 - 44 stub DragQueryFile - 45 stdcall SHELL32_45(str) SHELL32_45 - 46 stub SHELL32_46 - 47 stub SHELL32_47 - 48 stub SHELL32_48 - 49 stub SHELL32_49 - 50 stub DragQueryFileA - 51 stdcall SHELL32_51(str long long) SHELL32_51 - 52 stdcall SHELL32_52(str) SHELL32_52 - 53 stub DragQueryFileAorW - 54 stub DragQueryFileW - 55 stub SHELL32_55 - 56 stdcall SHELL32_56(str) SHELL32_56 - 57 stub SHELL32_57 - 58 stdcall SHELL32_58(long long long long) SHELL32_58 - 59 stub SHELL32_59 - 60 stdcall SHELL32_60(long) SHELL32_60 - 61 stdcall SHELL32_61(long long long str str long) SHELL32_61 - 62 stdcall SHELL32_62(long long long long) SHELL32_62 - 63 stdcall SHELL32_63(long long long long str str str) SHELL32_63 - 64 stub SHELL32_64 - 65 stub SHELL32_65 - 66 stub SHELL32_66 - 67 stub SHELL32_67 - 68 stdcall SHELL32_68(long long long) SHELL32_68 - 69 stub SHELL32_69 - 70 stub SHELL32_70 - 71 stdcall SHELL32_71(ptr ptr) SHELL32_71 - 72 stdcall SHELL32_72(ptr ptr long) SHELL32_72 - 73 stub SHELL32_73 - 74 stub SHELL32_74 - 75 stub SHELL32_75 - 76 stub DragQueryPoint - 77 stdcall SHELL32_77(long long long) SHELL32_77 - 78 stub SHELL32_78 + 2 stdcall SHChangeNotifyRegister(long long long long long long) SHChangeNotifyRegister + 3 stub CheckEscapesA # exported by name + 4 stub SHChangeNotifyDeregister + 5 stub SHChangeNotifyUpdateEntryList + 6 stub CheckEscapesW # exported by name + 7 stdcall CommandLineToArgvW(wstr ptr) CommandLineToArgvW # exported by name + 8 stub Control_FillCache_RunDLL # exported by name + 9 stub PifMgr_OpenProperties + 10 stub PifMgr_GetProperties + 11 stub PifMgr_SetProperties + 12 stub Control_FillCache_RunDLLA # exported by name + 13 stub PifMgr_CloseProperties + 14 stub Control_FillCache_RunDLLW # exported by name + 15 stdcall ILGetDisplayName(ptr ptr) ILGetDisplayName + 16 stdcall ILFindLastID(ptr) ILFindLastID + 17 stub ILRemoveLastID + 18 stdcall ILClone(ptr) ILClone + 19 stub ILCloneFirst + 20 stub ILGlobalClone + 21 stub ILIsEqual + 22 stdcall Control_RunDLL(long long long long) Control_RunDLL # exported by name + 23 stub ILIsParent + 24 stub ILFindChild + 25 stdcall ILCombine(ptr ptr) ILCombine + 26 stub ILLoadFromStream + 27 stub ILSaveToStream + 28 stub SHILCreateFromPath + 29 stdcall PathIsRoot(str) PathIsRoot + 30 stdcall PathBuildRoot(ptr long) PathBuildRoot + 31 stdcall PathFindExtension(str) PathFindExtension + 32 stdcall PathAddBackslash(str) PathAddBackslash + 33 stdcall PathRemoveBlanks(str) PathRemoveBlanks + 34 stdcall PathFindFilename(str) PathFindFilename + 35 stdcall PathRemoveFileSpec(str) PathRemoveFileSpec + 36 stdcall PathAppend(str str) PathAppend + 37 stdcall PathCombine(ptr str str) PathCombine + 38 stub PathStripPath + 39 stdcall PathIsUNC(str) PathIsUNC + 40 stub PathIsRelative + 41 stub Control_RunDLLA # exported by name + 42 stub Control_RunDLLW # exported by name + 43 stub PathIsExe + 44 stub DoEnvironmentSubstA # exported by name + 45 stdcall PathFileExists(str) PathFileExists + 46 stub PathMatchSpec + 47 stub PathMakeUniqueName + 48 stub PathSetDlgItemPath + 49 stub PathQualify + 50 stub PathStripToRoot + 51 stdcall PathResolve(str long long) PathResolve + 52 stdcall PathGetArgs(str) PathGetArgs + 53 stub DoEnvironmentSubstW # exported by name + 54 stdcall DragAcceptFiles(long long) DragAcceptFiles # exported by name + 55 stub PathQuoteSpaces + 56 stdcall PathUnquoteSpaces(str) PathUnquoteSpaces + 57 stub PathGetDriveNumber + 58 stdcall ParseField(str long str long) ParseField + 59 stub RestartDialog + 60 stdcall ExitWindowsDialog(long) ExitWindowsDialog + 61 stdcall RunFileDlg(long long long str str long) RunFileDlg + 62 stdcall PickIconDlg(long long long long) PickIconDlg + 63 stdcall GetFileNameFromBrowse(long long long long str str str) GetFileNameFromBrowse + 64 stub DriveType + 65 stub InvalidateDriveType + 66 stub IsNetDrive + 67 stub Shell_MergeMenus + 68 stdcall SHGetSettings(long long long) SHGetSettings + 69 stub SHGetNetResource + 70 stub SHCreateDefClassObject + 71 stdcall Shell_GetImageList(ptr ptr) Shell_GetImageList + 72 stdcall Shell_GetCachedImageIndex(ptr ptr long) Shell_GetCachedImageIndex + 73 stub SHShellFolderView_Message + 74 stub SHCreateStdEnumFmtEtc + 75 stdcall PathYetAnotherMakeUniqueName(ptr ptr) PathYetAnotherMakeUniqueName + 76 stub DragQueryInfo + 77 stdcall SHMapPIDLToSystemImageListIndex(long long long) SHMapPIDLToSystemImageListIndex + 78 stub OleStrToStrN@16 +# 79 stub StrToOleStrN@16 79 stdcall SHELL32_79(str ptr) SHELL32_79 - 80 stub DuplicateIcon - 81 stub SHELL32_81 - 82 stdcall ExtractAssociatedIconA(long ptr long) ExtractAssociatedIcon32A - 83 stub SHELL32_83 - 84 stub SHELL32_84 - 85 stdcall SHELL32_85(long long long long) SHELL32_85 - 86 stdcall SHELL32_86(long ptr) SHELL32_86 - 87 stdcall SHELL32_87(long) SHELL32_87 - 88 stub SHELL32_88 - 89 stdcall SHELL32_89(long long long) SHELL32_89 - 90 stub SHELL32_90 - 91 stub SHELL32_91 - 92 stub SHELL32_92 - 93 stub SHELL32_93 - 94 stub SHELL32_94 - 95 stub SHELL32_95 - 96 stub SHELL32_96 - 97 stub SHELL32_97 - 98 stub SHELL32_98 - 99 stub SHELL32_99 - 100 stdcall SHELL32_100(long) SHELL32_100 - 101 stub ExtractAssociatedIconExA - 102 stdcall SHELL32_102(ptr ptr long ptr ptr) SHELL32_102 - 103 stub SHELL32_103 - 104 stub SHELL32_104 - 105 stub SHELL32_105 - 106 stub SHELL32_106 - 107 stub SHELL32_107 - 108 stub SHELL32_108 - 109 stub SHELL32_109 - 110 stub SHELL32_110 - 111 stub SHELL32_111 - 112 stub SHELL32_112 - 113 stub SHELL32_113 - 114 stub SHELL32_114 - 115 stub SHELL32_115 - 116 stub SHELL32_116 - 117 stub SHELL32_117 - 118 stub SHELL32_118 - 119 stdcall SHELL32_119(ptr) SHELL32_119 - 120 stub SHELL32_120 - 121 stub SHELL32_121 - 122 stub SHELL32_122 - 123 stub SHELL32_123 - 124 stub ExtractAssociatedIconExW - 125 stub ExtractAssociatedIconW - 126 stub SHELL32_126 - 127 stub SHELL32_127 + 80 stub DragFinish # exported by name + 81 stub DragQueryFile # exported by name + 82 stub DragQueryFileA # exported by name + 83 stub CIDLData_CreateFromIDArray + 84 stub SHIsBadInterfacePtr + 85 stdcall OpenRegStream(long long long long) OpenRegStream + 86 stdcall SHRegisterDragDrop(long ptr) SHRegisterDragDrop + 87 stdcall SHRevokeDragDrop(long) SHRevokeDragDrop + 88 stub SHDoDragDrop + 89 stdcall SHCloneSpecialIDList(long long long) SHCloneSpecialIDList + 90 stub SHFindFiles + 91 stub SHFindComputer + 92 stub PathGetShortPath + 93 stub Win32CreateDirectory + 94 stub Win32RemoveDirectory + 95 stub SHLogILFromFSIL + 96 stub StrRetToStrN + 97 stub SHWaitForFileToOpen + 98 stub SHGetRealIDL + 99 stub SetAppStartingCursor + 100 stdcall SHRestricted(long) SHRestricted + 101 stub DragQueryFileAorW # exported by name + 102 stdcall SHCoCreateInstance(ptr ptr long ptr ptr) SHCoCreateInstance + 103 stdcall SignalFileOpen(long) SignalFileOpen + 104 stub FileMenu_DeleteAllItems + 105 stub FileMenu_DrawItem + 106 stub FileMenu_FindSubMenuByPidl + 107 stub FileMenu_GetLastSelectedItemPidls + 108 stub FileMenu_HandleMenuChar + 109 stub FileMenu_InitMenuPopup + 110 stub FileMenu_InsertUsingPidl + 111 stub FileMenu_Invalidate + 112 stub FileMenu_MeasureItem + 113 stub FileMenu_ReplaceUsingPidl + 114 stub FileMenu_Create + 115 stub FileMenu_AppendItem + 116 stub FileMenu_TrackPopupMenuEx + 117 stub FileMenu_DeleteItemByCmd + 118 stub FileMenu_Destroy + 119 stdcall IsLFNDrive(ptr) IsLFNDrive + 120 stub FileMenu_AbortInitMenu + 121 stub SHFlushClipboard + 122 stub RunDLL_CallEntry16 + 123 stub SHFreeUnusedLibraries + 124 stub FileMenu_AppendFilesForPidl + 125 stub FileMenu_AddFilesForPidl + 126 stub SHOutOfMemoryMessageBox + 127 stub SHWinHelp 128 stdcall DllGetClassObject(long long ptr) SHELL32_DllGetClassObject - 129 stub SHELL32_129 - 130 stub SHELL32_130 - 131 stub SHELL32_131 - 132 stub SHELL32_132 - 133 stdcall ExtractIconA(long str long) ExtractIcon32A - 134 stub SHELL32_134 - 135 stub ExtractIconEx - 136 stub SHELL32_136 - 137 stub SHELL32_137 - 138 stub ExtractIconExA - 139 stub SHELL32_139 - 140 stub SHELL32_140 - 141 stub SHELL32_141 - 142 stub SHELL32_142 - 143 stub SHELL32_143 - 144 stub SHELL32_144 - 145 stub SHELL32_145 - 146 stub SHELL32_146 - 147 stdcall SHELL32_147(long long) SHELL32_147 - 148 stub ExtractIconResInfoA - 149 stub SHELL32_149 - 150 stub ExtractIconResInfoW - 151 stub SHELL32_151 - 152 stdcall SHELL32_152(ptr) SHELL32_152 - 153 stub SHELL32_153 - 154 stub SHELL32_154 - 155 stdcall SHELL32_155(ptr) SHELL32_155 - 156 stub SHELL32_156 - 157 stub SHELL32_157 - 158 stub SHELL32_158 - 159 stub SHELL32_159 - 160 stub SHELL32_160 - 161 stub SHELL32_161 - 162 stub SHELL32_162 - 163 stub SHELL32_163 - 164 stub SHELL32_164 - 165 stdcall SHELL32_165(long long) SHELL32_165 - 166 stub SHELL32_166 - 167 stub SHELL32_167 - 168 stub SHELL32_168 - 169 stub SHELL32_169 - 170 stub SHELL32_170 - 171 stub SHELL32_171 - 172 stub SHELL32_172 - 173 stub SHELL32_173 - 174 stub SHELL32_174 - 175 stdcall SHELL32_175(long long long long) SHELL32_175 - 176 stub SHELL32_176 - 177 stub SHELL32_177 - 178 stub SHELL32_178 - 179 stub SHELL32_179 - 180 stdcall ExtractIconW(long wstr long) ExtractIcon32W - 181 stdcall SHELL32_181(long long) SHELL32_181 - 182 stub ExtractVersionResource16W - 183 cdecl SHELL32_183(long long long long long long) SHELL32_183 - 184 stdcall SHELL32_184(long long long long long) SHELL32_184 - 185 stub SHELL32_185 - 186 stdcall FindExecutableA(ptr ptr ptr) FindExecutable32A - 187 stub FindExecutableW - 188 stdcall FreeIconList(long) FreeIconList - 189 stub InternalExtractIconListA - 190 stub InternalExtractIconListW - 191 stub OpenAs_RunDLL - 192 stub PrintersGetCommand_RunDLL - 193 stub RealShellExecuteA - 194 stub RealShellExecuteExA - 195 stdcall SHELL32_195(ptr) SHELL32_195 - 196 stdcall SHELL32_196(long) SHELL32_196 - 197 stub SHELL32_197 - 198 stub SHELL32_198 - 199 stub SHELL32_199 - 200 stub SHELL32_200 - 201 stub SHELL32_201 - 202 stub SHELL32_202 - 203 stub RealShellExecuteExW - 204 stub RealShellExecuteW - 205 stub RegenerateUserEnvironment - 206 stub SHAddToRecentDocs - 207 stdcall SHAppBarMessage(long ptr) SHAppBarMessage32 - 208 stub SHBrowseForFolder - 209 stdcall SHBrowseForFolderA(ptr) SHBrowseForFolder32A - 210 stub SHChangeNotify - 211 stub SHFileOperation - 212 stub SHFileOperationA - 213 stub SHFormatDrive - 214 stub SHFreeNameMappings - 215 stub SHGetDataFromIDListA - 216 stdcall SHGetDesktopFolder(ptr) SHGetDesktopFolder - 217 stdcall SHGetFileInfo(ptr long ptr long long) SHGetFileInfo32A - 218 stdcall SHGetFileInfoA(ptr long ptr long long) SHGetFileInfo32A - 219 stub SHGetInstanceExplorer - 220 stdcall SHGetMalloc(ptr) SHGetMalloc - 221 stdcall SHGetPathFromIDList(ptr ptr) SHGetPathFromIDList - 222 stub SHGetPathFromIDListA - 223 stdcall SHGetSpecialFolderLocation(long long ptr) SHGetSpecialFolderLocation - 224 stdcall SHHelpShortcuts_RunDLL(long long long long) SHHelpShortcuts_RunDLL - 225 stub SHLoadInProc - 226 stub SheChangeDirA - 227 stub SheChangeDirExA - 228 stub SheChangeDirExW - 229 stub SheChangeDirW - 230 stub SheConvertPathW - 231 stub SheFullPathA - 232 stub SheFullPathW - 233 stub SheGetCurDrive - 234 stub SheGetDirA - 235 stub SheGetDirExW - 236 stub SheGetDirW - 237 stub SheGetPathOffsetW - 238 stub SheRemoveQuotesA - 239 stub SheRemoveQuotesW - 240 stub SheSetCurDrive - 241 stub SheShortenPathA - 242 stub SheShortenPathW - 243 stdcall ShellAboutA(long str str long) ShellAbout32A - 244 stdcall ShellAboutW(long wstr wstr long) ShellAbout32W - 245 stdcall ShellExecuteA(long str str str str long) ShellExecute32A - 246 stub ShellExecuteEx - 247 stub ShellExecuteExA - 248 stub ShellExecuteW - 249 stdcall Shell_NotifyIcon(long ptr) Shell_NotifyIcon - 250 stdcall Shell_NotifyIconA(long ptr) Shell_NotifyIconA - 251 stub Shl1632_ThunkData32 - 252 stub Shl3216_ThunkData32 - 505 stub SHELL32_505 - 507 stub SHELL32_507 - 510 stub SHELL32_510 - 511 stub SHELL32_511 -1025 stub ExtractIconExW # proper ordinal unknown -1030 stub FindExeDlgProc # proper ordinal unknown -1043 stub RegisterShellHook # proper ordinal unknown -1048 stub SHBrowseForFolderW # proper ordinal unknown -1052 stub SHFileOperationW # proper ordinal unknown -1058 stub SHGetFileInfoW # proper ordinal unknown -1063 stub SHGetPathFromIDListW # proper ordinal unknown -1089 stub ShellExecuteExW # proper ordinal unknown -1091 stub ShellHookProc # proper ordinal unknown -1094 stub Shell_NotifyIconW # proper ordinal unknown -1095 stub StrChrA # proper ordinal unknown -1096 stub StrChrIA # proper ordinal unknown -1097 stub StrChrIW # proper ordinal unknown -1098 stub StrChrW # proper ordinal unknown -1099 stub StrCmpNA # proper ordinal unknown -1100 stub StrCmpNIA # proper ordinal unknown -1101 stub StrCmpNIW # proper ordinal unknown -1102 stub StrCmpNW # proper ordinal unknown -1103 stub StrCpyNA # proper ordinal unknown -1104 stub StrCpyNW # proper ordinal unknown -1105 stub StrNCmpA # proper ordinal unknown -1106 stub StrNCmpIA # proper ordinal unknown -1107 stub StrNCmpIW # proper ordinal unknown -1108 stub StrNCmpW # proper ordinal unknown -1109 stub StrNCpyA # proper ordinal unknown -1110 stub StrNCpyW # proper ordinal unknown -1111 stub StrRChrA # proper ordinal unknown -1112 stub StrRChrIA # proper ordinal unknown -1113 stub StrRChrIW # proper ordinal unknown -1114 stub StrRChrW # proper ordinal unknown -1115 stub StrRStrA # proper ordinal unknown -1116 stub StrRStrIA # proper ordinal unknown -1117 stub StrRStrIW # proper ordinal unknown -1118 stub StrRStrW # proper ordinal unknown -1119 stub StrStrA # proper ordinal unknown -1120 stub StrStrIA # proper ordinal unknown -1121 stub StrStrIW # proper ordinal unknown -1122 stub StrStrW # proper ordinal unknown -1123 stub WOWShellExecute # proper ordinal unknown + 129 stub DAD_AutoScroll + 130 stub DAD_DragEnter + 131 stub DAD_DragEnterEx + 132 stub DAD_DragLeave + 133 stub DragQueryFileW # exported by name + 134 stub DAD_DragMove + 135 stub DragQueryPoint # exported by name + 136 stub DAD_SetDragImage + 137 stub DAD_ShowDragImage + 138 stub DuplicateIcon # exported by name + 139 stub Desktop_UpdateBriefcaseOnEvent + 140 stub FileMenu_DeleteItemByIndex + 141 stub FileMenu_DeleteItemByFirstID + 142 stub FileMenu_DeleteSeparator + 143 stub FileMenu_EnableItemByCmd + 144 stub FileMenu_GetItemExtent + 145 stub PathFindOnPath + 146 stub RLBuildListOfPaths + 147 stdcall SHCLSIDFromString(long long) SHCLSIDFromString + 148 stdcall ExtractAssociatedIconA(long ptr long) ExtractAssociatedIcon32A # exported by name + 149 stub SHFind_InitMenuPopup + 150 stub ExtractAssociatedIconExA # exported by name + 151 stub SHLoadOLE + 152 stdcall ILGetSize(ptr) ILGetSize + 153 stub ILGetNext + 154 stub ILAppend + 155 stdcall ILFree(ptr) ILFree + 156 stub ILGlobalFree + 157 stub ILCreateFromPath + 158 stdcall PathGetExtension(str long long) PathGetExtension + 159 stub PathIsDirectory + 160 stub SHNetConnectionDialog + 161 stub SHRunConrolPanel + 162 stub SHSimpleIDListFromPath + 163 stub StrToOleStr + 164 stub Win32DeleteFile + 165 stdcall SHCreateDirectory(long long) SHCreateDirectory + 166 stub CallCPLEntry16 + 167 stub SHAddFromPropSheetExtArray + 168 stub SHCreatePropSheetExtArray + 169 stub SHDestroyPropSheetExtArray + 170 stub SHReplaceFromPropSheetExtArray + 171 stub PathCleanupSpec + 172 stub SHCreateLinks + 173 stub SHValidateUNC + 174 stub SHCreateShellFolderViewEx + 175 stdcall SHGetSpecialFolderPath(long long long long) SHGetSpecialFolderPath + 176 stub SHSetInstanceExplorer + 177 stub DAD_SetDragImageFromListView + 178 stub SHObjectProperties + 179 stub SHGetNewLinkInfoA + 180 stub SHGetNewLinkInfoW + 181 stdcall RegisterShellHook(long long) RegisterShellHook32 + 182 stub ShellMessageBoxW + 183 cdecl ShellMessageBoxA(long long long long long long) ShellMessageBoxA + 184 stdcall ArrangeWindows(long long long long long) ArrangeWindows + 185 stub SHHandleDiskFull + 186 stub ExtractAssociatedIconExW # exported by name + 187 stub ExtractAssociatedIconW # exported by name + 188 stdcall ExtractIconA(long str long) ExtractIcon32A # exported by name + 189 stub ExtractIconEx # exported by name + 190 stub ExtractIconExA # exported by name + 191 stub ExtractIconExW # exported by name + 192 stub ExtractIconResInfoA # exported by name + 193 stub ExtractIconResInfoW # exported by name + 194 stdcall ExtractIconW(long wstr long) ExtractIcon32W # exported by name + 195 stdcall SHFree(ptr) SHFree + 196 stdcall SHAlloc(long) SHAlloc + 197 stub SHGlobalDefect + 198 stub SHAbortInvokeCommand + 199 stub SHGetFileIcon + 200 stub SHLocalAlloc + 201 stub SHLocalFree + 202 stub SHLocalReAlloc + 203 stub AddCommasW + 204 stub ShortSizeFormatW + 205 stub Printer_LoadIconsW + 206 stub Link_AddExtraDataSection + 207 stub Link_ReadExtraDataSection + 208 stub Link_RemoveExtraDataSection + 209 stub Int64ToString + 210 stub LargeIntegerToString + 211 stub Printers_GetPidl + 212 stub Printer_AddPrinterPropPages + 213 stub Printers_RegisterWindowW + 214 stub Printers_UnregisterWindow + 215 stub SHStartNetConnectionDialog@12 + 216 stub ExtractVersionResource16W # exported by name + 217 stub FindExeDlgProc # exported by name + 218 stdcall FindExecutableA(ptr ptr ptr) FindExecutable32A # exported by name + 219 stub FindExecutableW # exported by name + 220 stdcall FreeIconList(long) FreeIconList # exported by name + 221 stub InternalExtractIconListA # exported by name + 222 stub InternalExtractIconListW # exported by name + 223 stub OpenAs_RunDLL # exported by name + 224 stub OpenAs_RunDLLA # exported by name + 225 stub OpenAs_RunDLLW # exported by name + 226 stub PrintersGetCommand_RunDLL # exported by name + 227 stub PrintersGetCommand_RunDLLA # exported by name + 228 stub PrintersGetCommand_RunDLLW # exported by name + 229 stub RealShellExecuteA # exported by name + 230 stub RealShellExecuteExA # exported by name + 231 stub RealShellExecuteExW # exported by name + 232 stub RealShellExecuteW # exported by name + 233 stub RegenerateUserEnvironment@8 # exported by name + 234 stub SHAddToRecentDocs@8 # exported by name + 235 stdcall SHAppBarMessage(long ptr) SHAppBarMessage32 # exported by name + 236 stub SHBrowseForFolder@4 # exported by name + 237 stdcall SHBrowseForFolderA(ptr) SHBrowseForFolder32A # exported by name + 238 stub SHBrowseForFolderW@4 # exported by name + 239 stub SHChangeNotify@16 # exported by name + 240 stub SHEmptyRecycleBinA@12 # exported by name + 241 stub SHEmptyRecycleBinW@12 # exported by name + 242 stub SHFileOperation@4 # exported by name + 243 stub SHFileOperationA@4 # exported by name + 244 stub SHFileOperationW@4 # exported by name + 245 stub SHFormatDrive@16 # exported by name + 246 stub SHFreeNameMappings@4 # exported by name + 247 stub SHGetDataFromIDListA@20 # exported by name + 248 stub SHGetDataFromIDListW@20 # exported by name + 249 stub PathParseIconLocation@4 + 250 stub PathRemoveExtension@4 + 251 stub PathRemoveArgs@5 + 252 stdcall SHGetDesktopFolder(ptr) SHGetDesktopFolder # exported by name + 253 stdcall SHGetFileInfo(ptr long ptr long long) SHGetFileInfo32A # exported by name + 254 stdcall SHGetFileInfoA(ptr long ptr long long) SHGetFileInfo32A # exported by name + 255 stub SHGetFileInfoW@20 # exported by name + 256 stub SHGetInstanceExplorer # exported by name + 257 stdcall SHGetMalloc(ptr) SHGetMalloc # exported by name + 258 stub SHGetNewLinkInfo@20 # exported by name + 259 stdcall SHGetPathFromIDList(ptr ptr) SHGetPathFromIDList # exported by name + 260 stub SHGetPathFromIDList@8 # exported by name + 261 stub SHGetPathFromIDListA@8 # exported by name + 262 stub SHGetPathFromIDListW@8 # exported by name + 263 stdcall SHGetSpecialFolderLocation(long long ptr) SHGetSpecialFolderLocation # exported by name + 264 stdcall SHHelpShortcuts_RunDLL(long long long long) SHHelpShortcuts_RunDLL # exported by name + 265 stub SHHelpShortcuts_RunDLLA@16 # exported by name + 266 stub SHHelpShortcuts_RunDLLW@16 # exported by name + 267 stdcall SHLoadInProc(long) SHLoadInProc # exported by name + 268 stub SHQueryRecycleBinA@8 # exported by name + 269 stub SHQueryRecycleBinW@8 # exported by name + 270 stub SHUpdateRecycleBinIcon@0 # exported by name + + 271 stub SheChangeDirA + 272 stub SheChangeDirExA + 273 stub SheChangeDirExW + 274 stub SheChangeDirW + 275 stub SheConvertPathW + 276 stub SheFullPathA + 277 stub SheFullPathW + 278 stub SheGetCurDrive + 279 stub SheGetDirA + 280 stub SheGetDirExW + 281 stub SheGetDirW + 282 stub SheGetPathOffsetW + 283 stub SheRemoveQuotesA + 284 stub SheRemoveQuotesW + 285 stub SheSetCurDrive + 286 stub SheShortenPathA + 287 stub SheShortenPathW + 288 stdcall ShellAboutA(long str str long) ShellAbout32A + 289 stdcall ShellAboutW(long wstr wstr long) ShellAbout32W + 290 stdcall ShellExecuteA(long str str str str long) ShellExecute32A + 291 stub ShellExecuteEx + 292 stub ShellExecuteExA + 293 stub ShellExecuteExW + 294 stub ShellExecuteW + 295 stub ShellHookProc # exported by name + 296 stdcall Shell_NotifyIcon(long ptr) Shell_NotifyIcon + 297 stdcall Shell_NotifyIconA(long ptr) Shell_NotifyIconA + 298 stub Shell_NotifyIconW # exported by name + 299 stub Shl1632_ThunkData32 + 300 stub Shl3216_ThunkData32 + 301 stub StrChrA # proper ordinal unknown + 302 stub StrChrIA # proper ordinal unknown + 303 stub StrChrIW # proper ordinal unknown + 304 stub StrChrW # proper ordinal unknown + 305 stub StrCmpNA # proper ordinal unknown + 306 stub StrCmpNIA # proper ordinal unknown + 307 stub StrCmpNIW # proper ordinal unknown + 308 stub StrCmpNW # proper ordinal unknown + 309 stub StrCpyNA # proper ordinal unknown + 310 stub StrCpyNW # proper ordinal unknown + 311 stub StrNCmpA # proper ordinal unknown + 312 stub StrNCmpIA # proper ordinal unknown + 313 stub StrNCmpIW # proper ordinal unknown + 314 stub StrNCmpW # proper ordinal unknown + 315 stub StrNCpyA # proper ordinal unknown + 316 stub StrNCpyW # proper ordinal unknown + 317 stub StrRChrA # proper ordinal unknown + 318 stub StrRChrIA # proper ordinal unknown + 319 stub StrRChrIW # proper ordinal unknown + 320 stub StrRChrW # proper ordinal unknown + 321 stub StrRStrA # proper ordinal unknown + 322 stub StrRStrIA # proper ordinal unknown + 323 stub StrRStrIW # proper ordinal unknown + 324 stub StrRStrW # proper ordinal unknown + 325 stub StrStrA # proper ordinal unknown + 326 stub StrStrIA # proper ordinal unknown + 327 stub StrStrIW # proper ordinal unknown + 328 stub StrStrW # proper ordinal unknown + 329 stub WOWShellExecute # proper ordinal unknown + + 505 stub SHRegCloseKey@4 + 506 stub SHRegOpenKeyA@12 + 507 stub SHRegOpenKeyW@12 + 508 stub SHRegQueryValueA@16 + 509 stub SHRegQueryValueExA@24 + 510 stub SHRegQueryValueW@16 + 511 stub SHRegQueryValueExW@24 + 512 stub SHRegDeleteKeyW@8 + + 520 stub SHAllocShared@12 + 521 stub SHLockShared@8 + 522 stub SHUnlockShared@4 + 523 stub SHFreeShared@8 + 524 stub RealDriveType@8 + 525 stub RealDriveTypeFlags@8 + + 640 stub NTSHChangeNotifyRegister@24 + 641 stub NTSHChangeNotifyDeregister@4 + + 643 stub SHChangeNotifyReceive@16 + 644 stub SHChangeNotification_Lock@16 + 645 stub SHChangeNotification_Unlock@4 + 646 stub SHChangeRegistrationReceive@8 + 647 stub ReceiveAddToRecentDocs + 648 stub SHWaitOp_Operate@8 + + 650 stub PathIsSameRoot + 651 stub ReadCabinetState + 652 stub WriteCabinetState@4 + 653 stub PathProcessCommand + + 660 stub FileIconInit + + 680 stub IsUserAdmin + +1217 stub FOOBAR1217 # no joke! This is the real name!! diff --git a/relay32/winmm.spec b/relay32/winmm.spec index fc210e67c3d..2ebbdd7ac7c 100644 --- a/relay32/winmm.spec +++ b/relay32/winmm.spec @@ -51,7 +51,7 @@ type win32 48 stub mciLoadCommandResource 49 stdcall mciSendCommandA(long long long long) mciSendCommand32A 50 stub mciSendCommandW - 51 stdcall mciSendStringA(ptr ptr long long) mciSendString + 51 stdcall mciSendStringA(str ptr long long) mciSendString 52 stub mciSendStringW 53 stub mciSetDriverData 54 stub mciSetYieldProc diff --git a/relay32/wsock32.spec b/relay32/wsock32.spec index de18bcec019..b1b49f59f57 100644 --- a/relay32/wsock32.spec +++ b/relay32/wsock32.spec @@ -10,7 +10,7 @@ type win32 007 stdcall getsockopt(long long long ptr ptr) WINSOCK_getsockopt32 008 stdcall htonl(long) WINSOCK_htonl 009 stdcall htons(long) WINSOCK_htons -010 stdcall inet_addr(ptr) WINSOCK_inet_addr +010 stdcall inet_addr(str) WINSOCK_inet_addr 011 stdcall inet_ntoa(ptr) WINSOCK_inet_ntoa32 012 stdcall ioctlsocket(long long ptr) WINSOCK_ioctlsocket32 013 stdcall listen(long long) WINSOCK_listen32 diff --git a/scheduler/Makefile.in b/scheduler/Makefile.in index c0b0a2e9a9b..c273db6e253 100644 --- a/scheduler/Makefile.in +++ b/scheduler/Makefile.in @@ -6,6 +6,7 @@ VPATH = @srcdir@ MODULE = scheduler C_SRCS = \ + client.c \ critsection.c \ event.c \ handle.c \ diff --git a/scheduler/client.c b/scheduler/client.c new file mode 100644 index 00000000000..c7910b37f8e --- /dev/null +++ b/scheduler/client.c @@ -0,0 +1,308 @@ +/* + * Client part of the client/server communication + * + * Copyright (C) 1998 Alexandre Julliard + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "process.h" +#include "thread.h" +#include "server.h" +#include "winerror.h" + + +/*********************************************************************** + * CLIENT_SendRequest_v + * + * Send a request to the server. + */ +static void CLIENT_SendRequest_v( enum request req, int pass_fd, + struct iovec *vec, int veclen ) +{ + THDB *thdb = THREAD_Current(); + struct { struct cmsghdr hdr; int fd; } cmsg = + { { sizeof(cmsg), SOL_SOCKET, SCM_RIGHTS }, pass_fd }; + struct msghdr msghdr; + struct header head; + int i, ret, len; + + msghdr.msg_name = NULL; + msghdr.msg_namelen = 0; + + assert( veclen > 0 ); + + vec[0].iov_base = &head; + vec[0].iov_len = sizeof(head); + msghdr.msg_iov = vec; + msghdr.msg_iovlen = veclen; + for (i = len = 0; i < veclen; i++) len += vec[i].iov_len; + + assert( len <= MAX_MSG_LENGTH ); + head.type = req; + head.len = len; + head.seq = thdb->seq++; + + if (pass_fd == -1) /* no fd to pass */ + { + msghdr.msg_control = NULL; + msghdr.msg_controllen = 0; + } + else + { + msghdr.msg_control = &cmsg; + msghdr.msg_controllen = sizeof(cmsg); + } + + if ((ret = sendmsg( thdb->socket, &msghdr, 0 )) < len) + { + fprintf( stderr, "Fatal protocol error: " ); + if (ret == -1) perror( "sendmsg" ); + else fprintf( stderr, "partial msg sent %d/%d\n", ret, len ); + ExitThread(1); + } + /* we passed the fd now we can close it */ + if (pass_fd != -1) close( pass_fd ); +} + + +/*********************************************************************** + * CLIENT_SendRequest + * + * Send a request to the server. + */ +static void CLIENT_SendRequest( enum request req, int pass_fd, + int n, ... /* arg_1, len_1, etc. */ ) +{ + struct iovec vec[16]; + va_list args; + int i; + + n++; /* for vec[0] */ + assert( n < 16 ); + va_start( args, n ); + for (i = 1; i < n; i++) + { + vec[i].iov_base = va_arg( args, void * ); + vec[i].iov_len = va_arg( args, int ); + } + va_end( args ); + return CLIENT_SendRequest_v( req, pass_fd, vec, n ); +} + + +/*********************************************************************** + * CLIENT_WaitReply_v + * + * Wait for a reply from the server. + * Returns the error code (or 0 if OK). + */ +static unsigned int CLIENT_WaitReply_v( int *len, int *passed_fd, + struct iovec *vec, int veclen ) +{ + THDB *thdb = THREAD_Current(); + struct { struct cmsghdr hdr; int fd; } cmsg = + { { sizeof(cmsg), SOL_SOCKET, SCM_RIGHTS }, -1 }; + struct msghdr msghdr; + struct header head; + int ret, remaining; + + assert( veclen > 0 ); + vec[0].iov_base = &head; + vec[0].iov_len = sizeof(head); + msghdr.msg_name = NULL; + msghdr.msg_namelen = 0; + msghdr.msg_iov = vec; + msghdr.msg_iovlen = veclen; + msghdr.msg_control = &cmsg; + msghdr.msg_controllen = sizeof(cmsg); + + if ((ret = recvmsg( thdb->socket, &msghdr, 0 )) == -1) + { + fprintf( stderr, "Fatal protocol error: " ); + perror("recvmsg"); + ExitThread(1); + } + if (ret < sizeof(head)) + { + fprintf( stderr, + "Fatal protocol error: partial header received %d/%d\n", + ret, sizeof(head)); + ExitThread(1); + } + if ((head.len < sizeof(head)) || (head.len > MAX_MSG_LENGTH)) + { + fprintf( stderr, "Fatal protocol error: header length %d\n", + head.len ); + ExitThread(1); + } + if (head.seq != thdb->seq++) + { + fprintf( stderr, + "Fatal protocol error: sequence %08x instead of %08x\n", + head.seq, thdb->seq - 1 ); + ExitThread(1); + } + + if (head.type != ERROR_SUCCESS) + { + SetLastError( head.type ); + } + else if (passed_fd) + { + *passed_fd = cmsg.fd; + cmsg.fd = -1; + } + + if (len) *len = ret - sizeof(head); + if (cmsg.fd != -1) close( cmsg.fd ); + remaining = head.len - ret; + while (remaining > 0) /* drop remaining data */ + { + char buffer[1024]; + int len = remaining < sizeof(buffer) ? remaining : sizeof(buffer); + if ((len = recv( thdb->socket, buffer, len, 0 )) == -1) + { + fprintf( stderr, "Fatal protocol error: " ); + perror( "recv" ); + ExitThread(1); + } + remaining -= len; + } + + return head.type; /* error code */ +} + + +/*********************************************************************** + * CLIENT_WaitReply + * + * Wait for a reply from the server. + */ +static unsigned int CLIENT_WaitReply( int *len, int *passed_fd, + int n, ... /* arg_1, len_1, etc. */ ) +{ + struct iovec vec[16]; + va_list args; + int i; + + n++; /* for vec[0] */ + assert( n < 16 ); + va_start( args, n ); + for (i = 1; i < n; i++) + { + vec[i].iov_base = va_arg( args, void * ); + vec[i].iov_len = va_arg( args, int ); + } + va_end( args ); + return CLIENT_WaitReply_v( len, passed_fd, vec, n ); +} + + +/*********************************************************************** + * send_new_thread + * + * Send a new thread request. Helper function for CLIENT_NewThread. + */ +static int send_new_thread( THDB *thdb ) +{ + struct new_thread_request request; + struct new_thread_reply reply; + int len, fd[2]; + + if (socketpair( AF_UNIX, SOCK_STREAM, PF_UNIX, fd ) == -1) + { + SetLastError( ERROR_TOO_MANY_OPEN_FILES ); /* FIXME */ + return -1; + } + + request.pid = thdb->process->server_pid; + CLIENT_SendRequest( REQ_NEW_THREAD, fd[1], 1, &request, sizeof(request) ); + + if (CLIENT_WaitReply( &len, NULL, 1, &reply, sizeof(reply) )) goto error; + if (len < sizeof(reply)) goto error; + thdb->server_tid = reply.tid; + thdb->process->server_pid = reply.pid; + if (thdb->socket != -1) close( thdb->socket ); + thdb->socket = fd[0]; + thdb->seq = 0; /* reset the sequence number for the new fd */ + return 0; + + error: + close( fd[0] ); + return -1; +} + + +/*********************************************************************** + * CLIENT_NewThread + * + * Send a new thread request. + */ +int CLIENT_NewThread( THDB *thdb ) +{ + extern BOOL32 THREAD_InitDone; + + if (!THREAD_InitDone) /* first thread -> start the server */ + { + int tmpfd[2]; + char buffer[16]; + + if (socketpair( AF_UNIX, SOCK_STREAM, PF_UNIX, tmpfd ) == -1) + { + perror("socketpair"); + exit(1); + } + switch(fork()) + { + case -1: /* error */ + perror("fork"); + exit(1); + case 0: /* child */ + close( tmpfd[0] ); + sprintf( buffer, "%d", tmpfd[1] ); +#ifdef EXEC_SERVER + execlp( "wineserver", "wineserver", buffer, NULL ); + execl( "/usr/local/bin/wineserver", "wineserver", buffer, NULL ); + execl( "./server/wineserver", "wineserver", buffer, NULL ); +#endif + server_main_loop( tmpfd[1] ); + exit(0); + default: /* parent */ + close( tmpfd[1] ); + SET_CUR_THREAD( thdb ); + THREAD_InitDone = TRUE; + thdb->socket = tmpfd[0]; + break; + } + } + + return send_new_thread( thdb ); +} + + +/*********************************************************************** + * CLIENT_InitThread + * + * Send an init thread request. Return 0 if OK. + */ +int CLIENT_InitThread(void) +{ + THDB *thdb = THREAD_Current(); + struct init_thread_request init; + int len = strlen( thdb->process->env_db->cmd_line ); + + init.pid = getpid(); + len = MIN( len, MAX_MSG_LENGTH - sizeof(init) ); + + CLIENT_SendRequest( REQ_INIT_THREAD, -1, 2, + &init, sizeof(init), + thdb->process->env_db->cmd_line, len ); + return CLIENT_WaitReply( NULL, NULL, NULL, 0 ); +} diff --git a/scheduler/k32obj.c b/scheduler/k32obj.c index 3b91ab53098..989d3198938 100644 --- a/scheduler/k32obj.c +++ b/scheduler/k32obj.c @@ -146,7 +146,8 @@ BOOL32 K32OBJ_AddName( K32OBJ *obj, LPCSTR name ) return FALSE; } entry->next = K32OBJ_FirstEntry; - entry->obj = obj; + entry->obj = obj; + entry->len = len; lstrcpy32A( entry->name, name ); K32OBJ_FirstEntry = entry; SYSTEM_UNLOCK(); diff --git a/scheduler/process.c b/scheduler/process.c index 3ebc69bf1d9..c213d2a59fd 100644 --- a/scheduler/process.c +++ b/scheduler/process.c @@ -19,6 +19,7 @@ #include "winerror.h" #include "pe_image.h" #include "task.h" +#include "server.h" #include "debug.h" /* Process self-handle */ @@ -112,6 +113,10 @@ static BOOL32 PROCESS_BuildEnvDB( PDB32 *pdb ) FILE_SetFileType( pdb->env_db->hStdout, FILE_TYPE_CHAR ); FILE_SetFileType( pdb->env_db->hStderr, FILE_TYPE_CHAR ); + /* Build the command-line */ + + pdb->env_db->cmd_line = HEAP_strdupA( SystemHeap, 0, "kernel32" ); + /* Build the environment strings */ return ENV_BuildEnvironment( pdb ); @@ -210,7 +215,6 @@ error: */ BOOL32 PROCESS_Init(void) { - extern BOOL32 THREAD_InitDone; PDB32 *pdb; THDB *thdb; @@ -225,12 +229,13 @@ BOOL32 PROCESS_Init(void) if (!(pdb = PROCESS_CreatePDB( NULL ))) return FALSE; if (!(thdb = THREAD_Create( pdb, 0, FALSE, NULL, NULL ))) return FALSE; thdb->unix_pid = getpid(); - SET_CUR_THREAD( thdb ); - THREAD_InitDone = TRUE; /* Create the environment DB of the first process */ if (!PROCESS_BuildEnvDB( pdb )) return FALSE; + /* Initialize the first thread */ + if (CLIENT_InitThread()) return FALSE; + return TRUE; } diff --git a/scheduler/sysdeps.c b/scheduler/sysdeps.c index d76988aab84..390c68c4584 100644 --- a/scheduler/sysdeps.c +++ b/scheduler/sysdeps.c @@ -15,6 +15,7 @@ static int *ph_errno = &h_errno; #include #include #include "thread.h" +#include "server.h" #include "winbase.h" #include "debug.h" @@ -82,6 +83,7 @@ static void SYSDEPS_StartThread( THDB *thdb ) LPTHREAD_START_ROUTINE func = (LPTHREAD_START_ROUTINE)thdb->entry_point; thdb->unix_pid = getpid(); SET_FS( thdb->teb_sel ); + CLIENT_InitThread(); ExitThread( func( thdb->entry_arg ) ); } #endif /* __linux__ */ @@ -99,6 +101,8 @@ int SYSDEPS_SpawnThread( THDB *thread ) if (clone( (int (*)(void *))SYSDEPS_StartThread, thread->teb.stack_top, CLONE_VM | CLONE_FS | CLONE_FILES | SIGCHLD, thread ) < 0) return -1; + /* FIXME: close the child socket in the parent process */ +/* close( thread->socket );*/ #else FIXME(thread, "CreateThread: stub\n" ); #endif /* __linux__ */ diff --git a/scheduler/thread.c b/scheduler/thread.c index 1137d35c6ee..e881e05dce5 100644 --- a/scheduler/thread.c +++ b/scheduler/thread.c @@ -14,6 +14,7 @@ #include "selectors.h" #include "miscemu.h" #include "winnt.h" +#include "server.h" #include "debug.h" #ifndef __i386__ @@ -152,6 +153,7 @@ THDB *THREAD_Create( PDB32 *pdb, DWORD stack_size, BOOL32 alloc_stack16, thdb->exit_code = 0x103; /* STILL_ACTIVE */ thdb->entry_point = start_addr; thdb->entry_arg = param; + thdb->socket = -1; /* Allocate the stack */ @@ -199,6 +201,10 @@ THDB *THREAD_Create( PDB32 *pdb, DWORD stack_size, BOOL32 alloc_stack16, if (!(thdb->event = EVENT_Create( TRUE, FALSE ))) goto error; + /* Create the thread socket */ + + if (CLIENT_NewThread( thdb )) goto error; + /* Initialize the thread context */ GET_CS(cs); @@ -216,6 +222,7 @@ THDB *THREAD_Create( PDB32 *pdb, DWORD stack_size, BOOL32 alloc_stack16, return thdb; error: + if (thdb->socket != -1) close( thdb->socket ); if (thdb->event) K32OBJ_DecCount( thdb->event ); if (thdb->teb.stack_sel) SELECTOR_FreeBlock( thdb->teb.stack_sel, 1 ); if (thdb->teb_sel) SELECTOR_FreeBlock( thdb->teb_sel, 1 ); @@ -299,6 +306,7 @@ static void THREAD_Destroy( K32OBJ *ptr ) } } #endif + close( thdb->socket ); K32OBJ_DecCount( thdb->event ); SELECTOR_FreeBlock( thdb->teb_sel, 1 ); if (thdb->teb.stack_sel) SELECTOR_FreeBlock( thdb->teb.stack_sel, 1 ); @@ -314,7 +322,7 @@ HANDLE32 WINAPI CreateThread( SECURITY_ATTRIBUTES *sa, DWORD stack, LPTHREAD_START_ROUTINE start, LPVOID param, DWORD flags, LPDWORD id ) { - HANDLE32 handle; + HANDLE32 handle = INVALID_HANDLE_VALUE32; BOOL32 inherit = (sa && (sa->nLength>=sizeof(*sa)) && sa->bInheritHandle); THDB *thread = THREAD_Create( PROCESS_Current(), stack, @@ -328,6 +336,7 @@ HANDLE32 WINAPI CreateThread( SECURITY_ATTRIBUTES *sa, DWORD stack, return handle; error: + if (handle != INVALID_HANDLE_VALUE32) CloseHandle( handle ); K32OBJ_DecCount( &thread->header ); return INVALID_HANDLE_VALUE32; } diff --git a/server/Makefile.in b/server/Makefile.in new file mode 100644 index 00000000000..1881c52ff45 --- /dev/null +++ b/server/Makefile.in @@ -0,0 +1,26 @@ +DEFS = @DLLFLAGS@ -D__WINE__ -D__WINE_SERVER__ +TOPSRCDIR = @top_srcdir@ +TOPOBJDIR = .. +SRCDIR = @srcdir@ +VPATH = @srcdir@ +MODULE = server + +C_SRCS = \ + object.c \ + process.c \ + socket.c \ + thread.c + +EXTRA_SRCS = main.c +MAIN_OBJS = main.o + +PROGRAMS = wineserver + +all: $(MODULE).o $(PROGRAMS) + +@MAKE_RULES@ + +wineserver: $(OBJS) $(MAIN_OBJS) + gcc -o $(PROGRAMS) $(OBJS) $(MAIN_OBJS) + +### Dependencies: diff --git a/server/main.c b/server/main.c new file mode 100644 index 00000000000..a596a76f607 --- /dev/null +++ b/server/main.c @@ -0,0 +1,33 @@ +/* + * Server main function + * + * Copyright (C) 1998 Alexandre Julliard + */ + +#include +#include +#include +#include +#include + +#include "server.h" + +int main( int argc, char *argv[] ) +{ + int fd; + + if (argc != 2) goto error; + if (!isdigit( *argv[1] )) goto error; + fd = atoi( argv[1] ); + /* make sure the fd is valid */ + if (fcntl( fd, F_GETFL, 0 ) == -1) goto error; + + fprintf( stderr, "Server: starting (pid=%d)\n", getpid() ); + server_main_loop( fd ); + fprintf( stderr, "Server: exiting (pid=%d)\n", getpid() ); + exit(0); + + error: + fprintf( stderr, "%s: must be run from Wine.\n", argv[0] ); + exit(1); +} diff --git a/server/object.c b/server/object.c new file mode 100644 index 00000000000..3724761f1bc --- /dev/null +++ b/server/object.c @@ -0,0 +1,94 @@ +/* + * Server-side objects + * These are the server equivalent of K32OBJ + * + * Copyright (C) 1998 Alexandre Julliard + */ + +#include +#include +#include + +#include "server.h" +#include "object.h" + +struct object_name +{ + struct object_name *next; + struct object *obj; + int len; + char name[1]; +}; + +#define NAME_HASH_SIZE 37 + +static struct object_name *names[NAME_HASH_SIZE]; + +/*****************************************************************/ + +static int get_name_hash( const char *name ) +{ + int hash = 0; + while (*name) hash ^= *name++; + return hash % NAME_HASH_SIZE; +} + +static struct object_name *add_name( struct object *obj, const char *name ) +{ + struct object_name *ptr; + int hash = get_name_hash( name ); + int len = strlen( name ); + + if (!(ptr = (struct object_name *)malloc( sizeof(*ptr) + len ))) + return NULL; + ptr->next = names[hash]; + ptr->obj = obj; + ptr->len = len; + strcpy( ptr->name, name ); + names[hash] = ptr; + return ptr; +} + +static void free_name( struct object *obj ) +{ + int hash = get_name_hash( obj->name->name ); + struct object_name **pptr = &names[hash]; + while (*pptr && *pptr != obj->name) pptr = &(*pptr)->next; + assert( *pptr ); + *pptr = (*pptr)->next; + free( obj->name ); +} + +/* initialize an already allocated object */ +void init_object( struct object *obj, const struct object_ops *ops, + const char *name ) +{ + obj->refcount = 1; + obj->ops = ops; + if (!name) obj->name = NULL; + else obj->name = add_name( obj, name ); +} + +/* release an object (i.e. decrement its refcount */ +void release_object( void *ptr ) +{ + struct object *obj = (struct object *)ptr; + assert( obj->refcount ); + if (!--obj->refcount) + { + if (obj->name) free_name( obj ); + obj->ops->destroy( obj ); + } +} + +/* find an object by its name; the refcount is incremented */ +struct object *find_object( const char *name ) +{ + int hash = get_name_hash( name ); + struct object_name *ptr = names[hash]; + while (ptr && strcmp( ptr->name, name )) ptr = ptr->next; + if (!ptr) return NULL; + ptr->obj->refcount++; + return ptr->obj; +} + diff --git a/server/object.h b/server/object.h new file mode 100644 index 00000000000..c9f6abe91d3 --- /dev/null +++ b/server/object.h @@ -0,0 +1,55 @@ +/* + * Wine server objects + * + * Copyright (C) 1998 Alexandre Julliard + */ + +#ifndef __WINE_OBJECT_H +#define __WINE_OBJECT_H + +#include + +struct object; +struct object_name; + +struct object_ops +{ + void (*destroy)(struct object *); /* destroy on refcount == 0 */ +}; + +struct object +{ + unsigned int refcount; + const struct object_ops *ops; + struct object_name *name; +}; + +extern void init_object( struct object *obj, const struct object_ops *ops, + const char *name ); +/* release object can take any pointer, but you better make sure that */ +/* the thing pointed to starts with a struct object... */ +extern void release_object( void *obj ); + +/* request handlers */ + +struct thread; +typedef void (*req_handler)( void *data, int len, int fd, struct thread *self); +extern const req_handler req_handlers[REQ_NB_REQUESTS]; + +/* socket functions */ + +extern int add_client( int client_fd, struct thread *self ); +extern void remove_client( int client_fd ); +extern int get_initial_client_fd(void); +extern void set_timeout( int client_fd, struct timeval *when ); +extern int send_reply( int client_fd, int err_code, int pass_fd, + int n, ... /* arg_1, len_1, ..., arg_n, len_n */ ); + +/* process functions */ + +struct process; + +extern struct process *create_process(void); +extern struct process *get_process_from_id( void *id ); + +#endif /* __WINE_OBJECT_H */ diff --git a/server/process.c b/server/process.c new file mode 100644 index 00000000000..95690db2325 --- /dev/null +++ b/server/process.c @@ -0,0 +1,66 @@ +/* + * Server-side process management + * + * Copyright (C) 1998 Alexandre Julliard + */ + +#include +#include + +#include "server.h" +#include "object.h" + + +/* process structure; not much for now... */ + +struct process +{ + struct object obj; /* object header */ + struct process *next; /* system-wide process list */ + struct process *prev; +}; + +static struct process *first_process; + +/* process operations */ + +static void destroy_process( struct object *obj ); + +static const struct object_ops process_ops = +{ + destroy_process +}; + +/* create a new process */ +struct process *create_process(void) +{ + struct process *process; + + if (!(process = malloc( sizeof(*process) ))) return NULL; + init_object( &process->obj, &process_ops, NULL ); + process->next = first_process; + process->prev = NULL; + first_process = process; + return process; +} + +/* destroy a process when its refcount is 0 */ +static void destroy_process( struct object *obj ) +{ + struct process *process = (struct process *)obj; + assert( obj->ops == &process_ops ); + + if (process->next) process->next->prev = process->prev; + if (process->prev) process->prev->next = process->next; + else first_process = process->next; + free( process ); +} + +/* get a process from an id (and increment the refcount) */ +struct process *get_process_from_id( void *id ) +{ + struct process *p = first_process; + while (p && (p != id)) p = p->next; + if (p) p->obj.refcount++; + return p; +} diff --git a/server/socket.c b/server/socket.c new file mode 100644 index 00000000000..eca5e1c13a7 --- /dev/null +++ b/server/socket.c @@ -0,0 +1,464 @@ +/* + * Server-side socket communication functions + * + * Copyright (C) 1998 Alexandre Julliard + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "server.h" +#include "object.h" + +/* client state */ +enum state +{ + RUNNING, /* running normally */ + SENDING, /* sending us a request */ + WAITING, /* waiting for us to reply */ + READING /* reading our reply */ +}; + +/* client timeout */ +struct timeout +{ + struct timeval when; /* timeout expiry (absolute time) */ + struct timeout *next; /* next in sorted list */ + struct timeout *prev; /* prev in sorted list */ + int client; /* client id */ +}; + +/* client structure */ +struct client +{ + enum state state; /* client state */ + unsigned int seq; /* current sequence number */ + struct header head; /* current msg header */ + char *data; /* current msg data */ + int count; /* bytes sent/received so far */ + int pass_fd; /* fd to pass to and from the client */ + struct thread *self; /* client thread (opaque pointer) */ + struct timeout timeout; /* client timeout */ +}; + + +static struct client *clients[FD_SETSIZE]; /* clients array */ +static fd_set read_set, write_set; /* current select sets */ +static int nb_clients; /* current number of clients */ +static int max_fd; /* max fd in use */ +static int initial_client_fd; /* fd of the first client */ +static struct timeout *timeout_head; /* sorted timeouts list head */ +static struct timeout *timeout_tail; /* sorted timeouts list tail */ + + +/* signal a client protocol error */ +static void protocol_error( int client_fd, const char *err, ... ) +{ + va_list args; + + va_start( args, err ); + fprintf( stderr, "Protocol error:%d: ", client_fd ); + vfprintf( stderr, err, args ); + va_end( args ); +} + + +/* send a message to a client that is ready to receive something */ +static int do_write( int client_fd ) +{ + struct client *client = clients[client_fd]; + struct iovec vec[2]; + struct { struct cmsghdr hdr; int fd; } cmsg = + { { sizeof(cmsg), SOL_SOCKET, SCM_RIGHTS }, client->pass_fd }; + struct msghdr msghdr = { NULL, 0, vec, 2, NULL, 0, 0 }; + int ret; + + /* make sure we have something to send */ + assert( client->count < client->head.len ); + /* make sure the client is listening */ + assert( client->state == READING ); + + if (client->count < sizeof(client->head)) + { + vec[0].iov_base = (char *)&client->head + client->count; + vec[0].iov_len = sizeof(client->head) - client->count; + vec[1].iov_base = client->data; + vec[1].iov_len = client->head.len - sizeof(client->head); + } + else + { + vec[0].iov_base = client->data + client->count - sizeof(client->head); + vec[0].iov_len = client->head.len - client->count; + msghdr.msg_iovlen = 1; + } + if (client->pass_fd != -1) + { + /* we have an fd to send */ + msghdr.msg_control = &cmsg; + msghdr.msg_controllen = sizeof(cmsg); + } + ret = sendmsg( client_fd, &msghdr, 0 ); + if (ret == -1) + { + if (errno != EPIPE) perror("sendmsg"); + return -1; + } + if (client->pass_fd != -1) /* We sent the fd, now we can close it */ + { + close( client->pass_fd ); + client->pass_fd = -1; + } + if ((client->count += ret) < client->head.len) return 0; + + /* we have finished with this message */ + if (client->data) free( client->data ); + client->data = NULL; + client->count = 0; + client->state = RUNNING; + client->seq++; + FD_CLR( client_fd, &write_set ); + FD_SET( client_fd, &read_set ); + return 0; +} + + +/* read a message from a client that has something to say */ +static int do_read( int client_fd ) +{ + struct client *client = clients[client_fd]; + struct iovec vec; + struct { struct cmsghdr hdr; int fd; } cmsg = { { sizeof(cmsg), SOL_SOCKET, + SCM_RIGHTS }, -1 }; + struct msghdr msghdr = { NULL, 0, &vec, 1, &cmsg, sizeof(cmsg), 0 }; + int ret; + + if (client->state == RUNNING) client->state = SENDING; + assert( client->state == SENDING ); + + if (client->count < sizeof(client->head)) + { + vec.iov_base = (char *)&client->head + client->count; + vec.iov_len = sizeof(client->head) - client->count; + } + else + { + if (!client->data && + !(client->data = malloc(client->head.len-sizeof(client->head)))) + return -1; + vec.iov_base = client->data + client->count - sizeof(client->head); + vec.iov_len = client->head.len - client->count; + } + + ret = recvmsg( client_fd, &msghdr, 0 ); + if (ret == -1) + { + perror("recvmsg"); + return -1; + } + if (cmsg.fd != -1) + { + /* can only receive one fd per message */ + if (client->pass_fd != -1) close( client->pass_fd ); + client->pass_fd = cmsg.fd; + } + else if (!ret) return -1; /* closed pipe */ + + client->count += ret; + + /* received the complete header yet? */ + if (client->count < sizeof(client->head)) return 0; + + /* sanity checks */ + if (client->head.seq != client->seq) + { + protocol_error( client_fd, "bad sequence %08x instead of %08x\n", + client->head.seq, client->seq ); + return -1; + } + if ((client->head.len < sizeof(client->head)) || + (client->head.len > MAX_MSG_LENGTH + sizeof(client->head))) + { + protocol_error( client_fd, "bad header length %08x\n", + client->head.len ); + return -1; + } + + /* received the whole message? */ + if (client->count == client->head.len) + { + /* done reading the data, call the callback function */ + + char *data = client->data; + int passed_fd = client->pass_fd; + unsigned short type = client->head.type; + unsigned short len = client->head.len - sizeof(client->head); + + if ((type >= REQ_NB_REQUESTS) || !req_handlers[client->head.type]) + { + protocol_error( client_fd, "unknown request %08x\n", + client->head.type ); + return -1; + } + + /* clear the info now, as the client may be deleted by the callback */ + client->head.len = 0; + client->head.type = 0; + client->count = 0; + client->data = NULL; + client->pass_fd = -1; + client->state = WAITING; + client->seq++; + + req_handlers[type]( data, len, passed_fd, client->self ); + if (passed_fd != -1) close( passed_fd ); + if (data) free( data ); + } + return 0; +} + + +/* handle a client timeout */ +static int do_timeout( int client_fd ) +{ + struct client *client = clients[client_fd]; + set_timeout( client_fd, 0 ); /* Remove the timeout */ + req_handlers[REQ_TIMEOUT]( NULL, 0, -1, client->self ); + return 0; +} + + +/* send a reply to a client */ +static int send_reply_v( int client_fd, int type, int pass_fd, + struct iovec *vec, int veclen ) +{ + int i; + unsigned int len; + char *p; + struct client *client = clients[client_fd]; + + assert( client ); + assert( client->state == WAITING ); + assert( !client->data ); + + for (i = len = 0; i < veclen; i++) len += vec[i].iov_len; + assert( len < MAX_MSG_LENGTH ); + + if (len && !(client->data = malloc( len ))) return -1; + client->count = 0; + client->head.len = len + sizeof(client->head); + client->head.type = type; + client->head.seq = client->seq; + client->pass_fd = pass_fd; + + for (i = 0, p = client->data; i < veclen; i++) + { + memcpy( p, vec[i].iov_base, vec[i].iov_len ); + p += vec[i].iov_len; + } + + client->state = READING; + FD_CLR( client_fd, &read_set ); + FD_SET( client_fd, &write_set ); + return 0; +} + + +/* server main loop */ +void server_main_loop( int fd ) +{ + int i, ret; + + setsid(); + signal( SIGPIPE, SIG_IGN ); + + /* special magic to create the initial thread */ + initial_client_fd = fd; + add_client( initial_client_fd, NULL ); + + while (nb_clients) + { + fd_set read = read_set, write = write_set; + + if (timeout_head) + { + struct timeval tv, now; + gettimeofday( &now, NULL ); + if ((timeout_head->when.tv_sec < now.tv_sec) || + ((timeout_head->when.tv_sec == now.tv_sec) && + (timeout_head->when.tv_usec < now.tv_usec))) + { + int id = timeout_head->client; + if (do_timeout( id ) == -1) remove_client( id ); + continue; + } + tv.tv_sec = timeout_head->when.tv_sec - now.tv_sec; + if ((tv.tv_usec = timeout_head->when.tv_usec - now.tv_usec) < 0) + { + tv.tv_usec += 1000000; + tv.tv_sec--; + } + ret = select( max_fd + 1, &read, &write, NULL, &tv ); + } + else /* no timeout */ + { + ret = select( max_fd + 1, &read, &write, NULL, NULL ); + } + + if (!ret) continue; + if (ret == -1) perror("select"); + + for (i = 0; i <= max_fd; i++) + { + if (FD_ISSET( i, &write )) + { + if (!clients[i]) continue; + if (do_write( i ) == -1) remove_client( i ); + } + else if (FD_ISSET( i, &read )) + { + if (!clients[i]) continue; + if (do_read( i ) == -1) remove_client( i ); + } + } + } +} + + +/*******************************************************************/ +/* server-side exported functions */ + +/* add a client */ +int add_client( int client_fd, struct thread *self ) +{ + int flags; + struct client *client = malloc( sizeof(*client) ); + if (!client) return -1; + assert( !clients[client_fd] ); + + client->state = RUNNING; + client->seq = 0; + client->head.len = 0; + client->head.type = 0; + client->count = 0; + client->data = NULL; + client->self = self; + client->pass_fd = -1; + client->timeout.when.tv_sec = 0; + client->timeout.when.tv_usec = 0; + client->timeout.client = client_fd; + + flags = fcntl( client_fd, F_GETFL, 0 ); + fcntl( client_fd, F_SETFL, flags | O_NONBLOCK ); + + clients[client_fd] = client; + FD_SET( client_fd, &read_set ); + if (client_fd > max_fd) max_fd = client_fd; + nb_clients++; + return client_fd; +} + +/* remove a client */ +void remove_client( int client_fd ) +{ + struct client *client = clients[client_fd]; + assert( client ); + + req_handlers[REQ_KILL_THREAD]( NULL, 0, -1, client->self ); + + set_timeout( client_fd, 0 ); + clients[client_fd] = NULL; + FD_CLR( client_fd, &read_set ); + FD_CLR( client_fd, &write_set ); + if (max_fd == client_fd) while (max_fd && !clients[max_fd]) max_fd--; + if (initial_client_fd == client_fd) initial_client_fd = -1; + close( client_fd ); + nb_clients--; + + /* Purge messages */ + if (client->data) free( client->data ); + if (client->pass_fd != -1) close( client->pass_fd ); + free( client ); +} + +/* return the fd of the initial client */ +int get_initial_client_fd(void) +{ + assert( initial_client_fd != -1 ); + return initial_client_fd; +} + +/* set a client timeout */ +void set_timeout( int client_fd, struct timeval *when ) +{ + struct timeout *tm, *pos; + struct client *client = clients[client_fd]; + assert( client ); + + tm = &client->timeout; + if (tm->when.tv_sec || tm->when.tv_usec) + { + /* there is already a timeout */ + if (tm->next) tm->next->prev = tm->prev; + else timeout_tail = tm->prev; + if (tm->prev) tm->prev->next = tm->next; + else timeout_head = tm->next; + tm->when.tv_sec = tm->when.tv_usec = 0; + } + if (!when) return; /* no timeout */ + tm->when = *when; + + /* Now insert it in the linked list */ + + for (pos = timeout_head; pos; pos = pos->next) + { + if (pos->when.tv_sec > tm->when.tv_sec) break; + if ((pos->when.tv_sec == tm->when.tv_sec) && + (pos->when.tv_usec > tm->when.tv_usec)) break; + } + + if (pos) /* insert it before 'pos' */ + { + if ((tm->prev = pos->prev)) tm->prev->next = tm; + else timeout_head = tm; + tm->next = pos; + pos->prev = tm; + } + else /* insert it at the tail */ + { + tm->next = NULL; + if (timeout_tail) timeout_tail->next = tm; + else timeout_head = tm; + tm->prev = timeout_tail; + timeout_tail = tm; + } +} + +/* send a reply to a client */ +int send_reply( int client_fd, int err_code, int pass_fd, + int n, ... /* arg_1, len_1, ..., arg_n, len_n */ ) +{ + struct iovec vec[16]; + va_list args; + int i; + + assert( n < 16 ); + va_start( args, n ); + for (i = 0; i < n; i++) + { + vec[i].iov_base = va_arg( args, void * ); + vec[i].iov_len = va_arg( args, int ); + } + va_end( args ); + return send_reply_v( client_fd, err_code, pass_fd, vec, n ); +} diff --git a/server/thread.c b/server/thread.c new file mode 100644 index 00000000000..d1ce30b4d8c --- /dev/null +++ b/server/thread.c @@ -0,0 +1,204 @@ +/* + * Server-side thread management + * + * Copyright (C) 1998 Alexandre Julliard + */ + +#include +#include +#include +#include +#include +#include + +#include "winerror.h" +#include "server.h" +#include "object.h" + + +/* request handling */ + +static void handle_timeout( void *data, int len, int fd, + struct thread *self ); +static void handle_kill_thread( void *data, int len, int fd, + struct thread *self ); +static void handle_new_thread( void *data, int len, int fd, + struct thread *self ); +static void handle_init_thread( void *data, int len, int fd, + struct thread *self ); + +const req_handler req_handlers[REQ_NB_REQUESTS] = +{ + handle_timeout, /* REQ_TIMEOUT */ + handle_kill_thread, /* REQ_KILL_THREAD */ + handle_new_thread, /* REQ_NEW_THREAD */ + handle_init_thread /* REQ_INIT_THREAD */ +}; + + +/* thread structure; not much for now... */ + +struct thread +{ + struct object obj; /* object header */ + struct thread *next; /* system-wide thread list */ + struct thread *prev; + struct process *process; + int client_fd; /* client fd for socket communications */ + int unix_pid; + char *name; +}; + +static struct thread *first_thread; + +/* thread operations */ + +static void destroy_thread( struct object *obj ); + +static const struct object_ops thread_ops = +{ + destroy_thread +}; + + +/* create a new thread */ +static struct thread *create_thread( int fd, void *pid ) +{ + struct thread *thread; + struct process *process; + + if (pid) + { + if (!(process = get_process_from_id( pid ))) return NULL; + } + else + { + if (!(process = create_process())) return NULL; + } + if (!(thread = malloc( sizeof(*thread) ))) + { + release_object( process ); + return NULL; + } + init_object( &thread->obj, &thread_ops, NULL ); + thread->client_fd = fd; + thread->process = process; + thread->unix_pid = 0; /* not known yet */ + thread->name = NULL; + + thread->next = first_thread; + thread->prev = NULL; + first_thread = thread; + + if (add_client( fd, thread ) == -1) + { + release_object( thread ); + return NULL; + } + return thread; +} + +/* destroy a thread when its refcount is 0 */ +static void destroy_thread( struct object *obj ) +{ + struct thread *thread = (struct thread *)obj; + assert( obj->ops == &thread_ops ); + + release_object( thread->process ); + if (thread->next) thread->next->prev = thread->prev; + if (thread->prev) thread->prev->next = thread->next; + else first_thread = thread->next; + if (thread->name) free( thread->name ); + free( thread ); +} + +struct thread *get_thread_from_id( void *id ) +{ + struct thread *t = first_thread; + while (t && (t != id)) t = t->next; + return t; +} + +/* handle a client timeout (unused for now) */ +static void handle_timeout( void *data, int len, int fd, struct thread *self ) +{ +/* fprintf( stderr, "Server: got timeout for %s\n", self->name );*/ + send_reply( self->client_fd, 0, -1, 0 ); +} + +/* a thread has been killed */ +static void handle_kill_thread( void *data, int len, int fd, + struct thread *self ) +{ + if (!self) return; /* initial client being killed */ +/* fprintf( stderr, "Server: thread '%s' killed\n", + self->name ? self->name : "???" ); +*/ + release_object( &self->obj ); +} + +/* create a new thread */ +static void handle_new_thread( void *data, int len, int fd, + struct thread *self ) +{ + struct new_thread_request *req = (struct new_thread_request *)data; + struct new_thread_reply reply; + struct thread *new_thread; + int new_fd, err; + + if ((new_fd = dup(fd)) == -1) + { + new_thread = NULL; + err = ERROR_TOO_MANY_OPEN_FILES; + goto done; + } + if (len != sizeof(*req)) + { + err = ERROR_INVALID_PARAMETER; + goto done; + } + if (!(new_thread = create_thread( new_fd, req->pid ))) + { + err = ERROR_NOT_ENOUGH_MEMORY; + close( new_fd ); + goto done; + } + reply.tid = new_thread; + reply.pid = new_thread->process; + err = ERROR_SUCCESS; + done: + send_reply( self ? self->client_fd : get_initial_client_fd(), + err, -1, 1, &reply, sizeof(reply) ); +} + +/* create a new thread */ +static void handle_init_thread( void *data, int len, int fd, + struct thread *self ) +{ + struct init_thread_request *req = (struct init_thread_request *)data; + int err; + + if (len < sizeof(*req)) + { + err = ERROR_INVALID_PARAMETER; + goto done; + } + len -= sizeof(*req); + self->unix_pid = req->pid; + if (!(self->name = malloc( len + 1 ))) + { + err = ERROR_NOT_ENOUGH_MEMORY; + goto done; + } + memcpy( self->name, (char *)data + sizeof(*req), len ); + self->name[len] = '\0'; + +/* fprintf( stderr, + "Server: init thread '%s' pid=%08x tid=%08x unix_pid=%d\n", + self->name, (int)self->process, (int)self, self->unix_pid ); +*/ + + err = ERROR_SUCCESS; + done: + send_reply( self->client_fd, err, -1, 0 ); +} diff --git a/tools/make_X11wrappers b/tools/make_X11wrappers index 2b34c8bd374..80babeed6ba 100755 --- a/tools/make_X11wrappers +++ b/tools/make_X11wrappers @@ -98,6 +98,9 @@ END output_fn("XShmAttach", Status, "Display *, XShmSegmentInfo *", "Display *a0, XShmSegmentInfo *a1", "a0, a1"); + output_fn("XShmPutImage", Status, + "Display *, Drawable, GC, XImage *, int, int, int, int, unsigned int, unsigned int, Bool", + "Display *a0, Drawable a1, GC a2, XImage *a3, int a4, int a5, int a6, int a7, unsigned int a8, unsigned int a9, Bool a10", "a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10"); } else { open(IN, "echo \"$x11_incl#include \" | gcc -L$X11_include_dir -E - | grep -v '^[ \t]*\$'|") || die "open"; diff --git a/tsx11/X11_calls b/tsx11/X11_calls index 856ddf7f6f2..aeca2b6a947 100644 --- a/tsx11/X11_calls +++ b/tsx11/X11_calls @@ -21,6 +21,7 @@ XCheckWindowEvent XClipBox XConvertSelection XCopyArea +XCopyColormapAndFree XCopyPlane XCreateBitmapFromData XCreateColormap @@ -133,6 +134,7 @@ XSetWMSizeHints XShmAttach XShmDetach XShmPixmapFormat +XShmPutImage XShmQueryExtension XShrinkRegion XStoreColor diff --git a/tsx11/ts_xlib.c b/tsx11/ts_xlib.c index 7ced8013767..2e163dfb670 100644 --- a/tsx11/ts_xlib.c +++ b/tsx11/ts_xlib.c @@ -105,6 +105,17 @@ Atom TSXInternAtom(Display* a0, const char* a1, int a2) return r; } +Colormap TSXCopyColormapAndFree(Display* a0, Colormap a1) +{ + Colormap r; + TRACE(x11, "Call XCopyColormapAndFree\n"); + EnterCriticalSection( &X11DRV_CritSection ); + r = XCopyColormapAndFree(a0, a1); + LeaveCriticalSection( &X11DRV_CritSection ); + TRACE(x11, "Ret XCopyColormapAndFree\n"); + return r; +} + Colormap TSXCreateColormap(Display* a0, Window a1, Visual* a2, int a3) { Colormap r; diff --git a/tsx11/ts_xshm.c b/tsx11/ts_xshm.c index e3afe6b3519..dfe94341cc6 100644 --- a/tsx11/ts_xshm.c +++ b/tsx11/ts_xshm.c @@ -52,3 +52,14 @@ Status TSXShmAttach(Display *a0, XShmSegmentInfo *a1) TRACE(x11, "Ret XShmAttach\n"); return r; } + +Status TSXShmPutImage(Display *a0, Drawable a1, GC a2, XImage *a3, int a4, int a5, int a6, int a7, unsigned int a8, unsigned int a9, Bool a10) +{ + Status r; + TRACE(x11, "Call XShmPutImage\n"); + EnterCriticalSection( &X11DRV_CritSection ); + r = XShmPutImage(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10); + LeaveCriticalSection( &X11DRV_CritSection ); + TRACE(x11, "Ret XShmPutImage\n"); + return r; +} diff --git a/win32/advapi.c b/win32/advapi.c index 368642eb444..d2ff65fe3f9 100644 --- a/win32/advapi.c +++ b/win32/advapi.c @@ -118,10 +118,10 @@ BOOL32 WINAPI AdjustTokenPrivileges(HANDLE32 TokenHandle,BOOL32 DisableAllPrivil * GetTokenInformation [ADVAPI32.66] */ BOOL32 WINAPI GetTokenInformation( - HANDLE32 token,/*TOKEN_INFORMATION_CLASS*/ DWORD tokeninfoclass,LPVOID tokeninfo, + HANDLE32 token,TOKEN_INFORMATION_CLASS tokeninfoclass,LPVOID tokeninfo, DWORD tokeninfolength,LPDWORD retlen ) { - FIXME(advapi,"(%08x,%ld,%p,%ld,%p): stub\n", + FIXME(advapi,"(%08x,%d,%p,%ld,%p): stub\n", token,tokeninfoclass,tokeninfo,tokeninfolength,retlen); return TRUE; } diff --git a/win32/console.c b/win32/console.c index 505bfeaf863..6bab46d8c32 100644 --- a/win32/console.c +++ b/win32/console.c @@ -1139,3 +1139,20 @@ BOOL32 WINAPI ReadConsoleOutputCharacter32A(HANDLE32 hConsoleOutput, SetLastError(ERROR_CALL_NOT_IMPLEMENTED); return FALSE; } + + +/****************************************************************************** + * ScrollConsoleScreenBuffer [KERNEL32.612] + * + * BUGS + * Unimplemented + */ +BOOL32 WINAPI ScrollConsoleScreenBuffer( HANDLE32 hConsoleOutput, + LPSMALL_RECT lpScrollRect, LPSMALL_RECT lpClipRect, + COORD dwDestOrigin, LPCHAR_INFO lpFill) +{ + FIXME(console, "(%d,%p,%p,%dx%d,%p): stub\n", hConsoleOutput,lpScrollRect, + lpClipRect,dwDestOrigin.x,dwDestOrigin.y,lpFill); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} diff --git a/win32/kernel32.c b/win32/kernel32.c index b01a40c3cd0..12e69b435a8 100644 --- a/win32/kernel32.c +++ b/win32/kernel32.c @@ -76,15 +76,54 @@ static void _write_qtthunk( /* should fill the rest of the 32 bytes with 0xCC */ } +/*********************************************************************** + * _loadthunk + */ +static LPVOID _loadthunk(LPSTR module, LPSTR func, LPSTR module32, + struct ThunkDataCommon *TD32) +{ + struct ThunkDataCommon *TD16; + HMODULE32 hmod; + + if ((hmod = LoadLibrary16(module)) <= 32) + { + ERR(thunk, "(%s, %s, %s, %p): Unable to load '%s', error %d\n", + module, func, module32, TD32, module, hmod); + return 0; + } + + if (!(TD16 = PTR_SEG_TO_LIN(WIN32_GetProcAddress16(hmod, func)))) + { + ERR(thunk, "(%s, %s, %s, %p): Unable to find '%s'\n", + module, func, module32, TD32, func); + return 0; + } + + if (TD32 && memcmp(TD16->magic, TD32->magic, 4)) + { + ERR(thunk, "(%s, %s, %s, %p): Bad magic %c%c%c%c (should be %c%c%c%c)\n", + module, func, module32, TD32, + TD16->magic[0], TD16->magic[1], TD16->magic[2], TD16->magic[3], + TD32->magic[0], TD32->magic[1], TD32->magic[2], TD32->magic[3]); + return 0; + } + + if (TD32 && TD16->checksum != TD32->checksum) + { + ERR(thunk, "(%s, %s, %s, %p): Wrong checksum %08lx (should be %08lx)\n", + module, func, module32, TD32, TD16->checksum, TD32->checksum); + return 0; + } + + return TD16; +} + /*********************************************************************** * GetThunkStuff (KERNEL32.53) */ LPVOID WINAPI GetThunkStuff(LPSTR module, LPSTR func) { - HMODULE32 hmod = LoadLibrary16(module); - if (hmod <= 32) return 0; - - return PTR_SEG_TO_LIN(WIN32_GetProcAddress16(hmod, func)); + return _loadthunk(module, func, "", NULL); } /*********************************************************************** @@ -135,13 +174,9 @@ UINT32 WINAPI ThunkConnect32( { case DLL_PROCESS_ATTACH: { - struct ThunkDataCommon *TD16 = GetThunkStuff(module16, thunkfun16); - if (!TD16 || TD16->checksum != TD->checksum - || memcmp(TD16->magic, TD->magic, 4)) - { - ERR(thunk, "Problem loading 16-bit thunk buffer!\n"); + struct ThunkDataCommon *TD16; + if (!(TD16 = _loadthunk(module16, thunkfun16, module32, TD))) return 0; - } if (directionSL) { @@ -1008,6 +1043,15 @@ _KERNEL_472(CONTEXT *context) { /* hmm ... fixme */ } +/********************************************************************** + * KERNEL_475 (KERNEL.475) + * Set the 16-bit %fs to the 32-bit %fs (current TEB selector) + */ +VOID WINAPI _KERNEL_475(CONTEXT *context) +{ + GET_FS( THREAD_Current()->saved_fs ); +} + /********************************************************************** * KERNEL_431 (KERNEL.431) * IsPeFormat (W32SYS.2) diff --git a/win32/newfns.c b/win32/newfns.c index 08faf015b16..7f61887e60b 100644 --- a/win32/newfns.c +++ b/win32/newfns.c @@ -234,10 +234,10 @@ BOOL32 WINAPI GetMailslotInfo( HANDLE32 hMailslot, LPDWORD lpMaxMessageSize, LPDWORD lpReadTimeout ) { FIXME(win32, "(%d): stub\n",hMailslot); - *lpMaxMessageSize = NULL; - *lpNextSize = NULL; - *lpMessageCount = NULL; - *lpReadTimeout = NULL; + *lpMaxMessageSize = (DWORD)NULL; + *lpNextSize = (DWORD)NULL; + *lpMessageCount = (DWORD)NULL; + *lpReadTimeout = (DWORD)NULL; return TRUE; } @@ -382,6 +382,31 @@ BOOL32 WINAPI IsDebuggerPresent() { return FALSE; } +/****************************************************************************** + * SleepEx [KERNEL32.680] + * + * BUGS + * Unimplemented + */ +DWORD WINAPI SleepEx(DWORD x1,BOOL32 x2) +{ + FIXME(win32,":(%d,%ld): stub\n",x1,x2); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + +/****************************************************************************** + * TerminateProcess [KERNEL32.684] + * + * BUGS + * Unimplemented + */ +int WINAPI TerminateProcess(HANDLE32 h, int ret) +{ + FIXME(win32,":(%p,%d): stub\n",h,ret); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} /****************************************************************************** * OpenDesktop32A [USER32.408] diff --git a/win32/process.c b/win32/process.c index c4c163577bf..a9e8b2df20d 100644 --- a/win32/process.c +++ b/win32/process.c @@ -108,9 +108,10 @@ BOOL32 WINAPI CreateProcess32W( DWORD creationflags,LPVOID env,LPCWSTR curdir, LPSTARTUPINFO32W startupinfo,LPPROCESS_INFORMATION processinfo) { - FIXME(win32,"(%p,%p,%p,%p,%d,%08lx,%p,%p,%p,%p): stub\n", - appname,cmdline,processattributes,threadattributes, - inherithandles,creationflags,env,curdir,startupinfo,processinfo ); + FIXME(win32,"(%p,%s,%p,%p,%d,%08lx,%p,%s,%p,%p): stub\n", + appname,debugstr_w(cmdline),processattributes,threadattributes, + inherithandles,creationflags,env,debugstr_w(curdir),startupinfo, + processinfo ); /* make from lcc uses system as fallback if CreateProcess returns FALSE, so return false */ return FALSE; diff --git a/windows/mdi.c b/windows/mdi.c index 47e7e0766b8..b305ba0ab39 100644 --- a/windows/mdi.c +++ b/windows/mdi.c @@ -1383,7 +1383,7 @@ LRESULT WINAPI DefMDIChildProc32A( HWND32 hwnd, UINT32 message, MDICLIENTINFO *ci; WND *clientWnd; - clientWnd = WIN_FindWndPtr(GetParent16(hwnd)); + clientWnd = WIN_FindWndPtr(WIN_FindWndPtr(hwnd)->parent->hwndSelf); ci = (MDICLIENTINFO *) clientWnd->wExtra; switch (message) diff --git a/windows/syscolor.c b/windows/syscolor.c index fe48431378c..c3c10b32867 100644 --- a/windows/syscolor.c +++ b/windows/syscolor.c @@ -46,19 +46,19 @@ static const char * const DefSysColors95[] = { "Scrollbar", "223 223 223", /* COLOR_SCROLLBAR */ "Background", "192 192 192", /* COLOR_BACKGROUND */ - "ActiveTitle", "0 64 128", /* COLOR_ACTIVECAPTION */ - "InactiveTitle", "255 255 255", /* COLOR_INACTIVECAPTION */ + "ActiveTitle", "0 0 128", /* COLOR_ACTIVECAPTION */ + "InactiveTitle", "128 128 128", /* COLOR_INACTIVECAPTION */ "Menu", "192 192 192", /* COLOR_MENU */ "Window", "255 255 255", /* COLOR_WINDOW */ "WindowFrame", "0 0 0", /* COLOR_WINDOWFRAME */ "MenuText", "0 0 0", /* COLOR_MENUTEXT */ "WindowText", "0 0 0", /* COLOR_WINDOWTEXT */ "TitleText", "255 255 255", /* COLOR_CAPTIONTEXT */ - "ActiveBorder", "128 128 128", /* COLOR_ACTIVEBORDER */ - "InactiveBorder", "255 255 255", /* COLOR_INACTIVEBORDER */ + "ActiveBorder", "192 192 192", /* COLOR_ACTIVEBORDER */ + "InactiveBorder", "192 192 192", /* COLOR_INACTIVEBORDER */ "AppWorkspace", "128 128 128", /* COLOR_APPWORKSPACE */ - "Hilight", "223 223 223", /* COLOR_HIGHLIGHT */ - "HilightText", "0 0 0", /* COLOR_HIGHLIGHTTEXT */ + "Hilight", "0 0 128", /* COLOR_HIGHLIGHT */ + "HilightText", "255 255 255", /* COLOR_HIGHLIGHTTEXT */ "ButtonFace", "192 192 192", /* COLOR_BTNFACE */ "ButtonShadow", "128 128 128", /* COLOR_BTNSHADOW */ "GrayText", "192 192 192", /* COLOR_GRAYTEXT */ diff --git a/windows/winpos.c b/windows/winpos.c index 1eba9867814..8bec5195715 100644 --- a/windows/winpos.c +++ b/windows/winpos.c @@ -1542,7 +1542,10 @@ BOOL32 WINPOS_SetActiveWindow( HWND32 hWnd, BOOL32 fMouse, BOOL32 fChangeFocus) if( fChangeFocus && GetFocus32() ) if( WIN_GetTopParent(GetFocus32()) != hwndActive ) FOCUS_SwitchFocus( GetFocus32(), - (wndPtr->dwStyle & WS_MINIMIZE)? 0: hwndActive); + (wndPtr && (wndPtr->dwStyle & WS_MINIMIZE))? + 0: + hwndActive + ); if( !hwndPrevActive && wndPtr && wndPtr->window && !(wndPtr->flags & WIN_MANAGED) ) @@ -2155,8 +2158,11 @@ BOOL32 WINAPI SetWindowPos32( HWND32 hwnd, HWND32 hwndInsertAfter, if ((hwndInsertAfter != HWND_TOP) && (hwndInsertAfter != HWND_BOTTOM)) { WND* wnd = WIN_FindWndPtr(hwndInsertAfter); - if( wnd->parent != wndPtr->parent ) return FALSE; - if( wnd->next == wndPtr ) flags |= SWP_NOZORDER; + + if( wndPtr ) { + if( wnd->parent != wndPtr->parent ) return FALSE; + if( wnd->next == wndPtr ) flags |= SWP_NOZORDER; + } } else if (!(wndPtr->window)) /* FIXME: the following optimization is no good for "X-ed" windows */ diff --git a/wine.ini b/wine.ini index 7cde88bd7d2..32f0b714ee6 100644 --- a/wine.ini +++ b/wine.ini @@ -74,3 +74,6 @@ LPT3:=/dev/lp3 [spy] Exclude=WM_SIZE;WM_TIMER; + +[Tweak.Layout] +;Win95Look=true