1
0
mirror of https://github.com/Llewellynvdm/conky.git synced 2024-12-28 13:00:45 +00:00

Fix a lot of unimportant memleaks caused by a CRIT_ERR

This commit is contained in:
Nikolas Garofil 2009-07-16 20:28:23 +02:00
parent 63a8c677b3
commit 06de5573e8
16 changed files with 133 additions and 127 deletions

View File

@ -179,7 +179,7 @@ void variable_substitute(const char *s, char *dest, unsigned int n)
static struct net_stat netstats[16]; static struct net_stat netstats[16];
struct net_stat *get_net_stat(const char *dev) struct net_stat *get_net_stat(const char *dev, void *free_at_crash1, void *free_at_crash2)
{ {
unsigned int i; unsigned int i;
@ -202,7 +202,7 @@ struct net_stat *get_net_stat(const char *dev)
} }
} }
CRIT_ERR("too many interfaces used (limit is 16)"); CRIT_ERR(free_at_crash1, free_at_crash2, "too many interfaces used (limit is 16)");
return 0; return 0;
} }
@ -224,7 +224,7 @@ int interface_up(const char *dev)
struct ifreq ifr; struct ifreq ifr;
if ((fd = socket(PF_INET, SOCK_DGRAM, 0)) < 0) { if ((fd = socket(PF_INET, SOCK_DGRAM, 0)) < 0) {
CRIT_ERR("could not create sockfd"); CRIT_ERR(NULL, NULL, "could not create sockfd");
return 0; return 0;
} }
strncpy(ifr.ifr_name, dev, IFNAMSIZ); strncpy(ifr.ifr_name, dev, IFNAMSIZ);

View File

@ -74,7 +74,7 @@ struct net_stat {
char ap[18]; char ap[18];
}; };
void clear_net_stats(void); void clear_net_stats(void);
struct net_stat *get_net_stat(const char *); struct net_stat *get_net_stat(const char *dev, void *free_at_crash1, void *free_at_crash2);
int interface_up(const char *dev); int interface_up(const char *dev);
void get_adt746x_cpu(char *, size_t); void get_adt746x_cpu(char *, size_t);

View File

