[systemd-devel] Scheme bindings

Zbigniew Jędrzejewski-Szmek zbyszek at in.waw.pl
Fri Nov 20 05:26:18 PST 2015


On Fri, Nov 20, 2015 at 01:53:02PM +0100, Jan Synacek wrote:
> Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl> writes:
> 
> > On Fri, Nov 13, 2015 at 09:27:17AM +0100, Jan Synáček wrote:
> >> Hello,
> >> 
> >> if anybody lurking here and hacking on systemd also likes scheme, I
> >> created bindings for GNU Guile [1]. The API is far from covered, but
> >> journal API and sd_listen* stuff is usable. You can now write socket
> >> activated services in scheme!
> >> 
> >> [1] https://github.com/jsynacek/guile-systemd
> >
> > Hi,
> >
> > when you construct a list like this, do you have normal or reverse order:
> >     for (i = 0; i < r; i++)
> >        s_fds = scm_cons(scm_from_int(SD_LISTEN_FDS_START+i), s_fds);
> > ?
> 
> Good catch, it's reversed. But, does it really matter in practice?

Sure. Positions of sockets passed by systemd are stable if they come
from the same socket unit, so you can distinguish otherwise identical
sockets by number.

> > return sd_booted() ? SCM_BOOL_T : SCM_BOOL_F;
> > → sd_booted can return negative for error.
> 
> _public_ int sd_booted(void) {
>         return laccess("/run/systemd/system/", F_OK) >= 0;
> }
> 
> This returns a "boolean" value. I'm not really sure why it would return
> anything else. But, the documentation indeed says that it can return
> negative values when it fails.

It currently doesn't, but the bindings are written to a public api,
not the implementation. Maybe sd_booted() should be documented
to never return an error.

Zbyszek


More information about the systemd-devel mailing list