libxputty  0.1
A damn tiny abstraction Layer to create X11 window/widgets with cairo surfaces
xfilepicker.c File Reference
#include "xfilepicker.h"
Include dependency graph for xfilepicker.c:

Go to the source code of this file.

Functions

int fp_get_files (FilePicker *filepicker, char *path, int get_dirs)
 fp_get_files - fill file_names and dir_names with the results from readdir path More...
 
void fp_free (FilePicker *filepicker)
 fp_free - release all memory used by the filepicker More...
 
void fp_init (FilePicker *filepicker, const char *path)
 fp_init - set default values used by the filepicker More...
 

Function Documentation

◆ fp_free()

void fp_free ( FilePicker filepicker)

fp_free - release all memory used by the filepicker

Parameters
*filepicker- pointer to the struct to be released
Returns
void

Definition at line 176 of file xfilepicker.c.

176  {
177  fp_clear_filebuffer(filepicker);
178  fp_clear_dirbuffer(filepicker);
179  free(filepicker->selected_file);
180  free(filepicker->path);
181  free(filepicker->filter);
182 }

◆ fp_get_files()

int fp_get_files ( FilePicker filepicker,
char *  path,
int  get_dirs 
)

fp_get_files - fill file_names and dir_names with the results from readdir path

Parameters
*filepicker- pointer to the struct holding the list pointers
*path- the path to read from
get_dirs- 0 = only read files 1 = refill the directory buffer as well
Returns
int - return the position of the given path in the directory list

Definition at line 131 of file xfilepicker.c.

131  {
132  int ret = 0;
133  fp_clear_filebuffer(filepicker);
134 
135  DIR *dirp;
136  struct dirent *dp;
137  if((dirp = opendir(path)) == NULL) {
138  path =(char*)PATH_SEPARATOR;
139  dirp = opendir(PATH_SEPARATOR);
140  assert(dirp);
141  }
142 
143  if(get_dirs) {
144  fp_clear_dirbuffer(filepicker);
145  ret = fp_prefill_dirbuffer(filepicker, path);
146  }
147 
148  while ((dp = readdir(dirp)) != NULL) {
149 
150  if(dp-> d_type != DT_DIR && strlen(dp->d_name)!=0 && dp->d_type != DT_UNKNOWN
151  && strcmp(dp->d_name,"..")!=0 && fp_show_hidden_files(filepicker, dp->d_name) &&
152  fp_show_filter_files(filepicker, dp->d_name)) {
153 
154  filepicker->file_names = (char **)realloc(filepicker->file_names,
155  (filepicker->file_counter + 1) * sizeof(char *));
156  assert(filepicker->file_names != NULL);
157  asprintf(&filepicker->file_names[filepicker->file_counter++],"%s",dp->d_name);
158  assert(&filepicker->file_names[filepicker->file_counter] != NULL);
159 
160  } else if(get_dirs && dp -> d_type == DT_DIR && strlen(dp->d_name)!=0
161  && strcmp(dp->d_name,"..")!=0 && fp_show_hidden_files(filepicker, dp->d_name)) {
162 
163  filepicker->dir_names = (char **)realloc(filepicker->dir_names,
164  (filepicker->dir_counter + 1) * sizeof(char *));
165  assert(filepicker->dir_names != NULL);
166  asprintf(&filepicker->dir_names[filepicker->dir_counter++], (strcmp(path, PATH_SEPARATOR) != 0) ?
167  "%s" PATH_SEPARATOR "%s" : "%s%s" , path,dp->d_name);
168  assert(&filepicker->dir_names[filepicker->dir_counter] != NULL);
169  }
170  }
171  closedir(dirp);
172  fp_sort_buffers(filepicker, get_dirs);
173  return ret;
174 }

◆ fp_init()

void fp_init ( FilePicker filepicker,
const char *  path 
)

fp_init - set default values used by the filepicker

Parameters
*filepicker- pointer to the struct to alocate
*path- the path to read from
Returns
void

Definition at line 184 of file xfilepicker.c.

184  {
185  filepicker->file_counter=0;
186  filepicker->dir_counter=0;
187  filepicker->use_filter = 0;
188  filepicker->show_hidden = false;
189  filepicker->file_names = NULL;
190  filepicker->dir_names = NULL;
191  filepicker->selected_file = NULL;
192  filepicker->path = NULL;
193  filepicker->filter = NULL;
194  asprintf(&filepicker->path, path);
195  assert(filepicker->path != NULL);
196 }

References asprintf(), FilePicker::dir_counter, FilePicker::dir_names, FilePicker::file_counter, FilePicker::file_names, FilePicker::filter, FilePicker::path, FilePicker::selected_file, FilePicker::show_hidden, and FilePicker::use_filter.

FilePicker::selected_file
char * selected_file
Definition: xfilepicker.h:68
FilePicker::path
char * path
Definition: xfilepicker.h:67
FilePicker::file_names
char ** file_names
Definition: xfilepicker.h:69
FilePicker::filter
char * filter
Definition: xfilepicker.h:66
PATH_SEPARATOR
#define PATH_SEPARATOR
Definition: xfilepicker.h:58
FilePicker::file_counter
unsigned int file_counter
Definition: xfilepicker.h:64
FilePicker::show_hidden
bool show_hidden
Definition: xfilepicker.h:63
asprintf
int asprintf(char *strp[], const char *fmt,...)
Definition: xasprintf.c:36
FilePicker::use_filter
int use_filter
Definition: xfilepicker.h:62
FilePicker::dir_counter
unsigned int dir_counter
Definition: xfilepicker.h:65
FilePicker::dir_names
char ** dir_names
Definition: xfilepicker.h:70