#include "filelist.h"
Go to the source code of this file.
Functions | |
static filelist_t * | filelist_new (void) |
static void | filelist_free (filelist_t *flist) |
static void | filelist_add (filelist_t *flist, char *filename) |
static void | filelist_addout (filelist_t *flist, char *desc) |
static void | filelist_idxshow (filelist_t *flist, int idx) |
static void | filelist_qsort (filelist_t *flist, int l, int r) |
static void | filelist_sort (filelist_t *flist) |
static void filelist_add | ( | filelist_t * | flist, | |
char * | filename | |||
) | [static] |
Definition at line 62 of file filelist.c.
References filelist_t::elements, FILELIST_LE, NULL, and filelist_t::tot.
Referenced by filedb_ls().
00063 { 00064 flist->tot++; 00065 flist->elements = realloc(flist->elements, flist->tot * sizeof(filelist_t)); 00066 FILELIST_LE(flist).fn = strdup(filename); 00067 FILELIST_LE(flist).output = NULL; 00068 }
static void filelist_addout | ( | filelist_t * | flist, | |
char * | desc | |||
) | [static] |
Definition at line 72 of file filelist.c.
References FILELIST_LE.
Referenced by filedb_ls().
00073 { 00074 if (FILELIST_LE(flist).output) { 00075 FILELIST_LE(flist).output = realloc(FILELIST_LE(flist).output, strlen(FILELIST_LE(flist).output) + strlen(desc) + 1); 00076 strcat(FILELIST_LE(flist).output, desc); 00077 } else 00078 FILELIST_LE(flist).output = strdup(desc); 00079 }
static void filelist_free | ( | filelist_t * | flist | ) | [static] |
Definition at line 44 of file filelist.c.
References filelist_t::elements, filelist_element_t::fn, filelist_element_t::output, and filelist_t::tot.
Referenced by filedb_ls().
00045 { 00046 int i; 00047 00048 if (!flist) 00049 return; 00050 for (i = 0; i < flist->tot; i++) { 00051 if (flist->elements[i].output) 00052 free_null(flist->elements[i].output); 00053 free_null(flist->elements[i].fn); 00054 } 00055 if (flist->elements) 00056 free_null(flist->elements); 00057 free_null(flist); 00058 }
static void filelist_idxshow | ( | filelist_t * | flist, | |
int | idx | |||
) | [inline, static] |
Definition at line 82 of file filelist.c.
References filelist_t::elements, filelist_element_t::output, and filelist_t::tot.
Referenced by filedb_ls().
00083 { 00084 int i; 00085 00086 for (i = 0; i < flist->tot; i++) 00087 dprintf(idx, "%s", flist->elements[i].output); 00088 }
static filelist_t* filelist_new | ( | void | ) | [static] |
Definition at line 34 of file filelist.c.
References filelist_t::elements, NULL, and filelist_t::tot.
Referenced by filedb_ls().
00035 { 00036 filelist_t *flist; 00037 00038 flist = malloc(sizeof(filelist_t)); 00039 flist->tot = 0; 00040 flist->elements = NULL; 00041 return flist; 00042 }
static void filelist_qsort | ( | filelist_t * | flist, | |
int | l, | |||
int | r | |||
) | [static] |
Definition at line 93 of file filelist.c.
References filelist_t::elements, filelist_element_t::fn, and filelist_element_t::output.
Referenced by filelist_sort().
00094 { 00095 int i = l, j = r, middle; 00096 filelist_element_t *el = flist->elements, elt; 00097 00098 middle = ((l + r) / 2); 00099 do { 00100 while (strcmp(el[i].fn, el[middle].fn) < 0) 00101 i++; 00102 while (strcmp(el[j].fn, el[middle].fn) > 0) 00103 j--; 00104 if (i <= j) { 00105 if (strcmp(el[j].fn, el[i].fn)) { 00106 elt.fn = el[j].fn; 00107 elt.output = el[j].output; 00108 el[j].fn = el[i].fn; 00109 el[j].output = el[i].output; 00110 el[i].fn = elt.fn; 00111 el[i].output = elt.output; 00112 } 00113 i++; 00114 j--; 00115 } 00116 } while (i <= j); 00117 if (l < j) 00118 filelist_qsort(flist, l, j); 00119 if (i < r) 00120 filelist_qsort(flist, i, r); 00121 }
static void filelist_sort | ( | filelist_t * | flist | ) | [static] |
Definition at line 125 of file filelist.c.
References filelist_qsort(), and filelist_t::tot.
Referenced by filedb_ls().
00126 { 00127 if (flist->tot < 2) 00128 return; 00129 filelist_qsort(flist, 0, (flist->tot - 1)); 00130 }