2004-02-23 Jeff Johnston <jjohnstn@redhat.com>
* defs.h (nquery, yquery): New prototypes. * breakpoint.c (break_command_1): Use new nquery interface. * utils.c (defaulted_query, nquery, yquery): New functions.
This commit is contained in:
parent
8ee9a8b2e7
commit
cbdeadcaa3
@ -1,3 +1,9 @@
|
||||
2004-02-23 Jeff Johnston <jjohnstn@redhat.com>
|
||||
|
||||
* defs.h (nquery, yquery): New prototypes.
|
||||
* breakpoint.c (break_command_1): Use new nquery interface.
|
||||
* utils.c (defaulted_query, nquery, yquery): New functions.
|
||||
|
||||
2004-02-23 Andrew Cagney <cagney@redhat.com>
|
||||
|
||||
* hppa-tdep.c (hppa_frame_align): New function.
|
||||
@ -303,6 +309,7 @@
|
||||
* sh-tdep.c (sh_analyze_prologue): Eliminate useless test of
|
||||
cache->uses_fp prior to setting it.
|
||||
|
||||
>>>>>>> 1.5450
|
||||
2004-02-19 Fred Fish <fnf@redhat.com>
|
||||
|
||||
Fix for PR breakpoint/1558.
|
||||
@ -319,6 +326,7 @@
|
||||
type being greater than sizeof of host's LONGEST. Always use
|
||||
unpack_long() unless format 'f' chosen.
|
||||
|
||||
>>>>>>> 1.5419
|
||||
2004-02-19 Joel Brobecker <brobecker@gnat.com>
|
||||
|
||||
Committed by Elena Zannoni <ezannoni@redhat.com>
|
||||
|
@ -5103,7 +5103,7 @@ break_command_1 (char *arg, int flag, int from_tty, struct breakpoint *pending_b
|
||||
|
||||
error_output_message (NULL, err_msg);
|
||||
xfree (err_msg);
|
||||
if (!query ("Make breakpoint pending on future shared library load? "))
|
||||
if (!nquery ("Make breakpoint pending on future shared library load? "))
|
||||
return rc;
|
||||
copy_arg = xstrdup (addr_start);
|
||||
addr_string = ©_arg;
|
||||
|
@ -405,6 +405,8 @@ extern void null_cleanup (void *);
|
||||
extern int myread (int, char *, int);
|
||||
|
||||
extern int query (const char *, ...) ATTR_FORMAT (printf, 1, 2);
|
||||
extern int nquery (const char *, ...) ATTR_FORMAT (printf, 1, 2);
|
||||
extern int yquery (const char *, ...) ATTR_FORMAT (printf, 1, 2);
|
||||
|
||||
extern void init_page_info (void);
|
||||
|
||||
|
139
gdb/utils.c
139
gdb/utils.c
@ -1335,6 +1335,145 @@ query (const char *ctlstr, ...)
|
||||
}
|
||||
|
||||
|
||||
/* This function supports the nquery() and yquery() functions.
|
||||
Ask user a y-or-n question and return 0 if answer is no, 1 if
|
||||
answer is yes, or default the answer to the specified default.
|
||||
DEFCHAR is either 'y' or 'n' and refers to the default answer.
|
||||
CTLSTR is the control string and should end in "? ". It should
|
||||
not say how to answer, because we do that.
|
||||
ARGS are the arguments passed along with the CTLSTR argument to
|
||||
printf. */
|
||||
|
||||
static int
|
||||
defaulted_query (const char *ctlstr, const char defchar, va_list args)
|
||||
{
|
||||
int answer;
|
||||
int ans2;
|
||||
int retval;
|
||||
int def_value;
|
||||
char def_answer, not_def_answer;
|
||||
char *y_string, *n_string;
|
||||
|
||||
/* Set up according to which answer is the default. */
|
||||
if (defchar == 'y')
|
||||
{
|
||||
def_value = 1;
|
||||
def_answer = 'Y';
|
||||
not_def_answer = 'N';
|
||||
y_string = "[y]";
|
||||
n_string = "n";
|
||||
}
|
||||
else
|
||||
{
|
||||
def_value = 0;
|
||||
def_answer = 'N';
|
||||
not_def_answer = 'Y';
|
||||
y_string = "y";
|
||||
n_string = "[n]";
|
||||
}
|
||||
|
||||
if (query_hook)
|
||||
{
|
||||
return query_hook (ctlstr, args);
|
||||
}
|
||||
|
||||
/* Automatically answer default value if input is not from a terminal. */
|
||||
if (!input_from_terminal_p ())
|
||||
return def_value;
|
||||
|
||||
while (1)
|
||||
{
|
||||
wrap_here (""); /* Flush any buffered output */
|
||||
gdb_flush (gdb_stdout);
|
||||
|
||||
if (annotation_level > 1)
|
||||
printf_filtered ("\n\032\032pre-%cquery\n", defchar);
|
||||
|
||||
vfprintf_filtered (gdb_stdout, ctlstr, args);
|
||||
printf_filtered ("(%s or %s) ", y_string, n_string);
|
||||
|
||||
if (annotation_level > 1)
|
||||
printf_filtered ("\n\032\032%cquery\n", defchar);
|
||||
|
||||
wrap_here ("");
|
||||
gdb_flush (gdb_stdout);
|
||||
|
||||
answer = fgetc (stdin);
|
||||
clearerr (stdin); /* in case of C-d */
|
||||
if (answer == EOF) /* C-d */
|
||||
{
|
||||
retval = def_value;
|
||||
break;
|
||||
}
|
||||
/* Eat rest of input line, to EOF or newline */
|
||||
if (answer != '\n')
|
||||
do
|
||||
{
|
||||
ans2 = fgetc (stdin);
|
||||
clearerr (stdin);
|
||||
}
|
||||
while (ans2 != EOF && ans2 != '\n' && ans2 != '\r');
|
||||
|
||||
if (answer >= 'a')
|
||||
answer -= 040;
|
||||
/* Check answer. For the non-default, the user must specify
|
||||
the non-default explicitly. */
|
||||
if (answer == not_def_answer)
|
||||
{
|
||||
retval = !def_value;
|
||||
break;
|
||||
}
|
||||
/* Otherwise, for the default, the user may either specify
|
||||
the required input or have it default by entering nothing. */
|
||||
if (answer == def_answer || answer == '\n' ||
|
||||
answer == '\r' || answer == EOF)
|
||||
{
|
||||
retval = def_value;
|
||||
break;
|
||||
}
|
||||
/* Invalid entries are not defaulted and require another selection. */
|
||||
printf_filtered ("Please answer %s or %s.\n",
|
||||
y_string, n_string);
|
||||
}
|
||||
|
||||
if (annotation_level > 1)
|
||||
printf_filtered ("\n\032\032post-%cquery\n", defchar);
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
||||
/* Ask user a y-or-n question and return 0 if answer is no, 1 if
|
||||
answer is yes, or 0 if answer is defaulted.
|
||||
Takes three args which are given to printf to print the question.
|
||||
The first, a control string, should end in "? ".
|
||||
It should not say how to answer, because we do that. */
|
||||
|
||||
int
|
||||
nquery (const char *ctlstr, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
va_start (args, ctlstr);
|
||||
return defaulted_query (ctlstr, 'n', args);
|
||||
va_end (args);
|
||||
}
|
||||
|
||||
/* Ask user a y-or-n question and return 0 if answer is no, 1 if
|
||||
answer is yes, or 1 if answer is defaulted.
|
||||
Takes three args which are given to printf to print the question.
|
||||
The first, a control string, should end in "? ".
|
||||
It should not say how to answer, because we do that. */
|
||||
|
||||
int
|
||||
yquery (const char *ctlstr, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
va_start (args, ctlstr);
|
||||
return defaulted_query (ctlstr, 'y', args);
|
||||
va_end (args);
|
||||
}
|
||||
|
||||
/* Print an error message saying that we couldn't make sense of a
|
||||
\^mumble sequence in a string or character constant. START and END
|
||||
indicate a substring of some larger string that contains the
|
||||
|
Loading…
x
Reference in New Issue
Block a user