This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[RFA] cli/cli-dump.c: Write dump always in binary mode on Cygwin
- From: Corinna Vinschen <vinschen at redhat dot com>
- To: gdb-patches at sources dot redhat dot com
- Date: Mon, 5 Aug 2002 12:27:00 +0200
- Subject: [RFA] cli/cli-dump.c: Write dump always in binary mode on Cygwin
- Reply-to: gdb-patches at sources dot redhat dot com
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