From 61782ca16bef51e08723cf6994bfb085f75094d4 Mon Sep 17 00:00:00 2001 From: Chet Ramey Date: Mon, 30 Aug 2021 11:40:26 -0400 Subject: [PATCH] minor fix to readline:unix-filename-rubout --- CWRU/CWRU.chlog | 8 ++++++++ lib/readline/kill.c | 24 ++++++++++++++++++++++++ po/pt_BR.gmo | Bin 182906 -> 182909 bytes po/pt_BR.po | 6 +++--- subst.c | 4 ++-- tests/RUN-ONE-TEST | 2 +- 6 files changed, 38 insertions(+), 6 deletions(-) diff --git a/CWRU/CWRU.chlog b/CWRU/CWRU.chlog index aee60786..dcf1243b 100644 --- a/CWRU/CWRU.chlog +++ b/CWRU/CWRU.chlog @@ -1776,3 +1776,11 @@ subst.c doc/{bash.1,bashref.texi} - document new '@k' parameter transformation operator + + 8/27 + ---- +lib/readline/kill.c + - rl_unix_filename_rubout: handle pathnames that consist only of one + or more slashes. The old code went too far and deleted the previous + word as well. From dabe@dabe.com + diff --git a/lib/readline/kill.c b/lib/readline/kill.c index 8a4ff349..61b744c9 100644 --- a/lib/readline/kill.c +++ b/lib/readline/kill.c @@ -351,6 +351,30 @@ rl_unix_filename_rubout (int count, int key) while (count--) { c = rl_line_buffer[rl_point - 1]; + + /* First move backwards through whitespace */ + while (rl_point && whitespace (c)) + { + rl_point--; + c = rl_line_buffer[rl_point - 1]; + } + + /* Consume one or more slashes. */ + if (c == '/') + { + int i; + + i = rl_point - 1; + while (i > 0 && c == '/') + c = rl_line_buffer[--i]; + if (i == 0 || whitespace (c)) + { + rl_point = i + whitespace (c); + continue; /* slashes only */ + } + c = '/'; + } + while (rl_point && (whitespace (c) || c == '/')) { rl_point--; diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo index c61c0b5837d0b5cdbd33064f297ed53e83694100..f947cdfe0cd07aa6019e6290d891b951ed0b7877 100644 GIT binary patch delta 4622 zcmXZfd34TK9>?+fyA)GvC}Sy}rid*<1tmyAk)YNQR8?DIhFT)A7rz-sj;JCL6I*rA zMro8NiCBt6EJdA~X-}sMqY`z>IjwePP{F)E&wc)S-QRle{oe2Q{+{Qz?CKA*tMA)V z&yO|6*lC`Lz&_X$r{Yt%6IMUB1uISWOcZvUWpoUF6u>}p&qOVU4JUo-PaK{@WH6( z(=i-#Q5~NPc^&I;{1Dq>tu!}*?mmqMoJc~2cseTNZ=qRW2VE}8-b|LPF>ToF5 z$C;?-m!sad16$$Ykk?QXsW!)T+!gh_Ka$4tG}2IOo`<^eBx=S#VJ)mW*E4b00Aq19 zK7%><0v2I=e1w{LyLqmIeyAl%4!Hya9Oobr_RS$08p*#=Gcfbr%$s374*Q~#YBZ|D zx!49bU;v9z5xb5tSYv^^F9EfLQ?WBwFLVP*K@DUrD#<>= z-{E;w)_#GNuK0!Ih1y}Z%rk%I zdU!b#;<)4o&uqdkZ+hk+&iax1Z%0QFw>|SUCr1A4a-hR6o>@-^L+}xn;VQiTs|#Vu ze_ZI-;ov8X*@um}{_wuD;cu=iJ7Yi2C*o~fgUYQ%4_wY{@N$q`TJ~RLgZs%mY^(bJ3k@Yj9%{?|6uaX0$fjl*Ew(0+xXCB;AixezuDjxyc9L#4^dyc0@Q@gpayUi)nDZt z8{82)63O&pD?o7|ctpvr0ls)JF;U4eU;O8|ByK($6YKy)VI{#m6!*Q3b zZb>HKXpX0&B2bDi<8ADTiSIhoF^=OB)O#zlE%rgbCk^dTKI*4dX-Kopg)AoIB-HPM zw^0!}f(dvZm5hD1+u%>LOjHC;hK}!{%DD9oH?jGsjqDJzB)<8KMq5tYbtg@S)LP|Y083Gkx`89G`TN#v##G#mwQ^mAib7sTMW*IXmlM&b2*zVOegEH}p_%0% zNo`6|b$T8(lM0N(&L6k|%*N&%uSb>LLDcvC0%{+)hk9StU9Jqfpk|ziD!U1&`xj$` z>VFpvCClfikyY94Uepm4iCEMUEk-?9g4&3FLS^|qR0mId=&Gj)s_YU_6L}Q}VJ2#T z-(gF9*f%BS6~3Ip?>+;Jmq9%GPpZeDT8t->EM5BJ24MlbQTIl=&)C1Y57nGpN=rU>x ze)40t_rHvKeil~2WvCr-B|d}eQNJ|{F@TSK8cMpr0e537)C@bJa-t8$;XKrg4xu)t zN2sa@KWNQVj7Q~09tQ9$RBqf4S*5^5upVk4okIE}X{gNRgv>%kWG{}xbEqw}Wue=W z<54*?1r?#Cs5RY$O4broa(Rbr@TXh^>f6x`l?(k)5nPJw3%<#uq3pbd3Tb4KE1P80 zKo+2qY#nNiFQ9VeR}9C7hh4`ps47^1TI)5aopU#);sMlvBaT=z4P&vB>OYT$LVX4M zV7;R@_(viMb)1Fj=nGU8+`}krd(4{N_!73qjaVH|qt^T~YC_-Pc&z`4n`j#9J;$+! z>i-T6C0G07?&~xzic174n>r$52al9hD=GQMu6Uq+619 zsC^~|{Wu!QG@4>AY9^;pWpf8L(y(HeRDDrPG6{8k32NY5Q4zU_iqu0?2Z0iI|3Fk^ zCZTdC1@(MJ3H7fBc5y;8yMO^~e9Fxr2Gzl6Y>VmG0P|5vdlnU$a(n@slv>jlUqvO` zdl-Y)P)pJDw2SB{)caPQ_T7vNIiZ=Cp|UvajGM_&ROnJs9r~z|Z$XvOQPdWD1!J-H zS$E%1RF+Re4e(7=^5%#93iY*pJd6f^Y)p@Hu1xx%9vBuf9fKXAe$!n+{WAIm6`97L zx@t&7bvR>LV#~tBmR@Q9x{+zgfjMcfr3TXGyq-2ObxO+Y!lu)_kq>P0^up9X+OeH2 LXD)8Cd!qgimEjVv delta 4619 zcmXZfd3aA(9>?)>k7yBM8@r4j5=*SH#S%%11S6KgphaiIQ%VzisAb$fO{J*DGEsxJ zXe^BqYiJaS*xSzN@^ofO2Z@?8k1?GV&qJtre}3op*X!JS&ppfce9yVR-;><%N4eqq z->vJ%8)Iy`XIf(->Ut{v3b$h$EW$`E$L?q{Jktq!U}v0yO>qPM8V_Rtzed%+hiX4& zhG%-?NQ}j|XL!EpMWL7*@*y_Dt}{K;1c#ztn1=0eJF4R^P#v0Co@oe?7{DGFg=4V; zE!|j&Vk)Ii=wCD}(< z6)&K&_A9J}VT;|GRzc-VBUHoPQA?1F-EaabdDo&Ma{_DQ-?2LVo7)sp!;E==xwPE> zHP_HTvRntZunzSe;>#X6@P>;(<}x?HEf~)8e~OHj#KvdS|n zsvC0yea$Rmqnp_RTt^4_SjQR@zu7ZsIQ%`&Ea(2gEuQ%o1MIWSGsWC*v4e&gc=;~R zSX{P;8Pn17{hry*^Akrrvy}JJiab+9KV`=}v!C}jf8v=zm|D#Kuf~J*r7p>~qC&V2 z2hm_LR-%C_=ULllnfV3J^rga}OP)DGz3i(rNJo9I5h?23Eo15MX}M=SjQrj+TY28> zCKKYiQM=!i;+^ z^lLD+vN3zHG0z`8bk=+1wq<8b=6(v^!Bwc-T3F$7W`iFp9765aOQ^MbfJD+%ee8BY zEz~}b!YbGsRj)rPNyngaU@mIA`ZyYMu!0EO!2dDPYfn8>N&{bpSu=tO`?)o&;cPHB zBdnRt3oq2N!E@kqe2$7`c#`KW8(G8qro6E=Q&_Vfa2(geqOEzIk?ulecT9V0X0Wyc za33D(WK9Y8CwH}`0|SZbX3b+9*~6N@SoYuWUe?^8gUEPm;?PU5hGjCn60I4|i_M>N z&c>Ixe+pSn)4IPkFJg^k8_c2f6dT-j3vd-3=ioYQ@*8W$Fp+|x))dikpk9@$#hgd!_0gd!KUM6+m3Azy$xL9BlkS^z-!2%X6paZn!#MJUTV#s=k-e zG-qHNT!CHiAZo%lH~Q8jQ3%`Q)+8CVt%jpINW;FEjoM~sP+4Avs#k%UX~bq5{7g4P zE#2=>Xa6cp#Z##I5%0R^%|nj!DeU6GYSd>q?mZj)yw1WnuJ@yk=v$%tKVe(0yS(p~ zWCD)mdO9isr8og^V?3s8ab{r>*CnWSJ&whG==Y+a6KV-(r}9G&MTmWevZ3X%4G^BIL0ZrpP>Of$Y5>R=Em z2Zhqn08sbp0JFVoeL&!88h$ggY>R z<*1yhw9f{=mhJbk|FxY4azp!i5-O>(aSUEU&7{?S7rF%0cAJ1nn1QNSfLi0q2V8{O zqarpAwN&q;KF=pn5%?B0(OU=D{~ADpgRVj>>bF@cs^b?!_vfQtSc__)1htJWp^o5Z z54p4ddDQze@ELp!bt1lr&2b&-x8`9C;A5YHk}mSFtJo4X!;Yw&NW>(Zhni6#>R_rs z?TTiF)=b9)RBq&B0KY-y#)FWRj<^WcLJg#2NPh$cZL>KcSEC}b2gl<%)Dha^s5_Dq zP&qRN6(JwBrW;VnT7pWhUr;~gqCR#9RX0>F^g~6^N6rP`9QSFj(} zI&Oo1Bu1gGSED-m3bhOFV<&8V!kPpei|z3p49C-`HNS+K&}E#6bxyj8&O)_w9D8g3 z-=(1BYFq5SPUAwph1yOhu{++!q1dj(&1@kmSF%tc&kcDDwPe>(Ir12l3r$YBC24~? zXL_QaL?MkrB<7)JatgI=?xIE-QR8_xD8T}U(nFgP_ z-H?Ln@Rh8=(MJbIduLN>1~TVPniH6tnKpOwoN4oB9u1^>qbh91OGh)O+UL7k?tHPy H?(Ot{>KzaV diff --git a/po/pt_BR.po b/po/pt_BR.po index cddc1d90..47867bdd 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -22,7 +22,7 @@ msgstr "" #: arrayfunc.c:66 msgid "bad array subscript" -msgstr "subscrito de array incorreto" +msgstr "subscript de array incorreto" #: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 #: variables.c:3133 @@ -48,7 +48,7 @@ msgstr "%s: impossível atribuir a índice não numérico" #: arrayfunc.c:747 #, c-format msgid "%s: %s: must use subscript when assigning associative array" -msgstr "%s: %s: deve usar subscrito ao atribuir um array associativo" +msgstr "%s: %s: deve-se usar subscript ao atribuir um array associativo" #: bashhist.c:452 #, c-format @@ -4049,7 +4049,7 @@ msgstr "" " -t Sai após a leitura e execução de um comando.\n" " -u Trata limpeza (unset) de variáveis como um erro quando substituindo.\n" " -v Mostra linhas de entrada do shell na medida em que forem lidas.\n" -" -x Mostra comandos e seus argumentos na medida em que forme executados.\n" +" -x Mostra comandos e seus argumentos na medida em que forem executados.\n" " -B o shell vai realizar expansão de chaves\n" " -C Se definido, não permite arquivos normais existentes serem\n" " sobrescritos por redirecionamento da saída.\n" diff --git a/subst.c b/subst.c index 43862cb9..2f37944a 100644 --- a/subst.c +++ b/subst.c @@ -8332,7 +8332,7 @@ parameter_brace_substring (varname, value, ind, substr, quoted, pflags, flags) /* */ /****************************************************************/ -#if 0 /* TAG: bash-5.2? */ +#if 0 /* TAG: bash-5.2 */ static int shouldexp_replacement (s) char *s; @@ -8374,7 +8374,7 @@ pat_subst (string, pat, rep, mflags) mtype = mflags & MATCH_TYPEMASK; -#if 0 /* TAG: bash-5.2? */ +#if 0 /* TAG: bash-5.2 */ rxpand = (rep && *rep) ? shouldexp_replacement (rep) : 0; #else rxpand = 0; diff --git a/tests/RUN-ONE-TEST b/tests/RUN-ONE-TEST index c8bef8dd..0b063810 100755 --- a/tests/RUN-ONE-TEST +++ b/tests/RUN-ONE-TEST @@ -1,4 +1,4 @@ -BUILD_DIR=/usr/local/build/bash/bash-current +BUILD_DIR=/usr/local/build/chet/bash/bash-current THIS_SH=$BUILD_DIR/bash PATH=$PATH:$BUILD_DIR