Mercurial > geeqie.yaz
view src/misc.c @ 1022:9962b24b6b43
Move miscellaneous functions to their own files (new misc.[ch]).
author | zas_ |
---|---|
date | Sun, 31 Aug 2008 10:51:41 +0000 |
parents | |
children | 650c02c0c8ff |
line wrap: on
line source
/* * Geeqie * Copyright (C) 2008 The Geeqie Team * * Authors: Vladimir Nadvornik / Laurent Monin * * This software is released under the GNU General Public License (GNU GPL). * Please read the included file COPYING for more information. * This software comes with no warranty of any kind, use at your own risk! */ #include "main.h" #include "misc.h" gdouble get_zoom_increment(void) { return ((options->image.zoom_increment != 0) ? (gdouble)options->image.zoom_increment / 10.0 : 1.0); } gchar *utf8_validate_or_convert(const gchar *text) { gint len; if (!text) return NULL; len = strlen(text); if (!g_utf8_validate(text, len, NULL)) return g_convert(text, len, "UTF-8", "ISO-8859-1", NULL, NULL, NULL); return g_strdup(text); } gint utf8_compare(const gchar *s1, const gchar *s2, gboolean case_sensitive) { gchar *s1_key, *s2_key; gchar *s1_t, *s2_t; gint ret; g_assert(g_utf8_validate(s1, -1, NULL)); g_assert(g_utf8_validate(s2, -1, NULL)); if (!case_sensitive) { s1_t = g_utf8_casefold(s1, -1); s2_t = g_utf8_casefold(s2, -1); } s1_key = g_utf8_collate_key(s1_t, -1); s2_key = g_utf8_collate_key(s2_t, -1); ret = strcmp(s1_key, s2_key); g_free(s1_key); g_free(s2_key); if (!case_sensitive) { g_free(s1_t); g_free(s2_t); } return ret; } /* Borrowed from gtkfilesystemunix.c */ gchar *expand_tilde(const gchar *filename) { #ifndef G_OS_UNIX return g_strdup(filename); #else const gchar *notilde; const gchar *slash; const gchar *home; if (filename[0] != '~') return g_strdup(filename); notilde = filename + 1; slash = strchr(notilde, G_DIR_SEPARATOR); if (slash == notilde || !*notilde) { home = g_get_home_dir(); if (!home) return g_strdup(filename); } else { gchar *username; struct passwd *passwd; if (slash) username = g_strndup(notilde, slash - notilde); else username = g_strdup(notilde); passwd = getpwnam(username); g_free(username); if (!passwd) return g_strdup(filename); home = passwd->pw_dir; } if (slash) return g_build_filename(home, G_DIR_SEPARATOR_S, slash + 1, NULL); else return g_build_filename(home, G_DIR_SEPARATOR_S, NULL); #endif }