From 50b513a12b4f9f5098d1bcd08f6b19b7693397d0 Mon Sep 17 00:00:00 2001
From: Arch Librarian <arch@canonical.com>
Date: Mon, 20 Sep 2004 16:51:43 +0000
Subject: [PATCH] Fixes for file opening Author: jgg Date: 1998-11-27 04:20:52
 GMT Fixes for file opening

---
 apt-pkg/contrib/fileutl.cc | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/apt-pkg/contrib/fileutl.cc b/apt-pkg/contrib/fileutl.cc
index b5cdf782b..379641c2c 100644
--- a/apt-pkg/contrib/fileutl.cc
+++ b/apt-pkg/contrib/fileutl.cc
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
-// $Id: fileutl.cc,v 1.15 1998/11/27 01:14:08 jgg Exp $
+// $Id: fileutl.cc,v 1.16 1998/11/27 04:20:52 jgg Exp $
 /* ######################################################################
    
    File Utilities
@@ -186,9 +186,13 @@ FileFd::FileFd(string FileName,OpenMode Mode, unsigned long Perms)
       break;
       
       case WriteEmpty:
-      unlink(FileName.c_str());
-      iFd = open(FileName.c_str(),O_RDWR | O_CREAT | O_EXCL,Perms);
-      break;
+      {
+	 struct stat Buf;
+	 if (stat(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);
-- 
2.47.2