On Thu, 2018-05-17 at 08:28 +0200, Tomaž Šolc wrote: > (apologies for sending an incomplete mail earlier) > > Hi > > is there a way to detect that a CLI command has succeeded or failed when > using the socket interface offered by module-cli-protocol-unix? > > Specifically I'm currently interested in the "play-file" command (which > seems to be only accessible over the CLI interface). If the command > fails because the daemon can't read the file, there is no error message > returned back through the socket. Any error is only written to syslog. > > In general I don't see any way of getting back the success/error status > of a command. pulse-cli-syntax man page does not mention anything in > this regard. "pacmd" also does not signal failures through its exit code. > > I see that individual handlers in cli-command.c (including > pa_cli_command_play_file) return -1 on error, but this status seems to > be lost somewhere down the line. Is see that in line_callback() in cli.c > the return value of pa_cli_command_execute_line() is ignored. > > Does anyone have any thoughts on how proper error handling could be > implemented in the cli interface? I would be happy to work on a patch to > fix this. Getting an error message from the "play-file" command is just a matter of printing the error in pa_cli_command_play_file(). It already prints errors when it detects bad parameters, but if pa_play_file() fails, that doesn't currently result in any error message. A patch for this would be welcome. You asked about "proper" error handling, and in my view that includes something better than just ad-hoc error messages. The CLI interface is what it is, and I don't like the idea of trying to make it a proper programming interface. The native protocol is what applications should use. A "play file" command could be added to the native protocol, although I'm not sure it should. PulseAudio isn't a media player, after all... -- Tanu https://liberapay.com/tanuk https://www.patreon.com/tanuk