aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Quinot <quinot@adacore.com>2008-05-23 15:29:02 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2008-05-23 15:29:02 +0200
commite401e17bdfaa22265f753151d9354f7de577a98c (patch)
tree854259bd976214ac710b93b279badb63f5dcc42e
parentd313a1b6bc336a4061de1c19e9903daa125a6561 (diff)
downloadgcc-e401e17bdfaa22265f753151d9354f7de577a98c.zip
gcc-e401e17bdfaa22265f753151d9354f7de577a98c.tar.gz
gcc-e401e17bdfaa22265f753151d9354f7de577a98c.tar.bz2
2008-05-23 Thomas Quinot <quinot@adacore.com>
* s-os_lib.adb: (copy_File): Do not open destination file if source file is unreadable. From-SVN: r135805
-rwxr-xr-xgcc/ada/s-os_lib.adb16
1 files changed, 13 insertions, 3 deletions
diff --git a/gcc/ada/s-os_lib.adb b/gcc/ada/s-os_lib.adb
index f3e369c..5655b3c 100755
--- a/gcc/ada/s-os_lib.adb
+++ b/gcc/ada/s-os_lib.adb
@@ -452,7 +452,13 @@ package body System.OS_Lib is
begin
From := Open_Read (Name, Binary);
- To := Create_File (To_Name, Binary);
+
+ -- Do not clobber destination file if source file could not be opened
+
+ if From /= Invalid_FD then
+ To := Create_File (To_Name, Binary);
+ end if;
+
Copy (From, To);
-- Copy attributes
@@ -545,10 +551,14 @@ package body System.OS_Lib is
if Is_Regular_File (Pathname) then
-- Append mode and destination file exists, append data at the
- -- end of Pathname.
+ -- end of Pathname. But if we fail to open source file, do not
+ -- touch destination file at all.
From := Open_Read (Name, Binary);
- To := Open_Read_Write (Pathname, Binary);
+ if From /= Invalid_FD then
+ To := Open_Read_Write (Pathname, Binary);
+ end if;
+
Lseek (To, 0, Seek_End);
Copy (From, To);