From d7be862ac7d4f43979dc11de23347b1cab4a07d4 Mon Sep 17 00:00:00 2001 From: Thomas Leonard Date: Thu, 23 May 2002 10:12:36 +0000 Subject: [PATCH] r1498: Code tidying (Bernard Jungen). --- ROX-Filer/Help/Changes | 4 ++ ROX-Filer/src/dir.c | 34 ++++++------- ROX-Filer/src/display.c | 25 +++++----- ROX-Filer/src/filer.c | 127 ++++++++++++++++++++++-------------------------- ROX-Filer/src/mount.c | 14 +++++- ROX-Filer/src/pixmaps.c | 29 ++++++----- ROX-Filer/src/support.c | 2 +- ROX-Filer/src/toolbar.c | 13 +---- ROX-Filer/src/type.c | 10 +--- 9 files changed, 125 insertions(+), 133 deletions(-) diff --git a/ROX-Filer/Help/Changes b/ROX-Filer/Help/Changes index cb3b0f2e..cd5a8403 100644 --- a/ROX-Filer/Help/Changes +++ b/ROX-Filer/Help/Changes @@ -2,6 +2,10 @@ A RISC OS-like filer for X by Thomas Leonard +23-May-2002 +~~~~~~~~~~~ +Code tidying (Bernard Jungen). + 21-May-2002 ~~~~~~~~~~~ Updated Polish translation (Krzysztof Krzy¿aniak). diff --git a/ROX-Filer/src/dir.c b/ROX-Filer/src/dir.c index dded98e8..d6fe34df 100644 --- a/ROX-Filer/src/dir.c +++ b/ROX-Filer/src/dir.c @@ -136,12 +136,12 @@ void dir_attach(Directory *dir, DirCallback callback, gpointer data) void dir_detach(Directory *dir, DirCallback callback, gpointer data) { DirUser *user; - GList *list = dir->users; + GList *list; g_return_if_fail(dir != NULL); g_return_if_fail(callback != NULL); - while (list) + for (list = dir->users; list; list = list->next) { user = (DirUser *) list->data; if (user->callback == callback && user->data == data) @@ -155,7 +155,6 @@ void dir_detach(Directory *dir, DirCallback callback, gpointer data) return; } - list = list->next; } g_warning("dir_detach: Callback/data pair not attached!\n"); @@ -413,13 +412,13 @@ void dir_rescan(Directory *dir, const guchar *pathname) */ void dir_merge_new(Directory *dir) { - GList *list = dir->users; - GPtrArray *new = dir->new_items; - GPtrArray *up = dir->up_items; - GPtrArray *gone = dir->gone_items; - int i; + GPtrArray *new = dir->new_items; + GPtrArray *up = dir->up_items; + GPtrArray *gone = dir->gone_items; + GList *list; + int i; - while (list) + for (list = dir->users; list; list = list->next) { DirUser *user = (DirUser *) list->data; @@ -429,8 +428,6 @@ void dir_merge_new(Directory *dir) user->callback(dir, DIR_UPDATE, up, user->data); if (gone->len) user->callback(dir, DIR_REMOVE, gone, user->data); - - list = list->next; } for (i = 0; i < new->len; i++) @@ -575,13 +572,12 @@ static void delayed_notify(Directory *dir) */ static DirItem *insert_item(Directory *dir, const guchar *leafname) { - static GString *tmp = NULL; - + const gchar *full_path; DirItem *item; DirItem old; gboolean do_compare = FALSE; /* (old is filled in) */ - tmp = make_path(dir->pathname, leafname); + full_path = make_path(dir->pathname, leafname)->str; item = g_hash_table_lookup(dir->known_items, leafname); if (item) @@ -594,7 +590,7 @@ static DirItem *insert_item(Directory *dir, const guchar *leafname) g_object_ref(old.image); do_compare = TRUE; } - diritem_restat(tmp->str, item, &dir->stat_info); + diritem_restat(full_path, item, &dir->stat_info); } else { @@ -603,7 +599,7 @@ static DirItem *insert_item(Directory *dir, const guchar *leafname) * we get here. */ item = diritem_new(leafname); - diritem_restat(tmp->str, item, &dir->stat_info); + diritem_restat(full_path, item, &dir->stat_info); if (item->base_type == TYPE_ERROR && item->lstat_errno == ENOENT) { @@ -696,7 +692,7 @@ static void set_idle_callback(Directory *dir) /* See dir_force_update_path() */ static void dir_force_update_item(Directory *dir, const gchar *leaf) { - GList *list = dir->users; + GList *list; GPtrArray *items; DirItem *item; @@ -708,13 +704,11 @@ static void dir_force_update_item(Directory *dir, const gchar *leaf) g_ptr_array_add(items, item); - while (list) + for (list = dir->users; list; list = list->next) { DirUser *user = (DirUser *) list->data; user->callback(dir, DIR_UPDATE, items, user->data); - - list = list->next; } out: diff --git a/ROX-Filer/src/display.c b/ROX-Filer/src/display.c index c67893f3..82715eb3 100644 --- a/ROX-Filer/src/display.c +++ b/ROX-Filer/src/display.c @@ -592,9 +592,7 @@ void display_set_hidden(FilerWindow *filer_window, gboolean hidden) filer_window->show_hidden = hidden; - filer_detach_rescan(filer_window); - - filer_set_title(filer_window); + filer_detach_rescan(filer_window); /* (updates titlebar) */ } /* Highlight (wink or cursor) this item in the filer window. If the item @@ -742,9 +740,9 @@ void display_update_views(FilerWindow *filer_window) static void options_changed(void) { - GList *next = all_filer_windows; + GList *next; - while (next) + for (next = all_filer_windows; next; next = next->next) { FilerWindow *filer_window = (FilerWindow *) next->data; @@ -762,8 +760,6 @@ static void options_changed(void) } shrink_grid(filer_window); gtk_widget_queue_draw(filer_window->window); - - next = next->next; } } @@ -1052,9 +1048,12 @@ static char *details(FilerWindow *filer_window, DirItem *item) gchar *time; if (!scanned) - return g_strdup("XXXX ---,---,---/--- " - "12345678 12345678 " - "12345M 00:00:00 01 Mmm Yyyy"); + return g_strdup("XXXX ---,---,---/--" +#ifdef S_ISVTX + "-" +#endif + " 12345678 12345678 " + "1234M 00:00:00 01 Mmm Yyyy"); time = pretty_time(&item->mtime); @@ -1099,7 +1098,11 @@ static char *details(FilerWindow *filer_window, DirItem *item) else if (filer_window->details_type == DETAILS_PERMISSIONS) { if (!scanned) - return g_strdup("---,---,---/--- 12345678 12345678"); + return g_strdup("---,---,---/--" +#ifdef S_ISVTX + "-" +#endif + " 12345678 12345678"); buf = g_strdup_printf("%s %-8.8s %-8.8s", pretty_permissions(m), diff --git a/ROX-Filer/src/filer.c b/ROX-Filer/src/filer.c index a8a9feff..26f10094 100644 --- a/ROX-Filer/src/filer.c +++ b/ROX-Filer/src/filer.c @@ -183,26 +183,25 @@ static gboolean if_deleted(gpointer item, gpointer removed) static void update_item(FilerWindow *filer_window, DirItem *item) { - int i; char *leafname = item->leafname; - int old_w = filer_window->collection->item_width; - int old_h = filer_window->collection->item_height; - int w, h; + Collection *collection = filer_window->collection; + int old_w = collection->item_width; + int old_h = collection->item_height; + int w, h, i; CollectionItem *colitem; if (leafname[0] == '.' && filer_window->show_hidden == FALSE) return; - i = collection_find_item(filer_window->collection, item, - filer_window->sort_fn); + i = collection_find_item(collection, item, filer_window->sort_fn); if (i < 0) { - g_warning("Failed to find '%s'\n", item->leafname); + g_warning("Failed to find '%s'\n", leafname); return; } - colitem = &filer_window->collection->items[i]; + colitem = &collection->items[i]; display_update_view(filer_window, (DirItem *) colitem->data, @@ -211,11 +210,11 @@ static void update_item(FilerWindow *filer_window, DirItem *item) calc_size(filer_window, colitem, &w, &h); if (w > old_w || h > old_h) - collection_set_item_size(filer_window->collection, + collection_set_item_size(collection, MAX(old_w, w), MAX(old_h, h)); - collection_draw_item(filer_window->collection, i, TRUE); + collection_draw_item(collection, i, TRUE); } /* Resize the filer window to w x h pixels, plus border (not clamped) */ @@ -223,6 +222,8 @@ static void filer_window_set_size(FilerWindow *filer_window, int w, int h, gboolean allow_shrink) { + GtkWidget *window; + g_return_if_fail(filer_window != NULL); if (filer_window->scrollbar) @@ -233,21 +234,23 @@ static void filer_window_set_size(FilerWindow *filer_window, if (filer_window->message) h += filer_window->message->allocation.height; - if (GTK_WIDGET_VISIBLE(filer_window->window)) + window = filer_window->window; + + if (GTK_WIDGET_VISIBLE(window)) { gint x, y; - GtkRequisition *req = &filer_window->window->requisition; + GtkRequisition *req = &window->requisition; + GdkWindow *gdk_window = window->window; w = MAX(req->width, w); h = MAX(req->height, h); - gdk_window_get_position(filer_window->window->window, - &x, &y); + gdk_window_get_position(gdk_window, &x, &y); + if (!allow_shrink) { gint old_w, old_h; - gdk_drawable_get_size(filer_window->window->window, - &old_w, &old_h); + gdk_drawable_get_size(gdk_window, &old_w, &old_h); w = MAX(w, old_w); h = MAX(h, old_h); @@ -261,15 +264,13 @@ static void filer_window_set_size(FilerWindow *filer_window, x = screen_width - w - 4; if (y + h > screen_height) y = screen_height - h - 4; - gdk_window_move_resize(filer_window->window->window, - x, y, w, h); + gdk_window_move_resize(gdk_window, x, y, w, h); } else - gdk_window_resize(filer_window->window->window, w, h); + gdk_window_resize(gdk_window, w, h); } else - gtk_window_set_default_size(GTK_WINDOW(filer_window->window), - w, h); + gtk_window_set_default_size(GTK_WINDOW(window), w, h); } /* Resize the window to fit the items currently in the Directory. @@ -421,16 +422,14 @@ static void update_display(Directory *dir, } if (old_num != collection->number_of_items) - collection_qsort(filer_window->collection, - filer_window->sort_fn); + collection_qsort(collection, + filer_window->sort_fn); /* Open and resize if currently hidden */ open_filer_window(filer_window); break; case DIR_REMOVE: - collection_delete_if(filer_window->collection, - if_deleted, - items); + collection_delete_if(collection, if_deleted, items); break; case DIR_START_SCAN: set_scanning_display(filer_window, TRUE); @@ -463,8 +462,8 @@ static void update_display(Directory *dir, start_thumb_scanning(filer_window); break; case DIR_UPDATE: - collection_qsort(filer_window->collection, - filer_window->sort_fn); + collection_qsort(collection, filer_window->sort_fn); + for (i = 0; i < items->len; i++) { DirItem *item = (DirItem *) items->pdata[i]; @@ -541,26 +540,30 @@ static void filer_window_destroyed(GtkWidget *widget, static void add_item(FilerWindow *filer_window, DirItem *item) { char *leafname = item->leafname; - int old_w = filer_window->collection->item_width; - int old_h = filer_window->collection->item_height; - int w, h; - int i; + Collection *collection = filer_window->collection; + int old_w = collection->item_width; + int old_h = collection->item_height; + int w, h, i; if (leafname[0] == '.') { - if (filer_window->show_hidden == FALSE || leafname[1] == '\0' - || (leafname[1] == '.' && leafname[2] == '\0')) - return; + if (!filer_window->show_hidden) + return; + + if (leafname[1] == '\0') + return; /* Never show '.' */ + + if (leafname[1] == '.' && leafname[2] == '\0') + return; /* Never show '..' */ } - i = collection_insert(filer_window->collection, - item, - display_create_viewdata(filer_window, item)); + i = collection_insert(collection, item, + display_create_viewdata(filer_window, item)); - calc_size(filer_window, &filer_window->collection->items[i], &w, &h); + calc_size(filer_window, &collection->items[i], &w, &h); if (w > old_w || h > old_h) - collection_set_item_size(filer_window->collection, + collection_set_item_size(collection, MAX(old_w, w), MAX(old_h, h)); } @@ -719,14 +722,12 @@ void filer_openitem(FilerWindow *filer_window, int item_number, OpenFlags flags) gboolean shift = (flags & OPEN_SHIFT) != 0; gboolean close_mini = flags & OPEN_FROM_MINI; gboolean close_window = (flags & OPEN_CLOSE_WINDOW) != 0; - GtkWidget *widget; DirItem *item = (DirItem *) filer_window->collection->items[item_number].data; guchar *full_path; gboolean wink = TRUE; Directory *old_dir; - widget = filer_window->window; if (filer_window->mini_type == MINI_SHELL) { minibuffer_add(filer_window, item->leafname); @@ -1617,7 +1618,7 @@ static void set_scanning_display(FilerWindow *filer_window, gboolean scanning) filer_window); } -/* Note that filer_window may not exist after this call. */ +/* Note that filer_window may not exist after this call */ void filer_update_dir(FilerWindow *filer_window, gboolean warning) { if (may_rescan(filer_window, warning)) @@ -1632,6 +1633,9 @@ void filer_update_all(void) { FilerWindow *filer_window = (FilerWindow *) next->data; + /* Updating directory may remove it from list -- stop sending + * patches to move this line! + */ next = next->next; filer_update_dir(filer_window, TRUE); @@ -1649,19 +1653,15 @@ void full_refresh(void) */ static FilerWindow *find_filer_window(const char *sym_path, FilerWindow *diff) { - GList *next = all_filer_windows; + GList *next; - while (next) + for (next = all_filer_windows; next; next = next->next) { FilerWindow *filer_window = (FilerWindow *) next->data; if (filer_window != diff && strcmp(sym_path, filer_window->sym_path) == 0) - { return filer_window; - } - - next = next->next; } return NULL; @@ -1671,7 +1671,7 @@ static FilerWindow *find_filer_window(const char *sym_path, FilerWindow *diff) void filer_check_mounted(const char *real_path) { GList *next = all_filer_windows; - char *slash; + gchar *parent; int len; len = strlen(real_path); @@ -1691,19 +1691,9 @@ void filer_check_mounted(const char *real_path) } } - slash = strrchr(real_path, '/'); - if (slash && slash != real_path) - { - guchar *parent; - - parent = g_strndup(real_path, slash - real_path); - - refresh_dirs(parent); - - g_free(parent); - } - else - refresh_dirs("/"); + parent = g_dirname(real_path); + refresh_dirs(parent); + g_free(parent); icons_may_update(real_path); } @@ -1818,7 +1808,7 @@ void filer_set_title(FilerWindow *filer_window) } /* Reconnect to the same directory (used when the Show Hidden option is - * toggled). + * toggled). This has the side-effect of updating the window title. */ void filer_detach_rescan(FilerWindow *filer_window) { @@ -1869,8 +1859,7 @@ static void perform_action(FilerWindow *filer_window, GdkEventButton *event) collection->items[item].selected && filer_window->selection_state == GTK_STATE_INSENSITIVE) { - selection_changed(filer_window->collection, - event->time, filer_window); + selection_changed(collection, event->time, filer_window); return; } @@ -2088,7 +2077,6 @@ void filer_target_mode(FilerWindow *filer_window, } else gtk_label_set_text(GTK_LABEL(filer_window->toolbar_text), ""); - } /* Draw the black border */ @@ -2130,7 +2118,7 @@ static gboolean filer_tooltip_activate(FilerWindow *filer_window) collection = filer_window->collection; gdk_window_get_pointer(GTK_WIDGET(collection)->window, &x, &y, NULL); - i = collection_get_item(filer_window->collection, x, y); + i = collection_get_item(collection, x, y); if (i == -1 || ((DirItem *) collection->items[i].data) != tip_item) return FALSE; /* Not still under the pointer */ @@ -2291,9 +2279,8 @@ static void filer_tooltip_prime(FilerWindow *filer_window, DirItem *item) static void set_selection_state(FilerWindow *filer_window, gboolean normal) { - GtkStateType old_state; + GtkStateType old_state = filer_window->selection_state; - old_state = filer_window->selection_state; filer_window->selection_state = normal ? GTK_STATE_SELECTED : GTK_STATE_INSENSITIVE; diff --git a/ROX-Filer/src/mount.c b/ROX-Filer/src/mount.c index 4a6e8942..da0ea2e4 100644 --- a/ROX-Filer/src/mount.c +++ b/ROX-Filer/src/mount.c @@ -181,12 +181,23 @@ static void read_table(void) FILE *tab; struct mntent *ent; MountPoint *mp; +# ifdef HAVE_FCNTL_H + struct flock lb; +# endif clear_table(); tab = setmntent(THE_FSTAB, "r"); g_return_if_fail(tab != NULL); +# ifdef HAVE_FCNTL_H + lb.l_type = F_RDLCK; + lb.l_whence = 0; + lb.l_start = 0; + lb.l_len = 0; + fcntl(fileno(tab), F_SETLKW, &lb); +# endif + while ((ent = getmntent(tab))) { if (strcmp(ent->mnt_dir, "swap") == 0) @@ -212,9 +223,10 @@ static void read_table(void) struct flock lb; # endif + clear_table(); + tab = fopen(THE_FSTAB, "r"); g_return_if_fail(tab != NULL); - clear_table(); # ifdef HAVE_FCNTL_H lb.l_type = F_RDLCK; diff --git a/ROX-Filer/src/pixmaps.c b/ROX-Filer/src/pixmaps.c index 6c70647a..192aa19e 100644 --- a/ROX-Filer/src/pixmaps.c +++ b/ROX-Filer/src/pixmaps.c @@ -126,14 +126,21 @@ void pixmaps_init(void) load_default_pixmaps(); } -/* 'name' is relative to app_dir. Always returns with a valid image. */ +/* Load image /images/name.png. + * Always returns with a valid image. + */ MaskedPixmap *load_pixmap(const char *name) { + guchar *path; MaskedPixmap *retval; + + path = g_strconcat(app_dir, "/images/", name, ".png", NULL); + retval = image_from_file(path); + g_free(path); - retval = image_from_file(make_path(app_dir, name)->str); if (!retval) retval = get_bad_image(); + return retval; } @@ -143,17 +150,17 @@ static void load_default_pixmaps(void) GdkPixbuf *pixbuf; GError *error = NULL; - im_error = load_pixmap("images/error.png"); - im_unknown = load_pixmap("images/unknown.png"); - im_symlink = load_pixmap("images/symlink.png"); + im_error = load_pixmap("error"); + im_unknown = load_pixmap("unknown"); + im_symlink = load_pixmap("symlink"); - im_unmounted = load_pixmap("images/mount.png"); - im_mounted = load_pixmap("images/mounted.png"); - im_multiple = load_pixmap("images/multiple.png"); - im_appdir = load_pixmap("images/application.png"); + im_unmounted = load_pixmap("mount"); + im_mounted = load_pixmap("mounted"); + im_multiple = load_pixmap("multiple"); + im_appdir = load_pixmap("application"); - im_help = load_pixmap("images/help.png"); - im_dirs = load_pixmap("images/dirs.png"); + im_help = load_pixmap("help"); + im_dirs = load_pixmap("dirs"); pixbuf = gdk_pixbuf_new_from_file( make_path(app_dir, ".DirIcon")->str, &error); diff --git a/ROX-Filer/src/support.c b/ROX-Filer/src/support.c index 1629392d..d841b882 100644 --- a/ROX-Filer/src/support.c +++ b/ROX-Filer/src/support.c @@ -538,7 +538,7 @@ void set_blocking(int fd, gboolean blocking) */ char *pretty_time(time_t *time) { - static char time_buf[32]; + char time_buf[32]; if (strftime(time_buf, sizeof(time_buf), TIME_FORMAT, localtime(time)) == 0) diff --git a/ROX-Filer/src/toolbar.c b/ROX-Filer/src/toolbar.c index 6b2087d9..a899afed 100644 --- a/ROX-Filer/src/toolbar.c +++ b/ROX-Filer/src/toolbar.c @@ -159,14 +159,7 @@ void toolbar_init(void) Tool *tool = &all_tools[i]; if (!tool->icon) - { - guchar *path; - - path = g_strconcat("images/", - tool->name, ".png", NULL); - tool->icon = load_pixmap(path); - g_free(path); - } + tool->icon = load_pixmap(tool->name); } option_register_widget("tool-options", build_tool_options); @@ -647,11 +640,9 @@ static void recreate_toolbar(FilerWindow *filer_window) static void option_notify(void) { - guchar *list; int i; gboolean changed = FALSE; - - list = o_toolbar_disable.value; + guchar *list = o_toolbar_disable.value; for (i = 0; i < sizeof(all_tools) / sizeof(*all_tools); i++) { diff --git a/ROX-Filer/src/type.c b/ROX-Filer/src/type.c index 6b44ee26..b4e49233 100644 --- a/ROX-Filer/src/type.c +++ b/ROX-Filer/src/type.c @@ -292,18 +292,12 @@ MIME_type *type_from_path(const char *path) { Pattern *p = glob_patterns->pdata[i]; - if (fnmatch(p->glob, leafname, 0) == 0) + if (fnmatch(p->glob, leafname, 0) == 0 || + fnmatch(p->glob, lower, 0) == 0) { type = p->type; goto out; } - - if (fnmatch(p->glob, lower, 0) == 0) - { - type = p->type; - goto out; - } - } out: -- 2.11.4.GIT