@ -378,11 +378,11 @@ int register_iconv(iconv_t *new_iconv)
{ {
iconv_cd = realloc(iconv_cd, sizeof(iconv_t *) * (iconv_count + 1)); iconv_cd = realloc(iconv_cd, sizeof(iconv_t *) * (iconv_count + 1));
if (!iconv_cd) { if (!iconv_cd) {
CRIT_ERR("Out of memory"); CRIT_ERR(NULL, NULL, "Out of memory");
} }
iconv_cd[iconv_count] = malloc(sizeof(iconv_t)); iconv_cd[iconv_count] = malloc(sizeof(iconv_t));
if (!iconv_cd[iconv_count]) { if (!iconv_cd[iconv_count]) {
CRIT_ERR("Out of memory"); CRIT_ERR(NULL, NULL, "Out of memory");
} }
memcpy(iconv_cd[iconv_count], new_iconv, sizeof(iconv_t)); memcpy(iconv_cd[iconv_count], new_iconv, sizeof(iconv_t));
iconv_count++; iconv_count++;
@ -1233,7 +1233,7 @@ static int parse_top_args(const char *s, const char *arg, struct text_object *ob
/* construct_text_object() creates a new text_object */ /* construct_text_object() creates a new text_object */
static struct text_object *construct_text_object(const char *s, static struct text_object *construct_text_object(const char *s,
const char *arg, long line, char allow_threaded, void **ifblock_opaque) const char *arg, long line, char allow_threaded, void **ifblock_opaque, void *free_at_crash)
{ {
// struct text_object *obj = new_text_object(); // struct text_object *obj = new_text_object();
struct text_object *obj = new_text_object_internal(); struct text_object *obj = new_text_object_internal();
@ -1300,10 +1300,10 @@ static struct text_object *construct_text_object(const char *s,
} }
obj->data.read_tcp.port = htons(obj->data.read_tcp.port); obj->data.read_tcp.port = htons(obj->data.read_tcp.port);
if(obj->data.read_tcp.port < 1 || obj->data.read_tcp.port > 65535) { if(obj->data.read_tcp.port < 1 || obj->data.read_tcp.port > 65535) {
CRIT_ERR("read_tcp: Needs \"(host) port\" as argument(s)"); CRIT_ERR(obj, free_at_crash, "read_tcp: Needs \"(host) port\" as argument(s)");
} }
}else{ }else{
CRIT_ERR("read_tcp: Needs \"(host) port\" as argument(s)"); CRIT_ERR(obj, free_at_crash, "read_tcp: Needs \"(host) port\" as argument(s)");
} }
#if defined(__linux__) #if defined(__linux__)
END OBJ(voltage_mv, 0) END OBJ(voltage_mv, 0)
@ -1332,76 +1332,76 @@ static struct text_object *construct_text_object(const char *s,
#ifdef HAVE_IWLIB #ifdef HAVE_IWLIB
END OBJ(wireless_essid, INFO_NET) END OBJ(wireless_essid, INFO_NET)
if (arg) { if (arg) {
obj->data.net = get_net_stat(arg); obj->data.net = get_net_stat(arg, obj, free_at_crash);
} else { } else {
// default to DEFAULTNETDEV // default to DEFAULTNETDEV
char *buf = strndup(DEFAULTNETDEV, text_buffer_size); char *buf = strndup(DEFAULTNETDEV, text_buffer_size);
obj->data.net = get_net_stat(buf); obj->data.net = get_net_stat(buf, obj, free_at_crash);
free(buf); free(buf);
} }
END OBJ(wireless_mode, INFO_NET) END OBJ(wireless_mode, INFO_NET)
if (arg) { if (arg) {
obj->data.net = get_net_stat(arg); obj->data.net = get_net_stat(arg, obj, free_at_crash);
} else { } else {
// default to DEFAULTNETDEV // default to DEFAULTNETDEV
char *buf = strndup(DEFAULTNETDEV, text_buffer_size); char *buf = strndup(DEFAULTNETDEV, text_buffer_size);
obj->data.net = get_net_stat(buf); obj->data.net = get_net_stat(buf, obj, free_at_crash);
free(buf); free(buf);
} }
END OBJ(wireless_bitrate, INFO_NET) END OBJ(wireless_bitrate, INFO_NET)
if (arg) { if (arg) {
obj->data.net = get_net_stat(arg); obj->data.net = get_net_stat(arg, obj, free_at_crash);
} else { } else {
// default to DEFAULTNETDEV // default to DEFAULTNETDEV
char *buf = strndup(DEFAULTNETDEV, text_buffer_size); char *buf = strndup(DEFAULTNETDEV, text_buffer_size);
obj->data.net = get_net_stat(buf); obj->data.net = get_net_stat(buf, obj, free_at_crash);
free(buf); free(buf);
} }
END OBJ(wireless_ap, INFO_NET) END OBJ(wireless_ap, INFO_NET)
if (arg) { if (arg) {
obj->data.net = get_net_stat(arg); obj->data.net = get_net_stat(arg, obj, free_at_crash);
} else { } else {
// default to DEFAULTNETDEV // default to DEFAULTNETDEV
char *buf = strndup(DEFAULTNETDEV, text_buffer_size); char *buf = strndup(DEFAULTNETDEV, text_buffer_size);
obj->data.net = get_net_stat(buf); obj->data.net = get_net_stat(buf, obj, free_at_crash);
free(buf); free(buf);
} }
END OBJ(wireless_link_qual, INFO_NET) END OBJ(wireless_link_qual, INFO_NET)
if (arg) { if (arg) {
obj->data.net = get_net_stat(arg); obj->data.net = get_net_stat(arg, obj, free_at_crash);
} else { } else {
// default to DEFAULTNETDEV // default to DEFAULTNETDEV
char *buf = strndup(DEFAULTNETDEV, text_buffer_size); char *buf = strndup(DEFAULTNETDEV, text_buffer_size);
obj->data.net = get_net_stat(buf); obj->data.net = get_net_stat(buf, obj, free_at_crash);
free(buf); free(buf);
} }
END OBJ(wireless_link_qual_max, INFO_NET) END OBJ(wireless_link_qual_max, INFO_NET)
if (arg) { if (arg) {
obj->data.net = get_net_stat(arg); obj->data.net = get_net_stat(arg, obj, free_at_crash);
} else { } else {
// default to DEFAULTNETDEV // default to DEFAULTNETDEV
char *buf = strndup(DEFAULTNETDEV, text_buffer_size); char *buf = strndup(DEFAULTNETDEV, text_buffer_size);
obj->data.net = get_net_stat(buf); obj->data.net = get_net_stat(buf, obj, free_at_crash);
free(buf); free(buf);
} }
END OBJ(wireless_link_qual_perc, INFO_NET) END OBJ(wireless_link_qual_perc, INFO_NET)
if (arg) { if (arg) {
obj->data.net = get_net_stat(arg); obj->data.net = get_net_stat(arg, obj, free_at_crash);
} else { } else {
// default to DEFAULTNETDEV // default to DEFAULTNETDEV
char *buf = strndup(DEFAULTNETDEV, text_buffer_size); char *buf = strndup(DEFAULTNETDEV, text_buffer_size);
obj->data.net = get_net_stat(buf); obj->data.net = get_net_stat(buf, obj, free_at_crash);
free(buf); free(buf);
} }
END OBJ(wireless_link_bar, INFO_NET) END OBJ(wireless_link_bar, INFO_NET)
SIZE_DEFAULTS(bar); SIZE_DEFAULTS(bar);
if (arg) { if (arg) {
arg = scan_bar(arg, &obj->a, &obj->b); arg = scan_bar(arg, &obj->a, &obj->b);
obj->data.net = get_net_stat(arg); obj->data.net = get_net_stat(arg, obj, free_at_crash);
} else { } else {
// default to DEFAULTNETDEV // default to DEFAULTNETDEV
char *buf = strndup(DEFAULTNETDEV, text_buffer_size); char *buf = strndup(DEFAULTNETDEV, text_buffer_size);
obj->data.net = get_net_stat(buf); obj->data.net = get_net_stat(buf, obj, free_at_crash);
free(buf); free(buf);
} }
#endif /* HAVE_IWLIB */ #endif /* HAVE_IWLIB */
@ -1464,7 +1464,7 @@ static struct text_object *construct_text_object(const char *s,
if (arg) if (arg)
obj->data.s = strndup(dev_name(arg), text_buffer_size); obj->data.s = strndup(dev_name(arg), text_buffer_size);
else else
CRIT_ERR("disk_protect needs an argument"); CRIT_ERR(obj, free_at_crash, "disk_protect needs an argument");
END OBJ(i8k_version, INFO_I8K) END OBJ(i8k_version, INFO_I8K)
END OBJ(i8k_bios, INFO_I8K) END OBJ(i8k_bios, INFO_I8K)
END OBJ(i8k_serial, INFO_I8K) END OBJ(i8k_serial, INFO_I8K)
@ -1479,7 +1479,7 @@ static struct text_object *construct_text_object(const char *s,
END OBJ(ibm_fan, 0) END OBJ(ibm_fan, 0)
END OBJ(ibm_temps, 0) END OBJ(ibm_temps, 0)
if (!arg) { if (!arg) {
CRIT_ERR("ibm_temps: needs an argument"); CRIT_ERR(obj, free_at_crash, "ibm_temps: needs an argument");
} }
if (!isdigit(arg[0]) || strlen(arg) >= 2 || atoi(&arg[0]) >= 8) { if (!isdigit(arg[0]) || strlen(arg) >= 2 || atoi(&arg[0]) >= 8) {
obj->data.sensor = 0; obj->data.sensor = 0;
@ -1496,7 +1496,7 @@ static struct text_object *construct_text_object(const char *s,
END OBJ_IF(if_gw, INFO_GW) END OBJ_IF(if_gw, INFO_GW)
END OBJ(ioscheduler, 0) END OBJ(ioscheduler, 0)
if (!arg) { if (!arg) {
CRIT_ERR("get_ioscheduler needs an argument (e.g. hda)"); CRIT_ERR(obj, free_at_crash, "get_ioscheduler needs an argument (e.g. hda)");
obj->data.s = 0; obj->data.s = 0;
} else } else
obj->data.s = strndup(dev_name(arg), text_buffer_size); obj->data.s = strndup(dev_name(arg), text_buffer_size);
@ -1527,7 +1527,7 @@ static struct text_object *construct_text_object(const char *s,
#if defined(__OpenBSD__) #if defined(__OpenBSD__)
END OBJ(obsd_sensors_temp, 0) END OBJ(obsd_sensors_temp, 0)
if (!arg) { if (!arg) {
CRIT_ERR("obsd_sensors_temp: needs an argument"); CRIT_ERR(obj, free_at_crash, "obsd_sensors_temp: needs an argument");
} }
if (!isdigit(arg[0]) || atoi(&arg[0]) < 0 if (!isdigit(arg[0]) || atoi(&arg[0]) < 0
|| atoi(&arg[0]) > OBSD_MAX_SENSORS - 1) { || atoi(&arg[0]) > OBSD_MAX_SENSORS - 1) {
@ -1537,7 +1537,7 @@ static struct text_object *construct_text_object(const char *s,
obj->data.sensor = atoi(&arg[0]); obj->data.sensor = atoi(&arg[0]);
END OBJ(obsd_sensors_fan, 0) END OBJ(obsd_sensors_fan, 0)
if (!arg) { if (!arg) {
CRIT_ERR("obsd_sensors_fan: needs 2 arguments (device and sensor " CRIT_ERR(obj, free_at_crash, "obsd_sensors_fan: needs 2 arguments (device and sensor "
"number)"); "number)");
} }
if (!isdigit(arg[0]) || atoi(&arg[0]) < 0 if (!isdigit(arg[0]) || atoi(&arg[0]) < 0
@ -1548,7 +1548,7 @@ static struct text_object *construct_text_object(const char *s,
obj->data.sensor = atoi(&arg[0]); obj->data.sensor = atoi(&arg[0]);
END OBJ(obsd_sensors_volt, 0) END OBJ(obsd_sensors_volt, 0)
if (!arg) { if (!arg) {
CRIT_ERR("obsd_sensors_volt: needs 2 arguments (device and sensor " CRIT_ERR(obj, free_at_crash, "obsd_sensors_volt: needs 2 arguments (device and sensor "
"number)"); "number)");
} }
if (!isdigit(arg[0]) || atoi(&arg[0]) < 0 if (!isdigit(arg[0]) || atoi(&arg[0]) < 0
@ -1674,20 +1674,20 @@ static struct text_object *construct_text_object(const char *s,
END OBJ(conky_build_arch, 0) END OBJ(conky_build_arch, 0)
END OBJ(downspeed, INFO_NET) END OBJ(downspeed, INFO_NET)
if (arg) { if (arg) {
obj->data.net = get_net_stat(arg); obj->data.net = get_net_stat(arg, obj, free_at_crash);
} else { } else {
// default to DEFAULTNETDEV // default to DEFAULTNETDEV
char *buf = strndup(DEFAULTNETDEV, text_buffer_size); char *buf = strndup(DEFAULTNETDEV, text_buffer_size);
obj->data.net = get_net_stat(buf); obj->data.net = get_net_stat(buf, obj, free_at_crash);
free(buf); free(buf);
} }
END OBJ(downspeedf, INFO_NET) END OBJ(downspeedf, INFO_NET)
if (arg) { if (arg) {
obj->data.net = get_net_stat(arg); obj->data.net = get_net_stat(arg, obj, free_at_crash);
} else { } else {
// default to DEFAULTNETDEV // default to DEFAULTNETDEV
char *buf = strndup(DEFAULTNETDEV, text_buffer_size); char *buf = strndup(DEFAULTNETDEV, text_buffer_size);
obj->data.net = get_net_stat(buf); obj->data.net = get_net_stat(buf, obj, free_at_crash);
free(buf); free(buf);
} }
#ifdef X11 #ifdef X11
@ -1699,7 +1699,7 @@ static struct text_object *construct_text_object(const char *s,
// default to DEFAULTNETDEV // default to DEFAULTNETDEV
buf = strndup(buf ? buf : DEFAULTNETDEV, text_buffer_size); buf = strndup(buf ? buf : DEFAULTNETDEV, text_buffer_size);
obj->data.net = get_net_stat(buf); obj->data.net = get_net_stat(buf, obj, free_at_crash);
free(buf); free(buf);
#endif /* X11 */ #endif /* X11 */
END OBJ(else, 0) END OBJ(else, 0)
@ -2021,21 +2021,21 @@ static struct text_object *construct_text_object(const char *s,
} }
} else OBJ(addr, INFO_NET) } else OBJ(addr, INFO_NET)
if (arg) { if (arg) {
obj->data.net = get_net_stat(arg); obj->data.net = get_net_stat(arg, obj, free_at_crash);
} else { } else {
// default to DEFAULTNETDEV // default to DEFAULTNETDEV
char *buf = strndup(DEFAULTNETDEV, text_buffer_size); char *buf = strndup(DEFAULTNETDEV, text_buffer_size);
obj->data.net = get_net_stat(buf); obj->data.net = get_net_stat(buf, obj, free_at_crash);
free(buf); free(buf);
} }
#if defined(__linux__) #if defined(__linux__)
END OBJ(addrs, INFO_NET) END OBJ(addrs, INFO_NET)
if (arg) { if (arg) {
obj->data.net = get_net_stat(arg); obj->data.net = get_net_stat(arg, obj, free_at_crash);
} else { } else {
// default to DEFAULTNETDEV // default to DEFAULTNETDEV
char *buf = strndup(DEFAULTNETDEV, text_buffer_size); char *buf = strndup(DEFAULTNETDEV, text_buffer_size);
obj->data.net = get_net_stat(buf); obj->data.net = get_net_stat(buf, obj, free_at_crash);
free(buf); free(buf);
} }
#endif /* __linux__ */ #endif /* __linux__ */
@ -2053,13 +2053,13 @@ static struct text_object *construct_text_object(const char *s,
if (arg) { if (arg) {
obj->data.s = strndup(arg, text_buffer_size); obj->data.s = strndup(arg, text_buffer_size);
}else{ }else{
CRIT_ERR("lines needs a argument"); CRIT_ERR(obj, free_at_crash, "lines needs a argument");
} }
END OBJ(words, 0) END OBJ(words, 0)
if (arg) { if (arg) {
obj->data.s = strndup(arg, text_buffer_size); obj->data.s = strndup(arg, text_buffer_size);
}else{ }else{
CRIT_ERR("words needs a argument"); CRIT_ERR(obj, free_at_crash, "words needs a argument");
} }
END OBJ(loadavg, INFO_LOADAVG) END OBJ(loadavg, INFO_LOADAVG)
int a = 1, b = 2, c = 3, r = 3; int a = 1, b = 2, c = 3, r = 3;
@ -2466,7 +2466,7 @@ static struct text_object *construct_text_object(const char *s,
#ifdef HAVE_ICONV #ifdef HAVE_ICONV
END OBJ(iconv_start, 0) END OBJ(iconv_start, 0)
if (iconv_converting) { if (iconv_converting) {
CRIT_ERR("You must stop your last iconv conversion before " CRIT_ERR(obj, free_at_crash, "You must stop your last iconv conversion before "
"starting another"); "starting another");
} }
if (arg) { if (arg) {
@ -2474,7 +2474,7 @@ static struct text_object *construct_text_object(const char *s,
char iconv_to[CODEPAGE_LENGTH]; char iconv_to[CODEPAGE_LENGTH];
if (sscanf(arg, "%s %s", iconv_from, iconv_to) != 2) { if (sscanf(arg, "%s %s", iconv_from, iconv_to) != 2) {
CRIT_ERR("Invalid arguments for iconv_start"); CRIT_ERR(obj, free_at_crash, "Invalid arguments for iconv_start");
} else { } else {
iconv_t new_iconv; iconv_t new_iconv;
@ -2487,7 +2487,7 @@ static struct text_object *construct_text_object(const char *s,
} }
} }
} else { } else {
CRIT_ERR("Iconv requires arguments"); CRIT_ERR(obj, free_at_crash, "Iconv requires arguments");
} }
END OBJ(iconv_stop, 0) END OBJ(iconv_stop, 0)
iconv_converting = 0; iconv_converting = 0;
@ -2495,27 +2495,27 @@ static struct text_object *construct_text_object(const char *s,
#endif #endif
END OBJ(totaldown, INFO_NET) END OBJ(totaldown, INFO_NET)
if (arg) { if (arg) {
obj->data.net = get_net_stat(arg); obj->data.net = get_net_stat(arg, obj, free_at_crash);
} else { } else {
// default to DEFAULTNETDEV // default to DEFAULTNETDEV
char *buf = strndup(DEFAULTNETDEV, text_buffer_size); char *buf = strndup(DEFAULTNETDEV, text_buffer_size);
obj->data.net = get_net_stat(buf); obj->data.net = get_net_stat(buf, obj, free_at_crash);
free(buf); free(buf);
} }
END OBJ(totalup, INFO_NET) END OBJ(totalup, INFO_NET)
obj->data.net = get_net_stat(arg); obj->data.net = get_net_stat(arg, obj, free_at_crash);
if (arg) { if (arg) {
obj->data.net = get_net_stat(arg); obj->data.net = get_net_stat(arg, obj, free_at_crash);
} else { } else {
// default to DEFAULTNETDEV // default to DEFAULTNETDEV
char *buf = strndup(DEFAULTNETDEV, text_buffer_size); char *buf = strndup(DEFAULTNETDEV, text_buffer_size);
obj->data.net = get_net_stat(buf); obj->data.net = get_net_stat(buf, obj, free_at_crash);
free(buf); free(buf);
} }
END OBJ(updates, 0) END OBJ(updates, 0)
END OBJ_IF(if_updatenr, 0) END OBJ_IF(if_updatenr, 0)
obj->data.ifblock.i = arg ? atoi(arg) : 0; obj->data.ifblock.i = arg ? atoi(arg) : 0;
if(obj->data.ifblock.i == 0) CRIT_ERR("if_updatenr needs a number above 0 as argument"); if(obj->data.ifblock.i == 0) CRIT_ERR(obj, free_at_crash, "if_updatenr needs a number above 0 as argument");
updatereset = obj->data.ifblock.i > updatereset ? obj->data.ifblock.i : updatereset; updatereset = obj->data.ifblock.i > updatereset ? obj->data.ifblock.i : updatereset;
END OBJ(alignr, 0) END OBJ(alignr, 0)
obj->data.i = arg ? atoi(arg) : 0; obj->data.i = arg ? atoi(arg) : 0;
@ -2523,20 +2523,20 @@ static struct text_object *construct_text_object(const char *s,
obj->data.i = arg ? atoi(arg) : 0; obj->data.i = arg ? atoi(arg) : 0;
END OBJ(upspeed, INFO_NET) END OBJ(upspeed, INFO_NET)
if (arg) { if (arg) {
obj->data.net = get_net_stat(arg); obj->data.net = get_net_stat(arg, obj, free_at_crash);
} else { } else {
// default to DEFAULTNETDEV // default to DEFAULTNETDEV
char *buf = strndup(DEFAULTNETDEV, text_buffer_size); char *buf = strndup(DEFAULTNETDEV, text_buffer_size);
obj->data.net = get_net_stat(buf); obj->data.net = get_net_stat(buf, obj, free_at_crash);
free(buf); free(buf);
} }
END OBJ(upspeedf, INFO_NET) END OBJ(upspeedf, INFO_NET)
if (arg) { if (arg) {
obj->data.net = get_net_stat(arg); obj->data.net = get_net_stat(arg, obj, free_at_crash);
} else { } else {
// default to DEFAULTNETDEV // default to DEFAULTNETDEV
char *buf = strndup(DEFAULTNETDEV, text_buffer_size); char *buf = strndup(DEFAULTNETDEV, text_buffer_size);
obj->data.net = get_net_stat(buf); obj->data.net = get_net_stat(buf, obj, free_at_crash);
free(buf); free(buf);
} }
@ -2549,7 +2549,7 @@ static struct text_object *construct_text_object(const char *s,
// default to DEFAULTNETDEV // default to DEFAULTNETDEV
buf = strndup(buf ? buf : DEFAULTNETDEV, text_buffer_size); buf = strndup(buf ? buf : DEFAULTNETDEV, text_buffer_size);
obj->data.net = get_net_stat(buf); obj->data.net = get_net_stat(buf, obj, free_at_crash);
free(buf); free(buf);
#endif #endif
END OBJ(uptime_short, INFO_UPTIME) END OBJ(uptime_short, INFO_UPTIME)
@ -2741,7 +2741,7 @@ static struct text_object *construct_text_object(const char *s,
if (info.audacious.max_title_len > 0) { if (info.audacious.max_title_len > 0) {
info.audacious.max_title_len++; info.audacious.max_title_len++;
} else { } else {
CRIT_ERR("audacious_title: invalid length argument"); CRIT_ERR(obj, free_at_crash, "audacious_title: invalid length argument");
} }
} }
END OBJ(audacious_length, INFO_AUDACIOUS) END OBJ(audacious_length, INFO_AUDACIOUS)
@ -2790,7 +2790,7 @@ static struct text_object *construct_text_object(const char *s,
init_eve(); init_eve();
} else { } else {
CRIT_ERR("eve needs arguments: <userid> <apikey> <characterid>"); CRIT_ERR(obj, free_at_crash, "eve needs arguments: <userid> <apikey> <characterid>");
} }
#endif #endif
#ifdef RSS #ifdef RSS
@ -2811,7 +2811,7 @@ static struct text_object *construct_text_object(const char *s,
init_rss_info(); init_rss_info();
} else { } else {
CRIT_ERR("rss needs arguments: <uri> <delay in minutes> <action> " CRIT_ERR(obj, free_at_crash, "rss needs arguments: <uri> <delay in minutes> <action> "
"[act_par] [spaces in front]"); "[act_par] [spaces in front]");
} }
#endif #endif
@ -2847,7 +2847,7 @@ static struct text_object *construct_text_object(const char *s,
obj->data.weather.interval = interval * 60; // convert to seconds obj->data.weather.interval = interval * 60; // convert to seconds
free(icao); free(icao);
} else { } else {
CRIT_ERR("weather needs arguments: <uri> <icao> <data_type> [interval in minutes]"); CRIT_ERR(obj, free_at_crash, "weather needs arguments: <uri> <icao> <data_type> [interval in minutes]");
} }
#endif #endif
#ifdef HAVE_LUA #ifdef HAVE_LUA
@ -2855,13 +2855,13 @@ static struct text_object *construct_text_object(const char *s,
if (arg) { if (arg) {
obj->data.s = strndup(arg, text_buffer_size); obj->data.s = strndup(arg, text_buffer_size);
} else { } else {
CRIT_ERR("lua needs arguments: <function name> [function parameters]"); CRIT_ERR(obj, free_at_crash, "lua needs arguments: <function name> [function parameters]");
} }
END OBJ(lua_parse, 0) END OBJ(lua_parse, 0)
if (arg) { if (arg) {
obj->data.s = strndup(arg, text_buffer_size); obj->data.s = strndup(arg, text_buffer_size);
} else { } else {
CRIT_ERR("lua_parse needs arguments: <function name> [function parameters]"); CRIT_ERR(obj, free_at_crash, "lua_parse needs arguments: <function name> [function parameters]");
} }
END OBJ(lua_bar, 0) END OBJ(lua_bar, 0)
SIZE_DEFAULTS(bar); SIZE_DEFAULTS(bar);
@ -2870,10 +2870,10 @@ static struct text_object *construct_text_object(const char *s,
if(arg) { if(arg) {
obj->data.s = strndup(arg, text_buffer_size); obj->data.s = strndup(arg, text_buffer_size);
} else { } else {
CRIT_ERR("lua_bar needs arguments: <height>,<width> <function name> [function parameters]"); CRIT_ERR(obj, free_at_crash, "lua_bar needs arguments: <height>,<width> <function name> [function parameters]");
} }
} else { } else {
CRIT_ERR("lua_bar needs arguments: <height>,<width> <function name> [function parameters]"); CRIT_ERR(obj, free_at_crash, "lua_bar needs arguments: <height>,<width> <function name> [function parameters]");
} }
#ifdef X11 #ifdef X11
END OBJ(lua_graph, 0) END OBJ(lua_graph, 0)
@ -2885,10 +2885,10 @@ static struct text_object *construct_text_object(const char *s,
if (buf) { if (buf) {
obj->data.s = buf; obj->data.s = buf;
} else { } else {
CRIT_ERR("lua_graph needs arguments: <function name> [height],[width] [gradient colour 1] [gradient colour 2] [scale] [-t] [-l]"); CRIT_ERR(obj, free_at_crash, "lua_graph needs arguments: <function name> [height],[width] [gradient colour 1] [gradient colour 2] [scale] [-t] [-l]");
} }
} else { } else {
CRIT_ERR("lua_graph needs arguments: <function name> [height],[width] [gradient colour 1] [gradient colour 2] [scale] [-t] [-l]"); CRIT_ERR(obj, free_at_crash, "lua_graph needs arguments: <function name> [height],[width] [gradient colour 1] [gradient colour 2] [scale] [-t] [-l]");
} }
END OBJ(lua_gauge, 0) END OBJ(lua_gauge, 0)
SIZE_DEFAULTS(gauge); SIZE_DEFAULTS(gauge);
@ -2897,10 +2897,10 @@ static struct text_object *construct_text_object(const char *s,
if (arg) { if (arg) {
obj->data.s = strndup(arg, text_buffer_size); obj->data.s = strndup(arg, text_buffer_size);
} else { } else {
CRIT_ERR("lua_gauge needs arguments: <height>,<width> <function name> [function parameters]"); CRIT_ERR(obj, free_at_crash, "lua_gauge needs arguments: <height>,<width> <function name> [function parameters]");
} }
} else { } else {
CRIT_ERR("lua_gauge needs arguments: <height>,<width> <function name> [function parameters]"); CRIT_ERR(obj, free_at_crash, "lua_gauge needs arguments: <height>,<width> <function name> [function parameters]");
} }
#endif /* X11 */ #endif /* X11 */
#endif /* HAVE_LUA */ #endif /* HAVE_LUA */
@ -2930,14 +2930,14 @@ static struct text_object *construct_text_object(const char *s,
obj->sub = malloc(sizeof(struct text_object)); obj->sub = malloc(sizeof(struct text_object));
extract_variable_text_internal(obj->sub, arg, 0); extract_variable_text_internal(obj->sub, arg, 0);
}else{ }else{
CRIT_ERR("blink needs a argument"); CRIT_ERR(obj, free_at_crash, "blink needs a argument");
} }
END OBJ(to_bytes, 0) END OBJ(to_bytes, 0)
if(arg) { if(arg) {
obj->sub = malloc(sizeof(struct text_object)); obj->sub = malloc(sizeof(struct text_object));
extract_variable_text_internal(obj->sub, arg, 0); extract_variable_text_internal(obj->sub, arg, 0);
}else{ }else{
CRIT_ERR("to_bytes needs a argument"); CRIT_ERR(obj, free_at_crash, "to_bytes needs a argument");
} }
END OBJ(scroll, 0) END OBJ(scroll, 0)
int n1, n2; int n1, n2;
@ -2952,7 +2952,7 @@ static struct text_object *construct_text_object(const char *s,
extract_variable_text_internal(obj->sub, extract_variable_text_internal(obj->sub,
obj->data.scroll.text, 0); obj->data.scroll.text, 0);
} else { } else {
CRIT_ERR("scroll needs arguments: <length> [<step>] <text>"); CRIT_ERR(obj, free_at_crash, "scroll needs arguments: <length> [<step>] <text>");
} }
END OBJ(combine, 0) END OBJ(combine, 0)
if(arg) { if(arg) {
@ -2998,17 +2998,17 @@ static struct text_object *construct_text_object(const char *s,
obj->sub->sub = malloc(sizeof(struct text_object)); obj->sub->sub = malloc(sizeof(struct text_object));
extract_variable_text_internal(obj->sub->sub, obj->data.combine.right, 0); extract_variable_text_internal(obj->sub->sub, obj->data.combine.right, 0);
} else { } else {
CRIT_ERR("combine needs arguments: <text1> <text2>"); CRIT_ERR(obj, free_at_crash, "combine needs arguments: <text1> <text2>");
} }
} else { } else {
CRIT_ERR("combine needs arguments: <text1> <text2>"); CRIT_ERR(obj, free_at_crash, "combine needs arguments: <text1> <text2>");
} }
#ifdef NVIDIA #ifdef NVIDIA
END OBJ(nvidia, 0) END OBJ(nvidia, 0)
if (!arg) { if (!arg) {
CRIT_ERR("nvidia needs an argument\n"); CRIT_ERR(obj, free_at_crash, "nvidia needs an argument\n");
} else if (set_nvidia_type(&obj->data.nvidia, arg)) { } else if (set_nvidia_type(&obj->data.nvidia, arg)) {
CRIT_ERR("nvidia: invalid argument" CRIT_ERR(obj, free_at_crash, "nvidia: invalid argument"
" specified: '%s'\n", arg); " specified: '%s'\n", arg);
} }
#endif /* NVIDIA */ #endif /* NVIDIA */
@ -3019,13 +3019,13 @@ static struct text_object *construct_text_object(const char *s,
char host[64]; char host[64];
int port; int port;
if (sscanf(arg, "%63s %d", host, &port) != 2) { if (sscanf(arg, "%63s %d", host, &port) != 2) {
CRIT_ERR("apcupsd needs arguments: <host> <port>"); CRIT_ERR(obj, free_at_crash, "apcupsd needs arguments: <host> <port>");
} else { } else {
info.apcupsd.port = htons(port); info.apcupsd.port = htons(port);
strncpy(info.apcupsd.host, host, sizeof(info.apcupsd.host)); strncpy(info.apcupsd.host, host, sizeof(info.apcupsd.host));
} }
} else { } else {
CRIT_ERR("apcupsd needs arguments: <host> <port>"); CRIT_ERR(obj, free_at_crash, "apcupsd needs arguments: <host> <port>");
} }
END OBJ(apcupsd_name, INFO_APCUPSD) END OBJ(apcupsd_name, INFO_APCUPSD)
END OBJ(apcupsd_model, INFO_APCUPSD) END OBJ(apcupsd_model, INFO_APCUPSD)
@ -3237,7 +3237,7 @@ static char *find_and_replace_templates(const char *inbuf)
*(p - 1) = '\0'; *(p - 1) = '\0';
} else { } else {
// we ran into the end of string without finding a closing }, bark // we ran into the end of string without finding a closing }, bark
CRIT_ERR("cannot find a closing '}' in template expansion"); CRIT_ERR(NULL, NULL, "cannot find a closing '}' in template expansion");
} }
} else { } else {
templ = p + 1; templ = p + 1;
@ -3440,7 +3440,7 @@ static int extract_variable_text_internal(struct text_object *retval, const char
obj = construct_text_object(buf, arg, obj = construct_text_object(buf, arg,
line, allow_threaded, line, allow_threaded,
&ifblock_opaque); &ifblock_opaque, orig_p);
if (obj != NULL) { if (obj != NULL) {
append_object(retval, obj); append_object(retval, obj);
} }
@ -3869,7 +3869,7 @@ static void generate_text_internal(char *p, int p_max_size,
if (obj->data.cpu_index > info.cpu_count) { if (obj->data.cpu_index > info.cpu_count) {
ERR("obj->data.cpu_index %i info.cpu_count %i", ERR("obj->data.cpu_index %i info.cpu_count %i",
obj->data.cpu_index, info.cpu_count); obj->data.cpu_index, info.cpu_count);
CRIT_ERR("attempting to use more CPUs than you have!"); CRIT_ERR(NULL, NULL, "attempting to use more CPUs than you have!");
} }
percent_print(p, p_max_size, percent_print(p, p_max_size,
round_to_int(cur->cpu_usage[obj->data.cpu_index] * 100.0)); round_to_int(cur->cpu_usage[obj->data.cpu_index] * 100.0));
@ -6992,7 +6992,7 @@ static void main_loop(void)
#ifdef SIGNAL_BLOCKING #ifdef SIGNAL_BLOCKING
/* block signals. we will inspect for pending signals later */ /* block signals. we will inspect for pending signals later */
if (sigprocmask(SIG_BLOCK, &newmask, &oldmask) < 0) { if (sigprocmask(SIG_BLOCK, &newmask, &oldmask) < 0) {
CRIT_ERR("unable to sigprocmask()"); CRIT_ERR(NULL, NULL, "unable to sigprocmask()");
} }
#endif #endif
@ -7300,7 +7300,7 @@ static void main_loop(void)
#ifdef SIGNAL_BLOCKING #ifdef SIGNAL_BLOCKING
/* unblock signals of interest and let handler fly */ /* unblock signals of interest and let handler fly */
if (sigprocmask(SIG_SETMASK, &oldmask, NULL) < 0) { if (sigprocmask(SIG_SETMASK, &oldmask, NULL) < 0) {
CRIT_ERR("unable to sigprocmask()"); CRIT_ERR(NULL, NULL, "unable to sigprocmask()");
} }
#endif #endif
@ -7395,7 +7395,7 @@ static void main_loop(void)
g_signal_pending = 0; g_signal_pending = 0;
} }
clean_up(); clean_up(NULL, NULL);
#ifdef HAVE_SYS_INOTIFY_H #ifdef HAVE_SYS_INOTIFY_H
if (inotify_fd != -1) { if (inotify_fd != -1) {
@ -7486,9 +7486,15 @@ static void reload_config(void)
} }
} }
void clean_up(void) void clean_up(void *memtofree1, void* memtofree2)
{ {
int i; int i;
if(memtofree1) {
free(memtofree1);
}
if(memtofree2) {
free(memtofree2);
}
timed_thread_destroy_registered_threads(); timed_thread_destroy_registered_threads();
if (info.cpu_usage) { if (info.cpu_usage) {
@ -8642,7 +8648,7 @@ static void load_config_file(const char *f)
} }
fclose(fp); fclose(fp);
if (strlen(global_text) < 1) { if (strlen(global_text) < 1) {
CRIT_ERR("no text supplied in configuration; exiting"); CRIT_ERR(NULL, NULL, "no text supplied in configuration; exiting");
} }
global_text_lines = line + 1; global_text_lines = line + 1;
return; return;
@ -8762,7 +8768,7 @@ static void load_config_file(const char *f)
info.music_player_interval = update_interval; info.music_player_interval = update_interval;
} }
if (!global_text) { // didn't supply any text if (!global_text) { // didn't supply any text
CRIT_ERR("missing text block in configuration; exiting"); CRIT_ERR(NULL, NULL, "missing text block in configuration; exiting");
} }
} }
@ -9148,7 +9154,7 @@ int main(int argc, char **argv)
ERR("no readable personal or system-wide config file found," ERR("no readable personal or system-wide config file found,"
" using builtin default"); " using builtin default");
#else #else
CRIT_ERR("no readable personal or system-wide config file found"); CRIT_ERR(NULL, NULL, "no readable personal or system-wide config file found");
#endif /* ! CONF_OUTPUT */ #endif /* ! CONF_OUTPUT */
} }
} }
@ -9187,7 +9193,7 @@ int main(int argc, char **argv)
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
if ((kd = kvm_open("/dev/null", "/dev/null", "/dev/null", O_RDONLY, if ((kd = kvm_open("/dev/null", "/dev/null", "/dev/null", O_RDONLY,
"kvm_open")) == NULL) { "kvm_open")) == NULL) {
CRIT_ERR("cannot read kvm"); CRIT_ERR(NULL, NULL, "cannot read kvm");
} }
#endif #endif

