Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Bob Rossi <bob@brasko.net>
To: Eli Zaretskii <eliz@gnu.org>
Cc: gdb-patches@sources.redhat.com
Subject: Re: mi tty commands
Date: Thu, 02 Jun 2005 22:17:00 -0000	[thread overview]
Message-ID: <20050602221644.GA21263@white> (raw)
In-Reply-To: <u1x7lddub.fsf@gnu.org>

On Wed, Jun 01, 2005 at 11:25:16PM +0300, Eli Zaretskii wrote:
> > Date: Wed, 1 Jun 2005 13:41:49 -0400
> > From: Bob Rossi <bob@brasko.net>
> > 
> > Here's the whole patch, inlcuding the doco.
> 
> Thanks.
> 
> > Index: gdb/doc/ChangeLog
> > +	* gdb.texinfo (GDB/MI Miscellaneous Commands): Add -inferior-tty-set.
> > +	(GDB/MI Miscellaneous Commands): Add -inferior-tty-show.
> > +	(Input/Output): Document "set/show inferior-tty".
> 
> There's no need to mention the same node twice.  I suggest to reformat
> as follows:
> 
> 	* gdb.texinfo (GDB/MI Miscellaneous Commands): Add -inferior-tty-set.
> 	and -inferior-tty-show.
> 	(Input/Output): Document "set/show inferior-tty".

Done.

> > RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v
> > retrieving revision 1.258
> > diff -w -u -r1.258 gdb.texinfo
> > --- gdb/doc/gdb.texinfo	29 May 2005 03:13:18 -0000	1.258
> > +++ gdb/doc/gdb.texinfo	1 Jun 2005 17:12:45 -0000
> > @@ -2090,6 +2090,22 @@
> >  command, only the input @emph{for your program} is affected.  The input
> >  for @value{GDBN} still comes from your terminal.
> >  
> > +@vindex inferior-tty
> 
> Please don't use @vindex for the "set SOMETHING" commands, we don't do
> that in GDB.  @vindex is generally reserved for convenience variables.
> 
> I suggest to have a "@cindex inferior tty" entry, though.

Done.
> > +@cindex Set the inferior controlling terminal
> 
> Please remove "the", and please don't start the index entries with a
> capital letter.  The convention in GDB (and the preferred style in
> any manual) is not to capitalize index entries.
> 

Done.

> > +Yet another way to tell @value{GDBN} where you program should do input
> > +and output is with the @code{set inferior-tty} command.  This is currently
> > +the same as using the @code{tty} command.
> 
> If we do what I think we should do, i.e. make "tty" an alias to "set
> inferior-tty", this paragraph will have to be rewritten.

Done.

Below is a patch with all of the changes both you and Daniel have
pointed out.

Thanks very much,
Bob Rossi

Index: src/gdb/ChangeLog
+	* fork-child.c (fork-inferior): Use accessor function for
+	inferior_io_terminal.
+	* infcmd.c (inferior_io_terminal): Make static.
+	(set_inferior_io_terminal): New function.
+	(get_inferior_io_terminal): Ditto.
+	(tty_command): Use accessor function.
+	(_initialize_infcmd): Add inferior_tty setshow variable.
+	(_initialize_infcmd): Remove tty command.
+	(_initialize_infcmd): Add a tty command that is an alias.
+	* inferior.h (set_inferior_io_terminal): New prototype.
+	(get_inferior_io_terminal): Ditto.
+	* nto-procfs (procfs_create_inferior): Use accessor function.
+	* win32-nat.c (child_create_inferior): Ditto.
+	* mi/mi-cmd-env.c (mi_cmd_inferior_tty_set): New function.
+	(mi_cmd_inferior_tty_set): Ditto.
+	* mi/mi-cmds.c (mi_cmds): Add inferior-tty-set and inferior-tty-show
+	* mi/mi-cmds.h (mi_cmd_inferior_tty_set): Add prototype.
+	(mi_cmd_inferior_tty_show): Ditto.

Index: src/gdb/doc/ChangeLog
+	* gdb.texinfo (GDB/MI Miscellaneous Commands): Add -inferior-tty-set
+	and -inferior-tty-show.
+	(Input/Output): Document "set/show inferior-tty" and tty alias.

Index: src/gdb/testsuite/ChangeLog
+	* gdb.mi/mi-basics.exp (test_setshow_inferior_tty): Test MI tty
+	command.

