From 0568ccb0acb963d00f5bc283b7389d2b397c6364 Mon Sep 17 00:00:00 2001 From: Stan Shebs Date: Fri, 15 Jul 1994 23:53:04 +0000 Subject: [PATCH] Stop printing at null char option, from Oliver Meyer (omeyer@i3.informatik.rwth-aachen.de). * valprint.h, valprint.c (stop_print_at_null): New global. * valprint.c (_initialize_valprint): New print set subcommand "null-stop". * c-valprint.c (c_val_print): If stop_print_at_null is on, and printing a char array, adjust the number of chars to print. --- gdb/ChangeLog | 10 ++++++++++ gdb/c-valprint.c | 21 +++++++++++++++++++-- gdb/valprint.h | 6 +++++- 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 5a8ebb967c4..10cf1c6a666 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,13 @@ +Fri Jul 15 16:43:33 1994 Stan Shebs (shebs@andros.cygnus.com) + + Stop printing at null char option, from Oliver Meyer + (omeyer@i3.informatik.rwth-aachen.de). + * valprint.h, valprint.c (stop_print_at_null): New global. + * valprint.c (_initialize_valprint): New print set subcommand + "null-stop". + * c-valprint.c (c_val_print): If stop_print_at_null is on, and + printing a char array, adjust the number of chars to print. + Fri Jul 15 14:33:40 1994 Stan Shebs (shebs@andros.cygnus.com) From Kevin A. Buettner (kev@cujo.geg.mot.com). diff --git a/gdb/c-valprint.c b/gdb/c-valprint.c index b776237d79f..ee98fc46e3f 100644 --- a/gdb/c-valprint.c +++ b/gdb/c-valprint.c @@ -1,6 +1,6 @@ /* Support for printing C values for GDB, the GNU debugger. Copyright 1986, 1988, 1989, 1991, 1992, 1993, 1994 - Free Software Foundation, Inc. + Free Software Foundation, Inc. This file is part of GDB. @@ -109,9 +109,26 @@ c_val_print (type, valaddr, address, stream, format, deref_ref, recurse, print_spaces_filtered (2 + 2 * recurse, stream); } /* For an array of chars, print with string syntax. */ - if (eltlen == 1 && TYPE_CODE (elttype) == TYPE_CODE_INT + if (eltlen == 1 && + ((TYPE_CODE (elttype) == TYPE_CODE_INT) + || ((current_language->la_language == language_m2) + && (TYPE_CODE (elttype) == TYPE_CODE_CHAR))) && (format == 0 || format == 's')) { + /* If requested, look for the first null char and only print + elements up to it. */ + if (stop_print_at_null) + { + int temp_len; + + /* Look for a NULL char. */ + for (temp_len = 0; + valaddr[temp_len] + && temp_len < len && temp_len < print_max; + temp_len++); + len = temp_len; + } + LA_PRINT_STRING (stream, valaddr, len, 0); i = len; } diff --git a/gdb/valprint.h b/gdb/valprint.h index 4d586417563..e45f48de321 100644 --- a/gdb/valprint.h +++ b/gdb/valprint.h @@ -1,5 +1,6 @@ /* Declarations for value printing routines for GDB, the GNU debugger. - Copyright 1986, 1988, 1989, 1991 Free Software Foundation, Inc. + Copyright 1986, 1988, 1989, 1991, 1992, 1993, 1994 + Free Software Foundation, Inc. This file is part of GDB. @@ -29,8 +30,11 @@ extern int objectprint; /* Controls looking up an object's derived type using what we find in its vtables. */ extern unsigned int print_max; /* Max # of chars for strings/vectors */ + extern int output_format; +extern int stop_print_at_null; /* Stop printing at null char? */ + extern void val_print_array_elements PARAMS ((struct type *, char *, CORE_ADDR, GDB_FILE *, int, int, int, enum val_prettyprint, int)); -- 2.30.2