|
# --- SDE-COPYRIGHT-NOTE-BEGIN ---
|
|
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
|
|
#
|
|
# Filename: lib/misc/bash-xterm.patch
|
|
# Copyright (C) 2008 The OpenSDE Project
|
|
# Copyright (C) 2004 - 2006 The T2 SDE Project
|
|
# Copyright (C) 1998 - 2003 Clifford Wolf
|
|
#
|
|
# More information can be found in the files COPYING and README.
|
|
#
|
|
# This patch file is dual-licensed. It is available under the license the
|
|
# patched project is licensed under, as long as it is an OpenSource license
|
|
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms
|
|
# of the GNU General Public License as published by the Free Software
|
|
# Foundation; either version 2 of the License, or (at your option) any later
|
|
# version.
|
|
# --- SDE-COPYRIGHT-NOTE-END ---
|
|
|
|
|
|
Little hack for bash: Adding 'xterm' option which causes bash to print the
|
|
PS1 prompt and the command bash is executing now in the title bar.
|
|
|
|
I'm not sure if my changes in execute_cmd.c will cause any troubles when
|
|
used with redirects and complex command blocks.
|
|
|
|
Written by Clifford <clifford@clifford.at>, 2001-04-08
|
|
|
|
diff -ruN bash-2.04-orig/builtins/builtins.c bash-2.04/builtins/builtins.c
|
|
--- bash-2.04-orig/builtins/builtins.c Sun Apr 8 11:19:48 2001
|
|
+++ bash-2.04/builtins/builtins.c Sun Apr 8 11:29:59 2001
|
|
@@ -765,6 +765,7 @@
|
|
#if defined (READLINE)
|
|
" vi use a vi-style line editing interface",
|
|
#endif /* READLINE */
|
|
+ " xterm create xterm title escape codes",
|
|
" xtrace same as -x",
|
|
" -p Turned on whenever the real and effective user ids do not match.",
|
|
" Disables processing of the $ENV file and importing of shell",
|
|
diff -ruN bash-2.04-orig/builtins/set.def bash-2.04/builtins/set.def
|
|
--- bash-2.04-orig/builtins/set.def Thu Aug 5 13:44:25 1999
|
|
+++ bash-2.04/builtins/set.def Sun Apr 8 11:36:59 2001
|
|
@@ -49,7 +49,7 @@
|
|
# include "../bashhist.h"
|
|
#endif
|
|
|
|
-extern int interactive;
|
|
+extern int interactive, xterm_mode;
|
|
extern int noclobber, posixly_correct, ignoreeof, eof_encountered_limit;
|
|
#if defined (READLINE)
|
|
extern int rl_editing_mode, no_line_editing;
|
|
@@ -104,6 +104,7 @@
|
|
#if defined (READLINE)
|
|
vi use a vi-style line editing interface
|
|
#endif /* READLINE */
|
|
+ xterm create xterm title escape codes
|
|
xtrace same as -x
|
|
-p Turned on whenever the real and effective user ids do not match.
|
|
Disables processing of the $ENV file and importing of shell
|
|
@@ -195,6 +196,7 @@
|
|
{ "emacs", (int *)NULL, set_edit_mode, get_edit_mode },
|
|
{ "vi", (int *)NULL, set_edit_mode, get_edit_mode },
|
|
#endif
|
|
+ { "xterm", &xterm_mode, (Function *)NULL, (Function *)NULL },
|
|
{ (char *)NULL, (int *)NULL }
|
|
};
|
|
|
|
diff -ruN bash-2.04-orig/execute_cmd.c bash-2.04/execute_cmd.c
|
|
--- bash-2.04-orig/execute_cmd.c Tue Jan 25 17:29:11 2000
|
|
+++ bash-2.04/execute_cmd.c Sun Apr 8 12:49:23 2001
|
|
@@ -98,7 +98,7 @@
|
|
# include "bashhist.h"
|
|
#endif
|
|
|
|
-extern int posixly_correct;
|
|
+extern int posixly_correct, xterm_mode;
|
|
extern int executing, breaking, continuing, loop_level;
|
|
extern int interactive, interactive_shell, login_shell, expand_aliases;
|
|
extern int parse_and_execute_level, running_trap, trap_line_number;
|
|
@@ -2367,6 +2367,16 @@
|
|
/* Remember what this command line looks like at invocation. */
|
|
command_string_index = 0;
|
|
print_simple_command (simple_command);
|
|
+
|
|
+ /* Create xterm title */
|
|
+ if (xterm_mode)
|
|
+ {
|
|
+ char *txt = get_string_value ("PS1");
|
|
+ txt = txt ? decode_prompt_string (txt) : NULL;
|
|
+ fprintf(stderr, "\033]0;%s%s\007", txt ? txt : "bash: ",
|
|
+ the_printed_command);
|
|
+ FREE(txt); fflush(stderr);
|
|
+ }
|
|
|
|
first_word_quoted =
|
|
simple_command->words ? (simple_command->words->word->flags & W_QUOTED): 0;
|
|
diff -ruN bash-2.04-orig/flags.c bash-2.04/flags.c
|
|
--- bash-2.04-orig/flags.c Thu Aug 5 13:20:28 1999
|
|
+++ bash-2.04/flags.c Sun Apr 8 11:35:24 2001
|
|
@@ -147,6 +147,11 @@
|
|
int brace_expansion = 1;
|
|
#endif
|
|
|
|
+/* Non-zero means that the shell prints xterm escape codes for creating
|
|
+ a new title text before printing the promt and before exetucing a
|
|
+ command. */
|
|
+int xterm_mode = 0;
|
|
+
|
|
/* **************************************************************** */
|
|
/* */
|
|
/* The Flags ALIST. */
|
|
diff -ruN bash-2.04-orig/parse.y bash-2.04/parse.y
|
|
--- bash-2.04-orig/parse.y Tue Feb 22 19:12:03 2000
|
|
+++ bash-2.04/parse.y Sun Apr 8 12:32:08 2001
|
|
@@ -99,6 +99,7 @@
|
|
#if defined (BUFFERED_INPUT)
|
|
extern int bash_input_fd_changed;
|
|
#endif
|
|
+extern int xterm_mode;
|
|
|
|
extern int errno;
|
|
/* **************************************************************** */
|
|
@@ -153,6 +154,7 @@
|
|
/* The decoded prompt string. Used if READLINE is not defined or if
|
|
editing is turned off. Analogous to current_readline_prompt. */
|
|
static char *current_decoded_prompt;
|
|
+static char *current_decoded_ps1_prompt;
|
|
|
|
/* The number of lines read from input while creating the current command. */
|
|
int current_command_line_count;
|
|
@@ -975,6 +977,10 @@
|
|
interrupt_immediately++;
|
|
}
|
|
|
|
+ if (xterm_mode) fprintf(stderr, "\033]0;%s\007",
|
|
+ current_decoded_ps1_prompt ?
|
|
+ current_decoded_ps1_prompt : "bash");
|
|
+
|
|
current_readline_line = readline (current_readline_prompt ?
|
|
current_readline_prompt : "");
|
|
|
|
@@ -3421,6 +3427,10 @@
|
|
ps1_prompt = get_string_value ("PS1");
|
|
ps2_prompt = get_string_value ("PS2");
|
|
|
|
+ FREE (current_decoded_ps1_prompt);
|
|
+ current_decoded_ps1_prompt = ps1_prompt ?
|
|
+ decode_prompt_string (ps1_prompt) : (char *)NULL;
|
|
+
|
|
if (!prompt_string_pointer)
|
|
prompt_string_pointer = &ps1_prompt;
|
|
|
|
@@ -3468,6 +3478,8 @@
|
|
static void
|
|
print_prompt ()
|
|
{
|
|
+ if (xterm_mode) fprintf(stderr, "\033]0;%s\007",
|
|
+ current_decoded_ps1_prompt ? current_decoded_ps1_prompt : "bash");
|
|
fprintf (stderr, "%s", current_decoded_prompt);
|
|
fflush (stderr);
|
|
}
|