-static int verify_environment(unsigned *n_sockets) {
- unsigned long long pid;
- const char *e;
- int r;
- unsigned ns;
-
- assert_se(n_sockets);
-
- if (!(e = getenv("LISTEN_PID"))) {
- log_error("Missing $LISTEN_PID environment variable.");
- return -ENOENT;
- }
-
- if ((r = safe_atollu(e, &pid)) < 0) {
- log_error("Failed to parse $LISTEN_PID: %s", strerror(-r));
- return r;
- }
-
- if (pid != (unsigned long long) getpid()) {
- log_error("Socket nor for me.");
- return -ENOENT;
- }
-
- if (!(e = getenv("LISTEN_FDS"))) {
- log_error("Missing $LISTEN_FDS environment variable.");
- return -ENOENT;
- }
-
- if ((r = safe_atou(e, &ns)) < 0) {
- log_error("Failed to parse $LISTEN_FDS: %s", strerror(-r));
- return -E2BIG;
- }
-
- if (ns <= 0 || ns > SERVER_FD_MAX) {
- log_error("Wrong number of file descriptors passed: %s", e);
- return -E2BIG;
- }
-
- *n_sockets = ns;
-
- return 0;
-}
-