rdiff-backup-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Rdiff-backup-commits] rdiff-backup CHANGELOG rdiff_backup/cmodule.c r..


From: Andrew Ferguson
Subject: [Rdiff-backup-commits] rdiff-backup CHANGELOG rdiff_backup/cmodule.c r...
Date: Wed, 02 Jul 2008 18:15:52 +0000

CVSROOT:        /sources/rdiff-backup
Module name:    rdiff-backup
Changes by:     Andrew Ferguson <owsla> 08/07/02 18:15:52

Modified files:
        .              : CHANGELOG 
        rdiff_backup   : cmodule.c rpath.py 

Log message:
        Use the Python os.lstat() on Windows. (Patch from Josh Nisly)

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/rdiff-backup/CHANGELOG?cvsroot=rdiff-backup&r1=1.282&r2=1.283
http://cvs.savannah.gnu.org/viewcvs/rdiff-backup/rdiff_backup/cmodule.c?cvsroot=rdiff-backup&r1=1.24&r2=1.25
http://cvs.savannah.gnu.org/viewcvs/rdiff-backup/rdiff_backup/rpath.py?cvsroot=rdiff-backup&r1=1.122&r2=1.123

Patches:
Index: CHANGELOG
===================================================================
RCS file: /sources/rdiff-backup/rdiff-backup/CHANGELOG,v
retrieving revision 1.282
retrieving revision 1.283
diff -u -b -r1.282 -r1.283
--- CHANGELOG   2 Jul 2008 18:03:22 -0000       1.282
+++ CHANGELOG   2 Jul 2008 18:15:51 -0000       1.283
@@ -1,6 +1,8 @@
 New in v1.1.17 (????/??/??)
 ---------------------------
 
+Use the Python os.lstat() on Windows. (Patch from Josh Nisly)
+
 Support for Windows ACLs. (Patch from Josh Nisly and Fred Gansevles)
 
 Fix user_group.py to run on native Windows, which lacks grp and pwd Python

Index: rdiff_backup/cmodule.c
===================================================================
RCS file: /sources/rdiff-backup/rdiff-backup/rdiff_backup/cmodule.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- rdiff_backup/cmodule.c      10 Jun 2008 12:55:59 -0000      1.24
+++ rdiff_backup/cmodule.c      2 Jul 2008 18:15:52 -0000       1.25
@@ -48,10 +48,6 @@
 /* This code taken from Python's posixmodule.c */
 #undef STAT
 #if defined(MS_WIN64) || defined(MS_WIN32)
-#      define LSTAT _stati64
-#      define STAT _stati64
-#      define FSTAT _fstati64
-#      define STRUCT_STAT struct _stati64
 #      define SYNC _flushall
 #else
 #      define LSTAT lstat
@@ -77,15 +73,6 @@
 #define S_ISFIFO(mode)        (((mode) & S_IFMT) == S_IFIFO)
 #endif
 
-#if defined(MS_WIN64) || defined(MS_WIN32)
-#define S_ISSOCK(mode) (0)
-#define S_ISFIFO(mode) (0)
-#define S_ISLNK(mode) (0)
-#define S_ISLNK(mode) (0)
-#define S_ISCHR(mode) (0)
-#define S_ISBLK(mode) (0)
-#endif
-
 static PyObject *UnknownFileTypeError;
 static PyObject *c_make_file_dict(PyObject *self, PyObject *args);
 static PyObject *long2str(PyObject *self, PyObject *args);
@@ -98,6 +85,10 @@
         PyObject *self;
         PyObject *args;
 {
+#if defined(MS_WINDOWS)
+       PyErr_SetString(PyExc_AttributeError, "This function is not implemented 
on Windows.");
+       return NULL;
+#else
   PyObject *size, *inode, *mtime, *atime, *ctime, *devloc, *return_val;
   char *filename, filetype[5];
   STRUCT_STAT sbuf;
@@ -118,10 +109,7 @@
          return NULL;
        }
   }
-#if defined(MS_WINDOWS)
-  size = PyLong_FromLongLong((PY_LONG_LONG)sbuf.st_size);
-  inode = PyLong_FromLongLong((PY_LONG_LONG)-1);
-#else
+
 #ifdef HAVE_LARGEFILE_SUPPORT
   size = PyLong_FromLongLong((PY_LONG_LONG)sbuf.st_size);
   inode = PyLong_FromLongLong((PY_LONG_LONG)sbuf.st_ino);
@@ -129,10 +117,9 @@
   size = PyInt_FromLong(sbuf.st_size);
   inode = PyInt_FromLong((long)sbuf.st_ino);
 #endif /* HAVE_LARGEFILE_SUPPORT */
-#endif /* defined(MS_WINDOWS) */
   mode = (long)sbuf.st_mode;
   perms = mode & 07777;
-#if defined(HAVE_LONG_LONG) && !defined(MS_WINDOWS)
+#if defined(HAVE_LONG_LONG)
   devloc = PyLong_FromLongLong((PY_LONG_LONG)sbuf.st_dev);
 #else
   devloc = PyInt_FromLong((long)sbuf.st_dev);
@@ -189,7 +176,7 @@
   } else if (S_ISCHR(mode) || S_ISBLK(mode)) {
        /* Device files */
        char devtype[2];
-#if defined(HAVE_LONG_LONG) && !defined(MS_WINDOWS)
+#if defined(HAVE_LONG_LONG)
        PY_LONG_LONG devnums = (PY_LONG_LONG)sbuf.st_rdev;
        PyObject *major_num = PyLong_FromLongLong(major(devnums));
 #else
@@ -223,6 +210,7 @@
   Py_DECREF(atime);
   Py_DECREF(ctime);
   return return_val;
+#endif /* defined(MS_WINDOWS) */
 }
 
 /* Convert python long into 7 byte string */

Index: rdiff_backup/rpath.py
===================================================================
RCS file: /sources/rdiff-backup/rdiff-backup/rdiff_backup/rpath.py,v
retrieving revision 1.122
retrieving revision 1.123
diff -u -b -r1.122 -r1.123
--- rdiff_backup/rpath.py       2 Jul 2008 18:03:23 -0000       1.122
+++ rdiff_backup/rpath.py       2 Jul 2008 18:15:52 -0000       1.123
@@ -246,7 +246,7 @@
        if not rp_source.lstat(): rp_dest.delete()
        else:
                if rp_dest.lstat() and rp_source.getinode() == 
rp_dest.getinode() and \
-                               rp_source.getinode() != -1:
+                               rp_source.getinode() != 0:
                        log.Log("Warning: Attempt to rename over same inode: %s 
to %s"
                                        % (rp_source.path, rp_dest.path), 2)
                        # You can't rename one hard linked file over another
@@ -824,10 +824,13 @@
 
        def setdata(self):
                """Set data dictionary using C extension"""
+               try:
                self.data = self.conn.C.make_file_dict(self.path)
+               except AttributeError:
+                       self.data = self.make_file_dict_python()
                if self.lstat(): self.conn.rpath.setdata_local(self)
 
-       def make_file_dict_old(self):
+       def make_file_dict_python(self):
                """Create the data dictionary"""
                statblock = self.conn.rpath.tupled_lstat(self.path)
                if statblock is None:




reply via email to

[Prev in Thread] Current Thread [Next in Thread]