summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--plugins/python/python.c40
-rw-r--r--src/common/util.c21
2 files changed, 31 insertions, 30 deletions
diff --git a/plugins/python/python.c b/plugins/python/python.c
index 06cc7a3b..1904a3e9 100644
--- a/plugins/python/python.c
+++ b/plugins/python/python.c
@@ -52,14 +52,13 @@
  */
 
 #include <glib.h>
+#include <glib/gstdio.h>
 #include <string.h>
 #include <stdlib.h>
 #include <sys/types.h>
 
 #ifdef WIN32
 #include <direct.h>
-#include <glib/gstdio.h>
-#include "../../src/dirent/dirent-win32.h"
 #else
 #include <unistd.h>
 #include <dirent.h>
@@ -459,26 +458,31 @@ Util_BuildEOLList(char *word[])
 static void
 Util_Autoload_from (const char *dir_name)
 {
-#ifndef PATH_MAX
-#define PATH_MAX 1024	/* Hurd doesn't define it */
-#endif
-	char oldcwd[PATH_MAX];
-	struct dirent *ent;
-	DIR *dir;
-	if (getcwd(oldcwd, PATH_MAX) == NULL)
+	gchar *oldcwd;
+	const char *entry_name;
+	GDir *dir;
+
+	oldcwd = g_get_current_dir ();
+	if (oldcwd == NULL)
 		return;
-	if (chdir(dir_name) != 0)
+	if (g_chdir(dir_name) != 0)
+	{
+		g_free (oldcwd);
 		return;
-	dir = opendir(".");
+	}
+	dir = g_dir_open (".", 0, NULL);
 	if (dir == NULL)
+	{
+		g_free (oldcwd);
 		return;
-	while ((ent = readdir(dir))) {
-		int len = strlen(ent->d_name);
-		if (len > 3 && strcmp(".py", ent->d_name+len-3) == 0)
-			Command_PyLoad(ent->d_name);
 	}
-	closedir(dir);
-	chdir(oldcwd);
+	while ((entry_name = g_dir_read_name (dir)))
+	{
+		if (g_str_has_suffix (entry_name, ".py"))
+			Command_PyLoad((char*)entry_name);
+	}
+	g_dir_close (dir);
+	g_chdir (oldcwd);
 }
 
 static void
@@ -486,7 +490,7 @@ Util_Autoload()
 {
 	const char *xdir;
 	char *sub_dir;
-	/* we need local filesystem encoding for chdir, opendir etc */
+	/* we need local filesystem encoding for g_chdir, g_dir_open etc */
 
 	xdir = hexchat_get_info(ph, "configdir");
 
diff --git a/src/common/util.c b/src/common/util.c
index 2dc0034b..167f8b81 100644
--- a/src/common/util.c
+++ b/src/common/util.c
@@ -34,13 +34,11 @@
 #include <process.h>
 #include <io.h>
 #include <VersionHelpers.h>
-#include "../dirent/dirent-win32.h"
 #else
 #include <unistd.h>
 #include <pwd.h>
 #include <sys/time.h>
 #include <sys/utsname.h>
-#include <dirent.h>
 #endif
 
 #include "../../config.h"
@@ -934,27 +932,26 @@ break_while:
 void
 for_files (char *dirname, char *mask, void callback (char *file))
 {
-	DIR *dir;
-	struct dirent *ent;
+	GDir *dir;
+	const gchar *entry_name;
 	char *buf;
 
-	dir = opendir (dirname);
+	dir = g_dir_open (dirname, 0, NULL);
 	if (dir)
 	{
-		while ((ent = readdir (dir)))
+		while ((entry_name = g_dir_read_name (dir)))
 		{
-			if (strcmp (ent->d_name, ".") && strcmp (ent->d_name, ".."))
+			if (strcmp (entry_name, ".") && strcmp (entry_name, ".."))
 			{
-				if (match (mask, ent->d_name))
+				if (match (mask, entry_name))
 				{
-					buf = malloc (strlen (dirname) + strlen (ent->d_name) + 2);
-					sprintf (buf, "%s" G_DIR_SEPARATOR_S "%s", dirname, ent->d_name);
+					buf = g_build_filename (dirname, entry_name, NULL);
 					callback (buf);
-					free (buf);
+					g_free (buf);
 				}
 			}
 		}
-		closedir (dir);
+		g_dir_close (dir);
 	}
 }