Cleaned up a few inter-dll dependencies. Added a few imports.
This commit is contained in:
parent
c7e7df8b17
commit
e101f6db3b
|
@ -385,6 +385,7 @@ dsound/libdsound.so: libwinmm.so libkernel32.so
|
||||||
gdi/libgdi32.so: libkernel32.so
|
gdi/libgdi32.so: libkernel32.so
|
||||||
icmp/libicmp.so: libkernel32.so
|
icmp/libicmp.so: libkernel32.so
|
||||||
imagehlp/libimagehlp.so: libkernel32.so
|
imagehlp/libimagehlp.so: libkernel32.so
|
||||||
|
imm32/libimm32.so: libkernel32.so
|
||||||
lzexpand/liblz32.so: libkernel32.so
|
lzexpand/liblz32.so: libkernel32.so
|
||||||
mpr/libmpr.so: libkernel32.so
|
mpr/libmpr.so: libkernel32.so
|
||||||
msacm/libmsacm32.so: libwinmm.so libkernel32.so
|
msacm/libmsacm32.so: libwinmm.so libkernel32.so
|
||||||
|
@ -393,14 +394,14 @@ ole32/libole32.so: libadvapi32.so libuser32.so libgdi32.so librpcrt4.so libkerne
|
||||||
oleaut32/liboleaut32.so: libole32.so libgdi32.so libkernel32.so
|
oleaut32/liboleaut32.so: libole32.so libgdi32.so libkernel32.so
|
||||||
olecli/libolecli32.so: libole32.so libolesvr32.so libgdi32.so
|
olecli/libolecli32.so: libole32.so libolesvr32.so libgdi32.so
|
||||||
olepro32/libolepro32.so: liboleaut32.so
|
olepro32/libolepro32.so: liboleaut32.so
|
||||||
opengl32/libopengl32.so: libx11drv.so
|
opengl32/libopengl32.so: libx11drv.so libkernel32.so
|
||||||
psapi/libpsapi.so: libkernel32.so
|
psapi/libpsapi.so: libkernel32.so
|
||||||
richedit/libriched32.so: libuser32.so libkernel32.so
|
richedit/libriched32.so: libuser32.so libkernel32.so
|
||||||
serialui/libserialui.so: libuser32.so libadvapi32.so libkernel32.so
|
serialui/libserialui.so: libuser32.so libadvapi32.so libkernel32.so
|
||||||
setupapi/libsetupapi.so: libkernel32.so
|
setupapi/libsetupapi.so: libadvapi32.so libkernel32.so
|
||||||
shell32/libshell32.so: libole32.so libshlwapi.so libcomctl32.so libadvapi32.so libuser32.so libgdi32.so libkernel32.so
|
shell32/libshell32.so: libole32.so libshlwapi.so libcomctl32.so libadvapi32.so libuser32.so libgdi32.so libkernel32.so
|
||||||
shfolder/libshfolder.so: libshell32.so
|
shfolder/libshfolder.so: libshell32.so
|
||||||
shlwapi/libshlwapi.so: libadvapi32.so libuser32.so libkernel32.so
|
shlwapi/libshlwapi.so: libadvapi32.so libuser32.so libgdi32.so libkernel32.so
|
||||||
tapi32/libtapi32.so: libkernel32.so
|
tapi32/libtapi32.so: libkernel32.so
|
||||||
ttydrv/libttydrv.so: libuser32.so libgdi32.so libkernel32.so
|
ttydrv/libttydrv.so: libuser32.so libgdi32.so libkernel32.so
|
||||||
urlmon/liburlmon.so: libole32.so
|
urlmon/liburlmon.so: libole32.so
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <pwd.h>
|
||||||
|
|
||||||
#include "winbase.h"
|
#include "winbase.h"
|
||||||
#include "windef.h"
|
#include "windef.h"
|
||||||
|
@ -25,11 +26,9 @@ GetUserNameA( LPSTR lpszName, LPDWORD lpSize )
|
||||||
size_t len;
|
size_t len;
|
||||||
char *name;
|
char *name;
|
||||||
|
|
||||||
name=getlogin();
|
struct passwd *pwd = getpwuid( getuid() );
|
||||||
#if 0
|
if (!pwd) return 0;
|
||||||
/* FIXME: should use getpwuid() here */
|
name = pwd->pw_name;
|
||||||
if (!name) name=cuserid(NULL);
|
|
||||||
#endif
|
|
||||||
len = name ? strlen(name) : 0;
|
len = name ? strlen(name) : 0;
|
||||||
if (!len || !lpSize || len > *lpSize) {
|
if (!len || !lpSize || len > *lpSize) {
|
||||||
if (lpszName) *lpszName = 0;
|
if (lpszName) *lpszName = 0;
|
||||||
|
|
|
@ -476,8 +476,8 @@ HRESULT WINAPI AVIMakeCompressedStream(PAVISTREAM *ppsCompressed,PAVISTREAM ppsS
|
||||||
icf.lQuality = aco->dwQuality;
|
icf.lQuality = aco->dwQuality;
|
||||||
icf.lKeyRate = aco->dwKeyFrameEvery;
|
icf.lKeyRate = aco->dwKeyFrameEvery;
|
||||||
|
|
||||||
icf.GetData = (LONG (*)(LPARAM,LONG,LPVOID,LONG)) 0xdead4242;
|
icf.GetData = (void *)0xdead4242;
|
||||||
icf.PutData = (LONG (*)(LPARAM,LONG,LPVOID,LONG)) 0xdead4243;
|
icf.PutData = (void *)0xdead4243;
|
||||||
ICSendMessage(as->hic,ICM_COMPRESS_FRAMES_INFO,(LPARAM)&icf,sizeof(icf));
|
ICSendMessage(as->hic,ICM_COMPRESS_FRAMES_INFO,(LPARAM)&icf,sizeof(icf));
|
||||||
}
|
}
|
||||||
return S_OK;
|
return S_OK;
|
||||||
|
|
|
@ -10,6 +10,7 @@ import user32.dll
|
||||||
import winspool.drv
|
import winspool.drv
|
||||||
import gdi32.dll
|
import gdi32.dll
|
||||||
import kernel32.dll
|
import kernel32.dll
|
||||||
|
import ntdll.dll
|
||||||
|
|
||||||
0 stub ArrowBtnWndProc
|
0 stub ArrowBtnWndProc
|
||||||
1 stdcall ChooseColorA(ptr) ChooseColorA
|
1 stdcall ChooseColorA(ptr) ChooseColorA
|
||||||
|
|
|
@ -100,6 +100,7 @@ typedef VOID (*new_handler_type)(VOID);
|
||||||
static new_handler_type new_handler;
|
static new_handler_type new_handler;
|
||||||
|
|
||||||
CRTDLL_FILE * __cdecl CRTDLL__fdopen(INT handle, LPCSTR mode);
|
CRTDLL_FILE * __cdecl CRTDLL__fdopen(INT handle, LPCSTR mode);
|
||||||
|
INT __cdecl CRTDLL_fgetc( CRTDLL_FILE *file );
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
* CRTDLL_MainInit (CRTDLL.init)
|
* CRTDLL_MainInit (CRTDLL.init)
|
||||||
|
@ -116,6 +117,24 @@ BOOL WINAPI CRTDLL_Init(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
* malloc (CRTDLL.427)
|
||||||
|
*/
|
||||||
|
VOID* __cdecl CRTDLL_malloc(DWORD size)
|
||||||
|
{
|
||||||
|
return HeapAlloc(GetProcessHeap(),0,size);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
* _strdup (CRTDLL.285)
|
||||||
|
*/
|
||||||
|
LPSTR __cdecl CRTDLL__strdup(LPCSTR ptr)
|
||||||
|
{
|
||||||
|
LPSTR ret = CRTDLL_malloc(strlen(ptr)+1);
|
||||||
|
if (ret) strcpy( ret, ptr );
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
* _GetMainArgs (CRTDLL.022)
|
* _GetMainArgs (CRTDLL.022)
|
||||||
*/
|
*/
|
||||||
|
@ -134,8 +153,7 @@ LPSTR * __cdecl CRTDLL__GetMainArgs(LPDWORD argc,LPSTR **argv,
|
||||||
if (CRTDLL_acmdln_dll != NULL)
|
if (CRTDLL_acmdln_dll != NULL)
|
||||||
HeapFree(GetProcessHeap(), 0, CRTDLL_acmdln_dll);
|
HeapFree(GetProcessHeap(), 0, CRTDLL_acmdln_dll);
|
||||||
|
|
||||||
CRTDLL_acmdln_dll = cmdline = HEAP_strdupA( GetProcessHeap(), 0,
|
CRTDLL_acmdln_dll = cmdline = CRTDLL__strdup( GetCommandLineA() );
|
||||||
GetCommandLineA() );
|
|
||||||
TRACE("got '%s'\n", cmdline);
|
TRACE("got '%s'\n", cmdline);
|
||||||
|
|
||||||
version = GetVersion();
|
version = GetVersion();
|
||||||
|
@ -166,8 +184,7 @@ LPSTR * __cdecl CRTDLL__GetMainArgs(LPDWORD argc,LPSTR **argv,
|
||||||
sizeof(char*)*(xargc+1));
|
sizeof(char*)*(xargc+1));
|
||||||
if (strlen(cmdline+afterlastspace))
|
if (strlen(cmdline+afterlastspace))
|
||||||
{
|
{
|
||||||
xargv[xargc] = HEAP_strdupA( GetProcessHeap(), 0,
|
xargv[xargc] = CRTDLL__strdup(cmdline+afterlastspace);
|
||||||
cmdline+afterlastspace);
|
|
||||||
xargc++;
|
xargc++;
|
||||||
if (!last_arg) /* need to seek to the next arg ? */
|
if (!last_arg) /* need to seek to the next arg ? */
|
||||||
{
|
{
|
||||||
|
@ -865,15 +882,6 @@ INT __cdecl CRTDLL_rand()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*********************************************************************
|
|
||||||
* putchar (CRTDLL.442)
|
|
||||||
*/
|
|
||||||
void __cdecl CRTDLL_putchar( INT x )
|
|
||||||
{
|
|
||||||
putchar(x);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
* fputc (CRTDLL.374)
|
* fputc (CRTDLL.374)
|
||||||
*/
|
*/
|
||||||
|
@ -887,6 +895,15 @@ INT __cdecl CRTDLL_fputc( INT c, CRTDLL_FILE *file )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
* putchar (CRTDLL.442)
|
||||||
|
*/
|
||||||
|
void __cdecl CRTDLL_putchar( INT x )
|
||||||
|
{
|
||||||
|
CRTDLL_fputc( x, CRTDLL_stdout );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
* fputs (CRTDLL.375)
|
* fputs (CRTDLL.375)
|
||||||
*/
|
*/
|
||||||
|
@ -905,7 +922,7 @@ INT __cdecl CRTDLL_fputs( LPCSTR s, CRTDLL_FILE *file )
|
||||||
INT __cdecl CRTDLL_puts(LPCSTR s)
|
INT __cdecl CRTDLL_puts(LPCSTR s)
|
||||||
{
|
{
|
||||||
TRACE("%s \n",s);
|
TRACE("%s \n",s);
|
||||||
return puts(s);
|
return CRTDLL_fputs(s, CRTDLL_stdout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -981,7 +998,7 @@ LPSTR __cdecl CRTDLL_gets(LPSTR buf)
|
||||||
* windows95's ftp.exe.
|
* windows95's ftp.exe.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
for(cc = fgetc(stdin); cc != EOF && cc != '\n'; cc = fgetc(stdin))
|
for(cc = CRTDLL_fgetc(CRTDLL_stdin); cc != EOF && cc != '\n'; cc = CRTDLL_fgetc(CRTDLL_stdin))
|
||||||
if(cc != '\r') *buf++ = (char)cc;
|
if(cc != '\r') *buf++ = (char)cc;
|
||||||
|
|
||||||
*buf = '\0';
|
*buf = '\0';
|
||||||
|
@ -1098,14 +1115,6 @@ VOID __cdecl CRTDLL_longjmp(jmp_buf env, int val)
|
||||||
longjmp(env, val);
|
longjmp(env, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*********************************************************************
|
|
||||||
* malloc (CRTDLL.427)
|
|
||||||
*/
|
|
||||||
VOID* __cdecl CRTDLL_malloc(DWORD size)
|
|
||||||
{
|
|
||||||
return HeapAlloc(GetProcessHeap(),0,size);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
* new (CRTDLL.001)
|
* new (CRTDLL.001)
|
||||||
*/
|
*/
|
||||||
|
@ -1159,14 +1168,6 @@ VOID __cdecl CRTDLL_delete(VOID* ptr)
|
||||||
HeapFree(GetProcessHeap(),0,ptr);
|
HeapFree(GetProcessHeap(),0,ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*********************************************************************
|
|
||||||
* _strdup (CRTDLL.285)
|
|
||||||
*/
|
|
||||||
LPSTR __cdecl CRTDLL__strdup(LPCSTR ptr)
|
|
||||||
{
|
|
||||||
return HEAP_strdupA(GetProcessHeap(),0,ptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
* fclose (CRTDLL.362)
|
* fclose (CRTDLL.362)
|
||||||
*/
|
*/
|
||||||
|
@ -1659,7 +1660,27 @@ LPINT __cdecl CRTDLL__errno()
|
||||||
static int crtdllerrno;
|
static int crtdllerrno;
|
||||||
|
|
||||||
/* FIXME: we should set the error at the failing function call time */
|
/* FIXME: we should set the error at the failing function call time */
|
||||||
crtdllerrno = LastErrorToErrno(GetLastError());
|
|
||||||
|
switch(GetLastError())
|
||||||
|
{
|
||||||
|
case ERROR_ACCESS_DENIED: crtdllerrno = EPERM; break;
|
||||||
|
case ERROR_FILE_NOT_FOUND: crtdllerrno = ENOENT; break;
|
||||||
|
case ERROR_INVALID_PARAMETER: crtdllerrno = EINVAL; break;
|
||||||
|
case ERROR_IO_DEVICE: crtdllerrno = EIO; break;
|
||||||
|
case ERROR_BAD_FORMAT: crtdllerrno = ENOEXEC; break;
|
||||||
|
case ERROR_INVALID_HANDLE: crtdllerrno = EBADF; break;
|
||||||
|
case ERROR_OUTOFMEMORY: crtdllerrno = ENOMEM; break;
|
||||||
|
case ERROR_BUSY: crtdllerrno = EBUSY; break;
|
||||||
|
case ERROR_FILE_EXISTS: crtdllerrno = EEXIST; break;
|
||||||
|
case ERROR_BAD_DEVICE: crtdllerrno = ENODEV; break;
|
||||||
|
case ERROR_TOO_MANY_OPEN_FILES: crtdllerrno = EMFILE; break;
|
||||||
|
case ERROR_DISK_FULL: crtdllerrno = ENOSPC; break;
|
||||||
|
case ERROR_SEEK_ON_DEVICE: crtdllerrno = ESPIPE; break;
|
||||||
|
case ERROR_BROKEN_PIPE: crtdllerrno = EPIPE; break;
|
||||||
|
case ERROR_POSSIBLE_DEADLOCK: crtdllerrno = EDEADLK; break;
|
||||||
|
case ERROR_FILENAME_EXCED_RANGE: crtdllerrno = ENAMETOOLONG; break;
|
||||||
|
case ERROR_DIR_NOT_EMPTY: crtdllerrno = ENOTEMPTY; break;
|
||||||
|
}
|
||||||
return &crtdllerrno;
|
return &crtdllerrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "windef.h"
|
#include "windef.h"
|
||||||
|
#include "winbase.h"
|
||||||
#include "winnls.h"
|
#include "winnls.h"
|
||||||
#include "wine/unicode.h"
|
#include "wine/unicode.h"
|
||||||
#include "crtdll.h"
|
#include "crtdll.h"
|
||||||
|
@ -114,7 +115,7 @@ LPWSTR __cdecl CRTDLL_wcspbrk( LPCWSTR str, LPCWSTR accept )
|
||||||
*/
|
*/
|
||||||
INT __cdecl CRTDLL_wctomb( LPSTR dst, WCHAR ch )
|
INT __cdecl CRTDLL_wctomb( LPSTR dst, WCHAR ch )
|
||||||
{
|
{
|
||||||
return WideCharToMultiByte( CP_ACP, 0, ch, 1, dst, 6, NULL, NULL );
|
return WideCharToMultiByte( CP_ACP, 0, &ch, 1, dst, 6, NULL, NULL );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
|
|
|
@ -4,6 +4,7 @@ SRCDIR = @srcdir@
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
MODULE = imm32
|
MODULE = imm32
|
||||||
SOVERSION = 1.0
|
SOVERSION = 1.0
|
||||||
|
IMPORTS = kernel32
|
||||||
|
|
||||||
C_SRCS = \
|
C_SRCS = \
|
||||||
imm.c
|
imm.c
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
name imm32
|
name imm32
|
||||||
type win32
|
type win32
|
||||||
|
|
||||||
|
import kernel32.dll
|
||||||
|
|
||||||
@ stdcall ImmAssociateContext(long long) ImmAssociateContext
|
@ stdcall ImmAssociateContext(long long) ImmAssociateContext
|
||||||
@ stdcall ImmConfigureIMEA(long long long ptr) ImmConfigureIMEA
|
@ stdcall ImmConfigureIMEA(long long long ptr) ImmConfigureIMEA
|
||||||
@ stdcall ImmConfigureIMEW(long long long ptr) ImmConfigureIMEW
|
@ stdcall ImmConfigureIMEW(long long long ptr) ImmConfigureIMEW
|
||||||
|
|
|
@ -7,15 +7,15 @@
|
||||||
#include "wine/winbase16.h"
|
#include "wine/winbase16.h"
|
||||||
#include "winbase.h"
|
#include "winbase.h"
|
||||||
#include "wownt32.h"
|
#include "wownt32.h"
|
||||||
|
#include "file.h"
|
||||||
#include "heap.h"
|
#include "heap.h"
|
||||||
#include "miscemu.h"
|
#include "miscemu.h"
|
||||||
#include "syslevel.h"
|
#include "syslevel.h"
|
||||||
#include "stackframe.h"
|
#include "stackframe.h"
|
||||||
#include "builtin16.h"
|
#include "builtin16.h"
|
||||||
#include "debugtools.h"
|
#include "debugtools.h"
|
||||||
#include "file.h"
|
|
||||||
|
|
||||||
DEFAULT_DEBUG_CHANNEL(thunk)
|
DEFAULT_DEBUG_CHANNEL(thunk);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 32-bit WOW routines (in WOW32, but actually forwarded to KERNEL32)
|
* 32-bit WOW routines (in WOW32, but actually forwarded to KERNEL32)
|
||||||
|
|
|
@ -21,7 +21,6 @@
|
||||||
#include "wownt32.h"
|
#include "wownt32.h"
|
||||||
#include "ole2ver.h"
|
#include "ole2ver.h"
|
||||||
#include "debugtools.h"
|
#include "debugtools.h"
|
||||||
#include "file.h"
|
|
||||||
#include "heap.h"
|
#include "heap.h"
|
||||||
#include "ldt.h"
|
#include "ldt.h"
|
||||||
#include "winreg.h"
|
#include "winreg.h"
|
||||||
|
@ -1492,11 +1491,10 @@ void WINAPI CoFreeUnusedLibraries(void)
|
||||||
* RETURNS
|
* RETURNS
|
||||||
* the current system time in lpFileTime
|
* the current system time in lpFileTime
|
||||||
*/
|
*/
|
||||||
HRESULT WINAPI CoFileTimeNow(
|
HRESULT WINAPI CoFileTimeNow( FILETIME *lpFileTime ) /* [out] the current time */
|
||||||
FILETIME *lpFileTime /* [out] the current time */
|
{
|
||||||
) {
|
GetSystemTimeAsFileTime( lpFileTime );
|
||||||
DOSFS_UnixTimeToFileTime(time(NULL), lpFileTime, 0);
|
return S_OK;
|
||||||
return S_OK;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
|
|
|
@ -4,7 +4,7 @@ SRCDIR = @srcdir@
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
MODULE = opengl32
|
MODULE = opengl32
|
||||||
SOVERSION = 1.0
|
SOVERSION = 1.0
|
||||||
IMPORTS = x11drv
|
IMPORTS = x11drv kernel32
|
||||||
|
|
||||||
C_SRCS = \
|
C_SRCS = \
|
||||||
wgl.c \
|
wgl.c \
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
|
|
||||||
name opengl32
|
name opengl32
|
||||||
type win32
|
type win32
|
||||||
init OpenGL32_Init
|
init OpenGL32_Init
|
||||||
|
|
||||||
import x11drv
|
import x11drv
|
||||||
|
import kernel32
|
||||||
|
|
||||||
@ stdcall wglCreateContext(long) wglCreateContext
|
@ stdcall wglCreateContext(long) wglCreateContext
|
||||||
@ stdcall wglCreateLayerContext(long long) wglCreateLayerContext
|
@ stdcall wglCreateLayerContext(long long) wglCreateLayerContext
|
||||||
|
|
|
@ -5,7 +5,7 @@ VPATH = @srcdir@
|
||||||
MODULE = setupapi
|
MODULE = setupapi
|
||||||
SOVERSION = 1.0
|
SOVERSION = 1.0
|
||||||
ALTNAMES = setupx
|
ALTNAMES = setupx
|
||||||
IMPORTS = kernel32
|
IMPORTS = advapi32 kernel32
|
||||||
|
|
||||||
C_SRCS = \
|
C_SRCS = \
|
||||||
setupx_main.c \
|
setupx_main.c \
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
name setupapi
|
name setupapi
|
||||||
type win32
|
type win32
|
||||||
|
|
||||||
|
import advapi32.dll
|
||||||
import kernel32.dll
|
import kernel32.dll
|
||||||
|
|
||||||
# almost all functions are commented out for now. Ordinals are from setupapi.dll 4.0
|
# almost all functions are commented out for now. Ordinals are from setupapi.dll 4.0
|
||||||
|
|
|
@ -4,7 +4,7 @@ SRCDIR = @srcdir@
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
MODULE = shlwapi
|
MODULE = shlwapi
|
||||||
SOVERSION = 1.0
|
SOVERSION = 1.0
|
||||||
IMPORTS = advapi32 user32 kernel32
|
IMPORTS = advapi32 user32 gdi32 kernel32
|
||||||
|
|
||||||
C_SRCS = \
|
C_SRCS = \
|
||||||
ordinal.c \
|
ordinal.c \
|
||||||
|
|
|
@ -4,6 +4,7 @@ init SHLWAPI_LibMain
|
||||||
|
|
||||||
import advapi32
|
import advapi32
|
||||||
import user32
|
import user32
|
||||||
|
import gdi32
|
||||||
import kernel32
|
import kernel32
|
||||||
|
|
||||||
1 stdcall @(ptr ptr) SHLWAPI_1
|
1 stdcall @(ptr ptr) SHLWAPI_1
|
||||||
|
@ -614,7 +615,7 @@ import kernel32
|
||||||
@ stdcall StrCSpnW (wstr wstr) StrCSpnW
|
@ stdcall StrCSpnW (wstr wstr) StrCSpnW
|
||||||
@ stdcall StrCatBuffA (str str long) StrCatBuffA
|
@ stdcall StrCatBuffA (str str long) StrCatBuffA
|
||||||
@ stdcall StrCatBuffW (wstr wstr long) StrCatBuffW
|
@ stdcall StrCatBuffW (wstr wstr long) StrCatBuffW
|
||||||
@ stub StrCatW
|
@ stdcall StrCatW (ptr wstr) StrCatW
|
||||||
@ stdcall StrChrA (str long) StrChrA
|
@ stdcall StrChrA (str long) StrChrA
|
||||||
@ stub StrChrIA
|
@ stub StrChrIA
|
||||||
@ stub StrChrIW
|
@ stub StrChrIW
|
||||||
|
@ -626,7 +627,7 @@ import kernel32
|
||||||
@ stdcall StrCmpNW (wstr wstr long) StrCmpNW
|
@ stdcall StrCmpNW (wstr wstr long) StrCmpNW
|
||||||
@ stdcall StrCmpW (wstr wstr) lstrcmpW
|
@ stdcall StrCmpW (wstr wstr) lstrcmpW
|
||||||
@ stdcall StrCpyNW (ptr wstr long) lstrcpynW
|
@ stdcall StrCpyNW (ptr wstr long) lstrcpynW
|
||||||
@ stdcall StrCpyW (ptr wstr) lstrcpyW
|
@ stdcall StrCpyW (ptr wstr) StrCpyW
|
||||||
@ stdcall StrDupA (str) StrDupA
|
@ stdcall StrDupA (str) StrDupA
|
||||||
@ stdcall StrDupW (wstr) StrDupW
|
@ stdcall StrDupW (wstr) StrDupW
|
||||||
@ stdcall StrFormatByteSizeA(long str long) StrFormatByteSizeA
|
@ stdcall StrFormatByteSizeA(long str long) StrFormatByteSizeA
|
||||||
|
|
|
@ -66,6 +66,24 @@ int WINAPI StrCmpNIW ( LPCWSTR wstr1, LPCWSTR wstr2, int len)
|
||||||
return strncmpiW(wstr1, wstr2, len);
|
return strncmpiW(wstr1, wstr2, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* StrCatW [SHLWAPI]
|
||||||
|
*/
|
||||||
|
LPWSTR WINAPI StrCatW( LPWSTR wstr1, LPCWSTR wstr2 )
|
||||||
|
{
|
||||||
|
return strcatW( wstr1, wstr2 );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* StrCpyW [SHLWAPI]
|
||||||
|
*/
|
||||||
|
LPWSTR WINAPI StrCpyW( LPWSTR wstr1, LPCWSTR wstr2 )
|
||||||
|
{
|
||||||
|
return strcpyW( wstr1, wstr2 );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* StrStrA [SHLWAPI]
|
* StrStrA [SHLWAPI]
|
||||||
*/
|
*/
|
||||||
|
@ -174,7 +192,7 @@ LPWSTR WINAPI StrDupW (LPCWSTR lpSrc)
|
||||||
|
|
||||||
TRACE("%s\n", debugstr_w(lpSrc));
|
TRACE("%s\n", debugstr_w(lpSrc));
|
||||||
|
|
||||||
if (lpDest) lstrcpyW(lpDest, lpSrc);
|
if (lpDest) strcpyW(lpDest, lpSrc);
|
||||||
return lpDest;
|
return lpDest;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#include "wingdi.h"
|
#include "wingdi.h"
|
||||||
#include "winuser.h"
|
#include "winuser.h"
|
||||||
#include "wine/winbase16.h"
|
#include "wine/winbase16.h"
|
||||||
|
#include "wine/unicode.h"
|
||||||
#include "winerror.h"
|
#include "winerror.h"
|
||||||
#include "drive.h"
|
#include "drive.h"
|
||||||
#include "file.h"
|
#include "file.h"
|
||||||
|
@ -966,7 +967,7 @@ DWORD WINAPI GetShortPathNameA( LPCSTR longpath, LPSTR shortpath,
|
||||||
|
|
||||||
/* Check if the file exists and use the existing file name */
|
/* Check if the file exists and use the existing file name */
|
||||||
if ( DOSFS_GetFullName ( tmpshortpath, TRUE, &full_name ) ) {
|
if ( DOSFS_GetFullName ( tmpshortpath, TRUE, &full_name ) ) {
|
||||||
lstrcpyA ( tmpshortpath+sp, strrchr ( full_name.short_name, '\\' ) + 1 );
|
strcpy( tmpshortpath+sp, strrchr ( full_name.short_name, '\\' ) + 1 );
|
||||||
sp += strlen ( tmpshortpath+sp );
|
sp += strlen ( tmpshortpath+sp );
|
||||||
lp += tmplen;
|
lp += tmplen;
|
||||||
continue;
|
continue;
|
||||||
|
@ -1266,7 +1267,7 @@ DWORD WINAPI GetFullPathNameW( LPCWSTR name, DWORD len, LPWSTR buffer,
|
||||||
HeapFree( GetProcessHeap(), 0, nameA );
|
HeapFree( GetProcessHeap(), 0, nameA );
|
||||||
if (ret && (ret<=len) && buffer && lastpart)
|
if (ret && (ret<=len) && buffer && lastpart)
|
||||||
{
|
{
|
||||||
LPWSTR p = buffer + lstrlenW(buffer);
|
LPWSTR p = buffer + strlenW(buffer);
|
||||||
if (*p != (WCHAR)'\\')
|
if (*p != (WCHAR)'\\')
|
||||||
{
|
{
|
||||||
while ((p > buffer + 2) && (*p != (WCHAR)'\\')) p--;
|
while ((p > buffer + 2) && (*p != (WCHAR)'\\')) p--;
|
||||||
|
@ -1295,9 +1296,9 @@ static int DOSFS_FindNextEx( FIND_FIRST_INFO *info, WIN32_FIND_DATAA *entry )
|
||||||
{
|
{
|
||||||
if (info->cur_pos) return 0;
|
if (info->cur_pos) return 0;
|
||||||
entry->dwFileAttributes = FILE_ATTRIBUTE_LABEL;
|
entry->dwFileAttributes = FILE_ATTRIBUTE_LABEL;
|
||||||
DOSFS_UnixTimeToFileTime( (time_t)0, &entry->ftCreationTime, 0 );
|
RtlSecondsSince1970ToTime( (time_t)0, &entry->ftCreationTime );
|
||||||
DOSFS_UnixTimeToFileTime( (time_t)0, &entry->ftLastAccessTime, 0 );
|
RtlSecondsSince1970ToTime( (time_t)0, &entry->ftLastAccessTime );
|
||||||
DOSFS_UnixTimeToFileTime( (time_t)0, &entry->ftLastWriteTime, 0 );
|
RtlSecondsSince1970ToTime( (time_t)0, &entry->ftLastWriteTime );
|
||||||
entry->nFileSizeHigh = 0;
|
entry->nFileSizeHigh = 0;
|
||||||
entry->nFileSizeLow = 0;
|
entry->nFileSizeLow = 0;
|
||||||
entry->dwReserved0 = 0;
|
entry->dwReserved0 = 0;
|
||||||
|
@ -1932,7 +1933,7 @@ BOOL WINAPI DosDateTimeToFileTime( WORD fatdate, WORD fattime, LPFILETIME ft)
|
||||||
newtm.tm_mday = (fatdate & 0x1f);
|
newtm.tm_mday = (fatdate & 0x1f);
|
||||||
newtm.tm_mon = ((fatdate >> 5) & 0x0f) - 1;
|
newtm.tm_mon = ((fatdate >> 5) & 0x0f) - 1;
|
||||||
newtm.tm_year = (fatdate >> 9) + 80;
|
newtm.tm_year = (fatdate >> 9) + 80;
|
||||||
DOSFS_UnixTimeToFileTime( mktime( &newtm ), ft, 0 );
|
RtlSecondsSince1970ToTime( mktime( &newtm ), ft );
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
12
files/file.c
12
files/file.c
|
@ -526,9 +526,9 @@ static void FILE_FillInfo( struct stat *st, BY_HANDLE_FILE_INFORMATION *info )
|
||||||
if (!(st->st_mode & S_IWUSR))
|
if (!(st->st_mode & S_IWUSR))
|
||||||
info->dwFileAttributes |= FILE_ATTRIBUTE_READONLY;
|
info->dwFileAttributes |= FILE_ATTRIBUTE_READONLY;
|
||||||
|
|
||||||
DOSFS_UnixTimeToFileTime( st->st_mtime, &info->ftCreationTime, 0 );
|
RtlSecondsSince1970ToTime( st->st_mtime, &info->ftCreationTime );
|
||||||
DOSFS_UnixTimeToFileTime( st->st_mtime, &info->ftLastWriteTime, 0 );
|
RtlSecondsSince1970ToTime( st->st_mtime, &info->ftLastWriteTime );
|
||||||
DOSFS_UnixTimeToFileTime( st->st_atime, &info->ftLastAccessTime, 0 );
|
RtlSecondsSince1970ToTime( st->st_atime, &info->ftLastAccessTime );
|
||||||
|
|
||||||
info->dwVolumeSerialNumber = 0; /* FIXME */
|
info->dwVolumeSerialNumber = 0; /* FIXME */
|
||||||
info->nFileSizeHigh = 0;
|
info->nFileSizeHigh = 0;
|
||||||
|
@ -571,9 +571,9 @@ DWORD WINAPI GetFileInformationByHandle( HANDLE hFile,
|
||||||
if (!info) return 0;
|
if (!info) return 0;
|
||||||
req->handle = hFile;
|
req->handle = hFile;
|
||||||
if (server_call( REQ_GET_FILE_INFO )) return 0;
|
if (server_call( REQ_GET_FILE_INFO )) return 0;
|
||||||
DOSFS_UnixTimeToFileTime( req->write_time, &info->ftCreationTime, 0 );
|
RtlSecondsSince1970ToTime( req->write_time, &info->ftCreationTime );
|
||||||
DOSFS_UnixTimeToFileTime( req->write_time, &info->ftLastWriteTime, 0 );
|
RtlSecondsSince1970ToTime( req->write_time, &info->ftLastWriteTime );
|
||||||
DOSFS_UnixTimeToFileTime( req->access_time, &info->ftLastAccessTime, 0 );
|
RtlSecondsSince1970ToTime( req->access_time, &info->ftLastAccessTime );
|
||||||
info->dwFileAttributes = req->attr;
|
info->dwFileAttributes = req->attr;
|
||||||
info->dwVolumeSerialNumber = req->serial;
|
info->dwVolumeSerialNumber = req->serial;
|
||||||
info->nFileSizeHigh = req->size_high;
|
info->nFileSizeHigh = req->size_high;
|
||||||
|
|
|
@ -8,7 +8,6 @@ MODULE = win32
|
||||||
C_SRCS = \
|
C_SRCS = \
|
||||||
console.c \
|
console.c \
|
||||||
device.c \
|
device.c \
|
||||||
error.c \
|
|
||||||
except.c \
|
except.c \
|
||||||
file.c \
|
file.c \
|
||||||
init.c \
|
init.c \
|
||||||
|
|
125
win32/error.c
125
win32/error.c
|
@ -1,125 +0,0 @@
|
||||||
/*
|
|
||||||
* Win32 kernel functions
|
|
||||||
*
|
|
||||||
* Copyright 1995 Martin von Loewis and Cameron Heide
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <errno.h>
|
|
||||||
#include "windef.h"
|
|
||||||
#include "winerror.h"
|
|
||||||
|
|
||||||
/* The errno_xlat_table contains the errno-to-Win32 error
|
|
||||||
* mapping. Since this is a single table, it can't easily
|
|
||||||
* take into account function-specific differences, so there
|
|
||||||
* will probably be quite a few points where we don't exactly
|
|
||||||
* match what NT would return. Then again, neither does
|
|
||||||
* Windows 95. :-)
|
|
||||||
*/
|
|
||||||
typedef struct {
|
|
||||||
int err;
|
|
||||||
DWORD win32err;
|
|
||||||
} ERRNO_XLAT_TABLE;
|
|
||||||
|
|
||||||
/* The table looks pretty ugly due to the preprocessor stuff,
|
|
||||||
* but I honestly have no idea how many of these values are
|
|
||||||
* portable. I'm not even sure how many of them are even
|
|
||||||
* used at all. :-)
|
|
||||||
*/
|
|
||||||
static ERRNO_XLAT_TABLE errno_xlat_table[] = {
|
|
||||||
#if defined(EPERM)
|
|
||||||
{ EPERM, ERROR_ACCESS_DENIED },
|
|
||||||
#endif
|
|
||||||
#if defined(ENOENT)
|
|
||||||
{ ENOENT, ERROR_FILE_NOT_FOUND },
|
|
||||||
#endif
|
|
||||||
#if defined(ESRCH)
|
|
||||||
{ ESRCH, ERROR_INVALID_PARAMETER },
|
|
||||||
#endif
|
|
||||||
#if defined(EIO)
|
|
||||||
{ EIO, ERROR_IO_DEVICE },
|
|
||||||
#endif
|
|
||||||
#if defined(ENOEXEC)
|
|
||||||
{ ENOEXEC, ERROR_BAD_FORMAT },
|
|
||||||
#endif
|
|
||||||
#if defined(EBADF)
|
|
||||||
{ EBADF, ERROR_INVALID_HANDLE },
|
|
||||||
#endif
|
|
||||||
#if defined(ENOMEM)
|
|
||||||
{ ENOMEM, ERROR_OUTOFMEMORY },
|
|
||||||
#endif
|
|
||||||
#if defined(EACCES)
|
|
||||||
{ EACCES, ERROR_ACCESS_DENIED },
|
|
||||||
#endif
|
|
||||||
#if defined(EBUSY)
|
|
||||||
{ EBUSY, ERROR_BUSY },
|
|
||||||
#endif
|
|
||||||
#if defined(EEXIST)
|
|
||||||
{ EEXIST, ERROR_FILE_EXISTS },
|
|
||||||
#endif
|
|
||||||
#if defined(ENODEV)
|
|
||||||
{ ENODEV, ERROR_BAD_DEVICE },
|
|
||||||
#endif
|
|
||||||
#if defined(EINVAL)
|
|
||||||
{ EINVAL, ERROR_INVALID_PARAMETER },
|
|
||||||
#endif
|
|
||||||
#if defined(EMFILE)
|
|
||||||
{ EMFILE, ERROR_TOO_MANY_OPEN_FILES },
|
|
||||||
#endif
|
|
||||||
#if defined(ETXTBSY)
|
|
||||||
{ ETXTBSY, ERROR_BUSY, },
|
|
||||||
#endif
|
|
||||||
#if defined(ENOSPC)
|
|
||||||
{ ENOSPC, ERROR_DISK_FULL },
|
|
||||||
#endif
|
|
||||||
#if defined(ESPIPE)
|
|
||||||
{ ESPIPE, ERROR_SEEK_ON_DEVICE },
|
|
||||||
#endif
|
|
||||||
#if defined(EPIPE)
|
|
||||||
{ EPIPE, ERROR_BROKEN_PIPE },
|
|
||||||
#endif
|
|
||||||
#if defined(EDEADLK)
|
|
||||||
{ EDEADLK, ERROR_POSSIBLE_DEADLOCK },
|
|
||||||
#endif
|
|
||||||
#if defined(ENAMETOOLONG)
|
|
||||||
{ ENAMETOOLONG, ERROR_FILENAME_EXCED_RANGE },
|
|
||||||
#endif
|
|
||||||
#if defined(ENOTEMPTY)
|
|
||||||
{ ENOTEMPTY, ERROR_DIR_NOT_EMPTY },
|
|
||||||
#endif
|
|
||||||
{ -1, 0 }
|
|
||||||
};
|
|
||||||
|
|
||||||
DWORD ErrnoToLastError(int errno_num)
|
|
||||||
{
|
|
||||||
DWORD rc = ERROR_UNKNOWN;
|
|
||||||
int i = 0;
|
|
||||||
|
|
||||||
while(errno_xlat_table[i].err != -1)
|
|
||||||
{
|
|
||||||
if(errno_xlat_table[i].err == errno_num)
|
|
||||||
{
|
|
||||||
rc = errno_xlat_table[i].win32err;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return rc;
|
|
||||||
}
|
|
||||||
|
|
||||||
int LastErrorToErrno(DWORD lasterror)
|
|
||||||
{
|
|
||||||
int rc = 0; /* no error */
|
|
||||||
int i = 0;
|
|
||||||
|
|
||||||
while(errno_xlat_table[i].err != -1)
|
|
||||||
{
|
|
||||||
if(errno_xlat_table[i].win32err == lasterror )
|
|
||||||
{
|
|
||||||
rc = errno_xlat_table[i].err;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
return rc;
|
|
||||||
}
|
|
|
@ -27,9 +27,7 @@
|
||||||
#include "heap.h"
|
#include "heap.h"
|
||||||
#include "debugtools.h"
|
#include "debugtools.h"
|
||||||
|
|
||||||
DEFAULT_DEBUG_CHANNEL(file)
|
DEFAULT_DEBUG_CHANNEL(file);
|
||||||
|
|
||||||
DWORD ErrnoToLastError(int errno_num);
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* ReadFileEx (KERNEL32.)
|
* ReadFileEx (KERNEL32.)
|
||||||
|
@ -74,7 +72,7 @@ BOOL WINAPI SetFileAttributesA(LPCSTR lpFileName, DWORD attributes)
|
||||||
}
|
}
|
||||||
if(stat(full_name.long_name,&buf)==-1)
|
if(stat(full_name.long_name,&buf)==-1)
|
||||||
{
|
{
|
||||||
SetLastError(ErrnoToLastError(errno));
|
FILE_SetDosError();
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
if (attributes & FILE_ATTRIBUTE_READONLY)
|
if (attributes & FILE_ATTRIBUTE_READONLY)
|
||||||
|
@ -100,8 +98,8 @@ BOOL WINAPI SetFileAttributesA(LPCSTR lpFileName, DWORD attributes)
|
||||||
lpFileName,attributes);
|
lpFileName,attributes);
|
||||||
if (-1==chmod(full_name.long_name,buf.st_mode))
|
if (-1==chmod(full_name.long_name,buf.st_mode))
|
||||||
{
|
{
|
||||||
|
FILE_SetDosError();
|
||||||
MESSAGE("Wine ERROR: Couldn't set file attributes for existing file \"%s\". Check permissions !\n", full_name.long_name);
|
MESSAGE("Wine ERROR: Couldn't set file attributes for existing file \"%s\". Check permissions !\n", full_name.long_name);
|
||||||
SetLastError(ErrnoToLastError(errno));
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
Loading…
Reference in New Issue