Index: src/gdb/fork-child.c
===================================================================
RCS file: /cvs/src/src/gdb/fork-child.c,v
retrieving revision 1.26
diff -w -u -r1.26 fork-child.c
--- src/gdb/fork-child.c	12 May 2005 20:21:17 -0000	1.26
+++ src/gdb/fork-child.c	2 Jun 2005 22:12:31 -0000
@@ -138,6 +138,7 @@
   char **save_our_env;
   int shell = 0;
   static char **argv;
+  const char *inferior_io_terminal = get_inferior_io_terminal ();
 
   /* If no exec file handed to us, get it from the exec-file command
      -- with a good, common error message if none is specified.  */
@@ -261,7 +262,7 @@
 
   /* Tell the terminal handling subsystem what tty we plan to run on;
      it will just record the information for later.  */
-  new_tty_prefork (inferior_io_terminal);
+  new_tty_prefork ((char *)inferior_io_terminal);
 
   /* It is generally good practice to flush any possible pending stdio
      output prior to doing a fork, to avoid the possibility of both
Index: src/gdb/infcmd.c
===================================================================
RCS file: /cvs/src/src/gdb/infcmd.c,v
retrieving revision 1.138
diff -w -u -r1.138 infcmd.c
--- src/gdb/infcmd.c	22 May 2005 14:53:34 -0000	1.138
+++ src/gdb/infcmd.c	2 Jun 2005 22:12:32 -0000
@@ -136,7 +136,7 @@
 
 /* File name for default use for standard in/out in the inferior.  */
 
-char *inferior_io_terminal;
+static char *inferior_io_terminal;
 
 /* Pid of our debugged inferior, or 0 if no inferior now.
    Since various parts of infrun.c test this to see whether there is a program
@@ -203,6 +203,24 @@
 \f
 /* Accessor routines. */
 
+void 
+set_inferior_io_terminal (char *terminal_name)
+{
+  if (inferior_io_terminal)
+    xfree (inferior_io_terminal);
+
+  if (!terminal_name)
+    inferior_io_terminal = NULL;
+  else
+    inferior_io_terminal = savestring (terminal_name, strlen (terminal_name));
+}
+
+const char *
+get_inferior_io_terminal (void)
+{
+  return inferior_io_terminal;
+}
+
 char *
 get_inferior_args (void)
 {
@@ -376,7 +394,7 @@
   if (file == 0)
     error_no_arg (_("terminal name for running target process"));
 
-  inferior_io_terminal = savestring (file, strlen (file));
+  set_inferior_io_terminal (file);
 }
 
 /* Kill the inferior if already running.  This function is designed
@@ -1990,9 +2008,14 @@
 {
   struct cmd_list_element *c;
 
-  c = add_com ("tty", class_run, tty_command,
-	       _("Set terminal for future runs of program being debugged."));
+  /* add the filename of the terminal connected to inferior I/O */
+  add_setshow_string_noescape_cmd ("inferior-tty", class_run,
+				   &inferior_io_terminal, _("\
+Set terminal for future runs of program being debugged."), _("\
+Show terminal for future runs of program being debugged."), _("\
+Usage: set inferior-tty /dev/pts/1"), NULL, NULL, &setlist, &showlist);
   set_cmd_completer (c, filename_completer);