View File

@ -67,7 +67,7 @@ int add_font(const char *data_in)
return 0; return 0;
} }
if (font_count > MAX_FONTS) { if (font_count > MAX_FONTS) {
CRIT_ERR("you don't need that many fonts, sorry."); CRIT_ERR(NULL, NULL, "you don't need that many fonts, sorry.");
} }
font_count++; font_count++;
if (font_count == 0) { if (font_count == 0) {
@ -76,14 +76,14 @@ int add_font(const char *data_in)
} }
if ((fonts = (struct font_list *) malloc(sizeof(struct font_list))) if ((fonts = (struct font_list *) malloc(sizeof(struct font_list)))
== NULL) { == NULL) {
CRIT_ERR("malloc"); CRIT_ERR(NULL, NULL, "malloc");
} }
memset(fonts, 0, sizeof(struct font_list)); memset(fonts, 0, sizeof(struct font_list));
} }
fonts = realloc(fonts, (sizeof(struct font_list) * (font_count + 1))); fonts = realloc(fonts, (sizeof(struct font_list) * (font_count + 1)));
memset(&fonts[font_count], 0, sizeof(struct font_list)); memset(&fonts[font_count], 0, sizeof(struct font_list));
if (fonts == NULL) { if (fonts == NULL) {
CRIT_ERR("realloc in add_font"); CRIT_ERR(NULL, NULL, "realloc in add_font");
} }
// must account for null terminator // must account for null terminator
if (strlen(data_in) < DEFAULT_TEXT_BUFFER_SIZE) { if (strlen(data_in) < DEFAULT_TEXT_BUFFER_SIZE) {
@ -92,7 +92,7 @@ int add_font(const char *data_in)
fonts[font_count].font_alpha = 0xffff; fonts[font_count].font_alpha = 0xffff;
#endif #endif
} else { } else {
CRIT_ERR("Oops...looks like something overflowed in add_font()."); CRIT_ERR(NULL, NULL, "Oops...looks like something overflowed in add_font().");
} }
return font_count; return font_count;
} }
@ -105,7 +105,7 @@ void set_first_font(const char *data_in)
if (font_count < 0) { if (font_count < 0) {
if ((fonts = (struct font_list *) malloc(sizeof(struct font_list))) if ((fonts = (struct font_list *) malloc(sizeof(struct font_list)))
== NULL) { == NULL) {
CRIT_ERR("malloc"); CRIT_ERR(NULL, NULL, "malloc");
} }
memset(fonts, 0, sizeof(struct font_list)); memset(fonts, 0, sizeof(struct font_list));
font_count++; font_count++;
@ -180,7 +180,7 @@ void load_fonts(void)
ERR("can't load Xft font '%s'", "courier-12"); ERR("can't load Xft font '%s'", "courier-12");
if ((fonts[i].font = XLoadQueryFont(display, "fixed")) == NULL) { if ((fonts[i].font = XLoadQueryFont(display, "fixed")) == NULL) {
CRIT_ERR("can't load font '%s'", "fixed"); CRIT_ERR(NULL, NULL, "can't load font '%s'", "fixed");
} }
use_xft = 0; use_xft = 0;
@ -191,7 +191,7 @@ void load_fonts(void)
if (!fonts[i].font && (fonts[i].font = XLoadQueryFont(display, fonts[i].name)) == NULL) { if (!fonts[i].font && (fonts[i].font = XLoadQueryFont(display, fonts[i].name)) == NULL) {
ERR("can't load font '%s'", fonts[i].name); ERR("can't load font '%s'", fonts[i].name);
if ((fonts[i].font = XLoadQueryFont(display, "fixed")) == NULL) { if ((fonts[i].font = XLoadQueryFont(display, "fixed")) == NULL) {
CRIT_ERR("can't load font '%s'", "fixed"); CRIT_ERR(NULL, NULL, "can't load font '%s'", "fixed");
} }
} }
} }

