procd: get rid of putenv usage.
[project/procd.git] / service / instance.c
index 35804de..ecbb6ea 100644 (file)
@@ -241,8 +241,7 @@ instance_removepid(struct service_instance *in) {
        if (!in->pidfile)
                return 0;
        if (unlink(in->pidfile)) {
-               ERROR("Failed to removed pidfile: %s: %d - %s\n",
-                       in->pidfile, errno, strerror(errno));
+               ERROR("Failed to removed pidfile: %s: %m\n", in->pidfile);
                return 1;
        }
        return 0;
@@ -258,19 +257,16 @@ instance_writepid(struct service_instance *in)
        }
        _pidfile = fopen(in->pidfile, "w");
        if (_pidfile == NULL) {
-               ERROR("failed to open pidfile for writing: %s: %d (%s)",
-                       in->pidfile, errno, strerror(errno));
+               ERROR("failed to open pidfile for writing: %s: %m", in->pidfile);
                return 1;
        }
        if (fprintf(_pidfile, "%d\n", in->proc.pid) < 0) {
-               ERROR("failed to write pidfile: %s: %d (%s)",
-                       in->pidfile, errno, strerror(errno));
+               ERROR("failed to write pidfile: %s: %m", in->pidfile);
                fclose(_pidfile);
                return 2;
        }
        if (fclose(_pidfile)) {
-               ERROR("failed to close pidfile: %s: %d (%s)",
-                       in->pidfile, errno, strerror(errno));
+               ERROR("failed to close pidfile: %s: %m", in->pidfile);
                return 3;
        }
 
@@ -283,7 +279,6 @@ instance_run(struct service_instance *in, int _stdout, int _stderr)
        struct blobmsg_list_node *var;
        struct blob_attr *cur;
        char **argv;
-       char *ld_preload;
        int argc = 1; /* NULL terminated */
        int rem, _stdin;
        bool seccomp = !in->trace && !in->has_jail && in->seccomp;
@@ -301,8 +296,8 @@ instance_run(struct service_instance *in, int _stdout, int _stderr)
        if (seccomp)
                setenv("SECCOMP_FILE", in->seccomp, 1);
 
-       if (setlbf && asprintf(&ld_preload, "LD_PRELOAD=/lib/libsetlbf.so") > 0)
-               putenv(ld_preload);
+       if (setlbf)
+               setenv("LD_PRELOAD", "/lib/libsetlbf.so", 1);
 
        blobmsg_list_for_each(&in->limits, var)
                instance_limits(blobmsg_name(var->data), blobmsg_data(var->data));
@@ -353,11 +348,11 @@ instance_run(struct service_instance *in, int _stdout, int _stderr)
        }
 
        if (in->gid && setgid(in->gid)) {
-               ERROR("failed to set group id %d: %d (%s)\n", in->gid, errno, strerror(errno));
+               ERROR("failed to set group id %d: %m\n", in->gid);
                exit(127);
        }
        if (in->uid && setuid(in->uid)) {
-               ERROR("failed to set user id %d: %d (%s)\n", in->uid, errno, strerror(errno));
+               ERROR("failed to set user id %d: %m\n", in->uid);
                exit(127);
        }
 
@@ -407,14 +402,14 @@ instance_start(struct service_instance *in)
        instance_free_stdio(in);
        if (in->_stdout.fd.fd > -2) {
                if (pipe(opipe)) {
-                       ULOG_WARN("pipe() failed: %d (%s)\n", errno, strerror(errno));
+                       ULOG_WARN("pipe() failed: %m\n");
                        opipe[0] = opipe[1] = -1;
                }
        }
 
        if (in->_stderr.fd.fd > -2) {
                if (pipe(epipe)) {
-                       ULOG_WARN("pipe() failed: %d (%s)\n", errno, strerror(errno));
+                       ULOG_WARN("pipe() failed: %m\n");
                        epipe[0] = epipe[1] = -1;
                }
        }