This gets more curious... You are certainly correct that the strings passed to procd are marshaled correctly. It turns out that the shells I have tried to pass the numeric-colon-separated list as an option value gets the list split apart as I noted earlier. Barring any quick solution to this issue I may develop a patch to the application source to accept a different delimiter. Go figure

Thanks,    /ted

-----Original Message----- From: Yousong Zhou
Sent: Sunday, June 14, 2015 10:10 PM
To: Ted Hess
Cc: OpenWrt developers
Subject: Re: [OpenWrt-Devel] procd/libubox mangles command-line arguments

Hi, Ted,

On 15 June 2015 at 04:57, Ted Hess <th...@kitschensync.net> wrote:
Somewhere in the processing of "procd_set_param command ..." certain
command-line parameters which have colons (":") get treated as argument
delimiters. Example:

procd_set_param command "foo -a 200:4:16:0 -o hw:0,0"


The correct usage should be something like the following.

 procd_set_param command "foo" "-a" "200:4:16:0" "-o" "hw:0,0"

gets the command-line string "-a 200 4 16 0 -o hw:0,0" actually passed to
the program. This is not what I wanted. Is there special handling for colon
delimited numbers?? The 2nd parameter does not get this treatment - why?


AFAIK, procd will not try any shell-like command line parsing.  I
tried the following script

 . /lib/functions/procd.sh
 service_triggers() { true; }
 procd_open_service foo foo
 procd_open_instance bar
 procd_set_param command 'baz -a 200:4:16:0 -o hw:0,0'
 procd_close_instance
 procd_close_service

 ubus call service list  | jsonfilter -e '$["foo"]'

And the result seems expected.

 root@OpenWrt:/# ubus call service list  | jsonfilter -e '$["foo"]'
 { "instances": { "bar": { "running": false, "command": [ "baz -a
200:4:16:0 -o hw:0,0" ] } } }

yousong _______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to