diff options
Diffstat (limited to 'xrdp/xrdp_wm.c')
| -rw-r--r-- | xrdp/xrdp_wm.c | 52 |
1 files changed, 31 insertions, 21 deletions
diff --git a/xrdp/xrdp_wm.c b/xrdp/xrdp_wm.c index 3b223902..548742ac 100644 --- a/xrdp/xrdp_wm.c +++ b/xrdp/xrdp_wm.c @@ -18,6 +18,8 @@ * simple window manager */ +#include <stdarg.h> +#include <stdio.h> #include "xrdp.h" #include "log.h" @@ -45,7 +47,7 @@ xrdp_wm_create(struct xrdp_process *owner, pid = g_getpid(); g_snprintf(event_name, 255, "xrdp_%8.8x_wm_login_mode_event_%8.8x", pid, owner->session_id); - log_message(LOG_LEVEL_DEBUG,event_name); + log_message(LOG_LEVEL_DEBUG, "%s", event_name); self->login_mode_event = g_create_wait_obj(event_name); self->painter = xrdp_painter_create(self, self->session); self->cache = xrdp_cache_create(self, self->session, self->client_info); @@ -60,7 +62,7 @@ xrdp_wm_create(struct xrdp_process *owner, self->current_surface_index = 0xffff; /* screen */ /* to store configuration from xrdp.ini */ - self->xrdp_config = g_malloc(sizeof(struct xrdp_config), 1); + self->xrdp_config = g_new0(struct xrdp_config, 1); return self; } @@ -546,7 +548,7 @@ xrdp_wm_init(struct xrdp_wm *self) struct list *names; struct list *values; char *q; - char *r; + const char *r; char param[256]; char section_name[256]; char cfg_file[256]; @@ -677,9 +679,9 @@ xrdp_wm_init(struct xrdp_wm *self) else { /* requested module name not found in xrdp.ini */ - g_writeln(" xrdp_wm_init: file_read_section returned non-zero, requested section not found in xrdp.ini"); - xrdp_wm_log_msg(self, "ERROR: The requested xrdp module not found in xrdp.ini," - " falling back to login window"); + xrdp_wm_log_msg(self, LOG_LEVEL_ERROR, + "Section \"%s\" not configured in xrdp.ini", + section_name); } list_delete(names); @@ -1725,8 +1727,8 @@ callback(long id, int msg, long param1, long param2, long param3, long param4) rv = xrdp_wm_process_input_mousex(wm, param3, param1, param2); break; case 0x4444: /* invalidate, this is not from RDP_DATA_PDU_INPUT */ - /* like the rest, its from RDP_PDU_DATA with code 33 */ - /* its the rdp client asking for a screen update */ + /* like the rest, it's from RDP_PDU_DATA with code 33 */ + /* it's the rdp client asking for a screen update */ MAKERECT(rect, param1, param2, param3, param4); rv = xrdp_bitmap_invalidate(wm->screen, &rect); break; @@ -1857,22 +1859,21 @@ xrdp_wm_log_wnd_notify(struct xrdp_bitmap *wnd, return 0; } -void add_string_to_logwindow(char *msg, struct list *log) +static void +add_string_to_logwindow(const char *msg, struct list *log) { - - char *new_part_message; - char *current_pointer = msg ; - int processedlen = 0; + const char *new_part_message; + const char *current_pointer = msg; + int len_done = 0; do { - new_part_message = g_strndup(current_pointer, LOG_WINDOW_CHAR_PER_LINE) ; - g_writeln("%s",new_part_message); - list_add_item(log, (long)new_part_message); - processedlen = processedlen + g_strlen(new_part_message); - current_pointer = current_pointer + g_strlen(new_part_message) ; - } - while ((processedlen < g_strlen(msg)) && (processedlen < DEFAULT_STRING_LEN)); + new_part_message = g_strndup(current_pointer, LOG_WINDOW_CHAR_PER_LINE); + g_writeln("%s", new_part_message); + list_add_item(log, (tintptr) new_part_message); + len_done += g_strlen(new_part_message); + current_pointer += g_strlen(new_part_message); + } while ((len_done < g_strlen(msg)) && (len_done < DEFAULT_STRING_LEN)); } /*****************************************************************************/ @@ -1966,8 +1967,17 @@ xrdp_wm_show_log(struct xrdp_wm *self) /*****************************************************************************/ int APP_CC -xrdp_wm_log_msg(struct xrdp_wm *self, char *msg) +xrdp_wm_log_msg(struct xrdp_wm *self, enum logLevels loglevel, + const char *fmt, ...) { + va_list ap; + char msg[256]; + + va_start(ap, fmt); + vsnprintf(msg, sizeof(msg), fmt, ap); + va_end(ap); + + log_message(loglevel, "xrdp_wm_log_msg: %s", msg); add_string_to_logwindow(msg, self->log); return 0; } |
