Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Index: trunk/src/util/common.c
- ===================================================================
- --- trunk/src/util/common.c (revision 646)
- +++ trunk/src/util/common.c (working copy)
- @@ -22,11 +22,14 @@
- #include <X11/Xutil.h>
- #include <X11/Xatom.h>
- #include <X11/extensions/Xrender.h>
- +#include <sys/types.h>
- +#include <sys/stat.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <unistd.h>
- #include <glib.h>
- +#include <fnmatch.h>
- #include "common.h"
- #include "../server.h"
- @@ -381,3 +384,46 @@
- XRenderFreePicture(server.dsp, pict_image);
- XRenderFreePicture(server.dsp, pict_drawable);
- }
- +
- +/**
- + * @brief
- + * Scan given directory for files which are meet the given mask and sort them alphabetically
- + *
- + * @param path - directory path
- + * @param mask - filename mask
- + *
- + * @return files list
- + */
- +GList *dir_scan_alpha(const char *path, const char *mask)
- +{
- + GError *err = NULL;
- + GList *list = NULL;
- + const char *n;
- + gchar *fn;
- + struct stat st;
- +
- + GDir *dir = g_dir_open(path, 0, &err);
- +
- + if (!dir) {
- + fprintf(stderr, "%s\n", err->message);
- + g_error_free(err);
- + } else {
- + // Enumerate files
- + if (!fnmatch(mask, n, FNM_PATHNAME)) {
- + fn = g_build_filename(path, n, NULL);
- +
- + if (stat((char *)fn, &st) < 0)
- + continue;
- +
- + // Only regular files
- + if (S_ISREG(st.st_mode))
- + list = g_list_prepend(list, (gpointer)fn);
- + }
- + }
- +
- + list = g_list_sort (list, (GCompareFunc) &strcmp);
- + }
- +
- + return list;
- +}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement