From 8cd1214aac359adf14c7fa7f8083b8374c709a2f Mon Sep 17 00:00:00 2001 From: Jim Warner Date: Fri, 1 Jul 2016 00:00:00 -0500 Subject: [PATCH] library: stop treating lxcname differently, api Unlike other cached string fields (such as USER name), that lxcname field was defined as 'const char *'. This required a custom 'set' function using a cast in order to avoid a compiler warning regarding that assignment. So this commit brings lxcname into line with all those other cached string fields. And while we're at it, the reason some string fields have no 'freefunc' will also be explained with some new comments in the Item_table. Signed-off-by: Jim Warner --- proc/pids.c | 16 ++++++++-------- proc/readproc.c | 4 ++-- proc/readproc.h | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/proc/pids.c b/proc/pids.c index adaf477e..23c97af8 100644 --- a/proc/pids.c +++ b/proc/pids.c @@ -180,7 +180,7 @@ REG_set(ID_SUID, u_int, suid) REG_set(ID_SUSER, str, suser) REG_set(ID_TGID, s_int, tgid) REG_set(ID_TPGID, s_int, tpgid) -setDECL(LXCNAME) { (void)I; R->result.str = (char *)P->lxcname; } +REG_set(LXCNAME, str, lxcname) REG_set(MEM_CODE, sl_int, trs) CVT_set(MEM_CODE_KIB, sl_int, trs) REG_set(MEM_DATA, sl_int, drs) @@ -406,29 +406,29 @@ static struct { { RS(FLT_MIN), f_stat, NULL, QS(sl_int), 0 }, { RS(FLT_MIN_C), f_stat, NULL, QS(sl_int), 0 }, { RS(FLT_MIN_DELTA), f_stat, NULL, QS(sl_int), +1 }, - { RS(ID_EGID), 0, NULL, QS(u_int), 0 }, // oldflags: free w/ simple_read... + { RS(ID_EGID), 0, NULL, QS(u_int), 0 }, // oldflags: free w/ simple_read { RS(ID_EGROUP), f_grp, NULL, QS(str), 0 }, - { RS(ID_EUID), 0, NULL, QS(u_int), 0 }, // oldflags: free w/ simple_read... - { RS(ID_EUSER), f_usr, NULL, QS(str), 0 }, + { RS(ID_EUID), 0, NULL, QS(u_int), 0 }, // oldflags: free w/ simple_read + { RS(ID_EUSER), f_usr, NULL, QS(str), 0 }, // freefunc NULL w/ cached string { RS(ID_FGID), f_status, NULL, QS(u_int), 0 }, { RS(ID_FGROUP), x_ogroup, NULL, QS(str), 0 }, { RS(ID_FUID), f_status, NULL, QS(u_int), 0 }, - { RS(ID_FUSER), x_ouser, NULL, QS(str), 0 }, + { RS(ID_FUSER), x_ouser, NULL, QS(str), 0 }, // freefunc NULL w/ cached string { RS(ID_PGRP), f_stat, NULL, QS(s_int), 0 }, { RS(ID_PID), 0, NULL, QS(s_int), 0 }, // oldflags: free w/ simple_nextpid { RS(ID_PPID), f_either, NULL, QS(s_int), 0 }, { RS(ID_RGID), f_status, NULL, QS(u_int), 0 }, { RS(ID_RGROUP), x_ogroup, NULL, QS(str), 0 }, { RS(ID_RUID), f_status, NULL, QS(u_int), 0 }, - { RS(ID_RUSER), x_ouser, NULL, QS(str), 0 }, + { RS(ID_RUSER), x_ouser, NULL, QS(str), 0 }, // freefunc NULL w/ cached string { RS(ID_SESSION), f_stat, NULL, QS(s_int), 0 }, { RS(ID_SGID), f_status, NULL, QS(u_int), 0 }, { RS(ID_SGROUP), x_ogroup, NULL, QS(str), 0 }, { RS(ID_SUID), f_status, NULL, QS(u_int), 0 }, - { RS(ID_SUSER), x_ouser, NULL, QS(str), 0 }, + { RS(ID_SUSER), x_ouser, NULL, QS(str), 0 }, // freefunc NULL w/ cached string { RS(ID_TGID), 0, NULL, QS(s_int), 0 }, // oldflags: free w/ simple_nextpid { RS(ID_TPGID), f_stat, NULL, QS(s_int), 0 }, - { RS(LXCNAME), f_lxc, NULL, QS(str), 0 }, + { RS(LXCNAME), f_lxc, NULL, QS(str), 0 }, // freefunc NULL w/ cached string { RS(MEM_CODE), f_statm, NULL, QS(sl_int), 0 }, { RS(MEM_CODE_KIB), f_statm, NULL, QS(sl_int), 0 }, { RS(MEM_DATA), f_statm, NULL, QS(sl_int), 0 }, diff --git a/proc/readproc.c b/proc/readproc.c index 98d3da14..a434be03 100644 --- a/proc/readproc.c +++ b/proc/readproc.c @@ -775,7 +775,7 @@ static void fill_environ_cvt (const char* directory, proc_t *restrict p) { // Provide the means to value proc_t.lxcname (perhaps only with "-") while // tracking all names already seen thus avoiding the overhead of repeating // malloc() and free() calls. -static const char *lxc_containers (const char *path) { +static char *lxc_containers (const char *path) { static struct utlbuf_s ub = { NULL, 0 }; // util buffer for whole cgroup static char lxc_none[] = "-"; /* @@ -800,7 +800,7 @@ static const char *lxc_containers (const char *path) { if ((p1 = strstr(ub.buf, lxc_delm))) { static struct lxc_ele { struct lxc_ele *next; - const char *name; + char *name; } *anchor = NULL; struct lxc_ele *ele = anchor; char *p2; diff --git a/proc/readproc.h b/proc/readproc.h index 65e771c6..647c8578 100644 --- a/proc/readproc.h +++ b/proc/readproc.h @@ -169,7 +169,7 @@ typedef struct proc_t { *sd_slice, // n/a systemd slice unit *sd_unit, // n/a systemd system unit id *sd_uunit; // n/a systemd user unit id - const char + char *lxcname; // n/a lxc container name } proc_t;