+  add_com_alias ("tty", "set inferior-tty", class_alias, 0);
 
   add_setshow_optional_filename_cmd ("args", class_run,
 				     &inferior_args, _("\
Index: src/gdb/inferior.h
===================================================================
RCS file: /cvs/src/src/gdb/inferior.h,v
retrieving revision 1.71
diff -w -u -r1.71 inferior.h
--- src/gdb/inferior.h	14 May 2005 06:07:42 -0000	1.71
+++ src/gdb/inferior.h	2 Jun 2005 22:12:33 -0000
@@ -103,9 +103,10 @@
 
 extern void clear_sigio_trap (void);
 
-/* File name for default use for standard in/out in the inferior.  */
+/* Set/get file name for default use for standard in/out in the inferior.  */
 
-extern char *inferior_io_terminal;
+extern void set_inferior_io_terminal (char *terminal_name);
+extern const char *get_inferior_io_terminal (void);
 
 /* Collected pid, tid, etc. of the debugged inferior.  When there's
    no inferior, PIDGET (inferior_ptid) will be 0. */
Index: src/gdb/nto-procfs.c
===================================================================
RCS file: /cvs/src/src/gdb/nto-procfs.c,v
retrieving revision 1.13
diff -w -u -r1.13 nto-procfs.c
--- src/gdb/nto-procfs.c	15 Feb 2005 15:49:14 -0000	1.13
+++ src/gdb/nto-procfs.c	2 Jun 2005 22:12:33 -0000
@@ -984,6 +984,7 @@
   char *in = "", *out = "", *err = "";
   int fd, fds[3];
   sigset_t set;
+  const char *inferior_io_terminal = get_inferior_io_terminal ();
 
   argv = xmalloc (((strlen (allargs) + 1) / (unsigned) 2 + 2) *
 		  sizeof (*argv));
@@ -1010,11 +1011,11 @@
   if (inferior_io_terminal)
     {
       if (!in[0])
-	in = inferior_io_terminal;
+	in = (char*)inferior_io_terminal;
       if (!out[0])
-	out = inferior_io_terminal;
+	out = (char*)inferior_io_terminal;
       if (!err[0])
-	err = inferior_io_terminal;
+	err = (char*)inferior_io_terminal;
     }
 
   if (in[0])
Index: src/gdb/win32-nat.c
===================================================================
RCS file: /cvs/src/src/gdb/win32-nat.c,v
retrieving revision 1.111
diff -w -u -r1.111 win32-nat.c
--- src/gdb/win32-nat.c	23 May 2005 19:32:27 -0000	1.111
+++ src/gdb/win32-nat.c	2 Jun 2005 22:12:35 -0000
@@ -1735,6 +1735,7 @@
   const char *sh;
   int tty;
   int ostdin, ostdout, ostderr;
+  const char *inferior_io_terminal = get_inferior_io_terminal ();
 
   if (!exec_file)
     error (_("No executable specified, use `target exec'."));
Index: src/gdb/doc/gdb.texinfo
===================================================================
RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v
retrieving revision 1.259
diff -w -u -r1.259 gdb.texinfo
--- src/gdb/doc/gdb.texinfo	1 Jun 2005 20:38:44 -0000	1.259
+++ src/gdb/doc/gdb.texinfo	2 Jun 2005 22:12:50 -0000
@@ -2088,7 +2088,24 @@
 
 When you use the @code{tty} command or redirect input in the @code{run}
 command, only the input @emph{for your program} is affected.  The input
-for @value{GDBN} still comes from your terminal.
+for @value{GDBN} still comes from your terminal.  @code{tty} is an alias
+for @code{set inferior-tty}.
+
+@cindex inferior tty
+@cindex set inferior controlling terminal
+You can use the @code{show inferior-tty} command to tell @value{GDBN} to
+display the name of the terminal that will be used for future runs of your
+program.
+
+@table @code
+@item set inferior-tty /dev/ttyb
+@kindex set inferior-tty
+Set the tty for the program being debugged to /dev/ttyb.
+
+@item show inferior-tty
+@kindex show inferior-tty
+Show the current tty for the program being debugged.
+@end table
 
 @node Attach
 @section Debugging an already-running process
@@ -19122,6 +19139,57 @@
 (@value{GDBP})
 @end smallexample
 
+@subheading The @code{-inferior-tty-set} Command
+@findex -inferior-tty-set
+
+@subheading Synopsis
+
+@smallexample
+-inferior-tty-set /dev/pts/1
+@end smallexample
+
+Set terminal for future runs of the program being debugged.
+
+@subheading @value{GDBN} Command
+
+The corresponding @value{GDBN} command is @samp{set inferior-tty /dev/pts/1}.
+
+@subheading Example
+
+@smallexample
+(@value{GDBP})
+-inferior-tty-set /dev/pts/1
+^done
+(@value{GDBP})
+@end smallexample
+
+@subheading The @code{-inferior-tty-show} Command
+@findex -inferior-tty-show
+
+@subheading Synopsis
+
+@smallexample
+-inferior-tty-show
+@end smallexample
+
+Show terminal for future runs of program being debugged.
+
+@subheading @value{GDBN} Command
+
+The corresponding @value{GDBN} command is @samp{show inferior-tty /dev/pts/1}.
+
+@subheading Example
+
+@smallexample
+(@value{GDBP})
+-inferior-tty-set /dev/pts/1
+^done
+(@value{GDBP})
+-inferior-tty-show
+^done,inferior_tty_terminal="/dev/pts/1"
+(@value{GDBP})
+@end smallexample
+
 @ignore
 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 @node GDB/MI Kod Commands
Index: src/gdb/mi/mi-cmd-env.c
===================================================================
RCS file: /cvs/src/src/gdb/mi/mi-cmd-env.c,v
retrieving revision 1.8
diff -w -u -r1.8 mi-cmd-env.c
--- src/gdb/mi/mi-cmd-env.c	11 Feb 2005 04:06:11 -0000	1.8
+++ src/gdb/mi/mi-cmd-env.c	2 Jun 2005 22:12:50 -0000
@@ -244,6 +244,30 @@
   return MI_CMD_DONE;
 }
 
+/* Set the inferior terminal device name. */
+enum mi_cmd_result
+mi_cmd_inferior_tty_set (char *command, char **argv, int argc)
+{
+  set_inferior_io_terminal (argv[0]);
+
+  return MI_CMD_DONE;
+}
+
+/* Print the inferior terminal device name */
+enum mi_cmd_result
+mi_cmd_inferior_tty_show (char *command, char **argv, int argc)
+{
+  const char *inferior_io_terminal = get_inferior_io_terminal ();
+  
+  if ( !mi_valid_noargs ("mi_cmd_inferior_tty_show", argc, argv))
+    error (_("mi_cmd_inferior_tty_show: Usage: No args"));
+
+  if (inferior_io_terminal)
+    ui_out_field_string (uiout, "inferior_tty_terminal", inferior_io_terminal);
+
+  return MI_CMD_DONE;
+}
+
 void 
 _initialize_mi_cmd_env (void)
 {
Index: src/gdb/mi/mi-cmds.c
===================================================================
RCS file: /cvs/src/src/gdb/mi/mi-cmds.c,v
retrieving revision 1.16
diff -w -u -r1.16 mi-cmds.c
--- src/gdb/mi/mi-cmds.c	11 Feb 2005 18:13:55 -0000	1.16
+++ src/gdb/mi/mi-cmds.c	2 Jun 2005 22:12:50 -0000
@@ -153,6 +153,8 @@
   { "trace-save", { NULL, 0 }, NULL, NULL },
   { "trace-start", { NULL, 0 }, NULL, NULL },
   { "trace-stop", { NULL, 0 }, NULL, NULL },
+  { "inferior-tty-set", { NULL, 0 }, NULL, mi_cmd_inferior_tty_set},
+  { "inferior-tty-show", { NULL, 0 }, NULL, mi_cmd_inferior_tty_show},
   { "var-assign", { NULL, 0 }, 0, mi_cmd_var_assign},
   { "var-create", { NULL, 0 }, 0, mi_cmd_var_create},
   { "var-delete", { NULL, 0 }, 0, mi_cmd_var_delete},
Index: src/gdb/mi/mi-cmds.h
===================================================================
RCS file: /cvs/src/src/gdb/mi/mi-cmds.h,v
retrieving revision 1.15
diff -w -u -r1.15 mi-cmds.h
--- src/gdb/mi/mi-cmds.h	13 Jan 2005 22:08:27 -0000	1.15
+++ src/gdb/mi/mi-cmds.h	2 Jun 2005 22:12:50 -0000
@@ -96,6 +96,8 @@
 extern mi_cmd_args_ftype mi_cmd_target_select;
 extern mi_cmd_argv_ftype mi_cmd_thread_list_ids;
 extern mi_cmd_argv_ftype mi_cmd_thread_select;
+extern mi_cmd_argv_ftype mi_cmd_inferior_tty_set;
+extern mi_cmd_argv_ftype mi_cmd_inferior_tty_show;
 extern mi_cmd_argv_ftype mi_cmd_var_assign;
 extern mi_cmd_argv_ftype mi_cmd_var_create;
 extern mi_cmd_argv_ftype mi_cmd_var_delete;
Index: src/gdb/testsuite/gdb.mi/mi-basics.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-basics.exp,v
retrieving revision 1.9
diff -w -u -r1.9 mi-basics.exp
--- src/gdb/testsuite/gdb.mi/mi-basics.exp	9 Aug 2004 16:32:44 -0000	1.9
+++ src/gdb/testsuite/gdb.mi/mi-basics.exp	2 Jun 2005 22:12:59 -0000
@@ -236,12 +236,42 @@
 
 } 
 
+proc test_setshow_inferior_tty {} {
+    global mi_gdb_prompt
+
+    # Test that the commands,
+    #   -inferior-tty-set
+    #   -inferior-tth-show
+    # are setting/getting the same data in GDB.
+
+    mi_gdb_test "301-inferior-tty-show" \
+		"301\\\^done" \
+		"initial tty is empty"
+
+    mi_gdb_test "302-inferior-tty-set /dev/pts/1" \
+		"302\\\^done" \
+		"set tty to /dev/pts/1"
+
+    mi_gdb_test "303-inferior-tty-show" \
+		"303\\\^done,inferior_tty_terminal=\"/dev/pts/1\"" \
+		"tty was set correctly"
+
+    mi_gdb_test "304-inferior-tty-set" \
+		"304\\\^done" \
+		"set tty to the empty string"
+
+    mi_gdb_test "305-inferior-tty-show" \
+		"305\\\^done" \
+		"final tty is empty"
+}
+
 if [test_mi_interpreter_selection] {
   test_exec_and_symbol_mi_operatons
   test_breakpoints_deletion
   test_dir_specification
   test_cwd_specification
   test_path_specification
+  test_setshow_inferior_tty
 }
 
 mi_gdb_exit


  reply	other threads:[~2005-06-02 22:17 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-02-24 20:49 Bob Rossi
2005-02-26  4:33 ` Eli Zaretskii
2005-02-26  6:07   ` Bob Rossi
2005-02-26  8:25     ` Daniel Jacobowitz
2005-02-28 20:28       ` Bob Rossi
2005-03-02  2:52         ` Bob Rossi
2005-03-11  2:26           ` Bob Rossi
2005-05-23  3:13             ` Bob Rossi
2005-05-28 23:49               ` Daniel Jacobowitz
2005-05-29  8:37                 ` Eli Zaretskii
2005-05-29 16:22                   ` Daniel Jacobowitz
2005-05-29 18:10                     ` Eli Zaretskii
2005-05-29 19:05                       ` Daniel Jacobowitz
2005-05-30 15:48                   ` Bob Rossi
2005-06-01  0:14                     ` Bob Rossi
2005-06-01  4:00                       ` Eli Zaretskii
2005-06-01 13:07                         ` Bob Rossi
2005-06-01 17:42                           ` Bob Rossi
2005-06-01 20:25                             ` Eli Zaretskii
2005-06-02 22:17                               ` Bob Rossi [this message]
2005-06-03  6:48                                 ` Eli Zaretskii
2005-06-03 17:32                                   ` Bob Rossi
2005-06-10  2:28                                 ` Bob Rossi
2005-06-10  6:36                                   ` Eli Zaretskii
2005-06-10 11:04                                     ` Bob Rossi
2005-06-13  3:07                                 ` Daniel Jacobowitz
2005-06-13  6:09                                   ` Eli Zaretskii
2005-06-17 21:08                                   ` Bob Rossi
2005-06-17 21:14                                     ` Daniel Jacobowitz
2005-06-18  8:27                                       ` Eli Zaretskii
2005-06-18 12:29                                       ` Bob Rossi
2005-06-26 13:43                                         ` Bob Rossi
2005-07-03 18:43                                         ` Daniel Jacobowitz
2005-07-06 14:54                                           ` Bob Rossi
2005-07-10 21:08                                             ` Mark Kettenis
2005-07-10 21:32                                               ` Bob Rossi
2005-07-11 15:52                                               ` Bob Rossi
2005-07-11 18:41                                                 ` Mark Kettenis
2005-07-11 20:00                                                   ` Bob Rossi
2005-07-11 20:01                                                     ` Daniel Jacobowitz
2005-07-11 20:44                                                       ` Bob Rossi
2005-07-11 20:55                                                         ` Mark Kettenis
2005-07-11 21:26                                               ` Bob Rossi
2005-07-12 20:56                                                 ` Mark Kettenis
2005-07-14 14:51                                                   ` Bob Rossi
2005-06-01 20:12                           ` Eli Zaretskii
2005-06-01 20:43                             ` Bob Rossi
2005-06-02  3:48                               ` Eli Zaretskii
2005-05-30 15:48                 ` Bob Rossi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20050602221644.GA21263@white \
    --to=bob@brasko.net \
    --cc=eliz@gnu.org \
    --cc=gdb-patches@sources.redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox