diff options
author | Thomas Quinot <quinot@adacore.com> | 2008-05-23 15:29:02 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2008-05-23 15:29:02 +0200 |
commit | e401e17bdfaa22265f753151d9354f7de577a98c (patch) | |
tree | 854259bd976214ac710b93b279badb63f5dcc42e | |
parent | d313a1b6bc336a4061de1c19e9903daa125a6561 (diff) | |
download | gcc-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-x | gcc/ada/s-os_lib.adb | 16 |
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); |