Use g_dir_{open,read_name,close}.

Replace opendir, readdir and closedir by their GLib wrappers so that
files on Windows will be retrieved with the wide character api.


git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@15403 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Andreas Köhler
2007-01-20 18:37:35 +00:00
parent 3eb2abc024
commit 6783775210
7 changed files with 63 additions and 92 deletions

View File

@@ -235,16 +235,16 @@ static size_t
init_from_dir(const char *dirname, unsigned int max_files)
{
char filename[1024];
struct dirent *de;
const gchar *de;
struct stat stats;
size_t total;
int result;
DIR *dir;
GDir *dir;
if (max_files <= 0)
return 0;
dir = opendir (dirname);
dir = g_dir_open(dirname, 0, NULL);
if (dir == NULL)
return 0;
@@ -252,15 +252,15 @@ init_from_dir(const char *dirname, unsigned int max_files)
do
{
de = readdir(dir);
de = g_dir_read_name(dir);
if (de == NULL)
break;
md5_process_bytes(de->d_name, strlen(de->d_name), &guid_context);
total += strlen(de->d_name);
md5_process_bytes(de, strlen(de), &guid_context);
total += strlen(de);
result = snprintf(filename, sizeof(filename),
"%s/%s", dirname, de->d_name);
"%s/%s", dirname, de);
if ((result < 0) || (result >= (int)sizeof(filename)))
continue;
@@ -273,7 +273,7 @@ init_from_dir(const char *dirname, unsigned int max_files)
max_files--;
} while (max_files > 0);
closedir(dir);
g_dir_close(dir);
return total;
}