--- src/string_utils.c.orig 2006-09-07 09:36:48.016794000 +0200 +++ src/string_utils.c 2006-09-07 09:36:59.185492000 +0200 @@ -21,6 +21,46 @@ #include #include "string_utils.h" +#if defined (__SVR4) && defined (__sun) +#ifdef HAVE_TIME_H +#include +#endif + +static char *mkdtemp (gchar *tmpl) +{ + static const gchar LETTERS[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; + static guint64 value = 0; + guint64 v; + gint len; + gint i, j; + + len = strlen (tmpl); + if (len < 6 || strcmp (&tmpl[len - 6], "XXXXXX") != 0) + { + errno = EINVAL; + return NULL; + } + + value += ((guint64) time (NULL)) ^ getpid (); + + for (i = 0; i < TMP_MAX; ++i, value += 7777) + { + /* fill in the random bits */ + for (j = 0, v = value; j < 6; ++j) + tmpl[(len - 6) + j] = LETTERS[v % 62]; v /= 62; + + /* try to create the directory */ + if (g_mkdir (tmpl, 0700) == 0) + return tmpl; + else if (errno != EEXIST) + return NULL; + } + + errno = EEXIST; + return NULL; +} +#endif + gchar *EscapeBadChars ( gchar *string , gchar *pattern) { return escape_str_common (string, pattern, '\\', 0); --- src/string_utils.h.orig 2006-09-07 09:37:09.598142750 +0200 +++ src/string_utils.h 2006-09-07 09:37:15.710524750 +0200 @@ -19,6 +19,10 @@ #ifndef STRING_UTILS_H #define STRING_UTILS_H +#if defined (__SVR4) && defined (__sun) +static char *mkdtemp (gchar *tmpl); +#endif + gchar *EscapeBadChars ( gchar *string , gchar *pattern); gchar *StripPathFromFilename ( gchar *name, gchar *pattern ); gchar *JoinPathArchiveName ( const gchar *extract_path , gchar *path );