- Timestamp:
- Dec 29, 2008, 8:04:33 PM (16 years ago)
- Branches:
- clfs-1.2, clfs-2.1, clfs-3.0.0-systemd, clfs-3.0.0-sysvinit, master, systemd, sysvinit
- Children:
- 077f768
- Parents:
- 022cd24
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
patches/bash-3.2-fixes-9.patch
r022cd24 rb35707a 1 1 Submitted By: Jim Gifford (jim at linuxfromscratch dot org) 2 Date: 06-18-20082 Date: 12-20-2008 3 3 Initial Package Version: 3.2 4 4 Origin: Upstream 5 5 Upstream Status: Applied 6 Description: Contains all upstream patches up to 3.2-0 396 Description: Contains all upstream patches up to 3.2-048 7 7 8 8 diff -Naur bash-3.2.orig/array.c bash-3.2/array.c 9 --- bash-3.2.orig/array.c 2005-06-01 1 6:39:22.000000000 -040010 +++ bash-3.2/array.c 2008- 06-18 06:46:19.000000000 -04009 --- bash-3.2.orig/array.c 2005-06-01 13:39:22.000000000 -0700 10 +++ bash-3.2/array.c 2008-12-20 07:00:08.000000000 -0800 11 11 @@ -120,7 +120,6 @@ 12 12 return(a1); … … 105 105 ifs = getifs(); 106 106 sifs[0] = ifs ? *ifs : '\0'; 107 @@ -655,7 +683,7 @@ 108 is = inttostr (element_index(ae), indstr, sizeof(indstr)); 109 valstr = element_value (ae) ? sh_double_quote (element_value(ae)) 110 : (char *)NULL; 111 - elen = STRLEN (indstr) + 8 + STRLEN (valstr); 112 + elen = STRLEN (is) + 8 + STRLEN (valstr); 113 RESIZE_MALLOCED_BUFFER (result, rlen, (elen + 1), rsize, rsize); 114 115 result[rlen++] = '['; 107 116 diff -Naur bash-3.2.orig/array.h bash-3.2/array.h 108 --- bash-3.2.orig/array.h 2003-06-01 1 5:50:30.000000000 -0400109 +++ bash-3.2/array.h 2008- 06-18 06:46:19.000000000 -0400117 --- bash-3.2.orig/array.h 2003-06-01 12:50:30.000000000 -0700 118 +++ bash-3.2/array.h 2008-12-20 06:59:28.000000000 -0800 110 119 @@ -55,6 +55,7 @@ 111 120 extern ARRAY_ELEMENT *array_unshift_element __P((ARRAY *)); … … 117 126 extern char *array_patsub __P((ARRAY *, char *, char *, int)); 118 127 diff -Naur bash-3.2.orig/arrayfunc.c bash-3.2/arrayfunc.c 119 --- bash-3.2.orig/arrayfunc.c 2006-07-27 0 9:37:59.000000000 -0400120 +++ bash-3.2/arrayfunc.c 2008- 06-18 06:46:30.000000000 -0400128 --- bash-3.2.orig/arrayfunc.c 2006-07-27 06:37:59.000000000 -0700 129 +++ bash-3.2/arrayfunc.c 2008-12-20 06:59:57.000000000 -0800 121 130 @@ -618,6 +618,8 @@ 122 131 if (expok == 0) … … 137 146 { 138 147 err_badarraysub (s); 148 diff -Naur bash-3.2.orig/bashhist.c bash-3.2/bashhist.c 149 --- bash-3.2.orig/bashhist.c 2005-12-26 10:31:16.000000000 -0800 150 +++ bash-3.2/bashhist.c 2008-12-20 07:00:10.000000000 -0800 151 @@ -80,6 +80,7 @@ 152 list. This is different than the user-controlled behaviour; this 153 becomes zero when we read lines from a file, for example. */ 154 int remember_on_history = 1; 155 +int enable_history_list = 1; /* value for `set -o history' */ 156 157 /* The number of lines that Bash has added to this history session. The 158 difference between the number of the top element in the history list 159 @@ -234,7 +235,7 @@ 160 history_expansion = interact != 0; 161 history_expansion_inhibited = 1; 162 #endif 163 - remember_on_history = interact != 0; 164 + remember_on_history = enable_history_list = interact != 0; 165 history_inhibit_expansion_function = bash_history_inhibit_expansion; 166 } 167 168 diff -Naur bash-3.2.orig/bashhist.h bash-3.2/bashhist.h 169 --- bash-3.2.orig/bashhist.h 2005-07-01 12:44:41.000000000 -0700 170 +++ bash-3.2/bashhist.h 2008-12-20 07:00:10.000000000 -0800 171 @@ -31,6 +31,9 @@ 172 #define HC_IGNBOTH (HC_IGNSPACE|HC_IGNDUPS) 173 174 extern int remember_on_history; 175 +extern int enable_history_list; /* value for `set -o history' */ 176 +extern int literal_history; /* controlled by `shopt lithist' */ 177 +extern int force_append_history; 178 extern int history_lines_this_session; 179 extern int history_lines_in_file; 180 extern int history_expansion; 139 181 diff -Naur bash-3.2.orig/bashline.c bash-3.2/bashline.c 140 --- bash-3.2.orig/bashline.c 2006-07-29 1 6:39:30.000000000 -0400141 +++ bash-3.2/bashline.c 2008- 06-18 06:46:32.000000000 -0400182 --- bash-3.2.orig/bashline.c 2006-07-29 13:39:30.000000000 -0700 183 +++ bash-3.2/bashline.c 2008-12-20 07:00:04.000000000 -0800 142 184 @@ -2357,7 +2357,7 @@ 143 185 if (should_expand_dirname) … … 150 192 *dirname = string_list (wl); 151 193 diff -Naur bash-3.2.orig/builtins/common.c bash-3.2/builtins/common.c 152 --- bash-3.2.orig/builtins/common.c 2006-07-27 0 9:39:51.000000000 -0400153 +++ bash-3.2/builtins/common.c 2008- 06-18 06:46:23.000000000 -0400194 --- bash-3.2.orig/builtins/common.c 2006-07-27 06:39:51.000000000 -0700 195 +++ bash-3.2/builtins/common.c 2008-12-20 06:59:37.000000000 -0800 154 196 @@ -1,4 +1,4 @@ 155 197 -/* Copyright (C) 1987-2005 Free Software Foundation, Inc. … … 190 232 { 191 233 fprintf (stderr, _("%s: error retrieving current directory: %s: %s\n"), 234 diff -Naur bash-3.2.orig/builtins/evalstring.c bash-3.2/builtins/evalstring.c 235 --- bash-3.2.orig/builtins/evalstring.c 2006-07-28 12:12:16.000000000 -0700 236 +++ bash-3.2/builtins/evalstring.c 2008-12-20 07:00:21.000000000 -0800 237 @@ -67,6 +67,14 @@ 238 239 static int cat_file __P((REDIRECT *)); 240 241 +#if defined (HISTORY) 242 +static void 243 +set_history_remembering () 244 +{ 245 + remember_on_history = enable_history_list; 246 +} 247 +#endif 248 + 249 /* How to force parse_and_execute () to clean up after itself. */ 250 void 251 parse_and_execute_cleanup () 252 @@ -115,7 +123,10 @@ 253 lreset = flags & SEVAL_RESETLINE; 254 255 #if defined (HISTORY) 256 - unwind_protect_int (remember_on_history); /* can be used in scripts */ 257 + if (parse_and_execute_level == 0) 258 + add_unwind_protect (set_history_remembering, (char *)NULL); 259 + else 260 + unwind_protect_int (remember_on_history); /* can be used in scripts */ 261 # if defined (BANG_HISTORY) 262 if (interactive_shell) 263 { 264 @@ -237,6 +248,7 @@ 265 * parse_and_execute has not been called recursively AND 266 * we're not running a trap AND 267 * we have parsed the full command (string == '\0') AND 268 + * we're not going to run the exit trap AND 269 * we have a simple command without redirections AND 270 * the command is not being timed AND 271 * the command's return status is not being inverted 272 @@ -247,7 +259,8 @@ 273 running_trap == 0 && 274 *bash_input.location.string == '\0' && 275 command->type == cm_simple && 276 - !command->redirects && !command->value.Simple->redirects && 277 + signal_is_trapped (EXIT_TRAP) == 0 && 278 + command->redirects == 0 && command->value.Simple->redirects == 0 && 279 ((command->flags & CMD_TIME_PIPELINE) == 0) && 280 ((command->flags & CMD_INVERT_RETURN) == 0)) 281 { 192 282 diff -Naur bash-3.2.orig/builtins/printf.def bash-3.2/builtins/printf.def 193 --- bash-3.2.orig/builtins/printf.def 2006-09-18 0 8:48:42.000000000 -0400194 +++ bash-3.2/builtins/printf.def 2008- 06-18 06:46:18.000000000 -0400283 --- bash-3.2.orig/builtins/printf.def 2006-09-18 05:48:42.000000000 -0700 284 +++ bash-3.2/builtins/printf.def 2008-12-20 06:59:25.000000000 -0800 195 285 @@ -1,7 +1,7 @@ 196 286 This file is printf.def, from which is created printf.c. … … 238 328 static int tescape __P((char *, char *, int *)); 239 329 diff -Naur bash-3.2.orig/builtins/read.def bash-3.2/builtins/read.def 240 --- bash-3.2.orig/builtins/read.def 2006-09-19 0 8:45:48.000000000 -0400241 +++ bash-3.2/builtins/read.def 2008- 06-18 06:46:33.000000000 -0400330 --- bash-3.2.orig/builtins/read.def 2006-09-19 05:45:48.000000000 -0700 331 +++ bash-3.2/builtins/read.def 2008-12-20 07:00:05.000000000 -0800 242 332 @@ -127,14 +127,14 @@ 243 333 WORD_LIST *list; … … 337 427 VUNSETATTR (var, att_invisible); 338 428 xfree (orig_input_string); 429 diff -Naur bash-3.2.orig/builtins/set.def bash-3.2/builtins/set.def 430 --- bash-3.2.orig/builtins/set.def 2006-07-27 06:41:43.000000000 -0700 431 +++ bash-3.2/builtins/set.def 2008-12-20 07:00:10.000000000 -0800 432 @@ -189,7 +189,7 @@ 433 { "histexpand", 'H', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, 434 #endif /* BANG_HISTORY */ 435 #if defined (HISTORY) 436 - { "history", '\0', &remember_on_history, bash_set_history, (setopt_get_func_t *)NULL }, 437 + { "history", '\0', &enable_history_list, bash_set_history, (setopt_get_func_t *)NULL }, 438 #endif 439 { "ignoreeof", '\0', &ignoreeof, set_ignoreeof, (setopt_get_func_t *)NULL }, 440 { "interactive-comments", '\0', &interactive_comments, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, 441 @@ -381,13 +381,17 @@ 442 { 443 if (on_or_off == FLAG_ON) 444 { 445 + enable_history_list = 1; 446 bash_history_enable (); 447 if (history_lines_this_session == 0) 448 load_history (); 449 } 450 else 451 - bash_history_disable (); 452 - return (1 - remember_on_history); 453 + { 454 + enable_history_list = 0; 455 + bash_history_disable (); 456 + } 457 + return (1 - enable_history_list); 458 } 459 #endif 460 461 @@ -565,7 +569,7 @@ 462 reset_shell_options () 463 { 464 #if defined (HISTORY) 465 - remember_on_history = 1; 466 + remember_on_history = enable_history_list = 1; 467 #endif 468 ignoreeof = 0; 469 } 339 470 diff -Naur bash-3.2.orig/builtins/shopt.def bash-3.2/builtins/shopt.def 340 --- bash-3.2.orig/builtins/shopt.def 2005-02-19 1 7:25:03.000000000 -0500341 +++ bash-3.2/builtins/shopt.def 2008- 06-18 06:46:33.000000000 -0400471 --- bash-3.2.orig/builtins/shopt.def 2005-02-19 14:25:03.000000000 -0800 472 +++ bash-3.2/builtins/shopt.def 2008-12-20 07:00:07.000000000 -0800 342 473 @@ -101,11 +101,14 @@ 343 474 … … 383 514 384 515 diff -Naur bash-3.2.orig/config-bot.h bash-3.2/config-bot.h 385 --- bash-3.2.orig/config-bot.h 2006-09-12 1 6:43:04.000000000 -0400386 +++ bash-3.2/config-bot.h 2008- 06-18 06:46:18.000000000 -0400516 --- bash-3.2.orig/config-bot.h 2006-09-12 13:43:04.000000000 -0700 517 +++ bash-3.2/config-bot.h 2008-12-20 06:59:23.000000000 -0800 387 518 @@ -1,7 +1,7 @@ 388 519 /* config-bot.h */ … … 410 541 411 542 diff -Naur bash-3.2.orig/config.h.in bash-3.2/config.h.in 412 --- bash-3.2.orig/config.h.in 2006-09-12 1 6:00:54.000000000 -0400413 +++ bash-3.2/config.h.in 2008- 06-18 06:46:18.000000000 -0400543 --- bash-3.2.orig/config.h.in 2006-09-12 13:00:54.000000000 -0700 544 +++ bash-3.2/config.h.in 2008-12-20 06:59:25.000000000 -0800 414 545 @@ -1,6 +1,6 @@ 415 546 /* config.h -- Configuration file for bash. */ … … 440 571 441 572 diff -Naur bash-3.2.orig/configure bash-3.2/configure 442 --- bash-3.2.orig/configure 2006-09-26 11:06:01.000000000 -0400443 +++ bash-3.2/configure 2008- 06-18 06:46:26.000000000 -0400573 --- bash-3.2.orig/configure 2006-09-26 08:06:01.000000000 -0700 574 +++ bash-3.2/configure 2008-12-20 06:59:47.000000000 -0800 444 575 @@ -4871,7 +4871,7 @@ 445 576 # static version specified as -llibname to override the … … 462 593 case "`uname -r`" in 463 594 diff -Naur bash-3.2.orig/configure.in bash-3.2/configure.in 464 --- bash-3.2.orig/configure.in 2006-09-26 11:05:45.000000000 -0400465 +++ bash-3.2/configure.in 2008- 06-18 06:46:26.000000000 -0400595 --- bash-3.2.orig/configure.in 2006-09-26 08:05:45.000000000 -0700 596 +++ bash-3.2/configure.in 2008-12-20 06:59:46.000000000 -0800 466 597 @@ -5,7 +5,7 @@ 467 598 dnl … … 493 624 case "`uname -r`" in 494 625 diff -Naur bash-3.2.orig/doc/bash.1 bash-3.2/doc/bash.1 495 --- bash-3.2.orig/doc/bash.1 2006-10-03 0 8:54:26.000000000 -0400496 +++ bash-3.2/doc/bash.1 2008- 06-18 06:46:33.000000000 -0400626 --- bash-3.2.orig/doc/bash.1 2006-10-03 05:54:26.000000000 -0700 627 +++ bash-3.2/doc/bash.1 2008-12-20 07:00:07.000000000 -0800 497 628 @@ -7977,6 +7977,12 @@ 498 629 command in the same history entry. This allows … … 509 640 .B bash 510 641 diff -Naur bash-3.2.orig/doc/bashref.texi bash-3.2/doc/bashref.texi 511 --- bash-3.2.orig/doc/bashref.texi 2006-09-28 10:25:28.000000000 -0400512 +++ bash-3.2/doc/bashref.texi 2008- 06-18 06:46:33.000000000 -0400642 --- bash-3.2.orig/doc/bashref.texi 2006-09-28 07:25:28.000000000 -0700 643 +++ bash-3.2/doc/bashref.texi 2008-12-20 07:00:07.000000000 -0800 513 644 @@ -3598,6 +3598,11 @@ 514 645 command in the same history entry. This allows … … 524 655 the results of filename expansion. 525 656 diff -Naur bash-3.2.orig/doc/bashref.texi.orig bash-3.2/doc/bashref.texi.orig 526 --- bash-3.2.orig/doc/bashref.texi.orig 1969-12-31 1 9:00:00.000000000 -0500527 +++ bash-3.2/doc/bashref.texi.orig 2006-09-28 10:25:28.000000000 -0400657 --- bash-3.2.orig/doc/bashref.texi.orig 1969-12-31 16:00:00.000000000 -0800 658 +++ bash-3.2/doc/bashref.texi.orig 2006-09-28 07:25:28.000000000 -0700 528 659 @@ -0,0 +1,7422 @@ 529 660 +\input texinfo.tex @c -*- texinfo -*- … … 7950 8081 +@bye 7951 8082 diff -Naur bash-3.2.orig/execute_cmd.c bash-3.2/execute_cmd.c 7952 --- bash-3.2.orig/execute_cmd.c 2006-08-2 6 00:23:17.000000000 -04007953 +++ bash-3.2/execute_cmd.c 2008- 06-18 06:46:33.000000000 -04008083 --- bash-3.2.orig/execute_cmd.c 2006-08-25 21:23:17.000000000 -0700 8084 +++ bash-3.2/execute_cmd.c 2008-12-20 07:00:16.000000000 -0800 7954 8085 @@ -1,6 +1,6 @@ 7955 8086 /* execute_cmd.c -- Execute a COMMAND structure. */ … … 7960 8091 This file is part of GNU Bash, the Bourne Again SHell. 7961 8092 7962 @@ -614,7 +614,7 @@ 8093 @@ -501,8 +501,15 @@ 8094 volatile int last_pid; 8095 volatile int save_line_number; 8096 8097 +#if 0 8098 if (command == 0 || breaking || continuing || read_but_dont_execute) 8099 return (EXECUTION_SUCCESS); 8100 +#else 8101 + if (breaking || continuing) 8102 + return (last_command_exit_value); 8103 + if (command == 0 || read_but_dont_execute) 8104 + return (EXECUTION_SUCCESS); 8105 +#endif 8106 8107 QUIT; 8108 run_pending_traps (); 8109 @@ -614,7 +621,7 @@ 7963 8110 cleanup_redirects (redirection_undo_list); 7964 8111 redirection_undo_list = (REDIRECT *)NULL; … … 7969 8116 7970 8117 if (redirection_undo_list) 7971 @@ -2546,7 +25 46,8 @@8118 @@ -2546,7 +2553,8 @@ 7972 8119 arg1 = cond_expand_word (cond->left->op, 0); 7973 8120 if (arg1 == 0) … … 7979 8126 arg2 = nullstr; 7980 8127 7981 @@ -3050,6 +305 1,11 @@8128 @@ -3050,6 +3058,11 @@ 7982 8129 if (command_line == 0) 7983 8130 command_line = savestring (the_printed_command_except_trap); … … 7991 8138 pipe_in, pipe_out, async, fds_to_close, 7992 8139 simple_command->flags); 7993 @@ -3875,6 +388 1,8 @@8140 @@ -3875,6 +3888,8 @@ 7994 8141 shell_variables = shell_variables->down; 7995 8142 … … 8001 8148 variable_context = return_catch_flag = 0; 8002 8149 diff -Naur bash-3.2.orig/expr.c bash-3.2/expr.c 8003 --- bash-3.2.orig/expr.c 2005-12-28 1 7:47:03.000000000 -05008004 +++ bash-3.2/expr.c 2008- 06-18 06:46:28.000000000 -04008150 --- bash-3.2.orig/expr.c 2005-12-28 14:47:03.000000000 -0800 8151 +++ bash-3.2/expr.c 2008-12-20 07:00:12.000000000 -0800 8005 8152 @@ -286,6 +286,8 @@ 8006 8153 free (expr_stack[expr_depth]); … … 8020 8167 FASTCOPY (evalbuf, oevalbuf, sizeof (evalbuf)); 8021 8168 8022 @@ -929,6 +932,7 @@ 8169 @@ -517,7 +520,8 @@ 8170 set_noeval = 1; 8171 noeval++; 8172 } 8173 - val2 = explor (); 8174 + 8175 + val2 = expcond (); 8176 if (set_noeval) 8177 noeval--; 8178 rval = cval ? val1 : val2; 8179 @@ -929,6 +933,7 @@ 8023 8180 if (interactive_shell) 8024 8181 { … … 8029 8186 else 8030 8187 diff -Naur bash-3.2.orig/findcmd.c bash-3.2/findcmd.c 8031 --- bash-3.2.orig/findcmd.c 2005-08-17 1 6:49:54.000000000 -04008032 +++ bash-3.2/findcmd.c 2008- 06-18 06:46:16.000000000 -04008188 --- bash-3.2.orig/findcmd.c 2005-08-17 13:49:54.000000000 -0700 8189 +++ bash-3.2/findcmd.c 2008-12-20 06:59:18.000000000 -0800 8033 8190 @@ -308,7 +308,7 @@ 8034 8191 if (hashed_file && (posixly_correct || check_hashed_filenames)) … … 8041 8198 free (hashed_file); 8042 8199 diff -Naur bash-3.2.orig/jobs.c bash-3.2/jobs.c 8043 --- bash-3.2.orig/jobs.c 2006-07-29 1 6:40:48.000000000 -04008044 +++ bash-3.2/jobs.c 2008- 06-18 06:46:31.000000000 -04008200 --- bash-3.2.orig/jobs.c 2006-07-29 13:40:48.000000000 -0700 8201 +++ bash-3.2/jobs.c 2008-12-20 07:00:00.000000000 -0800 8045 8202 @@ -250,6 +250,7 @@ 8046 8203 static int job_exit_signal __P((int)); … … 8200 8357 signal handler path */ 8201 8358 diff -Naur bash-3.2.orig/lib/readline/complete.c bash-3.2/lib/readline/complete.c 8202 --- bash-3.2.orig/lib/readline/complete.c 2006-07-28 11:35:49.000000000 -04008203 +++ bash-3.2/lib/readline/complete.c 2008- 06-18 06:46:22.000000000 -04008359 --- bash-3.2.orig/lib/readline/complete.c 2006-07-28 08:35:49.000000000 -0700 8360 +++ bash-3.2/lib/readline/complete.c 2008-12-20 06:59:36.000000000 -0800 8204 8361 @@ -428,7 +428,7 @@ 8205 8362 return (1); … … 8212 8369 return (2); 8213 8370 diff -Naur bash-3.2.orig/lib/readline/display.c bash-3.2/lib/readline/display.c 8214 --- bash-3.2.orig/lib/readline/display.c 2006-09-14 1 4:20:12.000000000 -04008215 +++ bash-3.2/lib/readline/display.c 2008- 06-18 06:46:29.000000000 -04008371 --- bash-3.2.orig/lib/readline/display.c 2006-09-14 11:20:12.000000000 -0700 8372 +++ bash-3.2/lib/readline/display.c 2008-12-20 07:00:15.000000000 -0800 8216 8373 @@ -391,14 +391,14 @@ 8217 8374 t = ++p; … … 8257 8414 #if defined (HANDLE_MULTIBYTE) 8258 8415 #define CHECK_LPOS() \ 8259 @@ -1036,7 +1048,7 @@ 8416 @@ -898,6 +910,10 @@ 8417 second and subsequent lines start at inv_lbreaks[N], offset by 8418 OFFSET (which has already been calculated above). */ 8419 8420 +#define INVIS_FIRST() (prompt_physical_chars > _rl_screenwidth ? prompt_invis_chars_first_line : wrap_offset) 8421 +#define WRAP_OFFSET(line, offset) ((line == 0) \ 8422 + ? (offset ? INVIS_FIRST() : 0) \ 8423 + : ((line == prompt_last_screen_line) ? wrap_offset-prompt_invis_chars_first_line : 0)) 8424 #define W_OFFSET(line, offset) ((line) == 0 ? offset : 0) 8425 #define VIS_LLEN(l) ((l) > _rl_vis_botlin ? 0 : (vis_lbreaks[l+1] - vis_lbreaks[l])) 8426 #define INV_LLEN(l) (inv_lbreaks[l+1] - inv_lbreaks[l]) 8427 @@ -932,7 +948,13 @@ 8428 _rl_last_c_pos != o_cpos && 8429 _rl_last_c_pos > wrap_offset && 8430 o_cpos < prompt_last_invisible) 8431 - _rl_last_c_pos -= wrap_offset; 8432 + _rl_last_c_pos -= prompt_invis_chars_first_line; /* XXX - was wrap_offset */ 8433 + else if (linenum == prompt_last_screen_line && prompt_physical_chars > _rl_screenwidth && 8434 + (MB_CUR_MAX > 1 && rl_byte_oriented == 0) && 8435 + cpos_adjusted == 0 && 8436 + _rl_last_c_pos != o_cpos && 8437 + _rl_last_c_pos > (prompt_last_invisible - _rl_screenwidth - prompt_invis_chars_first_line)) 8438 + _rl_last_c_pos -= (wrap_offset-prompt_invis_chars_first_line); 8439 8440 /* If this is the line with the prompt, we might need to 8441 compensate for invisible characters in the new line. Do 8442 @@ -1036,7 +1058,7 @@ 8260 8443 tx = _rl_col_width (&visible_line[pos], 0, nleft) - visible_wrap_offset; 8261 8444 else … … 8266 8449 _rl_backspace (_rl_last_c_pos - tx); /* XXX */ 8267 8450 _rl_last_c_pos = tx; 8268 @@ -1192,7 +12 04,7 @@8451 @@ -1192,7 +1214,7 @@ 8269 8452 int current_line, omax, nmax, inv_botlin; 8270 8453 { 8271 8454 register char *ofd, *ols, *oe, *nfd, *nls, *ne; 8272 8455 - int temp, lendiff, wsatend, od, nd; 8273 + int temp, lendiff, wsatend, od, nd, o_cpos;8456 + int temp, lendiff, wsatend, od, nd, twidth, o_cpos; 8274 8457 int current_invis_chars; 8275 8458 int col_lendiff, col_temp; 8276 8459 #if defined (HANDLE_MULTIBYTE) 8277 @@ -1453,6 +1465,8 @@ 8460 @@ -1208,7 +1230,7 @@ 8461 if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) 8462 temp = _rl_last_c_pos; 8463 else 8464 - temp = _rl_last_c_pos - W_OFFSET(_rl_last_v_pos, visible_wrap_offset); 8465 + temp = _rl_last_c_pos - WRAP_OFFSET (_rl_last_v_pos, visible_wrap_offset); 8466 if (temp == _rl_screenwidth && _rl_term_autowrap && !_rl_horizontal_scroll_mode 8467 && _rl_last_v_pos == current_line - 1) 8468 { 8469 @@ -1453,6 +1475,8 @@ 8278 8470 _rl_last_c_pos = lendiff; 8279 8471 } … … 8284 8476 cursor postion in multibyte mode, but a buffer index when not in a 8285 8477 multibyte locale. */ 8286 @@ -1462,7 +14 76,9 @@8478 @@ -1462,7 +1486,9 @@ 8287 8479 /* We need to indicate that the cursor position is correct in the presence of 8288 8480 invisible characters in the prompt string. Let's see if setting this when … … 8295 8487 #endif 8296 8488 #endif 8297 @@ -1506,11 +15 22,31 @@8489 @@ -1506,11 +1532,31 @@ 8298 8490 { 8299 8491 /* Non-zero if we're increasing the number of lines. */ … … 8328 8520 /* If lendiff > prompt_visible_length and _rl_last_c_pos == 0 and 8329 8521 _rl_horizontal_scroll_mode == 1, inserting the characters with 8330 @@ -1533,11 +15 69,16 @@8522 @@ -1533,11 +1579,16 @@ 8331 8523 } 8332 8524 else … … 8348 8540 } 8349 8541 /* Copy (new) chars to screen from first diff to last match. */ 8350 @@ -1586,8 +1627,22 @@ 8542 @@ -1545,15 +1596,15 @@ 8543 if ((temp - lendiff) > 0) 8544 { 8545 _rl_output_some_chars (nfd + lendiff, temp - lendiff); 8546 -#if 1 8547 /* XXX -- this bears closer inspection. Fixes a redisplay bug 8548 reported against bash-3.0-alpha by Andreas Schwab involving 8549 multibyte characters and prompt strings with invisible 8550 characters, but was previously disabled. */ 8551 - _rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-col_lendiff); 8552 -#else 8553 - _rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-lendiff); 8554 -#endif 8555 + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) 8556 + twidth = _rl_col_width (nfd+lendiff, 0, temp-col_lendiff); 8557 + else 8558 + twidth = temp - lendiff; 8559 + _rl_last_c_pos += twidth; 8560 } 8561 } 8562 else 8563 @@ -1586,8 +1637,22 @@ 8351 8564 temp = nls - nfd; 8352 8565 if (temp > 0) … … 8372 8585 } 8373 8586 /* Otherwise, print over the existing material. */ 8374 @@ -1595,8 +16 50,20 @@8587 @@ -1595,8 +1660,20 @@ 8375 8588 { 8376 8589 if (temp > 0) … … 8393 8606 lendiff = (oe - old) - (ne - new); 8394 8607 if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) 8395 @@ -1732,7 +1799,10 @@ 8608 @@ -1721,7 +1798,7 @@ 8609 int woff; /* number of invisible chars on current line */ 8610 int cpos, dpos; /* current and desired cursor positions */ 8611 8612 - woff = W_OFFSET (_rl_last_v_pos, wrap_offset); 8613 + woff = WRAP_OFFSET (_rl_last_v_pos, wrap_offset); 8614 cpos = _rl_last_c_pos; 8615 #if defined (HANDLE_MULTIBYTE) 8616 /* If we have multibyte characters, NEW is indexed by the buffer point in 8617 @@ -1732,7 +1809,14 @@ 8396 8618 if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) 8397 8619 { … … 8401 8623 + prompt string, since they're both buffer indices and DPOS is a 8402 8624 + desired display position. */ 8403 + if (new > prompt_last_invisible) /* XXX - don't use woff here */ 8625 + if ((new > prompt_last_invisible) || /* XXX - don't use woff here */ 8626 + (prompt_physical_chars > _rl_screenwidth && 8627 + _rl_last_v_pos == prompt_last_screen_line && 8628 + wrap_offset != woff && 8629 + new > (prompt_last_invisible-_rl_screenwidth-wrap_offset))) 8404 8630 { 8405 8631 dpos -= woff; 8406 8632 /* Since this will be assigned to _rl_last_c_pos at the end (more 8407 @@ -2380,6 +24 50,8 @@8633 @@ -2380,6 +2464,8 @@ 8408 8634 8409 8635 if (end <= start) … … 8415 8641 8416 8642 diff -Naur bash-3.2.orig/lib/readline/display.c.orig bash-3.2/lib/readline/display.c.orig 8417 --- bash-3.2.orig/lib/readline/display.c.orig 1969-12-31 1 9:00:00.000000000 -05008418 +++ bash-3.2/lib/readline/display.c.orig 2008- 06-18 06:46:27.000000000 -04008643 --- bash-3.2.orig/lib/readline/display.c.orig 1969-12-31 16:00:00.000000000 -0800 8644 +++ bash-3.2/lib/readline/display.c.orig 2008-12-20 06:59:50.000000000 -0800 8419 8645 @@ -0,0 +1,2518 @@ 8420 8646 +/* display.c -- readline redisplay facility. */ … … 10937 11163 +#endif /* HANDLE_MULTIBYTE */ 10938 11164 diff -Naur bash-3.2.orig/lib/readline/input.c bash-3.2/lib/readline/input.c 10939 --- bash-3.2.orig/lib/readline/input.c 2006-08-16 1 5:15:16.000000000 -040010940 +++ bash-3.2/lib/readline/input.c 2008- 06-18 06:46:29.000000000 -040011165 --- bash-3.2.orig/lib/readline/input.c 2006-08-16 12:15:16.000000000 -0700 11166 +++ bash-3.2/lib/readline/input.c 2008-12-20 06:59:56.000000000 -0800 10941 11167 @@ -133,8 +133,11 @@ 10942 11168 return (0); … … 11023 11249 memset (&ps, 0, sizeof (mbstate_t)); 11024 11250 diff -Naur bash-3.2.orig/lib/readline/isearch.c bash-3.2/lib/readline/isearch.c 11025 --- bash-3.2.orig/lib/readline/isearch.c 2005-12-26 1 7:18:53.000000000 -050011026 +++ bash-3.2/lib/readline/isearch.c 2008- 06-18 06:46:22.000000000 -040011251 --- bash-3.2.orig/lib/readline/isearch.c 2005-12-26 14:18:53.000000000 -0800 11252 +++ bash-3.2/lib/readline/isearch.c 2008-12-20 06:59:36.000000000 -0800 11027 11253 @@ -327,8 +327,15 @@ 11028 11254 rl_command_func_t *f; … … 11044 11270 f = _rl_keymap[c].function; 11045 11271 diff -Naur bash-3.2.orig/lib/readline/misc.c bash-3.2/lib/readline/misc.c 11046 --- bash-3.2.orig/lib/readline/misc.c 2005-12-26 1 7:20:46.000000000 -050011047 +++ bash-3.2/lib/readline/misc.c 2008- 06-18 06:46:22.000000000 -040011272 --- bash-3.2.orig/lib/readline/misc.c 2005-12-26 14:20:46.000000000 -0800 11273 +++ bash-3.2/lib/readline/misc.c 2008-12-20 06:59:36.000000000 -0800 11048 11274 @@ -146,6 +146,8 @@ 11049 11275 rl_restore_prompt (); … … 11056 11282 } 11057 11283 diff -Naur bash-3.2.orig/lib/readline/readline.c bash-3.2/lib/readline/readline.c 11058 --- bash-3.2.orig/lib/readline/readline.c 2006-08-16 1 5:00:36.000000000 -040011059 +++ bash-3.2/lib/readline/readline.c 2008- 06-18 06:46:22.000000000 -040011284 --- bash-3.2.orig/lib/readline/readline.c 2006-08-16 12:00:36.000000000 -0700 11285 +++ bash-3.2/lib/readline/readline.c 2008-12-20 06:59:36.000000000 -0800 11060 11286 @@ -645,6 +645,11 @@ 11061 11287 if ((cxt->flags & KSEQ_DISPATCHED) == 0) … … 11071 11297 } 11072 11298 diff -Naur bash-3.2.orig/lib/readline/text.c bash-3.2/lib/readline/text.c 11073 --- bash-3.2.orig/lib/readline/text.c 2006-07-28 11:55:27.000000000 -040011074 +++ bash-3.2/lib/readline/text.c 2008- 06-18 06:46:22.000000000 -040011299 --- bash-3.2.orig/lib/readline/text.c 2006-07-28 08:55:27.000000000 -0700 11300 +++ bash-3.2/lib/readline/text.c 2008-12-20 06:59:36.000000000 -0800 11075 11301 @@ -857,6 +857,9 @@ 11076 11302 c = rl_read_key (); … … 11104 11330 else 11105 11331 diff -Naur bash-3.2.orig/lib/readline/vi_mode.c bash-3.2/lib/readline/vi_mode.c 11106 --- bash-3.2.orig/lib/readline/vi_mode.c 2006-07-29 1 6:42:28.000000000 -040011107 +++ bash-3.2/lib/readline/vi_mode.c 2008- 06-18 06:46:22.000000000 -040011332 --- bash-3.2.orig/lib/readline/vi_mode.c 2006-07-29 13:42:28.000000000 -0700 11333 +++ bash-3.2/lib/readline/vi_mode.c 2008-12-20 06:59:36.000000000 -0800 11108 11334 @@ -886,6 +886,13 @@ 11109 11335 RL_SETSTATE(RL_STATE_MOREINPUT); … … 11234 11460 return -1; 11235 11461 diff -Naur bash-3.2.orig/lib/sh/getcwd.c bash-3.2/lib/sh/getcwd.c 11236 --- bash-3.2.orig/lib/sh/getcwd.c 2004-07-21 1 7:15:19.000000000 -040011237 +++ bash-3.2/lib/sh/getcwd.c 2008- 06-18 06:46:31.000000000 -040011462 --- bash-3.2.orig/lib/sh/getcwd.c 2004-07-21 14:15:19.000000000 -0700 11463 +++ bash-3.2/lib/sh/getcwd.c 2008-12-20 06:59:59.000000000 -0800 11238 11464 @@ -251,19 +251,21 @@ 11239 11465 … … 11267 11493 11268 11494 diff -Naur bash-3.2.orig/lib/sh/snprintf.c bash-3.2/lib/sh/snprintf.c 11269 --- bash-3.2.orig/lib/sh/snprintf.c 2006-04-06 0 9:48:40.000000000 -040011270 +++ bash-3.2/lib/sh/snprintf.c 2008- 06-18 06:46:17.000000000 -040011495 --- bash-3.2.orig/lib/sh/snprintf.c 2006-04-06 06:48:40.000000000 -0700 11496 +++ bash-3.2/lib/sh/snprintf.c 2008-12-20 06:59:20.000000000 -0800 11271 11497 @@ -471,6 +471,8 @@ 11272 11498 10^x ~= r … … 11396 11622 * is in the range or [-4,p] exclusively 11397 11623 diff -Naur bash-3.2.orig/parse.y bash-3.2/parse.y 11398 --- bash-3.2.orig/parse.y 2006-09-19 1 6:37:21.000000000 -040011399 +++ bash-3.2/parse.y 2008- 06-18 06:46:32.000000000 -040011624 --- bash-3.2.orig/parse.y 2006-09-19 13:37:21.000000000 -0700 11625 +++ bash-3.2/parse.y 2008-12-20 07:00:04.000000000 -0800 11400 11626 @@ -1029,6 +1029,7 @@ 11401 11627 #define PST_CMDTOKEN 0x1000 /* command token OK - unused */ … … 11528 11754 dispose_words (list); 11529 11755 diff -Naur bash-3.2.orig/patchlevel.h bash-3.2/patchlevel.h 11530 --- bash-3.2.orig/patchlevel.h 2006-04-13 0 8:31:04.000000000 -040011531 +++ bash-3.2/patchlevel.h 2008- 06-18 06:46:33.000000000 -040011756 --- bash-3.2.orig/patchlevel.h 2006-04-13 05:31:04.000000000 -0700 11757 +++ bash-3.2/patchlevel.h 2008-12-20 07:00:21.000000000 -0800 11532 11758 @@ -25,6 +25,6 @@ 11533 11759 regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh … … 11535 11761 11536 11762 -#define PATCHLEVEL 0 11537 +#define PATCHLEVEL 3911763 +#define PATCHLEVEL 48 11538 11764 11539 11765 #endif /* _PATCHLEVEL_H_ */ 11540 11766 diff -Naur bash-3.2.orig/pathexp.c bash-3.2/pathexp.c 11541 --- bash-3.2.orig/pathexp.c 2002-05-06 1 3:43:05.000000000 -040011542 +++ bash-3.2/pathexp.c 2008- 06-18 06:46:17.000000000 -040011767 --- bash-3.2.orig/pathexp.c 2002-05-06 10:43:05.000000000 -0700 11768 +++ bash-3.2/pathexp.c 2008-12-20 06:59:21.000000000 -0800 11543 11769 @@ -1,6 +1,6 @@ 11544 11770 /* pathexp.c -- The shell interface to the globbing library. */ … … 11593 11819 if (pathname[i] == '\0') 11594 11820 diff -Naur bash-3.2.orig/pathexp.h bash-3.2/pathexp.h 11595 --- bash-3.2.orig/pathexp.h 2005-02-19 1 7:23:18.000000000 -050011596 +++ bash-3.2/pathexp.h 2008- 06-18 06:46:17.000000000 -040011821 --- bash-3.2.orig/pathexp.h 2005-02-19 14:23:18.000000000 -0800 11822 +++ bash-3.2/pathexp.h 2008-12-20 06:59:21.000000000 -0800 11597 11823 @@ -1,6 +1,6 @@ 11598 11824 /* pathexp.h -- The shell interface to the globbing library. */ … … 11612 11838 /* Flags to OR with other flag args to strmatch() to enabled the extended 11613 11839 diff -Naur bash-3.2.orig/po/ru.po bash-3.2/po/ru.po 11614 --- bash-3.2.orig/po/ru.po 2006-01-10 1 7:51:03.000000000 -050011615 +++ bash-3.2/po/ru.po 2008- 06-18 06:46:13.000000000 -040011840 --- bash-3.2.orig/po/ru.po 2006-01-10 14:51:03.000000000 -0800 11841 +++ bash-3.2/po/ru.po 2008-12-20 06:59:08.000000000 -0800 11616 11842 @@ -12,7 +12,7 @@ 11617 11843 "Last-Translator: Evgeniy Dushistov <dushistov@mail.ru>\n" … … 11624 11850 11625 11851 diff -Naur bash-3.2.orig/shell.h bash-3.2/shell.h 11626 --- bash-3.2.orig/shell.h 2003-06-01 1 5:04:36.000000000 -040011627 +++ bash-3.2/shell.h 2008- 06-18 06:46:33.000000000 -040011852 --- bash-3.2.orig/shell.h 2003-06-01 12:04:36.000000000 -0700 11853 +++ bash-3.2/shell.h 2008-12-20 07:00:07.000000000 -0800 11628 11854 @@ -89,6 +89,7 @@ 11629 11855 extern int executing, login_shell; … … 11635 11861 to close, and the size of that structure. Used in execute_cmd.c. */ 11636 11862 diff -Naur bash-3.2.orig/sig.c bash-3.2/sig.c 11637 --- bash-3.2.orig/sig.c 2006-01-25 1 4:57:59.000000000 -050011638 +++ bash-3.2/sig.c 2008- 06-18 06:46:23.000000000 -040011863 --- bash-3.2.orig/sig.c 2006-01-25 11:57:59.000000000 -0800 11864 +++ bash-3.2/sig.c 2008-12-20 06:59:37.000000000 -0800 11639 11865 @@ -350,6 +350,25 @@ 11640 11866 #undef XSIG … … 11664 11890 throw_to_top_level () 11665 11891 diff -Naur bash-3.2.orig/sig.h bash-3.2/sig.h 11666 --- bash-3.2.orig/sig.h 2006-01-25 1 4:50:27.000000000 -050011667 +++ bash-3.2/sig.h 2008- 06-18 06:46:23.000000000 -040011892 --- bash-3.2.orig/sig.h 2006-01-25 11:50:27.000000000 -0800 11893 +++ bash-3.2/sig.h 2008-12-20 06:59:37.000000000 -0800 11668 11894 @@ -121,6 +121,7 @@ 11669 11895 extern void initialize_signals __P((int)); … … 11675 11901 11676 11902 diff -Naur bash-3.2.orig/subst.c bash-3.2/subst.c 11677 --- bash-3.2.orig/subst.c 2006-09-19 0 8:35:09.000000000 -040011678 +++ bash-3.2/subst.c 2008- 06-18 06:46:32.000000000 -040011903 --- bash-3.2.orig/subst.c 2006-09-19 05:35:09.000000000 -0700 11904 +++ bash-3.2/subst.c 2008-12-20 07:00:19.000000000 -0800 11679 11905 @@ -4,7 +4,7 @@ 11680 11906 /* ``Have a little faith, there's magic in the night. You ain't a … … 11686 11912 This file is part of GNU Bash, the Bourne Again SHell. 11687 11913 11914 @@ -137,7 +137,7 @@ 11915 /* Extern functions and variables from different files. */ 11916 extern int last_command_exit_value, last_command_exit_signal; 11917 extern int subshell_environment; 11918 -extern int subshell_level; 11919 +extern int subshell_level, parse_and_execute_level; 11920 extern int eof_encountered; 11921 extern int return_catch_flag, return_catch_value; 11922 extern pid_t dollar_dollar_pid; 11688 11923 @@ -1278,7 +1278,7 @@ 11689 11924 { … … 11899 12134 } 11900 12135 else 12136 @@ -4763,7 +4812,7 @@ 12137 else 12138 t = (ind == 0) ? value_cell (var) : (char *)NULL; 12139 12140 - len = STRLEN (t); 12141 + len = MB_STRLEN (t); 12142 return (len); 12143 } 12144 #endif /* ARRAY_VARS */ 11901 12145 @@ -4860,10 +4909,11 @@ 11902 12146 char *temp, *tt; … … 11994 12238 #endif 11995 12239 } 11996 @@ -7607,6 +7672, 8@@12240 @@ -7607,6 +7672,10 @@ 11997 12241 expand_no_split_dollar_star = 0; /* XXX */ 11998 12242 expanding_redir = 0; 11999 12243 12000 + top_level_cleanup (); /* from sig.c */ 12244 + if (parse_and_execute_level == 0) 12245 + top_level_cleanup (); /* from sig.c */ 12246 + 12001 12247 + 12002 12248 jump_to_top_level (v); 12003 12249 } 12004 12250 12005 @@ -7824,7 +789 1,7 @@12251 @@ -7824,7 +7893,7 @@ 12006 12252 else if (fail_glob_expansion != 0) 12007 12253 { … … 12013 12259 { 12014 12260 diff -Naur bash-3.2.orig/subst.h bash-3.2/subst.h 12015 --- bash-3.2.orig/subst.h 2006-09-19 0 8:34:41.000000000 -040012016 +++ bash-3.2/subst.h 2008- 06-18 06:46:32.000000000 -040012261 --- bash-3.2.orig/subst.h 2006-09-19 05:34:41.000000000 -0700 12262 +++ bash-3.2/subst.h 2008-12-20 07:00:04.000000000 -0800 12017 12263 @@ -135,7 +135,7 @@ 12018 12264 extern WORD_LIST *expand_string_assignment __P((char *, int)); … … 12033 12279 extern WORD_LIST *list_string_with_quotes __P((char *)); 12034 12280 diff -Naur bash-3.2.orig/tests/new-exp.right bash-3.2/tests/new-exp.right 12035 --- bash-3.2.orig/tests/new-exp.right 2006-08-10 12:00:00.000000000 -040012036 +++ bash-3.2/tests/new-exp.right 2008- 06-18 06:46:14.000000000 -040012281 --- bash-3.2.orig/tests/new-exp.right 2006-08-10 09:00:00.000000000 -0700 12282 +++ bash-3.2/tests/new-exp.right 2008-12-20 06:59:12.000000000 -0800 12037 12283 @@ -430,7 +430,7 @@ 12038 12284 Case06---1---A B C::--- … … 12045 12291 argv[3] = <c> 12046 12292 diff -Naur bash-3.2.orig/tests/shopt.right bash-3.2/tests/shopt.right 12047 --- bash-3.2.orig/tests/shopt.right 2005-02-19 1 7:46:09.000000000 -050012048 +++ bash-3.2/tests/shopt.right 2008- 06-18 06:46:33.000000000 -040012293 --- bash-3.2.orig/tests/shopt.right 2005-02-19 14:46:09.000000000 -0800 12294 +++ bash-3.2/tests/shopt.right 2008-12-20 07:00:07.000000000 -0800 12049 12295 @@ -6,6 +6,7 @@ 12050 12296 shopt -u checkhash … … 12072 12318 extdebug off 12073 12319 diff -Naur bash-3.2.orig/variables.c bash-3.2/variables.c 12074 --- bash-3.2.orig/variables.c 2006-09-08 1 3:33:32.000000000 -040012075 +++ bash-3.2/variables.c 2008- 06-18 06:46:23.000000000 -040012320 --- bash-3.2.orig/variables.c 2006-09-08 10:33:32.000000000 -0700 12321 +++ bash-3.2/variables.c 2008-12-20 07:00:13.000000000 -0800 12076 12322 @@ -1821,11 +1821,17 @@ 12077 12323 oval = value_cell (var); … … 12094 12340 rval += lval; 12095 12341 retval = itos (rval); 12342 @@ -3452,9 +3458,11 @@ 12343 if (shell_variables == global_variables) 12344 var->attributes &= ~(att_tempvar|att_propagate); 12345 else 12346 - shell_variables->flags |= VC_HASTMPVAR; 12347 + shell_variables->flags |= VC_HASTMPVAR; 12348 v->attributes |= var->attributes; 12349 } 12350 + else 12351 + stupidly_hack_special_variables (var->name); /* XXX */ 12352 12353 dispose_variable (var); 12354 } 12355 @@ -3541,6 +3549,8 @@ 12356 var->attributes &= ~att_propagate; 12357 v->attributes |= var->attributes; 12358 } 12359 + else 12360 + stupidly_hack_special_variables (var->name); /* XXX */ 12361 12362 dispose_variable (var); 12363 } 12096 12364 diff -Naur bash-3.2.orig/version.c bash-3.2/version.c 12097 --- bash-3.2.orig/version.c 2005-05-16 11:58:34.000000000 -040012098 +++ bash-3.2/version.c 2008- 06-18 06:46:33.000000000 -040012365 --- bash-3.2.orig/version.c 2005-05-16 08:58:34.000000000 -0700 12366 +++ bash-3.2/version.c 2008-12-20 07:00:07.000000000 -0800 12099 12367 @@ -43,6 +43,9 @@ 12100 12368 #endif
Note:
See TracChangeset
for help on using the changeset viewer.