1
0
mirror of https://github.com/Llewellynvdm/conky.git synced 2024-11-18 02:55:12 +00:00

Su8 master (#581)

* common.cc,diskio.cc: Display units in "SI" as per https://github.com/brndnmtthws/conky/issues/86 request

* Make the mem* and swap* variables to accept additional argument to print the usage in SI units

* common.cc: Fix indentation

* core.cc: Make the strndup() function call as manifest constant

* Add two more formal parameters to "human_readable()"

* diskio.cc: Restore the multiply of 1024LL

* Move the base multiplying into standalone function

* Use the "apply_base_multiplier()" function where necessary
This commit is contained in:
Brenden Matthews 2018-08-07 12:09:34 -04:00 committed by GitHub
parent 8aa9c819f3
commit c9d03fbaa1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 77 additions and 55 deletions

View File

@ -48,6 +48,7 @@
#include "temphelper.h" #include "temphelper.h"
#include "timeinfo.h" #include "timeinfo.h"
#include "top.h" #include "top.h"
#include "misc.h"
/* check for OS and include appropriate headers */ /* check for OS and include appropriate headers */
#if defined(__linux__) #if defined(__linux__)
@ -389,8 +390,7 @@ double cpu_barval(struct text_object *obj) {
#define PRINT_HR_GENERATOR(name) \ #define PRINT_HR_GENERATOR(name) \
void print_##name(struct text_object *obj, char *p, int p_max_size) { \ void print_##name(struct text_object *obj, char *p, int p_max_size) { \
(void)obj; \ human_readable(apply_base_multiplier(obj->data.s, info.name), p, p_max_size); \
human_readable(info.name * 1024, p, p_max_size); \
} }
PRINT_HR_GENERATOR(mem) PRINT_HR_GENERATOR(mem)
@ -506,13 +506,11 @@ void print_threads(struct text_object *obj, char *p, int p_max_size) {
} }
void print_buffers(struct text_object *obj, char *p, int p_max_size) { void print_buffers(struct text_object *obj, char *p, int p_max_size) {
(void)obj; human_readable(apply_base_multiplier(obj->data.s, info.buffers), p, p_max_size);
human_readable(info.buffers * 1024, p, p_max_size);
} }
void print_cached(struct text_object *obj, char *p, int p_max_size) { void print_cached(struct text_object *obj, char *p, int p_max_size) {
(void)obj; human_readable(apply_base_multiplier(obj->data.s, info.cached), p, p_max_size);
human_readable(info.cached * 1024, p, p_max_size);
} }
void print_evaluate(struct text_object *obj, char *p, int p_max_size) { void print_evaluate(struct text_object *obj, char *p, int p_max_size) {

View File

@ -121,6 +121,8 @@
#include "darwin.h" #include "darwin.h"
#endif #endif
#define STRNDUP_ARG strndup(arg ? arg : "", text_buffer_size.get(*state))
#include <cctype> #include <cctype>
#include <cstring> #include <cstring>
@ -661,8 +663,12 @@ struct text_object *construct_text_object(char *s, const char *arg, long line,
END OBJ(obsd_vendor, 0) obj->callbacks.print = &get_obsd_vendor; END OBJ(obsd_vendor, 0) obj->callbacks.print = &get_obsd_vendor;
END OBJ(obsd_product, 0) obj->callbacks.print = &get_obsd_product; END OBJ(obsd_product, 0) obj->callbacks.print = &get_obsd_product;
#endif /* __OpenBSD__ */ #endif /* __OpenBSD__ */
END OBJ(buffers, &update_meminfo) obj->callbacks.print = &print_buffers; END OBJ(buffers, &update_meminfo) obj->data.s = STRNDUP_ARG;
END OBJ(cached, &update_meminfo) obj->callbacks.print = &print_cached; obj->callbacks.print = &print_buffers;
obj->callbacks.free = &gen_free_opaque;
END OBJ(cached, &update_meminfo) obj->data.s = STRNDUP_ARG;
obj->callbacks.print = &print_cached;
obj->callbacks.free = &gen_free_opaque;
#define SCAN_CPU(__arg, __var) \ #define SCAN_CPU(__arg, __var) \
{ \ { \
int __offset = 0; \ int __offset = 0; \
@ -802,13 +808,11 @@ struct text_object *construct_text_object(char *s, const char *arg, long line,
obj->callbacks.iftest = &gen_false_iftest; obj->callbacks.iftest = &gen_false_iftest;
END OBJ(endif, nullptr) obj_be_ifblock_endif(ifblock_opaque, obj); END OBJ(endif, nullptr) obj_be_ifblock_endif(ifblock_opaque, obj);
obj->callbacks.print = &gen_print_nothing; obj->callbacks.print = &gen_print_nothing;
END OBJ(eval, nullptr) obj->data.s = END OBJ(eval, nullptr) obj->data.s = STRNDUP_ARG;
strndup(arg != nullptr ? arg : "", text_buffer_size.get(*state));
obj->callbacks.print = &print_evaluate; obj->callbacks.print = &print_evaluate;
obj->callbacks.free = &gen_free_opaque; obj->callbacks.free = &gen_free_opaque;
#if defined(BUILD_IMLIB2) && defined(BUILD_X11) #if defined(BUILD_IMLIB2) && defined(BUILD_X11)
END OBJ(image, nullptr) obj->data.s = END OBJ(image, nullptr) obj->data.s = STRNDUP_ARG;
strndup(arg != nullptr ? arg : "", text_buffer_size.get(*state));
obj->callbacks.print = &print_image_callback; obj->callbacks.print = &print_image_callback;
obj->callbacks.free = &gen_free_opaque; obj->callbacks.free = &gen_free_opaque;
#endif /* BUILD_IMLIB2 */ #endif /* BUILD_IMLIB2 */
@ -820,8 +824,7 @@ struct text_object *construct_text_object(char *s, const char *arg, long line,
scan_no_update(obj, arg); scan_no_update(obj, arg);
obj->callbacks.print = &print_no_update; obj->callbacks.print = &print_no_update;
obj->callbacks.free = &free_no_update; obj->callbacks.free = &free_no_update;
END OBJ(cat, 0) obj->data.s = END OBJ(cat, 0) obj->data.s = STRNDUP_ARG;
strndup(arg ? arg : "", text_buffer_size.get(*state));
obj->callbacks.print = &print_cat; obj->callbacks.print = &print_cat;
obj->callbacks.free = &gen_free_opaque; obj->callbacks.free = &gen_free_opaque;
@ -833,8 +836,7 @@ struct text_object *construct_text_object(char *s, const char *arg, long line,
END OBJ(mouse_speed, 0) obj->callbacks.print = &print_mouse_speed; END OBJ(mouse_speed, 0) obj->callbacks.print = &print_mouse_speed;
#endif /* BUILD_X11 */ #endif /* BUILD_X11 */
END OBJ(password, 0) obj->data.s = END OBJ(password, 0) obj->data.s = STRNDUP_ARG;
strndup(arg ? arg : "", text_buffer_size.get(*state));
obj->callbacks.print = &print_password; obj->callbacks.print = &print_password;
obj->callbacks.free = &gen_free_opaque; obj->callbacks.free = &gen_free_opaque;
@ -842,13 +844,11 @@ struct text_object *construct_text_object(char *s, const char *arg, long line,
END OBJ(freq2, 0) obj->callbacks.print = &print_freq2; END OBJ(freq2, 0) obj->callbacks.print = &print_freq2;
#endif /* __x86_64__ */ #endif /* __x86_64__ */
END OBJ(cap, 0) obj->data.s = END OBJ(cap, 0) obj->data.s = STRNDUP_ARG;
strndup(arg ? arg : "", text_buffer_size.get(*state));
obj->callbacks.print = &print_cap; obj->callbacks.print = &print_cap;
obj->callbacks.free = &gen_free_opaque; obj->callbacks.free = &gen_free_opaque;
END OBJ(catp, 0) obj->data.s = END OBJ(catp, 0) obj->data.s = STRNDUP_ARG;
strndup(arg ? arg : "", text_buffer_size.get(*state));
obj->callbacks.print = &print_catp; obj->callbacks.print = &print_catp;
obj->callbacks.free = &gen_free_opaque; obj->callbacks.free = &gen_free_opaque;
END OBJ_ARG(exec, nullptr, "exec needs arguments: <command>") END OBJ_ARG(exec, nullptr, "exec needs arguments: <command>")
@ -1018,11 +1018,11 @@ struct text_object *construct_text_object(char *s, const char *arg, long line,
obj->callbacks.print = &print_head; obj->callbacks.print = &print_head;
obj->callbacks.free = &free_tailhead; obj->callbacks.free = &free_tailhead;
END OBJ_ARG(lines, nullptr, "lines needs an argument") obj->data.s = END OBJ_ARG(lines, nullptr, "lines needs an argument") obj->data.s =
strndup(arg, text_buffer_size.get(*state)); STRNDUP_ARG;
obj->callbacks.print = &print_lines; obj->callbacks.print = &print_lines;
obj->callbacks.free = &gen_free_opaque; obj->callbacks.free = &gen_free_opaque;
END OBJ_ARG(words, nullptr, "words needs a argument") obj->data.s = END OBJ_ARG(words, nullptr, "words needs a argument") obj->data.s =
strndup(arg, text_buffer_size.get(*state)); STRNDUP_ARG;
obj->callbacks.print = &print_words; obj->callbacks.print = &print_words;
obj->callbacks.free = &gen_free_opaque; obj->callbacks.free = &gen_free_opaque;
END OBJ(loadavg, &update_load_average) scan_loadavg_arg(obj, arg); END OBJ(loadavg, &update_load_average) scan_loadavg_arg(obj, arg);
@ -1036,28 +1036,27 @@ struct text_object *construct_text_object(char *s, const char *arg, long line,
extract_variable_text_internal(obj->sub, arg); extract_variable_text_internal(obj->sub, arg);
obj->callbacks.iftest = &check_if_match; obj->callbacks.iftest = &check_if_match;
END OBJ_IF_ARG(if_existing, nullptr, "if_existing needs an argument or two") END OBJ_IF_ARG(if_existing, nullptr, "if_existing needs an argument or two")
obj->data.s = strndup(arg, text_buffer_size.get(*state)); obj->data.s = STRNDUP_ARG;
obj->callbacks.iftest = &if_existing_iftest; obj->callbacks.iftest = &if_existing_iftest;
obj->callbacks.free = &gen_free_opaque; obj->callbacks.free = &gen_free_opaque;
#ifdef __linux__ #ifdef __linux__
END OBJ_IF_ARG(if_mounted, 0, "if_mounted needs an argument") obj->data.s = END OBJ_IF_ARG(if_mounted, 0, "if_mounted needs an argument") obj->data.s =
strndup(arg, text_buffer_size.get(*state)); STRNDUP_ARG;
obj->callbacks.iftest = &check_mount; obj->callbacks.iftest = &check_mount;
obj->callbacks.free = &gen_free_opaque; obj->callbacks.free = &gen_free_opaque;
END OBJ_IF_ARG(if_running, &update_top, "if_running needs an argument") END OBJ_IF_ARG(if_running, &update_top, "if_running needs an argument")
top_running = 1; top_running = 1;
obj->data.s = strndup(arg, text_buffer_size.get(*state)); obj->data.s = STRNDUP_ARG;
obj->callbacks.iftest = &if_running_iftest; obj->callbacks.iftest = &if_running_iftest;
obj->callbacks.free = &gen_free_opaque; obj->callbacks.free = &gen_free_opaque;
#elif defined(__APPLE__) && defined(__MACH__) #elif defined(__APPLE__) && defined(__MACH__)
END OBJ_IF_ARG(if_mounted, nullptr, "if_mounted needs an argument") END OBJ_IF_ARG(if_mounted, nullptr, "if_mounted needs an argument")
obj->data.s = strndup(arg, text_buffer_size.get(*state)); obj->data.s = STRNDUP_ARG;
obj->callbacks.iftest = &check_mount; obj->callbacks.iftest = &check_mount;
obj->callbacks.free = &gen_free_opaque; obj->callbacks.free = &gen_free_opaque;
/* System Integrity Protection */ /* System Integrity Protection */
END OBJ(sip_status, &get_sip_status) obj->data.s = END OBJ(sip_status, &get_sip_status) obj->data.s = STRNDUP_ARG;
strndup(arg != nullptr ? arg : "", text_buffer_size.get(*state));
obj->callbacks.print = &print_sip_status; obj->callbacks.print = &print_sip_status;
obj->callbacks.free = &gen_free_opaque; obj->callbacks.free = &gen_free_opaque;
#else #else
@ -1066,7 +1065,7 @@ struct text_object *construct_text_object(char *s, const char *arg, long line,
"if_running needs an argument") char buf[text_buffer_size.get(*state)]; "if_running needs an argument") char buf[text_buffer_size.get(*state)];
snprintf(buf, text_buffer_size.get(*state), "pidof %s >/dev/null", arg); snprintf(buf, text_buffer_size.get(*state), "pidof %s >/dev/null", arg);
obj->data.s = strndup(buf, text_buffer_size.get(*state)); obj->data.s = STRNDUP_ARG;
/* XXX: maybe use a different callback here */ /* XXX: maybe use a different callback here */
obj->callbacks.iftest = &if_running_iftest; obj->callbacks.iftest = &if_running_iftest;
#endif #endif
@ -1114,21 +1113,31 @@ struct text_object *construct_text_object(char *s, const char *arg, long line,
END OBJ(mboxscan, nullptr) parse_mboxscan_arg(obj, arg); END OBJ(mboxscan, nullptr) parse_mboxscan_arg(obj, arg);
obj->callbacks.print = &print_mboxscan; obj->callbacks.print = &print_mboxscan;
obj->callbacks.free = &free_mboxscan; obj->callbacks.free = &free_mboxscan;
END OBJ(mem, &update_meminfo) obj->callbacks.print = &print_mem; END OBJ(mem, &update_meminfo) obj->data.s = STRNDUP_ARG;
END OBJ(memwithbuffers, &update_meminfo) obj->callbacks.print = obj->callbacks.print = &print_mem;
&print_memwithbuffers; obj->callbacks.free = &gen_free_opaque;
END OBJ(memeasyfree, &update_meminfo) obj->callbacks.print = END OBJ(memwithbuffers, &update_meminfo) obj->data.s = STRNDUP_ARG;
&print_memeasyfree; obj->callbacks.print = &print_memwithbuffers;
END OBJ(memfree, &update_meminfo) obj->callbacks.print = &print_memfree; obj->callbacks.free = &gen_free_opaque;
END OBJ(memmax, &update_meminfo) obj->callbacks.print = &print_memmax; END OBJ(memeasyfree, &update_meminfo) obj->data.s = STRNDUP_ARG;
obj->callbacks.print = &print_memeasyfree;
obj->callbacks.free = &gen_free_opaque;
END OBJ(memfree, &update_meminfo) obj->data.s = STRNDUP_ARG;
obj->callbacks.print = &print_memfree;
obj->callbacks.free = &gen_free_opaque;
END OBJ(memmax, &update_meminfo) obj->data.s = STRNDUP_ARG;
obj->callbacks.print = &print_memmax;
obj->callbacks.free = &gen_free_opaque;
END OBJ(memperc, &update_meminfo) obj->callbacks.percentage = &mem_percentage; END OBJ(memperc, &update_meminfo) obj->callbacks.percentage = &mem_percentage;
#ifdef __linux__ #ifdef __linux__
END OBJ(memdirty, &update_meminfo) obj->callbacks.print = &print_memdirty; END OBJ(memdirty, &update_meminfo) obj->data.s = STRNDUP_ARG;
#endif obj->callbacks.print = &print_memdirty;
obj->callbacks.free = &gen_free_opaque;
#endif /* __linux__ */
#ifdef BUILD_X11 #ifdef BUILD_X11
END OBJ(memgauge, &update_meminfo) scan_gauge(obj, arg, 1); END OBJ(memgauge, &update_meminfo) scan_gauge(obj, arg, 1);
obj->callbacks.gaugeval = &mem_barval; obj->callbacks.gaugeval = &mem_barval;
#endif #endif /* BUILD_X11 */
END OBJ(membar, &update_meminfo) scan_bar(obj, arg, 1); END OBJ(membar, &update_meminfo) scan_bar(obj, arg, 1);
obj->callbacks.barval = &mem_barval; obj->callbacks.barval = &mem_barval;
END OBJ(memwithbuffersbar, &update_meminfo) scan_bar(obj, arg, 1); END OBJ(memwithbuffersbar, &update_meminfo) scan_bar(obj, arg, 1);
@ -1155,7 +1164,7 @@ struct text_object *construct_text_object(char *s, const char *arg, long line,
obj->callbacks.barval = &mixerr_barval; obj->callbacks.barval = &mixerr_barval;
END OBJ_IF(if_mixer_mute, 0) parse_mixer_arg(obj, arg); END OBJ_IF(if_mixer_mute, 0) parse_mixer_arg(obj, arg);
obj->callbacks.iftest = &check_mixer_muted; obj->callbacks.iftest = &check_mixer_muted;
#endif #endif /* HAVE_SOME_SOUNDCARD_H */
#ifdef BUILD_X11 #ifdef BUILD_X11
END OBJ(monitor, nullptr) obj->callbacks.print = &print_monitor; END OBJ(monitor, nullptr) obj->callbacks.print = &print_monitor;
END OBJ(monitor_number, nullptr) obj->callbacks.print = &print_monitor_number; END OBJ(monitor_number, nullptr) obj->callbacks.print = &print_monitor_number;
@ -1350,9 +1359,15 @@ struct text_object *construct_text_object(char *s, const char *arg, long line,
scan_stippled_hr(obj, arg); scan_stippled_hr(obj, arg);
obj->callbacks.print = &new_stippled_hr; obj->callbacks.print = &new_stippled_hr;
#endif /* BUILD_X11 */ #endif /* BUILD_X11 */
END OBJ(swap, &update_meminfo) obj->callbacks.print = &print_swap; END OBJ(swap, &update_meminfo) obj->data.s = STRNDUP_ARG;
END OBJ(swapfree, &update_meminfo) obj->callbacks.print = &print_swapfree; obj->callbacks.print = &print_swap;
END OBJ(swapmax, &update_meminfo) obj->callbacks.print = &print_swapmax; obj->callbacks.free = &gen_free_opaque;
END OBJ(swapfree, &update_meminfo) obj->data.s = STRNDUP_ARG;
obj->callbacks.print = &print_swapfree;
obj->callbacks.free = &gen_free_opaque;
END OBJ(swapmax, &update_meminfo) obj->data.s = STRNDUP_ARG;
obj->callbacks.print = &print_swapmax;
obj->callbacks.free = &gen_free_opaque;
END OBJ(swapperc, &update_meminfo) obj->callbacks.percentage = END OBJ(swapperc, &update_meminfo) obj->callbacks.percentage =
&swap_percentage; &swap_percentage;
END OBJ(swapbar, &update_meminfo) scan_bar(obj, arg, 1); END OBJ(swapbar, &update_meminfo) scan_bar(obj, arg, 1);
@ -1425,7 +1440,7 @@ struct text_object *construct_text_object(char *s, const char *arg, long line,
END OBJ(user_times, &update_users) obj->callbacks.print = &print_user_times; END OBJ(user_times, &update_users) obj->callbacks.print = &print_user_times;
obj->callbacks.free = &free_user_times; obj->callbacks.free = &free_user_times;
END OBJ_ARG(user_time, 0, "user time needs a console name as argument") END OBJ_ARG(user_time, 0, "user time needs a console name as argument")
obj->data.s = strndup(arg, text_buffer_size.get(*state)); obj->data.s = STRNDUP_ARG;
obj->callbacks.print = &print_user_time; obj->callbacks.print = &print_user_time;
obj->callbacks.free = &free_user_time; obj->callbacks.free = &free_user_time;
END OBJ(user_terms, &update_users) obj->callbacks.print = &print_user_terms; END OBJ(user_terms, &update_users) obj->callbacks.print = &print_user_terms;
@ -1458,24 +1473,24 @@ struct text_object *construct_text_object(char *s, const char *arg, long line,
obj->callbacks.free = &free_mail_obj; obj->callbacks.free = &free_mail_obj;
#ifdef BUILD_IBM #ifdef BUILD_IBM
END OBJ_ARG(smapi, 0, "smapi needs an argument") obj->data.s = END OBJ_ARG(smapi, 0, "smapi needs an argument") obj->data.s =
strndup(arg, text_buffer_size.get(*state)); STRNDUP_ARG;
obj->callbacks.print = &print_smapi; obj->callbacks.print = &print_smapi;
obj->callbacks.free = &gen_free_opaque; obj->callbacks.free = &gen_free_opaque;
END OBJ_IF_ARG(if_smapi_bat_installed, 0, END OBJ_IF_ARG(if_smapi_bat_installed, 0,
"if_smapi_bat_installed needs an argument") obj->data.s = "if_smapi_bat_installed needs an argument") obj->data.s =
strndup(arg, text_buffer_size.get(*state)); STRNDUP_ARG;
obj->callbacks.iftest = &smapi_bat_installed; obj->callbacks.iftest = &smapi_bat_installed;
obj->callbacks.free = &gen_free_opaque; obj->callbacks.free = &gen_free_opaque;
END OBJ_ARG(smapi_bat_perc, 0, "smapi_bat_perc needs an argument") END OBJ_ARG(smapi_bat_perc, 0, "smapi_bat_perc needs an argument")
obj->data.s = strndup(arg, text_buffer_size.get(*state)); obj->data.s = STRNDUP_ARG;
obj->callbacks.percentage = &smapi_bat_percentage; obj->callbacks.percentage = &smapi_bat_percentage;
obj->callbacks.free = &gen_free_opaque; obj->callbacks.free = &gen_free_opaque;
END OBJ_ARG(smapi_bat_temp, 0, "smapi_bat_temp needs an argument") END OBJ_ARG(smapi_bat_temp, 0, "smapi_bat_temp needs an argument")
obj->data.s = strndup(arg, text_buffer_size.get(*state)); obj->data.s = STRNDUP_ARG;
obj->callbacks.print = &print_smapi_bat_temp; obj->callbacks.print = &print_smapi_bat_temp;
obj->callbacks.free = &gen_free_opaque; obj->callbacks.free = &gen_free_opaque;
END OBJ_ARG(smapi_bat_power, 0, "smapi_bat_power needs an argument") END OBJ_ARG(smapi_bat_power, 0, "smapi_bat_power needs an argument")
obj->data.s = strndup(arg, text_buffer_size.get(*state)); obj->data.s = STRNDUP_ARG;
obj->callbacks.print = &print_smapi_bat_power; obj->callbacks.print = &print_smapi_bat_power;
obj->callbacks.free = &gen_free_opaque; obj->callbacks.free = &gen_free_opaque;
END OBJ_ARG(smapi_bat_bar, 0, "smapi_bat_bar needs an argument") int cnt; END OBJ_ARG(smapi_bat_bar, 0, "smapi_bat_bar needs an argument") int cnt;
@ -1701,20 +1716,20 @@ struct text_object *construct_text_object(char *s, const char *arg, long line,
#endif /* BUILD_WEATHER_XOAP */ #endif /* BUILD_WEATHER_XOAP */
END OBJ_ARG(lua, nullptr, END OBJ_ARG(lua, nullptr,
"lua needs arguments: <function name> [function parameters]") "lua needs arguments: <function name> [function parameters]")
obj->data.s = strndup(arg, text_buffer_size.get(*state)); obj->data.s = STRNDUP_ARG;
obj->callbacks.print = &print_lua; obj->callbacks.print = &print_lua;
obj->callbacks.free = &gen_free_opaque; obj->callbacks.free = &gen_free_opaque;
END OBJ_ARG( END OBJ_ARG(
lua_parse, nullptr, lua_parse, nullptr,
"lua_parse needs arguments: <function name> [function parameters]") "lua_parse needs arguments: <function name> [function parameters]")
obj->data.s = strndup(arg, text_buffer_size.get(*state)); obj->data.s = STRNDUP_ARG;
obj->callbacks.print = &print_lua_parse; obj->callbacks.print = &print_lua_parse;
obj->callbacks.free = &gen_free_opaque; obj->callbacks.free = &gen_free_opaque;
END OBJ_ARG(lua_bar, nullptr, END OBJ_ARG(lua_bar, nullptr,
"lua_bar needs arguments: <height>,<width> <function name> " "lua_bar needs arguments: <height>,<width> <function name> "
"[function parameters]") arg = scan_bar(obj, arg, 100); "[function parameters]") arg = scan_bar(obj, arg, 100);
if (arg != nullptr) { if (arg != nullptr) {
obj->data.s = strndup(arg, text_buffer_size.get(*state)); obj->data.s = STRNDUP_ARG;
} else { } else {
CRIT_ERR(obj, free_at_crash, CRIT_ERR(obj, free_at_crash,
"lua_bar needs arguments: <height>,<width> <function name> " "lua_bar needs arguments: <height>,<width> <function name> "
@ -1741,7 +1756,7 @@ struct text_object *construct_text_object(char *s, const char *arg, long line,
"lua_gauge needs arguments: <height>,<width> <function name> " "lua_gauge needs arguments: <height>,<width> <function name> "
"[function parameters]") arg = scan_gauge(obj, arg, 100); "[function parameters]") arg = scan_gauge(obj, arg, 100);
if (arg != nullptr) { if (arg != nullptr) {
obj->data.s = strndup(arg, text_buffer_size.get(*state)); obj->data.s = STRNDUP_ARG;
} else { } else {
CRIT_ERR(obj, free_at_crash, CRIT_ERR(obj, free_at_crash,
"lua_gauge needs arguments: <height>,<width> <function name> " "lua_gauge needs arguments: <height>,<width> <function name> "
@ -1752,7 +1767,7 @@ struct text_object *construct_text_object(char *s, const char *arg, long line,
#endif /* BUILD_X11 */ #endif /* BUILD_X11 */
#ifdef BUILD_HDDTEMP #ifdef BUILD_HDDTEMP
END OBJ(hddtemp, &update_hddtemp) if (arg) obj->data.s = END OBJ(hddtemp, &update_hddtemp) if (arg) obj->data.s =
strndup(arg, text_buffer_size.get(*state)); STRNDUP_ARG;
obj->callbacks.print = &print_hddtemp; obj->callbacks.print = &print_hddtemp;
obj->callbacks.free = &free_hddtemp; obj->callbacks.free = &free_hddtemp;
#endif /* BUILD_HDDTEMP */ #endif /* BUILD_HDDTEMP */

View File

@ -113,3 +113,12 @@ void print_cap(struct text_object *obj, char *p, int p_max_size) {
*dest = '\0'; *dest = '\0';
snprintf(p, p_max_size, "%s", buf); snprintf(p, p_max_size, "%s", buf);
} }
long long int apply_base_multiplier(const char *s, long long int num) {
long long int base = 1024LL;
if (*s && (0 == (strcmp(s, "si")))) {
base = 1000LL;
}
return (num * base);
}

View File

@ -36,5 +36,5 @@
void print_cat(struct text_object *, char *, int); void print_cat(struct text_object *, char *, int);
void print_catp(struct text_object *, char *, int); void print_catp(struct text_object *, char *, int);
void print_cap(struct text_object *, char *, int); void print_cap(struct text_object *, char *, int);
long long apply_base_multiplier(const char *, long long int);
#endif /* _MISC_H */ #endif /* _MISC_H */