diff -rupN wine-1.5.19/ChangeLog wine-silverlight-1.5.19/ChangeLog --- wine-1.5.19/ChangeLog 1969-12-31 16:00:00.000000000 -0800 +++ wine-silverlight-1.5.19/ChangeLog 2012-12-20 18:16:39.099593683 -0800 @@ -0,0 +1,3 @@ +wine-compholio (X.Y.Z) lucid; urgency=low + * See also normal changelog file for Debian changes. + -- Erich E. Hoover Fri, 16 Apr 2010 12:20:00 -0600 diff -rupN wine-1.5.19/configure wine-silverlight-1.5.19/configure --- wine-1.5.19/configure 2012-12-07 11:17:32.000000000 -0800 +++ wine-silverlight-1.5.19/configure 2012-12-20 18:16:39.102926747 -0800 @@ -134,31 +136,6 @@ export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH -# Use a proper internal environment variable to ensure we don't fall - # into an infinite loop, continuously re-executing ourselves. - if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then - _as_can_reexec=no; export _as_can_reexec; - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 - fi - # We don't want this to propagate to other subprocesses. - { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh @@ -192,8 +169,7 @@ if ( set x; as_fn_ret_success y && test else exitcode=1; echo positional parameters were not saved. fi -test x\$exitcode = x0 || exit 1 -test -x / || exit 1" +test x\$exitcode = x0 || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && @@ -238,25 +214,21 @@ IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : - export CONFIG_SHELL - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 + # We cannot yet assume a decent shell, so we have to provide a + # neutralization value for shells without unset; and this also + # works around shells that cannot unset nonexistent variables. + # Preserve -v and -x to the replacement shell. + BASH_ENV=/dev/null + ENV=/dev/null + (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV + export CONFIG_SHELL + case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; + esac + exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} fi if test x$as_have_required = xno; then : @@ -359,14 +331,6 @@ $as_echo X"$as_dir" | } # as_fn_mkdir_p - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take @@ -488,10 +452,6 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - # If we had to re-execute with $CONFIG_SHELL, we're ensured to have - # already done that, so ensure we don't try to do so again and fall - # in an infinite loop. This has already happened in practice. - _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). @@ -526,16 +486,16 @@ if (echo >conf$$.file) 2>/dev/null; then # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. + # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' + as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else - as_ln_s='cp -pR' + as_ln_s='cp -p' fi else - as_ln_s='cp -pR' + as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null @@ -547,8 +507,28 @@ else as_mkdir_p=false fi -as_test_x='test -x' -as_executable_p=as_fn_executable_p +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -1315,6 +1295,8 @@ target=$target_alias if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe + $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used" >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi @@ -1733,7 +1715,7 @@ $as_echo "$ac_try_echo"; } >&5 test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || - test -x conftest$ac_exeext + $as_test_x conftest$ac_exeext }; then : ac_retval=0 else @@ -2950,7 +2932,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2990,7 +2972,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3043,7 +3025,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3084,7 +3066,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue @@ -3142,7 +3124,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3186,7 +3168,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3632,7 +3614,8 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ /* end confdefs.h. */ #include #include -struct stat; +#include +#include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); @@ -3745,7 +3728,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3789,7 +3772,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3991,7 +3974,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CPPBIN="${ac_tool_prefix}cpp" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4031,7 +4014,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CPPBIN="cpp" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4266,7 +4249,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_FLEX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4331,7 +4314,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_BISON="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4380,7 +4363,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4424,7 +4407,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4480,7 +4463,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4520,7 +4503,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4582,7 +4565,7 @@ do for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in @@ -4648,7 +4631,7 @@ do for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in @@ -4714,7 +4697,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_LDCONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4774,7 +4757,7 @@ case $as_dir/ in #(( # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. @@ -4853,7 +4836,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_LINT="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4901,7 +4884,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_FONTFORGE="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4944,7 +4927,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_PKG_CONFIG="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4987,7 +4970,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RSVG="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5030,7 +5013,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CONVERT="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5073,7 +5056,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ICOTOOL="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5116,7 +5099,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_MSGFMT="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5536,8 +5519,6 @@ _ACEOF esac rm -rf conftest* fi - - fi @@ -5830,6 +5811,7 @@ for ac_header in \ arpa/inet.h \ arpa/nameser.h \ asm/types.h \ + attr/xattr.h \ capi20.h \ curses.h \ direct.h \ @@ -6322,7 +6304,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_LDD="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6365,7 +6347,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6405,7 +6387,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6457,7 +6439,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DLLWRAP="${ac_tool_prefix}dllwrap" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6497,7 +6479,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DLLWRAP="dllwrap" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6848,9 +6830,10 @@ if test $ac_cv_cflags__fPIC__shared__Wl_ fi echo '{ global: *; };' >conftest.map - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -fPIC -shared -Wl,--version-script=conftest.map" >&5 + as_ac_var=`$as_echo "ac_cv_cflags_-fPIC -shared -Wl,--version-script=conftest.map" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -fPIC -shared -Wl,--version-script=conftest.map" >&5 $as_echo_n "checking whether the compiler supports -fPIC -shared -Wl,--version-script=conftest.map... " >&6; } -if ${ac_cv_cflags__fPIC__shared__Wl___version_script_conftest_map+:} false; then : +if eval \${$as_ac_var+:} false; then : $as_echo_n "(cached) " >&6 else ac_wine_try_cflags_saved=$CFLAGS @@ -6860,17 +6843,18 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ int main(int argc, char **argv) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - ac_cv_cflags__fPIC__shared__Wl___version_script_conftest_map=yes + eval "$as_ac_var=yes" else - ac_cv_cflags__fPIC__shared__Wl___version_script_conftest_map=no + eval "$as_ac_var=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CFLAGS=$ac_wine_try_cflags_saved fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cflags__fPIC__shared__Wl___version_script_conftest_map" >&5 -$as_echo "$ac_cv_cflags__fPIC__shared__Wl___version_script_conftest_map" >&6; } -if test $ac_cv_cflags__fPIC__shared__Wl___version_script_conftest_map = yes; then : +eval ac_res=\$$as_ac_var + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test `eval 'as_val=${'$as_ac_var'};$as_echo "$as_val"'` = yes; then : LDSHARED="$LDSHARED \$(VERSCRIPT:%=-Wl,--version-script=%)" fi rm -f conftest.map @@ -6988,9 +6972,10 @@ fi case $host_cpu in *i[3456789]86* | x86_64) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -Wl,--section-start,.interp=0x7bf00400" >&5 + as_ac_var=`$as_echo "ac_cv_cflags_-Wl,--section-start,.interp=0x7bf00400" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -Wl,--section-start,.interp=0x7bf00400" >&5 $as_echo_n "checking whether the compiler supports -Wl,--section-start,.interp=0x7bf00400... " >&6; } -if ${ac_cv_cflags__Wl___section_start__interp_0x7bf00400+:} false; then : +if eval \${$as_ac_var+:} false; then : $as_echo_n "(cached) " >&6 else ac_wine_try_cflags_saved=$CFLAGS @@ -7000,17 +6985,18 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ int main(int argc, char **argv) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - ac_cv_cflags__Wl___section_start__interp_0x7bf00400=yes + eval "$as_ac_var=yes" else - ac_cv_cflags__Wl___section_start__interp_0x7bf00400=no + eval "$as_ac_var=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CFLAGS=$ac_wine_try_cflags_saved fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cflags__Wl___section_start__interp_0x7bf00400" >&5 -$as_echo "$ac_cv_cflags__Wl___section_start__interp_0x7bf00400" >&6; } -if test $ac_cv_cflags__Wl___section_start__interp_0x7bf00400 = yes; then : +eval ac_res=\$$as_ac_var + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test `eval 'as_val=${'$as_ac_var'};$as_echo "$as_val"'` = yes; then : case $host_os in freebsd* | kfreebsd*-gnu) LDEXECFLAGS="$LDEXECFLAGS -Wl,--section-start,.interp=0x60000400" ;; *) LDEXECFLAGS="$LDEXECFLAGS -Wl,--section-start,.interp=0x7bf00400" ;; @@ -7035,7 +7021,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PRELINK="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7170,7 +7156,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CROSSCC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -9974,7 +9960,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_sane_devel="sane-config" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -10150,7 +10136,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_gphoto2_devel="gphoto2-config" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -10188,7 +10174,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_gphoto2port_devel="gphoto2-port-config" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -10405,7 +10391,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ft_devel="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -16529,16 +16515,16 @@ if (echo >conf$$.file) 2>/dev/null; then # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. + # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' + as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else - as_ln_s='cp -pR' + as_ln_s='cp -p' fi else - as_ln_s='cp -pR' + as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null @@ -16598,16 +16584,28 @@ else as_mkdir_p=false fi - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -as_test_x='test -x' -as_executable_p=as_fn_executable_p +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -16792,7 +16790,7 @@ fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then - set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' diff -rupN wine-1.5.19/configure.ac wine-silverlight-1.5.19/configure.ac --- wine-1.5.19/configure.ac 2012-12-07 11:17:32.000000000 -0800 +++ wine-silverlight-1.5.19/configure.ac 2012-12-20 18:16:39.102926747 -0800 @@ -417,6 +417,7 @@ AC_CHECK_HEADERS(\ arpa/inet.h \ arpa/nameser.h \ asm/types.h \ + attr/xattr.h \ capi20.h \ curses.h \ direct.h \ diff -rupN wine-1.5.19/dlls/advapi32/tests/security.c wine-silverlight-1.5.19/dlls/advapi32/tests/security.c --- wine-1.5.19/dlls/advapi32/tests/security.c 2012-12-07 11:17:32.000000000 -0800 +++ wine-silverlight-1.5.19/dlls/advapi32/tests/security.c 2012-12-20 18:16:39.492900859 -0800 @@ -3155,7 +3155,7 @@ static void test_GetNamedSecurityInfoA(v bret = pGetAce(pDacl, 0, (VOID **)&ace); ok(bret, "Failed to get Current User ACE.\n"); bret = EqualSid(&ace->SidStart, user_sid); - todo_wine ok(bret, "Current User ACE != Current User SID.\n"); + ok(bret, "Current User ACE != Current User SID.\n"); ok(((ACE_HEADER *)ace)->AceFlags == 0, "Current User ACE has unexpected flags (0x%x != 0x0)\n", ((ACE_HEADER *)ace)->AceFlags); ok(ace->Mask == 0x1f01ff, "Current User ACE has unexpected mask (0x%x != 0x1f01ff)\n", @@ -3166,8 +3166,7 @@ static void test_GetNamedSecurityInfoA(v bret = pGetAce(pDacl, 1, (VOID **)&ace); ok(bret, "Failed to get Administators Group ACE.\n"); bret = EqualSid(&ace->SidStart, admin_sid); - todo_wine ok(bret || broken(!bret) /* win2k */, - "Administators Group ACE != Administators Group SID.\n"); + ok(bret || broken(!bret) /* win2k */, "Administators Group ACE != Administators Group SID.\n"); ok(((ACE_HEADER *)ace)->AceFlags == 0, "Administators Group ACE has unexpected flags (0x%x != 0x0)\n", ((ACE_HEADER *)ace)->AceFlags); ok(ace->Mask == 0x1f01ff || broken(ace->Mask == GENERIC_ALL) /* win2k */, @@ -3748,7 +3747,7 @@ static void test_GetSecurityInfo(void) bret = pGetAce(pDacl, 0, (VOID **)&ace); ok(bret, "Failed to get Current User ACE.\n"); bret = EqualSid(&ace->SidStart, user_sid); - todo_wine ok(bret, "Current User ACE != Current User SID.\n"); + ok(bret, "Current User ACE != Current User SID.\n"); ok(((ACE_HEADER *)ace)->AceFlags == 0, "Current User ACE has unexpected flags (0x%x != 0x0)\n", ((ACE_HEADER *)ace)->AceFlags); ok(ace->Mask == 0x1f01ff, "Current User ACE has unexpected mask (0x%x != 0x1f01ff)\n", @@ -3759,7 +3758,7 @@ static void test_GetSecurityInfo(void) bret = pGetAce(pDacl, 1, (VOID **)&ace); ok(bret, "Failed to get Administators Group ACE.\n"); bret = EqualSid(&ace->SidStart, admin_sid); - todo_wine ok(bret, "Administators Group ACE != Administators Group SID.\n"); + ok(bret, "Administators Group ACE != Administators Group SID.\n"); ok(((ACE_HEADER *)ace)->AceFlags == 0, "Administators Group ACE has unexpected flags (0x%x != 0x0)\n", ((ACE_HEADER *)ace)->AceFlags); ok(ace->Mask == 0x1f01ff, "Administators Group ACE has unexpected mask (0x%x != 0x1f01ff)\n", diff -rupN wine-1.5.19/dlls/kernel32/tests/directory.c wine-silverlight-1.5.19/dlls/kernel32/tests/directory.c --- wine-1.5.19/dlls/kernel32/tests/directory.c 2012-12-07 11:17:32.000000000 -0800 +++ wine-silverlight-1.5.19/dlls/kernel32/tests/directory.c 2012-12-20 18:16:39.286247866 -0800 @@ -24,6 +24,15 @@ #include "windef.h" #include "winbase.h" #include "winerror.h" +#include "aclapi.h" + +static DWORD (WINAPI *pGetNamedSecurityInfoA)(LPSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, + PSID*, PSID*, PACL*, PACL*, + PSECURITY_DESCRIPTOR*); +static BOOL (WINAPI *pGetAclInformation)(PACL,LPVOID,DWORD,ACL_INFORMATION_CLASS); +static BOOL (WINAPI *pCreateWellKnownSid)(WELL_KNOWN_SID_TYPE,PSID,PSID,DWORD*); +static BOOL (WINAPI *pAddAccessAllowedAceEx)(PACL, DWORD, DWORD, DWORD, PSID); +static BOOL (WINAPI *pGetAce)(PACL,DWORD,LPVOID*); /* If you change something in these tests, please do the same * for GetSystemDirectory tests. @@ -486,8 +495,166 @@ static void test_SetCurrentDirectoryA(vo ok( GetLastError() == ERROR_PATH_NOT_FOUND, "wrong error %d\n", GetLastError() ); } +static void test_security_attributes(void) +{ + char admin_ptr[sizeof(SID)+sizeof(ULONG)*SID_MAX_SUB_AUTHORITIES], dacl[100], *user; + DWORD sid_size = sizeof(admin_ptr), user_size; + PSID admin_sid = (PSID) admin_ptr, user_sid; + char sd[SECURITY_DESCRIPTOR_MIN_LENGTH]; + PSECURITY_DESCRIPTOR pSD = &sd; + ACL_SIZE_INFORMATION acl_size; + PACL pDacl = (PACL) &dacl; + ACCESS_ALLOWED_ACE *ace; + SECURITY_ATTRIBUTES sa; + char tmpfile[MAX_PATH]; + char tmpdir[MAX_PATH]; + HANDLE token, hTemp; + struct _SID *owner; + BOOL bret = TRUE; + DWORD error; + + if (!pGetNamedSecurityInfoA || !pCreateWellKnownSid) + { + win_skip("Required functions are not available\n"); + return; + } + + if (!OpenThreadToken(GetCurrentThread(), TOKEN_READ, TRUE, &token)) + { + if (GetLastError() != ERROR_NO_TOKEN) bret = FALSE; + else if (!OpenProcessToken(GetCurrentProcess(), TOKEN_READ, &token)) bret = FALSE; + } + if (!bret) + { + win_skip("Failed to get current user token\n"); + return; + } + bret = GetTokenInformation(token, TokenUser, NULL, 0, &user_size); + ok(!bret && (GetLastError() == ERROR_INSUFFICIENT_BUFFER), + "GetTokenInformation(TokenUser) failed with error %d\n", GetLastError()); + user = HeapAlloc(GetProcessHeap(), 0, user_size); + bret = GetTokenInformation(token, TokenUser, user, user_size, &user_size); + ok(bret, "GetTokenInformation(TokenUser) failed with error %d\n", GetLastError()); + CloseHandle( token ); + user_sid = ((TOKEN_USER *)user)->User.Sid; + + sa.nLength = sizeof(sa); + sa.lpSecurityDescriptor = pSD; + sa.bInheritHandle = TRUE; + InitializeSecurityDescriptor(pSD, SECURITY_DESCRIPTOR_REVISION); + pCreateWellKnownSid(WinBuiltinAdministratorsSid, NULL, admin_sid, &sid_size); + bret = InitializeAcl(pDacl, sizeof(dacl), ACL_REVISION); + ok(bret, "Failed to initialize ACL.\n"); + bret = pAddAccessAllowedAceEx(pDacl, ACL_REVISION, OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE, + GENERIC_ALL, user_sid); + ok(bret, "Failed to add Current User to ACL.\n"); + bret = pAddAccessAllowedAceEx(pDacl, ACL_REVISION, OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE, + GENERIC_ALL, admin_sid); + ok(bret, "Failed to add Administrator Group to ACL.\n"); + bret = SetSecurityDescriptorDacl(pSD, TRUE, pDacl, FALSE); + ok(bret, "Failed to add ACL to security desciptor.\n"); + + GetTempPathA(MAX_PATH, tmpdir); + lstrcatA(tmpdir, "Please Remove Me"); + bret = CreateDirectoryA(tmpdir, &sa); + ok(bret == TRUE, "CreateDirectoryA(%s) failed err=%d\n", tmpdir, GetLastError()); + + SetLastError(0xdeadbeef); + error = pGetNamedSecurityInfoA(tmpdir, SE_FILE_OBJECT, + OWNER_SECURITY_INFORMATION|DACL_SECURITY_INFORMATION, (PSID*)&owner, + NULL, &pDacl, NULL, &pSD); + if (error != ERROR_SUCCESS && (GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)) + { + win_skip("GetNamedSecurityInfoA is not implemented\n"); + goto done; + } + ok(!error, "GetNamedSecurityInfo failed with error %d\n", error); + + bret = pGetAclInformation(pDacl, &acl_size, sizeof(acl_size), AclSizeInformation); + ok(bret, "GetAclInformation failed\n"); + ok(acl_size.AceCount == 2, "GetAclInformation returned unexpected entry count (%d != 2).\n", + acl_size.AceCount); + if (acl_size.AceCount > 0) + { + bret = pGetAce(pDacl, 0, (VOID **)&ace); + ok(bret, "Failed to get Current User ACE.\n"); + bret = EqualSid(&ace->SidStart, user_sid); + ok(bret, "Current User ACE != Current User SID.\n"); + ok(((ACE_HEADER *)ace)->AceFlags == (OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE), + "Current User ACE has unexpected flags (0x%x != 0x03)\n", ((ACE_HEADER *)ace)->AceFlags); + ok(ace->Mask == 0x1f01ff, "Current User ACE has unexpected mask (0x%x != 0x1f01ff)\n", + ace->Mask); + } + if (acl_size.AceCount > 1) + { + bret = pGetAce(pDacl, 1, (VOID **)&ace); + ok(bret, "Failed to get Administators Group ACE.\n"); + bret = EqualSid(&ace->SidStart, admin_sid); + ok(bret, "Administators Group ACE != Administators Group SID.\n"); + ok(((ACE_HEADER *)ace)->AceFlags == (OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE), + "Administators Group ACE has unexpected flags (0x%x != 0x03)\n", ((ACE_HEADER *)ace)->AceFlags); + ok(ace->Mask == 0x1f01ff, "Administators Group ACE has unexpected mask (0x%x != 0x1f01ff)\n", + ace->Mask); + } + + /* Test inheritance of ACLs */ + strcpy(tmpfile, tmpdir); + lstrcatA(tmpfile, "/tmpfile"); + hTemp = CreateFileA(tmpfile, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_NEW, + FILE_FLAG_DELETE_ON_CLOSE, NULL); + error = pGetNamedSecurityInfoA(tmpfile, SE_FILE_OBJECT, + OWNER_SECURITY_INFORMATION|DACL_SECURITY_INFORMATION, (PSID*)&owner, + NULL, &pDacl, NULL, &pSD); + ok(error == ERROR_SUCCESS, "Failed to get permissions on file.\n"); + bret = pGetAclInformation(pDacl, &acl_size, sizeof(acl_size), AclSizeInformation); + ok(bret, "GetAclInformation failed\n"); + ok(acl_size.AceCount == 2, "GetAclInformation returned unexpected entry count (%d != 2).\n", + acl_size.AceCount); + if (acl_size.AceCount > 0) + { + bret = pGetAce(pDacl, 0, (VOID **)&ace); + ok(bret, "Inherited Failed to get Current User ACE.\n"); + bret = EqualSid(&ace->SidStart, user_sid); + ok(bret, "Inherited Current User ACE != Current User SID.\n"); + ok(((ACE_HEADER *)ace)->AceFlags == INHERITED_ACE, + "Inherited Current User ACE has unexpected flags (0x%x != 0x10)\n", ((ACE_HEADER *)ace)->AceFlags); + ok(ace->Mask == 0x1f01ff, "Current User ACE has unexpected mask (0x%x != 0x1f01ff)\n", + ace->Mask); + } + if (acl_size.AceCount > 1) + { + bret = pGetAce(pDacl, 1, (VOID **)&ace); + ok(bret, "Inherited Failed to get Administators Group ACE.\n"); + bret = EqualSid(&ace->SidStart, admin_sid); + ok(bret, "Inherited Administators Group ACE != Administators Group SID.\n"); + ok(((ACE_HEADER *)ace)->AceFlags == INHERITED_ACE, + "Inherited Administators Group ACE has unexpected flags (0x%x != 0x10)\n", ((ACE_HEADER *)ace)->AceFlags); + ok(ace->Mask == 0x1f01ff, "Administators Group ACE has unexpected mask (0x%x != 0x1f01ff)\n", + ace->Mask); + } + CloseHandle(hTemp); + +done: + HeapFree(GetProcessHeap(), 0, user); + bret = RemoveDirectoryA(tmpdir); + ok(bret == TRUE, "RemoveDirectoryA should always succeed\n"); +} + +void init(void) +{ + HMODULE hmod = GetModuleHandle("advapi32.dll"); + + pGetNamedSecurityInfoA = (void *)GetProcAddress(hmod, "GetNamedSecurityInfoA"); + pAddAccessAllowedAceEx = (void *)GetProcAddress(hmod, "AddAccessAllowedAceEx"); + pCreateWellKnownSid = (void *)GetProcAddress(hmod, "CreateWellKnownSid"); + pGetAclInformation = (void *)GetProcAddress(hmod, "GetAclInformation"); + pGetAce = (void *)GetProcAddress(hmod, "GetAce"); +} + START_TEST(directory) { + init(); + test_GetWindowsDirectoryA(); test_GetWindowsDirectoryW(); @@ -501,4 +668,6 @@ START_TEST(directory) test_RemoveDirectoryW(); test_SetCurrentDirectoryA(); + + test_security_attributes(); } diff -rupN wine-1.5.19/dlls/Makefile wine-silverlight-1.5.19/dlls/Makefile --- wine-1.5.19/dlls/Makefile 1969-12-31 16:00:00.000000000 -0800 +++ wine-silverlight-1.5.19/dlls/Makefile 2012-12-20 18:16:39.386241250 -0800 @@ -0,0 +1,1620 @@ +# Automatically generated by make_makefiles; DO NOT EDIT!! + +TOPSRCDIR = .. +TOPOBJDIR = .. +SRCDIR = . + + +INSTALLDIRS = $(DESTDIR)$(dlldir) + +DLLSUBDIRS = \ + acledit \ + aclui \ + activeds \ + actxprxy \ + advapi32 \ + advpack \ + amstream \ + appwiz.cpl \ + atl \ + authz \ + avicap32 \ + avifil32 \ + avifile.dll16 \ + avrt \ + bcrypt \ + browseui \ + cabinet \ + capi2032 \ + cards \ + cfgmgr32 \ + clusapi \ + comcat \ + comctl32 \ + comdlg32 \ + comm.drv16 \ + commdlg.dll16 \ + compobj.dll16 \ + compstui \ + credui \ + crtdll \ + crypt32 \ + cryptdlg \ + cryptdll \ + cryptnet \ + cryptui \ + ctapi32 \ + ctl3d.dll16 \ + ctl3d32 \ + ctl3dv2.dll16 \ + d3d10 \ + d3d10core \ + d3d8 \ + d3d9 \ + d3dim \ + d3drm \ + d3dx9_24 \ + d3dx9_25 \ + d3dx9_26 \ + d3dx9_27 \ + d3dx9_28 \ + d3dx9_29 \ + d3dx9_30 \ + d3dx9_31 \ + d3dx9_32 \ + d3dx9_33 \ + d3dx9_34 \ + d3dx9_35 \ + d3dx9_36 \ + d3dx9_37 \ + d3dx9_38 \ + d3dx9_39 \ + d3dx9_40 \ + d3dx9_41 \ + d3dx9_42 \ + d3dxof \ + dbghelp \ + dciman32 \ + ddeml.dll16 \ + ddraw \ + ddrawex \ + devenum \ + dinput \ + dinput8 \ + dispdib.dll16 \ + display.drv16 \ + dmband \ + dmcompos \ + dmime \ + dmloader \ + dmscript \ + dmstyle \ + dmsynth \ + dmusic \ + dmusic32 \ + dnsapi \ + dplay \ + dplayx \ + dpnaddr \ + dpnet \ + dpnhpast \ + dpnlobby \ + dpwsockx \ + drmclien \ + dsound \ + dssenh \ + dswave \ + dwmapi \ + dxdiagn \ + dxgi \ + faultrep \ + fltlib \ + fusion \ + fwpuclnt \ + gdi.exe16 \ + gdi32 \ + gdiplus \ + glu32 \ + gphoto2.ds \ + gpkcsp \ + hal \ + hhctrl.ocx \ + hid \ + hlink \ + hnetcfg \ + httpapi \ + iccvid \ + icmp \ + ifsmgr.vxd \ + imaadp32.acm \ + imagehlp \ + imm.dll16 \ + imm32 \ + inetcomm \ + inetmib1 \ + infosoft \ + initpki \ + inkobj \ + inseng \ + iphlpapi \ + itircl \ + itss \ + jscript \ + kernel32 \ + keyboard.drv16 \ + loadperf \ + localspl \ + localui \ + lz32 \ + lzexpand.dll16 \ + mapi32 \ + mciavi32 \ + mcicda \ + mciqtz32 \ + mciseq \ + mciwave \ + midimap \ + mlang \ + mmdevapi \ + mmdevldr.vxd \ + mmsystem.dll16 \ + monodebg.vxd \ + mountmgr.sys \ + mouse.drv16 \ + mpr \ + mprapi \ + msacm.dll16 \ + msacm32.drv \ + msacm32 \ + msadp32.acm \ + mscat32 \ + mscms \ + mscoree \ + msctf \ + msdaps \ + msdmo \ + msftedit \ + msg711.acm \ + msgsm32.acm \ + mshtml.tlb \ + mshtml \ + msi \ + msimg32 \ + msimtf \ + msisip \ + msisys.ocx \ + msnet32 \ + msrle32 \ + mssign32 \ + mssip32 \ + mstask \ + msvcirt \ + msvcr71 \ + msvcrt \ + msvcrt20 \ + msvcrt40 \ + msvcrtd \ + msvfw32 \ + msvidc32 \ + msvideo.dll16 \ + mswsock \ + msxml3 \ + nddeapi \ + netapi32 \ + newdev \ + ntdll \ + ntdsapi \ + ntoskrnl.exe \ + ntprint \ + objsel \ + odbc32 \ + odbccp32 \ + ole2.dll16 \ + ole2conv.dll16 \ + ole2disp.dll16 \ + ole2nls.dll16 \ + ole2prox.dll16 \ + ole2thk.dll16 \ + ole32 \ + oleacc \ + oleaut32 \ + olecli.dll16 \ + olecli32 \ + oledb32 \ + oledlg \ + olepro32 \ + olesvr.dll16 \ + olesvr32 \ + olethk32 \ + openal32 \ + opengl32 \ + pdh \ + pidgen \ + powrprof \ + printui \ + propsys \ + psapi \ + pstorec \ + qcap \ + qedit \ + qmgr \ + qmgrprxy \ + quartz \ + query \ + rasapi16.dll16 \ + rasapi32 \ + rasdlg \ + resutils \ + riched20 \ + riched32 \ + rpcrt4 \ + rsabase \ + rsaenh \ + rtutils \ + sane.ds \ + sccbase \ + schannel \ + secur32 \ + security \ + sensapi \ + serialui \ + setupapi \ + setupx.dll16 \ + sfc \ + sfc_os \ + shdoclc \ + shdocvw \ + shell.dll16 \ + shell32 \ + shfolder \ + shlwapi \ + slbcsp \ + slc \ + snmpapi \ + softpub \ + sound.drv16 \ + spoolss \ + stdole2.tlb \ + stdole32.tlb \ + sti \ + storage.dll16 \ + stress.dll16 \ + svrapi \ + sxs \ + system.drv16 \ + t2embed \ + tapi32 \ + toolhelp.dll16 \ + traffic \ + twain.dll16 \ + twain_32 \ + typelib.dll16 \ + unicows \ + updspapi \ + url \ + urlmon \ + user32 \ + userenv \ + usp10 \ + uxtheme \ + vdhcp.vxd \ + vdmdbg \ + ver.dll16 \ + version \ + vmm.vxd \ + vnbt.vxd \ + vnetbios.vxd \ + vtdapi.vxd \ + vwin32.vxd \ + w32skrnl \ + w32sys.dll16 \ + wbemprox \ + wiaservc \ + win32s16.dll16 \ + win87em.dll16 \ + winaspi.dll16 \ + windebug.dll16 \ + windowscodecs \ + winealsa.drv \ + wineaudioio.drv \ + winecoreaudio.drv \ + wined3d \ + winedos \ + wineesd.drv \ + winejack.drv \ + winejoystick.drv \ + winemapi \ + winemp3.acm \ + winenas.drv \ + wineoss.drv \ + wineps.drv \ + wineps16.drv16 \ + winex11.drv \ + wing.dll16 \ + wing32 \ + winhttp \ + wininet \ + winmm \ + winnls.dll16 \ + winnls32 \ + winscard \ + winsock.dll16 \ + winspool.drv \ + wintab.dll16 \ + wintab32 \ + wintrust \ + wldap32 \ + wmi \ + wmiutils \ + wnaspi32 \ + wow32 \ + ws2_32 \ + wsock32 \ + wtsapi32 \ + wuapi \ + wuaueng \ + xinput1_1 \ + xinput1_2 \ + xinput1_3 \ + xinput9_1_0 \ + xmllite +IMPLIBSUBDIRS = \ + adsiid \ + dxerr8 \ + dxerr9 \ + dxguid \ + strmiids \ + uuid \ + winecrt0 +TESTSUBDIRS = \ + advapi32/tests \ + advpack/tests \ + amstream/tests \ + browseui/tests \ + cabinet/tests \ + comcat/tests \ + comctl32/tests \ + comdlg32/tests \ + credui/tests \ + crypt32/tests \ + cryptnet/tests \ + cryptui/tests \ + d3d10/tests \ + d3d10core/tests \ + d3d8/tests \ + d3d9/tests \ + d3drm/tests \ + d3dx9_36/tests \ + d3dxof/tests \ + ddraw/tests \ + ddrawex/tests \ + dinput/tests \ + dnsapi/tests \ + dplayx/tests \ + dsound/tests \ + dxgi/tests \ + fusion/tests \ + gdi32/tests \ + gdiplus/tests \ + hlink/tests \ + imagehlp/tests \ + imm32/tests \ + inetcomm/tests \ + inetmib1/tests \ + infosoft/tests \ + iphlpapi/tests \ + itss/tests \ + jscript/tests \ + kernel32/tests \ + localspl/tests \ + localui/tests \ + lz32/tests \ + mapi32/tests \ + mlang/tests \ + mmdevapi/tests \ + msacm32/tests \ + mscms/tests \ + msctf/tests \ + mshtml/tests \ + msi/tests \ + mstask/tests \ + msvcrt/tests \ + msvcrtd/tests \ + msvfw32/tests \ + msxml3/tests \ + netapi32/tests \ + ntdll/tests \ + ntdsapi/tests \ + ntprint/tests \ + odbccp32/tests \ + ole32/tests \ + oleacc/tests \ + oleaut32/tests \ + oledb32/tests \ + opengl32/tests \ + pdh/tests \ + psapi/tests \ + qedit/tests \ + qmgr/tests \ + quartz/tests \ + rasapi32/tests \ + riched20/tests \ + riched32/tests \ + rpcrt4/tests \ + rsaenh/tests \ + schannel/tests \ + secur32/tests \ + serialui/tests \ + setupapi/tests \ + shdocvw/tests \ + shell32/tests \ + shlwapi/tests \ + snmpapi/tests \ + spoolss/tests \ + sti/tests \ + twain_32/tests \ + urlmon/tests \ + user32/tests \ + userenv/tests \ + usp10/tests \ + uxtheme/tests \ + version/tests \ + windowscodecs/tests \ + winhttp/tests \ + wininet/tests \ + winmm/tests \ + winspool.drv/tests \ + wintab32/tests \ + wintrust/tests \ + wldap32/tests \ + ws2_32/tests \ + xinput1_3/tests +SUBDIRS = $(DLLSUBDIRS) $(IMPLIBSUBDIRS) $(TESTSUBDIRS) +BUILDSUBDIRS = $(DLLSUBDIRS) $(TESTSUBDIRS) +INSTALLSUBDIRS = $(DLLSUBDIRS) $(IMPLIBSUBDIRS) +DOCSUBDIRS = $(DLLSUBDIRS) + +# 16-bit dlls + +WIN16_FILES = \ + krnl386.exe16 \ + user.exe16 \ + wprocs.dll16 + +# Global rules shared by all makefiles -*-Makefile-*- +# +# Each individual makefile must define the following variables: +# TOPSRCDIR : top-level source directory +# TOPOBJDIR : top-level object directory +# SRCDIR : source directory for this module +# MODULE : name of the module being built +# +# Each individual makefile may define the following additional variables: +# C_SRCS : C sources for the module +# C_SRCS16 : 16-bit C sources for the module +# RC_SRCS : resource source files +# EXTRA_SRCS : extra source files for make depend +# EXTRA_OBJS : extra object files +# IMPORTS : dlls to import +# DELAYIMPORTS : dlls to import in delayed mode +# SUBDIRS : subdirectories that contain a Makefile +# EXTRASUBDIRS : subdirectories that do not contain a Makefile +# INSTALLSUBDIRS : subdirectories to run make install/uninstall into +# MODCFLAGS : extra CFLAGS for this module + +# First some useful definitions + +SHELL = /bin/sh +CC = ccache gcc -m32 +CFLAGS = -g -O2 +CPPFLAGS = +LIBS = +BISON = bison +FLEX = flex +EXEEXT = +OBJEXT = o +LIBEXT = so +DLLEXT = .so +TOOLSEXT = +IMPLIBEXT = def +LDSHARED = $(CC) -shared $(SONAME:%=-Wl,-soname,%) $(VERSCRIPT:%=-Wl,--version-script=%) +DLLTOOL = i586-mingw32msvc-dlltool +DLLWRAP = +AR = ar +ARFLAGS = rc +RANLIB = ranlib +STRIP = strip +LN = ln +LN_S = ln -s +TOOLSDIR = $(TOPOBJDIR) +LDFLAGS = +PRELINK = /usr/sbin/prelink +RM = rm -f +MV = mv +LINT = +LINTFLAGS = +FONTFORGE = fontforge +RSVG = false +ICOTOOL = icotool +FAKEEXT = $(DLLEXT:.so=.fake) +INCLUDES = -I$(SRCDIR) -I. -I$(TOPSRCDIR)/include -I$(TOPOBJDIR)/include $(EXTRAINCL) +EXTRACFLAGS = -Wall -pipe -fno-strict-aliasing -Wdeclaration-after-statement -Wstrict-prototypes -Wwrite-strings -Wtype-limits -Wpointer-arith +ALLCFLAGS = $(INCLUDES) $(DEFS) $(DLLFLAGS) $(EXTRACFLAGS) $(CPPFLAGS) $(CFLAGS) $(MODCFLAGS) +ALLLINTFLAGS = $(INCLUDES) $(DEFS) $(LINTFLAGS) +IDLFLAGS = $(INCLUDES) $(DEFS) $(EXTRAIDLFLAGS) +TARGETFLAGS = -m32 +WINEBUILDFLAGS = $(TARGETFLAGS) $(DLLFLAGS) +MKINSTALLDIRS= $(TOPSRCDIR)/tools/mkinstalldirs -m 755 +WINAPI_CHECK = $(TOPSRCDIR)/tools/winapi/winapi_check +WINEWRAPPER = $(TOPSRCDIR)/tools/winewrapper +C2MAN = $(TOPSRCDIR)/tools/c2man.pl +RUNTEST = $(TOPSRCDIR)/tools/runtest +WINEBUILD = $(TOOLSDIR)/tools/winebuild/winebuild$(TOOLSEXT) +MAKEDEP = $(TOOLSDIR)/tools/makedep$(TOOLSEXT) +MAKECTESTS = $(TOOLSDIR)/tools/make_ctests$(TOOLSEXT) +WRC = $(TOOLSDIR)/tools/wrc/wrc$(TOOLSEXT) +WMC = $(TOOLSDIR)/tools/wmc/wmc$(TOOLSEXT) +WIDL = $(TOOLSDIR)/tools/widl/widl$(TOOLSEXT) +WINEGCC = $(TOOLSDIR)/tools/winegcc/winegcc $(TARGETFLAGS) -B$(TOOLSDIR)/tools/winebuild --sysroot=$(TOPOBJDIR) +RELPATH = $(TOOLSDIR)/tools/relpath$(TOOLSEXT) +SFNT2FNT = $(TOOLSDIR)/tools/sfnt2fnt$(TOOLSEXT) +RC = $(WRC) +RC16 = $(WRC) +RCFLAGS = --nostdinc $(INCLUDES) $(DEFS) $(EXTRARCFLAGS) +RC16FLAGS = -O res16 $(RCFLAGS) +LDPATH = LD_LIBRARY_PATH="$(TOOLSDIR)/libs/wine:$$LD_LIBRARY_PATH" +DLLDIR = $(TOPOBJDIR)/dlls +LIBPORT = $(TOPOBJDIR)/libs/port/libwine_port.a +LIBWPP = $(TOPOBJDIR)/libs/wpp/libwpp.a +LIBWINE = -L$(TOPOBJDIR)/libs/wine -lwine +LDRPATH_INSTALL = -Wl,--rpath,\$$ORIGIN/`$(RELPATH) $(bindir) $(libdir)` -Wl,--enable-new-dtags +LDRPATH_LOCAL = -Wl,--rpath,\$$ORIGIN/$(TOPOBJDIR)/libs/wine + + + +# Installation infos + +INSTALL = /usr/bin/install -c $(INSTALL_FLAGS) +INSTALL_PROGRAM = ${INSTALL} $(INSTALL_PROGRAM_FLAGS) +INSTALL_SCRIPT = ${INSTALL} $(INSTALL_SCRIPT_FLAGS) +INSTALL_DATA = ${INSTALL} -m 644 $(INSTALL_DATA_FLAGS) +prefix = /usr/local +exec_prefix = ${prefix} +bindir = ${exec_prefix}/bin +libdir = ${exec_prefix}/lib +datarootdir = ${prefix}/share +datadir = ${datarootdir} +infodir = ${datarootdir}/info +mandir = ${datarootdir}/man +sysconfdir = ${prefix}/etc +includedir = ${prefix}/include/wine +dlldir = ${exec_prefix}/lib/wine +fakedlldir = $(dlldir)/fakedlls +prog_manext = 1 +api_manext = 3w +conf_manext = 5 +CLEAN_FILES = *.o *.a *.so *.ln *.res *.fake *.$(LIBEXT) \\\#*\\\# *~ *% .\\\#* *.bak *.orig *.rej *.flc core + +IDL_GEN_C_SRCS = $(IDL_C_SRCS:.idl=_c.c) $(IDL_I_SRCS:.idl=_i.c) \ + $(IDL_P_SRCS:.idl=_p.c) $(IDL_S_SRCS:.idl=_s.c) +IDL_GEN_HEADERS = $(IDL_H_SRCS:.idl=.h) $(IDL_C_SRCS:.idl=.h) $(IDL_I_SRCS:.idl=.h) \ + $(IDL_P_SRCS:.idl=.h) $(IDL_S_SRCS:.idl=.h) + +CLEAN_TARGETS = $(IDL_GEN_C_SRCS) $(IDL_GEN_HEADERS) $(IDL_TLB_SRCS:.idl=.tlb) $(IDL_P_SRCS:%=dlldata.c) \ + $(BISON_SRCS:.y=.tab.c) $(BISON_SRCS:.y=.tab.h) $(LEX_SRCS:.l=.yy.c) $(MC_SRCS:.mc=.mc.rc) + +OBJS = $(C_SRCS:.c=.o) $(BISON_SRCS:.y=.tab.o) $(LEX_SRCS:.l=.yy.o) $(IDL_GEN_C_SRCS:.c=.o) \ + $(RC_SRCS:.rc=.res) $(MC_SRCS:.mc=.mc.res) $(EXTRA_OBJS) + +LINTS = $(C_SRCS:.c=.ln) + +# 'all' target first in case the enclosing Makefile didn't define any target + +all: + +filter: dummy + @$(TOPSRCDIR)/tools/winapi/make_filter --make $(MAKE) all + +.PHONY: all filter + +# Implicit rules + +.SUFFIXES: .mc .rc .mc.rc .res .spec .spec.o .idl .tlb .h .y .l .tab.c .tab.h .yy.c .ok .man.in .man _c.c _i.c _p.c _s.c # .sfd .ttf .svg .ico + +.c.o: + $(CC) -c $(ALLCFLAGS) -o $@ $< + +.y.tab.c: + $(BISON) $(BISONFLAGS) -p $*_ -o $@ $< + +.y.tab.h: + $(BISON) $(BISONFLAGS) -p $*_ -o $*.tab.c -d $< + +.l.yy.c: + $(FLEX) $(LEXFLAGS) -o$@ $< + +.mc.mc.rc: + $(LDPATH) $(WMC) -i -U -H /dev/null -o $@ $< + +.rc.res: + $(LDPATH) $(RC) $(RCFLAGS) -fo$@ $< + +.spec.spec.o: + $(WINEBUILD) $(WINEBUILDFLAGS) --dll -o $@ --main-module $(MODULE) --export $< + +.idl.h: + $(WIDL) $(IDLFLAGS) -h -H $@ $< + +.idl_c.c: + $(WIDL) $(IDLFLAGS) -c -C $@ $< + +.idl_i.c: + $(WIDL) $(IDLFLAGS) -u -U $@ $< + +.idl_p.c: + $(WIDL) $(IDLFLAGS) -p -P $@ $< + +.idl_s.c: + $(WIDL) $(IDLFLAGS) -s -S $@ $< + +.idl.tlb: + $(WIDL) $(TARGETFLAGS) $(IDLFLAGS) -t -T $@ $< + +.c.ln: + $(LINT) -c $(ALLLINTFLAGS) $< || ( $(RM) $@ && exit 1 ) + +.c.ok: + $(RUNTEST) $(RUNTESTFLAGS) $< && touch $@ + +.sfd.ttf: + $(FONTFORGE) -script $(TOPSRCDIR)/fonts/genttf.ff $< $@ + +.man.in.man: + LC_ALL=C sed -e 's,@bindir\@,$(bindir),g' -e 's,@dlldir\@,$(dlldir),g' -e 's,@PACKAGE_STRING\@,Wine 1.1.35,g' $< >$@ || ($(RM) $@ && false) + +.svg.ico: + $(RSVG) -w 16 -h 16 -f png $< $*-16.png + $(RSVG) -w 32 -h 32 -f png $< $*-32.png + $(RSVG) -w 48 -h 48 -f png $< $*-48.png + $(ICOTOOL) -c -o $@ $*-16.png $*-32.png $*-48.png + $(RM) $*-16.png $*-32.png $*-48.png + +# Rules for IDL files + +dlldata.c: $(WIDL) Makefile.in + $(WIDL) $(IDLFLAGS) --dlldata-only --dlldata=$@ $(IDL_P_SRCS) + +# Rule for linting + +$(MODULE).ln : $(LINTS) + if test "$(LINTS)" ; \ + then \ + $(LINT) $(ALLLINTFLAGS) -o$(MODULE) $(LINTS) ; \ + $(MV) llib-l$(MODULE).ln $(MODULE).ln ; \ + else \ + $(LINT) $(ALLLINTFLAGS) -C$(MODULE) /dev/null ; \ + fi + +lint:: $(MODULE).ln + +# Rules for Windows API checking + +winapi_check:: dummy + $(WINAPI_CHECK) $(WINAPI_CHECK_FLAGS) $(WINAPI_CHECK_EXTRA_FLAGS) . + +.PHONY: winapi_check + +# Rules for dependencies + +DEPEND_SRCS = $(C_SRCS) $(C_SRCS16) $(RC_SRCS) $(RC_SRCS16) $(MC_SRCS) \ + $(IDL_H_SRCS) $(IDL_C_SRCS) $(IDL_I_SRCS) $(IDL_P_SRCS) $(IDL_S_SRCS) \ + $(IDL_GEN_C_SRCS) $(IDL_TLB_SRCS) $(IDL_TLB_SRCS:.idl=.tlb) \ + $(BISON_SRCS) $(LEX_SRCS) $(EXTRA_SRCS) + +$(SUBDIRS:%=%/__depend__): dummy + @cd `dirname $@` && $(MAKE) depend + +depend: $(SUBDIRS:%=%/__depend__) dummy + $(MAKEDEP) $(MAKEDEPFLAGS) -C$(SRCDIR) -S$(TOPSRCDIR) -T$(TOPOBJDIR) $(EXTRAINCL) $(DEPEND_SRCS) + +.PHONY: depend $(SUBDIRS:%=%/__depend__) + +# Rules for cleaning + +$(SUBDIRS:%=%/__clean__): dummy + @cd `dirname $@` && $(MAKE) clean + +$(EXTRASUBDIRS:%=%/__clean__): dummy + -cd `dirname $@` && $(RM) $(CLEAN_FILES) + +clean:: $(SUBDIRS:%=%/__clean__) $(EXTRASUBDIRS:%=%/__clean__) + $(RM) $(CLEAN_FILES) $(CLEAN_TARGETS) $(PROGRAMS) $(MANPAGES) + +.PHONY: clean $(SUBDIRS:%=%/__clean__) $(EXTRASUBDIRS:%=%/__clean__) + +# Rules for installing + +$(SUBDIRS:%=%/__install__): dummy + @cd `dirname $@` && $(MAKE) install + +$(SUBDIRS:%=%/__install-lib__): dummy + @cd `dirname $@` && $(MAKE) install-lib + +$(SUBDIRS:%=%/__install-dev__): dummy + @cd `dirname $@` && $(MAKE) install-dev + +$(SUBDIRS:%=%/__uninstall__): dummy + @cd `dirname $@` && $(MAKE) uninstall + +install:: $(INSTALLSUBDIRS:%=%/__install__) dummy +install-lib:: $(INSTALLSUBDIRS:%=%/__install-lib__) dummy +install-dev:: $(INSTALLSUBDIRS:%=%/__install-dev__) dummy +uninstall:: $(INSTALLSUBDIRS:%=%/__uninstall__) dummy + +$(INSTALLDIRS): + $(MKINSTALLDIRS) $@ + +.PHONY: install install-lib install-dev uninstall \ + $(SUBDIRS:%=%/__install__) $(SUBDIRS:%=%/__uninstall__) \ + $(SUBDIRS:%=%/__install-lib__) $(SUBDIRS:%=%/__install-dev__) + +# Rules for testing + +$(TESTSUBDIRS:%=%/__test__): dummy + @cd `dirname $@` && $(MAKE) test + +$(TESTSUBDIRS:%=%/__crosstest__): dummy + @cd `dirname $@` && $(MAKE) crosstest + +$(TESTSUBDIRS:%=%/__testclean__): dummy + @cd `dirname $@` && $(MAKE) testclean + +check test:: $(TESTSUBDIRS:%=%/__test__) dummy + +crosstest:: $(TESTSUBDIRS:%=%/__crosstest__) dummy + +testclean:: $(TESTSUBDIRS:%=%/__testclean__) dummy + +.PHONY: check test testclean crosstest $(TESTSUBDIRS:%=%/__test__) $(TESTSUBDIRS:%=%/__crosstest__) $(TESTSUBDIRS:%=%/__testclean__) + +# Rules for auto documentation + +$(DOCSUBDIRS:%=%/__man__): dummy + @cd `dirname $@` && $(MAKE) man + +$(DOCSUBDIRS:%=%/__doc_html__): dummy + @cd `dirname $@` && $(MAKE) doc-html + +$(DOCSUBDIRS:%=%/__doc_sgml__): dummy + @cd `dirname $@` && $(MAKE) doc-sgml + +$(DOCSUBDIRS:%=%/__doc_xml__): dummy + @cd `dirname $@` && $(MAKE) doc-xml + +man: $(DOCSUBDIRS:%=%/__man__) +doc-html: $(DOCSUBDIRS:%=%/__doc_html__) +doc-sgml: $(DOCSUBDIRS:%=%/__doc_sgml__) +doc-xml: $(DOCSUBDIRS:%=%/__doc_xml__) + +.PHONY: man doc-html doc-sgml doc-xml $(DOCSUBDIRS:%=%/__man__) $(DOCSUBDIRS:%=%/__doc_html__) $(DOCSUBDIRS:%=%/__doc_sgml__) $(DOCSUBDIRS:%=%/__doc_xml__) + +# Misc. rules + +$(MC_SRCS:.mc=.mc.rc): $(WMC) + +$(IDL_GEN_HEADERS) $(IDL_GEN_C_SRCS) $(IDL_TLB_SRCS:.idl=.tlb): $(WIDL) + +$(RC_SRCS:.rc=.res) $(MC_SRCS:.mc=.mc.res) $(RC_SRCS16:.rc=.res): $(WRC) + +$(SUBDIRS): dummy + @cd $@ && $(MAKE) + +dummy: + +.PHONY: dummy $(SUBDIRS) + +# End of global rules + +# Main target + +all: $(BUILDSUBDIRS) $(WIN16_FILES) + +# Placeholders for 16-bit libraries + +krnl386.exe16: + echo "kernel32.dll" >$@ + +user.exe16: + echo "user32.dll" >$@ + +wprocs.dll16: + echo "winedos.dll" >$@ + +# Import libraries + +STATIC_IMPLIBEXT = $(IMPLIBEXT:def=def.a) + +IMPORT_SYMLINKS = \ + libd3dx9.$(IMPLIBEXT) \ + libwinspool.$(IMPLIBEXT) \ + libxinput.$(IMPLIBEXT) + +IMPORT_LIBS = \ + $(IMPORT_SYMLINKS) \ + adsiid/libadsiid.a \ + dxerr8/libdxerr8.a \ + dxerr9/libdxerr9.a \ + dxguid/libdxguid.a \ + strmiids/libstrmiids.a \ + uuid/libuuid.a \ + winecrt0/libwinecrt0.a \ + aclui/libaclui.$(IMPLIBEXT) \ + activeds/libactiveds.$(IMPLIBEXT) \ + advapi32/libadvapi32.$(IMPLIBEXT) \ + advpack/libadvpack.$(IMPLIBEXT) \ + atl/libatl.$(IMPLIBEXT) \ + avicap32/libavicap32.$(IMPLIBEXT) \ + avifil32/libavifil32.$(IMPLIBEXT) \ + avrt/libavrt.$(IMPLIBEXT) \ + cabinet/libcabinet.$(IMPLIBEXT) \ + capi2032/libcapi2032.$(IMPLIBEXT) \ + cards/libcards.$(IMPLIBEXT) \ + cfgmgr32/libcfgmgr32.$(IMPLIBEXT) \ + clusapi/libclusapi.$(IMPLIBEXT) \ + comctl32/libcomctl32.$(IMPLIBEXT) \ + comdlg32/libcomdlg32.$(IMPLIBEXT) \ + compstui/libcompstui.$(IMPLIBEXT) \ + credui/libcredui.$(IMPLIBEXT) \ + crtdll/libcrtdll.$(IMPLIBEXT) \ + crypt32/libcrypt32.$(IMPLIBEXT) \ + cryptdll/libcryptdll.$(IMPLIBEXT) \ + cryptnet/libcryptnet.$(IMPLIBEXT) \ + cryptui/libcryptui.$(IMPLIBEXT) \ + ctl3d32/libctl3d32.$(IMPLIBEXT) \ + d3d10/libd3d10.$(IMPLIBEXT) \ + d3d10core/libd3d10core.$(IMPLIBEXT) \ + d3d8/libd3d8.$(IMPLIBEXT) \ + d3d9/libd3d9.$(IMPLIBEXT) \ + d3dim/libd3dim.$(IMPLIBEXT) \ + d3drm/libd3drm.$(IMPLIBEXT) \ + d3dx9_36/libd3dx9.$(IMPLIBEXT) \ + d3dxof/libd3dxof.$(IMPLIBEXT) \ + dbghelp/libdbghelp.$(IMPLIBEXT) \ + dciman32/libdciman32.$(IMPLIBEXT) \ + ddraw/libddraw.$(IMPLIBEXT) \ + dinput/libdinput.$(IMPLIBEXT) \ + dinput/libdinput.$(STATIC_IMPLIBEXT) \ + dinput8/libdinput8.$(IMPLIBEXT) \ + dmusic32/libdmusic32.$(IMPLIBEXT) \ + dnsapi/libdnsapi.$(IMPLIBEXT) \ + dplay/libdplay.$(IMPLIBEXT) \ + dplayx/libdplayx.$(IMPLIBEXT) \ + dpnet/libdpnet.$(IMPLIBEXT) \ + dsound/libdsound.$(IMPLIBEXT) \ + dwmapi/libdwmapi.$(IMPLIBEXT) \ + dxgi/libdxgi.$(IMPLIBEXT) \ + gdi32/libgdi32.$(IMPLIBEXT) \ + gdiplus/libgdiplus.$(IMPLIBEXT) \ + glu32/libglu32.$(IMPLIBEXT) \ + hid/libhid.$(IMPLIBEXT) \ + hlink/libhlink.$(IMPLIBEXT) \ + imagehlp/libimagehlp.$(IMPLIBEXT) \ + imm32/libimm32.$(IMPLIBEXT) \ + inetcomm/libinetcomm.$(IMPLIBEXT) \ + iphlpapi/libiphlpapi.$(IMPLIBEXT) \ + kernel32/libkernel32.$(IMPLIBEXT) \ + loadperf/libloadperf.$(IMPLIBEXT) \ + lz32/liblz32.$(IMPLIBEXT) \ + mapi32/libmapi32.$(IMPLIBEXT) \ + mlang/libmlang.$(IMPLIBEXT) \ + mpr/libmpr.$(IMPLIBEXT) \ + mprapi/libmprapi.$(IMPLIBEXT) \ + msacm32/libmsacm32.$(IMPLIBEXT) \ + mscms/libmscms.$(IMPLIBEXT) \ + msdmo/libmsdmo.$(IMPLIBEXT) \ + mshtml/libmshtml.$(IMPLIBEXT) \ + msi/libmsi.$(IMPLIBEXT) \ + msimg32/libmsimg32.$(IMPLIBEXT) \ + msvcr71/libmsvcr71.$(IMPLIBEXT) \ + msvcrt/libmsvcrt.$(IMPLIBEXT) \ + msvcrt20/libmsvcrt20.$(IMPLIBEXT) \ + msvcrt40/libmsvcrt40.$(IMPLIBEXT) \ + msvcrtd/libmsvcrtd.$(IMPLIBEXT) \ + msvfw32/libmsvfw32.$(IMPLIBEXT) \ + mswsock/libmswsock.$(IMPLIBEXT) \ + nddeapi/libnddeapi.$(IMPLIBEXT) \ + netapi32/libnetapi32.$(IMPLIBEXT) \ + newdev/libnewdev.$(IMPLIBEXT) \ + ntdll/libntdll.$(IMPLIBEXT) \ + ntdsapi/libntdsapi.$(IMPLIBEXT) \ + ntoskrnl.exe/libntoskrnl.exe.$(IMPLIBEXT) \ + odbc32/libodbc32.$(IMPLIBEXT) \ + odbccp32/libodbccp32.$(IMPLIBEXT) \ + ole32/libole32.$(IMPLIBEXT) \ + oleacc/liboleacc.$(IMPLIBEXT) \ + oleaut32/liboleaut32.$(IMPLIBEXT) \ + olecli32/libolecli32.$(IMPLIBEXT) \ + oledlg/liboledlg.$(IMPLIBEXT) \ + olepro32/libolepro32.$(IMPLIBEXT) \ + olesvr32/libolesvr32.$(IMPLIBEXT) \ + opengl32/libopengl32.$(IMPLIBEXT) \ + pdh/libpdh.$(IMPLIBEXT) \ + powrprof/libpowrprof.$(IMPLIBEXT) \ + psapi/libpsapi.$(IMPLIBEXT) \ + quartz/libquartz.$(IMPLIBEXT) \ + rasapi32/librasapi32.$(IMPLIBEXT) \ + rasdlg/librasdlg.$(IMPLIBEXT) \ + resutils/libresutils.$(IMPLIBEXT) \ + riched20/libriched20.$(IMPLIBEXT) \ + rpcrt4/librpcrt4.$(IMPLIBEXT) \ + rsaenh/librsaenh.$(IMPLIBEXT) \ + rtutils/librtutils.$(IMPLIBEXT) \ + secur32/libsecur32.$(IMPLIBEXT) \ + sensapi/libsensapi.$(IMPLIBEXT) \ + serialui/libserialui.$(IMPLIBEXT) \ + setupapi/libsetupapi.$(IMPLIBEXT) \ + sfc/libsfc.$(IMPLIBEXT) \ + sfc_os/libsfc_os.$(IMPLIBEXT) \ + shdocvw/libshdocvw.$(IMPLIBEXT) \ + shell32/libshell32.$(IMPLIBEXT) \ + shfolder/libshfolder.$(IMPLIBEXT) \ + shlwapi/libshlwapi.$(IMPLIBEXT) \ + slc/libslc.$(IMPLIBEXT) \ + snmpapi/libsnmpapi.$(IMPLIBEXT) \ + spoolss/libspoolss.$(IMPLIBEXT) \ + sti/libsti.$(IMPLIBEXT) \ + tapi32/libtapi32.$(IMPLIBEXT) \ + unicows/libunicows.$(IMPLIBEXT) \ + url/liburl.$(IMPLIBEXT) \ + urlmon/liburlmon.$(IMPLIBEXT) \ + user32/libuser32.$(IMPLIBEXT) \ + userenv/libuserenv.$(IMPLIBEXT) \ + usp10/libusp10.$(IMPLIBEXT) \ + uxtheme/libuxtheme.$(IMPLIBEXT) \ + vdmdbg/libvdmdbg.$(IMPLIBEXT) \ + version/libversion.$(IMPLIBEXT) \ + windowscodecs/libwindowscodecs.$(IMPLIBEXT) \ + wined3d/libwined3d.$(IMPLIBEXT) \ + winhttp/libwinhttp.$(IMPLIBEXT) \ + wininet/libwininet.$(IMPLIBEXT) \ + winmm/libwinmm.$(IMPLIBEXT) \ + winnls32/libwinnls32.$(IMPLIBEXT) \ + winscard/libwinscard.$(IMPLIBEXT) \ + winspool.drv/libwinspool.$(IMPLIBEXT) \ + wintab32/libwintab32.$(IMPLIBEXT) \ + wintrust/libwintrust.$(IMPLIBEXT) \ + wldap32/libwldap32.$(IMPLIBEXT) \ + wnaspi32/libwnaspi32.$(IMPLIBEXT) \ + wow32/libwow32.$(IMPLIBEXT) \ + ws2_32/libws2_32.$(IMPLIBEXT) \ + wsock32/libwsock32.$(IMPLIBEXT) \ + wtsapi32/libwtsapi32.$(IMPLIBEXT) \ + xinput1_3/libxinput.$(IMPLIBEXT) + +CROSS_IMPLIBS = \ + libd3dx9.a \ + libwinspool.a \ + libxinput.a \ + aclui/libaclui.a \ + activeds/libactiveds.a \ + advapi32/libadvapi32.a \ + advpack/libadvpack.a \ + atl/libatl.a \ + avicap32/libavicap32.a \ + avifil32/libavifil32.a \ + avrt/libavrt.a \ + cabinet/libcabinet.a \ + capi2032/libcapi2032.a \ + cards/libcards.a \ + cfgmgr32/libcfgmgr32.a \ + clusapi/libclusapi.a \ + comctl32/libcomctl32.a \ + comdlg32/libcomdlg32.a \ + compstui/libcompstui.a \ + credui/libcredui.a \ + crtdll/libcrtdll.a \ + crypt32/libcrypt32.a \ + cryptdll/libcryptdll.a \ + cryptnet/libcryptnet.a \ + cryptui/libcryptui.a \ + ctl3d32/libctl3d32.a \ + d3d10/libd3d10.a \ + d3d10core/libd3d10core.a \ + d3d8/libd3d8.a \ + d3d9/libd3d9.a \ + d3dim/libd3dim.a \ + d3drm/libd3drm.a \ + d3dx9_36/libd3dx9.a \ + d3dxof/libd3dxof.a \ + dbghelp/libdbghelp.a \ + dciman32/libdciman32.a \ + ddraw/libddraw.a \ + dinput8/libdinput8.a \ + dmusic32/libdmusic32.a \ + dnsapi/libdnsapi.a \ + dplay/libdplay.a \ + dplayx/libdplayx.a \ + dpnet/libdpnet.a \ + dsound/libdsound.a \ + dwmapi/libdwmapi.a \ + dxgi/libdxgi.a \ + gdi32/libgdi32.a \ + gdiplus/libgdiplus.a \ + glu32/libglu32.a \ + hid/libhid.a \ + hlink/libhlink.a \ + imagehlp/libimagehlp.a \ + imm32/libimm32.a \ + inetcomm/libinetcomm.a \ + iphlpapi/libiphlpapi.a \ + kernel32/libkernel32.a \ + loadperf/libloadperf.a \ + lz32/liblz32.a \ + mapi32/libmapi32.a \ + mlang/libmlang.a \ + mpr/libmpr.a \ + mprapi/libmprapi.a \ + msacm32/libmsacm32.a \ + mscms/libmscms.a \ + msdmo/libmsdmo.a \ + mshtml/libmshtml.a \ + msi/libmsi.a \ + msimg32/libmsimg32.a \ + msvcr71/libmsvcr71.a \ + msvcrt/libmsvcrt.a \ + msvcrt20/libmsvcrt20.a \ + msvcrt40/libmsvcrt40.a \ + msvcrtd/libmsvcrtd.a \ + msvfw32/libmsvfw32.a \ + mswsock/libmswsock.a \ + nddeapi/libnddeapi.a \ + netapi32/libnetapi32.a \ + newdev/libnewdev.a \ + ntdll/libntdll.a \ + ntdsapi/libntdsapi.a \ + ntoskrnl.exe/libntoskrnl.exe.a \ + odbc32/libodbc32.a \ + odbccp32/libodbccp32.a \ + ole32/libole32.a \ + oleacc/liboleacc.a \ + oleaut32/liboleaut32.a \ + olecli32/libolecli32.a \ + oledlg/liboledlg.a \ + olepro32/libolepro32.a \ + olesvr32/libolesvr32.a \ + opengl32/libopengl32.a \ + pdh/libpdh.a \ + powrprof/libpowrprof.a \ + psapi/libpsapi.a \ + quartz/libquartz.a \ + rasapi32/librasapi32.a \ + rasdlg/librasdlg.a \ + resutils/libresutils.a \ + riched20/libriched20.a \ + rpcrt4/librpcrt4.a \ + rsaenh/librsaenh.a \ + rtutils/librtutils.a \ + secur32/libsecur32.a \ + sensapi/libsensapi.a \ + serialui/libserialui.a \ + setupapi/libsetupapi.a \ + sfc/libsfc.a \ + sfc_os/libsfc_os.a \ + shdocvw/libshdocvw.a \ + shell32/libshell32.a \ + shfolder/libshfolder.a \ + shlwapi/libshlwapi.a \ + slc/libslc.a \ + snmpapi/libsnmpapi.a \ + spoolss/libspoolss.a \ + sti/libsti.a \ + tapi32/libtapi32.a \ + unicows/libunicows.a \ + url/liburl.a \ + urlmon/liburlmon.a \ + user32/libuser32.a \ + userenv/libuserenv.a \ + usp10/libusp10.a \ + uxtheme/libuxtheme.a \ + vdmdbg/libvdmdbg.a \ + version/libversion.a \ + windowscodecs/libwindowscodecs.a \ + wined3d/libwined3d.a \ + winhttp/libwinhttp.a \ + wininet/libwininet.a \ + winmm/libwinmm.a \ + winnls32/libwinnls32.a \ + winscard/libwinscard.a \ + winspool.drv/libwinspool.a \ + wintab32/libwintab32.a \ + wintrust/libwintrust.a \ + wldap32/libwldap32.a \ + wnaspi32/libwnaspi32.a \ + wow32/libwow32.a \ + ws2_32/libws2_32.a \ + wsock32/libwsock32.a \ + wtsapi32/libwtsapi32.a \ + xinput1_3/libxinput.a + +$(TESTSUBDIRS:%=%/__crosstest__): $(CROSS_IMPLIBS) + +implib: $(IMPORT_LIBS) + +testsubdirs: $(TESTSUBDIRS) + +.PHONY: implib testsubdirs + +aclui/libaclui.def aclui/libaclui.a: aclui/aclui.spec $(WINEBUILD) + @cd aclui && $(MAKE) `basename $@` + +activeds/libactiveds.def activeds/libactiveds.a: activeds/activeds.spec $(WINEBUILD) + @cd activeds && $(MAKE) `basename $@` + +advapi32/libadvapi32.def advapi32/libadvapi32.a: advapi32/advapi32.spec $(WINEBUILD) + @cd advapi32 && $(MAKE) `basename $@` + +advpack/libadvpack.def advpack/libadvpack.a: advpack/advpack.spec $(WINEBUILD) + @cd advpack && $(MAKE) `basename $@` + +atl/libatl.def atl/libatl.a: atl/atl.spec $(WINEBUILD) + @cd atl && $(MAKE) `basename $@` + +avicap32/libavicap32.def avicap32/libavicap32.a: avicap32/avicap32.spec $(WINEBUILD) + @cd avicap32 && $(MAKE) `basename $@` + +avifil32/libavifil32.def avifil32/libavifil32.a: avifil32/avifil32.spec $(WINEBUILD) + @cd avifil32 && $(MAKE) `basename $@` + +avrt/libavrt.def avrt/libavrt.a: avrt/avrt.spec $(WINEBUILD) + @cd avrt && $(MAKE) `basename $@` + +cabinet/libcabinet.def cabinet/libcabinet.a: cabinet/cabinet.spec $(WINEBUILD) + @cd cabinet && $(MAKE) `basename $@` + +capi2032/libcapi2032.def capi2032/libcapi2032.a: capi2032/capi2032.spec $(WINEBUILD) + @cd capi2032 && $(MAKE) `basename $@` + +cards/libcards.def cards/libcards.a: cards/cards.spec $(WINEBUILD) + @cd cards && $(MAKE) `basename $@` + +cfgmgr32/libcfgmgr32.def cfgmgr32/libcfgmgr32.a: cfgmgr32/cfgmgr32.spec $(WINEBUILD) + @cd cfgmgr32 && $(MAKE) `basename $@` + +clusapi/libclusapi.def clusapi/libclusapi.a: clusapi/clusapi.spec $(WINEBUILD) + @cd clusapi && $(MAKE) `basename $@` + +comctl32/libcomctl32.def comctl32/libcomctl32.a: comctl32/comctl32.spec $(WINEBUILD) + @cd comctl32 && $(MAKE) `basename $@` + +comdlg32/libcomdlg32.def comdlg32/libcomdlg32.a: comdlg32/comdlg32.spec $(WINEBUILD) + @cd comdlg32 && $(MAKE) `basename $@` + +compstui/libcompstui.def compstui/libcompstui.a: compstui/compstui.spec $(WINEBUILD) + @cd compstui && $(MAKE) `basename $@` + +credui/libcredui.def credui/libcredui.a: credui/credui.spec $(WINEBUILD) + @cd credui && $(MAKE) `basename $@` + +crtdll/libcrtdll.def crtdll/libcrtdll.a: crtdll/crtdll.spec $(WINEBUILD) + @cd crtdll && $(MAKE) `basename $@` + +crypt32/libcrypt32.def crypt32/libcrypt32.a: crypt32/crypt32.spec $(WINEBUILD) + @cd crypt32 && $(MAKE) `basename $@` + +cryptdll/libcryptdll.def cryptdll/libcryptdll.a: cryptdll/cryptdll.spec $(WINEBUILD) + @cd cryptdll && $(MAKE) `basename $@` + +cryptnet/libcryptnet.def cryptnet/libcryptnet.a: cryptnet/cryptnet.spec $(WINEBUILD) + @cd cryptnet && $(MAKE) `basename $@` + +cryptui/libcryptui.def cryptui/libcryptui.a: cryptui/cryptui.spec $(WINEBUILD) + @cd cryptui && $(MAKE) `basename $@` + +ctl3d32/libctl3d32.def ctl3d32/libctl3d32.a: ctl3d32/ctl3d32.spec $(WINEBUILD) + @cd ctl3d32 && $(MAKE) `basename $@` + +d3d10/libd3d10.def d3d10/libd3d10.a: d3d10/d3d10.spec $(WINEBUILD) + @cd d3d10 && $(MAKE) `basename $@` + +d3d10core/libd3d10core.def d3d10core/libd3d10core.a: d3d10core/d3d10core.spec $(WINEBUILD) + @cd d3d10core && $(MAKE) `basename $@` + +d3d8/libd3d8.def d3d8/libd3d8.a: d3d8/d3d8.spec $(WINEBUILD) + @cd d3d8 && $(MAKE) `basename $@` + +d3d9/libd3d9.def d3d9/libd3d9.a: d3d9/d3d9.spec $(WINEBUILD) + @cd d3d9 && $(MAKE) `basename $@` + +d3dim/libd3dim.def d3dim/libd3dim.a: d3dim/d3dim.spec $(WINEBUILD) + @cd d3dim && $(MAKE) `basename $@` + +d3drm/libd3drm.def d3drm/libd3drm.a: d3drm/d3drm.spec $(WINEBUILD) + @cd d3drm && $(MAKE) `basename $@` + +d3dx9_36/libd3dx9.def d3dx9_36/libd3dx9.a: d3dx9_36/d3dx9_36.spec $(WINEBUILD) + @cd d3dx9_36 && $(MAKE) `basename $@` + +d3dxof/libd3dxof.def d3dxof/libd3dxof.a: d3dxof/d3dxof.spec $(WINEBUILD) + @cd d3dxof && $(MAKE) `basename $@` + +dbghelp/libdbghelp.def dbghelp/libdbghelp.a: dbghelp/dbghelp.spec $(WINEBUILD) + @cd dbghelp && $(MAKE) `basename $@` + +dciman32/libdciman32.def dciman32/libdciman32.a: dciman32/dciman32.spec $(WINEBUILD) + @cd dciman32 && $(MAKE) `basename $@` + +ddraw/libddraw.def ddraw/libddraw.a: ddraw/ddraw.spec $(WINEBUILD) + @cd ddraw && $(MAKE) `basename $@` + +dinput/libdinput.def: dinput/dinput.spec $(WINEBUILD) + @cd dinput && $(MAKE) libdinput.def + +dinput/libdinput.$(STATIC_IMPLIBEXT): dummy + @cd dinput && $(MAKE) libdinput.$(STATIC_IMPLIBEXT) + +dinput8/libdinput8.def dinput8/libdinput8.a: dinput8/dinput8.spec $(WINEBUILD) + @cd dinput8 && $(MAKE) `basename $@` + +dmusic32/libdmusic32.def dmusic32/libdmusic32.a: dmusic32/dmusic32.spec $(WINEBUILD) + @cd dmusic32 && $(MAKE) `basename $@` + +dnsapi/libdnsapi.def dnsapi/libdnsapi.a: dnsapi/dnsapi.spec $(WINEBUILD) + @cd dnsapi && $(MAKE) `basename $@` + +dplay/libdplay.def dplay/libdplay.a: dplay/dplay.spec $(WINEBUILD) + @cd dplay && $(MAKE) `basename $@` + +dplayx/libdplayx.def dplayx/libdplayx.a: dplayx/dplayx.spec $(WINEBUILD) + @cd dplayx && $(MAKE) `basename $@` + +dpnet/libdpnet.def dpnet/libdpnet.a: dpnet/dpnet.spec $(WINEBUILD) + @cd dpnet && $(MAKE) `basename $@` + +dsound/libdsound.def dsound/libdsound.a: dsound/dsound.spec $(WINEBUILD) + @cd dsound && $(MAKE) `basename $@` + +dwmapi/libdwmapi.def dwmapi/libdwmapi.a: dwmapi/dwmapi.spec $(WINEBUILD) + @cd dwmapi && $(MAKE) `basename $@` + +dxgi/libdxgi.def dxgi/libdxgi.a: dxgi/dxgi.spec $(WINEBUILD) + @cd dxgi && $(MAKE) `basename $@` + +gdi32/libgdi32.def gdi32/libgdi32.a: gdi32/gdi32.spec $(WINEBUILD) + @cd gdi32 && $(MAKE) `basename $@` + +gdiplus/libgdiplus.def gdiplus/libgdiplus.a: gdiplus/gdiplus.spec $(WINEBUILD) + @cd gdiplus && $(MAKE) `basename $@` + +glu32/libglu32.def glu32/libglu32.a: glu32/glu32.spec $(WINEBUILD) + @cd glu32 && $(MAKE) `basename $@` + +hid/libhid.def hid/libhid.a: hid/hid.spec $(WINEBUILD) + @cd hid && $(MAKE) `basename $@` + +hlink/libhlink.def hlink/libhlink.a: hlink/hlink.spec $(WINEBUILD) + @cd hlink && $(MAKE) `basename $@` + +imagehlp/libimagehlp.def imagehlp/libimagehlp.a: imagehlp/imagehlp.spec $(WINEBUILD) + @cd imagehlp && $(MAKE) `basename $@` + +imm32/libimm32.def imm32/libimm32.a: imm32/imm32.spec $(WINEBUILD) + @cd imm32 && $(MAKE) `basename $@` + +inetcomm/libinetcomm.def inetcomm/libinetcomm.a: inetcomm/inetcomm.spec $(WINEBUILD) + @cd inetcomm && $(MAKE) `basename $@` + +iphlpapi/libiphlpapi.def iphlpapi/libiphlpapi.a: iphlpapi/iphlpapi.spec $(WINEBUILD) + @cd iphlpapi && $(MAKE) `basename $@` + +kernel32/libkernel32.def kernel32/libkernel32.a: kernel32/kernel32.spec $(WINEBUILD) + @cd kernel32 && $(MAKE) `basename $@` + +loadperf/libloadperf.def loadperf/libloadperf.a: loadperf/loadperf.spec $(WINEBUILD) + @cd loadperf && $(MAKE) `basename $@` + +lz32/liblz32.def lz32/liblz32.a: lz32/lz32.spec $(WINEBUILD) + @cd lz32 && $(MAKE) `basename $@` + +mapi32/libmapi32.def mapi32/libmapi32.a: mapi32/mapi32.spec $(WINEBUILD) + @cd mapi32 && $(MAKE) `basename $@` + +mlang/libmlang.def mlang/libmlang.a: mlang/mlang.spec $(WINEBUILD) + @cd mlang && $(MAKE) `basename $@` + +mpr/libmpr.def mpr/libmpr.a: mpr/mpr.spec $(WINEBUILD) + @cd mpr && $(MAKE) `basename $@` + +mprapi/libmprapi.def mprapi/libmprapi.a: mprapi/mprapi.spec $(WINEBUILD) + @cd mprapi && $(MAKE) `basename $@` + +msacm32/libmsacm32.def msacm32/libmsacm32.a: msacm32/msacm32.spec $(WINEBUILD) + @cd msacm32 && $(MAKE) `basename $@` + +mscms/libmscms.def mscms/libmscms.a: mscms/mscms.spec $(WINEBUILD) + @cd mscms && $(MAKE) `basename $@` + +msdmo/libmsdmo.def msdmo/libmsdmo.a: msdmo/msdmo.spec $(WINEBUILD) + @cd msdmo && $(MAKE) `basename $@` + +mshtml/libmshtml.def mshtml/libmshtml.a: mshtml/mshtml.spec $(WINEBUILD) + @cd mshtml && $(MAKE) `basename $@` + +msi/libmsi.def msi/libmsi.a: msi/msi.spec $(WINEBUILD) + @cd msi && $(MAKE) `basename $@` + +msimg32/libmsimg32.def msimg32/libmsimg32.a: msimg32/msimg32.spec $(WINEBUILD) + @cd msimg32 && $(MAKE) `basename $@` + +msvcr71/libmsvcr71.def msvcr71/libmsvcr71.a: msvcr71/msvcr71.spec $(WINEBUILD) + @cd msvcr71 && $(MAKE) `basename $@` + +msvcrt/libmsvcrt.def msvcrt/libmsvcrt.a: msvcrt/msvcrt.spec $(WINEBUILD) + @cd msvcrt && $(MAKE) `basename $@` + +msvcrt20/libmsvcrt20.def msvcrt20/libmsvcrt20.a: msvcrt20/msvcrt20.spec $(WINEBUILD) + @cd msvcrt20 && $(MAKE) `basename $@` + +msvcrt40/libmsvcrt40.def msvcrt40/libmsvcrt40.a: msvcrt40/msvcrt40.spec $(WINEBUILD) + @cd msvcrt40 && $(MAKE) `basename $@` + +msvcrtd/libmsvcrtd.def msvcrtd/libmsvcrtd.a: msvcrtd/msvcrtd.spec $(WINEBUILD) + @cd msvcrtd && $(MAKE) `basename $@` + +msvfw32/libmsvfw32.def msvfw32/libmsvfw32.a: msvfw32/msvfw32.spec $(WINEBUILD) + @cd msvfw32 && $(MAKE) `basename $@` + +mswsock/libmswsock.def mswsock/libmswsock.a: mswsock/mswsock.spec $(WINEBUILD) + @cd mswsock && $(MAKE) `basename $@` + +nddeapi/libnddeapi.def nddeapi/libnddeapi.a: nddeapi/nddeapi.spec $(WINEBUILD) + @cd nddeapi && $(MAKE) `basename $@` + +netapi32/libnetapi32.def netapi32/libnetapi32.a: netapi32/netapi32.spec $(WINEBUILD) + @cd netapi32 && $(MAKE) `basename $@` + +newdev/libnewdev.def newdev/libnewdev.a: newdev/newdev.spec $(WINEBUILD) + @cd newdev && $(MAKE) `basename $@` + +ntdll/libntdll.def ntdll/libntdll.a: ntdll/ntdll.spec $(WINEBUILD) + @cd ntdll && $(MAKE) `basename $@` + +ntdsapi/libntdsapi.def ntdsapi/libntdsapi.a: ntdsapi/ntdsapi.spec $(WINEBUILD) + @cd ntdsapi && $(MAKE) `basename $@` + +ntoskrnl.exe/libntoskrnl.exe.def ntoskrnl.exe/libntoskrnl.exe.a: ntoskrnl.exe/ntoskrnl.exe.spec $(WINEBUILD) + @cd ntoskrnl.exe && $(MAKE) `basename $@` + +odbc32/libodbc32.def odbc32/libodbc32.a: odbc32/odbc32.spec $(WINEBUILD) + @cd odbc32 && $(MAKE) `basename $@` + +odbccp32/libodbccp32.def odbccp32/libodbccp32.a: odbccp32/odbccp32.spec $(WINEBUILD) + @cd odbccp32 && $(MAKE) `basename $@` + +ole32/libole32.def ole32/libole32.a: ole32/ole32.spec $(WINEBUILD) + @cd ole32 && $(MAKE) `basename $@` + +oleacc/liboleacc.def oleacc/liboleacc.a: oleacc/oleacc.spec $(WINEBUILD) + @cd oleacc && $(MAKE) `basename $@` + +oleaut32/liboleaut32.def oleaut32/liboleaut32.a: oleaut32/oleaut32.spec $(WINEBUILD) + @cd oleaut32 && $(MAKE) `basename $@` + +olecli32/libolecli32.def olecli32/libolecli32.a: olecli32/olecli32.spec $(WINEBUILD) + @cd olecli32 && $(MAKE) `basename $@` + +oledlg/liboledlg.def oledlg/liboledlg.a: oledlg/oledlg.spec $(WINEBUILD) + @cd oledlg && $(MAKE) `basename $@` + +olepro32/libolepro32.def olepro32/libolepro32.a: olepro32/olepro32.spec $(WINEBUILD) + @cd olepro32 && $(MAKE) `basename $@` + +olesvr32/libolesvr32.def olesvr32/libolesvr32.a: olesvr32/olesvr32.spec $(WINEBUILD) + @cd olesvr32 && $(MAKE) `basename $@` + +opengl32/libopengl32.def opengl32/libopengl32.a: opengl32/opengl32.spec $(WINEBUILD) + @cd opengl32 && $(MAKE) `basename $@` + +pdh/libpdh.def pdh/libpdh.a: pdh/pdh.spec $(WINEBUILD) + @cd pdh && $(MAKE) `basename $@` + +powrprof/libpowrprof.def powrprof/libpowrprof.a: powrprof/powrprof.spec $(WINEBUILD) + @cd powrprof && $(MAKE) `basename $@` + +psapi/libpsapi.def psapi/libpsapi.a: psapi/psapi.spec $(WINEBUILD) + @cd psapi && $(MAKE) `basename $@` + +quartz/libquartz.def quartz/libquartz.a: quartz/quartz.spec $(WINEBUILD) + @cd quartz && $(MAKE) `basename $@` + +rasapi32/librasapi32.def rasapi32/librasapi32.a: rasapi32/rasapi32.spec $(WINEBUILD) + @cd rasapi32 && $(MAKE) `basename $@` + +rasdlg/librasdlg.def rasdlg/librasdlg.a: rasdlg/rasdlg.spec $(WINEBUILD) + @cd rasdlg && $(MAKE) `basename $@` + +resutils/libresutils.def resutils/libresutils.a: resutils/resutils.spec $(WINEBUILD) + @cd resutils && $(MAKE) `basename $@` + +riched20/libriched20.def riched20/libriched20.a: riched20/riched20.spec $(WINEBUILD) + @cd riched20 && $(MAKE) `basename $@` + +rpcrt4/librpcrt4.def rpcrt4/librpcrt4.a: rpcrt4/rpcrt4.spec $(WINEBUILD) + @cd rpcrt4 && $(MAKE) `basename $@` + +rsaenh/librsaenh.def rsaenh/librsaenh.a: rsaenh/rsaenh.spec $(WINEBUILD) + @cd rsaenh && $(MAKE) `basename $@` + +rtutils/librtutils.def rtutils/librtutils.a: rtutils/rtutils.spec $(WINEBUILD) + @cd rtutils && $(MAKE) `basename $@` + +secur32/libsecur32.def secur32/libsecur32.a: secur32/secur32.spec $(WINEBUILD) + @cd secur32 && $(MAKE) `basename $@` + +sensapi/libsensapi.def sensapi/libsensapi.a: sensapi/sensapi.spec $(WINEBUILD) + @cd sensapi && $(MAKE) `basename $@` + +serialui/libserialui.def serialui/libserialui.a: serialui/serialui.spec $(WINEBUILD) + @cd serialui && $(MAKE) `basename $@` + +setupapi/libsetupapi.def setupapi/libsetupapi.a: setupapi/setupapi.spec $(WINEBUILD) + @cd setupapi && $(MAKE) `basename $@` + +sfc/libsfc.def sfc/libsfc.a: sfc/sfc.spec $(WINEBUILD) + @cd sfc && $(MAKE) `basename $@` + +sfc_os/libsfc_os.def sfc_os/libsfc_os.a: sfc_os/sfc_os.spec $(WINEBUILD) + @cd sfc_os && $(MAKE) `basename $@` + +shdocvw/libshdocvw.def shdocvw/libshdocvw.a: shdocvw/shdocvw.spec $(WINEBUILD) + @cd shdocvw && $(MAKE) `basename $@` + +shell32/libshell32.def shell32/libshell32.a: shell32/shell32.spec $(WINEBUILD) + @cd shell32 && $(MAKE) `basename $@` + +shfolder/libshfolder.def shfolder/libshfolder.a: shfolder/shfolder.spec $(WINEBUILD) + @cd shfolder && $(MAKE) `basename $@` + +shlwapi/libshlwapi.def shlwapi/libshlwapi.a: shlwapi/shlwapi.spec $(WINEBUILD) + @cd shlwapi && $(MAKE) `basename $@` + +slc/libslc.def slc/libslc.a: slc/slc.spec $(WINEBUILD) + @cd slc && $(MAKE) `basename $@` + +snmpapi/libsnmpapi.def snmpapi/libsnmpapi.a: snmpapi/snmpapi.spec $(WINEBUILD) + @cd snmpapi && $(MAKE) `basename $@` + +spoolss/libspoolss.def spoolss/libspoolss.a: spoolss/spoolss.spec $(WINEBUILD) + @cd spoolss && $(MAKE) `basename $@` + +sti/libsti.def sti/libsti.a: sti/sti.spec $(WINEBUILD) + @cd sti && $(MAKE) `basename $@` + +tapi32/libtapi32.def tapi32/libtapi32.a: tapi32/tapi32.spec $(WINEBUILD) + @cd tapi32 && $(MAKE) `basename $@` + +unicows/libunicows.def unicows/libunicows.a: unicows/unicows.spec $(WINEBUILD) + @cd unicows && $(MAKE) `basename $@` + +url/liburl.def url/liburl.a: url/url.spec $(WINEBUILD) + @cd url && $(MAKE) `basename $@` + +urlmon/liburlmon.def urlmon/liburlmon.a: urlmon/urlmon.spec $(WINEBUILD) + @cd urlmon && $(MAKE) `basename $@` + +user32/libuser32.def user32/libuser32.a: user32/user32.spec $(WINEBUILD) + @cd user32 && $(MAKE) `basename $@` + +userenv/libuserenv.def userenv/libuserenv.a: userenv/userenv.spec $(WINEBUILD) + @cd userenv && $(MAKE) `basename $@` + +usp10/libusp10.def usp10/libusp10.a: usp10/usp10.spec $(WINEBUILD) + @cd usp10 && $(MAKE) `basename $@` + +uxtheme/libuxtheme.def uxtheme/libuxtheme.a: uxtheme/uxtheme.spec $(WINEBUILD) + @cd uxtheme && $(MAKE) `basename $@` + +vdmdbg/libvdmdbg.def vdmdbg/libvdmdbg.a: vdmdbg/vdmdbg.spec $(WINEBUILD) + @cd vdmdbg && $(MAKE) `basename $@` + +version/libversion.def version/libversion.a: version/version.spec $(WINEBUILD) + @cd version && $(MAKE) `basename $@` + +windowscodecs/libwindowscodecs.def windowscodecs/libwindowscodecs.a: windowscodecs/windowscodecs.spec $(WINEBUILD) + @cd windowscodecs && $(MAKE) `basename $@` + +wined3d/libwined3d.def wined3d/libwined3d.a: wined3d/wined3d.spec $(WINEBUILD) + @cd wined3d && $(MAKE) `basename $@` + +winhttp/libwinhttp.def winhttp/libwinhttp.a: winhttp/winhttp.spec $(WINEBUILD) + @cd winhttp && $(MAKE) `basename $@` + +wininet/libwininet.def wininet/libwininet.a: wininet/wininet.spec $(WINEBUILD) + @cd wininet && $(MAKE) `basename $@` + +winmm/libwinmm.def winmm/libwinmm.a: winmm/winmm.spec $(WINEBUILD) + @cd winmm && $(MAKE) `basename $@` + +winnls32/libwinnls32.def winnls32/libwinnls32.a: winnls32/winnls32.spec $(WINEBUILD) + @cd winnls32 && $(MAKE) `basename $@` + +winscard/libwinscard.def winscard/libwinscard.a: winscard/winscard.spec $(WINEBUILD) + @cd winscard && $(MAKE) `basename $@` + +winspool.drv/libwinspool.def winspool.drv/libwinspool.a: winspool.drv/winspool.drv.spec $(WINEBUILD) + @cd winspool.drv && $(MAKE) `basename $@` + +wintab32/libwintab32.def wintab32/libwintab32.a: wintab32/wintab32.spec $(WINEBUILD) + @cd wintab32 && $(MAKE) `basename $@` + +wintrust/libwintrust.def wintrust/libwintrust.a: wintrust/wintrust.spec $(WINEBUILD) + @cd wintrust && $(MAKE) `basename $@` + +wldap32/libwldap32.def wldap32/libwldap32.a: wldap32/wldap32.spec $(WINEBUILD) + @cd wldap32 && $(MAKE) `basename $@` + +wnaspi32/libwnaspi32.def wnaspi32/libwnaspi32.a: wnaspi32/wnaspi32.spec $(WINEBUILD) + @cd wnaspi32 && $(MAKE) `basename $@` + +wow32/libwow32.def wow32/libwow32.a: wow32/wow32.spec $(WINEBUILD) + @cd wow32 && $(MAKE) `basename $@` + +ws2_32/libws2_32.def ws2_32/libws2_32.a: ws2_32/ws2_32.spec $(WINEBUILD) + @cd ws2_32 && $(MAKE) `basename $@` + +wsock32/libwsock32.def wsock32/libwsock32.a: wsock32/wsock32.spec $(WINEBUILD) + @cd wsock32 && $(MAKE) `basename $@` + +wtsapi32/libwtsapi32.def wtsapi32/libwtsapi32.a: wtsapi32/wtsapi32.spec $(WINEBUILD) + @cd wtsapi32 && $(MAKE) `basename $@` + +xinput1_3/libxinput.def xinput1_3/libxinput.a: xinput1_3/xinput1_3.spec $(WINEBUILD) + @cd xinput1_3 && $(MAKE) `basename $@` + +libd3dx9.a: d3dx9_36/libd3dx9.a + $(RM) $@ && $(LN_S) d3dx9_36/libd3dx9.a $@ + +libd3dx9.def: d3dx9_36/libd3dx9.def + $(RM) $@ && $(LN_S) d3dx9_36/libd3dx9.def $@ + +libwinspool.a: winspool.drv/libwinspool.a + $(RM) $@ && $(LN_S) winspool.drv/libwinspool.a $@ + +libwinspool.def: winspool.drv/libwinspool.def + $(RM) $@ && $(LN_S) winspool.drv/libwinspool.def $@ + +libxinput.a: xinput1_3/libxinput.a + $(RM) $@ && $(LN_S) xinput1_3/libxinput.a $@ + +libxinput.def: xinput1_3/libxinput.def + $(RM) $@ && $(LN_S) xinput1_3/libxinput.def $@ + +$(BUILDSUBDIRS): $(IMPORT_LIBS) +$(INSTALLSUBDIRS:%=%/__install__) $(INSTALLSUBDIRS:%=%/__install-lib__): $(IMPORT_LIBS) + +# Map library name to the corresponding directory + +adsiid/libadsiid.a: adsiid +dxerr8/libdxerr8.a: dxerr8 +dxerr9/libdxerr9.a: dxerr9 +dxguid/libdxguid.a: dxguid +strmiids/libstrmiids.a: strmiids +uuid/libuuid.a: uuid +winecrt0/libwinecrt0.a: winecrt0 + +# Misc rules + +.PHONY: $(WIN16_FILES:%=__install__/%) + +WIN16_INSTALL = $(WIN16_FILES:%=__install__/%) + +$(WIN16_FILES:%=__install__/%): $(WIN16_FILES) $(DESTDIR)$(dlldir) dummy + $(INSTALL_DATA) `basename $@` $(DESTDIR)$(dlldir)/`basename $@` + +install install-lib:: $(WIN16_INSTALL) + +uninstall:: + -cd $(DESTDIR)$(dlldir) && $(RM) $(WIN16_FILES) + -rmdir $(DESTDIR)$(fakedlldir) $(DESTDIR)$(dlldir) + +clean:: + $(RM) $(IMPORT_SYMLINKS) $(WIN16_FILES) diff -rupN wine-1.5.19/dlls/ntdll/file.c wine-silverlight-1.5.19/dlls/ntdll/file.c --- wine-1.5.19/dlls/ntdll/file.c 2012-12-07 11:17:32.000000000 -0800 +++ wine-silverlight-1.5.19/dlls/ntdll/file.c 2012-12-20 18:16:39.456236619 -0800 @@ -93,6 +93,81 @@ mode_t FILE_umask = 0; #define SECS_1601_TO_1970 ((369 * 365 + 89) * (ULONGLONG)SECSPERDAY) +static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATTRIBUTES attr, + PIO_STATUS_BLOCK io, PLARGE_INTEGER alloc_size, + ULONG attributes, ULONG sharing, ULONG disposition, + ULONG options, PVOID ea_buffer, ULONG ea_length ); + +struct security_descriptor *FILE_get_parent_sd(UNICODE_STRING *filenameW) +{ + SECURITY_INFORMATION info = OWNER_SECURITY_INFORMATION|GROUP_SECURITY_INFORMATION + |DACL_SECURITY_INFORMATION|SACL_SECURITY_INFORMATION; + PSECURITY_DESCRIPTOR parentsd = NULL; + ACL_SIZE_INFORMATION acl_size; + BOOLEAN present, defaulted; + WCHAR *p, parent[MAX_PATH]; + OBJECT_ATTRIBUTES pattr; + UNICODE_STRING parentW; + IO_STATUS_BLOCK io; + NTSTATUS status; + HANDLE hparent; + ULONG n1, n2; + PACL pDacl; + int i; + + parentW.Buffer = parent; + parentW.Length = filenameW->Length; + memcpy(parentW.Buffer, filenameW->Buffer, filenameW->Length); + if ((p = strrchrW(parent, '\\')) != NULL) + { + p[0] = 0; + parentW.Length = (p-parent)*sizeof(WCHAR); + } + memset(&pattr, 0x0, sizeof(pattr)); + pattr.Length = sizeof(pattr); + pattr.Attributes = OBJ_CASE_INSENSITIVE; + pattr.ObjectName = &parentW; + status = FILE_CreateFile( &hparent, READ_CONTROL|ACCESS_SYSTEM_SECURITY, &pattr, &io, NULL, + FILE_FLAG_BACKUP_SEMANTICS, + FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE, FILE_OPEN, + FILE_OPEN_FOR_BACKUP_INTENT, NULL, 0 ); + if (status == STATUS_SUCCESS) + status = NtQuerySecurityObject( hparent, info, NULL, 0, &n1 ); + if (status == STATUS_BUFFER_TOO_SMALL && (parentsd = RtlAllocateHeap( GetProcessHeap(), 0, n1 )) != NULL) + status = NtQuerySecurityObject( hparent, info, parentsd, n1, &n2 ); + if (status == STATUS_SUCCESS) + status = NtQuerySecurityObject( hparent, info, parentsd, n1, &n2 ); + if (hparent != INVALID_HANDLE_VALUE) + NtClose( hparent ); + if (status != STATUS_SUCCESS) return NULL; + status = RtlGetDaclSecurityDescriptor(parentsd, &present, &pDacl, &defaulted); + if (status != STATUS_SUCCESS || !present) return NULL; + status = RtlQueryInformationAcl(pDacl, &acl_size, sizeof(acl_size), AclSizeInformation); + if (status != STATUS_SUCCESS) return NULL; + + for (i=acl_size.AceCount-1; i>=0; i--) + { + DWORD inheritance_mask = INHERIT_ONLY_ACE|OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE; + ACE_HEADER *ace; + + status = RtlGetAce(pDacl, i, (VOID **)&ace); + if (status != STATUS_SUCCESS || !(ace->AceFlags & inheritance_mask)) + { + RtlDeleteAce(pDacl, i); + acl_size.AceCount--; + } + else + ace->AceFlags = (ace->AceFlags & ~inheritance_mask) | INHERITED_ACE; + } + + if (!acl_size.AceCount) + { + return NULL; + } + return parentsd; +} + + /************************************************************************** * FILE_CreateFile (internal) * Open a file. @@ -151,10 +226,18 @@ static NTSTATUS FILE_CreateFile( PHANDLE { struct security_descriptor *sd; struct object_attributes objattr; + PSECURITY_DESCRIPTOR parentsd = NULL, psd; objattr.rootdir = wine_server_obj_handle( attr->RootDirectory ); objattr.name_len = 0; - io->u.Status = NTDLL_create_struct_sd( attr->SecurityDescriptor, &sd, &objattr.sd_len ); + psd = attr->SecurityDescriptor; + if (!psd && (disposition == FILE_CREATE||disposition == FILE_OVERWRITE_IF)) + parentsd = FILE_get_parent_sd( attr->ObjectName ); + if (parentsd) + psd = parentsd; + io->u.Status = NTDLL_create_struct_sd( psd, &sd, &objattr.sd_len ); + if (parentsd) + RtlFreeHeap( GetProcessHeap(), 0, parentsd ); if (io->u.Status != STATUS_SUCCESS) { RtlFreeAnsiString( &unix_name ); diff -rupN wine-1.5.19/dlls/user32/message.c wine-silverlight-1.5.19/dlls/user32/message.c --- wine-1.5.19/dlls/user32/message.c 2012-12-07 11:17:32.000000000 -0800 +++ wine-silverlight-1.5.19/dlls/user32/message.c 2012-12-20 18:16:39.332911445 -0800 @@ -4371,12 +4371,17 @@ UINT_PTR WINAPI SetTimer( HWND hwnd, UIN if (proc) winproc = WINPROC_AllocProc( (WNDPROC)proc, FALSE ); + if (timeout < USER_TIMER_MINIMUM) + timeout = USER_TIMER_MINIMUM; + else if (timeout > USER_TIMER_MAXIMUM) + timeout = USER_TIMER_MAXIMUM; + SERVER_START_REQ( set_win_timer ) { req->win = wine_server_user_handle( hwnd ); req->msg = WM_TIMER; req->id = id; - req->rate = max( timeout, SYS_TIMER_RATE ); + req->rate = timeout; req->lparam = (ULONG_PTR)winproc; if (!wine_server_call_err( req )) { diff -rupN wine-1.5.19/dlls/winecoreaudio.drv/Makefile wine-silverlight-1.5.19/dlls/winecoreaudio.drv/Makefile --- wine-1.5.19/dlls/winecoreaudio.drv/Makefile 1969-12-31 16:00:00.000000000 -0800 +++ wine-silverlight-1.5.19/dlls/winecoreaudio.drv/Makefile 2012-12-20 18:16:39.399573701 -0800 @@ -0,0 +1,480 @@ +TOPSRCDIR = ../.. +TOPOBJDIR = ../.. +SRCDIR = . + +MODULE = winecoreaudio.drv +IMPORTS = uuid winmm user32 kernel32 +EXTRALIBS = + +C_SRCS = \ + audio.c \ + audiounit.c \ + coreaudio.c \ + coremidi.c \ + midi.c \ + mixer.c + +# Global rules for building dlls -*-Makefile-*- +# +# Each individual makefile should define the following variables: +# MODULE : name of the main module being built +# EXTRALIBS : extra libraries to link in (optional) +# SPEC_SRCS16 : interface definition files for 16-bit dlls (optional) +# +# plus all variables required by the global Make.rules.in +# + +DLLFLAGS = -D_REENTRANT -fPIC +MINGWAR = i586-mingw32msvc-ar +DEFS = -D__WINESRC__ $(EXTRADEFS) +BASEMODULE = $(MODULE:%.dll=%) +MAINSPEC = $(BASEMODULE).spec +SPEC_DEF = $(BASEMODULE).def +WIN16_FILES = $(SPEC_SRCS16:.spec=.spec.o) $(C_SRCS16:.c=.o) $(EXTRA_OBJS16) +ALL_OBJS = $(WIN16_FILES) $(OBJS) +ALL_LIBS = $(LIBPORT) $(EXTRALIBS) $(LDFLAGS) $(LIBS) +IMPLIB_OBJS = $(IMPLIB_SRCS:.c=.o) +IMPORTLIBFILE = $(IMPORTLIB:%=lib%.def) +STATICIMPLIB = $(IMPORTLIBFILE:.def=.def.a) +DLL_LDPATH = -L$(DLLDIR) $(DELAYIMPORTS:%=-L$(DLLDIR)/%) $(IMPORTS:%=-L$(DLLDIR)/%) +INSTALLDIRS = $(DESTDIR)$(dlldir) $(DESTDIR)$(fakedlldir) $(DESTDIR)$(datadir)/wine + +# Global rules shared by all makefiles -*-Makefile-*- +# +# Each individual makefile must define the following variables: +# TOPSRCDIR : top-level source directory +# TOPOBJDIR : top-level object directory +# SRCDIR : source directory for this module +# MODULE : name of the module being built +# +# Each individual makefile may define the following additional variables: +# C_SRCS : C sources for the module +# C_SRCS16 : 16-bit C sources for the module +# RC_SRCS : resource source files +# EXTRA_SRCS : extra source files for make depend +# EXTRA_OBJS : extra object files +# IMPORTS : dlls to import +# DELAYIMPORTS : dlls to import in delayed mode +# SUBDIRS : subdirectories that contain a Makefile +# EXTRASUBDIRS : subdirectories that do not contain a Makefile +# INSTALLSUBDIRS : subdirectories to run make install/uninstall into +# MODCFLAGS : extra CFLAGS for this module + +# First some useful definitions + +SHELL = /bin/sh +CC = ccache gcc -m32 +CFLAGS = -g -O2 +CPPFLAGS = +LIBS = +BISON = bison +FLEX = flex +EXEEXT = +OBJEXT = o +LIBEXT = so +DLLEXT = .so +TOOLSEXT = +IMPLIBEXT = def +LDSHARED = $(CC) -shared $(SONAME:%=-Wl,-soname,%) $(VERSCRIPT:%=-Wl,--version-script=%) +DLLTOOL = i586-mingw32msvc-dlltool +DLLWRAP = +AR = ar +ARFLAGS = rc +RANLIB = ranlib +STRIP = strip +LN = ln +LN_S = ln -s +TOOLSDIR = $(TOPOBJDIR) +LDFLAGS = +PRELINK = /usr/sbin/prelink +RM = rm -f +MV = mv +LINT = +LINTFLAGS = +FONTFORGE = fontforge +RSVG = false +ICOTOOL = icotool +FAKEEXT = $(DLLEXT:.so=.fake) +INCLUDES = -I$(SRCDIR) -I. -I$(TOPSRCDIR)/include -I$(TOPOBJDIR)/include $(EXTRAINCL) +EXTRACFLAGS = -Wall -pipe -fno-strict-aliasing -Wdeclaration-after-statement -Wstrict-prototypes -Wwrite-strings -Wtype-limits -Wpointer-arith +ALLCFLAGS = $(INCLUDES) $(DEFS) $(DLLFLAGS) $(EXTRACFLAGS) $(CPPFLAGS) $(CFLAGS) $(MODCFLAGS) +ALLLINTFLAGS = $(INCLUDES) $(DEFS) $(LINTFLAGS) +IDLFLAGS = $(INCLUDES) $(DEFS) $(EXTRAIDLFLAGS) +TARGETFLAGS = -m32 +WINEBUILDFLAGS = $(TARGETFLAGS) $(DLLFLAGS) +MKINSTALLDIRS= $(TOPSRCDIR)/tools/mkinstalldirs -m 755 +WINAPI_CHECK = $(TOPSRCDIR)/tools/winapi/winapi_check +WINEWRAPPER = $(TOPSRCDIR)/tools/winewrapper +C2MAN = $(TOPSRCDIR)/tools/c2man.pl +RUNTEST = $(TOPSRCDIR)/tools/runtest +WINEBUILD = $(TOOLSDIR)/tools/winebuild/winebuild$(TOOLSEXT) +MAKEDEP = $(TOOLSDIR)/tools/makedep$(TOOLSEXT) +MAKECTESTS = $(TOOLSDIR)/tools/make_ctests$(TOOLSEXT) +WRC = $(TOOLSDIR)/tools/wrc/wrc$(TOOLSEXT) +WMC = $(TOOLSDIR)/tools/wmc/wmc$(TOOLSEXT) +WIDL = $(TOOLSDIR)/tools/widl/widl$(TOOLSEXT) +WINEGCC = $(TOOLSDIR)/tools/winegcc/winegcc $(TARGETFLAGS) -B$(TOOLSDIR)/tools/winebuild --sysroot=$(TOPOBJDIR) +RELPATH = $(TOOLSDIR)/tools/relpath$(TOOLSEXT) +SFNT2FNT = $(TOOLSDIR)/tools/sfnt2fnt$(TOOLSEXT) +RC = $(WRC) +RC16 = $(WRC) +RCFLAGS = --nostdinc $(INCLUDES) $(DEFS) $(EXTRARCFLAGS) +RC16FLAGS = -O res16 $(RCFLAGS) +LDPATH = LD_LIBRARY_PATH="$(TOOLSDIR)/libs/wine:$$LD_LIBRARY_PATH" +DLLDIR = $(TOPOBJDIR)/dlls +LIBPORT = $(TOPOBJDIR)/libs/port/libwine_port.a +LIBWPP = $(TOPOBJDIR)/libs/wpp/libwpp.a +LIBWINE = -L$(TOPOBJDIR)/libs/wine -lwine +LDRPATH_INSTALL = -Wl,--rpath,\$$ORIGIN/`$(RELPATH) $(bindir) $(libdir)` -Wl,--enable-new-dtags +LDRPATH_LOCAL = -Wl,--rpath,\$$ORIGIN/$(TOPOBJDIR)/libs/wine + + + +# Installation infos + +INSTALL = /usr/bin/install -c $(INSTALL_FLAGS) +INSTALL_PROGRAM = ${INSTALL} $(INSTALL_PROGRAM_FLAGS) +INSTALL_SCRIPT = ${INSTALL} $(INSTALL_SCRIPT_FLAGS) +INSTALL_DATA = ${INSTALL} -m 644 $(INSTALL_DATA_FLAGS) +prefix = /usr/local +exec_prefix = ${prefix} +bindir = ${exec_prefix}/bin +libdir = ${exec_prefix}/lib +datarootdir = ${prefix}/share +datadir = ${datarootdir} +infodir = ${datarootdir}/info +mandir = ${datarootdir}/man +sysconfdir = ${prefix}/etc +includedir = ${prefix}/include/wine +dlldir = ${exec_prefix}/lib/wine +fakedlldir = $(dlldir)/fakedlls +prog_manext = 1 +api_manext = 3w +conf_manext = 5 +CLEAN_FILES = *.o *.a *.so *.ln *.res *.fake *.$(LIBEXT) \\\#*\\\# *~ *% .\\\#* *.bak *.orig *.rej *.flc core + +IDL_GEN_C_SRCS = $(IDL_C_SRCS:.idl=_c.c) $(IDL_I_SRCS:.idl=_i.c) \ + $(IDL_P_SRCS:.idl=_p.c) $(IDL_S_SRCS:.idl=_s.c) +IDL_GEN_HEADERS = $(IDL_H_SRCS:.idl=.h) $(IDL_C_SRCS:.idl=.h) $(IDL_I_SRCS:.idl=.h) \ + $(IDL_P_SRCS:.idl=.h) $(IDL_S_SRCS:.idl=.h) + +CLEAN_TARGETS = $(IDL_GEN_C_SRCS) $(IDL_GEN_HEADERS) $(IDL_TLB_SRCS:.idl=.tlb) $(IDL_P_SRCS:%=dlldata.c) \ + $(BISON_SRCS:.y=.tab.c) $(BISON_SRCS:.y=.tab.h) $(LEX_SRCS:.l=.yy.c) $(MC_SRCS:.mc=.mc.rc) + +OBJS = $(C_SRCS:.c=.o) $(BISON_SRCS:.y=.tab.o) $(LEX_SRCS:.l=.yy.o) $(IDL_GEN_C_SRCS:.c=.o) \ + $(RC_SRCS:.rc=.res) $(MC_SRCS:.mc=.mc.res) $(EXTRA_OBJS) + +LINTS = $(C_SRCS:.c=.ln) + +# 'all' target first in case the enclosing Makefile didn't define any target + +all: + +filter: dummy + @$(TOPSRCDIR)/tools/winapi/make_filter --make $(MAKE) all + +.PHONY: all filter + +# Implicit rules + +.SUFFIXES: .mc .rc .mc.rc .res .spec .spec.o .idl .tlb .h .y .l .tab.c .tab.h .yy.c .ok .man.in .man _c.c _i.c _p.c _s.c # .sfd .ttf .svg .ico + +.c.o: + $(CC) -c $(ALLCFLAGS) -o $@ $< + +.y.tab.c: + $(BISON) $(BISONFLAGS) -p $*_ -o $@ $< + +.y.tab.h: + $(BISON) $(BISONFLAGS) -p $*_ -o $*.tab.c -d $< + +.l.yy.c: + $(FLEX) $(LEXFLAGS) -o$@ $< + +.mc.mc.rc: + $(LDPATH) $(WMC) -i -U -H /dev/null -o $@ $< + +.rc.res: + $(LDPATH) $(RC) $(RCFLAGS) -fo$@ $< + +.spec.spec.o: + $(WINEBUILD) $(WINEBUILDFLAGS) --dll -o $@ --main-module $(MODULE) --export $< + +.idl.h: + $(WIDL) $(IDLFLAGS) -h -H $@ $< + +.idl_c.c: + $(WIDL) $(IDLFLAGS) -c -C $@ $< + +.idl_i.c: + $(WIDL) $(IDLFLAGS) -u -U $@ $< + +.idl_p.c: + $(WIDL) $(IDLFLAGS) -p -P $@ $< + +.idl_s.c: + $(WIDL) $(IDLFLAGS) -s -S $@ $< + +.idl.tlb: + $(WIDL) $(TARGETFLAGS) $(IDLFLAGS) -t -T $@ $< + +.c.ln: + $(LINT) -c $(ALLLINTFLAGS) $< || ( $(RM) $@ && exit 1 ) + +.c.ok: + $(RUNTEST) $(RUNTESTFLAGS) $< && touch $@ + +.sfd.ttf: + $(FONTFORGE) -script $(TOPSRCDIR)/fonts/genttf.ff $< $@ + +.man.in.man: + LC_ALL=C sed -e 's,@bindir\@,$(bindir),g' -e 's,@dlldir\@,$(dlldir),g' -e 's,@PACKAGE_STRING\@,Wine 1.1.35,g' $< >$@ || ($(RM) $@ && false) + +.svg.ico: + $(RSVG) -w 16 -h 16 -f png $< $*-16.png + $(RSVG) -w 32 -h 32 -f png $< $*-32.png + $(RSVG) -w 48 -h 48 -f png $< $*-48.png + $(ICOTOOL) -c -o $@ $*-16.png $*-32.png $*-48.png + $(RM) $*-16.png $*-32.png $*-48.png + +# Rules for IDL files + +dlldata.c: $(WIDL) Makefile.in + $(WIDL) $(IDLFLAGS) --dlldata-only --dlldata=$@ $(IDL_P_SRCS) + +# Rule for linting + +$(MODULE).ln : $(LINTS) + if test "$(LINTS)" ; \ + then \ + $(LINT) $(ALLLINTFLAGS) -o$(MODULE) $(LINTS) ; \ + $(MV) llib-l$(MODULE).ln $(MODULE).ln ; \ + else \ + $(LINT) $(ALLLINTFLAGS) -C$(MODULE) /dev/null ; \ + fi + +lint:: $(MODULE).ln + +# Rules for Windows API checking + +winapi_check:: dummy + $(WINAPI_CHECK) $(WINAPI_CHECK_FLAGS) $(WINAPI_CHECK_EXTRA_FLAGS) . + +.PHONY: winapi_check + +# Rules for dependencies + +DEPEND_SRCS = $(C_SRCS) $(C_SRCS16) $(RC_SRCS) $(RC_SRCS16) $(MC_SRCS) \ + $(IDL_H_SRCS) $(IDL_C_SRCS) $(IDL_I_SRCS) $(IDL_P_SRCS) $(IDL_S_SRCS) \ + $(IDL_GEN_C_SRCS) $(IDL_TLB_SRCS) $(IDL_TLB_SRCS:.idl=.tlb) \ + $(BISON_SRCS) $(LEX_SRCS) $(EXTRA_SRCS) + +$(SUBDIRS:%=%/__depend__): dummy + @cd `dirname $@` && $(MAKE) depend + +depend: $(SUBDIRS:%=%/__depend__) dummy + $(MAKEDEP) $(MAKEDEPFLAGS) -C$(SRCDIR) -S$(TOPSRCDIR) -T$(TOPOBJDIR) $(EXTRAINCL) $(DEPEND_SRCS) + +.PHONY: depend $(SUBDIRS:%=%/__depend__) + +# Rules for cleaning + +$(SUBDIRS:%=%/__clean__): dummy + @cd `dirname $@` && $(MAKE) clean + +$(EXTRASUBDIRS:%=%/__clean__): dummy + -cd `dirname $@` && $(RM) $(CLEAN_FILES) + +clean:: $(SUBDIRS:%=%/__clean__) $(EXTRASUBDIRS:%=%/__clean__) + $(RM) $(CLEAN_FILES) $(CLEAN_TARGETS) $(PROGRAMS) $(MANPAGES) + +.PHONY: clean $(SUBDIRS:%=%/__clean__) $(EXTRASUBDIRS:%=%/__clean__) + +# Rules for installing + +$(SUBDIRS:%=%/__install__): dummy + @cd `dirname $@` && $(MAKE) install + +$(SUBDIRS:%=%/__install-lib__): dummy + @cd `dirname $@` && $(MAKE) install-lib + +$(SUBDIRS:%=%/__install-dev__): dummy + @cd `dirname $@` && $(MAKE) install-dev + +$(SUBDIRS:%=%/__uninstall__): dummy + @cd `dirname $@` && $(MAKE) uninstall + +install:: $(INSTALLSUBDIRS:%=%/__install__) dummy +install-lib:: $(INSTALLSUBDIRS:%=%/__install-lib__) dummy +install-dev:: $(INSTALLSUBDIRS:%=%/__install-dev__) dummy +uninstall:: $(INSTALLSUBDIRS:%=%/__uninstall__) dummy + +$(INSTALLDIRS): + $(MKINSTALLDIRS) $@ + +.PHONY: install install-lib install-dev uninstall \ + $(SUBDIRS:%=%/__install__) $(SUBDIRS:%=%/__uninstall__) \ + $(SUBDIRS:%=%/__install-lib__) $(SUBDIRS:%=%/__install-dev__) + +# Rules for testing + +$(TESTSUBDIRS:%=%/__test__): dummy + @cd `dirname $@` && $(MAKE) test + +$(TESTSUBDIRS:%=%/__crosstest__): dummy + @cd `dirname $@` && $(MAKE) crosstest + +$(TESTSUBDIRS:%=%/__testclean__): dummy + @cd `dirname $@` && $(MAKE) testclean + +check test:: $(TESTSUBDIRS:%=%/__test__) dummy + +crosstest:: $(TESTSUBDIRS:%=%/__crosstest__) dummy + +testclean:: $(TESTSUBDIRS:%=%/__testclean__) dummy + +.PHONY: check test testclean crosstest $(TESTSUBDIRS:%=%/__test__) $(TESTSUBDIRS:%=%/__crosstest__) $(TESTSUBDIRS:%=%/__testclean__) + +# Rules for auto documentation + +$(DOCSUBDIRS:%=%/__man__): dummy + @cd `dirname $@` && $(MAKE) man + +$(DOCSUBDIRS:%=%/__doc_html__): dummy + @cd `dirname $@` && $(MAKE) doc-html + +$(DOCSUBDIRS:%=%/__doc_sgml__): dummy + @cd `dirname $@` && $(MAKE) doc-sgml + +$(DOCSUBDIRS:%=%/__doc_xml__): dummy + @cd `dirname $@` && $(MAKE) doc-xml + +man: $(DOCSUBDIRS:%=%/__man__) +doc-html: $(DOCSUBDIRS:%=%/__doc_html__) +doc-sgml: $(DOCSUBDIRS:%=%/__doc_sgml__) +doc-xml: $(DOCSUBDIRS:%=%/__doc_xml__) + +.PHONY: man doc-html doc-sgml doc-xml $(DOCSUBDIRS:%=%/__man__) $(DOCSUBDIRS:%=%/__doc_html__) $(DOCSUBDIRS:%=%/__doc_sgml__) $(DOCSUBDIRS:%=%/__doc_xml__) + +# Misc. rules + +$(MC_SRCS:.mc=.mc.rc): $(WMC) + +$(IDL_GEN_HEADERS) $(IDL_GEN_C_SRCS) $(IDL_TLB_SRCS:.idl=.tlb): $(WIDL) + +$(RC_SRCS:.rc=.res) $(MC_SRCS:.mc=.mc.res) $(RC_SRCS16:.rc=.res): $(WRC) + +$(SUBDIRS): dummy + @cd $@ && $(MAKE) + +dummy: + +.PHONY: dummy $(SUBDIRS) + +# End of global rules + +all: $(MODULE)$(DLLEXT) $(MODULE)$(FAKEEXT) $(SUBDIRS) + +$(MODULE) $(MODULE).so $(MODULE).fake: $(MAINSPEC) $(ALL_OBJS) Makefile.in + $(WINEGCC) -shared $(SRCDIR)/$(MAINSPEC) $(ALL_OBJS) $(EXTRADLLFLAGS) -o $@ $(DELAYIMPORTS:%=-l%) $(IMPORTS:%=-l%) $(DELAYIMPORTS:%=-Wb,-d%) $(ALL_LIBS) + +# Rules for import libraries + +.PHONY: implib $(IMPLIB_SRCS:%=__static_implib__%) + +all implib: $(IMPORTLIBFILE) $(IMPLIB_SRCS:%=__static_implib__%) + +$(IMPLIB_SRCS:%=__static_implib__%): $(STATICIMPLIB) + +$(SPEC_DEF) $(IMPORTLIB:%=lib%.def): $(MAINSPEC) + $(WINEBUILD) $(TARGETFLAGS) -w --def -o $@ --export $(SRCDIR)/$(MAINSPEC) + +$(IMPORTLIB:%=lib%.def.a): $(IMPLIB_OBJS) + $(RM) $@ + $(AR) $(ARFLAGS) $@ $(IMPLIB_OBJS) + $(RANLIB) $@ + +$(IMPORTLIB:%=lib%.a): $(SPEC_DEF) $(IMPLIB_OBJS) + $(DLLTOOL) -k -l $@ -d $(SPEC_DEF) + $(MINGWAR) rs $@ $(IMPLIB_OBJS) + +$(SUBDIRS): implib + +# Rules for testing + +check test:: $(SUBDIRS:%=%/__test__) dummy + +crosstest:: $(SUBDIRS:%=%/__crosstest__) dummy + +# Rules for auto documentation + +man: $(C_SRCS) dummy + $(C2MAN) -o $(TOPOBJDIR)/documentation/man$(api_manext) -R$(TOPOBJDIR) -C$(SRCDIR) -S$(api_manext) $(INCLUDES) $(MAINSPEC:%=-w %) $(SPEC_SRCS16:%=-w %) $(C_SRCS) $(C_SRCS16) + +doc-html: $(C_SRCS) dummy + $(C2MAN) -o $(TOPOBJDIR)/documentation/html -R$(TOPOBJDIR) -C$(SRCDIR) $(INCLUDES) -Th $(MAINSPEC:%=-w %) $(SPEC_SRCS16:%=-w %) $(C_SRCS) $(C_SRCS16) + +doc-sgml: $(C_SRCS) dummy + $(C2MAN) -o $(TOPOBJDIR)/documentation/api-guide -R$(TOPOBJDIR) -C$(SRCDIR) $(INCLUDES) -Ts $(MAINSPEC:%=-w %) $(SPEC_SRCS16:%=-w %) $(C_SRCS) $(C_SRCS16) + +doc-xml: $(C_SRCS) dummy + $(C2MAN) -o $(TOPOBJDIR)/documentation/api-guide-xml -R$(TOPOBJDIR) -C$(SRCDIR) $(INCLUDES) -Tx $(MAINSPEC:%=-w %) $(SPEC_SRCS16:%=-w %) $(C_SRCS) $(C_SRCS16) + +.PHONY: man doc-html doc-sgml doc-xml + +# Rules for installation + +.PHONY: install_static_implib_def install_static_implib_a +.PHONY: $(IMPORTLIB:%=_install_/%) $(IMPLIB_SRCS:%=_install_static_implib_/%) + +$(IMPORTLIB:%=_install_/%): $(IMPORTLIBFILE) $(DESTDIR)$(dlldir) dummy + $(INSTALL_DATA) $(IMPORTLIBFILE) $(DESTDIR)$(dlldir)/$(IMPORTLIBFILE) + +install_static_implib_def: $(STATICIMPLIB) $(DESTDIR)$(dlldir) dummy + $(INSTALL_DATA) $(STATICIMPLIB) $(DESTDIR)$(dlldir)/$(STATICIMPLIB) + +install_static_implib_a: + +$(IMPLIB_SRCS:%=_install_static_implib_/%): install_static_implib_$(IMPLIBEXT) + +.PHONY: install_dll install_dll.so install_dll.fake + +install_dll: $(MODULE) $(DESTDIR)$(dlldir) dummy + $(INSTALL_PROGRAM) $(MODULE) $(DESTDIR)$(dlldir)/$(MODULE) + +install_dll.so: $(MODULE).so $(DESTDIR)$(dlldir) dummy + $(INSTALL_PROGRAM) $(MODULE).so $(DESTDIR)$(dlldir)/$(MODULE).so + +install_dll.fake: $(MODULE).fake $(DESTDIR)$(fakedlldir) dummy + $(INSTALL_DATA) $(MODULE).fake $(DESTDIR)$(fakedlldir)/$(MODULE) + +install install-lib:: install_dll$(DLLEXT) install_dll$(FAKEEXT) + +install install-dev:: $(IMPORTLIB:%=_install_/%) $(IMPLIB_SRCS:%=_install_static_implib_/%) dummy + +uninstall:: + -cd $(DESTDIR)$(dlldir) && $(RM) $(MODULE)$(DLLEXT) $(IMPORTLIBFILE) $(STATICIMPLIB) + $(RM) $(DESTDIR)$(fakedlldir)/$(MODULE) + +# Misc. rules + +clean:: + $(RM) $(SPEC_DEF) $(IMPORTLIBFILE) + +$(SPEC_DEF) $(SPEC_SRCS16:.spec=.spec.o): $(WINEBUILD) + +# End of global dll rules + +### Dependencies: + +.INIT: Makefile +.BEGIN: Makefile +.MAKEFILEDEPS: +Makefile: dummy + -$(MAKEDEP) $(MAKEDEPFLAGS) -C$(SRCDIR) -S$(TOPSRCDIR) -T$(TOPOBJDIR) $(EXTRAINCL) $(DEPEND_SRCS) + +$(OBJS) $(C_SRCS16:.c=.o): $(IDL_GEN_HEADERS) +$(IDL_GEN_C_SRCS:.c=.o): $(IDL_GEN_C_SRCS) +$(RC_SRCS:.rc=.res): $(IDL_TLB_SRCS:.idl=.tlb) +$(LEX_SRCS:.l=.yy.o): $(LEX_SRCS:.l=.yy.c) +$(BISON_SRCS:.y=.tab.o): $(BISON_SRCS:.y=.tab.c) # everything below this line is overwritten by make depend diff -rupN wine-1.5.19/dlls/winequartz.drv/Makefile wine-silverlight-1.5.19/dlls/winequartz.drv/Makefile --- wine-1.5.19/dlls/winequartz.drv/Makefile 1969-12-31 16:00:00.000000000 -0800 +++ wine-silverlight-1.5.19/dlls/winequartz.drv/Makefile 2012-12-20 18:16:39.222918723 -0800 @@ -0,0 +1,474 @@ +TOPSRCDIR = ../.. +TOPOBJDIR = ../.. +SRCDIR = . + +MODULE = winequartz.drv +IMPORTS = user32 gdi32 advapi32 kernel32 ntdll + +C_SRCS = \ + quartzdrv_main.c + +# Global rules for building dlls -*-Makefile-*- +# +# Each individual makefile should define the following variables: +# MODULE : name of the main module being built +# EXTRALIBS : extra libraries to link in (optional) +# SPEC_SRCS16 : interface definition files for 16-bit dlls (optional) +# +# plus all variables required by the global Make.rules.in +# + +DLLFLAGS = -D_REENTRANT -fPIC +MINGWAR = i586-mingw32msvc-ar +DEFS = -D__WINESRC__ $(EXTRADEFS) +BASEMODULE = $(MODULE:%.dll=%) +MAINSPEC = $(BASEMODULE).spec +SPEC_DEF = $(BASEMODULE).def +WIN16_FILES = $(SPEC_SRCS16:.spec=.spec.o) $(C_SRCS16:.c=.o) $(EXTRA_OBJS16) +ALL_OBJS = $(WIN16_FILES) $(OBJS) +ALL_LIBS = $(LIBPORT) $(EXTRALIBS) $(LDFLAGS) $(LIBS) +IMPLIB_OBJS = $(IMPLIB_SRCS:.c=.o) +IMPORTLIBFILE = $(IMPORTLIB:%=lib%.def) +STATICIMPLIB = $(IMPORTLIBFILE:.def=.def.a) +DLL_LDPATH = -L$(DLLDIR) $(DELAYIMPORTS:%=-L$(DLLDIR)/%) $(IMPORTS:%=-L$(DLLDIR)/%) +INSTALLDIRS = $(DESTDIR)$(dlldir) $(DESTDIR)$(fakedlldir) $(DESTDIR)$(datadir)/wine + +# Global rules shared by all makefiles -*-Makefile-*- +# +# Each individual makefile must define the following variables: +# TOPSRCDIR : top-level source directory +# TOPOBJDIR : top-level object directory +# SRCDIR : source directory for this module +# MODULE : name of the module being built +# +# Each individual makefile may define the following additional variables: +# C_SRCS : C sources for the module +# C_SRCS16 : 16-bit C sources for the module +# RC_SRCS : resource source files +# EXTRA_SRCS : extra source files for make depend +# EXTRA_OBJS : extra object files +# IMPORTS : dlls to import +# DELAYIMPORTS : dlls to import in delayed mode +# SUBDIRS : subdirectories that contain a Makefile +# EXTRASUBDIRS : subdirectories that do not contain a Makefile +# INSTALLSUBDIRS : subdirectories to run make install/uninstall into +# MODCFLAGS : extra CFLAGS for this module + +# First some useful definitions + +SHELL = /bin/sh +CC = ccache gcc -m32 +CFLAGS = -g -O2 +CPPFLAGS = +LIBS = +BISON = bison +FLEX = flex +EXEEXT = +OBJEXT = o +LIBEXT = so +DLLEXT = .so +TOOLSEXT = +IMPLIBEXT = def +LDSHARED = $(CC) -shared $(SONAME:%=-Wl,-soname,%) $(VERSCRIPT:%=-Wl,--version-script=%) +DLLTOOL = i586-mingw32msvc-dlltool +DLLWRAP = +AR = ar +ARFLAGS = rc +RANLIB = ranlib +STRIP = strip +LN = ln +LN_S = ln -s +TOOLSDIR = $(TOPOBJDIR) +LDFLAGS = +PRELINK = /usr/sbin/prelink +RM = rm -f +MV = mv +LINT = +LINTFLAGS = +FONTFORGE = fontforge +RSVG = false +ICOTOOL = icotool +FAKEEXT = $(DLLEXT:.so=.fake) +INCLUDES = -I$(SRCDIR) -I. -I$(TOPSRCDIR)/include -I$(TOPOBJDIR)/include $(EXTRAINCL) +EXTRACFLAGS = -Wall -pipe -fno-strict-aliasing -Wdeclaration-after-statement -Wstrict-prototypes -Wwrite-strings -Wtype-limits -Wpointer-arith +ALLCFLAGS = $(INCLUDES) $(DEFS) $(DLLFLAGS) $(EXTRACFLAGS) $(CPPFLAGS) $(CFLAGS) $(MODCFLAGS) +ALLLINTFLAGS = $(INCLUDES) $(DEFS) $(LINTFLAGS) +IDLFLAGS = $(INCLUDES) $(DEFS) $(EXTRAIDLFLAGS) +TARGETFLAGS = -m32 +WINEBUILDFLAGS = $(TARGETFLAGS) $(DLLFLAGS) +MKINSTALLDIRS= $(TOPSRCDIR)/tools/mkinstalldirs -m 755 +WINAPI_CHECK = $(TOPSRCDIR)/tools/winapi/winapi_check +WINEWRAPPER = $(TOPSRCDIR)/tools/winewrapper +C2MAN = $(TOPSRCDIR)/tools/c2man.pl +RUNTEST = $(TOPSRCDIR)/tools/runtest +WINEBUILD = $(TOOLSDIR)/tools/winebuild/winebuild$(TOOLSEXT) +MAKEDEP = $(TOOLSDIR)/tools/makedep$(TOOLSEXT) +MAKECTESTS = $(TOOLSDIR)/tools/make_ctests$(TOOLSEXT) +WRC = $(TOOLSDIR)/tools/wrc/wrc$(TOOLSEXT) +WMC = $(TOOLSDIR)/tools/wmc/wmc$(TOOLSEXT) +WIDL = $(TOOLSDIR)/tools/widl/widl$(TOOLSEXT) +WINEGCC = $(TOOLSDIR)/tools/winegcc/winegcc $(TARGETFLAGS) -B$(TOOLSDIR)/tools/winebuild --sysroot=$(TOPOBJDIR) +RELPATH = $(TOOLSDIR)/tools/relpath$(TOOLSEXT) +SFNT2FNT = $(TOOLSDIR)/tools/sfnt2fnt$(TOOLSEXT) +RC = $(WRC) +RC16 = $(WRC) +RCFLAGS = --nostdinc $(INCLUDES) $(DEFS) $(EXTRARCFLAGS) +RC16FLAGS = -O res16 $(RCFLAGS) +LDPATH = LD_LIBRARY_PATH="$(TOOLSDIR)/libs/wine:$$LD_LIBRARY_PATH" +DLLDIR = $(TOPOBJDIR)/dlls +LIBPORT = $(TOPOBJDIR)/libs/port/libwine_port.a +LIBWPP = $(TOPOBJDIR)/libs/wpp/libwpp.a +LIBWINE = -L$(TOPOBJDIR)/libs/wine -lwine +LDRPATH_INSTALL = -Wl,--rpath,\$$ORIGIN/`$(RELPATH) $(bindir) $(libdir)` -Wl,--enable-new-dtags +LDRPATH_LOCAL = -Wl,--rpath,\$$ORIGIN/$(TOPOBJDIR)/libs/wine + + + +# Installation infos + +INSTALL = /usr/bin/install -c $(INSTALL_FLAGS) +INSTALL_PROGRAM = ${INSTALL} $(INSTALL_PROGRAM_FLAGS) +INSTALL_SCRIPT = ${INSTALL} $(INSTALL_SCRIPT_FLAGS) +INSTALL_DATA = ${INSTALL} -m 644 $(INSTALL_DATA_FLAGS) +prefix = /usr/local +exec_prefix = ${prefix} +bindir = ${exec_prefix}/bin +libdir = ${exec_prefix}/lib +datarootdir = ${prefix}/share +datadir = ${datarootdir} +infodir = ${datarootdir}/info +mandir = ${datarootdir}/man +sysconfdir = ${prefix}/etc +includedir = ${prefix}/include/wine +dlldir = ${exec_prefix}/lib/wine +fakedlldir = $(dlldir)/fakedlls +prog_manext = 1 +api_manext = 3w +conf_manext = 5 +CLEAN_FILES = *.o *.a *.so *.ln *.res *.fake *.$(LIBEXT) \\\#*\\\# *~ *% .\\\#* *.bak *.orig *.rej *.flc core + +IDL_GEN_C_SRCS = $(IDL_C_SRCS:.idl=_c.c) $(IDL_I_SRCS:.idl=_i.c) \ + $(IDL_P_SRCS:.idl=_p.c) $(IDL_S_SRCS:.idl=_s.c) +IDL_GEN_HEADERS = $(IDL_H_SRCS:.idl=.h) $(IDL_C_SRCS:.idl=.h) $(IDL_I_SRCS:.idl=.h) \ + $(IDL_P_SRCS:.idl=.h) $(IDL_S_SRCS:.idl=.h) + +CLEAN_TARGETS = $(IDL_GEN_C_SRCS) $(IDL_GEN_HEADERS) $(IDL_TLB_SRCS:.idl=.tlb) $(IDL_P_SRCS:%=dlldata.c) \ + $(BISON_SRCS:.y=.tab.c) $(BISON_SRCS:.y=.tab.h) $(LEX_SRCS:.l=.yy.c) $(MC_SRCS:.mc=.mc.rc) + +OBJS = $(C_SRCS:.c=.o) $(BISON_SRCS:.y=.tab.o) $(LEX_SRCS:.l=.yy.o) $(IDL_GEN_C_SRCS:.c=.o) \ + $(RC_SRCS:.rc=.res) $(MC_SRCS:.mc=.mc.res) $(EXTRA_OBJS) + +LINTS = $(C_SRCS:.c=.ln) + +# 'all' target first in case the enclosing Makefile didn't define any target + +all: + +filter: dummy + @$(TOPSRCDIR)/tools/winapi/make_filter --make $(MAKE) all + +.PHONY: all filter + +# Implicit rules + +.SUFFIXES: .mc .rc .mc.rc .res .spec .spec.o .idl .tlb .h .y .l .tab.c .tab.h .yy.c .ok .man.in .man _c.c _i.c _p.c _s.c # .sfd .ttf .svg .ico + +.c.o: + $(CC) -c $(ALLCFLAGS) -o $@ $< + +.y.tab.c: + $(BISON) $(BISONFLAGS) -p $*_ -o $@ $< + +.y.tab.h: + $(BISON) $(BISONFLAGS) -p $*_ -o $*.tab.c -d $< + +.l.yy.c: + $(FLEX) $(LEXFLAGS) -o$@ $< + +.mc.mc.rc: + $(LDPATH) $(WMC) -i -U -H /dev/null -o $@ $< + +.rc.res: + $(LDPATH) $(RC) $(RCFLAGS) -fo$@ $< + +.spec.spec.o: + $(WINEBUILD) $(WINEBUILDFLAGS) --dll -o $@ --main-module $(MODULE) --export $< + +.idl.h: + $(WIDL) $(IDLFLAGS) -h -H $@ $< + +.idl_c.c: + $(WIDL) $(IDLFLAGS) -c -C $@ $< + +.idl_i.c: + $(WIDL) $(IDLFLAGS) -u -U $@ $< + +.idl_p.c: + $(WIDL) $(IDLFLAGS) -p -P $@ $< + +.idl_s.c: + $(WIDL) $(IDLFLAGS) -s -S $@ $< + +.idl.tlb: + $(WIDL) $(TARGETFLAGS) $(IDLFLAGS) -t -T $@ $< + +.c.ln: + $(LINT) -c $(ALLLINTFLAGS) $< || ( $(RM) $@ && exit 1 ) + +.c.ok: + $(RUNTEST) $(RUNTESTFLAGS) $< && touch $@ + +.sfd.ttf: + $(FONTFORGE) -script $(TOPSRCDIR)/fonts/genttf.ff $< $@ + +.man.in.man: + LC_ALL=C sed -e 's,@bindir\@,$(bindir),g' -e 's,@dlldir\@,$(dlldir),g' -e 's,@PACKAGE_STRING\@,Wine 1.1.35,g' $< >$@ || ($(RM) $@ && false) + +.svg.ico: + $(RSVG) -w 16 -h 16 -f png $< $*-16.png + $(RSVG) -w 32 -h 32 -f png $< $*-32.png + $(RSVG) -w 48 -h 48 -f png $< $*-48.png + $(ICOTOOL) -c -o $@ $*-16.png $*-32.png $*-48.png + $(RM) $*-16.png $*-32.png $*-48.png + +# Rules for IDL files + +dlldata.c: $(WIDL) Makefile.in + $(WIDL) $(IDLFLAGS) --dlldata-only --dlldata=$@ $(IDL_P_SRCS) + +# Rule for linting + +$(MODULE).ln : $(LINTS) + if test "$(LINTS)" ; \ + then \ + $(LINT) $(ALLLINTFLAGS) -o$(MODULE) $(LINTS) ; \ + $(MV) llib-l$(MODULE).ln $(MODULE).ln ; \ + else \ + $(LINT) $(ALLLINTFLAGS) -C$(MODULE) /dev/null ; \ + fi + +lint:: $(MODULE).ln + +# Rules for Windows API checking + +winapi_check:: dummy + $(WINAPI_CHECK) $(WINAPI_CHECK_FLAGS) $(WINAPI_CHECK_EXTRA_FLAGS) . + +.PHONY: winapi_check + +# Rules for dependencies + +DEPEND_SRCS = $(C_SRCS) $(C_SRCS16) $(RC_SRCS) $(RC_SRCS16) $(MC_SRCS) \ + $(IDL_H_SRCS) $(IDL_C_SRCS) $(IDL_I_SRCS) $(IDL_P_SRCS) $(IDL_S_SRCS) \ + $(IDL_GEN_C_SRCS) $(IDL_TLB_SRCS) $(IDL_TLB_SRCS:.idl=.tlb) \ + $(BISON_SRCS) $(LEX_SRCS) $(EXTRA_SRCS) + +$(SUBDIRS:%=%/__depend__): dummy + @cd `dirname $@` && $(MAKE) depend + +depend: $(SUBDIRS:%=%/__depend__) dummy + $(MAKEDEP) $(MAKEDEPFLAGS) -C$(SRCDIR) -S$(TOPSRCDIR) -T$(TOPOBJDIR) $(EXTRAINCL) $(DEPEND_SRCS) + +.PHONY: depend $(SUBDIRS:%=%/__depend__) + +# Rules for cleaning + +$(SUBDIRS:%=%/__clean__): dummy + @cd `dirname $@` && $(MAKE) clean + +$(EXTRASUBDIRS:%=%/__clean__): dummy + -cd `dirname $@` && $(RM) $(CLEAN_FILES) + +clean:: $(SUBDIRS:%=%/__clean__) $(EXTRASUBDIRS:%=%/__clean__) + $(RM) $(CLEAN_FILES) $(CLEAN_TARGETS) $(PROGRAMS) $(MANPAGES) + +.PHONY: clean $(SUBDIRS:%=%/__clean__) $(EXTRASUBDIRS:%=%/__clean__) + +# Rules for installing + +$(SUBDIRS:%=%/__install__): dummy + @cd `dirname $@` && $(MAKE) install + +$(SUBDIRS:%=%/__install-lib__): dummy + @cd `dirname $@` && $(MAKE) install-lib + +$(SUBDIRS:%=%/__install-dev__): dummy + @cd `dirname $@` && $(MAKE) install-dev + +$(SUBDIRS:%=%/__uninstall__): dummy + @cd `dirname $@` && $(MAKE) uninstall + +install:: $(INSTALLSUBDIRS:%=%/__install__) dummy +install-lib:: $(INSTALLSUBDIRS:%=%/__install-lib__) dummy +install-dev:: $(INSTALLSUBDIRS:%=%/__install-dev__) dummy +uninstall:: $(INSTALLSUBDIRS:%=%/__uninstall__) dummy + +$(INSTALLDIRS): + $(MKINSTALLDIRS) $@ + +.PHONY: install install-lib install-dev uninstall \ + $(SUBDIRS:%=%/__install__) $(SUBDIRS:%=%/__uninstall__) \ + $(SUBDIRS:%=%/__install-lib__) $(SUBDIRS:%=%/__install-dev__) + +# Rules for testing + +$(TESTSUBDIRS:%=%/__test__): dummy + @cd `dirname $@` && $(MAKE) test + +$(TESTSUBDIRS:%=%/__crosstest__): dummy + @cd `dirname $@` && $(MAKE) crosstest + +$(TESTSUBDIRS:%=%/__testclean__): dummy + @cd `dirname $@` && $(MAKE) testclean + +check test:: $(TESTSUBDIRS:%=%/__test__) dummy + +crosstest:: $(TESTSUBDIRS:%=%/__crosstest__) dummy + +testclean:: $(TESTSUBDIRS:%=%/__testclean__) dummy + +.PHONY: check test testclean crosstest $(TESTSUBDIRS:%=%/__test__) $(TESTSUBDIRS:%=%/__crosstest__) $(TESTSUBDIRS:%=%/__testclean__) + +# Rules for auto documentation + +$(DOCSUBDIRS:%=%/__man__): dummy + @cd `dirname $@` && $(MAKE) man + +$(DOCSUBDIRS:%=%/__doc_html__): dummy + @cd `dirname $@` && $(MAKE) doc-html + +$(DOCSUBDIRS:%=%/__doc_sgml__): dummy + @cd `dirname $@` && $(MAKE) doc-sgml + +$(DOCSUBDIRS:%=%/__doc_xml__): dummy + @cd `dirname $@` && $(MAKE) doc-xml + +man: $(DOCSUBDIRS:%=%/__man__) +doc-html: $(DOCSUBDIRS:%=%/__doc_html__) +doc-sgml: $(DOCSUBDIRS:%=%/__doc_sgml__) +doc-xml: $(DOCSUBDIRS:%=%/__doc_xml__) + +.PHONY: man doc-html doc-sgml doc-xml $(DOCSUBDIRS:%=%/__man__) $(DOCSUBDIRS:%=%/__doc_html__) $(DOCSUBDIRS:%=%/__doc_sgml__) $(DOCSUBDIRS:%=%/__doc_xml__) + +# Misc. rules + +$(MC_SRCS:.mc=.mc.rc): $(WMC) + +$(IDL_GEN_HEADERS) $(IDL_GEN_C_SRCS) $(IDL_TLB_SRCS:.idl=.tlb): $(WIDL) + +$(RC_SRCS:.rc=.res) $(MC_SRCS:.mc=.mc.res) $(RC_SRCS16:.rc=.res): $(WRC) + +$(SUBDIRS): dummy + @cd $@ && $(MAKE) + +dummy: + +.PHONY: dummy $(SUBDIRS) + +# End of global rules + +all: $(MODULE)$(DLLEXT) $(MODULE)$(FAKEEXT) $(SUBDIRS) + +$(MODULE) $(MODULE).so $(MODULE).fake: $(MAINSPEC) $(ALL_OBJS) Makefile.in + $(WINEGCC) -shared $(SRCDIR)/$(MAINSPEC) $(ALL_OBJS) $(EXTRADLLFLAGS) -o $@ $(DELAYIMPORTS:%=-l%) $(IMPORTS:%=-l%) $(DELAYIMPORTS:%=-Wb,-d%) $(ALL_LIBS) + +# Rules for import libraries + +.PHONY: implib $(IMPLIB_SRCS:%=__static_implib__%) + +all implib: $(IMPORTLIBFILE) $(IMPLIB_SRCS:%=__static_implib__%) + +$(IMPLIB_SRCS:%=__static_implib__%): $(STATICIMPLIB) + +$(SPEC_DEF) $(IMPORTLIB:%=lib%.def): $(MAINSPEC) + $(WINEBUILD) $(TARGETFLAGS) -w --def -o $@ --export $(SRCDIR)/$(MAINSPEC) + +$(IMPORTLIB:%=lib%.def.a): $(IMPLIB_OBJS) + $(RM) $@ + $(AR) $(ARFLAGS) $@ $(IMPLIB_OBJS) + $(RANLIB) $@ + +$(IMPORTLIB:%=lib%.a): $(SPEC_DEF) $(IMPLIB_OBJS) + $(DLLTOOL) -k -l $@ -d $(SPEC_DEF) + $(MINGWAR) rs $@ $(IMPLIB_OBJS) + +$(SUBDIRS): implib + +# Rules for testing + +check test:: $(SUBDIRS:%=%/__test__) dummy + +crosstest:: $(SUBDIRS:%=%/__crosstest__) dummy + +# Rules for auto documentation + +man: $(C_SRCS) dummy + $(C2MAN) -o $(TOPOBJDIR)/documentation/man$(api_manext) -R$(TOPOBJDIR) -C$(SRCDIR) -S$(api_manext) $(INCLUDES) $(MAINSPEC:%=-w %) $(SPEC_SRCS16:%=-w %) $(C_SRCS) $(C_SRCS16) + +doc-html: $(C_SRCS) dummy + $(C2MAN) -o $(TOPOBJDIR)/documentation/html -R$(TOPOBJDIR) -C$(SRCDIR) $(INCLUDES) -Th $(MAINSPEC:%=-w %) $(SPEC_SRCS16:%=-w %) $(C_SRCS) $(C_SRCS16) + +doc-sgml: $(C_SRCS) dummy + $(C2MAN) -o $(TOPOBJDIR)/documentation/api-guide -R$(TOPOBJDIR) -C$(SRCDIR) $(INCLUDES) -Ts $(MAINSPEC:%=-w %) $(SPEC_SRCS16:%=-w %) $(C_SRCS) $(C_SRCS16) + +doc-xml: $(C_SRCS) dummy + $(C2MAN) -o $(TOPOBJDIR)/documentation/api-guide-xml -R$(TOPOBJDIR) -C$(SRCDIR) $(INCLUDES) -Tx $(MAINSPEC:%=-w %) $(SPEC_SRCS16:%=-w %) $(C_SRCS) $(C_SRCS16) + +.PHONY: man doc-html doc-sgml doc-xml + +# Rules for installation + +.PHONY: install_static_implib_def install_static_implib_a +.PHONY: $(IMPORTLIB:%=_install_/%) $(IMPLIB_SRCS:%=_install_static_implib_/%) + +$(IMPORTLIB:%=_install_/%): $(IMPORTLIBFILE) $(DESTDIR)$(dlldir) dummy + $(INSTALL_DATA) $(IMPORTLIBFILE) $(DESTDIR)$(dlldir)/$(IMPORTLIBFILE) + +install_static_implib_def: $(STATICIMPLIB) $(DESTDIR)$(dlldir) dummy + $(INSTALL_DATA) $(STATICIMPLIB) $(DESTDIR)$(dlldir)/$(STATICIMPLIB) + +install_static_implib_a: + +$(IMPLIB_SRCS:%=_install_static_implib_/%): install_static_implib_$(IMPLIBEXT) + +.PHONY: install_dll install_dll.so install_dll.fake + +install_dll: $(MODULE) $(DESTDIR)$(dlldir) dummy + $(INSTALL_PROGRAM) $(MODULE) $(DESTDIR)$(dlldir)/$(MODULE) + +install_dll.so: $(MODULE).so $(DESTDIR)$(dlldir) dummy + $(INSTALL_PROGRAM) $(MODULE).so $(DESTDIR)$(dlldir)/$(MODULE).so + +install_dll.fake: $(MODULE).fake $(DESTDIR)$(fakedlldir) dummy + $(INSTALL_DATA) $(MODULE).fake $(DESTDIR)$(fakedlldir)/$(MODULE) + +install install-lib:: install_dll$(DLLEXT) install_dll$(FAKEEXT) + +install install-dev:: $(IMPORTLIB:%=_install_/%) $(IMPLIB_SRCS:%=_install_static_implib_/%) dummy + +uninstall:: + -cd $(DESTDIR)$(dlldir) && $(RM) $(MODULE)$(DLLEXT) $(IMPORTLIBFILE) $(STATICIMPLIB) + $(RM) $(DESTDIR)$(fakedlldir)/$(MODULE) + +# Misc. rules + +clean:: + $(RM) $(SPEC_DEF) $(IMPORTLIBFILE) + +$(SPEC_DEF) $(SPEC_SRCS16:.spec=.spec.o): $(WINEBUILD) + +# End of global dll rules + +### Dependencies: + +.INIT: Makefile +.BEGIN: Makefile +.MAKEFILEDEPS: +Makefile: dummy + -$(MAKEDEP) $(MAKEDEPFLAGS) -C$(SRCDIR) -S$(TOPSRCDIR) -T$(TOPOBJDIR) $(EXTRAINCL) $(DEPEND_SRCS) + +$(OBJS) $(C_SRCS16:.c=.o): $(IDL_GEN_HEADERS) +$(IDL_GEN_C_SRCS:.c=.o): $(IDL_GEN_C_SRCS) +$(RC_SRCS:.rc=.res): $(IDL_TLB_SRCS:.idl=.tlb) +$(LEX_SRCS:.l=.yy.o): $(LEX_SRCS:.l=.yy.c) +$(BISON_SRCS:.y=.tab.o): $(BISON_SRCS:.y=.tab.c) # everything below this line is overwritten by make depend diff -rupN wine-1.5.19/dlls/ws2_32/socket.c wine-silverlight-1.5.19/dlls/ws2_32/socket.c --- wine-1.5.19/dlls/ws2_32/socket.c 2012-12-07 11:17:32.000000000 -0800 +++ wine-silverlight-1.5.19/dlls/ws2_32/socket.c 2012-12-20 18:16:39.409573040 -0800 @@ -3386,10 +3386,18 @@ INT WINAPI WSAIoctl(SOCKET s, DWORD code } case WS_SIO_ADDRESS_LIST_CHANGE: - FIXME("-> SIO_ADDRESS_LIST_CHANGE request: stub\n"); - /* FIXME: error and return code depend on whether socket was created - * with WSA_FLAG_OVERLAPPED, but there is no easy way to get this */ + { + HANDLE handle; + + TRACE("-> SIO_ADDRESS_LIST_CHANGE request\n"); + + if (overlapped || _is_blocking(s)) + status = NotifyAddrChange(&handle, overlapped); + else + status = WSAEWOULDBLOCK; + overlapped = NULL; /* managed by NotifyAddrChange */ break; + } case WS_SIO_ADDRESS_LIST_QUERY: { diff -rupN wine-1.5.19/include/config.h.in wine-silverlight-1.5.19/include/config.h.in --- wine-1.5.19/include/config.h.in 2012-12-07 11:17:32.000000000 -0800 +++ wine-silverlight-1.5.19/include/config.h.in 2012-12-20 18:16:39.672888950 -0800 @@ -34,6 +34,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_ASM_TYPES_H +/* Define to 1 if you have the header file. */ +#undef HAVE_ATTR_XATTR_H + /* Define to 1 if you have the header file. */ #undef HAVE_AUDIOTOOLBOX_AUDIOCONVERTER_H @@ -1337,11 +1340,6 @@ /* Define to 1 if the X Window System is missing or not being used. */ #undef X_DISPLAY_MISSING -/* Enable large inode numbers on Mac OS X 10.5. */ -#ifndef _DARWIN_USE_64_BIT_INODE -# define _DARWIN_USE_64_BIT_INODE 1 -#endif - /* Number of bits in a file offset, on hosts where this is settable. */ #undef _FILE_OFFSET_BITS diff -rupN wine-1.5.19/include/winuser.h wine-silverlight-1.5.19/include/winuser.h --- wine-1.5.19/include/winuser.h 2012-12-07 11:17:32.000000000 -0800 +++ wine-silverlight-1.5.19/include/winuser.h 2012-12-20 18:16:39.629558484 -0800 @@ -2521,6 +2521,10 @@ typedef struct tagMINIMIZEDMETRICS { #define PM_QS_PAINT (QS_PAINT << 16) #define PM_QS_SENDMESSAGE (QS_SENDMESSAGE << 16) +/* SetTimer() limits */ +#define USER_TIMER_MINIMUM 0x0000000A +#define USER_TIMER_MAXIMUM 0x7FFFFFFF + /* AnimateWindow() flags */ #define AW_SLIDE 0x00040000 #define AW_ACTIVATE 0x00020000 diff -rupN wine-1.5.19/libs/Makefile wine-silverlight-1.5.19/libs/Makefile --- wine-1.5.19/libs/Makefile 1969-12-31 16:00:00.000000000 -0800 +++ wine-silverlight-1.5.19/libs/Makefile 2012-12-20 18:16:39.702886965 -0800 @@ -0,0 +1,353 @@ +TOPSRCDIR = .. +TOPOBJDIR = .. +SRCDIR = . + +MODULE = none + +SUBDIRS = \ + port \ + wine \ + wpp + +INSTALLSUBDIRS = \ + wine + +# Global rules shared by all makefiles -*-Makefile-*- +# +# Each individual makefile must define the following variables: +# TOPSRCDIR : top-level source directory +# TOPOBJDIR : top-level object directory +# SRCDIR : source directory for this module +# MODULE : name of the module being built +# +# Each individual makefile may define the following additional variables: +# C_SRCS : C sources for the module +# C_SRCS16 : 16-bit C sources for the module +# RC_SRCS : resource source files +# EXTRA_SRCS : extra source files for make depend +# EXTRA_OBJS : extra object files +# IMPORTS : dlls to import +# DELAYIMPORTS : dlls to import in delayed mode +# SUBDIRS : subdirectories that contain a Makefile +# EXTRASUBDIRS : subdirectories that do not contain a Makefile +# INSTALLSUBDIRS : subdirectories to run make install/uninstall into +# MODCFLAGS : extra CFLAGS for this module + +# First some useful definitions + +SHELL = /bin/sh +CC = ccache gcc -m32 +CFLAGS = -g -O2 +CPPFLAGS = +LIBS = +BISON = bison +FLEX = flex +EXEEXT = +OBJEXT = o +LIBEXT = so +DLLEXT = .so +TOOLSEXT = +IMPLIBEXT = def +LDSHARED = $(CC) -shared $(SONAME:%=-Wl,-soname,%) $(VERSCRIPT:%=-Wl,--version-script=%) +DLLTOOL = i586-mingw32msvc-dlltool +DLLWRAP = +AR = ar +ARFLAGS = rc +RANLIB = ranlib +STRIP = strip +LN = ln +LN_S = ln -s +TOOLSDIR = $(TOPOBJDIR) +LDFLAGS = +PRELINK = /usr/sbin/prelink +RM = rm -f +MV = mv +LINT = +LINTFLAGS = +FONTFORGE = fontforge +RSVG = false +ICOTOOL = icotool +FAKEEXT = $(DLLEXT:.so=.fake) +INCLUDES = -I$(SRCDIR) -I. -I$(TOPSRCDIR)/include -I$(TOPOBJDIR)/include $(EXTRAINCL) +EXTRACFLAGS = -Wall -pipe -fno-strict-aliasing -Wdeclaration-after-statement -Wstrict-prototypes -Wwrite-strings -Wtype-limits -Wpointer-arith +ALLCFLAGS = $(INCLUDES) $(DEFS) $(DLLFLAGS) $(EXTRACFLAGS) $(CPPFLAGS) $(CFLAGS) $(MODCFLAGS) +ALLLINTFLAGS = $(INCLUDES) $(DEFS) $(LINTFLAGS) +IDLFLAGS = $(INCLUDES) $(DEFS) $(EXTRAIDLFLAGS) +TARGETFLAGS = -m32 +WINEBUILDFLAGS = $(TARGETFLAGS) $(DLLFLAGS) +MKINSTALLDIRS= $(TOPSRCDIR)/tools/mkinstalldirs -m 755 +WINAPI_CHECK = $(TOPSRCDIR)/tools/winapi/winapi_check +WINEWRAPPER = $(TOPSRCDIR)/tools/winewrapper +C2MAN = $(TOPSRCDIR)/tools/c2man.pl +RUNTEST = $(TOPSRCDIR)/tools/runtest +WINEBUILD = $(TOOLSDIR)/tools/winebuild/winebuild$(TOOLSEXT) +MAKEDEP = $(TOOLSDIR)/tools/makedep$(TOOLSEXT) +MAKECTESTS = $(TOOLSDIR)/tools/make_ctests$(TOOLSEXT) +WRC = $(TOOLSDIR)/tools/wrc/wrc$(TOOLSEXT) +WMC = $(TOOLSDIR)/tools/wmc/wmc$(TOOLSEXT) +WIDL = $(TOOLSDIR)/tools/widl/widl$(TOOLSEXT) +WINEGCC = $(TOOLSDIR)/tools/winegcc/winegcc $(TARGETFLAGS) -B$(TOOLSDIR)/tools/winebuild --sysroot=$(TOPOBJDIR) +RELPATH = $(TOOLSDIR)/tools/relpath$(TOOLSEXT) +SFNT2FNT = $(TOOLSDIR)/tools/sfnt2fnt$(TOOLSEXT) +RC = $(WRC) +RC16 = $(WRC) +RCFLAGS = --nostdinc $(INCLUDES) $(DEFS) $(EXTRARCFLAGS) +RC16FLAGS = -O res16 $(RCFLAGS) +LDPATH = LD_LIBRARY_PATH="$(TOOLSDIR)/libs/wine:$$LD_LIBRARY_PATH" +DLLDIR = $(TOPOBJDIR)/dlls +LIBPORT = $(TOPOBJDIR)/libs/port/libwine_port.a +LIBWPP = $(TOPOBJDIR)/libs/wpp/libwpp.a +LIBWINE = -L$(TOPOBJDIR)/libs/wine -lwine +LDRPATH_INSTALL = -Wl,--rpath,\$$ORIGIN/`$(RELPATH) $(bindir) $(libdir)` -Wl,--enable-new-dtags +LDRPATH_LOCAL = -Wl,--rpath,\$$ORIGIN/$(TOPOBJDIR)/libs/wine + + + +# Installation infos + +INSTALL = /usr/bin/install -c $(INSTALL_FLAGS) +INSTALL_PROGRAM = ${INSTALL} $(INSTALL_PROGRAM_FLAGS) +INSTALL_SCRIPT = ${INSTALL} $(INSTALL_SCRIPT_FLAGS) +INSTALL_DATA = ${INSTALL} -m 644 $(INSTALL_DATA_FLAGS) +prefix = /usr/local +exec_prefix = ${prefix} +bindir = ${exec_prefix}/bin +libdir = ${exec_prefix}/lib +datarootdir = ${prefix}/share +datadir = ${datarootdir} +infodir = ${datarootdir}/info +mandir = ${datarootdir}/man +sysconfdir = ${prefix}/etc +includedir = ${prefix}/include/wine +dlldir = ${exec_prefix}/lib/wine +fakedlldir = $(dlldir)/fakedlls +prog_manext = 1 +api_manext = 3w +conf_manext = 5 +CLEAN_FILES = *.o *.a *.so *.ln *.res *.fake *.$(LIBEXT) \\\#*\\\# *~ *% .\\\#* *.bak *.orig *.rej *.flc core + +IDL_GEN_C_SRCS = $(IDL_C_SRCS:.idl=_c.c) $(IDL_I_SRCS:.idl=_i.c) \ + $(IDL_P_SRCS:.idl=_p.c) $(IDL_S_SRCS:.idl=_s.c) +IDL_GEN_HEADERS = $(IDL_H_SRCS:.idl=.h) $(IDL_C_SRCS:.idl=.h) $(IDL_I_SRCS:.idl=.h) \ + $(IDL_P_SRCS:.idl=.h) $(IDL_S_SRCS:.idl=.h) + +CLEAN_TARGETS = $(IDL_GEN_C_SRCS) $(IDL_GEN_HEADERS) $(IDL_TLB_SRCS:.idl=.tlb) $(IDL_P_SRCS:%=dlldata.c) \ + $(BISON_SRCS:.y=.tab.c) $(BISON_SRCS:.y=.tab.h) $(LEX_SRCS:.l=.yy.c) $(MC_SRCS:.mc=.mc.rc) + +OBJS = $(C_SRCS:.c=.o) $(BISON_SRCS:.y=.tab.o) $(LEX_SRCS:.l=.yy.o) $(IDL_GEN_C_SRCS:.c=.o) \ + $(RC_SRCS:.rc=.res) $(MC_SRCS:.mc=.mc.res) $(EXTRA_OBJS) + +LINTS = $(C_SRCS:.c=.ln) + +# 'all' target first in case the enclosing Makefile didn't define any target + +all: + +filter: dummy + @$(TOPSRCDIR)/tools/winapi/make_filter --make $(MAKE) all + +.PHONY: all filter + +# Implicit rules + +.SUFFIXES: .mc .rc .mc.rc .res .spec .spec.o .idl .tlb .h .y .l .tab.c .tab.h .yy.c .ok .man.in .man _c.c _i.c _p.c _s.c # .sfd .ttf .svg .ico + +.c.o: + $(CC) -c $(ALLCFLAGS) -o $@ $< + +.y.tab.c: + $(BISON) $(BISONFLAGS) -p $*_ -o $@ $< + +.y.tab.h: + $(BISON) $(BISONFLAGS) -p $*_ -o $*.tab.c -d $< + +.l.yy.c: + $(FLEX) $(LEXFLAGS) -o$@ $< + +.mc.mc.rc: + $(LDPATH) $(WMC) -i -U -H /dev/null -o $@ $< + +.rc.res: + $(LDPATH) $(RC) $(RCFLAGS) -fo$@ $< + +.spec.spec.o: + $(WINEBUILD) $(WINEBUILDFLAGS) --dll -o $@ --main-module $(MODULE) --export $< + +.idl.h: + $(WIDL) $(IDLFLAGS) -h -H $@ $< + +.idl_c.c: + $(WIDL) $(IDLFLAGS) -c -C $@ $< + +.idl_i.c: + $(WIDL) $(IDLFLAGS) -u -U $@ $< + +.idl_p.c: + $(WIDL) $(IDLFLAGS) -p -P $@ $< + +.idl_s.c: + $(WIDL) $(IDLFLAGS) -s -S $@ $< + +.idl.tlb: + $(WIDL) $(TARGETFLAGS) $(IDLFLAGS) -t -T $@ $< + +.c.ln: + $(LINT) -c $(ALLLINTFLAGS) $< || ( $(RM) $@ && exit 1 ) + +.c.ok: + $(RUNTEST) $(RUNTESTFLAGS) $< && touch $@ + +.sfd.ttf: + $(FONTFORGE) -script $(TOPSRCDIR)/fonts/genttf.ff $< $@ + +.man.in.man: + LC_ALL=C sed -e 's,@bindir\@,$(bindir),g' -e 's,@dlldir\@,$(dlldir),g' -e 's,@PACKAGE_STRING\@,Wine 1.1.35,g' $< >$@ || ($(RM) $@ && false) + +.svg.ico: + $(RSVG) -w 16 -h 16 -f png $< $*-16.png + $(RSVG) -w 32 -h 32 -f png $< $*-32.png + $(RSVG) -w 48 -h 48 -f png $< $*-48.png + $(ICOTOOL) -c -o $@ $*-16.png $*-32.png $*-48.png + $(RM) $*-16.png $*-32.png $*-48.png + +# Rules for IDL files + +dlldata.c: $(WIDL) Makefile.in + $(WIDL) $(IDLFLAGS) --dlldata-only --dlldata=$@ $(IDL_P_SRCS) + +# Rule for linting + +$(MODULE).ln : $(LINTS) + if test "$(LINTS)" ; \ + then \ + $(LINT) $(ALLLINTFLAGS) -o$(MODULE) $(LINTS) ; \ + $(MV) llib-l$(MODULE).ln $(MODULE).ln ; \ + else \ + $(LINT) $(ALLLINTFLAGS) -C$(MODULE) /dev/null ; \ + fi + +lint:: $(MODULE).ln + +# Rules for Windows API checking + +winapi_check:: dummy + $(WINAPI_CHECK) $(WINAPI_CHECK_FLAGS) $(WINAPI_CHECK_EXTRA_FLAGS) . + +.PHONY: winapi_check + +# Rules for dependencies + +DEPEND_SRCS = $(C_SRCS) $(C_SRCS16) $(RC_SRCS) $(RC_SRCS16) $(MC_SRCS) \ + $(IDL_H_SRCS) $(IDL_C_SRCS) $(IDL_I_SRCS) $(IDL_P_SRCS) $(IDL_S_SRCS) \ + $(IDL_GEN_C_SRCS) $(IDL_TLB_SRCS) $(IDL_TLB_SRCS:.idl=.tlb) \ + $(BISON_SRCS) $(LEX_SRCS) $(EXTRA_SRCS) + +$(SUBDIRS:%=%/__depend__): dummy + @cd `dirname $@` && $(MAKE) depend + +depend: $(SUBDIRS:%=%/__depend__) dummy + $(MAKEDEP) $(MAKEDEPFLAGS) -C$(SRCDIR) -S$(TOPSRCDIR) -T$(TOPOBJDIR) $(EXTRAINCL) $(DEPEND_SRCS) + +.PHONY: depend $(SUBDIRS:%=%/__depend__) + +# Rules for cleaning + +$(SUBDIRS:%=%/__clean__): dummy + @cd `dirname $@` && $(MAKE) clean + +$(EXTRASUBDIRS:%=%/__clean__): dummy + -cd `dirname $@` && $(RM) $(CLEAN_FILES) + +clean:: $(SUBDIRS:%=%/__clean__) $(EXTRASUBDIRS:%=%/__clean__) + $(RM) $(CLEAN_FILES) $(CLEAN_TARGETS) $(PROGRAMS) $(MANPAGES) + +.PHONY: clean $(SUBDIRS:%=%/__clean__) $(EXTRASUBDIRS:%=%/__clean__) + +# Rules for installing + +$(SUBDIRS:%=%/__install__): dummy + @cd `dirname $@` && $(MAKE) install + +$(SUBDIRS:%=%/__install-lib__): dummy + @cd `dirname $@` && $(MAKE) install-lib + +$(SUBDIRS:%=%/__install-dev__): dummy + @cd `dirname $@` && $(MAKE) install-dev + +$(SUBDIRS:%=%/__uninstall__): dummy + @cd `dirname $@` && $(MAKE) uninstall + +install:: $(INSTALLSUBDIRS:%=%/__install__) dummy +install-lib:: $(INSTALLSUBDIRS:%=%/__install-lib__) dummy +install-dev:: $(INSTALLSUBDIRS:%=%/__install-dev__) dummy +uninstall:: $(INSTALLSUBDIRS:%=%/__uninstall__) dummy + +$(INSTALLDIRS): + $(MKINSTALLDIRS) $@ + +.PHONY: install install-lib install-dev uninstall \ + $(SUBDIRS:%=%/__install__) $(SUBDIRS:%=%/__uninstall__) \ + $(SUBDIRS:%=%/__install-lib__) $(SUBDIRS:%=%/__install-dev__) + +# Rules for testing + +$(TESTSUBDIRS:%=%/__test__): dummy + @cd `dirname $@` && $(MAKE) test + +$(TESTSUBDIRS:%=%/__crosstest__): dummy + @cd `dirname $@` && $(MAKE) crosstest + +$(TESTSUBDIRS:%=%/__testclean__): dummy + @cd `dirname $@` && $(MAKE) testclean + +check test:: $(TESTSUBDIRS:%=%/__test__) dummy + +crosstest:: $(TESTSUBDIRS:%=%/__crosstest__) dummy + +testclean:: $(TESTSUBDIRS:%=%/__testclean__) dummy + +.PHONY: check test testclean crosstest $(TESTSUBDIRS:%=%/__test__) $(TESTSUBDIRS:%=%/__crosstest__) $(TESTSUBDIRS:%=%/__testclean__) + +# Rules for auto documentation + +$(DOCSUBDIRS:%=%/__man__): dummy + @cd `dirname $@` && $(MAKE) man + +$(DOCSUBDIRS:%=%/__doc_html__): dummy + @cd `dirname $@` && $(MAKE) doc-html + +$(DOCSUBDIRS:%=%/__doc_sgml__): dummy + @cd `dirname $@` && $(MAKE) doc-sgml + +$(DOCSUBDIRS:%=%/__doc_xml__): dummy + @cd `dirname $@` && $(MAKE) doc-xml + +man: $(DOCSUBDIRS:%=%/__man__) +doc-html: $(DOCSUBDIRS:%=%/__doc_html__) +doc-sgml: $(DOCSUBDIRS:%=%/__doc_sgml__) +doc-xml: $(DOCSUBDIRS:%=%/__doc_xml__) + +.PHONY: man doc-html doc-sgml doc-xml $(DOCSUBDIRS:%=%/__man__) $(DOCSUBDIRS:%=%/__doc_html__) $(DOCSUBDIRS:%=%/__doc_sgml__) $(DOCSUBDIRS:%=%/__doc_xml__) + +# Misc. rules + +$(MC_SRCS:.mc=.mc.rc): $(WMC) + +$(IDL_GEN_HEADERS) $(IDL_GEN_C_SRCS) $(IDL_TLB_SRCS:.idl=.tlb): $(WIDL) + +$(RC_SRCS:.rc=.res) $(MC_SRCS:.mc=.mc.res) $(RC_SRCS16:.rc=.res): $(WRC) + +$(SUBDIRS): dummy + @cd $@ && $(MAKE) + +dummy: + +.PHONY: dummy $(SUBDIRS) + +# End of global rules + +all: $(SUBDIRS) + +# Directory dependencies + +wine wine/__install__ wine/__install-lib__: port diff -rupN wine-1.5.19/programs/Makefile wine-silverlight-1.5.19/programs/Makefile --- wine-1.5.19/programs/Makefile 1969-12-31 16:00:00.000000000 -0800 +++ wine-silverlight-1.5.19/programs/Makefile 2012-12-20 18:16:39.776215447 -0800 @@ -0,0 +1,492 @@ +TOPSRCDIR = .. +TOPOBJDIR = .. +SRCDIR = . + + +SUBDIRS = \ + cacls \ + clock \ + cmd \ + cmdlgtst \ + control \ + dxdiag \ + eject \ + expand \ + explorer \ + extrac32 \ + hh \ + icinfo \ + iexplore \ + lodctr \ + mshta \ + msiexec \ + net \ + notepad \ + oleview \ + progman \ + reg \ + regedit \ + regsvr32 \ + rpcss \ + rundll32 \ + secedit \ + services \ + spoolsv \ + start \ + svchost \ + taskmgr \ + termsv \ + uninstaller \ + unlodctr \ + view \ + wineboot \ + winebrowser \ + winecfg \ + wineconsole \ + winedbg \ + winedevice \ + winefile \ + winemenubuilder \ + winemine \ + winepath \ + winetest \ + winevdm \ + winhelp.exe16 \ + winhlp32 \ + winoldap.mod16 \ + winver \ + wordpad \ + write \ + xcopy +INSTALLSUBDIRS = \ + cacls \ + clock \ + cmd \ + control \ + dxdiag \ + eject \ + expand \ + explorer \ + extrac32 \ + hh \ + icinfo \ + iexplore \ + lodctr \ + mshta \ + msiexec \ + net \ + notepad \ + oleview \ + progman \ + reg \ + regedit \ + regsvr32 \ + rpcss \ + rundll32 \ + secedit \ + services \ + spoolsv \ + start \ + svchost \ + taskmgr \ + termsv \ + uninstaller \ + unlodctr \ + wineboot \ + winebrowser \ + winecfg \ + wineconsole \ + winedbg \ + winedevice \ + winefile \ + winemenubuilder \ + winemine \ + winepath \ + winevdm \ + winhelp.exe16 \ + winhlp32 \ + winoldap.mod16 \ + winver \ + wordpad \ + write \ + xcopy +INSTALLPROGS = \ + msiexec \ + notepad \ + regedit \ + regsvr32 \ + wineboot \ + winecfg \ + wineconsole \ + winedbg \ + winefile \ + winemine \ + winepath + +INSTALLDIRS = $(DESTDIR)$(bindir) + +PROGRAMS = wineapploader + +# Global rules shared by all makefiles -*-Makefile-*- +# +# Each individual makefile must define the following variables: +# TOPSRCDIR : top-level source directory +# TOPOBJDIR : top-level object directory +# SRCDIR : source directory for this module +# MODULE : name of the module being built +# +# Each individual makefile may define the following additional variables: +# C_SRCS : C sources for the module +# C_SRCS16 : 16-bit C sources for the module +# RC_SRCS : resource source files +# EXTRA_SRCS : extra source files for make depend +# EXTRA_OBJS : extra object files +# IMPORTS : dlls to import +# DELAYIMPORTS : dlls to import in delayed mode +# SUBDIRS : subdirectories that contain a Makefile +# EXTRASUBDIRS : subdirectories that do not contain a Makefile +# INSTALLSUBDIRS : subdirectories to run make install/uninstall into +# MODCFLAGS : extra CFLAGS for this module + +# First some useful definitions + +SHELL = /bin/sh +CC = ccache gcc -m32 +CFLAGS = -g -O2 +CPPFLAGS = +LIBS = +BISON = bison +FLEX = flex +EXEEXT = +OBJEXT = o +LIBEXT = so +DLLEXT = .so +TOOLSEXT = +IMPLIBEXT = def +LDSHARED = $(CC) -shared $(SONAME:%=-Wl,-soname,%) $(VERSCRIPT:%=-Wl,--version-script=%) +DLLTOOL = i586-mingw32msvc-dlltool +DLLWRAP = +AR = ar +ARFLAGS = rc +RANLIB = ranlib +STRIP = strip +LN = ln +LN_S = ln -s +TOOLSDIR = $(TOPOBJDIR) +LDFLAGS = +PRELINK = /usr/sbin/prelink +RM = rm -f +MV = mv +LINT = +LINTFLAGS = +FONTFORGE = fontforge +RSVG = false +ICOTOOL = icotool +FAKEEXT = $(DLLEXT:.so=.fake) +INCLUDES = -I$(SRCDIR) -I. -I$(TOPSRCDIR)/include -I$(TOPOBJDIR)/include $(EXTRAINCL) +EXTRACFLAGS = -Wall -pipe -fno-strict-aliasing -Wdeclaration-after-statement -Wstrict-prototypes -Wwrite-strings -Wtype-limits -Wpointer-arith +ALLCFLAGS = $(INCLUDES) $(DEFS) $(DLLFLAGS) $(EXTRACFLAGS) $(CPPFLAGS) $(CFLAGS) $(MODCFLAGS) +ALLLINTFLAGS = $(INCLUDES) $(DEFS) $(LINTFLAGS) +IDLFLAGS = $(INCLUDES) $(DEFS) $(EXTRAIDLFLAGS) +TARGETFLAGS = -m32 +WINEBUILDFLAGS = $(TARGETFLAGS) $(DLLFLAGS) +MKINSTALLDIRS= $(TOPSRCDIR)/tools/mkinstalldirs -m 755 +WINAPI_CHECK = $(TOPSRCDIR)/tools/winapi/winapi_check +WINEWRAPPER = $(TOPSRCDIR)/tools/winewrapper +C2MAN = $(TOPSRCDIR)/tools/c2man.pl +RUNTEST = $(TOPSRCDIR)/tools/runtest +WINEBUILD = $(TOOLSDIR)/tools/winebuild/winebuild$(TOOLSEXT) +MAKEDEP = $(TOOLSDIR)/tools/makedep$(TOOLSEXT) +MAKECTESTS = $(TOOLSDIR)/tools/make_ctests$(TOOLSEXT) +WRC = $(TOOLSDIR)/tools/wrc/wrc$(TOOLSEXT) +WMC = $(TOOLSDIR)/tools/wmc/wmc$(TOOLSEXT) +WIDL = $(TOOLSDIR)/tools/widl/widl$(TOOLSEXT) +WINEGCC = $(TOOLSDIR)/tools/winegcc/winegcc $(TARGETFLAGS) -B$(TOOLSDIR)/tools/winebuild --sysroot=$(TOPOBJDIR) +RELPATH = $(TOOLSDIR)/tools/relpath$(TOOLSEXT) +SFNT2FNT = $(TOOLSDIR)/tools/sfnt2fnt$(TOOLSEXT) +RC = $(WRC) +RC16 = $(WRC) +RCFLAGS = --nostdinc $(INCLUDES) $(DEFS) $(EXTRARCFLAGS) +RC16FLAGS = -O res16 $(RCFLAGS) +LDPATH = LD_LIBRARY_PATH="$(TOOLSDIR)/libs/wine:$$LD_LIBRARY_PATH" +DLLDIR = $(TOPOBJDIR)/dlls +LIBPORT = $(TOPOBJDIR)/libs/port/libwine_port.a +LIBWPP = $(TOPOBJDIR)/libs/wpp/libwpp.a +LIBWINE = -L$(TOPOBJDIR)/libs/wine -lwine +LDRPATH_INSTALL = -Wl,--rpath,\$$ORIGIN/`$(RELPATH) $(bindir) $(libdir)` -Wl,--enable-new-dtags +LDRPATH_LOCAL = -Wl,--rpath,\$$ORIGIN/$(TOPOBJDIR)/libs/wine + + + +# Installation infos + +INSTALL = /usr/bin/install -c $(INSTALL_FLAGS) +INSTALL_PROGRAM = ${INSTALL} $(INSTALL_PROGRAM_FLAGS) +INSTALL_SCRIPT = ${INSTALL} $(INSTALL_SCRIPT_FLAGS) +INSTALL_DATA = ${INSTALL} -m 644 $(INSTALL_DATA_FLAGS) +prefix = /usr/local +exec_prefix = ${prefix} +bindir = ${exec_prefix}/bin +libdir = ${exec_prefix}/lib +datarootdir = ${prefix}/share +datadir = ${datarootdir} +infodir = ${datarootdir}/info +mandir = ${datarootdir}/man +sysconfdir = ${prefix}/etc +includedir = ${prefix}/include/wine +dlldir = ${exec_prefix}/lib/wine +fakedlldir = $(dlldir)/fakedlls +prog_manext = 1 +api_manext = 3w +conf_manext = 5 +CLEAN_FILES = *.o *.a *.so *.ln *.res *.fake *.$(LIBEXT) \\\#*\\\# *~ *% .\\\#* *.bak *.orig *.rej *.flc core + +IDL_GEN_C_SRCS = $(IDL_C_SRCS:.idl=_c.c) $(IDL_I_SRCS:.idl=_i.c) \ + $(IDL_P_SRCS:.idl=_p.c) $(IDL_S_SRCS:.idl=_s.c) +IDL_GEN_HEADERS = $(IDL_H_SRCS:.idl=.h) $(IDL_C_SRCS:.idl=.h) $(IDL_I_SRCS:.idl=.h) \ + $(IDL_P_SRCS:.idl=.h) $(IDL_S_SRCS:.idl=.h) + +CLEAN_TARGETS = $(IDL_GEN_C_SRCS) $(IDL_GEN_HEADERS) $(IDL_TLB_SRCS:.idl=.tlb) $(IDL_P_SRCS:%=dlldata.c) \ + $(BISON_SRCS:.y=.tab.c) $(BISON_SRCS:.y=.tab.h) $(LEX_SRCS:.l=.yy.c) $(MC_SRCS:.mc=.mc.rc) + +OBJS = $(C_SRCS:.c=.o) $(BISON_SRCS:.y=.tab.o) $(LEX_SRCS:.l=.yy.o) $(IDL_GEN_C_SRCS:.c=.o) \ + $(RC_SRCS:.rc=.res) $(MC_SRCS:.mc=.mc.res) $(EXTRA_OBJS) + +LINTS = $(C_SRCS:.c=.ln) + +# 'all' target first in case the enclosing Makefile didn't define any target + +all: + +filter: dummy + @$(TOPSRCDIR)/tools/winapi/make_filter --make $(MAKE) all + +.PHONY: all filter + +# Implicit rules + +.SUFFIXES: .mc .rc .mc.rc .res .spec .spec.o .idl .tlb .h .y .l .tab.c .tab.h .yy.c .ok .man.in .man _c.c _i.c _p.c _s.c # .sfd .ttf .svg .ico + +.c.o: + $(CC) -c $(ALLCFLAGS) -o $@ $< + +.y.tab.c: + $(BISON) $(BISONFLAGS) -p $*_ -o $@ $< + +.y.tab.h: + $(BISON) $(BISONFLAGS) -p $*_ -o $*.tab.c -d $< + +.l.yy.c: + $(FLEX) $(LEXFLAGS) -o$@ $< + +.mc.mc.rc: + $(LDPATH) $(WMC) -i -U -H /dev/null -o $@ $< + +.rc.res: + $(LDPATH) $(RC) $(RCFLAGS) -fo$@ $< + +.spec.spec.o: + $(WINEBUILD) $(WINEBUILDFLAGS) --dll -o $@ --main-module $(MODULE) --export $< + +.idl.h: + $(WIDL) $(IDLFLAGS) -h -H $@ $< + +.idl_c.c: + $(WIDL) $(IDLFLAGS) -c -C $@ $< + +.idl_i.c: + $(WIDL) $(IDLFLAGS) -u -U $@ $< + +.idl_p.c: + $(WIDL) $(IDLFLAGS) -p -P $@ $< + +.idl_s.c: + $(WIDL) $(IDLFLAGS) -s -S $@ $< + +.idl.tlb: + $(WIDL) $(TARGETFLAGS) $(IDLFLAGS) -t -T $@ $< + +.c.ln: + $(LINT) -c $(ALLLINTFLAGS) $< || ( $(RM) $@ && exit 1 ) + +.c.ok: + $(RUNTEST) $(RUNTESTFLAGS) $< && touch $@ + +.sfd.ttf: + $(FONTFORGE) -script $(TOPSRCDIR)/fonts/genttf.ff $< $@ + +.man.in.man: + LC_ALL=C sed -e 's,@bindir\@,$(bindir),g' -e 's,@dlldir\@,$(dlldir),g' -e 's,@PACKAGE_STRING\@,Wine 1.1.35,g' $< >$@ || ($(RM) $@ && false) + +.svg.ico: + $(RSVG) -w 16 -h 16 -f png $< $*-16.png + $(RSVG) -w 32 -h 32 -f png $< $*-32.png + $(RSVG) -w 48 -h 48 -f png $< $*-48.png + $(ICOTOOL) -c -o $@ $*-16.png $*-32.png $*-48.png + $(RM) $*-16.png $*-32.png $*-48.png + +# Rules for IDL files + +dlldata.c: $(WIDL) Makefile.in + $(WIDL) $(IDLFLAGS) --dlldata-only --dlldata=$@ $(IDL_P_SRCS) + +# Rule for linting + +$(MODULE).ln : $(LINTS) + if test "$(LINTS)" ; \ + then \ + $(LINT) $(ALLLINTFLAGS) -o$(MODULE) $(LINTS) ; \ + $(MV) llib-l$(MODULE).ln $(MODULE).ln ; \ + else \ + $(LINT) $(ALLLINTFLAGS) -C$(MODULE) /dev/null ; \ + fi + +lint:: $(MODULE).ln + +# Rules for Windows API checking + +winapi_check:: dummy + $(WINAPI_CHECK) $(WINAPI_CHECK_FLAGS) $(WINAPI_CHECK_EXTRA_FLAGS) . + +.PHONY: winapi_check + +# Rules for dependencies + +DEPEND_SRCS = $(C_SRCS) $(C_SRCS16) $(RC_SRCS) $(RC_SRCS16) $(MC_SRCS) \ + $(IDL_H_SRCS) $(IDL_C_SRCS) $(IDL_I_SRCS) $(IDL_P_SRCS) $(IDL_S_SRCS) \ + $(IDL_GEN_C_SRCS) $(IDL_TLB_SRCS) $(IDL_TLB_SRCS:.idl=.tlb) \ + $(BISON_SRCS) $(LEX_SRCS) $(EXTRA_SRCS) + +$(SUBDIRS:%=%/__depend__): dummy + @cd `dirname $@` && $(MAKE) depend + +depend: $(SUBDIRS:%=%/__depend__) dummy + $(MAKEDEP) $(MAKEDEPFLAGS) -C$(SRCDIR) -S$(TOPSRCDIR) -T$(TOPOBJDIR) $(EXTRAINCL) $(DEPEND_SRCS) + +.PHONY: depend $(SUBDIRS:%=%/__depend__) + +# Rules for cleaning + +$(SUBDIRS:%=%/__clean__): dummy + @cd `dirname $@` && $(MAKE) clean + +$(EXTRASUBDIRS:%=%/__clean__): dummy + -cd `dirname $@` && $(RM) $(CLEAN_FILES) + +clean:: $(SUBDIRS:%=%/__clean__) $(EXTRASUBDIRS:%=%/__clean__) + $(RM) $(CLEAN_FILES) $(CLEAN_TARGETS) $(PROGRAMS) $(MANPAGES) + +.PHONY: clean $(SUBDIRS:%=%/__clean__) $(EXTRASUBDIRS:%=%/__clean__) + +# Rules for installing + +$(SUBDIRS:%=%/__install__): dummy + @cd `dirname $@` && $(MAKE) install + +$(SUBDIRS:%=%/__install-lib__): dummy + @cd `dirname $@` && $(MAKE) install-lib + +$(SUBDIRS:%=%/__install-dev__): dummy + @cd `dirname $@` && $(MAKE) install-dev + +$(SUBDIRS:%=%/__uninstall__): dummy + @cd `dirname $@` && $(MAKE) uninstall + +install:: $(INSTALLSUBDIRS:%=%/__install__) dummy +install-lib:: $(INSTALLSUBDIRS:%=%/__install-lib__) dummy +install-dev:: $(INSTALLSUBDIRS:%=%/__install-dev__) dummy +uninstall:: $(INSTALLSUBDIRS:%=%/__uninstall__) dummy + +$(INSTALLDIRS): + $(MKINSTALLDIRS) $@ + +.PHONY: install install-lib install-dev uninstall \ + $(SUBDIRS:%=%/__install__) $(SUBDIRS:%=%/__uninstall__) \ + $(SUBDIRS:%=%/__install-lib__) $(SUBDIRS:%=%/__install-dev__) + +# Rules for testing + +$(TESTSUBDIRS:%=%/__test__): dummy + @cd `dirname $@` && $(MAKE) test + +$(TESTSUBDIRS:%=%/__crosstest__): dummy + @cd `dirname $@` && $(MAKE) crosstest + +$(TESTSUBDIRS:%=%/__testclean__): dummy + @cd `dirname $@` && $(MAKE) testclean + +check test:: $(TESTSUBDIRS:%=%/__test__) dummy + +crosstest:: $(TESTSUBDIRS:%=%/__crosstest__) dummy + +testclean:: $(TESTSUBDIRS:%=%/__testclean__) dummy + +.PHONY: check test testclean crosstest $(TESTSUBDIRS:%=%/__test__) $(TESTSUBDIRS:%=%/__crosstest__) $(TESTSUBDIRS:%=%/__testclean__) + +# Rules for auto documentation + +$(DOCSUBDIRS:%=%/__man__): dummy + @cd `dirname $@` && $(MAKE) man + +$(DOCSUBDIRS:%=%/__doc_html__): dummy + @cd `dirname $@` && $(MAKE) doc-html + +$(DOCSUBDIRS:%=%/__doc_sgml__): dummy + @cd `dirname $@` && $(MAKE) doc-sgml + +$(DOCSUBDIRS:%=%/__doc_xml__): dummy + @cd `dirname $@` && $(MAKE) doc-xml + +man: $(DOCSUBDIRS:%=%/__man__) +doc-html: $(DOCSUBDIRS:%=%/__doc_html__) +doc-sgml: $(DOCSUBDIRS:%=%/__doc_sgml__) +doc-xml: $(DOCSUBDIRS:%=%/__doc_xml__) + +.PHONY: man doc-html doc-sgml doc-xml $(DOCSUBDIRS:%=%/__man__) $(DOCSUBDIRS:%=%/__doc_html__) $(DOCSUBDIRS:%=%/__doc_sgml__) $(DOCSUBDIRS:%=%/__doc_xml__) + +# Misc. rules + +$(MC_SRCS:.mc=.mc.rc): $(WMC) + +$(IDL_GEN_HEADERS) $(IDL_GEN_C_SRCS) $(IDL_TLB_SRCS:.idl=.tlb): $(WIDL) + +$(RC_SRCS:.rc=.res) $(MC_SRCS:.mc=.mc.res) $(RC_SRCS16:.rc=.res): $(WRC) + +$(SUBDIRS): dummy + @cd $@ && $(MAKE) + +dummy: + +.PHONY: dummy $(SUBDIRS) + +# End of global rules + +all: $(PROGRAMS) $(SUBDIRS) + +wineapploader: wineapploader.in + sed -e 's,@bindir\@,$(bindir),g' $(SRCDIR)/wineapploader.in >$@ || ($(RM) $@ && false) + +# Rules for installation + +.PHONY: install-apploader install-progs install-progs.so $(INSTALLPROGS:%=%/__installprog__) + +install-apploader: wineapploader $(INSTALLDIRS) dummy + $(INSTALL_SCRIPT) wineapploader $(DESTDIR)$(bindir)/wineapploader + +$(INSTALLPROGS:%=%/__installprog__): install-apploader + $(RM) $(DESTDIR)$(bindir)/`dirname $@` && $(LN) $(DESTDIR)$(bindir)/wineapploader $(DESTDIR)$(bindir)/`dirname $@` + +install-progs.so: $(INSTALLPROGS:%=%/__installprog__) + $(RM) $(DESTDIR)$(bindir)/wineapploader + +install-progs: # nothing to do here + + install install-lib:: install-progs$(DLLEXT) $(INSTALLDIRS) + +uninstall:: + -cd $(DESTDIR)$(bindir) && $(RM) wineapploader $(INSTALLPROGS) + -rmdir $(DESTDIR)$(fakedlldir) $(DESTDIR)$(dlldir) + +# Rules for testing + +check test:: $(SUBDIRS:%=%/__test__) diff -rupN wine-1.5.19/server/change.c wine-silverlight-1.5.19/server/change.c --- wine-1.5.19/server/change.c 2012-12-07 11:17:32.000000000 -0800 +++ wine-silverlight-1.5.19/server/change.c 2012-12-20 18:16:39.786214785 -0800 @@ -286,6 +286,7 @@ static int get_dir_unix_fd( struct dir * static struct security_descriptor *dir_get_sd( struct object *obj ) { struct dir *dir = (struct dir *)obj; + const SID *user, *group; int unix_fd; struct stat st; struct security_descriptor *sd; @@ -302,9 +303,11 @@ static struct security_descriptor *dir_g (st.st_uid == dir->uid)) return obj->sd; - sd = mode_to_sd( st.st_mode, - security_unix_uid_to_sid( st.st_uid ), - token_get_primary_group( current->process->token )); + user = security_unix_uid_to_sid( st.st_uid ); + group = token_get_primary_group( current->process->token ); + sd = get_file_acls( unix_fd, user, group ); + if (!sd) + sd = mode_to_sd( st.st_mode, user, group ); if (!sd) return obj->sd; dir->mode = st.st_mode; @@ -353,6 +356,8 @@ static int dir_set_sd( struct object *ob mode = st.st_mode & (S_ISUID|S_ISGID|S_ISVTX); mode |= sd_to_mode( sd, owner ); + set_file_acls( unix_fd, sd ); + if (((st.st_mode ^ mode) & (S_IRWXU|S_IRWXG|S_IRWXO)) && fchmod( unix_fd, mode ) == -1) { file_set_error(); diff -rupN wine-1.5.19/server/fd.c wine-silverlight-1.5.19/server/fd.c --- wine-1.5.19/server/fd.c 2012-12-07 11:17:32.000000000 -0800 +++ wine-silverlight-1.5.19/server/fd.c 2012-12-20 18:16:39.786214785 -0800 @@ -88,6 +88,9 @@ #include #include #include +#ifdef HAVE_ATTR_XATTR_H +#include +#endif #include "ntstatus.h" #define WIN32_NO_STATUS @@ -96,6 +99,7 @@ #include "handle.h" #include "process.h" #include "request.h" +#include "security.h" #include "winternl.h" #include "winioctl.h" @@ -1723,9 +1727,69 @@ static char *dup_fd_name( struct fd *roo return ret; } +void set_file_acls( int fd, const struct security_descriptor *sd ) +{ +#ifdef HAVE_ATTR_XATTR_H + char buffer[XATTR_SIZE_MAX], *p = buffer; + const ACE_HEADER *ace; + int present, i, j, n; + const ACL *dacl; + + if (!sd) return; + dacl = sd_get_dacl( sd, &present ); + if (!present || !dacl) return; + ace = (const ACE_HEADER *)(dacl + 1); + + for (i = 0; i < dacl->AceCount; i++, ace = ace_next( ace )) + { + BYTE type = ace->AceType, flags; + const ACCESS_ALLOWED_ACE *aaa; + const ACCESS_DENIED_ACE *ada; + char sidtxt[100], *s; + const SID *sid; + DWORD mask; + + if (type & INHERIT_ONLY_ACE) continue; + + switch (type) + { + case ACCESS_DENIED_ACE_TYPE: + ada = (const ACCESS_DENIED_ACE *)ace; + flags = ada->Header.AceFlags; + mask = ada->Mask; + sid = (const SID *)&ada->SidStart; + break; + case ACCESS_ALLOWED_ACE_TYPE: + aaa = (const ACCESS_ALLOWED_ACE *)ace; + flags = aaa->Header.AceFlags; + mask = aaa->Mask; + sid = (const SID *)&aaa->SidStart; + break; + default: + continue; + } + n = sprintf( sidtxt, "S-%u-%d", sid->Revision, + MAKELONG( + MAKEWORD( sid->IdentifierAuthority.Value[5], + sid->IdentifierAuthority.Value[4] ), + MAKEWORD( sid->IdentifierAuthority.Value[3], + sid->IdentifierAuthority.Value[2] ) + ) ); + s = sidtxt + n; + for( j=0; jSubAuthorityCount; j++ ) + s += sprintf( s, "-%u", sid->SubAuthority[j] ); + + p += snprintf( p, XATTR_SIZE_MAX-(p-buffer), "%s%x,%x,%x,%s", + (p != buffer ? ";" : ""), type, flags, mask, sidtxt ); + } + + fsetxattr( fd, "user.wine.acl", buffer, p-buffer, 0 ); +#endif +} + /* open() wrapper that returns a struct fd with no fd user set */ struct fd *open_fd( struct fd *root, const char *name, int flags, mode_t *mode, unsigned int access, - unsigned int sharing, unsigned int options ) + unsigned int sharing, unsigned int options, const struct security_descriptor *sd ) { struct stat st; struct closed_fd *closed_fd; @@ -1765,7 +1829,7 @@ struct fd *open_fd( struct fd *root, con /* create the directory if needed */ if ((options & FILE_DIRECTORY_FILE) && (flags & O_CREAT)) { - if (mkdir( name, 0777 ) == -1) + if (mkdir( name, *mode ) == -1) { if (errno != EEXIST || (flags & O_EXCL)) { @@ -1801,6 +1865,8 @@ struct fd *open_fd( struct fd *root, con } } + set_file_acls( fd->unix_fd, sd ); + closed_fd->unix_fd = fd->unix_fd; closed_fd->unlink[0] = 0; fstat( fd->unix_fd, &st ); diff -rupN wine-1.5.19/server/file.c wine-silverlight-1.5.19/server/file.c --- wine-1.5.19/server/file.c 2012-12-07 11:17:32.000000000 -0800 +++ wine-silverlight-1.5.19/server/file.c 2012-12-20 18:16:39.786214785 -0800 @@ -32,6 +32,7 @@ #include #include #include +#include #include #ifdef HAVE_UTIME_H #include @@ -39,6 +40,9 @@ #ifdef HAVE_POLL_H #include #endif +#ifdef HAVE_ATTR_XATTR_H +#include +#endif #include "ntstatus.h" #define WIN32_NO_STATUS @@ -219,7 +223,12 @@ static struct object *create_file( struc mode = sd_to_mode( sd, owner ); } else - mode = (attrs & FILE_ATTRIBUTE_READONLY) ? 0444 : 0666; + { + if (options & FILE_NON_DIRECTORY_FILE) + mode = (attrs & FILE_ATTRIBUTE_READONLY) ? 0444 : 0666; + else + mode = (attrs & FILE_ATTRIBUTE_READONLY) ? 0555 : 0777; + } if (len >= 4 && (!strcasecmp( name + len - 4, ".exe" ) || !strcasecmp( name + len - 4, ".com" ))) @@ -235,7 +244,7 @@ static struct object *create_file( struc access = generic_file_map_access( access ); /* FIXME: should set error to STATUS_OBJECT_NAME_COLLISION if file existed before */ - fd = open_fd( root, name, flags | O_NONBLOCK | O_LARGEFILE, &mode, access, sharing, options ); + fd = open_fd( root, name, flags | O_NONBLOCK | O_LARGEFILE, &mode, access, sharing, options, sd ); if (!fd) goto done; if (S_ISDIR(mode)) @@ -430,9 +439,169 @@ struct security_descriptor *mode_to_sd( return sd; } +struct security_descriptor *get_file_acls( int fd, const SID *user, const SID *group ) +{ +#ifdef HAVE_ATTR_XATTR_H + int ace_count = 0, dacl_size = sizeof(ACL), i, n; + char buffer[XATTR_SIZE_MAX], *p = buffer, *pn; + struct security_descriptor *sd; + ACE_HEADER *current_ace; + ACCESS_ALLOWED_ACE *aaa; + ACCESS_DENIED_ACE *ada; + int type, flags, mask; + ACL *dacl; + char *ptr; + + n = fgetxattr( fd, "user.wine.acl", buffer, sizeof(buffer) ); + if (n == -1) return NULL; + buffer[n] = 0; + + do + { + int sub_authority_count = 0; + + pn = strchr(p, ';'); + if (pn) pn++; + sscanf(p, "%x", &type); + do + { + p = strchr(p, '-'); + if (p) p++; + sub_authority_count++; + } + while(p && (!pn || p < pn)); + sub_authority_count -= 3; /* Revision and IdentifierAuthority don't count */ + + switch (type) + { + case ACCESS_DENIED_ACE_TYPE: + dacl_size += FIELD_OFFSET(ACCESS_DENIED_ACE, SidStart) + + FIELD_OFFSET(SID, SubAuthority[sub_authority_count]); + break; + case ACCESS_ALLOWED_ACE_TYPE: + dacl_size += FIELD_OFFSET(ACCESS_ALLOWED_ACE, SidStart) + + FIELD_OFFSET(SID, SubAuthority[sub_authority_count]); + break; + default: + continue; + } + ace_count++; + p = pn; + } + while(p); + + sd = mem_alloc( sizeof(struct security_descriptor) + + FIELD_OFFSET(SID, SubAuthority[user->SubAuthorityCount]) + + FIELD_OFFSET(SID, SubAuthority[group->SubAuthorityCount]) + + dacl_size ); + + sd->control = SE_DACL_PRESENT; + sd->owner_len = FIELD_OFFSET(SID, SubAuthority[user->SubAuthorityCount]); + sd->group_len = FIELD_OFFSET(SID, SubAuthority[group->SubAuthorityCount]); + sd->sacl_len = 0; + sd->dacl_len = dacl_size; + + ptr = (char *)(sd + 1); + memcpy( ptr, user, sd->owner_len ); + ptr += sd->owner_len; + memcpy( ptr, group, sd->group_len ); + ptr += sd->group_len; + + dacl = (ACL *)ptr; + dacl->AclRevision = ACL_REVISION; + dacl->Sbz1 = 0; + dacl->AclSize = dacl_size; + dacl->AceCount = ace_count; + dacl->Sbz2 = 0; + aaa = (ACCESS_ALLOWED_ACE *)(dacl + 1); + current_ace = &aaa->Header; + + p = buffer; + for(i=0; iHeader; + } + pn = strchr(p, ';'); + if (pn) pn++; + sscanf(p, "%x,%x,%x,%[^;]", &type, &flags, &mask, sidtxt); + sscanf(sidtxt, "S-%u-%d", &rev, &ia); + sid->Revision = rev; + sid->IdentifierAuthority.Value[0] = 0; + sid->IdentifierAuthority.Value[1] = 0; + sid->IdentifierAuthority.Value[2] = HIBYTE(HIWORD(ia)); + sid->IdentifierAuthority.Value[3] = LOBYTE(HIWORD(ia)); + sid->IdentifierAuthority.Value[4] = HIBYTE(LOWORD(ia)); + sid->IdentifierAuthority.Value[5] = LOBYTE(LOWORD(ia)); + p = strchr(sidtxt, '-')+1; + p = strchr(p, '-')+1; /* Revision doesn't count */ + p = strchr(p, '-')+1; /* IdentifierAuthority doesn't count */ + do + { + sscanf(p, "%u", &sa); + sid->SubAuthority[sub_authority_count] = sa; + p = strchr(p, '-'); + if (p) p++; + sub_authority_count++; + } + while(p); + sid->SubAuthorityCount = sub_authority_count; + + /* Convert generic rights into standard access rights */ + if (mask & GENERIC_ALL) + mask |= WRITE_DAC | WRITE_OWNER | DELETE | FILE_DELETE_CHILD; + if (mask & (GENERIC_ALL|GENERIC_READ)) + mask |= FILE_GENERIC_READ; + if (mask & (GENERIC_ALL|GENERIC_WRITE)) + mask |= FILE_GENERIC_WRITE; + if (mask & (GENERIC_ALL|GENERIC_EXECUTE)) + mask |= FILE_GENERIC_EXECUTE; + mask &= 0x0FFFFFFF; + + /* Handle the specific ACE */ + switch (type) + { + case ACCESS_DENIED_ACE_TYPE: + ada = (ACCESS_DENIED_ACE *)aaa; + ada->Header.AceType = type; + ada->Header.AceFlags = flags; + ada->Header.AceSize = FIELD_OFFSET(ACCESS_DENIED_ACE, SidStart) + + FIELD_OFFSET(SID, SubAuthority[sid->SubAuthorityCount]); + ada->Mask = mask; + memcpy( &ada->SidStart, sid, FIELD_OFFSET(SID, SubAuthority[sid->SubAuthorityCount]) ); + break; + case ACCESS_ALLOWED_ACE_TYPE: + aaa->Header.AceType = type; + aaa->Header.AceFlags = flags; + aaa->Header.AceSize = FIELD_OFFSET(ACCESS_ALLOWED_ACE, SidStart) + + FIELD_OFFSET(SID, SubAuthority[sid->SubAuthorityCount]); + aaa->Mask = mask; + memcpy( &aaa->SidStart, sid, FIELD_OFFSET(SID, SubAuthority[sid->SubAuthorityCount]) ); + break; + default: + continue; + } + p = pn; + } + + return sd; +#else + return NULL; +#endif +} + static struct security_descriptor *file_get_sd( struct object *obj ) { struct file *file = (struct file *)obj; + const SID *user, *group; struct stat st; int unix_fd; struct security_descriptor *sd; @@ -449,9 +618,11 @@ static struct security_descriptor *file_ (st.st_uid == file->uid)) return obj->sd; - sd = mode_to_sd( st.st_mode, - security_unix_uid_to_sid( st.st_uid ), - token_get_primary_group( current->process->token )); + user = security_unix_uid_to_sid( st.st_uid ); + group = token_get_primary_group( current->process->token ); + sd = get_file_acls( unix_fd, user, group ); + if (!sd) + sd = mode_to_sd( st.st_mode, user, group); if (!sd) return obj->sd; file->mode = st.st_mode; @@ -581,6 +752,8 @@ static int file_set_sd( struct object *o mode = st.st_mode & (S_ISUID|S_ISGID|S_ISVTX); mode |= sd_to_mode( sd, owner ); + set_file_acls( unix_fd, sd ); + if (((st.st_mode ^ mode) & (S_IRWXU|S_IRWXG|S_IRWXO)) && fchmod( unix_fd, mode ) == -1) { file_set_error(); diff -rupN wine-1.5.19/server/file.h wine-silverlight-1.5.19/server/file.h --- wine-1.5.19/server/file.h 2012-12-07 11:17:32.000000000 -0800 +++ wine-silverlight-1.5.19/server/file.h 2012-12-20 18:16:39.789547898 -0800 @@ -56,7 +56,8 @@ extern struct fd *alloc_pseudo_fd( const unsigned int options ); extern void set_no_fd_status( struct fd *fd, unsigned int status ); extern struct fd *open_fd( struct fd *root, const char *name, int flags, mode_t *mode, - unsigned int access, unsigned int sharing, unsigned int options ); + unsigned int access, unsigned int sharing, unsigned int options, + const struct security_descriptor *sd ); extern struct fd *create_anonymous_fd( const struct fd_ops *fd_user_ops, int unix_fd, struct object *user, unsigned int options ); extern struct fd *dup_fd_object( struct fd *orig, unsigned int access, unsigned int sharing, @@ -122,6 +123,8 @@ extern struct file *create_file_for_fd_o extern void file_set_error(void); extern struct security_descriptor *mode_to_sd( mode_t mode, const SID *user, const SID *group ); extern mode_t sd_to_mode( const struct security_descriptor *sd, const SID *owner ); +extern void set_file_acls( int fd, const struct security_descriptor *sd ); +extern struct security_descriptor *get_file_acls( int fd, const SID *user, const SID *group ); /* file mapping functions */ diff -rupN wine-1.5.19/tools/wineprefixcreate.man wine-silverlight-1.5.19/tools/wineprefixcreate.man --- wine-1.5.19/tools/wineprefixcreate.man 1969-12-31 16:00:00.000000000 -0800 +++ wine-silverlight-1.5.19/tools/wineprefixcreate.man 2012-12-20 18:16:39.806213462 -0800 @@ -0,0 +1,82 @@ +.\" -*- nroff -*- +.TH WINEPREFIXCREATE 1 "August 2006" "Wine 1.1.35" "Windows on Unix" +.SH NAME +wineprefixcreate \- create or update the Wine configuration +.SH SYNOPSIS +.BI wineprefixcreate\ [options] +.SH DESCRIPTION +.B wineprefixcreate +creates or updates a Wine configuration directory. When running Wine, +the base name of the configuration directory is specified in the +WINEPREFIX variable, hence the name of this tool. +.PP +.B wineprefixcreate +is launched automatically by +.B wine(1) +if you don't have an existing configuration. However, it can sometimes +be useful to run it explicitly to create a different directory, or +update an existing one. +.SH OPTIONS +.TP +.BI \--prefix\ directory +Create the specified directory (or update it if it exists already). If +this option is not specified, +.B wineprefixcreate +defaults to the +.I WINEPREFIX +environment variable, or to +.I $HOME/.wine +if not set. +.TP +.B \-h, \--help +Display a usage message. +.TP +.B \-q, \--quiet +Don't display any status messages. +.TP +.B \-w, \--wait +Wait for +.B wineserver +to save everything before returning. This is necessary for instance if +you are planning to rename the directory once created; otherwise a +running server could still try to access the directory under its old +name. +.SH ENVIRONMENT VARIABLES +.TP +.I WINEPREFIX +If set, the content of this variable is taken as the name of the directory where +.B wineprefixcreate +stores its data (the default is \fI$HOME/.wine\fR). All +.B wine +processes using the same prefix share certain things like registry, +shared memory and kernel objects. By setting +.I WINEPREFIX +to different values for different Wine processes, it is possible to +run a number of truly independent Wine sessions. +.SH FILES +.TP +.B ~/.wine +Default location for the +.B wine +configuration data. +.SH AUTHORS +Many people have contributed to the development of Wine. Please check +the file Changelog in the Wine distribution for the complete details. +.SH BUGS +If you find a bug, please submit a bug report at +.UR http://bugs.winehq.org +.B http://bugs.winehq.org. +.UE +.SH AVAILABILITY +.B wineprefixcreate +is part of the Wine distribution, which is available through WineHQ, +the Wine development headquarters, at +.UR http://www.winehq.org/ +.B http://www.winehq.org/. +.UE +.br +It is distributed under the terms of the GNU Lesser General Public +License. +.SH "SEE ALSO" +.BR wine (1), +.BR wineserver (1).