1
1

* treestore.c: Remove unused code, reformat.

* treestore.h: Remove unused declarations.
Этот коммит содержится в:
Pavel Roskin 2002-08-15 23:31:23 +00:00
родитель b1dbe77c5b
Коммит cafbb72684
3 изменённых файлов: 592 добавлений и 736 удалений

Просмотреть файл

@ -1,5 +1,8 @@
2002-08-15 Pavel Roskin <proski@gnu.org>
* treestore.c: Remove unused code, reformat.
* treestore.h: Remove unused declarations.
* fs.h (compute_namelen): New inline function to take care of
the d_namlen field if and only if it's needed.

Просмотреть файл

@ -28,8 +28,8 @@
The program load and saves the tree each time the tree widget is
created and destroyed. This is required for the future vfs layer,
it will be possible to have tree views over virtual file systems.
*/
#include <config.h>
#include <sys/types.h>
#ifdef HAVE_UNISTD_H
@ -51,19 +51,15 @@
static TreeStore ts;
void (*tree_store_dirty_notify)(int state) = NULL;
static void
tree_store_dirty(int state)
{
ts.dirty = state;
if (tree_store_dirty_notify)
(*tree_store_dirty_notify)(state);
}
/* Returns number of common characters */
static int str_common (char *s1, char *s2)
static int
str_common(char *s1, char *s2)
{
int result = 0;
@ -220,8 +216,7 @@ tree_store_load_from (char *name)
/* .ado: Drives for NT and OS/2 */
if ((len > 2) &&
isalpha(name[0]) &&
(name[1] == ':') &&
(name[2] == '\\')) {
(name[1] == ':') && (name[2] == '\\')) {
tree_store_add_entry(name);
strcpy(oldname, name);
} else
@ -340,10 +335,12 @@ tree_store_save_to (char *name)
if (vfs_file_is_local(current->name)) {
/* Clear-text compression */
if (current->prev
&& (common = str_common (current->prev->name, current->name)) > 2){
&& (common =
str_common(current->prev->name, current->name)) > 2) {
char *encoded = encode(current->name + common);
i = fprintf (file, "%d:%d %s\n", current->scanned, common, encoded);
i = fprintf(file, "%d:%d %s\n", current->scanned, common,
encoded);
g_free(encoded);
} else {
char *encoded = encode(current->name);
@ -353,8 +350,8 @@ tree_store_save_to (char *name)
}
if (i == EOF) {
fprintf (stderr, _("Cannot write to the %s file:\n%s\n"), name,
unix_error_string (errno));
fprintf(stderr, _("Cannot write to the %s file:\n%s\n"),
name, unix_error_string(errno));
break;
}
}
@ -498,6 +495,33 @@ tree_store_add_entry (char *name)
return new;
}
static Hook *remove_entry_hooks;
void
tree_store_add_entry_remove_hook(tree_store_remove_fn callback, void *data)
{
add_hook(&remove_entry_hooks, (void (*)(void *)) callback, data);
}
void
tree_store_remove_entry_remove_hook(tree_store_remove_fn callback)
{
delete_hook(&remove_entry_hooks, (void (*)(void *)) callback);
}
static void
tree_store_notify_remove(tree_entry * entry)
{
Hook *p = remove_entry_hooks;
tree_store_remove_fn r;
while (p) {
r = (tree_store_remove_fn) p->hook_fn;
r(entry, p->hook_data);
p = p->next;
}
}
static tree_entry *
remove_entry(tree_entry * entry)
{
@ -562,7 +586,8 @@ tree_store_remove_entry (char *name)
current = base->next;
while (current
&& strncmp(current->name, base->name, len) == 0
&& (current->name[len] == '\0' || current->name[len] == PATH_SEP)) {
&& (current->name[len] == '\0'
|| current->name[len] == PATH_SEP)) {
old = current;
current = current->next;
remove_entry(old);
@ -615,7 +640,8 @@ tree_store_mark_checked (const char *subname)
current = base->next;
while (current
&& strncmp(current->name, base->name, len) == 0
&& (current->name[len] == '\0' || current->name[len] == PATH_SEP || len == 1)){
&& (current->name[len] == '\0'
|| current->name[len] == PATH_SEP || len == 1)) {
current->mark = 0;
current = current->next;
}
@ -635,8 +661,6 @@ tree_store_start_check (char *path)
g_return_val_if_fail(ts.check_name == NULL, NULL);
ts.check_start = NULL;
tree_store_set_freeze (TRUE);
/* Search for the start of subdirectories */
current = tree_store_whereis(path);
if (!current) {
@ -665,7 +689,8 @@ tree_store_start_check (char *path)
current = ts.check_start;
while (current
&& strncmp(current->name, ts.check_name, len) == 0
&& (current->name[len] == '\0' || current->name[len] == PATH_SEP || len == 1)){
&& (current->name[len] == '\0' || current->name[len] == PATH_SEP
|| len == 1)) {
current->mark = 1;
current = current->next;
}
@ -701,7 +726,8 @@ tree_store_end_check (void)
current = ts.check_start;
while (current
&& strncmp(current->name, ts.check_name, len) == 0
&& (current->name[len] == '\0' || current->name[len] == PATH_SEP || len == 1)){
&& (current->name[len] == '\0' || current->name[len] == PATH_SEP
|| len == 1)) {
old = current;
current = current->next;
if (old->mark)
@ -716,13 +742,10 @@ tree_store_end_check (void)
ts.check_name = NULL;
for (l = the_queue; l; l = l->next) {
tree_store_notify_add (l->data);
g_free(l->data);
}
g_list_free(the_queue);
tree_store_set_freeze (FALSE);
}
static void
@ -808,140 +831,3 @@ tree_store_rescan (char *dir)
return entry;
}
static Hook *remove_entry_hooks;
static Hook *add_entry_hooks;
static Hook *freeze_hooks;
void
tree_store_add_entry_remove_hook (tree_store_remove_fn callback, void *data)
{
add_hook (&remove_entry_hooks, (void (*)(void *))callback, data);
}
void
tree_store_remove_entry_remove_hook (tree_store_remove_fn callback)
{
delete_hook (&remove_entry_hooks, (void (*)(void *))callback);
}
void
tree_store_notify_remove (tree_entry *entry)
{
Hook *p = remove_entry_hooks;
tree_store_remove_fn r;
while (p){
r = (tree_store_remove_fn) p->hook_fn;
r (entry, p->hook_data);
p = p->next;
}
}
void
tree_store_add_entry_add_hook (tree_store_add_fn callback, void *data)
{
add_hook (&add_entry_hooks, (void (*)(void *))callback, data);
}
void
tree_store_remove_entry_add_hook (tree_store_add_fn callback)
{
delete_hook (&add_entry_hooks, (void (*)(void *))callback);
}
void
tree_store_notify_add (char *directory)
{
Hook *p = add_entry_hooks;
tree_store_add_fn r;
while (p) {
r = (tree_store_add_fn) p->hook_fn;
r (directory, p->hook_data);
p = p->next;
}
}
void
tree_store_add_freeze_hook (tree_freeze_fn callback, void *data)
{
add_hook (&freeze_hooks, (void (*)(void *)) callback, data);
}
void
tree_store_remove_freeze_hook (tree_freeze_fn callback)
{
delete_hook (&freeze_hooks, (void (*)(void *))callback);
}
void
tree_store_set_freeze (int freeze)
{
Hook *p = freeze_hooks;
tree_freeze_fn f;
while (p) {
f = (tree_freeze_fn) p->hook_fn;
f (freeze, p->hook_data);
p = p->next;
}
}
tree_scan *
tree_store_opendir (char *path)
{
tree_entry *entry;
tree_scan *scan;
entry = tree_store_whereis (path);
if (!entry || (entry && !entry->scanned)) {
entry = tree_store_rescan (path);
if (!entry)
return NULL;
}
if (entry->next == NULL)
return NULL;
scan = g_new (tree_scan, 1);
scan->base = entry;
scan->current = entry->next;
scan->sublevel = entry->next->sublevel;
scan->base_dir_len = strlen (path);
return scan;
}
tree_entry *
tree_store_readdir (tree_scan *scan)
{
tree_entry *entry;
int len;
g_assert (scan != NULL);
len = scan->base_dir_len;
entry = scan->current;
while (entry &&
(strncmp (entry->name, scan->base->name, len) == 0) &&
(entry->name [len] == 0 || entry->name [len] == PATH_SEP || len == 1)){
if (entry->sublevel == scan->sublevel){
scan->current = entry->next;
return entry;
}
entry = entry->next;
}
return NULL;
}
void
tree_store_closedir (tree_scan *scanner)
{
g_assert (scanner != NULL);
g_free (scanner);
}

Просмотреть файл

@ -39,10 +39,6 @@ typedef struct {
unsigned int dirty : 1;
} TreeStore;
#define TREE_CHECK_NAME ts.check_name_list->data
extern void (*tree_store_dirty_notify)(int state);
TreeStore *tree_store_get (void);
int tree_store_load (void);
int tree_store_save (void);
@ -62,34 +58,5 @@ typedef void (*tree_store_remove_fn)(tree_entry *tree, void *data);
void tree_store_add_entry_remove_hook (tree_store_remove_fn callback, void *data);
void tree_store_remove_entry_remove_hook (tree_store_remove_fn callback);
/*
* Register/unregister notification functions for "entry_add"
*/
typedef void (*tree_store_add_fn)(char *name, void *data);
void tree_store_add_entry_add_hook (tree_store_add_fn callback, void *data);
void tree_store_remove_entry_add_hook (tree_store_add_fn callback);
/*
* Register/unregister freeze/unfreeze functions for the tree
*/
typedef void (*tree_freeze_fn)(int freeze, void *data);
void tree_store_add_freeze_hook (tree_freeze_fn callback, void *data);
void tree_store_remove_freeze_hook (tree_freeze_fn);
/*
* Changes in the tree_entry are notified with these
*/
void tree_store_notify_remove (tree_entry *entry);
void tree_store_notify_add (char *directory);
/*
* Freeze unfreeze notification
*/
void tree_store_set_freeze (int freeze);
tree_scan *tree_store_opendir (char *path);
tree_entry *tree_store_readdir (tree_scan *scanner);
void tree_store_closedir (tree_scan *scanner);
#endif
#endif /* !__TREE_STORE_H */