diff -ru3 ../glib.cvs/ChangeLog ./ChangeLog
--- ../glib.cvs/ChangeLog Sun Nov 01 01:08:16 1998
+++ ./ChangeLog Sun Nov 01 02:05:42 1998
@@ -1,3 +1,18 @@
+1998-11-01 Tor Lillqvist <
[email protected]
+
+ * glib.def: Added the new functions.
+
+ * gutils.c:
+ (g_getenv): Better implementation on Win32. No loop necessary.
+ (g_get_any_init): Use P_tmpdir if defined as tmp directory. Don't
+ set home dir always to NULL on Win32. Don't use tmp directory as
+ last resort home directory, but return NULL if no home
+ directory is known (application must check).
+
+ * makefile.msc: Better touch command, just COPYing a single file
+ sets the timestamp from that file, which isn't what touching should
+ do.
+
Sat Oct 31 05:08:26 1998 Tim Janik <
[email protected]>
* glib.h: removed old G_ENUM(), G_FLAGS(), G_NV() and G_SV() macros.
diff -ru3 ../glib.cvs/glib.def ./glib.def
--- ../glib.cvs/glib.def Tue Oct 27 05:44:44 1998
+++ ./glib.def Sun Nov 01 01:24:52 1998
@@ -204,6 +204,7 @@
g_scanner_scope_remove_symbol
g_scanner_set_scope
g_scanner_stat_mode
+ g_scanner_sync_file_offset
g_scanner_thaw_symbol_table
g_scanner_unexp_token
g_scanner_warn
@@ -245,6 +246,7 @@
g_strdup_printf
g_strdup_vprintf
g_strerror
+ g_strfreev
g_string_append
g_string_append_c
g_string_assign
@@ -265,11 +267,13 @@
g_string_sprintfa
g_string_truncate
g_string_up
+ g_strjoinv
g_strescape
g_strndup
g_strnfill
g_strreverse
g_strsignal
+ g_strsplit
g_strtod
g_strup
g_timer_destroy
diff -ru3 ../glib.cvs/gutils.c ./gutils.c
--- ../glib.cvs/gutils.c Tue Oct 27 08:07:14 1998
+++ ./gutils.c Sun Nov 01 02:06:04 1998
@@ -328,8 +328,10 @@
return getenv (variable);
#else
gchar *v;
- guint l, k;
- gchar *p;
+ guint k;
+ static gchar *p = NULL;
+ static gint l;
+ gchar dummy[2];
g_return_val_if_fail (variable != NULL, NULL);
@@ -342,23 +344,20 @@
* calling ExpandEnvironmentStrings.
*/
- v = g_strdup (v);
- l = 16;
- do
+ /* First check how much space we need */
+ k = ExpandEnvironmentStrings (v, dummy, 2);
+ /* Then allocate that much, and actualy do the expansion */
+ if (p == NULL)
{
- p = g_new (gchar, l);
-
- k = ExpandEnvironmentStrings (v, p, l);
- if (k > l)
- {
- g_free (p);
- l *= 2;
- }
+ p = g_malloc (k);
+ l = k;
}
- while (k > l);
-
- g_free (v);
-
+ else if (k > l)
+ {
+ p = g_realloc (p, k);
+ l = k;
+ }
+ ExpandEnvironmentStrings (v, p, k);
return p;
#endif
}
@@ -383,13 +382,23 @@
if (!g_tmp_dir)
g_tmp_dir = g_strdup (g_getenv ("TEMP"));
+#ifdef P_tmpdir
+ if (!g_tmp_dir)
+ {
+ int k;
+ g_tmp_dir = g_strdup (P_tmpdir);
+ k = strlen (g_tmp_dir);
+ if (g_tmp_dir[k-1] == G_DIR_SEPARATOR)
+ g_tmp_dir[k-1] = '\0';
+ }
+#endif
if (!g_tmp_dir)
{
#ifndef NATIVE_WIN32
- g_tmp_dir = g_strdup (G_DIR_SEPARATOR_S "tmp");
-#else /* !NATIVE_WIN32 */
- g_tmp_dir = g_strdup (".");
-#endif /* !NATIVE_WIN32 */
+ g_tmp_dir = g_strdup ("/tmp");
+#else /* NATIVE_WIN32 */
+ g_tmp_dir = g_strdup ("C:\\");
+#endif /* NATIVE_WIN32 */
}
g_home_dir = g_strdup (g_getenv ("HOME"));
@@ -421,7 +430,6 @@
}
else
g_real_name = g_strdup (g_user_name);
- g_home_dir = NULL;
}
# else /* !NATIVE_WIN32 */
g_user_name = g_strdup ("somebody");
@@ -430,9 +438,6 @@
# endif /* !NATIVE_WIN32 */
#endif /* !HAVE_PWD_H */
}
-
- if (!g_home_dir)
- g_home_dir = g_strdup (g_tmp_dir);
}
gchar*
@@ -453,6 +458,12 @@
return g_real_name;
}
+/* Return the home directory of the user. If there is a HOME
+ * environment variable, its value is returned, otherwise use some
+ * system-dependent way of finding it out. If no home directory can be
+ * deduced, return NULL.
+ */
+
gchar*
g_get_home_dir (void)
{
@@ -462,6 +473,13 @@
return g_home_dir;
}
+/* Return a directory to be used to store temporary files. This is the
+ * value of the TMPDIR, TMP or TEMP environment variables (they are
+ * checked in that order). If none of those exist, use P_tmpdir from
+ * stdio.h. If that isn't defined, return "/tmp" on POSIXly systems,
+ * and C:\ on Windows.
+ */
+
gchar*
g_get_tmp_dir (void)
{
@@ -517,7 +535,7 @@
GIOChannel*
g_iochannel_new (gint fd)
{
- GIOChannel *channel = g_new0 (GIOChannel, 1);
+ GIOChannel *channel = g_new (GIOChannel, 1);
channel->fd = fd;
diff -ru3 ../glib.cvs/makefile.msc ./makefile.msc
--- ../glib.cvs/makefile.msc Tue Oct 27 08:07:14 1998
+++ ./makefile.msc Sun Nov 01 01:30:22 1998
@@ -9,7 +9,7 @@
LDFLAGS = /link /nodefaultlib:libc msvcrt.lib # /debug:full /debugtype:cv
INSTALL = copy
-TOUCH = copy makefile.msc
+TOUCH = copy makefile.msc+nul
GLIB_VER = 1.1