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]

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


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


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