self = malloc (sizeof (struct rxpd_file));
if (self)
{
- psplay_init (&self->node, filename);
+ self->filename = filename;
+ const char* basename = strrchr (filename, '/');
+ if (basename)
+ ++basename;
+ else
+ basename = filename;
+ psplay_init (&self->node, basename);
llist_init (&self->rules);
psplay_insert (&base->files, &self->node);
struct rxpd_rule* node = (struct rxpd_rule*)n;
rxpd_rule_delete (node);
}
- free ((void*)file->node.key);
+ free ((void*)file->filename);
free (f);
}
}
int
rxpd_file_load (struct rxpd_file* self)
{
- const char* filename = self->node.key;
-
- FILE* f = fopen (filename, "r");
+ FILE* f = fopen (self->filename, "r");
// TODO error handling
if (f)
{
//
struct rxpd_file
{
- psplay node;
+ psplay node; // key points to basename part of filename
+ const char* filename; // full filename
//TODO later struct stat last_stat;
llist rules;
};