Hallo Liste,
ich schreibe an einem kleineren gtk-Programm und habe da so meine
Anfangsschwierigkeiten. Beim debuggen mit gdb bin ich dem Problem
näher gekommen und habe die betreffenden Funktionen extrahiert und
in ein Progrämmchen gepackt:
#include
#include
#include
#include
#include
typedef struct _Dirinfo Dirinfo;
struct _Dirinfo
{
gint entries;
gchar *path;
GList *name;
};
gboolean get_dirs_in_path (gpointer data)
{
Dirinfo *di = data;
DIR *dp;
struct dirent *dir;
struct stat filestat;
gchar *name;
di->name = NULL;
dp = opendir (di->path);
while ((dir = readdir(dp)) != NULL)
{
name = dir->d_name;
if (stat (name, &filestat) >= 0)
{
if (S_ISDIR (filestat.st_mode))
{
di->name = g_list_prepend (di->name, name);
}
name = NULL;
}
g_free (name);
}
closedir (dp);
di->entries = g_list_length (di->name);
return TRUE;
}
int main (void)
{
Dirinfo *di;
gint n;
di->path = g_get_current_dir ();
get_dirs_in_path (di);
for (n = 0; n < di->entries; n++)
{
g_printf("Eintrag Nr. %d lautet %s\n", n, g_list_nth_data \
(di->name, n));
}
g_free (di->path);
g_list_free (di->name);
return 0;
}
Sobald das Programm beendet, bekomme ich einen
Speicherzugriffsfehler und gdb liefert folgende Fehlermeldung:
Program received signal SIGSEGV, Segmentation fault.
0x4000c2d9 in _dl_init () from /lib/ld-linux.so.2
Irgendwas läuft falsch, kann mir da jemand weiterhelfen?
Michael
--
Britisches Rindfleisch darf wieder exportiert werden! Toll! Für
mich kommtŽs rechtzeitig, weil - meine Tiefkühlvorräte mit
britischem Rindfleisch sind langsam aufgebraucht!
-- Harald Schmidt