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

Corinna Vinschen
2002-08-05T10:27:11Z

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