github.com/opencontainers/runc@v1.2.0-rc.1.0.20240520010911-492dc558cdd6/libcontainer/nsenter/getenv.c (about)

     1  #define _GNU_SOURCE
     2  #include <errno.h>
     3  #include <stdlib.h>
     4  #include "getenv.h"
     5  #include "log.h"
     6  
     7  int getenv_int(const char *name)
     8  {
     9  	char *val, *endptr;
    10  	int ret;
    11  
    12  	val = getenv(name);
    13  	/* Treat empty value as unset variable. */
    14  	if (val == NULL || *val == '\0')
    15  		return -ENOENT;
    16  
    17  	ret = strtol(val, &endptr, 10);
    18  	if (val == endptr || *endptr != '\0')
    19  		bail("unable to parse %s=%s", name, val);
    20  	/*
    21  	 * Sanity check: this must be a non-negative number.
    22  	 */
    23  	if (ret < 0)
    24  		bail("bad value for %s=%s (%d)", name, val, ret);
    25  
    26  	return ret;
    27  }