Release 961201
Sat Nov 30 19:21:17 1996 Alexandre Julliard <julliard@lrc.epfl.ch>
* [configure]
Re-generated with autoconf 2.11. Let me know if you have
problems.
* [controls/listbox.c] [controls/oldlbox.c]
Listboxes rewritten from scratch. Moved old code still used by
comboboxes to oldlbox.c
* [misc/registry.c]
Use temporary file when saving registry.
* [windows/dialog.c]
Implemented Win32 version of DlgDirList() and DlgDirListComboBox().
* [windows/winproc.c]
Added translation for listbox Win32 messages.
Sat Nov 30 21:00:00 Alex Korobka <alex@trantor.pharm.sunysb.edu>
* [controls/widgets.c] [controls/button.c]
Fixed some incompatibilities with CTL3D DLL.
* [windows/dialog.c]
Made dialog windows fit into the desktop.
* [misc/winsock.c] [misc/winsock_async.c]
New Winsock engine.
* [windows/message.c]
GetMessage() fixes.
* [windows/queue.c] [windows/hook.c] [windows/win.c]
SetMessageQueue() fixes.
Fri Nov 29 10:25:12 1996 Slaven Rezic <eserte@cs.tu-berlin.de>
* [objects/text.c]
DrawText16(): Fixed return value.
Tue Nov 26 14:47:09 1996 Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>
* [files/profile.c] [*/*]
Added Win32 profile functions, updated to new naming standard.
* [objects/font.c] [if1632/thunk.c] [include/windows.h]
Added EnumFonts32*, EnumFontFamiliesEx*, changed prototypes and
structures.
* [misc/ole2nls.c] [if1632/thunk.c]
Added EnumSystemLocales() (winhelp.exe).
* [misc/registry.c]
Added Windows 3.1 registry loader supplied by Tor Sjxwall, tor@sn.no
* [win32/file.c]
Partially fixed CreateFileMapping(), added UnmapViewOfFile().
Sat Nov 23 23:36:05 1996 Ronan Waide <waider@waider.ie>
* [misc/shell.c]
Fixed some FIXMEs relating to ShellExec() and FindExecutable().
* [misc/main.c]
Implemented a few more of the SystemParametersInfo() cases.
Tue Nov 19 01:24:34 1996 Philippe De Muyter <phdm@info.ucl.ac.be>
* [include/keyboard.h]
New file, new macro WINE_VKEY_MAPPINGS (using code taken from event.c).
* [include/windows.h]
New [VK_A, VK_Z] and [VK_0, VK9] macros.
* [misc/keyboard.c]
Fixes in KeyTable and ToAscii.
* [objects/font.c]
FONT_init : Give default value for MSWIN "system" font.
FONT_MatchFont : Do not try every size of a font family if the
family does not exist.
* [windows/event.c]
lastEventChar hack removed.
KeyStateTable replaced by InputKeyStateTable (maintained in event.c)
and QueueKeyStateTable (maintained in message.c).
EVENT_key : Corrections to the extended bit setting.
* [windows/message.c] [windows/keyboard.c]
Implementation of a new QueueKeyStateTable : table of key states
valid when messages are retrieved by GetMessage or PeekMessage,
and valid for TranslateMessage.
TranslateMessage : Convert WM*KEY messages using QueueKeyStateTable
and ToAscii.
Mon Nov 18 16:59:01 1996 Robert Pouliot <krynos@clic.net>
* [graphics/Makefile.in] [graphics/wing.c]
[if1632/wing.spec]
Some functions for WinG support, mostly empty stubs.
* [misc/crtdll.c] [if1632/crtdll.spec]
Many functions added to CRTDLL, mostly calls to Unix C library.
diff --git a/files/profile.c b/files/profile.c
index ddb21ed..d1a8426 100644
--- a/files/profile.c
+++ b/files/profile.c
@@ -5,6 +5,7 @@
* Copyright 1996 Alexandre Julliard
*/
+#define NO_TRANSITION_TYPES /* This file is Win32-clean */
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
@@ -13,6 +14,7 @@
#include "windows.h"
#include "dos_fs.h"
#include "xmalloc.h"
+#include "string32.h"
#include "stddebug.h"
#include "debug.h"
@@ -33,7 +35,7 @@
typedef struct
{
- int changed;
+ BOOL32 changed;
PROFILESECTION *section;
char *dos_name;
} PROFILE;
@@ -55,6 +57,8 @@
#define WINE_INI_GLOBAL ETCDIR "/wine.conf"
+static LPCWSTR wininiW = NULL;
+
/***********************************************************************
* PROFILE_CopyEntry
*
@@ -227,7 +231,7 @@
*
* Delete a section from a profile tree.
*/
-static BOOL PROFILE_DeleteSection( PROFILESECTION **section, const char *name )
+static BOOL32 PROFILE_DeleteSection( PROFILESECTION **section, LPCSTR name )
{
while (*section)
{
@@ -250,8 +254,8 @@
*
* Delete a key from a profile tree.
*/
-static BOOL PROFILE_DeleteKey( PROFILESECTION **section,
- const char *section_name, const char *key_name )
+static BOOL32 PROFILE_DeleteKey( PROFILESECTION **section,
+ LPCSTR section_name, LPCSTR key_name )
{
while (*section)
{
@@ -323,7 +327,7 @@
*
* Flush the current profile to disk if changed.
*/
-static BOOL PROFILE_FlushFile(void)
+static BOOL32 PROFILE_FlushFile(void)
{
char *p, buffer[MAX_PATHNAME_LEN];
const char *unix_name;
@@ -368,7 +372,7 @@
*
* Open a profile file, checking the cached file first.
*/
-static BOOL PROFILE_Open( const char *filename )
+static BOOL32 PROFILE_Open( LPCSTR filename )
{
char buffer[MAX_PATHNAME_LEN];
const char *dos_name, *unix_name;
@@ -443,16 +447,15 @@
*
* Enumerate all the keys of a section.
*/
-static INT PROFILE_GetSection( PROFILESECTION *section,
- const char *section_name,
- char *buffer, INT len, int handle_env )
+static INT32 PROFILE_GetSection( PROFILESECTION *section, LPCSTR section_name,
+ LPSTR buffer, INT32 len, BOOL32 handle_env )
{
PROFILEKEY *key;
while (section)
{
if (section->name && !lstrcmpi32A( section->name, section_name ))
{
- INT oldlen = len;
+ INT32 oldlen = len;
for (key = section->key; key; key = key->next)
{
if (len <= 2) break;
@@ -476,8 +479,8 @@
*
* Get a profile string.
*/
-static INT PROFILE_GetString( const char *section, const char *key_name,
- const char *def_val, char *buffer, INT len )
+static INT32 PROFILE_GetString( LPCSTR section, LPCSTR key_name,
+ LPCSTR def_val, LPSTR buffer, INT32 len )
{
PROFILEKEY *key = NULL;
@@ -500,10 +503,10 @@
*
* Set a profile string.
*/
-static BOOL PROFILE_SetString( const char *section_name, const char *key_name,
- const char *value )
+static BOOL32 PROFILE_SetString( LPCSTR section_name, LPCSTR key_name,
+ LPCSTR value )
{
- BOOL ret;
+ BOOL32 ret;
if (!key_name) /* Delete a whole section */
{
@@ -623,66 +626,156 @@
}
+/********************* API functions **********************************/
+
/***********************************************************************
- * GetProfileInt (KERNEL.57)
+ * GetProfileInt16 (KERNEL.57)
*/
-UINT GetProfileInt( LPCSTR section, LPCSTR entry, INT def_val )
+UINT16 GetProfileInt16( LPCSTR section, LPCSTR entry, INT16 def_val )
{
- return GetPrivateProfileInt( section, entry, def_val, "win.ini" );
+ return GetPrivateProfileInt16( section, entry, def_val, "win.ini" );
}
/***********************************************************************
- * GetProfileString (KERNEL.58)
+ * GetProfileInt32A (KERNEL32.264)
*/
-INT GetProfileString( LPCSTR section, LPCSTR entry, LPCSTR def_val,
- LPSTR buffer, INT len )
+UINT32 GetProfileInt32A( LPCSTR section, LPCSTR entry, INT32 def_val )
{
- return GetPrivateProfileString( section, entry, def_val,
- buffer, len, "win.ini" );
+ return GetPrivateProfileInt32A( section, entry, def_val, "win.ini" );
+}
+
+/***********************************************************************
+ * GetProfileInt32W (KERNEL32.264)
+ */
+UINT32 GetProfileInt32W( LPCWSTR section, LPCWSTR entry, INT32 def_val )
+{
+ if (!wininiW) wininiW = STRING32_DupAnsiToUni("win.ini");
+ return GetPrivateProfileInt32W( section, entry, def_val, wininiW );
+}
+
+/***********************************************************************
+ * GetProfileString16 (KERNEL.58)
+ */
+INT16 GetProfileString16( LPCSTR section, LPCSTR entry, LPCSTR def_val,
+ LPSTR buffer, INT16 len )
+{
+ return GetPrivateProfileString16( section, entry, def_val,
+ buffer, len, "win.ini" );
+}
+
+/***********************************************************************
+ * GetProfileString32A (KERNEL32.268)
+ */
+INT32 GetProfileString32A( LPCSTR section, LPCSTR entry, LPCSTR def_val,
+ LPSTR buffer, INT32 len )
+{
+ return GetPrivateProfileString32A( section, entry, def_val,
+ buffer, len, "win.ini" );
+}
+
+/***********************************************************************
+ * GetProfileString32W (KERNEL32.269)
+ */
+INT32 GetProfileString32W( LPCWSTR section,LPCWSTR entry,LPCWSTR def_val,
+ LPWSTR buffer, INT32 len )
+{
+ if (!wininiW) wininiW = STRING32_DupAnsiToUni("win.ini");
+ return GetPrivateProfileString32W( section, entry, def_val,
+ buffer, len, wininiW );
}
/***********************************************************************
- * WriteProfileString (KERNEL.59)
+ * WriteProfileString16 (KERNEL.59)
*/
-BOOL WriteProfileString( LPCSTR section, LPCSTR entry, LPCSTR string )
+BOOL16 WriteProfileString16( LPCSTR section, LPCSTR entry, LPCSTR string )
{
- return WritePrivateProfileString( section, entry, string, "win.ini" );
+ return WritePrivateProfileString16( section, entry, string, "win.ini" );
+}
+
+/***********************************************************************
+ * WriteProfileString32A (KERNEL32.587)
+ */
+BOOL32 WriteProfileString32A( LPCSTR section, LPCSTR entry, LPCSTR string )
+{
+ return WritePrivateProfileString32A( section, entry, string, "win.ini" );
+}
+
+/***********************************************************************
+ * WriteProfileString32W (KERNEL32.588)
+ */
+BOOL32 WriteProfileString32W( LPCWSTR section, LPCWSTR entry, LPCWSTR string )
+{
+ if (!wininiW) wininiW = STRING32_DupAnsiToUni("win.ini");
+ return WritePrivateProfileString32W( section, entry, string, wininiW );
}
/***********************************************************************
- * GetPrivateProfileInt (KERNEL.127)
+ * GetPrivateProfileInt16 (KERNEL.127)
*/
-UINT GetPrivateProfileInt( LPCSTR section, LPCSTR entry, INT def_val,
- LPCSTR filename )
+UINT16 GetPrivateProfileInt16( LPCSTR section, LPCSTR entry, INT16 def_val,
+ LPCSTR filename )
+{
+ long result=(long)GetPrivateProfileInt32A(section,entry,def_val,filename);
+
+ if (result > 65535) return 65535;
+ if (result >= 0) return (UINT16)result;
+ if (result < -32768) return -32768;
+ return (UINT16)(INT16)result;
+}
+
+/***********************************************************************
+ * GetPrivateProfileInt32A (KERNEL32.251)
+ */
+UINT32 GetPrivateProfileInt32A( LPCSTR section, LPCSTR entry, INT32 def_val,
+ LPCSTR filename )
{
char buffer[20];
char *p;
long result;
- GetPrivateProfileString( section, entry, "",
- buffer, sizeof(buffer), filename );
- if (!buffer[0]) return (UINT)def_val;
+ GetPrivateProfileString32A( section, entry, "",
+ buffer, sizeof(buffer), filename );
+ if (!buffer[0]) return (UINT32)def_val;
result = strtol( buffer, &p, 0 );
if (p == buffer) return 0; /* No digits at all */
-#ifdef WINELIB32
- return (UINT)result;
-#else
- if (result > 65535) return 65535;
- if (result >= 0) return (UINT)result;
- if (result < -32768) return -32768;
- return (UINT)(INT)result;
-#endif
+ return (UINT32)result;
}
+/***********************************************************************
+ * GetPrivateProfileInt32W (KERNEL32.252)
+ */
+UINT32 GetPrivateProfileInt32W( LPCWSTR section, LPCWSTR entry, INT32 def_val,
+ LPCWSTR filename )
+{
+ LPSTR sectionA=section?STRING32_DupUniToAnsi(section):NULL;
+ LPSTR entryA=entry?STRING32_DupUniToAnsi(entry):NULL;
+ LPSTR filenameA=filename?STRING32_DupUniToAnsi(filename):NULL;
+ UINT32 res;
+
+ res=GetPrivateProfileInt32A(sectionA,entryA,def_val,filenameA);
+ if (sectionA) free(sectionA);
+ if (filenameA) free(filenameA);
+ if (entryA) free(entryA);
+ return res;
+}
/***********************************************************************
- * GetPrivateProfileString (KERNEL.128)
+ * GetPrivateProfileString16 (KERNEL.128)
*/
-INT GetPrivateProfileString( LPCSTR section, LPCSTR entry, LPCSTR def_val,
- LPSTR buffer, INT len, LPCSTR filename )
+INT16 GetPrivateProfileString16( LPCSTR section, LPCSTR entry, LPCSTR def_val,
+ LPSTR buffer, INT16 len, LPCSTR filename )
+{
+ return GetPrivateProfileString32A(section,entry,def_val,buffer,len,filename);
+}
+
+/***********************************************************************
+ * GetPrivateProfileString32A (KERNEL32.255)
+ */
+INT32 GetPrivateProfileString32A( LPCSTR section, LPCSTR entry, LPCSTR def_val,
+ LPSTR buffer, INT32 len, LPCSTR filename )
{
if (PROFILE_Open( filename ))
return PROFILE_GetString( section, entry, def_val, buffer, len );
@@ -690,18 +783,73 @@
return strlen( buffer );
}
+/***********************************************************************
+ * GetPrivateProfileString32W (KERNEL32.256)
+ */
+INT32 GetPrivateProfileString32W( LPCWSTR section,LPCWSTR entry,LPCWSTR def_val,
+ LPWSTR buffer,INT32 len,LPCWSTR filename )
+{
+ LPSTR sectionA = section?STRING32_DupUniToAnsi(section):NULL;
+ LPSTR entryA = entry?STRING32_DupUniToAnsi(entry):NULL;
+ LPSTR filenameA = filename?STRING32_DupUniToAnsi(filename):NULL;
+ LPSTR def_valA = def_val?STRING32_DupUniToAnsi(def_val):NULL;
+ LPSTR bufferA = xmalloc(len);
+ INT32 ret;
+
+ ret=GetPrivateProfileString32A(sectionA,entryA,def_valA,bufferA,len,filenameA);
+ if (sectionA) free(sectionA);
+ if (entryA) free(entryA);
+ if (filenameA) free(filenameA);
+ if (def_valA) free(def_valA);
+
+ lstrcpynAtoW( buffer, bufferA, len );
+ free(bufferA);
+ return ret;
+}
+
+
/***********************************************************************
- * WritePrivateProfileString (KERNEL.129)
+ * WritePrivateProfileString16 (KERNEL.129)
*/
-BOOL WritePrivateProfileString( LPCSTR section, LPCSTR entry, LPCSTR string,
- LPCSTR filename )
+BOOL16 WritePrivateProfileString16(LPCSTR section,LPCSTR entry,LPCSTR string,
+ LPCSTR filename)
+{
+ return WritePrivateProfileString32A(section,entry,string,filename);
+}
+
+/***********************************************************************
+ * WritePrivateProfileString32A (KERNEL32.582)
+ */
+BOOL32 WritePrivateProfileString32A(LPCSTR section,LPCSTR entry,LPCSTR string,
+ LPCSTR filename )
{
if (!PROFILE_Open( filename )) return FALSE;
if (!section) return PROFILE_FlushFile();
return PROFILE_SetString( section, entry, string );
}
+/***********************************************************************
+ * WritePrivateProfileString32W (KERNEL32.583)
+ */
+BOOL32 WritePrivateProfileString32W(LPCWSTR section,LPCWSTR entry,LPCWSTR string,
+ LPCWSTR filename )
+{
+ LPSTR sectionA = section?STRING32_DupUniToAnsi(section):NULL;
+ LPSTR entryA = entry?STRING32_DupUniToAnsi(entry):NULL;
+ LPSTR stringA = string?STRING32_DupUniToAnsi(string):NULL;
+ LPSTR filenameA = filename?STRING32_DupUniToAnsi(filename):NULL;
+ BOOL32 res;
+
+ res = WritePrivateProfileString32A(sectionA,entryA,stringA,filenameA);
+
+ if (sectionA) free(sectionA);
+ if (entryA) free(entryA);
+ if (stringA) free(stringA);
+ if (filenameA) free(filenameA);
+ return res;
+}
+
/***********************************************************************
* WriteOutProfiles (KERNEL.315)