View File

@ -199,7 +199,7 @@ void update_net_stats(void)
} }
for (ifa = ifap; ifa; ifa = ifa->ifa_next) { for (ifa = ifap; ifa; ifa = ifa->ifa_next) {
ns = get_net_stat((const char *) ifa->ifa_name); ns = get_net_stat((const char *) ifa->ifa_name, NULL, NULL);
if (ifa->ifa_flags & IFF_UP) { if (ifa->ifa_flags & IFF_UP) {
struct ifaddrs *iftmp; struct ifaddrs *iftmp;
@ -614,7 +614,7 @@ void update_wifi_stats(void)
} }
for (ifa = ifap; ifa; ifa = ifa->ifa_next) { for (ifa = ifap; ifa; ifa = ifa->ifa_next) {
ns = get_net_stat((const char *) ifa->ifa_name); ns = get_net_stat((const char *) ifa->ifa_name, NULL, NULL);
s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);

View File

@ -162,13 +162,13 @@ void get_fs_type(const char *path, char *result)
fseek(mtab, 0, SEEK_SET); fseek(mtab, 0, SEEK_SET);
slash = strrchr(search_path, '/'); slash = strrchr(search_path, '/');
if (slash == NULL) if (slash == NULL)
CRIT_ERR("invalid path '%s'", path); CRIT_ERR(NULL, NULL, "invalid path '%s'", path);
if (strlen(slash) == 1) /* trailing slash */ if (strlen(slash) == 1) /* trailing slash */
*(slash) = '\0'; *(slash) = '\0';
else if (strlen(slash) > 1) else if (strlen(slash) > 1)
*(slash + 1) = '\0'; *(slash + 1) = '\0';
else else
CRIT_ERR("found a crack in the matrix!"); CRIT_ERR(NULL, NULL, "found a crack in the matrix!");
} while (strlen(search_path) > 0); } while (strlen(search_path) > 0);
free(search_path); free(search_path);

View File

@ -349,7 +349,7 @@ void update_net_stats(void)
*p = '\0'; *p = '\0';
p++; p++;
ns = get_net_stat(s); ns = get_net_stat(s, NULL, NULL);
ns->up = 1; ns->up = 1;
memset(&(ns->addr.sa_data), 0, 14); memset(&(ns->addr.sa_data), 0, 14);
@ -393,7 +393,7 @@ void update_net_stats(void)
break; break;
ns2 = get_net_stat( ns2 = get_net_stat(
((struct ifreq *) conf.ifc_buf)[k].ifr_ifrn.ifrn_name); ((struct ifreq *) conf.ifc_buf)[k].ifr_ifrn.ifrn_name, NULL, NULL);
ns2->addr = ((struct ifreq *) conf.ifc_buf)[k].ifr_ifru.ifru_addr; ns2->addr = ((struct ifreq *) conf.ifc_buf)[k].ifr_ifru.ifru_addr;
sprintf(temp_addr, "%u.%u.%u.%u, ", sprintf(temp_addr, "%u.%u.%u.%u, ",
ns2->addr.sa_data[2] & 255, ns2->addr.sa_data[2] & 255,
@ -765,7 +765,7 @@ void update_i8k(void)
i8k_procbuf = (char *) malloc(128 * sizeof(char)); i8k_procbuf = (char *) malloc(128 * sizeof(char));
} }
if ((fp = fopen(PROC_I8K, "r")) == NULL) { if ((fp = fopen(PROC_I8K, "r")) == NULL) {
CRIT_ERR("/proc/i8k doesn't exist! use insmod to make sure the kernel " CRIT_ERR(NULL, NULL, "/proc/i8k doesn't exist! use insmod to make sure the kernel "
"driver is loaded..."); "driver is loaded...");
} }
@ -888,7 +888,7 @@ int open_sysfs_sensor(const char *dir, const char *dev, const char *type, int n,
/* open file */ /* open file */
fd = open(path, O_RDONLY); fd = open(path, O_RDONLY);
if (fd < 0) { if (fd < 0) {
CRIT_ERR("can't open '%s': %s\nplease check your device or remove this " CRIT_ERR(NULL, NULL, "can't open '%s': %s\nplease check your device or remove this "
"var from "PACKAGE_NAME, path, strerror(errno)); "var from "PACKAGE_NAME, path, strerror(errno));
} }

View File

@ -25,7 +25,7 @@
* *
*/ */
void clean_up(void); void clean_up(void *memtofree1, void* memtofree2);
#ifndef _LOGGING_H #ifndef _LOGGING_H
#define _LOGGING_H #define _LOGGING_H
@ -37,8 +37,8 @@ void clean_up(void);
} }
/* critical error */ /* critical error */
#define CRIT_ERR(...) \ #define CRIT_ERR(memtofree1, memtofree2, ...) \
{ ERR(__VA_ARGS__); clean_up(); exit(EXIT_FAILURE); } { ERR(__VA_ARGS__); clean_up(memtofree1, memtofree2); exit(EXIT_FAILURE); }
/* debugging output */ /* debugging output */
extern int global_debug_level; extern int global_debug_level;

