diff mbox series

[LEDE-DEV] procd: get rid of putenv usage.

Message ID 1516676235-9488-1-git-send-email-rosenp@gmail.com
State Changes Requested
Delegated to: John Crispin
Headers show
Series [LEDE-DEV] procd: get rid of putenv usage. | expand

Commit Message

Rosen Penev Jan. 23, 2018, 2:57 a.m. UTC
setenv is prefered according to POSIX. Also allows staticly allocated strings.

Saves 200 bytes when stripped. 400 without.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
 service/instance.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

Alexandru Ardelean Jan. 23, 2018, 8:09 a.m. UTC | #1
On Tue, Jan 23, 2018 at 4:57 AM, Rosen Penev <rosenp@gmail.com> wrote:
> setenv is prefered according to POSIX. Also allows staticly allocated strings.
>
> Saves 200 bytes when stripped. 400 without.
>
> Signed-off-by: Rosen Penev <rosenp@gmail.com>
> ---
>  service/instance.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/service/instance.c b/service/instance.c
> index 12c2efe..848679c 100644
> --- a/service/instance.c
> +++ b/service/instance.c
> @@ -279,7 +279,7 @@ instance_run(struct service_instance *in, int _stdout, int _stderr)
>         struct blobmsg_list_node *var;
>         struct blob_attr *cur;
>         char **argv;
> -       char *ld_preload;
> +       char *ld_preload = "/lib/libsetlbf.so";
>         int argc = 1; /* NULL terminated */
>         int rem, _stdin;
>         bool seccomp = !in->trace && !in->has_jail && in->seccomp;
> @@ -297,8 +297,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", ld_preload, 1);

if removing the aspintf() you could also remove the `ld_preload` var
altogether, and just do setenv("LD_PRELOAD", "/lib/libsetlbf.so", 1);

rest looks neat

>
>         blobmsg_list_for_each(&in->limits, var)
>                 instance_limits(blobmsg_name(var->data), blobmsg_data(var->data));
> --
> 2.7.4
>
>
> _______________________________________________
> Lede-dev mailing list
> Lede-dev@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/lede-dev
Rosen Penev Jan. 23, 2018, 4:08 p.m. UTC | #2
On Tue, Jan 23, 2018 at 12:09 AM, Alexandru Ardelean
<ardeleanalex@gmail.com> wrote:
> On Tue, Jan 23, 2018 at 4:57 AM, Rosen Penev <rosenp@gmail.com> wrote:
>> setenv is prefered according to POSIX. Also allows staticly allocated strings.
>>
>> Saves 200 bytes when stripped. 400 without.
>>
>> Signed-off-by: Rosen Penev <rosenp@gmail.com>
>> ---
>>  service/instance.c | 6 +++---
>>  1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/service/instance.c b/service/instance.c
>> index 12c2efe..848679c 100644
>> --- a/service/instance.c
>> +++ b/service/instance.c
>> @@ -279,7 +279,7 @@ instance_run(struct service_instance *in, int _stdout, int _stderr)
>>         struct blobmsg_list_node *var;
>>         struct blob_attr *cur;
>>         char **argv;
>> -       char *ld_preload;
>> +       char *ld_preload = "/lib/libsetlbf.so";
>>         int argc = 1; /* NULL terminated */
>>         int rem, _stdin;
>>         bool seccomp = !in->trace && !in->has_jail && in->seccomp;
>> @@ -297,8 +297,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", ld_preload, 1);
>
> if removing the aspintf() you could also remove the `ld_preload` var
> altogether, and just do setenv("LD_PRELOAD", "/lib/libsetlbf.so", 1);
>
> rest looks neat

Good call. setenv takes const char* and not char*. Should save 8 bytes (maybe).
>
>>
>>         blobmsg_list_for_each(&in->limits, var)
>>                 instance_limits(blobmsg_name(var->data), blobmsg_data(var->data));
>> --
>> 2.7.4
>>
>>
>> _______________________________________________
>> Lede-dev mailing list
>> Lede-dev@lists.infradead.org
>> http://lists.infradead.org/mailman/listinfo/lede-dev
diff mbox series

Patch

diff --git a/service/instance.c b/service/instance.c
index 12c2efe..848679c 100644
--- a/service/instance.c
+++ b/service/instance.c
@@ -279,7 +279,7 @@  instance_run(struct service_instance *in, int _stdout, int _stderr)
 	struct blobmsg_list_node *var;
 	struct blob_attr *cur;
 	char **argv;
-	char *ld_preload;
+	char *ld_preload = "/lib/libsetlbf.so";
 	int argc = 1; /* NULL terminated */
 	int rem, _stdin;
 	bool seccomp = !in->trace && !in->has_jail && in->seccomp;
@@ -297,8 +297,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", ld_preload, 1);
 
 	blobmsg_list_for_each(&in->limits, var)
 		instance_limits(blobmsg_name(var->data), blobmsg_data(var->data));