This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[RFA] cli/cli-dump.c: Write dump always in binary mode on Cygwin


Hi,

the following patch solves a problem in the dump code in cli/cli-dump.c.
On systems which support binary and textmode file IO, the dump code
doesn't explicitly write in binary mode, resulting in files written
in textmode if that's the current default on the system.  This leads
to a corrupted dump file since each LF is converted to CR/LF in the
file.  The patch uses the "b" flag in the fopen(3) call to write
explicitly binary.  Even if that flag is POSIX standard, I decided
to use it only on systems supporting binmode/textmode so that also
older systems have a chance.

Corinna

2002-08-05  Corinna Vinschen  <vinschen@redhat.com>

	* cli/cli-dump.c: Include fcntl.h to get open(2) flags.
	(add_dump_command): Utilize "b" fopen(3) flag on systems
	defining O_BINARY.

Index: gdb/cli/cli-dump.c
===================================================================
RCS file: /cvs/src/src/gdb/cli/cli-dump.c,v
retrieving revision 1.4
diff -u -p -r1.4 cli-dump.c
--- gdb/cli/cli-dump.c	24 May 2002 01:25:52 -0000	1.4
+++ gdb/cli/cli-dump.c	5 Aug 2002 10:15:17 -0000
@@ -30,6 +30,7 @@
 #include "cli/cli-dump.h"
 #include "gdb_assert.h"
 #include <ctype.h>
+#include <fcntl.h>
 #include "target.h"
 
 #define XMALLOC(TYPE) ((TYPE*) xmalloc (sizeof (TYPE)))
@@ -442,7 +443,11 @@ add_dump_command (char *name, void (*fun
   c->completer =  filename_completer;
   d = XMALLOC (struct dump_context);
   d->func = func;
+#ifdef O_BINARY
+  d->mode = "wb";
+#else
   d->mode = "w";
+#endif
   set_cmd_context (c, d);
   c->func = call_dump_func;
 
@@ -450,7 +455,11 @@ add_dump_command (char *name, void (*fun
   c->completer =  filename_completer;
   d = XMALLOC (struct dump_context);
   d->func = func;
+#ifdef O_BINARY
+  d->mode = "ab";
+#else
   d->mode = "a";
+#endif
   set_cmd_context (c, d);
   c->func = call_dump_func;
 


-- 
Corinna Vinschen
Cygwin Developer
Red Hat, Inc.
mailto:vinschen@redhat.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]