[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RP] Error return codes
From: |
Mike Meyer |
Subject: |
Re: [RP] Error return codes |
Date: |
Tue Nov 20 20:32:02 2001 |
Ben Leslie <address@hidden> types:
> Another question. Would is be possible for ratpoison to pass
> back error commands when using the -c option.
>
> I would like to do:
>
> ratpoison -c "select mutt"
> echo $?
>
> and if there is not "mutt" window it would
> return some non zero value. That way in a script
> I would be able to then recover from this problem.
> (ie: start mutt and change focus to it).
>
> This seems to need hacking send_command/
> recieve_command_result in communications.c and ensuring
> that all commands in actions.c return error codes
> when they should.
>
> What do other people think?
I think it's a good idea, but it takes more work than you've
described. The catch is that the two ratpoisons are communicating via
strings in X resources. The things in actions.c return those strings
or NULL. There are already plans in place to make many of those that
currently return NULL return meaningful strings. I've got patches
that do that, and even have a script that uses that capability.
So you need to either 1) find another place to stash return values, or
2) provide a mechanism to encode errors in the strings that won't
collide with legitimate return values.
I think that in the few cases it could be really useful, there are
straightforward workarounds. For instance, the script that Doug
references greps the output of "ratpoison -c windows" then either does
the select or runs a command. I've attached the latest version.
Yes, I know that ratmenu examples uses the old ratmenu. I still don't
have sources to the new one....
<mike
#!/bin/sh
#
# Ask ratpoison if the first argument exists as a window title. If so,
# select that window. If not, then try running the rest of the arguments
# if they exist. If they don't exist, try running the first argument. Example
# usage with ratmenu:
#
# ratmenu "emacs:ratpoison-get-a emacs" "jpilot:ratpoison-get-a j-pilot jpilot"
#
# Note that the window title test is case-insensitive.
if [ -n "$1" ]
then
window=$1
shift
else
echo "usage: $0 window [command ...]"
exit 0
fi
if [ $# -ge 1 ]
then
command=$@
else
command=$window
fi
if (ratpoison -c "windows %t" | grep -qi $window)
then
ratpoison -c "select $window"
else
exec $command
fi
--
Mike Meyer <address@hidden> http://www.mired.org/home/mwm/
Q: How do you make the gods laugh? A: Tell them your plans.