1 |
|
/* |
2 |
< |
* i-scream central monitoring system |
2 |
> |
* i-scream libstatgrab |
3 |
|
* http://www.i-scream.org |
4 |
|
* Copyright (C) 2000-2004 i-scream |
5 |
|
* |
403 |
|
return(dlen + (s - src)); /* count does not include NUL */ |
404 |
|
} |
405 |
|
|
406 |
< |
char *sg_update_string(char **dest, const char *src) { |
406 |
> |
int sg_update_string(char **dest, const char *src) { |
407 |
|
char *new; |
408 |
|
|
409 |
+ |
if (src == NULL) { |
410 |
+ |
/* We're being told to set it to NULL. */ |
411 |
+ |
free(*dest); |
412 |
+ |
*dest = NULL; |
413 |
+ |
return 0; |
414 |
+ |
} |
415 |
+ |
|
416 |
|
new = realloc(*dest, strlen(src) + 1); |
417 |
|
if (new == NULL) { |
418 |
< |
return NULL; |
418 |
> |
return -1; |
419 |
|
} |
420 |
|
|
421 |
|
strcpy(new, src); |
422 |
|
*dest = new; |
423 |
< |
return new; |
423 |
> |
return 0; |
424 |
|
} |
425 |
|
|
426 |
|
long long sg_get_ll_match(char *line, regmatch_t *match){ |
461 |
|
#if defined(NETBSD) || defined(OPENBSD) |
462 |
|
struct uvmexp *sg_get_uvmexp() { |
463 |
|
int mib[2]; |
464 |
< |
size_t size; |
465 |
< |
static struct uvmexp *uvm = NULL; |
464 |
> |
size_t size = sizeof(struct uvmexp); |
465 |
> |
static struct uvmexp uvm; |
466 |
|
struct uvmexp *new; |
467 |
|
|
468 |
|
mib[0] = CTL_VM; |
469 |
|
mib[1] = VM_UVMEXP; |
470 |
|
|
471 |
< |
if (sysctl(mib, 2, NULL, &size, NULL, 0) < 0) { |
471 |
> |
if (sysctl(mib, 2, &uvm, &size, NULL, 0) < 0) { |
472 |
|
return NULL; |
473 |
|
} |
474 |
|
|
475 |
< |
new = realloc(uvm, size); |
469 |
< |
if (new == NULL) { |
470 |
< |
return NULL; |
471 |
< |
} |
472 |
< |
uvm = new; |
473 |
< |
|
474 |
< |
if (sysctl(mib, 2, uvm, &size, NULL, 0) < 0) { |
475 |
< |
return NULL; |
476 |
< |
} |
477 |
< |
|
478 |
< |
return uvm; |
475 |
> |
return &uvm; |
476 |
|
} |
477 |
|
#endif |
478 |
|
|
484 |
|
if (sg_get_kvm2() == NULL) { |
485 |
|
return 1; |
486 |
|
} |
490 |
– |
#endif |
491 |
– |
#if defined(NETBSD) || defined(OPENBSD) |
492 |
– |
/* This should always succeed, but it seems that on some |
493 |
– |
* versions of NetBSD the first call to get_uvmexp will return |
494 |
– |
* a non-filled-in structure; this is a workaround for that. |
495 |
– |
*/ |
496 |
– |
if (sg_get_uvmexp() == NULL) return 1; |
487 |
|
#endif |
488 |
|
#ifdef SOLARIS |
489 |
|
/* On solaris 7, this will fail if you are not root. But, everything |