stumpwm-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [STUMP] stumpish changes for non-GNU systems


From: Anonymous
Subject: Re: [STUMP] stumpish changes for non-GNU systems
Date: Thu, 07 Oct 2010 11:05:24 +0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (berkeley-unix)

Ben Spencer <address@hidden> writes:

> Hi,
>
> On Tue, Sep 14, 2010 at 01:24:04AM +0400, Anonymous wrote:
>> >> While porting the script to FreeBSD I've made a few changes.
>> >> Can someone test them on non-ancient Linux?
>
> This:
>
> # parse C-style backslash sequences by default
> if [ "$(echo -e foo)" = foo ]; then
>     echo() { builtin echo -e "$@"; }
> fi

Along with following sed(1) line it's intended to work around `echo'
builtin from dash acting like printf(1).

  s/\\([[:digit:]]+)/\\0\1/g

Rather than calling sed(1) for every `echo' I've descided to place it
only where it's needed as an optimization, i.e. only when
`string-to-bytes' maybe used.

BTW, bash at least on FreeBSD treats only \0XXX (not \XXX) sequences as
character codes. I wonder if a command like `windows' ever worked on it,
e.g. with window titles in japanese, not displaying smth like

 > windows
 0+\343\203\213\343\202\263\343\203\213\343\202\263\345\213\225\347\224\273(9) 
- Conkeror
 1*xterm

>
> Seems to interact badly with the sed calls in wait_result (which I
> believe are intended to deal with literal \ns).

Nah, it turns out I've missed the case when there are *quoted*
doublequotes at the end of line, e.g.

  \"

>
> For example:
>
> address@hidden:~$ stumpish
> Welcome to the STUMPwm Interactive SHell.
> Type commands for a list of commands.
>> echo "hello"
> "hello\

Can you test below diff?

%%
@@ -57,12 +57,11 @@ wait_result ()
 
     echo "$RESULT" |
     sed -E 's/[^"\\n]+"//
-            s/"[[:space:]]*$//
+            /^"[[:space:]]*$/d
             s/([^\\])\\n/\1\
 /g
             s/\\(["\\n])/\1/g
-            s/\^([*[:digit:]]+|[Bbn])//g' |
-    sed '/^[[:space:]]*$/d'
+            s/\^([*[:digit:]]+|[Bbn])//g'
 }
 
 send_cmd ()
%%

As for newlines, there is one more bug

  > echo \\n
  n
  > echo "\\n"
  "
  "

that should be addressed by below diff

%%
@@ -58,7 +58,7 @@ wait_result ()
     echo "$RESULT" |
     sed -E 's/[^"\\n]+"//
             /^"[[:space:]]*$/d
-            s/([^\\])\\n/\1\
+            s/(^|[^\\])\\n/\1\
 /g
             s/\\(["\\n])/\1/g
             s/\^([*[:digit:]]+|[Bbn])//g'
%%



reply via email to

[Prev in Thread] Current Thread [Next in Thread]