diff options
author | David Kalnischkies <kalnischkies@gmail.com> | 2010-08-10 16:04:17 +0200 |
---|---|---|
committer | David Kalnischkies <kalnischkies@gmail.com> | 2010-08-10 16:04:17 +0200 |
commit | b472c6b08e0bfd1ea94390cd525cef579ea3ccee (patch) | |
tree | 721bcf9bbe68590dc6409f4ba2bf85e2fac6a81f /apt-pkg/contrib/fileutl.cc | |
parent | 47f6d1b72bc883ecdc00542da4c824a5c4fb79fa (diff) | |
parent | 22041bd2864b8d0b401b45dde9eda4003a11fec4 (diff) |
merge with debian-experimental-ma
* Swedish translation update. Closes: #592366
* apt-pkg/pkgcache.cc:
- re-evaluate the architectures cache when the cache is (re)opened
* apt-pkg/cdrom.cc:
- fix off-by-one error in DropBinaryArch
* apt-pkg/contrib/fileutl.cc:
- Add WriteAtomic mode.
- Revert WriteEmpty to old behavior (LP: #613211)
* apt-pkg, methods:
- Convert users of WriteEmpty to WriteAtomic.
* apt-pkg/depcache.cc:
- Only try upgrade for Breaks if there is a newer version, otherwise
handle it as Conflicts (by removing it) (helps for #591882).
* debian/control:
- Add dependency on gnupg to apt, apt-key uses it.
Diffstat (limited to 'apt-pkg/contrib/fileutl.cc')
-rw-r--r-- | apt-pkg/contrib/fileutl.cc | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/apt-pkg/contrib/fileutl.cc b/apt-pkg/contrib/fileutl.cc index 2a3b8a87d..91aecee65 100644 --- a/apt-pkg/contrib/fileutl.cc +++ b/apt-pkg/contrib/fileutl.cc @@ -669,7 +669,7 @@ bool FileFd::Open(string FileName,OpenMode Mode, unsigned long Perms) } break; - case WriteEmpty: + case WriteAtomic: { Flags |= Replace; char *name = strdup((FileName + ".XXXXXX").c_str()); @@ -678,6 +678,15 @@ bool FileFd::Open(string FileName,OpenMode Mode, unsigned long Perms) free(name); break; } + + case WriteEmpty: + { + struct stat Buf; + if (lstat(FileName.c_str(),&Buf) == 0 && S_ISLNK(Buf.st_mode)) + unlink(FileName.c_str()); + iFd = open(FileName.c_str(),O_RDWR | O_CREAT | O_TRUNC,Perms); + break; + } case WriteExists: iFd = open(FileName.c_str(),O_RDWR); |