library: eliminate all dependencies on alloc.h/alloc.c

While that old master branch library may utilize those
memory allocation functions found in the alloc module,
it was inappropriate for this newlib branch to subject
callers to a stderr message followed by an early exit.

Of course, the old libprocps offered a message handler
override provision (xalloc_err_handler) but that, too,
would seem to be inappropriate for our modern library.

[ remember the battles fought with that damn libnuma ]

So, this commit will tweak those old inherited sources
setting the stage for standardized return values/errno
settings in connection with a memory allocation error.

------------------------------------------------------
Along the way, we'll address the following miscellany:

. Completely eliminate usage of anything from alloc.h.
This, of course, entails our own error checking of the
alternative allocation calls from stdlib.h & string.h.

. Eliminate use of the strdup function where possible,
as with 'procps_uptime' and 'procps_loadavg' routines.

. Whack some obsolete code (getslabinfo) in sysinfo.c.

Signed-off-by: Jim Warner <james.warner@comcast.net>
This commit is contained in:
Jim Warner
2017-11-15 00:00:00 -05:00
committed by Craig Small
parent 2d5b7e580f
commit 18e684d65d
7 changed files with 169 additions and 155 deletions

View File

@@ -70,23 +70,21 @@ PROCPS_EXPORT int procps_uptime(
double *restrict idle_secs)
{
double up=0, idle=0;
char *savelocale;
char savelocale[128];
FILE *fp;
if ((fp = fopen(UPTIME_FILE, "r")) == NULL)
return -errno;
savelocale = strdup(setlocale(LC_NUMERIC, NULL));
snprintf(savelocale, sizeof(savelocale), "%s", setlocale(LC_NUMERIC, NULL));
setlocale(LC_NUMERIC, "C");
if (fscanf(fp, "%lf %lf", &up, &idle) < 2) {
setlocale(LC_NUMERIC, savelocale);
free(savelocale);
fclose(fp);
return -ERANGE;
}
fclose(fp);
setlocale(LC_NUMERIC, savelocale);
free(savelocale);
if (uptime_secs)
*uptime_secs = up;
if (idle_secs)