diff --git a/configure b/configure index def03ed6e37fed88a32cbb6e104410f808275d1a..f4480f2127ccd9467c287fe8d16bb3f6ea735669 100755 --- a/configure +++ b/configure @@ -5792,6 +5792,8 @@ for ac_func in \ ecvt \ finite \ fpclass \ + fstat64 \ + ftruncate64 \ getnetbyaddr \ getnetbyname \ getpagesize \ @@ -5801,7 +5803,9 @@ for ac_func in \ getservbyport \ getsockopt \ inet_network \ + lseek64 \ lstat \ + lstat64 \ memmove \ mmap \ rfork \ @@ -5809,6 +5813,7 @@ for ac_func in \ sendmsg \ settimeofday \ sigaltstack \ + stat64 \ statfs \ strcasecmp \ strerror \ @@ -5822,12 +5827,12 @@ for ac_func in \ do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5826: checking for $ac_func" >&5 +echo "configure:5831: checking for $ac_func" >&5 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 5831 "configure" +#line 5836 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -5850,7 +5855,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:5854: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5859: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5932,17 +5937,17 @@ for ac_hdr in \ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5936: checking for $ac_hdr" >&5 +echo "configure:5941: checking for $ac_hdr" >&5 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 5941 "configure" +#line 5946 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5946: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5951: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5969,12 +5974,12 @@ fi done echo $ac_n "checking whether stat file-mode macros are broken""... $ac_c" 1>&6 -echo "configure:5973: checking whether stat file-mode macros are broken" >&5 +echo "configure:5978: checking whether stat file-mode macros are broken" >&5 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 5978 "configure" +#line 5983 "configure" #include "confdefs.h" #include <sys/types.h> #include <sys/stat.h> @@ -6027,12 +6032,12 @@ fi echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:6031: checking for working const" >&5 +echo "configure:6036: checking for working const" >&5 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 6036 "configure" +#line 6041 "configure" #include "confdefs.h" int main() { @@ -6081,7 +6086,7 @@ ccp = (char const *const *) p; ; return 0; } EOF -if { (eval echo configure:6085: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6090: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -6102,21 +6107,21 @@ EOF fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:6106: checking for inline" >&5 +echo "configure:6111: checking for inline" >&5 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <<EOF -#line 6113 "configure" +#line 6118 "configure" #include "confdefs.h" int main() { } int $ac_kw foo() { ; return 0; } EOF -if { (eval echo configure:6120: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6125: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -6142,12 +6147,12 @@ EOF esac echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:6146: checking for ANSI C header files" >&5 +echo "configure:6151: checking for ANSI C header files" >&5 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 6151 "configure" +#line 6156 "configure" #include "confdefs.h" #include <stdlib.h> #include <stdarg.h> @@ -6155,7 +6160,7 @@ else #include <float.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6159: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6164: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6172,7 +6177,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 6176 "configure" +#line 6181 "configure" #include "confdefs.h" #include <string.h> EOF @@ -6190,7 +6195,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 6194 "configure" +#line 6199 "configure" #include "confdefs.h" #include <stdlib.h> EOF @@ -6211,7 +6216,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext <<EOF -#line 6215 "configure" +#line 6220 "configure" #include "confdefs.h" #include <ctype.h> #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -6222,7 +6227,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:6226: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6231: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6246,12 +6251,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:6250: checking for size_t" >&5 +echo "configure:6255: checking for size_t" >&5 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 6255 "configure" +#line 6260 "configure" #include "confdefs.h" #include <sys/types.h> #if STDC_HEADERS @@ -6279,7 +6284,7 @@ EOF fi echo $ac_n "checking size of long long""... $ac_c" 1>&6 -echo "configure:6283: checking size of long long" >&5 +echo "configure:6288: checking size of long long" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_long_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6287,7 +6292,7 @@ else ac_cv_sizeof_long_long=0 else cat > conftest.$ac_ext <<EOF -#line 6291 "configure" +#line 6296 "configure" #include "confdefs.h" #include <stdio.h> main() @@ -6298,7 +6303,7 @@ main() exit(0); } EOF -if { (eval echo configure:6302: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6307: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_long_long=`cat conftestval` else @@ -6318,13 +6323,94 @@ EOF +echo $ac_n "checking "for off64_t"""... $ac_c" 1>&6 +echo "configure:6328: checking "for off64_t"" >&5 +if eval "test \"`echo '$''{'wine_cv_off64_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 6333 "configure" +#include "confdefs.h" + + #define _LARGEFILE64_SOURCE + #include <sys/types.h> + +int main() { + + off64_t testoffset; + +; return 0; } +EOF +if { (eval echo configure:6345: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + wine_cv_off64_t="yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + wine_cv_off64_t="no" +fi +rm -f conftest* + +fi + +echo "$ac_t""$wine_cv_off64_t" 1>&6 + if test "$wine_cv_off64_t" = "yes" + then + cat >> confdefs.h <<\EOF +#define HAVE_OFF64_T 1 +EOF + + fi + +echo $ac_n "checking "for struct stat64"""... $ac_c" 1>&6 +echo "configure:6368: checking "for struct stat64"" >&5 +if eval "test \"`echo '$''{'wine_cv_struct_stat64'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 6373 "configure" +#include "confdefs.h" + + #define _LARGEFILE64_SOURCE + #include <sys/types.h> + #include <sys/stat.h> + +int main() { + + struct stat64 tst64; + +; return 0; } +EOF +if { (eval echo configure:6386: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + wine_cv_struct_stat64="yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + wine_cv_struct_stat64="no" +fi +rm -f conftest* + +fi + +echo "$ac_t""$wine_cv_struct_stat64" 1>&6 + if test "$wine_cv_struct_stat64" = "yes" + then + cat >> confdefs.h <<\EOF +#define HAVE_STRUCT_STAT64 1 +EOF + + fi + echo $ac_n "checking "whether linux/input.h is for real"""... $ac_c" 1>&6 -echo "configure:6323: checking "whether linux/input.h is for real"" >&5 +echo "configure:6409: checking "whether linux/input.h is for real"" >&5 if eval "test \"`echo '$''{'wine_cv_linux_input_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 6328 "configure" +#line 6414 "configure" #include "confdefs.h" #include <linux/input.h> @@ -6337,7 +6423,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6341: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6427: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wine_cv_linux_input_h=yes else @@ -6361,12 +6447,12 @@ EOF echo $ac_n "checking "whether we can use re-entrant gethostbyname_r Linux style"""... $ac_c" 1>&6 -echo "configure:6365: checking "whether we can use re-entrant gethostbyname_r Linux style"" >&5 +echo "configure:6451: checking "whether we can use re-entrant gethostbyname_r Linux style"" >&5 if eval "test \"`echo '$''{'wine_cv_linux_gethostbyname_r_6'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 6370 "configure" +#line 6456 "configure" #include "confdefs.h" #include <netdb.h> @@ -6387,7 +6473,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6391: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6477: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wine_cv_linux_gethostbyname_r_6=yes else @@ -6413,12 +6499,12 @@ EOF if test "$ac_cv_header_linux_joystick_h" = "yes" then echo $ac_n "checking "whether linux/joystick.h uses the Linux 2.2+ API"""... $ac_c" 1>&6 -echo "configure:6417: checking "whether linux/joystick.h uses the Linux 2.2+ API"" >&5 +echo "configure:6503: checking "whether linux/joystick.h uses the Linux 2.2+ API"" >&5 if eval "test \"`echo '$''{'wine_cv_linux_joystick_22_api'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 6422 "configure" +#line 6508 "configure" #include "confdefs.h" #include <sys/ioctl.h> @@ -6433,7 +6519,7 @@ int main() { /*empty*/ ; return 0; } EOF -if { (eval echo configure:6437: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6523: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wine_cv_linux_joystick_22_api=yes else @@ -6460,12 +6546,12 @@ fi if test "$ac_cv_header_sys_vfs_h" = "yes" then echo $ac_n "checking "whether sys/vfs.h defines statfs"""... $ac_c" 1>&6 -echo "configure:6464: checking "whether sys/vfs.h defines statfs"" >&5 +echo "configure:6550: checking "whether sys/vfs.h defines statfs"" >&5 if eval "test \"`echo '$''{'wine_cv_sys_vfs_has_statfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 6469 "configure" +#line 6555 "configure" #include "confdefs.h" #include <sys/types.h> @@ -6482,7 +6568,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6486: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6572: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wine_cv_sys_vfs_has_statfs=yes else @@ -6509,12 +6595,12 @@ fi if test "$ac_cv_header_sys_statfs_h" = "yes" then echo $ac_n "checking "whether sys/statfs.h defines statfs"""... $ac_c" 1>&6 -echo "configure:6513: checking "whether sys/statfs.h defines statfs"" >&5 +echo "configure:6599: checking "whether sys/statfs.h defines statfs"" >&5 if eval "test \"`echo '$''{'wine_cv_sys_statfs_has_statfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 6518 "configure" +#line 6604 "configure" #include "confdefs.h" #include <sys/types.h> @@ -6529,7 +6615,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6533: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6619: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wine_cv_sys_statfs_has_statfs=yes else @@ -6556,12 +6642,12 @@ fi if test "$ac_cv_header_sys_mount_h" = "yes" then echo $ac_n "checking "whether sys/mount.h defines statfs"""... $ac_c" 1>&6 -echo "configure:6560: checking "whether sys/mount.h defines statfs"" >&5 +echo "configure:6646: checking "whether sys/mount.h defines statfs"" >&5 if eval "test \"`echo '$''{'wine_cv_sys_mount_has_statfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 6565 "configure" +#line 6651 "configure" #include "confdefs.h" #include <sys/types.h> @@ -6576,7 +6662,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6580: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6666: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wine_cv_sys_mount_has_statfs=yes else @@ -6602,7 +6688,7 @@ fi echo $ac_n "checking "for statfs.f_bfree"""... $ac_c" 1>&6 -echo "configure:6606: checking "for statfs.f_bfree"" >&5 +echo "configure:6692: checking "for statfs.f_bfree"" >&5 if eval "test \"`echo '$''{'wine_cv_statfs_bfree'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6611,7 +6697,7 @@ else wine_cv_statfs_bfree=no else cat > conftest.$ac_ext <<EOF -#line 6615 "configure" +#line 6701 "configure" #include "confdefs.h" #include <sys/types.h> @@ -6638,7 +6724,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6642: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6728: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wine_cv_statfs_bfree=yes else @@ -6662,7 +6748,7 @@ EOF fi echo $ac_n "checking "for statfs.f_bavail"""... $ac_c" 1>&6 -echo "configure:6666: checking "for statfs.f_bavail"" >&5 +echo "configure:6752: checking "for statfs.f_bavail"" >&5 if eval "test \"`echo '$''{'wine_cv_statfs_bavail'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6671,7 +6757,7 @@ else wine_cv_statfs_bavail=no else cat > conftest.$ac_ext <<EOF -#line 6675 "configure" +#line 6761 "configure" #include "confdefs.h" #include <sys/types.h> @@ -6698,7 +6784,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:6702: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6788: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wine_cv_statfs_bavail=yes else @@ -6723,12 +6809,12 @@ fi echo $ac_n "checking "for msg_accrights in struct msghdr"""... $ac_c" 1>&6 -echo "configure:6727: checking "for msg_accrights in struct msghdr"" >&5 +echo "configure:6813: checking "for msg_accrights in struct msghdr"" >&5 if eval "test \"`echo '$''{'ac_cv_c_msg_accrights'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 6732 "configure" +#line 6818 "configure" #include "confdefs.h" #include <sys/types.h> #include <sys/socket.h> @@ -6736,7 +6822,7 @@ int main() { struct msghdr hdr; hdr.msg_accrights=0 ; return 0; } EOF -if { (eval echo configure:6740: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6826: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_msg_accrights="yes" else @@ -6759,12 +6845,12 @@ fi echo $ac_n "checking "for sun_len in struct sockaddr_un"""... $ac_c" 1>&6 -echo "configure:6763: checking "for sun_len in struct sockaddr_un"" >&5 +echo "configure:6849: checking "for sun_len in struct sockaddr_un"" >&5 if eval "test \"`echo '$''{'ac_cv_c_sun_len'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 6768 "configure" +#line 6854 "configure" #include "confdefs.h" #include <sys/types.h> #include <sys/socket.h> @@ -6773,7 +6859,7 @@ int main() { static struct sockaddr_un addr; addr.sun_len = 1 ; return 0; } EOF -if { (eval echo configure:6777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_sun_len="yes" else @@ -6796,12 +6882,12 @@ fi echo $ac_n "checking "whether we need to define __i386__"""... $ac_c" 1>&6 -echo "configure:6800: checking "whether we need to define __i386__"" >&5 +echo "configure:6886: checking "whether we need to define __i386__"" >&5 if eval "test \"`echo '$''{'ac_cv_cpp_def_i386'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 6805 "configure" +#line 6891 "configure" #include "confdefs.h" #if (defined(i386) || defined(__i386)) && !defined(__i386__) yes diff --git a/configure.in b/configure.in index 55ea2cf37832e509b8bc41dfdf8f161016aea2df..56bbdb68e14ba1db8bba5b992d05af37a2485576 100644 --- a/configure.in +++ b/configure.in @@ -757,6 +757,8 @@ AC_CHECK_FUNCS(\ ecvt \ finite \ fpclass \ + fstat64 \ + ftruncate64 \ getnetbyaddr \ getnetbyname \ getpagesize \ @@ -766,7 +768,9 @@ AC_CHECK_FUNCS(\ getservbyport \ getsockopt \ inet_network \ + lseek64 \ lstat \ + lstat64 \ memmove \ mmap \ rfork \ @@ -774,6 +778,7 @@ AC_CHECK_FUNCS(\ sendmsg \ settimeofday \ sigaltstack \ + stat64 \ statfs \ strcasecmp \ strerror \ @@ -850,6 +855,43 @@ AC_C_INLINE() AC_TYPE_SIZE_T() AC_CHECK_SIZEOF(long long,0) +AC_CACHE_CHECK("for off64_t", + wine_cv_off64_t, + AC_TRY_COMPILE([ + #define _LARGEFILE64_SOURCE + #include <sys/types.h> + ],[ + off64_t testoffset; + ], + wine_cv_off64_t="yes", + wine_cv_off64_t="no", + wine_cv_off64_t="yes" + ) + ) + if test "$wine_cv_off64_t" = "yes" + then + AC_DEFINE(HAVE_OFF64_T) + fi + +AC_CACHE_CHECK("for struct stat64", + wine_cv_struct_stat64, + AC_TRY_COMPILE([ + #define _LARGEFILE64_SOURCE + #include <sys/types.h> + #include <sys/stat.h> + ],[ + struct stat64 tst64; + ], + wine_cv_struct_stat64="yes", + wine_cv_struct_stat64="no", + wine_cv_struct_stat64="yes" + ) + ) + if test "$wine_cv_struct_stat64" = "yes" + then + AC_DEFINE(HAVE_STRUCT_STAT64) + fi + AC_CACHE_CHECK("whether linux/input.h is for real", wine_cv_linux_input_h, AC_TRY_COMPILE([ diff --git a/dlls/shell32/shelllink.c b/dlls/shell32/shelllink.c index 27f1cd9fdd9e25c67c91d83def96b5d51aea14cd..94d7e080e3837beb65ce4f4fe1a5e311c05632ab 100644 --- a/dlls/shell32/shelllink.c +++ b/dlls/shell32/shelllink.c @@ -8,7 +8,6 @@ #include "config.h" #include <string.h> -#include <sys/stat.h> #include <stdio.h> #include <unistd.h> #include <errno.h> diff --git a/dlls/winaspi/aspi.c b/dlls/winaspi/aspi.c index 0c07182fcca13b3f9dabf3b2b88901232424ee30..feb8bfaa1f1eae0ad9baccee636357a24b91b614 100644 --- a/dlls/winaspi/aspi.c +++ b/dlls/winaspi/aspi.c @@ -25,7 +25,6 @@ HKEY_DYN_DATA */ #include <stdio.h> #include <sys/types.h> -#include <sys/stat.h> #include <sys/ioctl.h> #include <fcntl.h> #include <dirent.h> diff --git a/dlls/winaspi/winaspi16.c b/dlls/winaspi/winaspi16.c index dfad8ea96c7314959f014eaf3e3a0ac52bf13c1d..d26151193ce18eb42a8e9ac6bb5c3d02eeae5c3a 100644 --- a/dlls/winaspi/winaspi16.c +++ b/dlls/winaspi/winaspi16.c @@ -2,7 +2,6 @@ #include <stdlib.h> #include <sys/types.h> -#include <sys/stat.h> #include <errno.h> #include <fcntl.h> #include <memory.h> diff --git a/dlls/winaspi/winaspi32.c b/dlls/winaspi/winaspi32.c index 6c024a2df2fe077efeeec03f1b3635d6aba8d691..6bd4ad09ddc3d9659b5824bdd7ec1220ea2b0262 100644 --- a/dlls/winaspi/winaspi32.c +++ b/dlls/winaspi/winaspi32.c @@ -4,7 +4,6 @@ #include <stdlib.h> #include <stdio.h> #include <sys/types.h> -#include <sys/stat.h> #include <errno.h> #include <fcntl.h> #include <memory.h> diff --git a/dlls/winedos/dosvm.c b/dlls/winedos/dosvm.c index 6af6ca86ce4597a1d2be5361914164a374cb44b1..87ba3a3d00484b6696529f9e63f3d5fea52c0ba3 100644 --- a/dlls/winedos/dosvm.c +++ b/dlls/winedos/dosvm.c @@ -17,7 +17,6 @@ #include <unistd.h> #include <sys/time.h> #include <sys/types.h> -#include <sys/stat.h> #include "wine/winbase16.h" #include "wine/exception.h" diff --git a/dlls/wineps/afm.c b/dlls/wineps/afm.c index 8095e71071b7eb70c034eb34fd6eb3ffc6e4e672..3bbfee69169755253c95e8fac5932153f798dc10 100644 --- a/dlls/wineps/afm.c +++ b/dlls/wineps/afm.c @@ -9,7 +9,6 @@ #include <string.h> #include <stdlib.h> /* qsort() & bsearch() */ #include <stdio.h> -#include <sys/stat.h> #include <dirent.h> #include <limits.h> /* INT_MIN */ #include <float.h> /* FLT_MAX */ diff --git a/dlls/wininet/ftp.c b/dlls/wininet/ftp.c index ea4604b0ba608000d5381b8438a8640568204f2b..f9a0f67cc077353c7bd865b604e2ae7fccdd2bb7 100644 --- a/dlls/wininet/ftp.c +++ b/dlls/wininet/ftp.c @@ -22,7 +22,6 @@ #ifdef HAVE_SYS_SOCKET_H # include <sys/socket.h> #endif -#include <sys/stat.h> #include <unistd.h> #include <time.h> #ifdef HAVE_NETINET_IN_SYSTM_H diff --git a/files/file.c b/files/file.c index 04e3bb7d48a73dc85861a6a1d67fde28ec367504..3fba2e30f4b385461e7b2c3062ff5e622b610467 100644 --- a/files/file.c +++ b/files/file.c @@ -10,6 +10,7 @@ */ #include "config.h" +#include "wine/port.h" #include <assert.h> #include <ctype.h> @@ -36,7 +37,6 @@ #include "windef.h" #include "winbase.h" #include "wine/winbase16.h" -#include "wine/port.h" #include "drive.h" #include "file.h" #include "heap.h" @@ -491,7 +491,7 @@ HANDLE WINAPI CreateFileW( LPCWSTR filename, DWORD access, DWORD sharing, * * Fill a file information from a struct stat. */ -static void FILE_FillInfo( struct stat *st, BY_HANDLE_FILE_INFORMATION *info ) +static void FILE_FillInfo( struct stat64 *st, BY_HANDLE_FILE_INFORMATION *info ) { if (S_ISDIR(st->st_mode)) info->dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY; @@ -506,7 +506,11 @@ static void FILE_FillInfo( struct stat *st, BY_HANDLE_FILE_INFORMATION *info ) info->dwVolumeSerialNumber = 0; /* FIXME */ info->nFileSizeHigh = 0; - info->nFileSizeLow = S_ISDIR(st->st_mode) ? 0 : st->st_size; + info->nFileSizeLow = 0; + if (!S_ISDIR(st->st_mode)) { + info->nFileSizeHigh = st->st_size >> 32; + info->nFileSizeLow = st->st_size & 0xffffffff; + } info->nNumberOfLinks = st->st_nlink; info->nFileIndexHigh = 0; info->nFileIndexLow = st->st_ino; @@ -520,9 +524,9 @@ static void FILE_FillInfo( struct stat *st, BY_HANDLE_FILE_INFORMATION *info ) */ BOOL FILE_Stat( LPCSTR unixName, BY_HANDLE_FILE_INFORMATION *info ) { - struct stat st; + struct stat64 st; - if (lstat( unixName, &st ) == -1) + if (lstat64( unixName, &st ) == -1) { FILE_SetDosError(); return FALSE; @@ -532,7 +536,7 @@ BOOL FILE_Stat( LPCSTR unixName, BY_HANDLE_FILE_INFORMATION *info ) { /* do a "real" stat to find out about the type of the symlink destination */ - if (stat( unixName, &st ) == -1) + if (stat64( unixName, &st ) == -1) { FILE_SetDosError(); return FALSE; @@ -1644,17 +1648,8 @@ DWORD WINAPI SetFilePointer( HANDLE hFile, LONG distance, LONG *highword, { DWORD ret = 0xffffffff; - if (highword && - ((distance >= 0 && *highword != 0) || (distance < 0 && *highword != -1))) - { - FIXME("64-bit offsets not supported yet\n" - "SetFilePointer(%08x,%08lx,%08lx,%08lx)\n", - hFile,distance,*highword,method); - SetLastError( ERROR_INVALID_PARAMETER ); - return ret; - } - TRACE("handle %d offset %ld origin %ld\n", - hFile, distance, method ); + TRACE("handle %d offset %ld high %ld origin %ld\n", + hFile, distance, highword?*highword:0, method ); SERVER_START_REQ( set_file_pointer ) { @@ -2015,7 +2010,10 @@ BOOL WINAPI MoveFileExW( LPCWSTR fn1, LPCWSTR fn2, DWORD flag ) BOOL WINAPI MoveFileA( LPCSTR fn1, LPCSTR fn2 ) { DOS_FULL_NAME full_name1, full_name2; - struct stat fstat; + /* Even though we do not need the size, stat will fail for large files, + * so we need to use stat64 here. */ + struct stat64 fstat; + TRACE("(%s,%s)\n", fn1, fn2 ); @@ -2035,7 +2033,7 @@ BOOL WINAPI MoveFileA( LPCSTR fn1, LPCSTR fn2 ) } else return TRUE; else /*copy */ { - if (stat( full_name1.long_name, &fstat )) + if (stat64( full_name1.long_name, &fstat )) { WARN("Invalid source file %s\n", full_name1.long_name); diff --git a/graphics/x11drv/xfont.c b/graphics/x11drv/xfont.c index d58f3ec1f3838ec5796deec34cc04c55785bc798..1d4e6de52f87215b846350e6c2ac15ce5e88ed4e 100644 --- a/graphics/x11drv/xfont.c +++ b/graphics/x11drv/xfont.c @@ -19,10 +19,8 @@ #include <string.h> #include <unistd.h> #include <sys/types.h> -#include <sys/stat.h> #include <fcntl.h> #include <math.h> -#include <assert.h> #include "windef.h" #include "wingdi.h" diff --git a/include/acconfig.h b/include/acconfig.h index 1d4ae87728eb9a7aa50c7683dabb780f7a3a2f4f..c17452b5cb44c01f5b7ff754d5b86f3627ddc1ca 100644 --- a/include/acconfig.h +++ b/include/acconfig.h @@ -122,3 +122,9 @@ /* Define if we have CUPS */ #undef HAVE_CUPS + +/* Define if we have 64 bit file offsets */ +#undef HAVE_OFF64_T + +/* Define if we have struct stat64 */ +#undef HAVE_STRUCT_STAT64 diff --git a/include/config.h.in b/include/config.h.in index 44d6db260a8b712b4af6df980b477e1b752bed23..eee0c58a18b6f0d3ca161d1b9b2c78f9127cfd47 100644 --- a/include/config.h.in +++ b/include/config.h.in @@ -154,6 +154,12 @@ /* Define if we have CUPS */ #undef HAVE_CUPS +/* Define if we have 64 bit file offsets */ +#undef HAVE_OFF64_T + +/* Define if we have struct stat64 */ +#undef HAVE_STRUCT_STAT64 + /* The number of bytes in a long long. */ #undef SIZEOF_LONG_LONG @@ -181,6 +187,12 @@ /* Define if you have the fpclass function. */ #undef HAVE_FPCLASS +/* Define if you have the fstat64 function. */ +#undef HAVE_FSTAT64 + +/* Define if you have the ftruncate64 function. */ +#undef HAVE_FTRUNCATE64 + /* Define if you have the gethostbyname function. */ #undef HAVE_GETHOSTBYNAME @@ -214,9 +226,15 @@ /* Define if you have the iswalnum function. */ #undef HAVE_ISWALNUM +/* Define if you have the lseek64 function. */ +#undef HAVE_LSEEK64 + /* Define if you have the lstat function. */ #undef HAVE_LSTAT +/* Define if you have the lstat64 function. */ +#undef HAVE_LSTAT64 + /* Define if you have the memmove function. */ #undef HAVE_MEMMOVE @@ -241,6 +259,9 @@ /* Define if you have the sigaltstack function. */ #undef HAVE_SIGALTSTACK +/* Define if you have the stat64 function. */ +#undef HAVE_STAT64 + /* Define if you have the statfs function. */ #undef HAVE_STATFS diff --git a/include/wine/port.h b/include/wine/port.h index de6d588e8fb1b5ddfa264667d931e7244993e2dc..4bbeb9c755da8f7d9dd84113dc2670b4a48be116 100644 --- a/include/wine/port.h +++ b/include/wine/port.h @@ -6,9 +6,10 @@ #ifndef __WINE_WINE_PORT_H #define __WINE_WINE_PORT_H +#define _LARGEFILE64_SOURCE /* for glibc 64 bit file functions */ + #include "config.h" #include "winnt.h" - #include <sys/types.h> #include <sys/time.h> #include <sys/stat.h> @@ -131,6 +132,57 @@ int lstat(const char *file_name, struct stat *buf); #define S_ISLNK(mod) (0) #endif /* S_ISLNK */ +#ifndef HAVE_OFF64_T +# if SIZEOF_LONG_LONG > 0 +typedef long long off64_t; +# else +typedef long off64_t; +# endif +#endif + +#ifndef HAVE_STRUCT_STAT64 +/* This does not convert all struct members to 64bit, only size. */ +struct stat64 { + dev_t st_dev; /* device */ + ino_t st_ino; /* inode */ + mode_t st_mode; /* protection */ + nlink_t st_nlink; /* number of hard links */ + uid_t st_uid; /* user ID of owner */ + gid_t st_gid; /* group ID of owner */ + dev_t st_rdev; /* device type (if inode device) */ + off64_t st_size; /* total size, in bytes */ + unsigned long st_blksize; /* blocksize for filesystem I/O */ + unsigned long st_blocks; /* number of blocks allocated */ + time_t st_atime; /* time of last access */ + time_t st_mtime; /* time of last modification */ + time_t st_ctime; /* time of last change */ +}; +#endif + +#ifndef HAVE_LSEEK64 +extern off64_t lseek64(int fildes, off64_t offset, int whence); +#endif + +#ifndef HAVE_STAT64 +extern int stat64(const char *file_name, struct stat64 *buf); +#endif + +#ifndef HAVE_LSTAT64 +extern int lstat64(const char *file_name, struct stat64 *buf); +#endif + +#ifndef HAVE_FSTAT64 +extern int fstat64(int fd, struct stat64 *buf); +#endif + +#ifndef HAVE_FTRUNCATE64 +extern int ftruncate64(int fd, off64_t offset); +#endif + +#ifndef O_LARGEFILE +# define O_LARGEFILE 0 +#endif + extern void *wine_dlopen( const char *filename, int flag, char *error, int errorsize ); extern void *wine_dlsym( void *handle, const char *symbol, char *error, int errorsize ); extern int wine_dlclose( void *handle, char *error, int errorsize ); diff --git a/library/loader.c b/library/loader.c index 1b3341157ce0d82f9b71fd0f5b96d43fc08ccfe2..930954626407b2d39b997742a6e05ba5f8e05ec9 100644 --- a/library/loader.c +++ b/library/loader.c @@ -5,6 +5,7 @@ */ #include "config.h" +#include "wine/port.h" #include <assert.h> #include <ctype.h> @@ -18,7 +19,6 @@ #include "winnt.h" #include "wine/library.h" -#include "wine/port.h" #define MAX_DLLS 100 diff --git a/library/port.c b/library/port.c index 004f85384013e9c036f0d37aab499016bca89e4e..c32a714bf410ff222ccbfa16bf17f7a018ecabc2 100644 --- a/library/port.c +++ b/library/port.c @@ -5,6 +5,7 @@ */ #include "config.h" +#include "wine/port.h" #ifdef __BEOS__ #include <be/kernel/fs_info.h> @@ -43,7 +44,6 @@ # include <dlfcn.h> #endif -#include "wine/port.h" /*********************************************************************** * usleep @@ -389,7 +389,93 @@ int lstat(const char *file_name, struct stat *buf) } #endif /* HAVE_LSTAT */ +static void +_convert_stat_stat64(struct stat64 *stto,struct stat *stfrom) +{ + stto->st_dev = stfrom->st_dev; + stto->st_ino = stfrom->st_ino; + stto->st_mode = stfrom->st_mode; + stto->st_nlink = stfrom->st_nlink; + stto->st_uid = stfrom->st_uid; + stto->st_gid = stfrom->st_gid; + stto->st_rdev = stfrom->st_rdev; + stto->st_blksize = stfrom->st_blksize; + stto->st_blocks = stfrom->st_blocks; + stto->st_atime = stfrom->st_atime; + stto->st_mtime = stfrom->st_mtime; + stto->st_ctime = stfrom->st_ctime; + stto->st_size = (off64_t)stfrom->st_size; +} + +/*********************************************************************** + * stat64 + */ +#ifndef HAVE_STAT64 +int stat64(const char *file_name, struct stat64 *buf) +{ + struct stat stbuf; + int res = stat(file_name,&stbuf); + _convert_stat_stat64(buf,&stbuf); + return res; +} +#endif /* HAVE_STAT64 */ + +/*********************************************************************** + * lstat64 + */ +#ifndef HAVE_LSTAT64 +int lstat64(const char *file_name, struct stat64 *buf) +{ + struct stat stbuf; + int res = lstat(file_name,&stbuf); + _convert_stat_stat64(buf,&stbuf); + return res; +} +#endif /* HAVE_LSTAT64 */ +/*********************************************************************** + * fstat64 + */ +#ifndef HAVE_FSTAT64 +int fstat64(int fd, struct stat64 *buf) +{ + struct stat stbuf; + int res = fstat(fd,&stbuf); + _convert_stat_stat64(buf,&stbuf); + return res; +} +#endif /* HAVE_FSTAT */ + +/*********************************************************************** + * lseek64 + */ +#ifndef HAVE_LSEEK64 +off64_t lseek64(int fd, off64_t where, int whence) +{ + off_t res; + if ((where >= 0x8000000LL) || ( where <= -0x7fffffffLL)) { + errno = EFBIG; /* FIXME: hack */ + return -1; + } + + res = lseek(fd,(off_t)where,whence); + return (off64_t)res; +} +#endif /* HAVE_LSEEK64 */ + +/*********************************************************************** + * ftruncate64 + */ +#ifndef HAVE_FTRUNCATE64 +int ftruncate64(int fd, off64_t where) +{ + if ((where >= 0x8000000LL) || ( where <= -0x7fffffffLL)) { + errno = EFBIG; /* FIXME: hack */ + return -1; + } + return ftruncate(fd,(off_t)where); +} +#endif /* HAVE_LSEEK64 */ /*********************************************************************** * getrlimit */ diff --git a/loader/dos/dosmod.c b/loader/dos/dosmod.c index 8aea170bb41c242314dc59732034d1096993a6db..06516b6963714857b86f3b4dcdcfa9d73e90697c 100644 --- a/loader/dos/dosmod.c +++ b/loader/dos/dosmod.c @@ -21,7 +21,6 @@ asm(".org 0x110000"); #include <unistd.h> #include <fcntl.h> #include <signal.h> -#include <sys/stat.h> #ifdef HAVE_SYS_MMAN_H # include <sys/mman.h> #endif diff --git a/loader/ne/resource.c b/loader/ne/resource.c index 799e939f97c1547aa813c4ce689918c757b0e8e5..cb0d196c4f216bac681fcfdbfbfe75de36004bd5 100644 --- a/loader/ne/resource.c +++ b/loader/ne/resource.c @@ -10,7 +10,6 @@ #include <stdlib.h> #include <string.h> #include <sys/types.h> -#include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include "windef.h" diff --git a/loader/ne/segment.c b/loader/ne/segment.c index de61c3c75ed9a5546589ff1bdaa8f0c79f54c2e4..a3ca8c7cd0249b32e4866ae28db5207755f6b66e 100644 --- a/loader/ne/segment.c +++ b/loader/ne/segment.c @@ -9,7 +9,6 @@ #include <stdio.h> #include <stdlib.h> #include <sys/types.h> -#include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <ctype.h> diff --git a/msdos/int13.c b/msdos/int13.c index 91d6568087e2a7e9ee5e42fa640de24030c1b264..3a39463bc385b7796b806b3df0021c9e3e596f54 100644 --- a/msdos/int13.c +++ b/msdos/int13.c @@ -5,11 +5,10 @@ #include <stdlib.h> #include <unistd.h> #include <sys/types.h> -#include <sys/stat.h> #include <sys/ioctl.h> #include <fcntl.h> #ifdef linux -#include <linux/fd.h> +# include <linux/fd.h> #endif #include "miscemu.h" /* #define DEBUG_INT */ diff --git a/msdos/int21.c b/msdos/int21.c index 51e45313b1a8bfcdc77522a4817bc0c482c2282d..236f66b6d30b633e0ac5d5e92feb6e850aa6cc6d 100644 --- a/msdos/int21.c +++ b/msdos/int21.c @@ -12,7 +12,6 @@ # include <sys/file.h> #endif #include <string.h> -#include <sys/stat.h> #include <sys/time.h> #include <sys/types.h> #include <unistd.h> diff --git a/server/console.c b/server/console.c index 60324e95844ee7cd22a00208038df09817760162..1561070c5565b7cc86b6a9613eb2fe964dc51500 100644 --- a/server/console.c +++ b/server/console.c @@ -15,10 +15,6 @@ #include <string.h> #include <stdio.h> #include <stdlib.h> -#ifdef HAVE_SYS_ERRNO_H -#include <sys/errno.h> -#endif -#include <sys/stat.h> #include <sys/time.h> #include <sys/types.h> #include <time.h> diff --git a/server/file.c b/server/file.c index 6ffba87c90acaa4496b8d6ce293461670e486cc8..7b315b2539f7be6fd361144c54ffa6168929580f 100644 --- a/server/file.c +++ b/server/file.c @@ -5,6 +5,7 @@ */ #include "config.h" +#include "wine/port.h" #include <assert.h> #include <fcntl.h> @@ -152,7 +153,7 @@ static struct file *create_file( const char *nameptr, size_t len, unsigned int a } /* FIXME: should set error to STATUS_OBJECT_NAME_COLLISION if file existed before */ - if ((fd = open( name, flags | O_NONBLOCK, + if ((fd = open( name, flags | O_NONBLOCK | O_LARGEFILE, (attrs & FILE_ATTRIBUTE_READONLY) ? 0444 : 0666 )) == -1) goto file_error; /* refuse to open a directory */ @@ -161,7 +162,7 @@ static struct file *create_file( const char *nameptr, size_t len, unsigned int a { set_error( STATUS_ACCESS_DENIED ); goto error; - } + } if (!(file = create_file_for_fd( fd, access, sharing, attrs ))) { @@ -258,11 +259,11 @@ static int file_flush( struct object *obj ) static int file_get_info( struct object *obj, struct get_file_info_request *req ) { - struct stat st; + struct stat64 st; struct file *file = (struct file *)obj; assert( obj->ops == &file_ops ); - if (fstat( file->obj.fd, &st ) == -1) + if (fstat64( file->obj.fd, &st ) == -1) { file_set_error(); return 0; @@ -275,8 +276,16 @@ static int file_get_info( struct object *obj, struct get_file_info_request *req if (!(st.st_mode & S_IWUSR)) req->attr |= FILE_ATTRIBUTE_READONLY; req->access_time = st.st_atime; req->write_time = st.st_mtime; - req->size_high = 0; - req->size_low = S_ISDIR(st.st_mode) ? 0 : st.st_size; + if (S_ISDIR(st.st_mode)) + { + req->size_high = 0; + req->size_low = 0; + } + else + { + req->size_high = st.st_size >> 32; + req->size_low = st.st_size & 0xffffffff; + } req->links = st.st_nlink; req->index_high = st.st_dev; req->index_low = st.st_ino; @@ -331,21 +340,15 @@ struct file *get_file_obj( struct process *process, handle_t handle, unsigned in return (struct file *)get_handle_obj( process, handle, access, &file_ops ); } -static int set_file_pointer( handle_t handle, int *low, int *high, int whence ) +static int set_file_pointer( handle_t handle, unsigned int *low, int *high, int whence ) { struct file *file; - int result; - - if ((*low >= 0 && *high != 0) || (*low < 0 && *high != -1)) - { - fprintf( stderr, "set_file_pointer: offset > 2Gb not supported yet\n" ); - set_error( STATUS_INVALID_PARAMETER ); - return 0; - } + off64_t result,xto; + xto = *low+((off64_t)*high<<32); if (!(file = get_file_obj( current->process, handle, 0 ))) return 0; - if ((result = lseek( file->obj.fd, *low, whence )) == -1) + if ((result = lseek64(file->obj.fd,xto,whence))==-1) { /* Check for seek before start of file */ @@ -358,7 +361,8 @@ static int set_file_pointer( handle_t handle, int *low, int *high, int whence ) release_object( file ); return 0; } - *low = result; + *low = result & 0xffffffff; + *high = result >> 32; release_object( file ); return 1; } @@ -366,12 +370,12 @@ static int set_file_pointer( handle_t handle, int *low, int *high, int whence ) static int truncate_file( handle_t handle ) { struct file *file; - int result; + off64_t result; if (!(file = get_file_obj( current->process, handle, GENERIC_WRITE ))) return 0; - if (((result = lseek( file->obj.fd, 0, SEEK_CUR )) == -1) || - (ftruncate( file->obj.fd, result ) == -1)) + if (((result = lseek64( file->obj.fd, 0, SEEK_CUR )) == -1) || + (ftruncate64( file->obj.fd, result ) == -1)) { file_set_error(); release_object( file ); @@ -384,20 +388,16 @@ static int truncate_file( handle_t handle ) /* try to grow the file to the specified size */ int grow_file( struct file *file, int size_high, int size_low ) { - struct stat st; + struct stat64 st; + off64_t size = size_low + (((off64_t)size_high)<<32); - if (size_high) - { - set_error( STATUS_INVALID_PARAMETER ); - return 0; - } - if (fstat( file->obj.fd, &st ) == -1) + if (fstat64( file->obj.fd, &st ) == -1) { file_set_error(); return 0; } - if (st.st_size >= size_low) return 1; /* already large enough */ - if (ftruncate( file->obj.fd, size_low ) != -1) return 1; + if (st.st_size >= size) return 1; /* already large enough */ + if (ftruncate64( file->obj.fd, size ) != -1) return 1; file_set_error(); return 0; } diff --git a/server/pipe.c b/server/pipe.c index 789c201f24214fcce83ee0121eb6049ab1bcde64..8ade62547b2e43dbd5a2b628b7fec9460ba5a55e 100644 --- a/server/pipe.c +++ b/server/pipe.c @@ -14,7 +14,6 @@ #ifdef HAVE_SYS_ERRNO_H #include <sys/errno.h> #endif -#include <sys/stat.h> #include <sys/time.h> #include <sys/types.h> #include <time.h> diff --git a/server/serial.c b/server/serial.c index 738bcbc8bdd6374d84ee0d950ed8546106c54190..4979d390a0f20bd3dfe4a1accc6c42e23ed1d23e 100644 --- a/server/serial.c +++ b/server/serial.c @@ -20,7 +20,6 @@ #ifdef HAVE_SYS_ERRNO_H #include <sys/errno.h> #endif -#include <sys/stat.h> #include <sys/time.h> #include <sys/types.h> #include <time.h> diff --git a/server/sock.c b/server/sock.c index 1617fb3e59f393a5af18913768d569186dbb0f08..b5c77a8e3f0a284fa57804b01d2ee2df033bafee 100644 --- a/server/sock.c +++ b/server/sock.c @@ -18,7 +18,6 @@ #ifdef HAVE_SYS_ERRNO_H # include <sys/errno.h> #endif -#include <sys/stat.h> #include <sys/time.h> #include <sys/types.h> #ifdef HAVE_SYS_SOCKET_H diff --git a/win32/device.c b/win32/device.c index 4b659793f3523871fc98082ce53aba1af7501f0c..0b30099ec633d99adc3d30473dee020b648af2d3 100644 --- a/win32/device.c +++ b/win32/device.c @@ -9,16 +9,9 @@ #include "config.h" -#include <errno.h> -#include <assert.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> -#include <sys/stat.h> -#ifdef HAVE_SYS_MMAN_H -#include <sys/mman.h> -#endif -#include <fcntl.h> #include <string.h> #include <stdarg.h> #include <time.h> diff --git a/win32/file.c b/win32/file.c index ea7e470ac805879866ab590a7192fc2a985415f7..8202fd9a2595065f37d7d54c53eb958fd98a2bc1 100644 --- a/win32/file.c +++ b/win32/file.c @@ -5,6 +5,7 @@ */ #include "config.h" +#include "wine/port.h" #include <errno.h> #ifdef HAVE_SYS_ERRNO_H @@ -56,7 +57,7 @@ BOOL16 WINAPI SetFileAttributes16( LPCSTR lpFileName, DWORD attributes ) */ BOOL WINAPI SetFileAttributesA(LPCSTR lpFileName, DWORD attributes) { - struct stat buf; + struct stat64 buf; DOS_FULL_NAME full_name; if (!DOSFS_GetFullName( lpFileName, TRUE, &full_name )) @@ -69,7 +70,7 @@ BOOL WINAPI SetFileAttributesA(LPCSTR lpFileName, DWORD attributes) FIXME("(%s):%lx illegal combination with FILE_ATTRIBUTE_NORMAL.\n", lpFileName,attributes); } - if(stat(full_name.long_name,&buf)==-1) + if(stat64(full_name.long_name,&buf)==-1) { FILE_SetDosError(); return FALSE; diff --git a/windows/clipboard.c b/windows/clipboard.c index 06fe2363a6565e50aa367ee82a39c1206c2a7047..25b7adeac53ad3d6ffb04c5d5b04ab601e7eaeca 100644 --- a/windows/clipboard.c +++ b/windows/clipboard.c @@ -19,7 +19,6 @@ #include <stdlib.h> #include <sys/types.h> -#include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <string.h>