View File

@ -137,7 +137,7 @@ void mbox_scan(char *args, char *output, size_t max_len)
free(copy_args); free(copy_args);
} }
if (strlen(mbox_mail_spool) < 1) { if (strlen(mbox_mail_spool) < 1) {
CRIT_ERR("Usage: ${mboxscan [-n <number of messages to print>] " CRIT_ERR(NULL, NULL, "Usage: ${mboxscan [-n <number of messages to print>] "
"[-fw <from width>] [-sw <subject width>] " "[-fw <from width>] [-sw <subject width>] "
"[-t <delay in sec> mbox]}"); "[-t <delay in sec> mbox]}");
} }
@ -148,7 +148,7 @@ void mbox_scan(char *args, char *output, size_t max_len)
} }
if (stat(mbox_mail_spool, &statbuf)) { if (stat(mbox_mail_spool, &statbuf)) {
CRIT_ERR("can't stat %s: %s", mbox_mail_spool, strerror(errno)); CRIT_ERR(NULL, NULL, "can't stat %s: %s", mbox_mail_spool, strerror(errno));
} }
args_ok = 1; /* args-computing necessary only once */ args_ok = 1; /* args-computing necessary only once */
} }

View File

@ -186,7 +186,7 @@ void update_net_stats()
long long last_recv, last_trans; long long last_recv, last_trans;
kvm_read(nkd, (u_long) ifnetaddr, (void *) &ifnet, sizeof(ifnet)); kvm_read(nkd, (u_long) ifnetaddr, (void *) &ifnet, sizeof(ifnet));
ns = get_net_stat(ifnet.if_xname); ns = get_net_stat(ifnet.if_xname, NULL, NULL);
ns->up = 1; ns->up = 1;
last_recv = ns->recv; last_recv = ns->recv;
last_trans = ns->trans; last_trans = ns->trans;

