/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* * e-util.c * Copyright 2000, 2001, Ximian, Inc. * * Authors: * Chris Lahey * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License, version 2, as published by the Free Software Foundation. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef G_OS_WIN32 #include #endif #include #include "e-util.h" #include "e-util-private.h" /** * e_get_user_data_dir: * * Returns the base directory for Evolution-specific user data. * The string is owned by Evolution and must not be modified or freed. * * Returns: base directory for user data **/ const gchar * e_get_user_data_dir (void) { static gchar *dirname = NULL; if (G_UNLIKELY (dirname == NULL)) dirname = g_build_filename ( g_get_home_dir (), ".evolution", NULL); return dirname; } /** * e_str_without_underscores: * @s: the string to strip underscores from. * * Strips underscores from a string in the same way @gtk_label_new_with_mnemonis does. * The returned string should be freed. */ char * e_str_without_underscores (const char *s) { char *new_string; const char *sp; char *dp; new_string = g_malloc (strlen (s) + 1); dp = new_string; for (sp = s; *sp != '\0'; sp ++) { if (*sp != '_') { *dp = *sp; dp ++; } else if (sp[1] == '_') { /* Translate "__" in "_". */ *dp = '_'; dp ++; sp ++; } } *dp = 0; return new_string; } gint e_str_compare (gconstpointer x, gconstpointer y) { if (x == NULL || y == NULL) { if (x == y) return 0; else return x ? -1 : 1; } return strcmp (x, y); } gint e_str_case_compare (gconstpointer x, gconstpointer y) { gchar *cx, *cy; gint res; if (x == NULL || y == NULL) { if (x == y) return 0; else return x ? -1 : 1; } cx = g_utf8_casefold (x, -1); cy = g_utf8_casefold (y, -1); res = g_utf8_collate (cx, cy); g_free (cx); g_free (cy); return res; } gint e_collate_compare (gconstpointer x, gconstpointer y) { if (x == NULL || y == NULL) { if (x == y) return 0; else return x ? -1 : 1; } return g_utf8_collate (x, y); } gint e_int_compare (gconstpointer x, gconstpointer y) { gint nx = GPOINTER_TO_INT (x); gint ny = GPOINTER_TO_INT (y); return (nx == ny) ? 0 : (nx < ny) ? -1 : 1; } gint e_write_file_uri (const gchar *filename, const gchar *data) { guint64 length = strlen(data); guint64 bytes; GnomeVFSResult result; GnomeVFSHandle *handle = NULL; result = gnome_vfs_create (&handle, filename, GNOME_VFS_OPEN_WRITE, FALSE, 0644); if (result != GNOME_VFS_OK) { g_warning ("Couldn't save item"); return 1; } while (length > 0) { gnome_vfs_write(handle, data, length, &bytes); if (bytes > 0) { length -= bytes; data += bytes; } else { gnome_vfs_close(handle); return 1; } } gnome_vfs_close (handle); return 0; } /* Include build marshalers */ #include "e-util-marshal.h" static gint epow10 (gint number) { gint value = 1; while (number-- > 0) value *= 10; return value; } gchar * e_format_number (gint number) { GList *iterator, *list = NULL; struct lconv *locality; gint char_length = 0; gint group_count = 0; gchar *grouping; gint last_count = 3; gint divider; gchar *value; gchar *value_iterator; locality = localeconv(); grouping = locality->grouping; while (number) { gchar *group; switch (*grouping) { default: last_count = *grouping; grouping++; case 0: divider = epow10(last_count); if (number >= divider) { group = g_strdup_printf("%0*d", last_count, number % divider); } else { group = g_strdup_printf("%d", number % divider); } number /= divider; break; case CHAR_MAX: group = g_strdup_printf("%d", number); number = 0; break; } char_length += strlen(group); list = g_list_prepend(list, group); group_count ++; } if (list) { value = g_new(gchar, 1 + char_length + (group_count - 1) * strlen(locality->thousands_sep)); iterator = list; value_iterator = value; strcpy(value_iterator, iterator->data); value_iterator += strlen(iterator->data); for (iterator = iterator->next; iterator; iterator = iterator->next) { strcpy(value_iterator, locality->thousands_sep); value_iterator += strlen(locality->thousands_sep); strcpy(value_iterator, iterator->data); value_iterator += strlen(iterator->data); } g_list_foreach (list, (GFunc) g_free, NULL); g_list_free (list); return value; } else { return g_strdup("0"); } } static gchar * do_format_number_as_float (gdouble number) { GList *iterator, *list = NULL; struct lconv *locality; gint char_length = 0; gint group_count = 0; gchar *grouping; gint last_count = 3; gint divider; gchar *value; gchar *value_iterator; gdouble fractional; locality = localeconv(); grouping = locality->grouping; while (number >= 1.0) { gchar *group; switch (*grouping) { default: last_count = *grouping; grouping++; /* Fall through */ case 0: divider = epow10(last_count); number /= divider; fractional = modf (number, &number); fractional *= divider; fractional = floor (fractional); if (number >= 1.0) { group = g_strdup_printf("%0*d", last_count, (int) fractional); } else { group = g_strdup_printf("%d", (gint) fractional); } break; case CHAR_MAX: divider = epow10(last_count); number /= divider; fractional = modf (number, &number); fractional *= divider; fractional = floor (fractional); while (number >= 1.0) { group = g_strdup_printf("%0*d", last_count, (gint) fractional); char_length += strlen(group); list = g_list_prepend(list, group); group_count ++; divider = epow10(last_count); number /= divider; fractional = modf (number, &number); fractional *= divider; fractional = floor (fractional); } group = g_strdup_printf("%d", (gint) fractional); break; } char_length += strlen(group); list = g_list_prepend(list, group); group_count ++; } if (list) { value = g_new(gchar, 1 + char_length + (group_count - 1) * strlen(locality->thousands_sep)); iterator = list; value_iterator = value; strcpy(value_iterator, iterator->data); value_iterator += strlen(iterator->data); for (iterator = iterator->next; iterator; iterator = iterator->next) { strcpy(value_iterator, locality->thousands_sep); value_iterator += strlen(locality->thousands_sep); strcpy(value_iterator, iterator->data); value_iterator += strlen(iterator->data); } g_list_foreach (list, (GFunc) g_free, NULL); g_list_free (list); return value; } else { return g_strdup("0"); } } gchar * e_format_number_float (gfloat number) { gfloat int_part; gint fraction; struct lconv *locality; gchar *str_intpart; gchar *decimal_point; gchar *str_fraction; gchar *value; locality = localeconv(); int_part = floor (number); str_intpart = do_format_number_as_float ((gdouble) int_part); if (!strcmp(locality->mon_decimal_point, "")) { decimal_point = "."; } else { decimal_point = locality->mon_decimal_point; } fraction = (gint) ((number - int_part) * 100); if (fraction == 0) { str_fraction = g_strdup ("00"); } else { str_fraction = g_strdup_printf ("%02d", fraction); } value = g_strconcat (str_intpart, decimal_point, str_fraction, NULL); g_free (str_intpart); g_free (str_fraction); return value; } /* Perform a binary search for key in base which has nmemb elements of size bytes each. The comparisons are done by (*compare)(). */ void e_bsearch (gconstpointer key, gconstpointer base, gsize nmemb, gsize size, ESortCompareFunc compare, gpointer closure, gsize *start, gsize *end) { gsize l, u, idx; gconstpointer p; gint comparison; if (!(start || end)) return; l = 0; u = nmemb; while (l < u) { idx = (l + u) / 2; p = (((const gchar *) base) + (idx * size)); comparison = (*compare) (key, p, closure); if (comparison < 0) u = idx; else if (comparison > 0) l = idx + 1; else { gsize lsave, usave; lsave = l; usave = u; if (start) { while (l < u) { idx = (l + u) / 2; p = (((const gchar *) base) + (idx * size)); comparison = (*compare) (key, p, closure); if (comparison <= 0) u = idx; else l = idx + 1; } *start = l; l = lsave; u = usave; } if (end) { while (l < u) { idx = (l + u) / 2; p = (((const gchar *) base) + (idx * size)); comparison = (*compare) (key, p, closure); if (comparison < 0) u = idx; else l = idx + 1; } *end = l; } return; } } if (start) *start = l; if (end) *end = l; } /** * Function to do a last minute fixup of the AM/PM stuff if the locale * and gettext haven't done it right. Most English speaking countries * except the USA use the 24 hour clock (UK, Australia etc). However * since they are English nobody bothers to write a language * translation (gettext) file. So the locale turns off the AM/PM, but * gettext does not turn on the 24 hour clock. Leaving a mess. * * This routine checks if AM/PM are defined in the locale, if not it * forces the use of the 24 hour clock. * * The function itself is a front end on strftime and takes exactly * the same arguments. * * TODO: Actually remove the '%p' from the fixed up string so that * there isn't a stray space. **/ gsize e_strftime_fix_am_pm (gchar *str, gsize max, const gchar *fmt, const struct tm *tm) { gchar buf[10]; gchar *sp; gchar *ffmt; gsize ret; if (strstr(fmt, "%p")==NULL && strstr(fmt, "%P")==NULL) { /* No AM/PM involved - can use the fmt string directly */ ret=e_strftime(str, max, fmt, tm); } else { /* Get the AM/PM symbol from the locale */ e_strftime (buf, 10, "%p", tm); if (buf[0]) { /** * AM/PM have been defined in the locale * so we can use the fmt string directly **/ ret=e_strftime(str, max, fmt, tm); } else { /** * No AM/PM defined by locale * must change to 24 hour clock **/ ffmt=g_strdup(fmt); for (sp=ffmt; (sp=strstr(sp, "%l")); sp++) { /** * Maybe this should be 'k', but I have never * seen a 24 clock actually use that format **/ sp[1]='H'; } for (sp=ffmt; (sp=strstr(sp, "%I")); sp++) { sp[1]='H'; } ret=e_strftime(str, max, ffmt, tm); g_free(ffmt); } } return(ret); } gsize e_utf8_strftime_fix_am_pm (gchar *str, gsize max, const gchar *fmt, const struct tm *tm) { gsize sz, ret; gchar *locale_fmt, *buf; locale_fmt = g_locale_from_utf8(fmt, -1, NULL, &sz, NULL); if (!locale_fmt) return 0; ret = e_strftime_fix_am_pm(str, max, locale_fmt, tm); if (!ret) { g_free (locale_fmt); return 0; } buf = g_locale_to_utf8(str, ret, NULL, &sz, NULL); if (!buf) { g_free (locale_fmt); return 0; } if (sz >= max) { gchar *tmp = buf + max - 1; tmp = g_utf8_find_prev_char(buf, tmp); if (tmp) sz = tmp - buf; else sz = 0; } memcpy(str, buf, sz); str[sz] = '\0'; g_free(locale_fmt); g_free(buf); return sz; } /** * e_get_month_name: * @month: month index * @abbreviated: if %TRUE, abbreviate the month name * * Returns the localized name for @month. If @abbreviated is %TRUE, * returns the locale's abbreviated month name. * * Returns: localized month name **/ const gchar * e_get_month_name (GDateMonth month, gboolean abbreviated) { /* Make the indices correspond to the enum values. */ static const gchar *abbr_names[G_DATE_DECEMBER + 1]; static const gchar *full_names[G_DATE_DECEMBER + 1]; static gboolean first_time = TRUE; g_return_val_if_fail (month >= G_DATE_JANUARY, NULL); g_return_val_if_fail (month <= G_DATE_DECEMBER, NULL); if (G_UNLIKELY (first_time)) { gchar buffer[256]; GDateMonth ii; GDate date; memset (abbr_names, 0, sizeof (abbr_names)); memset (full_names, 0, sizeof (full_names)); /* First Julian day was in January. */ g_date_set_julian (&date, 1); for (ii = G_DATE_JANUARY; ii <= G_DATE_DECEMBER; ii++) { g_date_strftime (buffer, sizeof (buffer), "%b", &date); abbr_names[ii] = g_intern_string (buffer); g_date_strftime (buffer, sizeof (buffer), "%B", &date); full_names[ii] = g_intern_string (buffer); g_date_add_months (&date, 1); } first_time = FALSE; } return abbreviated ? abbr_names[month] : full_names[month]; } /** * e_get_weekday_name: * @weekday: weekday index * @abbreviated: if %TRUE, abbreviate the weekday name * * Returns the localized name for @weekday. If @abbreviated is %TRUE, * returns the locale's abbreviated weekday name. * * Returns: localized weekday name **/ const gchar * e_get_weekday_name (GDateWeekday weekday, gboolean abbreviated) { /* Make the indices correspond to the enum values. */ static const gchar *abbr_names[G_DATE_SUNDAY + 1]; static const gchar *full_names[G_DATE_SUNDAY + 1]; static gboolean first_time = TRUE; g_return_val_if_fail (weekday >= G_DATE_MONDAY, NULL); g_return_val_if_fail (weekday <= G_DATE_SUNDAY, NULL); if (G_UNLIKELY (first_time)) { gchar buffer[256]; GDateWeekday ii; GDate date; memset (abbr_names, 0, sizeof (abbr_names)); memset (full_names, 0, sizeof (full_names)); /* First Julian day was a Monday. */ g_date_set_julian (&date, 1); for (ii = G_DATE_MONDAY; ii <= G_DATE_SUNDAY; ii++) { g_date_strftime (buffer, sizeof (buffer), "%a", &date); abbr_names[ii] = g_intern_string (buffer); g_date_strftime (buffer, sizeof (buffer), "%A", &date); full_names[ii] = g_intern_string (buffer); g_date_add_days (&date, 1); } first_time = FALSE; } return abbreviated ? abbr_names[weekday] : full_names[weekday]; } /** * e_flexible_strtod: * @nptr: the string to convert to a numeric value. * @endptr: if non-NULL, it returns the character after * the last character used in the conversion. * * Converts a string to a gdouble value. This function detects * strings either in the standard C locale or in the current locale. * * This function is typically used when reading configuration files or * other non-user input that should not be locale dependent, but may * have been in the past. To handle input from the user you should * normally use the locale-sensitive system strtod function. * * To convert from a double to a string in a locale-insensitive way, use * @g_ascii_dtostr. * * Return value: the gdouble value. **/ gdouble e_flexible_strtod (const gchar *nptr, gchar **endptr) { gchar *fail_pos; gdouble val; struct lconv *locale_data; const gchar *decimal_point; gint decimal_point_len; const gchar *p, *decimal_point_pos; const gchar *end = NULL; /* Silence gcc */ gchar *copy, *c; g_return_val_if_fail (nptr != NULL, 0); fail_pos = NULL; locale_data = localeconv (); decimal_point = locale_data->decimal_point; decimal_point_len = strlen (decimal_point); g_return_val_if_fail (decimal_point_len != 0, 0); decimal_point_pos = NULL; if (!strcmp (decimal_point, ".")) return strtod (nptr, endptr); p = nptr; /* Skip leading space */ while (isspace ((guchar)*p)) p++; /* Skip leading optional sign */ if (*p == '+' || *p == '-') p++; if (p[0] == '0' && (p[1] == 'x' || p[1] == 'X')) { p += 2; /* HEX - find the (optional) decimal point */ while (isxdigit ((guchar)*p)) p++; if (*p == '.') { decimal_point_pos = p++; while (isxdigit ((guchar)*p)) p++; if (*p == 'p' || *p == 'P') p++; if (*p == '+' || *p == '-') p++; while (isdigit ((guchar)*p)) p++; end = p; } else if (strncmp (p, decimal_point, decimal_point_len) == 0) { return strtod (nptr, endptr); } } else { while (isdigit ((guchar)*p)) p++; if (*p == '.') { decimal_point_pos = p++; while (isdigit ((guchar)*p)) p++; if (*p == 'e' || *p == 'E') p++; if (*p == '+' || *p == '-') p++; while (isdigit ((guchar)*p)) p++; end = p; } else if (strncmp (p, decimal_point, decimal_point_len) == 0) { return strtod (nptr, endptr); } } /* For the other cases, we need not convert the decimal point */ if (!decimal_point_pos) return strtod (nptr, endptr); /* We need to convert the '.' to the locale specific decimal point */ copy = g_malloc (end - nptr + 1 + decimal_point_len); c = copy; memcpy (c, nptr, decimal_point_pos - nptr); c += decimal_point_pos - nptr; memcpy (c, decimal_point, decimal_point_len); c += decimal_point_len; memcpy (c, decimal_point_pos + 1, end - (decimal_point_pos + 1)); c += end - (decimal_point_pos + 1); *c = 0; val = strtod (copy, &fail_pos); if (fail_pos) { if (fail_pos > decimal_point_pos) fail_pos = (gchar *)nptr + (fail_pos - copy) - (decimal_point_len - 1); else fail_pos = (gchar *)nptr + (fail_pos - copy); } g_free (copy); if (endptr) *endptr = fail_pos; return val; } /** * e_ascii_dtostr: * @buffer: A buffer to place the resulting string in * @buf_len: The length of the buffer. * @format: The printf-style format to use for the * code to use for converting. * @d: The double to convert * * Converts a double to a string, using the '.' as * decimal_point. To format the number you pass in * a printf-style formating string. Allowed conversion * specifiers are eEfFgG. * * If you want to generates enough precision that converting * the string back using @g_strtod gives the same machine-number * (on machines with IEEE compatible 64bit doubles) use the format * string "%.17g". If you do this it is guaranteed that the size * of the resulting string will never be larger than * @G_ASCII_DTOSTR_BUF_SIZE bytes. * * Return value: The pointer to the buffer with the converted string. **/ gchar * e_ascii_dtostr (gchar *buffer, gint buf_len, const gchar *format, gdouble d) { struct lconv *locale_data; const gchar *decimal_point; gint decimal_point_len; gchar *p; gint rest_len; gchar format_char; g_return_val_if_fail (buffer != NULL, NULL); g_return_val_if_fail (format[0] == '%', NULL); g_return_val_if_fail (strpbrk (format + 1, "'l%") == NULL, NULL); format_char = format[strlen (format) - 1]; g_return_val_if_fail (format_char == 'e' || format_char == 'E' || format_char == 'f' || format_char == 'F' || format_char == 'g' || format_char == 'G', NULL); if (format[0] != '%') return NULL; if (strpbrk (format + 1, "'l%")) return NULL; if (!(format_char == 'e' || format_char == 'E' || format_char == 'f' || format_char == 'F' || format_char == 'g' || format_char == 'G')) return NULL; g_snprintf (buffer, buf_len, format, d); locale_data = localeconv (); decimal_point = locale_data->decimal_point; decimal_point_len = strlen (decimal_point); g_return_val_if_fail (decimal_point_len != 0, NULL); if (strcmp (decimal_point, ".")) { p = buffer; if (*p == '+' || *p == '-') p++; while (isdigit ((guchar)*p)) p++; if (strncmp (p, decimal_point, decimal_point_len) == 0) { *p = '.'; p++; if (decimal_point_len > 1) { rest_len = strlen (p + (decimal_point_len-1)); memmove (p, p + (decimal_point_len-1), rest_len); p[rest_len] = 0; } } } return buffer; } gchar * e_strdup_append_strings (gchar *first_string, ...) { gchar *buffer; gchar *current; gint length; va_list args1; va_list args2; gchar *v_string; gint v_int; va_start (args1, first_string); G_VA_COPY (args2, args1); length = 0; v_string = first_string; while (v_string) { v_int = va_arg (args1, gint); if (v_int >= 0) length += v_int; else length += strlen (v_string); v_string = va_arg (args1, gchar *); } buffer = g_new (gchar, length + 1); current = buffer; v_string = first_string; while (v_string) { v_int = va_arg (args2, gint); if (v_int < 0) { gint i; for (i = 0; v_string[i]; i++) { *(current++) = v_string[i]; } } else { gint i; for (i = 0; v_string[i] && i < v_int; i++) { *(current++) = v_string[i]; } } v_string = va_arg (args2, gchar *); } *(current++) = 0; va_end (args1); va_end (args2); return buffer; } cairo_font_options_t * get_font_options (void) { gchar *antialiasing, *hinting, *subpixel_order; GConfClient *gconf = gconf_client_get_default (); cairo_font_options_t *font_options = cairo_font_options_create (); /* Antialiasing */ antialiasing = gconf_client_get_string (gconf, "/desktop/gnome/font_rendering/antialiasing", NULL); if (antialiasing == NULL) cairo_font_options_set_antialias (font_options, CAIRO_ANTIALIAS_DEFAULT); else { if (strcmp (antialiasing, "grayscale") == 0) cairo_font_options_set_antialias (font_options, CAIRO_ANTIALIAS_GRAY); else if (strcmp (antialiasing, "rgba") == 0) cairo_font_options_set_antialias (font_options, CAIRO_ANTIALIAS_SUBPIXEL); else if (strcmp (antialiasing, "none") == 0) cairo_font_options_set_antialias (font_options, CAIRO_ANTIALIAS_NONE); else cairo_font_options_set_antialias (font_options, CAIRO_ANTIALIAS_DEFAULT); } hinting = gconf_client_get_string (gconf, "/desktop/gnome/font_rendering/hinting", NULL); if (hinting == NULL) cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_DEFAULT); else { if (strcmp (hinting, "full") == 0) cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_FULL); else if (strcmp (hinting, "medium") == 0) cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_MEDIUM); else if (strcmp (hinting, "slight") == 0) cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_SLIGHT); else if (strcmp (hinting, "none") == 0) cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE); else cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_DEFAULT); } subpixel_order = gconf_client_get_string (gconf, "/desktop/gnome/font_rendering/rgba_order", NULL); if (subpixel_order == NULL) cairo_font_options_set_subpixel_order (font_options, CAIRO_SUBPIXEL_ORDER_DEFAULT); else { if (strcmp (subpixel_order, "rgb") == 0) cairo_font_options_set_subpixel_order (font_options, CAIRO_SUBPIXEL_ORDER_RGB); else if (strcmp (subpixel_order, "bgr") == 0) cairo_font_options_set_subpixel_order (font_options, CAIRO_SUBPIXEL_ORDER_BGR); else if (strcmp (subpixel_order, "vrgb") == 0) cairo_font_options_set_subpixel_order (font_options, CAIRO_SUBPIXEL_ORDER_VRGB); else if (strcmp (subpixel_order, "vbgr") == 0) cairo_font_options_set_subpixel_order (font_options, CAIRO_SUBPIXEL_ORDER_VBGR); else cairo_font_options_set_subpixel_order (font_options, CAIRO_SUBPIXEL_ORDER_DEFAULT); } g_free (antialiasing); g_free (hinting); g_free (subpixel_order); g_object_unref (gconf); return font_options; } /** * e_file_update_save_path: * @uri: URI to store * @free: If TRUE, free uri * * Save the save_dir path for evolution. If free is TRUE, uri gets freed when * done. Genearally, this should be called with the output of * gtk_file_chooser_get_current_folder_uri() The URI must be a path URI, not a * file URI. **/ void e_file_update_save_path (gchar *uri, gboolean free) { GConfClient *gconf = gconf_client_get_default(); GError *error = NULL; gconf_client_set_string(gconf, "/apps/evolution/mail/save_dir", uri, &error); if (error != NULL) { g_warning("%s (%s) %s", G_STRLOC, G_STRFUNC, error->message); g_clear_error(&error); } g_object_unref(gconf); if (free) g_free(uri); } /** * e_file_get_save_path: * * Return the save_dir path for evolution. If there isn't a save_dir, returns * the users home directory. Returns an allocated URI that should be freed by * the caller. **/ gchar * e_file_get_save_path (void) { GConfClient *gconf = gconf_client_get_default(); GError *error = NULL; gchar *uri; uri = gconf_client_get_string(gconf, "/apps/evolution/mail/save_dir", &error); if (error != NULL) { g_warning("%s (%s) %s", G_STRLOC, G_STRFUNC, error->message); g_clear_error(&error); } g_object_unref(gconf); if (uri == NULL) uri = gnome_vfs_get_uri_from_local_path(g_get_home_dir()); return (uri); } /* Evolution Locks for crash recovery */ #define LOCK_FILE ".running" static const gchar * get_lock_filename (void) { static gchar *filename = NULL; if (G_UNLIKELY (filename == NULL)) filename = g_build_filename (e_get_user_data_dir (), LOCK_FILE, NULL); return filename; } gboolean e_file_lock_create () { const char *fname = get_lock_filename (); gboolean status = FALSE; int fd = g_creat (fname, S_IRUSR|S_IWUSR); if (fd == -1){ g_warning ("Lock file '%s' creation failed, error %d\n", fname, errno); } else { status = TRUE; close (fd); } return status; } void e_file_lock_destroy () { const char *fname = get_lock_filename (); if (g_unlink (fname) == -1){ g_warning ("Lock destroy: failed to unlink file '%s'!",fname); } } gboolean e_file_lock_exists () { const char *fname = get_lock_filename (); return g_file_test (fname, G_FILE_TEST_EXISTS); } f='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/security/base?h=mate-1.16&id=0677d0b6b73a2e6344a27fce42a5d44a9acd0a1d'>logstatsplain d---------bcrypt109logstatsplain d---------bcwipe141logstatsplain d---------bdc178logstatsplain d---------beecrypt178logstatsplain d---------belier109logstatsplain d---------bfbtester141logstatsplain d---------binwalk109logstatsplain d---------blindelephant178logstatsplain d---------botan110141logstatsplain d---------bro178logstatsplain d---------broccoli146logstatsplain d---------bruteblock178logstatsplain d---------bruteforceblocker178logstatsplain d---------bsdsfv109logstatsplain d---------bsmtrace178logstatsplain d---------bugs178logstatsplain d---------burpsuite141logstatsplain d---------ca_root_nss178logstatsplain d---------calife185logstatsplain d---------ccrypt146logstatsplain d---------ccsrch141logstatsplain d---------cfs178logstatsplain d---------cfv178logstatsplain d---------chaosreader141logstatsplain d---------checkpassword-pam109logstatsplain d---------checkpassword109logstatsplain d---------chkrootkit141logstatsplain d---------chntpw141logstatsplain d---------chroot_safe141logstatsplain d---------chrootuid141logstatsplain d---------ckpass141logstatsplain d---------cksfv109logstatsplain d---------cl-md5-sbcl73logstatsplain d---------cl-md5146logstatsplain d---------clamassassin109logstatsplain d---------clamav-milter36logstatsplain d---------clamav-unofficial-sigs219logstatsplain d---------clamav178logstatsplain d---------clambc178logstatsplain d---------clamcour141logstatsplain d---------clamd-stream-client109logstatsplain d---------clamsmtp178logstatsplain d---------clamtk146logstatsplain d---------clusterssh146logstatsplain d---------cmd5checkpw109logstatsplain d---------cops178logstatsplain d---------courier-authlib-base36logstatsplain d---------courier-authlib783logstatsplain d---------courierpassd148logstatsplain d---------courierpasswd148logstatsplain d---------courieruserinfo148logstatsplain d---------cp2fwb148logstatsplain d---------cracklib141logstatsplain d---------crank146logstatsplain d---------create-cert109logstatsplain d---------cryptlib141logstatsplain d---------cryptopp178logstatsplain d---------cryptstring146logstatsplain d---------cvm178logstatsplain d---------cyrus-sasl2-gssapi73logstatsplain d---------cyrus-sasl2-ldapdb73logstatsplain d---------cyrus-sasl2-saslauthd261logstatsplain d---------cyrus-sasl2178logstatsplain d---------d0_blind_id178logstatsplain d---------dcetest141logstatsplain d---------ddos_scan178logstatsplain d---------denyhosts178logstatsplain d---------destroy109logstatsplain d---------digest141logstatsplain d---------dirbuster178logstatsplain d---------dirmngr178logstatsplain d---------distcache178logstatsplain d---------dmitry109logstatsplain d---------doorman178logstatsplain d---------doscan141logstatsplain d---------dradis178logstatsplain d---------dropbear178logstatsplain d---------dsniff178logstatsplain d---------duo178logstatsplain d---------easy-rsa146logstatsplain d---------easypg185logstatsplain d---------elixir-comeonin178logstatsplain d---------elixir-comeonin_i18n178logstatsplain d---------elixir-jose178logstatsplain d---------engine_pkcs11146logstatsplain d---------erlang-jose178logstatsplain d---------erlang-p1tls178logstatsplain d---------esteidfirefoxplugin141logstatsplain d---------expiretable178logstatsplain d---------f-prot217logstatsplain d---------fakebo178logstatsplain d---------fakeident141logstatsplain d---------fakeroot178logstatsplain d---------fastd-devel141logstatsplain d---------fastd141logstatsplain d---------fbopenssl178logstatsplain d---------fcheck146logstatsplain d---------fcrackzip141logstatsplain d---------fiked109logstatsplain d---------find-zlib109logstatsplain d---------firewalk141logstatsplain d---------fl0p109logstatsplain d---------flawfinder109logstatsplain d---------fpc-openssl73logstatsplain d---------fpm2178logstatsplain d---------fprint_demo185logstatsplain d---------fprintd178logstatsplain d---------fragroute178logstatsplain d---------fragrouter141logstatsplain d---------fsh146logstatsplain d---------fswatch178logstatsplain d---------ftimes178logstatsplain d---------fuzz180logstatsplain d---------fuzzdb146logstatsplain d---------fwanalog178logstatsplain d---------fwbuilder178logstatsplain d---------fwipe141logstatsplain d---------fwknop178logstatsplain d---------fwlogwatch178logstatsplain d---------gag141logstatsplain d---------gcipher178logstatsplain d---------gcr146logstatsplain d---------gnome-gpg109logstatsplain d---------gnome-keyring-sharp146logstatsplain d---------gnome-keyring178logstatsplain d---------gnome-password-generator146logstatsplain d---------gnome-ssh-askpass141logstatsplain d---------gnomint178logstatsplain d---------gnupg256logstatsplain d---------gnupg1178logstatsplain d---------gnupg20256logstatsplain d---------gnutls178logstatsplain d---------go.crypto146logstatsplain d---------goptlib146logstatsplain d---------gorilla178logstatsplain d---------govpn109logstatsplain d---------gpa146logstatsplain d---------gpasman141logstatsplain d---------gpass146logstatsplain d---------gpgdir109logstatsplain d---------gpgme146logstatsplain d---------gputty109logstatsplain d---------gringotts178logstatsplain d---------gsasl146logstatsplain d---------gsfv109logstatsplain d---------gss146logstatsplain d---------gstreamer1-plugins-dtls36logstatsplain d---------gtk-knocker146logstatsplain d---------gtkpasman141logstatsplain d---------gwee141logstatsplain d---------hackbot146logstatsplain d---------hamachi141logstatsplain d---------heimdal178logstatsplain d---------hitch217logstatsplain d---------hlfl109logstatsplain d---------hmap178logstatsplain d---------honggfuzz146logstatsplain d---------hotssh178logstatsplain d---------hpenc109logstatsplain d---------hs-Crypto141logstatsplain d---------hs-DRBG109logstatsplain d---------hs-HsOpenSSL109logstatsplain d---------hs-RSA109logstatsplain d---------hs-SHA109logstatsplain d---------hs-certificate141logstatsplain d---------hs-cipher-aes109logstatsplain d---------hs-cipher-aes128109logstatsplain d---------hs-cipher-blowfish109logstatsplain d---------hs-cipher-camellia109logstatsplain d---------hs-cipher-des109logstatsplain d---------hs-cipher-rc4109logstatsplain d---------hs-clientsession109logstatsplain d---------hs-cprng-aes109logstatsplain d---------hs-crypto-api109logstatsplain d---------hs-crypto-cipher-types109logstatsplain d---------hs-crypto-conduit109logstatsplain d---------hs-crypto-numbers109logstatsplain d---------hs-crypto-pubkey-types109logstatsplain d---------hs-crypto-pubkey109logstatsplain d---------hs-crypto-random-api109logstatsplain d---------hs-crypto-random109logstatsplain d---------hs-cryptocipher109logstatsplain d---------hs-cryptohash-conduit109logstatsplain d---------hs-cryptohash-cryptoapi109logstatsplain d---------hs-cryptohash109logstatsplain d---------hs-cryptonite109logstatsplain d---------hs-digest109logstatsplain d---------hs-entropy109logstatsplain d---------hs-gnutls109logstatsplain d---------hs-monadcryptorandom109logstatsplain d---------hs-nonce109logstatsplain d---------hs-pem109logstatsplain d---------hs-pureMD5109logstatsplain d---------hs-pwstore-fast109logstatsplain d---------hs-skein109logstatsplain d---------hs-tls109logstatsplain d---------hs-x509-store109logstatsplain d---------hs-x509-system109logstatsplain d---------hs-x509-validation109logstatsplain d---------hs-x509109logstatsplain d---------httprint146logstatsplain d---------hydra141logstatsplain d---------i2p141logstatsplain d---------iaikpkcs11wrapper141logstatsplain d---------idea146logstatsplain d---------identify141logstatsplain d---------ifd-slb_rf60141logstatsplain d---------ike-scan146logstatsplain d---------ike178logstatsplain d---------integrit109logstatsplain d---------ipfcount141logstatsplain d---------ipfilter2dshield185logstatsplain d---------ipfmeta146logstatsplain d---------ipfw2dshield178logstatsplain d---------ipfwcount141logstatsplain d---------ipguard141logstatsplain d---------ipsec-tools178logstatsplain d---------ipv6toolkit178logstatsplain d---------isakmpd178logstatsplain d---------isnprober109logstatsplain d---------jbrofuzz178logstatsplain d---------john178logstatsplain d---------kc109logstatsplain d---------kedpm109logstatsplain d---------keepass178logstatsplain d---------keepassx178logstatsplain d---------keepassx2178logstatsplain d---------keybase148logstatsplain d---------keychain109logstatsplain d---------keynote141logstatsplain d---------keyprint146logstatsplain d---------kgpg-kde4146logstatsplain d---------knock141logstatsplain d---------knocker109logstatsplain d---------kpcli109logstatsplain d---------kqoauth146logstatsplain d---------krb5-112178logstatsplain d---------krb5-113178logstatsplain d---------krb5-appl178logstatsplain d---------krb5178logstatsplain d---------kripp109logstatsplain d---------kstart141logstatsplain d---------kwalletmanager146logstatsplain d---------l0pht-watch141logstatsplain d---------l0phtcrack141logstatsplain d---------l5141logstatsplain d---------lasso178logstatsplain d---------lastpass-cli148logstatsplain d---------libassuan146logstatsplain d---------libbeid217logstatsplain d---------libbf178logstatsplain d---------libbzrtp146logstatsplain d---------libcryptui146logstatsplain d---------libecc146logstatsplain d---------libfprint178logstatsplain d---------libgcrypt178logstatsplain d---------libgnome-keyring146logstatsplain d---------libgnomesu178logstatsplain d---------libgpg-error146logstatsplain d---------libgringotts146logstatsplain d---------libident146logstatsplain d---------libkpass141logstatsplain d---------libksba146logstatsplain d---------libmcrypt146logstatsplain d---------libntlm146logstatsplain d---------libotr146logstatsplain d---------libotr3146logstatsplain d---------libp11146logstatsplain d---------libprelude178logstatsplain d---------libpreludedb178logstatsplain d---------libpwquality146logstatsplain d---------libpwstor178logstatsplain d---------libressl178logstatsplain d---------libscrypt109logstatsplain d---------libsecret146logstatsplain d---------libsectok109logstatsplain d---------libsodium146logstatsplain d---------libsparkcrypto178logstatsplain d---------libssh146logstatsplain d---------libssh2146logstatsplain d---------libtasn1146logstatsplain d---------libtomcrypt178logstatsplain d---------libuecc178logstatsplain d---------libwhisker141logstatsplain d---------libyubikey109logstatsplain d---------libzrtpcppcore178logstatsplain d---------linux-c6-cyrus-sasl2206logstatsplain d---------linux-c6-gnutls247logstatsplain d---------linux-c6-libgcrypt206logstatsplain d---------linux-c6-libgpg-error243logstatsplain d---------linux-c6-libssh2206logstatsplain d---------linux-c6-libtasn1247logstatsplain d---------linux-c6-nss206logstatsplain d---------linux-c6-openssl-compat243logstatsplain d---------linux-c6-openssl206logstatsplain d---------linux-f10-cyrus-sasl277logstatsplain d---------linux-f10-gnutls114logstatsplain d---------linux-f10-libgcrypt77logstatsplain d---------linux-f10-libgpg-error114logstatsplain d---------linux-f10-libssh277logstatsplain d---------linux-f10-libtasn177logstatsplain d---------linux-f10-nss114logstatsplain d---------linux-f10-openssl114logstatsplain d---------lockdown146logstatsplain d---------log2timeline146logstatsplain d---------logcheck178logstatsplain d---------lsh146logstatsplain d---------luasec146logstatsplain d---------lynis146logstatsplain d---------mac-robber109logstatsplain d---------maia178logstatsplain d---------mailzu178logstatsplain d---------makepasswd109logstatsplain d---------manipulate_data141logstatsplain d---------masscan109logstatsplain d---------massh146logstatsplain d---------matrixssl146logstatsplain d---------mbedtls146logstatsplain d---------mcrypt146logstatsplain d---------md4coll148logstatsplain d---------md5coll109logstatsplain d---------md5deep146logstatsplain d---------mdcrack141logstatsplain d---------medusa178logstatsplain d---------meek141logstatsplain d---------metasploit109logstatsplain d---------mhash178logstatsplain d---------mindterm-binary146logstatsplain d---------monkeysphere219logstatsplain d---------munge178logstatsplain d---------mussh109logstatsplain d---------nacl178logstatsplain d---------ncrack146logstatsplain d---------ncrypt141logstatsplain d---------nessus-libnasl178logstatsplain d---------nessus-libraries178logstatsplain d---------nessus-plugins185logstatsplain d---------nessus258logstatsplain d---------netpgp146logstatsplain d---------nettle178logstatsplain d---------nikto146logstatsplain d---------nist-kat146logstatsplain d---------nmap178logstatsplain d---------nmapsi4146logstatsplain d---------nss178logstatsplain d---------nss_compat_ossl178logstatsplain d---------oath-toolkit146logstatsplain d---------obfsclient141logstatsplain d---------obfsproxy178logstatsplain d---------ocaml-cryptgps109logstatsplain d---------ocaml-cryptokit109logstatsplain d---------ocaml-ssl109logstatsplain d---------oidentd141logstatsplain d---------oinkmaster109logstatsplain d---------op146logstatsplain d---------openbsm-devel178logstatsplain d---------openbsm146logstatsplain d---------openca-tools-forked146logstatsplain d---------opencdk146logstatsplain d---------openconnect178logstatsplain d---------opencryptoki178logstatsplain d---------openct217logstatsplain d---------openpgpsdk109logstatsplain d---------opensaml2178logstatsplain d---------opensc217logstatsplain d---------openscep178logstatsplain d---------openssh-askpass141logstatsplain d---------openssh-portable-devel217logstatsplain d---------openssh-portable217logstatsplain d---------openssl178logstatsplain d---------openssl_tpm_engine178logstatsplain d---------openvas-client178logstatsplain d---------openvas-libnasl178logstatsplain d---------openvas-libraries178logstatsplain d---------openvas-plugins178logstatsplain d---------openvas-server178logstatsplain d---------openvpn-admin178logstatsplain d---------openvpn-auth-ldap141logstatsplain d---------openvpn-auth-radius141logstatsplain d---------openvpn-devel178logstatsplain d---------openvpn-polarssl36logstatsplain d---------openvpn214logstatsplain d---------ophcrack180logstatsplain d---------orthrus185logstatsplain d---------osiris224logstatsplain d---------ossec-hids-client80logstatsplain d---------ossec-hids-local36logstatsplain d---------ossec-hids-server178logstatsplain d---------osslsigncode109logstatsplain d---------outguess146logstatsplain d---------p11-kit178logstatsplain d---------p5-Apache-Htpasswd146logstatsplain d---------p5-App-Genpass146logstatsplain d---------p5-App-TLSMe146logstatsplain d---------p5-Auth-YubikeyDecrypter146logstatsplain d---------p5-AuthCAS146logstatsplain d---------p5-Authen-Bitcard146logstatsplain d---------p5-Authen-Captcha146logstatsplain d---------p5-Authen-CyrusSASL178logstatsplain d---------p5-Authen-DecHpwd146logstatsplain d---------p5-Authen-Htpasswd146logstatsplain d---------p5-Authen-Krb5-Simple178logstatsplain d---------p5-Authen-Krb5178logstatsplain d---------p5-Authen-Libwrap178logstatsplain d---------p5-Authen-NTLM146logstatsplain d---------p5-Authen-OATH146logstatsplain d---------p5-Authen-PAAS146logstatsplain d---------p5-Authen-PAM146logstatsplain d---------p5-Authen-Passphrase146logstatsplain d---------p5-Authen-PluggableCaptcha146logstatsplain d---------p5-Authen-Radius146logstatsplain d---------p5-Authen-SASL-Cyrus146logstatsplain d---------p5-Authen-SASL-SASLprep146logstatsplain d---------p5-Authen-SASL146logstatsplain d---------p5-Authen-SCRAM146logstatsplain d---------p5-Authen-Simple-DBI146logstatsplain d---------p5-Authen-Simple-DBM146logstatsplain d---------p5-Authen-Simple-HTTP146logstatsplain d---------p5-Authen-Simple-Kerberos146logstatsplain d---------p5-Authen-Simple-LDAP146logstatsplain d---------p5-Authen-Simple-Net146logstatsplain d---------p5-Authen-Simple-PAM146logstatsplain d---------p5-Authen-Simple-Passwd146logstatsplain d---------p5-Authen-Simple-RADIUS146logstatsplain d---------p5-Authen-Simple-SMB146logstatsplain d---------p5-Authen-Simple-SSH146logstatsplain d---------p5-Authen-Simple146logstatsplain d---------p5-Authen-Smb178logstatsplain d---------p5-Authen-TacacsPlus178logstatsplain d---------p5-Authen-Ticket146logstatsplain d---------p5-Authen-TypeKey146logstatsplain d---------p5-Business-PayPal-EWP146logstatsplain d---------p5-CACertOrg-CA146logstatsplain d---------p5-CSP146logstatsplain d---------p5-Cisco-Hash146logstatsplain d---------p5-Crypt-Anubis178logstatsplain d---------p5-Crypt-AppleTwoFish146logstatsplain d---------p5-Crypt-Blowfish146logstatsplain d---------p5-Crypt-Blowfish_PP146logstatsplain d---------p5-Crypt-CAST5146logstatsplain d---------p5-Crypt-CAST5_PP146logstatsplain d---------p5-Crypt-CBC146logstatsplain d---------p5-Crypt-CBCeasy146logstatsplain d---------p5-Crypt-CFB146logstatsplain d---------p5-Crypt-Caesar146logstatsplain d---------p5-Crypt-Camellia_PP146logstatsplain d---------p5-Crypt-Chimera146logstatsplain d---------p5-Crypt-CipherSaber146logstatsplain d---------p5-Crypt-Cracklib146logstatsplain d---------p5-Crypt-Ctr146logstatsplain d---------p5-Crypt-DES146logstatsplain d---------p5-Crypt-DES_EDE3146logstatsplain d---------p5-Crypt-DES_PP146logstatsplain d---------p5-Crypt-DH146logstatsplain d---------p5-Crypt-DSA146logstatsplain d---------p5-Crypt-Dining146logstatsplain d---------p5-Crypt-ECB146logstatsplain d---------p5-Crypt-Eksblowfish146logstatsplain d---------p5-Crypt-Enigma146logstatsplain d---------p5-Crypt-GCrypt178logstatsplain d---------p5-Crypt-GOST178logstatsplain d---------p5-Crypt-GOST_PP146logstatsplain d---------p5-Crypt-GPG146logstatsplain d---------p5-Crypt-GeneratePassword146logstatsplain d---------p5-Crypt-HCE_MD5146logstatsplain d---------p5-Crypt-HCE_SHA146logstatsplain d---------p5-Crypt-IDEA146logstatsplain d---------p5-Crypt-Imail146logstatsplain d---------p5-Crypt-Juniper146logstatsplain d---------p5-Crypt-Khazad146logstatsplain d---------p5-Crypt-License146logstatsplain d---------p5-Crypt-Lite146logstatsplain d---------p5-Crypt-Loki97146logstatsplain d---------p5-Crypt-MySQL146logstatsplain d---------p5-Crypt-NULL146logstatsplain d---------p5-Crypt-OFB146logstatsplain d---------p5-Crypt-OICQ146logstatsplain d---------p5-Crypt-OTP146logstatsplain d---------p5-Crypt-OpenPGP178logstatsplain d---------p5-Crypt-OpenSSL-AES146logstatsplain d---------p5-Crypt-OpenSSL-Bignum146logstatsplain d---------p5-Crypt-OpenSSL-CA146logstatsplain d---------p5-Crypt-OpenSSL-DSA178logstatsplain d---------p5-Crypt-OpenSSL-EC146logstatsplain d---------p5-Crypt-OpenSSL-ECDSA146logstatsplain d---------p5-Crypt-OpenSSL-RSA146logstatsplain d---------p5-Crypt-OpenSSL-Random146logstatsplain d---------p5-Crypt-OpenSSL-X509178logstatsplain d---------p5-Crypt-PBKDF2146logstatsplain d---------p5-Crypt-PGPSimple146logstatsplain d---------p5-Crypt-PWSafe3146logstatsplain d---------p5-Crypt-PassGen146logstatsplain d---------p5-Crypt-Passwd-XS146logstatsplain d---------p5-Crypt-PasswdMD5146logstatsplain d---------p5-Crypt-Password-Util146logstatsplain d---------p5-Crypt-Primes146logstatsplain d---------p5-Crypt-RC4146logstatsplain d---------p5-Crypt-RC5146logstatsplain d---------p5-Crypt-RC6146logstatsplain d---------p5-Crypt-RHash178logstatsplain d---------p5-Crypt-RIPEMD160146logstatsplain d---------p5-Crypt-RSA-Yandex146logstatsplain d---------p5-Crypt-RSA146logstatsplain d---------p5-Crypt-Rabbit146logstatsplain d---------p5-Crypt-RandPasswd178logstatsplain d---------p5-Crypt-Random-Source146logstatsplain d---------p5-Crypt-Random146logstatsplain d---------p5-Crypt-Rijndael146logstatsplain d---------p5-Crypt-Rijndael_PP146logstatsplain d---------p5-Crypt-SKey146logstatsplain d---------p5-Crypt-SMIME146logstatsplain d---------p5-Crypt-SSLeay146logstatsplain d---------p5-Crypt-Salt146logstatsplain d---------p5-Crypt-SaltedHash146logstatsplain d---------p5-Crypt-Serpent146logstatsplain d---------p5-Crypt-Shark146logstatsplain d---------p5-Crypt-Simple146logstatsplain d---------p5-Crypt-SmbHash146logstatsplain d---------p5-Crypt-Sodium146logstatsplain d---------p5-Crypt-Solitaire146logstatsplain d---------p5-Crypt-TEA178logstatsplain d---------p5-Crypt-T_e_a146logstatsplain d---------p5-Crypt-Tea_JS146logstatsplain d---------p5-Crypt-TripleDES146logstatsplain d---------p5-Crypt-Twofish146logstatsplain d---------p5-Crypt-Twofish2146logstatsplain d---------p5-Crypt-Twofish_PP146logstatsplain d---------p5-Crypt-URandom146logstatsplain d---------p5-Crypt-UnixCrypt146logstatsplain d---------p5-Crypt-UnixCrypt_XS146logstatsplain d---------p5-Crypt-X509146logstatsplain d---------p5-Crypt-xDBM_File146logstatsplain d---------p5-CryptX146logstatsplain d---------p5-Dancer-Plugin-Auth-Extensible-Provider-Usergroup146logstatsplain d---------p5-Dancer-Plugin-Auth-Extensible146logstatsplain d---------p5-Dancer-Plugin-Passphrase146logstatsplain d---------p5-Dancer2-Plugin-Auth-Extensible-Provider-Usergroup146logstatsplain d---------p5-Dancer2-Plugin-Auth-Extensible146logstatsplain d---------p5-Dancer2-Plugin-Passphrase146logstatsplain d---------p5-Data-Entropy146logstatsplain d---------p5-Data-Password146logstatsplain d---------p5-Digest-Adler32146logstatsplain d---------p5-Digest-Bcrypt146logstatsplain d---------p5-Digest-BubbleBabble146logstatsplain d---------p5-Digest-CRC146logstatsplain d---------p5-Digest-Crc32146logstatsplain d---------p5-Digest-DJB146logstatsplain d---------p5-Digest-DMAC146logstatsplain d---------p5-Digest-EMAC146logstatsplain d---------p5-Digest-Elf146logstatsplain d---------p5-Digest-FNV146logstatsplain d---------p5-Digest-GOST146logstatsplain d---------p5-Digest-HMAC146logstatsplain d---------p5-Digest-Hashcash146logstatsplain d---------p5-Digest-Haval256146logstatsplain d---------p5-Digest-JHash146logstatsplain d---------p5-Digest-MD2146logstatsplain d---------p5-Digest-MD4146logstatsplain d---------p5-Digest-MD5-File146logstatsplain d---------p5-Digest-MD5-M4p146logstatsplain d---------p5-Digest-MD5-Reverse146logstatsplain d---------p5-Digest-MD5146logstatsplain d---------p5-Digest-ManberHash146logstatsplain d---------p5-Digest-MurmurHash146logstatsplain d---------p5-Digest-Nilsimsa146logstatsplain d---------p5-Digest-Pearson-PurePerl146logstatsplain d---------p5-Digest-Pearson146logstatsplain d---------p5-Digest-Perl-MD4146logstatsplain d---------p5-Digest-Perl-MD5146logstatsplain d---------p5-Digest-SHA-PurePerl146logstatsplain d---------p5-Digest-SHA146logstatsplain d---------p5-Digest-SHA1146logstatsplain d---------p5-Digest-SV1146logstatsplain d---------p5-Digest-Tiger146logstatsplain d---------p5-Digest-Whirlpool146logstatsplain d---------p5-Digest146logstatsplain d---------p5-File-KeePass-Agent146logstatsplain d---------p5-File-KeePass146logstatsplain d---------p5-File-Scan-ClamAV146logstatsplain d---------p5-File-Scan146logstatsplain d---------p5-Filter-CBC146logstatsplain d---------p5-Filter-Crypto146logstatsplain d---------p5-GD-SecurityImage146logstatsplain d---------p5-GSSAPI178logstatsplain d---------p5-GnuPG-Interface146logstatsplain d---------p5-GnuPG146logstatsplain d---------p5-HTML-Email-Obfuscate146logstatsplain d---------p5-Heimdal-Kadm5178logstatsplain d---------p5-IO-Async-SSL146logstatsplain d---------p5-IO-Socket-SSL146logstatsplain d---------p5-MD5146logstatsplain d---------p5-Mcrypt146logstatsplain d---------p5-Module-Signature146logstatsplain d---------p5-Net-Daemon-SSL146logstatsplain d---------p5-Net-OpenID-Common146logstatsplain d---------p5-Net-OpenID-JanRain146logstatsplain d---------p5-Net-OpenID-Server146logstatsplain d---------p5-Net-Radius-Server146logstatsplain d---------p5-Net-SAML178logstatsplain d---------p5-Net-SSL-ExpireDate146logstatsplain d---------p5-Net-SSLGlue146logstatsplain d---------p5-Net-SSLeay178logstatsplain d---------p5-Net-Server-Mail-ESMTP-AUTH146logstatsplain d---------p5-Net-SinFP146logstatsplain d---------p5-Nmap-Parser146logstatsplain d---------p5-Nmap-Scanner146logstatsplain d---------p5-OpenCA-CRL146logstatsplain d---------p5-OpenCA-CRR146logstatsplain d---------p5-OpenCA-OpenSSL146logstatsplain d---------p5-OpenCA-PKCS7146logstatsplain d---------p5-OpenCA-REQ146logstatsplain d---------p5-OpenCA-X509146logstatsplain d---------p5-PBKDF2-Tiny146logstatsplain d---------p5-PGP-Sign146logstatsplain d---------p5-PGP178logstatsplain d---------p5-POE-Component-SSLify146logstatsplain d---------p5-POE-Filter-SSL146logstatsplain d---------p5-PerlCryptLib146logstatsplain d---------p5-SAVI-Perl178logstatsplain d---------p5-SHA146logstatsplain d---------p5-Safe-Hole146logstatsplain d---------p5-Session-Token146logstatsplain d---------p5-Snort-Rule109logstatsplain d---------p5-String-MkPasswd146logstatsplain d---------p5-Sudo146logstatsplain d---------p5-Text-Password-Pronounceable146logstatsplain d---------p5-Tie-EncryptedHash146logstatsplain d---------p5-Tree-Authz146logstatsplain d---------p5-Unix-Passwd-File146logstatsplain d---------p5-Yahoo-BBAuth146logstatsplain d---------p5-dicewaregen109logstatsplain d---------p5-openxpki-i18n146logstatsplain d---------p5-openxpki178logstatsplain d---------pad141logstatsplain d---------pam-mysql141logstatsplain d---------pam-pgsql178logstatsplain d---------pam_fprint141logstatsplain d---------pam_google_authenticator141logstatsplain d---------pam_helper109logstatsplain d---------pam_jail141logstatsplain d---------pam_kde105logstatsplain d---------pam_krb5-rh178logstatsplain d---------pam_krb5146logstatsplain d---------pam_ldap217logstatsplain d---------pam_mkhomedir141logstatsplain d---------pam_ocra109logstatsplain d---------pam_p11178logstatsplain d---------pam_per_user178logstatsplain d---------pam_pseudo146logstatsplain d---------pam_pwdfile141logstatsplain d---------pam_require141logstatsplain d---------pam_search_list109logstatsplain d---------pam_ssh_agent_auth141logstatsplain d---------pam_yubico141logstatsplain d---------pamtester141logstatsplain d---------paperkey109logstatsplain d---------parano146logstatsplain d---------passivedns178logstatsplain d---------pbc146logstatsplain d---------pbnj146logstatsplain d---------pcsc-tools146logstatsplain d---------pear-Auth109logstatsplain d---------pear-Auth_HTTP109logstatsplain d---------pear-Auth_OpenID141logstatsplain d---------pear-Auth_PrefManager109logstatsplain d---------pear-Auth_SASL109logstatsplain d---------pear-Crypt_Blowfish109logstatsplain d---------pear-Crypt_CBC150logstatsplain d---------pear-Crypt_CHAP109logstatsplain d---------pear-Crypt_DiffieHellman109logstatsplain d---------pear-Crypt_GPG109logstatsplain d---------pear-Crypt_HMAC2109logstatsplain d---------pear-Crypt_MicroID109logstatsplain d---------pear-Crypt_RC4109logstatsplain d---------pear-Crypt_RSA109logstatsplain d---------pear-Crypt_XXTEA109logstatsplain d---------pear-File_HtAccess109logstatsplain d---------pear-File_Passwd109logstatsplain d---------pear-File_SMBPasswd109logstatsplain d---------pear-HTML_Crypt109logstatsplain d---------pear-Horde_Auth109logstatsplain d---------pear-Horde_Crypt109logstatsplain d---------pear-Horde_Crypt_Blowfish109logstatsplain d---------pear-Horde_Group109logstatsplain d---------pear-Horde_Oauth109logstatsplain d---------pear-Horde_Perms109logstatsplain d---------pear-Horde_Secret109logstatsplain d---------pear-Horde_Share109logstatsplain d---------pear-LiveUser109logstatsplain d---------pear-LiveUser_Admin109logstatsplain d---------pear-Net_Portscan109logstatsplain d---------pear-Text_Password109logstatsplain d---------pecl-crack141logstatsplain d---------pecl-crypto141logstatsplain d---------pecl-gnupg109logstatsplain d---------pecl-pam109logstatsplain d---------pecl-scrypt109logstatsplain d---------pecl-ssh2109logstatsplain d---------pecl-taint109logstatsplain d---------pecl-tcpwrap109logstatsplain d---------pev178logstatsplain d---------pft141logstatsplain d---------pgp178logstatsplain d---------pgpdump109logstatsplain d---------pgpgpg109logstatsplain d---------pgpin178logstatsplain d---------php-suhosin109logstatsplain d---------php5-filter68logstatsplain d---------php5-hash36logstatsplain d---------php5-mcrypt36logstatsplain d---------php5-openssl36logstatsplain d---------php55-filter68logstatsplain d---------php55-hash36logstatsplain d---------php55-mcrypt36logstatsplain d---------php55-openssl36logstatsplain d---------php56-filter68logstatsplain d---------php56-hash36logstatsplain d---------php56-mcrypt36logstatsplain d---------php56-openssl36logstatsplain d---------phpdeadlock178logstatsplain d---------phpsecinfo146logstatsplain d---------pidentd141logstatsplain d---------pidgin-encryption146logstatsplain d---------pidgin-otr146logstatsplain d---------pinentry-curses36logstatsplain d---------pinentry-gnome336logstatsplain d---------pinentry-gtk236logstatsplain d---------pinentry-qt436logstatsplain d---------pinentry-tty36