diff options
Diffstat (limited to 'glib/gutils.c')
-rw-r--r-- | glib/gutils.c | 266 |
1 files changed, 88 insertions, 178 deletions
diff --git a/glib/gutils.c b/glib/gutils.c index e23280ff62..ef51134828 100644 --- a/glib/gutils.c +++ b/glib/gutils.c @@ -25,13 +25,6 @@ #include "glib.h" -static GErrorFunc glib_error_func = NULL; -static GWarningFunc glib_warning_func = NULL; -static GPrintFunc glib_message_func = NULL; -static GPrintFunc glib_print_func = NULL; - -extern char* g_vsprintf (const gchar *fmt, va_list *args, va_list *args2); - gchar* g_strdup (const gchar *str) { @@ -577,85 +570,85 @@ g_strsignal (gint signum) case SIGQUIT: return "Quit"; #endif #ifdef SIGILL - case SIGILL: "Illegal instruction"; + case SIGILL: return "Illegal instruction"; #endif #ifdef SIGTRAP - case SIGTRAP: "Trace/breakpoint trap"; + case SIGTRAP: return "Trace/breakpoint trap"; #endif #ifdef SIGABRT - case SIGABRT: "IOT trap/Abort"; + case SIGABRT: return "IOT trap/Abort"; #endif #ifdef SIGBUS - case SIGBUS: "Bus error"; + case SIGBUS: return "Bus error"; #endif #ifdef SIGFPE - case SIGFPE: "Floating point exception"; + case SIGFPE: return "Floating point exception"; #endif #ifdef SIGKILL - case SIGKILL: "Killed"; + case SIGKILL: return "Killed"; #endif #ifdef SIGUSR1 - case SIGUSR1: "User defined signal 1"; + case SIGUSR1: return "User defined signal 1"; #endif #ifdef SIGSEGV - case SIGSEGV: "Segmentation fault"; + case SIGSEGV: return "Segmentation fault"; #endif #ifdef SIGUSR2 - case SIGUSR2: "User defined signal 2"; + case SIGUSR2: return "User defined signal 2"; #endif #ifdef SIGPIPE - case SIGPIPE: "Broken pipe"; + case SIGPIPE: return "Broken pipe"; #endif #ifdef SIGALRM - case SIGALRM: "Alarm clock"; + case SIGALRM: return "Alarm clock"; #endif #ifdef SIGTERM - case SIGTERM: "Terminated"; + case SIGTERM: return "Terminated"; #endif #ifdef SIGSTKFLT - case SIGSTKFLT: "Stack fault"; + case SIGSTKFLT: return "Stack fault"; #endif #ifdef SIGCHLD - case SIGCHLD: "Child exited"; + case SIGCHLD: return "Child exited"; #endif #ifdef SIGCONT - case SIGCONT: "Continued"; + case SIGCONT: return "Continued"; #endif #ifdef SIGSTOP - case SIGSTOP: "Stopped (signal)"; + case SIGSTOP: return "Stopped (signal)"; #endif #ifdef SIGTSTP - case SIGTSTP: "Stopped"; + case SIGTSTP: return "Stopped"; #endif #ifdef SIGTTIN - case SIGTTIN: "Stopped (tty input)"; + case SIGTTIN: return "Stopped (tty input)"; #endif #ifdef SIGTTOU - case SIGTTOU: "Stopped (tty output)"; + case SIGTTOU: return "Stopped (tty output)"; #endif #ifdef SIGURG - case SIGURG: "Urgent condition"; + case SIGURG: return "Urgent condition"; #endif #ifdef SIGXCPU - case SIGXCPU: "CPU time limit exceeded"; + case SIGXCPU: return "CPU time limit exceeded"; #endif #ifdef SIGXFSZ - case SIGXFSZ: "File size limit exceeded"; + case SIGXFSZ: return "File size limit exceeded"; #endif #ifdef SIGVTALRM - case SIGVTALRM: "Virtual time alarm"; + case SIGVTALRM: return "Virtual time alarm"; #endif #ifdef SIGPROF - case SIGPROF: "Profile signal"; + case SIGPROF: return "Profile signal"; #endif #ifdef SIGWINCH - case SIGWINCH: "Window size changed"; + case SIGWINCH: return "Window size changed"; #endif #ifdef SIGIO - case SIGIO: "Possible I/O"; + case SIGIO: return "Possible I/O"; #endif #ifdef SIGPWR - case SIGPWR: "Power failure"; + case SIGPWR: return "Power failure"; #endif #ifdef SIGUNUSED case SIGUNUSED: return "Unused signal"; @@ -670,146 +663,6 @@ g_strsignal (gint signum) return msg; } -void -g_error (gchar *format, ...) -{ - va_list args, args2; - char *buf; - - va_start (args, format); - va_start (args2, format); - buf = g_vsprintf (format, &args, &args2); - va_end (args); - va_end (args2); - - if (glib_error_func) - { - (* glib_error_func) (buf); - } - else - { - fputs ("\n** ERROR **: ", stderr); - fputs (buf, stderr); - fputc ('\n', stderr); - } - - abort (); -} - -void -g_warning (gchar *format, ...) -{ - va_list args, args2; - char *buf; - - va_start (args, format); - va_start (args2, format); - buf = g_vsprintf (format, &args, &args2); - va_end (args); - va_end (args2); - - if (glib_warning_func) - { - (* glib_warning_func) (buf); - } - else - { - fputs ("\n** WARNING **: ", stderr); - fputs (buf, stderr); - fputc ('\n', stderr); - } -} - -void -g_message (gchar *format, ...) -{ - va_list args, args2; - char *buf; - - va_start (args, format); - va_start (args2, format); - buf = g_vsprintf (format, &args, &args2); - va_end (args); - va_end (args2); - - if (glib_message_func) - { - (* glib_message_func) (buf); - } - else - { - fputs ("message: ", stdout); - fputs (buf, stdout); - fputc ('\n', stdout); - } -} - -void -g_print (gchar *format, ...) -{ - va_list args, args2; - char *buf; - - va_start (args, format); - va_start (args2, format); - buf = g_vsprintf (format, &args, &args2); - va_end (args); - va_end (args2); - - if (glib_print_func) - { - (* glib_print_func) (buf); - } - else - { - fputs (buf, stdout); - } -} - -GErrorFunc -g_set_error_handler (GErrorFunc func) -{ - GErrorFunc old_error_func; - - old_error_func = glib_error_func; - glib_error_func = func; - - return old_error_func; -} - -GWarningFunc -g_set_warning_handler (GWarningFunc func) -{ - GWarningFunc old_warning_func; - - old_warning_func = glib_warning_func; - glib_warning_func = func; - - return old_warning_func; -} - -GPrintFunc -g_set_message_handler (GPrintFunc func) -{ - GPrintFunc old_message_func; - - old_message_func = glib_message_func; - glib_message_func = func; - - return old_message_func; -} - -GPrintFunc -g_set_print_handler (GPrintFunc func) -{ - GPrintFunc old_print_func; - - old_print_func = glib_print_func; - glib_print_func = func; - - return old_print_func; -} - gint g_snprintf (gchar *str, gulong n, @@ -845,25 +698,82 @@ g_snprintf (gchar *str, #endif } +void +g_strdown (gchar *string) +{ + register gchar *s; + + g_return_if_fail (string != NULL); + + s = string; + + while (*s) + { + *s = tolower (*s); + s++; + } +} + +void +g_strup (gchar *string) +{ + register gchar *s; + + g_return_if_fail (string != NULL); + + s = string; + + while (*s) + { + *s = toupper (*s); + s++; + } +} + gint -g_strcasecmp (const gchar *s1, const gchar *s2) +g_strcasecmp (const gchar *s1, + const gchar *s2) { #ifdef HAVE_STRCASECMP - return strcasecmp(s1, s2); + return strcasecmp (s1, s2); #else gint c1, c2; while (*s1 && *s2) { - c1 = tolower((guchar)(*s1++)); c2 = tolower((guchar)(*s2++)); + /* According to A. Cox, some platforms have islower's that + * don't work right on non-uppercase + */ + c1 = isupper ((guchar)*s1) ? tolower ((guchar)*s1) : *s1; + c2 = isupper ((guchar)*s2) ? tolower ((guchar)*s2) : *s2; if (c1 != c2) return (c1 - c2); + s1++; s2++; } return (((gint)(guchar) *s1) - ((gint)(guchar) *s2)); #endif } +void +g_strdelimit (gchar *string, + const gchar *delimiters, + gchar new_delim) +{ + register gchar *c; + + g_return_if_fail (string != NULL); + + if (!delimiters) + delimiters = G_STR_DELIMITERS; + + for (c = string; *c; c++) + { + if (strchr (delimiters, *c)) + *c = new_delim; + } +} + guint g_parse_debug_string (const gchar *string, GDebugKey *keys, @@ -913,6 +823,6 @@ g_parse_debug_string (const gchar *string, guint g_direct_hash(gpointer key) { - return (guint) key; + return GPOINTER_TO_UINT (key); } |