jobs.c
locale-root.c
process-name.c
- sd-fds.c
sig-monitor.c
subpath.c
verbose.c
#include "afb-systemd.h"
#include "afb-stub-ws.h"
#include "verbose.h"
-#include "sd-fds.h"
struct api_ws
{
/* check for systemd socket */
if (0 == strncmp(path, "sd:", 3))
- fd = sd_fds_for(path + 3);
+ fd = systemd_fds_for(path + 3);
else {
/* check for unix socket */
if (0 == strncmp(path, "unix:", 5))
#include <systemd/sd-event.h>
#include <systemd/sd-bus.h>
+#include <systemd/sd-daemon.h>
#include "afb-systemd.h"
#include "jobs.h"
return sdbusopen((void*)&result, (void*)sd_bus_open_system);
}
+static char **fds_names()
+{
+ static char *null;
+ static char **names;
+
+ int rc;
+
+ if (!names) {
+ rc = sd_listen_fds_with_names(1, &names);
+ if (rc <= 0) {
+ errno = -rc;
+ names = &null;
+ }
+ }
+ return names;
+}
+
+int systemd_fds_init()
+{
+ errno = 0;
+ fds_names();
+ return -!!errno;
+}
+
+int systemd_fds_for(const char *name)
+{
+ int idx;
+ char **names;
+
+ names = fds_names();
+ for (idx = 0 ; names[idx] != NULL ; idx++)
+ if (!strcmp(name, names[idx]))
+ return idx + SD_LISTEN_FDS_START;
+
+ errno = ENOENT;
+ return -1;
+}
+
extern struct sd_bus *afb_systemd_get_user_bus();
extern struct sd_bus *afb_systemd_get_system_bus();
+extern int systemd_fds_init();
+extern int systemd_fds_for(const char *name);
+
#include "afb-common.h"
#include "afb-monitor.h"
#include "afb-hook.h"
-#include "sd-fds.h"
#include "afb-debug.h"
#include "process-name.h"
#include "afb-supervision.h"
// let's run this program with a low priority
nice(20);
- sd_fds_init();
-
// ------------- Build session handler & init config -------
main_config = afb_config_parse_arguments(argc, argv);
if (main_config->name) {
+++ /dev/null
-/*
- Copyright 2017 IoT.bzh
-
- author: José Bollo <jose.bollo@iot.bzh>
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-#define _GNU_SOURCE
-
-#include <assert.h>
-#include <string.h>
-#include <errno.h>
-
-#include <systemd/sd-daemon.h>
-
-static int init_done;
-static char *null;
-static char **names;
-
-int sd_fds_init()
-{
- int rc;
-
- if (init_done)
- rc = 0;
- else {
- init_done = 1;
- rc = sd_listen_fds_with_names(1, &names);
- if (rc <= 0) {
- errno = -rc;
- rc = -!!rc;
- names = &null;
- }
- }
- return rc;
-}
-
-int sd_fds_count()
-{
- int count;
-
- assert(init_done);
- for (count = 0 ; names[count] != NULL ; count++);
- return count;
-}
-
-int sd_fds_for(const char *name)
-{
- int idx;
-
- assert(init_done);
- for (idx = 0 ; names[idx] != NULL ; idx++)
- if (!strcmp(name, names[idx]))
- return idx + SD_LISTEN_FDS_START;
-
- errno = ENOENT;
- return -1;
-}
-
+++ /dev/null
-/*
- Copyright 2017 IoT.bzh
-
- author: José Bollo <jose.bollo@iot.bzh>
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-#pragma once
-
-extern int sd_fds_init();
-extern int sd_fds_count();
-extern int sd_fds_for(const char *name);
-