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

Michael Snyder
2002-08-05T23:10:10Z

Corinna Vinschen wrote:
>
> 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

Hmm, file has no assigned maintainer...
Well, as a global-write maintainer, I wouldn't be opposed to
the way it's written, but do we actually know of any environments
where the #if is strictly necessary?

> 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