105 static char fatal_msg_buf[1000] =
"Unspecified fatal error encountered, aborting.";
106 static char *fatal_msg_ptr = fatal_msg_buf;
111 dowrite (GFileDescriptor fd,
117 memcpy (fatal_msg_ptr, buf, len);
118 fatal_msg_ptr +=
len;
123 fwrite (buf, len, 1, fd);
129 #define write(fd, buf, len) dowrite(fd, buf, len)
139 if (!alloc_console_called)
141 handle = GetStdHandle (STD_OUTPUT_HANDLE);
146 alloc_console_called =
TRUE;
147 freopen (
"CONOUT$",
"w", stdout);
152 #define ensure_stdout_valid()
194 buffer[i] = c +
'a' - 10;
198 write (fd, buffer, n);
205 write (fd,
string, strlen (
string));
222 val =
g_getenv (
"G_MESSAGES_PREFIXED");
241 if ((g_log_msg_prefix & mask) == mask)
269 if (strcmp (domain->log_domain, log_domain) == 0)
274 domain = domain->next;
286 domain->log_domain =
g_strdup (log_domain);
288 domain->handlers =
NULL;
292 g_log_domains = domain;
302 domain->handlers ==
NULL)
315 last->next = domain->next;
317 g_log_domains = domain->next;
318 g_free (domain->log_domain);
334 if (domain && log_level)
338 handler = domain->handlers;
341 if ((handler->log_level & log_level) == log_level)
343 *data = handler->data;
344 return handler->log_func;
346 handler = handler->next;
366 g_log_always_fatal = fatal_mask;
390 old_flags = domain->fatal_mask;
392 domain->fatal_mask = fatal_mask;
406 static guint handler_id = 0;
420 handler->id = ++handler_id;
422 handler->log_level = log_levels;
423 handler->log_func = log_func;
424 handler->data = user_data;
425 handler->next = domain->handlers;
426 domain->handlers = handler;
448 work = domain->handlers;
451 if (work->id == handler_id)
454 last->next = work->next;
456 domain->handlers = work->next;
465 g_warning (
"g_log_remove_handler(): could not find handler with id `%d' for domain \"%s\"",
487 #ifdef HAVE_VSNPRINTF
488 vsnprintf (buffer, 1024, format, args1);
492 vsprintf (buffer, format, args2);
497 strncpy (buffer, format, 1024);
508 if (log_level & test_level)
525 g_log_always_fatal) & test_level) != 0)
530 log_func (log_domain, test_level, buffer, data);
536 #if defined (G_ENABLE_DEBUG) && defined (SIGTRAP)
543 MessageBox (
NULL, fatal_msg_buf,
NULL, MB_OK);
545 # if defined (_MSC_VER) && defined (_DEBUG)
567 va_start (args, format);
568 g_logv (log_domain, log_level, format, args);
587 message =
"g_log_default_handler(): (NULL) message";
594 gonna_abort = is_fatal;
609 write (fd, log_domain, strlen (log_domain));
613 write (fd,
"** ", 3);
615 write (fd,
"ERROR (recursed) **: ", 21);
617 write (fd,
"ERROR **: ", 10);
618 write (fd, message, strlen (message));
620 write (fd,
"\naborting...\n", 13);
631 write (fd, log_domain, strlen (log_domain));
635 write (fd,
"** ", 3);
637 write (fd,
"CRITICAL (recursed) **: ", 24);
639 write (fd,
"CRITICAL **: ", 13);
640 write (fd, message, strlen (message));
642 write (fd,
"\naborting...\n", 13);
653 write (fd, log_domain, strlen (log_domain));
657 write (fd,
"** ", 3);
659 write (fd,
"WARNING (recursed) **: ", 23);
661 write (fd,
"WARNING **: ", 12);
662 write (fd, message, strlen (message));
664 write (fd,
"\naborting...\n", 13);
675 write (fd, log_domain, strlen (log_domain));
679 write (fd,
"Message (recursed): ", 20);
681 write (fd,
"Message: ", 9);
682 write (fd, message, strlen (message));
684 write (fd,
"\naborting...\n", 13);
695 write (fd, log_domain, strlen (log_domain));
699 write (fd,
"INFO (recursed): ", 17);
701 write (fd,
"INFO: ", 6);
702 write (fd, message, strlen (message));
704 write (fd,
"\naborting...\n", 13);
715 write (fd, log_domain, strlen (log_domain));
719 write (fd,
"DEBUG (recursed): ", 18);
721 write (fd,
"DEBUG: ", 7);
722 write (fd, message, strlen (message));
724 write (fd,
"\naborting...\n", 13);
738 write (fd, log_domain, strlen (log_domain));
740 write (fd,
"-LOG (recursed:", 15);
742 write (fd,
"-LOG (", 6);
744 else if (in_recursion)
745 write (fd,
"LOG (recursed:", 14);
747 write (fd,
"LOG (", 5);
750 gchar string[] =
"0x00): ";
751 gchar *p =
string + 2;
757 *p =
'0' + (i & 0xf);
761 write (fd,
string, 7);
764 write (fd,
"): ", 3);
765 write (fd, message, strlen (message));
767 write (fd,
"\naborting...\n", 13);
781 glib_print_func =
func;
784 return old_print_func;
797 va_start (args, format);
805 if (local_glib_print_func)
806 local_glib_print_func (
string);
810 fputs (
string, stdout);
823 glib_printerr_func =
func;
826 return old_printerr_func;
839 va_start (args, format);
847 if (local_glib_printerr_func)
848 local_glib_printerr_func (
string);
851 fputs (
string, stderr);
858 # define MB_LEN_MAX 8
865 gboolean alternate_format, zero_padding, adjust_left, locale_grouping;
866 gboolean add_space, add_sign, possible_sign, seen_precision;
867 gboolean mod_half, mod_long, mod_extra_long;
875 static const gboolean honour_longs =
sizeof(long) > 4 ||
sizeof(
void*) > 4;
883 register gchar c = *format++;
889 PrintfArgSpec spec = { 0, };
902 const gchar *v_string;
909 "(): unable to handle positional parameters (%%n$)");
917 spec.alternate_format =
TRUE;
920 spec.zero_padding =
TRUE;
923 spec.adjust_left =
TRUE;
926 spec.add_space =
TRUE;
929 spec.add_sign =
TRUE;
932 spec.locale_grouping =
TRUE;
938 spec.seen_precision =
TRUE;
951 while (c >=
'0' && c <=
'9')
954 v_uint = v_uint * 10 + c -
'0';
957 if (spec.seen_precision)
958 spec.precision =
MAX (spec.precision, v_uint);
960 spec.min_width =
MAX (spec.min_width, v_uint);
963 v_int = va_arg (args,
int);
964 if (spec.seen_precision)
968 spec.precision =
MAX (spec.precision, v_int);
975 spec.adjust_left =
TRUE;
977 spec.min_width =
MAX (spec.min_width, v_int);
984 spec.mod_half =
TRUE;
989 spec.mod_long =
TRUE;
996 spec.mod_long =
TRUE;
997 spec.mod_extra_long =
TRUE;
1001 #if GLIB_SIZEOF_SIZE_T > 4
1002 spec.mod_long =
TRUE;
1003 spec.mod_extra_long =
TRUE;
1007 #if GLIB_SIZEOF_PTRDIFF_T > 4
1008 spec.mod_long =
TRUE;
1009 spec.mod_extra_long =
TRUE;
1013 #if GLIB_SIZEOF_INTMAX_T > 4
1014 spec.mod_long =
TRUE;
1015 spec.mod_extra_long =
TRUE;
1029 spec.mod_long =
TRUE;
1043 spec.possible_sign =
TRUE;
1045 if (spec.mod_long && honour_longs)
1047 if (spec.mod_extra_long)
1049 if (spec.mod_extra_long)
1051 #ifdef G_HAVE_GINT64
1054 (
void) va_arg (args,
long);
1057 else if (spec.mod_long)
1058 (
void) va_arg (args,
long);
1060 (
void) va_arg (args,
int);
1072 spec.possible_sign =
TRUE;
1074 conv_len += 1 + 1 +
MAX (24, spec.precision) + 1 + 1 + 4;
1075 if (may_warn && spec.mod_extra_long)
1077 "(): unable to handle long double, collecting double only");
1078 #ifdef HAVE_LONG_DOUBLE
1079 #error need to implement special handling for long double
1081 u_double.
v_double = va_arg (args,
double);
1090 conv_len +=
ABS (exp);
1095 if (spec.locale_grouping)
1099 spec.mod_long =
TRUE;
1103 (
void) va_arg (args,
int);
1106 spec.mod_long =
TRUE;
1109 v_string = va_arg (args,
char*);
1112 else if (spec.seen_precision)
1113 conv_len += spec.precision;
1115 conv_len += strlen (v_string);
1121 "(): unable to handle wide char strings");
1128 spec.alternate_format =
TRUE;
1135 (
void) va_arg (args,
void*);
1140 v_uint = v_string ? strlen (v_string) : 0;
1141 conv_len +=
MAX (256, v_uint);
1148 conv_len += format - spec_start;
1153 "(): unable to handle `%c' while parsing format",
1157 conv_done |= conv_len > 0;
1161 conv_len =
MAX (conv_len,
MAX (spec.precision, spec.min_width));
1163 conv_len += spec.alternate_format ? 2 : 0;
1164 conv_len += (spec.add_space || spec.add_sign || spec.possible_sign);
static GLogDomain * g_log_find_domain(const gchar *log_domain)
double write(int n, const std::string &file_name, const std::string &vector_type, int compress=0)
writing
ClassImp(TSeqCollection) Int_t TSeqCollection TIter next(this)
Return index of object in collection.
#define INVALID_HANDLE_VALUE
void g_messages_init(void)
#define g_return_val_if_fail(expr, val)
#define G_VA_COPY(ap1, ap2)
static GPrintFunc glib_print_func
#define ensure_stdout_valid()
const gchar * g_log_domain_glib
void(* GPrintFunc)(const gchar *string)
gchar * g_strdup_vprintf(const gchar *format, va_list args1)
static std::string format(double x, double y, int digits, int width)
G_BEGIN_DECLS typedef char gchar
static GLogDomain * g_log_domains
struct _GLogDomain GLogDomain
static GMutex * g_messages_lock
struct _GPrivate GPrivate
#define GPOINTER_TO_UINT(p)
static void write_string(GFileDescriptor fd, gchar *string)
G_CONST_RETURN gchar * g_getenv(const gchar *variable)
#define G_LOG_LEVEL_USER_SHIFT
static gsize printf_string_upper_bound(const gchar *format, gboolean may_warn, va_list args)
struct _GDoubleIEEE754::@75 mpn
#define g_mutex_unlock(mutex)
#define g_return_if_fail(expr)
#define G_IEEE754_DOUBLE_BIAS
#define G_N_ELEMENTS(arr)
gsize g_printf_string_upper_bound(const gchar *format, va_list args)
#define g_new(struct_type, n_structs)
static GLogFunc g_log_domain_get_handler(GLogDomain *domain, GLogLevelFlags log_level, gpointer *data)
GLogLevelFlags g_log_set_fatal_mask(const gchar *log_domain, GLogLevelFlags fatal_mask)
static GPrivate * g_log_depth
G_CONST_RETURN gchar * g_strerror(gint errnum)
GPrintFunc g_set_print_handler(GPrintFunc func)
#define GUINT_TO_POINTER(u)
#define g_private_new(destructor)
guint g_parse_debug_string(const gchar *string, const GDebugKey *keys, guint nkeys)
GPrintFunc g_set_printerr_handler(GPrintFunc func)
#define g_mutex_lock(mutex)
#define G_GNUC_PRETTY_FUNCTION
static GLogLevelFlags g_log_always_fatal
GLogLevelFlags g_log_set_always_fatal(GLogLevelFlags fatal_mask)
void g_free(gpointer mem)
void(* GLogFunc)(const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer user_data)
guint g_log_set_handler(const gchar *log_domain, GLogLevelFlags log_levels, GLogFunc log_func, gpointer user_data)
void g_printerr(const gchar *format,...)
double func(double *x, double *p)
G_GNUC_EXTENSION typedef signed long long gint64
static void g_log_write_prefix(GFileDescriptor fd, GLogLevelFlags mask)
typedef void((*Func_t)())
static void g_warning(const gchar *format,...)
static GLogDomain * g_log_domain_new(const gchar *log_domain)
G_INLINE_FUNC gint g_bit_nth_msf(gulong mask, gint nth_bit)
gchar * g_get_prgname(void)
#define g_private_set(private_key, value)
struct _GLogHandler GLogHandler
void g_log(const gchar *log_domain, GLogLevelFlags log_level, const gchar *format,...)
#define g_private_get(private_key)
void g_print(const gchar *format,...)
void g_log_default_handler(const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer unused_data)
gchar * g_strdup(const gchar *str)
static void g_log_domain_check_free(GLogDomain *domain)
static void write_unsigned(GFileDescriptor fd, gulong num, guint radix)
void g_logv(const gchar *log_domain, GLogLevelFlags log_level, const gchar *format, va_list args1)
void g_log_remove_handler(const gchar *log_domain, guint handler_id)
static GPrintFunc glib_printerr_func