mirror of
https://github.com/moparisthebest/hexchat
synced 2025-02-03 00:40:21 -05:00
Add function for listing subdirs
This commit is contained in:
parent
06226c0799
commit
b686a24d3b
@ -1908,3 +1908,61 @@ hextray_mode ()
|
|||||||
return 0;
|
return 0;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Routine for listing subfolders of a given folder. ALWAYS free correctly after use, e.g.
|
||||||
|
void display_list (GSList *list)
|
||||||
|
{
|
||||||
|
GSList *iterator = NULL;
|
||||||
|
for (iterator = list; iterator; iterator = iterator->next)
|
||||||
|
{
|
||||||
|
printf ("%s\t", (char *) iterator->data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main (int argc, char *argv[])
|
||||||
|
{
|
||||||
|
GSList *list;
|
||||||
|
list = get_subdirs ("foo");
|
||||||
|
display_list (list);
|
||||||
|
#if GLIB_CHECK_VERSION(2,28,0)
|
||||||
|
g_slist_free_full (list, (GFunc) g_free);
|
||||||
|
#else
|
||||||
|
g_slist_foreach (list, (GFunc) g_free, NULL);
|
||||||
|
g_slist_free (list);
|
||||||
|
#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
GSList *
|
||||||
|
get_subdirs (const char *path)
|
||||||
|
{
|
||||||
|
DIR *dir;
|
||||||
|
struct dirent *entry;
|
||||||
|
GSList *dirlist = NULL;
|
||||||
|
|
||||||
|
if (!path)
|
||||||
|
{
|
||||||
|
path = ".";
|
||||||
|
}
|
||||||
|
|
||||||
|
dir = opendir (path);
|
||||||
|
|
||||||
|
if (!dir)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
entry = readdir (dir);
|
||||||
|
|
||||||
|
while (entry != NULL)
|
||||||
|
{
|
||||||
|
if (entry->d_type == DT_DIR && strcmp (entry->d_name, ".") != 0 && strcmp (entry->d_name, "..") != 0)
|
||||||
|
{
|
||||||
|
dirlist = g_slist_append (dirlist, g_strdup (entry->d_name));
|
||||||
|
}
|
||||||
|
|
||||||
|
entry = readdir (dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
return dirlist;
|
||||||
|
}
|
||||||
|
@ -60,5 +60,6 @@ void safe_strcpy (char *dest, const char *src, int bytes_left);
|
|||||||
void canonalize_key (char *key);
|
void canonalize_key (char *key);
|
||||||
int portable_mode ();
|
int portable_mode ();
|
||||||
int hextray_mode ();
|
int hextray_mode ();
|
||||||
|
GSList *get_subdirs (const char *path);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user