wine/win32/string32.c
Alexandre Julliard d90840e180 Release 960611
Tue Jun 11 15:20:43 1996  Alexandre Julliard  <julliard@lrc.epfl.ch>

	* [debugger/break.c] [loader/signal.c]
	Fixed breakpoints in 32-bit code.

	* [include/windows.h]
	Added many more Win32 versions of standard structures.

	* [include/winreg.h] [misc/registry.c]
	Moved private types into registry.c.

	* [memory/string.c] (New file)
	Moved most string functions from misc/lstr.c; added Win32 version
	of all functions.

	* [misc/wsprintf.c]
	Implemented Win32 wsprintf functions.

	* [objects/bitmap.c]
	Implemented Win32 bitmap functions.

	* [windows/dialog.c]
	Don't set dialog procedure before the controls are created. This
	avoids a crash in Winhelp.

Tue Jun 11 14:10:06 1996 Martin von Loewis <loewis@informatik.hu-berlin.de>

	* [controls/menu.c] [if1632/user.spec] [windows/message.c]
	Replace PeekMessage with PeekMessage16.

	* [if1632/kernel32.spec][misc/main.c]
	GetVersion32,GetVersionEx32A,GetVersionEx32W: new functions.
	MAIN_ParseVersion: new function, new command line option -winver.
	GetVersion: modified to take command line argument into account.

	* [if1632/kernel32.spec] [win32/process.c]
	FreeLibrary32: new function.
	TlsAlloc: initialize Tls to zero.
	InterlockedIncrement,InterlockedDecrement,InterlockedExchange: new
	functions.

	* [if1632/kernel32.spec]
	SetErrorMode,GetActiveWindow: new relays to existing functions.

	* [if1632/kernel32.spec][win32/user32.c]
	PeekMessage32A,PeekMessage32W: new functions.

	* [include/struct32.h][include/windows.h]
	Moved MSG32 to windows.h.
	Renamed MSG to MSG16.
	Modified prototypes to use MSG16

	* [include/winbase.h]
	OSVERSIONINFO32A,OSVERSIONINFO32W: new structures.

Sun Jun  9 20:53:30 1996  Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>

	* [if1632/Makefile.in] [loader/builtin.c]
	version.dll,lz32.dll added.

	* [include/lzexpand.h] [if1632/lz32.spec] [if1632/lzexpand.spec]
	  [misc/lzexpand.c]
	lz32.dll added.
	Modified to new function naming standard.

	* [include/ver.h] [if1632/ver.spec] [if1632/version.spec] [misc/ver.c]
	version.dll added (win32 version of ver.dll).
	Modified to new function naming standard.
	Use registry to look up a LOCALE langids too.
	(VerInstallFile,VerFindFile still stubs)

Fri Jun  7 20:40:20 1996  Albrecht Kleine  <kleine@ak.sax.de>

	* [files/file.c]
	Added a warning if GetTempFileName() gets a bad drive parameter.

	* [misc/commdlg.c]
	Changed file listbox color to gray in SaveFile dialog 
	(just like Windows does this).
1996-06-11 16:02:08 +00:00

90 lines
1.5 KiB
C

/*
* Unicode string management
*
* Copyright 1996 Martin von Loewis
*
* Conversion between Unicode and ISO-8859-1 is inherently lossy,
* so the conversion code should be called only if it does not matter
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include "windows.h"
#include "string32.h"
#include "xmalloc.h"
void STRING32_UniToAnsi(LPSTR dest,LPCWSTR src)
{
static int have_warned=0;
while(*src)
{
if(*src>255 && !have_warned)
{
fprintf(stderr,"Cannot deal with non-ANSI characters\n");
have_warned=1;
}
*dest++=*src++;
}
/* copy the terminator */
*dest = *src;
}
/* FIXME: we need to use unsigned char here, for if
* we got chars with the 7th bit set, we will get
* negative integers -> wrong unicode values
*/
void
STRING32_AnsiToUni(LPWSTR dest,LPCSTR src) {
unsigned char *usrc;
usrc=(unsigned char*)src;
while(*usrc)
*dest++=*usrc++;
*dest = *usrc;
}
LPSTR STRING32_DupUniToAnsi(LPCWSTR src)
{
LPSTR dest=xmalloc(lstrlen32W(src)+1);
STRING32_UniToAnsi(dest,src);
return dest;
}
LPWSTR STRING32_DupAnsiToUni(LPCSTR src)
{
LPWSTR dest=xmalloc(2*strlen(src)+2);
STRING32_AnsiToUni(dest,src);
return dest;
}
/* not an API function */
WCHAR STRING32_tolowerW(WCHAR c)
{
/* FIXME: Unicode */
return tolower(c);
}
LPWSTR
STRING32_lstrchrW(LPCWSTR a,WCHAR c) {
while(*a) {
if (*a==c)
return a;
a++;
}
return NULL;
}
LPWSTR
STRING32_strdupW(LPCWSTR a) {
LPWSTR b;
int len;
len=sizeof(WCHAR)*(lstrlen32W(a)+1);
b=(LPWSTR)xmalloc(len);
memcpy(b,a,len);
return b;
}