[Top][All Lists]
[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:
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Rdiff-backup-commits] rdiff-backup CHANGELOG rdiff_backup/cmodule.c r...,
Andrew Ferguson <=