#ifdef XOAP
#include <libxml/parser.h>
#endif /* XOAP */
+#ifdef HAVE_CURL
+#include <curl/curl.h>
+#endif
/* local headers */
#include "core.h"
#ifdef IOSTATS
int top_io;
#endif
-#ifdef __linux__
int top_running;
-#endif
int output_methods;
static int extra_newline;
enum x_initialiser_state x_initialised = NO;
char *ps, *pe;
int special_index = 0; /* specials index */
+ if(! b) return;
for (ps = b, pe = b; *pe; pe++) {
if (*pe == '\n') {
*pe = '\0';
spaced_print(buf, size, "%d", 6, round_to_int(num));
return;
}
- if (short_units) {
+ if (short_units || llabs(num) < 1000LL) {
width = 5;
format = "%.*f%.1s";
} else {
* adjusting the decimal part of the number. Sample output:
* 123MiB
* 23.4GiB
- * 5.12B
+ * 5.12B
* so the point of alignment resides between number and unit. The
* upside of this is that there is minimal padding necessary, though
* there should be a way to make alignment take place at the decimal
- * dot (then with fixed width decimal part).
+ * dot (then with fixed width decimal part).
*
* Note the repdigits below: when given a precision value, printf()
* rounds the float to it, not just cuts off the remaining digits. So
buff_in[0] = 0;
#endif /* HAVE_ICONV */
+ if(! p) return;
+
p[0] = 0;
obj = root.next;
while (obj && p_max_size > 0) {
/* we have four different types of top (top, top_mem,
* top_time and top_io). To avoid having almost-same code four
* times, we have this special handler. */
-#ifdef __linux__
break;
case OBJ_top:
case OBJ_top_mem:
case OBJ_top_io:
#endif
print_top(obj, p, p_max_size);
-#endif /* __linux__ */
OBJ(tail) {
print_tailhead("tail", obj, p, p_max_size);
}
}
#ifdef NVIDIA
OBJ(nvidia) {
- print_nvidia_value(obj, display, p, p_max_size);
+ print_nvidia_value(obj, p, p_max_size);
}
#endif /* NVIDIA */
#ifdef APCUPSD
#ifdef HAVE_ICONV
iconv_convert(&a, buff_in, p, p_max_size);
#endif /* HAVE_ICONV */
- if (obj->type != OBJ_text && obj->type != OBJ_execp && obj->type != OBJ_execpi
+ if (obj->type == OBJ_execp || obj->type == OBJ_execpi || obj->type
+ == OBJ_exec
#ifdef HAVE_LUA
- && obj->type != OBJ_lua && obj->type != OBJ_lua_parse
+ || obj->type == OBJ_lua || obj->type == OBJ_lua_parse
#endif /* HAVE_LUA */
) {
substitute_newlines(p, a - 2);
}
#ifdef X11
-void clean_up_x11() {
+void clean_up_x11(void)
+{
if(window_created == 1) {
XClearArea(display, window.window, text_start_x - window.border_inner_margin - window.border_outer_margin - window.border_width,
text_start_y - window.border_inner_margin - window.border_outer_margin - window.border_width,
}
#endif
-void clean_up(void *memtofree1, void* memtofree2)
-{
+void clean_up_without_threads(void *memtofree1, void* memtofree2) {
int i;
- free_update_callbacks();
-
#ifdef NCURSES
if(output_methods & TO_NCURSES) {
endwin();
font_count = -1;
}
+#ifdef NVIDIA
+ set_nvidia_display(NULL);
+#endif
#endif /* X11 */
free_templates();
}
}
+void clean_up(void *memtofree1, void* memtofree2)
+{
+ free_update_callbacks();
+ clean_up_without_threads(memtofree1, memtofree2);
+}
+
static int string_to_bool(const char *s)
{
if (!s) {
#ifdef IOSTATS
top_io = 0;
#endif
-#ifdef __linux__
top_running = 0;
-#endif
#ifdef MPD
mpd_env_host = getenv("MPD_HOST");
mpd_env_port = getenv("MPD_PORT");
disp = strdup(value);
}
}
+#ifdef NVIDIA
+ CONF("nvidia_display") {
+ if(value)
+ set_nvidia_display(value);
+ }
+#endif
CONF("alignment") {
setalignment(&text_alignment, window.type, value, f, line, 1);
}
tcp_portmon_set_max_connections(0);
#endif
+#ifdef HAVE_CURL
+ if(curl_global_init(CURL_GLOBAL_ALL))
+ NORM_ERR("curl_global_init() failed, you may not be able to use curl variables");
+#endif
+
/* handle command line parameters that don't change configs */
#ifdef X11
if (((s = getenv("LC_ALL")) && *s) || ((s = getenv("LC_CTYPE")) && *s)
main_loop();
+#ifdef HAVE_CURL
+ curl_global_cleanup();
+#endif
+
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
kvm_close(kd);
#endif