View File

@ -211,7 +211,7 @@ void update_net_stats()
} }
for (ifa = ifap; ifa; ifa = ifa->ifa_next) { for (ifa = ifap; ifa; ifa = ifa->ifa_next) {
ns = get_net_stat((const char *) ifa->ifa_name); ns = get_net_stat((const char *) ifa->ifa_name, NULL, NULL);
if (ifa->ifa_flags & IFF_UP) { if (ifa->ifa_flags & IFF_UP) {
struct ifaddrs *iftmp; struct ifaddrs *iftmp;

View File

@ -65,7 +65,7 @@ void get_sony_fanspeed(char *p_client_buffer, size_t client_buffer_size)
} }
} }
} else { } else {
CRIT_ERR("can't open '%s': %s\nEnable sony support or remove " CRIT_ERR(NULL, NULL, "can't open '%s': %s\nEnable sony support or remove "
"sony* from your "PACKAGE_NAME" config file.", "sony* from your "PACKAGE_NAME" config file.",
fan, strerror(errno)); fan, strerror(errno));
} }

View File

@ -190,7 +190,7 @@ char *scan_graph(const char *args, int *w, int *h,
static struct special_t *new_special(char *buf, enum special_types t) static struct special_t *new_special(char *buf, enum special_types t)
{ {
if (special_count >= max_specials) { if (special_count >= max_specials) {
CRIT_ERR("too many special things in text"); CRIT_ERR(NULL, NULL, "too many special things in text");
} }
buf[0] = SPECIAL_CHAR; buf[0] = SPECIAL_CHAR;

View File

@ -34,19 +34,19 @@ int tcp_portmon_init(const char *arg, struct tcp_port_monitor_data *pmd)
connection_index = 0; connection_index = 0;
/* massive argument checking */ /* massive argument checking */
if (!arg) { if (!arg) {
CRIT_ERR("tcp_portmon: needs arguments"); CRIT_ERR(NULL, NULL, "tcp_portmon: needs arguments");
} }
argc = sscanf(arg, "%d %d %31s %d", &port_begin, &port_end, itembuf, argc = sscanf(arg, "%d %d %31s %d", &port_begin, &port_end, itembuf,
&connection_index); &connection_index);
if ((argc != 3) && (argc != 4)) { if ((argc != 3) && (argc != 4)) {
CRIT_ERR("tcp_portmon: requires 3 or 4 arguments"); CRIT_ERR(NULL, NULL, "tcp_portmon: requires 3 or 4 arguments");
} }
if ((port_begin < 1) || (port_begin > 65535) || (port_end < 1) if ((port_begin < 1) || (port_begin > 65535) || (port_end < 1)
|| (port_end > 65535)) { || (port_end > 65535)) {
CRIT_ERR("tcp_portmon: port values must be from 1 to 65535"); CRIT_ERR(NULL, NULL, "tcp_portmon: port values must be from 1 to 65535");
} }
if (port_begin > port_end) { if (port_begin > port_end) {
CRIT_ERR("tcp_portmon: starting port must be <= ending port"); CRIT_ERR(NULL, NULL, "tcp_portmon: starting port must be <= ending port");
} }
if (strncmp(itembuf, "count", 31) == EQUAL) { if (strncmp(itembuf, "count", 31) == EQUAL) {
item = COUNT; item = COUNT;
@ -67,14 +67,14 @@ int tcp_portmon_init(const char *arg, struct tcp_port_monitor_data *pmd)
} else if (strncmp(itembuf, "lservice", 31) == EQUAL) { } else if (strncmp(itembuf, "lservice", 31) == EQUAL) {
item = LOCALSERVICE; item = LOCALSERVICE;
} else { } else {
CRIT_ERR("tcp_portmon: invalid item specified"); CRIT_ERR(NULL, NULL, "tcp_portmon: invalid item specified");
} }
if ((argc == 3) && (item != COUNT)) { if ((argc == 3) && (item != COUNT)) {
CRIT_ERR("tcp_portmon: 3 argument form valid only for \"count\" " CRIT_ERR(NULL, NULL, "tcp_portmon: 3 argument form valid only for \"count\" "
"item"); "item");
} }
if ((argc == 4) && (connection_index < 0)) { if ((argc == 4) && (connection_index < 0)) {
CRIT_ERR("tcp_portmon: connection index must be non-negative"); CRIT_ERR(NULL, NULL, "tcp_portmon: connection index must be non-negative");
} }
/* ok, args looks good. save the text object data */ /* ok, args looks good. save the text object data */
pmd->port_range_begin = (in_port_t) port_begin; pmd->port_range_begin = (in_port_t) port_begin;
@ -87,7 +87,7 @@ int tcp_portmon_init(const char *arg, struct tcp_port_monitor_data *pmd)
if (!pmc) { if (!pmc) {
pmc = create_tcp_port_monitor_collection(); pmc = create_tcp_port_monitor_collection();
if (!pmc) { if (!pmc) {
CRIT_ERR("tcp_portmon: unable to create port monitor " CRIT_ERR(NULL, NULL, "tcp_portmon: unable to create port monitor "
"collection"); "collection");
} }
} }
@ -99,11 +99,11 @@ int tcp_portmon_init(const char *arg, struct tcp_port_monitor_data *pmd)
port_end, &pma); port_end, &pma);
if (!p_monitor) { if (!p_monitor) {
CRIT_ERR("tcp_portmon: unable to create port monitor"); CRIT_ERR(NULL, NULL, "tcp_portmon: unable to create port monitor");
} }
/* add the newly created monitor to the collection */ /* add the newly created monitor to the collection */
if (insert_tcp_port_monitor_into_collection(pmc, p_monitor) != 0) { if (insert_tcp_port_monitor_into_collection(pmc, p_monitor) != 0) {
CRIT_ERR("tcp_portmon: unable to add port monitor to " CRIT_ERR(NULL, NULL, "tcp_portmon: unable to add port monitor to "
"collection"); "collection");
} }
} }

