Mixing msvcrt and libc requires some gymnastics that are best kept within msvcrt. The crtdll_main.c is the only file outside msvcrt that needs to include msvcrt files, and for little reason. In the near future you can no longer easily include msvcrt header (include "msvcrt/xxx.h"). For all these reasons, I think it's more explicit, and clearer if we duplicate the few types we need here, and avoid all this circus. There is virtually 0 chance of these changing in the future anyway, so I don't think we are at risk. Moreover, it's more clear what the code is doing anyways. BTW, it is probably better if I rename _stat to msvcrt_stat, no? ChangeLog Remove dependency on the msvcrt headers for crtdll. Index: dlls/crtdll/crtdll_main.c =================================================================== RCS file: /var/cvs/wine/dlls/crtdll/crtdll_main.c,v retrieving revision 1.48 diff -u -r1.48 crtdll_main.c --- dlls/crtdll/crtdll_main.c 4 Nov 2002 23:53:46 -0000 1.48 +++ dlls/crtdll/crtdll_main.c 12 Dec 2002 22:40:08 -0000 @@ -21,8 +21,6 @@ #include "config.h" #include "windef.h" #include "winbase.h" -#define USE_MSVCRT_PREFIX -#include "msvcrt/sys/stat.h" #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(crtdll); @@ -44,19 +42,39 @@ /* dev_t is a short in crtdll but an unsigned int in msvcrt */ typedef short crtdll_dev_t; +/* avoid including the msvcrt headers for these */ +typedef unsigned short msvcrt_ino_t; +typedef unsigned int msvcrt_dev_t; +typedef int msvcrt_off_t; +typedef long msvcrt_time_t; + +struct _stat { + msvcrt_dev_t st_dev; + msvcrt_ino_t st_ino; + unsigned short st_mode; + short st_nlink; + short st_uid; + short st_gid; + msvcrt_dev_t st_rdev; + msvcrt_off_t st_size; + msvcrt_time_t st_atime; + msvcrt_time_t st_mtime; + msvcrt_time_t st_ctime; +}; + struct crtdll_stat { crtdll_dev_t st_dev; - _ino_t st_ino; + msvcrt_ino_t st_ino; unsigned short st_mode; short st_nlink; short st_uid; short st_gid; crtdll_dev_t st_rdev; - MSVCRT(_off_t) st_size; - MSVCRT(time_t) st_atime; - MSVCRT(time_t) st_mtime; - MSVCRT(time_t) st_ctime; + msvcrt_off_t st_size; + msvcrt_time_t st_atime; + msvcrt_time_t st_mtime; + msvcrt_time_t st_ctime; }; /* convert struct _stat from crtdll format to msvcrt format */ -- Dimi.