Treat identical src/dst file names as if only one entered. One Windows
authorNick Clifton <nickc@redhat.com>
Tue, 13 May 2003 11:15:59 +0000 (11:15 +0000)
committerNick Clifton <nickc@redhat.com>
Tue, 13 May 2003 11:15:59 +0000 (11:15 +0000)
creating an output file of the same name as the input file will delete
the input file before it is read.

binutils/ChangeLog
binutils/objcopy.c

index 7819fb8b5924da62cc526b366027e4230343666c..10dbaaf2a99ce7be56f7a3bef28a80556502706d 100644 (file)
@@ -1,3 +1,9 @@
+2003-05-13  Michael Eager <eager@mvista.com>
+
+       * objcopy.c: Treat identical src/dst file names as if only one
+       entered.  One Windows creating an output file of the same name as
+       the input file will delete the input file before it is read.
+
 2003-05-12  Salvador Eduardo Tropea  <salvador@inti.gov.ar>
 
        * debug.c (debug_get_real_type): Extend test for circular debug
index 45072495c1ebf728b0503d05900e44395cd13655..27c844fbb75fdd15e42ccc055a1637406c4a02f3 100644 (file)
@@ -2733,9 +2733,10 @@ copy_main (argc, argv)
     if (stat (input_filename, & statbuf) < 0)
       fatal (_("Cannot stat: %s: %s"), input_filename, strerror (errno));
 
-  /* If there is no destination file then create a temp and rename
-     the result into the input.  */
-  if (output_filename == (char *) NULL)
+  /* If there is no destination file, or the source and destination files
+     are the same,  then create a temp and rename the result into the input.  */
+  if ((output_filename == (char *) NULL) ||
+      (strcmp (input_filename, output_filename) == 0))
     {
       char *tmpname = make_tempname (input_filename);