View File

@ -50,7 +50,7 @@ int append_object(struct text_object *root, struct text_object *obj)
if (end) { if (end) {
if (end->next) if (end->next)
CRIT_ERR("huston, we have a lift-off"); CRIT_ERR(NULL, NULL, "huston, we have a lift-off");
end->next = obj; end->next = obj;
} else { } else {
root->next = obj; root->next = obj;
@ -101,7 +101,7 @@ static int push_ifblock(struct ifblock_stack_obj **ifblock_stack_top,
switch (type) { switch (type) {
case IFBLOCK_ENDIF: case IFBLOCK_ENDIF:
if (!(*ifblock_stack_top)) if (!(*ifblock_stack_top))
CRIT_ERR("got an endif without matching if"); CRIT_ERR(NULL, NULL, "got an endif without matching if");
(*ifblock_stack_top)->obj->data.ifblock.next = obj; (*ifblock_stack_top)->obj->data.ifblock.next = obj;
/* if there's some else in between, remove and free it */ /* if there's some else in between, remove and free it */
if ((*ifblock_stack_top)->type == IFBLOCK_ELSE) { if ((*ifblock_stack_top)->type == IFBLOCK_ELSE) {
@ -116,7 +116,7 @@ static int push_ifblock(struct ifblock_stack_obj **ifblock_stack_top,
break; break;
case IFBLOCK_ELSE: case IFBLOCK_ELSE:
if (!(*ifblock_stack_top)) if (!(*ifblock_stack_top))
CRIT_ERR("got an else without matching if"); CRIT_ERR(NULL, NULL, "got an else without matching if");
(*ifblock_stack_top)->obj->data.ifblock.next = obj; (*ifblock_stack_top)->obj->data.ifblock.next = obj;
/* fall through */ /* fall through */
case IFBLOCK_IF: case IFBLOCK_IF:
@ -127,7 +127,7 @@ static int push_ifblock(struct ifblock_stack_obj **ifblock_stack_top,
*ifblock_stack_top = stackobj; *ifblock_stack_top = stackobj;
break; break;
default: default:
CRIT_ERR("push_ifblock() missuse detected!"); CRIT_ERR(NULL, NULL, "push_ifblock() missuse detected!");
} }
return 0; return 0;
} }

View File

@ -72,7 +72,7 @@ void init_X11(const char *disp)
{ {
if (!display) { if (!display) {
if ((display = XOpenDisplay(disp)) == NULL) { if ((display = XOpenDisplay(disp)) == NULL) {
CRIT_ERR("can't open display: %s", XDisplayName(0)); CRIT_ERR(NULL, NULL, "can't open display: %s", XDisplayName(0));
} }
} }