diff -cr Python-2.4.1/Modules/posixmodule.c Python-2.4.1-alo1/Modules/posixmodule.c *** Python-2.4.1/Modules/posixmodule.c Mon Mar 14 00:18:26 2005 --- Python-2.4.1-alo1/Modules/posixmodule.c Mon Apr 11 15:53:30 2005 *************** *** 703,708 **** --- 703,714 ---- #ifdef HAVE_STRUCT_STAT_ST_RDEV {"st_rdev", "device type (if inode device)"}, #endif + #ifdef HAVE_STRUCT_STAT_ST_GEN + {"st_gen", "generation number"}, + #endif + #ifdef HAVE_STRUCT_STAT_ST_BIRTHTIME + {"st_birthtime", "time of creation"}, + #endif {0} }; *************** *** 724,729 **** --- 730,747 ---- #define ST_RDEV_IDX ST_BLOCKS_IDX #endif + #ifdef HAVE_STRUCT_STAT_ST_GEN + #define ST_GEN_IDX (ST_RDEV_IDX+1) + #else + #define ST_GEN_IDX ST_RDEV_IDX + #endif + + #ifdef HAVE_STRUCT_STAT_ST_BIRTHTIME + #define ST_BIRTHTIME_IDX (ST_GEN_IDX+1) + #else + #define ST_BIRTHTIME_IDX ST_GEN_IDX + #endif + static PyStructSequence_Desc stat_result_desc = { "stat_result", /* name */ stat_result__doc__, /* doc */ *************** *** 869,876 **** --- 887,900 ---- mnsec = st.st_mtim.tv_nsec; cnsec = st.st_ctim.tv_nsec; #else + #ifdef HAVE_STAT_TV_NSEC2 + ansec = st.st_atimespec.tv_nsec; + mnsec = st.st_mtimespec.tv_nsec; + cnsec = st.st_ctimespec.tv_nsec; + #else ansec = mnsec = cnsec = 0; #endif + #endif fill_time(v, 7, st.st_atime, ansec); fill_time(v, 8, st.st_mtime, mnsec); fill_time(v, 9, st.st_ctime, cnsec); *************** *** 886,891 **** --- 910,938 ---- #ifdef HAVE_STRUCT_STAT_ST_RDEV PyStructSequence_SET_ITEM(v, ST_RDEV_IDX, PyInt_FromLong((long)st.st_rdev)); + #endif + #ifdef HAVE_STRUCT_STAT_ST_GEN + PyStructSequence_SET_ITEM(v, ST_GEN_IDX, + PyInt_FromLong((long)st.st_gen)); + #endif + #ifdef HAVE_STRUCT_STAT_ST_BIRTHTIME + { + PyObject *val; + unsigned long bsec,bnsec; + bsec = (long)st.st_birthtime; + #ifdef HAVE_STAT_TV_NSEC2 + bnsec = st.st_birthtimespec.tv_nsec; + #else + bnsec = 0; + #endif + if (_stat_float_times) { + val = PyFloat_FromDouble(bsec + 1e-9*bnsec); + } else { + val = PyInt_FromLong((long)bsec); + } + PyStructSequence_SET_ITEM(v, ST_BIRTHTIME_IDX, + val); + } #endif if (PyErr_Occurred()) { diff -cr Python-2.4.1/configure.in Python-2.4.1-alo1/configure.in *** Python-2.4.1/configure.in Tue Mar 29 02:23:34 2005 --- Python-2.4.1-alo1/configure.in Mon Apr 11 15:53:30 2005 *************** *** 2421,2426 **** --- 2421,2428 ---- AC_STRUCT_TIMEZONE AC_CHECK_MEMBERS([struct stat.st_rdev]) AC_CHECK_MEMBERS([struct stat.st_blksize]) + AC_CHECK_MEMBERS([struct stat.st_gen]) + AC_CHECK_MEMBERS([struct stat.st_birthtime]) AC_STRUCT_ST_BLOCKS AC_MSG_CHECKING(for time.h that defines altzone) *************** *** 3037,3042 **** --- 3039,3061 ---- then AC_DEFINE(HAVE_STAT_TV_NSEC, 1, [Define if you have struct stat.st_mtim.tv_nsec]) + fi + + # Look for BSD style subsecond timestamps in struct stat + AC_MSG_CHECKING(for tv_nsec2 in struct stat) + AC_CACHE_VAL(ac_cv_stat_tv_nsec2, + AC_TRY_COMPILE([#include ], [ + struct stat st; + st.st_mtimespec.tv_nsec = 1; + ], + ac_cv_stat_tv_nsec2=yes, + ac_cv_stat_tv_nsec2=no, + ac_cv_stat_tv_nsec2=no)) + AC_MSG_RESULT($ac_cv_stat_tv_nsec2) + if test "$ac_cv_stat_tv_nsec2" = yes + then + AC_DEFINE(HAVE_STAT_TV_NSEC2, 1, + [Define if you have struct stat.st_mtimensec]) fi # On HP/UX 11.0, mvwdelch is a block with a return statement diff -cr Python-2.4.1/pyconfig.h.in Python-2.4.1-alo1/pyconfig.h.in *** Python-2.4.1/pyconfig.h.in Wed Oct 13 18:30:55 2004 --- Python-2.4.1-alo1/pyconfig.h.in Mon Apr 11 15:53:30 2005 *************** *** 446,451 **** --- 446,454 ---- /* Define if you have struct stat.st_mtim.tv_nsec */ #undef HAVE_STAT_TV_NSEC + /* Define if you have struct stat.st_mtimensec */ + #undef HAVE_STAT_TV_NSEC2 + /* Define if your compiler supports variable length function prototypes (e.g. void fprintf(FILE *, char *, ...);) *and* */ #undef HAVE_STDARG_PROTOTYPES *************** *** 479,484 **** --- 482,493 ---- /* Define to 1 if `st_blocks' is member of `struct stat'. */ #undef HAVE_STRUCT_STAT_ST_BLOCKS + + /* Define to 1 if `st_gen' is member of `struct stat'. */ + #undef HAVE_STRUCT_STAT_ST_GEN + + /* Define to 1 if `st_birthtime' is member of `struct stat'. */ + #undef HAVE_STRUCT_STAT_ST_BIRTHTIME /* Define to 1 if `st_rdev' is member of `struct stat'. */ #undef HAVE_STRUCT_STAT_ST_RDEV diff -cr Python-2.4.1/configure Python-2.4.1-alo1/configure *** Python-2.4.1/configure Tue Mar 29 02:23:02 2005 --- Python-2.4.1-alo1/configure Mon Apr 11 15:55:03 2005 *************** *** 1,5 **** #! /bin/sh ! # From configure.in Revision: 1.475.2.7 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.59 for python 2.4. # --- 1,5 ---- #! /bin/sh ! # From configure.in Revision: 1.475.2.8 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.59 for python 2.4. # *************** *** 16411,16416 **** --- 16411,16636 ---- fi + echo "$as_me:$LINENO: checking for struct stat.st_gen" >&5 + echo $ECHO_N "checking for struct stat.st_gen... $ECHO_C" >&6 + if test "${ac_cv_member_struct_stat_st_gen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default + int + main () + { + static struct stat ac_aggr; + if (ac_aggr.st_gen) + return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_stat_st_gen=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default + int + main () + { + static struct stat ac_aggr; + if (sizeof ac_aggr.st_gen) + return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_stat_st_gen=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_member_struct_stat_st_gen=no + fi + rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + fi + rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + fi + echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_gen" >&5 + echo "${ECHO_T}$ac_cv_member_struct_stat_st_gen" >&6 + if test $ac_cv_member_struct_stat_st_gen = yes; then + + cat >>confdefs.h <<_ACEOF + #define HAVE_STRUCT_STAT_ST_GEN 1 + _ACEOF + + + fi + + echo "$as_me:$LINENO: checking for struct stat.st_birthtime" >&5 + echo $ECHO_N "checking for struct stat.st_birthtime... $ECHO_C" >&6 + if test "${ac_cv_member_struct_stat_st_birthtime+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default + int + main () + { + static struct stat ac_aggr; + if (ac_aggr.st_birthtime) + return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_stat_st_birthtime=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default + int + main () + { + static struct stat ac_aggr; + if (sizeof ac_aggr.st_birthtime) + return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_stat_st_birthtime=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_member_struct_stat_st_birthtime=no + fi + rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + fi + rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + fi + echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_birthtime" >&5 + echo "${ECHO_T}$ac_cv_member_struct_stat_st_birthtime" >&6 + if test $ac_cv_member_struct_stat_st_birthtime = yes; then + + cat >>confdefs.h <<_ACEOF + #define HAVE_STRUCT_STAT_ST_BIRTHTIME 1 + _ACEOF + + + fi + echo "$as_me:$LINENO: checking for struct stat.st_blocks" >&5 echo $ECHO_N "checking for struct stat.st_blocks... $ECHO_C" >&6 if test "${ac_cv_member_struct_stat_st_blocks+set}" = set; then *************** *** 20147,20152 **** --- 20367,20439 ---- cat >>confdefs.h <<\_ACEOF #define HAVE_STAT_TV_NSEC 1 + _ACEOF + + fi + + # Look for BSD style subsecond timestamps in struct stat + echo "$as_me:$LINENO: checking for tv_nsec2 in struct stat" >&5 + echo $ECHO_N "checking for tv_nsec2 in struct stat... $ECHO_C" >&6 + if test "${ac_cv_stat_tv_nsec2+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include + int + main () + { + + struct stat st; + st.st_mtimespec.tv_nsec = 1; + + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_stat_tv_nsec2=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_stat_tv_nsec2=no + fi + rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + fi + + echo "$as_me:$LINENO: result: $ac_cv_stat_tv_nsec2" >&5 + echo "${ECHO_T}$ac_cv_stat_tv_nsec2" >&6 + if test "$ac_cv_stat_tv_nsec2" = yes + then + + cat >>confdefs.h <<\_ACEOF + #define HAVE_STAT_TV_NSEC2 1 _ACEOF fi