mirror of
https://github.com/reactos/wine.git
synced 2024-11-24 12:20:07 +00:00
Release 951226
Sat Dec 23 18:15:59 1995 Alexandre Julliard <julliard@sunsite.unc.edu> * [configure.in] [Makefile.in] [tools/install-sh] New 'install' target installs Wine binary, library and man page. Library is now more logically named libwine.a. Split toolkit/ directory into library (for library code) and libtest (for test programs). * [controls/edit.c] Quick hack to partially support EM_PASSWORD style (avoids displaying your passwords on the screen when testing programs...) * [configure.in] [controls/menu.c] [include/resource.h] [misc/commdlg.c] [misc/ole2nls.c] [misc/shell.c] [windows/msgbox.c] Language is now a run-time option (wine -language xx). * [debugger/dbg.y] Dump some more debugging info on crash. * [misc/profile.c] Only consider ';' as a comment if it's the first non-blank character on the line. * [miscemu/dpmi.c] More debugging info for real-mode callback. * [objects/gdiobj.c] Rewrote EnumObjects() to do the Right Thing. * [resources/sysres*] New directory containing system resources. Fri Dec 22 11:24:39 GMT 1995 John Harvey <john@division.co.uk> * [win32/file.c] [win32/memory.c] Unixware doesn't have MAP_ANON ifdefed out for now. * [misc/dos_fs.c] DOS_GetDosFileName didn't truncate paths starting ./ properly. * [tools/build.c] Produces assembly code that works with the unixware assembler. Wed Dec 20 22:22:29 +0100 1995 Morten Welinder <terra@diku.dk> * [miscemu/instr.c] INSTR_GetOperandAddr: 16-bit addresses should be masked to 16 bits. * [misc/dos_fs.c] DOS_readdir should always return directories, even if they don't match the file name mask. Tue Dec 19 18:00:00 1995 Uwe Bonnes <bon@elektron.ikp.physik.th-darmstadt.de> * [misc/exec.c] Give arguments to winhelp. * [miscemu/int21.c] Implemented Interrupt 21 AX=6C00 EXTENDED OPEN/CREATE. Created function ExtendedOpenCreateFile. Give for some Windows95 interrupts the return value 'not implemented'. Sun Dec 17 16:51:56 EST 1995 Jim Peterson <jspeter@birch.ee.vt.edu> * [include/kernel32.h] [include/windows.h] Moved the typedefs for SYSTEMTIME and LPSYSTEMTIME from include/kernel32.h to include/windows.h and declared the new Win32 API functions Sleep(), GetLocalTime(), and GetSystemTime(). Redefined INFINITE as 0xFFFFFFFF if WINELIB32. * [rc/rc (new file)] Created the shell script 'rc', which should simplify resource compilation. * [win32/environment.c] Kludged around an undefined reference to wine_files. This change should be fixed some time. * [win32/time.c] [if1632/kernel32.spec] Added the functions GetSystemTime(), and Sleep(). * [miscemu/int21.c] Renamed static function GetSystemTime to INT21_GetSystemTime to avoid conflicts with the API function of the same name. * [include/wintypes.h] Added the SPFMT definition for printf statements. * [misc/shell.c] [include/shell.h] Changed ERROR_* defines to SHELL_ERROR_*, as they were conflicting with the ones in include/winerror.h. They should probably use the versions in winerror.h, but I'm not certain, and that can be done later. * [windows/mdi.c] Translated WM_MDIACTIVATE(?,(LOhwnd,HIhwnd)) messages to WM_MDIACTIVATE(HIhwnd,LOhwnd) for WINELIB32. The ? parameter (boolean) was discarded with this translation. Translated handler of WM_MDISETMENU(ref,(loHMENU,hiHMENU)) to handle WM_MDISETMENU(loHMENU, hiHMENU) messages in WINELIB32 (ref assumed false, call DrawMenuBar() if desired). * [*/*] General explicit casts and more rigid typing to remove warnings. * [include/winpos.h] [windows/winpos.c] Changed return type of WINPOS_ChangeActiveWindow to BOOL. * [include/commdlg.h] [misc/commdlg.c] Added prototypes for ChooseColor(), CommDlgExtendedError(), FindText() GetFileTitle(), GetOpenFileName(), GetSaveFileName(), PrintDlg, and ReplaceText(). Renamed the CommDlgExtendError() function to CommDlgExtendedError(). Made GetFileTitle return a short, as per the API definition. * [Makefile.in] Added line to clean and distclean that removes temporaries from the include directory. Sat Dec 16 19:39:14 MET 1995 Steffen Moeller <smoe0024@rz.uni-hildesheim.de> * [controls/edit.c] Almost rewrote EDIT_GetLineMsg. Sat Dec 16 13:51:48 MST 1995 Andrew Taylor <andrew@riscan.com> * [windows/mdi.c] Fixed MDITile() bug that occurs when 0 windows are present or all windows are minimized. Wed Dec 12 23:30:00 1995 Uwe Bonnes <bon@elektron.ikp.physik.th-darmstadt.de> * [misc/profile.c] Try harder to find files, especially in the working directory. Look in $HOME/.wine too and create it there if it isn't found.
This commit is contained in:
parent
d471965c9e
commit
d7d4fdf898
16
ANNOUNCE
16
ANNOUNCE
@ -1,13 +1,13 @@
|
||||
This is release 951212 of Wine the MS Windows emulator. This is still a
|
||||
This is release 951226 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.
|
||||
|
||||
Patches should be submitted to "wine-new@amscons.com". Please don't forget
|
||||
to include a ChangeLog entry. I'll make a new release every other week.
|
||||
|
||||
WHAT'S NEW with Wine-951212: (see ChangeLog for details)
|
||||
- Many more Winelib and Win32 fixes.
|
||||
- Window management and MDI improvements.
|
||||
WHAT'S NEW with Wine-951226: (see ChangeLog for details)
|
||||
- Many more Winelib fixes.
|
||||
- Language is now a run-time option.
|
||||
- Lots of bug fixes.
|
||||
|
||||
See the README file in the distribution for installation instructions.
|
||||
@ -16,10 +16,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:
|
||||
|
||||
sunsite.unc.edu:/pub/Linux/ALPHA/wine/Wine-951212.tar.gz
|
||||
tsx-11.mit.edu:/pub/linux/ALPHA/Wine/development/Wine-951212.tar.gz
|
||||
ftp.infomagic.com:/pub/mirrors/linux/wine/development/Wine-951212.tar.gz
|
||||
aris.com:/pub/linux/ALPHA/Wine/development/Wine-951212.tar.gz
|
||||
sunsite.unc.edu:/pub/Linux/ALPHA/wine/Wine-951226.tar.gz
|
||||
tsx-11.mit.edu:/pub/linux/ALPHA/Wine/development/Wine-951226.tar.gz
|
||||
ftp.infomagic.com:/pub/mirrors/linux/wine/development/Wine-951226.tar.gz
|
||||
aris.com:/pub/linux/ALPHA/Wine/development/Wine-951226.tar.gz
|
||||
|
||||
It should also be available from any site that mirrors tsx-11 or sunsite.
|
||||
|
||||
|
138
ChangeLog
138
ChangeLog
@ -1,3 +1,141 @@
|
||||
----------------------------------------------------------------------
|
||||
Sat Dec 23 18:15:59 1995 Alexandre Julliard <julliard@sunsite.unc.edu>
|
||||
|
||||
* [configure.in] [Makefile.in] [tools/install-sh]
|
||||
New 'install' target installs Wine binary, library and man page.
|
||||
Library is now more logically named libwine.a.
|
||||
Split toolkit/ directory into library (for library code) and
|
||||
libtest (for test programs).
|
||||
|
||||
* [controls/edit.c]
|
||||
Quick hack to partially support EM_PASSWORD style (avoids
|
||||
displaying your passwords on the screen when testing programs...)
|
||||
|
||||
* [configure.in] [controls/menu.c] [include/resource.h]
|
||||
[misc/commdlg.c] [misc/ole2nls.c] [misc/shell.c] [windows/msgbox.c]
|
||||
Language is now a run-time option (wine -language xx).
|
||||
|
||||
* [debugger/dbg.y]
|
||||
Dump some more debugging info on crash.
|
||||
|
||||
* [misc/profile.c]
|
||||
Only consider ';' as a comment if it's the first non-blank
|
||||
character on the line.
|
||||
|
||||
* [miscemu/dpmi.c]
|
||||
More debugging info for real-mode callback.
|
||||
|
||||
* [objects/gdiobj.c]
|
||||
Rewrote EnumObjects() to do the Right Thing.
|
||||
|
||||
* [resources/sysres*]
|
||||
New directory containing system resources.
|
||||
|
||||
Fri Dec 22 11:24:39 GMT 1995 John Harvey <john@division.co.uk>
|
||||
|
||||
* [win32/file.c] [win32/memory.c]
|
||||
Unixware doesn't have MAP_ANON ifdefed out for now.
|
||||
|
||||
* [misc/dos_fs.c]
|
||||
DOS_GetDosFileName didn't truncate paths starting ./ properly.
|
||||
|
||||
* [tools/build.c]
|
||||
Produces assembly code that works with the unixware assembler.
|
||||
|
||||
Wed Dec 20 22:22:29 +0100 1995 Morten Welinder <terra@diku.dk>
|
||||
|
||||
* [miscemu/instr.c]
|
||||
INSTR_GetOperandAddr: 16-bit addresses should be masked to 16 bits.
|
||||
|
||||
* [misc/dos_fs.c]
|
||||
DOS_readdir should always return directories, even if they don't
|
||||
match the file name mask.
|
||||
|
||||
Tue Dec 19 18:00:00 1995 Uwe Bonnes <bon@elektron.ikp.physik.th-darmstadt.de>
|
||||
|
||||
* [misc/exec.c]
|
||||
Give arguments to winhelp.
|
||||
|
||||
* [miscemu/int21.c]
|
||||
Implemented Interrupt 21 AX=6C00 EXTENDED OPEN/CREATE.
|
||||
Created function ExtendedOpenCreateFile.
|
||||
Give for some Windows95 interrupts the return value 'not
|
||||
implemented'.
|
||||
|
||||
Sun Dec 17 16:51:56 EST 1995 Jim Peterson <jspeter@birch.ee.vt.edu>
|
||||
|
||||
* [include/kernel32.h] [include/windows.h]
|
||||
Moved the typedefs for SYSTEMTIME and LPSYSTEMTIME from
|
||||
include/kernel32.h to include/windows.h and declared the new Win32
|
||||
API functions Sleep(), GetLocalTime(), and GetSystemTime().
|
||||
Redefined INFINITE as 0xFFFFFFFF if WINELIB32.
|
||||
|
||||
* [rc/rc (new file)]
|
||||
Created the shell script 'rc', which should simplify resource
|
||||
compilation.
|
||||
|
||||
* [win32/environment.c]
|
||||
Kludged around an undefined reference to wine_files. This change
|
||||
should be fixed some time.
|
||||
|
||||
* [win32/time.c] [if1632/kernel32.spec]
|
||||
Added the functions GetSystemTime(), and Sleep().
|
||||
|
||||
* [miscemu/int21.c]
|
||||
Renamed static function GetSystemTime to INT21_GetSystemTime to
|
||||
avoid conflicts with the API function of the same name.
|
||||
|
||||
* [include/wintypes.h]
|
||||
Added the SPFMT definition for printf statements.
|
||||
|
||||
* [misc/shell.c] [include/shell.h]
|
||||
Changed ERROR_* defines to SHELL_ERROR_*, as they were conflicting
|
||||
with the ones in include/winerror.h. They should probably use the
|
||||
versions in winerror.h, but I'm not certain, and that can be done
|
||||
later.
|
||||
|
||||
* [windows/mdi.c]
|
||||
Translated WM_MDIACTIVATE(?,(LOhwnd,HIhwnd)) messages to
|
||||
WM_MDIACTIVATE(HIhwnd,LOhwnd) for WINELIB32. The ? parameter
|
||||
(boolean) was discarded with this translation. Translated handler
|
||||
of WM_MDISETMENU(ref,(loHMENU,hiHMENU)) to handle
|
||||
WM_MDISETMENU(loHMENU, hiHMENU) messages in WINELIB32 (ref assumed
|
||||
false, call DrawMenuBar() if desired).
|
||||
|
||||
* [*/*]
|
||||
General explicit casts and more rigid typing to remove warnings.
|
||||
|
||||
* [include/winpos.h] [windows/winpos.c]
|
||||
Changed return type of WINPOS_ChangeActiveWindow to BOOL.
|
||||
|
||||
* [include/commdlg.h] [misc/commdlg.c]
|
||||
Added prototypes for ChooseColor(), CommDlgExtendedError(),
|
||||
FindText() GetFileTitle(), GetOpenFileName(), GetSaveFileName(),
|
||||
PrintDlg, and ReplaceText().
|
||||
Renamed the CommDlgExtendError() function to CommDlgExtendedError().
|
||||
Made GetFileTitle return a short, as per the API definition.
|
||||
|
||||
* [Makefile.in]
|
||||
Added line to clean and distclean that removes temporaries from
|
||||
the include directory.
|
||||
|
||||
Sat Dec 16 19:39:14 MET 1995 Steffen Moeller <smoe0024@rz.uni-hildesheim.de>
|
||||
|
||||
* [controls/edit.c]
|
||||
Almost rewrote EDIT_GetLineMsg.
|
||||
|
||||
Sat Dec 16 13:51:48 MST 1995 Andrew Taylor <andrew@riscan.com>
|
||||
|
||||
* [windows/mdi.c]
|
||||
Fixed MDITile() bug that occurs when 0 windows are present or all
|
||||
windows are minimized.
|
||||
|
||||
Wed Dec 12 23:30:00 1995 Uwe Bonnes <bon@elektron.ikp.physik.th-darmstadt.de>
|
||||
|
||||
* [misc/profile.c]
|
||||
Try harder to find files, especially in the working directory.
|
||||
Look in $HOME/.wine too and create it there if it isn't found.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
Mon Dec 11 19:08:55 1995 Alexandre Julliard <julliard@sunsite.unc.edu>
|
||||
|
||||
|
@ -1,21 +1,36 @@
|
||||
# Global rules shared by all makefiles
|
||||
# The makefile must define at least TOPSRC and MODULE
|
||||
|
||||
# First some useful definitions
|
||||
|
||||
CC = @CC@
|
||||
CPP = @CPP@
|
||||
CFLAGS = @CFLAGS@
|
||||
DEFS = @DEFS@
|
||||
LANG = @LANG@
|
||||
X_CFLAGS = @X_CFLAGS@
|
||||
X_LIBS = @X_LIBS@
|
||||
XPM_LIB = -lXpm
|
||||
XLIB = @X_PRE_LIBS@ -lXext -lX11 @X_EXTRA_LIBS@
|
||||
LDLIBS = @LDLIBS@
|
||||
YACC = @YACC@
|
||||
LEX = @LEX@
|
||||
LEXLIB = @LEXLIB@
|
||||
DIVINCL = -I$(TOPSRC)/include
|
||||
ALLCFLAGS = $(CFLAGS) $(DEFS) -ALANG\($(LANG)\) $(X_CFLAGS) $(DIVINCL) $(EXTRA_DEFS)
|
||||
ALLCFLAGS = $(CFLAGS) $(DEFS) $(X_CFLAGS) $(DIVINCL) $(EXTRA_DEFS)
|
||||
LDCOMBINE = ld -r
|
||||
RM = rm -f
|
||||
BUILD = $(TOPSRC)/tools/build
|
||||
WINERC = $(TOPSRC)/rc/winerc
|
||||
WINELIB = $(TOPSRC)/libwine.a
|
||||
SUBMAKE = $(MAKE) 'CC=$(CC)' 'CFLAGS=$(CFLAGS)' 'DEFS=$(DEFS)'
|
||||
@SET_MAKE@
|
||||
|
||||
OBJS = $(C_SRCS:.c=.o) $(ASM_SRCS:.S=.o)
|
||||
OBJS = $(C_SRCS:.c=.o) $(ASM_SRCS:.S=.o) $(EXTRA_OBJS)
|
||||
|
||||
|
||||
# Implicit rules
|
||||
|
||||
.SUFFIXES: .rc
|
||||
|
||||
.c.o:
|
||||
$(CC) -c $(ALLCFLAGS) -o $*.o $<
|
||||
@ -23,20 +38,46 @@ OBJS = $(C_SRCS:.c=.o) $(ASM_SRCS:.S=.o)
|
||||
.S.o:
|
||||
$(CC) -c -o $*.o $<
|
||||
|
||||
.rc.c:
|
||||
echo "#include \"windows.h\"" >winerctmp.c
|
||||
echo WINDOWS_H_ENDS_HERE >>winerctmp.c
|
||||
cat $< >>winerctmp.c
|
||||
$(CPP) $(DEFS) $(DIVINCL) -P winerctmp.c | sed -e '1,/^WINDOWS_H_ENDS_HERE/d' | $(WINERC) -c -o $* -p $*
|
||||
$(RM) winerctmp.c
|
||||
|
||||
.rc.h:
|
||||
echo "#include \"windows.h\"" >winerctmp.c
|
||||
echo WINDOWS_H_ENDS_HERE >>winerctmp.c
|
||||
cat $< >>winerctmp.c
|
||||
$(CPP) $(DEFS) $(DIVINCL) -P winerctmp.c | sed -e '1,/^WINDOWS_H_ENDS_HERE/d' | $(WINERC) -c -o $* -p $*
|
||||
$(RM) winerctmp.c
|
||||
|
||||
|
||||
# Rule to rebuild resource compiler
|
||||
|
||||
$(WINERC) check_winerc:
|
||||
cd $(TOPSRC)/rc; $(SUBMAKE) winerc
|
||||
|
||||
|
||||
# Rule for main module
|
||||
|
||||
$(MODULE).o: $(OBJS)
|
||||
$(LDCOMBINE) $(OBJS) -o $(MODULE).o
|
||||
|
||||
|
||||
# Misc. rules
|
||||
|
||||
depend:: $(C_SRCS)
|
||||
sed '/\#\#\# Dependencies/q' < Makefile > tmp_make
|
||||
$(CC) $(ALLCFLAGS) -MM $(C_SRCS) >> tmp_make
|
||||
mv tmp_make Makefile
|
||||
|
||||
clean::
|
||||
$(RM) *.o \#*\# *~ *.bak *.flc tmp_make
|
||||
$(RM) *.o \#*\# *~ *.bak *.flc tmp_make winerctmp.c
|
||||
|
||||
distclean:: clean
|
||||
$(RM) Makefile
|
||||
|
||||
langclean::
|
||||
|
||||
dummy:
|
||||
|
||||
# End of global rules
|
||||
|
76
Makefile.in
76
Makefile.in
@ -3,18 +3,18 @@
|
||||
# all (default): build wine
|
||||
# clean: remove all intermediate files
|
||||
# distclean: also remove all files created by configure
|
||||
# langclean: remove all files which have to be remade if
|
||||
# a different LANGuage is selected
|
||||
# depend: create the dependencies
|
||||
# etags: Create a TAGS file for Emacs.
|
||||
#
|
||||
# Author: Michael Patra <micky@marie.physik.tu-berlin.de>
|
||||
# <patra@itp1.physik.tu-berlin.de>
|
||||
|
||||
# First some useful definitions
|
||||
|
||||
CC = @CC@
|
||||
CPP = @CPP@
|
||||
CFLAGS = @CFLAGS@
|
||||
DEFS = @DEFS@
|
||||
LANG = @LANG@
|
||||
DEFS = @DEFS@ -DWINE_INI_GLOBAL=\"$(WINE_INI_GLOBAL)\"
|
||||
X_CFLAGS = @X_CFLAGS@
|
||||
X_LIBS = @X_LIBS@
|
||||
TOPSRC = @top_srcdir@
|
||||
@ -25,17 +25,50 @@ LDLIBS = @LDLIBS@
|
||||
AR = ar rc
|
||||
RANLIB = @RANLIB@
|
||||
RM = rm -f
|
||||
SUBMAKE = $(MAKE) 'CC=$(CC)' 'CFLAGS=$(CFLAGS)' 'DEFS=$(DEFS)'
|
||||
@SET_MAKE@
|
||||
|
||||
# Installation infos
|
||||
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
bindir = @bindir@
|
||||
libdir = @libdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
mandir = @mandir@/man1
|
||||
manext = .1
|
||||
WINE_INI_GLOBAL = $(sysconfdir)/wine.conf
|
||||
|
||||
# Main target to build
|
||||
|
||||
MAIN_TARGET = @MAIN_TARGET@
|
||||
|
||||
COMMONSUBDIRS = rc controls ipc loader misc multimedia objects win32 windows
|
||||
COMMONSUBDIRS = \
|
||||
rc \
|
||||
controls \
|
||||
ipc \
|
||||
loader \
|
||||
misc \
|
||||
multimedia \
|
||||
objects \
|
||||
resources \
|
||||
win32 \
|
||||
windows
|
||||
|
||||
EMUSUBDIRS = tools debugger debugger/readline if1632 memory miscemu
|
||||
EMUSUBDIRS = \
|
||||
tools \
|
||||
debugger \
|
||||
debugger/readline \
|
||||
if1632 \
|
||||
memory \
|
||||
miscemu
|
||||
|
||||
LIBSUBDIRS = toolkit
|
||||
LIBSUBDIRS = library
|
||||
|
||||
ALLSUBDIRS = $(COMMONSUBDIRS) $(EMUSUBDIRS) $(LIBSUBDIRS)
|
||||
ALLSUBDIRS = $(COMMONSUBDIRS) $(EMUSUBDIRS) $(LIBSUBDIRS) libtest
|
||||
|
||||
COMMONOBJS = \
|
||||
controls/controls.o \
|
||||
@ -44,7 +77,7 @@ COMMONOBJS = \
|
||||
misc/misc.o \
|
||||
multimedia/multimedia.o \
|
||||
objects/objects.o \
|
||||
rc/rc.o \
|
||||
resources/resources.o \
|
||||
win32/win32.o \
|
||||
windows/windows.o
|
||||
|
||||
@ -55,22 +88,31 @@ EMUOBJS = \
|
||||
memory/memory.o \
|
||||
miscemu/miscemu.o
|
||||
|
||||
LIBOBJS = toolkit/toolkit.o
|
||||
LIBOBJS = library/library.o
|
||||
|
||||
|
||||
all: $(MAIN_TARGET)
|
||||
|
||||
install: install_$(MAIN_TARGET)
|
||||
|
||||
wine wine.sym: $(COMMONSUBDIRS) $(EMUSUBDIRS) dummy
|
||||
$(CC) -o wine $(COMMONOBJS) $(EMUOBJS) $(LDOPTIONS) $(X_LIBS) $(XPM_LIB) $(XLIB) $(LDLIBS)
|
||||
nm -n wine | grep -v _compiled >wine.sym
|
||||
|
||||
winelib.a: $(COMMONSUBDIRS) $(LIBSUBDIRS) dummy
|
||||
install_wine: dummy
|
||||
$(INSTALL_PROGRAM) wine $(bindir)/wine
|
||||
$(INSTALL_DATA) wine.man $(mandir)/wine$(manext)
|
||||
|
||||
libwine.a: $(COMMONSUBDIRS) $(LIBSUBDIRS) dummy
|
||||
$(RM) $@
|
||||
$(AR) $@ $(COMMONOBJS) $(LIBOBJS)
|
||||
$(RANLIB) $@
|
||||
|
||||
install_libwine.a: dummy
|
||||
$(INSTALL_DATA) libwine.a $(libdir)
|
||||
|
||||
$(ALLSUBDIRS): dummy
|
||||
@cd $@; $(MAKE) 'CC=$(CC)' 'CFLAGS=$(CFLAGS)' 'DEFS=$(DEFS)' 'LANG=$(LANG)'
|
||||
@cd $@; $(SUBMAKE)
|
||||
|
||||
depend:
|
||||
for i in $(ALLSUBDIRS); do (cd $$i; $(MAKE) depend); done
|
||||
@ -80,15 +122,13 @@ etags:
|
||||
|
||||
clean:
|
||||
for i in $(ALLSUBDIRS); do (cd $$i; $(MAKE) clean); done
|
||||
$(RM) *.o \#*\# *~ *.bak *.flc wine wine.sym winelib.a TAGS
|
||||
$(RM) *.o \#*\# *~ *.bak *.flc wine wine.sym libwine.a TAGS
|
||||
$(RM) include/\#*\# include/*~ include/*.bak include/*.flc
|
||||
|
||||
distclean:
|
||||
for i in $(ALLSUBDIRS); do (cd $$i; $(MAKE) distclean); done
|
||||
$(RM) *.o \#*\# *~ *.bak wine wine.sym winelib.a TAGS
|
||||
$(RM) *.o \#*\# *~ *.bak wine wine.sym libwine.a TAGS
|
||||
$(RM) include/\#*\# include/*~ include/*.bak include/*.flc
|
||||
$(RM) config.* include/config.h Make.rules Makefile
|
||||
|
||||
langclean:
|
||||
for i in $(ALLSUBDIRS); do (cd $$i; $(MAKE) langclean); done
|
||||
$(RM) wine wine.sym winelib.a
|
||||
|
||||
dummy:
|
||||
|
17
Wine.tmpl
17
Wine.tmpl
@ -1,17 +0,0 @@
|
||||
INCLUDES = -I$(TOP)/include -I$(TOP)
|
||||
|
||||
XCOMM Imake rules go here
|
||||
|
||||
/*
|
||||
* WineRelocatableTarget - generate rules to produce a relocatable object
|
||||
* file instead of a library.
|
||||
*/
|
||||
#ifndef WineRelocatableTarget
|
||||
#define WineRelocatableTarget(objname,objlist,depobj) @@\
|
||||
AllTarget(objname.o) @@\
|
||||
@@\
|
||||
objname.o: depobj @@\
|
||||
$(RM) $@ @@\
|
||||
$(LD) $(LDCOMBINEFLAGS) objlist depobj -o $@
|
||||
#endif /* WineRelocatableTarget */
|
||||
|
475
configure
vendored
475
configure
vendored
@ -2,7 +2,7 @@
|
||||
|
||||
# From configure.in configure.in 1.00
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated automatically using autoconf version 2.4
|
||||
# Generated automatically using autoconf version 2.7
|
||||
# Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
|
||||
#
|
||||
# This configure script is free software; the Free Software Foundation
|
||||
@ -14,8 +14,6 @@ ac_default_prefix=/usr/local
|
||||
# Any additions from configure.in:
|
||||
ac_help="$ac_help
|
||||
--with-library build Wine as a library instead of an emulator"
|
||||
ac_help="$ac_help
|
||||
--with-language=LANG change the language (LANG=En/De/Fr/Es/No/Fi/Da)"
|
||||
ac_help="$ac_help
|
||||
--with-ipc use inter-process communication for DDE"
|
||||
ac_help="$ac_help
|
||||
@ -44,9 +42,22 @@ target=NONE
|
||||
verbose=
|
||||
x_includes=NONE
|
||||
x_libraries=NONE
|
||||
bindir='${exec_prefix}/bin'
|
||||
sbindir='${exec_prefix}/sbin'
|
||||
libexecdir='${exec_prefix}/libexec'
|
||||
datadir='${prefix}/share'
|
||||
sysconfdir='${prefix}/etc'
|
||||
sharedstatedir='${prefix}/com'
|
||||
localstatedir='${prefix}/var'
|
||||
libdir='${exec_prefix}/lib'
|
||||
includedir='${prefix}/include'
|
||||
oldincludedir='/usr/include'
|
||||
infodir='${prefix}/info'
|
||||
mandir='${prefix}/man'
|
||||
|
||||
# Initialize some other variables.
|
||||
subdirs=
|
||||
MFLAGS= MAKEFLAGS=
|
||||
|
||||
ac_prev=
|
||||
for ac_option
|
||||
@ -68,9 +79,14 @@ do
|
||||
|
||||
case "$ac_option" in
|
||||
|
||||
-build | --build | --buil | --bui | --bu | --b)
|
||||
-bindir | --bindir | --bindi | --bind | --bin | --bi)
|
||||
ac_prev=bindir ;;
|
||||
-bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
|
||||
bindir="$ac_optarg" ;;
|
||||
|
||||
-build | --build | --buil | --bui | --bu)
|
||||
ac_prev=build ;;
|
||||
-build=* | --build=* | --buil=* | --bui=* | --bu=* | --b=*)
|
||||
-build=* | --build=* | --buil=* | --bui=* | --bu=*)
|
||||
build="$ac_optarg" ;;
|
||||
|
||||
-cache-file | --cache-file | --cache-fil | --cache-fi \
|
||||
@ -80,6 +96,12 @@ do
|
||||
| --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
|
||||
cache_file="$ac_optarg" ;;
|
||||
|
||||
-datadir | --datadir | --datadi | --datad | --data | --dat | --da)
|
||||
ac_prev=datadir ;;
|
||||
-datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
|
||||
| --da=*)
|
||||
datadir="$ac_optarg" ;;
|
||||
|
||||
-disable-* | --disable-*)
|
||||
ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
|
||||
# Reject names that are not valid shell variable names.
|
||||
@ -130,12 +152,29 @@ Configuration:
|
||||
Directory and file names:
|
||||
--prefix=PREFIX install architecture-independent files in PREFIX
|
||||
[$ac_default_prefix]
|
||||
--exec-prefix=PREFIX install architecture-dependent files in PREFIX
|
||||
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
|
||||
[same as prefix]
|
||||
--bindir=DIR user executables in DIR [EPREFIX/bin]
|
||||
--sbindir=DIR system admin executables in DIR [EPREFIX/sbin]
|
||||
--libexecdir=DIR program executables in DIR [EPREFIX/libexec]
|
||||
--datadir=DIR read-only architecture-independent data in DIR
|
||||
[PREFIX/share]
|
||||
--sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]
|
||||
--sharedstatedir=DIR modifiable architecture-independent data in DIR
|
||||
[PREFIX/com]
|
||||
--localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]
|
||||
--libdir=DIR object code libraries in DIR [EPREFIX/lib]
|
||||
--includedir=DIR C header files in DIR [PREFIX/include]
|
||||
--oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]
|
||||
--infodir=DIR info documentation in DIR [PREFIX/info]
|
||||
--mandir=DIR man documentation in DIR [PREFIX/man]
|
||||
--srcdir=DIR find the sources in DIR [configure dir or ..]
|
||||
--program-prefix=PREFIX prepend PREFIX to installed program names
|
||||
--program-suffix=SUFFIX append SUFFIX to installed program names
|
||||
--program-transform-name=PROGRAM run sed PROGRAM on installed program names
|
||||
--program-transform-name=PROGRAM
|
||||
run sed PROGRAM on installed program names
|
||||
EOF
|
||||
cat << EOF
|
||||
Host type:
|
||||
--build=BUILD configure for building on BUILD [BUILD=HOST]
|
||||
--host=HOST configure for HOST [guessed]
|
||||
@ -147,8 +186,10 @@ Features and packages:
|
||||
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
|
||||
--x-includes=DIR X include files are in DIR
|
||||
--x-libraries=DIR X library files are in DIR
|
||||
--enable and --with options recognized:$ac_help
|
||||
EOF
|
||||
if test -n "$ac_help"; then
|
||||
echo "--enable and --with options recognized:$ac_help"
|
||||
fi
|
||||
exit 0 ;;
|
||||
|
||||
-host | --host | --hos | --ho)
|
||||
@ -156,6 +197,44 @@ EOF
|
||||
-host=* | --host=* | --hos=* | --ho=*)
|
||||
host="$ac_optarg" ;;
|
||||
|
||||
-includedir | --includedir | --includedi | --included | --include \
|
||||
| --includ | --inclu | --incl | --inc)
|
||||
ac_prev=includedir ;;
|
||||
-includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
|
||||
| --includ=* | --inclu=* | --incl=* | --inc=*)
|
||||
includedir="$ac_optarg" ;;
|
||||
|
||||
-infodir | --infodir | --infodi | --infod | --info | --inf)
|
||||
ac_prev=infodir ;;
|
||||
-infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
|
||||
infodir="$ac_optarg" ;;
|
||||
|
||||
-libdir | --libdir | --libdi | --libd)
|
||||
ac_prev=libdir ;;
|
||||
-libdir=* | --libdir=* | --libdi=* | --libd=*)
|
||||
libdir="$ac_optarg" ;;
|
||||
|
||||
-libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
|
||||
| --libexe | --libex | --libe)
|
||||
ac_prev=libexecdir ;;
|
||||
-libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
|
||||
| --libexe=* | --libex=* | --libe=*)
|
||||
libexecdir="$ac_optarg" ;;
|
||||
|
||||
-localstatedir | --localstatedir | --localstatedi | --localstated \
|
||||
| --localstate | --localstat | --localsta | --localst \
|
||||
| --locals | --local | --loca | --loc | --lo)
|
||||
ac_prev=localstatedir ;;
|
||||
-localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
|
||||
| --localstate=* | --localstat=* | --localsta=* | --localst=* \
|
||||
| --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
|
||||
localstatedir="$ac_optarg" ;;
|
||||
|
||||
-mandir | --mandir | --mandi | --mand | --man | --ma | --m)
|
||||
ac_prev=mandir ;;
|
||||
-mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
|
||||
mandir="$ac_optarg" ;;
|
||||
|
||||
-nfp | --nfp | --nf)
|
||||
# Obsolete; use --without-fp.
|
||||
with_fp=no ;;
|
||||
@ -168,6 +247,15 @@ EOF
|
||||
| --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
|
||||
no_recursion=yes ;;
|
||||
|
||||
-oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
|
||||
| --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
|
||||
| --oldin | --oldi | --old | --ol | --o)
|
||||
ac_prev=oldincludedir ;;
|
||||
-oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
|
||||
| --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
|
||||
| --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
|
||||
oldincludedir="$ac_optarg" ;;
|
||||
|
||||
-prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
|
||||
ac_prev=prefix ;;
|
||||
-prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
|
||||
@ -208,6 +296,23 @@ EOF
|
||||
| -silent | --silent | --silen | --sile | --sil)
|
||||
silent=yes ;;
|
||||
|
||||
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
|
||||
ac_prev=sbindir ;;
|
||||
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
|
||||
| --sbi=* | --sb=*)
|
||||
sbindir="$ac_optarg" ;;
|
||||
|
||||
-sharedstatedir | --sharedstatedir | --sharedstatedi \
|
||||
| --sharedstated | --sharedstate | --sharedstat | --sharedsta \
|
||||
| --sharedst | --shareds | --shared | --share | --shar \
|
||||
| --sha | --sh)
|
||||
ac_prev=sharedstatedir ;;
|
||||
-sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
|
||||
| --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
|
||||
| --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
|
||||
| --sha=* | --sh=*)
|
||||
sharedstatedir="$ac_optarg" ;;
|
||||
|
||||
-site | --site | --sit)
|
||||
ac_prev=site ;;
|
||||
-site=* | --site=* | --sit=*)
|
||||
@ -218,6 +323,13 @@ EOF
|
||||
-srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
|
||||
srcdir="$ac_optarg" ;;
|
||||
|
||||
-sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
|
||||
| --syscon | --sysco | --sysc | --sys | --sy)
|
||||
ac_prev=sysconfdir ;;
|
||||
-sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
|
||||
| --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
|
||||
sysconfdir="$ac_optarg" ;;
|
||||
|
||||
-target | --target | --targe | --targ | --tar | --ta | --t)
|
||||
ac_prev=target ;;
|
||||
-target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
|
||||
@ -227,7 +339,7 @@ EOF
|
||||
verbose=yes ;;
|
||||
|
||||
-version | --version | --versio | --versi | --vers)
|
||||
echo "configure generated by autoconf version 2.4"
|
||||
echo "configure generated by autoconf version 2.7"
|
||||
exit 0 ;;
|
||||
|
||||
-with-* | --with-*)
|
||||
@ -273,7 +385,7 @@ EOF
|
||||
-*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
|
||||
;;
|
||||
|
||||
*)
|
||||
*)
|
||||
if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
|
||||
echo "configure: warning: $ac_option: invalid host type" 1>&2
|
||||
fi
|
||||
@ -392,9 +504,12 @@ fi
|
||||
|
||||
ac_ext=c
|
||||
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
|
||||
ac_cpp='$CPP $CPPFLAGS'
|
||||
ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5'
|
||||
ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5'
|
||||
ac_cpp='echo $CPP $CPPFLAGS 1>&5;
|
||||
$CPP $CPPFLAGS'
|
||||
ac_compile='echo ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5;
|
||||
${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5'
|
||||
ac_link='echo ${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5;
|
||||
${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5'
|
||||
|
||||
if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
|
||||
# Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
|
||||
@ -409,39 +524,48 @@ else
|
||||
fi
|
||||
|
||||
|
||||
ac_aux_dir=
|
||||
for ac_dir in tools $srcdir/tools; do
|
||||
if test -f $ac_dir/install-sh; then
|
||||
ac_aux_dir=$ac_dir
|
||||
ac_install_sh="$ac_aux_dir/install-sh -c"
|
||||
break
|
||||
elif test -f $ac_dir/install.sh; then
|
||||
ac_aux_dir=$ac_dir
|
||||
ac_install_sh="$ac_aux_dir/install.sh -c"
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$ac_aux_dir"; then
|
||||
{ echo "configure: error: can not find install-sh or install.sh in tools $srcdir/tools" 1>&2; exit 1; }
|
||||
fi
|
||||
ac_config_guess=$ac_aux_dir/config.guess
|
||||
ac_config_sub=$ac_aux_dir/config.sub
|
||||
ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
|
||||
|
||||
|
||||
# We want these before the checks, so the checks can modify their values.
|
||||
test -z "$CFLAGS" && CFLAGS="-g -O2 -Wall"
|
||||
test -z "$CFLAGS" && CFLAGS="-g -O2"
|
||||
test -z "$LDFLAGS" && LDFLAGS=-g
|
||||
test -z "$LDLIBS" && LDLIBS=-lm
|
||||
|
||||
|
||||
# Check whether --with-library or --without-library was given.
|
||||
withval="$with_library"
|
||||
if test -n "$withval"; then
|
||||
if test "${with_library+set}" = set; then
|
||||
withval="$with_library"
|
||||
cat >> confdefs.h <<\EOF
|
||||
#define WINELIB 1
|
||||
EOF
|
||||
MAIN_TARGET="winelib.a"
|
||||
MAIN_TARGET="libwine.a"
|
||||
else
|
||||
MAIN_TARGET="wine"
|
||||
fi
|
||||
|
||||
|
||||
|
||||
# Check whether --with-language or --without-language was given.
|
||||
withval="$with_language"
|
||||
if test -n "$withval"; then
|
||||
LANG="$withval"
|
||||
else
|
||||
LANG=En
|
||||
fi
|
||||
|
||||
|
||||
|
||||
# Check whether --with-ipc or --without-ipc was given.
|
||||
withval="$with_ipc"
|
||||
if test -n "$withval"; then
|
||||
if test "${with_ipc+set}" = set; then
|
||||
withval="$with_ipc"
|
||||
cat >> confdefs.h <<\EOF
|
||||
#define CONFIG_IPC 1
|
||||
EOF
|
||||
@ -450,8 +574,8 @@ fi
|
||||
|
||||
|
||||
# Check whether --with-malloc-debug or --without-malloc-debug was given.
|
||||
withval="$with_malloc_debug"
|
||||
if test -n "$withval"; then
|
||||
if test "${with_malloc_debug+set}" = set; then
|
||||
withval="$with_malloc_debug"
|
||||
cat >> confdefs.h <<\EOF
|
||||
#define MALLOC_DEBUGGING 1
|
||||
EOF
|
||||
@ -530,6 +654,7 @@ else
|
||||
ac_cv_prog_gcc=no
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "$ac_t""$ac_cv_prog_gcc" 1>&6
|
||||
if test $ac_cv_prog_gcc = yes; then
|
||||
GCC=yes
|
||||
@ -547,7 +672,8 @@ fi
|
||||
rm -f conftest*
|
||||
|
||||
fi
|
||||
echo "$ac_t""$ac_cv_prog_gcc_g" 1>&6
|
||||
|
||||
echo "$ac_t""$ac_cv_prog_gcc_g" 1>&6
|
||||
if test $ac_cv_prog_gcc_g = yes; then
|
||||
CFLAGS="-g -O"
|
||||
else
|
||||
@ -559,6 +685,7 @@ else
|
||||
test "${CFLAGS+set}" = set || CFLAGS="-g"
|
||||
fi
|
||||
|
||||
test "x${GCC}" = "xyes" && CFLAGS="$CFLAGS -Wall -fno-strength-reduce"
|
||||
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
|
||||
# On Suns, sometimes $CPP names a directory.
|
||||
if test -n "$CPP" && test -d "$CPP"; then
|
||||
@ -574,7 +701,7 @@ else
|
||||
# On the NeXT, cc -E runs the code through the compiler's parser,
|
||||
# not just through cpp.
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 578 "configure"
|
||||
#line 705 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <assert.h>
|
||||
Syntax Error
|
||||
@ -588,7 +715,7 @@ else
|
||||
rm -rf conftest*
|
||||
CPP="${CC-cc} -E -traditional-cpp"
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 592 "configure"
|
||||
#line 719 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <assert.h>
|
||||
Syntax Error
|
||||
@ -640,8 +767,8 @@ fi
|
||||
echo $ac_n "checking for X""... $ac_c" 1>&6
|
||||
|
||||
# Check whether --with-x or --without-x was given.
|
||||
withval="$with_x"
|
||||
if test -n "$withval"; then
|
||||
if test "${with_x+set}" = set; then
|
||||
withval="$with_x"
|
||||
:
|
||||
fi
|
||||
|
||||
@ -667,7 +794,7 @@ EOF
|
||||
if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
|
||||
no_x=
|
||||
# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
|
||||
eval `make acfindx 2>/dev/null | grep -v make`
|
||||
eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
|
||||
# Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.
|
||||
for ac_extension in a so sl; do
|
||||
if test ! -f $ac_im_usrlibdir/libX11.$ac_extension &&
|
||||
@ -694,7 +821,7 @@ test -z "$x_direct_test_library" && x_direct_test_library=Xt
|
||||
test -z "$x_direct_test_function" && x_direct_test_function=XtMalloc
|
||||
test -z "$x_direct_test_include" && x_direct_test_include=X11/Intrinsic.h
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 698 "configure"
|
||||
#line 825 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <$x_direct_test_include>
|
||||
EOF
|
||||
@ -757,7 +884,7 @@ rm -f conftest*
|
||||
ac_save_LIBS="$LIBS"
|
||||
LIBS="-l$x_direct_test_library $LIBS"
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 761 "configure"
|
||||
#line 888 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
int main() { return 0; }
|
||||
@ -854,7 +981,7 @@ else
|
||||
X_LIBS="$X_LIBS -L$x_libraries"
|
||||
if test "`(uname) 2>/dev/null`" = SunOS &&
|
||||
uname -r | grep '^5' >/dev/null; then
|
||||
X_LIBS="$X_LIBS -R$x_libraries"
|
||||
X_LIBS="$X_LIBS -R $x_libraries"
|
||||
fi
|
||||
fi
|
||||
|
||||
@ -869,13 +996,14 @@ else
|
||||
# libraries we check for below, so use a different variable.
|
||||
# --interran@uluru.Stanford.EDU, kb@cs.umb.edu.
|
||||
echo $ac_n "checking for -lICE""... $ac_c" 1>&6
|
||||
if eval "test \"`echo '$''{'ac_cv_lib_ICE'+set}'`\" = set"; then
|
||||
ac_lib_var=`echo ICE | tr '.-/+' '___p'`
|
||||
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
ac_save_LIBS="$LIBS"
|
||||
LIBS="-lICE $LIBS"
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 879 "configure"
|
||||
#line 1007 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
int main() { return 0; }
|
||||
@ -885,16 +1013,16 @@ IceConnectionNumber()
|
||||
EOF
|
||||
if eval $ac_link; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_lib_ICE=yes"
|
||||
eval "ac_cv_lib_$ac_lib_var=yes"
|
||||
else
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_lib_ICE=no"
|
||||
eval "ac_cv_lib_$ac_lib_var=no"
|
||||
fi
|
||||
rm -f conftest*
|
||||
LIBS="$ac_save_LIBS"
|
||||
|
||||
fi
|
||||
if eval "test \"`echo '$ac_cv_lib_'ICE`\" = yes"; then
|
||||
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
|
||||
echo "$ac_t""yes" 1>&6
|
||||
X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
|
||||
else
|
||||
@ -912,13 +1040,14 @@ fi
|
||||
# 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 -ldnet""... $ac_c" 1>&6
|
||||
if eval "test \"`echo '$''{'ac_cv_lib_dnet'+set}'`\" = set"; then
|
||||
ac_lib_var=`echo dnet | tr '.-/+' '___p'`
|
||||
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
ac_save_LIBS="$LIBS"
|
||||
LIBS="-ldnet $LIBS"
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 922 "configure"
|
||||
#line 1051 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
int main() { return 0; }
|
||||
@ -928,16 +1057,16 @@ dnet_ntoa()
|
||||
EOF
|
||||
if eval $ac_link; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_lib_dnet=yes"
|
||||
eval "ac_cv_lib_$ac_lib_var=yes"
|
||||
else
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_lib_dnet=no"
|
||||
eval "ac_cv_lib_$ac_lib_var=no"
|
||||
fi
|
||||
rm -f conftest*
|
||||
LIBS="$ac_save_LIBS"
|
||||
|
||||
fi
|
||||
if eval "test \"`echo '$ac_cv_lib_'dnet`\" = yes"; then
|
||||
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
|
||||
echo "$ac_t""yes" 1>&6
|
||||
X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
|
||||
else
|
||||
@ -946,13 +1075,14 @@ fi
|
||||
|
||||
if test $ac_cv_lib_dnet = no; then
|
||||
echo $ac_n "checking for -ldnet_stub""... $ac_c" 1>&6
|
||||
if eval "test \"`echo '$''{'ac_cv_lib_dnet_stub'+set}'`\" = set"; then
|
||||
ac_lib_var=`echo dnet_stub | tr '.-/+' '___p'`
|
||||
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
ac_save_LIBS="$LIBS"
|
||||
LIBS="-ldnet_stub $LIBS"
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 956 "configure"
|
||||
#line 1086 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
int main() { return 0; }
|
||||
@ -962,16 +1092,16 @@ dnet_ntoa()
|
||||
EOF
|
||||
if eval $ac_link; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_lib_dnet_stub=yes"
|
||||
eval "ac_cv_lib_$ac_lib_var=yes"
|
||||
else
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_lib_dnet_stub=no"
|
||||
eval "ac_cv_lib_$ac_lib_var=no"
|
||||
fi
|
||||
rm -f conftest*
|
||||
LIBS="$ac_save_LIBS"
|
||||
|
||||
fi
|
||||
if eval "test \"`echo '$ac_cv_lib_'dnet_stub`\" = yes"; then
|
||||
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
|
||||
echo "$ac_t""yes" 1>&6
|
||||
X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
|
||||
else
|
||||
@ -985,13 +1115,14 @@ fi
|
||||
# Not sure which flavor of 386 UNIX this is, but it seems harmless to
|
||||
# check for it.
|
||||
echo $ac_n "checking for -lnsl""... $ac_c" 1>&6
|
||||
if eval "test \"`echo '$''{'ac_cv_lib_nsl'+set}'`\" = set"; then
|
||||
ac_lib_var=`echo nsl | tr '.-/+' '___p'`
|
||||
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
ac_save_LIBS="$LIBS"
|
||||
LIBS="-lnsl $LIBS"
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 995 "configure"
|
||||
#line 1126 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
int main() { return 0; }
|
||||
@ -1001,16 +1132,16 @@ t_accept()
|
||||
EOF
|
||||
if eval $ac_link; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_lib_nsl=yes"
|
||||
eval "ac_cv_lib_$ac_lib_var=yes"
|
||||
else
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_lib_nsl=no"
|
||||
eval "ac_cv_lib_$ac_lib_var=no"
|
||||
fi
|
||||
rm -f conftest*
|
||||
LIBS="$ac_save_LIBS"
|
||||
|
||||
fi
|
||||
if eval "test \"`echo '$ac_cv_lib_'nsl`\" = yes"; then
|
||||
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
|
||||
echo "$ac_t""yes" 1>&6
|
||||
X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
|
||||
else
|
||||
@ -1023,13 +1154,14 @@ fi
|
||||
# But -lsocket is broken on IRIX, according to simon@lia.di.epfl.ch.
|
||||
if test "`(uname) 2>/dev/null`" != IRIX; then
|
||||
echo $ac_n "checking for -lsocket""... $ac_c" 1>&6
|
||||
if eval "test \"`echo '$''{'ac_cv_lib_socket'+set}'`\" = set"; then
|
||||
ac_lib_var=`echo socket | tr '.-/+' '___p'`
|
||||
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
ac_save_LIBS="$LIBS"
|
||||
LIBS="-lsocket $LIBS"
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1033 "configure"
|
||||
#line 1165 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
int main() { return 0; }
|
||||
@ -1039,16 +1171,16 @@ socket()
|
||||
EOF
|
||||
if eval $ac_link; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_lib_socket=yes"
|
||||
eval "ac_cv_lib_$ac_lib_var=yes"
|
||||
else
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_lib_socket=no"
|
||||
eval "ac_cv_lib_$ac_lib_var=no"
|
||||
fi
|
||||
rm -f conftest*
|
||||
LIBS="$ac_save_LIBS"
|
||||
|
||||
fi
|
||||
if eval "test \"`echo '$ac_cv_lib_'socket`\" = yes"; then
|
||||
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
|
||||
echo "$ac_t""yes" 1>&6
|
||||
X_EXTRA_LIBS="$X_EXTRA_LIBS -lsocket"
|
||||
else
|
||||
@ -1127,13 +1259,14 @@ then
|
||||
*) ac_lib=l ;;
|
||||
esac
|
||||
echo $ac_n "checking for -l$ac_lib""... $ac_c" 1>&6
|
||||
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib'+set}'`\" = set"; then
|
||||
ac_lib_var=`echo $ac_lib | tr '.-/+' '___p'`
|
||||
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
ac_save_LIBS="$LIBS"
|
||||
LIBS="-l$ac_lib $LIBS"
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1137 "configure"
|
||||
#line 1270 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
int main() { return 0; }
|
||||
@ -1143,16 +1276,16 @@ yywrap()
|
||||
EOF
|
||||
if eval $ac_link; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_lib_$ac_lib=yes"
|
||||
eval "ac_cv_lib_$ac_lib_var=yes"
|
||||
else
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_lib_$ac_lib=no"
|
||||
eval "ac_cv_lib_$ac_lib_var=no"
|
||||
fi
|
||||
rm -f conftest*
|
||||
LIBS="$ac_save_LIBS"
|
||||
|
||||
fi
|
||||
if eval "test \"`echo '$ac_cv_lib_'$ac_lib`\" = yes"; then
|
||||
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
|
||||
echo "$ac_t""yes" 1>&6
|
||||
LEXLIB="-l$ac_lib"
|
||||
else
|
||||
@ -1189,14 +1322,74 @@ else
|
||||
echo "$ac_t""no" 1>&6
|
||||
fi
|
||||
|
||||
# Find a good install program. We prefer a C program (faster),
|
||||
# so one script is as good as another. But avoid the broken or
|
||||
# incompatible versions:
|
||||
# SysV /etc/install, /usr/sbin/install
|
||||
# SunOS /usr/etc/install
|
||||
# IRIX /sbin/install
|
||||
# AIX /bin/install
|
||||
# AFS /usr/afsws/bin/install, which mishandles nonexistent args
|
||||
# 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
|
||||
if test -z "$INSTALL"; then
|
||||
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
|
||||
for ac_dir in $PATH; do
|
||||
# Account for people who put trailing slashes in PATH elements.
|
||||
case "$ac_dir/" in
|
||||
/|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
|
||||
*)
|
||||
# OSF1 and SCO ODT 3.0 have their own names for install.
|
||||
for ac_prog in ginstall installbsd scoinst install; do
|
||||
if test -f $ac_dir/$ac_prog; then
|
||||
if test $ac_prog = install &&
|
||||
grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
|
||||
# AIX install. It has an incompatible calling convention.
|
||||
# OSF/1 installbsd also uses dspmsg, but is usable.
|
||||
:
|
||||
else
|
||||
ac_cv_path_install="$ac_dir/$ac_prog -c"
|
||||
break 2
|
||||
fi
|
||||
fi
|
||||
done
|
||||
;;
|
||||
esac
|
||||
done
|
||||
IFS="$ac_save_ifs"
|
||||
|
||||
fi
|
||||
if test "${ac_cv_path_install+set}" = set; then
|
||||
INSTALL="$ac_cv_path_install"
|
||||
else
|
||||
# As a last resort, use the slow shell script. We don't cache a
|
||||
# path for INSTALL within a source directory, because that will
|
||||
# break other packages using the cache if that directory is
|
||||
# removed, or if the path is relative.
|
||||
INSTALL="$ac_install_sh"
|
||||
fi
|
||||
fi
|
||||
echo "$ac_t""$INSTALL" 1>&6
|
||||
|
||||
# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
|
||||
# It thinks the first close brace ends the variable substitution.
|
||||
test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
|
||||
|
||||
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
|
||||
|
||||
echo $ac_n "checking for -li386""... $ac_c" 1>&6
|
||||
if eval "test \"`echo '$''{'ac_cv_lib_i386'+set}'`\" = set"; then
|
||||
ac_lib_var=`echo i386 | tr '.-/+' '___p'`
|
||||
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
ac_save_LIBS="$LIBS"
|
||||
LIBS="-li386 $LIBS"
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1200 "configure"
|
||||
#line 1393 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
int main() { return 0; }
|
||||
@ -1206,16 +1399,16 @@ i386_set_ldt()
|
||||
EOF
|
||||
if eval $ac_link; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_lib_i386=yes"
|
||||
eval "ac_cv_lib_$ac_lib_var=yes"
|
||||
else
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_lib_i386=no"
|
||||
eval "ac_cv_lib_$ac_lib_var=no"
|
||||
fi
|
||||
rm -f conftest*
|
||||
LIBS="$ac_save_LIBS"
|
||||
|
||||
fi
|
||||
if eval "test \"`echo '$ac_cv_lib_'i386`\" = yes"; then
|
||||
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
|
||||
echo "$ac_t""yes" 1>&6
|
||||
LDLIBS="$LDLIBS -li386"
|
||||
else
|
||||
@ -1231,13 +1424,13 @@ 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 <<EOF
|
||||
#line 1235 "configure"
|
||||
#line 1428 "configure"
|
||||
#include "confdefs.h"
|
||||
/* System header to define __stub macros and hopefully few prototypes,
|
||||
which can conflict with char $ac_func(); below. */
|
||||
#include <assert.h>
|
||||
/* Override any gcc2 internal prototype to avoid an error. */
|
||||
char $ac_func();
|
||||
char $ac_func();
|
||||
|
||||
int main() { return 0; }
|
||||
int t() {
|
||||
@ -1265,7 +1458,7 @@ rm -f conftest*
|
||||
fi
|
||||
if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
|
||||
echo "$ac_t""yes" 1>&6
|
||||
ac_tr_func=HAVE_`echo $ac_func | tr '[a-z]' '[A-Z]'`
|
||||
ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
|
||||
cat >> confdefs.h <<EOF
|
||||
#define $ac_tr_func 1
|
||||
EOF
|
||||
@ -1283,7 +1476,7 @@ 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
|
||||
#line 1287 "configure"
|
||||
#line 1480 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <$ac_hdr>
|
||||
EOF
|
||||
@ -1301,7 +1494,7 @@ rm -f conftest*
|
||||
fi
|
||||
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
|
||||
echo "$ac_t""yes" 1>&6
|
||||
ac_tr_hdr=HAVE_`echo $ac_hdr | tr '[a-z]./\055' '[A-Z]___'`
|
||||
ac_tr_hdr=HAVE_`echo $ac_hdr | tr 'abcdefghijklmnopqrstuvwxyz./\055' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ___'`
|
||||
cat >> confdefs.h <<EOF
|
||||
#define $ac_tr_hdr 1
|
||||
EOF
|
||||
@ -1316,7 +1509,7 @@ 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 <<EOF
|
||||
#line 1320 "configure"
|
||||
#line 1513 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
@ -1357,6 +1550,7 @@ fi
|
||||
rm -f conftest*
|
||||
|
||||
fi
|
||||
|
||||
echo "$ac_t""$ac_cv_header_stat_broken" 1>&6
|
||||
if test $ac_cv_header_stat_broken = yes; then
|
||||
cat >> confdefs.h <<\EOF
|
||||
@ -1370,7 +1564,7 @@ if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1374 "configure"
|
||||
#line 1568 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
int main() { return 0; }
|
||||
@ -1383,7 +1577,7 @@ char const *const *ccp;
|
||||
char **p;
|
||||
/* NEC SVR4.0.2 mips cc rejects this. */
|
||||
struct point {int x, y;};
|
||||
static struct point const zero;
|
||||
static struct point const zero = {0,0};
|
||||
/* AIX XL C 1.02.0.0 rejects this.
|
||||
It does not let you subtract one const X* pointer from another in an arm
|
||||
of an if-expression whose if-part is not a constant expression */
|
||||
@ -1430,6 +1624,7 @@ fi
|
||||
rm -f conftest*
|
||||
|
||||
fi
|
||||
|
||||
echo "$ac_t""$ac_cv_c_const" 1>&6
|
||||
if test $ac_cv_c_const = no; then
|
||||
cat >> confdefs.h <<\EOF
|
||||
@ -1447,7 +1642,7 @@ else
|
||||
ac_cv_c_cross=yes
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1451 "configure"
|
||||
#line 1646 "configure"
|
||||
#include "confdefs.h"
|
||||
main(){return(0);}
|
||||
EOF
|
||||
@ -1460,15 +1655,16 @@ fi
|
||||
fi
|
||||
rm -fr conftest*
|
||||
fi
|
||||
cross_compiling=$ac_cv_c_cross
|
||||
|
||||
echo "$ac_t""$ac_cv_c_cross" 1>&6
|
||||
cross_compiling=$ac_cv_c_cross
|
||||
|
||||
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
|
||||
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1472 "configure"
|
||||
#line 1668 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
@ -1490,7 +1686,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
|
||||
#line 1494 "configure"
|
||||
#line 1690 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <string.h>
|
||||
EOF
|
||||
@ -1508,7 +1704,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
|
||||
#line 1512 "configure"
|
||||
#line 1708 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <stdlib.h>
|
||||
EOF
|
||||
@ -1526,10 +1722,10 @@ fi
|
||||
if test $ac_cv_header_stdc = yes; then
|
||||
# /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
|
||||
if test "$cross_compiling" = yes; then
|
||||
ac_cv_header_stdc=no
|
||||
:
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1533 "configure"
|
||||
#line 1729 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <ctype.h>
|
||||
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
|
||||
@ -1550,6 +1746,7 @@ fi
|
||||
rm -fr conftest*
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "$ac_t""$ac_cv_header_stdc" 1>&6
|
||||
if test $ac_cv_header_stdc = yes; then
|
||||
cat >> confdefs.h <<\EOF
|
||||
@ -1563,7 +1760,7 @@ 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 <<EOF
|
||||
#line 1567 "configure"
|
||||
#line 1764 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#if STDC_HEADERS
|
||||
@ -1590,27 +1787,8 @@ EOF
|
||||
fi
|
||||
|
||||
|
||||
if test -z "${top_srcdir}"; then
|
||||
TOP_SRCDIR=`pwd`
|
||||
else
|
||||
TOP_SRCDIR="${top_srcdir}"
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for /usr/local/etc/wine.conf""... $ac_c" 1>&6
|
||||
if test -f /usr/local/etc/wine.conf; then
|
||||
echo "$ac_t""yes" 1>&6
|
||||
WINE_INI_GLOBAL='"/usr/local/etc/wine.conf"'
|
||||
else
|
||||
echo "$ac_t""no" 1>&6
|
||||
WINE_INI_GLOBAL="\"${TOP_SRCDIR}/wine.ini\""
|
||||
fi
|
||||
|
||||
cat >> confdefs.h <<EOF
|
||||
#define WINE_INI_GLOBAL $WINE_INI_GLOBAL
|
||||
EOF
|
||||
|
||||
|
||||
MAKE_RULES=$TOP_SRCDIR/Make.rules
|
||||
MAKE_RULES=Make.rules
|
||||
|
||||
|
||||
trap '' 1 2 15
|
||||
@ -1701,7 +1879,7 @@ do
|
||||
echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
|
||||
exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
|
||||
-version | --version | --versio | --versi | --vers | --ver | --ve | --v)
|
||||
echo "$CONFIG_STATUS generated by autoconf version 2.4"
|
||||
echo "$CONFIG_STATUS generated by autoconf version 2.7"
|
||||
exit 0 ;;
|
||||
-help | --help | --hel | --he | --h)
|
||||
echo "\$ac_cs_usage"; exit 0 ;;
|
||||
@ -1710,12 +1888,35 @@ do
|
||||
done
|
||||
|
||||
ac_given_srcdir=$srcdir
|
||||
ac_given_INSTALL="$INSTALL"
|
||||
|
||||
trap 'rm -fr `echo "Make.rules controls/Makefile ipc/Makefile loader/Makefile memory/Makefile misc/Makefile miscemu/Makefile multimedia/Makefile objects/Makefile win32/Makefile windows/Makefile rc/Makefile debugger/Makefile debugger/readline/Makefile tools/Makefile if1632/Makefile toolkit/Makefile Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
|
||||
trap 'rm -fr `echo "
|
||||
Make.rules
|
||||
Makefile
|
||||
controls/Makefile
|
||||
debugger/Makefile
|
||||
debugger/readline/Makefile
|
||||
if1632/Makefile
|
||||
ipc/Makefile
|
||||
library/Makefile
|
||||
libtest/Makefile
|
||||
loader/Makefile
|
||||
memory/Makefile
|
||||
misc/Makefile
|
||||
miscemu/Makefile
|
||||
multimedia/Makefile
|
||||
objects/Makefile
|
||||
rc/Makefile
|
||||
resources/Makefile
|
||||
tools/Makefile
|
||||
win32/Makefile
|
||||
windows/Makefile " | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
|
||||
EOF
|
||||
cat >> $CONFIG_STATUS <<EOF
|
||||
|
||||
# Protect against being on the right side of a sed subst in config.status.
|
||||
sed 's/%@/@@/; s/@%/@@/; s/%g$/@g/; /@g$/s/[\\\\&%]/\\\\&/g;
|
||||
s/@@/%@/; s/@@/@%/; s/@g$/%g/' > conftest.subs <<\CEOF
|
||||
# Protect against being on the right side of a sed subst in config.status.
|
||||
sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
|
||||
s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
|
||||
$ac_vpsub
|
||||
$extrasub
|
||||
s%@CFLAGS@%$CFLAGS%g
|
||||
@ -1727,9 +1928,20 @@ s%@LIBS@%$LIBS%g
|
||||
s%@exec_prefix@%$exec_prefix%g
|
||||
s%@prefix@%$prefix%g
|
||||
s%@program_transform_name@%$program_transform_name%g
|
||||
s%@bindir@%$bindir%g
|
||||
s%@sbindir@%$sbindir%g
|
||||
s%@libexecdir@%$libexecdir%g
|
||||
s%@datadir@%$datadir%g
|
||||
s%@sysconfdir@%$sysconfdir%g
|
||||
s%@sharedstatedir@%$sharedstatedir%g
|
||||
s%@localstatedir@%$localstatedir%g
|
||||
s%@libdir@%$libdir%g
|
||||
s%@includedir@%$includedir%g
|
||||
s%@oldincludedir@%$oldincludedir%g
|
||||
s%@infodir@%$infodir%g
|
||||
s%@mandir@%$mandir%g
|
||||
s%@LDLIBS@%$LDLIBS%g
|
||||
s%@MAIN_TARGET@%$MAIN_TARGET%g
|
||||
s%@LANG@%$LANG%g
|
||||
s%@SET_MAKE@%$SET_MAKE%g
|
||||
s%@CC@%$CC%g
|
||||
s%@CPP@%$CPP%g
|
||||
@ -1741,7 +1953,8 @@ s%@YACC@%$YACC%g
|
||||
s%@LEX@%$LEX%g
|
||||
s%@LEXLIB@%$LEXLIB%g
|
||||
s%@RANLIB@%$RANLIB%g
|
||||
s%@WINE_INI_GLOBAL@%$WINE_INI_GLOBAL%g
|
||||
s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
|
||||
s%@INSTALL_DATA@%$INSTALL_DATA%g
|
||||
/@MAKE_RULES@/r $MAKE_RULES
|
||||
s%@MAKE_RULES@%%g
|
||||
|
||||
@ -1749,7 +1962,26 @@ CEOF
|
||||
EOF
|
||||
cat >> $CONFIG_STATUS <<EOF
|
||||
|
||||
CONFIG_FILES=\${CONFIG_FILES-"Make.rules controls/Makefile ipc/Makefile loader/Makefile memory/Makefile misc/Makefile miscemu/Makefile multimedia/Makefile objects/Makefile win32/Makefile windows/Makefile rc/Makefile debugger/Makefile debugger/readline/Makefile tools/Makefile if1632/Makefile toolkit/Makefile Makefile"}
|
||||
CONFIG_FILES=\${CONFIG_FILES-"Make.rules
|
||||
Makefile
|
||||
controls/Makefile
|
||||
debugger/Makefile
|
||||
debugger/readline/Makefile
|
||||
if1632/Makefile
|
||||
ipc/Makefile
|
||||
library/Makefile
|
||||
libtest/Makefile
|
||||
loader/Makefile
|
||||
memory/Makefile
|
||||
misc/Makefile
|
||||
miscemu/Makefile
|
||||
multimedia/Makefile
|
||||
objects/Makefile
|
||||
rc/Makefile
|
||||
resources/Makefile
|
||||
tools/Makefile
|
||||
win32/Makefile
|
||||
windows/Makefile "}
|
||||
EOF
|
||||
cat >> $CONFIG_STATUS <<\EOF
|
||||
for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
|
||||
@ -1784,6 +2016,10 @@ for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
|
||||
top_srcdir="$ac_dots$ac_given_srcdir" ;;
|
||||
esac
|
||||
|
||||
case "$ac_given_INSTALL" in
|
||||
[/$]*) INSTALL="$ac_given_INSTALL" ;;
|
||||
*) INSTALL="$ac_dots$ac_given_INSTALL" ;;
|
||||
esac
|
||||
echo creating "$ac_file"
|
||||
rm -f "$ac_file"
|
||||
configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
|
||||
@ -1796,6 +2032,7 @@ for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
|
||||
s%@configure_input@%$configure_input%g
|
||||
s%@srcdir@%$srcdir%g
|
||||
s%@top_srcdir@%$top_srcdir%g
|
||||
s%@INSTALL@%$INSTALL%g
|
||||
" -f conftest.subs $ac_given_srcdir/$ac_file_in > $ac_file
|
||||
fi; done
|
||||
rm -f conftest.subs
|
||||
|
58
configure.in
58
configure.in
@ -3,9 +3,10 @@ dnl Author: Michael Patra <micky@marie.physik.tu-berlin.de>
|
||||
dnl <patra@itp1.physik.tu-berlin.de>
|
||||
AC_REVISION([configure.in 1.00])
|
||||
AC_INIT(controls/edit.c)
|
||||
AC_CONFIG_AUX_DIR(tools)
|
||||
|
||||
# We want these before the checks, so the checks can modify their values.
|
||||
test -z "$CFLAGS" && CFLAGS="-g -O2 -Wall" AC_SUBST(CFLAGS)
|
||||
test -z "$CFLAGS" && CFLAGS="-g -O2" AC_SUBST(CFLAGS)
|
||||
test -z "$LDFLAGS" && LDFLAGS=-g AC_SUBST(LDFLAGS)
|
||||
test -z "$LDLIBS" && LDLIBS=-lm AC_SUBST(LDLIBS)
|
||||
|
||||
@ -13,15 +14,9 @@ dnl **** Command-line arguments ****
|
||||
|
||||
AC_ARG_WITH(library,
|
||||
[ --with-library build Wine as a library instead of an emulator],
|
||||
[AC_DEFINE(WINELIB) MAIN_TARGET="winelib.a"],[MAIN_TARGET="wine"])
|
||||
[AC_DEFINE(WINELIB) MAIN_TARGET="libwine.a"],[MAIN_TARGET="wine"])
|
||||
AC_SUBST(MAIN_TARGET)
|
||||
|
||||
AC_ARG_WITH(language,
|
||||
[ --with-language=LANG change the language (LANG=En/De/Fr/Es/No/Fi/Da)],
|
||||
[LANG="$withval"],
|
||||
[LANG=En],)
|
||||
AC_SUBST(LANG)
|
||||
|
||||
AC_ARG_WITH(ipc,
|
||||
[ --with-ipc use inter-process communication for DDE],
|
||||
[AC_DEFINE(CONFIG_IPC)])
|
||||
@ -34,10 +29,14 @@ dnl **** Check for some programs and libraries ****
|
||||
|
||||
AC_PROG_MAKE_SET
|
||||
AC_PROG_CC
|
||||
dnl Add some options for gcc
|
||||
test "x${GCC}" = "xyes" && CFLAGS="$CFLAGS -Wall -fno-strength-reduce"
|
||||
AC_PROG_CPP
|
||||
AC_PATH_XTRA
|
||||
AC_PROG_YACC
|
||||
AC_PROG_LEX
|
||||
AC_PROG_RANLIB
|
||||
AC_PROG_INSTALL
|
||||
dnl Check for -li386 for NetBSD
|
||||
AC_CHECK_LIB(i386,i386_set_ldt,LDLIBS="$LDLIBS -li386")
|
||||
|
||||
@ -49,27 +48,32 @@ AC_HEADER_STAT()
|
||||
AC_C_CONST()
|
||||
AC_TYPE_SIZE_T()
|
||||
|
||||
if test -z "${top_srcdir}"; then
|
||||
TOP_SRCDIR=`pwd`
|
||||
else
|
||||
TOP_SRCDIR="${top_srcdir}"
|
||||
fi
|
||||
dnl **** Generate output files ****
|
||||
|
||||
AC_MSG_CHECKING(for /usr/local/etc/wine.conf)
|
||||
if test -f /usr/local/etc/wine.conf; then
|
||||
AC_MSG_RESULT(yes)
|
||||
WINE_INI_GLOBAL='"/usr/local/etc/wine.conf"'
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
WINE_INI_GLOBAL="\"${TOP_SRCDIR}/wine.ini\""
|
||||
fi
|
||||
AC_SUBST(WINE_INI_GLOBAL)
|
||||
AC_DEFINE_UNQUOTED(WINE_INI_GLOBAL,$WINE_INI_GLOBAL)
|
||||
|
||||
MAKE_RULES=$TOP_SRCDIR/Make.rules
|
||||
MAKE_RULES=Make.rules
|
||||
AC_SUBST_FILE(MAKE_RULES)
|
||||
|
||||
AC_OUTPUT(Make.rules controls/Makefile ipc/Makefile loader/Makefile memory/Makefile misc/Makefile miscemu/Makefile multimedia/Makefile objects/Makefile win32/Makefile windows/Makefile rc/Makefile debugger/Makefile debugger/readline/Makefile tools/Makefile if1632/Makefile toolkit/Makefile Makefile)
|
||||
AC_OUTPUT([
|
||||
Make.rules
|
||||
Makefile
|
||||
controls/Makefile
|
||||
debugger/Makefile
|
||||
debugger/readline/Makefile
|
||||
if1632/Makefile
|
||||
ipc/Makefile
|
||||
library/Makefile
|
||||
libtest/Makefile
|
||||
loader/Makefile
|
||||
memory/Makefile
|
||||
misc/Makefile
|
||||
miscemu/Makefile
|
||||
multimedia/Makefile
|
||||
objects/Makefile
|
||||
rc/Makefile
|
||||
resources/Makefile
|
||||
tools/Makefile
|
||||
win32/Makefile
|
||||
windows/Makefile ])
|
||||
|
||||
echo
|
||||
echo "Configure finished. Do 'make depend; make' to compile Wine."
|
||||
@ -79,5 +83,5 @@ dnl Local Variables:
|
||||
dnl comment-start: "dnl "
|
||||
dnl comment-end: ""
|
||||
dnl comment-start-skip: "\\bdnl\\b\\s *"
|
||||
dnl compile-command: "make configure config.h.in"
|
||||
dnl compile-command: "autoconf"
|
||||
dnl End:
|
||||
|
@ -434,7 +434,7 @@ static LRESULT CBSelectString(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
LPHEADLIST lphl = ComboGetListHeader(hwnd);
|
||||
WORD wRet;
|
||||
|
||||
wRet = ListBoxFindString(lphl, wParam, lParam);
|
||||
wRet = ListBoxFindString(lphl, wParam, (SEGPTR)lParam);
|
||||
|
||||
/* XXX add functionality here */
|
||||
|
||||
@ -447,7 +447,7 @@ static LRESULT CBSelectString(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
static LRESULT CBFindString(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
LPHEADLIST lphl = ComboGetListHeader(hwnd);
|
||||
return ListBoxFindString(lphl, wParam, lParam);
|
||||
return ListBoxFindString(lphl, wParam, (SEGPTR)lParam);
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
|
@ -63,7 +63,7 @@ typedef struct
|
||||
int SelEndLine; /* ending line of selection */
|
||||
int SelEndCol; /* ending column of selection */
|
||||
HFONT hFont; /* handle of current font (if not default) */
|
||||
HANDLE hDeletedText; /* handle to deleted txet buffer for undo */
|
||||
HANDLE hDeletedText; /* handle to deleted text buffer for undo */
|
||||
int DeletedLength; /* length of deleted text */
|
||||
int DeletedCurrLine; /* starting line from which text was deleted */
|
||||
int DeletedCurrCol; /* starting col from which text was deleted */
|
||||
@ -509,7 +509,15 @@ static void EDIT_WriteText(HWND hwnd, char *lp, int off, int len, int row,
|
||||
es->BlankLine[(es->ClientWidth / es->CharWidths[32]) + 1] = 0;
|
||||
}
|
||||
|
||||
if (!(cp = strchr(str, VK_TAB)))
|
||||
if ((GetWindowLong( hwnd, GWL_STYLE ) & ES_PASSWORD))
|
||||
{
|
||||
int len = strlen(str);
|
||||
char *buff = xmalloc( len+1 );
|
||||
memset( buff, '*', len );
|
||||
buff[len] = '\0';
|
||||
TextOut( hdc, col - diff, row * es->txtht, buff, len );
|
||||
}
|
||||
else if (!(cp = strchr(str, VK_TAB)))
|
||||
TextOut(hdc, col - diff, row * es->txtht, str, strlen(str));
|
||||
else
|
||||
{
|
||||
@ -1920,15 +1928,35 @@ static LONG EDIT_SetTabStopsMsg(HWND hwnd, WORD wParam, LONG lParam)
|
||||
*/
|
||||
static LONG EDIT_GetLineMsg(HWND hwnd, WORD wParam, LONG lParam)
|
||||
{
|
||||
char *cp, *cp1;
|
||||
int len;
|
||||
unsigned char *buffer = (char *)lParam;
|
||||
char *cp;
|
||||
int len = 0;
|
||||
unsigned char *buffer = (char *)PTR_SEG_TO_LIN(lParam);
|
||||
|
||||
/* the line wanted */
|
||||
cp = EDIT_TextLine (hwnd, wParam);
|
||||
len = EDIT_LineLength(hwnd, wParam);
|
||||
|
||||
/* if cp==NULL nothing will be copied - I hope */
|
||||
if ((char *) NULL == cp && 0 != len) {
|
||||
fprintf(stdnimp,"edit: EDIT_GetLineMsg cp == NULL && len != 0");
|
||||
return 0L;
|
||||
}
|
||||
|
||||
if (0>len)
|
||||
fprintf(stdnimp,"edit: EDIT_GetLineMsg len < 0");
|
||||
|
||||
/* suggested reason for the following line:
|
||||
never copy more than the buffer's size ?
|
||||
I thought that this would make sense only if
|
||||
the lstrcpyn fun was used instead of the gnu strncpy.
|
||||
*/
|
||||
len = MIN(len, (WORD)(*buffer));
|
||||
|
||||
if (0>len)
|
||||
fprintf(stdnimp,"edit: EDIT_GetLineMsg len < 0 after MIN");
|
||||
|
||||
cp = EDIT_TextLine(hwnd, wParam);
|
||||
cp1 = EDIT_TextLine(hwnd, wParam + 1);
|
||||
len = MIN((int)(cp1 - cp), (WORD)(*buffer));
|
||||
dprintf_edit( stddeb, "EDIT_GetLineMsg: %d %d, len %d\n", (int)(WORD)(*buffer), (int)(WORD)(*(char *)buffer), len);
|
||||
strncpy(buffer, cp, len);
|
||||
lstrcpyn(buffer, cp, len);
|
||||
|
||||
return (LONG)len;
|
||||
}
|
||||
|
@ -759,7 +759,7 @@ static LONG LBCreate(HWND hwnd, WORD wParam, LONG lParam)
|
||||
|
||||
CreateListBoxStruct(hwnd, ODT_LISTBOX, dwStyle, GetParent(hwnd));
|
||||
lphl = ListBoxGetStorageHeader(hwnd);
|
||||
dprintf_listbox(stddeb,"ListBox created: lphl = %p dwStyle = "NPFMT":"NPFMT"\n",
|
||||
dprintf_listbox(stddeb,"ListBox created: lphl = %p dwStyle = %04x:%04x\n",
|
||||
lphl, HIWORD(dwStyle), LOWORD(dwStyle));
|
||||
|
||||
GetClientRect(hwnd,&rect);
|
||||
@ -1431,7 +1431,7 @@ static LONG LBDeleteString(HWND hwnd, WORD wParam, LONG lParam)
|
||||
static LONG LBFindString(HWND hwnd, WORD wParam, LONG lParam)
|
||||
{
|
||||
LPHEADLIST lphl = ListBoxGetStorageHeader(hwnd);
|
||||
return ListBoxFindString(lphl, wParam, lParam);
|
||||
return ListBoxFindString(lphl, wParam, (SEGPTR)lParam);
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
@ -1600,7 +1600,7 @@ static LONG LBSelectString(HWND hwnd, WORD wParam, LONG lParam)
|
||||
LPHEADLIST lphl = ListBoxGetStorageHeader(hwnd);
|
||||
WORD wRet;
|
||||
|
||||
wRet = ListBoxFindString(lphl, wParam, lParam);
|
||||
wRet = ListBoxFindString(lphl, wParam, (SEGPTR)lParam);
|
||||
|
||||
/* XXX add functionality here */
|
||||
|
||||
|
@ -23,14 +23,10 @@
|
||||
#include "win.h"
|
||||
#include "message.h"
|
||||
#include "graphics.h"
|
||||
#include "resource.h"
|
||||
#include "stddebug.h"
|
||||
/* #define DEBUG_MENU */
|
||||
/* #define DEBUG_MENUCALC */
|
||||
/* #define DEBUG_MENUSHORTCUT */
|
||||
#include "debug.h"
|
||||
|
||||
#include "../rc/sysres.h"
|
||||
|
||||
/* Dimension of the menu bitmaps */
|
||||
static WORD check_bitmap_width = 0, check_bitmap_height = 0;
|
||||
static WORD arrow_bitmap_width = 0, arrow_bitmap_height = 0;
|
||||
@ -265,7 +261,7 @@ static void MENU_CalcItemSize( HDC hdc, LPMENUITEM lpitem, HWND hwndOwner,
|
||||
mistruct->itemData = (long int)lpitem->item_text;
|
||||
mistruct->itemHeight = 16;
|
||||
mistruct->itemWidth = 30;
|
||||
SendMessage(hwndOwner,WM_MEASUREITEM,0,mistrsegp);
|
||||
SendMessage(hwndOwner,WM_MEASUREITEM,0,(LPARAM)mistrsegp);
|
||||
lpitem->rect.bottom += mistruct->itemHeight;
|
||||
lpitem->rect.right += mistruct->itemWidth;
|
||||
dprintf_menu(stddeb,"DrawMenuItem: MeasureItem %04x %d:%d!\n",
|
||||
@ -475,7 +471,7 @@ static void MENU_DrawMenuItem( HWND hwnd, HDC hdc, LPMENUITEM lpitem,
|
||||
distruct->hwndItem = hwnd;
|
||||
distruct->hDC = hdc;
|
||||
distruct->rcItem = lpitem->rect;
|
||||
SendMessage(hwnd,WM_DRAWITEM,0,distrsegp);
|
||||
SendMessage(hwnd,WM_DRAWITEM,0,(LPARAM)distrsegp);
|
||||
return;
|
||||
}
|
||||
if (menuBar && (lpitem->item_flags & MF_SEPARATOR)) return;
|
||||
@ -633,7 +629,7 @@ UINT MENU_DrawMenuBar(HDC hDC, LPRECT lprect, HWND hwnd, BOOL suppress_draw)
|
||||
int i;
|
||||
WND *wndPtr = WIN_FindWndPtr( hwnd );
|
||||
|
||||
lppop = (LPPOPUPMENU) USER_HEAP_LIN_ADDR( wndPtr->wIDmenu );
|
||||
lppop = (LPPOPUPMENU) USER_HEAP_LIN_ADDR( (HMENU)wndPtr->wIDmenu );
|
||||
if (lppop == NULL || lprect == NULL) return SYSMETRICS_CYMENU;
|
||||
dprintf_menu(stddeb,"MENU_DrawMenuBar("NPFMT", %p, %p); !\n",
|
||||
hDC, lprect, lppop);
|
||||
@ -1454,7 +1450,7 @@ void MENU_TrackKbdMenuBar( HWND hwnd, UINT wParam )
|
||||
SendMessage( hwnd, WM_ENTERMENULOOP, 0, 0 );
|
||||
SendMessage( hwnd, WM_INITMENU, wndPtr->wIDmenu, 0 );
|
||||
/* Select first selectable item */
|
||||
MENU_SelectItem( hwnd, wndPtr->wIDmenu, NO_SELECTED_ITEM );
|
||||
MENU_SelectItem( hwnd, (HMENU)wndPtr->wIDmenu, NO_SELECTED_ITEM );
|
||||
MENU_SelectNextItem( hwnd, (HMENU)wndPtr->wIDmenu );
|
||||
MENU_TrackMenu( (HMENU)wndPtr->wIDmenu, TPM_LEFTALIGN | TPM_LEFTBUTTON,
|
||||
0, 0, hwnd, NULL );
|
||||
@ -1672,7 +1668,7 @@ UINT GetMenuState(HMENU hMenu, UINT wItemID, UINT wFlags)
|
||||
/**********************************************************************
|
||||
* GetMenuItemCount [USER.263]
|
||||
*/
|
||||
WORD GetMenuItemCount(HMENU hMenu)
|
||||
INT GetMenuItemCount(HMENU hMenu)
|
||||
{
|
||||
LPPOPUPMENU menu;
|
||||
dprintf_menu(stddeb,"GetMenuItemCount("NPFMT");\n", hMenu);
|
||||
@ -1724,7 +1720,7 @@ BOOL InsertMenu(HMENU hMenu, UINT nPos, UINT wFlags, UINT wItemID, LPSTR lpNewIt
|
||||
/* Find where to insert new item */
|
||||
|
||||
if ((wFlags & MF_BYPOSITION) &&
|
||||
((nPos == (UINT)-1) || (nPos == GetMenuItemCount(hMenu))))
|
||||
((nPos == (UINT)-1) || (nPos == (UINT)GetMenuItemCount(hMenu))))
|
||||
{
|
||||
/* Special case: append to menu
|
||||
Some programs specify the menu length to do that */
|
||||
@ -1857,7 +1853,7 @@ BOOL DeleteMenu(HMENU hMenu, UINT nPos, UINT wFlags)
|
||||
{
|
||||
MENUITEM *item = MENU_FindItem( &hMenu, &nPos, wFlags );
|
||||
if (!item) return FALSE;
|
||||
if (item->item_flags & MF_POPUP) DestroyMenu( item->item_id );
|
||||
if (item->item_flags & MF_POPUP) DestroyMenu( (HMENU)item->item_id );
|
||||
/* nPos is now the position of the item */
|
||||
RemoveMenu( hMenu, nPos, wFlags | MF_BYPOSITION );
|
||||
return TRUE;
|
||||
@ -2093,7 +2089,7 @@ HMENU GetSubMenu(HMENU hMenu, short nPos)
|
||||
if ((UINT)nPos >= lppop->nItems) return 0;
|
||||
lpitem = (MENUITEM *) USER_HEAP_LIN_ADDR( lppop->hItems );
|
||||
if (!(lpitem[nPos].item_flags & MF_POPUP)) return 0;
|
||||
return lpitem[nPos].item_id;
|
||||
return (HMENU)lpitem[nPos].item_id;
|
||||
}
|
||||
|
||||
|
||||
@ -2190,9 +2186,12 @@ HMENU LoadMenuIndirect(LPSTR menu_template)
|
||||
HMENU CopySysMenu()
|
||||
{
|
||||
HMENU hMenu;
|
||||
HGLOBAL handle;
|
||||
LPPOPUPMENU menu;
|
||||
|
||||
hMenu = LoadMenuIndirect( sysres_MENU_SYSMENU.bytes );
|
||||
if (!(handle = SYSRES_LoadResource( SYSRES_MENU_SYSMENU ))) return 0;
|
||||
hMenu = LoadMenuIndirect( GlobalLock( handle ) );
|
||||
SYSRES_FreeResource( handle );
|
||||
if(!hMenu)
|
||||
{
|
||||
dprintf_menu(stddeb,"No SYSMENU\n");
|
||||
@ -2230,17 +2229,18 @@ WORD * ParseMenuResource(WORD *first_item, int level, HMENU hMenu)
|
||||
AppendMenu(hMenu, popup_item->item_flags,
|
||||
(UINT)hSubMenu, popup_item->item_text);
|
||||
}
|
||||
else {
|
||||
MENUITEMTEMPLATE *normal_item = (MENUITEMTEMPLATE *) item;
|
||||
next_item = (WORD *) (normal_item->item_text +
|
||||
strlen(normal_item->item_text) + 1);
|
||||
if (strlen(normal_item->item_text) == 0 && normal_item->item_id == 0)
|
||||
normal_item->item_flags |= MF_SEPARATOR;
|
||||
AppendMenu(hMenu, normal_item->item_flags,
|
||||
normal_item->item_id, normal_item->item_text);
|
||||
}
|
||||
}
|
||||
while (!(*item & MF_END));
|
||||
else
|
||||
{
|
||||
MENUITEMTEMPLATE *normal_item = (MENUITEMTEMPLATE *) item;
|
||||
WORD flags = normal_item->item_flags;
|
||||
next_item = (WORD *) (normal_item->item_text +
|
||||
strlen(normal_item->item_text) + 1);
|
||||
if (!normal_item->item_text[0] && !normal_item->item_id)
|
||||
flags |= MF_SEPARATOR; /* FIXME: do this in InsertMenu? */
|
||||
AppendMenu( hMenu, flags, normal_item->item_id,
|
||||
normal_item->item_text );
|
||||
}
|
||||
} while (!(*item & MF_END));
|
||||
return next_item;
|
||||
}
|
||||
|
||||
|
@ -25,6 +25,6 @@ lex.yy.c: debug.l
|
||||
$(LEX) -8 -I debug.l
|
||||
|
||||
clean::
|
||||
rm -f y.tab.c y.tab.h lex.yy.c
|
||||
$(RM) y.tab.c y.tab.h lex.yy.c
|
||||
|
||||
### Dependencies:
|
||||
|
@ -235,6 +235,19 @@ void wine_debug( int signal, struct sigcontext_struct *regs )
|
||||
if (newmode != dbg_mode)
|
||||
fprintf(stderr,"In %d bit mode.\n", dbg_mode = newmode);
|
||||
|
||||
if (signal != SIGTRAP) /* This is a real crash, dump some info */
|
||||
{
|
||||
DEBUG_InfoRegisters();
|
||||
DEBUG_InfoStack();
|
||||
if (dbg_mode == 16)
|
||||
{
|
||||
LDT_Print( SELECTOR_TO_ENTRY(DS_reg(DEBUG_context)), 1 );
|
||||
if (ES_reg(DEBUG_context) != DS_reg(DEBUG_context))
|
||||
LDT_Print( SELECTOR_TO_ENTRY(ES_reg(DEBUG_context)), 1 );
|
||||
}
|
||||
DEBUG_BackTrace();
|
||||
}
|
||||
|
||||
/* Show where we crashed */
|
||||
DEBUG_PrintAddress( &addr, dbg_mode );
|
||||
fprintf(stderr,": ");
|
||||
|
@ -40,13 +40,13 @@ void DEBUG_InfoStack(void)
|
||||
{ /* 32-bit mode */
|
||||
addr.seg = 0;
|
||||
addr.off = ESP_reg(DEBUG_context);
|
||||
DEBUG_ExamineMemory( &addr, 10, 'x' );
|
||||
DEBUG_ExamineMemory( &addr, 24, 'x' );
|
||||
}
|
||||
else /* 16-bit mode */
|
||||
{
|
||||
addr.seg = SS_reg(DEBUG_context);
|
||||
addr.off = SP_reg(DEBUG_context);
|
||||
DEBUG_ExamineMemory( &addr, 10, 'w' );
|
||||
DEBUG_ExamineMemory( &addr, 24, 'w' );
|
||||
}
|
||||
fprintf(stderr,"\n");
|
||||
}
|
||||
|
@ -1,5 +1,4 @@
|
||||
TOPSRC = @top_srcdir@
|
||||
BUILD = $(TOPSRC)/tools/build
|
||||
|
||||
MODULE = if1632
|
||||
|
||||
@ -41,7 +40,7 @@ all: checkbuild $(MODULE).o
|
||||
$(SPEC16_FILES) $(SPEC32_FILES): $(BUILD)
|
||||
|
||||
$(BUILD) checkbuild:
|
||||
cd $(TOPSRC)/tools; $(MAKE) 'CC=$(CC)' 'CFLAGS=$(CFLAGS)' 'DEFS=$(DEFS)' 'LANG=$(LANG)' build
|
||||
cd $(TOPSRC)/tools; $(SUBMAKE) build
|
||||
|
||||
call16.S: $(TOPSRC)/include/callback.h $(BUILD)
|
||||
$(BUILD) -call16 `cat $(TOPSRC)/include/callback.h | grep "extern.*CallTo16_" | sed 's/.*CallTo16_\(.*\)(.*/\1/' | sort | uniq` > call16.S
|
||||
|
@ -1,29 +1,29 @@
|
||||
name commdlg
|
||||
id 14
|
||||
|
||||
1 pascal GETOPENFILENAME(ptr) GetOpenFileName
|
||||
2 pascal GETSAVEFILENAME(ptr) GetSaveFileName
|
||||
5 pascal CHOOSECOLOR(ptr) ChooseColor
|
||||
6 pascal FILEOPENDLGPROC(word word word long) FileOpenDlgProc
|
||||
7 pascal FILESAVEDLGPROC(word word word long) FileSaveDlgProc
|
||||
8 pascal COLORDLGPROC(word word word long) ColorDlgProc
|
||||
# 9 pascal LOADALTERBITMAP exported, shared data
|
||||
11 pascal FINDTEXT(ptr) FindText
|
||||
12 pascal REPLACETEXT(ptr) ReplaceText
|
||||
13 pascal FINDTEXTDLGPROC(word word word long) FindTextDlgProc
|
||||
14 pascal REPLACETEXTDLGPROC(word word word long) ReplaceTextDlgProc
|
||||
15 stub ChooseFont
|
||||
# 16 pascal FORMATCHARDLGPROC exported, shared data
|
||||
# 18 pascal FONTSTYLEENUMPROC exported, shared data
|
||||
# 19 pascal FONTFAMILYENUMPROC exported, shared data
|
||||
20 pascal PRINTDLG(ptr) PrintDlg
|
||||
21 pascal PRINTDLGPROC(word word word long) PrintDlgProc
|
||||
22 pascal PRINTSETUPDLGPROC(word word word long) PrintSetupDlgProc
|
||||
# 23 pascal EDITINTEGERONLY exported, shared data
|
||||
# 25 pascal WANTARROWS exported, shared data
|
||||
26 pascal COMMDLGEXTENDEDERROR() CommDlgExtendError
|
||||
27 pascal GETFILETITLE(ptr ptr word) GetFileTitle
|
||||
# 28 pascal WEP exported, shared data
|
||||
# 29 pascal DWLBSUBCLASS exported, shared data
|
||||
# 30 pascal DWUPARROWHACK exported, shared data
|
||||
# 31 pascal DWOKSUBCLASS exported, shared data
|
||||
1 pascal16 GetOpenFileName(ptr) GetOpenFileName
|
||||
2 pascal16 GetSaveFileName(ptr) GetSaveFileName
|
||||
5 pascal16 ChooseColor(ptr) ChooseColor
|
||||
6 pascal FileOpenDlgProc(word word word long) FileOpenDlgProc
|
||||
7 pascal FileSaveDlgProc(word word word long) FileSaveDlgProc
|
||||
8 pascal ColorDlgProc(word word word long) ColorDlgProc
|
||||
#9 pascal LOADALTERBITMAP exported, shared data
|
||||
11 pascal16 FindText(ptr) FindText
|
||||
12 pascal16 ReplaceText(ptr) ReplaceText
|
||||
13 pascal FindTextDlgProc(word word word long) FindTextDlgProc
|
||||
14 pascal ReplaceTextDlgProc(word word word long) ReplaceTextDlgProc
|
||||
15 stub ChooseFont
|
||||
#16 pascal FORMATCHARDLGPROC exported, shared data
|
||||
#18 pascal FONTSTYLEENUMPROC exported, shared data
|
||||
#19 pascal FONTFAMILYENUMPROC exported, shared data
|
||||
20 pascal16 PrintDlg(ptr) PrintDlg
|
||||
21 pascal PrintDlgProc(word word word long) PrintDlgProc
|
||||
22 pascal PrintSetupDlgProc(word word word long) PrintSetupDlgProc
|
||||
#23 pascal EDITINTEGERONLY exported, shared data
|
||||
#25 pascal WANTARROWS exported, shared data
|
||||
26 pascal CommDlgExtendedError() CommDlgExtendedError
|
||||
27 pascal16 GetFileTitle(ptr ptr word) GetFileTitle
|
||||
#28 pascal WEP exported, shared data
|
||||
#29 pascal DWLBSUBCLASS exported, shared data
|
||||
#30 pascal DWUPARROWHACK exported, shared data
|
||||
#31 pascal DWOKSUBCLASS exported, shared data
|
||||
|
@ -286,7 +286,7 @@ base 1
|
||||
0282 stub GetSystemDirectoryA
|
||||
0283 stub GetSystemDirectoryW
|
||||
0284 stub GetSystemInfo
|
||||
0285 stub GetSystemTime
|
||||
0285 stdcall GetSystemTime(ptr) GetSystemTime
|
||||
0286 stub GetSystemTimeAdjustment
|
||||
0287 stub GetTapeParameters
|
||||
0288 stub GetTapePosition
|
||||
@ -525,7 +525,7 @@ base 1
|
||||
0520 stub SetupComm
|
||||
0521 stub ShowConsoleCursor
|
||||
0522 stub SizeofResource
|
||||
0523 stub Sleep
|
||||
0523 stdcall Sleep(long) Sleep
|
||||
0524 stub SleepEx
|
||||
0525 stub SuspendThread
|
||||
0526 stub SystemTimeToFileTime
|
||||
|
@ -173,8 +173,10 @@ void RELAY_DebugReturn( int func_type, int ret_val, int args32 )
|
||||
struct dll_table_s *table;
|
||||
char *name;
|
||||
|
||||
if (*(DWORD *)PTR_SEG_TO_LIN(IF1632_Stack32_base) != 0xDEADBEEF) {
|
||||
if (*(DWORD *)PTR_SEG_TO_LIN(IF1632_Stack32_base) != 0xDEADBEEF)
|
||||
{
|
||||
fprintf(stderr, "Wine wrote past the end of the 32 bit stack. Please report this.\n");
|
||||
exit(1); /* There's probably no point in going on */
|
||||
}
|
||||
if (!debugging_relay) return;
|
||||
|
||||
@ -186,13 +188,16 @@ void RELAY_DebugReturn( int func_type, int ret_val, int args32 )
|
||||
switch(func_type)
|
||||
{
|
||||
case 0: /* long */
|
||||
printf( "retval=0x%08x ds=%04x\n", ret_val, frame->ds );
|
||||
printf( "retval=0x%08x ret=%04x:%04x ds=%04x\n",
|
||||
ret_val, frame->cs, frame->ip, frame->ds );
|
||||
break;
|
||||
case 1: /* word */
|
||||
printf( "retval=0x%04x ds=%04x\n", ret_val & 0xffff, frame->ds );
|
||||
printf( "retval=0x%04x ret=%04x:%04x ds=%04x\n",
|
||||
ret_val & 0xffff, frame->cs, frame->ip, frame->ds );
|
||||
break;
|
||||
case 2: /* regs */
|
||||
printf( "retval=none ds=%04x\n", frame->ds );
|
||||
printf( "retval=none ret=%04x:%04x ds=%04x\n",
|
||||
frame->cs, frame->ip, frame->ds );
|
||||
{
|
||||
struct sigcontext_struct *context = (struct sigcontext_struct *)&args32;
|
||||
printf( " AX=%04x BX=%04x CX=%04x DX=%04x SI=%04x DI=%04x ES=%04x EFL=%08lx\n",
|
||||
|
@ -290,6 +290,15 @@ typedef DEVNAMES * LPDEVNAMES;
|
||||
#define FINDDLG 9
|
||||
#define REPLACEDLG 10
|
||||
|
||||
BOOL ChooseColor(LPCHOOSECOLOR lpChCol);
|
||||
DWORD CommDlgExtendedError(void);
|
||||
BOOL FindText(LPFINDREPLACE lpFind);
|
||||
short GetFileTitle(LPCSTR lpFile, LPSTR lpTitle, UINT cbBuf);
|
||||
BOOL GetOpenFileName(LPOPENFILENAME lpofn);
|
||||
BOOL GetSaveFileName(LPOPENFILENAME lpofn);
|
||||
BOOL PrintDlg(LPPRINTDLG lpPrint);
|
||||
BOOL ReplaceText(LPFINDREPLACE lpFind);
|
||||
|
||||
LRESULT FileOpenDlgProc(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam);
|
||||
LRESULT FileSaveDlgProc(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam);
|
||||
LRESULT ColorDlgProc(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam);
|
||||
|
@ -16,7 +16,7 @@ typedef struct
|
||||
int shmid;
|
||||
} SHMDATA;
|
||||
|
||||
extern HGLOBAL GLOBAL_CreateBlock( WORD flags, void *ptr, DWORD size,
|
||||
extern HGLOBAL GLOBAL_CreateBlock( WORD flags, const void *ptr, DWORD size,
|
||||
HGLOBAL hOwner, BOOL isCode,
|
||||
BOOL is32Bit, BOOL isReadOnly,
|
||||
SHMDATA *shmdata);
|
||||
|
@ -56,16 +56,7 @@ typedef struct {
|
||||
HANDLE hStdError;
|
||||
} STARTUPINFO, *LPSTARTUPINFO;
|
||||
|
||||
typedef struct {
|
||||
WORD wYear;
|
||||
WORD wMonth;
|
||||
WORD wDayOfWeek;
|
||||
WORD wDay;
|
||||
WORD wHour;
|
||||
WORD wMinute;
|
||||
WORD wSecond;
|
||||
WORD wMilliseconds;
|
||||
} SYSTEMTIME, *LPSYSTEMTIME;
|
||||
/* SYSTEMTIME, and LPSYSTEMTIME moved to include/windows.h (JBP) */
|
||||
|
||||
typedef struct {
|
||||
LONG Bias;
|
||||
|
@ -6,18 +6,16 @@
|
||||
|
||||
#ifdef WINELIB
|
||||
|
||||
#include "windows.h"
|
||||
#include "wintypes.h"
|
||||
#include "resource.h"
|
||||
|
||||
void LIBRES_RegisterResources(struct resource** Res);
|
||||
|
||||
INT LIBRES_AccessResource( HINSTANCE hModule, HRSRC hRsrc );
|
||||
HGLOBAL LIBRES_AllocResource( HINSTANCE hModule, HRSRC hRsrc, DWORD size );
|
||||
HRSRC LIBRES_FindResource( HINSTANCE hModule, LPCSTR name, LPCSTR type );
|
||||
BOOL LIBRES_FreeResource( HGLOBAL handle );
|
||||
HGLOBAL LIBRES_LoadResource( HINSTANCE hModule, HRSRC hRsrc );
|
||||
LPVOID LIBRES_LockResource( HGLOBAL handle );
|
||||
DWORD LIBRES_SizeofResource( HINSTANCE hModule, HRSRC hRsrc );
|
||||
extern INT LIBRES_AccessResource( HINSTANCE hModule, HRSRC hRsrc );
|
||||
extern HGLOBAL LIBRES_AllocResource( HINSTANCE hModule, HRSRC hRsrc, DWORD size );
|
||||
extern HRSRC LIBRES_FindResource( HINSTANCE hModule, LPCSTR name, LPCSTR type );
|
||||
extern BOOL LIBRES_FreeResource( HGLOBAL handle );
|
||||
extern HGLOBAL LIBRES_LoadResource( HINSTANCE hModule, HRSRC hRsrc );
|
||||
extern LPVOID LIBRES_LockResource( HGLOBAL handle );
|
||||
extern DWORD LIBRES_SizeofResource( HINSTANCE hModule, HRSRC hRsrc );
|
||||
|
||||
#endif /* WINELIB */
|
||||
|
||||
|
@ -23,7 +23,7 @@ typedef struct tagQMSG
|
||||
|
||||
typedef struct tagMESSAGEQUEUE
|
||||
{
|
||||
WORD next; /* 00 Next queue */
|
||||
HANDLE next; /* 00 Next queue */
|
||||
HTASK hTask; /* 02 hTask owning the queue */
|
||||
WORD msgSize; /* 04 Size of messages in the queue */
|
||||
WORD msgCount; /* 06 Number of waiting messages */
|
||||
|
@ -113,7 +113,7 @@ extern BOOL MODULE_Init(void);
|
||||
extern int MODULE_OpenFile( HMODULE hModule );
|
||||
extern LPSTR MODULE_GetModuleName( HMODULE hModule );
|
||||
extern WORD MODULE_GetOrdinal( HMODULE hModule, char *name );
|
||||
extern DWORD MODULE_GetEntryPoint( HMODULE hModule, WORD ordinal );
|
||||
extern SEGPTR MODULE_GetEntryPoint( HMODULE hModule, WORD ordinal );
|
||||
extern BOOL MODULE_SetEntryPoint( HMODULE hModule, WORD ordinal, WORD offset );
|
||||
extern LPSTR MODULE_GetEntryPointName( HMODULE hModule, WORD ordinal );
|
||||
|
||||
|
@ -9,22 +9,33 @@
|
||||
|
||||
#include "wintypes.h"
|
||||
|
||||
extern int NE_AccessResource( HMODULE hModule, HRSRC hRsrc );
|
||||
extern BOOL NE_FreeResource( HMODULE hModule, HGLOBAL handle );
|
||||
extern HRSRC NE_FindResource( HMODULE hModule, SEGPTR typeId, SEGPTR resId );
|
||||
extern DWORD NE_SizeofResource( HMODULE hModule, HRSRC hRsrc );
|
||||
extern SEGPTR NE_LockResource( HMODULE hModule, HGLOBAL handle );
|
||||
extern HGLOBAL NE_AllocResource( HMODULE hModule, HRSRC hRsrc, DWORD size );
|
||||
extern HGLOBAL NE_LoadResource( HMODULE hModule, HRSRC hRsrc );
|
||||
|
||||
struct resource
|
||||
{
|
||||
int id,type;
|
||||
char *name;
|
||||
unsigned char* bytes;
|
||||
unsigned size;
|
||||
int id;
|
||||
int type;
|
||||
const char *name;
|
||||
const unsigned char* bytes;
|
||||
unsigned size;
|
||||
};
|
||||
|
||||
/* Built-in resources */
|
||||
typedef enum
|
||||
{
|
||||
SYSRES_MENU_SYSMENU,
|
||||
SYSRES_DIALOG_MSGBOX,
|
||||
SYSRES_DIALOG_SHELL_ABOUT_MSGBOX,
|
||||
SYSRES_DIALOG_OPEN_FILE,
|
||||
SYSRES_DIALOG_SAVE_FILE,
|
||||
SYSRES_DIALOG_PRINT,
|
||||
SYSRES_DIALOG_PRINT_SETUP,
|
||||
SYSRES_DIALOG_CHOOSE_FONT,
|
||||
SYSRES_DIALOG_CHOOSE_COLOR,
|
||||
SYSRES_DIALOG_FIND_TEXT,
|
||||
SYSRES_DIALOG_REPLACE_TEXT
|
||||
} SYSTEM_RESOURCE;
|
||||
|
||||
extern void LIBRES_RegisterResources(const struct resource* const * Res);
|
||||
|
||||
#if defined(__GNUC__) && (__GNUC__ == 2) && (__GNUC_MINOR__ >= 7)
|
||||
#define WINE_CONSTRUCTOR __attribute__((constructor))
|
||||
#define HAVE_WINE_CONSTRUCTOR
|
||||
@ -32,4 +43,15 @@ struct resource
|
||||
#define WINE_CONSTRUCTOR
|
||||
#endif
|
||||
|
||||
extern int NE_AccessResource( HMODULE hModule, HRSRC hRsrc );
|
||||
extern BOOL NE_FreeResource( HMODULE hModule, HGLOBAL handle );
|
||||
extern HRSRC NE_FindResource( HMODULE hModule, SEGPTR typeId, SEGPTR resId );
|
||||
extern DWORD NE_SizeofResource( HMODULE hModule, HRSRC hRsrc );
|
||||
extern SEGPTR NE_LockResource( HMODULE hModule, HGLOBAL handle );
|
||||
extern HGLOBAL NE_AllocResource( HMODULE hModule, HRSRC hRsrc, DWORD size );
|
||||
extern HGLOBAL NE_LoadResource( HMODULE hModule, HRSRC hRsrc );
|
||||
|
||||
extern HANDLE SYSRES_LoadResource( SYSTEM_RESOURCE id );
|
||||
extern void SYSRES_FreeResource( HANDLE handle );
|
||||
|
||||
#endif /* __WINE_RESOURCE_H */
|
||||
|
@ -10,9 +10,10 @@
|
||||
#include "windows.h"
|
||||
#include "ldt.h"
|
||||
|
||||
extern WORD SELECTOR_AllocBlock( void *base, DWORD size, enum seg_type type,
|
||||
BOOL is32bit, BOOL readonly );
|
||||
extern WORD SELECTOR_ReallocBlock( WORD sel, void *base, DWORD size,
|
||||
extern WORD SELECTOR_AllocBlock( const void *base, DWORD size,
|
||||
enum seg_type type, BOOL is32bit,
|
||||
BOOL readonly );
|
||||
extern WORD SELECTOR_ReallocBlock( WORD sel, const void *base, DWORD size,
|
||||
enum seg_type type, BOOL is32bit,
|
||||
BOOL readonly );
|
||||
|
||||
|
@ -7,15 +7,15 @@ extern void SHELL_LoadRegistry();
|
||||
extern void SHELL_SaveRegistry();
|
||||
extern BOOL SHELL_Init();
|
||||
|
||||
#define ERROR_SUCCESS 0L
|
||||
#define ERROR_BADDB 1L
|
||||
#define ERROR_BADKEY 2L
|
||||
#define ERROR_CANTOPEN 3L
|
||||
#define ERROR_CANTREAD 4L
|
||||
#define ERROR_CANTWRITE 5L
|
||||
#define ERROR_OUTOFMEMORY 6L
|
||||
#define ERROR_INVALID_PARAMETER 7L
|
||||
#define ERROR_ACCESS_DENIED 8L
|
||||
#define SHELL_ERROR_SUCCESS 0L
|
||||
#define SHELL_ERROR_BADDB 1L
|
||||
#define SHELL_ERROR_BADKEY 2L
|
||||
#define SHELL_ERROR_CANTOPEN 3L
|
||||
#define SHELL_ERROR_CANTREAD 4L
|
||||
#define SHELL_ERROR_CANTWRITE 5L
|
||||
#define SHELL_ERROR_OUTOFMEMORY 6L
|
||||
#define SHELL_ERROR_INVALID_PARAMETER 7L
|
||||
#define SHELL_ERROR_ACCESS_DENIED 8L
|
||||
|
||||
#define REG_SZ 1 /* string type */
|
||||
|
||||
|
@ -1104,7 +1104,11 @@ typedef OFSTRUCT *LPOFSTRUCT;
|
||||
#define ONE5STOPBITS 1
|
||||
#define TWOSTOPBITS 2
|
||||
#define IGNORE 0
|
||||
#ifdef WINELIB32
|
||||
#define INFINITE 0xFFFFFFFF
|
||||
#else
|
||||
#define INFINITE 0xFFFF
|
||||
#endif
|
||||
|
||||
#define CE_RXOVER 0x0001
|
||||
#define CE_OVERRUN 0x0002
|
||||
@ -2273,7 +2277,6 @@ typedef COMPAREITEMSTRUCT FAR* LPCOMPAREITEMSTRUCT;
|
||||
#define LMEM_ZEROINIT 0x0040
|
||||
#define LMEM_MODIFY 0x0080
|
||||
#define LMEM_DISCARDABLE 0x0F00
|
||||
#define LMEM_WINE_ALIGN 0x1000
|
||||
|
||||
#define GMEM_FIXED 0x0000
|
||||
#define GMEM_MOVEABLE 0x0002
|
||||
@ -2510,6 +2513,18 @@ typedef struct
|
||||
#define DBF_APPLICATION 0x0008
|
||||
#define DBF_DRIVER 0x0010
|
||||
|
||||
/* Win32-specific structures */
|
||||
|
||||
typedef struct {
|
||||
WORD wYear;
|
||||
WORD wMonth;
|
||||
WORD wDayOfWeek;
|
||||
WORD wDay;
|
||||
WORD wHour;
|
||||
WORD wMinute;
|
||||
WORD wSecond;
|
||||
WORD wMilliseconds;
|
||||
} SYSTEMTIME, *LPSYSTEMTIME;
|
||||
|
||||
#ifndef WINELIB
|
||||
#pragma pack(4)
|
||||
@ -2657,7 +2672,7 @@ BOOL EnumChildWindows(HWND,FARPROC,LONG);
|
||||
WORD EnumClipboardFormats(WORD);
|
||||
int EnumFonts(HDC,LPSTR,FARPROC,LPSTR);
|
||||
BOOL EnumMetaFile(HDC,LOCALHANDLE,FARPROC,BYTE*);
|
||||
int EnumObjects(HDC,int,FARPROC,LPSTR);
|
||||
int EnumObjects(HDC,int,FARPROC,LPARAM);
|
||||
int EnumProps(HWND,FARPROC);
|
||||
BOOL EnumTaskWindows(HANDLE,FARPROC,LONG);
|
||||
BOOL EnumWindows(FARPROC,LONG);
|
||||
@ -2762,10 +2777,11 @@ int GetKeyState(int);
|
||||
void GetKeyboardState(BYTE*);
|
||||
int GetKeyboardType(int);
|
||||
HWND GetLastActivePopup(HWND);
|
||||
VOID GetLocalTime(LPSYSTEMTIME); /* Win32 */
|
||||
WORD GetMapMode(HDC);
|
||||
HMENU GetMenu(HWND);
|
||||
DWORD GetMenuCheckMarkDimensions(void);
|
||||
WORD GetMenuItemCount(HMENU);
|
||||
INT GetMenuItemCount(HMENU);
|
||||
UINT GetMenuItemID(HMENU,int);
|
||||
UINT GetMenuState(HMENU,UINT,UINT);
|
||||
int GetMenuString(HMENU,UINT,LPSTR,short,UINT);
|
||||
@ -2815,6 +2831,7 @@ HMENU GetSystemMenu(HWND,BOOL);
|
||||
int GetSystemMetrics(WORD);
|
||||
WORD GetSystemPaletteEntries(HDC,WORD,WORD,LPPALETTEENTRY);
|
||||
WORD GetSystemPaletteUse(HDC);
|
||||
VOID GetSystemTime(LPSYSTEMTIME); /* Win32 */
|
||||
DWORD GetTabbedTextExtent(HDC,LPSTR,int,int,LPINT);
|
||||
HINSTANCE GetTaskDS(void);
|
||||
HGLOBAL GetTaskQueue(HTASK);
|
||||
@ -3143,6 +3160,7 @@ void ShowOwnedPopups(HWND,BOOL);
|
||||
void ShowScrollBar(HWND,WORD,BOOL);
|
||||
BOOL ShowWindow(HWND,int);
|
||||
DWORD SizeofResource(HINSTANCE,HRSRC);
|
||||
VOID Sleep(DWORD); /* Win32 */
|
||||
int StartSound(void);
|
||||
int StopSound(void);
|
||||
BOOL StretchBlt(HDC,short,short,short,short,HDC,short,short,short,short,DWORD);
|
||||
|
@ -28,7 +28,7 @@ typedef struct
|
||||
|
||||
extern void WINPOS_FindIconPos( HWND hwnd );
|
||||
extern BOOL WINPOS_SetActiveWindow( HWND hWnd, BOOL fMouse, BOOL fChangeFocus);
|
||||
extern HWND WINPOS_ChangeActiveWindow( HWND hwnd, BOOL mouseMsg );
|
||||
extern BOOL WINPOS_ChangeActiveWindow( HWND hwnd, BOOL mouseMsg );
|
||||
extern LONG WINPOS_SendNCCalcSize( HWND hwnd, BOOL calcValidRect,
|
||||
RECT *newWindowRect, RECT *oldWindowRect,
|
||||
RECT *oldClientRect, WINDOWPOS *winpos,
|
||||
|
@ -34,6 +34,7 @@ typedef void* NPVOID;
|
||||
typedef void* SEGPTR;
|
||||
#define UIFMT "%u"
|
||||
#define NPFMT "%p"
|
||||
#define SPFMT "%p"
|
||||
#else
|
||||
typedef short INT;
|
||||
typedef unsigned short UINT;
|
||||
@ -42,13 +43,15 @@ typedef WORD HANDLE;
|
||||
typedef WORD NPVOID;
|
||||
typedef DWORD SEGPTR;
|
||||
#define UIFMT "%hu"
|
||||
#define NPFMT "%04X"
|
||||
#define NPFMT "%04x"
|
||||
#define SPFMT "%08lx"
|
||||
#endif
|
||||
typedef LONG LPARAM;
|
||||
typedef LONG LRESULT;
|
||||
typedef DWORD HHOOK;
|
||||
typedef char *LPSTR;
|
||||
typedef const char *LPCSTR;
|
||||
typedef LPCSTR LPCTSTR;
|
||||
typedef char *NPSTR;
|
||||
typedef INT *LPINT;
|
||||
typedef UINT *LPUINT;
|
||||
|
17
library/Makefile.in
Normal file
17
library/Makefile.in
Normal file
@ -0,0 +1,17 @@
|
||||
TOPSRC = @top_srcdir@
|
||||
MODULE = library
|
||||
|
||||
C_SRCS = \
|
||||
atom.c \
|
||||
arch.c \
|
||||
heap.c \
|
||||
libres.c \
|
||||
miscstubs.c \
|
||||
sup.c \
|
||||
winmain.c
|
||||
|
||||
all: $(MODULE).o
|
||||
|
||||
@MAKE_RULES@
|
||||
|
||||
### Dependencies:
|
@ -79,11 +79,8 @@ HANDLE LocalAlloc (WORD flags, WORD bytes)
|
||||
HANDLE hMem;
|
||||
|
||||
slot = HEAP_GetFreeSlot (&hMem);
|
||||
if (flags & LMEM_WINE_ALIGN)
|
||||
m = memalign (4, bytes);
|
||||
else
|
||||
m = malloc (bytes);
|
||||
if (m){
|
||||
if ((m = malloc (bytes)))
|
||||
{
|
||||
*slot = m;
|
||||
if (flags & LMEM_ZEROINIT)
|
||||
bzero (m, bytes);
|
||||
@ -221,11 +218,8 @@ HANDLE HEAP_Alloc (WORD flags, DWORD bytes)
|
||||
HeapData* m;
|
||||
|
||||
bytes+=sizeof(HeapData);
|
||||
if (flags & LMEM_WINE_ALIGN)
|
||||
m = memalign (4, bytes);
|
||||
else
|
||||
m = malloc (bytes);
|
||||
if (m){
|
||||
if ((m = malloc (bytes)))
|
||||
{
|
||||
if (flags & LMEM_ZEROINIT)
|
||||
bzero (m, bytes);
|
||||
}
|
@ -7,29 +7,26 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "libres.h"
|
||||
#include "windows.h"
|
||||
#include "xmalloc.h"
|
||||
|
||||
typedef struct RLE
|
||||
{
|
||||
struct resource** Resources; /* NULL-terminated array of pointers */
|
||||
struct RLE* next;
|
||||
const struct resource* const * Resources; /* NULL-terminated array of pointers */
|
||||
struct RLE* next;
|
||||
} ResListE;
|
||||
|
||||
static ResListE* ResourceList=NULL;
|
||||
|
||||
void LIBRES_RegisterResources(struct resource** Res)
|
||||
void LIBRES_RegisterResources(const struct resource* const * Res)
|
||||
{
|
||||
ResListE** Curr;
|
||||
ResListE* n;
|
||||
for(Curr=&ResourceList; *Curr; Curr=&((*Curr)->next)) { }
|
||||
n=xmalloc(sizeof(ResListE));
|
||||
if(n)
|
||||
{
|
||||
n->Resources=Res;
|
||||
n->next=NULL;
|
||||
*Curr=n;
|
||||
}
|
||||
else
|
||||
fprintf(stderr,"LIBRES_RegisterResources(): Out of memory.\n");
|
||||
n->Resources=Res;
|
||||
n->next=NULL;
|
||||
*Curr=n;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
@ -39,7 +36,7 @@ HRSRC LIBRES_FindResource( HINSTANCE hModule, LPCSTR name, LPCSTR type )
|
||||
{
|
||||
int nameid=0,typeid;
|
||||
ResListE* ResBlock;
|
||||
struct resource** Res;
|
||||
const struct resource* const * Res;
|
||||
|
||||
if(HIWORD(name))
|
||||
{
|
@ -109,13 +109,13 @@ HGLOBAL GLOBAL_Alloc( WORD flags, DWORD size, HGLOBAL hOwner,
|
||||
return handle;
|
||||
}
|
||||
|
||||
HGLOBAL GLOBAL_CreateBlock( WORD flags, void *ptr, DWORD size,
|
||||
HGLOBAL GLOBAL_CreateBlock( WORD flags, const void *ptr, DWORD size,
|
||||
HGLOBAL hOwner, BOOL isCode,
|
||||
BOOL is32Bit, BOOL isReadOnly,
|
||||
SHMDATA *shmdata)
|
||||
{
|
||||
/* fprintf(stderr,"JBP: GLOBAL_CreateBlock() faked.\n");*/
|
||||
return ptr;
|
||||
return (HGLOBAL)ptr;
|
||||
}
|
||||
|
||||
BOOL GLOBAL_FreeBlock( HGLOBAL handle )
|
34
libtest/Makefile.in
Normal file
34
libtest/Makefile.in
Normal file
@ -0,0 +1,34 @@
|
||||
TOPSRC = @top_srcdir@
|
||||
MODULE = none
|
||||
PROGRAMS = hello hello2 hello3 rolex
|
||||
ALL_LIBS = $(WINELIB) $(X_LIBS) $(XPM_LIB) $(XLIB) $(LDLIBS)
|
||||
|
||||
C_SRCS = \
|
||||
hello.c \
|
||||
hello2.c \
|
||||
hello3.c \
|
||||
hello3res.c \
|
||||
rolex.c
|
||||
|
||||
all: check_winerc $(PROGRAMS)
|
||||
|
||||
@MAKE_RULES@
|
||||
|
||||
hello: hello.o $(WINELIB)
|
||||
$(CC) -o hello hello.o $(LDOPTIONS) $(ALL_LIBS)
|
||||
|
||||
hello2: hello2.o $(WINELIB)
|
||||
$(CC) -o hello2 hello2.o $(LDOPTIONS) $(ALL_LIBS)
|
||||
|
||||
hello3: hello3res.o hello3.o $(WINELIB)
|
||||
$(CC) -o hello3 hello3.o hello3res.o $(LDOPTIONS) $(ALL_LIBS)
|
||||
|
||||
rolex: rolex.o $(WINELIB)
|
||||
$(CC) -o rolex rolex.o $(LDOPTIONS) $(ALL_LIBS)
|
||||
|
||||
clean::
|
||||
$(RM) hello hello2 hello3 hello3res.c hello3res.h rolex
|
||||
|
||||
hello3res.c hello3res.h: $(WINERC)
|
||||
|
||||
### Dependencies:
|
8
libtest/README.rolex
Normal file
8
libtest/README.rolex
Normal file
@ -0,0 +1,8 @@
|
||||
Windows clock application for WINE (by Jim Peterson)
|
||||
|
||||
This is a translation of a Turbo Pascal OWL application I made once,
|
||||
so it's a little flaky (tons of globals, functions that could have
|
||||
been in-lined, etc.). The file rolex.exe is a Win32 application
|
||||
compiled using this source code and Borland C++ 4.0.
|
||||
|
||||
To try it out, type 'make rolex' or 'wine ./rolex.exe' (which fails).
|
@ -33,12 +33,12 @@ LRESULT WndProc (HWND wnd, UINT msg, WPARAM w, LPARAM l)
|
||||
case WM_COMMAND:
|
||||
switch(w){
|
||||
case 100:
|
||||
CreateDialogIndirect(0,hello3_DIALOG_DIADEMO.bytes,wnd,(WNDPROC)DlgProc);
|
||||
CreateDialogIndirect(0,hello3res_DIALOG_DIADEMO.bytes,wnd,(WNDPROC)DlgProc);
|
||||
return 0;
|
||||
case 101:
|
||||
{
|
||||
BITMAPINFO *bm=hello3_BITMAP_BITDEMO.bytes;
|
||||
char *bits=bm;
|
||||
BITMAPINFO *bm=(BITMAPINFO*)hello3res_BITMAP_BITDEMO.bytes;
|
||||
char *bits=(char*)bm;
|
||||
HDC hdc=GetDC(wnd);
|
||||
bits+=bm->bmiHeader.biSize;
|
||||
bits+=(1<<bm->bmiHeader.biBitCount)*sizeof(RGBQUAD);
|
241
libtest/rolex.c
Normal file
241
libtest/rolex.c
Normal file
@ -0,0 +1,241 @@
|
||||
#include <math.h>
|
||||
#include <string.h>
|
||||
#include "windows.h"
|
||||
|
||||
char* AppName = "Rolex";
|
||||
char* WindowName = "Rolex";
|
||||
int WindowWidth = 100;
|
||||
int WindowHeight = 121;
|
||||
COLORREF FaceColor = RGB(192,192,192);
|
||||
COLORREF HandColor = RGB(0,0,0);
|
||||
COLORREF EtchColor = RGB(0,0,0);
|
||||
|
||||
float Pi=3.1415926;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int StartX,StartY,EndX,EndY;
|
||||
} HandData;
|
||||
|
||||
int MaxX,MaxY;
|
||||
HandData OldSecond,OldHour,OldMinute;
|
||||
|
||||
HWND HWindow;
|
||||
|
||||
void DrawFace(HDC dc)
|
||||
{
|
||||
int MidX, MidY, t;
|
||||
|
||||
MidX=MaxX/2;
|
||||
MidY=MaxY/2;
|
||||
SelectObject(dc,CreateSolidBrush(FaceColor));
|
||||
SelectObject(dc,CreatePen(PS_SOLID,1,EtchColor));
|
||||
Ellipse(dc,0,0,MaxX,MaxY);
|
||||
|
||||
for(t=0; t<12; t++)
|
||||
{
|
||||
MoveToEx(dc,MidX+sin(t*Pi/6)*0.9*MidX,MidY-cos(t*Pi/6)*0.9*MidY,NULL);
|
||||
LineTo(dc,MidX+sin(t*Pi/6)*0.8*MidX,MidY-cos(t*Pi/6)*0.8*MidY);
|
||||
}
|
||||
if(MaxX>64 && MaxY>64)
|
||||
for(t=0; t<60; t++)
|
||||
SetPixel(dc,MidX+sin(t*Pi/30)*0.9*MidX,MidY-cos(t*Pi/30)*0.9*MidY
|
||||
,EtchColor);
|
||||
DeleteObject(SelectObject(dc,GetStockObject(NULL_BRUSH)));
|
||||
DeleteObject(SelectObject(dc,GetStockObject(NULL_PEN)));
|
||||
memset(&OldSecond,0,sizeof(OldSecond));
|
||||
memset(&OldMinute,0,sizeof(OldMinute));
|
||||
memset(&OldHour,0,sizeof(OldHour));
|
||||
}
|
||||
|
||||
void DrawHourHand(HDC dc)
|
||||
{
|
||||
MoveToEx(dc, OldHour.StartX, OldHour.StartY, NULL);
|
||||
LineTo(dc, OldHour.EndX, OldHour.EndY);
|
||||
}
|
||||
|
||||
void DrawMinuteHand(HDC dc)
|
||||
{
|
||||
MoveToEx(dc, OldMinute.StartX, OldMinute.StartY, NULL);
|
||||
LineTo(dc, OldMinute.EndX, OldMinute.EndY);
|
||||
}
|
||||
|
||||
void DrawSecondHand(HDC dc)
|
||||
{
|
||||
MoveToEx(dc, OldSecond.StartX, OldSecond.StartY, NULL);
|
||||
LineTo(dc, OldSecond.EndX, OldSecond.EndY);
|
||||
}
|
||||
|
||||
BOOL UpdateHourHand(HDC dc,int MidX,int MidY,int XExt,int YExt,WORD Pos)
|
||||
{
|
||||
int Sx, Sy, Ex, Ey;
|
||||
BOOL rv;
|
||||
|
||||
rv = FALSE;
|
||||
Sx = MidX; Sy = MidY;
|
||||
Ex = MidX+sin(Pos*Pi/6000)*XExt;
|
||||
Ey = MidY-cos(Pos*Pi/6000)*YExt;
|
||||
rv = ( Sx!=OldHour.StartX || Ex!=OldHour.EndX ||
|
||||
Sy!=OldHour.StartY || Ey!=OldHour.EndY );
|
||||
if(rv)DrawHourHand(dc);
|
||||
OldHour.StartX = Sx; OldHour.EndX = Ex;
|
||||
OldHour.StartY = Sy; OldHour.EndY = Ey;
|
||||
return rv;
|
||||
}
|
||||
|
||||
BOOL UpdateMinuteHand(HDC dc,int MidX,int MidY,int XExt,int YExt,WORD Pos)
|
||||
{
|
||||
int Sx, Sy, Ex, Ey;
|
||||
BOOL rv;
|
||||
|
||||
rv = FALSE;
|
||||
Sx = MidX; Sy = MidY;
|
||||
Ex = MidX+sin(Pos*Pi/30000)*XExt;
|
||||
Ey = MidY-cos(Pos*Pi/30000)*YExt;
|
||||
rv = ( Sx!=OldMinute.StartX || Ex!=OldMinute.EndX ||
|
||||
Sy!=OldMinute.StartY || Ey!=OldMinute.EndY );
|
||||
if(rv)DrawMinuteHand(dc);
|
||||
OldMinute.StartX = Sx; OldMinute.EndX = Ex;
|
||||
OldMinute.StartY = Sy; OldMinute.EndY = Ey;
|
||||
return rv;
|
||||
}
|
||||
|
||||
BOOL UpdateSecondHand(HDC dc,int MidX,int MidY,int XExt,int YExt,WORD Pos)
|
||||
{
|
||||
int Sx, Sy, Ex, Ey;
|
||||
BOOL rv;
|
||||
|
||||
rv = FALSE;
|
||||
Sx = MidX; Sy = MidY;
|
||||
Ex = MidX+sin(Pos*Pi/3000)*XExt;
|
||||
Ey = MidY-cos(Pos*Pi/3000)*YExt;
|
||||
rv = ( Sx!=OldSecond.StartX || Ex!=OldSecond.EndX ||
|
||||
Sy!=OldSecond.StartY || Ey!=OldSecond.EndY );
|
||||
if(rv)DrawSecondHand(dc);
|
||||
OldSecond.StartX = Sx; OldSecond.EndX = Ex;
|
||||
OldSecond.StartY = Sy; OldSecond.EndY = Ey;
|
||||
return rv;
|
||||
}
|
||||
|
||||
void Idle(HDC idc)
|
||||
{
|
||||
SYSTEMTIME st;
|
||||
WORD H, M, S, F;
|
||||
int MidX, MidY;
|
||||
HDC dc;
|
||||
BOOL Redraw;
|
||||
|
||||
if(idc)
|
||||
dc=idc;
|
||||
else
|
||||
dc=GetDC(HWindow);
|
||||
if(!dc)return;
|
||||
|
||||
GetLocalTime(&st);
|
||||
H = st.wHour;
|
||||
M = st.wMinute;
|
||||
S = st.wSecond;
|
||||
F = st.wMilliseconds / 10;
|
||||
F = F + S*100;
|
||||
M = M*1000+F/6;
|
||||
H = H*1000+M/60;
|
||||
MidX = MaxX/2;
|
||||
MidY = MaxY/2;
|
||||
SelectObject(dc,CreatePen(PS_SOLID,1,FaceColor));
|
||||
Redraw = FALSE;
|
||||
if(UpdateHourHand(dc,MidX,MidY,MidX*0.5,MidY*0.5,H)) Redraw = TRUE;
|
||||
if(UpdateMinuteHand(dc,MidX,MidY,MidX*0.65,MidY*0.65,M)) Redraw = TRUE;
|
||||
if(UpdateSecondHand(dc,MidX,MidY,MidX*0.79,MidY*0.79,F)) Redraw = TRUE;
|
||||
DeleteObject(SelectObject(dc,CreatePen(PS_SOLID,1,HandColor)));
|
||||
if(Redraw)
|
||||
{
|
||||
DrawSecondHand(dc);
|
||||
DrawMinuteHand(dc);
|
||||
DrawHourHand(dc);
|
||||
}
|
||||
DeleteObject(SelectObject(dc,GetStockObject(NULL_PEN)));
|
||||
if(!idc) ReleaseDC(HWindow,dc);
|
||||
}
|
||||
|
||||
LRESULT ProcessAppMsg(HWND wnd,UINT msg,WPARAM w,LPARAM l)
|
||||
{
|
||||
PAINTSTRUCT PaintInfo;
|
||||
HDC dc;
|
||||
|
||||
switch(msg)
|
||||
{
|
||||
case WM_PAINT:
|
||||
if(GetUpdateRect(wnd,NULL,FALSE))
|
||||
{
|
||||
dc=BeginPaint(wnd,&PaintInfo);
|
||||
DrawFace(dc);
|
||||
Idle(dc);
|
||||
EndPaint(wnd,&PaintInfo);
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_SIZE:
|
||||
MaxX = LOWORD(l);
|
||||
MaxY = HIWORD(l);
|
||||
break;
|
||||
|
||||
case WM_DESTROY:
|
||||
PostQuitMessage (0);
|
||||
break;
|
||||
|
||||
default:
|
||||
return DefWindowProc (wnd, msg, w, l);
|
||||
}
|
||||
return 0l;
|
||||
}
|
||||
|
||||
WPARAM MessageLoop()
|
||||
{
|
||||
MSG msg;
|
||||
|
||||
while(1)
|
||||
{
|
||||
Sleep(1); /* sleep 1 millisecond */
|
||||
if(PeekMessage(&msg,0,0,0,PM_REMOVE))
|
||||
{
|
||||
if(msg.message == WM_QUIT) return msg.wParam;
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
else
|
||||
Idle(NULL);
|
||||
}
|
||||
}
|
||||
|
||||
int PASCAL WinMain (HANDLE inst, HANDLE prev, LPSTR cmdline, int show)
|
||||
{
|
||||
WNDCLASS class;
|
||||
if(!prev)
|
||||
{
|
||||
class.style = CS_HREDRAW | CS_VREDRAW;
|
||||
class.lpfnWndProc = ProcessAppMsg;
|
||||
class.cbClsExtra = 0;
|
||||
class.cbWndExtra = 0;
|
||||
class.hInstance = inst;
|
||||
class.hIcon = 0; /* Draw my own icon */
|
||||
class.hCursor = LoadCursor (0, IDC_ARROW);
|
||||
class.hbrBackground = (HBRUSH)(COLOR_BACKGROUND + 1);
|
||||
class.lpszMenuName = 0;
|
||||
class.lpszClassName = AppName;
|
||||
}
|
||||
if (!RegisterClass (&class)) return -1;
|
||||
|
||||
HWindow=CreateWindowEx(WS_EX_TOPMOST,AppName,WindowName,WS_OVERLAPPEDWINDOW,
|
||||
CW_USEDEFAULT,CW_USEDEFAULT,WindowWidth,WindowHeight,
|
||||
0,0,inst,0);
|
||||
memset(&OldSecond,0,sizeof(OldSecond));
|
||||
memset(&OldMinute,0,sizeof(OldMinute));
|
||||
memset(&OldHour,0,sizeof(OldHour));
|
||||
MaxX = WindowWidth;
|
||||
MaxY = WindowHeight;
|
||||
|
||||
ShowWindow (HWindow, show);
|
||||
UpdateWindow (HWindow);
|
||||
|
||||
return MessageLoop();
|
||||
}
|
@ -271,7 +271,9 @@ int MODULE_OpenFile( HMODULE hModule )
|
||||
close( cachedfd );
|
||||
hCachedModule = hModule;
|
||||
name = ((LOADEDFILEINFO*)((char*)pModule + pModule->fileinfo))->filename;
|
||||
cachedfd = open( DOS_GetUnixFileName( name ), O_RDONLY );
|
||||
if ((cachedfd = open( DOS_GetUnixFileName( name ), O_RDONLY )) == -1)
|
||||
fprintf( stderr, "MODULE_OpenFile: can't open file '%s' for module "NPFMT"\n",
|
||||
name, hModule );
|
||||
dprintf_module( stddeb, "MODULE_OpenFile: opened '%s' -> %d\n",
|
||||
name, cachedfd );
|
||||
return cachedfd;
|
||||
@ -457,7 +459,7 @@ HMODULE MODULE_LoadExeHeader( int fd, OFSTRUCT *ofs )
|
||||
|
||||
hModule = GlobalAlloc( GMEM_MOVEABLE | GMEM_ZEROINIT, size );
|
||||
if (!hModule) return (HMODULE)11; /* invalid exe */
|
||||
FarSetOwner( hModule, hModule );
|
||||
FarSetOwner( hModule, (WORD)(DWORD)hModule );
|
||||
pModule = (NE_MODULE *)GlobalLock( hModule );
|
||||
memcpy( pModule, &ne_header, sizeof(NE_MODULE) );
|
||||
pModule->count = 0;
|
||||
@ -666,7 +668,7 @@ WORD MODULE_GetOrdinal( HMODULE hModule, char *name )
|
||||
*
|
||||
* Return the entry point for a given ordinal.
|
||||
*/
|
||||
DWORD MODULE_GetEntryPoint( HMODULE hModule, WORD ordinal )
|
||||
SEGPTR MODULE_GetEntryPoint( HMODULE hModule, WORD ordinal )
|
||||
{
|
||||
NE_MODULE *pModule;
|
||||
WORD curOrdinal = 1;
|
||||
@ -706,8 +708,8 @@ DWORD MODULE_GetEntryPoint( HMODULE hModule, WORD ordinal )
|
||||
}
|
||||
|
||||
if (sel == 0xfe) sel = 0xffff; /* constant entry */
|
||||
else sel = (WORD)NE_SEG_TABLE(pModule)[sel-1].selector;
|
||||
return MAKELONG( offset, sel );
|
||||
else sel = (WORD)(DWORD)NE_SEG_TABLE(pModule)[sel-1].selector;
|
||||
return (SEGPTR)MAKELONG( offset, sel );
|
||||
}
|
||||
|
||||
|
||||
@ -884,7 +886,7 @@ static void MODULE_FreeModule( HMODULE hModule )
|
||||
|
||||
/* Free the referenced modules */
|
||||
|
||||
pModRef = NE_MODULE_TABLE( pModule );
|
||||
pModRef = (HMODULE*)NE_MODULE_TABLE( pModule );
|
||||
for (i = 0; i < pModule->modref_count; i++, pModRef++)
|
||||
{
|
||||
FreeModule( *pModRef );
|
||||
@ -1268,7 +1270,11 @@ HANDLE WinExec( LPSTR lpCmdLine, WORD nCmdShow )
|
||||
|
||||
/* Now load the executable file */
|
||||
|
||||
#ifdef WINELIB32
|
||||
params.hEnvironment = (HANDLE)GetDOSEnvironment();
|
||||
#else
|
||||
params.hEnvironment = (HANDLE)SELECTOROF( GetDOSEnvironment() );
|
||||
#endif
|
||||
params.cmdLine = (SEGPTR)WIN16_GlobalLock( cmdLineHandle );
|
||||
params.showCmd = (SEGPTR)WIN16_GlobalLock( cmdShowHandle );
|
||||
params.reserved = 0;
|
||||
@ -1328,7 +1334,7 @@ FARPROC GetProcAddress( HANDLE hModule, SEGPTR name )
|
||||
|
||||
ret = MODULE_GetEntryPoint( hModule, ordinal );
|
||||
|
||||
dprintf_module( stddeb, "GetProcAddress: returning %08lx\n", ret );
|
||||
dprintf_module( stddeb, "GetProcAddress: returning "SPFMT"\n", ret );
|
||||
return (FARPROC)ret;
|
||||
}
|
||||
|
||||
|
@ -57,7 +57,7 @@ static DWORD NE_FindNameTableId( HMODULE hModule, SEGPTR typeId, SEGPTR resId )
|
||||
pTypeInfo->type_id, pNameInfo->id );
|
||||
handle = LoadResource( hModule,
|
||||
(HANDLE)((int)pNameInfo - (int)pModule) );
|
||||
for(p = (WORD*)LockResource(handle); *p; p = (WORD *)((char*)p+*p))
|
||||
for(p = (WORD*)LockResource(handle); p && *p; p = (WORD *)((char*)p+*p))
|
||||
{
|
||||
dprintf_resource( stddeb," type=%04x '%s' id=%04x '%s'\n",
|
||||
p[1], (char *)(p+3), p[2],
|
||||
|
@ -311,6 +311,7 @@ static BOOL TASK_FreeThunk( HTASK hTask, SEGPTR thunk )
|
||||
* 32-bit entry point for a new task. This function is responsible for
|
||||
* setting up the registers and jumping to the 16-bit entry point.
|
||||
*/
|
||||
#ifndef WINELIB
|
||||
static void TASK_CallToStart(void)
|
||||
{
|
||||
int cs_reg, ds_reg, ip_reg;
|
||||
@ -357,6 +358,7 @@ static void TASK_CallToStart(void)
|
||||
fprintf( stderr, "TASK_CallToStart: Main program returned!\n" );
|
||||
TASK_KillCurrentTask( 1 );
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
@ -747,7 +749,6 @@ void InitTask( struct sigcontext_struct context )
|
||||
|
||||
#ifndef WINELIB
|
||||
NE_InitializeDLLs( pTask->hModule );
|
||||
#endif
|
||||
|
||||
/* Registers on return are:
|
||||
* ax 1 if OK, 0 on error
|
||||
@ -764,6 +765,7 @@ void InitTask( struct sigcontext_struct context )
|
||||
ESI_reg(&context) = (DWORD)pTask->hPrevInstance;
|
||||
EDI_reg(&context) = (DWORD)pTask->hInstance;
|
||||
ES_reg (&context) = (WORD)pTask->hPDB;
|
||||
#endif
|
||||
|
||||
/* Initialize the local heap */
|
||||
if ( pModule->heap_size )
|
||||
@ -910,7 +912,7 @@ FARPROC MakeProcInstance( FARPROC func, HANDLE hInstance )
|
||||
if (!thunkaddr) return (FARPROC)0;
|
||||
thunk = PTR_SEG_TO_LIN( thunkaddr );
|
||||
|
||||
dprintf_task( stddeb, "MakeProcInstance(%08lx,"NPFMT"): got thunk %08lx\n",
|
||||
dprintf_task( stddeb, "MakeProcInstance("SPFMT","NPFMT"): got thunk "SPFMT"\n",
|
||||
(SEGPTR)func, hInstance, (SEGPTR)thunkaddr );
|
||||
|
||||
*thunk++ = 0xb8; /* movw instance, %ax */
|
||||
@ -929,7 +931,7 @@ FARPROC MakeProcInstance( FARPROC func, HANDLE hInstance )
|
||||
*/
|
||||
void FreeProcInstance( FARPROC func )
|
||||
{
|
||||
dprintf_task( stddeb, "FreeProcInstance(%08lx)\n", (SEGPTR)func );
|
||||
dprintf_task( stddeb, "FreeProcInstance("SPFMT")\n", (SEGPTR)func );
|
||||
TASK_FreeThunk( hCurrentTask, (SEGPTR)func );
|
||||
}
|
||||
|
||||
|
@ -88,7 +88,7 @@ void debug_handles()
|
||||
*
|
||||
* Create a global heap block for a fixed range of linear memory.
|
||||
*/
|
||||
HGLOBAL GLOBAL_CreateBlock( WORD flags, void *ptr, DWORD size,
|
||||
HGLOBAL GLOBAL_CreateBlock( WORD flags, const void *ptr, DWORD size,
|
||||
HGLOBAL hOwner, BOOL isCode,
|
||||
BOOL is32Bit, BOOL isReadOnly,
|
||||
SHMDATA *shmdata )
|
||||
|
@ -98,7 +98,7 @@ WORD FreeSelector( WORD sel )
|
||||
*
|
||||
* Set the LDT entries for an array of selectors.
|
||||
*/
|
||||
static void SELECTOR_SetEntries( WORD sel, void *base, DWORD size,
|
||||
static void SELECTOR_SetEntries( WORD sel, const void *base, DWORD size,
|
||||
enum seg_type type, BOOL is32bit,
|
||||
BOOL readonly )
|
||||
{
|
||||
@ -131,7 +131,7 @@ static void SELECTOR_SetEntries( WORD sel, void *base, DWORD size,
|
||||
*
|
||||
* Allocate selectors for a block of linear memory.
|
||||
*/
|
||||
WORD SELECTOR_AllocBlock( void *base, DWORD size, enum seg_type type,
|
||||
WORD SELECTOR_AllocBlock( const void *base, DWORD size, enum seg_type type,
|
||||
BOOL is32bit, BOOL readonly )
|
||||
{
|
||||
WORD sel, count;
|
||||
@ -149,7 +149,7 @@ WORD SELECTOR_AllocBlock( void *base, DWORD size, enum seg_type type,
|
||||
*
|
||||
* Change the size of a block of selectors.
|
||||
*/
|
||||
WORD SELECTOR_ReallocBlock( WORD sel, void *base, DWORD size,
|
||||
WORD SELECTOR_ReallocBlock( WORD sel, const void *base, DWORD size,
|
||||
enum seg_type type, BOOL is32bit, BOOL readonly )
|
||||
{
|
||||
WORD i, oldcount, newcount;
|
||||
|
@ -31,13 +31,7 @@ C_SRCS = \
|
||||
winsocket.c \
|
||||
xmalloc.c
|
||||
|
||||
all: checkrc $(MODULE).o
|
||||
|
||||
checkrc: dummy
|
||||
cd $(TOPSRC)/rc; $(MAKE) 'CC=$(CC)' 'CFLAGS=$(CFLAGS)' 'DEFS=$(DEFS)' 'LANG=$(LANG)'
|
||||
|
||||
langclean::
|
||||
$(RM) ole2nls.o
|
||||
all: $(MODULE).o
|
||||
|
||||
@MAKE_RULES@
|
||||
|
||||
|
@ -9,12 +9,11 @@
|
||||
#include <string.h>
|
||||
#include "win.h"
|
||||
#include "user.h"
|
||||
#include "global.h"
|
||||
#include "message.h"
|
||||
#include "commdlg.h"
|
||||
#include "dlgs.h"
|
||||
#include "selectors.h"
|
||||
#include "../rc/sysres.h"
|
||||
#include "resource.h"
|
||||
#include "dos_fs.h"
|
||||
#include "stackframe.h"
|
||||
|
||||
@ -72,11 +71,7 @@ BOOL GetOpenFileName(LPOPENFILENAME lpofn)
|
||||
}
|
||||
hDlgTmpl = LoadResource( lpofn->hInstance, hResInfo );
|
||||
}
|
||||
else hDlgTmpl = GLOBAL_CreateBlock( GMEM_FIXED,
|
||||
sysres_DIALOG_OPEN_FILE.bytes,
|
||||
sysres_DIALOG_OPEN_FILE.size,
|
||||
GetCurrentPDB(), FALSE, FALSE,
|
||||
TRUE, NULL );
|
||||
else hDlgTmpl = SYSRES_LoadResource( SYSRES_DIALOG_OPEN_FILE );
|
||||
if (!hDlgTmpl)
|
||||
{
|
||||
CommDlgLastError = CDERR_LOADRESFAILURE;
|
||||
@ -91,7 +86,7 @@ BOOL GetOpenFileName(LPOPENFILENAME lpofn)
|
||||
if (!(lpofn->Flags & OFN_ENABLETEMPLATEHANDLE))
|
||||
{
|
||||
if (lpofn->Flags & OFN_ENABLETEMPLATE) FreeResource( hDlgTmpl );
|
||||
else GLOBAL_FreeBlock( hDlgTmpl );
|
||||
else SYSRES_FreeResource( hDlgTmpl );
|
||||
}
|
||||
|
||||
printf("GetOpenFileName // return lpstrFile='%s' !\n",
|
||||
@ -123,12 +118,7 @@ BOOL GetSaveFileName(LPOPENFILENAME lpofn)
|
||||
}
|
||||
hDlgTmpl = LoadResource( lpofn->hInstance, hResInfo );
|
||||
}
|
||||
else hDlgTmpl = GLOBAL_CreateBlock( GMEM_FIXED,
|
||||
sysres_DIALOG_SAVE_FILE.bytes,
|
||||
sysres_DIALOG_SAVE_FILE.size,
|
||||
GetCurrentPDB(), FALSE, FALSE,
|
||||
TRUE, NULL );
|
||||
|
||||
else hDlgTmpl = SYSRES_LoadResource( SYSRES_DIALOG_SAVE_FILE );
|
||||
|
||||
hInst = WIN_GetWindowInstance( lpofn->hwndOwner );
|
||||
bRet = DialogBoxIndirectParam( hInst, hDlgTmpl, lpofn->hwndOwner,
|
||||
@ -137,7 +127,7 @@ BOOL GetSaveFileName(LPOPENFILENAME lpofn)
|
||||
if (!(lpofn->Flags & OFN_ENABLETEMPLATEHANDLE))
|
||||
{
|
||||
if (lpofn->Flags & OFN_ENABLETEMPLATE) FreeResource( hDlgTmpl );
|
||||
else GLOBAL_FreeBlock( hDlgTmpl );
|
||||
else SYSRES_FreeResource( hDlgTmpl );
|
||||
}
|
||||
|
||||
printf( "GetSaveFileName // return lpstrFile='%s' !\n",
|
||||
@ -153,7 +143,7 @@ static void FILEDLG_StripEditControl(HWND hwnd)
|
||||
{
|
||||
char temp[512], *cp;
|
||||
|
||||
SendDlgItemMessage(hwnd, edt1, WM_GETTEXT, 511, MAKE_SEGPTR(temp));
|
||||
SendDlgItemMessage(hwnd, edt1, WM_GETTEXT, 511, (LPARAM)MAKE_SEGPTR(temp));
|
||||
cp = strrchr(temp, '\\');
|
||||
if (cp != NULL) {
|
||||
strcpy(temp, cp+1);
|
||||
@ -172,7 +162,7 @@ static BOOL FILEDLG_ScanDir(HWND hWnd, LPSTR newPath)
|
||||
char str[512],str2[512];
|
||||
|
||||
strncpy(str,newPath,511); str[511]=0;
|
||||
SendDlgItemMessage(hWnd, edt1, WM_GETTEXT, 511, MAKE_SEGPTR(str2));
|
||||
SendDlgItemMessage(hWnd, edt1, WM_GETTEXT, 511, (LPARAM)MAKE_SEGPTR(str2));
|
||||
strncat(str,str2,511-strlen(str)); str[511]=0;
|
||||
if (!DlgDirList(hWnd, str, lst1, 0, 0x0000)) return FALSE;
|
||||
DlgDirList(hWnd, "*.*", lst2, stc1, 0x8010);
|
||||
@ -225,7 +215,7 @@ static LONG FILEDLG_WMDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
||||
SelectObject(lpdis->hDC, hBrush);
|
||||
FillRect(lpdis->hDC, &lpdis->rcItem, hBrush);
|
||||
SendMessage(lpdis->hwndItem, LB_GETTEXT, lpdis->itemID,
|
||||
MAKE_SEGPTR(str));
|
||||
(LPARAM)MAKE_SEGPTR(str));
|
||||
TextOut(lpdis->hDC, lpdis->rcItem.left, lpdis->rcItem.top,
|
||||
str, strlen(str));
|
||||
if (lpdis->itemState != 0) {
|
||||
@ -239,7 +229,7 @@ static LONG FILEDLG_WMDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
||||
SelectObject(lpdis->hDC, hBrush);
|
||||
FillRect(lpdis->hDC, &lpdis->rcItem, hBrush);
|
||||
SendMessage(lpdis->hwndItem, LB_GETTEXT, lpdis->itemID,
|
||||
MAKE_SEGPTR(str));
|
||||
(LPARAM)MAKE_SEGPTR(str));
|
||||
|
||||
hBitmap = hFolder;
|
||||
GetObject(hBitmap, sizeof(BITMAP), (LPSTR)&bm);
|
||||
@ -261,7 +251,7 @@ static LONG FILEDLG_WMDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
||||
SelectObject(lpdis->hDC, hBrush);
|
||||
FillRect(lpdis->hDC, &lpdis->rcItem, hBrush);
|
||||
SendMessage(lpdis->hwndItem, CB_GETLBTEXT, lpdis->itemID,
|
||||
MAKE_SEGPTR(str));
|
||||
(LPARAM)MAKE_SEGPTR(str));
|
||||
switch(str[2]) {
|
||||
case 'a': case 'b':
|
||||
hBitmap = hFloppy;
|
||||
@ -323,7 +313,7 @@ static LONG FILEDLG_WMInitDialog(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
||||
n = strlen(pstr);
|
||||
strncpy(tmpstr, pstr, 511); tmpstr[511]=0;
|
||||
printf("lpstrCustomFilter // add tmpstr='%s' ", tmpstr);
|
||||
SendDlgItemMessage(hWnd, cmb1, CB_ADDSTRING, 0, MAKE_SEGPTR(tmpstr));
|
||||
SendDlgItemMessage(hWnd, cmb1, CB_ADDSTRING, 0, (LPARAM)MAKE_SEGPTR(tmpstr));
|
||||
pstr += n + 1;
|
||||
n = strlen(pstr);
|
||||
printf("associated to '%s'\n", pstr);
|
||||
@ -337,7 +327,7 @@ static LONG FILEDLG_WMInitDialog(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
||||
n = strlen(pstr);
|
||||
strncpy(tmpstr, pstr, 511); tmpstr[511]=0;
|
||||
printf("lpstrFilter // add tmpstr='%s' ", tmpstr);
|
||||
SendDlgItemMessage(hWnd, cmb1, CB_ADDSTRING, 0, MAKE_SEGPTR(tmpstr));
|
||||
SendDlgItemMessage(hWnd, cmb1, CB_ADDSTRING, 0, (LPARAM)MAKE_SEGPTR(tmpstr));
|
||||
pstr += n + 1;
|
||||
n = strlen(pstr);
|
||||
printf("associated to '%s'\n", pstr);
|
||||
@ -352,7 +342,7 @@ static LONG FILEDLG_WMInitDialog(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
||||
tmpstr[511]=0;
|
||||
printf("nFilterIndex = %ld // SetText of edt1 to '%s'\n",
|
||||
lpofn->nFilterIndex, tmpstr);
|
||||
SendDlgItemMessage(hWnd, edt1, WM_SETTEXT, 0, MAKE_SEGPTR(tmpstr));
|
||||
SendDlgItemMessage(hWnd, edt1, WM_SETTEXT, 0, (LPARAM)MAKE_SEGPTR(tmpstr));
|
||||
/* get drive list */
|
||||
*tmpstr = 0;
|
||||
DlgDirListComboBox(hWnd, MAKE_SEGPTR(tmpstr), cmb2, 0, 0xC000);
|
||||
@ -399,8 +389,8 @@ static LRESULT FILEDLG_WMCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
||||
lRet = SendDlgItemMessage(hWnd, lst1, LB_GETCURSEL, 0, 0);
|
||||
if (lRet == LB_ERR) return TRUE;
|
||||
SendDlgItemMessage(hWnd, lst1, LB_GETTEXT, lRet,
|
||||
MAKE_SEGPTR(tmpstr));
|
||||
SendDlgItemMessage(hWnd, edt1, WM_SETTEXT, 0, MAKE_SEGPTR(tmpstr));
|
||||
(LPARAM)MAKE_SEGPTR(tmpstr));
|
||||
SendDlgItemMessage(hWnd, edt1, WM_SETTEXT, 0, (LPARAM)MAKE_SEGPTR(tmpstr));
|
||||
return TRUE;
|
||||
case lst2: /* directory list */
|
||||
FILEDLG_StripEditControl(hWnd);
|
||||
@ -409,7 +399,7 @@ static LRESULT FILEDLG_WMCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
||||
lRet = SendDlgItemMessage(hWnd, lst2, LB_GETCURSEL, 0, 0);
|
||||
if (lRet == LB_ERR) return TRUE;
|
||||
SendDlgItemMessage(hWnd, lst2, LB_GETTEXT, lRet,
|
||||
MAKE_SEGPTR(tmpstr));
|
||||
(LPARAM)MAKE_SEGPTR(tmpstr));
|
||||
if (tmpstr[0] == '[')
|
||||
{
|
||||
tmpstr[strlen(tmpstr) - 1] = 0;
|
||||
@ -430,7 +420,7 @@ static LRESULT FILEDLG_WMCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
||||
FILEDLG_StripEditControl(hWnd);
|
||||
lRet = SendDlgItemMessage(hWnd, cmb2, CB_GETCURSEL, 0, 0L);
|
||||
if (lRet == LB_ERR) return 0;
|
||||
SendDlgItemMessage(hWnd, cmb2, CB_GETLBTEXT, lRet, MAKE_SEGPTR(tmpstr));
|
||||
SendDlgItemMessage(hWnd, cmb2, CB_GETLBTEXT, lRet, (LPARAM)MAKE_SEGPTR(tmpstr));
|
||||
sprintf(tmpstr, "%c:", tmpstr[2]);
|
||||
reset_scan:
|
||||
lRet = SendDlgItemMessage(hWnd, cmb1, CB_GETCURSEL, 0, 0);
|
||||
@ -440,7 +430,7 @@ static LRESULT FILEDLG_WMCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
||||
PTR_SEG_TO_LIN(lpofn->lpstrFilter),
|
||||
lRet);
|
||||
strncpy(tmpstr2, pstr, 511); tmpstr2[511]=0;
|
||||
SendDlgItemMessage(hWnd, edt1, WM_SETTEXT, 0, MAKE_SEGPTR(tmpstr2));
|
||||
SendDlgItemMessage(hWnd, edt1, WM_SETTEXT, 0, (LPARAM)MAKE_SEGPTR(tmpstr2));
|
||||
FILEDLG_ScanDir(hWnd, tmpstr);
|
||||
return TRUE;
|
||||
case chx1:
|
||||
@ -449,7 +439,7 @@ static LRESULT FILEDLG_WMCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
||||
return TRUE;
|
||||
case IDOK:
|
||||
almost_ok:
|
||||
SendDlgItemMessage(hWnd, edt1, WM_GETTEXT, 511, MAKE_SEGPTR(tmpstr));
|
||||
SendDlgItemMessage(hWnd, edt1, WM_GETTEXT, 511, (LPARAM)MAKE_SEGPTR(tmpstr));
|
||||
pstr = strrchr(tmpstr, '\\');
|
||||
if (pstr == NULL)
|
||||
pstr = strrchr(tmpstr, ':');
|
||||
@ -467,7 +457,7 @@ static LRESULT FILEDLG_WMCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
||||
*tmpstr=0;
|
||||
}
|
||||
printf("commdlg: %s, %s\n", tmpstr, tmpstr2);
|
||||
SendDlgItemMessage(hWnd, edt1, WM_SETTEXT, 0, MAKE_SEGPTR(tmpstr2));
|
||||
SendDlgItemMessage(hWnd, edt1, WM_SETTEXT, 0, (LPARAM)MAKE_SEGPTR(tmpstr2));
|
||||
FILEDLG_ScanDir(hWnd, tmpstr);
|
||||
return TRUE;
|
||||
}
|
||||
@ -485,7 +475,7 @@ static LRESULT FILEDLG_WMCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
||||
PTR_SEG_TO_LIN(lpofn->lpstrFilter),
|
||||
lRet), 511);
|
||||
tmpstr2[511]=0;
|
||||
SendDlgItemMessage(hWnd, edt1, WM_SETTEXT, 0, MAKE_SEGPTR(tmpstr2));
|
||||
SendDlgItemMessage(hWnd, edt1, WM_SETTEXT, 0, (LPARAM)MAKE_SEGPTR(tmpstr2));
|
||||
/* if ScanDir succeeds, we have changed the directory */
|
||||
if (FILEDLG_ScanDir(hWnd, tmpstr)) return TRUE;
|
||||
/* if not, this must be a filename */
|
||||
@ -495,13 +485,13 @@ static LRESULT FILEDLG_WMCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
||||
/* strip off the pathname */
|
||||
*pstr = 0;
|
||||
strncpy(tmpstr2, pstr+1, 511); tmpstr2[511]=0;
|
||||
SendDlgItemMessage(hWnd, edt1, WM_SETTEXT, 0, MAKE_SEGPTR(tmpstr2));
|
||||
SendDlgItemMessage(hWnd, edt1, WM_SETTEXT, 0, (LPARAM)MAKE_SEGPTR(tmpstr2));
|
||||
/* Should we MessageBox() if this fails? */
|
||||
if (!FILEDLG_ScanDir(hWnd, tmpstr)) return TRUE;
|
||||
strcpy(tmpstr, tmpstr2);
|
||||
}
|
||||
else
|
||||
SendDlgItemMessage(hWnd, edt1, WM_SETTEXT, 0, MAKE_SEGPTR(tmpstr));
|
||||
SendDlgItemMessage(hWnd, edt1, WM_SETTEXT, 0, (LPARAM)MAKE_SEGPTR(tmpstr));
|
||||
ShowWindow(hWnd, SW_HIDE);
|
||||
{
|
||||
int drive;
|
||||
@ -527,7 +517,7 @@ static LRESULT FILEDLG_WMCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
lRet = SendDlgItemMessage(hWnd, lst1, LB_GETCURSEL, 0, 0);
|
||||
SendDlgItemMessage(hWnd, lst1, LB_GETTEXT, lRet,
|
||||
MAKE_SEGPTR(tmpstr));
|
||||
(LPARAM)MAKE_SEGPTR(tmpstr));
|
||||
printf("strcpy'ing '%s'\n",tmpstr); fflush(stdout);
|
||||
strcpy(PTR_SEG_TO_LIN(lpofn->lpstrFileTitle), tmpstr);
|
||||
}
|
||||
@ -621,14 +611,12 @@ BOOL ChooseColor(LPCHOOSECOLOR lpChCol)
|
||||
HANDLE hInst, hDlgTmpl;
|
||||
BOOL bRet;
|
||||
|
||||
hDlgTmpl = GLOBAL_CreateBlock(GMEM_FIXED, sysres_DIALOG_CHOOSE_COLOR.bytes,
|
||||
sysres_DIALOG_CHOOSE_COLOR.size,
|
||||
GetCurrentPDB(), FALSE, FALSE, TRUE, NULL );
|
||||
hDlgTmpl = SYSRES_LoadResource( SYSRES_DIALOG_CHOOSE_COLOR );
|
||||
hInst = WIN_GetWindowInstance( lpChCol->hwndOwner );
|
||||
bRet = DialogBoxIndirectParam( hInst, hDlgTmpl, lpChCol->hwndOwner,
|
||||
GetWndProcEntry16("ColorDlgProc"),
|
||||
(DWORD)lpChCol );
|
||||
GLOBAL_FreeBlock( hDlgTmpl );
|
||||
SYSRES_FreeResource( hDlgTmpl );
|
||||
return bRet;
|
||||
}
|
||||
|
||||
@ -668,14 +656,12 @@ BOOL FindText(LPFINDREPLACE lpFind)
|
||||
HANDLE hInst, hDlgTmpl;
|
||||
BOOL bRet;
|
||||
|
||||
hDlgTmpl = GLOBAL_CreateBlock(GMEM_FIXED, sysres_DIALOG_FIND_TEXT.bytes,
|
||||
sysres_DIALOG_FIND_TEXT.size,
|
||||
GetCurrentPDB(), FALSE, FALSE, TRUE, NULL );
|
||||
hDlgTmpl = SYSRES_LoadResource( SYSRES_DIALOG_FIND_TEXT );
|
||||
hInst = WIN_GetWindowInstance( lpFind->hwndOwner );
|
||||
bRet = DialogBoxIndirectParam( hInst, hDlgTmpl, lpFind->hwndOwner,
|
||||
GetWndProcEntry16("FindTextDlgProc"),
|
||||
(DWORD)lpFind );
|
||||
GLOBAL_FreeBlock( hDlgTmpl );
|
||||
SYSRES_FreeResource( hDlgTmpl );
|
||||
return bRet;
|
||||
}
|
||||
|
||||
@ -688,14 +674,12 @@ BOOL ReplaceText(LPFINDREPLACE lpFind)
|
||||
HANDLE hInst, hDlgTmpl;
|
||||
BOOL bRet;
|
||||
|
||||
hDlgTmpl = GLOBAL_CreateBlock(GMEM_FIXED, sysres_DIALOG_REPLACE_TEXT.bytes,
|
||||
sysres_DIALOG_REPLACE_TEXT.size,
|
||||
GetCurrentPDB(), FALSE, FALSE, TRUE, NULL );
|
||||
hDlgTmpl = SYSRES_LoadResource( SYSRES_DIALOG_REPLACE_TEXT );
|
||||
hInst = WIN_GetWindowInstance( lpFind->hwndOwner );
|
||||
bRet = DialogBoxIndirectParam( hInst, hDlgTmpl, lpFind->hwndOwner,
|
||||
GetWndProcEntry16("ReplaceTextDlgProc"),
|
||||
(DWORD)lpFind );
|
||||
GLOBAL_FreeBlock( hDlgTmpl );
|
||||
SYSRES_FreeResource( hDlgTmpl );
|
||||
return bRet;
|
||||
}
|
||||
|
||||
@ -769,16 +753,9 @@ BOOL PrintDlg(LPPRINTDLG lpPrint)
|
||||
return TRUE;
|
||||
|
||||
if (lpPrint->Flags & PD_PRINTSETUP)
|
||||
hDlgTmpl = GLOBAL_CreateBlock( GMEM_FIXED,
|
||||
sysres_DIALOG_PRINT_SETUP.bytes,
|
||||
sysres_DIALOG_PRINT_SETUP.size,
|
||||
GetCurrentPDB(), FALSE,
|
||||
FALSE, TRUE, NULL );
|
||||
hDlgTmpl = SYSRES_LoadResource( SYSRES_DIALOG_PRINT_SETUP );
|
||||
else
|
||||
hDlgTmpl = GLOBAL_CreateBlock( GMEM_FIXED, sysres_DIALOG_PRINT.bytes,
|
||||
sysres_DIALOG_PRINT.size,
|
||||
GetCurrentPDB(), FALSE,
|
||||
FALSE, TRUE, NULL );
|
||||
hDlgTmpl = SYSRES_LoadResource( SYSRES_DIALOG_PRINT );
|
||||
|
||||
hInst = WIN_GetWindowInstance( lpPrint->hwndOwner );
|
||||
bRet = DialogBoxIndirectParam( hInst, hDlgTmpl, lpPrint->hwndOwner,
|
||||
@ -786,7 +763,7 @@ BOOL PrintDlg(LPPRINTDLG lpPrint)
|
||||
GetWndProcEntry16("PrintSetupDlgProc") :
|
||||
GetWndProcEntry16("PrintDlgProc"),
|
||||
(DWORD)lpPrint );
|
||||
GLOBAL_FreeBlock( hDlgTmpl );
|
||||
SYSRES_FreeResource( hDlgTmpl );
|
||||
return bRet;
|
||||
}
|
||||
|
||||
@ -845,9 +822,9 @@ LRESULT PrintSetupDlgProc(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam)
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* CommDlgExtendError (COMMDLG.26)
|
||||
* CommDlgExtendedError (COMMDLG.26)
|
||||
*/
|
||||
DWORD CommDlgExtendError(void)
|
||||
DWORD CommDlgExtendedError(void)
|
||||
{
|
||||
return CommDlgLastError;
|
||||
}
|
||||
@ -856,7 +833,7 @@ DWORD CommDlgExtendError(void)
|
||||
/***********************************************************************
|
||||
* GetFileTitle (COMMDLG.27)
|
||||
*/
|
||||
int GetFileTitle(LPCSTR lpFile, LPSTR lpTitle, UINT cbBuf)
|
||||
short GetFileTitle(LPCSTR lpFile, LPSTR lpTitle, UINT cbBuf)
|
||||
{
|
||||
int i, len;
|
||||
printf("GetFileTitle(%p %p %d); \n", lpFile, lpTitle, cbBuf);
|
||||
@ -879,7 +856,7 @@ int GetFileTitle(LPCSTR lpFile, LPSTR lpTitle, UINT cbBuf)
|
||||
printf("\n---> '%s' ", &lpFile[i]);
|
||||
|
||||
len = strlen(lpFile+i)+1;
|
||||
if (cbBuf < len);
|
||||
if (cbBuf < len)
|
||||
return len;
|
||||
|
||||
strncpy(lpTitle, &lpFile[i], len);
|
||||
|
@ -453,7 +453,7 @@ char *DOS_GetDosFileName(char *unixfilename)
|
||||
} else {
|
||||
/* Expand it if it's a relative name. */
|
||||
getcwd(temp, 255);
|
||||
if(strncmp(unixfilename, "./", 2) != 0) {
|
||||
if(strncmp(unixfilename, "./", 2) == 0) {
|
||||
strcat(temp, unixfilename + 1);
|
||||
} else {
|
||||
strcat(temp, "/");
|
||||
@ -934,20 +934,20 @@ struct dosdirent *DOS_readdir(struct dosdirent *de)
|
||||
strcpy(de->filename, d->d_name);
|
||||
if (d->d_reclen > 12)
|
||||
de->filename[12] = '\0';
|
||||
|
||||
ToDos(de->filename);
|
||||
} while ( !match(de->filename, de->filemask) );
|
||||
|
||||
strcpy(temp,de->unixpath);
|
||||
strcat(temp,"/");
|
||||
strcat(temp,de->filename);
|
||||
ToUnix(temp + strlen(de->unixpath));
|
||||
strcpy(temp,de->unixpath);
|
||||
strcat(temp,"/");
|
||||
strcat(temp,d->d_name);
|
||||
stat (temp, &st);
|
||||
de->attribute = 0x0;
|
||||
if S_ISDIR(st.st_mode)
|
||||
de->attribute |= FA_DIREC;
|
||||
|
||||
} while (!(de->attribute & FA_DIREC) &&
|
||||
!match(de->filename, de->filemask) );
|
||||
|
||||
|
||||
stat (temp, &st);
|
||||
de->attribute = 0x0;
|
||||
if S_ISDIR(st.st_mode)
|
||||
de->attribute |= FA_DIREC;
|
||||
|
||||
de->filesize = st.st_size;
|
||||
de->filetime = st.st_mtime;
|
||||
|
||||
|
@ -57,12 +57,13 @@ BOOL WinHelp(HWND hWnd, LPSTR lpHelpFile, WORD wCommand, DWORD dwData)
|
||||
case 0:
|
||||
case HELP_HELPONHELP:
|
||||
GetWindowsDirectory(str, sizeof(str));
|
||||
strcat(str, "\\winhelp.exe");
|
||||
strcat(str, "\\winhelp.exe winhelp.hlp");
|
||||
dprintf_exec(stddeb,"'%s'\n", str);
|
||||
break;
|
||||
case HELP_INDEX:
|
||||
GetWindowsDirectory(str, sizeof(str));
|
||||
strcat(str, "\\winhelp.exe");
|
||||
strcat(str, "\\winhelp.exe ");
|
||||
strcat(str, lpHelpFile);
|
||||
dprintf_exec(stddeb,"'%s'\n", str);
|
||||
break;
|
||||
default:
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include <string.h>
|
||||
#include "windows.h"
|
||||
#include "ole.h"
|
||||
#include "options.h"
|
||||
#include "winnls.h"
|
||||
#include "stddebug.h"
|
||||
#include "debug.h"
|
||||
@ -20,20 +21,18 @@
|
||||
DWORD WINAPI GetUserDefaultLCID()
|
||||
{
|
||||
/* Default sorting, neutral sublanguage */
|
||||
#if #LANG(En)
|
||||
return 9;
|
||||
#elif #LANG(De)
|
||||
return 7;
|
||||
#elif #LANG(Es)
|
||||
return 7; /* Just a Guess :-) */
|
||||
#elif #LANG(Fr)
|
||||
return 7; /* ditto :-) */
|
||||
#elif #LANG(No)
|
||||
return 0x14;
|
||||
#else
|
||||
/* Neutral language */
|
||||
return 0;
|
||||
#endif
|
||||
switch(Options.language)
|
||||
{
|
||||
case LANG_En: return 0x09;
|
||||
case LANG_Es: return 0x07; /* Just a Guess :-) */
|
||||
case LANG_De: return 0x07;
|
||||
case LANG_No: return 0x14;
|
||||
case LANG_Fr:
|
||||
case LANG_Fi:
|
||||
case LANG_Da:
|
||||
default:
|
||||
return 0; /* Neutral language */
|
||||
}
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
@ -192,7 +191,9 @@ UNSUPPORTED(LOCALE_INEGSEPBYSPACE)
|
||||
|
||||
/* Now, the language specific definitions. They don't have to be
|
||||
complete */
|
||||
#if #LANG(De)
|
||||
switch(Options.language)
|
||||
{
|
||||
case LANG_De:
|
||||
/* This definitions apply to Germany only. Users in Austria
|
||||
or Switzerland might want to modify them */
|
||||
LOCVAL(LOCALE_ILANGUAGE,"9")
|
||||
@ -315,9 +316,9 @@ LOCVAL(LOCALE_IPOSSEPBYSPACE)
|
||||
LOCVAL(LOCALE_INEGSYMPRECEDES)
|
||||
LOCVAL(LOCALE_INEGSEPBYSPACE)
|
||||
*/
|
||||
#endif /* LANG(De) */
|
||||
break; /* LANG(De) */
|
||||
|
||||
#if #LANG(Da)
|
||||
case LANG_Da:
|
||||
/* LOCVAL(LOCALE_ILANGUAGE,"9") */
|
||||
LOCVAL(LOCALE_SLANGUAGE,"Dansk")
|
||||
LOCVAL(LOCALE_SENGLANGUAGE,"Danish")
|
||||
@ -417,11 +418,13 @@ LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
|
||||
/* LOCVAL(LOCALE_IPOSSEPBYSPACE) */
|
||||
/* LOCVAL(LOCALE_INEGSYMPRECEDES) */
|
||||
/* LOCVAL(LOCALE_INEGSEPBYSPACE) */
|
||||
#endif /* LANG(Da) */
|
||||
break; /* LANG(Da) */
|
||||
|
||||
/*Insert other languages here*/
|
||||
|
||||
|
||||
default:
|
||||
break;
|
||||
} /* switch */
|
||||
|
||||
if(!retLen)
|
||||
{
|
||||
|
@ -74,13 +74,13 @@ static char *GetIniFileName(char *name, char *dir)
|
||||
if (strchr(name, '/'))
|
||||
return name;
|
||||
|
||||
if (strchr(name, '\\'))
|
||||
return DOS_GetUnixFileName(name);
|
||||
|
||||
if (strlen(dir)) {
|
||||
strcpy(temp, dir);
|
||||
strcat(temp, "\\");
|
||||
strcat(temp, name);
|
||||
|
||||
}
|
||||
else
|
||||
strcpy(temp, name);
|
||||
return DOS_GetUnixFileName(temp);
|
||||
}
|
||||
|
||||
@ -92,23 +92,37 @@ static TSecHeader *load (char *filename, char **pfullname)
|
||||
char *bufptr;
|
||||
char *lastnonspc;
|
||||
int bufsize;
|
||||
char *file;
|
||||
char *file, *purefilename;
|
||||
int c;
|
||||
char path[MAX_PATH+1];
|
||||
BOOL firstbrace;
|
||||
|
||||
*pfullname = NULL;
|
||||
|
||||
/* Try the Windows directory */
|
||||
dprintf_profile(stddeb,"Trying to load file %s \n", filename);
|
||||
|
||||
GetWindowsDirectory(path, sizeof(path));
|
||||
file = GetIniFileName(filename, path);
|
||||
|
||||
dprintf_profile(stddeb,"Load %s\n", file);
|
||||
/* First try it as is */
|
||||
file = GetIniFileName(filename, "");
|
||||
f = fopen(file, "r");
|
||||
|
||||
if (f == NULL) {
|
||||
/* Try the path of the current executable */
|
||||
|
||||
if ((purefilename = strrchr( filename, '\\' )))
|
||||
purefilename++;
|
||||
else if ((purefilename = strrchr( filename, '/' )))
|
||||
purefilename++;
|
||||
else
|
||||
purefilename = filename;
|
||||
ToUnix(purefilename);
|
||||
|
||||
/* Now try the Windows directory */
|
||||
GetWindowsDirectory(path, sizeof(path));
|
||||
file = GetIniFileName(purefilename, path);
|
||||
dprintf_profile(stddeb,"Trying to load in windows directory file %s\n",
|
||||
file);
|
||||
f = fopen(file, "r");
|
||||
|
||||
if (f == NULL) { /* Try the path of the current executable */
|
||||
|
||||
if (GetCurrentTask())
|
||||
{
|
||||
@ -116,16 +130,37 @@ static TSecHeader *load (char *filename, char **pfullname)
|
||||
GetModuleFileName( GetCurrentTask(), path, MAX_PATH );
|
||||
if ((p = strrchr( path, '\\' )))
|
||||
{
|
||||
p[1] = '\0';
|
||||
file = GetIniFileName(filename, path);
|
||||
p[0] = '\0'; /* Remove trailing slash */
|
||||
file = GetIniFileName(purefilename, path);
|
||||
dprintf_profile(stddeb,
|
||||
"Trying to load in current directory%s\n",
|
||||
file);
|
||||
f = fopen(file, "r");
|
||||
}
|
||||
}
|
||||
}
|
||||
if (f == NULL) { /* And now in $HOME/.wine */
|
||||
|
||||
strcpy(file,getenv("HOME"));
|
||||
strcat(file, "/.wine/");
|
||||
strcat(file, purefilename);
|
||||
dprintf_profile(stddeb,"Trying to load in user-directory %s\n", file);
|
||||
f = fopen(file, "r");
|
||||
}
|
||||
|
||||
if (f == NULL) {
|
||||
/* FIXED: we ought to create it now (in which directory?) */
|
||||
/* lets do it in ~/.wine */
|
||||
strcpy(file,getenv("HOME"));
|
||||
strcat(file, "/.wine/");
|
||||
strcat(file, purefilename);
|
||||
dprintf_profile(stddeb,"Creating %s\n", file);
|
||||
f = fopen(file, "w+");
|
||||
if (f == NULL) {
|
||||
fprintf(stderr, "profile.c: load() can't find file %s\n", filename);
|
||||
/* FIXME: we ought to create it now (in which directory?) */
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
*pfullname = strdup(file);
|
||||
@ -206,7 +241,7 @@ static TSecHeader *load (char *filename, char **pfullname)
|
||||
skipspc = TRUE;
|
||||
do {
|
||||
c = fgetc(f);
|
||||
if (c == EOF || c == '\n' || c == ';') break;
|
||||
if (c == EOF || c == '\n') break;
|
||||
if (!isspace(c) || !skipspc) {
|
||||
skipspc = FALSE;
|
||||
bufsize++;
|
||||
|
67
misc/shell.c
67
misc/shell.c
@ -8,12 +8,11 @@
|
||||
#include <ctype.h>
|
||||
#include "windows.h"
|
||||
#include "shell.h"
|
||||
#include "global.h"
|
||||
#include "neexe.h"
|
||||
#include "selectors.h"
|
||||
#include "alias.h"
|
||||
#include "relay32.h"
|
||||
#include "../rc/sysres.h"
|
||||
#include "resource.h"
|
||||
#include "dlgs.h"
|
||||
#include "win.h"
|
||||
#include "stddebug.h"
|
||||
@ -224,7 +223,7 @@ LONG RegOpenKey(HKEY hKey, LPCSTR lpSubKey, HKEY FAR *lphKey)
|
||||
|
||||
dprintf_reg(stddeb, "RegOpenKey(%08lX, %p='%s', %p)\n",
|
||||
(DWORD)hKey, lpSubKey, lpSubKey, lphKey);
|
||||
if (lphKey == NULL) return ERROR_INVALID_PARAMETER;
|
||||
if (lphKey == NULL) return SHELL_ERROR_INVALID_PARAMETER;
|
||||
switch((DWORD)hKey) {
|
||||
case 0:
|
||||
lpKey = lphTopKey; break;
|
||||
@ -237,7 +236,7 @@ LONG RegOpenKey(HKEY hKey, LPCSTR lpSubKey, HKEY FAR *lphKey)
|
||||
}
|
||||
if (lpSubKey == NULL || !*lpSubKey) {
|
||||
*lphKey = hKey;
|
||||
return ERROR_SUCCESS;
|
||||
return SHELL_ERROR_SUCCESS;
|
||||
}
|
||||
while(*lpSubKey) {
|
||||
ptr = strchr(lpSubKey,'\\');
|
||||
@ -254,11 +253,11 @@ LONG RegOpenKey(HKEY hKey, LPCSTR lpSubKey, HKEY FAR *lphKey)
|
||||
}
|
||||
if (lpKey == NULL) {
|
||||
dprintf_reg(stddeb,"RegOpenKey: key %s not found!\n",str);
|
||||
return ERROR_BADKEY;
|
||||
return SHELL_ERROR_BADKEY;
|
||||
}
|
||||
}
|
||||
*lphKey = lpKey->hKey;
|
||||
return ERROR_SUCCESS;
|
||||
return SHELL_ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
@ -275,7 +274,7 @@ LONG RegCreateKey(HKEY hKey, LPCSTR lpSubKey, HKEY FAR *lphKey)
|
||||
char str[128];
|
||||
|
||||
dprintf_reg(stddeb, "RegCreateKey(%08lX, '%s', %p)\n", (DWORD)hKey, lpSubKey, lphKey);
|
||||
if (lphKey == NULL) return ERROR_INVALID_PARAMETER;
|
||||
if (lphKey == NULL) return SHELL_ERROR_INVALID_PARAMETER;
|
||||
switch((DWORD)hKey) {
|
||||
case 0:
|
||||
lpKey = lphTopKey; break;
|
||||
@ -288,7 +287,7 @@ LONG RegCreateKey(HKEY hKey, LPCSTR lpSubKey, HKEY FAR *lphKey)
|
||||
}
|
||||
if (lpSubKey == NULL || !*lpSubKey) {
|
||||
*lphKey = hKey;
|
||||
return ERROR_SUCCESS;
|
||||
return SHELL_ERROR_SUCCESS;
|
||||
}
|
||||
while (*lpSubKey) {
|
||||
dprintf_reg(stddeb, "RegCreateKey: Looking for subkey %s\n", lpSubKey);
|
||||
@ -309,13 +308,13 @@ LONG RegCreateKey(HKEY hKey, LPCSTR lpSubKey, HKEY FAR *lphKey)
|
||||
lpNewKey = (LPKEYSTRUCT) GlobalLock(hNewKey);
|
||||
if (lpNewKey == NULL) {
|
||||
printf("RegCreateKey // Can't alloc new key !\n");
|
||||
return ERROR_OUTOFMEMORY;
|
||||
return SHELL_ERROR_OUTOFMEMORY;
|
||||
}
|
||||
lpNewKey->hKey = hNewKey;
|
||||
lpNewKey->lpSubKey = malloc(strlen(str) + 1);
|
||||
if (lpNewKey->lpSubKey == NULL) {
|
||||
printf("RegCreateKey // Can't alloc key string !\n");
|
||||
return ERROR_OUTOFMEMORY;
|
||||
return SHELL_ERROR_OUTOFMEMORY;
|
||||
}
|
||||
strcpy(lpNewKey->lpSubKey, str);
|
||||
lpNewKey->lpNextKey = lpPrevKey->lpSubLvl;
|
||||
@ -333,7 +332,7 @@ LONG RegCreateKey(HKEY hKey, LPCSTR lpSubKey, HKEY FAR *lphKey)
|
||||
dprintf_reg(stddeb,"RegCreateKey // found '%s', key=%08lX\n", str, (DWORD)*lphKey);
|
||||
}
|
||||
}
|
||||
return ERROR_SUCCESS;
|
||||
return SHELL_ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
@ -343,7 +342,7 @@ LONG RegCreateKey(HKEY hKey, LPCSTR lpSubKey, HKEY FAR *lphKey)
|
||||
LONG RegCloseKey(HKEY hKey)
|
||||
{
|
||||
dprintf_reg(stdnimp, "EMPTY STUB !!! RegCloseKey(%08lX);\n", (DWORD)hKey);
|
||||
return ERROR_SUCCESS;
|
||||
return SHELL_ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
@ -354,7 +353,7 @@ LONG RegDeleteKey(HKEY hKey, LPCSTR lpSubKey)
|
||||
{
|
||||
dprintf_reg(stdnimp, "EMPTY STUB !!! RegDeleteKey(%08lX, '%s');\n",
|
||||
(DWORD)hKey, lpSubKey);
|
||||
return ERROR_SUCCESS;
|
||||
return SHELL_ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
@ -369,22 +368,22 @@ LONG RegSetValue(HKEY hKey, LPCSTR lpSubKey, DWORD dwType,
|
||||
LONG dwRet;
|
||||
dprintf_reg(stddeb, "RegSetValue(%08lX, '%s', %08lX, '%s', %08lX);\n",
|
||||
(DWORD)hKey, lpSubKey, dwType, lpVal, dwIgnored);
|
||||
/*if (lpSubKey == NULL) return ERROR_INVALID_PARAMETER;*/
|
||||
if (lpVal == NULL) return ERROR_INVALID_PARAMETER;
|
||||
if ((dwRet = RegOpenKey(hKey, lpSubKey, &hRetKey)) != ERROR_SUCCESS) {
|
||||
/*if (lpSubKey == NULL) return SHELL_ERROR_INVALID_PARAMETER;*/
|
||||
if (lpVal == NULL) return SHELL_ERROR_INVALID_PARAMETER;
|
||||
if ((dwRet = RegOpenKey(hKey, lpSubKey, &hRetKey)) != SHELL_ERROR_SUCCESS) {
|
||||
dprintf_reg(stddeb, "RegSetValue // key not found ... so create it !\n");
|
||||
if ((dwRet = RegCreateKey(hKey, lpSubKey, &hRetKey)) != ERROR_SUCCESS) {
|
||||
if ((dwRet = RegCreateKey(hKey, lpSubKey, &hRetKey)) != SHELL_ERROR_SUCCESS) {
|
||||
fprintf(stderr, "RegSetValue // key creation error %08lX !\n", dwRet);
|
||||
return dwRet;
|
||||
}
|
||||
}
|
||||
lpKey = (LPKEYSTRUCT)GlobalLock(hRetKey);
|
||||
if (lpKey == NULL) return ERROR_BADKEY;
|
||||
if (lpKey == NULL) return SHELL_ERROR_BADKEY;
|
||||
if (lpKey->lpValue != NULL) free(lpKey->lpValue);
|
||||
lpKey->lpValue = xmalloc(strlen(lpVal) + 1);
|
||||
strcpy(lpKey->lpValue, lpVal);
|
||||
dprintf_reg(stddeb,"RegSetValue // successful key='%s' val='%s' !\n", lpSubKey, lpKey->lpValue);
|
||||
return ERROR_SUCCESS;
|
||||
return SHELL_ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
@ -400,16 +399,16 @@ LONG RegQueryValue(HKEY hKey, LPCSTR lpSubKey, LPSTR lpVal, LONG FAR *lpcb)
|
||||
dprintf_reg(stddeb, "RegQueryValue(%08lX, '%s', %p, %p);\n",
|
||||
(DWORD)hKey, lpSubKey, lpVal, lpcb);
|
||||
/*if (lpSubKey == NULL) return ERROR_INVALID_PARAMETER;*/
|
||||
if (lpVal == NULL) return ERROR_INVALID_PARAMETER;
|
||||
if (lpcb == NULL) return ERROR_INVALID_PARAMETER;
|
||||
if (!*lpcb) return ERROR_INVALID_PARAMETER;
|
||||
if (lpVal == NULL) return SHELL_ERROR_INVALID_PARAMETER;
|
||||
if (lpcb == NULL) return SHELL_ERROR_INVALID_PARAMETER;
|
||||
if (!*lpcb) return SHELL_ERROR_INVALID_PARAMETER;
|
||||
|
||||
if ((dwRet = RegOpenKey(hKey, lpSubKey, &hRetKey)) != ERROR_SUCCESS) {
|
||||
if ((dwRet = RegOpenKey(hKey, lpSubKey, &hRetKey)) != SHELL_ERROR_SUCCESS) {
|
||||
fprintf(stderr, "RegQueryValue // key not found !\n");
|
||||
return dwRet;
|
||||
}
|
||||
lpKey = (LPKEYSTRUCT)GlobalLock(hRetKey);
|
||||
if (lpKey == NULL) return ERROR_BADKEY;
|
||||
if (lpKey == NULL) return SHELL_ERROR_BADKEY;
|
||||
if (lpKey->lpValue != NULL) {
|
||||
if ((size = strlen(lpKey->lpValue)+1) > *lpcb){
|
||||
strncpy(lpVal,lpKey->lpValue,*lpcb-1);
|
||||
@ -423,7 +422,7 @@ LONG RegQueryValue(HKEY hKey, LPCSTR lpSubKey, LPSTR lpVal, LONG FAR *lpcb)
|
||||
*lpcb = (LONG)1;
|
||||
}
|
||||
dprintf_reg(stddeb,"RegQueryValue // return '%s' !\n", lpVal);
|
||||
return ERROR_SUCCESS;
|
||||
return SHELL_ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
@ -436,7 +435,7 @@ LONG RegEnumKey(HKEY hKey, DWORD dwSubKey, LPSTR lpBuf, DWORD dwSize)
|
||||
LONG len;
|
||||
|
||||
dprintf_reg(stddeb, "RegEnumKey(%08lX, %ld)\n", (DWORD)hKey, dwSubKey);
|
||||
if (lpBuf == NULL) return ERROR_INVALID_PARAMETER;
|
||||
if (lpBuf == NULL) return SHELL_ERROR_INVALID_PARAMETER;
|
||||
switch((DWORD)hKey) {
|
||||
case 0:
|
||||
lpKey = lphTopKey; break;
|
||||
@ -454,13 +453,13 @@ LONG RegEnumKey(HKEY hKey, DWORD dwSubKey, LPSTR lpBuf, DWORD dwSize)
|
||||
strncpy(lpBuf,lpKey->lpSubKey,len);
|
||||
lpBuf[len] = 0;
|
||||
dprintf_reg(stddeb, "RegEnumKey: found %s\n",lpBuf);
|
||||
return ERROR_SUCCESS;
|
||||
return SHELL_ERROR_SUCCESS;
|
||||
}
|
||||
dwSubKey--;
|
||||
lpKey = lpKey->lpNextKey;
|
||||
}
|
||||
dprintf_reg(stddeb, "RegEnumKey: key not found!\n");
|
||||
return ERROR_INVALID_PARAMETER;
|
||||
return SHELL_ERROR_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
|
||||
@ -584,7 +583,7 @@ HINSTANCE ShellExecute(HWND hWnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpPa
|
||||
}
|
||||
} else {
|
||||
len=200;
|
||||
if (RegQueryValue((HKEY)HKEY_CLASSES_ROOT,p,subclass,&len)==ERROR_SUCCESS) {
|
||||
if (RegQueryValue((HKEY)HKEY_CLASSES_ROOT,p,subclass,&len)==SHELL_ERROR_SUCCESS) {
|
||||
if (len>20)
|
||||
fprintf(stddeb,"ShellExecute:subclass with len %ld? (%s), please report.\n",len,subclass);
|
||||
subclass[len]='\0';
|
||||
@ -593,7 +592,7 @@ HINSTANCE ShellExecute(HWND hWnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpPa
|
||||
strcat(subclass,"\\command");
|
||||
dprintf_exec(stddeb,"ShellExecute:looking for %s.\n",subclass);
|
||||
len=400;
|
||||
if (RegQueryValue((HKEY)HKEY_CLASSES_ROOT,subclass,cmd,&len)==ERROR_SUCCESS) {
|
||||
if (RegQueryValue((HKEY)HKEY_CLASSES_ROOT,subclass,cmd,&len)==SHELL_ERROR_SUCCESS) {
|
||||
char *t;
|
||||
dprintf_exec(stddeb,"ShellExecute:...got %s\n",cmd);
|
||||
cmd[len]='\0';
|
||||
@ -701,17 +700,13 @@ INT ShellAbout(HWND hWnd, LPCSTR szApp, LPCSTR szOtherStuff, HICON hIcon)
|
||||
initialized=1;
|
||||
}
|
||||
|
||||
handle = GLOBAL_CreateBlock( GMEM_FIXED,
|
||||
sysres_DIALOG_SHELL_ABOUT_MSGBOX.bytes,
|
||||
sysres_DIALOG_SHELL_ABOUT_MSGBOX.size,
|
||||
GetCurrentPDB(), FALSE, FALSE,
|
||||
TRUE, NULL );
|
||||
handle = SYSRES_LoadResource( SYSRES_DIALOG_SHELL_ABOUT_MSGBOX );
|
||||
if (!handle) return FALSE;
|
||||
bRet = DialogBoxIndirectParam( WIN_GetWindowInstance( hWnd ),
|
||||
handle, hWnd,
|
||||
GetWndProcEntry16("AboutDlgProc"),
|
||||
(LONG)hIcon );
|
||||
GLOBAL_FreeBlock( handle );
|
||||
SYSRES_FreeResource( handle );
|
||||
return bRet;
|
||||
}
|
||||
|
||||
|
@ -158,5 +158,5 @@ DWORD USER32_CreateWindowExA(long flags,char* class,char *title,
|
||||
return (DWORD) CreateWindowEx(flags,MAKE_SEGPTR(classbuf),
|
||||
MAKE_SEGPTR(titlebuf),style,x,y,width,height,
|
||||
(HWND)parent,(HMENU)menu,(HINSTANCE)instance,
|
||||
param);
|
||||
(LPVOID)param);
|
||||
}
|
||||
|
@ -17,6 +17,28 @@
|
||||
#include "debug.h"
|
||||
|
||||
|
||||
/* Structure for real-mode callbacks */
|
||||
typedef struct
|
||||
{
|
||||
DWORD edi;
|
||||
DWORD esi;
|
||||
DWORD ebp;
|
||||
DWORD reserved;
|
||||
DWORD ebx;
|
||||
DWORD edx;
|
||||
DWORD ecx;
|
||||
DWORD eax;
|
||||
WORD flags;
|
||||
WORD es;
|
||||
WORD ds;
|
||||
WORD fs;
|
||||
WORD gs;
|
||||
WORD ip;
|
||||
WORD cs;
|
||||
WORD sp;
|
||||
WORD ss;
|
||||
} REALMODECALL;
|
||||
|
||||
/**********************************************************************
|
||||
* INT_Int31Handler
|
||||
*
|
||||
@ -132,13 +154,39 @@ void INT_Int31Handler( struct sigcontext_struct context )
|
||||
* ES:DI points to real-mode call structure
|
||||
* Currently we just print it out and return error.
|
||||
*/
|
||||
ptr = (BYTE *)PTR_SEG_OFF_TO_LIN( ES_reg(&context), DI_reg(&context) );
|
||||
fprintf(stdnimp,
|
||||
"RealModeInt %02x: AX=%04x BX=%04x CX=%04x DX=%04x SI=%04x DI=%04x ES=%04x DS=%04x\n",
|
||||
BL_reg(&context),
|
||||
*(WORD*)(ptr+0x1c),*(WORD*)(ptr+0x10),*(WORD*)(ptr+0x18),*(WORD*)(ptr+0x14),
|
||||
*(WORD*)(ptr+0x04),*(WORD*)(ptr+0x00),*(WORD*)(ptr+0x22),*(WORD*)(ptr+0x24));
|
||||
SET_CFLAG(&context);
|
||||
{
|
||||
REALMODECALL *p = (REALMODECALL *)PTR_SEG_OFF_TO_LIN( ES_reg(&context), DI_reg(&context) );
|
||||
fprintf(stdnimp,
|
||||
"RealModeInt %02x: EAX=%08lx EBX=%08lx ECX=%08lx EDX=%08lx\n"
|
||||
" ESI=%08lx EDI=%08lx ES=%04x DS=%04x\n",
|
||||
BL_reg(&context), p->eax, p->ebx, p->ecx, p->edx,
|
||||
p->esi, p->edi, p->es, p->ds );
|
||||
SET_CFLAG(&context);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x0301: /* Call real mode procedure with far return */
|
||||
{
|
||||
REALMODECALL *p = (REALMODECALL *)PTR_SEG_OFF_TO_LIN( ES_reg(&context), DI_reg(&context) );
|
||||
fprintf(stdnimp,
|
||||
"RealModeCall: EAX=%08lx EBX=%08lx ECX=%08lx EDX=%08lx\n"
|
||||
" ESI=%08lx EDI=%08lx ES=%04x DS=%04x CS:IP=%04x:%04x\n",
|
||||
p->eax, p->ebx, p->ecx, p->edx,
|
||||
p->esi, p->edi, p->es, p->ds, p->cs, p->ip );
|
||||
SET_CFLAG(&context);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x0302: /* Call real mode procedure with interrupt return */
|
||||
{
|
||||
REALMODECALL *p = (REALMODECALL *)PTR_SEG_OFF_TO_LIN( ES_reg(&context), DI_reg(&context) );
|
||||
fprintf(stdnimp,
|
||||
"RealModeCallIret: EAX=%08lx EBX=%08lx ECX=%08lx EDX=%08lx\n"
|
||||
" ESI=%08lx EDI=%08lx ES=%04x DS=%04x CS:IP=%04x:%04x\n",
|
||||
p->eax, p->ebx, p->ecx, p->edx,
|
||||
p->esi, p->edi, p->es, p->ds, p->cs, p->ip );
|
||||
SET_CFLAG(&context);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x0400: /* Get DPMI version */
|
||||
|
@ -181,9 +181,11 @@ static BYTE *INSTR_GetOperandAddr( struct sigcontext_struct *context,
|
||||
base += (signed short)off;
|
||||
break;
|
||||
}
|
||||
base &= 0xffff;
|
||||
}
|
||||
if (segprefix != -1) seg = segprefix;
|
||||
|
||||
/* FIXME: should check limit of the segment here */
|
||||
return (BYTE *)PTR_SEG_OFF_TO_LIN( seg, (base + (index << ss)) );
|
||||
}
|
||||
|
||||
|
105
miscemu/int21.c
105
miscemu/int21.c
@ -444,7 +444,7 @@ static void GetSystemDate(struct sigcontext_struct *context)
|
||||
AX_reg(context) = now->tm_wday;
|
||||
}
|
||||
|
||||
static void GetSystemTime(struct sigcontext_struct *context)
|
||||
static void INT21_GetSystemTime(struct sigcontext_struct *context)
|
||||
{
|
||||
struct tm *now;
|
||||
struct timeval tv;
|
||||
@ -603,6 +603,92 @@ static void CloseFile(struct sigcontext_struct *context)
|
||||
RESET_CFLAG(context);
|
||||
}
|
||||
|
||||
void ExtendedOpenCreateFile(struct sigcontext_struct *context)
|
||||
{
|
||||
dprintf_int(stddeb, "int21: extended open/create: file= %s \n",
|
||||
DOS_GetUnixFileName(PTR_SEG_OFF_TO_LIN(DS_reg(context),SI_reg(context))));
|
||||
/* Shuffle arguments to call OpenExistingFile */
|
||||
AL_reg(context) = BL_reg(context);
|
||||
DX_reg(context) = SI_reg(context);
|
||||
/* BX,CX and DX should be preserved */
|
||||
OpenExistingFile(context);
|
||||
if ((EFL_reg(context) & 0x0001)==0)
|
||||
{ /* It exists */
|
||||
dprintf_int(stddeb, "int21: extended open/create %s exists \n",
|
||||
DOS_GetUnixFileName(PTR_SEG_OFF_TO_LIN(DS_reg(context),SI_reg(context))));
|
||||
/* Now decide what do do */
|
||||
if ((DL_reg(context) & 0x0007)== 0)
|
||||
{
|
||||
BX_reg(context) = AX_reg(context);
|
||||
CloseFile(context);
|
||||
AX_reg(context) = 0x0050;/*File exists*/
|
||||
CX_reg(context) = 0;
|
||||
SET_CFLAG(context);
|
||||
dprintf_int(stddeb, "int21: extended open/create: failed because file exixts \n");
|
||||
return;
|
||||
}
|
||||
if ((DL_reg(context) & 0x0007)== 2) {
|
||||
/* Truncate it, but first check if opend for write */
|
||||
if ((BL_reg(context) & 0x0007)== 0) {
|
||||
BX_reg(context) = AX_reg(context);
|
||||
CloseFile(context);
|
||||
dprintf_int(stddeb, "int21: extended open/create: failed, trunc on ro file");
|
||||
AX_reg(context) = 0x000C;/*Access code invalid*/
|
||||
CX_reg(context) = 0;
|
||||
SET_CFLAG(context);
|
||||
return;
|
||||
}
|
||||
/* Shuffle arguments to call CloseFile */
|
||||
dprintf_int(stddeb, "int21: extended open/create: Closing before truncate\n");
|
||||
BX_reg(context) = AX_reg(context);
|
||||
/* BX and DX should be preserved */
|
||||
CloseFile(context);
|
||||
if (EFL_reg(context) & 0x0001) {
|
||||
dprintf_int(stddeb, "int21: extended open/create: close before trunc failed");
|
||||
AX_reg(context) = 0x0019;/*Seek Error*/
|
||||
CX_reg(context) = 0;
|
||||
SET_CFLAG(context);
|
||||
}
|
||||
/* Shuffle arguments to call CreateFile */
|
||||
dprintf_int(stddeb, "int21: extended open/create: Truncating\n");
|
||||
AL_reg(context) = BL_reg(context);
|
||||
/* CX is still the same */
|
||||
DX_reg(context) = SI_reg(context);
|
||||
CreateFile(context);
|
||||
if (EFL_reg(context) & 0x0001) { /*no file open, flags set */
|
||||
dprintf_int(stddeb, "int21: extended open/create: truncfailed");
|
||||
return;
|
||||
}
|
||||
CX_reg(context) = 3;
|
||||
return;
|
||||
}
|
||||
CX_reg(context) = 1;
|
||||
return;
|
||||
}
|
||||
else /* file does not exist */
|
||||
{
|
||||
dprintf_int(stddeb, "int21: extended open/create %s dosen't exists \n",
|
||||
DOS_GetUnixFileName(PTR_SEG_OFF_TO_LIN(DS_reg(context),SI_reg(context))));
|
||||
if ((DL_reg(context) & 0x00F0)== 0) {
|
||||
CX_reg(context) = 0;
|
||||
SET_CFLAG(context);
|
||||
dprintf_int(stddeb, "int21: extended open/create: failed, file dosen't exist\n");
|
||||
return;
|
||||
}
|
||||
/* Shuffle arguments to call CreateFile */
|
||||
dprintf_int(stddeb, "int21: extended open/create: Creating\n");
|
||||
AL_reg(context) = BL_reg(context);
|
||||
/* CX should still be the same */
|
||||
DX_reg(context) = SI_reg(context);
|
||||
CreateFile(context);
|
||||
if (EFL_reg(context) & 0x0001) { /*no file open, flags set */
|
||||
dprintf_int(stddeb, "int21: extended open/create: create failed\n");
|
||||
return;
|
||||
}
|
||||
CX_reg(context) = 2;
|
||||
return;
|
||||
}
|
||||
}
|
||||
static void RenameFile(struct sigcontext_struct *context)
|
||||
{
|
||||
char *newname, *oldname;
|
||||
@ -1312,7 +1398,7 @@ void DOS3Call( struct sigcontext_struct context )
|
||||
break;
|
||||
|
||||
case 0x2c: /* GET SYSTEM TIME */
|
||||
GetSystemTime(&context);
|
||||
INT21_GetSystemTime(&context);
|
||||
break;
|
||||
|
||||
case 0x2d: /* SET SYSTEM TIME */
|
||||
@ -1738,6 +1824,21 @@ void DOS3Call( struct sigcontext_struct context )
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x6C: /* Extended Open/Create*/
|
||||
ExtendedOpenCreateFile(&context);
|
||||
break;
|
||||
|
||||
case 0x70: /* MS-DOS 7 (Windows95) - ??? (country-specific?)*/
|
||||
case 0x71: /* MS-DOS 7 (Chicago) - LONG FILENAME FUNCTIONS */
|
||||
case 0x72: /* MS-DOS 7 (Windows95) - ??? */
|
||||
case 0x73: /* MS-DOS 7 (Windows95) - DRIVE LOCKING ??? */
|
||||
dprintf_int(stddeb,"int21: windows95 function AX %04x\n",
|
||||
AX_reg(&context));
|
||||
dprintf_int(stddeb, " returning unimplemented\n");
|
||||
SET_CFLAG(&context);
|
||||
AL_reg(&context) = 0;
|
||||
break;
|
||||
|
||||
case 0xdc: /* CONNECTION SERVICES - GET CONNECTION NUMBER */
|
||||
break;
|
||||
|
||||
|
@ -227,7 +227,7 @@ HBITMAP LoadBitmap( HANDLE instance, SEGPTR name )
|
||||
{
|
||||
char *str = (char *)PTR_SEG_TO_LIN( name );
|
||||
dprintf_bitmap( stddeb, "LoadBitmap("NPFMT",'%s')\n", instance, str );
|
||||
if (str[0] == '#') name = (SEGPTR)(WORD)atoi( str + 1 );
|
||||
if (str[0] == '#') name = (SEGPTR)(DWORD)(WORD)atoi( str + 1 );
|
||||
}
|
||||
else
|
||||
dprintf_bitmap( stddeb, "LoadBitmap("NPFMT",%04x)\n",
|
||||
|
@ -368,7 +368,7 @@ static HANDLE CURSORICON_Load( HANDLE hInstance, SEGPTR name, int width,
|
||||
return 0;
|
||||
}
|
||||
/* Make it owned by the module */
|
||||
FarSetOwner( handle, GetExePtr( hInstance ) );
|
||||
FarSetOwner( handle, (WORD)(DWORD)GetExePtr( hInstance ) );
|
||||
info = (CURSORICONINFO *)GlobalLock( handle );
|
||||
info->ptHotSpot.x = hotspot.x;
|
||||
info->ptHotSpot.y = hotspot.y;
|
||||
@ -404,7 +404,7 @@ static HANDLE CURSORICON_Copy( HANDLE hInstance, HANDLE handle )
|
||||
if (!(hInstance = GetExePtr( hInstance ))) return 0;
|
||||
size = GlobalSize( handle );
|
||||
hNew = GlobalAlloc( GMEM_MOVEABLE, size );
|
||||
FarSetOwner( hNew, hInstance );
|
||||
FarSetOwner( hNew, (WORD)(DWORD)hInstance );
|
||||
ptrNew = (char *)GlobalLock( hNew );
|
||||
memcpy( ptrNew, ptrOld, size );
|
||||
GlobalUnlock( handle );
|
||||
|
@ -106,8 +106,8 @@ void DC_FillDevCaps( DeviceCaps * caps )
|
||||
caps->vertRes = screenHeight;
|
||||
caps->bitsPixel = screenDepth;
|
||||
caps->planes = 1;
|
||||
caps->numBrushes = 0;
|
||||
caps->numPens = 0;
|
||||
caps->numBrushes = 16+6; /* 16 solid + 6 hatched brushes */
|
||||
caps->numPens = 16; /* 16 solid pens */
|
||||
caps->numMarkers = 0;
|
||||
caps->numFonts = 0;
|
||||
caps->numColors = 1 << caps->bitsPixel;
|
||||
|
@ -192,32 +192,6 @@ BOOL GDI_Init(void)
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* GDI_AppendToPenBrushList
|
||||
*/
|
||||
BOOL GDI_AppendToPenBrushList(HANDLE hNewObj)
|
||||
{
|
||||
HANDLE *lphObj;
|
||||
int i = 1;
|
||||
if (hNewObj == 0) return FALSE;
|
||||
if (lpPenBrushList == NULL) {
|
||||
lpPenBrushList = xmalloc(MAX_OBJ * sizeof(HANDLE));
|
||||
lpPenBrushList[0] = 0;
|
||||
dprintf_gdi(stddeb,"GDI_AppendToPenBrushList() lpPenBrushList allocated !\n");
|
||||
}
|
||||
for (lphObj = lpPenBrushList; i < MAX_OBJ; i++) {
|
||||
if (*lphObj == 0) {
|
||||
*lphObj = hNewObj;
|
||||
*(lphObj + 1) = 0;
|
||||
dprintf_gdi(stddeb,"GDI_AppendToPenBrushList("NPFMT") appended (count=%d)\n", hNewObj, i);
|
||||
return TRUE;
|
||||
}
|
||||
lphObj++;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* GDI_AllocObject
|
||||
*/
|
||||
@ -231,9 +205,6 @@ HANDLE GDI_AllocObject( WORD size, WORD magic )
|
||||
obj->hNext = 0;
|
||||
obj->wMagic = magic;
|
||||
obj->dwCount = ++count;
|
||||
if (magic == PEN_MAGIC || magic == BRUSH_MAGIC) {
|
||||
GDI_AppendToPenBrushList(handle);
|
||||
}
|
||||
return handle;
|
||||
}
|
||||
|
||||
@ -406,8 +377,71 @@ BOOL UnrealizeObject( HANDLE handle )
|
||||
/***********************************************************************
|
||||
* EnumObjects (GDI.71)
|
||||
*/
|
||||
int EnumObjects(HDC hDC, int nObjType, FARPROC lpEnumFunc, LPSTR lpData)
|
||||
int EnumObjects( HDC hdc, int nObjType, FARPROC lpEnumFunc, LPARAM lParam )
|
||||
{
|
||||
/* Solid colors to enumerate */
|
||||
static const COLORREF solid_colors[] =
|
||||
{ RGB(0x00,0x00,0x00), RGB(0xff,0xff,0xff),
|
||||
RGB(0xff,0x00,0x00), RGB(0x00,0xff,0x00),
|
||||
RGB(0x00,0x00,0xff), RGB(0xff,0xff,0x00),
|
||||
RGB(0xff,0x00,0xff), RGB(0x00,0xff,0xff),
|
||||
RGB(0x80,0x00,0x00), RGB(0x00,0x80,0x00),
|
||||
RGB(0x80,0x80,0x00), RGB(0x00,0x00,0x80),
|
||||
RGB(0x80,0x00,0x80), RGB(0x00,0x80,0x80),
|
||||
RGB(0x80,0x80,0x80), RGB(0xc0,0xc0,0xc0)
|
||||
};
|
||||
|
||||
int i, retval = 0;
|
||||
|
||||
dprintf_gdi( stddeb, "EnumObjects: "NPFMT" %d %08lx %08lx\n",
|
||||
hdc, nObjType, (DWORD)lpEnumFunc, lParam );
|
||||
switch(nObjType)
|
||||
{
|
||||
case OBJ_PEN:
|
||||
/* Enumerate solid pens */
|
||||
for (i = 0; i < sizeof(solid_colors)/sizeof(solid_colors[0]); i++)
|
||||
{
|
||||
LOGPEN pen = { PS_SOLID, { 1, 0 }, solid_colors[i] };
|
||||
retval = CallEnumObjectsProc( lpEnumFunc, MAKE_SEGPTR(&pen),
|
||||
lParam );
|
||||
dprintf_gdi( stddeb, "EnumObject: solid pen %08lx, ret=%d\n",
|
||||
solid_colors[i], retval);
|
||||
if (!retval) break;
|
||||
}
|
||||
break;
|
||||
|
||||
case OBJ_BRUSH:
|
||||
/* Enumerate solid brushes */
|
||||
for (i = 0; i < sizeof(solid_colors)/sizeof(solid_colors[0]); i++)
|
||||
{
|
||||
LOGBRUSH brush = { BS_SOLID, solid_colors[i], 0 };
|
||||
retval = CallEnumObjectsProc( lpEnumFunc, MAKE_SEGPTR(&brush),
|
||||
lParam );
|
||||
dprintf_gdi( stddeb, "EnumObject: solid brush %08lx, ret=%d\n",
|
||||
solid_colors[i], retval);
|
||||
if (!retval) break;
|
||||
}
|
||||
if (!retval) break;
|
||||
|
||||
/* Now enumerate hatched brushes */
|
||||
for (i = HS_HORIZONTAL; i <= HS_DIAGCROSS; i++)
|
||||
{
|
||||
LOGBRUSH brush = { BS_HATCHED, RGB(0,0,0), i };
|
||||
retval = CallEnumObjectsProc( lpEnumFunc, MAKE_SEGPTR(&brush),
|
||||
lParam );
|
||||
dprintf_gdi( stddeb, "EnumObject: hatched brush %d, ret=%d\n",
|
||||
i, retval);
|
||||
if (!retval) break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
fprintf( stderr, "EnumObjects: invalid type %d\n", nObjType );
|
||||
break;
|
||||
}
|
||||
return retval;
|
||||
#if 0
|
||||
|
||||
/* HANDLE handle;
|
||||
DC *dc;*/
|
||||
HANDLE *lphObj;
|
||||
@ -508,8 +542,10 @@ int EnumObjects(HDC hDC, int nObjType, FARPROC lpEnumFunc, LPSTR lpData)
|
||||
GDI_HEAP_FREE(hLog);
|
||||
dprintf_gdi(stddeb,"EnumObjects // End of enumeration !\n");
|
||||
return nRet;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* IsGDIObject(GDI.462)
|
||||
*/
|
||||
|
@ -910,7 +910,7 @@ BOOL MF_CreatePatternBrush(DC *dc, HBRUSH hBrush, LOGBRUSH *logbrush)
|
||||
infohdr->biPlanes = bmp->bitmap.bmPlanes;
|
||||
infohdr->biBitCount = bmp->bitmap.bmBitsPixel;
|
||||
memcpy(mr->rdParam + (sizeof(BITMAPINFOHEADER) / 2) + 4,
|
||||
bmp->bitmap.bmBits,
|
||||
PTR_SEG_TO_LIN(bmp->bitmap.bmBits),
|
||||
bmp->bitmap.bmHeight * bmp->bitmap.bmWidthBytes);
|
||||
break;
|
||||
|
||||
|
@ -1,40 +1,24 @@
|
||||
TOPSRC = @top_srcdir@
|
||||
|
||||
MODULE = rc
|
||||
PROGRAM = winerc
|
||||
MODULE = none
|
||||
|
||||
C_SRCS = sysres.c
|
||||
C_SRCS = y.tab.c lex.yy.c winerc.c
|
||||
|
||||
LANGUAGES = En Es De No Fr Fi Da
|
||||
|
||||
all: $(MODULE).o
|
||||
all: $(PROGRAM)
|
||||
|
||||
@MAKE_RULES@
|
||||
|
||||
$(PROGRAM): $(OBJS)
|
||||
$(CC) $(CFLAGS) -o winerc $(OBJS) $(LEXLIB)
|
||||
|
||||
y.tab.c y.tab.h: parser.y
|
||||
$(YACC) -d -t parser.y
|
||||
|
||||
lex.yy.c: parser.l
|
||||
$(LEX) -8 -I parser.l
|
||||
|
||||
winerc: lex.yy.o winerc.o y.tab.o
|
||||
$(CC) $(ALLCFLAGS) lex.yy.o winerc.o y.tab.o -o winerc $(LEXLIB)
|
||||
|
||||
sysres.rct: sysres.rc $(LANGUAGES:%=sysres_%.rc)
|
||||
echo "#include \"windows.h\"" >sysres.rct
|
||||
echo WINDOWS_H_ENDS_HERE >>sysres.rct
|
||||
cat sysres.rc >>sysres.rct
|
||||
|
||||
sysres.c sysres.h: sysres.rct winerc
|
||||
$(CC) $(ALLCFLAGS) -E -x c -P sysres.rct | sed -e '1,/^WINDOWS_H_ENDS_HERE/d' | ./winerc -o sysres -v -p sysres
|
||||
|
||||
clean::
|
||||
$(RM) lex.yy.c sysres.rct winerc y.tab.c y.tab.h sysres.c sysres.h
|
||||
|
||||
langclean::
|
||||
$(RM) sysres.c sysres.h sysres.o
|
||||
|
||||
y.tab.o: y.tab.c y.tab.h parser.h
|
||||
lex.yy.o: lex.yy.c y.tab.h parser.h
|
||||
winerc.o: $(TOPSRC)/include/windows.h $(TOPSRC)/include/neexe.h parser.h y.tab.h
|
||||
$(RM) y.tab.c y.tab.h lex.yy.c $(PROGRAM)
|
||||
|
||||
### Dependencies:
|
||||
|
17
rc/sysres.rc
17
rc/sysres.rc
@ -1,17 +0,0 @@
|
||||
#if #LANG(En)
|
||||
#include "sysres_En.rc"
|
||||
#elif #LANG(De)
|
||||
#include "sysres_De.rc"
|
||||
#elif #LANG(No)
|
||||
#include "sysres_No.rc"
|
||||
#elif #LANG(Es)
|
||||
#include "sysres_Es.rc"
|
||||
#elif #LANG(Fr)
|
||||
#include "sysres_Fr.rc"
|
||||
#elif #LANG(Fi)
|
||||
#include "sysres_Fi.rc"
|
||||
#elif #LANG(Da)
|
||||
#include "sysres_Da.rc"
|
||||
#else
|
||||
#error LANG not set to an implemented language.
|
||||
#endif
|
34
rc/winerc.c
34
rc/winerc.c
@ -18,6 +18,7 @@
|
||||
|
||||
char usage[]="winerc -bdvc -p prefix -o outfile < infile \n"
|
||||
" -b Create a C array from a binary .res file\n"
|
||||
" -c Add 'const' prefix to C constants\n"
|
||||
" -d Output debugging information\n"
|
||||
" -p prefix Give a prefix for the generated names\n"
|
||||
" -v Show each resource as it is processed\n"
|
||||
@ -54,7 +55,7 @@ int main(int argc,char *argv[])
|
||||
extern char* optarg;
|
||||
int optc,lose,ret,binary;
|
||||
lose=binary=0;
|
||||
while((optc=getopt(argc,argv,"bdp:vo:"))!=EOF)
|
||||
while((optc=getopt(argc,argv,"bcdp:vo:"))!=EOF)
|
||||
switch(optc)
|
||||
{
|
||||
/* bison will print state transitions on stderr */
|
||||
@ -546,8 +547,8 @@ void create_output(gen_res* top)
|
||||
for (it=top;it;it=it->next)
|
||||
fprintf( header,"extern %sstruct resource %s;\n",
|
||||
ISCONSTANT, get_resource_name(it) );
|
||||
fprintf( header,"\nextern %sstruct resource * %sTable[];\n",
|
||||
ISCONSTANT, prefix );
|
||||
fprintf( header,"\nextern %sstruct resource * %s%s_Table[];\n",
|
||||
ISCONSTANT, ISCONSTANT, prefix );
|
||||
|
||||
/* Print the resources bytes */
|
||||
|
||||
@ -562,10 +563,10 @@ void create_output(gen_res* top)
|
||||
ISCONSTANT, get_resource_name(it) );
|
||||
for (i=0;i<it->size-1;i++)
|
||||
{
|
||||
fprintf(code,"%#4x,",it->res[i]);
|
||||
fprintf(code,"0x%02x, ",it->res[i]);
|
||||
if ((i&7)==7)fputc('\n',code);
|
||||
}
|
||||
fprintf(code,"%#4x};\n\n",it->res[i]);
|
||||
fprintf(code,"0x%02x };\n\n",it->res[i]);
|
||||
}
|
||||
|
||||
/* Print the resources */
|
||||
@ -574,15 +575,15 @@ void create_output(gen_res* top)
|
||||
int type;
|
||||
switch(it->type)
|
||||
{
|
||||
case acc:type=RT_ACCELERATOR;break;
|
||||
case bmp:type=RT_BITMAP;break;
|
||||
case cur:type=RT_CURSOR;break;
|
||||
case dlg:type=RT_DIALOG;break;
|
||||
case fnt:type=RT_FONT;break;
|
||||
case ico:type=RT_ICON;break;
|
||||
case men:type=RT_MENU;break;
|
||||
case rdt:type=RT_RCDATA;break;
|
||||
case str:type=RT_STRING;break;
|
||||
case acc:type=(int)RT_ACCELERATOR;break;
|
||||
case bmp:type=(int)RT_BITMAP;break;
|
||||
case cur:type=(int)RT_CURSOR;break;
|
||||
case dlg:type=(int)RT_DIALOG;break;
|
||||
case fnt:type=(int)RT_FONT;break;
|
||||
case ico:type=(int)RT_ICON;break;
|
||||
case men:type=(int)RT_MENU;break;
|
||||
case rdt:type=(int)RT_RCDATA;break;
|
||||
case str:type=(int)RT_STRING;break;
|
||||
default:fprintf(stderr,"Unknown restype\n");type=-1;break;
|
||||
}
|
||||
if(it->n_type)
|
||||
@ -597,7 +598,8 @@ void create_output(gen_res* top)
|
||||
|
||||
/* Print the resource table (NULL terminated) */
|
||||
|
||||
fprintf(code,"\n%sstruct resource * %sTable[] = {\n", ISCONSTANT, prefix);
|
||||
fprintf(code,"\n%sstruct resource * %s%s_Table[] = {\n",
|
||||
ISCONSTANT, ISCONSTANT, prefix);
|
||||
for (it=top;it;it=it->next)
|
||||
fprintf( code, " &%s,\n", get_resource_name(it) );
|
||||
fprintf( code, " 0\n};\n" );
|
||||
@ -608,7 +610,7 @@ void create_output(gen_res* top)
|
||||
"static void DoIt() WINE_CONSTRUCTOR;\n"
|
||||
"static void DoIt()\n"
|
||||
"{\n"
|
||||
"\tLIBRES_RegisterResources(%sTable);\n"
|
||||
"\tLIBRES_RegisterResources(%s_Table);\n"
|
||||
"}\n\n"
|
||||
"#ifndef HAVE_WINE_CONSTRUCTOR\n"
|
||||
"void LIBWINE_Register_%s(){\n"
|
||||
|
20
resources/Makefile.in
Normal file
20
resources/Makefile.in
Normal file
@ -0,0 +1,20 @@
|
||||
TOPSRC = @top_srcdir@
|
||||
|
||||
MODULE = resources
|
||||
|
||||
LANGUAGES = En Es De No Fr Fi Da
|
||||
|
||||
SYSRES_SRCS = $(LANGUAGES:%=sysres_%.c)
|
||||
|
||||
C_SRCS = $(SYSRES_SRCS) sysres.c
|
||||
|
||||
all: check_winerc $(MODULE).o
|
||||
|
||||
@MAKE_RULES@
|
||||
|
||||
$(SYSRES_SRCS): $(WINERC)
|
||||
|
||||
clean::
|
||||
$(RM) $(SYSRES_SRCS) $(SYSRES_SRCS:.c=.h)
|
||||
|
||||
### Dependencies:
|
56
resources/sysres.c
Normal file
56
resources/sysres.c
Normal file
@ -0,0 +1,56 @@
|
||||
/*
|
||||
* System resources loading
|
||||
*
|
||||
* Copyright 1995 Alexandre Julliard
|
||||
*/
|
||||
|
||||
#include "windows.h"
|
||||
#include "global.h"
|
||||
#include "options.h"
|
||||
#include "resource.h"
|
||||
|
||||
#include "sysres_En.h"
|
||||
#include "sysres_Es.h"
|
||||
#include "sysres_De.h"
|
||||
#include "sysres_No.h"
|
||||
#include "sysres_Fr.h"
|
||||
#include "sysres_Fi.h"
|
||||
#include "sysres_Da.h"
|
||||
|
||||
|
||||
static const struct resource * const * SYSRES_Resources[] =
|
||||
{
|
||||
sysres_En_Table, /* LANG_En */
|
||||
sysres_Es_Table, /* LANG_Es */
|
||||
sysres_De_Table, /* LANG_De */
|
||||
sysres_No_Table, /* LANG_No */
|
||||
sysres_Fr_Table, /* LANG_Fr */
|
||||
sysres_Fi_Table, /* LANG_Fi */
|
||||
sysres_Da_Table /* LANG_Da */
|
||||
};
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* SYSRES_LoadResource
|
||||
*
|
||||
* Create a global memory block for a system resource.
|
||||
*/
|
||||
HANDLE SYSRES_LoadResource( SYSTEM_RESOURCE id )
|
||||
{
|
||||
const struct resource *resPtr;
|
||||
|
||||
resPtr = SYSRES_Resources[Options.language][id];
|
||||
return GLOBAL_CreateBlock( GMEM_FIXED, resPtr->bytes, resPtr->size,
|
||||
GetCurrentPDB(), FALSE, FALSE, TRUE, NULL );
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* SYSRES_FreeResource
|
||||
*
|
||||
* Free a global memory block for a system resource.
|
||||
*/
|
||||
void SYSRES_FreeResource( HANDLE handle )
|
||||
{
|
||||
GLOBAL_FreeBlock( handle );
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
TOPSRC = @top_srcdir@
|
||||
X_LIBS = @X_LIBS@
|
||||
XLIB = @X_PRE_LIBS@ -lXext -lX11 @X_EXTRA_LIBS@
|
||||
MODULE = toolkit
|
||||
|
||||
C_SRCS = \
|
||||
atom.c \
|
||||
arch.c \
|
||||
heap.c \
|
||||
libres.c \
|
||||
miscstubs.c \
|
||||
sup.c \
|
||||
winmain.c
|
||||
|
||||
all: $(MODULE).o
|
||||
|
||||
hello: hello.o ../winelib.a
|
||||
gcc -g -o hello hello.o ../winelib.a -lm $(X_LIBS) -lXpm $(XLIB)
|
||||
|
||||
hello2: hello2.o ../winelib.a
|
||||
gcc -g -o hello2 hello2.o ../winelib.a -lm $(X_LIBS) -lXpm $(XLIB)
|
||||
|
||||
hello3: hello3res.o hello3.o
|
||||
gcc -g -o hello3 hello3.o hello3res.o ../winelib.a -lm $(X_LIBS) -lXpm $(XLIB)
|
||||
|
||||
hello3.o: hello3res.o
|
||||
|
||||
hello3res.o: hello3res.rc
|
||||
echo "#include \"windows.h\"" >hello3res.rct
|
||||
echo WINDOWS_H_ENDS_HERE >>hello3res.rct
|
||||
cat hello3res.rc >>hello3res.rct
|
||||
$(CC) $(ALLCFLAGS) -E -x c -P hello3res.rct | sed -e '1,/^WINDOWS_H_ENDS_HERE/d' | ../rc/winerc -o hello3res -v -p hello3
|
||||
gcc -c $(ALLCFLAGS) hello3res.c
|
||||
|
||||
@MAKE_RULES@
|
||||
|
||||
clean::
|
||||
$(RM) hello hello2 hello3
|
||||
|
||||
### Dependencies:
|
@ -808,7 +808,7 @@ static void BuildSpec32Files( char *specname )
|
||||
if(fdp->arg_types[argno]!='.') putchar( 'a'+argno );
|
||||
if (argno!=argc-1) putchar( ',' );
|
||||
}
|
||||
printf( ") __attribute((stdcall));" );
|
||||
printf( ") __attribute((stdcall));\n" );
|
||||
}
|
||||
|
||||
printf( "void %s_%d(", UpperDLLName, i);
|
||||
@ -1071,15 +1071,15 @@ static void BuildCall32LargeStack(void)
|
||||
|
||||
printf( "\tmovl " PREFIX "IF1632_Original32_esp, %%eax\n" );
|
||||
printf( "\torl %%eax,%%eax\n" );
|
||||
printf( "\tje 0f\n" );
|
||||
printf( "\tje no_orig_esp\n" );
|
||||
printf( "\tmovl %%eax,%%esp\n" );
|
||||
printf( "0:\n" );
|
||||
printf( "no_orig_esp:\n" );
|
||||
|
||||
/* Transfer the arguments */
|
||||
|
||||
printf( "\tmovl 12(%%ebp),%%ecx\n" );
|
||||
printf( "\torl %%ecx,%%ecx\n" );
|
||||
printf( "\tje 1f\n" );
|
||||
printf( "\tje no_args\n" );
|
||||
printf( "\tleal 16(%%ebp),%%esi\n" );
|
||||
printf( "\tshll $2,%%ecx\n" );
|
||||
printf( "\tsubl %%ecx,%%esp\n" );
|
||||
@ -1087,7 +1087,7 @@ static void BuildCall32LargeStack(void)
|
||||
printf( "\tshrl $2,%%ecx\n" );
|
||||
printf( "\tcld\n" );
|
||||
printf( "\trep; movsl\n" );
|
||||
printf( "1:\n" );
|
||||
printf( "no_args:\n" );
|
||||
|
||||
/* Call the function */
|
||||
|
||||
@ -1321,6 +1321,9 @@ static void BuildCall32Func( char *profile )
|
||||
|
||||
printf( "\tpushw " PREFIX "IF1632_Saved16_sp\n" );
|
||||
printf( "\tpushw " PREFIX "IF1632_Saved16_ss\n" );
|
||||
#ifdef __svr4__
|
||||
printf("\tdata16\n");
|
||||
#endif
|
||||
printf( "\tmovw %%ss," PREFIX "IF1632_Saved16_ss\n" );
|
||||
printf( "\tmovw %%sp," PREFIX "IF1632_Saved16_sp\n" );
|
||||
|
||||
@ -1380,9 +1383,18 @@ static void BuildCall32Func( char *profile )
|
||||
|
||||
/* Restore the 16-bit stack */
|
||||
|
||||
#ifdef __svr4__
|
||||
printf( "\tdata16\n");
|
||||
#endif
|
||||
printf( "\tmovw " PREFIX "IF1632_Saved16_ss,%%ss\n" );
|
||||
printf( "\tmovw " PREFIX "IF1632_Saved16_sp,%%sp\n" );
|
||||
#ifdef __svr4__
|
||||
printf( "\tdata16\n");
|
||||
#endif
|
||||
printf( "\tpopw " PREFIX "IF1632_Saved16_ss\n" );
|
||||
#ifdef __svr4__
|
||||
printf( "\tdata16\n");
|
||||
#endif
|
||||
printf( "\tpopw " PREFIX "IF1632_Saved16_sp\n" );
|
||||
|
||||
if (reg_func)
|
||||
@ -1547,6 +1559,9 @@ static void BuildCall16Func( char *profile )
|
||||
|
||||
/* Switch to the 16-bit stack */
|
||||
|
||||
#ifdef __svr4__
|
||||
printf("\tdata16\n");
|
||||
#endif
|
||||
printf( "\tmovw " PREFIX "IF1632_Saved16_ss,%%ss\n" );
|
||||
printf( "\tmovw " PREFIX "IF1632_Saved16_sp,%%sp\n" );
|
||||
|
||||
@ -1608,6 +1623,9 @@ static void BuildCall16Func( char *profile )
|
||||
{
|
||||
/* Set ax equal to ds for window procedures */
|
||||
printf( "\tmovw 16(%%ebx),%%ax\n" );
|
||||
#ifdef __svr4__
|
||||
printf( "\tdata16\n");
|
||||
#endif
|
||||
printf( "\tmovw %%ax,%%ds\n" );
|
||||
}
|
||||
|
||||
@ -1639,8 +1657,17 @@ static void BuildRet16Func()
|
||||
/* Restore 32-bit segment registers */
|
||||
|
||||
printf( "\tmovw $0x%04x,%%bx\n", WINE_DATA_SELECTOR );
|
||||
#ifdef __svr4__
|
||||
printf( "\tdata16\n");
|
||||
#endif
|
||||
printf( "\tmovw %%bx,%%ds\n" );
|
||||
#ifdef __svr4__
|
||||
printf( "\tdata16\n");
|
||||
#endif
|
||||
printf( "\tmovw %%bx,%%es\n" );
|
||||
#ifdef __svr4__
|
||||
printf( "\tdata16\n");
|
||||
#endif
|
||||
printf( "\tmovw %%bx,%%ss\n" );
|
||||
|
||||
/* Restore the 32-bit stack */
|
||||
|
238
tools/install-sh
Executable file
238
tools/install-sh
Executable file
@ -0,0 +1,238 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# install - install a program, script, or datafile
|
||||
# This comes from X11R5.
|
||||
#
|
||||
# Calling this script install-sh is preferred over install.sh, to prevent
|
||||
# `make' implicit rules from creating a file called install from it
|
||||
# when there is no Makefile.
|
||||
#
|
||||
# This script is compatible with the BSD install script, but was written
|
||||
# from scratch.
|
||||
#
|
||||
|
||||
|
||||
# set DOITPROG to echo to test this script
|
||||
|
||||
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||
doit="${DOITPROG-}"
|
||||
|
||||
|
||||
# put in absolute paths if you don't have them in your path; or use env. vars.
|
||||
|
||||
mvprog="${MVPROG-mv}"
|
||||
cpprog="${CPPROG-cp}"
|
||||
chmodprog="${CHMODPROG-chmod}"
|
||||
chownprog="${CHOWNPROG-chown}"
|
||||
chgrpprog="${CHGRPPROG-chgrp}"
|
||||
stripprog="${STRIPPROG-strip}"
|
||||
rmprog="${RMPROG-rm}"
|
||||
mkdirprog="${MKDIRPROG-mkdir}"
|
||||
|
||||
tranformbasename=""
|
||||
transform_arg=""
|
||||
instcmd="$mvprog"
|
||||
chmodcmd="$chmodprog 0755"
|
||||
chowncmd=""
|
||||
chgrpcmd=""
|
||||
stripcmd=""
|
||||
rmcmd="$rmprog -f"
|
||||
mvcmd="$mvprog"
|
||||
src=""
|
||||
dst=""
|
||||
dir_arg=""
|
||||
|
||||
while [ x"$1" != x ]; do
|
||||
case $1 in
|
||||
-c) instcmd="$cpprog"
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-d) dir_arg=true
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-m) chmodcmd="$chmodprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-o) chowncmd="$chownprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-g) chgrpcmd="$chgrpprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-s) stripcmd="$stripprog"
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-t=*) transformarg=`echo $1 | sed 's/-t=//'`
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
|
||||
shift
|
||||
continue;;
|
||||
|
||||
*) if [ x"$src" = x ]
|
||||
then
|
||||
src=$1
|
||||
else
|
||||
# this colon is to work around a 386BSD /bin/sh bug
|
||||
:
|
||||
dst=$1
|
||||
fi
|
||||
shift
|
||||
continue;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ x"$src" = x ]
|
||||
then
|
||||
echo "install: no input file specified"
|
||||
exit 1
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
if [ x"$dir_arg" != x ]; then
|
||||
dst=$src
|
||||
src=""
|
||||
|
||||
if [ -d $dst ]; then
|
||||
instcmd=:
|
||||
else
|
||||
instcmd=mkdir
|
||||
fi
|
||||
else
|
||||
|
||||
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
|
||||
# might cause directories to be created, which would be especially bad
|
||||
# if $src (and thus $dsttmp) contains '*'.
|
||||
|
||||
if [ -f $src -o -d $src ]
|
||||
then
|
||||
true
|
||||
else
|
||||
echo "install: $src does not exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ x"$dst" = x ]
|
||||
then
|
||||
echo "install: no destination specified"
|
||||
exit 1
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
# If destination is a directory, append the input filename; if your system
|
||||
# does not like double slashes in filenames, you may need to add some logic
|
||||
|
||||
if [ -d $dst ]
|
||||
then
|
||||
dst="$dst"/`basename $src`
|
||||
else
|
||||
true
|
||||
fi
|
||||
fi
|
||||
|
||||
## this sed command emulates the dirname command
|
||||
dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
|
||||
|
||||
# Make sure that the destination directory exists.
|
||||
# this part is taken from Noah Friedman's mkinstalldirs script
|
||||
|
||||
# Skip lots of stat calls in the usual case.
|
||||
if [ ! -d "$dstdir" ]; then
|
||||
defaultIFS='
|
||||
'
|
||||
IFS="${IFS-${defaultIFS}}"
|
||||
|
||||
oIFS="${IFS}"
|
||||
# Some sh's can't handle IFS=/ for some reason.
|
||||
IFS='%'
|
||||
set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
|
||||
IFS="${oIFS}"
|
||||
|
||||
pathcomp=''
|
||||
|
||||
while [ $# -ne 0 ] ; do
|
||||
pathcomp="${pathcomp}${1}"
|
||||
shift
|
||||
|
||||
if [ ! -d "${pathcomp}" ] ;
|
||||
then
|
||||
$mkdirprog "${pathcomp}"
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
pathcomp="${pathcomp}/"
|
||||
done
|
||||
fi
|
||||
|
||||
if [ x"$dir_arg" != x ]
|
||||
then
|
||||
$doit $instcmd $dst &&
|
||||
|
||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
|
||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
|
||||
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
|
||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
|
||||
else
|
||||
|
||||
# If we're going to rename the final executable, determine the name now.
|
||||
|
||||
if [ x"$transformarg" = x ]
|
||||
then
|
||||
dstfile=`basename $dst`
|
||||
else
|
||||
dstfile=`basename $dst $transformbasename |
|
||||
sed $transformarg`$transformbasename
|
||||
fi
|
||||
|
||||
# don't allow the sed command to completely eliminate the filename
|
||||
|
||||
if [ x"$dstfile" = x ]
|
||||
then
|
||||
dstfile=`basename $dst`
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
# Make a temp file name in the proper directory.
|
||||
|
||||
dsttmp=$dstdir/#inst.$$#
|
||||
|
||||
# Move or copy the file name to the temp name
|
||||
|
||||
$doit $instcmd $src $dsttmp &&
|
||||
|
||||
trap "rm -f ${dsttmp}" 0 &&
|
||||
|
||||
# and set any options; do chmod last to preserve setuid bits
|
||||
|
||||
# If any of these fail, we abort the whole thing. If we want to
|
||||
# ignore errors from any of these, just make sure not to ignore
|
||||
# errors from the above "$doit $instcmd $src $dsttmp" command.
|
||||
|
||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
|
||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
|
||||
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
|
||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
|
||||
$doit $rmcmd -f $dstdir/$dstfile &&
|
||||
$doit $mvcmd $dsttmp $dstdir/$dstfile
|
||||
|
||||
fi &&
|
||||
|
||||
|
||||
exit 0
|
@ -35,6 +35,7 @@ BOOL WINAPI GetUserNameA(LPSTR lpszName, LPDWORD lpSize)
|
||||
/***********************************************************************
|
||||
* RegCreateKeyEx (ADVAPI32.130)
|
||||
*/
|
||||
LONG RegCreateKey(HKEY,LPCTSTR,LPHKEY);
|
||||
WINAPI LONG RegCreateKeyEx(HKEY key,
|
||||
const char *subkey,
|
||||
long dontuse,
|
||||
|
@ -25,9 +25,13 @@ LPSTR GetCommandLineA(void)
|
||||
char *cp;
|
||||
PDB *pdb = (PDB *)GlobalLock( GetCurrentPDB() );
|
||||
|
||||
#ifndef WINELIB
|
||||
strcpy(buffer, wine_files->name);
|
||||
cp = buffer+strlen(buffer);
|
||||
*cp++ = ' ';
|
||||
#else
|
||||
cp = buffer;
|
||||
#endif;
|
||||
memcpy( cp, &pdb->cmdLine[1], pdb->cmdLine[0] );
|
||||
dprintf_win32(stddeb,"CommandLine = %s\n", buffer );
|
||||
return buffer;
|
||||
|
@ -30,6 +30,9 @@ extern FILE_OBJECT *hstderr;
|
||||
static void UnixTimeToFileTime(time_t unix_time, FILETIME *filetime);
|
||||
static int TranslateCreationFlags(DWORD create_flags);
|
||||
static int TranslateAccessFlags(DWORD access_flags);
|
||||
#ifndef MAP_ANON
|
||||
#define MAP_ANON 0
|
||||
#endif
|
||||
|
||||
/***********************************************************************
|
||||
* OpenFileMappingA (KERNEL32.397)
|
||||
@ -43,6 +46,7 @@ WINAPI HANDLE32 OpenFileMapping(DWORD access, BOOL inherit,const char *fname)
|
||||
* CreateFileMappingA (KERNEL32.46)
|
||||
*
|
||||
*/
|
||||
int TranslateProtectionFlags(DWORD);
|
||||
WINAPI HANDLE32 CreateFileMapping(HANDLE32 h,SECURITY_ATTRIBUTES *ats,
|
||||
DWORD pot, DWORD sh, DWORD hlow, const char * lpName )
|
||||
{
|
||||
@ -97,7 +101,7 @@ WINAPI void *MapViewOfFileEx(HANDLE32 handle, DWORD access, DWORD offhi,
|
||||
DWORD offlo, DWORD size, DWORD st)
|
||||
{
|
||||
if (!size) size = ((FILEMAP_OBJECT *)handle)->size;
|
||||
return mmap (st, size, ((FILEMAP_OBJECT *)handle)->prot,
|
||||
return mmap ((caddr_t)st, size, ((FILEMAP_OBJECT *)handle)->prot,
|
||||
MAP_ANON|MAP_PRIVATE,
|
||||
((FILEMAP_OBJECT *)handle)->file_obj->fd,
|
||||
offlo);
|
||||
@ -138,7 +142,7 @@ DWORD WINAPI GetFileInformationByHandle(FILE_OBJECT *hFile,
|
||||
lpfi->dwFileAttributes |= FILE_ATTRIBUTE_NORMAL;
|
||||
if(file_stat.st_mode & S_IFDIR)
|
||||
lpfi->dwFileAttributes |= FILE_ATTRIBUTE_DIRECTORY;
|
||||
if(file_stat.st_mode & S_IWRITE == 0)
|
||||
if((file_stat.st_mode & S_IWRITE) == 0)
|
||||
lpfi->dwFileAttributes |= FILE_ATTRIBUTE_READONLY;
|
||||
|
||||
/* Translate the file times. Use the last modification time
|
||||
|
@ -20,6 +20,9 @@
|
||||
#ifndef PROT_NONE /* FreeBSD doesn't define PROT_NONE */
|
||||
#define PROT_NONE 0
|
||||
#endif
|
||||
#ifndef MAP_ANON
|
||||
#define MAP_ANON 0
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
caddr_t ptr;
|
||||
@ -33,6 +36,7 @@ int mem_used = 0;
|
||||
/***********************************************************************
|
||||
* VirtualAlloc (KERNEL32.548)
|
||||
*/
|
||||
int TranslateProtectionFlags(DWORD);
|
||||
LPVOID VirtualAlloc(LPVOID lpvAddress, DWORD cbSize,
|
||||
DWORD fdwAllocationType, DWORD fdwProtect)
|
||||
{
|
||||
|
@ -14,6 +14,6 @@
|
||||
|
||||
int ValidateKernelObject(KERNEL_OBJECT *ptr)
|
||||
{
|
||||
return (!ptr || (short int)ptr==-1);
|
||||
return (!ptr || (short int)(int)ptr==-1);
|
||||
}
|
||||
|
||||
|
32
win32/time.c
32
win32/time.c
@ -37,6 +37,29 @@ VOID GetLocalTime(LPSYSTEMTIME systime)
|
||||
systime->wMilliseconds = (tv.tv_usec / 1000) % 1000;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* GetSystemTime (KERNEL32.285)
|
||||
*/
|
||||
VOID GetSystemTime(LPSYSTEMTIME systime)
|
||||
{
|
||||
time_t local_time;
|
||||
struct tm *local_tm;
|
||||
struct timeval tv;
|
||||
|
||||
time(&local_time);
|
||||
local_tm = gmtime(&local_time);
|
||||
gettimeofday(&tv, NULL);
|
||||
|
||||
systime->wYear = local_tm->tm_year + 1900;
|
||||
systime->wMonth = local_tm->tm_mon + 1;
|
||||
systime->wDayOfWeek = local_tm->tm_wday;
|
||||
systime->wDay = local_tm->tm_mday;
|
||||
systime->wHour = local_tm->tm_hour;
|
||||
systime->wMinute = local_tm->tm_min;
|
||||
systime->wSecond = local_tm->tm_sec;
|
||||
systime->wMilliseconds = (tv.tv_usec / 1000) % 1000;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* GetTimeZoneInformation (KERNEL32.302)
|
||||
*/
|
||||
@ -55,3 +78,12 @@ DWORD GetTimeZoneInformation(LPTIME_ZONE_INFORMATION tzinfo)
|
||||
return TIME_ZONE_ID_UNKNOWN;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* Sleep (KERNEL32.523)
|
||||
*/
|
||||
VOID Sleep(DWORD cMilliseconds)
|
||||
{
|
||||
if(cMilliseconds == INFINITE)
|
||||
while(1) { /* Spin forever */ }
|
||||
usleep(cMilliseconds*1000);
|
||||
}
|
||||
|
@ -328,7 +328,7 @@ LRESULT DefWindowProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
|
||||
len = 1;
|
||||
while(len < 64)
|
||||
if( (hI = LoadIcon(wndPtr->hInstance,MAKEINTRESOURCE(len))) )
|
||||
return hI;
|
||||
return (LRESULT)hI;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -218,7 +218,7 @@ HWND CreateDialogParam( HINSTANCE hInst, SEGPTR dlgTemplate,
|
||||
HGLOBAL hmem;
|
||||
SEGPTR data;
|
||||
|
||||
dprintf_dialog(stddeb, "CreateDialogParam: "NPFMT",%08lx,"NPFMT",%08lx,%ld\n",
|
||||
dprintf_dialog(stddeb, "CreateDialogParam: "NPFMT","SPFMT","NPFMT",%08lx,%ld\n",
|
||||
hInst, dlgTemplate, owner, (DWORD)dlgProc, param );
|
||||
|
||||
if (!(hRsrc = FindResource( hInst, dlgTemplate, RT_DIALOG ))) return 0;
|
||||
@ -523,7 +523,7 @@ int DialogBoxParam( HINSTANCE hInst, SEGPTR dlgTemplate,
|
||||
{
|
||||
HWND hwnd;
|
||||
|
||||
dprintf_dialog(stddeb, "DialogBoxParam: "NPFMT",%08lx,"NPFMT",%08lx,%ld\n",
|
||||
dprintf_dialog(stddeb, "DialogBoxParam: "NPFMT","SPFMT","NPFMT",%08lx,%ld\n",
|
||||
hInst, dlgTemplate, owner, (DWORD)dlgProc, param );
|
||||
hwnd = CreateDialogParam( hInst, dlgTemplate, owner, dlgProc, param );
|
||||
if (hwnd) return DIALOG_DoDialogBox( hwnd, owner );
|
||||
@ -751,7 +751,7 @@ void SetDlgItemInt( HWND hwnd, WORD id, WORD value, BOOL fSigned )
|
||||
|
||||
if (fSigned) sprintf( str, "%d", (int)value );
|
||||
else sprintf( str, "%u", value );
|
||||
SendDlgItemMessage( hwnd, id, WM_SETTEXT, 0, MAKE_SEGPTR(str) );
|
||||
SendDlgItemMessage( hwnd, id, WM_SETTEXT, 0, (LPARAM)MAKE_SEGPTR(str) );
|
||||
}
|
||||
|
||||
|
||||
@ -764,7 +764,7 @@ WORD GetDlgItemInt( HWND hwnd, WORD id, BOOL * translated, BOOL fSigned )
|
||||
long result = 0;
|
||||
|
||||
if (translated) *translated = FALSE;
|
||||
if (SendDlgItemMessage( hwnd, id, WM_GETTEXT, 30, MAKE_SEGPTR(str) ))
|
||||
if (SendDlgItemMessage( hwnd, id, WM_GETTEXT, 30, (LPARAM)MAKE_SEGPTR(str) ))
|
||||
{
|
||||
char * endptr;
|
||||
result = strtol( str, &endptr, 10 );
|
||||
|
@ -534,7 +534,7 @@ static void EVENT_ConfigureNotify( HWND hwnd, XConfigureEvent *event )
|
||||
winpos.flags |= SWP_NOSIZE;
|
||||
|
||||
/* Send WM_WINDOWPOSCHANGING */
|
||||
SendMessage(hwnd, WM_WINDOWPOSCHANGING, 0, MAKE_SEGPTR(&winpos));
|
||||
SendMessage(hwnd, WM_WINDOWPOSCHANGING, 0, (LPARAM)MAKE_SEGPTR(&winpos));
|
||||
|
||||
/* Calculate new position and size */
|
||||
newWindowRect.left = event->x;
|
||||
@ -549,7 +549,7 @@ static void EVENT_ConfigureNotify( HWND hwnd, XConfigureEvent *event )
|
||||
/* Set new size and position */
|
||||
wndPtr->rectWindow = newWindowRect;
|
||||
wndPtr->rectClient = newClientRect;
|
||||
SendMessage(hwnd, WM_WINDOWPOSCHANGED, 0, MAKE_SEGPTR(&winpos));
|
||||
SendMessage(hwnd, WM_WINDOWPOSCHANGED, 0, (LPARAM)MAKE_SEGPTR(&winpos));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -11,7 +11,7 @@
|
||||
#include "winpos.h"
|
||||
#include "hook.h"
|
||||
#include "color.h"
|
||||
|
||||
#include "options.h"
|
||||
|
||||
static HWND hwndFocus = 0;
|
||||
|
||||
@ -25,8 +25,9 @@ static void FOCUS_SetXFocus( HWND hwnd )
|
||||
XWindowAttributes win_attr;
|
||||
Window win;
|
||||
|
||||
/* Only mess with the X focus if there's no desktop window */
|
||||
if (rootWindow != DefaultRootWindow(display)) return;
|
||||
/* Only mess with the X focus if there's */
|
||||
/* no desktop window and no window manager. */
|
||||
if ((rootWindow != DefaultRootWindow(display)) || Options.managed) return;
|
||||
|
||||
if (!hwnd) /* If setting the focus to 0, uninstall the colormap */
|
||||
{
|
||||
@ -53,11 +54,11 @@ void FOCUS_SwitchFocus(HWND hFocusFrom, HWND hFocusTo)
|
||||
{
|
||||
hwndFocus = hFocusTo;
|
||||
|
||||
if (hFocusFrom) SendMessage( hFocusFrom, WM_KILLFOCUS, hFocusTo, 0L);
|
||||
if (hFocusFrom) SendMessage( hFocusFrom, WM_KILLFOCUS, (WPARAM)hFocusTo, 0L);
|
||||
if( !hFocusTo || hFocusTo != hwndFocus )
|
||||
return;
|
||||
|
||||
SendMessage( hFocusTo, WM_SETFOCUS, hFocusFrom, 0L);
|
||||
SendMessage( hFocusTo, WM_SETFOCUS, (WPARAM)hFocusFrom, 0L);
|
||||
FOCUS_SetXFocus( hFocusTo );
|
||||
}
|
||||
|
||||
@ -88,7 +89,7 @@ HWND SetFocus(HWND hwnd)
|
||||
if( hwnd == hwndFocus ) return hwnd;
|
||||
|
||||
/* call hooks */
|
||||
if( HOOK_CallHooks( WH_CBT, HCBT_SETFOCUS, hwnd, hwndFocus) )
|
||||
if( HOOK_CallHooks( WH_CBT, HCBT_SETFOCUS, (WPARAM)hwnd, (LPARAM)hwndFocus) )
|
||||
return 0;
|
||||
|
||||
/* activate hwndTop if needed. */
|
||||
@ -99,7 +100,7 @@ HWND SetFocus(HWND hwnd)
|
||||
if (!IsWindow( hwnd )) return 0; /* Abort if window destroyed */
|
||||
}
|
||||
}
|
||||
else if( HOOK_CallHooks( WH_CBT, HCBT_SETFOCUS, 0, hwndFocus ) )
|
||||
else if( HOOK_CallHooks( WH_CBT, HCBT_SETFOCUS, 0, (LPARAM)hwndFocus ) )
|
||||
return 0;
|
||||
|
||||
/* Change focus and send messages */
|
||||
|
@ -226,7 +226,7 @@ FARPROC SetWindowsHook( short id, HOOKPROC proc )
|
||||
HTASK hTask = (id == WH_MSGFILTER) ? GetCurrentTask() : 0;
|
||||
|
||||
HANDLE handle = HOOK_SetHook( id, proc, hInst, hTask );
|
||||
if (!handle) return -1;
|
||||
if (!handle) return (FARPROC)-1;
|
||||
if (!((HOOKDATA *)USER_HEAP_LIN_ADDR( handle ))->next) return 0;
|
||||
/* Not sure if the return value is correct; should not matter much
|
||||
* since it's never used (see DefHookProc). -- AJ */
|
||||
@ -319,7 +319,11 @@ BOOL UnhookWindowsHookEx( HHOOK hhook )
|
||||
DWORD CallNextHookEx( HHOOK hhook, short code, WPARAM wParam, LPARAM lParam )
|
||||
{
|
||||
HANDLE next;
|
||||
#ifdef WINELIB32
|
||||
if (!(next = HOOK_GetNextHook( (HANDLE)hhook ))) return 0;
|
||||
#else
|
||||
if (HIWORD(hhook) != HOOK_MAGIC) return 0; /* Not a new format hook */
|
||||
if (!(next = HOOK_GetNextHook( LOWORD(hhook) ))) return 0;
|
||||
#endif
|
||||
return HOOK_CallHook( next, code, wParam, lParam );
|
||||
}
|
||||
|
@ -58,6 +58,7 @@ static HWND MDI_GetChildByID(WND* mdiClient,int id)
|
||||
/**********************************************************************
|
||||
* MDI_MenuAppendItem
|
||||
*/
|
||||
#ifdef SUPERFLUOUS_FUNCTIONS
|
||||
static BOOL MDI_MenuAppendItem(WND *clientWnd, HWND hWndChild)
|
||||
{
|
||||
char buffer[128];
|
||||
@ -74,6 +75,7 @@ static BOOL MDI_MenuAppendItem(WND *clientWnd, HWND hWndChild)
|
||||
return AppendMenu(clientInfo->hWindowMenu,MF_STRING,
|
||||
wndPtr->wIDmenu,(LPSTR)buffer);
|
||||
}
|
||||
#endif
|
||||
|
||||
/**********************************************************************
|
||||
* MDI_MenuModifyItem
|
||||
@ -245,7 +247,8 @@ HWND MDICreateChild(WND *w, MDICLIENTINFO *ci, HWND parent, LPARAM lParam )
|
||||
WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_SYSMENU |
|
||||
WS_THICKFRAME | WS_VISIBLE | cs->style,
|
||||
cs->x, cs->y, cs->cx, cs->cy, parent,
|
||||
(HMENU) wIDmenu, w->hInstance, (SEGPTR)lParam);
|
||||
(HMENU)(DWORD)(WORD)wIDmenu, w->hInstance,
|
||||
(SEGPTR)lParam);
|
||||
|
||||
if (hwnd)
|
||||
{
|
||||
@ -376,7 +379,7 @@ HWND MDIDestroyChild(WND *w_parent, MDICLIENTINFO *ci, HWND parent,
|
||||
ci->nActiveChildren--;
|
||||
|
||||
if( ci->flagChildMaximized == child )
|
||||
ci->flagChildMaximized = 1;
|
||||
ci->flagChildMaximized = (HWND)1;
|
||||
|
||||
if (flagDestroy)
|
||||
{
|
||||
@ -477,8 +480,13 @@ LONG MDI_ChildActivate(WND *clientPtr, HWND hWndChild)
|
||||
if( wndPrev )
|
||||
{
|
||||
SendMessage( prevActiveWnd, WM_NCACTIVATE, FALSE, 0L );
|
||||
#ifdef WINELIB32
|
||||
SendMessage( prevActiveWnd, WM_MDIACTIVATE, (WPARAM)prevActiveWnd,
|
||||
(LPARAM)hWndChild);
|
||||
#else
|
||||
SendMessage( prevActiveWnd, WM_MDIACTIVATE, FALSE,
|
||||
MAKELONG(hWndChild,prevActiveWnd));
|
||||
#endif
|
||||
/* uncheck menu item */
|
||||
if( clientInfo->hWindowMenu )
|
||||
CheckMenuItem( clientInfo->hWindowMenu,
|
||||
@ -517,13 +525,18 @@ LONG MDI_ChildActivate(WND *clientPtr, HWND hWndChild)
|
||||
SendMessage( hWndChild, WM_NCACTIVATE, TRUE, 0L);
|
||||
if( GetFocus() == GetParent(hWndChild) )
|
||||
SendMessage( GetParent(hWndChild), WM_SETFOCUS,
|
||||
GetParent(hWndChild), 0L );
|
||||
(WPARAM)GetParent(hWndChild), 0L );
|
||||
else
|
||||
SetFocus( GetParent(hWndChild) );
|
||||
}
|
||||
|
||||
#ifdef WINELIB32
|
||||
SendMessage( hWndChild, WM_MDIACTIVATE, (WPARAM)hWndChild,
|
||||
(LPARAM)prevActiveWnd );
|
||||
#else
|
||||
SendMessage( hWndChild, WM_MDIACTIVATE, TRUE,
|
||||
MAKELONG(prevActiveWnd,hWndChild) );
|
||||
#endif
|
||||
|
||||
return 1;
|
||||
}
|
||||
@ -678,6 +691,10 @@ LONG MDITile(HWND parent, MDICLIENTINFO *ci)
|
||||
|
||||
if( !listTop ) return 0;
|
||||
|
||||
/* just free memory and return if zero windows to tile */
|
||||
if ( iToPosition == 0 )
|
||||
goto MDITile_free;
|
||||
|
||||
GetClientRect(parent, &rect);
|
||||
|
||||
rows = (int) sqrt((double) iToPosition);
|
||||
@ -725,7 +742,8 @@ LONG MDITile(HWND parent, MDICLIENTINFO *ci)
|
||||
|
||||
x += xsize;
|
||||
}
|
||||
|
||||
|
||||
MDITile_free:
|
||||
/* free the rest if any */
|
||||
while( listTop ) {
|
||||
listPrev = listTop->prev;
|
||||
@ -791,7 +809,7 @@ LONG MDIPaintMaximized(HWND hwndFrame, HWND hwndClient, WORD message,
|
||||
|
||||
dprintf_mdi(stddeb, "MDIPaintMaximized: frame "NPFMT", client "NPFMT
|
||||
", max flag %d, menu %04x\n", hwndFrame, hwndClient,
|
||||
ci->flagChildMaximized, wndPtr ? wndPtr->wIDmenu : 0);
|
||||
(int)ci->flagChildMaximized, wndPtr ? wndPtr->wIDmenu : 0);
|
||||
|
||||
if (ci->flagChildMaximized && wndPtr && wndPtr->wIDmenu != 0)
|
||||
{
|
||||
@ -881,7 +899,7 @@ LRESULT MDIClientWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
return 0;
|
||||
|
||||
case WM_MDIACTIVATE:
|
||||
SetWindowPos(wParam,0,0,0,0,0, SWP_NOSIZE | SWP_NOMOVE );
|
||||
SetWindowPos((HWND)wParam,0,0,0,0,0, SWP_NOSIZE | SWP_NOMOVE );
|
||||
return 0;
|
||||
|
||||
case WM_MDICASCADE:
|
||||
@ -891,7 +909,7 @@ LRESULT MDIClientWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
return (LONG)MDICreateChild(w, ci, hwnd, lParam );
|
||||
|
||||
case WM_MDIDESTROY:
|
||||
return MDIDestroyChild(w, ci, hwnd, wParam, TRUE);
|
||||
return (LONG)MDIDestroyChild(w, ci, hwnd, (HWND)wParam, TRUE);
|
||||
|
||||
case WM_MDIGETACTIVE:
|
||||
return ((LONG) ci->hwndActiveChild |
|
||||
@ -905,7 +923,7 @@ LRESULT MDIClientWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
return 0;
|
||||
|
||||
case WM_MDIMAXIMIZE:
|
||||
return MDIMaximizeChild(hwnd, wParam, ci);
|
||||
return MDIMaximizeChild(hwnd, (HWND)wParam, ci);
|
||||
|
||||
case WM_MDINEXT:
|
||||
MDI_SwitchActiveChild(hwnd, (HWND)wParam, lParam);
|
||||
@ -915,7 +933,11 @@ LRESULT MDIClientWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
return MDIRestoreChild(hwnd, ci);
|
||||
|
||||
case WM_MDISETMENU:
|
||||
return MDISetMenu(hwnd, wParam, LOWORD(lParam), HIWORD(lParam));
|
||||
#ifdef WINELIB32
|
||||
return (LRESULT)MDISetMenu(hwnd, FALSE, (HMENU)wParam, (HMENU)lParam);
|
||||
#else
|
||||
return (LRESULT)MDISetMenu(hwnd, wParam, LOWORD(lParam), HIWORD(lParam));
|
||||
#endif
|
||||
|
||||
case WM_MDITILE:
|
||||
ci->sbStop = TRUE;
|
||||
@ -989,7 +1011,11 @@ LRESULT DefFrameProc(HWND hwnd, HWND hwndMDIClient, UINT message,
|
||||
childHwnd = MDI_GetChildByID( WIN_FindWndPtr(hwndMDIClient),
|
||||
wParam );
|
||||
if( childHwnd )
|
||||
#ifdef WINELIB32 /* FIXME: need to find out the equivalent Win32 message */
|
||||
SendMessage(hwndMDIClient, WM_MDIACTIVATE, 0 , 0);
|
||||
#else
|
||||
SendMessage(hwndMDIClient, WM_MDIACTIVATE, childHwnd , 0L);
|
||||
#endif
|
||||
break;
|
||||
|
||||
case WM_NCLBUTTONDOWN:
|
||||
@ -1048,7 +1074,7 @@ LONG DefMDIChildProc(HWND hwnd, WORD message, WORD wParam, LONG lParam)
|
||||
return 0;
|
||||
|
||||
case WM_CLOSE:
|
||||
SendMessage(GetParent(hwnd),WM_MDIDESTROY,hwnd,0L);
|
||||
SendMessage(GetParent(hwnd),WM_MDIDESTROY,(WPARAM)hwnd,0L);
|
||||
return 0;
|
||||
|
||||
case WM_SIZE:
|
||||
@ -1158,11 +1184,11 @@ void CalcChildScroll( HWND hwnd, WORD scroll )
|
||||
void ScrollChildren(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
WND *wndPtr = WIN_FindWndPtr(hWnd);
|
||||
short newPos;
|
||||
short newPos=-1;
|
||||
short curPos;
|
||||
short length;
|
||||
short minPos;
|
||||
short maxPos;
|
||||
INT minPos;
|
||||
INT maxPos;
|
||||
short shift;
|
||||
|
||||
if( !wndPtr ) return;
|
||||
|
@ -1152,7 +1152,7 @@ LRESULT SendMessage( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
|
||||
|
||||
EnterSpyMessage(SPY_SENDMESSAGE, hwnd, msg, wParam, lParam);
|
||||
|
||||
HOOK_CallHooks( WH_CALLWNDPROC, HC_ACTION, 1, MAKE_SEGPTR(&msgstruct) );
|
||||
HOOK_CallHooks( WH_CALLWNDPROC, HC_ACTION, 1, (LPARAM)MAKE_SEGPTR(&msgstruct) );
|
||||
if (!(wndPtr = WIN_FindWndPtr( hwnd )))
|
||||
{
|
||||
ExitSpyMessage(SPY_RESULT_INVALIDHWND,hwnd,msg,0);
|
||||
@ -1225,8 +1225,10 @@ LONG DispatchMessage( LPMSG msg )
|
||||
{
|
||||
if (msg->lParam)
|
||||
{
|
||||
#ifndef WINELIB32
|
||||
HINSTANCE ds = msg->hwnd ? WIN_GetWindowInstance( msg->hwnd )
|
||||
: (HINSTANCE)CURRENT_DS;
|
||||
#endif
|
||||
/* HOOK_CallHooks( WH_CALLWNDPROC, HC_ACTION, 0, FIXME ); */
|
||||
return CallWndProc( (WNDPROC)msg->lParam, ds, msg->hwnd,
|
||||
msg->message, msg->wParam, GetTickCount() );
|
||||
@ -1293,7 +1295,7 @@ LONG GetMessageExtraInfo(void)
|
||||
*/
|
||||
WORD RegisterWindowMessage( SEGPTR str )
|
||||
{
|
||||
dprintf_msg(stddeb, "RegisterWindowMessage: '%08lx'\n", str );
|
||||
dprintf_msg(stddeb, "RegisterWindowMessage: '"SPFMT"'\n", str );
|
||||
return GlobalAddAtom( str );
|
||||
}
|
||||
|
||||
|
@ -7,12 +7,11 @@
|
||||
|
||||
#include "windows.h"
|
||||
#include "dlgs.h"
|
||||
#include "global.h"
|
||||
#include "selectors.h"
|
||||
#include "alias.h"
|
||||
#include "relay32.h"
|
||||
#include "win.h"
|
||||
#include "../rc/sysres.h"
|
||||
#include "resource.h"
|
||||
#include "task.h"
|
||||
|
||||
typedef struct {
|
||||
@ -201,15 +200,13 @@ int MessageBox(HWND hWnd, LPSTR text, LPSTR title, WORD type)
|
||||
initialized=1;
|
||||
}
|
||||
|
||||
handle = GLOBAL_CreateBlock( GMEM_FIXED, sysres_DIALOG_MSGBOX.bytes,
|
||||
sysres_DIALOG_MSGBOX.size, GetCurrentPDB(),
|
||||
FALSE, FALSE, TRUE, NULL );
|
||||
handle = SYSRES_LoadResource( SYSRES_DIALOG_MSGBOX );
|
||||
if (!handle) return 0;
|
||||
ret = DialogBoxIndirectParam( WIN_GetWindowInstance(hWnd),
|
||||
handle, hWnd,
|
||||
GetWndProcEntry16("SystemMessageBoxProc"),
|
||||
(LONG)&mbox );
|
||||
GLOBAL_FreeBlock( handle );
|
||||
SYSRES_FreeResource( handle );
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -174,16 +174,16 @@ void NC_GetMinMaxInfo( HWND hwnd, POINT *maxSize, POINT *maxPos,
|
||||
MinMax.ptMaxPosition.y = -yinc;
|
||||
}
|
||||
|
||||
SendMessage( hwnd, WM_GETMINMAXINFO, 0, MAKE_SEGPTR(&MinMax) );
|
||||
SendMessage( hwnd, WM_GETMINMAXINFO, 0, (LPARAM)MAKE_SEGPTR(&MinMax) );
|
||||
|
||||
/* Some sanity checks */
|
||||
|
||||
dprintf_nonclient(stddeb,
|
||||
"NC_GetMinMaxInfo: %d %d / %d %d / %d %d / %d %d\n",
|
||||
MinMax.ptMaxSize.x,MinMax.ptMaxSize.y,
|
||||
MinMax.ptMaxPosition.x,MinMax.ptMaxPosition.y,
|
||||
MinMax.ptMaxTrackSize.x,MinMax.ptMaxTrackSize.y,
|
||||
MinMax.ptMinTrackSize.x,MinMax.ptMinTrackSize.y);
|
||||
(int)MinMax.ptMaxSize.x,(int)MinMax.ptMaxSize.y,
|
||||
(int)MinMax.ptMaxPosition.x,(int)MinMax.ptMaxPosition.y,
|
||||
(int)MinMax.ptMaxTrackSize.x,(int)MinMax.ptMaxTrackSize.y,
|
||||
(int)MinMax.ptMinTrackSize.x,(int)MinMax.ptMinTrackSize.y);
|
||||
MinMax.ptMaxTrackSize.x = MAX( MinMax.ptMaxTrackSize.x,
|
||||
MinMax.ptMinTrackSize.x );
|
||||
MinMax.ptMaxTrackSize.y = MAX( MinMax.ptMaxTrackSize.y,
|
||||
@ -892,7 +892,7 @@ static LONG NC_StartSizeMove( HWND hwnd, WPARAM wParam, POINT *capturePoint )
|
||||
}
|
||||
*capturePoint = pt;
|
||||
SetCursorPos( capturePoint->x, capturePoint->y );
|
||||
NC_HandleSetCursor( hwnd, hwnd, MAKELONG( hittest, WM_MOUSEMOVE ));
|
||||
NC_HandleSetCursor( hwnd, (WPARAM)hwnd, MAKELONG( hittest, WM_MOUSEMOVE ));
|
||||
return hittest;
|
||||
}
|
||||
|
||||
|
@ -31,7 +31,7 @@ BOOL SetProp( HWND hwnd, SEGPTR str, HANDLE hData )
|
||||
PROPERTY *prop;
|
||||
WND *wndPtr;
|
||||
|
||||
dprintf_prop( stddeb, "SetProp: "NPFMT" %08lx "NPFMT"\n", hwnd, str, hData );
|
||||
dprintf_prop( stddeb, "SetProp: "NPFMT" "SPFMT" "NPFMT"\n", hwnd, str, hData );
|
||||
if (!(wndPtr = WIN_FindWndPtr( hwnd ))) return FALSE;
|
||||
hProp = USER_HEAP_ALLOC( sizeof(PROPERTY) +
|
||||
(HIWORD(str) ? strlen(PTR_SEG_TO_LIN(str)) : 0 ));
|
||||
@ -62,7 +62,7 @@ HANDLE GetProp( HWND hwnd, SEGPTR str )
|
||||
HANDLE hProp;
|
||||
WND *wndPtr;
|
||||
|
||||
dprintf_prop( stddeb, "GetProp: "NPFMT" %08lx\n", hwnd, str );
|
||||
dprintf_prop( stddeb, "GetProp: "NPFMT" "SPFMT"\n", hwnd, str );
|
||||
if (!(wndPtr = WIN_FindWndPtr( hwnd ))) return 0;
|
||||
hProp = wndPtr->hProp;
|
||||
while (hProp)
|
||||
@ -88,7 +88,7 @@ HANDLE RemoveProp( HWND hwnd, SEGPTR str )
|
||||
HANDLE *hProp;
|
||||
WND *wndPtr;
|
||||
|
||||
dprintf_prop( stddeb, "RemoveProp: "NPFMT" %08lx\n", hwnd, str );
|
||||
dprintf_prop( stddeb, "RemoveProp: "NPFMT" "SPFMT"\n", hwnd, str );
|
||||
if (!(wndPtr = WIN_FindWndPtr( hwnd ))) return 0;
|
||||
hProp = &wndPtr->hProp;
|
||||
while (*hProp)
|
||||
|
@ -19,7 +19,7 @@
|
||||
|
||||
|
||||
|
||||
extern DCE_GetVisRgn(HWND, WORD);
|
||||
extern HRGN DCE_GetVisRgn(HWND, WORD);
|
||||
|
||||
static int RgnType;
|
||||
|
||||
@ -127,10 +127,10 @@ void ScrollWindow(HWND hwnd, short dx, short dy, LPRECT rect, LPRECT clipRect)
|
||||
RECT rc, cliprc;
|
||||
|
||||
dprintf_scroll(stddeb,"ScrollWindow: dx=%d, dy=%d, lpRect =%08lx clipRect=%i,%i,%i,%i\n",
|
||||
dx, dy, (LONG)rect, (clipRect)?clipRect->left:0,
|
||||
(clipRect)?clipRect->top:0,
|
||||
(clipRect)?clipRect->right:0,
|
||||
(clipRect)?clipRect->bottom:0);
|
||||
dx, dy, (LONG)rect, (int)((clipRect)?clipRect->left:0),
|
||||
(int)((clipRect)?clipRect->top:0),
|
||||
(int)((clipRect)?clipRect->right:0),
|
||||
(int)((clipRect)?clipRect->bottom:0));
|
||||
|
||||
/* if rect is NULL children have to be moved */
|
||||
if ( !rect )
|
||||
@ -146,8 +146,9 @@ void ScrollWindow(HWND hwnd, short dx, short dy, LPRECT rect, LPRECT clipRect)
|
||||
{
|
||||
GetClientRect(hwnd,&rc);
|
||||
dprintf_scroll(stddeb,"\trect=%i %i %i %i client=%i %i %i %i\n",
|
||||
rect->left,rect->top,rect->right,rect->bottom,rc.left,rc.top,
|
||||
rc.right,rc.bottom);
|
||||
(int)rect->left,(int)rect->top,(int)rect->right,
|
||||
(int)rect->bottom,(int)rc.left,(int)rc.top,
|
||||
(int)rc.right,(int)rc.bottom);
|
||||
|
||||
CopyRect(&rc, rect);
|
||||
hdc = GetDC(hwnd);
|
||||
@ -206,10 +207,10 @@ BOOL ScrollDC(HDC hdc, short dx, short dy, LPRECT rc, LPRECT cliprc,
|
||||
DC *dc = (DC *)GDI_GetObjPtr(hdc, DC_MAGIC);
|
||||
|
||||
dprintf_scroll(stddeb,"ScrollDC: dx=%d dy=%d, hrgnUpdate="NPFMT" rc=%i %i %i %i\n",
|
||||
dx,dy,hrgnUpdate,(rc)?rc->left:0,
|
||||
(rc)?rc->top:0,
|
||||
(rc)?rc->right:0,
|
||||
(rc)?rc->bottom:0);
|
||||
dx,dy,hrgnUpdate,(int)((rc)?rc->left:0),
|
||||
(int)((rc)?rc->top:0),
|
||||
(int)((rc)?rc->right:0),
|
||||
(int)((rc)?rc->bottom:0));
|
||||
|
||||
if (rc == NULL)
|
||||
return FALSE;
|
||||
@ -288,7 +289,7 @@ int ScrollWindowEx(HWND hwnd, short dx, short dy, LPRECT rect, LPRECT clipRect,
|
||||
HDC hdc;
|
||||
RECT rc, cliprc;
|
||||
|
||||
dprintf_scroll(stddeb,"ScrollWindowEx: dx=%d, dy=%d, wFlags="NPFMT"\n",dx, dy, flags);
|
||||
dprintf_scroll(stddeb,"ScrollWindowEx: dx=%d, dy=%d, wFlags=%04x\n",dx, dy, flags);
|
||||
|
||||
hdc = GetDC(hwnd);
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user