summaryrefslogtreecommitdiff
path: root/apt-pkg/contrib/fileutl.cc
diff options
context:
space:
mode:
authorJulian Andres Klode <jak@debian.org>2010-08-10 14:55:36 +0200
committerJulian Andres Klode <jak@debian.org>2010-08-10 14:55:36 +0200
commitfc81e8f2deff3b86738cad78aa491b1b514b3c59 (patch)
tree7d379423063f0e11a9aa6cbe7de965c21f0e2dbf /apt-pkg/contrib/fileutl.cc
parent4a9db82795a64fce22128f8dc06596421ce2d865 (diff)
apt-pkg/contrib/fileutl.cc: Revert WriteEmpty to old behavior (LP: #613211)
Diffstat (limited to 'apt-pkg/contrib/fileutl.cc')
-rw-r--r--apt-pkg/contrib/fileutl.cc9
1 files changed, 8 insertions, 1 deletions
diff --git a/apt-pkg/contrib/fileutl.cc b/apt-pkg/contrib/fileutl.cc
index f86bf2942..91aecee65 100644
--- a/apt-pkg/contrib/fileutl.cc
+++ b/apt-pkg/contrib/fileutl.cc
@@ -670,7 +670,6 @@ bool FileFd::Open(string FileName,OpenMode Mode, unsigned long Perms)
break;
case WriteAtomic:
- case WriteEmpty:
{
Flags |= Replace;
char *name = strdup((FileName + ".XXXXXX").c_str());
@@ -680,6 +679,14 @@ bool FileFd::Open(string FileName,OpenMode Mode, unsigned long Perms)
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);