diff -ruN old/mc-4.5.7/Make.common.in new/mc-4.5.9/Make.common.in --- old/mc-4.5.7/Make.common.in Tue Jan 12 22:38:06 1999 +++ new/mc-4.5.9/Make.common.in Mon Jan 18 17:44:07 1999 @@ -22,6 +22,7 @@ libdir = $(exec_prefix)/lib/mc idldir = $(prefix)/share/idl suppbindir = $(libdir)/bin +gnewdir = $(prefix)/share/mc/templates tidir = $(libdir)/term extfsdir = $(libdir)/extfs datadir = @datadir@ diff -ruN old/mc-4.5.7/Specfile new/mc-4.5.9/Specfile --- old/mc-4.5.7/Specfile Tue Jan 12 22:38:06 1999 +++ new/mc-4.5.9/Specfile Mon Jan 18 17:44:07 1999 @@ -1,6 +1,5 @@ # Note that this is NOT a relocatable package -%define ver 4.5.7 -%define rel 1 +%define ver 4.5.9 %define prefix /usr Summary: Midnight Commander visual shell @@ -44,7 +43,7 @@ %setup %build -CFLAGS="$RPM_OPT_FLAGS" LDFLAGS="-s" ./autogen.sh \ +CFLAGS="$RPM_OPT_FLAGS" LDFLAGS="-s" ./configure \ --prefix=%{prefix} \ --with-gnome \ --without-debug diff -ruN old/mc-4.5.7/VERSION new/mc-4.5.9/VERSION --- old/mc-4.5.7/VERSION Tue Jan 12 22:38:06 1999 +++ new/mc-4.5.9/VERSION Mon Jan 18 17:44:07 1999 @@ -1 +1 @@ -#define VERSION "4.5.7" +#define VERSION "4.5.9" diff -ruN old/mc-4.5.7/configure new/mc-4.5.9/configure --- old/mc-4.5.7/configure Tue Jan 12 22:38:06 1999 +++ new/mc-4.5.9/configure Mon Jan 18 17:44:07 1999 @@ -583,7 +583,7 @@ PACKAGE=mc -VERSION=4.5.7 +VERSION=4.5.9 cat >> confdefs.h < + + * gtkdtree.c (gtk_dtree_construct): And the GTK+ people broke the + API again. + +1999-01-18 Jonathan Blandford + + * gscreen.c (x_create_panel): chnaged padding on the Filter label + (do_ui_signal_connect): new view switching code. Toolbar now works + (go_home): new function -- takes one home + + * gtkdtree.c (gtk_dtree_construct): change ctree_set_reorderable. + +1999-01-18 Federico Mena Quintero + + * gdesktop.c (icon_event): Rewrote event handling for icons on the + desktop. This function handles button presses and releases and + does some anal-retentive checking to avoid stuck pointer grabs. + (icon_event_after): New fallback function for button presses. + This is only called when an icon is being edited and the user + clicks outside the icon's text item, indicating that editing + should be accepted and terminated. + (selection_stopped): New callback used to re-install the mouse + grab once the icon text item stops selecting text. + + * gdesktop.h (DesktopIconInfo): Removed the finishing_selection + flag now that the event handling code is cleaned up. + +1999-01-17 Miguel de Icaza + + * gpageprop.c (item_properties): Use the metadata information for this. + (item_properties): Set the icon-filename metadata bit + +1999-01-15 Miguel de Icaza + + * glayout.c (create_new_menu_from): Handle both the system dir and + the locally installed directory. + +1999-01-14 Miguel de Icaza + + * gtkdtree.c (gtk_dtree_do_select_dir): Select the node, and test + against full visibility of a node. + + * gscreen.c (panel_fill_panel_icons): While loading the icon list, + mark those items that are selected as, well, ahem, selected. + (x_fill_panel): Use the system getwd routine to find out the real + location in the file system + +1999-01-13 Federico Mena Quintero + + * gpageprop.c (item_properties): Use file contexts appropriately. + + * gdnd.c (perform_action): Use file contexts appropriately. + +1999-01-13 Jonathan Blandford + + * glayout.c (create_container): finished the New->menu. Looks + better now. + (create_container): Moved the statusbar creaton. Now you can get + the hints. + + * gcmd.c (gnome_run_new): new function. + + * glayout.c (create_container): beginnings of the New-> menu. It + doesn't have much yet, hopefully we'll have a good way to let apps + register themselves with it. + +1999-01-13 bertrand + + * gdialogs.c + * gwidget.c: + * gprop.c: + s/gtk_toggle_button_state/gtk_toggle_button_active + +1999-01-12 Federico Mena Quintero + + * gdesktop.c (desktop_icon_info_delete): Pass the file operation + context to erase_dir() and erase_file(). + + * gcmd.c (gnome_sort_cmd): Cast the sort functions to avoid + warnings. + + * gdialogs.c: Converted to use FileOpContext. + + * gmain.h: Added some prototypes needed in the Gnome version. + +1999-01-12 Miguel de Icaza + + * gdesktop.c (desktop_drag_data_received): Drops on the desktop by + default will always be Link commands. If the user wants to + copy/move he needs to use the button-2 to do this. + (desktop_icon_info_delete): Treat links as files, not directories. + + I have got enough complaints about this. 1999-01-12 Jonathan Blandford * gcmd.c (gnome_open_files): now you can open multiple files. @@ -97,6 +191,17 @@ results so the next time works. Will do this tomorrow. (gnome_external_panelize): think I finished this now. +1999-01-05 Federico Mena Quintero + + * gdesktop-icon.c (desktop_icon_realize): Make icons sticky as + well. + + * gpageprop.c (item_properties): Use a file operation context. + * gdnd.c (perform_action): Likewise. + * gdesktop.c (desktop_icon_info_delete): Likewise. + + * Makefile.in: Added fileopctx.o. + 1999-01-05 Miguel de Icaza * gdesktop.c (desktop_icon_drop_uri_list): Implement @@ -122,6 +227,15 @@ * gcmd.c (gnome_external_panelize): mostly hooked up now. will finish tomorrow (shouldn't take very long...) + +1999-01-04 Federico Mena Quintero + + * Makefile.in (GNOMESRCS): Removed temp-hack.c from the list of + sources. + (GNOMEHDRS): Ditto for gdialogs.h. + + * gscreen.c (x_create_panel): Removed periods from the toolbar + button tooltips. 1999-01-04 Jonathan Blandford diff -ruN old/mc-4.5.7/gnome/Makefile.in new/mc-4.5.9/gnome/Makefile.in --- old/mc-4.5.7/gnome/Makefile.in Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/gnome/Makefile.in Mon Jan 18 17:44:12 1999 @@ -5,7 +5,7 @@ @MCFG@@MCF@ GNOMEDEFS = -DHAVE_X -DHAVE_GNOME @GNOME_INCLUDEDIR@ -CFLAGS = -g $(XCFLAGS) @X_CFLAGS@ -I. +CFLAGS = -g $(XCFLAGS) @X_CFLAGS@ -I. -I$(rootdir)/src CPPFLAGS = $(XCPPFLAGS) -I$(vfsdir) -I$(slangdir) $(GNOMEDEFS) LDFLAGS = $(XLDFLAGS) @GNOME_LIBDIR@ @GNOMEUI_LIBS@ CORBA_LDFLAGS = $(XLDFLAGS) @GNOME_LIBDIR@ @GNOMEGNORBA_LIBS@ @@ -36,6 +36,7 @@ gcorba.c \ gdesktop-icon.c \ gdesktop.c \ + gdialogs.c \ gdnd.c \ ghelp.c \ gicon.c \ @@ -50,7 +51,6 @@ gpopup.c \ gprefs.c \ gprop.c \ - gdialogs.c \ gscreen.c \ gtools.c \ gtkdtree.c \ @@ -103,13 +103,14 @@ # # These objects from ../src do depend on HAVE_GNOME # -OOBJS = dlg.o screen.o widget.o wtools.o info.o boxes.o \ - file.o find.o dialog.o key.o chmod.o chown.o view.o \ - panelize.o hotlist.o background.o dir.o util.o \ - win.o color.o profile.o user.o ext.o setup.o \ - subshell.o terms.o achown.o fsusage.o mountlist.o \ - @XCURSES@ @REGEX_O@ complete.o command.o \ - option.o cmd.o utilunix.o xslint.o gdialogs.o filenot.o treestore.o +OOBJS = dlg.o screen.o widget.o wtools.o info.o boxes.o \ + file.o find.o dialog.o key.o chmod.o chown.o view.o \ + panelize.o hotlist.o background.o dir.o util.o \ + win.o color.o profile.o user.o ext.o setup.o \ + subshell.o terms.o achown.o fsusage.o mountlist.o \ + @XCURSES@ @REGEX_O@ complete.o command.o \ + option.o cmd.o utilunix.o xslint.o gdialogs.o filenot.o \ + fileopctx.o treestore.o CORBAOBJS = \ main-corba.o \ @@ -266,6 +267,7 @@ $(mcsrcdir)/xmkdir $(DESTDIR)$(icondir) $(mcsrcdir)/xmkdir $(DESTDIR)$(libdir) $(mcsrcdir)/xmkdir $(DESTDIR)$(bindir) + $(mcsrcdir)/xmkdir $(gnewdir) $(INSTALL_PROGRAM) gmc $(DESTDIR)$(bindir)/$(binprefix)gmc $(INSTALL_PROGRAM) corba-gmc $(DESTDIR)$(bindir)/$(binprefix)corba-gmc for I in $(ICONS); \ @@ -275,7 +277,7 @@ $(INSTALL_DATA) mc.keys $(DESTDIR)$(datadir)/mime-info $(mcsrcdir)/xmkdir $(DESTDIR)$(corbadir) $(INSTALL_DATA) gmc.gnorba $(DESTDIR)$(corbadir) - + $(INSTALL_DATA) gimp.image.desktop application.x-gnumeric.desktop $(gnewdir) uninstall: -$(RMF) $(DESTDIR)$(bindir)/$(binprefix)gmc -$(RMF) $(DESTDIR)$(bindir)/$(binprefix)corba-gmc @@ -285,6 +287,7 @@ -$(RMF) $(DESTDIR)$(libdir)/layout -$(RMF) $(DESTDIR)$(datadir)/mime-info/mc.keys -rmdir $(DESTDIR)$(datadir)/mime-info + -$(RMF) $(gnewdir) depend dep: @gmcdep@ diff -ruN old/mc-4.5.7/gnome/application.x-gnumeric.desktop new/mc-4.5.9/gnome/application.x-gnumeric.desktop --- old/mc-4.5.7/gnome/application.x-gnumeric.desktop Wed Dec 31 19:00:00 1969 +++ new/mc-4.5.9/gnome/application.x-gnumeric.desktop Mon Jan 18 22:35:00 1999 @@ -0,0 +1,8 @@ +[Desktop Entry] +Name=Image +Comment=Create a new Image +TryExec=gimp +Exec=gimp +Icon=gnome-gimp.png +Terminal=0 +Type=Application diff -ruN old/mc-4.5.7/gnome/gcmd.c new/mc-4.5.9/gnome/gcmd.c --- old/mc-4.5.7/gnome/gcmd.c Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/gnome/gcmd.c Mon Jan 18 17:44:12 1999 @@ -24,14 +24,15 @@ #include "layout.h" #include "../vfs/vfs.h" -static enum { +enum { SORT_NAME, SORT_EXTENSION, SORT_ACCESS, SORT_MODIFY, SORT_CHANGE, SORT_SIZE -} SortOrderCode; +}; + static char *panelize_section = "Panelize"; void @@ -271,22 +272,22 @@ (omenu)->menu_item), "SORT_ORDER_CODE") ) { case SORT_NAME: - sfn = sort_name; + sfn = (sortfn *) sort_name; break; case SORT_EXTENSION: - sfn = sort_ext; + sfn = (sortfn *) sort_ext; break; case SORT_ACCESS: - sfn = sort_atime; + sfn = (sortfn *) sort_atime; break; case SORT_MODIFY: - sfn = sort_time; + sfn = (sortfn *) sort_time; break; case SORT_CHANGE: - sfn = sort_ctime; + sfn = (sortfn *) sort_ctime; break; case SORT_SIZE: - sfn = sort_size; + sfn = (sortfn *) sort_size; break; } /* case sensitive */ @@ -548,7 +549,6 @@ GtkWidget *entry; GtkWidget *label; gchar *text1, *text2, *text3; - GList *list; filter_dlg = gnome_dialog_new (_("Set Filter"), GNOME_STOCK_BUTTON_OK, GNOME_STOCK_BUTTON_CANCEL, NULL); @@ -615,11 +615,14 @@ } gtk_widget_destroy (filter_dlg); } + void gnome_open_files (GtkWidget *widget, WPanel *panel) { GList *later = NULL; +#if 0 GList *now; +#endif gint i; /* FIXME: this is the easy way to do things. We want the @@ -644,5 +647,17 @@ #endif g_list_free (later); +} + +void +gnome_run_new (GtkWidget *widget, GnomeDesktopEntry *gde) +{ + gnome_desktop_entry_launch (gde); +} + +void +gnome_mkdir_cmd (GtkWidget *widget, WPanel *panel) +{ + mkdir_cmd (panel); } diff -ruN old/mc-4.5.7/gnome/gcmd.h new/mc-4.5.9/gnome/gcmd.h --- old/mc-4.5.7/gnome/gcmd.h Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/gnome/gcmd.h Mon Jan 18 17:44:12 1999 @@ -1,21 +1,23 @@ #ifndef __GCMD_H #define __GCMD_H -void gnome_listing_cmd (GtkWidget *widget, WPanel *panel); -void gnome_compare_panels (void); -void gnome_open_terminal (void); -void gnome_about_cmd (void); -void gnome_quit_cmd (void); -void gnome_open_panel (GtkWidget *widget, WPanel *panel); -int gnome_close_panel (GtkWidget *widget, WPanel *panel); -void gnome_icon_view_cmd (GtkWidget *widget, WPanel *panel); -void gnome_partial_view_cmd (GtkWidget *widget, WPanel *panel); -void gnome_full_view_cmd (GtkWidget *widget, WPanel *panel); -void gnome_custom_view_cmd (GtkWidget *widget, WPanel *panel); -void gnome_sort_cmd (GtkWidget *widget, WPanel *panel); -void gnome_select_all_cmd (GtkWidget *widget, WPanel *panel); -void gnome_filter_cmd (GtkWidget *widget, WPanel *panel); +void gnome_listing_cmd (GtkWidget *widget, WPanel *panel); +void gnome_compare_panels (void); +void gnome_open_terminal (void); +void gnome_about_cmd (void); +void gnome_quit_cmd (void); +void gnome_open_panel (GtkWidget *widget, WPanel *panel); +int gnome_close_panel (GtkWidget *widget, WPanel *panel); +void gnome_icon_view_cmd (GtkWidget *widget, WPanel *panel); +void gnome_partial_view_cmd (GtkWidget *widget, WPanel *panel); +void gnome_full_view_cmd (GtkWidget *widget, WPanel *panel); +void gnome_custom_view_cmd (GtkWidget *widget, WPanel *panel); +void gnome_sort_cmd (GtkWidget *widget, WPanel *panel); +void gnome_select_all_cmd (GtkWidget *widget, WPanel *panel); +void gnome_filter_cmd (GtkWidget *widget, WPanel *panel); void gnome_external_panelize (GtkWidget *widget, WPanel *panel); -void gnome_open_files (GtkWidget *widget, WPanel *panel); +void gnome_open_files (GtkWidget *widget, WPanel *panel); +void gnome_run_new (GtkWidget *widget, GnomeDesktopEntry *gde); +void gnome_mkdir_cmd (GtkWidget *widget, WPanel *panel); #endif /* __GCMD_H */ diff -ruN old/mc-4.5.7/gnome/gdesktop-icon.c new/mc-4.5.9/gnome/gdesktop-icon.c --- old/mc-4.5.7/gnome/gdesktop-icon.c Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/gnome/gdesktop-icon.c Mon Jan 18 17:44:12 1999 @@ -7,7 +7,9 @@ #include #include +#include #include "gdesktop-icon.h" +#include "dir.h" #include "gdesktop.h" @@ -160,11 +162,14 @@ if (gnome_win_hints_wm_exists ()) { gnome_win_hints_set_layer (widget, WIN_LAYER_DESKTOP); - gnome_win_hints_set_state (widget, WIN_STATE_FIXED_POSITION | WIN_STATE_ARRANGE_IGNORE); + gnome_win_hints_set_state (widget, + WIN_STATE_FIXED_POSITION + | WIN_STATE_ARRANGE_IGNORE + | WIN_STATE_STICKY); gnome_win_hints_set_hints (widget, - (WIN_HINTS_SKIP_FOCUS - | WIN_HINTS_SKIP_WINLIST - | WIN_HINTS_SKIP_TASKBAR)); + WIN_HINTS_SKIP_FOCUS + | WIN_HINTS_SKIP_WINLIST + | WIN_HINTS_SKIP_TASKBAR); } /* Set the stipple color now that we have a style */ diff -ruN old/mc-4.5.7/gnome/gdesktop.c new/mc-4.5.9/gnome/gdesktop.c --- old/mc-4.5.7/gnome/gdesktop.c Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/gnome/gdesktop.c Mon Jan 18 17:44:12 1999 @@ -34,7 +34,9 @@ #include "dialog.h" #define DIR_H_INCLUDE_HANDLE_DIRENT /* bleah */ #include "dir.h" +#include "ext.h" #include "file.h" +#include "fileopctx.h" #include "gconf.h" #include "gdesktop.h" #include "gdesktop-icon.h" @@ -111,6 +113,11 @@ * icon had the GDK_CONTROL_MASK in it. */ static int dnd_select_icon_pending; +/* Whether the button release signal on a desktop icon should be stopped due to + * the icon being selected by clicking on the text item. + */ +static int icon_select_on_text; + /* Proxy window for clicks on the root window */ static GdkWindow *click_proxy_gdk_window; static GtkWidget *click_proxy_invisible; @@ -564,7 +571,7 @@ } /* Creates a file entry structure and fills it with information appropriate to the specified file. */ -static file_entry * +file_entry * file_entry_from_file (char *filename) { file_entry *fe; @@ -596,7 +603,7 @@ } /* Frees a file entry structure */ -static void +void file_entry_free (file_entry *fe) { if (fe->fname) @@ -638,6 +645,26 @@ return retval; } +/* Sets up the mouse grab for when a desktop icon is being edited */ +static void +setup_editing_grab (DesktopIconInfo *dii) +{ + GdkCursor *ibeam; + + ibeam = gdk_cursor_new (GDK_XTERM); + gdk_pointer_grab (dii->dicon->window, + TRUE, + (GDK_BUTTON_PRESS_MASK + | GDK_BUTTON_RELEASE_MASK + | GDK_POINTER_MOTION_MASK + | GDK_ENTER_NOTIFY_MASK + | GDK_LEAVE_NOTIFY_MASK), + NULL, + ibeam, + GDK_CURRENT_TIME); + gdk_cursor_destroy (ibeam); +} + /* * Callback used when the user begins editing the icon text item in a * desktop icon. It installs the mouse and keyboard grabs that are @@ -647,7 +674,6 @@ editing_started (GnomeIconTextItem *iti, gpointer data) { DesktopIconInfo *dii; - GdkCursor *ibeam; dii = data; @@ -658,21 +684,9 @@ /* Unselect all icons but this one */ unselect_all (dii); - ibeam = gdk_cursor_new (GDK_XTERM); - gdk_pointer_grab (dii->dicon->window, - TRUE, - (GDK_BUTTON_PRESS_MASK - | GDK_BUTTON_RELEASE_MASK - | GDK_POINTER_MOTION_MASK - | GDK_ENTER_NOTIFY_MASK - | GDK_LEAVE_NOTIFY_MASK), - NULL, - ibeam, - GDK_CURRENT_TIME); gtk_grab_add (dii->dicon); - gdk_cursor_destroy (ibeam); - - gdk_keyboard_grab (GTK_LAYOUT (DESKTOP_ICON (dii->dicon)->canvas)->bin_window, FALSE, GDK_CURRENT_TIME); + gdk_keyboard_grab (GTK_LAYOUT (DESKTOP_ICON (dii->dicon)->canvas)->bin_window, + FALSE, GDK_CURRENT_TIME); } /* Sets up the specified icon as a drag source, but does not connect the signals */ @@ -706,6 +720,19 @@ setup_icon_dnd_actions (dii); } +/* Callback used when the user stops selecting text in a desktop icon. This function + * restores the mouse grab that we had set up initially (the selection process changes + * the grab and then removes it, so we need to restore the initial grab). + */ +static void +selection_stopped (GnomeIconTextItem *iti, gpointer data) +{ + DesktopIconInfo *dii; + + dii = data; + setup_editing_grab (dii); +} + /** * desktop_icon_info_open: * @dii: The desktop icon to open. @@ -735,23 +762,32 @@ { char *full_name; struct stat s; + FileOpContext *ctx; long progress_count = 0; double progress_bytes = 0; /* 1. Delete the file */ - create_op_win (OP_DELETE, 1); + ctx = file_op_context_new (); + file_op_context_create_ui (ctx, OP_DELETE, TRUE); x_flush_events (); full_name = g_concat_dir_and_file (desktop_directory, dii->filename); - stat (full_name, &s); - if (S_ISDIR (s.st_mode)) - erase_dir (full_name, &progress_count, &progress_bytes); - else - erase_file (full_name, &progress_count, &progress_bytes, TRUE); - gmeta_del_icon_pos (full_name); + if (lstat (full_name, &s) != -1) { + if (S_ISLNK (s.st_mode)) + erase_file (ctx, full_name, &progress_count, &progress_bytes, TRUE); + else { + if (S_ISDIR (s.st_mode)) + erase_dir (ctx, full_name, &progress_count, &progress_bytes); + else + erase_file (ctx, full_name, &progress_count, &progress_bytes, TRUE); + } + + gmeta_del_icon_pos (full_name); + } + g_free (full_name); - destroy_op_win (); + file_op_context_destroy (ctx); /* 2. Destroy the dicon */ desktop_icon_info_destroy (dii); @@ -771,156 +807,144 @@ g_free (filename); } -/* Callback activated when a button is redirected from the desktop to - * the icon during a grab. +/* Idle handler that opens a desktop icon. See below for information on why we + * do things this way. */ static gint -window_button_press (GtkWidget *widget, GdkEventButton *event, gpointer data) +idle_open_icon (gpointer data) { - DesktopIconInfo *dii; - GtkWidget *parent; - - dii = data; - - /* We should only get this while editing. But check anyways - - * we ignore events in a child of our a event widget - */ - parent = gtk_get_event_widget ((GdkEvent *)event); - if (parent) - parent = parent->parent; - - while (parent) { - if (widget == parent) - return FALSE; - parent = parent->parent; - } - - if (GNOME_ICON_TEXT_ITEM (DESKTOP_ICON (dii->dicon)->text)->editing) { - gnome_icon_text_item_stop_editing ( - GNOME_ICON_TEXT_ITEM ( - DESKTOP_ICON (dii->dicon)->text), TRUE); - return TRUE; - } - + desktop_icon_info_open (data); return FALSE; } -/* Callback used when a button is pressed on a desktop icon */ +/* Event handler for desktop icons. Button events are ignored when the icon is + * being edited; these will be handled either by the icon's text item or the + * icon_event_after() fallback. + */ static gint -icon_button_press (GtkWidget *widget, GdkEventButton *event, gpointer data) +icon_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data) { DesktopIconInfo *dii; + GnomeIconTextItem *iti; + int on_text; int retval; dii = data; + iti = GNOME_ICON_TEXT_ITEM (DESKTOP_ICON (dii->dicon)->text); - /* If the text is being edited, do not handle clicks by ourselves */ - - if (GNOME_ICON_TEXT_ITEM (DESKTOP_ICON (dii->dicon)->text)->editing) - return FALSE; - - /* Save the mouse position for DnD */ - - dnd_press_x = event->x; - dnd_press_y = event->y; - - /* Process the event */ - + on_text = item == GNOME_CANVAS_ITEM (iti); retval = FALSE; switch (event->type) { case GDK_BUTTON_PRESS: - if (event->button == 1) { - /* If (only) the Control key is down, then we have to delay the icon selection */ - - dnd_select_icon_pending = ((event->state & GDK_CONTROL_MASK) - && !((event->state & GDK_CONTROL_MASK) - && (event->state & GDK_SHIFT_MASK))); + if (event->button.button == 1) { + /* If se are editing, do not handle the event ourselves + * -- either let the text item handle it, or wait until + * we fall back to the icon_event_after() callback. + */ + if (iti->editing) + break; + + /* Save the mouse position for DnD */ + + dnd_press_x = event->button.x; + dnd_press_y = event->button.y; + + /* Handle icon selection if we are not on the text item + * or if the icon is not selected in the first place. + * Otherwise, if there are modifier keys pressed, handle + * icon selection instead of starting editing. + */ + if (!on_text + || !dii->selected + || (event->button.state & (GDK_CONTROL_MASK | GDK_SHIFT_MASK))) { + /* If click on text, and the icon was not + * selected in the first place or shift is down, + * save this flag. + */ + if (on_text + && (!dii->selected || (event->button.state & GDK_SHIFT_MASK))) + icon_select_on_text = TRUE; + + if ((event->button.state & GDK_CONTROL_MASK) + && !(event->button.state & GDK_SHIFT_MASK)) + dnd_select_icon_pending = TRUE; + else + select_icon (dii, event->button.state); - if (!dnd_select_icon_pending) { - select_icon (dii, event->state); retval = TRUE; } - } else if (event->button == 3) { - do_popup_menu (dii, event); + } else if (event->button.button == 3) { + do_popup_menu (dii, (GdkEventButton *) event); retval = TRUE; } - break; case GDK_2BUTTON_PRESS: - if (event->button != 1) + if (event->button.button != 1 || iti->editing) break; - desktop_icon_info_open (dii); + /* We have an interesting race condition here. If we open the + * desktop icon here instead of doing it in the idle handler, + * the icon thinks it must begin editing itself, even when the + * icon_select_on_text flag tries to prevent it. I have no idea + * why this happens :-( - Federico + */ + gtk_idle_add (idle_open_icon, dii); +/* desktop_icon_info_open (dii); */ + icon_select_on_text = TRUE; retval = TRUE; break; - default: - break; - } - - /* Keep the canvas items from getting the signal */ -#if 0 - if (retval) - gtk_signal_emit_stop_by_name (GTK_OBJECT (DESKTOP_ICON (dii->dicon)->canvas), "button_press_event"); -#endif - return retval; -} - -/* Handler for button releases on desktop icons. If there was a pending - * selection on the icon, then the function performs the selection. - */ -static gint -icon_button_release (GtkWidget *widget, GdkEventButton *event, gpointer data) -{ - DesktopIconInfo *dii; + case GDK_BUTTON_RELEASE: + if (event->button.button != 1) + break; - dii = data; + if (on_text && icon_select_on_text) { + icon_select_on_text = FALSE; + retval = TRUE; + } - if (dnd_select_icon_pending) { - select_icon (dii, GDK_CONTROL_MASK); - dnd_select_icon_pending = FALSE; + if (dnd_select_icon_pending) { + select_icon (dii, GDK_CONTROL_MASK); + dnd_select_icon_pending = FALSE; + retval = TRUE; + } + break; - return TRUE; - } else if (GNOME_ICON_TEXT_ITEM (DESKTOP_ICON (dii->dicon)->text)->selecting) { - dii->finishing_selection = TRUE; + default: + break; } - return FALSE; + /* If the click was on the text and we actually did something, then we + * need to stop the text item's event handler from executing. + */ + if (on_text && retval) + gtk_signal_emit_stop_by_name (GTK_OBJECT (iti), "event"); + + return retval; } -/* Handler for button releases on desktop icons. If there was a pending - * selection on the icon, then the function performs the selection. +/* Fallback handler for when the icon is being edited and the user clicks + * outside the icon's text item. This indicates that editing should be accepted + * and terminated. */ static gint -icon_button_release_after (GtkWidget *widget, GdkEventButton *event, gpointer data) +icon_event_after (GtkWidget *widget, GdkEventButton *event, gpointer data) { DesktopIconInfo *dii; + GnomeIconTextItem *iti; dii = data; + iti = GNOME_ICON_TEXT_ITEM (DESKTOP_ICON (dii->dicon)->text); - if (dii->finishing_selection) { - /* Restore the pointer grab here because the icon item just - * called gdk_pointer_ungrab() - */ - GdkCursor *ibeam = gdk_cursor_new (GDK_XTERM); - gdk_pointer_grab (dii->dicon->window, - TRUE, - (GDK_BUTTON_PRESS_MASK - | GDK_BUTTON_RELEASE_MASK - | GDK_POINTER_MOTION_MASK - | GDK_ENTER_NOTIFY_MASK - | GDK_LEAVE_NOTIFY_MASK), - NULL, - ibeam, - GDK_CURRENT_TIME); - gdk_cursor_destroy (ibeam); + if (event->type != GDK_BUTTON_PRESS) + return FALSE; - dii->finishing_selection = FALSE; - } + g_return_val_if_fail (iti->editing, FALSE); /* sanity check for dropped events */ - return FALSE; + gnome_icon_text_item_stop_editing (iti, TRUE); + return TRUE; } /* Callback used when a drag from the desktop icons is started. We set the drag icon to the proper @@ -1172,7 +1196,7 @@ } -out: + out: file_entry_free (fe); } @@ -1268,19 +1292,28 @@ file_entry_free (fe); g_free (full_name); - /* Connect to the icon's signals */ + /* Connect to the icon's signals. We connect to the image/stipple and + * text items separately so that the callback can distinguish between + * them. This is not a hack. + */ - gtk_signal_connect_after (GTK_OBJECT (DESKTOP_ICON (dii->dicon)->canvas), "button_press_event", - (GtkSignalFunc) icon_button_press, + gtk_signal_connect (GTK_OBJECT (DESKTOP_ICON (dii->dicon)->icon), "event", + (GtkSignalFunc) icon_event, dii); - gtk_signal_connect (GTK_OBJECT (dii->dicon), "button_press_event", - (GtkSignalFunc) window_button_press, + gtk_signal_connect (GTK_OBJECT (DESKTOP_ICON (dii->dicon)->stipple), "event", + (GtkSignalFunc) icon_event, dii); - gtk_signal_connect (GTK_OBJECT (DESKTOP_ICON (dii->dicon)->canvas), "button_release_event", - (GtkSignalFunc) icon_button_release, - dii); - gtk_signal_connect_after (GTK_OBJECT (DESKTOP_ICON (dii->dicon)->canvas), "button_release_event", - (GtkSignalFunc) icon_button_release_after, + gtk_signal_connect (GTK_OBJECT (DESKTOP_ICON (dii->dicon)->text), "event", + (GtkSignalFunc) icon_event, + dii); + + /* Connect_after to button presses on the icon's window. This is a + * fallback for when the icon is being edited and a button press is not + * handled by the icon's text item -- this means the user has clicked + * outside the text item and wishes to accept and terminate editing. + */ + gtk_signal_connect_after (GTK_OBJECT (dii->dicon), "button_press_event", + (GtkSignalFunc) icon_event_after, dii); /* Connect to the text item's signals */ @@ -1294,6 +1327,9 @@ gtk_signal_connect (GTK_OBJECT (DESKTOP_ICON (dii->dicon)->text), "editing_stopped", (GtkSignalFunc) editing_stopped, dii); + gtk_signal_connect (GTK_OBJECT (DESKTOP_ICON (dii->dicon)->text), "selection_stopped", + (GtkSignalFunc) selection_stopped, + dii); /* Prepare the DnD functionality for this icon */ @@ -1574,6 +1610,15 @@ break; case TARGET_URI_LIST: + /* + * Unless the user is dragging with button-2 (ask action) + * drops on the desktop will be symlinks. + * + * I have got enough complaints as it is. + */ + if (context->suggested_action != GDK_ACTION_ASK) + context->suggested_action = GDK_ACTION_LINK; + retval = gdnd_drop_on_directory (context, data, desktop_directory); if (retval) reload_desktop_icons (x, y); diff -ruN old/mc-4.5.7/gnome/gdesktop.h new/mc-4.5.9/gnome/gdesktop.h --- old/mc-4.5.7/gnome/gdesktop.h Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/gnome/gdesktop.h Mon Jan 18 17:44:12 1999 @@ -23,8 +23,7 @@ extern int desktop_auto_placement; /* Whether to auto-place icons or not (user placement) */ extern int desktop_snap_icons; /* Whether to snap icons to the grid or not */ -extern int want_transparent_icons; -extern int want_transparent_text; +extern int tree_panel_visible; /* Initializes the desktop -- init DnD, load the default desktop icons, etc. */ void desktop_init (void); @@ -43,9 +42,6 @@ */ int selected : 1; /* Is the icon selected? */ int tmp_selected : 1; /* Temp storage for original selection while rubberbanding */ - int finishing_selection : 1; /* Flag set while we are releasing - * button after selecting in the text - */ } DesktopIconInfo; void desktop_icon_info_destroy (DesktopIconInfo *dii); @@ -68,5 +64,7 @@ char *pathname; } desktop_icon_t; +file_entry *file_entry_from_file (char *filename); +void file_entry_free (file_entry *fe); #endif diff -ruN old/mc-4.5.7/gnome/gdialogs.c new/mc-4.5.9/gnome/gdialogs.c --- old/mc-4.5.7/gnome/gdialogs.c Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/gnome/gdialogs.c Mon Jan 18 17:44:12 1999 @@ -6,33 +6,55 @@ #include #include "file.h" #include "filegui.h" +#include "fileopctx.h" #include "regex.h" #include "../vfs/vfs.h" enum { - REPLACE_PROMPT, - REPLACE_ALWAYS, - REPLACE_UPDATE, - REPLACE_NEVER, - REPLACE_ABORT, - REPLACE_SIZE, - REPLACE_OPTION_MENU + REPLACE_PROMPT, + REPLACE_ALWAYS, + REPLACE_UPDATE, + REPLACE_NEVER, + REPLACE_ABORT, + REPLACE_SIZE, + REPLACE_OPTION_MENU } FileReplaceCode; -static GtkWidget *op_win = NULL; -static GtkWidget *fmd_win = NULL; -static GtkObject *count_label = NULL; -static GtkObject *byte_prog = NULL; -static GtkWidget *file_label = NULL; -static GtkWidget *op_source_label = NULL; -static GtkWidget *op_target_label = NULL; -static GtkWidget *op_radio = NULL; -int op_preserve = 1; -static gint copy_status; -static gint minor_copy_status; +/* This structure describes the UI and internal data required by a file + * operation context. + */ +typedef struct { + /* The progress window */ + GtkWidget *op_win; + + /* Set to FALSE in file_op_context_create_ui, set on the cancel_cb if + * user click on Cancel. + */ + gboolean aborting; + + /* Source file label */ + GtkWidget *op_source_label; + + /* Target file label */ + GtkWidget *op_target_label; + + /* File number label */ + GtkObject *count_label; + + /* Current file label */ + GtkWidget *file_label; + + /* Bytes progress bar */ + GtkObject *byte_prog; + + /* Copy status in query replace dialog */ + int copy_status; + int minor_copy_status; + + /* Overwrite toggle */ + GtkWidget *op_radio; +} FileOpContextUI; -/* Set to FALSE in create_op_win, set on the cancel_cb if user click on Cancel */ -gboolean aborting; #define GDIALOG_TO_STRING "To: " #define GDIALOG_FROM_STRING "Copying from: " @@ -49,26 +71,26 @@ } static gchar * -trim_file_name (gchar *path, gint length, gint cur_length) +trim_file_name (FileOpContextUI *ui, gchar *path, gint length, gint cur_length) { static gint dotdotdot = 0; gchar *path_copy = NULL; gint len; if (!dotdotdot) - dotdotdot = gdk_string_width (op_source_label->style->font, "..."); + dotdotdot = gdk_string_width (ui->op_source_label->style->font, "..."); /* Cut the font length of path to length. */ length -= dotdotdot; len = (gint) ((1.0 - (gfloat) length / (gfloat) cur_length) * strlen (path)); /* we guess a starting point */ - if (gdk_string_width (op_source_label->style->font, path + len) < length) { - while (gdk_string_width (op_source_label->style->font, path + len) < length) + if (gdk_string_width (ui->op_source_label->style->font, path + len) < length) { + while (gdk_string_width (ui->op_source_label->style->font, path + len) < length) len --; len++; } else { - while (gdk_string_width (op_source_label->style->font, path + len) > length) + while (gdk_string_width (ui->op_source_label->style->font, path + len) > length) len ++; } path_copy = g_malloc (sizeof (gchar [1 + 3 + strlen (path) - len])); @@ -77,33 +99,40 @@ } FileProgressStatus -file_progress_show_source (char *path) +file_progress_show_source (FileOpContext *ctx, char *path) { static gint from_width = 0; + FileOpContextUI *ui; gint path_width; gchar *path_copy = NULL; - g_return_val_if_fail (op_source_label != NULL, FILE_CONT); + g_return_val_if_fail (ctx != NULL, FILE_CONT); + g_return_val_if_fail (ctx->ui != NULL, FILE_CONT); - if (aborting) + ui = ctx->ui; + + g_return_val_if_fail (ui->op_source_label != NULL, FILE_CONT); + + if (ui->aborting) return FILE_ABORT; - + if (path == NULL){ - gtk_label_set (GTK_LABEL (op_source_label), ""); + gtk_label_set (GTK_LABEL (ui->op_source_label), ""); return FILE_CONT; } - + if (!from_width){ - from_width = gdk_string_width (op_source_label->style->font, + from_width = gdk_string_width (ui->op_source_label->style->font, _(GDIALOG_FROM_STRING)); } - path_width = gdk_string_width (op_source_label->style->font, path); + path_width = gdk_string_width (ui->op_source_label->style->font, path); if (from_width + path_width < GDIALOG_PROGRESS_WIDTH) - gtk_label_set (GTK_LABEL (op_source_label), path); + gtk_label_set (GTK_LABEL (ui->op_source_label), path); else { - path_copy = trim_file_name (path, GDIALOG_PROGRESS_WIDTH - from_width, path_width); + path_copy = trim_file_name (ui, path, GDIALOG_PROGRESS_WIDTH - from_width, + path_width); - gtk_label_set (GTK_LABEL (op_source_label), path_copy); + gtk_label_set (GTK_LABEL (ui->op_source_label), path_copy); g_free (path_copy); } @@ -111,31 +140,37 @@ } FileProgressStatus -file_progress_show_target (char *path) +file_progress_show_target (FileOpContext *ctx, char *path) { static gint to_width = 0; + FileOpContextUI *ui; gint path_width; gchar *path_copy = NULL; - g_return_val_if_fail (op_target_label != NULL, FILE_CONT); + g_return_val_if_fail (ctx != NULL, FILE_CONT); + g_return_val_if_fail (ctx->ui != NULL, FILE_CONT); - if (aborting) + ui = ctx->ui; + + g_return_val_if_fail (ui->op_target_label != NULL, FILE_CONT); + + if (ui->aborting) return FILE_ABORT; if (path == NULL){ - gtk_label_set (GTK_LABEL (op_target_label), ""); + gtk_label_set (GTK_LABEL (ui->op_target_label), ""); return FILE_CONT; } - + if (!to_width) - to_width = gdk_string_width (op_target_label->style->font, + to_width = gdk_string_width (ui->op_target_label->style->font, _(GDIALOG_TO_STRING)); - path_width = gdk_string_width (op_target_label->style->font, path); + path_width = gdk_string_width (ui->op_target_label->style->font, path); if (to_width + path_width < GDIALOG_PROGRESS_WIDTH) - gtk_label_set (GTK_LABEL (op_target_label), path); + gtk_label_set (GTK_LABEL (ui->op_target_label), path); else { - path_copy = trim_file_name (path, GDIALOG_PROGRESS_WIDTH - to_width, path_width); - gtk_label_set (GTK_LABEL (op_target_label), path_copy); + path_copy = trim_file_name (ui, path, GDIALOG_PROGRESS_WIDTH - to_width, path_width); + gtk_label_set (GTK_LABEL (ui->op_target_label), path_copy); g_free (path_copy); } @@ -143,81 +178,124 @@ } FileProgressStatus -file_progress_show_deleting (char *path) +file_progress_show_deleting (FileOpContext *ctx, char *path) { - if (aborting) + FileOpContextUI *ui; + + g_return_val_if_fail (ctx != NULL, FILE_CONT); + g_return_val_if_fail (ctx->ui != NULL, FILE_CONT); + + ui = ctx->ui; + + if (ui->aborting) return FILE_ABORT; - g_warning ("memo: file_progress_show_deleting!\npath\t%s\n",path); + /* FIXME */ + g_warning ("memo: file_progress_show_deleting!\npath\t%s\n", path); return FILE_CONT; } FileProgressStatus -file_progress_show (long done, long total) +file_progress_show (FileOpContext *ctx, long done, long total) { static gchar count[10]; + FileOpContextUI *ui; + + g_return_val_if_fail (ctx != NULL, FILE_CONT); + g_return_val_if_fail (ctx->ui != NULL, FILE_CONT); + + ui = ctx->ui; - if (aborting) + if (ui->aborting) return FILE_ABORT; snprintf (count, 9, "%d%%", (gint)(100.0 *(gfloat)done/(gfloat)total)); - gtk_label_set (GTK_LABEL (file_label), count); + gtk_label_set (GTK_LABEL (ui->file_label), count); while (gtk_events_pending ()) gtk_main_iteration (); return FILE_CONT; } FileProgressStatus -file_progress_show_count (long done, long total) +file_progress_show_count (FileOpContext *ctx, long done, long total) { static gchar count[14]; /* that's a lot of files... */ + FileOpContextUI *ui; - if (aborting) + g_return_val_if_fail (ctx != NULL, FILE_CONT); + g_return_val_if_fail (ctx->ui != NULL, FILE_CONT); + + ui = ctx->ui; + + if (ui->aborting) return FILE_ABORT; snprintf (count, 13, "%d/%d", done, total); - gtk_label_set (GTK_LABEL (count_label), count); + gtk_label_set (GTK_LABEL (ui->count_label), count); while (gtk_events_pending ()) gtk_main_iteration (); return FILE_CONT; } FileProgressStatus -file_progress_show_bytes (double done, double total) +file_progress_show_bytes (FileOpContext *ctx, double done, double total) { - if (aborting) + FileOpContextUI *ui; + + g_return_val_if_fail (ctx != NULL, FILE_CONT); + g_return_val_if_fail (ctx->ui != NULL, FILE_CONT); + + ui = ctx->ui; + + if (ui->aborting) return FILE_ABORT; - if (!total) - gtk_progress_bar_update (GTK_PROGRESS_BAR (byte_prog), 0.0); + if (total == 0.0) + gtk_progress_bar_update (GTK_PROGRESS_BAR (ui->byte_prog), 0.0); else - gtk_progress_bar_update (GTK_PROGRESS_BAR (byte_prog), (gfloat) done/(gfloat) total); + gtk_progress_bar_update (GTK_PROGRESS_BAR (ui->byte_prog), + (gfloat) done/(gfloat) total); while (gtk_events_pending ()) gtk_main_iteration (); return FILE_CONT; } + static void -option_menu_policy_callback (GtkWidget *menu, gpointer data) +option_menu_policy_callback (GtkWidget *item, gpointer data) { - minor_copy_status = (gint) data; - copy_status = (gint) data; - gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (op_radio), TRUE); + FileOpContextUI *ui; + int status; + + ui = data; + status = GPOINTER_TO_INT (gtk_object_get_user_data (GTK_OBJECT (item))); + + ui->minor_copy_status = status; + ui->copy_status = status; + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ui->op_radio), TRUE); } static void policy_callback (GtkWidget *button, gpointer data) { + FileOpContextUI *ui; + int status; + + ui = data; + status = GPOINTER_TO_INT (gtk_object_get_user_data (GTK_OBJECT (button))); + if (GTK_TOGGLE_BUTTON (button)->active) { g_print ("toggle\n"); - if ((gint) data == REPLACE_OPTION_MENU) { - copy_status = minor_copy_status; + if (status == REPLACE_OPTION_MENU) { + ui->copy_status = ui->minor_copy_status; } else - copy_status = (gint) data; + ui->copy_status = status; } } + FileProgressStatus -file_progress_query_replace_policy (gboolean dialog_needed) +file_progress_query_replace_policy (FileOpContext *ctx, gboolean dialog_needed) { + FileOpContextUI *ui; GtkWidget *qrp_dlg; GtkWidget *radio; GtkWidget *vbox; @@ -230,13 +308,18 @@ GtkWidget *menu; GtkWidget *menu_item; - if (aborting) + g_return_val_if_fail (ctx != NULL, FILE_CONT); + g_return_val_if_fail (ctx->ui != NULL, FILE_CONT); + + ui = ctx->ui; + + if (ui->aborting) return FILE_ABORT; - copy_status = REPLACE_PROMPT; + ui->copy_status = REPLACE_PROMPT; if (dialog_needed == FALSE) return FILE_CONT; - minor_copy_status = REPLACE_ALWAYS; + ui->minor_copy_status = REPLACE_ALWAYS; g_print ("in file_progress_query_replace_policy\n"); qrp_dlg = gnome_dialog_new (_("Files Exist"), GNOME_STOCK_BUTTON_OK, @@ -259,45 +342,57 @@ gtk_box_pack_start (GTK_BOX (vbox), gtk_hseparator_new (), FALSE, FALSE, 0); radio = gtk_radio_button_new_with_label (group, _("Prompt me before overwriting any file.")); - gtk_signal_connect (GTK_OBJECT (radio), "toggled", GTK_SIGNAL_FUNC (policy_callback), (gpointer) REPLACE_PROMPT); + gtk_object_set_user_data (GTK_OBJECT (radio), GINT_TO_POINTER (REPLACE_PROMPT)); + gtk_signal_connect (GTK_OBJECT (radio), "toggled", + GTK_SIGNAL_FUNC (policy_callback), ui); gtk_box_pack_start (GTK_BOX (vbox), radio, FALSE, FALSE, 0); group = gtk_radio_button_group (GTK_RADIO_BUTTON (radio)); - radio = gtk_radio_button_new_with_label (group, _("Don't overwrite any files.")); - gtk_signal_connect (GTK_OBJECT (radio), "toggled", GTK_SIGNAL_FUNC (policy_callback), (gpointer) REPLACE_NEVER); + gtk_object_set_user_data (GTK_OBJECT (radio), GINT_TO_POINTER (REPLACE_NEVER)); + gtk_signal_connect (GTK_OBJECT (radio), "toggled", + GTK_SIGNAL_FUNC (policy_callback), ui); gtk_box_pack_start (GTK_BOX (vbox), radio, FALSE, FALSE, 0); group = gtk_radio_button_group (GTK_RADIO_BUTTON (radio)); - - op_radio = gtk_radio_button_new (group); - gtk_signal_connect (GTK_OBJECT (op_radio), "toggled", GTK_SIGNAL_FUNC (policy_callback), (gpointer) REPLACE_OPTION_MENU); + ui->op_radio = gtk_radio_button_new (group); + gtk_object_set_user_data (GTK_OBJECT (ui->op_radio), GINT_TO_POINTER (REPLACE_OPTION_MENU)); + gtk_signal_connect (GTK_OBJECT (ui->op_radio), "toggled", + GTK_SIGNAL_FUNC (policy_callback), ui); hrbox = gtk_hbox_new (FALSE, GNOME_PAD_SMALL); gtk_box_pack_start (GTK_BOX (hrbox), gtk_label_new (_("Overwrite:")), FALSE, FALSE, 0); - + /* we set up the option menu. */ omenu = gtk_option_menu_new (); gtk_box_pack_start (GTK_BOX (hrbox), omenu, FALSE, FALSE, 0); menu = gtk_menu_new (); + menu_item = gtk_menu_item_new_with_label ( _("Older files.")); gtk_menu_append (GTK_MENU (menu), menu_item); + gtk_object_set_user_data (GTK_OBJECT (menu_item), GINT_TO_POINTER (REPLACE_UPDATE)); gtk_signal_connect (GTK_OBJECT (menu_item), "activate", - GTK_SIGNAL_FUNC (option_menu_policy_callback), (gpointer) REPLACE_UPDATE); + GTK_SIGNAL_FUNC (option_menu_policy_callback), ui); + menu_item = gtk_menu_item_new_with_label ( _("Files only if size differs.")); gtk_menu_append (GTK_MENU (menu), menu_item); + gtk_object_set_user_data (GTK_OBJECT (menu_item), GINT_TO_POINTER (REPLACE_SIZE)); gtk_signal_connect (GTK_OBJECT (menu_item), "activate", - GTK_SIGNAL_FUNC (option_menu_policy_callback), (gpointer) REPLACE_SIZE); + GTK_SIGNAL_FUNC (option_menu_policy_callback), ui); + menu_item = gtk_menu_item_new_with_label ( _("All files.")); gtk_menu_append (GTK_MENU (menu), menu_item); + gtk_object_set_user_data (GTK_OBJECT (menu_item), GINT_TO_POINTER (REPLACE_ALWAYS)); gtk_signal_connect (GTK_OBJECT (menu_item), "activate", - GTK_SIGNAL_FUNC (option_menu_policy_callback), (gpointer) REPLACE_ALWAYS); + GTK_SIGNAL_FUNC (option_menu_policy_callback), ui); + gtk_widget_show_all (menu); gtk_option_menu_set_menu (GTK_OPTION_MENU (omenu), menu); - gtk_signal_connect (GTK_OBJECT (op_radio), "toggled", GTK_SIGNAL_FUNC (policy_callback), (gpointer) REPLACE_ALWAYS); - gtk_box_pack_start (GTK_BOX (vbox), op_radio, FALSE, FALSE, 0); - group = gtk_radio_button_group (GTK_RADIO_BUTTON (op_radio)); - gtk_container_add (GTK_CONTAINER (op_radio), hrbox); + gtk_signal_connect (GTK_OBJECT (ui->op_radio), "toggled", + GTK_SIGNAL_FUNC (policy_callback), (gpointer) REPLACE_ALWAYS); + gtk_box_pack_start (GTK_BOX (vbox), ui->op_radio, FALSE, FALSE, 0); + group = gtk_radio_button_group (GTK_RADIO_BUTTON (ui->op_radio)); + gtk_container_add (GTK_CONTAINER (ui->op_radio), hrbox); gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (qrp_dlg)->vbox), hbox, FALSE, FALSE, 0); @@ -308,30 +403,36 @@ break; case -1: default: - copy_status = REPLACE_ABORT; + ui->copy_status = REPLACE_ABORT; return FILE_ABORT; } return FILE_CONT; } - FileProgressStatus -file_progress_real_query_replace (enum OperationMode mode, char *destname, struct stat *_s_stat, struct stat *_d_stat) +file_progress_real_query_replace (FileOpContext *ctx, enum OperationMode mode, char *destname, + struct stat *_s_stat, struct stat *_d_stat) { + FileOpContextUI *ui; GtkWidget *qr_dlg; gchar msg[128]; GtkWidget *label; - if (aborting) + g_return_val_if_fail (ctx != NULL, FILE_CONT); + g_return_val_if_fail (ctx->ui != NULL, FILE_CONT); + + ui = ctx->ui; + + if (ui->aborting) return FILE_ABORT; /* so what's the situation? Do we prompt or don't we prompt. */ - if (copy_status == REPLACE_PROMPT){ + if (ui->copy_status == REPLACE_PROMPT){ qr_dlg = gnome_dialog_new (_("File Exists"), GNOME_STOCK_BUTTON_YES, GNOME_STOCK_BUTTON_NO, GNOME_STOCK_BUTTON_CANCEL, NULL); - + snprintf (msg, sizeof (msg)-1, _("The target file already exists: %s"), destname); label = gtk_label_new (msg); gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT); @@ -355,7 +456,7 @@ } } - switch (copy_status){ + switch (ui->copy_status){ case REPLACE_UPDATE: if (_s_stat->st_mtime > _d_stat->st_mtime) return FILE_CONT; @@ -377,15 +478,21 @@ } void -file_progress_set_stalled_label (char *stalled_msg) +file_progress_set_stalled_label (FileOpContext *ctx, char *stalled_msg) { + g_return_if_fail (ctx != NULL); + g_return_if_fail (ctx->ui != NULL); + if (!stalled_msg || !*stalled_msg) return; + /* FIXME */ g_warning ("FIXME: file_progress_set_stalled_label!\nmsg\t%s\n",stalled_msg); } char * -file_mask_dialog (FileOperation operation, char *text, char *def_text, int only_one, int *do_background) +file_mask_dialog (FileOpContext *ctx, FileOperation operation, char *text, char *def_text, + int only_one, int *do_background) { + GtkWidget *fmd_win; GtkWidget *notebook; GtkWidget *hbox; GtkWidget *vbox, *label; @@ -398,8 +505,10 @@ const char *error; struct stat buf; - file_mask_stable_symlinks = 0; - + g_return_val_if_fail (ctx != NULL, NULL); + + ctx->stable_symlinks = 0; + /* Basic window */ if (operation == OP_COPY) fmd_win = gnome_dialog_new (_("Copy"), GNOME_STOCK_BUTTON_OK, @@ -430,7 +539,7 @@ def_text); gnome_file_entry_set_default_path (GNOME_FILE_ENTRY (fentry), def_text); cbox = gtk_check_button_new_with_label (_("Copy as a background process")); - gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (cbox), *do_background); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cbox), *do_background); gtk_signal_connect (GTK_OBJECT (cbox), "toggled", (GtkSignalFunc) fmd_check_box_callback, do_background); #if 0 gnome_widget_add_help (cbox, "Selecting this will run the copying in the background. " @@ -441,7 +550,7 @@ gtk_box_pack_end (GTK_BOX (vbox), gtk_hseparator_new (), FALSE, FALSE, 0); gtk_box_pack_end (GTK_BOX (vbox), fentry, FALSE, FALSE, 0); gnome_file_entry_set_modal(GNOME_FILE_ENTRY (fentry),TRUE); - + gtk_box_pack_end (GTK_BOX (vbox), alignment, FALSE, FALSE, 0); /* Advanced Options */ @@ -454,37 +563,41 @@ gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0); cbox = gtk_check_button_new_with_label (_("Preserve symlinks")); - gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (cbox), file_mask_stable_symlinks); - gtk_signal_connect (GTK_OBJECT (cbox), "toggled", (GtkSignalFunc) fmd_check_box_callback, &file_mask_stable_symlinks); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cbox), ctx->stable_symlinks); + gtk_signal_connect (GTK_OBJECT (cbox), "toggled", + (GtkSignalFunc) fmd_check_box_callback, &ctx->stable_symlinks); #if 0 gnome_widget_add_help (cbox, "FIXME: Add something here Miguel"); #endif gtk_box_pack_start (GTK_BOX (vbox), cbox, FALSE, FALSE, 0); - if (operation == OP_COPY) { cbox = gtk_check_button_new_with_label (_("Follow links.")); - gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (cbox), file_mask_op_follow_links); - gtk_signal_connect (GTK_OBJECT (cbox), "toggled", (GtkSignalFunc) fmd_check_box_callback, &file_mask_op_follow_links); - gnome_widget_add_help (cbox, _("Selecting this will copy the files that symlinks point " - "to instead of just copying the link.")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cbox), ctx->follow_links); + gtk_signal_connect (GTK_OBJECT (cbox), "toggled", + (GtkSignalFunc) fmd_check_box_callback, &ctx->follow_links); + gnome_widget_add_help (cbox, + _("Selecting this will copy the files that symlinks point " + "to instead of just copying the link.")); gtk_box_pack_start (GTK_BOX (vbox), cbox, FALSE, FALSE, 0); cbox = gtk_check_button_new_with_label (_("Preserve file attributes.")); - gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (cbox), op_preserve); - gtk_signal_connect (GTK_OBJECT (cbox), "toggled", (GtkSignalFunc) fmd_check_box_callback, &op_preserve); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cbox), ctx->op_preserve); + gtk_signal_connect (GTK_OBJECT (cbox), "toggled", + (GtkSignalFunc) fmd_check_box_callback, &ctx->op_preserve); gnome_widget_add_help (cbox, _("Preserves the permissions and the UID/GID if possible")); gtk_box_pack_start (GTK_BOX (vbox), cbox, FALSE, FALSE, 0); vbox = gtk_vbox_new (FALSE, GNOME_PAD_SMALL); gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0); cbox = gtk_check_button_new_with_label (_("Recursively copy subdirectories.")); - gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (cbox), dive_into_subdirs); - gtk_signal_connect (GTK_OBJECT (cbox), "toggled", (GtkSignalFunc) fmd_check_box_callback, &dive_into_subdirs); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cbox), ctx->dive_into_subdirs); + gtk_signal_connect (GTK_OBJECT (cbox), "toggled", + (GtkSignalFunc) fmd_check_box_callback, &ctx->dive_into_subdirs); gnome_widget_add_help (cbox, _("If set, this will copy the directories recursively")); gtk_box_pack_start (GTK_BOX (vbox), cbox, FALSE, FALSE, 0); } - + gtk_widget_show_all (GNOME_DIALOG (fmd_win)->vbox); gtk_window_set_modal (GTK_WINDOW (fmd_win), FALSE); gnome_dialog_set_close (GNOME_DIALOG (fmd_win), TRUE); @@ -495,28 +608,28 @@ gtk_widget_destroy (fmd_win); return NULL; } + dest_dir = gnome_file_entry_get_full_path(GNOME_FILE_ENTRY (fentry), TRUE); gtk_widget_destroy (fmd_win); easy_patterns = 1; - if (!dest_dir || !*dest_dir){ + if (!dest_dir || !*dest_dir) return NULL; - } - if (file_mask_op_follow_links && operation != OP_MOVE) - file_mask_xstat = mc_stat; + + if (ctx->follow_links && operation != OP_MOVE) + ctx->stat_func = mc_stat; else - file_mask_xstat = mc_lstat; - - if (op_preserve || operation == OP_MOVE){ - file_mask_preserve = 1; - file_mask_umask_kill = 0777777; - file_mask_preserve_uidgid = (geteuid () == 0) ? 1 : 0; - } - else { - int i; - file_mask_preserve = file_mask_preserve_uidgid = 0; - i = umask (0); - umask (i); - file_mask_umask_kill = i ^ 0777777; + ctx->stat_func = mc_lstat; + + if (ctx->op_preserve || operation == OP_MOVE){ + ctx->preserve = 1; + ctx->umask_kill = 0777777; + ctx->preserve_uidgid = (geteuid () == 0) ? 1 : 0; + } else { + int i; + ctx->preserve = ctx->preserve_uidgid = 0; + i = umask (0); + umask (i); + ctx->umask_kill = i ^ 0777777; } source_mask = strdup ("*"); orig_mask = source_mask; @@ -526,41 +639,44 @@ return dest_dir; } - if (!dest_dir){ + if (!dest_dir) return NULL; - } + if (!*dest_dir) { g_free (dest_dir); return NULL; } - if (source_easy_patterns){ + + if (source_easy_patterns) { source_easy_patterns = easy_patterns; easy_patterns = 1; source_mask = convert_pattern (source_mask, match_file, 1); easy_patterns = source_easy_patterns; - error = re_compile_pattern (source_mask, strlen (source_mask), &file_mask_rx); + error = re_compile_pattern (source_mask, strlen (source_mask), &ctx->rx); free (source_mask); } else - error = re_compile_pattern (source_mask, strlen (source_mask), &file_mask_rx); - - if (error){ + error = re_compile_pattern (source_mask, strlen (source_mask), &ctx->rx); + + if (error) g_warning ("%s\n",error); - } + if (orig_mask) free (orig_mask); - file_mask_dest_mask = strrchr (dest_dir, PATH_SEP); - if (file_mask_dest_mask == NULL) - file_mask_dest_mask = dest_dir; + ctx->dest_mask = strrchr (dest_dir, PATH_SEP); + if (ctx->dest_mask == NULL) + ctx->dest_mask = dest_dir; else - file_mask_dest_mask++; - orig_mask = file_mask_dest_mask; - if (!*file_mask_dest_mask || (!dive_into_subdirs && !is_wildcarded (file_mask_dest_mask) && - (!only_one || (!mc_stat (dest_dir, &buf) && S_ISDIR (buf.st_mode)))) || - (dive_into_subdirs && ((!only_one && !is_wildcarded (file_mask_dest_mask)) || - (only_one && !mc_stat (dest_dir, &buf) && S_ISDIR (buf.st_mode))))) - file_mask_dest_mask = strdup ("*"); + ctx->dest_mask++; + orig_mask = ctx->dest_mask; + if (!*ctx->dest_mask || (!ctx->dive_into_subdirs && !is_wildcarded (ctx->dest_mask) && + (!only_one || (!mc_stat (dest_dir, &buf) + && S_ISDIR (buf.st_mode)))) || + (ctx->dive_into_subdirs && ((!only_one && !is_wildcarded (ctx->dest_mask)) || + (only_one && !mc_stat (dest_dir, &buf) + && S_ISDIR (buf.st_mode))))) + ctx->dest_mask = strdup ("*"); else { - file_mask_dest_mask = strdup (file_mask_dest_mask); + ctx->dest_mask = strdup (ctx->dest_mask); *orig_mask = 0; } if (!*dest_dir){ @@ -571,97 +687,109 @@ } static void -cancel_cb (void) +cancel_cb (GtkWidget *widget, gpointer data) { - aborting = TRUE; + FileOpContextUI *ui; + + ui = data; + ui->aborting = TRUE; } void -create_op_win (FileOperation op, int with_eta) +file_op_context_create_ui (FileOpContext *ctx, FileOperation op, int with_eta) { + FileOpContextUI *ui; GtkWidget *alignment; GtkWidget *hbox; - aborting = FALSE; - + g_return_if_fail (ctx != NULL); + g_return_if_fail (ctx->ui == NULL); + + ui = g_new0 (FileOpContextUI, 1); + ctx->ui = ui; + switch (op) { case OP_MOVE: - op_win = gnome_dialog_new ("Move Progress", GNOME_STOCK_BUTTON_CANCEL, NULL); + ui->op_win = gnome_dialog_new ("Move Progress", GNOME_STOCK_BUTTON_CANCEL, NULL); break; case OP_COPY: - op_win = gnome_dialog_new ("Copy Progress", GNOME_STOCK_BUTTON_CANCEL, NULL); + ui->op_win = gnome_dialog_new ("Copy Progress", GNOME_STOCK_BUTTON_CANCEL, NULL); break; case OP_DELETE: - op_win = gnome_dialog_new ("Delete Progress", GNOME_STOCK_BUTTON_CANCEL, NULL); - gtk_widget_show_all (GNOME_DIALOG (op_win)->vbox); - gtk_widget_show_now (op_win); + ui->op_win = gnome_dialog_new ("Delete Progress", GNOME_STOCK_BUTTON_CANCEL, NULL); + gtk_widget_show_all (GNOME_DIALOG (ui->op_win)->vbox); + gtk_widget_show_now (ui->op_win); return; } - gnome_dialog_button_connect_object (GNOME_DIALOG (op_win), 0, - GTK_SIGNAL_FUNC(cancel_cb), NULL); - + gnome_dialog_button_connect (GNOME_DIALOG (ui->op_win), 0, + GTK_SIGNAL_FUNC (cancel_cb), ui); + alignment = gtk_alignment_new (0.0, 0.5, 0, 0); hbox = gtk_hbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (alignment), hbox); gtk_box_pack_start (GTK_BOX (hbox), gtk_label_new (_(GDIALOG_FROM_STRING)), FALSE, FALSE, 0); - op_source_label = gtk_label_new (""); - - gtk_box_pack_start (GTK_BOX (hbox), op_source_label, FALSE, FALSE, 0); - gtk_box_set_spacing (GTK_BOX (GNOME_DIALOG (op_win)->vbox), GNOME_PAD_SMALL); - gtk_container_set_border_width (GTK_CONTAINER (GNOME_DIALOG (op_win)->vbox), GNOME_PAD); - gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (op_win)->vbox), + ui->op_source_label = gtk_label_new (""); + + gtk_box_pack_start (GTK_BOX (hbox), ui->op_source_label, FALSE, FALSE, 0); + gtk_box_set_spacing (GTK_BOX (GNOME_DIALOG (ui->op_win)->vbox), GNOME_PAD_SMALL); + gtk_container_set_border_width (GTK_CONTAINER (GNOME_DIALOG (ui->op_win)->vbox), GNOME_PAD); + gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (ui->op_win)->vbox), alignment, FALSE, FALSE, 0); - + alignment = gtk_alignment_new (0.0, 0.5, 0, 0); hbox = gtk_hbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (alignment), hbox); gtk_box_pack_start (GTK_BOX (hbox), gtk_label_new (_(GDIALOG_TO_STRING)), FALSE, FALSE, 0); - op_target_label = gtk_label_new (""); - gtk_box_pack_start (GTK_BOX (hbox), op_target_label, FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (op_win)->vbox), + ui->op_target_label = gtk_label_new (""); + gtk_box_pack_start (GTK_BOX (hbox), ui->op_target_label, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (ui->op_win)->vbox), alignment, FALSE, FALSE, 0); - + alignment = gtk_alignment_new (0.0, 0.5, 0, 0); hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (hbox), gtk_label_new (_("File ")), FALSE, FALSE, 0); - count_label = GTK_OBJECT (gtk_label_new ("")); - gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (count_label), FALSE, FALSE, 0); - + ui->count_label = GTK_OBJECT (gtk_label_new ("")); + gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (ui->count_label), FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (hbox), gtk_label_new (_(" is ")), FALSE, FALSE, 0); - file_label = gtk_label_new (""); - gtk_box_pack_start (GTK_BOX (hbox), file_label, FALSE, FALSE, 0); + ui->file_label = gtk_label_new (""); + gtk_box_pack_start (GTK_BOX (hbox), ui->file_label, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (hbox), gtk_label_new (_(" Done.")), FALSE, FALSE, 0); - + gtk_container_add (GTK_CONTAINER (alignment), hbox); - - - gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (op_win)->vbox), + + gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (ui->op_win)->vbox), alignment, FALSE, FALSE, 0); - - byte_prog = GTK_OBJECT (gtk_progress_bar_new ()); - gtk_widget_set_usize (GTK_WIDGET (byte_prog), GDIALOG_PROGRESS_WIDTH, -1); - gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (op_win)->vbox), - GTK_WIDGET (byte_prog), FALSE, FALSE, 0); - + + ui->byte_prog = GTK_OBJECT (gtk_progress_bar_new ()); + gtk_widget_set_usize (GTK_WIDGET (ui->byte_prog), GDIALOG_PROGRESS_WIDTH, -1); + gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (ui->op_win)->vbox), + GTK_WIDGET (ui->byte_prog), FALSE, FALSE, 0); /*done with things */ - gtk_widget_show_all (GNOME_DIALOG (op_win)->vbox); - gtk_widget_show_now (op_win); + gtk_widget_show_all (GNOME_DIALOG (ui->op_win)->vbox); + gtk_widget_show_now (ui->op_win); } void -destroy_op_win (void) +file_op_context_destroy_ui (FileOpContext *ctx) { - if (op_win){ - gtk_widget_destroy (op_win); - op_win = NULL; - op_source_label = NULL; - op_target_label = NULL; - } + FileOpContextUI *ui; + + g_return_if_fail (ctx != NULL); + g_return_if_fail (ctx->ui != NULL); + + ui = ctx->ui; + + gtk_widget_destroy (ui->op_win); + + g_free (ui); + ctx->ui = NULL; } + void -fmd_init_i18n() +fmd_init_i18n (int force) { /* unneccessary func */ } diff -ruN old/mc-4.5.7/gnome/gdnd.c new/mc-4.5.9/gnome/gdnd.c --- old/mc-4.5.7/gnome/gdnd.c Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/gnome/gdnd.c Mon Jan 18 17:44:12 1999 @@ -10,6 +10,7 @@ #include #include #include "file.h" +#include "fileopctx.h" #include "main.h" #include "panel.h" #include "gscreen.h" @@ -121,17 +122,11 @@ { switch (action) { case GDK_ACTION_COPY: - if (ask) - panel_operate (source_panel, OP_COPY, destdir); - else - panel_operate_def (source_panel, OP_COPY, destdir); + panel_operate (source_panel, OP_COPY, destdir, ask); break; case GDK_ACTION_MOVE: - if (ask) - panel_operate (source_panel, OP_MOVE, destdir); - else - panel_operate_def (source_panel, OP_MOVE, destdir); + panel_operate (source_panel, OP_MOVE, destdir, ask); break; default: @@ -180,22 +175,23 @@ char *name; char *dest_name; int result; + FileOpContext *ctx; + + ctx = file_op_context_new (); switch (action) { case GDK_ACTION_COPY: - create_op_win (OP_COPY, FALSE); + file_op_context_create_ui (ctx, OP_COPY, FALSE); break; case GDK_ACTION_MOVE: - create_op_win (OP_MOVE, FALSE); + file_op_context_create_ui (ctx, OP_MOVE, FALSE); break; default: g_assert_not_reached (); } - file_mask_defaults (); - for (; names; names = names->next) { name = names->data; if (strncmp (name, "file:", 5) == 0) @@ -216,25 +212,25 @@ if (S_ISDIR (s.st_mode)) { if (action == GDK_ACTION_COPY) - copy_dir_dir ( - name, dest_name, - TRUE, FALSE, - FALSE, FALSE, - &count, &bytes); + copy_dir_dir (ctx, + name, dest_name, + TRUE, FALSE, + FALSE, FALSE, + &count, &bytes); else - move_dir_dir ( - name, dest_name, - &count, &bytes); + move_dir_dir (ctx, + name, dest_name, + &count, &bytes); } else { if (action == GDK_ACTION_COPY) - copy_file_file ( - name, dest_name, - TRUE, - &count, &bytes, 1); + copy_file_file (ctx, + name, dest_name, + TRUE, + &count, &bytes, 1); else - move_file_file ( - name, dest_name, - &count, &bytes); + move_file_file (ctx, + name, dest_name, + &count, &bytes); } } } while (result != 0); @@ -243,7 +239,7 @@ break; } - destroy_op_win (); + file_op_context_destroy (ctx); } /** @@ -285,7 +281,8 @@ /* Symlinks do not use file.c */ if (source_panel && action != GDK_ACTION_LINK) - perform_action_on_panel (source_panel, action, destdir, context->suggested_action == GDK_ACTION_ASK); + perform_action_on_panel (source_panel, action, destdir, + context->suggested_action == GDK_ACTION_ASK); else { names = gnome_uri_list_extract_uris (selection_data->data); diff -ruN old/mc-4.5.7/gnome/gicon.c new/mc-4.5.9/gnome/gicon.c --- old/mc-4.5.7/gnome/gicon.c Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/gnome/gicon.c Mon Jan 18 17:44:12 1999 @@ -291,3 +291,36 @@ { return gicon_get_icon_for_file_speed (fe, TRUE); } + +typedef struct { + char *name; + void *image; +} lookup_name_closure_t; + +void +search_image (gpointer key, gpointer value, gpointer user_data) +{ + lookup_name_closure_t *closure = user_data; + + if (value == closure->image) + closure->name = key; +} + +/** + * Returns the file name that maps to this given GdkImlibImage + * + */ +char * +gicon_image_to_name (GdkImlibImage *image) +{ + lookup_name_closure_t closure; + + closure.image = image; + closure.name = NULL; + + g_hash_table_foreach (icon_hash, &search_image, &closure); + if (closure.name == NULL) + return g_strdup (ICONDIR "i-regular.png"); + + return g_strdup (closure.name); +} diff -ruN old/mc-4.5.7/gnome/gimp.image.desktop new/mc-4.5.9/gnome/gimp.image.desktop --- old/mc-4.5.7/gnome/gimp.image.desktop Wed Dec 31 19:00:00 1969 +++ new/mc-4.5.9/gnome/gimp.image.desktop Mon Jan 18 22:35:00 1999 @@ -0,0 +1,8 @@ +[Desktop Entry] +Name=Image +Comment=Create a new Image +TryExec=gimp +Exec=gimp +Icon=gnome-gimp.png +Terminal=0 +Type=Application diff -ruN old/mc-4.5.7/gnome/glayout.c new/mc-4.5.9/gnome/glayout.c --- old/mc-4.5.7/gnome/glayout.c Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/gnome/glayout.c Mon Jan 18 17:44:12 1999 @@ -9,6 +9,7 @@ #include "x.h" #include #include +#include #include "dir.h" #include "panel.h" #include "gscreen.h" @@ -24,6 +25,9 @@ #include "setup.h" #include "../vfs/vfs.h" #include "gprefs.h" + + + #define UNDEFINED_INDEX -1 GList *containers = 0; @@ -275,9 +279,16 @@ void configure_box (void); GtkCheckMenuItem *gnome_toggle_snap (void); +GnomeUIInfo gnome_panel_new_menu [] = { + { GNOME_APP_UI_ITEM, N_("_Terminal"), N_("Launch a new terminal in the current directory"), gnome_open_terminal}, + /* If this ever changes, make sure you update create_new_menu accordingly. */ + { GNOME_APP_UI_ITEM, N_("_Directory..."), N_("Creates a new directory"), gnome_mkdir_cmd }, + { GNOME_APP_UI_ENDOFINFO, 0, 0 } +}; + GnomeUIInfo gnome_panel_file_menu [] = { - GNOMEUIINFO_MENU_NEW_ITEM(N_("_New window"), N_("Opens a new window"), gnome_open_panel, NULL), + GNOMEUIINFO_MENU_NEW_ITEM(N_("New _Window"), N_("Opens a new window"), gnome_open_panel, NULL), /* We want to make a new menu entry here... */ /* For example: */ @@ -287,14 +298,13 @@ /* Gnumeric Spreadsheet */ /* Text Document */ /* etc... */ - + { GNOME_APP_UI_SUBTREE, N_("_New"), NULL, gnome_panel_new_menu}, { GNOME_APP_UI_SEPARATOR }, { GNOME_APP_UI_ITEM, N_("_Open"), N_("Opens the selected files"), gnome_open_files }, /* { GNOME_APP_UI_ITEM, N_("Open _FTP site"), N_("Opens an FTP site"), ftplink_cmd },*/ { GNOME_APP_UI_ITEM, N_("_Copy..."), N_("Copy files"), copy_cmd, NULL}, { GNOME_APP_UI_ITEM, N_("_Delete..."), N_("Delete files from disk"), delete_cmd }, { GNOME_APP_UI_ITEM, N_("_Move..."), N_("Rename or move files"), ren_cmd }, -/* { GNOME_APP_UI_ITEM, N_("_Make directory..."), N_("Creates a new directory"), mkdir_cmd },*/ { GNOME_APP_UI_SEPARATOR }, { GNOME_APP_UI_ITEM, N_("C_lose"), N_("Close this panel"), gnome_close_panel, NULL, NULL, GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_CLOSE, @@ -431,19 +441,108 @@ static GtkWidget *create_toolbar (GtkWidget * window, GtkWidget *widget) { - GtkWidget *toolbar; - TbItems *t; - toolbar = gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_BOTH); - for (t = &tb_items[0]; t->text; t++) { - t->widget = gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), - t->text, + GtkWidget *toolbar; + TbItems *t; + + toolbar = gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_BOTH); + + for (t = &tb_items[0]; t->text; t++){ + t->widget = gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), + t->text, t->tooltip, - 0, - gnome_stock_pixmap_widget (window, t->icon), - t->cb, - t->cb ? widget : 0); - } - return toolbar; + 0, + gnome_stock_pixmap_widget (window, t->icon), + t->cb, + t->cb ? widget : 0); + } + return toolbar; +} + +static void +create_new_menu_from (GnomeApp *app, WPanel *panel, char *file) +{ + gint pos; + GtkWidget *shell = NULL; + DIR *dir; + struct stat filedata; + struct dirent *dirstruc; + GnomeDesktopEntry *gde; + GtkWidget *menu; + char *file2; + + dir = opendir (file); + if (dir == NULL) + return; + + shell = gnome_app_find_menu_pos (app->menubar, _("File/New/Directory..."), &pos); + menu = gtk_menu_item_new (); + gtk_widget_show (menu); + gtk_menu_shell_insert (GTK_MENU_SHELL (shell), menu, pos++); + + if (shell == NULL){ + closedir (dir); + return; + } + + while ((dirstruc = readdir (dir)) != NULL){ + if (dirstruc->d_name[0] == '.') + continue; + + file2 = g_concat_dir_and_file (file, dirstruc->d_name); + + if ((stat (file2, &filedata) != -1) && (S_ISREG (filedata.st_mode))){ + char *test; + + gde = gnome_desktop_entry_load (file2); + + test = rindex(dirstruc->d_name, '.'); + + if (test == NULL || gde == NULL || strcmp (test, ".desktop")){ + g_free (file2); + continue; + } + + if (!gnome_is_program_in_path (gde->tryexec)){ + g_free (file2); + g_print ("yes!\n"); + continue; + } + + menu = gtk_menu_item_new_with_label (gde->name); + gtk_widget_show (menu); + gtk_menu_shell_insert (GTK_MENU_SHELL (shell), menu, pos++); + + /* This is really bad, but it works. */ + if (gde->comment) + gtk_object_set_data (GTK_OBJECT (menu), "apphelper_statusbar_hint", + gde->comment); + gtk_signal_connect (GTK_OBJECT (menu), "activate", GTK_SIGNAL_FUNC (gnome_run_new), + gde); + } + g_free (file2); + } +} + +/** + * create_new_menu: + * + * Creates the child New menu items + */ +static void +create_new_menu (GnomeApp *app, WPanel *panel) +{ + gchar *file, *file2; + + file = gnome_unconditional_datadir_file ("mc/templates"); + create_new_menu_from (app, panel, file); + + file2 = gnome_datadir_file ("mc/templates"); + if (file2 != NULL){ + if (strcmp (file, file2) != 0) + create_new_menu_from (app, panel, file2); + } + g_free (file); + g_free (file2); } WPanel * @@ -469,11 +568,18 @@ gtk_widget_set_uposition (GTK_WIDGET (app), xpos, ypos); panel = panel_new (name); + + vbox = gtk_vbox_new (FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (vbox), 0); gnome_app_set_contents (GNOME_APP (app), vbox); gnome_app_create_menus_with_data (GNOME_APP (app), gnome_panel_menu, panel); + create_new_menu (GNOME_APP (app), panel); + + panel->ministatus = GNOME_APPBAR(gnome_appbar_new(FALSE, TRUE, GNOME_PREFERENCES_NEVER)); + gnome_app_set_statusbar(GNOME_APP (app), GTK_WIDGET(panel->ministatus)); + gnome_app_install_menu_hints (GNOME_APP (app), gnome_panel_menu); /* * I am trying to unclutter the screen, so this toolbar is gone now */ diff -ruN old/mc-4.5.7/gnome/gmain.h new/mc-4.5.9/gnome/gmain.h --- old/mc-4.5.7/gnome/gmain.h Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/gnome/gmain.h Mon Jan 18 17:44:12 1999 @@ -3,6 +3,7 @@ #include "dlg.h" #include "panel.h" #include "widget.h" +#include "info.h" int xtoolkit_init (int *argc, char *argv []); void xtoolkit_end (void); @@ -34,6 +35,11 @@ WPanel *new_panel_at (char *dir); WPanel *new_panel_with_geometry_at (char *dir, char *geometry); void layout_panel_gone (WPanel *panel); +void gtkrundlg_event (Dlg_head *h); +int gmc_open (file_entry *fe); +int gmc_view (char *filename, int start_line); +void x_show_info (WInfo *info, struct my_statfs *s, struct stat *b); +void x_create_info (Dlg_head *h, widget_data parent, WInfo *info); struct gmc_color_pairs_s { GdkColor *fore, *back; diff -ruN old/mc-4.5.7/gnome/gpageprop.c new/mc-4.5.9/gnome/gpageprop.c --- old/mc-4.5.7/gnome/gpageprop.c Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/gnome/gpageprop.c Mon Jan 18 17:44:12 1999 @@ -20,10 +20,12 @@ #include "util.h" #include "dialog.h" #include "file.h" +#include "fileopctx.h" #include "../vfs/vfs.h" #include "gdesktop.h" #include "gdesktop-icon.h" #include "gpageprop.h" +#include "gicon.h" static int prop_dialog_result; @@ -65,6 +67,9 @@ char *new_title; char *new_name; char *base; + char *icon_filename; + int size; + struct stat s; int retval = 0; @@ -83,15 +88,26 @@ /* Create the property widgets */ mc_stat (fname, &s); - base = x_basename (fname); vbox = gtk_vbox_new (FALSE, 6); name = gprop_filename_new (fname, base); gtk_box_pack_start (GTK_BOX (vbox), name->top, FALSE, FALSE, 0); if (dii) { - gene = gprop_general_new(fname, base); - gtk_box_pack_start (GTK_BOX (vbox), gene->top, FALSE, FALSE, 0); + GdkImlibImage *icon; + file_entry *fe; + char *name; + + fe = file_entry_from_file (fname); + icon = gicon_get_icon_for_file_speed (fe, FALSE); + file_entry_free (fe); + icon_filename = gicon_image_to_name (icon); + if (icon_filename == NULL) + icon_filename = g_strdup (ICONDIR "i-regular.png"); + + gene = gprop_general_new (fname, icon_filename); + + gtk_box_pack_start (GTK_BOX (vbox), gene->top, FALSE, FALSE, 0); } perm = gprop_perm_new (s.st_mode, get_owner (s.st_uid), get_group (s.st_gid)); @@ -132,6 +148,7 @@ if (prop_dialog_result != 0) { gtk_widget_destroy (GTK_WIDGET (toplevel)); + g_free (icon_filename); return 0; /* nothing changed */ } @@ -193,40 +210,48 @@ if (strchr (new_name, '/')) message (1, "Error", "The new name includes the `/' character"); else if (strcmp (new_name, base) != 0) { - char *base = x_basename (fname); - char save = *base; - char *full_target; - long count = 0; - double bytes = 0; + char *base = x_basename (fname); + char save = *base; + char *full_target; + long count = 0; + double bytes = 0; + FileOpContext *ctx; + + *base = 0; + full_target = concat_dir_and_file (fname, new_name); + *base = save; + + ctx = file_op_context_new (); + file_op_context_create_ui (ctx, OP_MOVE, FALSE); + move_file_file (ctx, fname, full_target, &count, &bytes); + file_op_context_destroy (ctx); - *base = 0; - full_target = concat_dir_and_file (fname, new_name); - *base = save; - - create_op_win (OP_MOVE, 0); - file_mask_defaults (); - move_file_file (fname, full_target, &count, &bytes); - destroy_op_win (); - - if (dii) { - free (dii->filename); - dii->filename = full_target; - } else - free (full_target); + if (dii) { + free (dii->filename); + dii->filename = full_target; + } else + free (full_target); - retval |= GPROP_FILENAME; + retval |= GPROP_FILENAME; } - + /* Check and change title and icon -- change is handled by caller */ if (dii) { - gprop_general_get_data (gene, &new_title, NULL); - desktop_icon_set_text(DESKTOP_ICON(dii->dicon), new_title); - g_free(new_title); + char *new_icon; + + gprop_general_get_data (gene, &new_title, &new_icon); + + if (strcmp (new_icon, icon_filename) != 0) + gnome_metadata_set (fname, "icon-filename", strlen (new_icon)+1, new_icon); + + desktop_icon_set_text(DESKTOP_ICON(dii->dicon), new_title); + g_free(new_title); - retval |= GPROP_TITLE; + retval |= GPROP_TITLE; } gtk_widget_destroy (GTK_WIDGET (toplevel)); + g_free (icon_filename); return retval; } diff -ruN old/mc-4.5.7/gnome/gprop.c new/mc-4.5.9/gnome/gprop.c --- old/mc-4.5.7/gnome/gprop.c Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/gnome/gprop.c Mon Jan 18 17:44:12 1999 @@ -209,7 +209,7 @@ check = gtk_check_button_new (); gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (check), FALSE); - gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (check), state ? TRUE : FALSE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check), state ? TRUE : FALSE); gtk_signal_connect (GTK_OBJECT (check), "toggled", (GtkSignalFunc) perm_set_mode_label, @@ -483,7 +483,6 @@ GtkWidget *entry; g_return_val_if_fail (title != NULL, NULL); - g_return_val_if_fail (icon_filename != NULL, NULL); gp = g_new (GpropGeneral, 1); diff -ruN old/mc-4.5.7/gnome/gscreen.c new/mc-4.5.9/gnome/gscreen.c --- old/mc-4.5.7/gnome/gscreen.c Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/gnome/gscreen.c Mon Jan 18 17:44:12 1999 @@ -38,6 +38,9 @@ #include "../vfs/vfs.h" #include +/* Whether to display the tree view on the left */ +int tree_panel_visible = -1; + /* The pixmaps */ #include "directory.xpm" #include "link.xpm" @@ -78,6 +81,7 @@ static void panel_file_list_configure_contents (GtkWidget *sw, WPanel *panel, int main_width, int height); + #define CLIST_FROM_SW(panel_list) GTK_CLIST (GTK_BIN (panel_list)->child) @@ -226,9 +230,12 @@ for (i = 0; i < top; i++){ file_entry *fe = &panel->dir.list [i]; - + int p; + image = gicon_get_icon_for_file (fe); - gnome_icon_list_append_imlib (icons, image, fe->fname); + p = gnome_icon_list_append_imlib (icons, image, fe->fname); + if (fe->f.marked) + gnome_icon_list_select_icon (icons, p); } /* This is needed as the gtk_clist_append changes selected under us :-( */ panel->selected = selected; @@ -249,7 +256,13 @@ gtk_signal_handler_block_by_data (GTK_OBJECT (panel->tree), panel); - gtk_dtree_select_dir (GTK_DTREE (panel->tree), panel->cwd); + if (vfs_current_is_local ()){ + char buffer [MC_MAXPATHLEN]; + + get_current_wd (buffer, sizeof (buffer)-1); + gtk_dtree_select_dir (GTK_DTREE (panel->tree), buffer); + } else + gtk_dtree_select_dir (GTK_DTREE (panel->tree), panel->cwd); gtk_signal_handler_unblock_by_data (GTK_OBJECT (panel->tree), panel); } @@ -2041,14 +2054,24 @@ GtkWidget *pane; GtkWidget *tree = panel->tree; GdkFont *tree_font = tree->style->font; + int size; pane = gtk_hpaned_new (); + if (tree_panel_visible == -1) + size = 20 * gdk_string_width (tree_font, "W"); + else { + if (tree_panel_visible) + size = tree_panel_visible; + else + size = 0; + } + /* * Hack: set the default startup size for the pane without * using _set_usize which would set the minimal size */ - GTK_PANED (pane)->child1_size = 20 * gdk_string_width (tree_font, "W"); + GTK_PANED (pane)->child1_size = size; GTK_PANED (pane)->position_set = TRUE; gtk_widget_show (pane); @@ -2090,6 +2113,8 @@ static void do_switch_to_iconic (GtkWidget *widget, WPanel *panel) { + if (GTK_TOGGLE_BUTTON (widget)->active == FALSE) + return; if (panel->list_type == list_icons) return; panel->list_type = list_icons; @@ -2100,6 +2125,8 @@ static void do_switch_to_brief_listing (GtkWidget *widget, WPanel *panel) { + if (GTK_TOGGLE_BUTTON (widget)->active == FALSE) + return; if (panel->list_type == list_brief) return; panel->list_type = list_brief; @@ -2110,6 +2137,8 @@ static void do_switch_to_full_listing (GtkWidget *widget, WPanel *panel) { + if (GTK_TOGGLE_BUTTON (widget)->active == FALSE) + return; if (panel->list_type == list_full) return; panel->list_type = list_full; @@ -2120,6 +2149,8 @@ static void do_switch_to_custom_listing (GtkWidget *widget, WPanel *panel) { + if (GTK_TOGGLE_BUTTON (widget)->active == FALSE) + return; if (panel->list_type == list_user) return; panel->list_type = list_user; @@ -2127,37 +2158,71 @@ panel_update_contents (panel); } -static GtkWidget * -button_switch_to_icon (WPanel *panel) -{ - return button_switch_to (listing_iconic_xpm, GTK_SIGNAL_FUNC (do_switch_to_iconic), panel); -} - -static GtkWidget * -button_switch_to_full_listing (WPanel *panel) +static void +go_home (GtkWidget *widget, WPanel *panel) { - return button_switch_to (listing_list_xpm, GTK_SIGNAL_FUNC (do_switch_to_full_listing), panel); + do_panel_cd (panel, "~", cd_exact); } -static GtkWidget * -button_switch_to_brief_listing (WPanel *panel) +static GnomeUIInfo viewbar[] = { + { GNOME_APP_UI_ITEM, N_("Icon"), N_("Switch view to an Icon view"), do_switch_to_iconic, NULL, NULL, \ + GNOME_APP_PIXMAP_DATA, listing_iconic_xpm, 0, (GdkModifierType) 0, NULL }, + { GNOME_APP_UI_ITEM, N_("Brief"), N_("Switch view to show just file name and type"), do_switch_to_brief_listing, NULL, NULL, \ + GNOME_APP_PIXMAP_DATA, listing_brief_list_xpm, 0, (GdkModifierType) 0, NULL }, + { GNOME_APP_UI_ITEM, N_("Detailed"), N_("Switch view to show detailed file statistics"), do_switch_to_full_listing, NULL, NULL, \ + GNOME_APP_PIXMAP_DATA, listing_list_xpm, 0, (GdkModifierType) 0, NULL }, + { GNOME_APP_UI_ITEM, N_("Custom"), N_("Switch view to show custom determined statistics"), do_switch_to_custom_listing, NULL, NULL, \ + GNOME_APP_PIXMAP_DATA, listing_custom_xpm, 0, (GdkModifierType) 0, NULL }, + GNOMEUIINFO_END +}; +static GnomeUIInfo toolbar[] = { + GNOMEUIINFO_ITEM_STOCK (N_("Back"), N_("Go to the previously visited directory"), + panel_back, GNOME_STOCK_PIXMAP_BACK), + GNOMEUIINFO_ITEM_STOCK (N_("Up"), N_("Go up a level in the directory heirarchy"), + panel_up, GNOME_STOCK_PIXMAP_UP), + GNOMEUIINFO_ITEM_STOCK (N_("Forward"), N_("Go to the next directory"), + panel_fwd, GNOME_STOCK_PIXMAP_FORWARD), + GNOMEUIINFO_SEPARATOR, + GNOMEUIINFO_ITEM_STOCK (N_("Home"), N_("Go to your home directory"), + go_home, GNOME_STOCK_PIXMAP_HOME), + GNOMEUIINFO_SEPARATOR, + GNOMEUIINFO_RADIOLIST(viewbar), + GNOMEUIINFO_END +}; +static void +do_ui_signal_connect (GnomeUIInfo *uiinfo, gchar *signal_name, + GnomeUIBuilderData *uibdata) { - return button_switch_to (listing_brief_list_xpm, GTK_SIGNAL_FUNC (do_switch_to_brief_listing), panel); + if (uiinfo->moreinfo) + gtk_signal_connect (GTK_OBJECT (uiinfo->widget), + signal_name, uiinfo->moreinfo, uibdata->data ? + uibdata->data : uiinfo->user_data); } -static GtkWidget * -button_switch_to_custom_listing (WPanel *panel) + + + +static void +tree_size_allocate (GtkWidget *widget, GtkAllocation *allocation, WPanel *panel) { - return button_switch_to (listing_custom_xpm, GTK_SIGNAL_FUNC (do_switch_to_custom_listing), panel); + GtkWidget *tree = panel->tree; + GdkFont *tree_font = tree->style->font; + + if (allocation->width <= 0){ + tree_panel_visible = 0; + } else { + tree_panel_visible = allocation->width; + } + save_setup (); } void x_create_panel (Dlg_head *h, widget_data parent, WPanel *panel) { GtkWidget *status_line, *filter, *vbox, *ministatus_box; - GtkWidget *frame, *cwd, *back_p, *fwd_p, *up_p; + GtkWidget *cwd, *back_p, *fwd_p, *up_p; GtkWidget *hbox, *evbox, *dock, *box; - GtkWidget *table_frame; - int display; - + GnomeUIBuilderData uibdata; + + panel->xwindow = gtk_widget_get_toplevel (GTK_WIDGET (panel->widget.wdata)); panel->table = gtk_table_new (2, 1, 0); @@ -2211,7 +2276,9 @@ */ panel->pane = create_and_setup_pane (panel); gtk_paned_add1 (GTK_PANED (panel->pane), panel->tree_scrolled_window); - + gtk_signal_connect (GTK_OBJECT (panel->tree_scrolled_window), "size_allocate", + GTK_SIGNAL_FUNC (tree_size_allocate), panel); + /* * Filter */ @@ -2224,66 +2291,83 @@ /* We do not want the focus by default (and the previos add_widget just gave it to us) */ h->current = h->current->prev; - + /* - * History buttons, and updir. + * We go through a lot of pain, wrestling with gnome_app* and gmc's @#$&*#$ internal structure and + * make the #@$*&@#$ toolbars here... */ - back_p = gnome_stock_pixmap_widget_new (panel->xwindow, GNOME_STOCK_MENU_BACK); - fwd_p = gnome_stock_pixmap_widget_new (panel->xwindow, GNOME_STOCK_MENU_FORWARD); - up_p = gnome_stock_pixmap_widget_new (panel->xwindow, GNOME_STOCK_MENU_UP); - panel->up_b = gtk_button_new (); - panel->back_b = gtk_button_new (); - panel->fwd_b = gtk_button_new (); - gtk_container_add (GTK_CONTAINER (panel->back_b), back_p); - gtk_container_add (GTK_CONTAINER (panel->fwd_b), fwd_p); - gtk_container_add (GTK_CONTAINER (panel->up_b), up_p); - gtk_signal_connect (GTK_OBJECT (panel->back_b), "clicked", GTK_SIGNAL_FUNC(panel_back), panel); - gtk_signal_connect (GTK_OBJECT (panel->fwd_b), "clicked", GTK_SIGNAL_FUNC(panel_fwd), panel); - gtk_signal_connect (GTK_OBJECT (panel->up_b), "clicked", GTK_SIGNAL_FUNC(panel_up), panel); - panel_update_marks (panel); - + status_line = gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_BOTH); + uibdata.connect_func = do_ui_signal_connect; + uibdata.data = panel; + uibdata.is_interp = FALSE; + uibdata.relay_func = NULL; + uibdata.destroy_func = NULL; + + gnome_app_fill_toolbar_custom (GTK_TOOLBAR (status_line), toolbar, &uibdata, NULL); + gnome_app_add_toolbar (GNOME_APP (panel->xwindow), + GTK_TOOLBAR (status_line), + "gmc-toolbar0", + GNOME_DOCK_ITEM_BEH_EXCLUSIVE, + GNOME_DOCK_TOP, + 2, 0, 0); + + panel->back_b = toolbar[0].widget; + panel->up_b = toolbar[1].widget; + panel->fwd_b = toolbar[2].widget; + panel_update_marks (panel); /* - * Here we make the toolbars + * Here we make the view buttons. */ status_line = gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_BOTH); gtk_container_set_border_width (GTK_CONTAINER (status_line), 3); evbox = gtk_event_box_new (); hbox = gtk_hbox_new (FALSE, 2); gtk_container_add (GTK_CONTAINER (evbox), hbox); - gtk_box_pack_start (GTK_BOX (hbox), gtk_label_new (_("Location:")), FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (hbox), cwd, FALSE, FALSE, 0); gtk_toolbar_append_widget (GTK_TOOLBAR (status_line), evbox, NULL, NULL); - gtk_toolbar_append_space (GTK_TOOLBAR (status_line)); + gtk_box_pack_start (GTK_BOX (hbox), gtk_label_new (_("Location:")), FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (hbox), cwd, FALSE, FALSE, 0); + dock = gnome_dock_item_new ("gmc-toolbar1", GNOME_DOCK_ITEM_BEH_EXCLUSIVE | GNOME_DOCK_ITEM_BEH_NEVER_VERTICAL); + gtk_container_add (GTK_CONTAINER(dock),status_line); + gnome_dock_add_item (GNOME_DOCK(GNOME_APP (panel->xwindow)->dock), + GNOME_DOCK_ITEM (dock), GNOME_DOCK_TOP, 1, 0, 0, FALSE); + + gtk_widget_show_all (dock); + +#if 0 + status_line = gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_BOTH); gtk_toolbar_append_widget (GTK_TOOLBAR (status_line), panel->back_b, - "Go to the previous directory.", NULL); + "Go to the previous directory", NULL); gtk_toolbar_append_widget (GTK_TOOLBAR (status_line), panel->up_b, - "Go up a level in the directory heirarchy.", NULL); + "Go up a level in the directory heirarchy", NULL); gtk_toolbar_append_widget (GTK_TOOLBAR (status_line), panel->fwd_b, - "Go to the next directory.", NULL); + "Go to the next directory", NULL); gtk_toolbar_append_space (GTK_TOOLBAR (status_line)); gtk_toolbar_append_widget (GTK_TOOLBAR (status_line), button_switch_to_icon (panel), - "Icon view.", NULL); + "Icon view", NULL); gtk_toolbar_append_widget (GTK_TOOLBAR (status_line), button_switch_to_brief_listing (panel), - "Brief view.", NULL); + "Brief view", NULL); gtk_toolbar_append_widget (GTK_TOOLBAR (status_line), button_switch_to_full_listing (panel), - "Detailed view.", NULL); + "Detailed view", NULL); gtk_toolbar_append_widget (GTK_TOOLBAR (status_line), button_switch_to_custom_listing (panel), - "Custom view.", NULL); - dock = gnome_dock_item_new ("gmc-toolbar", GNOME_DOCK_ITEM_BEH_EXCLUSIVE | GNOME_DOCK_ITEM_BEH_NEVER_VERTICAL); - gtk_container_add (GTK_CONTAINER(dock),status_line); - gnome_dock_add_item (GNOME_DOCK(GNOME_APP (panel->xwindow)->dock), - GNOME_DOCK_ITEM (dock), GNOME_DOCK_TOP, 1, 0, 0, FALSE); - gtk_widget_show_all (dock); + "Custom view", NULL); + gnome_app_add_toolbar (GNOME_APP (panel->xwindow), + GTK_TOOLBAR (status_line), + "gmc-toolbar2", + GNOME_DOCK_ITEM_BEH_EXCLUSIVE, + GNOME_DOCK_TOP, + 2, 0, 0); + gtk_widget_show_all (status_line); +#endif panel->view_table = gtk_table_new (1, 1, 0); gtk_widget_show (panel->view_table); @@ -2291,13 +2375,12 @@ /* * The status bar. */ - panel->ministatus = GNOME_APPBAR(gnome_appbar_new(FALSE, TRUE, GNOME_PREFERENCES_NEVER)); - gnome_app_set_statusbar(GNOME_APP (panel->xwindow), GTK_WIDGET(panel->ministatus)); ministatus_box = gtk_frame_new (NULL); gtk_frame_set_shadow_type (GTK_FRAME(ministatus_box), GTK_SHADOW_IN); panel->status = gtk_label_new (_("Show all files")); gtk_misc_set_alignment (GTK_MISC (panel->status), 0.0, 0.0); + gtk_misc_set_padding (GTK_MISC (panel->status), 2, 0); gtk_box_pack_start (GTK_BOX (panel->ministatus), ministatus_box, FALSE, FALSE, 0); gtk_container_add (GTK_CONTAINER(ministatus_box), panel->status); diff -ruN old/mc-4.5.7/gnome/gtkdtree.c new/mc-4.5.9/gnome/gtkdtree.c --- old/mc-4.5.7/gnome/gtkdtree.c Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/gnome/gtkdtree.c Mon Jan 18 17:44:12 1999 @@ -224,7 +224,6 @@ { GtkCTreeNode *current_node; char *s, *current, *npath; - char *request; g_return_val_if_fail (dtree != NULL, FALSE); g_return_val_if_fail (GTK_IS_DTREE (dtree), FALSE); @@ -267,7 +266,8 @@ g_free (npath); if (current_node){ - if (!gtk_ctree_node_is_visible (GTK_CTREE (dtree), current_node)){ + gtk_ctree_select (GTK_CTREE (dtree), current_node); + if (gtk_ctree_node_is_visible (GTK_CTREE (dtree), current_node) != GTK_VISIBILITY_FULL){ gtk_ctree_node_moveto (GTK_CTREE (dtree), current_node, 0, 0.5, 0.0); } @@ -504,8 +504,6 @@ static void gtk_dtree_init (GtkDTree *dtree) { - static int tree_inited; - dtree->current_path = NULL; dtree->auto_expanded_nodes = NULL; @@ -534,7 +532,7 @@ gtk_clist_columns_autosize (clist); gtk_ctree_set_line_style (ctree, GTK_CTREE_LINES_DOTTED); - gtk_ctree_set_reorderable (ctree, FALSE); + gtk_clist_set_reorderable (GTK_CLIST (ctree), FALSE); gdk_dtree_load_pixmaps (dtree); gtk_dtree_load_root_tree (dtree); diff -ruN old/mc-4.5.7/gnome/gtools.c new/mc-4.5.9/gnome/gtools.c --- old/mc-4.5.7/gnome/gtools.c Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/gnome/gtools.c Mon Jan 18 17:44:12 1999 @@ -79,7 +79,7 @@ result = gnome_dialog_run_and_close (GNOME_DIALOG (dialog)); - g_slist_foreach (allocated, g_free, NULL); + g_slist_foreach (allocated, (GFunc) g_free, NULL); g_slist_free (allocated); g_free (buttons); diff -ruN old/mc-4.5.7/gnome/gwidget.c new/mc-4.5.9/gnome/gwidget.c --- old/mc-4.5.7/gnome/gwidget.c Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/gnome/gwidget.c Mon Jan 18 17:44:12 1999 @@ -177,7 +177,7 @@ for (i = 0; i < radio->count; i++){ GtkBoxChild *bc = (GtkBoxChild *) children->data; - gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (bc->widget), (i == radio->sel) ? 1 : 0); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bc->widget), (i == radio->sel) ? 1 : 0); children = children->next; } } @@ -224,7 +224,7 @@ w = gtk_radio_button_new_with_label_from_widget (r->first_gtk_radio, text); g_free (text); - gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (w), (i == r->sel)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), (i == r->sel)); gtk_signal_connect (GTK_OBJECT (w), "toggled", GTK_SIGNAL_FUNC (radio_toggle), r); gtk_object_set_data (GTK_OBJECT (w), "index", (void *) (i+1)); gtk_box_pack_start_defaults (GTK_BOX (vbox), w); @@ -250,7 +250,7 @@ GtkWidget *w; w = gtk_check_button_new_with_label (c->text); - gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (w), (c->state & C_BOOL)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), (c->state & C_BOOL)); gtk_signal_connect (GTK_OBJECT (w), "toggled", GTK_SIGNAL_FUNC (x_check_changed), c); gtk_widget_show (w); c->widget.wdata = (widget_data) w; diff -ruN old/mc-4.5.7/mc.spec new/mc-4.5.9/mc.spec --- old/mc-4.5.7/mc.spec Tue Jan 12 22:38:06 1999 +++ new/mc-4.5.9/mc.spec Mon Jan 18 17:44:07 1999 @@ -1,6 +1,5 @@ # Note that this is NOT a relocatable package -%define ver 4.5.5 -%define rel SNAP +%define ver 4.5.7 %define prefix /usr Summary: Midnight Commander visual shell @@ -44,7 +43,7 @@ %setup %build -CFLAGS="$RPM_OPT_FLAGS" LDFLAGS="-s" ./autogen.sh \ +CFLAGS="$RPM_OPT_FLAGS" LDFLAGS="-s" ./configure \ --prefix=%{prefix} \ --with-gnome \ --without-debug diff -ruN old/mc-4.5.7/po/cat-id-tbl.c new/mc-4.5.9/po/cat-id-tbl.c --- old/mc-4.5.7/po/cat-id-tbl.c Tue Jan 12 22:38:13 1999 +++ new/mc-4.5.9/po/cat-id-tbl.c Mon Jan 18 17:44:14 1999 @@ -92,866 +92,888 @@ {"Error", 77}, {"Default set of icons not found, check your installation", 78}, {"Enter command to run", 79}, - {"_New window", 80}, - {"Opens a new window", 81}, - {"_Open", 82}, - {"Opens the selected files", 83}, - {"_Copy...", 84}, - {"Copy files", 85}, - {"_Delete...", 86}, - {"Delete files from disk", 87}, - {"_Move...", 88}, - {"Rename or move files", 89}, - {"C_lose", 90}, - {"Close this panel", 91}, - {"_Select All", 92}, - {"Select all files in the current Panel", 93}, - {"_Select Files...", 94}, - {"Select a group of files", 95}, - {"_Invert Selection", 96}, - {"Reverses the list of tagged files", 97}, - {"_Rescan Directory", 98}, - {"Rescan the directory contents", 99}, - {"Icon View", 100}, - {"Partial View", 101}, - {"Full View", 102}, - {"Custom View", 103}, - {"_Sort By...", 104}, - {"Confirmation settings", 105}, - {"_Filter View...", 106}, - {"Global option settings", 107}, - {"_Find File...", 108}, - {"Locate files on disk", 109}, - {"_Compare panels...", 110}, - {"Compare two panel contents", 111}, - {"_Run Command...", 112}, - {"Runs a command", 113}, - {"_Run Command in panel...", 114}, - {"Run a command and put the results in a panel", 115}, - {"_Active VFS list...", 116}, - {"List of active virtual file systems", 117}, - {"_Background jobs...", 118}, - {"List of background operations", 119}, - {"_About", 120}, - {"Information on this program", 121}, - {"_File", 122}, - {"_Edit", 123}, - {"_Layout", 124}, - {"_Commands", 125}, - {"_Help", 126}, - {"Properties", 127}, - {"Open", 128}, - {"Open with", 129}, - {"View", 130}, - {"View unfiltered", 131}, - {"Edit", 132}, - {"Link...", 133}, - {"Symlink...", 134}, - {"Edit symlink...", 135}, - {"Move/rename...", 136}, - {"Copy...", 137}, - {"Delete", 138}, - {"Filename", 139}, - {"Full name: ", 140}, - {"Command", 141}, - {"Command:", 142}, - {"Use terminal", 143}, - {"File mode (permissions)", 144}, - {"Current mode: ", 145}, - {"Read", 146}, - {"Write", 147}, - {"Exec", 148}, - {"Special", 149}, - {"User", 150}, - {"Group", 151}, - {"Other", 152}, - {"Set UID", 153}, - {"Set GID", 154}, - {"Sticky", 155}, - {"", 156}, - {"Owner", 157}, - {"General", 158}, - {"Title", 159}, - {"Icon", 160}, - {"Select icon", 161}, - {"All files", 162}, - {"Archives and compressed files", 163}, - {"RPM/DEB files", 164}, - {"Text/Document files", 165}, - {"HTML and SGML files", 166}, - {"Postscript and PDF files", 167}, - {"Spreadsheet files", 168}, - {"Image files", 169}, - {"Video/animation files", 170}, - {"Audio files", 171}, - {"C program files", 172}, - {"C++ program files", 173}, - {"Objective-C program files", 174}, - {"Scheme program files", 175}, - {"Assembler program files", 176}, - {"Misc. program files", 177}, - {"Font files", 178}, - {"Search: %s", 179}, - {"%s bytes in %d file", 180}, - {"%s bytes in %d files", 181}, - {"", 182}, - {"Filter", 183}, - {"Location:", 184}, - {"&Ok", 185}, - {"Offset 0x%08x", 186}, - {"Col %d", 187}, - {"%s bytes", 188}, - {"_Goto line", 189}, - {"Jump to a specified line number", 190}, - {"_Monitor file", 191}, - {"Monitor file growing", 192}, - {"Regexp search", 193}, - {"Regular expression search", 194}, - {"_Wrap", 195}, - {"Wrap the text", 196}, - {"_Formatted", 197}, - {"_Hex", 198}, - {"_Search", 199}, - {"_Mode", 200}, - {"ok", 201}, - {"cancel", 202}, - {"help", 203}, - {"yes", 204}, - {"no", 205}, - {"exit", 206}, - {"abort", 207}, - {" Error ", 208}, - {" Failed trying to open file for reading: ", 209}, - {" Cannot get size/permissions info on file: ", 210}, - {" Not an ordinary file: ", 211}, - {" File is too large: ", 212}, + {"_Terminal", 80}, + {"Launch a new terminal in the current directory", 81}, + {"_Directory...", 82}, + {"Creates a new directory", 83}, + {"New _Window", 84}, + {"Opens a new window", 85}, + {"_New", 86}, + {"_Open", 87}, + {"Opens the selected files", 88}, + {"_Copy...", 89}, + {"Copy files", 90}, + {"_Delete...", 91}, + {"Delete files from disk", 92}, + {"_Move...", 93}, + {"Rename or move files", 94}, + {"C_lose", 95}, + {"Close this panel", 96}, + {"_Select All", 97}, + {"Select all files in the current Panel", 98}, + {"_Select Files...", 99}, + {"Select a group of files", 100}, + {"_Invert Selection", 101}, + {"Reverses the list of tagged files", 102}, + {"_Rescan Directory", 103}, + {"Rescan the directory contents", 104}, + {"Icon View", 105}, + {"Partial View", 106}, + {"Full View", 107}, + {"Custom View", 108}, + {"_Sort By...", 109}, + {"Confirmation settings", 110}, + {"_Filter View...", 111}, + {"Global option settings", 112}, + {"_Find File...", 113}, + {"Locate files on disk", 114}, + {"_Compare panels...", 115}, + {"Compare two panel contents", 116}, + {"_Run Command...", 117}, + {"Runs a command", 118}, + {"_Run Command in panel...", 119}, + {"Run a command and put the results in a panel", 120}, + {"_Active VFS list...", 121}, + {"List of active virtual file systems", 122}, + {"_Background jobs...", 123}, + {"List of background operations", 124}, + {"_About", 125}, + {"Information on this program", 126}, + {"_File", 127}, + {"_Edit", 128}, + {"_Layout", 129}, + {"_Commands", 130}, + {"_Help", 131}, + {"File/New/Directory...", 132}, + {"Properties", 133}, + {"Open", 134}, + {"Open with", 135}, + {"View", 136}, + {"View unfiltered", 137}, + {"Edit", 138}, + {"Link...", 139}, + {"Symlink...", 140}, + {"Edit symlink...", 141}, + {"Move/rename...", 142}, + {"Copy...", 143}, + {"Delete", 144}, + {"Filename", 145}, + {"Full name: ", 146}, + {"Command", 147}, + {"Command:", 148}, + {"Use terminal", 149}, + {"File mode (permissions)", 150}, + {"Current mode: ", 151}, + {"Read", 152}, + {"Write", 153}, + {"Exec", 154}, + {"Special", 155}, + {"User", 156}, + {"Group", 157}, + {"Other", 158}, + {"Set UID", 159}, + {"Set GID", 160}, + {"Sticky", 161}, + {"", 162}, + {"Owner", 163}, + {"General", 164}, + {"Title", 165}, + {"Icon", 166}, + {"Select icon", 167}, + {"All files", 168}, + {"Archives and compressed files", 169}, + {"RPM/DEB files", 170}, + {"Text/Document files", 171}, + {"HTML and SGML files", 172}, + {"Postscript and PDF files", 173}, + {"Spreadsheet files", 174}, + {"Image files", 175}, + {"Video/animation files", 176}, + {"Audio files", 177}, + {"C program files", 178}, + {"C++ program files", 179}, + {"Objective-C program files", 180}, + {"Scheme program files", 181}, + {"Assembler program files", 182}, + {"Misc. program files", 183}, + {"Font files", 184}, + {"Search: %s", 185}, + {"%s bytes in %d file", 186}, + {"%s bytes in %d files", 187}, + {"", 188}, + {"Filter", 189}, + {"Switch view to an Icon view", 190}, + {"Brief", 191}, + {"Switch view to show just file name and type", 192}, + {"Detailed", 193}, + {"Switch view to show detailed file statistics", 194}, + {"Custom", 195}, + {"Switch view to show custom determined statistics", 196}, + {"Back", 197}, + {"Go to the previously visited directory", 198}, + {"Up", 199}, + {"Go up a level in the directory heirarchy", 200}, + {"Forward", 201}, + {"Go to the next directory", 202}, + {"Home", 203}, + {"Go to your home directory", 204}, + {"Location:", 205}, + {"&Ok", 206}, + {"Offset 0x%08x", 207}, + {"Col %d", 208}, + {"%s bytes", 209}, + {"_Goto line", 210}, + {"Jump to a specified line number", 211}, + {"_Monitor file", 212}, + {"Monitor file growing", 213}, + {"Regexp search", 214}, + {"Regular expression search", 215}, + {"_Wrap", 216}, + {"Wrap the text", 217}, + {"_Formatted", 218}, + {"_Hex", 219}, + {"_Search", 220}, + {"_Mode", 221}, + {"ok", 222}, + {"cancel", 223}, + {"help", 224}, + {"yes", 225}, + {"no", 226}, + {"exit", 227}, + {"abort", 228}, + {" Error ", 229}, + {" Failed trying to open file for reading: ", 230}, + {" Cannot get size/permissions info on file: ", 231}, + {" Not an ordinary file: ", 232}, + {" File is too large: ", 233}, {"\ \n\ - Increase edit.h:MAXBUF and recompile the editor. ", 213}, - {" Error allocating memory ", 214}, - {" Save As ", 215}, - {" Warning ", 216}, - {" A file already exists with this name. ", 217}, - {"Overwrite", 218}, - {"Cancel", 219}, - {" Save as ", 220}, - {" Error trying to save file. ", 221}, - {" Delete macro ", 222}, - {" Error trying to open temp file ", 223}, - {" Error trying to open macro file ", 224}, - {"key '%d 0': ", 225}, - {" Error trying to overwrite macro file ", 226}, - {" Macro ", 227}, - {" Press the macro's new hotkey: ", 228}, - {" Save macro ", 229}, - {" Delete Macro ", 230}, - {" Load macro ", 231}, - {" Confirm save file? : ", 232}, - {" Save file ", 233}, - {"Save", 234}, + Increase edit.h:MAXBUF and recompile the editor. ", 234}, + {" Error allocating memory ", 235}, + {" Save As ", 236}, + {" Warning ", 237}, + {" A file already exists with this name. ", 238}, + {"Overwrite", 239}, + {"Cancel", 240}, + {" Save as ", 241}, + {" Error trying to save file. ", 242}, + {" Delete macro ", 243}, + {" Error trying to open temp file ", 244}, + {" Error trying to open macro file ", 245}, + {"key '%d 0': ", 246}, + {" Error trying to overwrite macro file ", 247}, + {" Macro ", 248}, + {" Press the macro's new hotkey: ", 249}, + {" Save macro ", 250}, + {" Delete Macro ", 251}, + {" Load macro ", 252}, + {" Confirm save file? : ", 253}, + {" Save file ", 254}, + {"Save", 255}, {"\ Current text was modified without a file save. \n\ - Continue discards these changes. ", 235}, - {"Continue", 236}, - {" Load ", 237}, - {" Error trying to open file for reading ", 238}, - {" Block is large, you may not be able to undo this action. ", 239}, - {" Continue ", 240}, - {" Cancel ", 241}, - {" Replace with: ", 242}, - {" Replace ", 243}, - {" Search ", 244}, - {" Enter search text : ", 245}, - {" Enter replace text : ", 246}, - {" Enter argument order : ", 247}, - {"Enter the order of replacement of your scanf format specifiers", 248}, - {" Whole words only ", 249}, - {" Case sensitive ", 250}, - {" Regular expression ", 251}, - {"See the regex man page for how to compose a regular expression", 252}, - {" Backwards ", 253}, - {"Warning: Searching backward can be slow", 254}, - {" Prompt on replace ", 255}, - {"Ask before making each replacement", 256}, - {" Replace all ", 257}, - {" Scanf expression ", 258}, - {"Allows entering of a C format string, see the scanf man page", 259}, - {"Begin search, Enter", 260}, - {"Abort this dialog, Esc", 261}, - {"Replace", 262}, - {"Skip", 263}, - {"Replace all", 264}, - {" Invalid regular expression, or scanf expression with to many conversions ", 265}, - {" Error in replacement format string. ", 266}, - {" %ld replacements made. ", 267}, - {" Search string not found. ", 268}, - {" Quit ", 269}, + Continue discards these changes. ", 256}, + {"Continue", 257}, + {" Load ", 258}, + {" Error trying to open file for reading ", 259}, + {" Block is large, you may not be able to undo this action. ", 260}, + {" Continue ", 261}, + {" Cancel ", 262}, + {" Replace with: ", 263}, + {" Replace ", 264}, + {" Search ", 265}, + {" Enter search text : ", 266}, + {" Enter replace text : ", 267}, + {" Enter argument order : ", 268}, + {"Enter the order of replacement of your scanf format specifiers", 269}, + {" Whole words only ", 270}, + {" Case sensitive ", 271}, + {" Regular expression ", 272}, + {"See the regex man page for how to compose a regular expression", 273}, + {" Backwards ", 274}, + {"Warning: Searching backward can be slow", 275}, + {" Prompt on replace ", 276}, + {"Ask before making each replacement", 277}, + {" Replace all ", 278}, + {" Scanf expression ", 279}, + {"Allows entering of a C format string, see the scanf man page", 280}, + {"Begin search, Enter", 281}, + {"Abort this dialog, Esc", 282}, + {"Replace", 283}, + {"Skip", 284}, + {"Replace all", 285}, + {" Invalid regular expression, or scanf expression with to many conversions ", 286}, + {" Error in replacement format string. ", 287}, + {" %ld replacements made. ", 288}, + {" Search string not found. ", 289}, + {" Quit ", 290}, {"\ Current text was modified without a file save. \n\ - Save with exit? ", 270}, - {" File was modified, Save with exit? ", 271}, - {"Cancel quit", 272}, - {" &Cancel quit ", 273}, - {" &Yes ", 274}, - {" &No ", 275}, - {" Copy to clipboard ", 276}, - {" Unable to save to file. ", 277}, - {" Cut to clipboard ", 278}, - {" Goto line ", 279}, - {" Enter line: ", 280}, - {" Save Block ", 281}, - {" Insert File ", 282}, - {" Insert file ", 283}, - {" Error trying to insert file. ", 284}, - {" Sort block ", 285}, - {" You must first highlight a block of text. ", 286}, - {" Run Sort ", 287}, - {" Enter sort options (see manpage) separated by whitespace: ", 288}, - {" Sort ", 289}, - {" Error trying to execute sort command ", 290}, - {" Sort returned non-zero: ", 291}, - {" Process block ", 292}, - {" Error trying to stat file ", 293}, - {" Mail ", 294}, - {" Word wrap ", 295}, - {" Enter line length, 0 for off: ", 296}, - {"&Open/load... C-o", 297}, - {"&New C-n", 298}, - {"&Save F2", 299}, - {"save &As... F12", 300}, - {"&Insert file... F15", 301}, - {"copy to &File... C-f", 302}, - {"a&Bout... ", 303}, - {"&Quit F10", 304}, - {"&New C-x k", 305}, - {"copy to &File... ", 306}, - {"&Toggle Mark F3", 307}, - {"&Mark Columns S-F3", 308}, - {"toggle &Ins/overw Ins", 309}, - {"&Copy F5", 310}, - {"&Move F6", 311}, - {"&Delete F8", 312}, - {"&Undo C-u", 313}, - {"&Beginning C-PgUp", 314}, - {"&End C-PgDn", 315}, - {"&Search... F7", 316}, - {"search &Again F17", 317}, - {"&Replace... F4", 318}, - {"&Goto line... M-l", 319}, - {"insert &Literal... C-q", 320}, - {"&Refresh screen C-l", 321}, - {"&Start record macro C-r", 322}, - {"&Finish record macro... C-r", 323}, - {"&Execute macro... C-a, KEY", 324}, - {"delete macr&O... ", 325}, - {"insert &Date/time ", 326}, - {"format p&Aragraph M-p", 327}, - {"'ispell' s&Pell check C-p", 328}, - {"sor&T... M-t", 329}, - {"'indent' &C Formatter F19", 330}, - {"&Mail... ", 331}, - {"&Execute macro... C-x e, KEY", 332}, - {"'ispell' s&Pell check M-$", 333}, - {"&General... ", 334}, - {"&Save mode...", 335}, - {"&Layout...", 336}, - {" File ", 337}, - {" Edit ", 338}, - {" Sear/Repl ", 339}, - {" Command ", 340}, - {" Options ", 341}, - {"Open...\tC-o", 342}, - {"New\tC-n", 343}, - {"Save\tF2", 344}, - {"Save as...\tF12", 345}, - {"Insert file...\tF15", 346}, - {"Copy to file...\tC-f", 347}, - {"Disk operations", 348}, - {"Toggle mark\tF3", 349}, - {"Toggle mark columns\tC-b", 350}, - {"Toggle insert/overwrite\tIns", 351}, - {"Copy block to cursor\tF5", 352}, - {"Move block to cursor\tF6", 353}, - {"Delete block\tF8/C-Del", 354}, - {"Copy block to clipbrd\tC-Ins", 355}, - {"Cut block to clipbrd\tS-Del", 356}, - {"Paste block from clipbrd\tS-Ins", 357}, - {"Selection history\tM-Ins", 358}, - {"Undo\tC-BackSpace", 359}, - {"Manipulating blocks of text", 360}, - {" Srch/Replce ", 361}, - {"Search...\tF7", 362}, - {"Search again\tF17", 363}, - {"Replace...\tF4", 364}, - {"Replace again\tF14", 365}, - {"Search for and replace text", 366}, - {"Goto line...\tM-l", 367}, - {"Start record macro\tC-r", 368}, - {"Finish record macro...\tC-r", 369}, - {"Execute macro...\tC-a, KEY", 370}, - {"Delete macro...\t", 371}, - {"Insert date/time\tC-d", 372}, - {"Format paragraph\tM-p", 373}, - {"Refresh display\tC-l", 374}, - {"Macros and internal commands", 375}, - {"None", 376}, - {"Dynamic paragraphing", 377}, - {"Type writer wrap", 378}, - {"Wrap mode", 379}, - {"Key emulation", 380}, - {"Error initialising editor.\n", 381}, - {"Help", 382}, - {"Mark", 383}, - {"Replac", 384}, - {"Search", 385}, - {"PullDn", 386}, - {"Quit", 387}, - {"The Quick Brown Fox Jumps Over The Lazy Dog", 388}, - {"gtkedit.c: HOME environment variable not set and no passwd entry - aborting\n", 389}, - {"Open/Load", 390}, - {"Load a different/new file", 391}, - {"New", 392}, - {"Clear the edit buffer", 393}, - {"Save the current edit buffer to filename", 394}, - {"Save As", 395}, - {"Save the current edit buffer as filename", 396}, - {"Insert File", 397}, - {"Insert text from a file", 398}, - {"Copy to file", 399}, - {"copy a block to a file", 400}, - {"Exit", 401}, - {"Quit editor", 402}, - {"Copy selection to clipboard", 403}, - {"Cut", 404}, - {"Cut selection to clipboard", 405}, - {"Paste", 406}, - {"Paste clipboard", 407}, - {"Undo", 408}, - {"Go back in time one key press", 409}, - {"Find", 410}, - {"Find string/regular expression", 411}, - {"Find again", 412}, - {"Repeat most recent search", 413}, - {"Search/Replace", 414}, - {"Find and replace text/regular expressions", 415}, - {"About...", 416}, - {"Info about Mcedit", 417}, - {"File", 418}, - {" Load syntax file ", 419}, - {" File access error ", 420}, - {" Syntax error in file %s on line %d ", 421}, - {"&Cancel", 422}, - {"&Set", 423}, - {"S&kip", 424}, - {"Set &all", 425}, - {"owner", 426}, - {"group", 427}, - {"other", 428}, - {"On", 429}, - {"Flag", 430}, - {"Mode", 431}, - {"%6d of %d", 432}, - {" Chown advanced command ", 433}, + Save with exit? ", 291}, + {" File was modified, Save with exit? ", 292}, + {"Cancel quit", 293}, + {" &Cancel quit ", 294}, + {" &Yes ", 295}, + {" &No ", 296}, + {" Copy to clipboard ", 297}, + {" Unable to save to file. ", 298}, + {" Cut to clipboard ", 299}, + {" Goto line ", 300}, + {" Enter line: ", 301}, + {" Save Block ", 302}, + {" Insert File ", 303}, + {" Insert file ", 304}, + {" Error trying to insert file. ", 305}, + {" Sort block ", 306}, + {" You must first highlight a block of text. ", 307}, + {" Run Sort ", 308}, + {" Enter sort options (see manpage) separated by whitespace: ", 309}, + {" Sort ", 310}, + {" Error trying to execute sort command ", 311}, + {" Sort returned non-zero: ", 312}, + {" Process block ", 313}, + {" Error trying to stat file ", 314}, + {" Mail ", 315}, + {" Word wrap ", 316}, + {" Enter line length, 0 for off: ", 317}, + {"&Open/load... C-o", 318}, + {"&New C-n", 319}, + {"&Save F2", 320}, + {"save &As... F12", 321}, + {"&Insert file... F15", 322}, + {"copy to &File... C-f", 323}, + {"a&Bout... ", 324}, + {"&Quit F10", 325}, + {"&New C-x k", 326}, + {"copy to &File... ", 327}, + {"&Toggle Mark F3", 328}, + {"&Mark Columns S-F3", 329}, + {"toggle &Ins/overw Ins", 330}, + {"&Copy F5", 331}, + {"&Move F6", 332}, + {"&Delete F8", 333}, + {"&Undo C-u", 334}, + {"&Beginning C-PgUp", 335}, + {"&End C-PgDn", 336}, + {"&Search... F7", 337}, + {"search &Again F17", 338}, + {"&Replace... F4", 339}, + {"&Goto line... M-l", 340}, + {"insert &Literal... C-q", 341}, + {"&Refresh screen C-l", 342}, + {"&Start record macro C-r", 343}, + {"&Finish record macro... C-r", 344}, + {"&Execute macro... C-a, KEY", 345}, + {"delete macr&O... ", 346}, + {"insert &Date/time ", 347}, + {"format p&Aragraph M-p", 348}, + {"'ispell' s&Pell check C-p", 349}, + {"sor&T... M-t", 350}, + {"'indent' &C Formatter F19", 351}, + {"&Mail... ", 352}, + {"&Execute macro... C-x e, KEY", 353}, + {"'ispell' s&Pell check M-$", 354}, + {"&General... ", 355}, + {"&Save mode...", 356}, + {"&Layout...", 357}, + {" File ", 358}, + {" Edit ", 359}, + {" Sear/Repl ", 360}, + {" Command ", 361}, + {" Options ", 362}, + {"Open...\tC-o", 363}, + {"New\tC-n", 364}, + {"Save\tF2", 365}, + {"Save as...\tF12", 366}, + {"Insert file...\tF15", 367}, + {"Copy to file...\tC-f", 368}, + {"Disk operations", 369}, + {"Toggle mark\tF3", 370}, + {"Toggle mark columns\tC-b", 371}, + {"Toggle insert/overwrite\tIns", 372}, + {"Copy block to cursor\tF5", 373}, + {"Move block to cursor\tF6", 374}, + {"Delete block\tF8/C-Del", 375}, + {"Copy block to clipbrd\tC-Ins", 376}, + {"Cut block to clipbrd\tS-Del", 377}, + {"Paste block from clipbrd\tS-Ins", 378}, + {"Selection history\tM-Ins", 379}, + {"Undo\tC-BackSpace", 380}, + {"Manipulating blocks of text", 381}, + {" Srch/Replce ", 382}, + {"Search...\tF7", 383}, + {"Search again\tF17", 384}, + {"Replace...\tF4", 385}, + {"Replace again\tF14", 386}, + {"Search for and replace text", 387}, + {"Goto line...\tM-l", 388}, + {"Start record macro\tC-r", 389}, + {"Finish record macro...\tC-r", 390}, + {"Execute macro...\tC-a, KEY", 391}, + {"Delete macro...\t", 392}, + {"Insert date/time\tC-d", 393}, + {"Format paragraph\tM-p", 394}, + {"Refresh display\tC-l", 395}, + {"Macros and internal commands", 396}, + {"None", 397}, + {"Dynamic paragraphing", 398}, + {"Type writer wrap", 399}, + {"Wrap mode", 400}, + {"Key emulation", 401}, + {"Error initialising editor.\n", 402}, + {"Help", 403}, + {"Mark", 404}, + {"Replac", 405}, + {"Search", 406}, + {"PullDn", 407}, + {"Quit", 408}, + {"The Quick Brown Fox Jumps Over The Lazy Dog", 409}, + {"gtkedit.c: HOME environment variable not set and no passwd entry - aborting\n", 410}, + {"Open/Load", 411}, + {"Load a different/new file", 412}, + {"New", 413}, + {"Clear the edit buffer", 414}, + {"Save the current edit buffer to filename", 415}, + {"Save As", 416}, + {"Save the current edit buffer as filename", 417}, + {"Insert File", 418}, + {"Insert text from a file", 419}, + {"Copy to file", 420}, + {"copy a block to a file", 421}, + {"Exit", 422}, + {"Quit editor", 423}, + {"Copy selection to clipboard", 424}, + {"Cut", 425}, + {"Cut selection to clipboard", 426}, + {"Paste", 427}, + {"Paste clipboard", 428}, + {"Undo", 429}, + {"Go back in time one key press", 430}, + {"Find", 431}, + {"Find string/regular expression", 432}, + {"Find again", 433}, + {"Repeat most recent search", 434}, + {"Search/Replace", 435}, + {"Find and replace text/regular expressions", 436}, + {"About...", 437}, + {"Info about Mcedit", 438}, + {"File", 439}, + {" Load syntax file ", 440}, + {" File access error ", 441}, + {" Syntax error in file %s on line %d ", 442}, + {"&Cancel", 443}, + {"&Set", 444}, + {"S&kip", 445}, + {"Set &all", 446}, + {"owner", 447}, + {"group", 448}, + {"other", 449}, + {"On", 450}, + {"Flag", 451}, + {"Mode", 452}, + {"%6d of %d", 453}, + {" Chown advanced command ", 454}, {"\ Couldn't chmod \"%s\" \n\ - %s ", 434}, + %s ", 455}, {"\ Couldn't chown \"%s\" \n\ - %s ", 435}, - {" Oops... ", 436}, - {" I can't run the Advanced Chown command on an extfs ", 437}, - {" I can't run the Advanced Chown command on a tarfs ", 438}, - {"Background process:", 439}, - {" Background process error ", 440}, - {" Child died unexpectedly ", 441}, - {" Unknown error in child ", 442}, - {" Background protocol error ", 443}, + %s ", 456}, + {" Oops... ", 457}, + {" I can't run the Advanced Chown command on an extfs ", 458}, + {" I can't run the Advanced Chown command on a tarfs ", 459}, + {"Background process:", 460}, + {" Background process error ", 461}, + {" Child died unexpectedly ", 462}, + {" Unknown error in child ", 463}, + {" Background protocol error ", 464}, {"\ Background process sent us a request for more arguments \n\ - than we can handle. \n", 444}, - {" Listing mode ", 445}, - {"&Full file list", 446}, - {"&Brief file list", 447}, - {"&Long file list", 448}, - {"&User defined:", 449}, - {"&Icon view", 450}, - {"user &Mini status", 451}, - {"Listing mode", 452}, - {"&Reverse", 453}, - {"case sensi&tive", 454}, - {"Sort order", 455}, - {" confirm &Exit ", 456}, - {" confirm e&Xecute ", 457}, - {" confirm o&Verwrite ", 458}, - {" confirm &Delete ", 459}, - {" Confirmation ", 460}, - {"Full 8 bits output", 461}, - {"ISO 8859-1", 462}, - {"7 bits", 463}, - {"F&ull 8 bits input", 464}, - {" Display bits ", 465}, - {"&Always use ftp proxy", 466}, - {"sec", 467}, - {"ftpfs directory cache timeout:", 468}, - {"ftp anonymous password:", 469}, - {"Timeout for freeing VFSs:", 470}, - {" Virtual File System Setting ", 471}, - {"Quick cd", 472}, - {"cd", 473}, - {"Symbolic link filename:", 474}, - {"Existing filename (filename symlink will point to):", 475}, - {"Running ", 476}, - {"Stopped", 477}, - {"&Stop", 478}, - {"&Resume", 479}, - {"&Kill", 480}, - {"Background Jobs", 481}, - {"execute/search by others", 482}, - {"write by others", 483}, - {"read by others", 484}, - {"execute/search by group", 485}, - {"write by group", 486}, - {"read by group", 487}, - {"execute/search by owner", 488}, - {"write by owner", 489}, - {"read by owner", 490}, - {"sticky bit", 491}, - {"set group ID on execution", 492}, - {"set user ID on execution", 493}, - {"C&lear marked", 494}, - {"S&et marked", 495}, - {"&Marked all", 496}, - {"Permissions (Octal)", 497}, - {"Owner name", 498}, - {"Group name", 499}, - {" Chmod command ", 500}, - {" Permission ", 501}, - {"Use SPACE to change", 502}, - {"an option, ARROW KEYS", 503}, - {"to move between options", 504}, - {"and T or INS to mark", 505}, - {"Chmod command", 506}, - {" I can't run the Chmod command on an extfs ", 507}, - {"Set &users", 508}, - {"Set &groups", 509}, - {" Name ", 510}, - {" Owner name ", 511}, - {" Group name ", 512}, - {" Size ", 513}, - {" Chown command ", 514}, - {" User name ", 515}, - {"", 516}, - {"", 517}, - {" I can't run the Chown command on an extfs ", 518}, - {" I can't run the Chown command on a tarfs ", 519}, - {" Can not fetch a local copy of %s ", 520}, - {" CD ", 521}, - {"Files tagged, want to cd?", 522}, - {"Could not change directory", 523}, - {" View file ", 524}, - {" Filename:", 525}, - {" Filtered view ", 526}, - {" Filter command and arguments:", 527}, - {" Mkdir ", 528}, - {" Enter directory name:", 529}, - {" Filter ", 530}, - {" Set expression for filtering filenames", 531}, - {" Select ", 532}, - {" Malformed regular expression ", 533}, - {" Unselect ", 534}, - {"Extension file edit", 535}, - {" Which extension file you want to edit? ", 536}, - {"&User", 537}, - {"&System Wide", 538}, - {"Menu file edit", 539}, - {" Which menu file will you edit? ", 540}, - {"&Local", 541}, - {"&Home", 542}, - {" Compare directories ", 543}, - {" Select compare method: ", 544}, - {"&Quick", 545}, - {"&Size only", 546}, - {"&Thorough", 547}, - {" Both panels should be on the listing view mode to use this command ", 548}, - {" The command history is empty ", 549}, - {" Command history ", 550}, + than we can handle. \n", 465}, + {" Listing mode ", 466}, + {"&Full file list", 467}, + {"&Brief file list", 468}, + {"&Long file list", 469}, + {"&User defined:", 470}, + {"&Icon view", 471}, + {"user &Mini status", 472}, + {"Listing mode", 473}, + {"&Reverse", 474}, + {"case sensi&tive", 475}, + {"Sort order", 476}, + {" confirm &Exit ", 477}, + {" confirm e&Xecute ", 478}, + {" confirm o&Verwrite ", 479}, + {" confirm &Delete ", 480}, + {" Confirmation ", 481}, + {"Full 8 bits output", 482}, + {"ISO 8859-1", 483}, + {"7 bits", 484}, + {"F&ull 8 bits input", 485}, + {" Display bits ", 486}, + {"&Always use ftp proxy", 487}, + {"sec", 488}, + {"ftpfs directory cache timeout:", 489}, + {"ftp anonymous password:", 490}, + {"Timeout for freeing VFSs:", 491}, + {" Virtual File System Setting ", 492}, + {"Quick cd", 493}, + {"cd", 494}, + {"Symbolic link filename:", 495}, + {"Existing filename (filename symlink will point to):", 496}, + {"Running ", 497}, + {"Stopped", 498}, + {"&Stop", 499}, + {"&Resume", 500}, + {"&Kill", 501}, + {"Background Jobs", 502}, + {"execute/search by others", 503}, + {"write by others", 504}, + {"read by others", 505}, + {"execute/search by group", 506}, + {"write by group", 507}, + {"read by group", 508}, + {"execute/search by owner", 509}, + {"write by owner", 510}, + {"read by owner", 511}, + {"sticky bit", 512}, + {"set group ID on execution", 513}, + {"set user ID on execution", 514}, + {"C&lear marked", 515}, + {"S&et marked", 516}, + {"&Marked all", 517}, + {"Permissions (Octal)", 518}, + {"Owner name", 519}, + {"Group name", 520}, + {" Chmod command ", 521}, + {" Permission ", 522}, + {"Use SPACE to change", 523}, + {"an option, ARROW KEYS", 524}, + {"to move between options", 525}, + {"and T or INS to mark", 526}, + {"Chmod command", 527}, + {" I can't run the Chmod command on an extfs ", 528}, + {"Set &users", 529}, + {"Set &groups", 530}, + {" Name ", 531}, + {" Owner name ", 532}, + {" Group name ", 533}, + {" Size ", 534}, + {" Chown command ", 535}, + {" User name ", 536}, + {"", 537}, + {"", 538}, + {" I can't run the Chown command on an extfs ", 539}, + {" I can't run the Chown command on a tarfs ", 540}, + {" Can not fetch a local copy of %s ", 541}, + {" CD ", 542}, + {"Files tagged, want to cd?", 543}, + {"Could not change directory", 544}, + {" View file ", 545}, + {" Filename:", 546}, + {" Filtered view ", 547}, + {" Filter command and arguments:", 548}, + {"Create a new Directory", 549}, + {" Enter directory name:", 550}, + {" Filter ", 551}, + {" Set expression for filtering filenames", 552}, + {" Select ", 553}, + {" Malformed regular expression ", 554}, + {" Unselect ", 555}, + {"Extension file edit", 556}, + {" Which extension file you want to edit? ", 557}, + {"&User", 558}, + {"&System Wide", 559}, + {"Menu file edit", 560}, + {" Which menu file will you edit? ", 561}, + {"&Local", 562}, + {"&Home", 563}, + {" Compare directories ", 564}, + {" Select compare method: ", 565}, + {"&Quick", 566}, + {"&Size only", 567}, + {"&Thorough", 568}, + {" Both panels should be on the listing view mode to use this command ", 569}, + {" The command history is empty ", 570}, + {" Command history ", 571}, {"\ Not an xterm or Linux console; \n\ - the panels cannot be toggled. ", 551}, + the panels cannot be toggled. ", 572}, {"\ Type `exit' to return to the Midnight Commander\n\ \r\n\ -\r", 552}, +\r", 573}, {"\ Couldn't stat %s \n\ - %s ", 553}, - {" Link ", 554}, - {" to:", 555}, - {" link: %s ", 556}, - {" symlink: %s ", 557}, - {" Symlink ", 558}, - {" points to:", 559}, - {" Edit symlink ", 560}, - {" edit symlink: %s ", 561}, - {" Link symbolically ", 562}, - {" Relative symlink ", 563}, - {" relative symlink: %s ", 564}, - {" Enter machine name (F1 for details): ", 565}, - {" Could not chdir to %s ", 566}, - {" Link to a remote machine ", 567}, - {" FTP to machine ", 568}, - {" Socket source routing setup ", 569}, - {" Enter host name to use as a source routing hop: ", 570}, - {" Host name ", 571}, - {" Error while looking up IP address ", 572}, - {" Undelete files on an ext2 file system ", 573}, + %s ", 574}, + {" Link ", 575}, + {" to:", 576}, + {" link: %s ", 577}, + {" symlink: %s ", 578}, + {" Symlink ", 579}, + {" points to:", 580}, + {" Edit symlink ", 581}, + {" edit symlink: %s ", 582}, + {" Link symbolically ", 583}, + {" Relative symlink ", 584}, + {" relative symlink: %s ", 585}, + {" Enter machine name (F1 for details): ", 586}, + {" Could not chdir to %s ", 587}, + {" Link to a remote machine ", 588}, + {" FTP to machine ", 589}, + {" Socket source routing setup ", 590}, + {" Enter host name to use as a source routing hop: ", 591}, + {" Host name ", 592}, + {" Error while looking up IP address ", 593}, + {" Undelete files on an ext2 file system ", 594}, {"\ Enter device (without /dev/) to undelete\n\ - files on: (F1 for details)", 574}, - {" Setup saved to ~/", 575}, - {" Setup ", 576}, + files on: (F1 for details)", 595}, + {" Setup saved to ~/", 596}, + {" Setup ", 597}, {"\ Can't chdir to '%s' \n\ - %s ", 577}, - {" You can not execute commands on non-local filesystems", 578}, + %s ", 598}, + {" You can not execute commands on non-local filesystems", 599}, {"\ \n\ \n\ \n\ refresh stack underflow!\n\ \n\ -\n", 579}, - {"&Unsorted", 580}, - {"&Name", 581}, - {"&Extension", 582}, - {"&Modify time", 583}, - {"&Access time", 584}, - {"&Change time", 585}, - {"&Size", 586}, - {"&Inode", 587}, - {"&Type", 588}, - {"&Links", 589}, - {"N&GID", 590}, - {"N&UID", 591}, - {"&Owner", 592}, - {"&Group", 593}, - {"File exists but can not be stat-ed: %s %s", 594}, - {"Unknown", 595}, +\n", 600}, + {"&Unsorted", 601}, + {"&Name", 602}, + {"&Extension", 603}, + {"&Modify time", 604}, + {"&Access time", 605}, + {"&Change time", 606}, + {"&Size", 607}, + {"&Inode", 608}, + {"&Type", 609}, + {"&Links", 610}, + {"N&GID", 611}, + {"N&UID", 612}, + {"&Owner", 613}, + {"&Group", 614}, + {"File exists but can not be stat-ed: %s %s", 615}, + {"Unknown", 616}, {"\ Can't create temporary command file \n\ - %s ", 596}, - {" Parameter ", 597}, - {" Can't execute commands on a Virtual File System directory ", 598}, - {" file error", 599}, - {"Format of the ", 600}, - {" file error ", 601}, - {"Format of the ~/", 602}, + %s ", 617}, + {" Parameter ", 618}, + {" Can't execute commands on a Virtual File System directory ", 619}, + {" file error", 620}, + {"Format of the ", 621}, + {" file error ", 622}, + {"Format of the ~/", 623}, {"\ file has changed\n\ with version 3.0. You may want either to\n\ -copy it from ", 603}, +copy it from ", 624}, {"\ mc.ext or use that\n\ -file as an example of how to write it.\n", 604}, - {"mc.ext will be used for this moment.", 605}, - {" Copy ", 606}, - {" Move ", 607}, - {" Delete ", 608}, - {" Invalid target mask ", 609}, - {" Could not make the hardlink ", 610}, +file as an example of how to write it.\n", 625}, + {"mc.ext will be used for this moment.", 626}, + {" Copy ", 627}, + {" Move ", 628}, + {" Delete ", 629}, + {" Invalid target mask ", 630}, + {" Could not make the hardlink ", 631}, {"\ Cannot read source link \"%s\" \n\ - %s ", 611}, + %s ", 632}, {"\ Cannot make stable symlinks across non-local filesystems: \n\ \n\ - Option Stable Symlinks will be disabled ", 612}, + Option Stable Symlinks will be disabled ", 633}, {"\ Cannot create target symlink \"%s\" \n\ - %s ", 613}, + %s ", 634}, {"\ Cannot overwrite directory \"%s\" \n\ - %s ", 614}, + %s ", 635}, {"\ Cannot stat source file \"%s\" \n\ - %s ", 615}, - {" `%s' and `%s' are the same file. ", 616}, + %s ", 636}, + {" `%s' and `%s' are the same file. ", 637}, {"\ Cannot create special file \"%s\" \n\ - %s ", 617}, + %s ", 638}, {"\ Cannot chown target file \"%s\" \n\ - %s ", 618}, + %s ", 639}, {"\ Cannot chmod target file \"%s\" \n\ - %s ", 619}, + %s ", 640}, {"\ Cannot open source file \"%s\" \n\ - %s ", 620}, - {" Reget failed, about to overwrite file ", 621}, + %s ", 641}, + {" Reget failed, about to overwrite file ", 642}, {"\ Cannot fstat source file \"%s\" \n\ - %s ", 622}, + %s ", 643}, {"\ Cannot create target file \"%s\" \n\ - %s ", 623}, + %s ", 644}, {"\ Cannot fstat target file \"%s\" \n\ - %s ", 624}, + %s ", 645}, {"\ Cannot read source file \"%s\" \n\ - %s ", 625}, + %s ", 646}, {"\ Cannot write target file \"%s\" \n\ - %s ", 626}, - {"(stalled)", 627}, + %s ", 647}, + {"(stalled)", 648}, {"\ Cannot close source file \"%s\" \n\ - %s ", 628}, + %s ", 649}, {"\ Cannot close target file \"%s\" \n\ - %s ", 629}, - {"Incomplete file was retrieved. Keep it?", 630}, - {"&Delete", 631}, - {"&Keep", 632}, + %s ", 650}, + {"Incomplete file was retrieved. Keep it?", 651}, + {"&Delete", 652}, + {"&Keep", 653}, {"\ Cannot stat source directory \"%s\" \n\ - %s ", 633}, + %s ", 654}, {"\ Source directory \"%s\" is not a directory \n\ - %s ", 634}, + %s ", 655}, {"\ Cannot copy cyclic symbolic link \n\ - `%s' ", 635}, + `%s' ", 656}, {"\ Cannot create target directory \"%s\" \n\ - %s ", 636}, + %s ", 657}, {"\ Cannot chown target directory \"%s\" \n\ - %s ", 637}, + %s ", 658}, {"\ Cannot stat file \"%s\" \n\ - %s ", 638}, - {" `%s' and `%s' are the same file ", 639}, - {" Cannot overwrite directory `%s' ", 640}, + %s ", 659}, + {" `%s' and `%s' are the same file ", 660}, + {" Cannot overwrite directory `%s' ", 661}, {"\ Cannot move file \"%s\" to \"%s\" \n\ - %s ", 641}, + %s ", 662}, {"\ Cannot remove file \"%s\" \n\ - %s ", 642}, - {" Cannot overwrite directory \"%s\" %s ", 643}, - {" Cannot overwrite file \"%s\" %s ", 644}, + %s ", 663}, + {" Cannot overwrite directory \"%s\" %s ", 664}, + {" Cannot overwrite file \"%s\" %s ", 665}, {"\ Cannot move directory \"%s\" to \"%s\" \n\ - %s ", 645}, + %s ", 666}, {"\ Cannot delete file \"%s\" \n\ - %s ", 646}, + %s ", 667}, {"\ Cannot remove directory \"%s\" \n\ - %s ", 647}, - {" Internal error: get_file \n", 648}, - {" Can't operate on \"..\"! ", 649}, - {"Yes", 650}, - {"No", 651}, - {" Sorry, I could not put the job in background ", 652}, - {" Internal failure ", 653}, - {" Unknown file operation ", 654}, + %s ", 668}, + {" Internal error: get_file \n", 669}, + {"1Copy", 670}, + {"1Move", 671}, + {"1Delete", 672}, + {"%o %f \"%s\"%m", 673}, + {"%o %d %f%m", 674}, + {"%o %f \"%s\"%e", 675}, + {"%o %d %f%e", 676}, + {"file", 677}, + {"files", 678}, + {"directory", 679}, + {"directories", 680}, + {"files/directories", 681}, + {" with source mask:", 682}, + {" Can't operate on \"..\"! ", 683}, + {"Yes", 684}, + {"No", 685}, + {" Sorry, I could not put the job in background ", 686}, + {" Internal failure ", 687}, + {" Unknown file operation ", 688}, {"\ Destination \"%s\" must be a directory \n\ - %s ", 655}, - {"&Skip", 656}, - {"&Retry", 657}, - {"&Abort", 658}, + %s ", 689}, + {"&Skip", 690}, + {"&Retry", 691}, + {"&Abort", 692}, {"\ \n\ Directory not empty. \n\ - Delete it recursively? ", 659}, + Delete it recursively? ", 693}, {"\ \n\ Background process: Directory not empty \n\ - Delete it recursively? ", 660}, - {"a&ll", 661}, - {"non&E", 662}, - {" Type 'yes' if you REALLY want to delete ", 663}, - {"all the directories ", 664}, - {" Recursive Delete ", 665}, - {" Background process: Recursive Delete ", 666}, - {"1Copy", 667}, - {"1Move", 668}, - {"1Delete", 669}, - {"%o %f \"%s\"%m", 670}, - {"%o %d %f%m", 671}, - {"%o %f \"%s\"%e", 672}, - {"%o %d %f%e", 673}, - {"file", 674}, - {"files", 675}, - {"directory", 676}, - {"directories", 677}, - {"files/directories", 678}, - {" with source mask:", 679}, - {"Count", 680}, - {"Bytes", 681}, - {"Source", 682}, - {"Target", 683}, - {"Deleting", 684}, - {"Target file \"%s\" already exists!", 685}, - {"if &Size differs", 686}, - {"&Update", 687}, - {"al&L", 688}, - {"Overwrite all targets?", 689}, - {"&Reget", 690}, - {"ap&Pend", 691}, - {"Overwrite this target?", 692}, - {"Target date: %s, size %d", 693}, - {"Source date: %s, size %d", 694}, - {" File exists ", 695}, - {" Background process: File exists ", 696}, - {"preserve &Attributes", 697}, - {"follow &Links", 698}, - {"to:", 699}, - {"&Using shell patterns", 700}, - {"&Background", 701}, - {"&Stable Symlinks", 702}, - {"&Dive into subdir if exists", 703}, + Delete it recursively? ", 694}, + {" Delete: ", 695}, + {"a&ll", 696}, + {"non&E", 697}, + {" Type 'yes' if you REALLY want to delete ", 698}, + {"all the directories ", 699}, + {" Recursive Delete ", 700}, + {" Background process: Recursive Delete ", 701}, + {"Count", 702}, + {"Bytes", 703}, + {"Source", 704}, + {"Target", 705}, + {"Deleting", 706}, + {"Target file \"%s\" already exists!", 707}, + {"if &Size differs", 708}, + {"&Update", 709}, + {"al&L", 710}, + {"Overwrite all targets?", 711}, + {"&Reget", 712}, + {"ap&Pend", 713}, + {"Overwrite this target?", 714}, + {"Target date: %s, size %d", 715}, + {"Source date: %s, size %d", 716}, + {" File exists ", 717}, + {" Background process: File exists ", 718}, + {"preserve &Attributes", 719}, + {"follow &Links", 720}, + {"to:", 721}, + {"&Using shell patterns", 722}, + {"&Background", 723}, + {"&Stable Symlinks", 724}, + {"&Dive into subdir if exists", 725}, {"\ Invalid source pattern `%s' \n\ - %s ", 704}, - {"&Suspend", 705}, - {"Con&tinue", 706}, - {"&Chdir", 707}, - {"&Again", 708}, - {"&Quit", 709}, - {"Pane&lize", 710}, - {"&View - F3", 711}, - {"&Edit - F4", 712}, - {"Start at:", 713}, - {"Filename:", 714}, - {"Content: ", 715}, - {"&Tree", 716}, - {"Find File", 717}, - {"Grepping in %s", 718}, - {" Find/read ", 719}, - {" Problem reading from child ", 720}, - {"Finished", 721}, - {"Searching %s", 722}, - {"Searching", 723}, - {"Find file", 724}, - {"Usage: fixhlp \n", 725}, - {"fixhlp: Cannot open toc for writing", 726}, + %s ", 726}, + {"&Suspend", 727}, + {"Con&tinue", 728}, + {"&Chdir", 729}, + {"&Again", 730}, + {"&Quit", 731}, + {"Pane&lize", 732}, + {"&View - F3", 733}, + {"&Edit - F4", 734}, + {"Start at:", 735}, + {"Filename:", 736}, + {"Content: ", 737}, + {"&Tree", 738}, + {"Find File", 739}, + {"Grepping in %s", 740}, + {" Find/read ", 741}, + {" Problem reading from child ", 742}, + {"Finished", 743}, + {"Searching %s", 744}, + {"Searching", 745}, + {"Find file", 746}, + {"Usage: fixhlp \n", 747}, + {"fixhlp: Cannot open toc for writing", 748}, {"\ \004[Contents]\n\ Topics:\n\ -\n", 727}, +\n", 749}, {"\ Help file format error\n\ -\004", 728}, - {" Internal bug: Double start of link area ", 729}, - {" Can't find node [Contents] in help file ", 730}, - {" Help ", 731}, +\004", 750}, + {" Internal bug: Double start of link area ", 751}, + {" Can't find node [Contents] in help file ", 752}, + {" Help ", 753}, {"\ Can't open file %s \n\ - %s ", 732}, - {" Can't find node %s in help file ", 733}, - {"Index", 734}, - {"Prev", 735}, - {"&Move", 736}, - {"&Remove", 737}, - {"&Append", 738}, - {"&Insert", 739}, - {"New &Entry", 740}, - {"New &Group", 741}, - {"&Up", 742}, - {"&Add current", 743}, - {"Change &To", 744}, - {"Subgroup - press ENTER to see list", 745}, - {"Active VFS directories", 746}, - {"Directory hotlist", 747}, - {" Directory path ", 748}, - {" Directory label ", 749}, - {"Moving ", 750}, - {"New hotlist entry", 751}, - {"Directory label", 752}, - {"Directory path", 753}, - {" New hotlist group ", 754}, - {"Name of new group", 755}, - {"Label for \"%s\":", 756}, - {" Add to hotlist ", 757}, - {" Remove: ", 758}, + %s ", 754}, + {" Can't find node %s in help file ", 755}, + {"Index", 756}, + {"Prev", 757}, + {"&Move", 758}, + {"&Remove", 759}, + {"&Append", 760}, + {"&Insert", 761}, + {"New &Entry", 762}, + {"New &Group", 763}, + {"&Up", 764}, + {"&Add current", 765}, + {"Change &To", 766}, + {"Subgroup - press ENTER to see list", 767}, + {"Active VFS directories", 768}, + {"Directory hotlist", 769}, + {" Directory path ", 770}, + {" Directory label ", 771}, + {"Moving ", 772}, + {"New hotlist entry", 773}, + {"Directory label", 774}, + {"Directory path", 775}, + {" New hotlist group ", 776}, + {"Name of new group", 777}, + {"Label for \"%s\":", 778}, + {" Add to hotlist ", 779}, + {" Remove: ", 780}, {"\ \n\ Group not empty.\n\ - Remove it?", 759}, - {" Top level group ", 760}, - {"Hotlist is now kept in file ~/", 761}, - {"MC will load hotlist from ~/", 762}, - {"and then delete [Hotlist] section there", 763}, - {" Hotlist Load ", 764}, - {"MC was unable to write ~/", 765}, - {" file, your old hotlist entries were not deleted", 766}, - {"You have ~/", 767}, - {" file and [Hotlist] section in ~/", 768}, - {"Your ~/", 769}, - {" most probably was created\n", 770}, + Remove it?", 781}, + {" Top level group ", 782}, + {"Hotlist is now kept in file ~/", 783}, + {"MC will load hotlist from ~/", 784}, + {"and then delete [Hotlist] section there", 785}, + {" Hotlist Load ", 786}, + {"MC was unable to write ~/", 787}, + {" file, your old hotlist entries were not deleted", 788}, + {"You have ~/", 789}, + {" file and [Hotlist] section in ~/", 790}, + {"Your ~/", 791}, + {" most probably was created\n", 792}, {"\ by an earlier development version of MC\n\ -and is more actual than ~/", 771}, +and is more actual than ~/", 793}, {"\ entries\n\ -\n", 772}, +\n", 794}, {"\ You can choose between\n\ \n\ - Remove - remove old hotlist entries from ~/", 773}, + Remove - remove old hotlist entries from ~/", 795}, {"\ Keep - keep your old entries; you will be asked\n\ the same question next time\n\ - Merge - add old entries to hotlist as group \"Entries from ~/", 774}, - {"&Merge", 775}, - {" Entries from ~/", 776}, - {" file your old hotlist entries were not deleted", 777}, - {"Midnight Commander %s", 778}, - {"Free nodes %d (%d%%) of %d", 779}, - {"No node information", 780}, - {"Free space ", 781}, - {" (%d%%) of ", 782}, - {"No space information", 783}, - {"Type: %s ", 784}, - {"non-local vfs", 785}, - {"Device: %s", 786}, - {"Filesystem: %s", 787}, - {"Accessed: %s", 788}, - {"Modified: %s", 789}, - {"Created: %s", 790}, - {"Size: ", 791}, - {" (%d blocks)", 792}, - {"Owner: %s/%s", 793}, - {"Links: %d", 794}, - {"Mode: %s (%04o)", 795}, - {"Location: %Xh:%Xh", 796}, - {"File: %s", 797}, - {"File: None", 798}, - {"&Vertical", 799}, - {"&Horizontal", 800}, - {"&Xterm hintbar", 801}, - {"h&Intbar visible", 802}, - {"&Keybar visible", 803}, - {"command &Prompt", 804}, - {"show &Mini status", 805}, - {"menu&Bar visible", 806}, - {"&Equal split", 807}, - {"pe&Rmissions", 808}, - {"&File types", 809}, - {"&Save", 810}, - {" Layout ", 811}, - {" Panel split ", 812}, - {" Highlight... ", 813}, - {" Other options ", 814}, - {"output lines", 815}, - {"Layout", 816}, - {" Learn keys ", 817}, - {" Teach me a key ", 818}, + Merge - add old entries to hotlist as group \"Entries from ~/", 796}, + {"&Merge", 797}, + {" Entries from ~/", 798}, + {" file your old hotlist entries were not deleted", 799}, + {"Midnight Commander %s", 800}, + {"Free nodes %d (%d%%) of %d", 801}, + {"No node information", 802}, + {"Free space ", 803}, + {" (%d%%) of ", 804}, + {"No space information", 805}, + {"Type: %s ", 806}, + {"non-local vfs", 807}, + {"Device: %s", 808}, + {"Filesystem: %s", 809}, + {"Accessed: %s", 810}, + {"Modified: %s", 811}, + {"Created: %s", 812}, + {"Size: ", 813}, + {" (%d blocks)", 814}, + {"Owner: %s/%s", 815}, + {"Links: %d", 816}, + {"Mode: %s (%04o)", 817}, + {"Location: %Xh:%Xh", 818}, + {"File: %s", 819}, + {"File: None", 820}, + {"&Vertical", 821}, + {"&Horizontal", 822}, + {"&Xterm hintbar", 823}, + {"h&Intbar visible", 824}, + {"&Keybar visible", 825}, + {"command &Prompt", 826}, + {"show &Mini status", 827}, + {"menu&Bar visible", 828}, + {"&Equal split", 829}, + {"pe&Rmissions", 830}, + {"&File types", 831}, + {"&Save", 832}, + {" Layout ", 833}, + {" Panel split ", 834}, + {" Highlight... ", 835}, + {" Other options ", 836}, + {"output lines", 837}, + {"Layout", 838}, + {" Learn keys ", 839}, + {" Teach me a key ", 840}, {"\ Please press the %s\n\ and then wait until this message disappears.\n\ @@ -960,325 +982,325 @@ next to its button.\n\ \n\ If you want to escape, press a single Escape key\n\ -and wait as well.", 819}, - {" Cannot accept this key ", 820}, - {" You have entered \"%s\"", 821}, - {"OK", 822}, +and wait as well.", 841}, + {" Cannot accept this key ", 842}, + {" You have entered \"%s\"", 843}, + {"OK", 844}, {"\ It seems that all your keys already\n\ -work fine. That's great.", 823}, - {"&Discard", 824}, +work fine. That's great.", 845}, + {"&Discard", 846}, {"\ Great! You have a complete terminal database!\n\ -All your keys work well.", 825}, - {"Learn keys", 826}, - {"Press all the keys mentioned here. After you have done it, check", 827}, - {"which keys are not marked with OK. Press space on the missing", 828}, - {"key, or click with the mouse to define it. Move around with Tab.", 829}, +All your keys work well.", 847}, + {"Learn keys", 848}, + {"Press all the keys mentioned here. After you have done it, check", 849}, + {"which keys are not marked with OK. Press space on the missing", 850}, + {"key, or click with the mouse to define it. Move around with Tab.", 851}, {"\ The Commander can't change to the directory that \n\ the subshell claims you are in. Perhaps you have \n\ deleted your working directory, or given yourself \n\ - extra access permissions with the \"su\" command? ", 830}, - {"Press any key to continue...", 831}, - {" The shell is already running a command ", 832}, - {"&Listing mode...", 833}, - {"&Quick view C-x q", 834}, - {"&Info C-x i", 835}, - {"&Sort order...", 836}, - {"&Filter...", 837}, - {"&Network link...", 838}, - {"FT&P link...", 839}, - {"&Drive... M-d", 840}, - {"&Rescan C-r", 841}, - {"&User menu F2", 842}, - {"&View F3", 843}, - {"Vie&w file... ", 844}, - {"&Filtered view M-!", 845}, - {"&Edit F4", 846}, - {"&Copy F5", 847}, - {"c&Hmod C-x c", 848}, - {"&Link C-x l", 849}, - {"&SymLink C-x s", 850}, - {"edit s&Ymlink C-x C-s", 851}, - {"ch&Own C-x o", 852}, - {"&Advanced chown ", 853}, - {"&Rename/Move F6", 854}, - {"&Mkdir F7", 855}, - {"&Delete F8", 856}, - {"&Quick cd M-c", 857}, - {"select &Group M-+", 858}, - {"u&Nselect group M-\\", 859}, - {"reverse selec&Tion M-*", 860}, - {"e&Xit F10", 861}, - {"&Directory tree", 862}, - {"&Find file M-?", 863}, - {"s&Wap panels C-u", 864}, - {"switch &Panels on/off C-o", 865}, - {"&Compare directories C-x d", 866}, - {"e&Xternal panelize C-x !", 867}, - {"show directory s&Izes", 868}, - {"command &History", 869}, - {"di&Rectory hotlist C-\\", 870}, - {"&Active VFS list C-x a", 871}, - {"&Background jobs C-x j", 872}, - {"&Undelete files (ext2fs only)", 873}, - {"&Listing format edit", 874}, - {"&Extension file edit", 875}, - {"&Menu file edit", 876}, - {"&Configuration...", 877}, - {"c&Onfirmation...", 878}, - {"&Display bits...", 879}, - {"learn &Keys...", 880}, - {"&Virtual FS...", 881}, - {"&Save setup", 882}, - {" &Left ", 883}, - {" &Above ", 884}, - {" &File ", 885}, - {" &Command ", 886}, - {" &Options ", 887}, - {" &Right ", 888}, - {" &Below ", 889}, - {" Information ", 890}, + extra access permissions with the \"su\" command? ", 852}, + {"Press any key to continue...", 853}, + {" The shell is already running a command ", 854}, + {"&Listing mode...", 855}, + {"&Quick view C-x q", 856}, + {"&Info C-x i", 857}, + {"&Sort order...", 858}, + {"&Filter...", 859}, + {"&Network link...", 860}, + {"FT&P link...", 861}, + {"&Drive... M-d", 862}, + {"&Rescan C-r", 863}, + {"&User menu F2", 864}, + {"&View F3", 865}, + {"Vie&w file... ", 866}, + {"&Filtered view M-!", 867}, + {"&Edit F4", 868}, + {"&Copy F5", 869}, + {"c&Hmod C-x c", 870}, + {"&Link C-x l", 871}, + {"&SymLink C-x s", 872}, + {"edit s&Ymlink C-x C-s", 873}, + {"ch&Own C-x o", 874}, + {"&Advanced chown ", 875}, + {"&Rename/Move F6", 876}, + {"&Mkdir F7", 877}, + {"&Delete F8", 878}, + {"&Quick cd M-c", 879}, + {"select &Group M-+", 880}, + {"u&Nselect group M-\\", 881}, + {"reverse selec&Tion M-*", 882}, + {"e&Xit F10", 883}, + {"&Directory tree", 884}, + {"&Find file M-?", 885}, + {"s&Wap panels C-u", 886}, + {"switch &Panels on/off C-o", 887}, + {"&Compare directories C-x d", 888}, + {"e&Xternal panelize C-x !", 889}, + {"show directory s&Izes", 890}, + {"command &History", 891}, + {"di&Rectory hotlist C-\\", 892}, + {"&Active VFS list C-x a", 893}, + {"&Background jobs C-x j", 894}, + {"&Undelete files (ext2fs only)", 895}, + {"&Listing format edit", 896}, + {"&Extension file edit", 897}, + {"&Menu file edit", 898}, + {"&Configuration...", 899}, + {"c&Onfirmation...", 900}, + {"&Display bits...", 901}, + {"learn &Keys...", 902}, + {"&Virtual FS...", 903}, + {"&Save setup", 904}, + {" &Left ", 905}, + {" &Above ", 906}, + {" &File ", 907}, + {" &Command ", 908}, + {" &Options ", 909}, + {" &Right ", 910}, + {" &Below ", 911}, + {" Information ", 912}, {"\ Using the fast reload option may not reflect the exact \n\ directory contents. In this cases you'll need to do a \n\ manual reload of the directory. See the man page for \n\ - the details. ", 891}, - {"Menu", 892}, - {"Thank you for using GNU Midnight Commander", 893}, - {"with mouse support on xterm%s.\n", 894}, - {" and the Linux console", 895}, - {"The TERM environment variable is unset!\n", 896}, - {"Library directory for the Midnight Commander: %s\n", 897}, - {"Option -m is obsolete. Please look at Display Bits... in the Option's menu\n", 898}, - {"Geometry for the window", 899}, - {"GEOMETRY", 900}, - {"No windows opened at startup", 901}, + the details. ", 913}, + {"Menu", 914}, + {"Thank you for using GNU Midnight Commander", 915}, + {"with mouse support on xterm%s.\n", 916}, + {" and the Linux console", 917}, + {"The TERM environment variable is unset!\n", 918}, + {"Library directory for the Midnight Commander: %s\n", 919}, + {"Option -m is obsolete. Please look at Display Bits... in the Option's menu\n", 920}, + {"Geometry for the window", 921}, + {"GEOMETRY", 922}, + {"No windows opened at startup", 923}, {"\ Couldn't open tty line. You have to run mc without the -P flag.\n\ -On some systems you may want to run # `which mc`\n", 902}, - {" Notice ", 903}, +On some systems you may want to run # `which mc`\n", 924}, + {" Notice ", 925}, {"\ The Midnight Commander configuration files \n\ are now stored in the ~/.mc directory, the \n\ - files have been moved now\n", 904}, - {"safe de&Lete", 905}, - {"cd follows lin&Ks", 906}, - {"advanced cho&Wn", 907}, - {"l&Ynx-like motion", 908}, - {"Animation", 909}, - {"rotatin&G dash", 910}, - {"co&Mplete: show all", 911}, - {"&Use internal view", 912}, - {"use internal ed&It", 913}, - {"auto m&Enus", 914}, - {"&Auto save setup", 915}, - {"shell &Patterns", 916}, - {"Compute &Totals", 917}, - {"&Verbose operation", 918}, - {"&Fast dir reload", 919}, - {"mi&X all files", 920}, - {"&Drop down menus", 921}, - {"ma&Rk moves down", 922}, - {"show &Hidden files", 923}, - {"show &Backup files", 924}, - {"&Never", 925}, - {"on dumb &Terminals", 926}, - {"alwa&Ys", 927}, - {" Configure options ", 928}, - {" Panel options ", 929}, - {" Pause after run... ", 930}, - {"Configure options", 931}, - {"&Add new", 932}, - {" External panelize ", 933}, - {"External panelize", 934}, - {"Other command", 935}, - {" Add to external panelize ", 936}, - {" Enter command label: ", 937}, - {" I can't run external panelize while logged on a non local directory ", 938}, - {"Find *.orig after patching", 939}, - {"Find SUID and SGID programs", 940}, - {"Cannot invoke command.", 941}, - {"Pipe close failed", 942}, - {"Show this help message", 943}, - {"Display brief usage message", 944}, - {"MTime", 945}, - {"Permission", 946}, - {"Perm", 947}, - {"|", 948}, - {"Nl", 949}, - {"GID", 950}, - {"UID", 951}, - {"ATime", 952}, - {"CTime", 953}, - {"Inode", 954}, - {" %s bytes in %d file%s", 955}, - {"Unknow tag on display format: ", 956}, - {" Do you really want to execute? ", 957}, - {" No action taken ", 958}, - {"RenMov", 959}, - {"Mkdir", 960}, + files have been moved now\n", 926}, + {"safe de&Lete", 927}, + {"cd follows lin&Ks", 928}, + {"advanced cho&Wn", 929}, + {"l&Ynx-like motion", 930}, + {"Animation", 931}, + {"rotatin&G dash", 932}, + {"co&Mplete: show all", 933}, + {"&Use internal view", 934}, + {"use internal ed&It", 935}, + {"auto m&Enus", 936}, + {"&Auto save setup", 937}, + {"shell &Patterns", 938}, + {"Compute &Totals", 939}, + {"&Verbose operation", 940}, + {"&Fast dir reload", 941}, + {"mi&X all files", 942}, + {"&Drop down menus", 943}, + {"ma&Rk moves down", 944}, + {"show &Hidden files", 945}, + {"show &Backup files", 946}, + {"&Never", 947}, + {"on dumb &Terminals", 948}, + {"alwa&Ys", 949}, + {" Configure options ", 950}, + {" Panel options ", 951}, + {" Pause after run... ", 952}, + {"Configure options", 953}, + {"&Add new", 954}, + {" External panelize ", 955}, + {"External panelize", 956}, + {"Other command", 957}, + {" Add to external panelize ", 958}, + {" Enter command label: ", 959}, + {" I can't run external panelize while logged on a non local directory ", 960}, + {"Find *.orig after patching", 961}, + {"Find SUID and SGID programs", 962}, + {"Cannot invoke command.", 963}, + {"Pipe close failed", 964}, + {"Show this help message", 965}, + {"Display brief usage message", 966}, + {"MTime", 967}, + {"Permission", 968}, + {"Perm", 969}, + {"|", 970}, + {"Nl", 971}, + {"GID", 972}, + {"UID", 973}, + {"ATime", 974}, + {"CTime", 975}, + {"Inode", 976}, + {" %s bytes in %d file%s", 977}, + {"Unknow tag on display format: ", 978}, + {" Do you really want to execute? ", 979}, + {" No action taken ", 980}, + {"RenMov", 981}, + {"Mkdir", 982}, {"\ Can't chdir to %s \n\ - %s ", 961}, - {"Couldn't open named pipe %s\n", 962}, - {" The shell is still active. Quit anyway? ", 963}, - {" There are stopped jobs.", 964}, - {" Quit anyway? ", 965}, - {"Warning: Couldn't change to %s.\n", 966}, + %s ", 983}, + {"Couldn't open named pipe %s\n", 984}, + {" The shell is still active. Quit anyway? ", 985}, + {" There are stopped jobs.", 986}, + {" Quit anyway? ", 987}, + {"Warning: Couldn't change to %s.\n", 988}, {"\ Can't open the %s file for writing:\n\ -%s\n", 967}, - {"Copy \"%s\" directory to:", 968}, - {"Move \"%s\" directory to:", 969}, +%s\n", 989}, + {"Copy \"%s\" directory to:", 990}, + {"Move \"%s\" directory to:", 991}, {"\ Can't stat the destination \n\ - %s ", 970}, - {" The destination isn't a directory ", 971}, - {" Delete %s? ", 972}, - {"Static", 973}, - {"Dynamc", 974}, + %s ", 992}, + {" The destination isn't a directory ", 993}, + {" Delete %s? ", 994}, + {"Static", 995}, + {"Dynamc", 996}, {"\ Can't chdir to \"%s\" \n\ - %s ", 975}, - {"Rescan", 976}, - {"Forget", 977}, - {"Rmdir", 978}, - {" Invalid shell pattern defination \"%c\". ", 979}, - {" Debug ", 980}, - {" ERROR: ", 981}, - {" True: ", 982}, - {" False: ", 983}, - {" Warning -- ignoring file ", 984}, + %s ", 997}, + {"Rescan", 998}, + {"Forget", 999}, + {"Rmdir", 1000}, + {" Invalid shell pattern defination \"%c\". ", 1001}, + {" Debug ", 1002}, + {" ERROR: ", 1003}, + {" True: ", 1004}, + {" False: ", 1005}, + {" Warning -- ignoring file ", 1006}, {"\ File %s is not owned by root or you or is world writable.\n\ -Using it may compromise your security", 985}, - {" I can't run programs while logged on a non local directory ", 986}, - {" User menu ", 987}, - {"name_trunc: too big", 988}, - {" Pipe failed ", 989}, - {" Dup failed ", 990}, +Using it may compromise your security", 1007}, + {" I can't run programs while logged on a non local directory ", 1008}, + {" User menu ", 1009}, + {"name_trunc: too big", 1010}, + {" Pipe failed ", 1011}, + {" Dup failed ", 1012}, {"\ File: \n\ \n\ - ", 991}, + ", 1013}, {"\ \n\ \n\ -has been modified, do you want to save the changes?\n", 992}, - {" Save changes ", 993}, - {" Can't spawn child program ", 994}, - {" Empty output from child filter ", 995}, - {" Could not open file ", 996}, - {" Can't open file \"", 997}, +has been modified, do you want to save the changes?\n", 1014}, + {" Save changes ", 1015}, + {" Can't spawn child program ", 1016}, + {" Empty output from child filter ", 1017}, + {" Could not open file ", 1018}, + {" Can't open file \"", 1019}, {"\ Can't stat file \n\ - ", 998}, - {" Can't view: not a regular file ", 999}, - {"File: %s", 1000}, - {" [grow]", 1001}, - {" Search string not found ", 1002}, - {" Invalid regular expression ", 1003}, + ", 1020}, + {" Can't view: not a regular file ", 1021}, + {"File: %s", 1022}, + {" [grow]", 1023}, + {" Search string not found ", 1024}, + {" Invalid regular expression ", 1025}, {"\ The current line number is %d.\n\ - Enter the new line number:", 1004}, - {" Enter regexp:", 1005}, - {" Enter search string:", 1006}, - {"Ascii", 1007}, - {"Hex", 1008}, - {"Line", 1009}, - {"RxSrch", 1010}, - {"EdText", 1011}, - {"EdHex", 1012}, - {"UnWrap", 1013}, - {"Wrap", 1014}, - {"HxSrch", 1015}, - {"Raw", 1016}, - {"Parse", 1017}, - {"Unform", 1018}, - {"Format", 1019}, - {"Function key 1", 1020}, - {"Function key 2", 1021}, - {"Function key 3", 1022}, - {"Function key 4", 1023}, - {"Function key 5", 1024}, - {"Function key 6", 1025}, - {"Function key 7", 1026}, - {"Function key 8", 1027}, - {"Function key 9", 1028}, - {"Function key 10", 1029}, - {"Function key 11", 1030}, - {"Function key 12", 1031}, - {"Function key 13", 1032}, - {"Function key 14", 1033}, - {"Function key 15", 1034}, - {"Function key 16", 1035}, - {"Function key 17", 1036}, - {"Function key 18", 1037}, - {"Function key 19", 1038}, - {"Function key 20", 1039}, - {"Backspace key", 1040}, - {"End key", 1041}, - {"Up arrow key", 1042}, - {"Down arrow key", 1043}, - {"Left arrow key", 1044}, - {"Right arrow key", 1045}, - {"Home key", 1046}, - {"Page Down key", 1047}, - {"Page Up key", 1048}, - {"Insert key", 1049}, - {"Delete key", 1050}, - {"Completion/M-tab", 1051}, - {"+ on keypad", 1052}, - {"- on keypad", 1053}, - {"* on keypad", 1054}, - {"Left arrow keypad", 1055}, - {"Right arrow keypad", 1056}, - {"Up arrow keypad", 1057}, - {"Down arrow keypad", 1058}, - {"Home on keypad", 1059}, - {"End on keypad", 1060}, - {"Page Down keypad", 1061}, - {"Page Up keypad", 1062}, - {"Insert on keypad", 1063}, - {"Delete on keypad", 1064}, - {"Enter on keypad", 1065}, - {"Slash on keypad", 1066}, - {"NumLock on keypad", 1067}, - {"Password:", 1068}, - {"Password", 1069}, - {"Ok", 1070}, + Enter the new line number:", 1026}, + {" Enter regexp:", 1027}, + {" Enter search string:", 1028}, + {"Ascii", 1029}, + {"Hex", 1030}, + {"Line", 1031}, + {"RxSrch", 1032}, + {"EdText", 1033}, + {"EdHex", 1034}, + {"UnWrap", 1035}, + {"Wrap", 1036}, + {"HxSrch", 1037}, + {"Raw", 1038}, + {"Parse", 1039}, + {"Unform", 1040}, + {"Format", 1041}, + {"Function key 1", 1042}, + {"Function key 2", 1043}, + {"Function key 3", 1044}, + {"Function key 4", 1045}, + {"Function key 5", 1046}, + {"Function key 6", 1047}, + {"Function key 7", 1048}, + {"Function key 8", 1049}, + {"Function key 9", 1050}, + {"Function key 10", 1051}, + {"Function key 11", 1052}, + {"Function key 12", 1053}, + {"Function key 13", 1054}, + {"Function key 14", 1055}, + {"Function key 15", 1056}, + {"Function key 16", 1057}, + {"Function key 17", 1058}, + {"Function key 18", 1059}, + {"Function key 19", 1060}, + {"Function key 20", 1061}, + {"Backspace key", 1062}, + {"End key", 1063}, + {"Up arrow key", 1064}, + {"Down arrow key", 1065}, + {"Left arrow key", 1066}, + {"Right arrow key", 1067}, + {"Home key", 1068}, + {"Page Down key", 1069}, + {"Page Up key", 1070}, + {"Insert key", 1071}, + {"Delete key", 1072}, + {"Completion/M-tab", 1073}, + {"+ on keypad", 1074}, + {"- on keypad", 1075}, + {"* on keypad", 1076}, + {"Left arrow keypad", 1077}, + {"Right arrow keypad", 1078}, + {"Up arrow keypad", 1079}, + {"Down arrow keypad", 1080}, + {"Home on keypad", 1081}, + {"End on keypad", 1082}, + {"Page Down keypad", 1083}, + {"Page Up keypad", 1084}, + {"Insert on keypad", 1085}, + {"Delete on keypad", 1086}, + {"Enter on keypad", 1087}, + {"Slash on keypad", 1088}, + {"NumLock on keypad", 1089}, + {"Password:", 1090}, + {"Password", 1091}, + {"Ok", 1092}, {"\ Couldn't open %s archive\n\ -%s", 1071}, - {"Inconsistent extfs archive", 1072}, - {"Sorry, we can not do password authenticated connections for now.", 1073}, - {" Could not set source routing (%s)", 1074}, +%s", 1093}, + {"Inconsistent extfs archive", 1094}, + {"Sorry, we can not do password authenticated connections for now.", 1095}, + {" Could not set source routing (%s)", 1096}, {"\ ~/.netrc file has not correct mode.\n\ -Remove password or correct mode.", 1075}, - {" MCFS ", 1076}, - {" The server does not support this version ", 1077}, +Remove password or correct mode.", 1097}, + {" MCFS ", 1098}, + {" The server does not support this version ", 1099}, {"\ The remote server is not running on a system port \n\ you need a password to log in, but the information may \n\ - not be safe on the remote side. Continue? \n", 1078}, - {" Yes ", 1079}, - {" No ", 1080}, - {" The remote server is running on strange port. Giving up.\n", 1081}, - {" MCFS Password required ", 1082}, - {" Invalid password ", 1083}, - {" Too many open connections ", 1084}, + not be safe on the remote side. Continue? \n", 1100}, + {" Yes ", 1101}, + {" No ", 1102}, + {" The remote server is running on strange port. Giving up.\n", 1103}, + {" MCFS Password required ", 1104}, + {" Invalid password ", 1105}, + {" Too many open connections ", 1106}, {"\ Couldn't open tar archive\n\ -%s", 1085}, - {"Unexpected EOF on archive file", 1086}, - {"Inconsistent tar archive", 1087}, +%s", 1107}, + {"Unexpected EOF on archive file", 1108}, + {"Inconsistent tar archive", 1109}, {"\ Hmm,...\n\ %s\n\ -doesn't look like a tar archive.", 1088}, +doesn't look like a tar archive.", 1110}, }; -int _msg_tbl_length = 1088; +int _msg_tbl_length = 1110; Binary files old/mc-4.5.7/po/ko.gmo and new/mc-4.5.9/po/ko.gmo differ diff -ruN old/mc-4.5.7/po/ko.po new/mc-4.5.9/po/ko.po --- old/mc-4.5.7/po/ko.po Tue Jan 12 22:38:13 1999 +++ new/mc-4.5.9/po/ko.po Mon Jan 18 17:44:14 1999 @@ -3,9 +3,9 @@ # Sung-Hyun Nam , 1998 msgid "" msgstr "" -"Project-Id-Version: mc 4.5.4\n" -"POT-Creation-Date: 1998-12-27 23:17+0900\n" -"PO-Revision-Date: 1999-01-02 07:57:40+0900\n" +"Project-Id-Version: mc 4.5.6\n" +"POT-Creation-Date: 1999-01-17 11:21+0900\n" +"PO-Revision-Date: 1999-01-17 03:06:07+0900\n" "Last-Translator: Sung-Hyun Nam \n" "Language-Team: Korean \n" "MIME-Version: 1.0\n" @@ -18,12 +18,12 @@ #: edit/edit_key_translator.c:133 msgid " Execute Macro " -msgstr " ¸ðµë ½ÇÇà " +msgstr " ¸ÅÅ©·Î ½ÇÇà " #. Input line for a single key press follows the ':' #: edit/edit_key_translator.c:133 gtkedit/editcmd.c:698 gtkedit/editcmd.c:707 msgid " Press macro hotkey: " -msgstr " ¸ðµë ´ÜÃà±Û¼è¸¦ ´©¸£½Ê½Ã¿À: " +msgstr " ¸ÅÅ©·Î ´ÜÃà±Û¼è¸¦ ´©¸£½Ê½Ã¿À: " #: edit/edit_key_translator.c:144 msgid " Insert Literal " @@ -33,161 +33,314 @@ msgid " Press any key: " msgstr " ¾Æ¹« ±Û¼è³ª ´©¸£½Ê½Ã¿À: " -#: gnome/gcmd.c:43 +#: gnome/gcmd.c:56 msgid " There is no other panel to compare contents to " msgstr " There is no other panel to compare contents to " -#: gnome/gcmd.c:78 +#: gnome/gcmd.c:91 msgid "GNU Midnight Commander" msgstr "GNU Midnight Commander" -#: gnome/gcmd.c:81 +#: gnome/gcmd.c:94 msgid "The GNOME edition of the Midnight Commander file manager." msgstr "The GNOME edition of the Midnight Commander file manager." -#: gnome/gcmd.c:93 src/main.c:813 src/screen.c:2041 +#: gnome/gcmd.c:106 src/main.c:820 src/screen.c:2063 msgid " The Midnight Commander " msgstr " The Midnight Commander " -#: gnome/gcmd.c:94 src/main.c:814 +#: gnome/gcmd.c:107 src/main.c:821 msgid " Do you really want to quit the Midnight Commander? " msgstr " Á¤¸»·Î Midnight Commander¸¦ Á¾·áÇϽðÚÀ¾´Ï±î? " -#: gnome/gcmd.c:95 gtkedit/editcmd.c:2235 src/cmd.c:255 src/file.c:1725 -#: src/file.c:2119 src/filegui.c:496 src/hotlist.c:1029 src/main.c:815 -#: src/screen.c:2043 src/subshell.c:701 src/subshell.c:727 src/tree.c:1205 +#: gnome/gcmd.c:108 gtkedit/editcmd.c:2235 src/cmd.c:256 src/file.c:1798 +#: src/file.c:2177 src/filegui.c:578 src/hotlist.c:1030 src/main.c:822 +#: src/screen.c:2065 src/subshell.c:701 src/subshell.c:727 src/tree.c:759 #: src/view.c:408 msgid "&Yes" msgstr "¿¹(&Y)" -#: gnome/gcmd.c:95 gtkedit/editcmd.c:2235 src/cmd.c:255 src/file.c:1725 -#: src/file.c:2119 src/filegui.c:495 src/hotlist.c:1029 src/main.c:815 -#: src/screen.c:2043 src/subshell.c:701 src/subshell.c:727 src/tree.c:1205 +#: gnome/gcmd.c:108 gtkedit/editcmd.c:2235 src/cmd.c:256 src/file.c:1798 +#: src/file.c:2177 src/filegui.c:577 src/hotlist.c:1030 src/main.c:822 +#: src/screen.c:2065 src/subshell.c:701 src/subshell.c:727 src/tree.c:759 #: src/view.c:408 msgid "&No" msgstr "¾Æ´Ï¿À(&N)" -#: gnome/gdesktop.c:313 gnome/gdesktop.c:1216 +#: gnome/gcmd.c:206 +msgid "Sort By" +msgstr "Á¤·Ä" + +#. we define this up here so we can pass it in to our callback +#: gnome/gcmd.c:209 +msgid "Ignore case sensitivity." +msgstr "´ë¼Ò¹®ÀÚ ¹«½Ã" + +#: gnome/gcmd.c:217 src/chmod.c:151 src/screen.c:442 +msgid "Name" +msgstr "À̸§" + +#: gnome/gcmd.c:224 +msgid "File Type" +msgstr "ÆÄÀÏ Á¾·ù" + +#: gnome/gcmd.c:230 src/screen.c:443 src/screen.c:446 +msgid "Size" +msgstr "Å©±â" + +#: gnome/gcmd.c:236 +msgid "Time Last Accessed" +msgstr "¸¶Áö¸· ¾×¼¼½º ½Ã°£" + +#: gnome/gcmd.c:242 +msgid "Time Last Modified" +msgstr "¸¶Áö¸· ¼öÁ¤ ½Ã°£" + +#: gnome/gcmd.c:248 +msgid "Time Last Changed" +msgstr "¸¶Áö¸· °íÃÄÁø ½Ã°£" + +#: gnome/gcmd.c:262 +msgid "Reverse the order." +msgstr "¼ø¼­ µÚÁý±â." + +#: gnome/gcmd.c:324 +msgid "Enter name." +msgstr "À̸§ ÀÔ·Â." + +#: gnome/gcmd.c:329 +msgid "Enter label for command:" +msgstr "¸í·É¾î ²¿¸®Ç¥ ÀÔ·Â:" + +#: gnome/gcmd.c:424 +msgid "Find all core files" +msgstr "¸ðµç core ÆÄÀÏ Ã£±â" + +#: gnome/gcmd.c:427 src/panelize.c:354 +msgid "Find rejects after patching" +msgstr "±â¿î ÈÄ °ÅºÎÆÄÀÏÀÌ »ý°å½À´Ï´Ù" + +#: gnome/gcmd.c:469 +msgid "Run Command" +msgstr "¸í·É ½ÇÇà" + +#. Frame 1 +#: gnome/gcmd.c:473 +msgid "Preset Commands" +msgstr "¸í·É ¹Ì¸® Á¶Àý" + +#: gnome/gcmd.c:490 +msgid "Add" +msgstr "Ãß°¡" + +#: gnome/gcmd.c:494 +msgid "Remove" +msgstr "»èÁ¦" + +#. Frame 2 +#: gnome/gcmd.c:502 +msgid "Run this Command" +msgstr "ÀÌ ¸í·É ½ÇÇà" + +#: gnome/gcmd.c:509 +msgid "Command: " +msgstr "¸í·É: " + +#: gnome/gcmd.c:553 +msgid "Set Filter" +msgstr "ÇÊÅÍ ¼³Á¤" + +#: gnome/gcmd.c:557 gnome/gcmd.c:598 gnome/gcmd.c:603 gnome/gcmd.c:607 +#: gnome/gscreen.c:2308 +msgid "Show all files" +msgstr "¸ðµç ÆÄÀÏ º¸¿©ÁÖ±â" + +#: gnome/gcmd.c:564 +msgid "." +msgstr "." + +#: gnome/gcmd.c:580 +msgid "" +"Enter a filter here for files in the panel view.\n" +"\n" +"For example:\n" +"*.gif will show just gif images" +msgstr "" +"ÆÐ³Î º¸±â¿¡¼­ º¸°íÀÚ ÇÏ´Â ÆÄÀÏÀÇ ÇÊÅ͸¦ ÀÔ·ÂÇϽÿÀ.\n" +"\n" +"¿¹¸¦ µé¸é:\n" +"*.gif´Â gif ±×¸²¸¸À» º¸¿©ÁÙ °ÍÀÔ´Ï´Ù" + +#: gnome/gcmd.c:582 +msgid "Enter a Regular Expression to filter files in the panel view." +msgstr "ÆÐ³Î º¸±â¿¡¼­ ÆÄÀÏ ÇÊÅ͸µÀ» À§ÇÑ Á¤±Ô Ç¥Çö½Ä ÀÔ·Â." + +#: gnome/gcmd.c:638 gnome/gpopup.c:47 +msgid " Open with..." +msgstr " Open with..." + +#: gnome/gcmd.c:639 gnome/gpopup.c:48 +msgid "Enter extra arguments:" +msgstr "extra ÀÎÀÚ ÀÔ·Â:" + +#: gnome/gdesktop.c:350 gnome/gdesktop.c:1387 msgid "Warning" msgstr "°æ°í" -#: gnome/gdesktop.c:314 +#: gnome/gdesktop.c:351 #, c-format msgid "Could not open %s; will not have initial desktop icons" msgstr "%s ¿­ ¼ö ¾ø½¿; Ãʱ⠵¥½ºÅ©Å¾ ¾ÆÀÌÄÜÀ» °¡Áú ¼ö ¾øÀ» °ÍÀÓ" -#: gnome/gdesktop.c:1182 +#: gnome/gdesktop.c:1353 msgid "Trashcan" -msgstr "" +msgstr "ÈÞÁöÅë" #. Create the link to the user's home directory so that he will have an icon -#: gnome/gdesktop.c:1212 +#: gnome/gdesktop.c:1383 msgid "Home directory" msgstr "Ȩ ÀÚ·á¹æ" -#: gnome/gdesktop.c:1217 +#: gnome/gdesktop.c:1388 #, c-format msgid "Could not symlink %s to %s; will not have initial desktop icons." msgstr "%s¸¦ %s·Î ½Éº¼¸¯¸µÅ© ¸¸µé ¼ö ¾ø½¿; Ãʱ⠵¥½ºÅ©Å¾ ¾ÆÀÌÄÜÀ» °¡Áú ¼ö ¾øÀ» °ÍÀÓ" -#: gnome/gdialogs.c:214 +#: gnome/gdialogs.c:324 msgid "Files Exist" msgstr "ÆÄÀÏ ÀÖÀ½" -#: gnome/gdialogs.c:225 +#: gnome/gdialogs.c:335 msgid "" "Some of the files you are trying to copy already exist in the destination " "folder." msgstr "" -"´ç½ÅÀÌ º¹»çÇϰíÀÚ ÇÏ´Â ÆÄÀϵé Áß ¸î°³´Â ÀÌ¹Ì ´ë»ó Æú´õ¿¡ Á¸ÀçÇϰí " -"ÀÖ½À´Ï´Ù." +"´ç½ÅÀÌ º¹»çÇϰíÀÚ ÇÏ´Â ÆÄÀϵé Áß ¸î°³´Â ÀÌ¹Ì ´ë»ó Æú´õ¿¡ Á¸ÀçÇϰí ÀÖ½À´Ï´Ù." -#: gnome/gdialogs.c:234 +#: gnome/gdialogs.c:344 msgid "Prompt me before overwriting any file." msgstr "ÆÄÀÏÀ» µ¤¾î¾²±âÀü¿¡ ¹°¾îº¸±â." -#: gnome/gdialogs.c:240 +#: gnome/gdialogs.c:351 msgid "Don't overwrite any files." msgstr "¾î¶² ÆÄÀϵµ °ãÃľµ ¼ö ¾ø½À´Ï´Ù." -#: gnome/gdialogs.c:249 +#: gnome/gdialogs.c:363 msgid "Overwrite:" msgstr "°ãÃľ²±â:" -#: gnome/gdialogs.c:255 +#: gnome/gdialogs.c:370 msgid "Older files." msgstr "¿À·¡µÈ ÆÄÀÏ." -#: gnome/gdialogs.c:259 +#: gnome/gdialogs.c:376 msgid "Files only if size differs." msgstr "Å©±â°¡ ´Ù¸¥ ÆÄÀϸ¸." -#: gnome/gdialogs.c:263 +#: gnome/gdialogs.c:382 msgid "All files." msgstr "¸ðµç ÆÄÀÏ." -#: gnome/gdialogs.c:387 +#: gnome/gdialogs.c:431 +msgid "File Exists" +msgstr "ÆÄÀÏ ÀÖÀ½" + +#: gnome/gdialogs.c:436 +#, c-format +msgid "The target file already exists: %s" +msgstr "´ë»ó ÆÄÀÏÀÌ ÀÌ¹Ì ÀÖ½À´Ï´Ù: %s" + +#: gnome/gdialogs.c:443 +msgid "Replace it?" +msgstr "¹Ù²Ü±î¿ä?" + +#: gnome/gdialogs.c:514 gtkedit/editwidget.c:1064 gtkedit/gtkedit.c:1315 +#: src/screen.c:2303 src/screen.c:2333 src/tree.c:1028 +msgid "Copy" +msgstr "º¹»ç" + +#: gnome/gdialogs.c:517 gtkedit/editwidget.c:1065 +msgid "Move" +msgstr "À̵¿" + +#: gnome/gdialogs.c:532 msgid "Destination" msgstr "´ë»ó" -#: gnome/gdialogs.c:391 +#: gnome/gdialogs.c:536 msgid "Find Destination Folder" msgstr "´ë»ó Æú´õ ã±â" -#: gnome/gdialogs.c:396 +#: gnome/gdialogs.c:541 msgid "Copy as a background process" msgstr "Background·Î º¹»ç" -#: gnome/gdialogs.c:416 +#: gnome/gdialogs.c:561 msgid "Advanced Options" msgstr "Advanced ¿É¼Ç" -#: gnome/gdialogs.c:420 +#: gnome/gdialogs.c:565 msgid "Preserve symlinks" msgstr "½Éº¼¸¯¸µÅ© º¸Á¸" -#: gnome/gdialogs.c:430 +#: gnome/gdialogs.c:575 msgid "Follow links." msgstr "¸µÅ© µû¸£±â." -#: gnome/gdialogs.c:437 +#: gnome/gdialogs.c:580 +msgid "" +"Selecting this will copy the files that symlinks point to instead of just " +"copying the link." +msgstr "" +"À̰ÍÀ» ¼±ÅÃÇÏ¸é ´ÜÁö ¸µÅ©¸¦ º¹»çÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ½Éº¼¸µ ¸µÅ©°¡ °¡¸®Å°´Â " +"ÆÄÀÏÀ» º¹»çÇÏ°Ô µË´Ï´Ù." + +#: gnome/gdialogs.c:584 msgid "Preserve file attributes." msgstr "ÆÄÀÏ ¼Ó¼º º¸Á¸" -#: gnome/gdialogs.c:445 +#: gnome/gdialogs.c:588 +msgid "Preserves the permissions and the UID/GID if possible" +msgstr "°¡´ÉÇÏ¸é ÆÛ¹Ì¼Ç ¹× UID/GID¸¦ º¸Á¸" + +#: gnome/gdialogs.c:593 msgid "Recursively copy subdirectories." msgstr "ÇÏÀ§µð·ºÅ丮±îÁö º¹»ç" -#: gnome/gdialogs.c:581 +#: gnome/gdialogs.c:597 +msgid "If set, this will copy the directories recursively" +msgstr "À̰ÍÀÌ ¼³Á¤µÇ¸é ÀÚ·á¹æÀ» ¹ØÀÇ ÀÚ·á¹æ±îÁö º¹»çÇÕ´Ï´Ù" + +#: gnome/gdialogs.c:751 msgid "File " msgstr "ÆÄÀÏ " -#: gnome/gdialogs.c:585 +#: gnome/gdialogs.c:755 msgid " is " msgstr " is " -#: gnome/gdialogs.c:588 +#: gnome/gdialogs.c:758 msgid " Done." msgstr " Done." -#: gnome/gdnd.c:23 +#: gnome/gdnd.c:24 msgid "Move here" -msgstr "" +msgstr "¿©±â·Î À̵¿" -#: gnome/gdnd.c:24 +#: gnome/gdnd.c:25 msgid "Copy here" -msgstr "" +msgstr "¿©±â·Î º¹»ç" -#: gnome/gdnd.c:25 +#: gnome/gdnd.c:26 msgid "Link here" -msgstr "" +msgstr "¿©±â·Î ¿¬°á" -#: gnome/gdnd.c:27 +#: gnome/gdnd.c:28 msgid "Cancel drag" -msgstr "" +msgstr "µå·¡±× Ãë¼Ò" #. FIXME: this error message sucks -#: gnome/gdnd.c:205 +#: gnome/gdnd.c:207 #, c-format msgid "" "Could not stat %s\n" @@ -196,7 +349,7 @@ "%s ÆÄÀÏÁ¤º¸¸¦ ¾òÀ» ¼ö ¾ø¾î¿ä\n" "%s" -#: gnome/gicon.c:83 gnome/gtools.c:48 +#: gnome/gicon.c:83 gnome/gtools.c:50 msgid "Error" msgstr "¿¡·¯" @@ -204,278 +357,283 @@ msgid "Default set of icons not found, check your installation" msgstr "±âº» ¾ÆÀÌÄÜ ¼¼Æ®¸¦ ãÀ» ¼ö ¾ø½¿. ÀνºÆ²ÀÌ Á¦´ë·Î µÇ¾ú´Â Áö È®ÀÎÇϽÿÀ" -#: gnome/glayout.c:268 -msgid "_New window" -msgstr "»õ â(_N)" +#: gnome/glayout.c:273 +msgid "Enter command to run" +msgstr "½ÇÇàÇÒ ¸í·É ÀÔ·Â" -#: gnome/glayout.c:268 +#: gnome/glayout.c:283 +msgid "_Terminal" +msgstr "Å͹̳Î(_T)" + +#: gnome/glayout.c:283 +msgid "Launch a new terminal in the current directory" +msgstr "ÇöÀç ÀÚ·á¹æ¿¡¼­ »õ Å͹̳Π¿­±â" + +#. If this ever changes, make sure you update create_new_menu accordingly. +#: gnome/glayout.c:285 +msgid "_Directory..." +msgstr "ÀÚ·á¹æ(_D)..." + +#: gnome/glayout.c:285 +msgid "Creates a new directory" +msgstr "»õ·Î¿î ÀÚ·á¹æÀ» »ý¼º" + +#: gnome/glayout.c:291 +msgid "New _Window" +msgstr "»õ â(_W)" + +#: gnome/glayout.c:291 msgid "Opens a new window" msgstr "»õ âÀ» ¿­À½" -#: gnome/glayout.c:269 -msgid "New _Terminal" -msgstr "»õ ´Ü¸»Ã¢(_T)" - -#: gnome/glayout.c:269 -msgid "Opens a terminal" -msgstr "´Ü¸»Ã¢À» Çϳª¸¦ ¶ç¿î´Ù" +#. We want to make a new menu entry here... +#. For example: +#. New-> +#. Command Prompt +#. Gimp Image +#. Gnumeric Spreadsheet +#. Text Document +#. etc... +#: gnome/glayout.c:301 +msgid "_New" +msgstr "»õ °Í(_N)" + +#: gnome/glayout.c:303 +msgid "_Open" +msgstr "¿­±â(_O)" + +#: gnome/glayout.c:303 +msgid "Opens the selected files" +msgstr "¼±ÅÃµÈ ÆÄÀÏ ¿­±â" -#: gnome/glayout.c:271 +#. { GNOME_APP_UI_ITEM, N_("Open _FTP site"), N_("Opens an FTP site"), ftplink_cmd }, +#: gnome/glayout.c:305 msgid "_Copy..." msgstr "º¹»ç(_C)..." -#: gnome/glayout.c:271 +#: gnome/glayout.c:305 msgid "Copy files" msgstr "ÆÄÀÏ º¹»ç" -#: gnome/glayout.c:272 -msgid "Rename/_Move..." -msgstr "¹Ù²Ù±â/À̵¿(_M)..." - -#: gnome/glayout.c:272 -msgid "Rename or move files" -msgstr "ÆÄÀÏ À̸§À» ¹Ù²Ù°Å³ª À̵¿" - -#: gnome/glayout.c:273 -msgid "New di_rectory..." -msgstr "»õ ÀÚ·á¹æ(_r)..." - -#: gnome/glayout.c:273 -msgid "Creates a new folder" -msgstr "»õ·Î¿î ÀÚ·á¹æÀ» »ý¼º" - -#: gnome/glayout.c:274 +#: gnome/glayout.c:306 msgid "_Delete..." msgstr "Áö¿ì±â(_D)..." -#: gnome/glayout.c:274 +#: gnome/glayout.c:306 msgid "Delete files from disk" msgstr "ÀúÀåÆÇ¿¡¼­ ÆÄÀÏÀ» Áö¿ì±â" -#: gnome/glayout.c:276 -msgid "_View" -msgstr "º¸±â(_V)" - -#: gnome/glayout.c:276 -msgid "View file" -msgstr "ÆÄÀÏ º¸±â" - -#: gnome/glayout.c:277 -msgid "View r_aw" -msgstr "ÀÖ´Â ±×´ë·Î º¸±â(_a)" - -#: gnome/glayout.c:277 -msgid "View the file without further processing" -msgstr "ÆÄÀÏÀ» ´Ù¸¥ Á¶ÀÛ¾øÀÌ ÀÖ´Â ±×´ë·Î º¸¿©ÁÜ" - -#: gnome/glayout.c:279 -msgid "_Select group by pattern..." -msgstr "ÆÐÅÏÀ» »ç¿ëÇÑ Áý´Ü ¼±ÅÃ(_S)..." - -#: gnome/glayout.c:279 -msgid "Select a group of files" -msgstr "ÆÄÀÏÀ» ¹­¾î¼­ ¼±ÅÃ" - -#: gnome/glayout.c:280 -msgid "_Unselect group by pattern..." -msgstr "ÆÐÅÏÀ» »ç¿ëÇÑ Áý´Ü ¼±ÅÃ ÇØÁ¦(_U)..." - -#: gnome/glayout.c:280 -msgid "Un-selects a group of marked files" -msgstr "¼±ÅÃµÈ ÆÄÀÏÀÇ ¼±ÅÃ ÇØÁ¦" - -#: gnome/glayout.c:281 -msgid "R_everse selection" -msgstr "ÆÄÀÏ ¼±Åà ¹ÝÀü(_e)" +#: gnome/glayout.c:307 +msgid "_Move..." +msgstr "À̵¿(_M)..." -#: gnome/glayout.c:281 -msgid "Reverses the list of tagged files" -msgstr "¼±ÅÃµÈ ÆÄÀϰú ¼±ÅõÇÁö ¾ÊÀº ÆÄÀÏÀ» ¹ÝÀü½ÃÅ´" +#: gnome/glayout.c:307 +msgid "Rename or move files" +msgstr "ÆÄÀÏ À̸§À» ¹Ù²Ù°Å³ª À̵¿" -#: gnome/glayout.c:283 +#: gnome/glayout.c:309 msgid "C_lose" msgstr "´Ý±â(_l)" -#: gnome/glayout.c:283 +#: gnome/glayout.c:309 msgid "Close this panel" msgstr "ÇöÀç ÆÐ³Î ´Ý±â" -#: gnome/glayout.c:285 -msgid "E_xit" -msgstr "Á¾·á(_x)" +#: gnome/glayout.c:320 +msgid "_Select All" +msgstr "¸ðµÎ ¼±ÅÃ(_S)" -#: gnome/glayout.c:285 -msgid "Exit program" -msgstr "Ç®±×¸² Á¾·á" +#: gnome/glayout.c:320 +msgid "Select all files in the current Panel" +msgstr "ÇöÀç ÆÐ³ÎÀÇ ¸ðµç ÆÄÀÏ ¼±ÅÃ" + +#: gnome/glayout.c:321 +msgid "_Select Files..." +msgstr "ÆÄÀÏ ¼±ÅÃ(_S)..." + +#: gnome/glayout.c:321 +msgid "Select a group of files" +msgstr "ÆÄÀÏÀ» ¹­¾î¼­ ¼±ÅÃ" + +#: gnome/glayout.c:322 +msgid "_Invert Selection" +msgstr "¼±Åà ¹ÝÀü(_I)" -#: gnome/glayout.c:292 -msgid "_Display mode..." -msgstr "Ãâ·Â ¸ðµå(_D)..." - -#: gnome/glayout.c:292 -msgid "Set the display mode for the panel" -msgstr "ÆÐ³ÎÀÇ Ãâ·Â ¸ðµå¸¦ ¼³Á¤" - -#: gnome/glayout.c:293 -msgid "_Sort order..." -msgstr "Á¤·Ä ¼ø¼­(_S)..." - -#: gnome/glayout.c:293 -msgid "Changes the sort order of the files" -msgstr "ÆÄÀÏ Á¤·Ä ¼ø¼­¸¦ ¹Ù²Þ" - -#: gnome/glayout.c:294 -msgid "_Filter..." -msgstr "°Å¸£°³(_F)..." - -#: gnome/glayout.c:294 -msgid "Set a filter for the files" -msgstr "ÆÄÀÏ¿¡ ´ëÇÑ °Å¸£°³ ¼³Á¤" - -#: gnome/glayout.c:295 -msgid "_Rescan" -msgstr "Rescan(_R)" +#: gnome/glayout.c:322 +msgid "Reverses the list of tagged files" +msgstr "¼±ÅÃµÈ ÆÄÀϰú ¼±ÅõÇÁö ¾ÊÀº ÆÄÀÏÀ» ¹ÝÀü½ÃÅ´" -#: gnome/glayout.c:295 +#: gnome/glayout.c:324 +msgid "_Rescan Directory" +msgstr "ÀÚ·á¹æ ´Ù½Ã Àбâ(_R)" + +#: gnome/glayout.c:324 msgid "Rescan the directory contents" msgstr "ÀÚ·á¹æ ´Ù½Ã Àбâ" -#: gnome/glayout.c:298 -msgid "_Network link..." -msgstr "³×Æ®¿öÅ© ¿¬°á(_N)..." - -#: gnome/glayout.c:298 -msgid "Connect to a remote machine" -msgstr "¿ø°Ý È£½ºÆ®·Î ¿¬°á" - -#: gnome/glayout.c:299 -msgid "FT_P link..." -msgstr "FTP ¿¬°á(_P)..." - -#: gnome/glayout.c:299 -msgid "Connect to a remote machine with FTP" -msgstr "¿ø°Ý FTP È£½ºÆ®·Î ¿¬°á" +#: gnome/glayout.c:331 +msgid "Icon View" +msgstr "¾ÆÀÌÄÜ º¸±â" + +#: gnome/glayout.c:332 +msgid "Partial View" +msgstr "ºÎºÐ º¸±â" + +#: gnome/glayout.c:333 +msgid "Full View" +msgstr "Àüü º¸±â" + +#: gnome/glayout.c:334 +msgid "Custom View" +msgstr "»ç¿ëÀÚ º¸±â" + +#: gnome/glayout.c:340 +msgid "_Sort By..." +msgstr "Á¤·Ä(_S)..." -#: gnome/glayout.c:305 -msgid "_Confirmation..." -msgstr "È®ÀÎ(_C)..." - -#: gnome/glayout.c:305 +#: gnome/glayout.c:340 msgid "Confirmation settings" msgstr "È®ÀÎ ³»¿ë ¼³Á¤" -#: gnome/glayout.c:306 -msgid "_Options..." -msgstr "¼±ÅÃÇ׸ñ(_O)..." +#: gnome/glayout.c:341 +msgid "_Filter View..." +msgstr "ÇÊÅÍ º¸±â(_F)..." -#: gnome/glayout.c:306 +#: gnome/glayout.c:341 msgid "Global option settings" msgstr "Àüü ¼±ÅÃÇ׸ñ ¼³Á¤" -#: gnome/glayout.c:309 -msgid "_Virtual FS..." -msgstr "°¡»ó ÆÄÀÏ Ã¼°è(_V)..." - -#: gnome/glayout.c:309 -msgid "Virtual File System settings" -msgstr "°¡»ó ÆÄÀÏ Ã¼°è ¼³Á¤" +#: gnome/glayout.c:348 +msgid "_Find File..." +msgstr "ÆÄÀÏ Ã£±â(_F)" -#: gnome/glayout.c:312 -msgid "_Save setup" -msgstr "ȯ°æ¼³Á¤ ÀúÀå(_S)" - -#: gnome/glayout.c:317 -msgid "_Find..." -msgstr "ã±â(_F)..." - -#: gnome/glayout.c:317 +#: gnome/glayout.c:348 msgid "Locate files on disk" msgstr "µð½ºÅ©¿¡¼­ÀÇ ÆÄÀÏ À§Ä¡" -#: gnome/glayout.c:318 -msgid "_Hotlist..." -msgstr "´ÜÃà¸ñ·Ï(_H)..." - -#: gnome/glayout.c:318 -msgid "List of favorite sites" -msgstr "ÁÁ¾ÆÇÏ´Â »çÀÌÆ® ¸ñ·Ï" - -#: gnome/glayout.c:319 +#: gnome/glayout.c:351 msgid "_Compare panels..." msgstr "ÆÐ³Î ºñ±³(_C)..." -#: gnome/glayout.c:319 -msgid "Compare panel contents" -msgstr "ÆÐ³Î ³»¿ë ºñ±³" +#: gnome/glayout.c:351 +msgid "Compare two panel contents" +msgstr "µÎ ÆÐ³Î ³»¿ë ºñ±³" -#: gnome/glayout.c:320 -msgid "_External panelize..." -msgstr "¿ÜºÎ¸í·É ÆÐ³ÎÈ­(_E)..." +#: gnome/glayout.c:352 +msgid "_Run Command..." +msgstr "¸í·É ½ÇÇà(_R)" -#: gnome/glayout.c:322 +#: gnome/glayout.c:352 +msgid "Runs a command" +msgstr "¸í·É ½ÇÇà" + +#: gnome/glayout.c:354 +msgid "_Run Command in panel..." +msgstr "ÆÐ³Î¿¡¼­ ¸í·É ½ÇÇà(_R)..." + +#: gnome/glayout.c:354 +msgid "Run a command and put the results in a panel" +msgstr "¸í·ÉÀ» ½ÇÇàÇÏ¿© ±× °á°ú¸¦ ÆÐ³Î¿¡ Ç¥½Ã" + +#: gnome/glayout.c:357 msgid "_Active VFS list..." msgstr "Ȱ¼ºµÈ VFS ¸ñ·Ï(_A)..." -#: gnome/glayout.c:322 +#: gnome/glayout.c:357 msgid "List of active virtual file systems" msgstr "Ȱ¼ºµÈ °¡»ó ÆÄÀÏ Ã¼°è ¸ñ·Ï" -#: gnome/glayout.c:325 -msgid "_Undelete files (ext2fs only)..." -msgstr "ÆÄÀÏ µÇ»ì¸² (ext2fs¸¸ °¡´É)(_U)..." - -#: gnome/glayout.c:325 -msgid "Recover deleted files" -msgstr "Áö¿öÁø ÆÄÀÏÀ» º¹±¸" - -#: gnome/glayout.c:328 +#: gnome/glayout.c:364 msgid "_Background jobs..." msgstr "Background jobs(_B)..." -#: gnome/glayout.c:328 +#: gnome/glayout.c:364 msgid "List of background operations" msgstr "background operations ¸ñ·Ï" -#: gnome/glayout.c:335 -msgid "_Arrange icons" -msgstr "¾ÆÀÌÄÜ Á¤·Ä(_A)" - -#: gnome/glayout.c:335 -msgid "Arranges the icons on the desktop" -msgstr "µ¥½ºÅ© žÀÇ ¾ÆÀÌÄܵéÀ» Á¤·Ä" - -#: gnome/glayout.c:342 +#. GNOMEUIINFO_HELP ("midnight-commander"), +#: gnome/glayout.c:372 msgid "_About" msgstr "ÀÌ Ç®±×¸²Àº(_A)" -#: gnome/glayout.c:342 +#: gnome/glayout.c:372 msgid "Information on this program" msgstr "ÀÌ Ç®±×¸² Á¤º¸" -#: gnome/glayout.c:349 +#: gnome/glayout.c:378 gnome/gview.c:323 msgid "_File" msgstr "ÆÄÀÏ(_F)" -#: gnome/glayout.c:350 -msgid "_Window" -msgstr "â(_W)" +#: gnome/glayout.c:379 +msgid "_Edit" +msgstr "ÆíÁý(_E)" + +#: gnome/glayout.c:380 +msgid "_Layout" +msgstr "¹èÄ¡(_L)" -#: gnome/glayout.c:351 +#: gnome/glayout.c:381 msgid "_Commands" msgstr "¸í·É(_C)" -#: gnome/glayout.c:352 -msgid "_Options" -msgstr "¼±ÅÃÇ׸ñ(_O)" - -#: gnome/glayout.c:353 -msgid "_Desktop" -msgstr "Ź»ó(_D)" - -#: gnome/glayout.c:354 +#: gnome/glayout.c:382 msgid "_Help" msgstr "µµ¿ò¸»(_H)" +#: gnome/glayout.c:484 +msgid "File/New/Directory..." +msgstr "ÆÄÀÏ/»õ °Í/ÀÚ·á¹æ..." + +#: gnome/gpopup.c:199 gnome/gpopup.c:200 +msgid "Properties" +msgstr "¼Ó¼º" + +#: gnome/gpopup.c:202 gnome/gpopup.c:203 +msgid "Open" +msgstr "¿­±â" + +#: gnome/gpopup.c:204 +msgid "Open with" +msgstr "Open with" + +#: gnome/gpopup.c:205 src/screen.c:2301 src/screen.c:2331 +msgid "View" +msgstr "º¸±â" + +#: gnome/gpopup.c:206 +msgid "View unfiltered" +msgstr "ÇÊÅ;øÀÌ º¸±â" + +#: gnome/gpopup.c:207 gtkedit/gtkedit.c:1363 src/screen.c:2302 +#: src/screen.c:2332 src/view.c:1972 +msgid "Edit" +msgstr "ÆíÁý" + +#: gnome/gpopup.c:209 +msgid "Link..." +msgstr "¸µÅ©..." + +#: gnome/gpopup.c:210 +msgid "Symlink..." +msgstr "½Éº¼¸¯¸µÅ©..." + +#: gnome/gpopup.c:211 +msgid "Edit symlink..." +msgstr "½Éº¼¸¯¸µÅ© ¼öÁ¤..." + +#: gnome/gpopup.c:218 gnome/gpopup.c:229 +msgid "Move/rename..." +msgstr "À̵¿/À̸§¹Ù²Ù±â..." + +#: gnome/gpopup.c:219 gnome/gpopup.c:230 +msgid "Copy..." +msgstr "º¹»ç..." + +#: gnome/gpopup.c:220 gnome/gpopup.c:232 gtkedit/editwidget.c:1067 +#: src/screen.c:2306 src/screen.c:2336 +msgid "Delete" +msgstr "Áö¿ì±â" + #: gnome/gprop.c:58 gnome/gprop.c:75 msgid "Filename" msgstr "ÆÄÀϸí" @@ -527,7 +685,7 @@ msgstr "»ç¿ëÀÚ" #. Group -#: gnome/gprop.c:280 gnome/gprop.c:405 src/screen.c:435 +#: gnome/gprop.c:280 gnome/gprop.c:405 src/screen.c:454 msgid "Group" msgstr "Áý´Ü" @@ -553,7 +711,7 @@ msgstr "" #. Owner -#: gnome/gprop.c:390 src/screen.c:434 +#: gnome/gprop.c:390 src/screen.c:453 msgid "Owner" msgstr "¼ÒÀ¯ÀÚ" @@ -573,162 +731,104 @@ msgid "Select icon" msgstr "¾ÆÀÌÄÜ ¼±ÅÃ" -#: gnome/gpopup.c:48 -msgid " Open with..." -msgstr " Open with..." - -#: gnome/gpopup.c:49 -msgid "Enter extra arguments:" -msgstr "extra ÀÎÀÚ ÀÔ·Â:" - -#: gnome/gpopup.c:217 gnome/gpopup.c:218 -msgid "Properties" -msgstr "¼Ó¼º" - -#: gnome/gpopup.c:220 gnome/gpopup.c:221 -msgid "Open" -msgstr "¿­±â" - -#: gnome/gpopup.c:222 -msgid "Open with" -msgstr "Open with" - -#: gnome/gpopup.c:223 src/screen.c:2279 src/screen.c:2309 -msgid "View" -msgstr "º¸±â" - -#: gnome/gpopup.c:224 -msgid "View unfiltered" -msgstr "°Å¸£°³¾øÀÌ º¸±â" - -#: gnome/gpopup.c:225 gtkedit/gtkedit.c:1363 src/screen.c:2280 -#: src/screen.c:2310 src/view.c:1972 -msgid "Edit" -msgstr "ÆíÁý" - -#: gnome/gpopup.c:227 -msgid "Link..." -msgstr "¸µÅ©..." - -#: gnome/gpopup.c:228 -msgid "Symlink..." -msgstr "½Éº¼¸¯¸µÅ©..." - -#: gnome/gpopup.c:229 -msgid "Edit symlink..." -msgstr "½Éº¼¸¯¸µÅ© ¼öÁ¤..." - -#: gnome/gpopup.c:236 gnome/gpopup.c:246 -msgid "Move/rename..." -msgstr "À̵¿/À̸§¹Ù²Ù±â..." - -#: gnome/gpopup.c:237 gnome/gpopup.c:247 -msgid "Copy..." -msgstr "º¹»ç..." - -#: gnome/gpopup.c:238 gnome/gpopup.c:248 gtkedit/editwidget.c:1067 -#: src/screen.c:2284 src/screen.c:2314 -msgid "Delete" -msgstr "Áö¿ì±â" - -#: gnome/gscreen.c:1331 +#: gnome/gscreen.c:1458 msgid "All files" msgstr "¸ðµç ÆÄÀÏ" -#: gnome/gscreen.c:1333 +#: gnome/gscreen.c:1460 msgid "Archives and compressed files" msgstr "Archives¿Í ¾ÐÃà ÆÄÀÏ" -#: gnome/gscreen.c:1335 +#: gnome/gscreen.c:1462 msgid "RPM/DEB files" msgstr "RPM/DEB ÆÄÀÏ" -#: gnome/gscreen.c:1337 +#: gnome/gscreen.c:1464 msgid "Text/Document files" msgstr "Text/Document ÆÄÀÏ" -#: gnome/gscreen.c:1339 +#: gnome/gscreen.c:1466 msgid "HTML and SGML files" msgstr "HTML°ú SGML ÆÄÀÏ" -#: gnome/gscreen.c:1341 +#: gnome/gscreen.c:1468 msgid "Postscript and PDF files" msgstr "Postscript¿Í PDF ÆÄÀÏ" -#: gnome/gscreen.c:1343 +#: gnome/gscreen.c:1470 msgid "Spreadsheet files" msgstr "¼ÀÆÇ ÆÄÀÏ" -#: gnome/gscreen.c:1345 +#: gnome/gscreen.c:1472 msgid "Image files" msgstr "¿µ»ó ÆÄÀÏ" -#: gnome/gscreen.c:1348 +#: gnome/gscreen.c:1475 msgid "Video/animation files" msgstr "µ¿¿µ»ó/¿òÁ÷²Ã ÆÄÀÏ" -#: gnome/gscreen.c:1350 +#: gnome/gscreen.c:1477 msgid "Audio files" msgstr "µé¸² ÆÄÀÏ" -#: gnome/gscreen.c:1352 +#: gnome/gscreen.c:1479 msgid "C program files" msgstr "C Ç®±×¸² ÆÄÀÏ" -#: gnome/gscreen.c:1354 +#: gnome/gscreen.c:1481 msgid "C++ program files" msgstr "C++ Ç®±×¸² ÆÄÀÏ" -#: gnome/gscreen.c:1356 +#: gnome/gscreen.c:1483 msgid "Objective-C program files" msgstr "Objective-C Ç®±×¸² ÆÄÀÏ" -#: gnome/gscreen.c:1358 +#: gnome/gscreen.c:1485 msgid "Scheme program files" msgstr "½ºÅ´(scheme) Ç®±×¸² ÆÄÀÏ" -#: gnome/gscreen.c:1360 +#: gnome/gscreen.c:1487 msgid "Assembler program files" msgstr "Â¥¸ÂÃß°³ Ç®±×¸² ÆÄÀÏ" -#: gnome/gscreen.c:1362 +#: gnome/gscreen.c:1489 msgid "Misc. program files" msgstr "±âŸ Ç®±×¸² ÆÄÀÏ" -#: gnome/gscreen.c:1364 +#: gnome/gscreen.c:1491 msgid "Font files" msgstr "±ÛÀÚü ÆÄÀÏ" -#: gnome/gscreen.c:1491 +#: gnome/gscreen.c:1618 #, c-format msgid "Search: %s" msgstr "ã±â: %s" -#: gnome/gscreen.c:1500 +#: gnome/gscreen.c:1628 #, c-format msgid "%s bytes in %d file" msgstr "%s bytes in %d file" -#: gnome/gscreen.c:1500 +#: gnome/gscreen.c:1628 #, c-format msgid "%s bytes in %d files" msgstr "%s bytes in %d files" -#: gnome/gscreen.c:1523 src/screen.c:672 +#: gnome/gscreen.c:1654 src/screen.c:691 msgid "" msgstr "" -#: gnome/gscreen.c:1574 +#: gnome/gscreen.c:1708 msgid "Filter" -msgstr "°Å¸£°³" +msgstr "ÇÊÅÍ" -#: gnome/gscreen.c:2083 +#: gnome/gscreen.c:2263 msgid "Location:" msgstr "À§Ä¡:" -#: gnome/gtools.c:86 src/boxes.c:141 src/boxes.c:281 src/boxes.c:381 -#: src/boxes.c:469 src/boxes.c:649 src/boxes.c:733 src/boxes.c:788 -#: src/boxes.c:899 src/filegui.c:724 src/find.c:154 src/layout.c:370 +#: gnome/gtools.c:103 src/boxes.c:142 src/boxes.c:282 src/boxes.c:382 +#: src/boxes.c:470 src/boxes.c:650 src/boxes.c:732 src/boxes.c:787 +#: src/boxes.c:898 src/filegui.c:812 src/find.c:156 src/layout.c:372 #: src/option.c:144 src/wtools.c:292 src/wtools.c:564 msgid "&Ok" msgstr "È®ÀÎ(&O)" @@ -749,132 +849,107 @@ msgstr "%s ¹ÙÀÌÆ®" #: gnome/gview.c:289 -msgid "Goto line" -msgstr "ÁÙã±â" +msgid "_Goto line" +msgstr "¶óÀΠã¾Æ°¡±â(_G)" #: gnome/gview.c:290 msgid "Jump to a specified line number" msgstr "ÁÖ¾îÁø ÁÙ·Î Á¡ÇÁ" #: gnome/gview.c:292 -msgid "Monitor file" -msgstr "ÆÄÀÏ °¨½Ã" +msgid "_Monitor file" +msgstr "ÆÄÀÏ °¨½Ã(_M)" #: gnome/gview.c:292 msgid "Monitor file growing" msgstr "ÆÄÀÏÀÌ Ä¿Áö´ÂÁö °¨½Ã" -#: gnome/gview.c:293 -msgid "Close" -msgstr "´Ý±â" - -#: gnome/gview.c:294 -msgid "Close the viewer" -msgstr "ºä¾î ´Ý±â" - -#: gnome/gview.c:300 gnome/gview.c:330 gtkedit/editwidget.c:1066 -#: src/view.c:1976 -msgid "Search" -msgstr "ã±â" - -#: gnome/gview.c:301 -msgid "String search" -msgstr "¹®ÀÚ¿­ ã±â" - -#: gnome/gview.c:303 +#: gnome/gview.c:299 msgid "Regexp search" msgstr "Á¤±ÔÇ¥Çö½Ä ã±â" -#: gnome/gview.c:304 +#: gnome/gview.c:300 msgid "Regular expression search" msgstr "Á¤±ÔÇ¥Çö½Ä ã±â" -#: gnome/gview.c:307 -msgid "Search again..." -msgstr "´Ù½Ã ã±â..." - -#: gnome/gview.c:308 -msgid "Continue searching" -msgstr "ã±â °è¼Ó" +#: gnome/gview.c:309 +msgid "_Wrap" +msgstr "_Wrap" -#: gnome/gview.c:315 src/view.c:1973 -msgid "Wrap" -msgstr "Wrap" - -#: gnome/gview.c:315 +#: gnome/gview.c:309 msgid "Wrap the text" msgstr "Wrap the text" -#: gnome/gview.c:321 -msgid "Formatted" -msgstr "Formatted" - -#: gnome/gview.c:323 src/view.c:1966 -msgid "Hex" -msgstr "½ÊÀ°Áø" - -#: gnome/gview.c:329 gtkedit/gtkedit.c:1362 src/filegui.c:361 -msgid "File" -msgstr "ÆÄÀÏ" +#: gnome/gview.c:315 +msgid "_Formatted" +msgstr "_Formatted" -#: gnome/gview.c:331 src/achown.c:380 -msgid "Mode" -msgstr "Mode" +#: gnome/gview.c:317 +msgid "_Hex" +msgstr "½ÊÀ°Áø(_H)" + +#: gnome/gview.c:324 +msgid "_Search" +msgstr "ã±â(_S)" + +#: gnome/gview.c:325 +msgid "_Mode" +msgstr "¸ðµå(_M)" -#: gnome/gwidget.c:92 +#: gnome/gwidget.c:90 msgid "ok" msgstr "È®ÀÎ" -#: gnome/gwidget.c:94 +#: gnome/gwidget.c:92 msgid "cancel" msgstr "Ãë¼Ò" -#: gnome/gwidget.c:96 +#: gnome/gwidget.c:94 msgid "help" msgstr "µµ¿ò¸»" -#: gnome/gwidget.c:98 +#: gnome/gwidget.c:96 msgid "yes" msgstr "¿¹" -#: gnome/gwidget.c:100 +#: gnome/gwidget.c:98 msgid "no" msgstr "¾Æ´Ï¿À" -#: gnome/gwidget.c:102 +#: gnome/gwidget.c:100 msgid "exit" msgstr "Á¾·á" -#: gnome/gwidget.c:104 +#: gnome/gwidget.c:102 msgid "abort" msgstr "ÁßÁö" #. The file-name is printed after the ':' -#: gtkedit/edit.c:127 gtkedit/edit.c:222 gtkedit/edit.c:229 gtkedit/edit.c:236 -#: gtkedit/edit.c:243 gtkedit/edit.c:249 gtkedit/edit.c:306 gtkedit/edit.c:342 +#: gtkedit/edit.c:129 gtkedit/edit.c:224 gtkedit/edit.c:231 gtkedit/edit.c:238 +#: gtkedit/edit.c:245 gtkedit/edit.c:251 gtkedit/edit.c:308 gtkedit/edit.c:344 #: gtkedit/editcmd.c:1932 gtkedit/editwidget.c:947 src/dir.c:378 -#: src/screen.c:2299 src/tree.c:1145 src/tree.c:1151 src/wtools.c:225 +#: src/screen.c:2321 src/tree.c:694 src/tree.c:700 src/wtools.c:225 #: vfs/fish.c:226 msgid " Error " msgstr " ¿¡·¯ " -#: gtkedit/edit.c:127 gtkedit/edit.c:229 +#: gtkedit/edit.c:129 gtkedit/edit.c:231 msgid " Failed trying to open file for reading: " msgstr " ÆÄÀÏ ¿­±â ½ÇÆÐ: " -#: gtkedit/edit.c:236 +#: gtkedit/edit.c:238 msgid " Cannot get size/permissions info on file: " msgstr " ÆÄÀÏ Å©±â/Çã¿ë Á¤º¸ ¾ò±â ½ÇÆÐ: " -#: gtkedit/edit.c:243 +#: gtkedit/edit.c:245 msgid " Not an ordinary file: " msgstr " ÀÏ¹Ý ÆÄÀÏ ¾Æ´Ô: " -#: gtkedit/edit.c:249 +#: gtkedit/edit.c:251 msgid " File is too large: " msgstr " ÆÄÀÏ Å©±â°¡ ³Ê¹« Å­: " -#: gtkedit/edit.c:250 +#: gtkedit/edit.c:252 msgid "" " \n" " Increase edit.h:MAXBUF and recompile the editor. " @@ -882,7 +957,7 @@ " \n" " edit.hÀÇ MAXBUF °ªÀ» Ű¿î ÈÄ ´Ù½Ã ÄÄÆÄÀÏÇϽʽÿÀ. " -#: gtkedit/edit.c:306 gtkedit/edit.c:342 +#: gtkedit/edit.c:308 gtkedit/edit.c:344 msgid " Error allocating memory " msgstr " ±â¾ïÀåÄ¡ ¹èÁ¤ ¿¡·¯ " @@ -892,8 +967,8 @@ #. Warning message with a query to continue or cancel the operation #: gtkedit/editcmd.c:482 gtkedit/editcmd.c:801 gtkedit/editcmd.c:831 -#: gtkedit/editcmd.c:978 gtkedit/editcmd.c:1075 src/ext.c:297 src/file.c:677 -#: src/help.c:321 src/main.c:660 src/screen.c:2057 src/subshell.c:700 +#: gtkedit/editcmd.c:978 gtkedit/editcmd.c:1075 src/ext.c:297 src/file.c:613 +#: src/help.c:321 src/main.c:667 src/screen.c:2079 src/subshell.c:700 #: src/subshell.c:726 src/utilunix.c:384 src/utilunix.c:388 src/utilunix.c:454 #: vfs/mcfs.c:171 msgid " Warning " @@ -917,14 +992,14 @@ msgid " Save as " msgstr " »õÀ̸§À¸·Î ÀúÀå " -#: gtkedit/editcmd.c:501 gtkedit/editcmd.c:2591 +#: gtkedit/editcmd.c:501 gtkedit/editcmd.c:2594 msgid " Error trying to save file. " msgstr " ÆÄÀÏ ÀúÀå ¿¡·¯. " #. This heads the delete macro error dialog box #: gtkedit/editcmd.c:617 gtkedit/editcmd.c:625 gtkedit/editcmd.c:650 msgid " Delete macro " -msgstr " ¸ðµë Áö¿ì±â " +msgstr " ¸ÅÅ©·Î Áö¿ì±â " #. 'Open' = load temp file #: gtkedit/editcmd.c:619 @@ -934,7 +1009,7 @@ #. 'Open' = load temp file #: gtkedit/editcmd.c:627 gtkedit/editcmd.c:688 gtkedit/editcmd.c:756 msgid " Error trying to open macro file " -msgstr " ¸ðµë ÆÄÀÏ ¿­±â ¿¡·¯ " +msgstr " ¸ÅÅ©·Î ÆÄÀÏ ¿­±â ¿¡·¯ " #: gtkedit/editcmd.c:632 gtkedit/editcmd.c:640 gtkedit/editcmd.c:676 #: gtkedit/editcmd.c:731 @@ -944,31 +1019,31 @@ #: gtkedit/editcmd.c:651 msgid " Error trying to overwrite macro file " -msgstr " ¸ðµë ÆÄÀÏ °ãÃľ²±â ¿¡·¯ " +msgstr " ¸ÅÅ©·Î ÆÄÀÏ °ãÃľ²±â ¿¡·¯ " #. This heads the 'Macro' dialog box #: gtkedit/editcmd.c:668 msgid " Macro " -msgstr " ¸ðµë " +msgstr " ¸ÅÅ©·Î " #. Input line for a single key press follows the ':' #: gtkedit/editcmd.c:670 msgid " Press the macro's new hotkey: " -msgstr " »õ·Î¿î ¸ðµë ´ÜÃà±Û¼è¸¦ ´©¸£½Ê½Ã¿À: " +msgstr " »õ·Î¿î ¸ÅÅ©·Î ´ÜÃà±Û¼è¸¦ ´©¸£½Ê½Ã¿À: " #. This heads the 'Save Macro' dialog box #: gtkedit/editcmd.c:688 msgid " Save macro " -msgstr " ¸ðµë ÀúÀå " +msgstr " ¸ÅÅ©·Î ÀúÀå " #: gtkedit/editcmd.c:698 gtkedit/editcmd.c:705 msgid " Delete Macro " -msgstr " ¸ðµë Áö¿ì±â " +msgstr " ¸ÅÅ©·Î Áö¿ì±â " #. This heads the 'Load Macro' dialog box #: gtkedit/editcmd.c:755 msgid " Load macro " -msgstr " ¸ðµë ºÒ·¯¿À±â " +msgstr " ¸ÅÅ©·Î ºÒ·¯¿À±â " #: gtkedit/editcmd.c:769 gtkedit/editcmd.c:771 msgid " Confirm save file? : " @@ -1191,84 +1266,438 @@ msgstr " Ŭ¸³º¸µå·Î ¿À·ÁµÎ±â " #: gtkedit/editcmd.c:2544 gtkedit/editcmd.c:2548 gtkedit/editcmd.c:2553 -#: src/view.c:1833 +#: gtkedit/editcmd.c:2556 src/view.c:1833 msgid " Goto line " msgstr " ÁÙã±â " #: gtkedit/editcmd.c:2544 gtkedit/editcmd.c:2548 gtkedit/editcmd.c:2553 +#: gtkedit/editcmd.c:2556 msgid " Enter line: " msgstr " ÁÙ ¹øÈ£ ÀÔ·Â: " -#: gtkedit/editcmd.c:2574 gtkedit/editcmd.c:2591 +#: gtkedit/editcmd.c:2577 gtkedit/editcmd.c:2594 msgid " Save Block " msgstr " ±¸¿ª ÀúÀå " -#: gtkedit/editcmd.c:2625 +#: gtkedit/editcmd.c:2628 msgid " Insert File " msgstr " ÆÄÀÏ ³¢¿ö³Ö±â " -#: gtkedit/editcmd.c:2640 +#: gtkedit/editcmd.c:2643 msgid " Insert file " msgstr " ÆÄÀÏ ³¢¿ö³Ö±â " -#: gtkedit/editcmd.c:2640 +#: gtkedit/editcmd.c:2643 msgid " Error trying to insert file. " msgstr " ÆÄÀÏ ³¢¿ö³Ö±â ½ÇÆÐ " #. Not essential to translate -#: gtkedit/editcmd.c:2660 +#: gtkedit/editcmd.c:2663 msgid " Sort block " msgstr " ±¸¿ª Á¤·Ä " #. Not essential to translate -#: gtkedit/editcmd.c:2660 gtkedit/editcmd.c:2714 +#: gtkedit/editcmd.c:2663 gtkedit/editcmd.c:2717 msgid " You must first highlight a block of text. " msgstr " You must first highlight a block of text. " -#: gtkedit/editcmd.c:2667 +#: gtkedit/editcmd.c:2670 msgid " Run Sort " msgstr " Á¤·Ä ½ÃÀÛ " #. Not essential to translate -#: gtkedit/editcmd.c:2669 +#: gtkedit/editcmd.c:2672 msgid " Enter sort options (see manpage) separated by whitespace: " msgstr " °ø¹é¹®ÀÚ·Î ±¸ºÐµÈ Á¤·Ä ¼±ÅÃÇ׸ñ ÀÔ·Â: " -#: gtkedit/editcmd.c:2680 gtkedit/editcmd.c:2686 +#: gtkedit/editcmd.c:2683 gtkedit/editcmd.c:2689 msgid " Sort " msgstr " Á¤·Ä " #. Not essential to translate -#: gtkedit/editcmd.c:2682 +#: gtkedit/editcmd.c:2685 msgid " Error trying to execute sort command " msgstr " Á¤·ÄÁß ¿À·ù ¹ß»ý " #. Not essential to translate -#: gtkedit/editcmd.c:2688 +#: gtkedit/editcmd.c:2691 msgid " Sort returned non-zero: " msgstr " Sort returned non-zero: " #. Not essential to translate -#: gtkedit/editcmd.c:2712 gtkedit/editcmd.c:2742 +#: gtkedit/editcmd.c:2715 gtkedit/editcmd.c:2745 msgid " Process block " msgstr " Process block " #. Not essential to translate -#: gtkedit/editcmd.c:2744 +#: gtkedit/editcmd.c:2747 msgid " Error trying to stat file " msgstr " Error trying to stat file " -#: gtkedit/editcmd.c:2814 +#: gtkedit/editcmd.c:2817 msgid " Mail " msgstr " ÀüÀÚ¿ìÆí " +#: gtkedit/editmenu.c:56 +msgid " Word wrap " +msgstr " Word wrap " + +#. Not essential to translate +#: gtkedit/editmenu.c:58 +msgid " Enter line length, 0 for off: " +msgstr " ¶óÀÎ ±æÀ̸¦ ÀÔ·Â, 0Àº off: " + +#: gtkedit/editmenu.c:118 gtkedit/editmenu.c:134 +msgid "&Open/load... C-o" +msgstr "¿­±â/ºÒ·¯¿À±â(&O)... C-o" + +#: gtkedit/editmenu.c:119 +msgid "&New C-n" +msgstr "»õ ÆÄÀÏ(&N) C-n" + +#: gtkedit/editmenu.c:121 gtkedit/editmenu.c:137 +msgid "&Save F2" +msgstr "ÀúÀå(_S) F3" + +#: gtkedit/editmenu.c:122 gtkedit/editmenu.c:138 +msgid "save &As... F12" +msgstr "´Ù¸¥ À̸§À¸·Î ÀúÀå(&A)... M-d" + +#: gtkedit/editmenu.c:124 gtkedit/editmenu.c:140 +msgid "&Insert file... F15" +msgstr "ÆÄÀÏ ³¢¿ö³Ö±â(&I)... F15" + +#: gtkedit/editmenu.c:125 +msgid "copy to &File... C-f" +msgstr "ÆÄÀÏ·Î º¹»ç(&F)... C-f" + +#: gtkedit/editmenu.c:127 gtkedit/editmenu.c:143 +msgid "a&Bout... " +msgstr "ÀÌ ÇÁ·Î±×·¥Àº(&B)... " + +#: gtkedit/editmenu.c:129 gtkedit/editmenu.c:145 +msgid "&Quit F10" +msgstr "Á¾·á(&Q) F10" + +#: gtkedit/editmenu.c:135 +msgid "&New C-x k" +msgstr "»õ ÆÄÀÏ(&N) C-x l" + +#: gtkedit/editmenu.c:141 +msgid "copy to &File... " +msgstr "ÆÄÀÏ·Î º¹»ç(&F)... " + +#: gtkedit/editmenu.c:150 gtkedit/editmenu.c:167 +msgid "&Toggle Mark F3" +msgstr "¸¶Å© Åä±Û(&T) F3" + +#: gtkedit/editmenu.c:151 gtkedit/editmenu.c:168 +msgid "&Mark Columns S-F3" +msgstr "Ä÷³ ¸¶Å©(&M) S-F3" + +#: gtkedit/editmenu.c:153 gtkedit/editmenu.c:170 +msgid "toggle &Ins/overw Ins" +msgstr "»ðÀÔ/°ãħ Åä±Û(&I) Ins" + +#: gtkedit/editmenu.c:155 gtkedit/editmenu.c:172 +msgid "&Copy F5" +msgstr "º¹»ç(&C) F5" + +#: gtkedit/editmenu.c:156 gtkedit/editmenu.c:173 +msgid "&Move F6" +msgstr "À̵¿(&M) F6" + +#: gtkedit/editmenu.c:157 gtkedit/editmenu.c:174 +msgid "&Delete F8" +msgstr "Áö¿ì±â(&D) F8" + +#: gtkedit/editmenu.c:159 gtkedit/editmenu.c:176 +msgid "&Undo C-u" +msgstr "Ãë¼Ò(&U) C-u" + +#: gtkedit/editmenu.c:161 gtkedit/editmenu.c:178 +msgid "&Beginning C-PgUp" +msgstr "ÆÄÀÏ Ã³À½(&B) C-PgUp" + +#: gtkedit/editmenu.c:162 gtkedit/editmenu.c:179 +msgid "&End C-PgDn" +msgstr "ÆÄÀÏ ³¡(&E) C-PgDn" + +#: gtkedit/editmenu.c:184 gtkedit/editmenu.c:191 +msgid "&Search... F7" +msgstr "ã±â(&S)... F7" + +#: gtkedit/editmenu.c:185 gtkedit/editmenu.c:192 +msgid "search &Again F17" +msgstr "´Ù½Ã ã±â(&A) F17" + +#: gtkedit/editmenu.c:186 gtkedit/editmenu.c:193 +msgid "&Replace... F4" +msgstr "¹Ù²Ù±â(&R)... F4" + +#: gtkedit/editmenu.c:198 gtkedit/editmenu.c:220 +msgid "&Goto line... M-l" +msgstr "¶óÀΠã¾Æ°¡±â(&G)... M-l" + +#: gtkedit/editmenu.c:200 gtkedit/editmenu.c:222 +msgid "insert &Literal... C-q" +msgstr "Literal ÀÔ·Â(&L) C-q" + +#: gtkedit/editmenu.c:202 gtkedit/editmenu.c:224 +msgid "&Refresh screen C-l" +msgstr "È­¸é °»½Å(&R) C-l" + +#: gtkedit/editmenu.c:204 gtkedit/editmenu.c:226 +msgid "&Start record macro C-r" +msgstr "¸ÅÅ©·Î ÀúÀå ½ÃÀÛ(&S) C-r" + +#: gtkedit/editmenu.c:205 gtkedit/editmenu.c:227 +msgid "&Finish record macro... C-r" +msgstr "¸ÅÅ©·Î ÀúÀå ³¡(&F) C-r" + +#: gtkedit/editmenu.c:206 +msgid "&Execute macro... C-a, KEY" +msgstr "¸ÅÅ©·Î ½ÇÇà(&E)... C-a, KEY" + +#: gtkedit/editmenu.c:207 gtkedit/editmenu.c:229 +msgid "delete macr&O... " +msgstr "¸ÅÅ©·Î »èÁ¦(&O)... " + +#: gtkedit/editmenu.c:209 gtkedit/editmenu.c:231 +msgid "insert &Date/time " +msgstr "³¯Â¥/½Ã°£ »ðÀÔ(&D) " + +#: gtkedit/editmenu.c:211 gtkedit/editmenu.c:233 +msgid "format p&Aragraph M-p" +msgstr "format p&Aragraph M-p" + +#: gtkedit/editmenu.c:212 +msgid "'ispell' s&Pell check C-p" +msgstr "'ispell' öÀÚ °Ë»ç(&P) C-p" + +#: gtkedit/editmenu.c:213 gtkedit/editmenu.c:235 +msgid "sor&T... M-t" +msgstr "Á¤·Ä(&T) M-t" + +#: gtkedit/editmenu.c:214 gtkedit/editmenu.c:236 +msgid "'indent' &C Formatter F19" +msgstr "'indent' &C Formatter F19" + +#: gtkedit/editmenu.c:215 +msgid "&Mail... " +msgstr "ÀüÀÚ¿ìÆí(&M)... " + +#: gtkedit/editmenu.c:228 +msgid "&Execute macro... C-x e, KEY" +msgstr "¸ÅÅ©·Î ½ÇÇà(&E)... C-x e, KEY" + +#: gtkedit/editmenu.c:234 +msgid "'ispell' s&Pell check M-$" +msgstr "'ispell' öÀÚ °Ë»ç(&P) M-$" + +#: gtkedit/editmenu.c:243 gtkedit/editmenu.c:252 +msgid "&General... " +msgstr "ÀϹÝ(&G)... " + +#: gtkedit/editmenu.c:244 gtkedit/editmenu.c:253 +msgid "&Save mode..." +msgstr "¸ðµå ÀúÀå(&S)..." + +#: gtkedit/editmenu.c:246 gtkedit/editmenu.c:255 src/main.c:1304 +msgid "&Layout..." +msgstr "¹èÄ¡(&L)..." + +#. The following are menu options. Do not change the key bindings (eg. C-o) and preserve '\t' +#: gtkedit/editmenu.c:265 gtkedit/editmenu.c:274 gtkedit/editmenu.c:391 +#: src/chmod.c:165 src/chown.c:132 +msgid " File " +msgstr " ÆÄÀÏ " + +#: gtkedit/editmenu.c:266 gtkedit/editmenu.c:275 gtkedit/editmenu.c:407 +msgid " Edit " +msgstr " ÆíÁý " + +#: gtkedit/editmenu.c:267 gtkedit/editmenu.c:276 +msgid " Sear/Repl " +msgstr " ã±â/¹Ù²Þ " + +#: gtkedit/editmenu.c:268 gtkedit/editmenu.c:277 gtkedit/editmenu.c:442 +msgid " Command " +msgstr " ¸í·É " + +#: gtkedit/editmenu.c:269 gtkedit/editmenu.c:278 +msgid " Options " +msgstr " ¼±ÅÃÇ׸ñ " + +#: gtkedit/editmenu.c:392 +msgid "Open...\tC-o" +msgstr "¿­±â...\tC-o" + +#: gtkedit/editmenu.c:393 +msgid "New\tC-n" +msgstr "»õ ±Û\tC-n" + +#: gtkedit/editmenu.c:395 +msgid "Save\tF2" +msgstr "ÀúÀå\tF2" + +#: gtkedit/editmenu.c:396 +msgid "Save as...\tF12" +msgstr "»õÀ̸§À¸·Î ÀúÀå\tF12" + +#: gtkedit/editmenu.c:398 +msgid "Insert file...\tF15" +msgstr "ÆÄÀÏ ³¢¿ö³Ö±â...\tF15" + +#: gtkedit/editmenu.c:399 +msgid "Copy to file...\tC-f" +msgstr "ÆÄÀÏ·Î º¹»ç...\tC-f" + +#. Tool hint +#: gtkedit/editmenu.c:402 +msgid "Disk operations" +msgstr "µð½ºÅ© Á¶ÀÛ" + +#: gtkedit/editmenu.c:408 +msgid "Toggle mark\tF3" +msgstr "¸¶Å© Åä±Û\tF3" + +#: gtkedit/editmenu.c:409 +msgid "Toggle mark columns\tC-b" +msgstr "Ä÷³ ¸¶Å© Åä±Û\tC-b" + +#: gtkedit/editmenu.c:411 +msgid "Toggle insert/overwrite\tIns" +msgstr "»ðÀÔ/°ãħ Åä±Û\tIns" + +#: gtkedit/editmenu.c:413 +msgid "Copy block to cursor\tF5" +msgstr "ºí·°À» Ä¿¼­À§Ä¡·Î º¹»ç\tF5" + +#: gtkedit/editmenu.c:414 +msgid "Move block to cursor\tF6" +msgstr "ºí·°À» Ä¿¼­À§Ä¡·Î À̵¿\tF6" + +#: gtkedit/editmenu.c:415 +msgid "Delete block\tF8/C-Del" +msgstr "ºí·° »èÁ¦\tF8/C-Del" + +#: gtkedit/editmenu.c:417 +msgid "Copy block to clipbrd\tC-Ins" +msgstr "ºí·°À» Ŭ¸³º¸µå·Î º¹»ç\tC-Ins" + +#: gtkedit/editmenu.c:418 +msgid "Cut block to clipbrd\tS-Del" +msgstr "ºí·°À» Ŭ¸³º¸µå·Î ¿À·ÁµÎ±â\tS-Del" + +#: gtkedit/editmenu.c:419 +msgid "Paste block from clipbrd\tS-Ins" +msgstr "Ŭ¸³º¸µå¿¡¼­ ºí·° ºÙÀ̱â\tS-Ins" + +#: gtkedit/editmenu.c:420 +msgid "Selection history\tM-Ins" +msgstr "¼±Åà È÷½ºÅ丮\tM-Ins" + +#: gtkedit/editmenu.c:422 +msgid "Undo\tC-BackSpace" +msgstr "Ãë¼Ò\tC-BackSpace" + +#. Tool hint +#: gtkedit/editmenu.c:425 +msgid "Manipulating blocks of text" +msgstr "ÅØ½ºÆ® ºí·° Á¶ÀÛ" + +#: gtkedit/editmenu.c:430 +msgid " Srch/Replce " +msgstr " ã±â/¹Ù²Þ " + +#: gtkedit/editmenu.c:431 +msgid "Search...\tF7" +msgstr "ã±â...\tF7" + +#: gtkedit/editmenu.c:432 +msgid "Search again\tF17" +msgstr "´Ù½Ã ã±â\tF17" + +#: gtkedit/editmenu.c:433 +msgid "Replace...\tF4" +msgstr "¹Ù²Þ...\tF4" + +#: gtkedit/editmenu.c:434 +msgid "Replace again\tF14" +msgstr "¸ðµÎ ¹Ù²Þ\tF14" + +#. Tool hint +#: gtkedit/editmenu.c:437 +msgid "Search for and replace text" +msgstr "ã¾Æ¼­ ¹Ù²Ü ¹®ÀÚ¿­" + +#: gtkedit/editmenu.c:443 +msgid "Goto line...\tM-l" +msgstr "¶óÀΠã¾Æ°¡±â...\tM-l" + +#: gtkedit/editmenu.c:445 +msgid "Start record macro\tC-r" +msgstr "¸ÅÅ©·Î ÀúÀå ½ÃÀÛ\tC-r" + +#: gtkedit/editmenu.c:446 +msgid "Finish record macro...\tC-r" +msgstr "¸ÅÅ©·Î ÀúÀå ³¡...\tC-r" + +#: gtkedit/editmenu.c:447 +msgid "Execute macro...\tC-a, KEY" +msgstr "¸ÅÅ©·Î ½ÇÇà...\tC-a, KEY" + +#: gtkedit/editmenu.c:448 +msgid "Delete macro...\t" +msgstr "¸ÅÅ©·Î »èÁ¦...\t" + +#: gtkedit/editmenu.c:450 +msgid "Insert date/time\tC-d" +msgstr "³¯Â¥/½Ã°£ »ðÀÔ\tC-d" + +#: gtkedit/editmenu.c:451 +msgid "Format paragraph\tM-p" +msgstr "Format paragraph\tM-p" + +#: gtkedit/editmenu.c:453 +msgid "Refresh display\tC-l" +msgstr "È­¸é °»½Å\tC-l" + +#. Tool hint +#: gtkedit/editmenu.c:456 +msgid "Macros and internal commands" +msgstr "" + +#: gtkedit/editoptions.c:37 +msgid "None" +msgstr "" + +#: gtkedit/editoptions.c:37 +msgid "Dynamic paragraphing" +msgstr "" + +#: gtkedit/editoptions.c:37 +msgid "Type writer wrap" +msgstr "" + +#. 13 +#: gtkedit/editoptions.c:100 +msgid "Wrap mode" +msgstr "Wrap ¸ðµå" + +#. 15 +#: gtkedit/editoptions.c:106 +msgid "Key emulation" +msgstr "" + #. Not essential to translate #: gtkedit/editwidget.c:310 msgid "Error initialising editor.\n" msgstr "Error initialising editor.\n" #: gtkedit/editwidget.c:1060 gtkedit/gtkedit.c:1365 src/help.c:809 -#: src/main.c:1676 src/screen.c:2277 src/screen.c:2307 src/tree.c:1478 +#: src/main.c:1670 src/screen.c:2299 src/screen.c:2329 src/tree.c:1022 #: src/view.c:1963 msgid "Help" msgstr "µµ¿ò¸»" @@ -1281,20 +1710,15 @@ msgid "Replac" msgstr "¹Ù²Þ" -#: gtkedit/editwidget.c:1064 gtkedit/gtkedit.c:1315 src/screen.c:2281 -#: src/screen.c:2311 src/tree.c:1484 -msgid "Copy" -msgstr "º¹»ç" - -#: gtkedit/editwidget.c:1065 -msgid "Move" -msgstr "À̵¿" +#: gtkedit/editwidget.c:1066 src/view.c:1976 +msgid "Search" +msgstr "ã±â" -#: gtkedit/editwidget.c:1069 src/main.c:1678 +#: gtkedit/editwidget.c:1069 src/main.c:1672 msgid "PullDn" msgstr "Ç®´Ù¿î" -#: gtkedit/editwidget.c:1070 src/help.c:821 src/main.c:1679 src/view.c:1965 +#: gtkedit/editwidget.c:1070 src/help.c:821 src/main.c:1673 src/view.c:1965 #: src/view.c:1985 msgid "Quit" msgstr "Á¾·á" @@ -1421,6 +1845,10 @@ msgid "Info about Mcedit" msgstr "Mcedit¿¡ ´ëÇÑ Á¤º¸" +#: gtkedit/gtkedit.c:1362 src/filegui.c:409 +msgid "File" +msgstr "ÆÄÀÏ" + #: gtkedit/syntax.c:3180 gtkedit/syntax.c:3187 msgid " Load syntax file " msgstr " ±¸¹® ÆÄÀÏ Àоî¿À±â " @@ -1434,11 +1862,11 @@ msgid " Syntax error in file %s on line %d " msgstr " ÆÄÀÏ %sÀÇ %d ¶óÀο¡ ±¸¹® ¿¡·¯ " -#: src/achown.c:73 src/boxes.c:142 src/boxes.c:282 src/boxes.c:379 -#: src/boxes.c:467 src/boxes.c:647 src/boxes.c:732 src/boxes.c:786 -#: src/chmod.c:115 src/chown.c:81 src/cmd.c:868 src/filegui.c:707 -#: src/find.c:154 src/hotlist.c:140 src/hotlist.c:812 src/hotlist.c:905 -#: src/layout.c:371 src/learn.c:61 src/option.c:145 src/panelize.c:90 +#: src/achown.c:73 src/boxes.c:143 src/boxes.c:283 src/boxes.c:380 +#: src/boxes.c:468 src/boxes.c:648 src/boxes.c:731 src/boxes.c:785 +#: src/chmod.c:115 src/chown.c:81 src/cmd.c:860 src/filegui.c:795 +#: src/find.c:156 src/hotlist.c:141 src/hotlist.c:813 src/hotlist.c:906 +#: src/layout.c:373 src/learn.c:61 src/option.c:145 src/panelize.c:90 #: src/view.c:408 src/wtools.c:114 src/wtools.c:389 src/wtools.c:562 #: src/wtools.c:643 msgid "&Cancel" @@ -1476,6 +1904,10 @@ msgid "Flag" msgstr "Flag" +#: src/achown.c:380 +msgid "Mode" +msgstr "Mode" + #: src/achown.c:385 #, c-format msgid "%6d of %d" @@ -1518,27 +1950,27 @@ msgid " I can't run the Advanced Chown command on a tarfs " msgstr " tarfs¿¡¼­´Â °í±Þ chown ¸í·ÉÀ» ½ÇÇàÇÒ ¼ö ¾ø½À´Ï´Ù " -#: src/background.c:181 +#: src/background.c:180 msgid "Background process:" msgstr "Background ÇÁ·Î¼¼½º:" -#: src/background.c:286 src/file.c:2062 +#: src/background.c:286 src/file.c:2120 msgid " Background process error " msgstr " Background ÇÁ·Î¼¼½º ¿¡·¯ " -#: src/background.c:291 +#: src/background.c:293 msgid " Child died unexpectedly " msgstr " ¿¹±âÄ¡ ¾ÊÀº ÀÚ½Ä(child) ÇÁ·Î¼¼½ºÀÇ Á×À½ " -#: src/background.c:293 +#: src/background.c:295 msgid " Unknown error in child " msgstr " ÀÚ½Ä(child) ÇÁ·Î¼¼½º¿¡¼­ ¸ð¸£´Â ¿À·ù ¹ß»ý " -#: src/background.c:308 +#: src/background.c:310 msgid " Background protocol error " msgstr " Background ÇÁ·ÎÅäÄÝ ¿¡·¯ " -#: src/background.c:309 +#: src/background.c:311 msgid "" " Background process sent us a request for more arguments \n" " than we can handle. \n" @@ -1546,152 +1978,152 @@ " Background process°¡ ¿ì¸®°¡ ó¸®ÇÒ ¼ö ÀÖ´Â °Í º¸´Ù ¸¹Àº \n" " ÀÎÀÚ¸¦ ¿ä±¸ÇÕ´Ï´Ù. \n" -#: src/boxes.c:66 +#: src/boxes.c:67 msgid " Listing mode " msgstr " ¸ñ·Ïº¸±â ¼³Á¤ " -#: src/boxes.c:71 +#: src/boxes.c:72 msgid "&Full file list" msgstr "Àüü º¸¿©ÁÖ±â(&F)" -#: src/boxes.c:72 +#: src/boxes.c:73 msgid "&Brief file list" msgstr "°£´ÜÈ÷ º¸¿©ÁÖ±â(&B)" -#: src/boxes.c:73 +#: src/boxes.c:74 msgid "&Long file list" msgstr "±æ°Ô º¸¿©ÁÖ±â(&L)" -#: src/boxes.c:74 +#: src/boxes.c:75 msgid "&User defined:" msgstr "»ç¿ëÀÚ Á¤ÀÇ(&U):" -#: src/boxes.c:75 +#: src/boxes.c:76 msgid "&Icon view" msgstr "¾ÆÀÌÄÜ º¸±â(&I)" -#: src/boxes.c:140 +#: src/boxes.c:141 msgid "user &Mini status" msgstr "¹Ì´Ï »óŹÙ(&M)" -#: src/boxes.c:189 +#: src/boxes.c:190 msgid "Listing mode" msgstr "¸ñ·Ïº¸±â ¼³Á¤" -#: src/boxes.c:283 +#: src/boxes.c:284 msgid "&Reverse" msgstr "¹Ý´ë·Î(&R)" -#: src/boxes.c:284 +#: src/boxes.c:285 msgid "case sensi&tive" msgstr "´ë¼Ò¹®ÀÚ ±¸ºÐ(&t)" -#: src/boxes.c:285 +#: src/boxes.c:286 msgid "Sort order" msgstr "Á¤·Ä ¼ø¼­" -#: src/boxes.c:384 +#: src/boxes.c:385 msgid " confirm &Exit " msgstr " Á¾·á È®ÀÎ(&E) " -#: src/boxes.c:386 +#: src/boxes.c:387 msgid " confirm e&Xecute " msgstr " ½ÇÇà È®ÀÎ(&X) " -#: src/boxes.c:388 +#: src/boxes.c:389 msgid " confirm o&Verwrite " msgstr " µ¤¾î¾²±â È®ÀÎ(&V) " -#: src/boxes.c:390 +#: src/boxes.c:391 msgid " confirm &Delete " msgstr " Áö¿ì±â È®ÀÎ(&D) " -#: src/boxes.c:396 +#: src/boxes.c:397 msgid " Confirmation " msgstr " È®ÀÎ " -#: src/boxes.c:464 +#: src/boxes.c:465 msgid "Full 8 bits output" msgstr "8 bits Ãâ·Â" -#: src/boxes.c:464 +#: src/boxes.c:465 msgid "ISO 8859-1" msgstr "ISO 8859-1" -#: src/boxes.c:464 +#: src/boxes.c:465 msgid "7 bits" msgstr "7 ºñÆ®" -#: src/boxes.c:471 +#: src/boxes.c:472 msgid "F&ull 8 bits input" msgstr "8 ºñÆ® ÀÔ·Â(&u)" -#: src/boxes.c:479 +#: src/boxes.c:480 msgid " Display bits " msgstr " Ãâ·Â ºñÆ® " -#: src/boxes.c:654 +#: src/boxes.c:655 msgid "&Always use ftp proxy" msgstr "Ç×»ó FTP proxy »ç¿ë(&A)" -#: src/boxes.c:656 +#: src/boxes.c:657 msgid "sec" msgstr "ÃÊ" -#: src/boxes.c:660 +#: src/boxes.c:661 msgid "ftpfs directory cache timeout:" msgstr "ftpfs ij½¬ ŸÀӾƿô:" -#: src/boxes.c:664 +#: src/boxes.c:665 msgid "ftp anonymous password:" msgstr "ftp anonymous ºñ¹Ð¹øÈ£:" -#: src/boxes.c:671 +#: src/boxes.c:672 msgid "Timeout for freeing VFSs:" msgstr "Timeout for freeing VFSs:" -#: src/boxes.c:677 +#: src/boxes.c:678 msgid " Virtual File System Setting " msgstr " °¡»ó ÆÄÀÏ Ã¼°è ¼³Á¤ " -#: src/boxes.c:745 +#: src/boxes.c:744 msgid "Quick cd" msgstr "Quick cd" #. want cd like completion -#: src/boxes.c:750 +#: src/boxes.c:749 msgid "cd" msgstr "cd" -#: src/boxes.c:806 +#: src/boxes.c:805 msgid "Symbolic link filename:" msgstr "½Éº¼¸¯¸µÅ© ÆÄÀϸí:" -#: src/boxes.c:808 +#: src/boxes.c:807 msgid "Existing filename (filename symlink will point to):" msgstr "´ë»ó ÆÄÀϸí (½Éº¼¸¯¸µÅ© ÆÄÀÏÀÌ °¡¸®Å³ ÆÄÀÏ):" -#: src/boxes.c:837 +#: src/boxes.c:836 msgid "Running " msgstr "½ÇÇàÁß " -#: src/boxes.c:838 src/find.c:667 +#: src/boxes.c:837 src/find.c:676 msgid "Stopped" msgstr "¸ØÃã" -#: src/boxes.c:896 +#: src/boxes.c:895 msgid "&Stop" msgstr "¸ØÃã(&S)" -#: src/boxes.c:897 +#: src/boxes.c:896 msgid "&Resume" msgstr "°è¼Ó(&R)" -#: src/boxes.c:898 +#: src/boxes.c:897 msgid "&Kill" msgstr "Á×ÀÓ(&K)" -#: src/boxes.c:937 +#: src/boxes.c:936 msgid "Background Jobs" msgstr "Background Jobs" @@ -1755,10 +2187,6 @@ msgid "&Marked all" msgstr "¸ðµÎ ¼±ÅÃ(&M)" -#: src/chmod.c:151 src/screen.c:423 -msgid "Name" -msgstr "À̸§" - #: src/chmod.c:153 msgid "Permissions (Octal)" msgstr "Çã¿ë (8Áø¼ö)" @@ -1779,10 +2207,6 @@ msgid " Permission " msgstr " Çã¿ë " -#: src/chmod.c:165 src/chown.c:132 -msgid " File " -msgstr " ÆÄÀÏ " - #: src/chmod.c:170 msgid "Use SPACE to change" msgstr "¹Ù²Ü·Á¸é SPACE »ç¿ë" @@ -1856,132 +2280,132 @@ msgid " I can't run the Chown command on a tarfs " msgstr " tarfs¿¡¼­´Â chown ¸í·ÉÀ» ½ÇÇà ¸øÇÕ´Ï´Ù " -#: src/cmd.c:204 +#: src/cmd.c:205 #, c-format msgid " Can not fetch a local copy of %s " msgstr " ¿ø°ÝÁö ÆÄÀÏ %s¸¦ ·ÎÄ÷Π°¡Á®¿Ã ¼ö ¾ø½À´Ï´Ù " -#: src/cmd.c:254 +#: src/cmd.c:255 msgid " CD " msgstr " CD " -#: src/cmd.c:254 +#: src/cmd.c:255 msgid "Files tagged, want to cd?" msgstr "¼±ÅÃµÈ ÆÄÀÏÀÌ ÀÖ´Â µ¥, ±×·¡µµ ÀÚ·á¹æÀ» ¹Ù²Ü±î¿ä?" -#: src/cmd.c:260 src/cmd.c:727 src/cmd.c:741 +#: src/cmd.c:261 src/cmd.c:719 src/cmd.c:733 msgid "Could not change directory" msgstr "ÀÚ·á¹æÀ» ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù" -#: src/cmd.c:289 +#: src/cmd.c:290 msgid " View file " msgstr " ÆÄÀÏ º¸±â " -#: src/cmd.c:289 +#: src/cmd.c:290 msgid " Filename:" msgstr " ÆÄÀϸí:" -#: src/cmd.c:306 +#: src/cmd.c:307 msgid " Filtered view " -msgstr " °Å¸£°³·Î º¸±â " +msgstr " ÇÊÅÍ·Î º¸±â " -#: src/cmd.c:306 +#: src/cmd.c:307 msgid " Filter command and arguments:" -msgstr " °Å¸£°³ ¸í·É ¹× ÀÎÀÚ:" +msgstr " ÇÊÅÍ ¸í·É ¹× ÀÎÀÚ:" -#: src/cmd.c:391 -msgid " Mkdir " -msgstr " ÀÚ·á¹æ »ý¼º " +#: src/cmd.c:393 +msgid "Create a new Directory" +msgstr "»õ·Î¿î ÀÚ·á¹æÀ» »ý¼º" -#: src/cmd.c:391 +#: src/cmd.c:393 msgid " Enter directory name:" msgstr " ÀÚ·á¹æ À̸§ ÀÔ·Â:" -#: src/cmd.c:446 +#: src/cmd.c:455 msgid " Filter " -msgstr " °Å¸£°³ " +msgstr " ÇÊÅÍ " -#: src/cmd.c:446 +#: src/cmd.c:455 msgid " Set expression for filtering filenames" msgstr " ÇÊÅ͸µÇÒ ÆÄÀÏ¸í ¼³Á¤ " -#: src/cmd.c:530 +#: src/cmd.c:521 msgid " Select " msgstr " ¼±Åà " -#: src/cmd.c:558 src/cmd.c:609 +#: src/cmd.c:549 src/cmd.c:600 msgid " Malformed regular expression " msgstr " ÀÌÇØÇÒ ¼ö ¾ø´Â Á¤±ÔÇ¥Çö½Ä " -#: src/cmd.c:582 +#: src/cmd.c:573 msgid " Unselect " msgstr " ¼±ÅÃÇØÁ¦ " -#: src/cmd.c:654 +#: src/cmd.c:646 msgid "Extension file edit" msgstr "Extension ÆÄÀÏ ¼öÁ¤" -#: src/cmd.c:655 +#: src/cmd.c:647 msgid " Which extension file you want to edit? " msgstr " ¼öÁ¤Çϱ⸦ ¿øÇÏ´Â extension ÆÄÀÏÀº? " -#: src/cmd.c:656 +#: src/cmd.c:648 msgid "&User" msgstr "»ç¿ëÀÚ(&U)" -#: src/cmd.c:656 src/cmd.c:682 +#: src/cmd.c:648 src/cmd.c:674 msgid "&System Wide" msgstr "ü°è Àüü(&S)" -#: src/cmd.c:679 +#: src/cmd.c:671 msgid "Menu file edit" msgstr "¸Þ´º ÆÄÀÏ ¼öÁ¤" -#: src/cmd.c:680 +#: src/cmd.c:672 msgid " Which menu file will you edit? " msgstr " ¼öÁ¤Çϱ⸦ ¿øÇÏ´Â ¸Þ´º ÆÄÀÏÀº? " -#: src/cmd.c:682 +#: src/cmd.c:674 msgid "&Local" msgstr "·ÎÄÃ(&L)" -#: src/cmd.c:682 +#: src/cmd.c:674 msgid "&Home" msgstr "Ȩ(&H)" -#: src/cmd.c:867 +#: src/cmd.c:859 msgid " Compare directories " msgstr " ÀÚ·á¹æ ºñ±³ " -#: src/cmd.c:867 +#: src/cmd.c:859 msgid " Select compare method: " msgstr " ºñ±³ ¹æ¹ý ¼±ÅÃ: " -#: src/cmd.c:868 +#: src/cmd.c:860 msgid "&Quick" msgstr "ºü¸£°Ô(&Q)" -#: src/cmd.c:868 +#: src/cmd.c:860 msgid "&Size only" msgstr "Å©±â·Î¸¸(&S)" -#: src/cmd.c:868 +#: src/cmd.c:860 msgid "&Thorough" msgstr "ÀÚ¼¼È÷(&T)" -#: src/cmd.c:878 +#: src/cmd.c:870 msgid " Both panels should be on the listing view mode to use this command " msgstr " ÀÌ ¸í·ÉÀ» »ç¿ëÇÏ·Á¸é ¾çÂÊ ÆÇÅÚÀÌ ¸ðµÎ º¸¿©¾ß ÇÕ´Ï´Ù " -#: src/cmd.c:892 +#: src/cmd.c:884 msgid " The command history is empty " msgstr " ¸í·É È÷½ºÅ丮°¡ ºñ¾ú½À´Ï´Ù " -#: src/cmd.c:898 +#: src/cmd.c:890 msgid " Command history " msgstr " ¸í·É È÷½ºÅ丮 " -#: src/cmd.c:940 +#: src/cmd.c:932 msgid "" " Not an xterm or Linux console; \n" " the panels cannot be toggled. " @@ -1989,7 +2413,7 @@ " xtermµµ ¾Æ´Ï°í ¸®´ª½º Äֵܼµ ¾Æ´Ï°í; \n" " ÆÐ³ÎÀ» ¼­·Î ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù. " -#: src/cmd.c:979 +#: src/cmd.c:971 msgid "" "Type `exit' to return to the Midnight Commander\n" "\r\n" @@ -1999,7 +2423,7 @@ "\r\n" "\r" -#: src/cmd.c:1032 +#: src/cmd.c:1024 #, c-format msgid "" " Couldn't stat %s \n" @@ -2008,92 +2432,92 @@ " %s ÆÄÀÏÁ¤º¸¸¦ ¾òÀ» ¼ö ¾ø¾î¿ä \n" " %s " -#: src/cmd.c:1041 src/cmd.c:1043 +#: src/cmd.c:1033 src/cmd.c:1035 msgid " Link " msgstr " ¸µÅ© " -#: src/cmd.c:1042 src/cmd.c:1147 src/file.c:2247 +#: src/cmd.c:1034 src/cmd.c:1139 src/file.c:1628 msgid " to:" msgstr " ´ë»ó:" -#: src/cmd.c:1053 +#: src/cmd.c:1045 #, c-format msgid " link: %s " msgstr " ¸µÅ©: %s " -#: src/cmd.c:1086 +#: src/cmd.c:1078 #, c-format msgid " symlink: %s " msgstr " ½Éº¼¸¯¸µÅ©: %s " -#: src/cmd.c:1112 +#: src/cmd.c:1104 msgid " Symlink " msgstr " ½Éº¼¸¯¸µÅ© " -#: src/cmd.c:1112 +#: src/cmd.c:1104 msgid " points to:" msgstr " °¡ °¡¸®Å³ ÆÄÀÏ:" -#: src/cmd.c:1117 +#: src/cmd.c:1109 msgid " Edit symlink " msgstr " ½Éº¼¸¯¸µÅ© ¼öÁ¤ " -#: src/cmd.c:1123 +#: src/cmd.c:1115 #, c-format msgid " edit symlink: %s " msgstr " ½Éº¼¸¯¸µÅ© ¼öÁ¤: %s " -#: src/cmd.c:1147 +#: src/cmd.c:1139 msgid " Link symbolically " msgstr " Link symbolically " -#: src/cmd.c:1148 +#: src/cmd.c:1140 msgid " Relative symlink " msgstr " Relative symlink " -#: src/cmd.c:1159 +#: src/cmd.c:1151 #, c-format msgid " relative symlink: %s " msgstr " relative symlink: %s " -#: src/cmd.c:1262 +#: src/cmd.c:1254 msgid " Enter machine name (F1 for details): " msgstr " È£½ºÆ® À̸§ ÀÔ·Â (µµ¿ò¸» F1): " -#: src/cmd.c:1286 +#: src/cmd.c:1278 #, c-format msgid " Could not chdir to %s " msgstr " %s·Î ÀÚ·á¹æÀ» ¹Ù²Ü ¼ö ¾øÀ½ " -#: src/cmd.c:1293 +#: src/cmd.c:1285 msgid " Link to a remote machine " msgstr " ¿ø°Ý È£½ºÆ®¿¡ ¿¬°á " -#: src/cmd.c:1299 +#: src/cmd.c:1291 msgid " FTP to machine " msgstr " FTP ¿¬°á " -#: src/cmd.c:1309 +#: src/cmd.c:1301 msgid " Socket source routing setup " msgstr " ¼ÒÄÏ ¼Ò½º ¶ó¿ìÆÃ ¼³Á¤ " -#: src/cmd.c:1310 +#: src/cmd.c:1302 msgid " Enter host name to use as a source routing hop: " msgstr " ¿øÃµ ¶ó¿ìÆÃ È©À» »ç¿ëÇϱâ À§ÇÑ È£½ºÆ® À̸§: " -#: src/cmd.c:1317 +#: src/cmd.c:1309 msgid " Host name " msgstr " È£½ºÆ® À̸§ " -#: src/cmd.c:1317 +#: src/cmd.c:1309 msgid " Error while looking up IP address " msgstr " IP ÁÖ¼Ò Ã£´Â Áß ¿À·ù ¹ß»ý " -#: src/cmd.c:1328 +#: src/cmd.c:1320 msgid " Undelete files on an ext2 file system " msgstr " ext2 ÆÄÀÏü°è¿¡¼­ ÆÄÀÏ µÇ»ì¸² " -#: src/cmd.c:1329 +#: src/cmd.c:1321 msgid "" " Enter device (without /dev/) to undelete\n" " files on: (F1 for details)" @@ -2101,11 +2525,11 @@ " ÆÄÀÏÀ» º¹±¸Çϱâ À§ÇØ '/dev/'¸¦ »ý·«ÇÑ µð¹ÙÀ̽º¸í\n" " ÀÔ·Â: (ÀÚ¼¼È÷ ¾Ë±â ¿øÇϸé F1)" -#: src/cmd.c:1379 +#: src/cmd.c:1371 msgid " Setup saved to ~/" msgstr " Setup saved to ~/" -#: src/cmd.c:1384 +#: src/cmd.c:1376 msgid " Setup " msgstr " ȯ°æ¼³Á¤ " @@ -2259,27 +2683,27 @@ msgid "mc.ext will be used for this moment." msgstr "Áö±ÝÀº mc.ext¸¦ »ç¿ëÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù." -#: src/file.c:228 src/tree.c:1104 +#: src/file.c:161 src/tree.c:651 msgid " Copy " msgstr " º¹»ç " -#: src/file.c:229 src/tree.c:1140 +#: src/file.c:162 src/tree.c:689 msgid " Move " msgstr " À̵¿ " -#: src/file.c:230 src/tree.c:1205 +#: src/file.c:163 src/tree.c:759 msgid " Delete " msgstr " Áö¿ì±â " -#: src/file.c:313 +#: src/file.c:251 msgid " Invalid target mask " msgstr " Invalid target mask " -#: src/file.c:411 +#: src/file.c:349 msgid " Could not make the hardlink " msgstr " Çϵ帵ũ¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù " -#: src/file.c:454 +#: src/file.c:391 #, c-format msgid "" " Cannot read source link \"%s\" \n" @@ -2288,7 +2712,7 @@ " ¿øÃµ ¸µÅ© \"%s\"¸¦ ÀÐÀ» ¼ö ¾ø¾î¿ä \n" " %s " -#: src/file.c:464 +#: src/file.c:401 msgid "" " Cannot make stable symlinks across non-local filesystems: \n" "\n" @@ -2298,7 +2722,7 @@ "\n" " Stable ½Éº¼¸¯¸µÅ© ¼±ÅÃÇ׸ñÀº »ç¿ë¾ÊµË´Ï´Ù " -#: src/file.c:513 +#: src/file.c:449 #, c-format msgid "" " Cannot create target symlink \"%s\" \n" @@ -2307,7 +2731,7 @@ " ½Éº¼¸¯¸µÅ© \"%s\"¸¦ »ý¼ºÇÒ ¼ö ¾ø½À´Ï´Ù \n" " %s " -#: src/file.c:574 +#: src/file.c:517 #, c-format msgid "" " Cannot overwrite directory \"%s\" \n" @@ -2316,7 +2740,7 @@ " \"%s\" ÀÚ·á¹æ¸¦ µ¤¾î¾µ ¼ö ¾ø½À´Ï´Ù \n" " %s " -#: src/file.c:584 +#: src/file.c:526 #, c-format msgid "" " Cannot stat source file \"%s\" \n" @@ -2325,12 +2749,12 @@ " \"%s\" ÆÄÀÏ Á¤º¸¸¦ ¾òÀ» ¼ö ¾ø½À´Ï´Ù \n" " %s " -#: src/file.c:598 +#: src/file.c:539 #, c-format msgid " `%s' and `%s' are the same file. " msgstr " `%s'¿Í `%s'°¡ °°Àº ÆÄÀÏÀÔ´Ï´Ù. " -#: src/file.c:634 +#: src/file.c:572 #, c-format msgid "" " Cannot create special file \"%s\" \n" @@ -2339,7 +2763,7 @@ " Ư¼ö(special) ÆÄÀÏ \"%s\"À» »ý¼ºÇÒ ¼ö ¾ø½À´Ï´Ù \n" " %s " -#: src/file.c:644 src/file.c:868 +#: src/file.c:581 src/file.c:801 #, c-format msgid "" " Cannot chown target file \"%s\" \n" @@ -2348,7 +2772,7 @@ " \"%s\" ÆÄÀÏÀÇ ¼ÒÀ¯ÀÚ¸¦ ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù \n" " %s " -#: src/file.c:653 src/file.c:884 +#: src/file.c:590 src/file.c:816 #, c-format msgid "" " Cannot chmod target file \"%s\" \n" @@ -2357,7 +2781,7 @@ " ´ë»óÆÄÀÏ \"%s\"ÀÇ ¸ðµå¸¦ ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù \n" " %s " -#: src/file.c:667 +#: src/file.c:603 #, c-format msgid "" " Cannot open source file \"%s\" \n" @@ -2366,11 +2790,11 @@ " \"%s\" ÆÄÀÏÀ» ¿­ ¼ö ¾ø½À´Ï´Ù \n" " %s " -#: src/file.c:677 +#: src/file.c:613 msgid " Reget failed, about to overwrite file " msgstr " À̾î¹Þ±â ½ÇÆÐ, ÆÄÀÏÀ» µ¤¾î¾µ ¿¹Á¤ÀÓ " -#: src/file.c:684 +#: src/file.c:619 #, c-format msgid "" " Cannot fstat source file \"%s\" \n" @@ -2379,7 +2803,7 @@ " ¼Ò½ºÆÄÀÏ \"%s\"ÀÇ ÆÄÀÏÁ¤º¸¸¦ ¾òÀ» ¼ö ¾ø½À´Ï´Ù \n" " %s " -#: src/file.c:706 +#: src/file.c:640 #, c-format msgid "" " Cannot create target file \"%s\" \n" @@ -2388,7 +2812,7 @@ " \"%s\" ÆÄÀÏÀ» »ý¼ºÇÒ ¼ö ¾ø½À´Ï´Ù \n" " %s " -#: src/file.c:721 +#: src/file.c:654 #, c-format msgid "" " Cannot fstat target file \"%s\" \n" @@ -2397,7 +2821,7 @@ " ´ë»óÆÄÀÏ \"%s\"ÀÇ ÆÄÀÏÁ¤º¸¸¦ ¾òÀ» ¼ö ¾ø½À´Ï´Ù \n" " %s " -#: src/file.c:752 +#: src/file.c:685 #, c-format msgid "" " Cannot read source file \"%s\" \n" @@ -2406,7 +2830,7 @@ " ¹ÙÅÁÆÄÀÏ \"%s\"À» ÀÐÀ» ¼ö ¾ø½À´Ï´Ù \n" " %s " -#: src/file.c:782 +#: src/file.c:715 #, c-format msgid "" " Cannot write target file \"%s\" \n" @@ -2415,11 +2839,11 @@ " ´ë»óÆÄÀÏ \"%s\"¿¡ ¾µ ¼ö ¾ø½À´Ï´Ù \n" " %s " -#: src/file.c:800 +#: src/file.c:734 msgid "(stalled)" msgstr "(stalled)" -#: src/file.c:839 +#: src/file.c:772 #, c-format msgid "" " Cannot close source file \"%s\" \n" @@ -2428,7 +2852,7 @@ " ¹ÙÅÁÆÄÀÏ \"%s\"À» ´ÝÀ» ¼ö ¾ø½À´Ï´Ù \n" " %s " -#: src/file.c:849 +#: src/file.c:781 #, c-format msgid "" " Cannot close target file \"%s\" \n" @@ -2437,19 +2861,19 @@ " ´ë»óÆÄÀÏ \"%s\"¸¦ ´ÝÀ» ¼ö ¾ø½À´Ï´Ù \n" " %s " -#: src/file.c:859 +#: src/file.c:791 msgid "Incomplete file was retrieved. Keep it?" msgstr "¿ÏÀüÇÏÁö ¾ÊÀº ÆÄÀÏÀÌ ¹Þ¾ÆÁ³½À´Ï´Ù. º¸Á¸ÇÒ±î¿ä?" -#: src/file.c:859 +#: src/file.c:792 msgid "&Delete" msgstr "Áö¿ì±â(&D)" -#: src/file.c:859 src/hotlist.c:1437 +#: src/file.c:792 src/hotlist.c:1438 msgid "&Keep" msgstr "º¸Á¸(&K)" -#: src/file.c:928 +#: src/file.c:861 #, c-format msgid "" " Cannot stat source directory \"%s\" \n" @@ -2458,7 +2882,7 @@ " ¿øº» ÀÚ·á¹æ \"%s\"ÀÇ Á¤º¸¸¦ ¾òÀ» ¼ö ¾ø½À´Ï´Ù \n" " %s " -#: src/file.c:951 +#: src/file.c:884 #, c-format msgid "" " Source directory \"%s\" is not a directory \n" @@ -2468,7 +2892,7 @@ " %s " #. we found a cyclic symbolic link -#: src/file.c:959 +#: src/file.c:892 #, c-format msgid "" " Cannot copy cyclic symbolic link \n" @@ -2477,7 +2901,7 @@ " Cyclic ½Éº¼¸¯¸µÅ©´Â º¹»çÇÒ ¼ö ¾ø½À´Ï´Ù \n" " `%s' " -#: src/file.c:1012 +#: src/file.c:945 #, c-format msgid "" " Cannot create target directory \"%s\" \n" @@ -2486,7 +2910,7 @@ " ´ë»ó ÀÚ·á¹æ \"%s\"¸¦ »ý¼ºÇÒ ¼ö ¾ø½À´Ï´Ù \n" " %s " -#: src/file.c:1031 +#: src/file.c:963 #, c-format msgid "" " Cannot chown target directory \"%s\" \n" @@ -2496,7 +2920,7 @@ " %s " #. Source doesn't exist -#: src/file.c:1143 +#: src/file.c:1073 #, c-format msgid "" " Cannot stat file \"%s\" \n" @@ -2505,17 +2929,17 @@ " \"%s\" ÆÄÀÏÀÇ Á¤º¸¸¦ ¾òÀ» ¼ö ¾ø½À´Ï´Ù \n" " %s " -#: src/file.c:1165 +#: src/file.c:1095 #, c-format msgid " `%s' and `%s' are the same file " msgstr " `%s'¿Í `%s'´Â °°Àº ÆÄÀÏÀÔ´Ï´Ù " -#: src/file.c:1172 +#: src/file.c:1102 #, c-format msgid " Cannot overwrite directory `%s' " msgstr " `%s' ÀÚ·á¹æÀ» µ¤¾î¾µ ¼ö ¾ø½À´Ï´Ù " -#: src/file.c:1205 +#: src/file.c:1135 #, c-format msgid "" " Cannot move file \"%s\" to \"%s\" \n" @@ -2524,7 +2948,7 @@ " \"%s\" ÆÄÀÏÀ» \"%s\"·Î À̵¿ÇÒ ¼ö ¾ø½À´Ï´Ù \n" " %s " -#: src/file.c:1225 +#: src/file.c:1155 #, c-format msgid "" " Cannot remove file \"%s\" \n" @@ -2533,17 +2957,17 @@ " \"%s\" ÆÄÀÏÀ» Áö¿ï ¼ö ¾ø½À´Ï´Ù \n" " %s " -#: src/file.c:1274 +#: src/file.c:1205 #, c-format msgid " Cannot overwrite directory \"%s\" %s " msgstr " \"%s\" ÀÚ·á¹æÀ» µ¤¾î¾µ ¼ö ¾ø½À´Ï´Ù. %s " -#: src/file.c:1276 +#: src/file.c:1207 #, c-format msgid " Cannot overwrite file \"%s\" %s " msgstr " \"%s\" ÆÄÀÏÀ» °ãÃľµ ¼ö ¾ø½À´Ï´Ù. %s " -#: src/file.c:1299 +#: src/file.c:1230 #, c-format msgid "" " Cannot move directory \"%s\" to \"%s\" \n" @@ -2552,7 +2976,7 @@ " \"%s\" ÀÚ·á¹æÀ» \"%s\"·Î À̵¿ÇÒ ¼ö ¾ø½À´Ï´Ù \n" " %s " -#: src/file.c:1355 +#: src/file.c:1293 #, c-format msgid "" " Cannot delete file \"%s\" \n" @@ -2561,7 +2985,7 @@ " \"%s\" ÆÄÀÏÀ» Áö¿ï ¼ö ¾ø½À´Ï´Ù \n" " %s " -#: src/file.c:1408 src/file.c:1475 src/file.c:1504 +#: src/file.c:1351 src/file.c:1418 src/file.c:1447 #, c-format msgid "" " Cannot remove directory \"%s\" \n" @@ -2570,35 +2994,100 @@ " \"%s\" ÀÚ·á¹æÀ» Áö¿ï ¼ö ¾ø½À´Ï´Ù \n" " %s " -#: src/file.c:1540 +#: src/file.c:1483 msgid " Internal error: get_file \n" msgstr " ³»ºÎ ¿À·ù: get_file \n" -#: src/file.c:1706 +#. +#. * This array introduced to avoid translation problems. The former (op_names) +#. * is assumed to be nouns, suitable in dialog box titles; this one should +#. * contain whatever is used in prompt itself (i.e. in russian, it's verb). +#. * Notice first symbol - it is to fool gettext and force these strings to +#. * be different for it. First symbol is skipped while building a prompt. +#. * (I don't use spaces around the words, because someday they could be +#. * dropped, when widgets get smarter) +#. +#: src/file.c:1604 +msgid "1Copy" +msgstr "1Copy" + +#: src/file.c:1604 +msgid "1Move" +msgstr "1Move" + +#: src/file.c:1604 +msgid "1Delete" +msgstr "1Delete" + +#: src/file.c:1619 +#, c-format +msgid "%o %f \"%s\"%m" +msgstr "%o %f \"%s\"%m" + +#: src/file.c:1620 +#, c-format +msgid "%o %d %f%m" +msgstr "%o %d %f%m" + +#: src/file.c:1622 +#, c-format +msgid "%o %f \"%s\"%e" +msgstr "%o %f \"%s\"%e" + +#: src/file.c:1623 +#, c-format +msgid "%o %d %f%e" +msgstr "%o %d %f%e" + +#: src/file.c:1627 +msgid "file" +msgstr "file" + +#: src/file.c:1627 +msgid "files" +msgstr "files" + +#: src/file.c:1627 +msgid "directory" +msgstr "directory" + +#: src/file.c:1627 +msgid "directories" +msgstr "directories" + +#: src/file.c:1628 +msgid "files/directories" +msgstr "files/directories" + +#: src/file.c:1628 +msgid " with source mask:" +msgstr " with source mask:" + +#: src/file.c:1776 msgid " Can't operate on \"..\"! " msgstr " \"..\"¿¡ ´ëÇØ¼­´Â ÀÛ¾÷ÇÒ ¼ö ¾ø½À´Ï´Ù! " -#: src/file.c:1722 +#: src/file.c:1795 msgid "Yes" msgstr "¿¹" -#: src/file.c:1722 +#: src/file.c:1795 msgid "No" msgstr "¾Æ´Ï¿À" -#: src/file.c:1772 +#: src/file.c:1848 msgid " Sorry, I could not put the job in background " msgstr " ¹Ì¾È, ¹é±×¶ó¿îµå·Î ÀÏÀ» ¼öÇàÇÒ ¼ö ¾ø³×¿ä " -#: src/file.c:1862 src/file.c:1964 +#: src/file.c:1931 src/file.c:2036 msgid " Internal failure " msgstr " ³»ºÎ ¿À·ù " -#: src/file.c:1862 src/file.c:1965 +#: src/file.c:1931 src/file.c:2036 msgid " Unknown file operation " msgstr " ¾Ë·ÁÁöÁö ¾ÊÀº ÆÄÀÏ Á¶ÀÛ " -#: src/file.c:1878 +#: src/file.c:1950 #, c-format msgid "" " Destination \"%s\" must be a directory \n" @@ -2607,19 +3096,19 @@ " ´ë»ó \"%s\"´Â ÀÚ·á¹æÀ̾î¾ß ÇÕ´Ï´Ù \n" " %s " -#: src/file.c:2063 src/filegui.c:248 +#: src/file.c:2121 src/filegui.c:268 msgid "&Skip" msgstr "°Ç³Ê¶Ü(&S)" -#: src/file.c:2063 +#: src/file.c:2121 msgid "&Retry" msgstr "Àç½Ãµµ(&R)" -#: src/file.c:2063 src/file.c:2121 src/filegui.c:245 src/filegui.c:485 +#: src/file.c:2121 src/file.c:2179 src/filegui.c:265 src/filegui.c:567 msgid "&Abort" msgstr "Áß´Ü(&A)" -#: src/file.c:2112 +#: src/file.c:2170 msgid "" "\n" " Directory not empty. \n" @@ -2629,7 +3118,7 @@ " ºó ÀÚ·á¹æÀÌ ¾Æ´Ñµ¥¿ä. \n" " ±×·¡µµ Áö¿ï±î¿ä? " -#: src/file.c:2113 +#: src/file.c:2171 msgid "" "\n" " Background process: Directory not empty \n" @@ -2639,201 +3128,134 @@ " ¹é±×¶ó¿îµå ÇÁ·Î¼¼½º: ÀÚ·á¹æÀÌ ºñÁö ¾Ê¾ÒÀ½ \n" " ±×·¡µµ Áö¿ï±î¿ä? " -#: src/file.c:2120 +#: src/file.c:2178 msgid "a&ll" msgstr "¸ðµÎ(&l)" -#: src/file.c:2120 src/filegui.c:488 +#: src/file.c:2178 src/filegui.c:570 msgid "non&E" msgstr "non&E" -#: src/file.c:2130 +#: src/file.c:2188 msgid " Type 'yes' if you REALLY want to delete " msgstr " Á¤¸»·Î Áö¿ì±â¸¦ ¿øÇϽøé 'yes'¸¦ ÀÔ·ÂÇϽʽÿÀ " -#: src/file.c:2132 +#: src/file.c:2190 msgid "all the directories " msgstr "¸ðµç ÀÚ·á¹æ " -#: src/file.c:2134 +#: src/file.c:2192 msgid " Recursive Delete " msgstr " Recursive Áö¿ì±â " -#: src/file.c:2135 +#: src/file.c:2193 msgid " Background process: Recursive Delete " msgstr " ¹é±×¶ó¿îµå ÇÁ·Î¼¼½º: Recursive Áö¿ì±â " -#. -#. Cause emacs to enter folding mode for this file: -#. Local variables: -#. end: -#. -#. -#. * This array introduced to avoid translation problems. The former (op_names) -#. * is assumed to be nouns, suitable in dialog box titles; this one should -#. * contain whatever is used in prompt itself (i.e. in russian, it's verb). -#. * Notice first symbol - it is to fool gettext and force these strings to -#. * be different for it. First symbol is skipped while building a prompt. -#. * (I don't use spaces around the words, because someday they could be -#. * dropped, when widgets get smarter) -#. -#: src/file.c:2223 -msgid "1Copy" -msgstr "1Copy" - -#: src/file.c:2223 -msgid "1Move" -msgstr "1Move" - -#: src/file.c:2223 -msgid "1Delete" -msgstr "1Delete" - -#: src/file.c:2238 -#, c-format -msgid "%o %f \"%s\"%m" -msgstr "%o %f \"%s\"%m" - -#: src/file.c:2239 -#, c-format -msgid "%o %d %f%m" -msgstr "%o %d %f%m" - -#: src/file.c:2241 -#, c-format -msgid "%o %f \"%s\"%e" -msgstr "%o %f \"%s\"%e" - -#: src/file.c:2242 -#, c-format -msgid "%o %d %f%e" -msgstr "%o %d %f%e" - -#: src/file.c:2246 -msgid "file" -msgstr "file" - -#: src/file.c:2246 -msgid "files" -msgstr "files" - -#: src/file.c:2246 -msgid "directory" -msgstr "directory" - -#: src/file.c:2246 -msgid "directories" -msgstr "directories" - -#: src/file.c:2247 -msgid "files/directories" -msgstr "files/directories" - -#: src/file.c:2247 -msgid " with source mask:" -msgstr " with source mask:" - -#: src/filegui.c:375 +#: src/filegui.c:430 msgid "Count" msgstr "°¹¼ö" -#: src/filegui.c:387 +#: src/filegui.c:449 msgid "Bytes" msgstr "¹ÙÀÌÆ®" -#: src/filegui.c:416 +#: src/filegui.c:484 msgid "Source" msgstr "¿øº»" -#: src/filegui.c:430 +#: src/filegui.c:505 msgid "Target" msgstr "´ë»ó" -#: src/filegui.c:443 +#: src/filegui.c:525 msgid "Deleting" msgstr "Áö¿ì±â" -#: src/filegui.c:483 +#: src/filegui.c:565 #, c-format msgid "Target file \"%s\" already exists!" msgstr "´ë»ó ÆÄÀÏ \"%s\"ÀÌ ÀÌ¹Ì Àִµ¥¿ä!" -#: src/filegui.c:486 +#: src/filegui.c:568 msgid "if &Size differs" msgstr "Å©±â(&S)°¡ Ʋ¸®¸é" -#: src/filegui.c:489 +#: src/filegui.c:571 msgid "&Update" msgstr "°»½Å(&U)" -#: src/filegui.c:490 +#: src/filegui.c:572 msgid "al&L" msgstr "¸ðµÎ(&L)" -#: src/filegui.c:491 +#: src/filegui.c:573 msgid "Overwrite all targets?" msgstr "¸ðµÎ µ¤¾î¾µ±î¿ä?" -#: src/filegui.c:493 +#: src/filegui.c:575 msgid "&Reget" msgstr "&Reget" -#: src/filegui.c:494 +#: src/filegui.c:576 msgid "ap&Pend" msgstr "ap&Pend" -#: src/filegui.c:497 +#: src/filegui.c:579 msgid "Overwrite this target?" msgstr "ÀÌ ÆÄÀÏÀ» µ¤¾î¾µ±î¿ä?" -#: src/filegui.c:499 +#: src/filegui.c:581 #, c-format msgid "Target date: %s, size %d" msgstr "´ë»ó ³¯Â¥: %s, Å©±â %d" -#: src/filegui.c:501 +#: src/filegui.c:583 #, c-format msgid "Source date: %s, size %d" msgstr "¿øº» ³¯Â¥: %s, Å©±â %d" -#: src/filegui.c:589 +#: src/filegui.c:667 msgid " File exists " msgstr " ÆÄÀÏ ÀÖÀ½ " -#: src/filegui.c:589 +#: src/filegui.c:668 msgid " Background process: File exists " msgstr " ¹é±×¶ó¿îµå ÇÁ·Î¼¼½º: ÆÄÀÏ ÀÖÀ½ " #. follow symlinks and preserve Attributes must be the first -#: src/filegui.c:683 +#: src/filegui.c:778 msgid "preserve &Attributes" msgstr "ÆÄÀÏ ¼Ó¼º º¸Á¸(&A)" -#: src/filegui.c:685 +#. &op_preserve +#: src/filegui.c:780 msgid "follow &Links" msgstr "¸µÅ© µû¸£±â(&L)" -#: src/filegui.c:694 +#. &file_mask_op_follow_links +#: src/filegui.c:782 msgid "to:" msgstr "´ë»ó:" -#: src/filegui.c:695 +#: src/filegui.c:783 msgid "&Using shell patterns" msgstr "¸í·ÉÇØ¼®±â ÆÐÅÏ »ç¿ë(&U)" -#: src/filegui.c:716 +#: src/filegui.c:804 msgid "&Background" msgstr "&Background" -#: src/filegui.c:725 +#: src/filegui.c:813 msgid "&Stable Symlinks" msgstr "&Stable ½Éº¼¸¯¸µÅ©" -#: src/filegui.c:727 +#. &file_mask_stable_symlinks +#: src/filegui.c:815 msgid "&Dive into subdir if exists" msgstr "°°Àº ÀÚ·á¹æ Á¸Àç½Ã ±× ¹ØÀ¸·Î(&D)" -#: src/filegui.c:875 +#: src/filegui.c:974 #, c-format msgid "" "Invalid source pattern `%s' \n" @@ -2874,53 +3296,53 @@ msgid "&Edit - F4" msgstr "ÆíÁý(&E) - F4" -#: src/find.c:153 +#: src/find.c:155 msgid "Start at:" msgstr "½ÃÀÛÀ§Ä¡:" -#: src/find.c:153 +#: src/find.c:155 msgid "Filename:" msgstr "ÆÄÀϸí:" -#: src/find.c:153 +#: src/find.c:155 msgid "Content: " msgstr "³»¿ë: " -#: src/find.c:154 src/main.c:1207 src/main.c:1228 +#: src/find.c:156 src/main.c:1201 src/main.c:1222 msgid "&Tree" msgstr "³ª¹«²Ã(&T)" -#: src/find.c:206 +#: src/find.c:208 msgid "Find File" msgstr "ÆÄÀÏ Ã£±â" -#: src/find.c:433 +#: src/find.c:435 #, c-format msgid "Grepping in %s" msgstr "%s¿¡¼­ ¹®ÀÚ¿­ ã´Â Áß" -#: src/find.c:471 +#: src/find.c:473 msgid " Find/read " msgstr " ã±â/Àбâ " -#: src/find.c:471 +#: src/find.c:473 msgid " Problem reading from child " msgstr " ÀÚ½Ä(child)·Î ºÎÅÍ ÀÐÀ» ¼ö ¾øÀ½ " -#: src/find.c:515 +#: src/find.c:520 msgid "Finished" msgstr "³¡³µ¾î¿ä" -#: src/find.c:535 src/view.c:1450 +#: src/find.c:544 src/view.c:1450 #, c-format msgid "Searching %s" msgstr "%s ã´Â Áß" -#: src/find.c:667 src/find.c:784 +#: src/find.c:676 src/find.c:793 msgid "Searching" msgstr "ã´Â Áß" -#: src/find.c:759 +#: src/find.c:768 msgid "Find file" msgstr "ÆÄÀÏ Ã£±â" @@ -2984,101 +3406,101 @@ msgid "Prev" msgstr "ÀÌÀü" -#: src/hotlist.c:134 +#: src/hotlist.c:135 msgid "&Move" msgstr "À̵¿(&M)" -#: src/hotlist.c:135 src/hotlist.c:1437 src/panelize.c:92 src/wtools.c:386 +#: src/hotlist.c:136 src/hotlist.c:1438 src/panelize.c:92 src/wtools.c:386 msgid "&Remove" msgstr "Áö¿ì±â(&R)" -#: src/hotlist.c:136 src/hotlist.c:816 src/hotlist.c:909 +#: src/hotlist.c:137 src/hotlist.c:817 src/hotlist.c:910 msgid "&Append" msgstr "Ãß°¡(&A)" -#: src/hotlist.c:137 src/hotlist.c:814 src/hotlist.c:907 +#: src/hotlist.c:138 src/hotlist.c:815 src/hotlist.c:908 msgid "&Insert" msgstr "»ðÀÔ(&I)" -#: src/hotlist.c:138 +#: src/hotlist.c:139 msgid "New &Entry" msgstr "»õ ¿£Æ®¸®(&E)" -#: src/hotlist.c:139 +#: src/hotlist.c:140 msgid "New &Group" msgstr "»õ Áý´Ü(&G)" -#: src/hotlist.c:141 +#: src/hotlist.c:142 msgid "&Up" msgstr "À§·Î(&U)" -#: src/hotlist.c:142 +#: src/hotlist.c:143 msgid "&Add current" msgstr "Çö ÆÐ³Î Ãß°¡(&A)" -#: src/hotlist.c:143 +#: src/hotlist.c:144 msgid "Change &To" msgstr "..·Î ¹Ù²Ù±â(&T)" -#: src/hotlist.c:203 +#: src/hotlist.c:204 msgid "Subgroup - press ENTER to see list" msgstr "ÇÏÀ§Áý´Ü - º¸·Á¸é ENTER¸¦ ´©¸£½Ê½Ã¿À" -#: src/hotlist.c:622 +#: src/hotlist.c:623 msgid "Active VFS directories" msgstr "Ȱ¼º VFS ÀÚ·á¹æ" -#: src/hotlist.c:622 +#: src/hotlist.c:623 msgid "Directory hotlist" msgstr "ÀÚ·á¹æ ´ÜÃà¸ñ·Ï" -#: src/hotlist.c:641 +#: src/hotlist.c:642 msgid " Directory path " msgstr " ÀÚ·á¹æ °æ·Î " #. This one holds the displayed pathname -#: src/hotlist.c:644 src/hotlist.c:691 +#: src/hotlist.c:645 src/hotlist.c:692 msgid " Directory label " msgstr " ÀÚ·á¹æ ²¿¸®Ç¥ " -#: src/hotlist.c:665 +#: src/hotlist.c:666 msgid "Moving " msgstr "À̵¿ " -#: src/hotlist.c:886 +#: src/hotlist.c:887 msgid "New hotlist entry" msgstr "»õ ´ÜÃà¸ñ·Ï ¿£Æ®¸®" -#: src/hotlist.c:886 +#: src/hotlist.c:887 msgid "Directory label" msgstr "ÀÚ·á¹æ ²¿¸®Ç¥" -#: src/hotlist.c:886 +#: src/hotlist.c:887 msgid "Directory path" msgstr "ÀÚ·á¹æ °æ·Î" -#: src/hotlist.c:966 +#: src/hotlist.c:967 msgid " New hotlist group " msgstr " »õ ´ÜÃà¸ñ·Ï Áý´Ü " -#: src/hotlist.c:966 +#: src/hotlist.c:967 msgid "Name of new group" msgstr "»õ Áý´ÜÀÇ À̸§" -#: src/hotlist.c:981 +#: src/hotlist.c:982 #, c-format msgid "Label for \"%s\":" msgstr "\"%s\"ÀÇ ²¿¸®Ç¥:" -#: src/hotlist.c:986 +#: src/hotlist.c:987 msgid " Add to hotlist " msgstr " ´ÜÃà¸ñ·Ï¿¡ Ãß°¡ " -#: src/hotlist.c:1023 +#: src/hotlist.c:1024 msgid " Remove: " msgstr " Áö¿ì±â: " -#: src/hotlist.c:1027 +#: src/hotlist.c:1028 msgid "" "\n" " Group not empty.\n" @@ -3088,51 +3510,51 @@ " ºñ¾îÀÖÁö ¾ÊÀº Áý´ÜÀÔ´Ï´Ù.\n" " Áö¿ï±î¿ä?" -#: src/hotlist.c:1372 +#: src/hotlist.c:1373 msgid " Top level group " msgstr " ÃÖ»óÀ§ Áý´Ü " -#: src/hotlist.c:1388 +#: src/hotlist.c:1389 msgid "Hotlist is now kept in file ~/" msgstr "Hotlist is now kept in file ~/" -#: src/hotlist.c:1390 +#: src/hotlist.c:1391 msgid "MC will load hotlist from ~/" msgstr "MC will load hotlist from ~/" -#: src/hotlist.c:1392 +#: src/hotlist.c:1393 msgid "and then delete [Hotlist] section there" msgstr "and then delete [Hotlist] section there" -#: src/hotlist.c:1394 src/hotlist.c:1413 src/hotlist.c:1436 src/hotlist.c:1461 +#: src/hotlist.c:1395 src/hotlist.c:1414 src/hotlist.c:1437 src/hotlist.c:1462 msgid " Hotlist Load " msgstr " ´ÜÃà¸ñ·Ï ºÒ·¯¿À±â " -#: src/hotlist.c:1410 src/hotlist.c:1458 +#: src/hotlist.c:1411 src/hotlist.c:1459 msgid "MC was unable to write ~/" msgstr "MC was unable to write ~/" -#: src/hotlist.c:1411 +#: src/hotlist.c:1412 msgid " file, your old hotlist entries were not deleted" msgstr " file, your old hotlist entries were not deleted" -#: src/hotlist.c:1425 +#: src/hotlist.c:1426 msgid "You have ~/" msgstr "You have ~/" -#: src/hotlist.c:1425 +#: src/hotlist.c:1426 msgid " file and [Hotlist] section in ~/" msgstr " file and [Hotlist] section in ~/" -#: src/hotlist.c:1426 +#: src/hotlist.c:1427 msgid "Your ~/" msgstr "Your ~/" -#: src/hotlist.c:1426 +#: src/hotlist.c:1427 msgid " most probably was created\n" msgstr " most probably was created\n" -#: src/hotlist.c:1427 +#: src/hotlist.c:1428 msgid "" "by an earlier development version of MC\n" "and is more actual than ~/" @@ -3140,7 +3562,7 @@ "by an earlier development version of MC\n" "and is more actual than ~/" -#: src/hotlist.c:1428 +#: src/hotlist.c:1429 msgid "" " entries\n" "\n" @@ -3148,7 +3570,7 @@ " entries\n" "\n" -#: src/hotlist.c:1429 +#: src/hotlist.c:1430 msgid "" "You can choose between\n" "\n" @@ -3158,7 +3580,7 @@ "\n" " Remove - remove old hotlist entries from ~/" -#: src/hotlist.c:1431 +#: src/hotlist.c:1432 msgid "" " Keep - keep your old entries; you will be asked\n" " the same question next time\n" @@ -3168,185 +3590,185 @@ " the same question next time\n" " Merge - add old entries to hotlist as group \"Entries from ~/" -#: src/hotlist.c:1437 +#: src/hotlist.c:1438 msgid "&Merge" msgstr "ÇÕÄ¡±â(&M)" -#: src/hotlist.c:1449 +#: src/hotlist.c:1450 msgid " Entries from ~/" msgstr " Entries from ~/" -#: src/hotlist.c:1459 +#: src/hotlist.c:1460 msgid " file your old hotlist entries were not deleted" msgstr " file your old hotlist entries were not deleted" -#: src/info.c:81 +#: src/info.c:82 #, c-format msgid "Midnight Commander %s" msgstr "Midnight Commander %s" -#: src/info.c:113 +#: src/info.c:114 msgid "Free nodes %d (%d%%) of %d" msgstr "ºó ³ëµå: %d (%d%%) of %d" -#: src/info.c:119 +#: src/info.c:120 msgid "No node information" msgstr "³ëµå Á¤º¸ ¾øÀ½" -#: src/info.c:124 +#: src/info.c:125 msgid "Free space " msgstr "ºó °ø°£:" -#: src/info.c:126 +#: src/info.c:127 msgid " (%d%%) of " msgstr " (%d%%) of " -#: src/info.c:130 +#: src/info.c:131 msgid "No space information" msgstr "ºó °ø°£: Á¤º¸ ¾øÀ½" -#: src/info.c:134 +#: src/info.c:135 #, c-format msgid "Type: %s " msgstr "Á¾·ù: %s " -#: src/info.c:134 +#: src/info.c:135 msgid "non-local vfs" msgstr "¿ø°Ý vfs" -#: src/info.c:140 +#: src/info.c:141 #, c-format msgid "Device: %s" msgstr "µð¹ÙÀ̽º: %s" -#: src/info.c:144 +#: src/info.c:145 #, c-format msgid "Filesystem: %s" msgstr "ÆÄÀÏü°è: %s" -#: src/info.c:149 +#: src/info.c:150 #, c-format msgid "Accessed: %s" msgstr "¾×¼¼½ºÀÏ: %s" -#: src/info.c:153 +#: src/info.c:154 #, c-format msgid "Modified: %s" msgstr "¼öÁ¤ÀÏ: %s" -#: src/info.c:157 +#: src/info.c:158 #, c-format msgid "Created: %s" msgstr "»ý¼ºÀÏ: %s" -#: src/info.c:170 +#: src/info.c:171 msgid "Size: " msgstr "Å©±â: " -#: src/info.c:173 +#: src/info.c:174 #, c-format msgid " (%d blocks)" msgstr " (%d ±¸¿ª)" -#: src/info.c:179 +#: src/info.c:180 #, c-format msgid "Owner: %s/%s" msgstr "¼ÒÀ¯ÀÚ: %s/%s" -#: src/info.c:184 +#: src/info.c:185 #, c-format msgid "Links: %d" msgstr "¸µÅ©: %d" -#: src/info.c:188 +#: src/info.c:189 #, c-format msgid "Mode: %s (%04o)" msgstr "¸ðµå: %s (%04o)" -#: src/info.c:193 +#: src/info.c:194 #, c-format msgid "Location: %Xh:%Xh" msgstr "À§Ä¡: %Xh:%Xh" -#: src/info.c:199 +#: src/info.c:200 #, c-format msgid "File: %s" msgstr "ÆÄÀÏ: %s" -#: src/info.c:203 +#: src/info.c:204 msgid "File: None" msgstr "ÆÄÀÏ: ¾Æ´Ô" -#: src/layout.c:159 +#: src/layout.c:161 msgid "&Vertical" msgstr "¼öÁ÷(&V)" -#: src/layout.c:160 +#: src/layout.c:162 msgid "&Horizontal" msgstr "¼öÆò(&H)" -#: src/layout.c:170 +#: src/layout.c:172 msgid "&Xterm hintbar" msgstr "X Å͹̳ΠÈùÆ®¹Ù(&X)" -#: src/layout.c:171 +#: src/layout.c:173 msgid "h&Intbar visible" msgstr "ÈùÆ®¹Ù º¸À̱â(&I)" -#: src/layout.c:172 +#: src/layout.c:174 msgid "&Keybar visible" msgstr "±Û¼è¹Ù º¸À̱â(&K)" -#: src/layout.c:173 +#: src/layout.c:175 msgid "command &Prompt" msgstr "¸í·É ÇÁ·ÒÇÁÆ®&P)" -#: src/layout.c:174 +#: src/layout.c:176 msgid "show &Mini status" msgstr "¹Ì´Ï »óŹ٠º¸À̱â(&M)" -#: src/layout.c:175 +#: src/layout.c:177 msgid "menu&Bar visible" msgstr "¸Þ´º¹Ù º¸À̱â(&B)" -#: src/layout.c:176 +#: src/layout.c:178 msgid "&Equal split" msgstr "°°Àº ³Êºñ·Î(&E)" -#: src/layout.c:177 +#: src/layout.c:179 msgid "pe&Rmissions" msgstr "Çã¿ë(&R)" -#: src/layout.c:178 +#: src/layout.c:180 msgid "&File types" msgstr "ÆÄÀÏ Á¾·ù(&F)" -#: src/layout.c:372 src/learn.c:62 src/learn.c:181 src/option.c:146 +#: src/layout.c:374 src/learn.c:62 src/learn.c:181 src/option.c:146 msgid "&Save" msgstr "ÀúÀå(&S)" #. length of line with '<' '>' buttons -#: src/layout.c:380 +#: src/layout.c:382 msgid " Layout " msgstr " ¹èÄ¡ " -#: src/layout.c:381 +#: src/layout.c:383 msgid " Panel split " msgstr " ÆÐ³Î ºÐ¸® " -#: src/layout.c:382 +#: src/layout.c:384 msgid " Highlight... " msgstr " ÇÏÀ̶óÀÌÆ®... " -#: src/layout.c:383 src/option.c:157 +#: src/layout.c:385 src/option.c:157 msgid " Other options " msgstr " ±âŸ ¼±ÅÃÇ׸ñ " -#: src/layout.c:384 +#: src/layout.c:386 msgid "output lines" msgstr "output lines" -#: src/layout.c:451 +#: src/layout.c:453 msgid "Layout" msgstr "¹èÄ¡" @@ -3428,7 +3850,7 @@ msgid "key, or click with the mouse to define it. Move around with Tab." msgstr "³ª ¸¶¿ì½º·Î Ŭ¸¯ÇÑ ÈÄ ±Û¼è¸¦ Á¤ÀÇÇϽʽÿÀ. ÅDZۼè·Î À̵¿ÇϽʽÿÀ" -#: src/main.c:661 +#: src/main.c:668 msgid "" " The Commander can't change to the directory that \n" " the subshell claims you are in. Perhaps you have \n" @@ -3440,251 +3862,247 @@ " ÀÛ¾÷ ÀÚ·á¹æÀ» Áö¿ü°Å³ª, ¾Æ´Ï¸é \"su\" ¸í·ÉÀ»\n" " »ç¿ëÇÏ¿© Ưº°ÇÑ ¾×¼¼½º ±ÇÇÑÀ» °¡Áø °Í ¾Æ³é¿ä? " -#: src/main.c:736 +#: src/main.c:743 msgid "Press any key to continue..." msgstr "°è¼ÓÇÏ·Á¸é ¾Æ¹« ±Û¼è³ª ´©¸£½Ê½Ã¿À..." -#: src/main.c:786 +#: src/main.c:793 msgid " The shell is already running a command " msgstr " ¸í·ÉÇØ¼®±â°¡ ÀÌ¹Ì ¸í·ÉÀ» ¼öÇàÁßÀÔ´Ï´Ù " -#: src/main.c:1204 src/main.c:1225 +#: src/main.c:1198 src/main.c:1219 msgid "&Listing mode..." msgstr "ÆÄÀϸñ·Ïº¸±â ¼³Á¤(&L)..." -#: src/main.c:1205 src/main.c:1226 +#: src/main.c:1199 src/main.c:1220 msgid "&Quick view C-x q" msgstr "ºü¸£°Ô º¸±â(&Q) C-x q" -#: src/main.c:1206 src/main.c:1227 +#: src/main.c:1200 src/main.c:1221 msgid "&Info C-x i" msgstr "Á¤º¸(&I) C-x i" -#: src/main.c:1209 src/main.c:1230 +#: src/main.c:1203 src/main.c:1224 msgid "&Sort order..." msgstr "Á¤·Ä ¼ø¼­(&S)..." -#: src/main.c:1211 src/main.c:1232 +#: src/main.c:1205 src/main.c:1226 msgid "&Filter..." -msgstr "°Å¸£°³(&F)..." +msgstr "ÇÊÅÍ(&F)..." -#: src/main.c:1214 src/main.c:1235 +#: src/main.c:1208 src/main.c:1229 msgid "&Network link..." msgstr "³×Æ®¿öÅ© ¿¬°á(&N)..." -#: src/main.c:1215 src/main.c:1236 +#: src/main.c:1209 src/main.c:1230 msgid "FT&P link..." msgstr "FTP ¿¬°á(&P)..." -#: src/main.c:1219 src/main.c:1240 +#: src/main.c:1213 src/main.c:1234 msgid "&Drive... M-d" msgstr "µå¶óÀ̺ê(&D)... M-d" -#: src/main.c:1221 src/main.c:1242 +#: src/main.c:1215 src/main.c:1236 msgid "&Rescan C-r" msgstr "´Ù½Ã Àбâ(&R) C-r" -#: src/main.c:1246 +#: src/main.c:1240 msgid "&User menu F2" msgstr "»ç¿ëÀÚ ¸Þ´º(&U) F2" -#: src/main.c:1247 +#: src/main.c:1241 msgid "&View F3" msgstr "º¸±â(&V) F3" -#: src/main.c:1248 +#: src/main.c:1242 msgid "Vie&w file... " msgstr "ÆÄÀÏ º¸±â(&w)... " -#: src/main.c:1249 +#: src/main.c:1243 msgid "&Filtered view M-!" -msgstr "°Å¸£°³·Î º¸±â(&F) M-!" +msgstr "ÇÊÅÍ·Î º¸±â(&F) M-!" -#: src/main.c:1250 +#: src/main.c:1244 msgid "&Edit F4" msgstr "ÆíÁý(&E) F4" -#: src/main.c:1251 +#: src/main.c:1245 msgid "&Copy F5" msgstr "º¹»ç(&C) F5" -#: src/main.c:1252 +#: src/main.c:1246 msgid "c&Hmod C-x c" msgstr "ÆÄÀÏ ¸ðµå ¹Ù²Ù±â(&H) C-x c" -#: src/main.c:1254 +#: src/main.c:1248 msgid "&Link C-x l" msgstr "¸µÅ©(&L) C-x l" -#: src/main.c:1255 +#: src/main.c:1249 msgid "&SymLink C-x s" msgstr "½Éº¼¸¯¸µÅ©(&S) C-x s" -#: src/main.c:1256 +#: src/main.c:1250 msgid "edit s&Ymlink C-x C-s" msgstr "½Éº¼¸¯¸µÅ© ¼öÁ¤(&Y) C-x C-s" -#: src/main.c:1257 +#: src/main.c:1251 msgid "ch&Own C-x o" msgstr "¼ÒÀ¯ÀÚ ¹Ù²Ù±â(&O) C-x o" -#: src/main.c:1258 +#: src/main.c:1252 msgid "&Advanced chown " msgstr "°í±Þ ¼ÒÀ¯ÀÚ ¹Ù²Ù±â(&A) " -#: src/main.c:1260 +#: src/main.c:1254 msgid "&Rename/Move F6" msgstr "¹Ù²Ù±â/À̵¿(&R) F6" -#: src/main.c:1261 +#: src/main.c:1255 msgid "&Mkdir F7" msgstr "ÀÚ·á¹æ »ý¼º(&M) F7" -#: src/main.c:1262 +#: src/main.c:1256 msgid "&Delete F8" msgstr "Áö¿ì±â(&D) F8" -#: src/main.c:1263 +#: src/main.c:1257 msgid "&Quick cd M-c" msgstr "ÀÚ·á¹æ »¡¸® ¹Ù²Ù±â(&Q) M-c" -#: src/main.c:1265 +#: src/main.c:1259 msgid "select &Group M-+" msgstr "Áý´Ü¼±ÅÃ(&G) M-+" -#: src/main.c:1266 +#: src/main.c:1260 msgid "u&Nselect group M-\\" msgstr "Áý´Ü¼±ÅÃ ÇØÁ¦(&N) M-\\" -#: src/main.c:1267 +#: src/main.c:1261 msgid "reverse selec&Tion M-*" msgstr "¼±ÅùÝÀü(&T) M-*" -#: src/main.c:1269 +#: src/main.c:1263 msgid "e&Xit F10" msgstr "Á¾·á(&X) F10" -#: src/main.c:1279 +#: src/main.c:1273 msgid "&Directory tree" msgstr "ÀÚ·á¹æ ³ª¹«²Ã(&D)" -#: src/main.c:1281 +#: src/main.c:1275 msgid "&Find file M-?" msgstr "ÆÄÀÏ Ã£±â(&F) M-?" -#: src/main.c:1282 +#: src/main.c:1276 msgid "s&Wap panels C-u" msgstr "ÆÐ³Î ¹Ù²Ù±â(&W) C-u" -#: src/main.c:1283 +#: src/main.c:1277 msgid "switch &Panels on/off C-o" msgstr "ÆÐ³Î ¿­±â/´Ý±â(&P) C-o" -#: src/main.c:1284 +#: src/main.c:1278 msgid "&Compare directories C-x d" msgstr "ÀÚ·á¹æ ºñ±³(&C) C-x d" -#: src/main.c:1285 +#: src/main.c:1279 msgid "e&Xternal panelize C-x !" msgstr "¿ÜºÎ¸í·É ÆÐ³ÎÈ­Çϱâ(&X) C-x !" -#: src/main.c:1286 +#: src/main.c:1280 msgid "show directory s&Izes" msgstr "ÀÚ·á¹æ Å©±â º¸±â(&I)" -#: src/main.c:1288 +#: src/main.c:1282 msgid "command &History" msgstr "¸í·É È÷½ºÅ丮(&H)" -#: src/main.c:1289 +#: src/main.c:1283 msgid "di&Rectory hotlist C-\\" msgstr "ÀÚ·á¹æ ´ÜÃà¸ñ·Ï(&R) C-\\" -#: src/main.c:1291 +#: src/main.c:1285 msgid "&Active VFS list C-x a" msgstr "Ȱ¼º VFS ¸ñ·Ï(&A) C-x a" -#: src/main.c:1294 +#: src/main.c:1288 msgid "&Background jobs C-x j" msgstr "¹é±×¶ó¿îµå jobs(&B) C-x j" -#: src/main.c:1298 +#: src/main.c:1292 msgid "&Undelete files (ext2fs only)" msgstr "ÆÄÀÏ µÇ»ì¸² (est2fs¸¸ °¡´É)" -#: src/main.c:1301 +#: src/main.c:1295 msgid "&Listing format edit" msgstr "ÆÄÀÏ ¸ñ·Ï Çü½Ä ¹Ù²Ù±â(&L)" -#: src/main.c:1303 +#: src/main.c:1297 msgid "&Extension file edit" msgstr "È®ÀåÀÚ ÆÄÀÏ ¼öÁ¤(&E)" -#: src/main.c:1304 +#: src/main.c:1298 msgid "&Menu file edit" msgstr "¸Þ´º ÆÄÀÏ ¼öÁ¤(&M)" -#: src/main.c:1309 +#: src/main.c:1303 msgid "&Configuration..." msgstr "ȯ°æ¼³Á¤(&C)..." -#: src/main.c:1310 -msgid "&Layout..." -msgstr "¹èÄ¡(&L)..." - -#: src/main.c:1311 +#: src/main.c:1305 msgid "c&Onfirmation..." msgstr "È®ÀÎ(&O)..." -#: src/main.c:1312 +#: src/main.c:1306 msgid "&Display bits..." msgstr "Ãâ·Â ºñÆ®(&D)..." -#: src/main.c:1314 +#: src/main.c:1308 msgid "learn &Keys..." msgstr "±Û¼è ¹è¿ì±â(&K)..." -#: src/main.c:1317 +#: src/main.c:1311 msgid "&Virtual FS..." msgstr "°¡»ó ÆÄÀÏü°è(&V)..." -#: src/main.c:1320 +#: src/main.c:1314 msgid "&Save setup" msgstr "ȯ°æ ÀúÀå(&S)" -#: src/main.c:1336 src/main.c:1338 +#: src/main.c:1330 src/main.c:1332 msgid " &Left " msgstr " ¿ÞÂÊ(&L) " -#: src/main.c:1338 +#: src/main.c:1332 msgid " &Above " msgstr " À§(&A) " -#: src/main.c:1341 +#: src/main.c:1335 msgid " &File " msgstr " ÆÄÀÏ(&F) " -#: src/main.c:1342 +#: src/main.c:1336 msgid " &Command " msgstr " ¸í·É(&C) " -#: src/main.c:1343 +#: src/main.c:1337 msgid " &Options " msgstr " ¼±ÅÃÇ׸ñ(&O) " -#: src/main.c:1345 src/main.c:1347 +#: src/main.c:1339 src/main.c:1341 msgid " &Right " msgstr " ¿À¸¥ÂÊ(&R) " -#: src/main.c:1347 +#: src/main.c:1341 msgid " &Below " msgstr " ¾Æ·¡(&B) " -#: src/main.c:1402 +#: src/main.c:1396 msgid " Information " msgstr " Á¤º¸ " -#: src/main.c:1403 +#: src/main.c:1397 msgid "" " Using the fast reload option may not reflect the exact \n" " directory contents. In this cases you'll need to do a \n" @@ -3696,51 +4114,51 @@ " ´ç½ÅÀº ¼öµ¿À¸·Î ÀÚ·á¹æÀ» ´Ù½Ã Àоî¾ß¸¸ ÇÕ´Ï´Ù. \n" " ÀÚ¼¼ÇÑ ³»¿ëÀ» ¾Ë°í ½ÍÀ¸½Ã¸é ¼³¸í¼­¸¦ º¸½Ê½Ã¿À. " -#: src/main.c:1677 src/screen.c:2278 src/screen.c:2308 +#: src/main.c:1671 src/screen.c:2300 src/screen.c:2330 msgid "Menu" msgstr "¸Þ´º" -#: src/main.c:1882 +#: src/main.c:1876 msgid "Thank you for using GNU Midnight Commander" msgstr "GNU Midnight Commander¸¦ »ç¿ëÇØÁּż­ °¨»çÇÕ´Ï´Ù" -#: src/main.c:2235 +#: src/main.c:2229 #, c-format msgid "with mouse support on xterm%s.\n" msgstr "with mouse support on xterm%s.\n" -#: src/main.c:2236 +#: src/main.c:2230 msgid " and the Linux console" msgstr " and the Linux console" -#: src/main.c:2331 +#: src/main.c:2325 msgid "The TERM environment variable is unset!\n" msgstr "TERM ȯ°æº¯¼ö°¡ ¼³Á¤µÇ¾îÀÖÁö ¾Ê½À´Ï´Ù!\n" -#: src/main.c:2533 +#: src/main.c:2527 #, c-format msgid "Library directory for the Midnight Commander: %s\n" msgstr "Midnight Commander¿ë ¶óÀ̺귯¸® ÀÚ·á¹æ: %s\n" -#: src/main.c:2538 +#: src/main.c:2532 msgid "" "Option -m is obsolete. Please look at Display Bits... in the Option's menu\n" msgstr "" "-m ¼±ÅÃÇ׸ñÀº Àǹ̰¡ ¾ø½À´Ï´Ù. ¼±ÅÃÇ׸ñ ¸Þ´ºÀÇ 'Ãâ·Â ºñÆ®'¸¦ º¸½Ê½Ã¿À\n" -#: src/main.c:2661 +#: src/main.c:2655 msgid "Geometry for the window" msgstr "âÀÇ Å©±â/À§Ä¡" -#: src/main.c:2661 +#: src/main.c:2655 msgid "GEOMETRY" msgstr "" -#: src/main.c:2662 +#: src/main.c:2656 msgid "No windows opened at startup" msgstr "½ÃÀÛÇÒ ¶§ âÀ» ¿­Áö ¾Ê¾Æ¿ä" -#: src/main.c:2883 +#: src/main.c:2925 msgid "" "Couldn't open tty line. You have to run mc without the -P flag.\n" "On some systems you may want to run # `which mc`\n" @@ -3748,11 +4166,11 @@ "tty ¼±À» ¿­¼ö ¾ø³×¿ä. ´ç½ÅÀº -P ¼±ÅÃÇ׸ñ¾øÀÌ MC¸¦ ½ÇÇàÇØ¾ß ÇÕ´Ï´Ù.\n" "ƯÁ¤ ü°è¿¡¼­´Â # `which mc` ¿Í °°ÀÌ ½ÇÇàÇÒ ¼öµµ ÀÖ½À´Ï´Ù.\n" -#: src/main.c:2970 +#: src/main.c:2999 msgid " Notice " msgstr " Notice " -#: src/main.c:2971 +#: src/main.c:3000 msgid "" " The Midnight Commander configuration files \n" " are now stored in the ~/.mc directory, the \n" @@ -3812,7 +4230,7 @@ #: src/option.c:90 msgid "Compute &Totals" -msgstr "" +msgstr "Compute &Totals" #: src/option.c:91 msgid "&Verbose operation" @@ -3897,11 +4315,8 @@ #: src/panelize.c:305 msgid " I can't run external panelize while logged on a non local directory " -msgstr " ¿ø°Ý ÀÚ·á¹æÀ¸·Î ·Î±×ÇÑ °æ¿ì¿¡´Â ¿ÜºÎ ÆÐ³ÎÈ­ ¸í·ÉÀ» ½ÇÇàÇÒ ¼ö ¾ø½À´Ï´Ù " - -#: src/panelize.c:354 -msgid "Find rejects after patching" -msgstr "±â¿î ÈÄ °ÅºÎÆÄÀÏÀÌ »ý°å½À´Ï´Ù" +msgstr "" +" ¿ø°Ý ÀÚ·á¹æÀ¸·Î ·Î±×ÇÑ °æ¿ì¿¡´Â ¿ÜºÎ ÆÐ³ÎÈ­ ¸í·ÉÀ» ½ÇÇàÇÒ ¼ö ¾ø½À´Ï´Ù " #: src/panelize.c:355 msgid "Find *.orig after patching" @@ -3927,76 +4342,72 @@ msgid "Display brief usage message" msgstr "°£´ÜÇÑ »ç¿ë ¸Þ½ÃÁö Ãâ·Â" -#: src/screen.c:424 src/screen.c:427 -msgid "Size" -msgstr "Å©±â" - -#: src/screen.c:426 +#: src/screen.c:445 msgid "MTime" msgstr "MTime" -#: src/screen.c:428 +#: src/screen.c:447 msgid "Permission" msgstr "Çã¿ë" -#: src/screen.c:429 +#: src/screen.c:448 msgid "Perm" msgstr "Perm" -#: src/screen.c:430 +#: src/screen.c:449 msgid "|" msgstr "|" -#: src/screen.c:431 +#: src/screen.c:450 msgid "Nl" msgstr "Nl" -#: src/screen.c:432 +#: src/screen.c:451 msgid "GID" msgstr "GID" -#: src/screen.c:433 +#: src/screen.c:452 msgid "UID" msgstr "UID" -#: src/screen.c:436 +#: src/screen.c:455 msgid "ATime" msgstr "ATime" -#: src/screen.c:437 +#: src/screen.c:456 msgid "CTime" msgstr "CTime" -#: src/screen.c:441 +#: src/screen.c:460 msgid "Inode" msgstr "Inode" -#: src/screen.c:645 +#: src/screen.c:664 #, c-format msgid " %s bytes in %d file%s" msgstr " %s bytes in %d file%s" -#: src/screen.c:1284 +#: src/screen.c:1304 msgid "Unknow tag on display format: " msgstr "Unknow tag on display format: " -#: src/screen.c:2042 +#: src/screen.c:2064 msgid " Do you really want to execute? " msgstr " Á¤¸»·Î ½ÇÇàÇϽðÚÀ¾´Ï±î? " -#: src/screen.c:2057 +#: src/screen.c:2079 msgid " No action taken " msgstr "" -#: src/screen.c:2282 src/screen.c:2312 src/tree.c:1486 +#: src/screen.c:2304 src/screen.c:2334 src/tree.c:1030 msgid "RenMov" msgstr "RenMov" -#: src/screen.c:2283 src/screen.c:2313 src/tree.c:1490 +#: src/screen.c:2305 src/screen.c:2335 src/tree.c:1034 msgid "Mkdir" msgstr "Mkdir" -#: src/screen.c:2299 +#: src/screen.c:2321 #, c-format msgid "" " Can't chdir to %s \n" @@ -4027,7 +4438,7 @@ msgid "Warning: Couldn't change to %s.\n" msgstr "°æ°í: %s·Î ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù.\n" -#: src/tree.c:620 +#: src/tree.c:204 #, c-format msgid "" "Can't open the %s file for writing:\n" @@ -4036,26 +4447,17 @@ "¾²±â À§ÇÑ ÆÄÀÏ %s¸¦ ¿­¼ö ¾ø¾î¿ä:\n" "%s\n" -#: src/tree.c:633 -#, c-format -msgid "" -"Can't write to the %s file:\n" -"%s\n" -msgstr "" -"%s ÆÄÀÏ¿¡ ¾µ ¼ö ¾ø½À´Ï´Ù:\n" -"%s\n" - -#: src/tree.c:1102 +#: src/tree.c:649 #, c-format msgid "Copy \"%s\" directory to:" msgstr "ÀÚ·á¹æ \"%s\"¸¦ º¹»çÇÒ °÷:" -#: src/tree.c:1138 +#: src/tree.c:687 #, c-format msgid "Move \"%s\" directory to:" msgstr "ÀÚ·á¹æ \"%s\"¸¦ À̵¿ÇÒ °÷:" -#: src/tree.c:1145 +#: src/tree.c:694 #, c-format msgid "" " Can't stat the destination \n" @@ -4064,24 +4466,24 @@ " ´ë»ó Á¤º¸(stat)¸¦ ¾Ë¾Æ³¾ ¼ö ¾ø½À´Ï´Ù \n" " %s " -#: src/tree.c:1151 +#: src/tree.c:700 msgid " The destination isn't a directory " msgstr " ÀÚ·á¹æÀÌ ¾Æ´Ï³×¿ä " -#: src/tree.c:1204 +#: src/tree.c:758 #, c-format msgid " Delete %s? " msgstr " %s¸¦ Áö¿ï±î¿ä? " -#: src/tree.c:1246 +#: src/tree.c:790 msgid "Static" msgstr "Static" -#: src/tree.c:1246 +#: src/tree.c:790 msgid "Dynamc" msgstr "Dynamc" -#: src/tree.c:1336 +#: src/tree.c:880 #, c-format msgid "" " Can't chdir to \"%s\" \n" @@ -4090,15 +4492,15 @@ " \"%s\"·Î ÀÚ·á¹æÀ» ¹Ù²Ü ¼ö ¾ø¾î¿ä \n" " %s " -#: src/tree.c:1480 +#: src/tree.c:1024 msgid "Rescan" msgstr "Rescan" -#: src/tree.c:1482 +#: src/tree.c:1026 msgid "Forget" msgstr "Forget" -#: src/tree.c:1495 +#: src/tree.c:1039 msgid "Rmdir" msgstr "Rmdir" @@ -4145,7 +4547,7 @@ msgid " User menu " msgstr " »ç¿ëÀÚ ¸Þ´º " -#: src/util.c:235 +#: src/util.c:239 msgid "name_trunc: too big" msgstr "name_trunc: ³Ê¹« ±æ¾î¼­" @@ -4187,7 +4589,7 @@ #: src/view.c:459 msgid " Empty output from child filter " -msgstr " ÀÚ½Ä(child) °Å¸£°³ÀÇ Ãâ·ÂÀÌ ¾Æ¹«°Íµµ ¾ø¾î¿ä " +msgstr " ÀÚ½Ä(child) ÇÊÅÍÀÇ Ãâ·ÂÀÌ ¾Æ¹«°Íµµ ¾ø¾î¿ä " #: src/view.c:464 msgid " Could not open file " @@ -4247,6 +4649,10 @@ msgid "Ascii" msgstr "¾Æ½ºÅ°" +#: src/view.c:1966 +msgid "Hex" +msgstr "½ÊÀ°Áø" + #: src/view.c:1967 msgid "Line" msgstr "ÁÙ" @@ -4267,6 +4673,10 @@ msgid "UnWrap" msgstr "UnWrap" +#: src/view.c:1973 +msgid "Wrap" +msgstr "Wrap" + #: src/view.c:1976 msgid "HxSrch" msgstr "HxSrch" @@ -4482,7 +4892,7 @@ msgid "NumLock on keypad" msgstr "NumLock on keypad" -#: src/wtools.c:590 vfs/vfs.c:1752 +#: src/wtools.c:590 vfs/vfs.c:1822 msgid "Password:" msgstr "ºñ¹Ð¹øÈ£:" @@ -4511,12 +4921,12 @@ msgid "Sorry, we can not do password authenticated connections for now." msgstr "¹Ì¾ÈÇÕ´Ï´Ù. ¾ÆÁ÷ ºñ¹Ð¹øÈ£ ÀÎÁõ ¿¬°áÀº ÇÒ ¼ö ¾ø½À´Ï´Ù." -#: vfs/ftpfs.c:461 +#: vfs/ftpfs.c:466 #, c-format msgid " Could not set source routing (%s)" msgstr " ¼Ò½º ¶ó¿ìÆÃ (%s)¸¦ ¼³Á¤ÇÒ ¼ö ¾ø½À´Ï´Ù" -#: vfs/ftpfs.c:1863 vfs/ftpfs.c:1878 +#: vfs/ftpfs.c:1878 vfs/ftpfs.c:1893 msgid "" "~/.netrc file has not correct mode.\n" "Remove password or correct mode." @@ -4562,11 +4972,11 @@ msgid " Invalid password " msgstr " Ʋ¸° ºñ¹Ð¹øÈ£ " -#: vfs/mcfs.c:322 +#: vfs/mcfs.c:323 msgid " Too many open connections " msgstr " ³Ê¹« ¸¹Àº ¿¬°áÀÌ ÀÌ·ç¾îÁü " -#: vfs/tar.c:88 vfs/tar.c:105 +#: vfs/tar.c:83 vfs/tar.c:100 #, c-format msgid "" "Couldn't open tar archive\n" @@ -4575,16 +4985,15 @@ "Å×ÀÙ ¾ÆÄ«ÀÌºê ÆÄÀÏÀ» ¿­ ¼ö ¾ø½À´Ï´Ù\n" "%s" -#: vfs/tar.c:275 +#: vfs/tar.c:283 msgid "Unexpected EOF on archive file" msgstr "¾ÆÄ«ÀÌºê ÆÄÀÏ¿¡¼­ ±â´ëµÇÁö ¾ÊÀº EOF" -#: vfs/tar.c:330 vfs/tar.c:337 +#: vfs/tar.c:338 vfs/tar.c:345 msgid "Inconsistent tar archive" msgstr "À߸øµÈ Å×ÀÙ ¾ÆÄ«À̺ê" -#. Error on first record -#: vfs/tar.c:396 +#: vfs/tar.c:411 #, c-format msgid "" "Hmm,...\n" diff -ruN old/mc-4.5.7/po/mc.pot new/mc-4.5.9/po/mc.pot --- old/mc-4.5.7/po/mc.pot Tue Jan 12 22:38:13 1999 +++ new/mc-4.5.9/po/mc.pot Mon Jan 18 17:44:14 1999 @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Date: 1999-01-12 21:38:08-0600\n" +"Date: 1999-01-18 16:40:50-0600\n" "From: Miguel de Icaza,computo,622-4680 \n" "Content-Type: text/plain; charset=\n" "Xgettext-Options: --default-domain=mc --directory=.. --add-comments --keyword=_ --keyword=N_ --files-from=./POTFILES.in\n" @@ -27,108 +27,109 @@ msgid " Press any key: " msgstr "" -#: gnome/gcmd.c:55 +#: gnome/gcmd.c:56 msgid " There is no other panel to compare contents to " msgstr "" -#: gnome/gcmd.c:90 +#: gnome/gcmd.c:91 msgid "GNU Midnight Commander" msgstr "" -#: gnome/gcmd.c:93 +#: gnome/gcmd.c:94 msgid "The GNOME edition of the Midnight Commander file manager." msgstr "" -#: gnome/gcmd.c:105 src/main.c:820 src/screen.c:2043 +#: gnome/gcmd.c:106 src/main.c:820 src/screen.c:2064 msgid " The Midnight Commander " msgstr "" -#: gnome/gcmd.c:106 src/main.c:821 +#: gnome/gcmd.c:107 src/main.c:821 msgid " Do you really want to quit the Midnight Commander? " msgstr "" -#: gnome/gcmd.c:107 gtkedit/editcmd.c:2235 src/cmd.c:255 src/file.c:1754 src/file.c:2161 src/filegui.c:496 src/hotlist.c:1030 src/main.c:822 src/screen.c:2045 src/subshell.c:701 src/subshell.c:727 src/tree.c:753 src/view.c:408 +#: gnome/gcmd.c:108 gtkedit/editcmd.c:2235 src/cmd.c:256 src/file.c:1798 src/file.c:2177 src/filegui.c:578 src/hotlist.c:1030 src/main.c:822 src/screen.c:2066 src/subshell.c:701 src/subshell.c:727 src/tree.c:759 src/view.c:408 msgid "&Yes" msgstr "" -#: gnome/gcmd.c:107 gtkedit/editcmd.c:2235 src/cmd.c:255 src/file.c:1754 src/file.c:2161 src/filegui.c:495 src/hotlist.c:1030 src/main.c:822 src/screen.c:2045 src/subshell.c:701 src/subshell.c:727 src/tree.c:753 src/view.c:408 +#: gnome/gcmd.c:108 gtkedit/editcmd.c:2235 src/cmd.c:256 src/file.c:1798 src/file.c:2177 src/filegui.c:577 src/hotlist.c:1030 src/main.c:822 src/screen.c:2066 src/subshell.c:701 src/subshell.c:727 src/tree.c:759 src/view.c:408 msgid "&No" msgstr "" -#: gnome/gcmd.c:205 +#: gnome/gcmd.c:206 msgid "Sort By" msgstr "" -#: gnome/gcmd.c:208 +#. we define this up here so we can pass it in to our callback +#: gnome/gcmd.c:209 msgid "Ignore case sensitivity." msgstr "" -#: gnome/gcmd.c:216 src/chmod.c:151 src/screen.c:424 +#: gnome/gcmd.c:217 src/chmod.c:151 src/screen.c:443 msgid "Name" msgstr "" -#: gnome/gcmd.c:223 +#: gnome/gcmd.c:224 msgid "File Type" msgstr "" -#: gnome/gcmd.c:229 src/screen.c:425 src/screen.c:428 +#: gnome/gcmd.c:230 src/screen.c:444 src/screen.c:447 msgid "Size" msgstr "" -#: gnome/gcmd.c:235 +#: gnome/gcmd.c:236 msgid "Time Last Accessed" msgstr "" -#: gnome/gcmd.c:241 +#: gnome/gcmd.c:242 msgid "Time Last Modified" msgstr "" -#: gnome/gcmd.c:247 +#: gnome/gcmd.c:248 msgid "Time Last Changed" msgstr "" -#: gnome/gcmd.c:261 +#: gnome/gcmd.c:262 msgid "Reverse the order." msgstr "" -#: gnome/gcmd.c:323 +#: gnome/gcmd.c:324 msgid "Enter name." msgstr "" -#: gnome/gcmd.c:328 +#: gnome/gcmd.c:329 msgid "Enter label for command:" msgstr "" -#: gnome/gcmd.c:423 +#: gnome/gcmd.c:424 msgid "Find all core files" msgstr "" -#: gnome/gcmd.c:426 src/panelize.c:354 +#: gnome/gcmd.c:427 src/panelize.c:354 msgid "Find rejects after patching" msgstr "" -#: gnome/gcmd.c:468 +#: gnome/gcmd.c:469 msgid "Run Command" msgstr "" -#: gnome/gcmd.c:472 +#. Frame 1 +#: gnome/gcmd.c:473 msgid "Preset Commands" msgstr "" -#: gnome/gcmd.c:489 +#: gnome/gcmd.c:490 msgid "Add" msgstr "" -#: gnome/gcmd.c:493 +#: gnome/gcmd.c:494 msgid "Remove" msgstr "" -#. Frame 2 -#: gnome/gcmd.c:501 +#: gnome/gcmd.c:502 msgid "Run this Command" msgstr "" -#: gnome/gcmd.c:508 +#: gnome/gcmd.c:509 msgid "Command: " msgstr "" @@ -136,7 +137,7 @@ msgid "Set Filter" msgstr "" -#: gnome/gcmd.c:557 gnome/gcmd.c:598 gnome/gcmd.c:603 gnome/gcmd.c:607 gnome/gscreen.c:2299 +#: gnome/gcmd.c:557 gnome/gcmd.c:598 gnome/gcmd.c:603 gnome/gcmd.c:607 gnome/gscreen.c:2381 msgid "Show all files" msgstr "" @@ -156,162 +157,163 @@ msgid "Enter a Regular Expression to filter files in the panel view." msgstr "" -#: gnome/gcmd.c:636 gnome/gpopup.c:47 +#: gnome/gcmd.c:639 gnome/gpopup.c:47 msgid " Open with..." msgstr "" -#: gnome/gcmd.c:637 gnome/gpopup.c:48 +#: gnome/gcmd.c:640 gnome/gpopup.c:48 msgid "Enter extra arguments:" msgstr "" -#: gnome/gdesktop.c:348 gnome/gdesktop.c:1376 +#: gnome/gdesktop.c:355 gnome/gdesktop.c:1412 msgid "Warning" msgstr "" -#: gnome/gdesktop.c:349 +#: gnome/gdesktop.c:356 msgid "Could not open %s; will not have initial desktop icons" msgstr "" -#: gnome/gdesktop.c:1342 +#: gnome/gdesktop.c:1378 msgid "Trashcan" msgstr "" #. Create the link to the user's home directory so that he will have an icon -#: gnome/gdesktop.c:1372 +#: gnome/gdesktop.c:1408 msgid "Home directory" msgstr "" -#: gnome/gdesktop.c:1377 +#: gnome/gdesktop.c:1413 msgid "Could not symlink %s to %s; will not have initial desktop icons." msgstr "" -#: gnome/gdialogs.c:241 +#: gnome/gdialogs.c:324 msgid "Files Exist" msgstr "" -#: gnome/gdialogs.c:252 +#: gnome/gdialogs.c:335 msgid "Some of the files you are trying to copy already exist in the destination folder." msgstr "" -#: gnome/gdialogs.c:261 +#: gnome/gdialogs.c:344 msgid "Prompt me before overwriting any file." msgstr "" -#: gnome/gdialogs.c:267 +#: gnome/gdialogs.c:351 msgid "Don't overwrite any files." msgstr "" -#: gnome/gdialogs.c:276 +#: gnome/gdialogs.c:363 msgid "Overwrite:" msgstr "" -#: gnome/gdialogs.c:282 +#: gnome/gdialogs.c:370 msgid "Older files." msgstr "" -#: gnome/gdialogs.c:286 +#: gnome/gdialogs.c:376 msgid "Files only if size differs." msgstr "" -#: gnome/gdialogs.c:290 +#: gnome/gdialogs.c:382 msgid "All files." msgstr "" #. so what's the situation? Do we prompt or don't we prompt. -#: gnome/gdialogs.c:330 +#: gnome/gdialogs.c:431 msgid "File Exists" msgstr "" -#: gnome/gdialogs.c:335 +#: gnome/gdialogs.c:436 msgid "The target file already exists: %s" msgstr "" -#: gnome/gdialogs.c:342 +#: gnome/gdialogs.c:443 msgid "Replace it?" msgstr "" -#. Basic window -#: gnome/gdialogs.c:405 gtkedit/editwidget.c:1064 gtkedit/gtkedit.c:1315 src/screen.c:2283 src/screen.c:2313 src/tree.c:1020 +#. mapping operations into names +#: gnome/gdialogs.c:514 gtkedit/editwidget.c:1064 gtkedit/gtkedit.c:1315 src/file.c:129 src/file.c:791 src/screen.c:2304 src/screen.c:2334 src/tree.c:1028 msgid "Copy" msgstr "" -#: gnome/gdialogs.c:408 gtkedit/editwidget.c:1065 +#: gnome/gdialogs.c:517 gtkedit/editwidget.c:1065 src/file.c:129 msgid "Move" msgstr "" -#: gnome/gdialogs.c:423 +#: gnome/gdialogs.c:532 msgid "Destination" msgstr "" -#: gnome/gdialogs.c:427 +#: gnome/gdialogs.c:536 msgid "Find Destination Folder" msgstr "" -#: gnome/gdialogs.c:432 +#: gnome/gdialogs.c:541 msgid "Copy as a background process" msgstr "" -#: gnome/gdialogs.c:452 +#: gnome/gdialogs.c:561 msgid "Advanced Options" msgstr "" -#: gnome/gdialogs.c:456 +#: gnome/gdialogs.c:565 msgid "Preserve symlinks" msgstr "" -#: gnome/gdialogs.c:466 +#: gnome/gdialogs.c:575 msgid "Follow links." msgstr "" -#: gnome/gdialogs.c:469 +#: gnome/gdialogs.c:580 msgid "Selecting this will copy the files that symlinks point to instead of just copying the link." msgstr "" -#: gnome/gdialogs.c:473 +#: gnome/gdialogs.c:584 msgid "Preserve file attributes." msgstr "" -#: gnome/gdialogs.c:476 +#: gnome/gdialogs.c:588 msgid "Preserves the permissions and the UID/GID if possible" msgstr "" -#: gnome/gdialogs.c:481 +#: gnome/gdialogs.c:593 msgid "Recursively copy subdirectories." msgstr "" -#: gnome/gdialogs.c:484 +#: gnome/gdialogs.c:597 msgid "If set, this will copy the directories recursively" msgstr "" -#: gnome/gdialogs.c:627 +#: gnome/gdialogs.c:751 msgid "File " msgstr "" -#: gnome/gdialogs.c:631 +#: gnome/gdialogs.c:755 msgid " is " msgstr "" -#: gnome/gdialogs.c:634 +#: gnome/gdialogs.c:758 msgid " Done." msgstr "" -#: gnome/gdnd.c:23 +#: gnome/gdnd.c:24 msgid "Move here" msgstr "" -#: gnome/gdnd.c:24 +#: gnome/gdnd.c:25 msgid "Copy here" msgstr "" -#: gnome/gdnd.c:25 +#: gnome/gdnd.c:26 msgid "Link here" msgstr "" -#: gnome/gdnd.c:27 +#: gnome/gdnd.c:28 msgid "Cancel drag" msgstr "" -#: gnome/gdnd.c:211 +#. FIXME: this error message sucks +#: gnome/gdnd.c:207 msgid "" "Could not stat %s\n" "%s" @@ -325,201 +327,226 @@ msgid "Default set of icons not found, check your installation" msgstr "" -#: gnome/glayout.c:269 +#: gnome/glayout.c:273 msgid "Enter command to run" msgstr "" -#: gnome/glayout.c:280 -msgid "_New window" +#: gnome/glayout.c:283 +msgid "_Terminal" +msgstr "" + +#: gnome/glayout.c:283 +msgid "Launch a new terminal in the current directory" +msgstr "" + +#: gnome/glayout.c:285 +msgid "_Directory..." +msgstr "" + +#: gnome/glayout.c:285 +msgid "Creates a new directory" +msgstr "" + +#: gnome/glayout.c:291 +msgid "New _Window" msgstr "" -#: gnome/glayout.c:280 +#: gnome/glayout.c:291 msgid "Opens a new window" msgstr "" -#: gnome/glayout.c:292 +#. etc... +#: gnome/glayout.c:301 +msgid "_New" +msgstr "" + +#: gnome/glayout.c:303 msgid "_Open" msgstr "" -#: gnome/glayout.c:292 +#: gnome/glayout.c:303 msgid "Opens the selected files" msgstr "" #. { GNOME_APP_UI_ITEM, N_("Open _FTP site"), N_("Opens an FTP site"), ftplink_cmd }, -#: gnome/glayout.c:294 +#: gnome/glayout.c:305 msgid "_Copy..." msgstr "" -#: gnome/glayout.c:294 +#: gnome/glayout.c:305 msgid "Copy files" msgstr "" -#: gnome/glayout.c:295 +#: gnome/glayout.c:306 msgid "_Delete..." msgstr "" -#: gnome/glayout.c:295 +#: gnome/glayout.c:306 msgid "Delete files from disk" msgstr "" -#: gnome/glayout.c:296 +#: gnome/glayout.c:307 msgid "_Move..." msgstr "" -#: gnome/glayout.c:296 +#: gnome/glayout.c:307 msgid "Rename or move files" msgstr "" -#: gnome/glayout.c:299 +#: gnome/glayout.c:309 msgid "C_lose" msgstr "" -#: gnome/glayout.c:299 +#: gnome/glayout.c:309 msgid "Close this panel" msgstr "" -#: gnome/glayout.c:310 +#: gnome/glayout.c:320 msgid "_Select All" msgstr "" -#: gnome/glayout.c:310 +#: gnome/glayout.c:320 msgid "Select all files in the current Panel" msgstr "" -#: gnome/glayout.c:311 +#: gnome/glayout.c:321 msgid "_Select Files..." msgstr "" -#: gnome/glayout.c:311 +#: gnome/glayout.c:321 msgid "Select a group of files" msgstr "" -#: gnome/glayout.c:312 +#: gnome/glayout.c:322 msgid "_Invert Selection" msgstr "" -#: gnome/glayout.c:312 +#: gnome/glayout.c:322 msgid "Reverses the list of tagged files" msgstr "" -#: gnome/glayout.c:314 +#: gnome/glayout.c:324 msgid "_Rescan Directory" msgstr "" -#: gnome/glayout.c:314 +#: gnome/glayout.c:324 msgid "Rescan the directory contents" msgstr "" -#: gnome/glayout.c:321 +#: gnome/glayout.c:331 msgid "Icon View" msgstr "" -#: gnome/glayout.c:322 +#: gnome/glayout.c:332 msgid "Partial View" msgstr "" -#: gnome/glayout.c:323 +#: gnome/glayout.c:333 msgid "Full View" msgstr "" -#: gnome/glayout.c:324 +#: gnome/glayout.c:334 msgid "Custom View" msgstr "" -#: gnome/glayout.c:330 +#: gnome/glayout.c:340 msgid "_Sort By..." msgstr "" -#: gnome/glayout.c:330 +#: gnome/glayout.c:340 msgid "Confirmation settings" msgstr "" -#: gnome/glayout.c:331 +#: gnome/glayout.c:341 msgid "_Filter View..." msgstr "" -#: gnome/glayout.c:331 +#: gnome/glayout.c:341 msgid "Global option settings" msgstr "" -#: gnome/glayout.c:338 +#: gnome/glayout.c:348 msgid "_Find File..." msgstr "" -#: gnome/glayout.c:338 +#: gnome/glayout.c:348 msgid "Locate files on disk" msgstr "" -#: gnome/glayout.c:341 +#: gnome/glayout.c:351 msgid "_Compare panels..." msgstr "" -#: gnome/glayout.c:341 +#: gnome/glayout.c:351 msgid "Compare two panel contents" msgstr "" -#: gnome/glayout.c:342 +#: gnome/glayout.c:352 msgid "_Run Command..." msgstr "" -#: gnome/glayout.c:342 +#: gnome/glayout.c:352 msgid "Runs a command" msgstr "" -#: gnome/glayout.c:344 +#: gnome/glayout.c:354 msgid "_Run Command in panel..." msgstr "" -#: gnome/glayout.c:344 +#: gnome/glayout.c:354 msgid "Run a command and put the results in a panel" msgstr "" -#: gnome/glayout.c:347 +#: gnome/glayout.c:357 msgid "_Active VFS list..." msgstr "" -#: gnome/glayout.c:347 +#: gnome/glayout.c:357 msgid "List of active virtual file systems" msgstr "" #. does this do anything? #. { GNOME_APP_UI_ITEM, N_("_Undelete files (ext2fs only)..."), N_("Recover deleted files"), undelete_cmd }, -#: gnome/glayout.c:354 +#: gnome/glayout.c:364 msgid "_Background jobs..." msgstr "" -#: gnome/glayout.c:354 +#: gnome/glayout.c:364 msgid "List of background operations" msgstr "" -#: gnome/glayout.c:362 +#: gnome/glayout.c:372 msgid "_About" msgstr "" -#: gnome/glayout.c:362 +#: gnome/glayout.c:372 msgid "Information on this program" msgstr "" -#: gnome/glayout.c:368 gnome/gview.c:323 +#: gnome/glayout.c:378 gnome/gview.c:323 msgid "_File" msgstr "" -#: gnome/glayout.c:369 +#: gnome/glayout.c:379 msgid "_Edit" msgstr "" -#: gnome/glayout.c:370 +#: gnome/glayout.c:380 msgid "_Layout" msgstr "" -#: gnome/glayout.c:371 +#: gnome/glayout.c:381 msgid "_Commands" msgstr "" -#: gnome/glayout.c:372 +#: gnome/glayout.c:382 msgid "_Help" msgstr "" +#: gnome/glayout.c:477 +msgid "File/New/Directory..." +msgstr "" + #: gnome/gpopup.c:199 gnome/gpopup.c:200 msgid "Properties" msgstr "" @@ -532,7 +559,7 @@ msgid "Open with" msgstr "" -#: gnome/gpopup.c:205 src/screen.c:2281 src/screen.c:2311 +#: gnome/gpopup.c:205 src/screen.c:2302 src/screen.c:2332 msgid "View" msgstr "" @@ -540,7 +567,7 @@ msgid "View unfiltered" msgstr "" -#: gnome/gpopup.c:207 gtkedit/gtkedit.c:1363 src/screen.c:2282 src/screen.c:2312 src/view.c:1972 +#: gnome/gpopup.c:207 gtkedit/gtkedit.c:1363 src/screen.c:2303 src/screen.c:2333 src/view.c:1972 msgid "Edit" msgstr "" @@ -564,7 +591,7 @@ msgid "Copy..." msgstr "" -#: gnome/gpopup.c:220 gnome/gpopup.c:232 gtkedit/editwidget.c:1067 src/screen.c:2286 src/screen.c:2316 +#: gnome/gpopup.c:220 gnome/gpopup.c:232 gtkedit/editwidget.c:1067 src/file.c:129 src/screen.c:2307 src/screen.c:2337 msgid "Delete" msgstr "" @@ -616,7 +643,7 @@ msgid "User" msgstr "" -#: gnome/gprop.c:280 gnome/gprop.c:405 src/screen.c:436 +#: gnome/gprop.c:280 gnome/gprop.c:405 src/screen.c:455 msgid "Group" msgstr "" @@ -640,120 +667,180 @@ msgid "" msgstr "" -#: gnome/gprop.c:390 src/screen.c:435 +#: gnome/gprop.c:390 src/screen.c:454 msgid "Owner" msgstr "" -#: gnome/gprop.c:495 +#: gnome/gprop.c:494 msgid "General" msgstr "" -#: gnome/gprop.c:506 +#: gnome/gprop.c:505 msgid "Title" msgstr "" -#: gnome/gprop.c:522 +#: gnome/gprop.c:521 gnome/gscreen.c:2167 msgid "Icon" msgstr "" -#: gnome/gprop.c:536 +#: gnome/gprop.c:535 msgid "Select icon" msgstr "" -#: gnome/gscreen.c:1449 +#: gnome/gscreen.c:1462 msgid "All files" msgstr "" -#: gnome/gscreen.c:1451 +#: gnome/gscreen.c:1464 msgid "Archives and compressed files" msgstr "" -#: gnome/gscreen.c:1453 +#: gnome/gscreen.c:1466 msgid "RPM/DEB files" msgstr "" -#: gnome/gscreen.c:1455 +#: gnome/gscreen.c:1468 msgid "Text/Document files" msgstr "" -#: gnome/gscreen.c:1457 +#: gnome/gscreen.c:1470 msgid "HTML and SGML files" msgstr "" -#: gnome/gscreen.c:1459 +#: gnome/gscreen.c:1472 msgid "Postscript and PDF files" msgstr "" -#: gnome/gscreen.c:1461 +#: gnome/gscreen.c:1474 msgid "Spreadsheet files" msgstr "" -#: gnome/gscreen.c:1463 +#: gnome/gscreen.c:1476 msgid "Image files" msgstr "" -#: gnome/gscreen.c:1466 +#: gnome/gscreen.c:1479 msgid "Video/animation files" msgstr "" -#: gnome/gscreen.c:1468 +#: gnome/gscreen.c:1481 msgid "Audio files" msgstr "" -#: gnome/gscreen.c:1470 +#: gnome/gscreen.c:1483 msgid "C program files" msgstr "" -#: gnome/gscreen.c:1472 +#: gnome/gscreen.c:1485 msgid "C++ program files" msgstr "" -#: gnome/gscreen.c:1474 +#: gnome/gscreen.c:1487 msgid "Objective-C program files" msgstr "" -#: gnome/gscreen.c:1476 +#: gnome/gscreen.c:1489 msgid "Scheme program files" msgstr "" -#: gnome/gscreen.c:1478 +#: gnome/gscreen.c:1491 msgid "Assembler program files" msgstr "" -#: gnome/gscreen.c:1480 +#: gnome/gscreen.c:1493 msgid "Misc. program files" msgstr "" -#: gnome/gscreen.c:1482 +#: gnome/gscreen.c:1495 msgid "Font files" msgstr "" -#: gnome/gscreen.c:1609 +#: gnome/gscreen.c:1622 msgid "Search: %s" msgstr "" -#: gnome/gscreen.c:1619 +#: gnome/gscreen.c:1632 msgid "%s bytes in %d file" msgstr "" -#: gnome/gscreen.c:1619 +#: gnome/gscreen.c:1632 msgid "%s bytes in %d files" msgstr "" -#: gnome/gscreen.c:1645 src/screen.c:673 +#: gnome/gscreen.c:1658 src/screen.c:692 msgid "" msgstr "" -#: gnome/gscreen.c:1699 +#: gnome/gscreen.c:1712 msgid "Filter" msgstr "" -#: gnome/gscreen.c:2254 +#: gnome/gscreen.c:2167 +msgid "Switch view to an Icon view" +msgstr "" + +#: gnome/gscreen.c:2169 +msgid "Brief" +msgstr "" + +#: gnome/gscreen.c:2169 +msgid "Switch view to show just file name and type" +msgstr "" + +#: gnome/gscreen.c:2171 +msgid "Detailed" +msgstr "" + +#: gnome/gscreen.c:2171 +msgid "Switch view to show detailed file statistics" +msgstr "" + +#: gnome/gscreen.c:2173 +msgid "Custom" +msgstr "" + +#: gnome/gscreen.c:2173 +msgid "Switch view to show custom determined statistics" +msgstr "" + +#: gnome/gscreen.c:2178 +msgid "Back" +msgstr "" + +#: gnome/gscreen.c:2178 +msgid "Go to the previously visited directory" +msgstr "" + +#: gnome/gscreen.c:2180 +msgid "Up" +msgstr "" + +#: gnome/gscreen.c:2180 +msgid "Go up a level in the directory heirarchy" +msgstr "" + +#: gnome/gscreen.c:2182 +msgid "Forward" +msgstr "" + +#: gnome/gscreen.c:2182 +msgid "Go to the next directory" +msgstr "" + +#: gnome/gscreen.c:2185 +msgid "Home" +msgstr "" + +#: gnome/gscreen.c:2185 +msgid "Go to your home directory" +msgstr "" + +#: gnome/gscreen.c:2330 msgid "Location:" msgstr "" #. WITH_BACKGROUND -#: gnome/gtools.c:103 src/boxes.c:141 src/boxes.c:281 src/boxes.c:381 src/boxes.c:469 src/boxes.c:649 src/boxes.c:733 src/boxes.c:788 src/boxes.c:899 src/filegui.c:724 src/find.c:154 src/layout.c:372 src/option.c:144 src/wtools.c:292 src/wtools.c:564 +#: gnome/gtools.c:103 src/boxes.c:142 src/boxes.c:282 src/boxes.c:382 src/boxes.c:470 src/boxes.c:650 src/boxes.c:732 src/boxes.c:787 src/boxes.c:898 src/filegui.c:812 src/find.c:156 src/layout.c:372 src/option.c:144 src/wtools.c:292 src/wtools.c:564 msgid "&Ok" msgstr "" @@ -830,11 +917,11 @@ msgid "help" msgstr "" -#: gnome/gwidget.c:96 +#: gnome/gwidget.c:96 src/file.c:2196 msgid "yes" msgstr "" -#: gnome/gwidget.c:98 +#: gnome/gwidget.c:98 src/file.c:2194 msgid "no" msgstr "" @@ -847,7 +934,7 @@ msgstr "" #. The file-name is printed after the ':' -#: gtkedit/edit.c:129 gtkedit/edit.c:224 gtkedit/edit.c:231 gtkedit/edit.c:238 gtkedit/edit.c:245 gtkedit/edit.c:251 gtkedit/edit.c:308 gtkedit/edit.c:344 gtkedit/editcmd.c:1932 gtkedit/editwidget.c:947 src/dir.c:378 src/screen.c:2301 src/tree.c:691 src/tree.c:697 src/wtools.c:225 vfs/fish.c:226 +#: gtkedit/edit.c:129 gtkedit/edit.c:224 gtkedit/edit.c:231 gtkedit/edit.c:238 gtkedit/edit.c:245 gtkedit/edit.c:251 gtkedit/edit.c:308 gtkedit/edit.c:344 gtkedit/editcmd.c:1932 gtkedit/editwidget.c:947 src/dir.c:378 src/screen.c:2322 src/tree.c:694 src/tree.c:700 src/wtools.c:225 vfs/fish.c:226 msgid " Error " msgstr "" @@ -882,7 +969,7 @@ msgstr "" #. the file exists -#: gtkedit/editcmd.c:482 gtkedit/editcmd.c:801 gtkedit/editcmd.c:831 gtkedit/editcmd.c:978 gtkedit/editcmd.c:1075 src/ext.c:297 src/file.c:683 src/help.c:321 src/main.c:667 src/screen.c:2059 src/subshell.c:700 src/subshell.c:726 src/utilunix.c:384 src/utilunix.c:388 src/utilunix.c:454 vfs/mcfs.c:171 +#: gtkedit/editcmd.c:482 gtkedit/editcmd.c:801 gtkedit/editcmd.c:831 gtkedit/editcmd.c:978 gtkedit/editcmd.c:1075 src/ext.c:297 src/file.c:613 src/help.c:321 src/main.c:667 src/screen.c:2080 src/subshell.c:700 src/subshell.c:726 src/utilunix.c:384 src/utilunix.c:388 src/utilunix.c:454 vfs/mcfs.c:171 msgid " Warning " msgstr "" @@ -1577,7 +1664,7 @@ msgid "Error initialising editor.\n" msgstr "" -#: gtkedit/editwidget.c:1060 gtkedit/gtkedit.c:1365 src/help.c:809 src/main.c:1670 src/screen.c:2279 src/screen.c:2309 src/tree.c:1014 src/view.c:1963 +#: gtkedit/editwidget.c:1060 gtkedit/gtkedit.c:1365 src/help.c:809 src/main.c:1670 src/screen.c:2300 src/screen.c:2330 src/tree.c:1022 src/view.c:1963 msgid "Help" msgstr "" @@ -1721,7 +1808,7 @@ msgid "Info about Mcedit" msgstr "" -#: gtkedit/gtkedit.c:1362 src/filegui.c:361 +#: gtkedit/gtkedit.c:1362 src/filegui.c:409 msgid "File" msgstr "" @@ -1737,7 +1824,7 @@ msgid " Syntax error in file %s on line %d " msgstr "" -#: src/achown.c:73 src/boxes.c:142 src/boxes.c:282 src/boxes.c:379 src/boxes.c:467 src/boxes.c:647 src/boxes.c:732 src/boxes.c:786 src/chmod.c:115 src/chown.c:81 src/cmd.c:850 src/filegui.c:707 src/find.c:154 src/hotlist.c:141 src/hotlist.c:813 src/hotlist.c:906 src/layout.c:373 src/learn.c:61 src/option.c:145 src/panelize.c:90 src/view.c:408 src/wtools.c:114 src/wtools.c:389 src/wtools.c:562 src/wtools.c:643 +#: src/achown.c:73 src/boxes.c:143 src/boxes.c:283 src/boxes.c:380 src/boxes.c:468 src/boxes.c:648 src/boxes.c:731 src/boxes.c:785 src/chmod.c:115 src/chown.c:81 src/cmd.c:861 src/filegui.c:795 src/find.c:156 src/hotlist.c:141 src/hotlist.c:813 src/hotlist.c:906 src/layout.c:373 src/learn.c:61 src/option.c:145 src/panelize.c:90 src/view.c:408 src/wtools.c:114 src/wtools.c:389 src/wtools.c:562 src/wtools.c:643 msgid "&Cancel" msgstr "" @@ -1810,177 +1897,178 @@ msgid " I can't run the Advanced Chown command on a tarfs " msgstr "" -#: src/background.c:181 +#: src/background.c:180 msgid "Background process:" msgstr "" -#: src/background.c:286 src/file.c:2104 +#: src/background.c:286 src/file.c:2120 msgid " Background process error " msgstr "" -#: src/background.c:291 +#: src/background.c:293 msgid " Child died unexpectedly " msgstr "" -#: src/background.c:293 +#: src/background.c:295 msgid " Unknown error in child " msgstr "" -#: src/background.c:308 +#: src/background.c:310 msgid " Background protocol error " msgstr "" -#: src/background.c:309 +#: src/background.c:311 msgid "" " Background process sent us a request for more arguments \n" " than we can handle. \n" msgstr "" -#: src/boxes.c:66 +#: src/boxes.c:67 msgid " Listing mode " msgstr "" -#: src/boxes.c:71 +#: src/boxes.c:72 msgid "&Full file list" msgstr "" -#: src/boxes.c:72 +#: src/boxes.c:73 msgid "&Brief file list" msgstr "" -#: src/boxes.c:73 +#: src/boxes.c:74 msgid "&Long file list" msgstr "" -#: src/boxes.c:74 +#: src/boxes.c:75 msgid "&User defined:" msgstr "" -#: src/boxes.c:75 +#: src/boxes.c:76 msgid "&Icon view" msgstr "" -#: src/boxes.c:140 +#: src/boxes.c:141 msgid "user &Mini status" msgstr "" -#: src/boxes.c:189 +#: src/boxes.c:190 msgid "Listing mode" msgstr "" -#: src/boxes.c:283 +#: src/boxes.c:284 msgid "&Reverse" msgstr "" -#: src/boxes.c:284 +#: src/boxes.c:285 msgid "case sensi&tive" msgstr "" -#: src/boxes.c:285 +#: src/boxes.c:286 msgid "Sort order" msgstr "" -#: src/boxes.c:384 +#: src/boxes.c:385 msgid " confirm &Exit " msgstr "" -#: src/boxes.c:386 +#: src/boxes.c:387 msgid " confirm e&Xecute " msgstr "" -#: src/boxes.c:388 +#: src/boxes.c:389 msgid " confirm o&Verwrite " msgstr "" -#: src/boxes.c:390 +#: src/boxes.c:391 msgid " confirm &Delete " msgstr "" -#: src/boxes.c:396 +#: src/boxes.c:397 msgid " Confirmation " msgstr "" -#: src/boxes.c:464 +#: src/boxes.c:465 msgid "Full 8 bits output" msgstr "" -#: src/boxes.c:464 +#: src/boxes.c:465 msgid "ISO 8859-1" msgstr "" -#: src/boxes.c:464 +#: src/boxes.c:465 msgid "7 bits" msgstr "" -#: src/boxes.c:471 +#: src/boxes.c:472 msgid "F&ull 8 bits input" msgstr "" -#: src/boxes.c:479 +#: src/boxes.c:480 msgid " Display bits " msgstr "" -#: src/boxes.c:654 +#: src/boxes.c:655 msgid "&Always use ftp proxy" msgstr "" -#: src/boxes.c:656 +#: src/boxes.c:657 msgid "sec" msgstr "" -#: src/boxes.c:660 +#: src/boxes.c:661 msgid "ftpfs directory cache timeout:" msgstr "" -#: src/boxes.c:664 +#: src/boxes.c:665 msgid "ftp anonymous password:" msgstr "" -#: src/boxes.c:671 +#: src/boxes.c:672 msgid "Timeout for freeing VFSs:" msgstr "" -#: src/boxes.c:677 +#: src/boxes.c:678 msgid " Virtual File System Setting " msgstr "" -#: src/boxes.c:745 +#: src/boxes.c:744 msgid "Quick cd" msgstr "" -#: src/boxes.c:750 +#. want cd like completion +#: src/boxes.c:749 msgid "cd" msgstr "" -#: src/boxes.c:806 +#: src/boxes.c:805 msgid "Symbolic link filename:" msgstr "" -#: src/boxes.c:808 +#: src/boxes.c:807 msgid "Existing filename (filename symlink will point to):" msgstr "" -#: src/boxes.c:837 +#: src/boxes.c:836 msgid "Running " msgstr "" -#: src/boxes.c:838 src/find.c:671 +#: src/boxes.c:837 src/find.c:676 msgid "Stopped" msgstr "" -#: src/boxes.c:896 +#: src/boxes.c:895 msgid "&Stop" msgstr "" -#: src/boxes.c:897 +#: src/boxes.c:896 msgid "&Resume" msgstr "" -#: src/boxes.c:898 +#: src/boxes.c:897 msgid "&Kill" msgstr "" -#: src/boxes.c:937 +#: src/boxes.c:936 msgid "Background Jobs" msgstr "" @@ -2137,240 +2225,240 @@ msgid " I can't run the Chown command on a tarfs " msgstr "" -#: src/cmd.c:204 +#: src/cmd.c:205 msgid " Can not fetch a local copy of %s " msgstr "" -#: src/cmd.c:254 +#: src/cmd.c:255 msgid " CD " msgstr "" -#: src/cmd.c:254 +#: src/cmd.c:255 msgid "Files tagged, want to cd?" msgstr "" -#: src/cmd.c:260 src/cmd.c:709 src/cmd.c:723 +#: src/cmd.c:261 src/cmd.c:720 src/cmd.c:734 msgid "Could not change directory" msgstr "" -#: src/cmd.c:289 +#: src/cmd.c:290 msgid " View file " msgstr "" -#: src/cmd.c:289 +#: src/cmd.c:290 msgid " Filename:" msgstr "" -#: src/cmd.c:306 +#: src/cmd.c:307 msgid " Filtered view " msgstr "" -#: src/cmd.c:306 +#: src/cmd.c:307 msgid " Filter command and arguments:" msgstr "" -#: src/cmd.c:391 -msgid " Mkdir " +#: src/cmd.c:395 +msgid "Create a new Directory" msgstr "" -#: src/cmd.c:391 +#: src/cmd.c:395 msgid " Enter directory name:" msgstr "" -#: src/cmd.c:446 +#: src/cmd.c:456 msgid " Filter " msgstr "" -#: src/cmd.c:446 +#: src/cmd.c:456 msgid " Set expression for filtering filenames" msgstr "" -#: src/cmd.c:512 +#: src/cmd.c:522 msgid " Select " msgstr "" -#: src/cmd.c:540 src/cmd.c:591 +#: src/cmd.c:550 src/cmd.c:601 msgid " Malformed regular expression " msgstr "" -#: src/cmd.c:564 +#: src/cmd.c:574 msgid " Unselect " msgstr "" -#: src/cmd.c:636 +#: src/cmd.c:647 msgid "Extension file edit" msgstr "" -#: src/cmd.c:637 +#: src/cmd.c:648 msgid " Which extension file you want to edit? " msgstr "" -#: src/cmd.c:638 +#: src/cmd.c:649 msgid "&User" msgstr "" -#: src/cmd.c:638 src/cmd.c:664 +#: src/cmd.c:649 src/cmd.c:675 msgid "&System Wide" msgstr "" -#: src/cmd.c:661 +#: src/cmd.c:672 msgid "Menu file edit" msgstr "" -#: src/cmd.c:662 +#: src/cmd.c:673 msgid " Which menu file will you edit? " msgstr "" -#: src/cmd.c:664 +#: src/cmd.c:675 msgid "&Local" msgstr "" -#: src/cmd.c:664 +#: src/cmd.c:675 msgid "&Home" msgstr "" -#: src/cmd.c:849 +#: src/cmd.c:860 msgid " Compare directories " msgstr "" -#: src/cmd.c:849 +#: src/cmd.c:860 msgid " Select compare method: " msgstr "" -#: src/cmd.c:850 +#: src/cmd.c:861 msgid "&Quick" msgstr "" -#: src/cmd.c:850 +#: src/cmd.c:861 msgid "&Size only" msgstr "" -#: src/cmd.c:850 +#: src/cmd.c:861 msgid "&Thorough" msgstr "" -#: src/cmd.c:860 +#: src/cmd.c:871 msgid " Both panels should be on the listing view mode to use this command " msgstr "" -#: src/cmd.c:874 +#: src/cmd.c:885 msgid " The command history is empty " msgstr "" -#: src/cmd.c:880 +#: src/cmd.c:891 msgid " Command history " msgstr "" -#: src/cmd.c:922 +#: src/cmd.c:933 msgid "" " Not an xterm or Linux console; \n" " the panels cannot be toggled. " msgstr "" -#: src/cmd.c:961 +#: src/cmd.c:972 msgid "" "Type `exit' to return to the Midnight Commander\n" "\r\n" "\r" msgstr "" -#: src/cmd.c:1014 +#: src/cmd.c:1025 msgid "" " Couldn't stat %s \n" " %s " msgstr "" -#: src/cmd.c:1023 src/cmd.c:1025 +#: src/cmd.c:1034 src/cmd.c:1036 msgid " Link " msgstr "" -#: src/cmd.c:1024 src/cmd.c:1129 src/file.c:2289 +#: src/cmd.c:1035 src/cmd.c:1140 src/file.c:1628 msgid " to:" msgstr "" -#: src/cmd.c:1035 +#: src/cmd.c:1046 msgid " link: %s " msgstr "" -#: src/cmd.c:1068 +#: src/cmd.c:1079 msgid " symlink: %s " msgstr "" -#: src/cmd.c:1094 +#: src/cmd.c:1105 msgid " Symlink " msgstr "" -#: src/cmd.c:1094 +#: src/cmd.c:1105 msgid " points to:" msgstr "" -#: src/cmd.c:1099 +#: src/cmd.c:1110 msgid " Edit symlink " msgstr "" -#: src/cmd.c:1105 +#: src/cmd.c:1116 msgid " edit symlink: %s " msgstr "" -#: src/cmd.c:1129 +#: src/cmd.c:1140 msgid " Link symbolically " msgstr "" -#: src/cmd.c:1130 +#: src/cmd.c:1141 msgid " Relative symlink " msgstr "" -#: src/cmd.c:1141 +#: src/cmd.c:1152 msgid " relative symlink: %s " msgstr "" -#: src/cmd.c:1244 +#: src/cmd.c:1255 msgid " Enter machine name (F1 for details): " msgstr "" -#: src/cmd.c:1268 +#: src/cmd.c:1279 msgid " Could not chdir to %s " msgstr "" -#: src/cmd.c:1275 +#: src/cmd.c:1286 msgid " Link to a remote machine " msgstr "" -#: src/cmd.c:1281 +#: src/cmd.c:1292 msgid " FTP to machine " msgstr "" -#: src/cmd.c:1291 +#: src/cmd.c:1302 msgid " Socket source routing setup " msgstr "" -#: src/cmd.c:1292 +#: src/cmd.c:1303 msgid " Enter host name to use as a source routing hop: " msgstr "" -#: src/cmd.c:1299 +#: src/cmd.c:1310 msgid " Host name " msgstr "" -#: src/cmd.c:1299 +#: src/cmd.c:1310 msgid " Error while looking up IP address " msgstr "" -#: src/cmd.c:1310 +#: src/cmd.c:1321 msgid " Undelete files on an ext2 file system " msgstr "" -#: src/cmd.c:1311 +#: src/cmd.c:1322 msgid "" " Enter device (without /dev/) to undelete\n" " files on: (F1 for details)" msgstr "" -#: src/cmd.c:1361 +#: src/cmd.c:1372 msgid " Setup saved to ~/" msgstr "" -#: src/cmd.c:1366 +#: src/cmd.c:1377 msgid " Setup " msgstr "" @@ -2506,476 +2594,483 @@ msgid "mc.ext will be used for this moment." msgstr "" -#: src/file.c:229 src/tree.c:650 +#: src/file.c:161 src/tree.c:651 msgid " Copy " msgstr "" -#: src/file.c:230 src/tree.c:686 +#: src/file.c:162 src/tree.c:689 msgid " Move " msgstr "" -#: src/file.c:231 src/tree.c:753 +#: src/file.c:163 src/tree.c:759 msgid " Delete " msgstr "" -#: src/file.c:313 +#: src/file.c:251 msgid " Invalid target mask " msgstr "" -#: src/file.c:411 +#: src/file.c:349 msgid " Could not make the hardlink " msgstr "" -#: src/file.c:454 +#: src/file.c:391 msgid "" " Cannot read source link \"%s\" \n" " %s " msgstr "" -#: src/file.c:464 +#: src/file.c:401 msgid "" " Cannot make stable symlinks across non-local filesystems: \n" "\n" " Option Stable Symlinks will be disabled " msgstr "" -#: src/file.c:513 +#: src/file.c:449 msgid "" " Cannot create target symlink \"%s\" \n" " %s " msgstr "" -#: src/file.c:580 +#: src/file.c:517 msgid "" " Cannot overwrite directory \"%s\" \n" " %s " msgstr "" -#: src/file.c:590 +#: src/file.c:526 msgid "" " Cannot stat source file \"%s\" \n" " %s " msgstr "" -#: src/file.c:604 +#: src/file.c:539 msgid " `%s' and `%s' are the same file. " msgstr "" -#: src/file.c:640 +#: src/file.c:572 msgid "" " Cannot create special file \"%s\" \n" " %s " msgstr "" -#: src/file.c:650 src/file.c:874 +#: src/file.c:581 src/file.c:801 msgid "" " Cannot chown target file \"%s\" \n" " %s " msgstr "" -#: src/file.c:659 src/file.c:890 +#: src/file.c:590 src/file.c:816 msgid "" " Cannot chmod target file \"%s\" \n" " %s " msgstr "" -#: src/file.c:673 +#: src/file.c:603 msgid "" " Cannot open source file \"%s\" \n" " %s " msgstr "" -#: src/file.c:683 +#: src/file.c:613 msgid " Reget failed, about to overwrite file " msgstr "" -#: src/file.c:690 +#: src/file.c:619 msgid "" " Cannot fstat source file \"%s\" \n" " %s " msgstr "" -#: src/file.c:712 +#: src/file.c:640 msgid "" " Cannot create target file \"%s\" \n" " %s " msgstr "" -#: src/file.c:727 +#. Find out the optimal buffer size. +#: src/file.c:654 msgid "" " Cannot fstat target file \"%s\" \n" " %s " msgstr "" -#: src/file.c:758 +#: src/file.c:685 msgid "" " Cannot read source file \"%s\" \n" " %s " msgstr "" -#: src/file.c:788 +#: src/file.c:715 msgid "" " Cannot write target file \"%s\" \n" " %s " msgstr "" -#: src/file.c:806 +#: src/file.c:734 msgid "(stalled)" msgstr "" -#: src/file.c:845 +#: src/file.c:772 msgid "" " Cannot close source file \"%s\" \n" " %s " msgstr "" -#: src/file.c:855 +#: src/file.c:781 msgid "" " Cannot close target file \"%s\" \n" " %s " msgstr "" -#. Remove short file -#: src/file.c:865 +#: src/file.c:791 msgid "Incomplete file was retrieved. Keep it?" msgstr "" -#: src/file.c:865 +#: src/file.c:792 msgid "&Delete" msgstr "" -#: src/file.c:865 src/hotlist.c:1438 +#: src/file.c:792 src/hotlist.c:1438 msgid "&Keep" msgstr "" -#: src/file.c:937 +#: src/file.c:861 msgid "" " Cannot stat source directory \"%s\" \n" " %s " msgstr "" -#: src/file.c:960 +#: src/file.c:884 msgid "" " Source directory \"%s\" is not a directory \n" " %s " msgstr "" #. we found a cyclic symbolic link -#: src/file.c:968 +#: src/file.c:892 msgid "" " Cannot copy cyclic symbolic link \n" " `%s' " msgstr "" -#: src/file.c:1021 +#: src/file.c:945 msgid "" " Cannot create target directory \"%s\" \n" " %s " msgstr "" -#: src/file.c:1040 +#: src/file.c:963 msgid "" " Cannot chown target directory \"%s\" \n" " %s " msgstr "" #. Source doesn't exist -#: src/file.c:1155 +#: src/file.c:1073 msgid "" " Cannot stat file \"%s\" \n" " %s " msgstr "" -#: src/file.c:1177 +#: src/file.c:1095 msgid " `%s' and `%s' are the same file " msgstr "" #. OS2_NT -#: src/file.c:1184 +#: src/file.c:1102 msgid " Cannot overwrite directory `%s' " msgstr "" -#: src/file.c:1217 +#: src/file.c:1135 msgid "" " Cannot move file \"%s\" to \"%s\" \n" " %s " msgstr "" -#: src/file.c:1238 +#: src/file.c:1155 msgid "" " Cannot remove file \"%s\" \n" " %s " msgstr "" -#: src/file.c:1288 +#: src/file.c:1205 msgid " Cannot overwrite directory \"%s\" %s " msgstr "" -#: src/file.c:1290 +#: src/file.c:1207 msgid " Cannot overwrite file \"%s\" %s " msgstr "" -#: src/file.c:1313 +#: src/file.c:1230 msgid "" " Cannot move directory \"%s\" to \"%s\" \n" " %s " msgstr "" -#: src/file.c:1377 +#: src/file.c:1293 msgid "" " Cannot delete file \"%s\" \n" " %s " msgstr "" -#: src/file.c:1436 src/file.c:1503 src/file.c:1532 +#: src/file.c:1351 src/file.c:1418 src/file.c:1447 msgid "" " Cannot remove directory \"%s\" \n" " %s " msgstr "" -#: src/file.c:1568 +#: src/file.c:1483 msgid " Internal error: get_file \n" msgstr "" -#: src/file.c:1735 -msgid " Can't operate on \"..\"! " +#. +#. * This array introduced to avoid translation problems. The former (op_names) +#. * is assumed to be nouns, suitable in dialog box titles; this one should +#. * contain whatever is used in prompt itself (i.e. in russian, it's verb). +#. * Notice first symbol - it is to fool gettext and force these strings to +#. * be different for it. First symbol is skipped while building a prompt. +#. * (I don't use spaces around the words, because someday they could be +#. * dropped, when widgets get smarter) +#. +#: src/file.c:1604 +msgid "1Copy" msgstr "" -#: src/file.c:1751 -msgid "Yes" +#: src/file.c:1604 +msgid "1Move" msgstr "" -#: src/file.c:1751 -msgid "No" +#: src/file.c:1604 +msgid "1Delete" msgstr "" -#: src/file.c:1801 -msgid " Sorry, I could not put the job in background " +#: src/file.c:1619 +msgid "%o %f \"%s\"%m" msgstr "" -#: src/file.c:1891 src/file.c:2006 -msgid " Internal failure " +#: src/file.c:1620 +msgid "%o %d %f%m" msgstr "" -#: src/file.c:1891 src/file.c:2007 -msgid " Unknown file operation " +#: src/file.c:1622 +msgid "%o %f \"%s\"%e" msgstr "" -#: src/file.c:1909 -msgid "" -" Destination \"%s\" must be a directory \n" -" %s " +#: src/file.c:1623 +msgid "%o %d %f%e" msgstr "" -#: src/file.c:2105 src/filegui.c:248 -msgid "&Skip" +#: src/file.c:1627 +msgid "file" msgstr "" -#: src/file.c:2105 -msgid "&Retry" +#: src/file.c:1627 +msgid "files" msgstr "" -#: src/file.c:2105 src/file.c:2163 src/filegui.c:245 src/filegui.c:485 -msgid "&Abort" +#: src/file.c:1627 +msgid "directory" msgstr "" -#: src/file.c:2154 -msgid "" -"\n" -" Directory not empty. \n" -" Delete it recursively? " +#: src/file.c:1627 +msgid "directories" msgstr "" -#: src/file.c:2155 -msgid "" -"\n" -" Background process: Directory not empty \n" -" Delete it recursively? " +#: src/file.c:1628 +msgid "files/directories" msgstr "" -#: src/file.c:2162 -msgid "a&ll" +#: src/file.c:1628 +msgid " with source mask:" msgstr "" -#: src/file.c:2162 src/filegui.c:488 -msgid "non&E" +#: src/file.c:1776 +msgid " Can't operate on \"..\"! " msgstr "" -#: src/file.c:2172 -msgid " Type 'yes' if you REALLY want to delete " +#: src/file.c:1795 +msgid "Yes" msgstr "" -#: src/file.c:2174 -msgid "all the directories " +#: src/file.c:1795 +msgid "No" msgstr "" -#: src/file.c:2176 -msgid " Recursive Delete " +#: src/file.c:1848 +msgid " Sorry, I could not put the job in background " msgstr "" -#: src/file.c:2177 -msgid " Background process: Recursive Delete " +#: src/file.c:1931 src/file.c:2036 +msgid " Internal failure " msgstr "" -#. -#. * This array introduced to avoid translation problems. The former (op_names) -#. * is assumed to be nouns, suitable in dialog box titles; this one should -#. * contain whatever is used in prompt itself (i.e. in russian, it's verb). -#. * Notice first symbol - it is to fool gettext and force these strings to -#. * be different for it. First symbol is skipped while building a prompt. -#. * (I don't use spaces around the words, because someday they could be -#. * dropped, when widgets get smarter) -#. -#: src/file.c:2265 -msgid "1Copy" +#: src/file.c:1931 src/file.c:2036 +msgid " Unknown file operation " msgstr "" -#: src/file.c:2265 -msgid "1Move" +#: src/file.c:1950 +msgid "" +" Destination \"%s\" must be a directory \n" +" %s " msgstr "" -#: src/file.c:2265 -msgid "1Delete" +#: src/file.c:2121 src/filegui.c:268 +msgid "&Skip" msgstr "" -#: src/file.c:2280 -msgid "%o %f \"%s\"%m" +#: src/file.c:2121 +msgid "&Retry" msgstr "" -#: src/file.c:2281 -msgid "%o %d %f%m" +#: src/file.c:2121 src/file.c:2179 src/filegui.c:265 src/filegui.c:567 +msgid "&Abort" msgstr "" -#: src/file.c:2283 -msgid "%o %f \"%s\"%e" +#: src/file.c:2170 +msgid "" +"\n" +" Directory not empty. \n" +" Delete it recursively? " msgstr "" -#: src/file.c:2284 -msgid "%o %d %f%e" +#: src/file.c:2171 +msgid "" +"\n" +" Background process: Directory not empty \n" +" Delete it recursively? " msgstr "" -#: src/file.c:2288 -msgid "file" +#: src/file.c:2172 +msgid " Delete: " msgstr "" -#: src/file.c:2288 -msgid "files" +#: src/file.c:2178 +msgid "a&ll" msgstr "" -#: src/file.c:2288 -msgid "directory" +#: src/file.c:2178 src/filegui.c:570 +msgid "non&E" msgstr "" -#: src/file.c:2288 -msgid "directories" +#: src/file.c:2188 +msgid " Type 'yes' if you REALLY want to delete " msgstr "" -#: src/file.c:2289 -msgid "files/directories" +#: src/file.c:2190 +msgid "all the directories " msgstr "" -#: src/file.c:2289 -msgid " with source mask:" +#: src/file.c:2192 +msgid " Recursive Delete " +msgstr "" + +#: src/file.c:2193 +msgid " Background process: Recursive Delete " msgstr "" -#: src/filegui.c:375 +#: src/filegui.c:430 msgid "Count" msgstr "" -#: src/filegui.c:387 +#: src/filegui.c:449 msgid "Bytes" msgstr "" #. WITH_FULL_PATHS -#: src/filegui.c:416 +#: src/filegui.c:484 msgid "Source" msgstr "" -#: src/filegui.c:430 +#: src/filegui.c:505 msgid "Target" msgstr "" -#: src/filegui.c:443 +#: src/filegui.c:525 msgid "Deleting" msgstr "" -#: src/filegui.c:483 +#: src/filegui.c:565 msgid "Target file \"%s\" already exists!" msgstr "" -#: src/filegui.c:486 +#: src/filegui.c:568 msgid "if &Size differs" msgstr "" -#: src/filegui.c:489 +#: src/filegui.c:571 msgid "&Update" msgstr "" -#: src/filegui.c:490 +#: src/filegui.c:572 msgid "al&L" msgstr "" -#: src/filegui.c:491 +#: src/filegui.c:573 msgid "Overwrite all targets?" msgstr "" -#: src/filegui.c:493 +#: src/filegui.c:575 msgid "&Reget" msgstr "" -#: src/filegui.c:494 +#: src/filegui.c:576 msgid "ap&Pend" msgstr "" -#: src/filegui.c:497 +#: src/filegui.c:579 msgid "Overwrite this target?" msgstr "" -#: src/filegui.c:499 +#: src/filegui.c:581 msgid "Target date: %s, size %d" msgstr "" -#: src/filegui.c:501 +#: src/filegui.c:583 msgid "Source date: %s, size %d" msgstr "" -#: src/filegui.c:589 +#: src/filegui.c:667 msgid " File exists " msgstr "" -#: src/filegui.c:589 +#: src/filegui.c:668 msgid " Background process: File exists " msgstr "" -#: src/filegui.c:683 +#. follow symlinks and preserve Attributes must be the first +#: src/filegui.c:778 msgid "preserve &Attributes" msgstr "" -#: src/filegui.c:685 +#: src/filegui.c:780 msgid "follow &Links" msgstr "" -#: src/filegui.c:694 +#. &file_mask_op_follow_links +#: src/filegui.c:782 msgid "to:" msgstr "" -#: src/filegui.c:695 +#: src/filegui.c:783 msgid "&Using shell patterns" msgstr "" -#: src/filegui.c:716 +#: src/filegui.c:804 msgid "&Background" msgstr "" -#: src/filegui.c:725 +#: src/filegui.c:813 msgid "&Stable Symlinks" msgstr "" -#: src/filegui.c:727 +#. &file_mask_stable_symlinks +#: src/filegui.c:815 msgid "&Dive into subdir if exists" msgstr "" -#: src/filegui.c:875 +#: src/filegui.c:974 msgid "" "Invalid source pattern `%s' \n" " %s " @@ -3013,51 +3108,51 @@ msgid "&Edit - F4" msgstr "" -#: src/find.c:153 +#: src/find.c:155 msgid "Start at:" msgstr "" -#: src/find.c:153 +#: src/find.c:155 msgid "Filename:" msgstr "" -#: src/find.c:153 +#: src/find.c:155 msgid "Content: " msgstr "" -#: src/find.c:154 src/main.c:1201 src/main.c:1222 +#: src/find.c:156 src/main.c:1201 src/main.c:1222 msgid "&Tree" msgstr "" -#: src/find.c:206 +#: src/find.c:208 msgid "Find File" msgstr "" -#: src/find.c:433 +#: src/find.c:435 msgid "Grepping in %s" msgstr "" -#: src/find.c:471 +#: src/find.c:473 msgid " Find/read " msgstr "" -#: src/find.c:471 +#: src/find.c:473 msgid " Problem reading from child " msgstr "" -#: src/find.c:515 +#: src/find.c:520 msgid "Finished" msgstr "" -#: src/find.c:539 src/view.c:1450 +#: src/find.c:544 src/view.c:1450 msgid "Searching %s" msgstr "" -#: src/find.c:671 src/find.c:788 +#: src/find.c:676 src/find.c:793 msgid "Searching" msgstr "" -#: src/find.c:763 +#: src/find.c:768 msgid "Find file" msgstr "" @@ -3295,87 +3390,87 @@ msgid " file your old hotlist entries were not deleted" msgstr "" -#: src/info.c:81 +#: src/info.c:82 msgid "Midnight Commander %s" msgstr "" -#: src/info.c:113 +#: src/info.c:114 msgid "Free nodes %d (%d%%) of %d" msgstr "" -#: src/info.c:119 +#: src/info.c:120 msgid "No node information" msgstr "" -#: src/info.c:124 +#: src/info.c:125 msgid "Free space " msgstr "" -#: src/info.c:126 +#: src/info.c:127 msgid " (%d%%) of " msgstr "" -#: src/info.c:130 +#: src/info.c:131 msgid "No space information" msgstr "" -#: src/info.c:134 +#: src/info.c:135 msgid "Type: %s " msgstr "" -#: src/info.c:134 +#: src/info.c:135 msgid "non-local vfs" msgstr "" -#: src/info.c:140 +#: src/info.c:141 msgid "Device: %s" msgstr "" -#: src/info.c:144 +#: src/info.c:145 msgid "Filesystem: %s" msgstr "" -#: src/info.c:149 +#: src/info.c:150 msgid "Accessed: %s" msgstr "" -#: src/info.c:153 +#: src/info.c:154 msgid "Modified: %s" msgstr "" -#: src/info.c:157 +#: src/info.c:158 msgid "Created: %s" msgstr "" -#: src/info.c:170 +#: src/info.c:171 msgid "Size: " msgstr "" -#: src/info.c:173 +#: src/info.c:174 msgid " (%d blocks)" msgstr "" -#: src/info.c:179 +#: src/info.c:180 msgid "Owner: %s/%s" msgstr "" -#: src/info.c:184 +#: src/info.c:185 msgid "Links: %d" msgstr "" -#: src/info.c:188 +#: src/info.c:189 msgid "Mode: %s (%04o)" msgstr "" -#: src/info.c:193 +#: src/info.c:194 msgid "Location: %Xh:%Xh" msgstr "" -#: src/info.c:199 +#: src/info.c:200 msgid "File: %s" msgstr "" -#: src/info.c:203 +#: src/info.c:204 msgid "File: None" msgstr "" @@ -3777,7 +3872,7 @@ " the details. " msgstr "" -#: src/main.c:1671 src/screen.c:2280 src/screen.c:2310 +#: src/main.c:1671 src/screen.c:2301 src/screen.c:2331 msgid "Menu" msgstr "" @@ -3996,71 +4091,72 @@ msgid "Display brief usage message" msgstr "" -#: src/screen.c:427 +#: src/screen.c:446 msgid "MTime" msgstr "" -#: src/screen.c:429 +#: src/screen.c:448 msgid "Permission" msgstr "" -#: src/screen.c:430 +#: src/screen.c:449 msgid "Perm" msgstr "" -#: src/screen.c:431 +#: src/screen.c:450 msgid "|" msgstr "" -#: src/screen.c:432 +#: src/screen.c:451 msgid "Nl" msgstr "" -#: src/screen.c:433 +#: src/screen.c:452 msgid "GID" msgstr "" -#: src/screen.c:434 +#: src/screen.c:453 msgid "UID" msgstr "" -#: src/screen.c:437 +#: src/screen.c:456 msgid "ATime" msgstr "" -#: src/screen.c:438 +#: src/screen.c:457 msgid "CTime" msgstr "" -#: src/screen.c:442 +#: src/screen.c:461 msgid "Inode" msgstr "" -#: src/screen.c:646 +#: src/screen.c:665 msgid " %s bytes in %d file%s" msgstr "" -#: src/screen.c:1286 +#: src/screen.c:1305 msgid "Unknow tag on display format: " msgstr "" -#: src/screen.c:2044 +#: src/screen.c:2065 msgid " Do you really want to execute? " msgstr "" -#: src/screen.c:2059 +#: src/screen.c:2080 msgid " No action taken " msgstr "" -#: src/screen.c:2284 src/screen.c:2314 src/tree.c:1022 +#: src/screen.c:2305 src/screen.c:2335 src/tree.c:1030 msgid "RenMov" msgstr "" -#: src/screen.c:2285 src/screen.c:2315 src/tree.c:1026 +#. FIXME: mkdir is currently defunct +#: src/screen.c:2306 src/screen.c:2336 src/tree.c:1034 msgid "Mkdir" msgstr "" -#: src/screen.c:2301 +#: src/screen.c:2322 msgid "" " Can't chdir to %s \n" " %s " @@ -4092,51 +4188,51 @@ "%s\n" msgstr "" -#: src/tree.c:648 +#: src/tree.c:649 msgid "Copy \"%s\" directory to:" msgstr "" -#: src/tree.c:684 +#: src/tree.c:687 msgid "Move \"%s\" directory to:" msgstr "" -#: src/tree.c:691 +#: src/tree.c:694 msgid "" " Can't stat the destination \n" " %s " msgstr "" -#: src/tree.c:697 +#: src/tree.c:700 msgid " The destination isn't a directory " msgstr "" -#: src/tree.c:752 +#: src/tree.c:758 msgid " Delete %s? " msgstr "" -#: src/tree.c:782 +#: src/tree.c:790 msgid "Static" msgstr "" -#: src/tree.c:782 +#: src/tree.c:790 msgid "Dynamc" msgstr "" -#: src/tree.c:872 +#: src/tree.c:880 msgid "" " Can't chdir to \"%s\" \n" " %s " msgstr "" -#: src/tree.c:1016 +#: src/tree.c:1024 msgid "Rescan" msgstr "" -#: src/tree.c:1018 +#: src/tree.c:1026 msgid "Forget" msgstr "" -#: src/tree.c:1031 +#: src/tree.c:1039 msgid "Rmdir" msgstr "" @@ -4513,7 +4609,7 @@ msgid "NumLock on keypad" msgstr "" -#: src/wtools.c:590 vfs/vfs.c:1779 +#: src/wtools.c:590 vfs/vfs.c:1776 msgid "Password:" msgstr "" Binary files old/mc-4.5.7/po/no.gmo and new/mc-4.5.9/po/no.gmo differ diff -ruN old/mc-4.5.7/po/no.po new/mc-4.5.9/po/no.po --- old/mc-4.5.7/po/no.po Tue Jan 12 22:38:13 1999 +++ new/mc-4.5.9/po/no.po Mon Jan 18 17:44:14 1999 @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: mc 4.5.6\n" -"POT-Creation-Date: 1999-01-10 02:56+0100\n" +"POT-Creation-Date: 1999-01-16 02:05+0100\n" "PO-Revision-Date: 1999-01-10 03:21+0100\n" "Last-Translator: Kjartan Maraas \n" "Language-Team: Norwegian \n" @@ -34,116 +34,116 @@ msgid " Press any key: " msgstr " Trykk en tast: " -#: gnome/gcmd.c:55 +#: gnome/gcmd.c:56 msgid " There is no other panel to compare contents to " msgstr " Det er ingen andre paneler å sammenligne innholdet med " -#: gnome/gcmd.c:90 +#: gnome/gcmd.c:91 msgid "GNU Midnight Commander" msgstr "GNU Midnight Commander" -#: gnome/gcmd.c:93 +#: gnome/gcmd.c:94 msgid "The GNOME edition of the Midnight Commander file manager." msgstr "GNOME utgaven av Midnight Commander filbehandleren." -#: gnome/gcmd.c:105 src/main.c:818 src/screen.c:2043 +#: gnome/gcmd.c:106 src/main.c:820 src/screen.c:2063 msgid " The Midnight Commander " msgstr " Midnight Commander " -#: gnome/gcmd.c:106 src/main.c:819 +#: gnome/gcmd.c:107 src/main.c:821 msgid " Do you really want to quit the Midnight Commander? " msgstr " Vil du virkelig avslutte Midnight Commander? " -#: gnome/gcmd.c:107 gtkedit/editcmd.c:2235 src/cmd.c:255 src/file.c:1754 -#: src/file.c:2161 src/filegui.c:496 src/hotlist.c:1029 src/main.c:820 -#: src/screen.c:2045 src/subshell.c:701 src/subshell.c:727 src/tree.c:756 +#: gnome/gcmd.c:108 gtkedit/editcmd.c:2235 src/cmd.c:256 src/file.c:1798 +#: src/file.c:2177 src/filegui.c:578 src/hotlist.c:1030 src/main.c:822 +#: src/screen.c:2065 src/subshell.c:701 src/subshell.c:727 src/tree.c:759 #: src/view.c:408 msgid "&Yes" msgstr "&Ja" -#: gnome/gcmd.c:107 gtkedit/editcmd.c:2235 src/cmd.c:255 src/file.c:1754 -#: src/file.c:2161 src/filegui.c:495 src/hotlist.c:1029 src/main.c:820 -#: src/screen.c:2045 src/subshell.c:701 src/subshell.c:727 src/tree.c:756 +#: gnome/gcmd.c:108 gtkedit/editcmd.c:2235 src/cmd.c:256 src/file.c:1798 +#: src/file.c:2177 src/filegui.c:577 src/hotlist.c:1030 src/main.c:822 +#: src/screen.c:2065 src/subshell.c:701 src/subshell.c:727 src/tree.c:759 #: src/view.c:408 msgid "&No" msgstr "&Nei" -#: gnome/gcmd.c:205 +#: gnome/gcmd.c:206 msgid "Sort By" msgstr "Sorter etter" #. we define this up here so we can pass it in to our callback -#: gnome/gcmd.c:208 +#: gnome/gcmd.c:209 msgid "Ignore case sensitivity." msgstr "Ikke skill mellom s&tore/små tegn" -#: gnome/gcmd.c:216 src/chmod.c:151 src/screen.c:424 +#: gnome/gcmd.c:217 src/chmod.c:151 src/screen.c:442 msgid "Name" msgstr "Navn" -#: gnome/gcmd.c:223 +#: gnome/gcmd.c:224 msgid "File Type" msgstr "Filtype" -#: gnome/gcmd.c:229 src/screen.c:425 src/screen.c:428 +#: gnome/gcmd.c:230 src/screen.c:443 src/screen.c:446 msgid "Size" msgstr "Størrelse" -#: gnome/gcmd.c:235 +#: gnome/gcmd.c:236 msgid "Time Last Accessed" msgstr "Tid for siste aksess" -#: gnome/gcmd.c:241 +#: gnome/gcmd.c:242 msgid "Time Last Modified" msgstr "Tid for siste modifikasjon" -#: gnome/gcmd.c:247 +#: gnome/gcmd.c:248 msgid "Time Last Changed" msgstr "Tid for siste endring" -#: gnome/gcmd.c:261 +#: gnome/gcmd.c:262 msgid "Reverse the order." msgstr "Reverser rekkefølgen." -#: gnome/gcmd.c:323 +#: gnome/gcmd.c:324 msgid "Enter name." msgstr "Skriv inn navn." -#: gnome/gcmd.c:328 +#: gnome/gcmd.c:329 msgid "Enter label for command:" msgstr "Skriv inn kommandomerkelapp:" -#: gnome/gcmd.c:423 +#: gnome/gcmd.c:424 msgid "Find all core files" msgstr "Finn alle core-filer" -#: gnome/gcmd.c:426 src/panelize.c:354 +#: gnome/gcmd.c:427 src/panelize.c:354 msgid "Find rejects after patching" msgstr "Finn avviste etter patching" -#: gnome/gcmd.c:468 +#: gnome/gcmd.c:469 msgid "Run Command" msgstr "Kjør kommando" #. Frame 1 -#: gnome/gcmd.c:472 +#: gnome/gcmd.c:473 msgid "Preset Commands" msgstr "Forhåndsinnstilte kommandoer" -#: gnome/gcmd.c:489 +#: gnome/gcmd.c:490 msgid "Add" msgstr "Legg til" -#: gnome/gcmd.c:493 +#: gnome/gcmd.c:494 msgid "Remove" msgstr "Fjern" #. Frame 2 -#: gnome/gcmd.c:501 +#: gnome/gcmd.c:502 msgid "Run this Command" msgstr "Kjør denne kommandoen" -#: gnome/gcmd.c:508 +#: gnome/gcmd.c:509 msgid "Command: " msgstr "Kommando: " @@ -152,7 +152,7 @@ msgstr "Sett filter" #: gnome/gcmd.c:557 gnome/gcmd.c:598 gnome/gcmd.c:603 gnome/gcmd.c:607 -#: gnome/gscreen.c:2288 +#: gnome/gscreen.c:2308 msgid "Show all files" msgstr "Vis alle filer" @@ -176,165 +176,173 @@ msgid "Enter a Regular Expression to filter files in the panel view." msgstr "Skriv inn et regulært uttrykk for bruk som filter i panelvisningen." -#: gnome/gdesktop.c:347 gnome/gdesktop.c:1371 +#: gnome/gcmd.c:638 gnome/gpopup.c:47 +msgid " Open with..." +msgstr " Åpne med..." + +#: gnome/gcmd.c:639 gnome/gpopup.c:48 +msgid "Enter extra arguments:" +msgstr "Skriv inn ekstra argumenter:" + +#: gnome/gdesktop.c:350 gnome/gdesktop.c:1387 msgid "Warning" msgstr "Advarsel" -#: gnome/gdesktop.c:348 +#: gnome/gdesktop.c:351 #, c-format msgid "Could not open %s; will not have initial desktop icons" msgstr "Kunne ikke åpne %s; får ikke skrivebordsikoner" -#: gnome/gdesktop.c:1337 +#: gnome/gdesktop.c:1353 msgid "Trashcan" msgstr "Søppelkurv" #. Create the link to the user's home directory so that he will have an icon -#: gnome/gdesktop.c:1367 +#: gnome/gdesktop.c:1383 msgid "Home directory" msgstr "Hjemmekatalog" -#: gnome/gdesktop.c:1372 +#: gnome/gdesktop.c:1388 #, c-format msgid "Could not symlink %s to %s; will not have initial desktop icons." msgstr "" "Kunne ikke lage symbolsk lenke fra %s til %s; får ikke skrivebordsikoner." -#: gnome/gdialogs.c:241 +#: gnome/gdialogs.c:324 msgid "Files Exist" msgstr "Filene eksisterer" -#: gnome/gdialogs.c:252 +#: gnome/gdialogs.c:335 msgid "" "Some of the files you are trying to copy already exist in the destination " "folder." msgstr "" "Noen av filene du forsøker å kopiere eksisterer allerede i målkatalogen." -#: gnome/gdialogs.c:261 +#: gnome/gdialogs.c:344 msgid "Prompt me before overwriting any file." msgstr "Spør meg før filer overskrives." -#: gnome/gdialogs.c:267 +#: gnome/gdialogs.c:351 msgid "Don't overwrite any files." msgstr "Ikke overskriv filer." -#: gnome/gdialogs.c:276 +#: gnome/gdialogs.c:363 msgid "Overwrite:" msgstr "Overskriv:" -#: gnome/gdialogs.c:282 +#: gnome/gdialogs.c:370 msgid "Older files." msgstr "Eldre filer." -#: gnome/gdialogs.c:286 +#: gnome/gdialogs.c:376 msgid "Files only if size differs." msgstr "Filer bare hvis størrelsen er forskjellig." -#: gnome/gdialogs.c:290 +#: gnome/gdialogs.c:382 msgid "All files." msgstr "Alle filer." -#: gnome/gdialogs.c:330 +#: gnome/gdialogs.c:431 msgid "File Exists" msgstr "Filen eksisterer" -#: gnome/gdialogs.c:335 +#: gnome/gdialogs.c:436 #, c-format msgid "The target file already exists: %s" msgstr "Målfilen eksisterer allerede: %s" -#: gnome/gdialogs.c:342 +#: gnome/gdialogs.c:443 msgid "Replace it?" msgstr "Erstatt den?" -#: gnome/gdialogs.c:405 gtkedit/editwidget.c:1064 gtkedit/gtkedit.c:1315 -#: src/screen.c:2283 src/screen.c:2313 src/tree.c:1023 +#: gnome/gdialogs.c:514 gtkedit/editwidget.c:1064 gtkedit/gtkedit.c:1315 +#: src/screen.c:2303 src/screen.c:2333 src/tree.c:1028 msgid "Copy" msgstr "Kopier" -#: gnome/gdialogs.c:408 gtkedit/editwidget.c:1065 +#: gnome/gdialogs.c:517 gtkedit/editwidget.c:1065 msgid "Move" msgstr "Flytt" -#: gnome/gdialogs.c:423 +#: gnome/gdialogs.c:532 msgid "Destination" msgstr "Mål" -#: gnome/gdialogs.c:427 +#: gnome/gdialogs.c:536 msgid "Find Destination Folder" msgstr "Finn målkatalog" -#: gnome/gdialogs.c:432 +#: gnome/gdialogs.c:541 msgid "Copy as a background process" msgstr "Kopier i bakgrunnen" -#: gnome/gdialogs.c:452 +#: gnome/gdialogs.c:561 msgid "Advanced Options" msgstr "Avanserte alternativer" -#: gnome/gdialogs.c:456 +#: gnome/gdialogs.c:565 msgid "Preserve symlinks" msgstr "Behold symbolske lenker" -#: gnome/gdialogs.c:466 +#: gnome/gdialogs.c:575 msgid "Follow links." msgstr "Følg lenker" -#: gnome/gdialogs.c:469 +#: gnome/gdialogs.c:580 msgid "" "Selecting this will copy the files that symlinks point to instead of just " "copying the link." msgstr "" -"Dette valget vil kopiere filene som symlenken peker til i stedet for bare " -"å kopiere lenken." +"Dette valget vil kopiere filene som symlenken peker til i stedet for bare å " +"kopiere lenken." -#: gnome/gdialogs.c:473 +#: gnome/gdialogs.c:584 msgid "Preserve file attributes." msgstr "Behold filattributter." -#: gnome/gdialogs.c:476 +#: gnome/gdialogs.c:588 msgid "Preserves the permissions and the UID/GID if possible" msgstr "Tar vare på rettighetene og UID/GID hvis mulig" -#: gnome/gdialogs.c:481 +#: gnome/gdialogs.c:593 msgid "Recursively copy subdirectories." msgstr "Kopier kataloger rekursivt." -#: gnome/gdialogs.c:484 +#: gnome/gdialogs.c:597 msgid "If set, this will copy the directories recursively" msgstr "Hvis satt, vil dette kopiere katalogen rekursivt" -#: gnome/gdialogs.c:627 +#: gnome/gdialogs.c:751 msgid "File " msgstr "Fil " -#: gnome/gdialogs.c:631 +#: gnome/gdialogs.c:755 msgid " is " msgstr " er " -#: gnome/gdialogs.c:634 +#: gnome/gdialogs.c:758 msgid " Done." msgstr " Ferdig." -#: gnome/gdnd.c:23 +#: gnome/gdnd.c:24 msgid "Move here" msgstr "Flytt hit" -#: gnome/gdnd.c:24 +#: gnome/gdnd.c:25 msgid "Copy here" msgstr "Kopier hit" -#: gnome/gdnd.c:25 +#: gnome/gdnd.c:26 msgid "Link here" msgstr "Lag lenke her" -#: gnome/gdnd.c:27 +#: gnome/gdnd.c:28 msgid "Cancel drag" msgstr "Avbryt dra" #. FIXME: this error message sucks -#: gnome/gdnd.c:211 +#: gnome/gdnd.c:207 #, c-format msgid "" "Could not stat %s\n" @@ -351,234 +359,232 @@ msgid "Default set of icons not found, check your installation" msgstr "Standard ikonsett ikke funnet, sjekk installasjonen" -#: gnome/glayout.c:268 -msgid "_New window" +#: gnome/glayout.c:273 +msgid "Enter command to run" +msgstr "Skriv inn kommando som skal kjøres" + +#: gnome/glayout.c:283 +msgid "_Terminal" +msgstr "Terminal" + +#: gnome/glayout.c:283 +msgid "Launch a new terminal in the current directory" +msgstr "Starter en ny terminal i aktiv katalog" + +#. If this ever changes, make sure you update create_new_menu accordingly. +#: gnome/glayout.c:285 +msgid "_Directory..." +msgstr "Katalog..." + +#: gnome/glayout.c:285 +msgid "Creates a new directory" +msgstr "Oppretter en ny katalog" + +#: gnome/glayout.c:291 +msgid "New _Window" msgstr "Nytt vindu" -#: gnome/glayout.c:268 +#: gnome/glayout.c:291 msgid "Opens a new window" msgstr "Åpner et nytt vindu" -#: gnome/glayout.c:269 -msgid "_New folder" -msgstr "Ny katalog" - -#: gnome/glayout.c:269 -msgid "Creates a folder" -msgstr "Oppretter en katalog" +#. We want to make a new menu entry here... +#. For example: +#. New-> +#. Command Prompt +#. Gimp Image +#. Gnumeric Spreadsheet +#. Text Document +#. etc... +#: gnome/glayout.c:301 +msgid "_New" +msgstr "Ny" -#: gnome/glayout.c:279 +#: gnome/glayout.c:303 msgid "_Open" msgstr "Åpne" -#: gnome/glayout.c:279 -msgid "Open selected files" -msgstr "Åpne valgte filer" +#: gnome/glayout.c:303 +msgid "Opens the selected files" +msgstr "Åpne de valgte filene" -#: gnome/glayout.c:281 +#. { GNOME_APP_UI_ITEM, N_("Open _FTP site"), N_("Opens an FTP site"), ftplink_cmd }, +#: gnome/glayout.c:305 msgid "_Copy..." msgstr "Kopier..." -#: gnome/glayout.c:281 +#: gnome/glayout.c:305 msgid "Copy files" msgstr "Kopier filer" -#: gnome/glayout.c:282 +#: gnome/glayout.c:306 msgid "_Delete..." msgstr "Slett..." -#: gnome/glayout.c:282 +#: gnome/glayout.c:306 msgid "Delete files from disk" msgstr "Sletter filer fra disk" -#: gnome/glayout.c:283 +#: gnome/glayout.c:307 msgid "_Move..." msgstr "Flytt..." -#: gnome/glayout.c:283 +#: gnome/glayout.c:307 msgid "Rename or move files" msgstr "Omdøp eller flytt filer" -#: gnome/glayout.c:285 +#: gnome/glayout.c:309 msgid "C_lose" msgstr "Lukk" -#: gnome/glayout.c:285 +#: gnome/glayout.c:309 msgid "Close this panel" msgstr "Lukk dette panelet" -#: gnome/glayout.c:291 -msgid "_Cut" -msgstr "Klipp ut" - -#: gnome/glayout.c:291 -msgid "Cuts the selected files into the cut buffer." -msgstr "Klipper ut valgte filer til utklippsbufferen." - -#: gnome/glayout.c:293 -msgid "C_opy" -msgstr "Kopier" - -#: gnome/glayout.c:293 -msgid "Copies the selected files into the cut buffer." -msgstr "Kopierer valgte filer til utklippsbufferen." - -#: gnome/glayout.c:295 -msgid "_Paste" -msgstr "Lim inn" - -#: gnome/glayout.c:295 -msgid "Pastes files from the cut buffer into the current directory" -msgstr "Limer inn filer fra utklippsbufferen til aktiv katalog" - -#: gnome/glayout.c:298 +#: gnome/glayout.c:320 msgid "_Select All" msgstr " Velg alle" -#: gnome/glayout.c:298 +#: gnome/glayout.c:320 msgid "Select all files in the current Panel" msgstr "Velg alle filer i aktivt panel" -#: gnome/glayout.c:299 +#: gnome/glayout.c:321 msgid "_Select Files..." msgstr "Velg filer..." -#: gnome/glayout.c:299 +#: gnome/glayout.c:321 msgid "Select a group of files" msgstr "Velg en gruppe av filer" -#: gnome/glayout.c:300 +#: gnome/glayout.c:322 msgid "_Invert Selection" msgstr "Reverser valg" -#: gnome/glayout.c:300 +#: gnome/glayout.c:322 msgid "Reverses the list of tagged files" msgstr "Reverserer listen med merkede filer" -#: gnome/glayout.c:302 +#: gnome/glayout.c:324 msgid "_Rescan Directory" msgstr "Oppdater kataloginnholdet" -#: gnome/glayout.c:302 +#: gnome/glayout.c:324 msgid "Rescan the directory contents" msgstr "Oppdater kataloginnholdet" -#: gnome/glayout.c:304 -msgid "Preferences..." -msgstr "Innstillinger..." - -#: gnome/glayout.c:304 -msgid "Configure the GNOME Midnight Commander" -msgstr "Konfigurér GNOME Midnight Commander" - -#: gnome/glayout.c:310 +#: gnome/glayout.c:331 msgid "Icon View" msgstr "Ikonvisning" -#: gnome/glayout.c:311 +#: gnome/glayout.c:332 msgid "Partial View" msgstr "Delvis visning" -#: gnome/glayout.c:312 +#: gnome/glayout.c:333 msgid "Full View" msgstr "Detaljert visning" -#: gnome/glayout.c:313 +#: gnome/glayout.c:334 msgid "Custom View" msgstr "Egendefinert visning" -#: gnome/glayout.c:319 +#: gnome/glayout.c:340 msgid "_Sort By..." msgstr "Sorter etter..." -#: gnome/glayout.c:319 +#: gnome/glayout.c:340 msgid "Confirmation settings" msgstr "Innstillinger for bekreftelse" -#: gnome/glayout.c:320 +#: gnome/glayout.c:341 msgid "_Filter View..." msgstr "Filtrert visning..." -#: gnome/glayout.c:320 +#: gnome/glayout.c:341 msgid "Global option settings" msgstr "Innstillinger for globale alternativer" -#: gnome/glayout.c:327 +#: gnome/glayout.c:348 msgid "_Find File..." msgstr "Finn fil..." -#: gnome/glayout.c:327 +#: gnome/glayout.c:348 msgid "Locate files on disk" msgstr "Lokaliser filer på disken" -#: gnome/glayout.c:330 +#: gnome/glayout.c:351 msgid "_Compare panels..." msgstr "Sammenlign paneler..." -#: gnome/glayout.c:330 +#: gnome/glayout.c:351 msgid "Compare two panel contents" msgstr "Sammenlign innholdet i panelene" -#: gnome/glayout.c:331 +#: gnome/glayout.c:352 msgid "_Run Command..." msgstr "Kjør kommando..." -#: gnome/glayout.c:331 +#: gnome/glayout.c:352 +msgid "Runs a command" +msgstr "Kjører en kommando" + +#: gnome/glayout.c:354 +msgid "_Run Command in panel..." +msgstr "Kjør kommando i panelet..." + +#: gnome/glayout.c:354 msgid "Run a command and put the results in a panel" msgstr "Kjør en kommando og legg resultatene i panelet" -#: gnome/glayout.c:333 +#: gnome/glayout.c:357 msgid "_Active VFS list..." msgstr "Liste over aktive VFS..." -#: gnome/glayout.c:333 +#: gnome/glayout.c:357 msgid "List of active virtual file systems" msgstr "Liste over aktive virtuelle filsystemer" -#: gnome/glayout.c:340 +#: gnome/glayout.c:364 msgid "_Background jobs..." msgstr "Bakgrunnsjobber..." -#: gnome/glayout.c:340 +#: gnome/glayout.c:364 msgid "List of background operations" msgstr "Liste over bakgrunnsjobber" #. GNOMEUIINFO_HELP ("midnight-commander"), -#: gnome/glayout.c:348 +#: gnome/glayout.c:372 msgid "_About" msgstr "Om" -#: gnome/glayout.c:348 +#: gnome/glayout.c:372 msgid "Information on this program" msgstr "Informasjon om dette programmet" -#: gnome/glayout.c:354 +#: gnome/glayout.c:378 gnome/gview.c:323 msgid "_File" msgstr "Fil" -#: gnome/glayout.c:355 +#: gnome/glayout.c:379 msgid "_Edit" msgstr "Rediger" -#: gnome/glayout.c:356 +#: gnome/glayout.c:380 msgid "_Layout" msgstr "Utseende" -#: gnome/glayout.c:357 +#: gnome/glayout.c:381 msgid "_Commands" msgstr "Kommandoer" -#: gnome/glayout.c:358 +#: gnome/glayout.c:382 msgid "_Help" msgstr "Hjelp" -#: gnome/gpopup.c:47 -msgid " Open with..." -msgstr " Åpne med..." - -#: gnome/gpopup.c:48 -msgid "Enter extra arguments:" -msgstr "Skriv inn ekstra argumenter:" +#: gnome/glayout.c:484 +msgid "File/New/Directory..." +msgstr "" #: gnome/gpopup.c:199 gnome/gpopup.c:200 msgid "Properties" @@ -592,7 +598,7 @@ msgid "Open with" msgstr "Åpne med" -#: gnome/gpopup.c:205 src/screen.c:2281 src/screen.c:2311 +#: gnome/gpopup.c:205 src/screen.c:2301 src/screen.c:2331 msgid "View" msgstr "Se på" @@ -600,8 +606,8 @@ msgid "View unfiltered" msgstr "Se på ufiltrert" -#: gnome/gpopup.c:207 gtkedit/gtkedit.c:1363 src/screen.c:2282 -#: src/screen.c:2312 src/view.c:1972 +#: gnome/gpopup.c:207 gtkedit/gtkedit.c:1363 src/screen.c:2302 +#: src/screen.c:2332 src/view.c:1972 msgid "Edit" msgstr "Rediger" @@ -626,7 +632,7 @@ msgstr "Kopier..." #: gnome/gpopup.c:220 gnome/gpopup.c:232 gtkedit/editwidget.c:1067 -#: src/screen.c:2286 src/screen.c:2316 +#: src/screen.c:2306 src/screen.c:2336 msgid "Delete" msgstr "Slett" @@ -681,7 +687,7 @@ msgstr "Bruker" #. Group -#: gnome/gprop.c:280 gnome/gprop.c:405 src/screen.c:436 +#: gnome/gprop.c:280 gnome/gprop.c:405 src/screen.c:454 msgid "Group" msgstr "Gruppe" @@ -707,7 +713,7 @@ msgstr "" #. Owner -#: gnome/gprop.c:390 src/screen.c:435 +#: gnome/gprop.c:390 src/screen.c:453 msgid "Owner" msgstr "Eier" @@ -727,104 +733,104 @@ msgid "Select icon" msgstr "Velg ikon" -#: gnome/gscreen.c:1438 +#: gnome/gscreen.c:1458 msgid "All files" msgstr "Alle filer" -#: gnome/gscreen.c:1440 +#: gnome/gscreen.c:1460 msgid "Archives and compressed files" msgstr "Arkiver og komprimerte filer" -#: gnome/gscreen.c:1442 +#: gnome/gscreen.c:1462 msgid "RPM/DEB files" msgstr "RPM/DEB filer" -#: gnome/gscreen.c:1444 +#: gnome/gscreen.c:1464 msgid "Text/Document files" msgstr "Tekst-/dokumentfiler" -#: gnome/gscreen.c:1446 +#: gnome/gscreen.c:1466 msgid "HTML and SGML files" msgstr "HTML- og SGML-filer" -#: gnome/gscreen.c:1448 +#: gnome/gscreen.c:1468 msgid "Postscript and PDF files" msgstr "Postscript- of PDF-filer" -#: gnome/gscreen.c:1450 +#: gnome/gscreen.c:1470 msgid "Spreadsheet files" msgstr "Regnearkfiler" -#: gnome/gscreen.c:1452 +#: gnome/gscreen.c:1472 msgid "Image files" msgstr "Bildefiler" -#: gnome/gscreen.c:1455 +#: gnome/gscreen.c:1475 msgid "Video/animation files" msgstr "Video-/animasjonsfiler" -#: gnome/gscreen.c:1457 +#: gnome/gscreen.c:1477 msgid "Audio files" msgstr "Lydfiler" -#: gnome/gscreen.c:1459 +#: gnome/gscreen.c:1479 msgid "C program files" msgstr "C programfiler" -#: gnome/gscreen.c:1461 +#: gnome/gscreen.c:1481 msgid "C++ program files" msgstr "C++ programfiler" -#: gnome/gscreen.c:1463 +#: gnome/gscreen.c:1483 msgid "Objective-C program files" msgstr "Objektiv-C programfiler" -#: gnome/gscreen.c:1465 +#: gnome/gscreen.c:1485 msgid "Scheme program files" msgstr "Scheme programfiler" -#: gnome/gscreen.c:1467 +#: gnome/gscreen.c:1487 msgid "Assembler program files" msgstr "Assembler programfiler" -#: gnome/gscreen.c:1469 +#: gnome/gscreen.c:1489 msgid "Misc. program files" msgstr "Forskj. programfiler" -#: gnome/gscreen.c:1471 +#: gnome/gscreen.c:1491 msgid "Font files" msgstr "Skrifttypefiler" -#: gnome/gscreen.c:1598 +#: gnome/gscreen.c:1618 #, c-format msgid "Search: %s" msgstr "Søk: %s" -#: gnome/gscreen.c:1608 +#: gnome/gscreen.c:1628 #, c-format msgid "%s bytes in %d file" msgstr "%s bytes i %d fil" -#: gnome/gscreen.c:1608 +#: gnome/gscreen.c:1628 #, c-format msgid "%s bytes in %d files" msgstr "%s bytes i %d filer" -#: gnome/gscreen.c:1634 src/screen.c:673 +#: gnome/gscreen.c:1654 src/screen.c:691 msgid "" msgstr "" -#: gnome/gscreen.c:1688 +#: gnome/gscreen.c:1708 msgid "Filter" msgstr "Filter" -#: gnome/gscreen.c:2243 +#: gnome/gscreen.c:2263 msgid "Location:" msgstr "Sted:" -#: gnome/gtools.c:103 src/boxes.c:141 src/boxes.c:281 src/boxes.c:381 -#: src/boxes.c:469 src/boxes.c:649 src/boxes.c:733 src/boxes.c:788 -#: src/boxes.c:899 src/filegui.c:724 src/find.c:154 src/layout.c:370 +#: gnome/gtools.c:103 src/boxes.c:142 src/boxes.c:282 src/boxes.c:382 +#: src/boxes.c:470 src/boxes.c:650 src/boxes.c:732 src/boxes.c:787 +#: src/boxes.c:898 src/filegui.c:812 src/find.c:156 src/layout.c:372 #: src/option.c:144 src/wtools.c:292 src/wtools.c:564 msgid "&Ok" msgstr "&Ok" @@ -845,7 +851,7 @@ msgstr "%s bytes" #: gnome/gview.c:289 -msgid "Goto line" +msgid "_Goto line" msgstr "Gå til linje" #: gnome/gview.c:290 @@ -853,68 +859,43 @@ msgstr "Hopp til et spesifisert linjenummer" #: gnome/gview.c:292 -msgid "Monitor file" +msgid "_Monitor file" msgstr "Hold øye med fil" #: gnome/gview.c:292 msgid "Monitor file growing" msgstr "Hold øye med filvekst" -#: gnome/gview.c:293 -msgid "Close" -msgstr "Lukk" - -#: gnome/gview.c:294 -msgid "Close the viewer" -msgstr "Avslutt visningen" - -#: gnome/gview.c:300 gnome/gview.c:330 gtkedit/editwidget.c:1066 -#: src/view.c:1976 -msgid "Search" -msgstr "Søk" - -#: gnome/gview.c:301 -msgid "String search" -msgstr "Søk etter streng" - -#: gnome/gview.c:303 +#: gnome/gview.c:299 msgid "Regexp search" msgstr "Regexp-søk" -#: gnome/gview.c:304 +#: gnome/gview.c:300 msgid "Regular expression search" msgstr "Søk etter vanlig uttrykk" -#: gnome/gview.c:307 -msgid "Search again..." -msgstr "Søk igjen..." - -#: gnome/gview.c:308 -msgid "Continue searching" -msgstr "Fortsett søket" - -#: gnome/gview.c:315 src/view.c:1973 -msgid "Wrap" +#: gnome/gview.c:309 +msgid "_Wrap" msgstr "Bryt" -#: gnome/gview.c:315 +#: gnome/gview.c:309 msgid "Wrap the text" msgstr "Bryt teksten" -#: gnome/gview.c:321 -msgid "Formatted" +#: gnome/gview.c:315 +msgid "_Formatted" msgstr "Formatert" -#: gnome/gview.c:323 src/view.c:1966 -msgid "Hex" +#: gnome/gview.c:317 +msgid "_Hex" msgstr "Hex" -#: gnome/gview.c:329 gtkedit/gtkedit.c:1362 src/filegui.c:361 -msgid "File" -msgstr "Fil" +#: gnome/gview.c:324 +msgid "_Search" +msgstr "Søk" -#: gnome/gview.c:331 src/achown.c:380 -msgid "Mode" +#: gnome/gview.c:325 +msgid "_Mode" msgstr "Modus" #: gnome/gwidget.c:90 @@ -946,31 +927,31 @@ msgstr "avbryt" #. The file-name is printed after the ':' -#: gtkedit/edit.c:127 gtkedit/edit.c:222 gtkedit/edit.c:229 gtkedit/edit.c:236 -#: gtkedit/edit.c:243 gtkedit/edit.c:249 gtkedit/edit.c:306 gtkedit/edit.c:342 +#: gtkedit/edit.c:129 gtkedit/edit.c:224 gtkedit/edit.c:231 gtkedit/edit.c:238 +#: gtkedit/edit.c:245 gtkedit/edit.c:251 gtkedit/edit.c:308 gtkedit/edit.c:344 #: gtkedit/editcmd.c:1932 gtkedit/editwidget.c:947 src/dir.c:378 -#: src/screen.c:2301 src/tree.c:694 src/tree.c:700 src/wtools.c:225 +#: src/screen.c:2321 src/tree.c:694 src/tree.c:700 src/wtools.c:225 #: vfs/fish.c:226 msgid " Error " msgstr " Feil " -#: gtkedit/edit.c:127 gtkedit/edit.c:229 +#: gtkedit/edit.c:129 gtkedit/edit.c:231 msgid " Failed trying to open file for reading: " msgstr " Feil under åpning av fil for lesing: " -#: gtkedit/edit.c:236 +#: gtkedit/edit.c:238 msgid " Cannot get size/permissions info on file: " msgstr " Kan ikke finne størrelse-/rettighetsinformasjon for filen: " -#: gtkedit/edit.c:243 +#: gtkedit/edit.c:245 msgid " Not an ordinary file: " msgstr " Ikke en vanlig fil: " -#: gtkedit/edit.c:249 +#: gtkedit/edit.c:251 msgid " File is too large: " msgstr " Filen er for stor: " -#: gtkedit/edit.c:250 +#: gtkedit/edit.c:252 msgid "" " \n" " Increase edit.h:MAXBUF and recompile the editor. " @@ -978,7 +959,7 @@ " \n" " Gjør edit.h:MAXBUF større og rekompiler editoren. " -#: gtkedit/edit.c:306 gtkedit/edit.c:342 +#: gtkedit/edit.c:308 gtkedit/edit.c:344 msgid " Error allocating memory " msgstr " Feil under minneallokering " @@ -988,8 +969,8 @@ #. Warning message with a query to continue or cancel the operation #: gtkedit/editcmd.c:482 gtkedit/editcmd.c:801 gtkedit/editcmd.c:831 -#: gtkedit/editcmd.c:978 gtkedit/editcmd.c:1075 src/ext.c:297 src/file.c:683 -#: src/help.c:321 src/main.c:665 src/screen.c:2059 src/subshell.c:700 +#: gtkedit/editcmd.c:978 gtkedit/editcmd.c:1075 src/ext.c:297 src/file.c:613 +#: src/help.c:321 src/main.c:667 src/screen.c:2079 src/subshell.c:700 #: src/subshell.c:726 src/utilunix.c:384 src/utilunix.c:388 src/utilunix.c:454 #: vfs/mcfs.c:171 msgid " Warning " @@ -1527,7 +1508,7 @@ msgid "&Save mode..." msgstr "Lagringsmodus..." -#: gtkedit/editmenu.c:246 gtkedit/editmenu.c:255 src/main.c:1302 +#: gtkedit/editmenu.c:246 gtkedit/editmenu.c:255 src/main.c:1304 msgid "&Layout..." msgstr "Utseende." @@ -1721,7 +1702,7 @@ msgstr "Feil under initialisering av editor.\n" #: gtkedit/editwidget.c:1060 gtkedit/gtkedit.c:1365 src/help.c:809 -#: src/main.c:1668 src/screen.c:2279 src/screen.c:2309 src/tree.c:1017 +#: src/main.c:1670 src/screen.c:2299 src/screen.c:2329 src/tree.c:1022 #: src/view.c:1963 msgid "Help" msgstr "Hjelp" @@ -1734,11 +1715,15 @@ msgid "Replac" msgstr "Erstatt" -#: gtkedit/editwidget.c:1069 src/main.c:1670 +#: gtkedit/editwidget.c:1066 src/view.c:1976 +msgid "Search" +msgstr "Søk" + +#: gtkedit/editwidget.c:1069 src/main.c:1672 msgid "PullDn" msgstr "Trekk ned" -#: gtkedit/editwidget.c:1070 src/help.c:821 src/main.c:1671 src/view.c:1965 +#: gtkedit/editwidget.c:1070 src/help.c:821 src/main.c:1673 src/view.c:1965 #: src/view.c:1985 msgid "Quit" msgstr "Avslutt" @@ -1866,6 +1851,10 @@ msgid "Info about Mcedit" msgstr "Info om Mcedit" +#: gtkedit/gtkedit.c:1362 src/filegui.c:409 +msgid "File" +msgstr "Fil" + #: gtkedit/syntax.c:3180 gtkedit/syntax.c:3187 msgid " Load syntax file " msgstr " Les syntaksfil " @@ -1879,11 +1868,11 @@ msgid " Syntax error in file %s on line %d " msgstr " Syntaksfeil i filen %s ved linje %d " -#: src/achown.c:73 src/boxes.c:142 src/boxes.c:282 src/boxes.c:379 -#: src/boxes.c:467 src/boxes.c:647 src/boxes.c:732 src/boxes.c:786 -#: src/chmod.c:115 src/chown.c:81 src/cmd.c:850 src/filegui.c:707 -#: src/find.c:154 src/hotlist.c:140 src/hotlist.c:812 src/hotlist.c:905 -#: src/layout.c:371 src/learn.c:61 src/option.c:145 src/panelize.c:90 +#: src/achown.c:73 src/boxes.c:143 src/boxes.c:283 src/boxes.c:380 +#: src/boxes.c:468 src/boxes.c:648 src/boxes.c:731 src/boxes.c:785 +#: src/chmod.c:115 src/chown.c:81 src/cmd.c:860 src/filegui.c:795 +#: src/find.c:156 src/hotlist.c:141 src/hotlist.c:813 src/hotlist.c:906 +#: src/layout.c:373 src/learn.c:61 src/option.c:145 src/panelize.c:90 #: src/view.c:408 src/wtools.c:114 src/wtools.c:389 src/wtools.c:562 #: src/wtools.c:643 msgid "&Cancel" @@ -1921,6 +1910,10 @@ msgid "Flag" msgstr "Flagg" +#: src/achown.c:380 +msgid "Mode" +msgstr "Modus" + #: src/achown.c:385 #, c-format msgid "%6d of %d" @@ -1963,27 +1956,27 @@ msgid " I can't run the Advanced Chown command on a tarfs " msgstr " Kan ikke kjøre avansert chown kommando på et tarfs " -#: src/background.c:181 +#: src/background.c:180 msgid "Background process:" msgstr "Bakgrunnsprosess:" -#: src/background.c:286 src/file.c:2104 +#: src/background.c:286 src/file.c:2120 msgid " Background process error " msgstr " Feil i bakgrunnsprosess " -#: src/background.c:291 +#: src/background.c:293 msgid " Child died unexpectedly " msgstr " Barn døde uventet " -#: src/background.c:293 +#: src/background.c:295 msgid " Unknown error in child " msgstr " Ukjent feil i barn " -#: src/background.c:308 +#: src/background.c:310 msgid " Background protocol error " msgstr " Feil i bakgrunnsprotkoll " -#: src/background.c:309 +#: src/background.c:311 msgid "" " Background process sent us a request for more arguments \n" " than we can handle. \n" @@ -1991,152 +1984,152 @@ " Bakgrunnsprosessen sendte oss en forespørsel etter flere \n" " argumenter enn vi kan takle. \n" -#: src/boxes.c:66 +#: src/boxes.c:67 msgid " Listing mode " msgstr " Listemodus " -#: src/boxes.c:71 +#: src/boxes.c:72 msgid "&Full file list" msgstr "&Full filliste" -#: src/boxes.c:72 +#: src/boxes.c:73 msgid "&Brief file list" msgstr "&Kort filliste" -#: src/boxes.c:73 +#: src/boxes.c:74 msgid "&Long file list" msgstr "&Lang filliste" -#: src/boxes.c:74 +#: src/boxes.c:75 msgid "&User defined:" msgstr "&Brukerdefinert:" -#: src/boxes.c:75 +#: src/boxes.c:76 msgid "&Icon view" msgstr "&Ikonvisning" -#: src/boxes.c:140 +#: src/boxes.c:141 msgid "user &Mini status" msgstr "brukers &Ministatus" -#: src/boxes.c:189 +#: src/boxes.c:190 msgid "Listing mode" msgstr "Listemodus" -#: src/boxes.c:283 +#: src/boxes.c:284 msgid "&Reverse" msgstr "&Reversert" -#: src/boxes.c:284 +#: src/boxes.c:285 msgid "case sensi&tive" msgstr "skill mellom s&tore/små tegn" -#: src/boxes.c:285 +#: src/boxes.c:286 msgid "Sort order" msgstr "Sorteringsrekkefølge" -#: src/boxes.c:384 +#: src/boxes.c:385 msgid " confirm &Exit " msgstr " bekreft &Avslutt " -#: src/boxes.c:386 +#: src/boxes.c:387 msgid " confirm e&Xecute " msgstr " bekreft k&Jør " -#: src/boxes.c:388 +#: src/boxes.c:389 msgid " confirm o&Verwrite " msgstr " bekreft o&Verskriv " -#: src/boxes.c:390 +#: src/boxes.c:391 msgid " confirm &Delete " msgstr " bekreft &slett " -#: src/boxes.c:396 +#: src/boxes.c:397 msgid " Confirmation " msgstr " Bekreftelse " -#: src/boxes.c:464 +#: src/boxes.c:465 msgid "Full 8 bits output" msgstr "Full 8-bits utskrift" -#: src/boxes.c:464 +#: src/boxes.c:465 msgid "ISO 8859-1" msgstr "ISO 8859-1" -#: src/boxes.c:464 +#: src/boxes.c:465 msgid "7 bits" msgstr "7-bits" -#: src/boxes.c:471 +#: src/boxes.c:472 msgid "F&ull 8 bits input" msgstr "F&ull 8-bits input" -#: src/boxes.c:479 +#: src/boxes.c:480 msgid " Display bits " msgstr " Visning i bits " -#: src/boxes.c:654 +#: src/boxes.c:655 msgid "&Always use ftp proxy" msgstr "&Alltid bruk ftp-stedfortreder" -#: src/boxes.c:656 +#: src/boxes.c:657 msgid "sec" msgstr "sek" -#: src/boxes.c:660 +#: src/boxes.c:661 msgid "ftpfs directory cache timeout:" msgstr "ftpfs katalog cache tidsavbrudd:" -#: src/boxes.c:664 +#: src/boxes.c:665 msgid "ftp anonymous password:" msgstr "ftp anonymt passord:" -#: src/boxes.c:671 +#: src/boxes.c:672 msgid "Timeout for freeing VFSs:" msgstr "Tidsavbrudd for frigjøring av VFS'er:" -#: src/boxes.c:677 +#: src/boxes.c:678 msgid " Virtual File System Setting " msgstr " Innstillinger for virtuelt filsystem " -#: src/boxes.c:745 +#: src/boxes.c:744 msgid "Quick cd" msgstr "Rask katalogskift" #. want cd like completion -#: src/boxes.c:750 +#: src/boxes.c:749 msgid "cd" msgstr "cd" -#: src/boxes.c:806 +#: src/boxes.c:805 msgid "Symbolic link filename:" msgstr "Filnavn for symbolsk lenke:" -#: src/boxes.c:808 +#: src/boxes.c:807 msgid "Existing filename (filename symlink will point to):" msgstr "Eksisterende filnavn (filnavnet symlinken skal peke til):" -#: src/boxes.c:837 +#: src/boxes.c:836 msgid "Running " msgstr "Kjører" -#: src/boxes.c:838 src/find.c:671 +#: src/boxes.c:837 src/find.c:676 msgid "Stopped" msgstr "Stoppet" -#: src/boxes.c:896 +#: src/boxes.c:895 msgid "&Stop" msgstr "&Stopp" -#: src/boxes.c:897 +#: src/boxes.c:896 msgid "&Resume" msgstr "&Gjenoppta" -#: src/boxes.c:898 +#: src/boxes.c:897 msgid "&Kill" msgstr "&Drep" -#: src/boxes.c:937 +#: src/boxes.c:936 msgid "Background Jobs" msgstr "Bakgrunnsjobber" @@ -2293,134 +2286,134 @@ msgid " I can't run the Chown command on a tarfs " msgstr " Jeg kan ikke kjøre chown kommandoen på et tarfs " -#: src/cmd.c:204 +#: src/cmd.c:205 #, c-format msgid " Can not fetch a local copy of %s " msgstr " Kan ikke hente en lokal kopi av %s " -#: src/cmd.c:254 +#: src/cmd.c:255 msgid " CD " msgstr " CD " -#: src/cmd.c:254 +#: src/cmd.c:255 msgid "Files tagged, want to cd?" msgstr "Filer merket, vil du skifte katalog?" -#: src/cmd.c:260 src/cmd.c:709 src/cmd.c:723 +#: src/cmd.c:261 src/cmd.c:719 src/cmd.c:733 msgid "Could not change directory" msgstr " Kunne ikke skifte katalog" -#: src/cmd.c:289 +#: src/cmd.c:290 msgid " View file " msgstr " Se på fil " -#: src/cmd.c:289 +#: src/cmd.c:290 msgid " Filename:" msgstr " Filnavn:" -#: src/cmd.c:306 +#: src/cmd.c:307 msgid " Filtered view " msgstr " Filtrert visning " -#: src/cmd.c:306 +#: src/cmd.c:307 msgid " Filter command and arguments:" msgstr " Filterkommando og argumenter:" -#: src/cmd.c:391 -msgid " Mkdir " -msgstr " Lag katalog " +#: src/cmd.c:393 +msgid "Create a new Directory" +msgstr "Opprett en ny katalog" -#: src/cmd.c:391 +#: src/cmd.c:393 msgid " Enter directory name:" msgstr " Skriv inn katalognavnet:" -#: src/cmd.c:446 +#: src/cmd.c:455 msgid " Filter " msgstr " Filter " -#: src/cmd.c:446 +#: src/cmd.c:455 msgid " Set expression for filtering filenames" msgstr " Sett uttrykk for filtrering av filnavn" -#: src/cmd.c:512 +#: src/cmd.c:521 msgid " Select " msgstr " Velg " -#: src/cmd.c:540 src/cmd.c:591 +#: src/cmd.c:549 src/cmd.c:600 msgid " Malformed regular expression " msgstr " Malformert vanlig uttrykk " -#: src/cmd.c:564 +#: src/cmd.c:573 msgid " Unselect " msgstr " Velg bort " -#: src/cmd.c:636 +#: src/cmd.c:646 msgid "Extension file edit" msgstr "Rediger utvidelsesfil" -#: src/cmd.c:637 +#: src/cmd.c:647 msgid " Which extension file you want to edit? " msgstr " Hvilken utvidelsesfil vil du redigere? " -#: src/cmd.c:638 +#: src/cmd.c:648 msgid "&User" msgstr "&Bruker" -#: src/cmd.c:638 src/cmd.c:664 +#: src/cmd.c:648 src/cmd.c:674 msgid "&System Wide" msgstr "&System" -#: src/cmd.c:661 +#: src/cmd.c:671 msgid "Menu file edit" msgstr "Rediger menyfil" -#: src/cmd.c:662 +#: src/cmd.c:672 msgid " Which menu file will you edit? " msgstr " Hvilken menyfil vil du redigere? " -#: src/cmd.c:664 +#: src/cmd.c:674 msgid "&Local" msgstr "&Lokal" -#: src/cmd.c:664 +#: src/cmd.c:674 msgid "&Home" msgstr "&Hjemme" -#: src/cmd.c:849 +#: src/cmd.c:859 msgid " Compare directories " msgstr " Sammenlign kataloger " -#: src/cmd.c:849 +#: src/cmd.c:859 msgid " Select compare method: " msgstr " Velg metode for sammenligning: " -#: src/cmd.c:850 +#: src/cmd.c:860 msgid "&Quick" msgstr "&Rask" -#: src/cmd.c:850 +#: src/cmd.c:860 msgid "&Size only" msgstr "Bare &Størrelse" -#: src/cmd.c:850 +#: src/cmd.c:860 msgid "&Thorough" msgstr "&Grundig" -#: src/cmd.c:860 +#: src/cmd.c:870 msgid " Both panels should be on the listing view mode to use this command " msgstr "" " Begge panelene bør være i visningsmodus for liste for å bruke denne " "kommandoen " -#: src/cmd.c:874 +#: src/cmd.c:884 msgid " The command history is empty " msgstr " Kommandohistorikken er tom " -#: src/cmd.c:880 +#: src/cmd.c:890 msgid " Command history " msgstr " Kommandohistorikk " -#: src/cmd.c:922 +#: src/cmd.c:932 msgid "" " Not an xterm or Linux console; \n" " the panels cannot be toggled. " @@ -2428,7 +2421,7 @@ " Ikke en xterm elle Linux konsoll; \n" " panelene kan ikke slås av og på. " -#: src/cmd.c:961 +#: src/cmd.c:971 msgid "" "Type `exit' to return to the Midnight Commander\n" "\r\n" @@ -2438,7 +2431,7 @@ "\r\n" "\r" -#: src/cmd.c:1014 +#: src/cmd.c:1024 #, c-format msgid "" " Couldn't stat %s \n" @@ -2447,92 +2440,92 @@ " Kunne ikke kjøre stat på %s \n" " %s " -#: src/cmd.c:1023 src/cmd.c:1025 +#: src/cmd.c:1033 src/cmd.c:1035 msgid " Link " msgstr " Lenke " -#: src/cmd.c:1024 src/cmd.c:1129 src/file.c:2289 +#: src/cmd.c:1034 src/cmd.c:1139 src/file.c:1628 msgid " to:" msgstr " til:" -#: src/cmd.c:1035 +#: src/cmd.c:1045 #, c-format msgid " link: %s " msgstr " lenke: %s " -#: src/cmd.c:1068 +#: src/cmd.c:1078 #, c-format msgid " symlink: %s " msgstr " symlink: %s " -#: src/cmd.c:1094 +#: src/cmd.c:1104 msgid " Symlink " msgstr " Symlinken " -#: src/cmd.c:1094 +#: src/cmd.c:1104 msgid " points to:" msgstr " peker til:" -#: src/cmd.c:1099 +#: src/cmd.c:1109 msgid " Edit symlink " msgstr " Rediger symlink " -#: src/cmd.c:1105 +#: src/cmd.c:1115 #, c-format msgid " edit symlink: %s " msgstr " rediger symlink: %s " -#: src/cmd.c:1129 +#: src/cmd.c:1139 msgid " Link symbolically " msgstr " Lag symbolsk lenke " -#: src/cmd.c:1130 +#: src/cmd.c:1140 msgid " Relative symlink " msgstr " Relativ symlink " -#: src/cmd.c:1141 +#: src/cmd.c:1151 #, c-format msgid " relative symlink: %s " msgstr " relativ symlink: %s " -#: src/cmd.c:1244 +#: src/cmd.c:1254 msgid " Enter machine name (F1 for details): " msgstr " Skriv inn maskinnavn (F1 for detaljer): " -#: src/cmd.c:1268 +#: src/cmd.c:1278 #, c-format msgid " Could not chdir to %s " msgstr " Kunne ikke skifte katalog til %s " -#: src/cmd.c:1275 +#: src/cmd.c:1285 msgid " Link to a remote machine " msgstr " Lenke til en fjern maskin " -#: src/cmd.c:1281 +#: src/cmd.c:1291 msgid " FTP to machine " msgstr " FTP til maskin " -#: src/cmd.c:1291 +#: src/cmd.c:1301 msgid " Socket source routing setup " msgstr " Oppsett av kontaktens kilderuting" -#: src/cmd.c:1292 +#: src/cmd.c:1302 msgid " Enter host name to use as a source routing hop: " msgstr " Skriv inn vertsnavnet som skal brukes som kilderutingshop: " -#: src/cmd.c:1299 +#: src/cmd.c:1309 msgid " Host name " msgstr " Vertsnavn " -#: src/cmd.c:1299 +#: src/cmd.c:1309 msgid " Error while looking up IP address " msgstr " Feil under oppslag av IP-adresse " -#: src/cmd.c:1310 +#: src/cmd.c:1320 msgid " Undelete files on an ext2 file system " msgstr " Gjenopprett filer på et ext2 filsystem " -#: src/cmd.c:1311 +#: src/cmd.c:1321 msgid "" " Enter device (without /dev/) to undelete\n" " files on: (F1 for details)" @@ -2540,11 +2533,11 @@ " Skriv inn enhet (uten /dev/) som det skal gjenopprettes\n" " filer på: (F1 for detaljer)" -#: src/cmd.c:1361 +#: src/cmd.c:1371 msgid " Setup saved to ~/" msgstr " Oppsett lagret til ~/" -#: src/cmd.c:1366 +#: src/cmd.c:1376 msgid " Setup " msgstr " Oppsett " @@ -2698,27 +2691,27 @@ msgid "mc.ext will be used for this moment." msgstr "mc.ext vil bli brukt foreløpig." -#: src/file.c:229 src/tree.c:653 +#: src/file.c:161 src/tree.c:651 msgid " Copy " msgstr " Kopier " -#: src/file.c:230 src/tree.c:689 +#: src/file.c:162 src/tree.c:689 msgid " Move " msgstr " Flytt " -#: src/file.c:231 src/tree.c:756 +#: src/file.c:163 src/tree.c:759 msgid " Delete " msgstr " Slett " -#: src/file.c:313 +#: src/file.c:251 msgid " Invalid target mask " msgstr " Ugyldig målmaske " -#: src/file.c:411 +#: src/file.c:349 msgid " Could not make the hardlink " msgstr " Kunne ikke lage den faste lenken " -#: src/file.c:454 +#: src/file.c:391 #, c-format msgid "" " Cannot read source link \"%s\" \n" @@ -2727,7 +2720,7 @@ " Kan ikke lese kildelenken \"%s\" \n" " %s " -#: src/file.c:464 +#: src/file.c:401 msgid "" " Cannot make stable symlinks across non-local filesystems: \n" "\n" @@ -2737,7 +2730,7 @@ "\n" " Alternativet stabile symlinker vil bli slått av " -#: src/file.c:513 +#: src/file.c:449 #, c-format msgid "" " Cannot create target symlink \"%s\" \n" @@ -2746,7 +2739,7 @@ " Kan ikke lage målsymlinken \"%s\" \n" " %s " -#: src/file.c:580 +#: src/file.c:517 #, c-format msgid "" " Cannot overwrite directory \"%s\" \n" @@ -2755,7 +2748,7 @@ " Kan ikke overskrive katalogen \"%s\" \n" " %s " -#: src/file.c:590 +#: src/file.c:526 #, c-format msgid "" " Cannot stat source file \"%s\" \n" @@ -2764,12 +2757,12 @@ " Kan ikke kjøre stat på kildefilen \"%s\" \n" " %s " -#: src/file.c:604 +#: src/file.c:539 #, c-format msgid " `%s' and `%s' are the same file. " msgstr " `%s' og `%s' er samme fil. " -#: src/file.c:640 +#: src/file.c:572 #, c-format msgid "" " Cannot create special file \"%s\" \n" @@ -2778,7 +2771,7 @@ " Kan ikke opprette den spesielle filen \"%s\" \n" " %s " -#: src/file.c:650 src/file.c:874 +#: src/file.c:581 src/file.c:801 #, c-format msgid "" " Cannot chown target file \"%s\" \n" @@ -2787,7 +2780,7 @@ " Kan ikke kjøre chown på målfilen \"%s\" \n" " %s " -#: src/file.c:659 src/file.c:890 +#: src/file.c:590 src/file.c:816 #, c-format msgid "" " Cannot chmod target file \"%s\" \n" @@ -2796,7 +2789,7 @@ " Kan ikke kjøre chmod på målfilen \"%s\" \n" " %s " -#: src/file.c:673 +#: src/file.c:603 #, c-format msgid "" " Cannot open source file \"%s\" \n" @@ -2805,11 +2798,11 @@ " Kan ikke åpne kildefilen \"%s\" \n" " %s " -#: src/file.c:683 +#: src/file.c:613 msgid " Reget failed, about to overwrite file " msgstr " Gjenhenting feilet, kommer til å overskrive filen " -#: src/file.c:690 +#: src/file.c:619 #, c-format msgid "" " Cannot fstat source file \"%s\" \n" @@ -2818,7 +2811,7 @@ " Kan ikke kjøre fstat på kildefilen \"%s\" \n" " %s " -#: src/file.c:712 +#: src/file.c:640 #, c-format msgid "" " Cannot create target file \"%s\" \n" @@ -2827,7 +2820,7 @@ " Kan ikke opprette målfilen \"%s\" \n" " %s " -#: src/file.c:727 +#: src/file.c:654 #, c-format msgid "" " Cannot fstat target file \"%s\" \n" @@ -2836,7 +2829,7 @@ " Kan ikke kjøre fstat på målfilen \"%s\" \n" " %s " -#: src/file.c:758 +#: src/file.c:685 #, c-format msgid "" " Cannot read source file \"%s\" \n" @@ -2845,7 +2838,7 @@ " Kan ikke lese kildefilen \"%s\" \n" " %s " -#: src/file.c:788 +#: src/file.c:715 #, c-format msgid "" " Cannot write target file \"%s\" \n" @@ -2854,11 +2847,11 @@ " Kan ikke skrive til målfilen \"%s\" \n" " %s " -#: src/file.c:806 +#: src/file.c:734 msgid "(stalled)" msgstr "(venter)" -#: src/file.c:845 +#: src/file.c:772 #, c-format msgid "" " Cannot close source file \"%s\" \n" @@ -2867,7 +2860,7 @@ " Kan ikke lukke kildefilen \"%s\" \n" " %s " -#: src/file.c:855 +#: src/file.c:781 #, c-format msgid "" " Cannot close target file \"%s\" \n" @@ -2876,19 +2869,19 @@ " Kan ikke lukke målfilen \"%s\" \n" " %s " -#: src/file.c:865 +#: src/file.c:791 msgid "Incomplete file was retrieved. Keep it?" msgstr "Ikke komplett fil ble hentet. Beholde den?" -#: src/file.c:865 +#: src/file.c:792 msgid "&Delete" msgstr "&Slett" -#: src/file.c:865 src/hotlist.c:1437 +#: src/file.c:792 src/hotlist.c:1438 msgid "&Keep" msgstr "&Behold" -#: src/file.c:937 +#: src/file.c:861 #, c-format msgid "" " Cannot stat source directory \"%s\" \n" @@ -2897,7 +2890,7 @@ " Kan ikke kjøre stat på kildekatalogen \"%s\" \n" " %s " -#: src/file.c:960 +#: src/file.c:884 #, c-format msgid "" " Source directory \"%s\" is not a directory \n" @@ -2907,7 +2900,7 @@ " %s " #. we found a cyclic symbolic link -#: src/file.c:968 +#: src/file.c:892 #, c-format msgid "" " Cannot copy cyclic symbolic link \n" @@ -2916,7 +2909,7 @@ " Kan ikke kopiere en sirkulær symbolsk lenke \n" " `%s' " -#: src/file.c:1021 +#: src/file.c:945 #, c-format msgid "" " Cannot create target directory \"%s\" \n" @@ -2925,7 +2918,7 @@ " Kan ikke opprette målkatalogen \"%s\" \n" " %s " -#: src/file.c:1040 +#: src/file.c:963 #, c-format msgid "" " Cannot chown target directory \"%s\" \n" @@ -2935,7 +2928,7 @@ " %s " #. Source doesn't exist -#: src/file.c:1155 +#: src/file.c:1073 #, c-format msgid "" " Cannot stat file \"%s\" \n" @@ -2944,17 +2937,17 @@ " Kan ikke kjøre stat på filen \"%s\" \n" " %s " -#: src/file.c:1177 +#: src/file.c:1095 #, c-format msgid " `%s' and `%s' are the same file " msgstr " `%s' og `%s' er samme fil " -#: src/file.c:1184 +#: src/file.c:1102 #, c-format msgid " Cannot overwrite directory `%s' " msgstr " Kan ikke overskrive katalogen `%s' " -#: src/file.c:1217 +#: src/file.c:1135 #, c-format msgid "" " Cannot move file \"%s\" to \"%s\" \n" @@ -2963,7 +2956,7 @@ " Kan ikke flytte filen \"%s\" til \"%s\" \n" " %s " -#: src/file.c:1238 +#: src/file.c:1155 #, c-format msgid "" " Cannot remove file \"%s\" \n" @@ -2972,17 +2965,17 @@ " Kan ikke fjerne filen \"%s\" \n" " %s " -#: src/file.c:1288 +#: src/file.c:1205 #, c-format msgid " Cannot overwrite directory \"%s\" %s " msgstr " Kan ikke overskrive katalogen \"%s\" %s " -#: src/file.c:1290 +#: src/file.c:1207 #, c-format msgid " Cannot overwrite file \"%s\" %s " msgstr " Kan ikke overskrive filen \"%s\" %s " -#: src/file.c:1313 +#: src/file.c:1230 #, c-format msgid "" " Cannot move directory \"%s\" to \"%s\" \n" @@ -2991,7 +2984,7 @@ " Kan ikke flytte katalogen \"%s\" til \"%s\" \n" " %s " -#: src/file.c:1377 +#: src/file.c:1293 #, c-format msgid "" " Cannot delete file \"%s\" \n" @@ -3000,7 +2993,7 @@ " Kan ikke slette filen \"%s\" \n" " %s " -#: src/file.c:1436 src/file.c:1503 src/file.c:1532 +#: src/file.c:1351 src/file.c:1418 src/file.c:1447 #, c-format msgid "" " Cannot remove directory \"%s\" \n" @@ -3009,35 +3002,100 @@ " Kan ikke fjerne katalogen \"%s\" \n" " %s " -#: src/file.c:1568 +#: src/file.c:1483 msgid " Internal error: get_file \n" msgstr " Intern feil: get_file \n" -#: src/file.c:1735 +#. +#. * This array introduced to avoid translation problems. The former (op_names) +#. * is assumed to be nouns, suitable in dialog box titles; this one should +#. * contain whatever is used in prompt itself (i.e. in russian, it's verb). +#. * Notice first symbol - it is to fool gettext and force these strings to +#. * be different for it. First symbol is skipped while building a prompt. +#. * (I don't use spaces around the words, because someday they could be +#. * dropped, when widgets get smarter) +#. +#: src/file.c:1604 +msgid "1Copy" +msgstr "1Kopier" + +#: src/file.c:1604 +msgid "1Move" +msgstr "1Flytt" + +#: src/file.c:1604 +msgid "1Delete" +msgstr "1Slett" + +#: src/file.c:1619 +#, c-format +msgid "%o %f \"%s\"%m" +msgstr "%o %f \"%s\"%m" + +#: src/file.c:1620 +#, c-format +msgid "%o %d %f%m" +msgstr "%o %d %f%m" + +#: src/file.c:1622 +#, c-format +msgid "%o %f \"%s\"%e" +msgstr "%o %f \"%s\"%e" + +#: src/file.c:1623 +#, c-format +msgid "%o %d %f%e" +msgstr "%o %d %f%e" + +#: src/file.c:1627 +msgid "file" +msgstr "fil" + +#: src/file.c:1627 +msgid "files" +msgstr "filer" + +#: src/file.c:1627 +msgid "directory" +msgstr "katalog" + +#: src/file.c:1627 +msgid "directories" +msgstr "kataloger" + +#: src/file.c:1628 +msgid "files/directories" +msgstr "filer/kataloger" + +#: src/file.c:1628 +msgid " with source mask:" +msgstr " med kildemaske:" + +#: src/file.c:1776 msgid " Can't operate on \"..\"! " msgstr " Kan ikke arbeide på \"..\"! " -#: src/file.c:1751 +#: src/file.c:1795 msgid "Yes" msgstr "Ja" -#: src/file.c:1751 +#: src/file.c:1795 msgid "No" msgstr "Nei" -#: src/file.c:1801 +#: src/file.c:1848 msgid " Sorry, I could not put the job in background " msgstr " Beklager, Jeg kunne ikke plassere jobben i bakgrunnen " -#: src/file.c:1891 src/file.c:2006 +#: src/file.c:1931 src/file.c:2036 msgid " Internal failure " msgstr " Intern feil " -#: src/file.c:1891 src/file.c:2007 +#: src/file.c:1931 src/file.c:2036 msgid " Unknown file operation " msgstr " Ukjent filoperasjon " -#: src/file.c:1909 +#: src/file.c:1950 #, c-format msgid "" " Destination \"%s\" must be a directory \n" @@ -3046,19 +3104,19 @@ " Målet \"%s\" må være en katalog \n" " %s " -#: src/file.c:2105 src/filegui.c:248 +#: src/file.c:2121 src/filegui.c:268 msgid "&Skip" msgstr "&Hopp over" -#: src/file.c:2105 +#: src/file.c:2121 msgid "&Retry" msgstr "&Prøv igjen" -#: src/file.c:2105 src/file.c:2163 src/filegui.c:245 src/filegui.c:485 +#: src/file.c:2121 src/file.c:2179 src/filegui.c:265 src/filegui.c:567 msgid "&Abort" msgstr "&Avbryt" -#: src/file.c:2154 +#: src/file.c:2170 msgid "" "\n" " Directory not empty. \n" @@ -3068,7 +3126,7 @@ " Katalogen er ikke tom. \n" " Slett den rekursivt? " -#: src/file.c:2155 +#: src/file.c:2171 msgid "" "\n" " Background process: Directory not empty \n" @@ -3078,201 +3136,134 @@ " Bakgrunnsprosess: Katalogen er ikke tom. \n" " Slett den rekursivt? " -#: src/file.c:2162 +#: src/file.c:2178 msgid "a&ll" msgstr "a&lle" -#: src/file.c:2162 src/filegui.c:488 +#: src/file.c:2178 src/filegui.c:570 msgid "non&E" msgstr "ing&En" -#: src/file.c:2172 +#: src/file.c:2188 msgid " Type 'yes' if you REALLY want to delete " msgstr " Skriv 'ja' hvis du VIRKELIG vil slette " -#: src/file.c:2174 +#: src/file.c:2190 msgid "all the directories " msgstr "alle katalogene " -#: src/file.c:2176 +#: src/file.c:2192 msgid " Recursive Delete " msgstr " Rekursiv sletting " -#: src/file.c:2177 +#: src/file.c:2193 msgid " Background process: Recursive Delete " msgstr " Bakgrunnsprosess: Rekursiv sletting " -#. -#. Cause emacs to enter folding mode for this file: -#. Local variables: -#. end: -#. -#. -#. * This array introduced to avoid translation problems. The former (op_names) -#. * is assumed to be nouns, suitable in dialog box titles; this one should -#. * contain whatever is used in prompt itself (i.e. in russian, it's verb). -#. * Notice first symbol - it is to fool gettext and force these strings to -#. * be different for it. First symbol is skipped while building a prompt. -#. * (I don't use spaces around the words, because someday they could be -#. * dropped, when widgets get smarter) -#. -#: src/file.c:2265 -msgid "1Copy" -msgstr "1Kopier" - -#: src/file.c:2265 -msgid "1Move" -msgstr "1Flytt" - -#: src/file.c:2265 -msgid "1Delete" -msgstr "1Slett" - -#: src/file.c:2280 -#, c-format -msgid "%o %f \"%s\"%m" -msgstr "%o %f \"%s\"%m" - -#: src/file.c:2281 -#, c-format -msgid "%o %d %f%m" -msgstr "%o %d %f%m" - -#: src/file.c:2283 -#, c-format -msgid "%o %f \"%s\"%e" -msgstr "%o %f \"%s\"%e" - -#: src/file.c:2284 -#, c-format -msgid "%o %d %f%e" -msgstr "%o %d %f%e" - -#: src/file.c:2288 -msgid "file" -msgstr "fil" - -#: src/file.c:2288 -msgid "files" -msgstr "filer" - -#: src/file.c:2288 -msgid "directory" -msgstr "katalog" - -#: src/file.c:2288 -msgid "directories" -msgstr "kataloger" - -#: src/file.c:2289 -msgid "files/directories" -msgstr "filer/kataloger" - -#: src/file.c:2289 -msgid " with source mask:" -msgstr " med kildemaske:" - -#: src/filegui.c:375 +#: src/filegui.c:430 msgid "Count" msgstr "Tall" -#: src/filegui.c:387 +#: src/filegui.c:449 msgid "Bytes" msgstr "Bytes" -#: src/filegui.c:416 +#: src/filegui.c:484 msgid "Source" msgstr "Kilde" -#: src/filegui.c:430 +#: src/filegui.c:505 msgid "Target" msgstr "Mål" -#: src/filegui.c:443 +#: src/filegui.c:525 msgid "Deleting" msgstr "Sletter" -#: src/filegui.c:483 +#: src/filegui.c:565 #, c-format msgid "Target file \"%s\" already exists!" msgstr "Målfilen \"%s\" eksisterer allerede!" -#: src/filegui.c:486 +#: src/filegui.c:568 msgid "if &Size differs" msgstr "hvis størrelsen er forskjellig" -#: src/filegui.c:489 +#: src/filegui.c:571 msgid "&Update" msgstr "Oppdater" -#: src/filegui.c:490 +#: src/filegui.c:572 msgid "al&L" msgstr "alle" -#: src/filegui.c:491 +#: src/filegui.c:573 msgid "Overwrite all targets?" msgstr "Overskriv alle mål?" -#: src/filegui.c:493 +#: src/filegui.c:575 msgid "&Reget" msgstr "Hent igjen" -#: src/filegui.c:494 +#: src/filegui.c:576 msgid "ap&Pend" msgstr "legg til" -#: src/filegui.c:497 +#: src/filegui.c:579 msgid "Overwrite this target?" msgstr "Overskriv dette målet?" -#: src/filegui.c:499 +#: src/filegui.c:581 #, c-format msgid "Target date: %s, size %d" msgstr "Målfilens dato: %s, størrelse %d" -#: src/filegui.c:501 +#: src/filegui.c:583 #, c-format msgid "Source date: %s, size %d" msgstr "Kildefilens dato: %s, størrelse %d" -#: src/filegui.c:589 +#: src/filegui.c:667 msgid " File exists " msgstr " Filen eksisterer " -#: src/filegui.c:589 +#: src/filegui.c:668 msgid " Background process: File exists " msgstr " Bakgrunnsprosess: Filen eksisterer " #. follow symlinks and preserve Attributes must be the first -#: src/filegui.c:683 +#: src/filegui.c:778 msgid "preserve &Attributes" msgstr "behold attributter" -#: src/filegui.c:685 +#. &op_preserve +#: src/filegui.c:780 msgid "follow &Links" msgstr "følg lenker" -#: src/filegui.c:694 +#. &file_mask_op_follow_links +#: src/filegui.c:782 msgid "to:" msgstr "til:" -#: src/filegui.c:695 +#: src/filegui.c:783 msgid "&Using shell patterns" msgstr "bruker skallmønstre" -#: src/filegui.c:716 +#: src/filegui.c:804 msgid "&Background" msgstr "Bakgrunn" -#: src/filegui.c:725 +#: src/filegui.c:813 msgid "&Stable Symlinks" msgstr "Stabile symlenker" -#: src/filegui.c:727 +#. &file_mask_stable_symlinks +#: src/filegui.c:815 msgid "&Dive into subdir if exists" msgstr "Gå inn ned underkatalog hvis den eksisterer" -#: src/filegui.c:875 +#: src/filegui.c:974 #, c-format msgid "" "Invalid source pattern `%s' \n" @@ -3313,53 +3304,53 @@ msgid "&Edit - F4" msgstr "Rediger - F4" -#: src/find.c:153 +#: src/find.c:155 msgid "Start at:" msgstr "Start ved:" -#: src/find.c:153 +#: src/find.c:155 msgid "Filename:" msgstr "Filnavn:" -#: src/find.c:153 +#: src/find.c:155 msgid "Content: " msgstr "Innhold: " -#: src/find.c:154 src/main.c:1199 src/main.c:1220 +#: src/find.c:156 src/main.c:1201 src/main.c:1222 msgid "&Tree" msgstr "Tre" -#: src/find.c:206 +#: src/find.c:208 msgid "Find File" msgstr "Finn fil" -#: src/find.c:433 +#: src/find.c:435 #, c-format msgid "Grepping in %s" msgstr "Kjører grep i %s" -#: src/find.c:471 +#: src/find.c:473 msgid " Find/read " msgstr " Finn/les " -#: src/find.c:471 +#: src/find.c:473 msgid " Problem reading from child " msgstr " Problem under lesing fra barn " -#: src/find.c:515 +#: src/find.c:520 msgid "Finished" msgstr "Ferdig" -#: src/find.c:539 src/view.c:1450 +#: src/find.c:544 src/view.c:1450 #, c-format msgid "Searching %s" msgstr "Søker i %s" -#: src/find.c:671 src/find.c:788 +#: src/find.c:676 src/find.c:793 msgid "Searching" msgstr "Søker" -#: src/find.c:763 +#: src/find.c:768 msgid "Find file" msgstr "Finn fil" @@ -3423,101 +3414,101 @@ msgid "Prev" msgstr "Forr" -#: src/hotlist.c:134 +#: src/hotlist.c:135 msgid "&Move" msgstr "&Flytt" -#: src/hotlist.c:135 src/hotlist.c:1437 src/panelize.c:92 src/wtools.c:386 +#: src/hotlist.c:136 src/hotlist.c:1438 src/panelize.c:92 src/wtools.c:386 msgid "&Remove" msgstr "&Fjern" -#: src/hotlist.c:136 src/hotlist.c:816 src/hotlist.c:909 +#: src/hotlist.c:137 src/hotlist.c:817 src/hotlist.c:910 msgid "&Append" msgstr "&Legg til" -#: src/hotlist.c:137 src/hotlist.c:814 src/hotlist.c:907 +#: src/hotlist.c:138 src/hotlist.c:815 src/hotlist.c:908 msgid "&Insert" msgstr "&Sett inn" -#: src/hotlist.c:138 +#: src/hotlist.c:139 msgid "New &Entry" msgstr "&Ny oppføring" -#: src/hotlist.c:139 +#: src/hotlist.c:140 msgid "New &Group" msgstr "Ny &Gruppe" -#: src/hotlist.c:141 +#: src/hotlist.c:142 msgid "&Up" msgstr "&Opp" -#: src/hotlist.c:142 +#: src/hotlist.c:143 msgid "&Add current" msgstr "&Legg til denne" -#: src/hotlist.c:143 +#: src/hotlist.c:144 msgid "Change &To" msgstr "Skift &Til" -#: src/hotlist.c:203 +#: src/hotlist.c:204 msgid "Subgroup - press ENTER to see list" msgstr "Undergruppe - trykk LINJESKIFT for å se listen" -#: src/hotlist.c:622 +#: src/hotlist.c:623 msgid "Active VFS directories" msgstr "Aktive VFS kataloger" -#: src/hotlist.c:622 +#: src/hotlist.c:623 msgid "Directory hotlist" msgstr "Favorittliste for kataloger" -#: src/hotlist.c:641 +#: src/hotlist.c:642 msgid " Directory path " msgstr " Katalogsti " #. This one holds the displayed pathname -#: src/hotlist.c:644 src/hotlist.c:691 +#: src/hotlist.c:645 src/hotlist.c:692 msgid " Directory label " msgstr " Katalogetikett " -#: src/hotlist.c:665 +#: src/hotlist.c:666 msgid "Moving " msgstr "Flytter " -#: src/hotlist.c:886 +#: src/hotlist.c:887 msgid "New hotlist entry" msgstr "Ny oppføring i favorittlisten" -#: src/hotlist.c:886 +#: src/hotlist.c:887 msgid "Directory label" msgstr "Katalogetikett" -#: src/hotlist.c:886 +#: src/hotlist.c:887 msgid "Directory path" msgstr "Katalogsti" -#: src/hotlist.c:966 +#: src/hotlist.c:967 msgid " New hotlist group " msgstr " Ny favorittgruppe " -#: src/hotlist.c:966 +#: src/hotlist.c:967 msgid "Name of new group" msgstr "Navn på den nye gruppen" -#: src/hotlist.c:981 +#: src/hotlist.c:982 #, c-format msgid "Label for \"%s\":" msgstr "Etikett for \"%s\":" -#: src/hotlist.c:986 +#: src/hotlist.c:987 msgid " Add to hotlist " msgstr " Legg til i favoritter " -#: src/hotlist.c:1023 +#: src/hotlist.c:1024 msgid " Remove: " msgstr " Fjern: " -#: src/hotlist.c:1027 +#: src/hotlist.c:1028 msgid "" "\n" " Group not empty.\n" @@ -3527,51 +3518,51 @@ " Gruppen er ikke tom.\n" " Fjern den?" -#: src/hotlist.c:1372 +#: src/hotlist.c:1373 msgid " Top level group " msgstr " Gruppe på toppnivå " -#: src/hotlist.c:1388 +#: src/hotlist.c:1389 msgid "Hotlist is now kept in file ~/" msgstr "Favorittlisten er lagret i filen ~/" -#: src/hotlist.c:1390 +#: src/hotlist.c:1391 msgid "MC will load hotlist from ~/" msgstr "MC vil laste favorittlisten fra ~/" -#: src/hotlist.c:1392 +#: src/hotlist.c:1393 msgid "and then delete [Hotlist] section there" msgstr "og så slette [Favorittliste] seksjonen der" -#: src/hotlist.c:1394 src/hotlist.c:1413 src/hotlist.c:1436 src/hotlist.c:1461 +#: src/hotlist.c:1395 src/hotlist.c:1414 src/hotlist.c:1437 src/hotlist.c:1462 msgid " Hotlist Load " msgstr " Last favorittliste " -#: src/hotlist.c:1410 src/hotlist.c:1458 +#: src/hotlist.c:1411 src/hotlist.c:1459 msgid "MC was unable to write ~/" msgstr "MC kunne ikke skrive ~/" -#: src/hotlist.c:1411 +#: src/hotlist.c:1412 msgid " file, your old hotlist entries were not deleted" msgstr " filen, dine gamle favorittlisteoppføringer ble ikke slettet" -#: src/hotlist.c:1425 +#: src/hotlist.c:1426 msgid "You have ~/" msgstr "Du har ~/" -#: src/hotlist.c:1425 +#: src/hotlist.c:1426 msgid " file and [Hotlist] section in ~/" msgstr " filen og [Favorittliste] seksjonen i ~/" -#: src/hotlist.c:1426 +#: src/hotlist.c:1427 msgid "Your ~/" msgstr "Din ~/" -#: src/hotlist.c:1426 +#: src/hotlist.c:1427 msgid " most probably was created\n" msgstr " er mest sannsynlig opprettet\n" -#: src/hotlist.c:1427 +#: src/hotlist.c:1428 msgid "" "by an earlier development version of MC\n" "and is more actual than ~/" @@ -3579,7 +3570,7 @@ "av en tidligere utviklingsversjon av MC\n" "og er mer aktuell enn ~/" -#: src/hotlist.c:1428 +#: src/hotlist.c:1429 msgid "" " entries\n" "\n" @@ -3587,7 +3578,7 @@ " oppføringer\n" "\n" -#: src/hotlist.c:1429 +#: src/hotlist.c:1430 msgid "" "You can choose between\n" "\n" @@ -3597,7 +3588,7 @@ "\n" " Fjern - fjerne gamle favorittlisteoppføringer fra ~/" -#: src/hotlist.c:1431 +#: src/hotlist.c:1432 msgid "" " Keep - keep your old entries; you will be asked\n" " the same question next time\n" @@ -3607,185 +3598,185 @@ " det samme spørsmålet neste gang\n" " Innlemm - legge til gamle oppføringer som gruppe \"Oppføringer fra ~/" -#: src/hotlist.c:1437 +#: src/hotlist.c:1438 msgid "&Merge" msgstr "&Innlem" -#: src/hotlist.c:1449 +#: src/hotlist.c:1450 msgid " Entries from ~/" msgstr " Oppføringer fra ~/" -#: src/hotlist.c:1459 +#: src/hotlist.c:1460 msgid " file your old hotlist entries were not deleted" msgstr " filen dine gamle favorittlisteoppføringer ble ikke slettet" -#: src/info.c:81 +#: src/info.c:82 #, c-format msgid "Midnight Commander %s" msgstr "Midnight Commander %s" -#: src/info.c:113 +#: src/info.c:114 msgid "Free nodes %d (%d%%) of %d" msgstr "Ledige noder %d (%d%%) av %d" -#: src/info.c:119 +#: src/info.c:120 msgid "No node information" msgstr "Ingen nodeinformasjon" -#: src/info.c:124 +#: src/info.c:125 msgid "Free space " msgstr "Ledig plass " -#: src/info.c:126 +#: src/info.c:127 msgid " (%d%%) of " msgstr " (%d%%) av " -#: src/info.c:130 +#: src/info.c:131 msgid "No space information" msgstr "Ingen plassinformasjon" -#: src/info.c:134 +#: src/info.c:135 #, c-format msgid "Type: %s " msgstr "Skriv: %s " -#: src/info.c:134 +#: src/info.c:135 msgid "non-local vfs" msgstr "ikke-lokalt vfs" -#: src/info.c:140 +#: src/info.c:141 #, c-format msgid "Device: %s" msgstr "Enhet: %s" -#: src/info.c:144 +#: src/info.c:145 #, c-format msgid "Filesystem: %s" msgstr "Filsystem: %s" -#: src/info.c:149 +#: src/info.c:150 #, c-format msgid "Accessed: %s" msgstr "Aksessert: %s" -#: src/info.c:153 +#: src/info.c:154 #, c-format msgid "Modified: %s" msgstr "Endret: %s" -#: src/info.c:157 +#: src/info.c:158 #, c-format msgid "Created: %s" msgstr "Opprettet: %s" -#: src/info.c:170 +#: src/info.c:171 msgid "Size: " msgstr "Størrelse: " -#: src/info.c:173 +#: src/info.c:174 #, c-format msgid " (%d blocks)" msgstr " (%d blokker)" -#: src/info.c:179 +#: src/info.c:180 #, c-format msgid "Owner: %s/%s" msgstr "Eier: %s/%s" -#: src/info.c:184 +#: src/info.c:185 #, c-format msgid "Links: %d" msgstr "Lenker: %d" -#: src/info.c:188 +#: src/info.c:189 #, c-format msgid "Mode: %s (%04o)" msgstr "Modus: %s (%04o)" -#: src/info.c:193 +#: src/info.c:194 #, c-format msgid "Location: %Xh:%Xh" msgstr "Sted: %Xh:%Xh" -#: src/info.c:199 +#: src/info.c:200 #, c-format msgid "File: %s" msgstr "Fil: %s" -#: src/info.c:203 +#: src/info.c:204 msgid "File: None" msgstr "Fil: Ingen" -#: src/layout.c:159 +#: src/layout.c:161 msgid "&Vertical" msgstr "Vertikal" -#: src/layout.c:160 +#: src/layout.c:162 msgid "&Horizontal" msgstr "Horisontal" -#: src/layout.c:170 +#: src/layout.c:172 msgid "&Xterm hintbar" msgstr "Xterm hintlinje" -#: src/layout.c:171 +#: src/layout.c:173 msgid "h&Intbar visible" msgstr "synlig hintlinje" -#: src/layout.c:172 +#: src/layout.c:174 msgid "&Keybar visible" msgstr "Tastaturlinje synlig" -#: src/layout.c:173 +#: src/layout.c:175 msgid "command &Prompt" msgstr "kommandoskall" -#: src/layout.c:174 +#: src/layout.c:176 msgid "show &Mini status" msgstr "vis ministatus" -#: src/layout.c:175 +#: src/layout.c:177 msgid "menu&Bar visible" msgstr "menylinje synlig" -#: src/layout.c:176 +#: src/layout.c:178 msgid "&Equal split" msgstr "lik deling" -#: src/layout.c:177 +#: src/layout.c:179 msgid "pe&Rmissions" msgstr "rettigheter" -#: src/layout.c:178 +#: src/layout.c:180 msgid "&File types" msgstr "filtyper" -#: src/layout.c:372 src/learn.c:62 src/learn.c:181 src/option.c:146 +#: src/layout.c:374 src/learn.c:62 src/learn.c:181 src/option.c:146 msgid "&Save" msgstr "lagre" #. length of line with '<' '>' buttons -#: src/layout.c:380 +#: src/layout.c:382 msgid " Layout " msgstr " Utseende " -#: src/layout.c:381 +#: src/layout.c:383 msgid " Panel split " msgstr " Del panel " -#: src/layout.c:382 +#: src/layout.c:384 msgid " Highlight... " msgstr " Uthev... " -#: src/layout.c:383 src/option.c:157 +#: src/layout.c:385 src/option.c:157 msgid " Other options " msgstr " Andre alternativer " -#: src/layout.c:384 +#: src/layout.c:386 msgid "output lines" msgstr "utskriftslinjer" -#: src/layout.c:451 +#: src/layout.c:453 msgid "Layout" msgstr "Utseende" @@ -3867,7 +3858,7 @@ msgid "key, or click with the mouse to define it. Move around with Tab." msgstr "tast, eller klikk med musen for å definere den. Flytt med Tab." -#: src/main.c:666 +#: src/main.c:668 msgid "" " The Commander can't change to the directory that \n" " the subshell claims you are in. Perhaps you have \n" @@ -3879,247 +3870,247 @@ " arbeidskatalogen, eller gitt deg selv ekstra tilgangs- \n" " rettigheter med \"su\" kommandoen? " -#: src/main.c:741 +#: src/main.c:743 msgid "Press any key to continue..." msgstr "Trykk en tast for å fortsette..." -#: src/main.c:791 +#: src/main.c:793 msgid " The shell is already running a command " msgstr " Skallet kjører allerede en kommando " -#: src/main.c:1196 src/main.c:1217 +#: src/main.c:1198 src/main.c:1219 msgid "&Listing mode..." msgstr "Listemodus..." -#: src/main.c:1197 src/main.c:1218 +#: src/main.c:1199 src/main.c:1220 msgid "&Quick view C-x q" msgstr "Rask visning C-x q" -#: src/main.c:1198 src/main.c:1219 +#: src/main.c:1200 src/main.c:1221 msgid "&Info C-x i" msgstr "Info C-x i" -#: src/main.c:1201 src/main.c:1222 +#: src/main.c:1203 src/main.c:1224 msgid "&Sort order..." msgstr "Sorteringsrekkefølge..." -#: src/main.c:1203 src/main.c:1224 +#: src/main.c:1205 src/main.c:1226 msgid "&Filter..." msgstr "Filter..." -#: src/main.c:1206 src/main.c:1227 +#: src/main.c:1208 src/main.c:1229 msgid "&Network link..." msgstr "Nettverkskobling..." -#: src/main.c:1207 src/main.c:1228 +#: src/main.c:1209 src/main.c:1230 msgid "FT&P link..." msgstr "FTP kobling..." -#: src/main.c:1211 src/main.c:1232 +#: src/main.c:1213 src/main.c:1234 msgid "&Drive... M-d" msgstr "Disk... M-d" -#: src/main.c:1213 src/main.c:1234 +#: src/main.c:1215 src/main.c:1236 msgid "&Rescan C-r" msgstr "Gjenles C-r" -#: src/main.c:1238 +#: src/main.c:1240 msgid "&User menu F2" msgstr "Brukermeny F2" -#: src/main.c:1239 +#: src/main.c:1241 msgid "&View F3" msgstr "Vis F3" -#: src/main.c:1240 +#: src/main.c:1242 msgid "Vie&w file... " msgstr "Vis fil... " -#: src/main.c:1241 +#: src/main.c:1243 msgid "&Filtered view M-!" msgstr "Filtrert visning M-!" -#: src/main.c:1242 +#: src/main.c:1244 msgid "&Edit F4" msgstr "Rediger F4" -#: src/main.c:1243 +#: src/main.c:1245 msgid "&Copy F5" msgstr "Kopier F5" -#: src/main.c:1244 +#: src/main.c:1246 msgid "c&Hmod C-x c" msgstr "chmod C-x c" -#: src/main.c:1246 +#: src/main.c:1248 msgid "&Link C-x l" msgstr "Lenke C-x l" -#: src/main.c:1247 +#: src/main.c:1249 msgid "&SymLink C-x s" msgstr "Symlenke C-x s" -#: src/main.c:1248 +#: src/main.c:1250 msgid "edit s&Ymlink C-x C-s" msgstr "rediger symlenke C-x C-s" -#: src/main.c:1249 +#: src/main.c:1251 msgid "ch&Own C-x o" msgstr "chown C-x o" -#: src/main.c:1250 +#: src/main.c:1252 msgid "&Advanced chown " msgstr "Avansert chown " -#: src/main.c:1252 +#: src/main.c:1254 msgid "&Rename/Move F6" msgstr "Gi nytt navn/flytt F6" -#: src/main.c:1253 +#: src/main.c:1255 msgid "&Mkdir F7" msgstr "Lag katalog F7" -#: src/main.c:1254 +#: src/main.c:1256 msgid "&Delete F8" msgstr "Slett F8" -#: src/main.c:1255 +#: src/main.c:1257 msgid "&Quick cd M-c" msgstr "rask cd M-c" -#: src/main.c:1257 +#: src/main.c:1259 msgid "select &Group M-+" msgstr "velg gruppe M-+" -#: src/main.c:1258 +#: src/main.c:1260 msgid "u&Nselect group M-\\" msgstr "velg bort gruppe M-\\" -#: src/main.c:1259 +#: src/main.c:1261 msgid "reverse selec&Tion M-*" msgstr "reverser valg M-*" -#: src/main.c:1261 +#: src/main.c:1263 msgid "e&Xit F10" msgstr "avslutt F10" -#: src/main.c:1271 +#: src/main.c:1273 msgid "&Directory tree" msgstr "Katalogtre" -#: src/main.c:1273 +#: src/main.c:1275 msgid "&Find file M-?" msgstr "Finn fil M-?" -#: src/main.c:1274 +#: src/main.c:1276 msgid "s&Wap panels C-u" msgstr "bytt paneler C-u" -#: src/main.c:1275 +#: src/main.c:1277 msgid "switch &Panels on/off C-o" msgstr "slå paneler på/av C-o" -#: src/main.c:1276 +#: src/main.c:1278 msgid "&Compare directories C-x d" msgstr "Sammenlign kataloger C-x d" -#: src/main.c:1277 +#: src/main.c:1279 msgid "e&Xternal panelize C-x !" msgstr "eksternt panel C-x !" -#: src/main.c:1278 +#: src/main.c:1280 msgid "show directory s&Izes" msgstr "vis katalogstørrelser" -#: src/main.c:1280 +#: src/main.c:1282 msgid "command &History" msgstr "kommandohistorikk" -#: src/main.c:1281 +#: src/main.c:1283 msgid "di&Rectory hotlist C-\\" msgstr "kataloghurtigliste C-\\" -#: src/main.c:1283 +#: src/main.c:1285 msgid "&Active VFS list C-x a" msgstr "Aktivt VFS liste C-x a" -#: src/main.c:1286 +#: src/main.c:1288 msgid "&Background jobs C-x j" msgstr "Bakgrunnsjobber C-x j" -#: src/main.c:1290 +#: src/main.c:1292 msgid "&Undelete files (ext2fs only)" msgstr "Gjenopprett filer (kun ext2fs)" -#: src/main.c:1293 +#: src/main.c:1295 msgid "&Listing format edit" msgstr "Redigering av listeformat" -#: src/main.c:1295 +#: src/main.c:1297 msgid "&Extension file edit" msgstr "Redigering av utvidelsesfil" -#: src/main.c:1296 +#: src/main.c:1298 msgid "&Menu file edit" msgstr "Menyfilredigering" -#: src/main.c:1301 +#: src/main.c:1303 msgid "&Configuration..." msgstr "Konfigurasjon..." -#: src/main.c:1303 +#: src/main.c:1305 msgid "c&Onfirmation..." msgstr "bekreftelse..." -#: src/main.c:1304 +#: src/main.c:1306 msgid "&Display bits..." msgstr "Tastaturdefinisjon..." -#: src/main.c:1306 +#: src/main.c:1308 msgid "learn &Keys..." msgstr "lær taster..." -#: src/main.c:1309 +#: src/main.c:1311 msgid "&Virtual FS..." msgstr "Virtuelt FS..." -#: src/main.c:1312 +#: src/main.c:1314 msgid "&Save setup" msgstr "Lagre oppsett" -#: src/main.c:1328 src/main.c:1330 +#: src/main.c:1330 src/main.c:1332 msgid " &Left " msgstr " Venstre " -#: src/main.c:1330 +#: src/main.c:1332 msgid " &Above " msgstr " Over " -#: src/main.c:1333 +#: src/main.c:1335 msgid " &File " msgstr " Fil " -#: src/main.c:1334 +#: src/main.c:1336 msgid " &Command " msgstr " Kommando " -#: src/main.c:1335 +#: src/main.c:1337 msgid " &Options " msgstr " Alternativer " -#: src/main.c:1337 src/main.c:1339 +#: src/main.c:1339 src/main.c:1341 msgid " &Right " msgstr " Høyre " -#: src/main.c:1339 +#: src/main.c:1341 msgid " &Below " msgstr " Under " -#: src/main.c:1394 +#: src/main.c:1396 msgid " Information " msgstr " Informasjon " -#: src/main.c:1395 +#: src/main.c:1397 msgid "" " Using the fast reload option may not reflect the exact \n" " directory contents. In this cases you'll need to do a \n" @@ -4131,52 +4122,52 @@ " du utføre en manuell gjenlesing av katalogen. Se manualsiden for \n" " detaljene." -#: src/main.c:1669 src/screen.c:2280 src/screen.c:2310 +#: src/main.c:1671 src/screen.c:2300 src/screen.c:2330 msgid "Menu" msgstr "Meny" -#: src/main.c:1874 +#: src/main.c:1876 msgid "Thank you for using GNU Midnight Commander" msgstr "Takk for at du bruker GNU Midnight Commander" -#: src/main.c:2227 +#: src/main.c:2229 #, c-format msgid "with mouse support on xterm%s.\n" msgstr "med musstøtte i xterm%s.\n" -#: src/main.c:2228 +#: src/main.c:2230 msgid " and the Linux console" msgstr " og Linux konsollet" -#: src/main.c:2323 +#: src/main.c:2325 msgid "The TERM environment variable is unset!\n" msgstr "TERM miljøvariabelen er ikke satt!\n" -#: src/main.c:2525 +#: src/main.c:2527 #, c-format msgid "Library directory for the Midnight Commander: %s\n" msgstr "Bibliotekkatalog for Midnight Commander: %s\n" -#: src/main.c:2530 +#: src/main.c:2532 msgid "" "Option -m is obsolete. Please look at Display Bits... in the Option's menu\n" msgstr "" "Flagget -m er utgått. Vær snill å se på visningsbiter... i " "alternativermenyen\n" -#: src/main.c:2653 +#: src/main.c:2655 msgid "Geometry for the window" msgstr "Geometri for vinduet" -#: src/main.c:2653 +#: src/main.c:2655 msgid "GEOMETRY" msgstr "GEOMETRI" -#: src/main.c:2654 +#: src/main.c:2656 msgid "No windows opened at startup" msgstr "Ingen vinduer åpnet ved oppstart" -#: src/main.c:2895 +#: src/main.c:2925 msgid "" "Couldn't open tty line. You have to run mc without the -P flag.\n" "On some systems you may want to run # `which mc`\n" @@ -4184,11 +4175,11 @@ "Kunne ikke åpne tty linjen. Du må kjøre mc uten -P flagget.\n" "På noen systemer vil du kanskje bruke # `which mc`\n" -#: src/main.c:2969 +#: src/main.c:2999 msgid " Notice " msgstr " Notis " -#: src/main.c:2970 +#: src/main.c:3000 msgid "" " The Midnight Commander configuration files \n" " are now stored in the ~/.mc directory, the \n" @@ -4359,72 +4350,72 @@ msgid "Display brief usage message" msgstr "Vis kort bruksmelding" -#: src/screen.c:427 +#: src/screen.c:445 msgid "MTime" msgstr "MTime" -#: src/screen.c:429 +#: src/screen.c:447 msgid "Permission" msgstr "Rettighet" -#: src/screen.c:430 +#: src/screen.c:448 msgid "Perm" msgstr "Rett" -#: src/screen.c:431 +#: src/screen.c:449 msgid "|" msgstr "|" -#: src/screen.c:432 +#: src/screen.c:450 msgid "Nl" msgstr "Nl" -#: src/screen.c:433 +#: src/screen.c:451 msgid "GID" msgstr "GID" -#: src/screen.c:434 +#: src/screen.c:452 msgid "UID" msgstr "UID" -#: src/screen.c:437 +#: src/screen.c:455 msgid "ATime" msgstr "ATime" -#: src/screen.c:438 +#: src/screen.c:456 msgid "CTime" msgstr "CTime" -#: src/screen.c:442 +#: src/screen.c:460 msgid "Inode" msgstr "Inode" -#: src/screen.c:646 +#: src/screen.c:664 #, c-format msgid " %s bytes in %d file%s" msgstr " %s bytes i %d file%s" -#: src/screen.c:1286 +#: src/screen.c:1304 msgid "Unknow tag on display format: " msgstr "Ukjent merke på skjermformatet: " -#: src/screen.c:2044 +#: src/screen.c:2064 msgid " Do you really want to execute? " msgstr " Vil du virkelig kjøre? " -#: src/screen.c:2059 +#: src/screen.c:2079 msgid " No action taken " msgstr " Ingen handling utført " -#: src/screen.c:2284 src/screen.c:2314 src/tree.c:1025 +#: src/screen.c:2304 src/screen.c:2334 src/tree.c:1030 msgid "RenMov" msgstr "RenMov" -#: src/screen.c:2285 src/screen.c:2315 src/tree.c:1029 +#: src/screen.c:2305 src/screen.c:2335 src/tree.c:1034 msgid "Mkdir" msgstr "Mkdir" -#: src/screen.c:2301 +#: src/screen.c:2321 #, c-format msgid "" " Can't chdir to %s \n" @@ -4455,7 +4446,7 @@ msgid "Warning: Couldn't change to %s.\n" msgstr "Advarsel: Kunne ikke skifte til %s.\n" -#: src/tree.c:207 +#: src/tree.c:204 #, c-format msgid "" "Can't open the %s file for writing:\n" @@ -4464,7 +4455,7 @@ "Kan ikke åpne filen %s for skriving:\n" "%s\n" -#: src/tree.c:651 +#: src/tree.c:649 #, c-format msgid "Copy \"%s\" directory to:" msgstr "Kopier \"%s\" katalogen til:" @@ -4487,20 +4478,20 @@ msgid " The destination isn't a directory " msgstr " Målet er ikke en katalog " -#: src/tree.c:755 +#: src/tree.c:758 #, c-format msgid " Delete %s? " msgstr " Slette %s? " -#: src/tree.c:785 +#: src/tree.c:790 msgid "Static" msgstr "Statisk" -#: src/tree.c:785 +#: src/tree.c:790 msgid "Dynamc" msgstr "Dynamisk" -#: src/tree.c:875 +#: src/tree.c:880 #, c-format msgid "" " Can't chdir to \"%s\" \n" @@ -4509,15 +4500,15 @@ "Kan ikke skifte katalog til \"%s\" \n" " %s " -#: src/tree.c:1019 +#: src/tree.c:1024 msgid "Rescan" msgstr "Oppdater" -#: src/tree.c:1021 +#: src/tree.c:1026 msgid "Forget" msgstr "Glem" -#: src/tree.c:1034 +#: src/tree.c:1039 msgid "Rmdir" msgstr "Rmdir" @@ -4565,7 +4556,7 @@ msgid " User menu " msgstr " Brukermeny " -#: src/util.c:235 +#: src/util.c:239 msgid "name_trunc: too big" msgstr "name_trunc: for stor" @@ -4667,6 +4658,10 @@ msgid "Ascii" msgstr "Ascii" +#: src/view.c:1966 +msgid "Hex" +msgstr "Hex" + #: src/view.c:1967 msgid "Line" msgstr "Linje" @@ -4687,6 +4682,10 @@ msgid "UnWrap" msgstr "Fjern bryting" +#: src/view.c:1973 +msgid "Wrap" +msgstr "Bryt" + #: src/view.c:1976 msgid "HxSrch" msgstr "HexSøk" @@ -4902,7 +4901,7 @@ msgid "NumLock on keypad" msgstr "NumLock på numerisk tastatur" -#: src/wtools.c:590 vfs/vfs.c:1770 +#: src/wtools.c:590 vfs/vfs.c:1776 msgid "Password:" msgstr "Passord:" @@ -4931,12 +4930,12 @@ msgid "Sorry, we can not do password authenticated connections for now." msgstr "Beklager, vi kan ikke gjøre passordautentiserte forbindelser ennå." -#: vfs/ftpfs.c:461 +#: vfs/ftpfs.c:466 #, c-format msgid " Could not set source routing (%s)" msgstr " Kunne ikke sette opp kilderuting (%s)" -#: vfs/ftpfs.c:1863 vfs/ftpfs.c:1878 +#: vfs/ftpfs.c:1878 vfs/ftpfs.c:1893 msgid "" "~/.netrc file has not correct mode.\n" "Remove password or correct mode." @@ -4982,7 +4981,7 @@ msgid " Invalid password " msgstr " Ugyldig passord " -#: vfs/mcfs.c:322 +#: vfs/mcfs.c:323 msgid " Too many open connections " msgstr " For mange åpne forbindelser " @@ -4995,16 +4994,15 @@ "Kunne ikke åpne tar-arkiv\n" "%s" -#: vfs/tar.c:272 +#: vfs/tar.c:283 msgid "Unexpected EOF on archive file" msgstr "Uventet EOF i arkivfilen" -#: vfs/tar.c:327 vfs/tar.c:334 +#: vfs/tar.c:338 vfs/tar.c:345 msgid "Inconsistent tar archive" msgstr "Ukonsistent tar-arkiv" -#. Error on first record -#: vfs/tar.c:393 +#: vfs/tar.c:411 #, c-format msgid "" "Hmm,...\n" diff -ruN old/mc-4.5.7/src/ChangeLog new/mc-4.5.9/src/ChangeLog --- old/mc-4.5.7/src/ChangeLog Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/src/ChangeLog Mon Jan 18 17:44:11 1999 @@ -1,3 +1,56 @@ +Mon Jan 18 21:23:29 1999 Paul Sheer + + * cmd.c: update_panels (UP_OPTIMIZE, UP_KEEPSEL); instead + of reread after editing a file. + +1999-01-18 Arturo Espinosa + + * file.c: Use N_ instead of _ for some of miguel's last tags. + +1999-01-18 Miguel de Icaza + + * file.c: Tag some more strings for localization. + +1999-01-15 Miguel de Icaza + + * cmd.c (mkdir_cmd): Please, check your pointer usage. + +Thu Jan 14 13:18:58 1999 Timur Bakeyev + + * screen.c (string_file_[owner|group]): Workaround the fact, that some + systems have user and group names greater than 8 symbols. Now we trun- + cate them. + +1999-01-13 Federico Mena Quintero + + * treestore.c (tree_store_load): Use g_return_val_if_fail(), not + g_return_if_fail(). + (tree_store_rescan): Added parentheses to clarify || and &&. + + * tree.c (tree_add_entry): Removed unused variable. + + * treestore.h: Added prototype for tree_store_start_check_cwd(). + +1999-01-13 Miguel de Icaza + + * view.c (search): Missing condition. + + * treestore.c (tree_store_opendir): Simplistic fix. This is not + quite correct. + +1999-01-12 Federico Mena Quintero + + * panelize.h: Added prototype for do_external_panelize(). + + * screen.c (move_selection): Unused variable fixes for HAVE_X. + + * boxes.c (configure_vfs): Removed an unused variable. + +1999-01-12 Jonathan Blandford + + * cmd.c (mkdir_cmd): now mkdir_cmd will accept relative, and + absolute directories. + Tue Jan 12 13:40:46 1999 Timur Bakeyev * gtkedit(syntax.c): Fixed a typo in Pascal syntax. @@ -7,6 +60,21 @@ * treestore.c (tree_store_save): Add signature for version 2.0 of the file format. +1999-01-11 Federico Mena Quintero + + * file.c (do_file_error): Made static. + (query_recursive): Have cases for background/foreground operation. + (do_file_error): Likewise. + + * background.c: Removed the bg_ctx global, since now all the + contexts are carried around by the functions that actually need + them. + + * fileopctx.h (FileOpContext): Moved the op_preserve field to here. + + * filegui.c (file_mask_dialog): Removed the ui assertion, since + now the op_preserve field is kept in the main context structure. + 1999-01-11 Miguel de Icaza * util.c: Provide workarounds for Linux kernel bug. @@ -44,6 +112,59 @@ * file.c (panel_operate_flags): Only show this dialog box if it is a copy or move operation + +1999-01-06 Federico Mena Quintero + + * background.c (do_background): Make it a bit saner. Now we store + a per-child-process FileOpContext structure. + + * fileopctx.h: New file with declarations for the file operation + context structure. + + * fileopctx.c (file_op_context_new): New function to create a file + operation context with the default file mask values. + (file_op_context_destroy): New function to destroy a file + operation context and its associated UI, if appropriate. + + * filegui.h: Use complete prototype for fmd_init_i18n(). + + * filegui.c (FileOpContextUI): New structure that describes the UI + and internal data for file operation contexts in the text mode + version. + (file_op_context_create_ui): Renamed from create_op_win() and + made it use a context instead of global variables. + (file_op_context_destroy_ui): Likewise, renamed from + destroy_op_win(). + (fmd_widgets): Removed an #ifdef HAVE_XVIEW bit and moved the + initialization of the result pointers to file_mask_dialog(), as we + need to use the pointers to the fields inside the file op context now. + Made all the functions use a file operation context. + (file_mask_dialog): Always call fmd_init_i18n(); it will take care + of idempotence by itself. + (fmd_init_i18n): Now the code that makes sure this function is + only called once is here. + + * cmd.c (check_for_default): Make it use a file operation context. + * tree.c (tree_copy): Likewise. + (tree_move): Likewise. + (tree_rmdir_cmd): Likewise. + + * file.c: Removed file_progress_replace_progress and + file_progress_replace_filename -- they are only used in filegui.c + as part of the UI for the file operation context. + (panel_operate_generate_prompt): Made static. + (panel_operate_generate_prompt): Always call fmd_init_i18n(); it + will take care of idempotence by itself. + (panel_operate): Removed the panel_operate_def() function, and + made panel_operate() take an extra "ask_user" argument. + (query_recursive): Made static. + + * background.c (background_attention): Made static. + (register_task_running): Made static. + (do_background): Now takes a file operation context as an + argument. It stores the pid of the child there. + + * Makefile.in: Added fileopctx.[ch]. 1999-01-06 Miguel de Icaza diff -ruN old/mc-4.5.7/src/Makefile.in new/mc-4.5.9/src/Makefile.in --- old/mc-4.5.7/src/Makefile.in Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/src/Makefile.in Mon Jan 18 17:44:11 1999 @@ -25,7 +25,7 @@ complete.c slint.c command.c cmd.c panelize.c learn.c \ listmode.c utilunix.c background.c rxvt.c \ text.c popt.c findme.c poptparse.c poptconfig.c popthelp.c \ - filegui.c filenot.c treestore.c + filegui.c filenot.c fileopctx.c treestore.c HDRS = color.h file.h mouse.h user.h dialog.h find.h main.h \ util.h dir.h global.h menu.h panel.h win.h mem.h \ @@ -36,7 +36,7 @@ myslang.h command.h cmd.h tty.h fs.h panelize.h achown.h \ learn.h listmode.h features.inc background.h \ x.h textconf.h i18n.h findme.h popt.h filegui.h keys.h xtty.h \ - poptint.h treestore.h + poptint.h fileopctx.h treestore.h OBJS = dir.o util.o screen.o dialog.o key.o keyxdef.o menu.o \ file.o win.o color.o help.o find.o profile.o user.o view.o \ @@ -46,7 +46,8 @@ mountlist.o @XCURSES@ @REGEX_O@ complete.o slint.o command.o \ cmd.o main.o panelize.o learn.o listmode.o utilunix.o \ background.o rxvt.o text.o popt.o findme.o poptparse.o \ - poptconfig.o popthelp.o filegui.o filenot.o treestore.o + poptconfig.o popthelp.o filegui.o filenot.o fileopctx.o \ + treestore.o # # Distribution variables diff -ruN old/mc-4.5.7/src/background.c new/mc-4.5.9/src/background.c --- old/mc-4.5.7/src/background.c Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/src/background.c Mon Jan 18 17:44:11 1999 @@ -51,7 +51,7 @@ #endif #include "util.h" #include "dialog.h" -#include "background.h" +#include "fileopctx.h" #include "mad.h" #include "key.h" /* For add_select_channel(), delete_select_channel() */ #include "regex.h" @@ -61,10 +61,6 @@ /* If true, this is a background process */ int we_are_background = 0; -/* Ugh, ugly hack */ -extern int do_append; -extern int recursive_result; - #ifdef WITH_BACKGROUND /* If set background tasks wait to be attached */ int background_wait = 0; @@ -80,9 +76,11 @@ #define mymsg "Desde el hijo\n\r" struct TaskList *task_list = NULL; + +static int background_attention (int fd, void *closure); -void -register_task_running (pid_t pid, int fd, char *info) +static void +register_task_running (FileOpContext *ctx, pid_t pid, int fd, char *info) { TaskList *new; @@ -94,7 +92,7 @@ new->fd = fd; task_list = new; - add_select_channel (fd, background_attention, (void *) pid); + add_select_channel (fd, background_attention, ctx); } void @@ -128,23 +126,23 @@ * -1 on failure */ int -do_background (char *info) +do_background (FileOpContext *ctx, char *info) { int comm [2]; /* control connection stream */ int pid; - + if (socketpair (AF_UNIX, SOCK_STREAM, 0, comm) == -1) return -1; - + if ((pid = fork ()) == -1) return -1; - + if (pid == 0){ int nullfd; parent_fd = comm [1]; we_are_background = 1; - + /* Make stdin/stdout/stderr point somewhere */ close (0); close (1); @@ -159,7 +157,7 @@ /* To make it obvious if it fails, there is a bug report on this */ write (2, mymsg, sizeof (mymsg)); write (1, mymsg, sizeof (mymsg)); - + /* Just for debugging the background back end */ if (background_wait){ volatile int i = 1; @@ -170,7 +168,8 @@ return 0; } else { close (comm [1]); - register_task_running (pid, comm [0], info); + ctx->pid = pid; + register_task_running (ctx, pid, comm [0], info); return 1; } } @@ -273,36 +272,39 @@ * specified routine */ -int -background_attention (int fd, void *xpid) +static int +background_attention (int fd, void *closure) { + FileOpContext *ctx; + int have_ctx; void *routine; int argc, i, result, status; char *data [MAXCALLARGS]; char *resstr; - pid_t pid = (pid_t) xpid; int bytes; enum ReturnType type; char *background_process_error = _(" Background process error "); - + + ctx = closure; + bytes = read (fd, &routine, sizeof (routine)); if (bytes < (sizeof (routine))){ if (errno == ECHILD) message (1, background_process_error, _(" Child died unexpectedly ")); else message (1, background_process_error, _(" Unknown error in child ")); - unregister_task_running (pid, fd); - waitpid (pid, &status, 0); + unregister_task_running (ctx->pid, fd); + waitpid (ctx->pid, &status, 0); return 0; } /* If the routine is zero, then the child is telling us that he is dying */ if ((int) routine == MSG_CHILD_EXITING){ - unregister_task_running (pid, fd); - waitpid (pid, &status, 0); + unregister_task_running (ctx->pid, fd); + waitpid (ctx->pid, &status, 0); return 0; } - + read (fd, &argc, sizeof (argc)); if (argc > MAXCALLARGS){ message (1, _(" Background protocol error "), @@ -310,42 +312,64 @@ " than we can handle. \n")); } read (fd, &type, sizeof (type)); - + read (fd, &have_ctx, sizeof (have_ctx)); + if (have_ctx) + read (fd, ctx, sizeof (FileOpContext)); + for (i = 0; i < argc; i++){ int size; - + read (fd, &size, sizeof (size)); data [i] = xmalloc (size+1, "RPC Arguments"); read (fd, data [i], size); - + data [i][size] = 0; /* NULL terminate the blocks (they could be strings) */ } /* Handle the call */ if (type == Return_Integer){ - switch (argc){ - case 1: - result = (*(int (*)(int, char *))routine)(Background, data [0]); - break; - case 2: - result = (*(int (*)(int, char *, char *))routine) - (Background, data [0], data [1]); - break; - case 3: - result = (*(int (*)(int, char *, char *, char *))routine) - (Background, data [0], data [1], data [2]); - break; - case 4: - result = (*(int (*)(int, char *, char *, char *, char *))routine) - (Background, data [0], data [1], data [2], data [3]); - break; - } - + if (have_ctx) + switch (argc){ + case 1: + result = (*(int (*)(int, char *))routine)(Background, data [0]); + break; + case 2: + result = (*(int (*)(int, char *, char *))routine) + (Background, data [0], data [1]); + break; + case 3: + result = (*(int (*)(int, char *, char *, char *))routine) + (Background, data [0], data [1], data [2]); + break; + case 4: + result = (*(int (*)(int, char *, char *, char *, char *))routine) + (Background, data [0], data [1], data [2], data [3]); + break; + } + else + switch (argc){ + case 1: + result = (*(int (*)(FileOpContext *, int, char *))routine) + (ctx, Background, data [0]); + break; + case 2: + result = (*(int (*)(FileOpContext *, int, char *, char *))routine) + (ctx, Background, data [0], data [1]); + break; + case 3: + result = (*(int (*)(FileOpContext *, int, char *, char *, char *))routine) + (ctx, Background, data [0], data [1], data [2]); + break; + case 4: + result = (*(int (*)(FileOpContext *, int, char *, char *, char *, char *))routine) + (ctx, Background, data [0], data [1], data [2], data [3]); + break; + } + /* Send the result code and the value for shared variables */ - write (fd, &result, sizeof (int)); - write (fd, &file_progress_do_append, sizeof (file_progress_do_append)); - write (fd, &file_progress_recursive_result, sizeof (file_progress_recursive_result)); - + write (fd, &result, sizeof (int)); + if (have_ctx) + write (fd, ctx, sizeof (FileOpContext)); } else if (type == Return_String) { int len; @@ -396,23 +420,36 @@ /* }}} */ /* {{{ client RPC routines */ + +/* Sends the header for a call to a routine in the parent process. If the file + * operation context is not NULL, then it requests that the first parameter of + * the call be a file operation context. + */ static void -parent_call_header (void *routine, int argc, enum ReturnType type) +parent_call_header (void *routine, int argc, enum ReturnType type, FileOpContext *ctx) { + int have_ctx; + + have_ctx = (ctx != NULL); + write (parent_fd, &routine, sizeof (routine)); write (parent_fd, &argc, sizeof (int)); write (parent_fd, &type, sizeof (type)); + write (parent_fd, &have_ctx, sizeof (have_ctx)); + + if (have_ctx) + write (parent_fd, ctx, sizeof (FileOpContext)); } int -parent_call (void *routine, int argc, ...) +parent_call (void *routine, FileOpContext *ctx, int argc, ...) { va_list ap; int i; - + va_start (ap, argc); - parent_call_header (routine, argc, Return_Integer); - for (i = 0; i < argc; i++){ + parent_call_header (routine, argc, Return_Integer, ctx); + for (i = 0; i < argc; i++) { int len; void *value; @@ -421,12 +458,10 @@ write (parent_fd, &len, sizeof (int)); write (parent_fd, value, len); } - /* Besides the regular result, get the value for - * variables that may be modified in the parent that affect our behaviour - */ - read (parent_fd, &i, sizeof (int)); - read (parent_fd, &file_progress_do_append, sizeof (file_progress_do_append)); - read (parent_fd, &file_progress_recursive_result, sizeof (file_progress_recursive_result)); + read (parent_fd, &i, sizeof (int)); + if (ctx) + read (parent_fd, ctx, sizeof (FileOpContext)); + return i; } @@ -438,7 +473,7 @@ int i; va_start (ap, argc); - parent_call_header (routine, argc, Return_String); + parent_call_header (routine, argc, Return_String, NULL); for (i = 0; i < argc; i++){ int len; void *value; @@ -448,7 +483,7 @@ write (parent_fd, &len, sizeof (int)); write (parent_fd, value, len); } - read (parent_fd, &i, sizeof (int)); + read (parent_fd, &i, sizeof (int)); if (!i) return NULL; str = xmalloc (i + 1, "parent_return"); @@ -463,21 +498,12 @@ write (parent_fd, &msg, sizeof (int)); } -int -call_1s (int (*routine)(enum OperationMode, char *), char *str) -{ - if (we_are_background) - return parent_call ((void *)routine, 1, strlen (str), str); - else - return (*routine)(Foreground, str); -} - void message_1s (int flags, char *title, char *str1) { if (we_are_background) - parent_call ((void *)real_message_1s, 3, sizeof (flags), &flags, - strlen (title), title, strlen (str1), str1); + parent_call ((void *)real_message_1s, NULL, 3, sizeof (flags), &flags, + strlen (title), title, strlen (str1), str1); else real_message_1s (Foreground, &flags, title, str1); } @@ -486,7 +512,7 @@ message_2s (int flags, char *title, char *str1, char *str2) { if (we_are_background) - parent_call ((void *)real_message_2s, 4, sizeof (flags), &flags, + parent_call ((void *)real_message_2s, NULL, 4, sizeof (flags), &flags, strlen (title), title, strlen (str1), str1, strlen (str2), str2); else @@ -497,7 +523,7 @@ message_3s (int flags, char *title, char *str1, char *str2, const char *str3) { if (we_are_background) - parent_call ((void *)real_message_3s, 3, sizeof (flags), &flags, + parent_call ((void *)real_message_3s, NULL, 3, sizeof (flags), &flags, strlen (title), title, strlen (str1), str1, strlen (str2), str2, strlen (str3), str3); else diff -ruN old/mc-4.5.7/src/background.h new/mc-4.5.9/src/background.h --- old/mc-4.5.7/src/background.h Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/src/background.h Mon Jan 18 17:44:10 1999 @@ -14,12 +14,6 @@ MSG_CHILD_EXITING }; -/* First argument passed to real functions */ -enum OperationMode { - Foreground, - Background -}; - enum ReturnType { Return_String, Return_Integer @@ -42,14 +36,11 @@ extern int background_wait; -int do_background (char *info); -int background_attention (int fd, void *xpid); +int do_background (FileOpContext *ctx, char *info); void tell_parent (int msg); -int parent_call (void *routine, int argc, ...); -int call_1s (int (*routine)(enum OperationMode, char *), char *str); +int parent_call (void *routine, FileOpContext *ctx, int argc, ...); void unregister_task_running (pid_t, int fd); -void register_task_running (pid_t, int, char *); /* stubs */ void message_1s (int flags, char *title, char *str1); diff -ruN old/mc-4.5.7/src/boxes.c new/mc-4.5.9/src/boxes.c --- old/mc-4.5.7/src/boxes.c Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/src/boxes.c Mon Jan 18 17:44:10 1999 @@ -49,7 +49,8 @@ #include "main.h" /* For the confirm_* variables */ #include "tree.h" #include "layout.h" /* for get_nth_panel_name proto */ -#include "background.h" /* for background definitions */ +#include "fileopctx.h" +#include "background.h" #include "x.h" static int DISPLAY_X = 45, DISPLAY_Y = 14; @@ -701,8 +702,6 @@ #endif if (quick_dialog (&confvfs_dlg) != B_CANCEL) { - char *p; - vfs_timeout = atoi (ret_timeout); free (ret_timeout); if (vfs_timeout < 0 || vfs_timeout > 10000) diff -ruN old/mc-4.5.7/src/cmd.c new/mc-4.5.9/src/cmd.c --- old/mc-4.5.7/src/cmd.c Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/src/cmd.c Mon Jan 18 17:44:11 1999 @@ -58,6 +58,7 @@ #include "view.h" /* view() */ #include "dialog.h" /* query_dialog, message */ #include "file.h" /* the file operations */ +#include "fileopctx.h" #include "find.h" /* do_find */ #include "hotlist.h" #include "tree.h" @@ -325,7 +326,8 @@ #ifdef USE_INTERNAL_EDIT if (use_internal_edit){ edit (what, start_line); - reread_cmd (); + update_panels (UP_OPTIMIZE, UP_KEEPSEL); + repaint_screen (); return; } #endif @@ -335,7 +337,8 @@ editor = get_default_editor (); } execute_internal (editor, what); - reread_cmd (); + update_panels (UP_OPTIMIZE, UP_KEEPSEL); + repaint_screen (); } void @@ -359,7 +362,7 @@ void copy_cmd (void) { save_cwds_stat (); - if (panel_operate (cpanel, OP_COPY, NULL)){ + if (panel_operate (cpanel, OP_COPY, NULL, TRUE)){ update_panels (UP_OPTIMIZE, UP_KEEPSEL); repaint_screen (); } @@ -368,7 +371,7 @@ void ren_cmd (void) { save_cwds_stat (); - if (panel_operate (cpanel, OP_MOVE, NULL)){ + if (panel_operate (cpanel, OP_MOVE, NULL, TRUE)){ update_panels (UP_OPTIMIZE, UP_KEEPSEL); repaint_screen (); } @@ -377,7 +380,7 @@ void copymove_cmd_with_default (int copy, char *thedefault) { save_cwds_stat (); - if (panel_operate (cpanel, copy ? OP_COPY : OP_MOVE, thedefault)){ + if (panel_operate (cpanel, copy ? OP_COPY : OP_MOVE, thedefault, TRUE)){ update_panels (UP_OPTIMIZE, UP_KEEPSEL); repaint_screen (); } @@ -385,23 +388,30 @@ void mkdir_cmd (WPanel *panel) { + char *tempdir; char *dir; panel = get_a_panel (panel); - dir = input_expand_dialog (_(" Mkdir "), _(" Enter directory name:") , ""); + dir = input_expand_dialog (_("Create a new Directory"), _(" Enter directory name:") , ""); if (!dir) return; - + + if (dir [0] && (dir [0] == '/' || dir [0] == '~')) + tempdir = strdup (dir); + else + tempdir = concat_dir_and_file (panel->cwd, dir); + free (dir); + save_cwds_stat (); - if (my_mkdir (dir, 0777) == 0){ - update_panels (UP_OPTIMIZE, dir); + if (my_mkdir (tempdir, 0777) == 0){ + update_panels (UP_OPTIMIZE, tempdir); repaint_screen (); select_item (cpanel); - free (dir); + free (tempdir); return; } - free (dir); + free (tempdir); message (1, MSG_ERROR, " %s ", unix_error_string (errno)); } @@ -409,7 +419,7 @@ { save_cwds_stat (); - if (panel_operate (cpanel, OP_DELETE, NULL)){ + if (panel_operate (cpanel, OP_DELETE, NULL, TRUE)){ update_panels (UP_OPTIMIZE, UP_KEEPSEL); repaint_screen (); } @@ -612,15 +622,16 @@ struct stat s; long count = 0; double bytes = 0; + FileOpContext *ctx; if (mc_stat (file, &s)){ if (mc_stat (default_file, &s)){ return -1; } - create_op_win (OP_COPY, 0); - file_mask_defaults (); - copy_file_file (default_file, file, 1, &count, &bytes, 1); - destroy_op_win (); + ctx = file_op_context_new (); + file_op_context_create_ui (ctx, OP_COPY, 0); + copy_file_file (ctx, default_file, file, 1, &count, &bytes, 1); + file_op_context_destroy (ctx); } return 0; } diff -ruN old/mc-4.5.7/src/dialog.c new/mc-4.5.9/src/dialog.c --- old/mc-4.5.7/src/dialog.c Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/src/dialog.c Mon Jan 18 17:44:10 1999 @@ -33,9 +33,9 @@ #include "main.h" #include "key.h" /* For mi_getch() */ #include "dlg.h" /* draw_box, yes I know, it's silly */ -#include "background.h" /* we_are_background definition */ +#include "fileopctx.h" -/* "$Id: dialog.c,v 1.4 1999/01/01 02:05:05 unammx Exp $" */ +/* "$Id: dialog.c,v 1.5 1999/01/14 01:11:09 unammx Exp $" */ Refresh *refresh_list = 0; diff -ruN old/mc-4.5.7/src/file.c new/mc-4.5.9/src/file.c --- old/mc-4.5.7/src/file.c Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/src/file.c Mon Jan 18 17:44:10 1999 @@ -94,7 +94,6 @@ #include "widget.h" #define WANT_WIDGETS #include "main.h" /* WANT_WIDGETS-> we get the the_hint def */ -#include "background.h" #include "layout.h" #include "widget.h" #include "wtools.h" @@ -112,27 +111,9 @@ /* }}} */ -/* rcsid [] = "$Id: file.c,v 1.39 1999/01/10 08:55:54 unammx Exp $" */ -int verbose = 1; - -/* Recursive operation on subdirectories */ -int dive_into_subdirs = 0; - -/* - * When moving directories cross filesystem boundaries delete the successfull - * copied files when all files below the directory and its subdirectories - * were processed. - * If erase_at_end is zero files will be deleted immediately after their - * successful copy (Note: this behaviour is not tested and at the moment - * it can't be changed at runtime) - */ -int erase_at_end = 1; +/* rcsid [] = "$Id: file.c,v 1.42 1999/01/18 17:53:11 unammx Exp $" */ -/* - * Preserve the original files' owner, group, permissions, and - * timestamps (owner, group only as root). - */ -int file_mask_preserve; +int verbose = 1; /* * Whether the Midnight Commander tries to provide more @@ -141,40 +122,11 @@ */ int file_op_compute_totals = 1; -/* - * If running as root, preserve the original uid/gid - * (we don't want to try chwon for non root) - * preserve_uidgid = preserve && uid == 0 */ -int file_mask_preserve_uidgid = 0; - -/* The bits to preserve in created files' modes on file copy */ -int file_mask_umask_kill = 0777777; - /* If on, it gets a little scrict with dangerous operations */ int know_not_what_am_i_doing = 0; -int file_mask_stable_symlinks = 0; - -/* The next two are not static, since they are used on background.c */ -/* Controls appending to files, shared with filequery.c */ -int file_progress_do_append = 0; - -/* result from the recursive query */ -int file_progress_recursive_result; - -/* The estimated time of arrival in seconds */ -double file_progress_eta_secs; - -/* The reget flag */ -int file_progress_do_reget = 1; - -/* Status reporting flags */ -int file_progress_totals_computed; /* panel total has been computed */ -long file_progress_count; -double file_progress_bytes; - /* mapping operations into names */ -char *operation_names [] = { "Copy", "Move", "Delete" }; +char *operation_names [] = { N_("Copy"), N_("Move"), N_("Delete") }; /* This is a hard link cache */ struct link { @@ -205,36 +157,22 @@ */ struct link *dest_dirs = 0; -struct re_pattern_buffer file_mask_rx; -struct re_registers regs; - -char *file_mask_dest_mask = NULL; - -/* - * To symlinks the difference between `follow Links' checked and not - * checked is the stat call used (mc_stat resp. mc_lstat) - */ -int (*file_mask_xstat)(char *, struct stat *) = mc_lstat; - -int file_mask_op_follow_links = 0; - -#ifndef HAVE_GNOME -/* we don't need these in the GNOME version */ -char *file_progress_replace_filename; -int file_progress_replace_result; -#endif -unsigned long file_progress_bps = 0, file_progress_bps_time = 0; - char *op_names [3] = { N_(" Copy "), N_(" Move "), N_(" Delete ") }; -static int recursive_erase (char *s, long *progress_count, double *progress_bytes); +static int recursive_erase (FileOpContext *ctx, char *s, + long *progress_count, double *progress_bytes); /* }}} */ +static int query_replace (FileOpContext *ctx, char *destname, + struct stat *_s_stat, struct stat *_d_stat); +static int query_recursive (FileOpContext *ctx, char *s); +static int do_file_error (char *str); + enum CaseConvs { NO_CONV=0, UP_CHAR=1, LOW_CHAR=2, UP_SECT=4, LOW_SECT=8 }; @@ -258,27 +196,27 @@ static int transform_error = 0; static char * -do_transform_source (char *source) +do_transform_source (FileOpContext *ctx, char *source) { int j, k, l, len; char *fnsource = x_basename (source); int next_reg; enum CaseConvs case_conv = NO_CONV; static char fntarget [MC_MAXPATHLEN]; - + len = strlen (fnsource); - j = re_match (&file_mask_rx, fnsource, len, 0, ®s); + j = re_match (&ctx->rx, fnsource, len, 0, &ctx->regs); if (j != len){ transform_error = FILE_SKIP; return NULL; } - for (next_reg = 1, j = 0, k = 0; j < strlen (file_mask_dest_mask); j++){ - switch (file_mask_dest_mask [j]){ + for (next_reg = 1, j = 0, k = 0; j < strlen (ctx->dest_mask); j++){ + switch (ctx->dest_mask [j]){ case '\\': j++; - if (! isdigit (file_mask_dest_mask [j])){ + if (! isdigit (ctx->dest_mask [j])){ /* Backslash followed by non-digit */ - switch (file_mask_dest_mask [j]){ + switch (ctx->dest_mask [j]){ case 'U': case_conv |= UP_SECT; case_conv &= ~LOW_SECT; @@ -298,29 +236,29 @@ break; default: /* Backslash as quote mark */ - fntarget [k++] = convert_case (file_mask_dest_mask [j], &case_conv); + fntarget [k++] = convert_case (ctx->dest_mask [j], &case_conv); } break; } else { /* Backslash followed by digit */ - next_reg = file_mask_dest_mask [j] - '0'; + next_reg = ctx->dest_mask [j] - '0'; /* Fall through */ } - + case '*': if (next_reg < 0 || next_reg >= RE_NREGS - || regs.start [next_reg] < 0){ + || ctx->regs.start [next_reg] < 0){ message_1s (1, MSG_ERROR, _(" Invalid target mask ")); transform_error = FILE_ABORT; return NULL; } - for (l = regs.start [next_reg]; l < regs.end [next_reg]; l++) + for (l = ctx->regs.start [next_reg]; l < ctx->regs.end [next_reg]; l++) fntarget [k++] = convert_case (fnsource [l], &case_conv); next_reg ++; break; - + default: - fntarget [k++] = convert_case (file_mask_dest_mask [j], &case_conv); + fntarget [k++] = convert_case (ctx->dest_mask [j], &case_conv); break; } } @@ -329,7 +267,7 @@ } static char * -transform_source (char *source) +transform_source (FileOpContext *ctx, char *source) { char *s = strdup (source); char *q; @@ -340,7 +278,7 @@ if (*q == '\n') *q = ' '; } - q = do_transform_source (s); + q = do_transform_source (ctx, s); free (s); return q; } @@ -433,41 +371,40 @@ * If dst_path is an existing symlink it will be deleted silently * (upper levels take already care of existing files at dst_path). */ -static int -make_symlink (char *src_path, char *dst_path) +static int +make_symlink (FileOpContext *ctx, char *src_path, char *dst_path) { char link_target[MC_MAXPATHLEN]; int len; int return_status; struct stat sb; int dst_is_symlink; - + if (mc_lstat (dst_path, &sb) == 0 && S_ISLNK (sb.st_mode)) dst_is_symlink = 1; else dst_is_symlink = 0; - retry_src_readlink: + retry_src_readlink: len = mc_readlink (src_path, link_target, MC_MAXPATHLEN); if (len < 0){ - return_status = file_error - (_(" Cannot read source link \"%s\" \n %s "), src_path); + return_status = file_error (_(" Cannot read source link \"%s\" \n %s "), src_path); if (return_status == FILE_RETRY) goto retry_src_readlink; return return_status; } link_target[len] = 0; - if (file_mask_stable_symlinks) - if ((!vfs_file_is_local (src_path)||!vfs_file_is_local (dst_path))){ - message_1s (1, MSG_ERROR, _( - " Cannot make stable symlinks across " - "non-local filesystems: \n\n" - " Option Stable Symlinks will be disabled ")); - file_mask_stable_symlinks = 0; + if (ctx->stable_symlinks) + if (!vfs_file_is_local (src_path) || !vfs_file_is_local (dst_path)) { + message_1s (1, MSG_ERROR, + _(" Cannot make stable symlinks across " + "non-local filesystems: \n\n" + " Option Stable Symlinks will be disabled ")); + ctx->stable_symlinks = 0; } - - if (file_mask_stable_symlinks && *link_target != PATH_SEP){ + + if (ctx->stable_symlinks && *link_target != PATH_SEP) { char *p, *q, *r, *s; p = strdup (src_path); @@ -495,7 +432,7 @@ } free (p); } - retry_dst_symlink: + retry_dst_symlink: if (mc_symlink (link_target, dst_path) == 0) /* Success */ return FILE_CONT; @@ -509,39 +446,39 @@ /* Success */ return FILE_CONT; } - return_status = file_error - (_(" Cannot create target symlink \"%s\" \n %s "), dst_path); + return_status = file_error (_(" Cannot create target symlink \"%s\" \n %s "), dst_path); if (return_status == FILE_RETRY) goto retry_dst_symlink; return return_status; } static int -progress_update_one (long *progress_count, +progress_update_one (FileOpContext *ctx, + long *progress_count, double *progress_bytes, int add, int is_toplevel_file) { int ret; - if (is_toplevel_file || file_progress_totals_computed) { + if (is_toplevel_file || ctx->progress_totals_computed) { (*progress_count)++; (*progress_bytes) += add; } /* Apply some heuristic here to not call the update stuff very often */ - ret = file_progress_show_count (*progress_count, file_progress_count); + ret = file_progress_show_count (ctx, *progress_count, ctx->progress_count); if (ret != FILE_CONT) return ret; - - ret = file_progress_show_bytes (*progress_bytes, file_progress_bytes); + + ret = file_progress_show_bytes (ctx, *progress_bytes, ctx->progress_bytes); return ret; } int -copy_file_file (char *src_path, char *dst_path, int ask_overwrite, +copy_file_file (FileOpContext *ctx, char *src_path, char *dst_path, int ask_overwrite, long *progress_count, double *progress_bytes, int is_toplevel_file) { @@ -563,22 +500,21 @@ /* bitmask used to remember which resourses we should release on return A single goto label is much easier to handle than a bunch of gotos ;-). */ - unsigned resources = 0; + unsigned resources = 0; /* FIXME: We should not be using global variables! */ - file_progress_do_reget = 0; + ctx->do_reget = 0; return_status = FILE_RETRY; - if (file_progress_show_source (src_path) == FILE_ABORT || - file_progress_show_target (dst_path) == FILE_ABORT) + if (file_progress_show_source (ctx, src_path) == FILE_ABORT || + file_progress_show_target (ctx, dst_path) == FILE_ABORT) return FILE_ABORT; mc_refresh (); retry_dst_stat: if (mc_stat (dst_path, &sb2) == 0){ if (S_ISDIR (sb2.st_mode)){ - return_status = file_error (_(" Cannot overwrite directory \"%s\" \n %s "), - dst_path); + return_status = file_error (_(" Cannot overwrite directory \"%s\" \n %s "), dst_path); if (return_status == FILE_RETRY) goto retry_dst_stat; return return_status; @@ -586,14 +522,13 @@ dst_exists = 1; } - while ((*file_mask_xstat)(src_path, &sb)){ - return_status = file_error (_(" Cannot stat source file \"%s\" \n %s "), - src_path); + while ((* ctx->stat_func) (src_path, &sb)) { + return_status = file_error (_(" Cannot stat source file \"%s\" \n %s "), src_path); if (return_status == FILE_RETRY) continue; return return_status; } - + if (dst_exists){ /* .ado: For OS/2 or NT: no st_ino exists, it is better to just try to * overwrite the target file @@ -601,8 +536,7 @@ #ifndef OS2_NT /* Destination already exists */ if (sb.st_dev == sb2.st_dev && sb.st_ino == sb2.st_ino){ - message_3s (1, MSG_ERROR, _(" `%s' and `%s' are the same file. "), - src_path, dst_path); + message_3s (1, MSG_ERROR, _(" `%s' and `%s' are the same file. "), src_path, dst_path); do_refresh (); return FILE_SKIP; } @@ -610,52 +544,49 @@ /* Should we replace destination? */ if (ask_overwrite){ - file_progress_do_reget = 0; - - return_status = query_replace (dst_path, &sb, &sb2); + ctx->do_reget = 0; + return_status = query_replace (ctx, dst_path, &sb, &sb2); if (return_status != FILE_CONT) return return_status; } } - if (!file_progress_do_append){ + if (!ctx->do_append) { /* .ado: OS2 and NT don't have hardlinks */ #ifndef OS2_NT /* Check the hardlinks */ - if (!file_mask_op_follow_links && sb.st_nlink > 1 && + if (!ctx->follow_links && sb.st_nlink > 1 && check_hardlinks (src_path, dst_path, &sb) == 1){ /* We have made a hardlink - no more processing is necessary */ return return_status; } - + if (S_ISLNK (sb.st_mode)) - return make_symlink (src_path, dst_path); + return make_symlink (ctx, src_path, dst_path); #endif /* !OS_NT */ if (S_ISCHR (sb.st_mode) || S_ISBLK (sb.st_mode) || S_ISFIFO (sb.st_mode) || S_ISSOCK (sb.st_mode)){ - while (mc_mknod (dst_path, sb.st_mode & file_mask_umask_kill, sb.st_rdev) < 0){ - return_status = file_error - (_(" Cannot create special file \"%s\" \n %s "), dst_path); + while (mc_mknod (dst_path, sb.st_mode & ctx->umask_kill, sb.st_rdev) < 0){ + return_status = file_error (_(" Cannot create special file \"%s\" \n %s "), dst_path); if (return_status == FILE_RETRY) continue; return return_status; } /* Success */ - + #ifndef OS2_NT - while (file_mask_preserve_uidgid && mc_chown (dst_path, sb.st_uid, sb.st_gid)){ - temp_status = file_error - (_(" Cannot chown target file \"%s\" \n %s "), dst_path); + while (ctx->preserve_uidgid && mc_chown (dst_path, sb.st_uid, sb.st_gid)){ + temp_status = file_error (_(" Cannot chown target file \"%s\" \n %s "), dst_path); if (temp_status == FILE_RETRY) continue; return temp_status; } #endif #ifndef __os2__ - while (file_mask_preserve && - (mc_chmod (dst_path, sb.st_mode & file_mask_umask_kill) < 0)){ + while (ctx->preserve && + (mc_chmod (dst_path, sb.st_mode & ctx->umask_kill) < 0)){ temp_status = file_error (_(" Cannot chmod target file \"%s\" \n %s "), dst_path); if (temp_status == FILE_RETRY) continue; @@ -665,32 +596,30 @@ return FILE_CONT; } } - + gettimeofday (&tv_transfer_start, (struct timezone *) NULL); while ((src_desc = mc_open (src_path, O_RDONLY | O_LINEAR)) < 0){ - return_status = file_error - (_(" Cannot open source file \"%s\" \n %s "), src_path); + return_status = file_error (_(" Cannot open source file \"%s\" \n %s "), src_path); if (return_status == FILE_RETRY) continue; - file_progress_do_append = 0; + ctx->do_append = 0; return return_status; } resources |= 1; - if (file_progress_do_reget){ - if (mc_lseek (src_desc, file_progress_do_reget, SEEK_SET) != file_progress_do_reget){ + if (ctx->do_reget){ + if (mc_lseek (src_desc, ctx->do_reget, SEEK_SET) != ctx->do_reget){ message_1s (1, _(" Warning "), _(" Reget failed, about to overwrite file ")); - file_progress_do_reget = file_progress_do_append = 0; + ctx->do_reget = ctx->do_append = 0; } } - + while (mc_fstat (src_desc, &sb)){ - return_status = file_error - (_(" Cannot fstat source file \"%s\" \n %s "), src_path); + return_status = file_error (_(" Cannot fstat source file \"%s\" \n %s "), src_path); if (return_status == FILE_RETRY) continue; - file_progress_do_append = 0; + ctx->do_append = 0; goto ret; } src_mode = sb.st_mode; @@ -707,34 +636,32 @@ here, btw. Imagine copying to /tmp and symlink attack :-( */ while ((dest_desc = mc_open (dst_path, O_WRONLY | - (file_progress_do_append ? O_APPEND : (O_CREAT | O_TRUNC)), 0600)) < 0){ - return_status = file_error - (_(" Cannot create target file \"%s\" \n %s "), dst_path); + (ctx->do_append ? O_APPEND : (O_CREAT | O_TRUNC)), 0600)) < 0){ + return_status = file_error (_(" Cannot create target file \"%s\" \n %s "), dst_path); if (return_status == FILE_RETRY) continue; - file_progress_do_append = 0; + ctx->do_append = 0; goto ret; } resources |= 2; /* dst_path exists/dst_path opened */ resources |= 4; /* remove short file */ - appending = file_progress_do_append; - file_progress_do_append = 0; + appending = ctx->do_append; + ctx->do_append = 0; /* Find out the optimal buffer size. */ while (mc_fstat (dest_desc, &sb)){ - return_status = file_error - (_(" Cannot fstat target file \"%s\" \n %s "), dst_path); + return_status = file_error (_(" Cannot fstat target file \"%s\" \n %s "), dst_path); if (return_status == FILE_RETRY) continue; goto ret; } buf = (char *) xmalloc (buf_size, "copy_file_file"); - file_progress_eta_secs = 0.0; - file_progress_bps = 0; + ctx->eta_secs = 0.0; + ctx->bps = 0; - return_status = file_progress_show (0, file_size); + return_status = file_progress_show (ctx, 0, file_size); mc_refresh (); @@ -748,7 +675,7 @@ char *stalled_msg; tv_last_update = tv_transfer_start; - + for (;;){ /* src_read */ if (mc_ctl (src_desc, MCCTL_IS_NOTREADY, 0)) @@ -785,7 +712,8 @@ n_read -= n_written; continue; } - return_status = file_error(_(" Cannot write target file \"%s\" \n %s "), dst_path); + return_status = file_error(_(" Cannot write target file \"%s\" \n %s "), + dst_path); if (return_status == FILE_RETRY) continue; goto ret; @@ -809,40 +737,39 @@ /* 3. Compute ETA */ if (secs > 2){ dt = (tv_current.tv_sec - tv_transfer_start.tv_sec); - + if (n_read_total){ - file_progress_eta_secs = ((dt / (double) n_read_total) * file_size) - dt; - file_progress_bps = n_read_total / ((dt < 1) ? 1 : dt); + ctx->eta_secs = ((dt / (double) n_read_total) * file_size) - dt; + ctx->bps = n_read_total / ((dt < 1) ? 1 : dt); } else - file_progress_eta_secs = 0.0; + ctx->eta_secs = 0.0; } /* 4. Compute BPS rate */ if (secs > 2){ - file_progress_bps_time = (tv_current.tv_sec - tv_transfer_start.tv_sec); - if (file_progress_bps_time < 1) - file_progress_bps_time = 1; - file_progress_bps = n_read_total / file_progress_bps_time; + ctx->bps_time = (tv_current.tv_sec - tv_transfer_start.tv_sec); + if (ctx->bps_time < 1) + ctx->bps_time = 1; + ctx->bps = n_read_total / ctx->bps_time; } - file_progress_set_stalled_label (stalled_msg); + file_progress_set_stalled_label (ctx, stalled_msg); - return_status = file_progress_show (n_read_total, file_size); + return_status = file_progress_show (ctx, n_read_total, file_size); mc_refresh (); if (return_status != FILE_CONT) goto ret; } } - + resources &= ~4; /* copy successful, don't remove target file */ -ret: + ret: if (buf) free (buf); - + while ((resources & 1) && mc_close (src_desc) < 0){ - temp_status = file_error - (_(" Cannot close source file \"%s\" \n %s "), src_path); + temp_status = file_error (_(" Cannot close source file \"%s\" \n %s "), src_path); if (temp_status == FILE_RETRY) continue; if (temp_status == FILE_ABORT) @@ -851,24 +778,24 @@ } while ((resources & 2) && mc_close (dest_desc) < 0){ - temp_status = file_error - (_(" Cannot close target file \"%s\" \n %s "), dst_path); + temp_status = file_error (_(" Cannot close target file \"%s\" \n %s "), dst_path); if (temp_status == FILE_RETRY) continue; return_status = temp_status; break; } - + if (resources & 4){ /* Remove short file */ int result; - result = query_dialog ("Copy", _("Incomplete file was retrieved. Keep it?"), D_ERROR, 2, _("&Delete"), _("&Keep")); + result = query_dialog (_("Copy"), _("Incomplete file was retrieved. Keep it?"), + D_ERROR, 2, _("&Delete"), _("&Keep")); if (!result) mc_unlink (dst_path); } else if (resources & (2|8)){ /* no short file and destination file exists */ #ifndef OS2_NT - if (!appending && file_mask_preserve_uidgid){ + if (!appending && ctx->preserve_uidgid){ while (mc_chown (dst_path, src_uid, src_gid)){ temp_status = file_error (_(" Cannot chown target file \"%s\" \n %s "), dst_path); @@ -884,25 +811,22 @@ * .ado: according to the XPG4 standard, the file must be closed before * chmod can be invoked */ - retry_dst_chmod: - if (!appending && mc_chmod (dst_path, src_mode & file_mask_umask_kill)){ - temp_status = file_error - (_(" Cannot chmod target file \"%s\" \n %s "), dst_path); + retry_dst_chmod: + if (!appending && mc_chmod (dst_path, src_mode & ctx->umask_kill)){ + temp_status = file_error (_(" Cannot chmod target file \"%s\" \n %s "), dst_path); if (temp_status == FILE_RETRY) goto retry_dst_chmod; return_status = temp_status; } - - if (!appending && file_mask_preserve) + + if (!appending && ctx->preserve) mc_utime (dst_path, &utb); } if (return_status == FILE_CONT) - return_status = progress_update_one ( - progress_count, - progress_bytes, - file_size, is_toplevel_file); - + return_status = progress_update_one (ctx, progress_count, progress_bytes, + file_size, is_toplevel_file); + return return_status; } @@ -913,7 +837,7 @@ /* FIXME: This function needs to check the return values of the function calls */ int -copy_dir_dir (char *s, char *d, int toplevel, +copy_dir_dir (FileOpContext *ctx, char *s, char *d, int toplevel, int move_over, int delete, struct link *parent_dirs, long *progress_count, @@ -933,13 +857,13 @@ /* First get the mode of the source dir */ retry_src_stat: - if ((*file_mask_xstat) (s, &cbuf)){ + if ((* ctx->stat_func) (s, &cbuf)){ return_status = file_error (_(" Cannot stat source directory \"%s\" \n %s "), s); if (return_status == FILE_RETRY) goto retry_src_stat; return return_status; } - + if (is_in_linklist (dest_dirs, s, &cbuf)){ /* Don't copy a directory we created before (we don't want to copy infinitely if a directory is copied into itself) */ @@ -951,7 +875,7 @@ /* FIXME: In this step we should do something in case the destination already exist */ /* Check the hardlinks */ - if (file_mask_preserve && cbuf.st_nlink > 1 && check_hardlinks (s, d, &cbuf) == 1){ + if (ctx->preserve && cbuf.st_nlink > 1 && check_hardlinks (s, d, &cbuf) == 1){ /* We have made a hardlink - no more processing is necessary */ return return_status; } @@ -962,13 +886,13 @@ goto retry_src_stat; return return_status; } - + if (is_in_linklist (parent_dirs, s, &cbuf)){ /* we found a cyclic symbolic link */ message_2s (1, MSG_ERROR, _(" Cannot copy cyclic symbolic link \n `%s' "), s); return FILE_SKIP; } - + lp = xmalloc (sizeof (struct link), "parent_dirs"); lp->vfs = vfs_type (s); lp->ino = cbuf.st_ino; @@ -1007,7 +931,7 @@ * It's a documented feature (option `Dive into subdir if exists' in the * copy/move dialog). -Norbert */ - if (toplevel && dive_into_subdirs){ + if (toplevel && ctx->dive_into_subdirs){ dest_dir = concat_dir_and_file (d, x_basename (s)); } else #endif @@ -1017,13 +941,13 @@ } } retry_dst_mkdir: - if (my_mkdir (dest_dir, (cbuf.st_mode & file_mask_umask_kill) | S_IRWXU)){ + if (my_mkdir (dest_dir, (cbuf.st_mode & ctx->umask_kill) | S_IRWXU)){ return_status = file_error (_(" Cannot create target directory \"%s\" \n %s "), dest_dir); if (return_status == FILE_RETRY) goto retry_dst_mkdir; goto ret; } - + lp = xmalloc (sizeof (struct link), "dest_dirs"); mc_stat (dest_dir, &buf); lp->vfs = vfs_type (dest_dir); @@ -1031,13 +955,12 @@ lp->dev = buf.st_dev; lp->next = dest_dirs; dest_dirs = lp; - + #ifndef OS2_NT - if (file_mask_preserve_uidgid){ - retry_dst_chown: + if (ctx->preserve_uidgid){ + retry_dst_chown: if (mc_chown (dest_dir, cbuf.st_uid, cbuf.st_gid)){ - return_status = file_error - (_(" Cannot chown target directory \"%s\" \n %s "), dest_dir); + return_status = file_error (_(" Cannot chown target directory \"%s\" \n %s "), dest_dir); if (return_status == FILE_RETRY) goto retry_dst_chown; goto ret; @@ -1050,7 +973,7 @@ if ((reading = mc_opendir (s)) == 0){ goto ret; } - + while ((next = mc_readdir (reading)) && return_status != FILE_ABORT){ /* * Now, we don't want '.' and '..' to be created / copied at any time @@ -1062,8 +985,8 @@ /* get the filename and add it to the src directory */ path = concat_dir_and_file (s, next->d_name); - - (*file_mask_xstat)(path, &buf); + + (* ctx->stat_func) (path, &buf); if (S_ISDIR (buf.st_mode)){ mdpath = concat_dir_and_file (dest_dir, next->d_name); /* @@ -1072,19 +995,17 @@ * dir already exists. So, we give the recursive call the flag 0 * meaning no toplevel. */ - return_status = copy_dir_dir ( - path, mdpath, 0, 0, delete, parent_dirs, - progress_count, progress_bytes); + return_status = copy_dir_dir (ctx, path, mdpath, 0, 0, + delete, parent_dirs, progress_count, progress_bytes); free (mdpath); } else { dest_file = concat_dir_and_file (dest_dir, x_basename (path)); - return_status = copy_file_file ( - path, dest_file, 1, - progress_count, progress_bytes, 0); + return_status = copy_file_file (ctx, path, dest_file, 1, + progress_count, progress_bytes, 0); free (dest_file); - } + } if (delete && return_status == FILE_CONT){ - if (erase_at_end){ + if (ctx->erase_at_end){ static struct link *tail; lp = xmalloc (sizeof (struct link) + strlen (path), "erase_list"); strcpy (lp->name, path); @@ -1097,12 +1018,12 @@ erase_list = tail = lp; } else { if (S_ISDIR (buf.st_mode)){ - return_status = erase_dir_iff_empty (path); + return_status = erase_dir_iff_empty (ctx, path); } else - return_status = erase_file (path, 0, 0, 0); + return_status = erase_file (ctx, path, 0, 0, 0); } } - + #ifdef __os2__ /* The OS/2 mc_readdir returns a block of memory DIR * next should be freed: .ado @@ -1113,11 +1034,11 @@ free (path); } mc_closedir (reading); - + /* .ado: Directories can not have permission set in OS/2 */ #ifndef __os2__ - if (file_mask_preserve){ - mc_chmod (dest_dir, cbuf.st_mode & file_mask_umask_kill); + if (ctx->preserve){ + mc_chmod (dest_dir, cbuf.st_mode & ctx->umask_kill); utb.actime = cbuf.st_atime; utb.modtime = cbuf.st_mtime; mc_utime(dest_dir, &utb); @@ -1135,16 +1056,13 @@ /* {{{ Move routines */ int -move_file_file (char *s, - char *d, - long *progress_count, - double *progress_bytes) +move_file_file (FileOpContext *ctx, char *s, char *d, long *progress_count, double *progress_bytes) { struct stat src_stats, dst_stats; int return_status = FILE_CONT; - if (file_progress_show_source (s) == FILE_ABORT - || file_progress_show_target (d) == FILE_ABORT) + if (file_progress_show_source (ctx, s) == FILE_ABORT + || file_progress_show_target (ctx, d) == FILE_ABORT) return FILE_ABORT; mc_refresh (); @@ -1187,16 +1105,16 @@ } if (confirm_overwrite){ - return_status = query_replace (d, &src_stats, &dst_stats); + return_status = query_replace (ctx, d, &src_stats, &dst_stats); if (return_status != FILE_CONT) return return_status; } /* Ok to overwrite */ } - if (!file_progress_do_append){ - if (S_ISLNK (src_stats.st_mode) && file_mask_stable_symlinks){ - if ((return_status = make_symlink (s, d)) == FILE_CONT) + if (!ctx->do_append) { + if (S_ISLNK (src_stats.st_mode) && ctx->stable_symlinks) { + if ((return_status = make_symlink (ctx, s, d)) == FILE_CONT) goto retry_src_remove; else return return_status; @@ -1222,13 +1140,12 @@ #endif /* Failed because filesystem boundary -> copy the file instead */ - return_status = copy_file_file (s, d, 0, - progress_count, progress_bytes, 1); + return_status = copy_file_file (ctx, s, d, 0, progress_count, progress_bytes, 1); if (return_status != FILE_CONT) return return_status; - if ((return_status = file_progress_show_source (NULL)) != FILE_CONT - || (return_status = file_progress_show (0, 0)) != FILE_CONT) + if ((return_status = file_progress_show_source (ctx, NULL)) != FILE_CONT + || (return_status = file_progress_show (ctx, 0, 0)) != FILE_CONT) return return_status; mc_refresh (); @@ -1242,14 +1159,15 @@ } if (return_status == FILE_CONT) - return_status = progress_update_one (progress_count, - progress_bytes, src_stats.st_size, 1); - + return_status = progress_update_one (ctx, + progress_count, + progress_bytes, src_stats.st_size, 1); + return return_status; } int -move_dir_dir (char *s, char *d, long *progress_count, double *progress_bytes) +move_dir_dir (FileOpContext *ctx, char *s, char *d, long *progress_count, double *progress_bytes) { struct stat sbuf, dbuf, destbuf; struct link *lp; @@ -1257,8 +1175,8 @@ int return_status; int move_over = 0; - if (file_progress_show_source (s) == FILE_ABORT || - file_progress_show_target (d) == FILE_ABORT) + if (file_progress_show_source (ctx, s) == FILE_ABORT || + file_progress_show_target (ctx, d) == FILE_ABORT) return FILE_ABORT; mc_refresh (); @@ -1266,7 +1184,7 @@ mc_stat (s, &sbuf); if (mc_stat (d, &dbuf)) destdir = copy_strings (d, 0); /* destination doesn't exist */ - else if (!dive_into_subdirs){ + else if (!ctx->dive_into_subdirs){ destdir = copy_strings (d, 0); move_over = 1; } else @@ -1276,10 +1194,9 @@ retry_dst_stat: if (!mc_stat (destdir, &destbuf)){ if (move_over){ - return_status = copy_dir_dir ( - s, destdir, 0, 1, 1, 0, - progress_count, progress_bytes); - + return_status = copy_dir_dir (ctx, s, destdir, 0, 1, 1, 0, + progress_count, progress_bytes); + if (return_status != FILE_CONT) goto ret; goto oktoret; @@ -1294,7 +1211,7 @@ free (destdir); return return_status; } - + retry_rename: if (mc_rename (s, destdir) == 0){ return_status = FILE_CONT; @@ -1302,11 +1219,11 @@ } /* .ado: Drive, Do we need this anymore? */ #ifdef WIN32 - else { + else { /* EXDEV: cross device; does not work everywhere */ - if (toupper(s[0]) != toupper(destdir[0])) - goto w32try; - } + if (toupper(s[0]) != toupper(destdir[0])) + goto w32try; + } #endif if (errno != EXDEV){ @@ -1315,31 +1232,32 @@ goto retry_rename; goto ret; } - -w32try: +#ifdef WIN32 + w32try: +#endif /* Failed because of filesystem boundary -> copy dir instead */ - return_status = copy_dir_dir (s, destdir, 0, 0, 1, 0, progress_count, progress_bytes); - + return_status = copy_dir_dir (ctx, s, destdir, 0, 0, 1, 0, progress_count, progress_bytes); + if (return_status != FILE_CONT) goto ret; -oktoret: - if ((return_status = file_progress_show_source (NULL)) != FILE_CONT - || (return_status = file_progress_show (0, 0)) != FILE_CONT) + oktoret: + if ((return_status = file_progress_show_source (ctx, NULL)) != FILE_CONT + || (return_status = file_progress_show (ctx, 0, 0)) != FILE_CONT) goto ret; mc_refresh (); - if (erase_at_end){ - for ( ; erase_list && return_status != FILE_ABORT; ){ + if (ctx->erase_at_end){ + for (; erase_list && return_status != FILE_ABORT;){ if (S_ISDIR (erase_list->st_mode)){ - return_status = erase_dir_iff_empty (erase_list->name); + return_status = erase_dir_iff_empty (ctx, erase_list->name); } else - return_status = erase_file (erase_list->name, 0, 0, 0); + return_status = erase_file (ctx, erase_list->name, 0, 0, 0); lp = erase_list; erase_list = erase_list->next; free (lp); } } - erase_dir_iff_empty (s); + erase_dir_iff_empty (ctx, s); ret: free (destdir); @@ -1356,18 +1274,16 @@ /* {{{ Erase routines */ /* Don't update progress status if progress_count==NULL */ int -erase_file (char *s, - long *progress_count, - double *progress_bytes, - int is_toplevel_file) +erase_file (FileOpContext *ctx, char *s, long *progress_count, double *progress_bytes, + int is_toplevel_file) { int return_status; struct stat buf; - if (file_progress_show_deleting (s) == FILE_ABORT) + if (file_progress_show_deleting (ctx, s) == FILE_ABORT) return FILE_ABORT; mc_refresh (); - + if (progress_count && mc_stat (s, &buf)) { /* ignore, most likely the mc_unlink fails, too */ buf.st_size = 0; @@ -1379,15 +1295,14 @@ return return_status; } if (progress_count) - return progress_update_one ( - progress_count, progress_bytes, - buf.st_size, is_toplevel_file); + return progress_update_one (ctx, progress_count, progress_bytes, buf.st_size, + is_toplevel_file); else return FILE_CONT; } static int -recursive_erase (char *s, long *progress_count, double *progress_bytes) +recursive_erase (FileOpContext *ctx, char *s, long *progress_count, double *progress_bytes) { struct dirent *next; struct stat buf; @@ -1397,12 +1312,12 @@ if (!strcmp (s, "..")) return 1; - + reading = mc_opendir (s); - + if (!reading) return 1; - + while ((next = mc_readdir (reading)) && return_status == FILE_CONT){ if (!strcmp (next->d_name, ".")) continue; @@ -1414,10 +1329,10 @@ return 1; } if (S_ISDIR (buf.st_mode)) - return_status = (recursive_erase (path, progress_count, progress_bytes) != FILE_CONT); + return_status = (recursive_erase (ctx, path, progress_count, progress_bytes) + != FILE_CONT); else - return_status = erase_file ( - path, progress_count, progress_bytes, 0); + return_status = erase_file (ctx, path, progress_count, progress_bytes, 0); free (path); /* .ado: OS/2 returns a block of memory DIR to next and must be freed */ #ifdef __os2__ @@ -1428,7 +1343,7 @@ mc_closedir (reading); if (return_status != FILE_CONT) return return_status; - if (file_progress_show_deleting (s) == FILE_ABORT) + if (file_progress_show_deleting (ctx, s) == FILE_ABORT) return FILE_ABORT; mc_refresh (); retry_rmdir: @@ -1467,7 +1382,7 @@ } int -erase_dir (char *s, long *progress_count, double *progress_bytes) +erase_dir (FileOpContext *ctx, char *s, long *progress_count, double *progress_bytes) { int error; @@ -1477,7 +1392,7 @@ if (strcmp (s, ".") == 0) return FILE_SKIP; - if (file_progress_show_deleting (s) == FILE_ABORT) + if (file_progress_show_deleting (ctx, s) == FILE_ABORT) return FILE_ABORT; mc_refresh (); @@ -1490,9 +1405,9 @@ */ error = check_dir_is_empty (s); if (error == 0){ /* not empty */ - error = query_recursive (s); + error = query_recursive (ctx, s); if (error == FILE_CONT) - return recursive_erase (s, progress_count, progress_bytes); + return recursive_erase (ctx, s, progress_count, progress_bytes); else return error; } @@ -1509,7 +1424,7 @@ } int -erase_dir_iff_empty (char *s) +erase_dir_iff_empty (FileOpContext *ctx, char *s) { int error; @@ -1519,7 +1434,7 @@ if (strcmp (s, ".") == 0) return FILE_SKIP; - if (file_progress_show_deleting (s) == FILE_ABORT) + if (file_progress_show_deleting (ctx, s) == FILE_ABORT) return FILE_ABORT; mc_refresh (); @@ -1582,23 +1497,6 @@ return 0; } -/* Sets all global variables used by copy_file_file/move_file_file to a - resonable default - (file_mask_dialog sets these global variables interactively) - */ -void -file_mask_defaults (void) -{ - file_mask_stable_symlinks = 0; - file_mask_op_follow_links = 0; - dive_into_subdirs = 0; - file_mask_xstat = mc_lstat; - - file_mask_preserve = 1; - file_mask_umask_kill = 0777777; - file_mask_preserve_uidgid = (geteuid () == 0) ? 1 : 0; -} - /** * compute_dir_size: * @@ -1626,7 +1524,7 @@ continue; fullname = concat_dir_and_file (dirname, dirent->d_name); - + res = mc_lstat (fullname, &s); if (res != 0){ @@ -1648,7 +1546,7 @@ } free (fullname); } - + mc_closedir (dir); } @@ -1664,13 +1562,13 @@ panel_compute_totals (WPanel *panel, long *ret_marked, double *ret_total) { int i; - + *ret_marked = 0; *ret_total = 0.0; for (i = 0; i < panel->count; i++){ struct stat *s; - + if (!panel->dir.list [i].f.marked) continue; @@ -1694,6 +1592,146 @@ } } +/* + * This array introduced to avoid translation problems. The former (op_names) + * is assumed to be nouns, suitable in dialog box titles; this one should + * contain whatever is used in prompt itself (i.e. in russian, it's verb). + * Notice first symbol - it is to fool gettext and force these strings to + * be different for it. First symbol is skipped while building a prompt. + * (I don't use spaces around the words, because someday they could be + * dropped, when widgets get smarter) + */ +static char *op_names1 [] = { N_("1Copy"), N_("1Move"), N_("1Delete") }; +#define FMD_XLEN 64 + +int fmd_xlen = FMD_XLEN; +/* + * These are formats for building a prompt. Parts encoded as follows: + * %o - operation from op_names1 + * %f - file/files or files/directories, as appropriate + * %m - "with source mask" or question mark for delete + * %s - source name (truncated) + * %d - number of marked files + * %e - "to:" or question mark for delete + */ + +#ifndef HAVE_GNOME +static char* one_format = N_("%o %f \"%s\"%m"); +static char* many_format = N_("%o %d %f%m"); +#else +static char* one_format = N_("%o %f \"%s\"%e"); +static char* many_format = N_("%o %d %f%e"); +#endif +static char* prompt_parts [] = +{ + N_("file"), N_("files"), N_("directory"), N_("directories"), + N_("files/directories"), N_(" with source mask:"), N_(" to:") +}; + +static char * +panel_operate_generate_prompt (char* cmd_buf, WPanel* panel, int operation, int only_one, + struct stat* src_stat) +{ + register char *sp, *cp; + register int i; + char format_string [200]; + char *dp = format_string; + char* source = NULL; + +#ifdef ENABLE_NLS + static int i18n_flag = 0; + if (!i18n_flag) + { + fmd_init_i18n (FALSE); /* to get proper fmd_xlen */ + + for (i = sizeof (op_names1) / sizeof (op_names1 [0]); i--;) + op_names1 [i] = _(op_names1 [i]); + + for (i = sizeof (prompt_parts) / sizeof (prompt_parts [0]); i--;) + prompt_parts [i] = _(prompt_parts [i]); + + one_format = _(one_format); + many_format = _(many_format); + i18n_flag = 1; + } +#endif /* ENABLE_NLS */ + + sp = only_one ? one_format : many_format; + + if (only_one) + source = panel_get_file (panel, src_stat); + + while (*sp) + { + switch (*sp) + { + case '%': + cp = NULL; + switch (sp[1]) + { + case 'o': + cp = op_names1 [operation] + 1; + break; + case 'm': + cp = operation == OP_DELETE ? "?" : prompt_parts [5]; + break; + case 'e': + cp = operation == OP_DELETE ? "?" : prompt_parts [6]; + break; + case 'f': + if (only_one) + { + cp = S_ISDIR (src_stat->st_mode) ? + prompt_parts [2] : prompt_parts [0]; + } + else + { + cp = (panel->marked == panel->dirs_marked) + ? prompt_parts [3] + : (panel->dirs_marked ? prompt_parts [4] + : prompt_parts [1]); + } + break; + default: + *dp++ = *sp++; + } + if (cp) + { + sp += 2; + while (*cp) + *dp++ = *cp++; + } + break; + default: + *dp++ = *sp++; + } + } + *dp = '\0'; + + if (only_one) + { + i = fmd_xlen - strlen(format_string) - 4; + sprintf (cmd_buf, format_string, name_trunc (source, i)); + } + else + { + sprintf (cmd_buf, format_string, panel->marked); + i = strlen (cmd_buf) + 6 - fmd_xlen; + if (i > 0) + { + fmd_xlen += i; + fmd_init_i18n (TRUE); /* to recalculate positions of child widgets */ + } + } + + return source; +} + +#ifdef HAVE_GNOME +extern FileProgressStatus file_progress_query_replace_policy (FileOpContext *ctx, + gboolean dialog_needed); +#endif + /** * panel_operate: * @@ -1703,8 +1741,8 @@ * Returns 1 if did change the directory * structure, Returns 0 if user aborted */ -static int -panel_operate_flags (void *source_panel, FileOperation operation, char *thedefault, int ask_user) +int +panel_operate (void *source_panel, FileOperation operation, char *thedefault, int ask_user) { WPanel *panel = source_panel; #ifdef WITH_FULL_PATHS @@ -1719,6 +1757,7 @@ int only_one = (get_current_type () == view_tree) || (panel->marked <= 1); struct stat src_stat, dst_stat; int i, value; + FileOpContext *ctx; long count = 0; double bytes = 0; @@ -1726,22 +1765,27 @@ int dst_result; int do_bg; /* do background operation? */ + ctx = file_op_context_new (); + do_bg = 0; - file_mask_rx.buffer = NULL; + ctx->rx.buffer = NULL; free_linklist (&linklist); free_linklist (&dest_dirs); if (get_current_type () == view_listing) if (!panel->marked && !strcmp (selection (panel)->fname, "..")){ message (1, MSG_ERROR, _(" Can't operate on \"..\"! ")); + file_op_context_destroy (ctx); return 0; } - - if (operation < OP_COPY || operation > OP_DELETE) + + if (operation < OP_COPY || operation > OP_DELETE) { + file_op_context_destroy (ctx); return 0; - + } + /* Generate confirmation prompt */ - source = panel_operate_generate_prompt (cmd_buf, panel, operation, only_one, &src_stat); - + source = panel_operate_generate_prompt (cmd_buf, panel, operation, only_one, &src_stat); + /* Show confirmation dialog */ if (operation == OP_DELETE && confirm_delete){ if (know_not_what_am_i_doing) @@ -1753,41 +1797,44 @@ i = query_dialog (_(op_names [operation]), cmd_buf, D_ERROR, 2, _("&Yes"), _("&No")); #endif - if (i != 0) + if (i != 0) { + file_op_context_destroy (ctx); return 0; + } } else if (operation != OP_DELETE){ - file_mask_rx.buffer = (char *) xmalloc (MC_MAXPATHLEN, "mask copying"); - file_mask_rx.allocated = MC_MAXPATHLEN; - file_mask_rx.translate = 0; - + ctx->rx.buffer = (char *) xmalloc (MC_MAXPATHLEN, "mask copying"); + ctx->rx.allocated = MC_MAXPATHLEN; + ctx->rx.translate = 0; + if (ask_user){ char *dest_dir; - + if (thedefault != NULL) dest_dir = thedefault; else if (get_other_type () == view_listing) dest_dir = opanel->cwd; else dest_dir = panel->cwd; - - dest = file_mask_dialog (operation, cmd_buf, dest_dir, only_one, &do_bg); + + dest = file_mask_dialog (ctx, operation, cmd_buf, dest_dir, only_one, &do_bg); if (!dest){ - free (file_mask_rx.buffer); + free (ctx->rx.buffer); + file_op_context_destroy (ctx); return 0; } if (!*dest){ - free (file_mask_rx.buffer); + free (ctx->rx.buffer); + file_op_context_destroy (ctx); free (dest); return 0; } } else { char *all = "^\\(.*\\)$"; - - re_compile_pattern (all, strlen (all), &file_mask_rx); - file_mask_dest_mask = strdup ("*"); + + re_compile_pattern (all, strlen (all), &ctx->rx); + ctx->dest_mask = strdup ("*"); do_bg = FALSE; dest = strdup (thedefault); - file_mask_defaults (); } } @@ -1795,8 +1842,8 @@ /* Did the user select to do a background operation? */ if (do_bg){ int v; - - v = do_background (copy_strings (operation_names [operation], ": ", panel->cwd, 0)); + + v = do_background (ctx, copy_strings (_(operation_names [operation]), ": ", panel->cwd, 0)); if (v == -1){ message (1, MSG_ERROR, _(" Sorry, I could not put the job in background ")); } @@ -1805,6 +1852,7 @@ if (v == 1){ mc_setctl (panel->cwd, MCCTL_FORGET_ABOUT, NULL); mc_setctl (dest, MCCTL_FORGET_ABOUT, NULL); +/* file_op_context_destroy (ctx); */ return 0; } } @@ -1822,68 +1870,60 @@ if (mc_setctl (panel->cwd, MCCTL_WANT_STALE_DATA, NULL)) save_cwd = strdup(panel->cwd); } - + ftpfs_hint_reread (0); - + /* Now, let's do the job */ /* This code is only called by the tree and panel code */ if (only_one){ - /* We now have ETA in all cases */ - create_op_win (operation, 1); + /* We now have ETA in all cases */ + file_op_context_create_ui (ctx, operation, 1); /* One file: FIXME mc_chdir will take user out of any vfs */ if (operation != OP_COPY && get_current_type () == view_tree) mc_chdir (PATH_SEP_STR); - + /* The source and src_stat variables have been initialized before */ #ifdef WITH_FULL_PATHS source_with_path = concat_dir_and_file (panel->cwd, source); #endif - - if (operation == OP_DELETE) - { + + if (operation == OP_DELETE) { if (S_ISDIR (src_stat.st_mode)) - value = erase_dir (source_with_path, &count, &bytes); + value = erase_dir (ctx, source_with_path, &count, &bytes); else - value = erase_file (source_with_path, &count, &bytes, 1); - } - else - { - temp = transform_source (source_with_path); + value = erase_file (ctx, source_with_path, &count, &bytes, 1); + } else { + temp = transform_source (ctx, source_with_path); if (temp == NULL){ value = transform_error; - } - else - { + } else { temp = get_full_name (dest, temp); free (dest); dest = temp; temp = 0; - switch (operation){ + switch (operation) { case OP_COPY: /* * we use file_mask_op_follow_links only with OP_COPY, - */ - (*file_mask_xstat) (source_with_path, &src_stat); + */ + (* ctx->stat_func) (source_with_path, &src_stat); if (S_ISDIR (src_stat.st_mode)) - value = copy_dir_dir ( - source_with_path, dest, 1, 0, 0, 0, &count, &bytes); + value = copy_dir_dir (ctx, source_with_path, dest, 1, 0, 0, 0, + &count, &bytes); else - value = copy_file_file ( - source_with_path, dest, 1, &count, &bytes, 1); + value = copy_file_file (ctx, source_with_path, dest, 1, &count, &bytes, 1); break; case OP_MOVE: if (S_ISDIR (src_stat.st_mode)) - value = move_dir_dir ( - source_with_path, dest, &count, &bytes); + value = move_dir_dir (ctx, source_with_path, dest, &count, &bytes); else - value = move_file_file ( - source_with_path, dest, &count, &bytes); + value = move_file_file (ctx, source_with_path, dest, &count, &bytes); break; default: @@ -1895,18 +1935,20 @@ if (value == FILE_CONT) unmark_files (panel); - } else { /* Many files */ /* Need to determine this.*/ +#ifdef HAVE_GNOME int policy_over_write_necessary = 1; +#endif /* Check destination for copy or move operation */ if (operation != OP_DELETE){ retry_many_dst_stat: dst_result = mc_stat (dest, &dst_stat); if (dst_result == 0 && !S_ISDIR (dst_stat.st_mode)){ - if (file_error (_(" Destination \"%s\" must be a directory \n %s "), dest) == FILE_RETRY) + if (file_error (_(" Destination \"%s\" must be a directory \n %s "), + dest) == FILE_RETRY) goto retry_many_dst_stat; goto clean_up; } @@ -1914,15 +1956,13 @@ /* Initialize variables for progress bars */ if (operation != OP_MOVE && verbose && file_op_compute_totals) { - panel_compute_totals ( - panel, &file_progress_count, &file_progress_bytes); - file_progress_totals_computed = 1; + panel_compute_totals (panel, &ctx->progress_count, &ctx->progress_bytes); + ctx->progress_totals_computed = 1; } else { - file_progress_totals_computed = 0; - file_progress_count = panel->marked; - file_progress_bytes = panel->total; + ctx->progress_totals_computed = 0; + ctx->progress_count = panel->marked; + ctx->progress_bytes = panel->total; } - #ifdef HAVE_GNOME if (operation != OP_DELETE){ @@ -1930,20 +1970,19 @@ /* We need to pre-copy all the files and see if there are any * over-writes. Ugh, this sounds yucky. )-: */ if (policy_over_write_necessary) { - if (file_progress_query_replace_policy (TRUE) == FILE_ABORT) - goto clean_up; - else - /* this will initialize some variables */ - file_progress_query_replace_policy (FALSE); + if (file_progress_query_replace_policy (ctx, TRUE) == FILE_ABORT) + goto clean_up; + else + /* this will initialize some variables */ + file_progress_query_replace_policy (ctx, FALSE); } } #endif /* We now have ETA in all cases */ - create_op_win (operation, 1); - - /* Loop for every file, perform the actual copy operation */ - for (i = 0; i < panel->count; i++){ + file_op_context_create_ui (ctx, operation, 1); + /* Loop for every file, perform the actual copy operation */ + for (i = 0; i < panel->count; i++) { if (!panel->dir.list [i].f.marked) continue; /* Skip the unmarked ones */ @@ -1958,20 +1997,17 @@ if (operation == OP_DELETE){ if (S_ISDIR (src_stat.st_mode)) - value = erase_dir (source_with_path, &count, &bytes); + value = erase_dir (ctx, source_with_path, &count, &bytes); else - value = erase_file (source_with_path, &count, &bytes, 1); - } - else - { + value = erase_file (ctx, source_with_path, &count, &bytes, 1); + } else { if (temp) free (temp); - temp = transform_source (source_with_path); + temp = transform_source (ctx, source_with_path); if (temp == NULL) value = transform_error; - else - { + else { temp = get_full_name (dest, temp); switch (operation){ @@ -1979,36 +2015,28 @@ /* * we use file_mask_op_follow_links only with OP_COPY, */ - (*file_mask_xstat) (source_with_path, &src_stat); + (* ctx->stat_func) (source_with_path, &src_stat); if (S_ISDIR (src_stat.st_mode)) - value = copy_dir_dir ( - source_with_path, temp, 1, 0, 0, 0, - &count, &bytes); + value = copy_dir_dir (ctx, source_with_path, temp, 1, 0, 0, 0, + &count, &bytes); else - value = copy_file_file ( - source_with_path, temp, 1, - &count, &bytes, 1); + value = copy_file_file (ctx, source_with_path, temp, 1, + &count, &bytes, 1); free_linklist (&dest_dirs); break; case OP_MOVE: if (S_ISDIR (src_stat.st_mode)) - value = move_dir_dir ( - source_with_path, temp, - &count, &bytes); + value = move_dir_dir (ctx, source_with_path, temp, &count, &bytes); else - value = move_file_file ( - source_with_path, temp, - &count, &bytes); + value = move_file_file (ctx, source_with_path, temp, &count, &bytes); break; default: - message_1s (1, _(" Internal failure "), - _(" Unknown file operation ")); + message_1s (1, _(" Internal failure "), _(" Unknown file operation ")); goto clean_up; } } - } /* Copy or move operation */ if (value == FILE_ABORT) @@ -2017,15 +2045,13 @@ if (value == FILE_CONT) do_file_mark (panel, i, 0); - if (file_progress_show_count (count, file_progress_count) == FILE_ABORT) + if (file_progress_show_count (ctx, count, ctx->progress_count) == FILE_ABORT) goto clean_up; - if (verbose && - file_progress_show_bytes (bytes, file_progress_bytes) == FILE_ABORT) + if (verbose && file_progress_show_bytes (ctx, bytes, ctx->progress_bytes) == FILE_ABORT) goto clean_up; - if (operation != OP_DELETE && verbose - && file_progress_show (0, 0) == FILE_ABORT) + if (operation != OP_DELETE && verbose && file_progress_show (ctx, 0, 0) == FILE_ABORT) goto clean_up; mc_refresh (); @@ -2034,7 +2060,7 @@ clean_up: /* Clean up */ - destroy_op_win (); + if (save_cwd) { mc_setctl (save_cwd, MCCTL_NO_STALE_DATA, NULL); free(save_cwd); @@ -2058,37 +2084,27 @@ if (temp) free (temp); - if (file_mask_rx.buffer){ - free (file_mask_rx.buffer); - file_mask_rx.buffer = NULL; + if (ctx->rx.buffer) { + free (ctx->rx.buffer); + ctx->rx.buffer = NULL; } - if (file_mask_dest_mask){ - free (file_mask_dest_mask); - file_mask_dest_mask = NULL; + if (ctx->dest_mask) { + free (ctx->dest_mask); + ctx->dest_mask = NULL; } #ifdef WITH_BACKGROUND /* Let our parent know we are saying bye bye */ - if (we_are_background){ + if (we_are_background) { vfs_shut (); tell_parent (MSG_CHILD_EXITING); exit (1); } #endif - return 1; -} - -int -panel_operate_def (void *source_panel, FileOperation operation, char *thedefault) -{ - return panel_operate_flags (source_panel, operation, thedefault, FALSE); -} -int -panel_operate (void *source_panel, FileOperation operation, char *thedefault) -{ - return panel_operate_flags (source_panel, operation, thedefault, TRUE); + file_op_context_destroy (ctx); + return 1; } /* }}} */ @@ -2145,47 +2161,47 @@ } static int -real_query_recursive (enum OperationMode mode, char *s) +real_query_recursive (FileOpContext *ctx, enum OperationMode mode, char *s) { char *confirm, *text; - if (file_progress_recursive_result < RECURSIVE_ALWAYS){ + if (ctx->recursive_result < RECURSIVE_ALWAYS){ char *msg = mode == Foreground ? _("\n Directory not empty. \n Delete it recursively? ") : _("\n Background process: Directory not empty \n Delete it recursively? "); - text = copy_strings (" Delete: ", name_trunc (s, 30), " ", 0); + text = copy_strings (_(" Delete: "), name_trunc (s, 30), " ", 0); if (know_not_what_am_i_doing) query_set_sel (1); - file_progress_recursive_result = query_dialog (text, msg, D_ERROR, 5, - _("&Yes"), _("&No"), - _("a&ll"), _("non&E"), - _("&Abort")); + ctx->recursive_result = query_dialog (text, msg, D_ERROR, 5, + _("&Yes"), _("&No"), + _("a&ll"), _("non&E"), + _("&Abort")); - if (file_progress_recursive_result != RECURSIVE_ABORT) + if (ctx->recursive_result != RECURSIVE_ABORT) do_refresh (); free (text); if (know_not_what_am_i_doing){ - if (file_progress_recursive_result == RECURSIVE_YES || - file_progress_recursive_result == RECURSIVE_ALWAYS){ + if (ctx->recursive_result == RECURSIVE_YES || + ctx->recursive_result == RECURSIVE_ALWAYS){ text = copy_strings ( _(" Type 'yes' if you REALLY want to delete "), - file_progress_recursive_result == RECURSIVE_YES + ctx->recursive_result == RECURSIVE_YES ? name_trunc (s, 19) : _("all the directories "), " ", 0); confirm = input_dialog ( mode == Foreground ? _(" Recursive Delete ") : _(" Background process: Recursive Delete "), - text, "no"); + text, _("no")); do_refresh (); - if (!confirm || strcmp (confirm, "yes")) - file_progress_recursive_result = RECURSIVE_NEVER; + if (!confirm || strcmp (confirm, _("yes"))) + ctx->recursive_result = RECURSIVE_NEVER; free (confirm); free (text); } } } - switch (file_progress_recursive_result){ + switch (ctx->recursive_result){ case RECURSIVE_YES: case RECURSIVE_ALWAYS: return FILE_CONT; @@ -2202,47 +2218,55 @@ } #ifdef WITH_BACKGROUND -int +static int do_file_error (char *str) { - return call_1s (real_do_file_error, str); + if (we_are_background) + return parent_call (real_do_file_error, NULL, 1, strlen (str), str); + else + return real_do_file_error (Foreground, str); } -int -query_recursive (char *s) +static int +query_recursive (FileOpContext *ctx, char *s) { - return call_1s (real_query_recursive, s); + if (we_are_background) + return parent_call (real_query_recursive, ctx, 1, strlen (s), s); + else + return real_query_recursive (ctx, Foreground, s); } -int -query_replace (char *destname, struct stat *_s_stat, struct stat *_d_stat) +static int +query_replace (FileOpContext *ctx, char *destname, struct stat *_s_stat, struct stat *_d_stat) { if (we_are_background) return parent_call ((void *)file_progress_real_query_replace, + ctx, 3, strlen (destname), destname, sizeof (struct stat), _s_stat, sizeof(struct stat), _d_stat); else - return file_progress_real_query_replace (Foreground, destname, _s_stat, _d_stat); + return file_progress_real_query_replace (ctx, Foreground, destname, _s_stat, _d_stat); } #else +static int do_file_error (char *str) { return real_do_file_error (Foreground, str); } -int -query_recursive (char *s) +static int +query_recursive (FileOpContext *ctx, char *s) { - return real_query_recursive (Foreground, s); + return real_query_recursive (ctx, Foreground, s); } -int -query_replace (char *destname, struct stat *_s_stat, struct stat *_d_stat) +static int +query_replace (FileOpContext *ctx, char *destname, struct stat *_s_stat, struct stat *_d_stat) { - return file_progress_real_query_replace (Foreground, destname, _s_stat, _d_stat); + return file_progress_real_query_replace (ctx, Foreground, destname, _s_stat, _d_stat); } #endif @@ -2252,142 +2276,3 @@ Local variables: end: */ - -/* - * This array introduced to avoid translation problems. The former (op_names) - * is assumed to be nouns, suitable in dialog box titles; this one should - * contain whatever is used in prompt itself (i.e. in russian, it's verb). - * Notice first symbol - it is to fool gettext and force these strings to - * be different for it. First symbol is skipped while building a prompt. - * (I don't use spaces around the words, because someday they could be - * dropped, when widgets get smarter) - */ -static char *op_names1 [] = { N_("1Copy"), N_("1Move"), N_("1Delete") }; -#define FMD_XLEN 64 - -int fmd_xlen = FMD_XLEN, fmd_i18n_flag = 0; -/* - * These are formats for building a prompt. Parts encoded as follows: - * %o - operation from op_names1 - * %f - file/files or files/directories, as appropriate - * %m - "with source mask" or question mark for delete - * %s - source name (truncated) - * %d - number of marked files - * %e - "to:" or question mark for delete - */ - -#ifndef HAVE_GNOME -static char* one_format = N_("%o %f \"%s\"%m"); -static char* many_format = N_("%o %d %f%m"); -#else -static char* one_format = N_("%o %f \"%s\"%e"); -static char* many_format = N_("%o %d %f%e"); -#endif -static char* prompt_parts [] = -{ - N_("file"), N_("files"), N_("directory"), N_("directories"), - N_("files/directories"), N_(" with source mask:"), N_(" to:") -}; - -char* -panel_operate_generate_prompt (char* cmd_buf, WPanel* panel, int operation, int only_one, - struct stat* src_stat) -{ - register char *sp, *cp; - register int i; - char format_string [200]; - char *dp = format_string; - char* source = NULL; - -#ifdef ENABLE_NLS - static int i18n_flag = 0; - if (!i18n_flag) - { - if (!fmd_i18n_flag) - fmd_init_i18n(); /* to get proper fmd_xlen */ - - for (i = sizeof (op_names1) / sizeof (op_names1 [0]); i--;) - op_names1 [i] = _(op_names1 [i]); - - for (i = sizeof (prompt_parts) / sizeof (prompt_parts [0]); i--;) - prompt_parts [i] = _(prompt_parts [i]); - - one_format = _(one_format); - many_format = _(many_format); - i18n_flag = 1; - } -#endif /* ENABLE_NLS */ - - sp = only_one ? one_format : many_format; - - if (only_one) - source = panel_get_file (panel, src_stat); - - while (*sp) - { - switch (*sp) - { - case '%': - cp = NULL; - switch (sp[1]) - { - case 'o': - cp = op_names1 [operation] + 1; - break; - case 'm': - cp = operation == OP_DELETE ? "?" : prompt_parts [5]; - break; - case 'e': - cp = operation == OP_DELETE ? "?" : prompt_parts [6]; - break; - case 'f': - if (only_one) - { - cp = S_ISDIR (src_stat->st_mode) ? - prompt_parts [2] : prompt_parts [0]; - } - else - { - cp = (panel->marked == panel->dirs_marked) - ? prompt_parts [3] - : (panel->dirs_marked ? prompt_parts [4] - : prompt_parts [1]); - } - break; - default: - *dp++ = *sp++; - } - if (cp) - { - sp += 2; - while (*cp) - *dp++ = *cp++; - } - break; - default: - *dp++ = *sp++; - } - } - *dp = '\0'; - - if (only_one) - { - i = fmd_xlen - strlen(format_string) - 4; - sprintf (cmd_buf, format_string, name_trunc (source, i)); - } - else - { - sprintf (cmd_buf, format_string, panel->marked); - i = strlen (cmd_buf) + 6 - fmd_xlen; - if (i > 0) - { - fmd_xlen += i; - fmd_init_i18n(); /* to recalculate positions of child widgets */ - } - } - - return source; -} - - - diff -ruN old/mc-4.5.7/src/file.h new/mc-4.5.9/src/file.h --- old/mc-4.5.7/src/file.h Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/src/file.h Mon Jan 18 17:44:10 1999 @@ -1,23 +1,9 @@ #ifndef __FILE_H #define __FILE_H +#include "fileopctx.h" #include "background.h" -typedef enum { - OP_COPY, - OP_MOVE, - OP_DELETE -} FileOperation; - -extern char *op_names [3]; - -typedef enum { - FILE_CONT, - FILE_RETRY, - FILE_SKIP, - FILE_ABORT -} FileProgressStatus; - enum { RECURSIVE_YES, RECURSIVE_NO, @@ -30,66 +16,36 @@ struct link; -int copy_file_file (char *s, char *d, int ask_overwrite, +int copy_file_file (FileOpContext *ctx, char *s, char *d, int ask_overwrite, long *progres_count, double *progress_bytes, int is_toplevel_file); -int move_file_file (char *s, char *d, +int move_file_file (FileOpContext *ctx, char *s, char *d, long *progres_count, double *progress_bytes); -int move_dir_dir (char *s, char *d, +int move_dir_dir (FileOpContext *ctx, char *s, char *d, long *progres_count, double *progress_bytes); -int copy_dir_dir (char *s, char *d, int toplevel, int move_over, +int copy_dir_dir (FileOpContext *ctx, char *s, char *d, int toplevel, int move_over, int delete, struct link *parent_dirs, long *progres_count, double *progress_bytes); -int erase_dir (char *s, long *progres_count, double *progress_bytes); -int erase_file (char *s, long *progress_count, double *progress_bytes, int is_toplevel_file); -int erase_dir_iff_empty (char *s); - -/* - * Manually creating the copy/move/delte dialogs - */ -void create_op_win (FileOperation op, int with_eta); -void destroy_op_win (void); -void refresh_op_win (void); +int erase_dir (FileOpContext *ctx, char *s, long *progres_count, double *progress_bytes); +int erase_file (FileOpContext *ctx, char *s, long *progress_count, double *progress_bytes, + int is_toplevel_file); +int erase_dir_iff_empty (FileOpContext *ctx, char *s); + int panel_operate (void *source_panel, FileOperation op, - char *thedefault); -int panel_operate_def (void *source_panel, FileOperation op, - char *thedefault); -void file_mask_defaults (void); -char *file_mask_dialog (FileOperation operation, char *text, char *def_text, + char *thedefault, int ask_user); +char *file_mask_dialog (FileOpContext *ctx, FileOperation operation, char *text, char *def_text, int only_one, int *do_background); -#ifdef WANT_WIDGETS -char *panel_operate_generate_prompt (char* cmd_buf, - WPanel* panel, - int operation, int only_one, - struct stat* src_stat); -#endif - -extern int dive_into_subdirs; extern int file_op_compute_totals; /* Error reporting routines */ - /* Skip/Retry/Abort routine */ - int do_file_error (char *error); - /* Report error with one file */ int file_error (char *format, char *file); /* Report error with two files */ int files_error (char *format, char *file1, char *file2); - /* This one just displays buf */ - int do_file_error (char *buf); - /* Query routines */ - /* Replace existing file */ - int query_replace (char *destname, struct stat *_s_stat, struct stat *_d_stat); - - /* Query recursive delete */ - int query_recursive (char *s); - -/* Callback routine for background activity */ -int background_attention (int fd, void *info); extern int background_wait; diff -ruN old/mc-4.5.7/src/filegui.c new/mc-4.5.9/src/filegui.c --- old/mc-4.5.7/src/filegui.c Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/src/filegui.c Mon Jan 18 17:44:11 1999 @@ -83,6 +83,7 @@ #endif /* SCO_FLAVOR */ #include #include +#include #include "mad.h" #include "regex.h" #include "setup.h" @@ -99,13 +100,13 @@ #include "layout.h" #include "widget.h" #include "wtools.h" -#include "background.h" /* Needed for current_panel, other_panel and WTree */ #include "dir.h" #include "panel.h" #include "file.h" #include "filegui.h" +#include "fileopctx.h" #include "tree.h" #include "key.h" #include "../vfs/vfs.h" @@ -114,36 +115,44 @@ /* }}} */ -/* Describe the components in the panel operations window */ -static WLabel *FileLabel [2]; -static WLabel *FileString [2]; -static WLabel *ProgressLabel [3]; -static WGauge *ProgressGauge [3]; -static WLabel *eta_label; -static WLabel *bps_label; -static WLabel *stalled_label; - -/* Replace dialog: color set, descriptor and filename */ -static int replace_colors [4]; -static Dlg_head *replace_dlg; -int showing_eta; -int showing_bps; +/* This structure describes the UI and internal data required by a file + * operation context. + */ +typedef struct { + /* ETA and bps */ -/* With ETA on we have extra screen space */ -int eta_extra = 0; + int showing_eta; + int showing_bps; + int eta_extra; -/* Used to save the hint line */ -static int last_hint_line; + /* Dialog and widgets for the operation progress window */ -static int selected_button; -static int last_percentage [3]; + Dlg_head *op_dlg; -/* The value of the "preserve Attributes" checkbox in the copy file dialog. - * We can't use the value of "preserve" because it can change in order to - * preserve file attributs when moving files across filesystem boundaries - * (we want to keep the value of the checkbox between copy operations). - */ -int op_preserve = 1; + WLabel *file_label[2]; + WLabel *file_string[2]; + WLabel *progress_label[3]; + WGauge *progress_gauge[3]; + WLabel *eta_label; + WLabel *bps_label; + WLabel *stalled_label; + + /* Query replace dialog */ + + Dlg_head *replace_dlg; + char *replace_filename; + int replace_result; + struct stat *s_stat, *d_stat; +} FileOpContextUI; + + +/* Replace dialog: color set */ +static int replace_colors [4]; + +#ifndef HAVE_X +/* Used to save the hint line */ +static int last_hint_line; +#endif /* File operate window sizes */ #define WX 62 @@ -167,23 +176,21 @@ REPLACE_REGET } FileReplaceCode; -/* Pointer to the operate dialog */ -static Dlg_head *op_dlg; - -static struct stat *s_stat, *d_stat; - -FileProgressStatus -file_progress_check_buttons (void) +static FileProgressStatus +check_progress_buttons (FileOpContext *ctx) { int c; Gpm_Event event; + FileOpContextUI *ui; + + ui = ctx->ui; x_flush_events (); c = get_event (&event, 0, 0); if (c == EV_NONE) return FILE_CONT; - dlg_process_event (op_dlg, c, &event); - switch (op_dlg->ret_value) { + dlg_process_event (ui->op_dlg, c, &event); + switch (ui->op_dlg->ret_value) { case FILE_SKIP: return FILE_SKIP; break; @@ -214,195 +221,256 @@ } void -create_op_win (FileOperation op, int with_eta) +file_op_context_create_ui (FileOpContext *ctx, FileOperation op, int with_eta) { - int i, x_size; - int minus = verbose ? 0 : 3; - int eta_offset = with_eta ? (WX_ETA_EXTRA) / 2 : 0; + FileOpContextUI *ui; + int x_size; + int minus; + int eta_offset; + char *sixty; + char *fifteen; - char *sixty = ""; - char *fifteen = ""; - - file_progress_replace_result = 0; - file_progress_recursive_result = 0; - showing_eta = with_eta; - showing_bps = with_eta; - eta_extra = with_eta ? WX_ETA_EXTRA : 0; - x_size = (WX + 4) + eta_extra; + g_return_if_fail (ctx != NULL); + g_return_if_fail (ctx->ui == NULL); - op_dlg = create_dlg (0, 0, WY-minus+4, x_size, dialog_colors, - op_win_callback, "", "opwin", DLG_CENTER); + ui = g_new0 (FileOpContextUI, 1); + ctx->ui = ui; + + minus = verbose ? 0 : 3; + eta_offset = with_eta ? (WX_ETA_EXTRA) / 2 : 0; + + sixty = ""; + fifteen = ""; + + ctx->recursive_result = 0; + + ui->replace_result = 0; + ui->showing_eta = with_eta; + ui->showing_bps = with_eta; + ui->eta_extra = with_eta ? WX_ETA_EXTRA : 0; + x_size = (WX + 4) + ui->eta_extra; + + ui->op_dlg = create_dlg (0, 0, WY-minus+4, x_size, dialog_colors, + op_win_callback, "", "opwin", DLG_CENTER); #ifndef HAVE_X last_hint_line = the_hint->widget.y; - if ((op_dlg->y + op_dlg->lines) > last_hint_line) - the_hint->widget.y = op_dlg->y + op_dlg->lines+1; + if ((ui->op_dlg->y + ui->op_dlg->lines) > last_hint_line) + the_hint->widget.y = ui->op_dlg->y + ui->op_dlg->lines+1; #endif - - x_set_dialog_title (op_dlg, ""); - add_widgetl (op_dlg, button_new (BY-minus, WX - 19 + eta_offset, FILE_ABORT, - NORMAL_BUTTON, _("&Abort"), 0, 0, "abort"), - XV_WLAY_RIGHTOF); - add_widgetl (op_dlg, button_new (BY-minus, 14 + eta_offset, FILE_SKIP, - NORMAL_BUTTON, _("&Skip"), 0, 0, "skip"), - XV_WLAY_CENTERROW); - - add_widgetl (op_dlg, ProgressGauge [2] = gauge_new (7, FCOPY_GAUGE_X, 0, 100, 0, "g-1"), - XV_WLAY_RIGHTOF); - add_widgetl (op_dlg, ProgressLabel [2] = label_new (7, FCOPY_LABEL_X, fifteen, "l-1"), - XV_WLAY_NEXTROW); - add_widgetl (op_dlg, bps_label = label_new (7, WX, "", "bps-label"), XV_WLAY_NEXTROW); - - add_widgetl (op_dlg, ProgressGauge [1] = gauge_new (8, FCOPY_GAUGE_X, 0, 100, 0, "g-2"), - XV_WLAY_RIGHTOF); - add_widgetl (op_dlg, ProgressLabel [1] = label_new (8, FCOPY_LABEL_X, fifteen, "l-2"), - XV_WLAY_RIGHTOF); - add_widgetl (op_dlg, stalled_label = label_new (8, WX, "", "stalled"), XV_WLAY_NEXTROW); - - add_widgetl (op_dlg, ProgressGauge [0] = gauge_new (6, FCOPY_GAUGE_X, 0, 100, 0, "g-3"), - XV_WLAY_RIGHTOF); - add_widgetl (op_dlg, ProgressLabel [0] = label_new (6, FCOPY_LABEL_X, fifteen, "l-3"), - XV_WLAY_RIGHTOF); - add_widgetl (op_dlg, eta_label = label_new (6, WX, "", "eta_label"), XV_WLAY_NEXTROW); - - add_widgetl (op_dlg, FileString [1] = label_new (4, FCOPY_GAUGE_X, sixty, "fs-l-1"), - XV_WLAY_RIGHTOF); - add_widgetl (op_dlg, FileLabel [1] = label_new (4, FCOPY_LABEL_X, fifteen, "fs-l-2"), - XV_WLAY_NEXTROW); - add_widgetl (op_dlg, FileString [0] = label_new (3, FCOPY_GAUGE_X, sixty, "fs-x-1"), - XV_WLAY_RIGHTOF); - add_widgetl (op_dlg, FileLabel [0] = label_new (3, FCOPY_LABEL_X, fifteen, "fs-x-2"), - XV_WLAY_NEXTROW); - + x_set_dialog_title (ui->op_dlg, ""); + + add_widgetl (ui->op_dlg, button_new (BY-minus, WX - 19 + eta_offset, FILE_ABORT, + NORMAL_BUTTON, _("&Abort"), 0, 0, "abort"), + XV_WLAY_RIGHTOF); + add_widgetl (ui->op_dlg, button_new (BY-minus, 14 + eta_offset, FILE_SKIP, + NORMAL_BUTTON, _("&Skip"), 0, 0, "skip"), + XV_WLAY_CENTERROW); + + add_widgetl (ui->op_dlg, ui->progress_gauge[2] = gauge_new (7, FCOPY_GAUGE_X, 0, 100, 0, "g-1"), + XV_WLAY_RIGHTOF); + add_widgetl (ui->op_dlg, ui->progress_label[2] = label_new (7, FCOPY_LABEL_X, fifteen, "l-1"), + XV_WLAY_NEXTROW); + add_widgetl (ui->op_dlg, ui->bps_label = label_new (7, WX, "", "bps-label"), XV_WLAY_NEXTROW); + + add_widgetl (ui->op_dlg, ui->progress_gauge[1] = gauge_new (8, FCOPY_GAUGE_X, 0, 100, 0, "g-2"), + XV_WLAY_RIGHTOF); + add_widgetl (ui->op_dlg, ui->progress_label[1] = label_new (8, FCOPY_LABEL_X, fifteen, "l-2"), + XV_WLAY_RIGHTOF); + add_widgetl (ui->op_dlg, ui->stalled_label = label_new (8, WX, "", "stalled"), XV_WLAY_NEXTROW); + + add_widgetl (ui->op_dlg, ui->progress_gauge[0] = gauge_new (6, FCOPY_GAUGE_X, 0, 100, 0, "g-3"), + XV_WLAY_RIGHTOF); + add_widgetl (ui->op_dlg, ui->progress_label[0] = label_new (6, FCOPY_LABEL_X, fifteen, "l-3"), + XV_WLAY_RIGHTOF); + add_widgetl (ui->op_dlg, ui->eta_label = label_new (6, WX, "", "eta_label"), XV_WLAY_NEXTROW); + + add_widgetl (ui->op_dlg, ui->file_string[1] = label_new (4, FCOPY_GAUGE_X, sixty, "fs-l-1"), + XV_WLAY_RIGHTOF); + add_widgetl (ui->op_dlg, ui->file_label[1] = label_new (4, FCOPY_LABEL_X, fifteen, "fs-l-2"), + XV_WLAY_NEXTROW); + add_widgetl (ui->op_dlg, ui->file_string[0] = label_new (3, FCOPY_GAUGE_X, sixty, "fs-x-1"), + XV_WLAY_RIGHTOF); + add_widgetl (ui->op_dlg, ui->file_label[0] = label_new (3, FCOPY_LABEL_X, fifteen, "fs-x-2"), + XV_WLAY_NEXTROW); + /* We will manage the dialog without any help, that's why we have to call init_dlg */ - init_dlg (op_dlg); - op_dlg->running = 1; - selected_button = FILE_SKIP; - for (i = 0; i < 3; i++) - last_percentage [i] = -99; + init_dlg (ui->op_dlg); + ui->op_dlg->running = 1; } void -destroy_op_win (void) +file_op_context_destroy_ui (FileOpContext *ctx) { - dlg_run_done (op_dlg); - destroy_dlg (op_dlg); + FileOpContextUI *ui; + + g_return_if_fail (ctx != NULL); + g_return_if_fail (ctx->ui != NULL); + + ui = ctx->ui; + + dlg_run_done (ui->op_dlg); + destroy_dlg (ui->op_dlg); #ifndef HAVE_X the_hint->widget.y = last_hint_line; #endif + + g_free (ui); + ctx->ui = NULL; } static FileProgressStatus -show_no_bar (int n) +show_no_bar (FileOpContext *ctx, int n) { + FileOpContextUI *ui; + + ui = ctx->ui; + if (n >= 0) { - label_set_text (ProgressLabel [n], ""); - gauge_show (ProgressGauge [n], 0); + label_set_text (ui->progress_label[n], ""); + gauge_show (ui->progress_gauge[n], 0); } - return file_progress_check_buttons (); + return check_progress_buttons (ctx); } static FileProgressStatus -show_bar (int n, long done, long total) +show_bar (FileOpContext *ctx, int n, long done, long total) { - gauge_set_value (ProgressGauge [n], (int) total, (int) done); - gauge_show (ProgressGauge [n], 1); - return file_progress_check_buttons (); + FileOpContextUI *ui; + + ui = ctx->ui; + + gauge_set_value (ui->progress_gauge[n], (int) total, (int) done); + gauge_show (ui->progress_gauge[n], 1); + return check_progress_buttons (ctx); } static void -file_eta_show () +file_eta_show (FileOpContext *ctx) { int eta_hours, eta_mins, eta_s; char eta_buffer [30]; + FileOpContextUI *ui; - if (!showing_eta) + ui = ctx->ui; + + if (!ui->showing_eta) return; - if (file_progress_eta_secs > 0.5) { - eta_hours = file_progress_eta_secs / (60 * 60); - eta_mins = (file_progress_eta_secs - (eta_hours * 60 * 60)) / 60; - eta_s = file_progress_eta_secs - ((eta_hours * 60 * 60) + eta_mins * 60 ); + if (ctx->eta_secs > 0.5) { + eta_hours = ctx->eta_secs / (60 * 60); + eta_mins = (ctx->eta_secs - (eta_hours * 60 * 60)) / 60; + eta_s = ctx->eta_secs - (eta_hours * 60 * 60 + eta_mins * 60); sprintf (eta_buffer, "ETA %d:%02d.%02d", eta_hours, eta_mins, eta_s); } else *eta_buffer = 0; - label_set_text (eta_label, eta_buffer); + label_set_text (ui->eta_label, eta_buffer); } static void -file_bps_show () +file_bps_show (FileOpContext *ctx) { char bps_buffer [30]; + FileOpContextUI *ui; + + ui = ctx->ui; - if (!showing_bps) + if (!ui->showing_bps) return; - if (file_progress_bps > 1024*1024){ - sprintf (bps_buffer, "%.2f MB/s", file_progress_bps / (1024*1024.0)); - } else if (file_progress_bps > 1024){ - sprintf (bps_buffer, "%.2f KB/s", file_progress_bps / 1024.0); - } else if (file_progress_bps > 1){ - sprintf (bps_buffer, "%ld B/s", file_progress_bps); + if (ctx->bps > 1024*1024) { + sprintf (bps_buffer, "%.2f MB/s", ctx->bps / (1024*1024.0)); + } else if (ctx->bps > 1024){ + sprintf (bps_buffer, "%.2f KB/s", ctx->bps / 1024.0); + } else if (ctx->bps > 1){ + sprintf (bps_buffer, "%ld B/s", ctx->bps); } else *bps_buffer = 0; - label_set_text (bps_label, bps_buffer); + label_set_text (ui->bps_label, bps_buffer); } FileProgressStatus -file_progress_show (long done, long total) +file_progress_show (FileOpContext *ctx, long done, long total) { + FileOpContextUI *ui; + + g_return_val_if_fail (ctx != NULL, FILE_CONT); + g_return_val_if_fail (ctx->ui != NULL, FILE_CONT); + + ui = ctx->ui; + if (!verbose) - return file_progress_check_buttons (); + return check_progress_buttons (ctx); if (total > 0){ - label_set_text (ProgressLabel [0], _("File")); - file_eta_show (); - file_bps_show (); - return show_bar (0, done, total); + label_set_text (ui->progress_label[0], _("File")); + file_eta_show (ctx); + file_bps_show (ctx); + return show_bar (ctx, 0, done, total); } else - return show_no_bar (0); + return show_no_bar (ctx, 0); } FileProgressStatus -file_progress_show_count (long done, long total) +file_progress_show_count (FileOpContext *ctx, long done, long total) { + FileOpContextUI *ui; + + g_return_val_if_fail (ctx != NULL, FILE_CONT); + g_return_val_if_fail (ctx->ui != NULL, FILE_CONT); + + ui = ctx->ui; + if (!verbose) - return file_progress_check_buttons (); + return check_progress_buttons (ctx); if (total > 0){ - label_set_text (ProgressLabel [1], _("Count")); - return show_bar (1, done, total); + label_set_text (ui->progress_label[1], _("Count")); + return show_bar (ctx, 1, done, total); } else - return show_no_bar (1); + return show_no_bar (ctx, 1); } FileProgressStatus -file_progress_show_bytes (double done, double total) +file_progress_show_bytes (FileOpContext *ctx, double done, double total) { + FileOpContextUI *ui; + + g_return_val_if_fail (ctx != NULL, FILE_CONT); + g_return_val_if_fail (ctx->ui != NULL, FILE_CONT); + + ui = ctx->ui; + if (!verbose) - return file_progress_check_buttons (); + return check_progress_buttons (ctx); if (total > 0){ - label_set_text (ProgressLabel [2], _("Bytes")); - return show_bar (2, done, total); + label_set_text (ui->progress_label[2], _("Bytes")); + return show_bar (ctx, 2, done, total); } else - return show_no_bar (2); + return show_no_bar (ctx, 2); } /* }}} */ #ifndef HAVE_X -#define truncFileString(s) name_trunc (s, eta_extra + 47) +#define truncFileString(ui, s) name_trunc (s, ui->eta_extra + 47) #else -#define truncFileString(s) s +#define truncFileString(ui, s) s #endif FileProgressStatus -file_progress_show_source (char *s) +file_progress_show_source (FileOpContext *ctx, char *s) { - if (s != NULL){ + FileOpContextUI *ui; + + g_return_val_if_fail (ctx != NULL, FILE_CONT); + g_return_val_if_fail (ctx->ui != NULL, FILE_CONT); + ui = ctx->ui; + + if (s != NULL) { #ifdef WITH_FULL_PATHS int i = strlen (cpanel->cwd); @@ -413,36 +481,50 @@ } #endif /* WITH_FULL_PATHS */ - label_set_text (FileLabel [0], _("Source")); - label_set_text (FileString [0], truncFileString (s)); - return file_progress_check_buttons (); + label_set_text (ui->file_label[0], _("Source")); + label_set_text (ui->file_string[0], truncFileString (ui, s)); + return check_progress_buttons (ctx); } else { - label_set_text (FileLabel [0], ""); - label_set_text (FileString [0], ""); - return file_progress_check_buttons (); + label_set_text (ui->file_label[0], ""); + label_set_text (ui->file_string[0], ""); + return check_progress_buttons (ctx); } } FileProgressStatus -file_progress_show_target (char *s) +file_progress_show_target (FileOpContext *ctx, char *s) { - if (s != NULL){ - label_set_text (FileLabel [1], _("Target")); - label_set_text (FileString [1], truncFileString (s)); - return file_progress_check_buttons (); + FileOpContextUI *ui; + + g_return_val_if_fail (ctx != NULL, FILE_CONT); + g_return_val_if_fail (ctx->ui != NULL, FILE_CONT); + + ui = ctx->ui; + + if (s != NULL) { + label_set_text (ui->file_label[1], _("Target")); + label_set_text (ui->file_string[1], truncFileString (ui, s)); + return check_progress_buttons (ctx); } else { - label_set_text (FileLabel [1], ""); - label_set_text (FileString [1], ""); - return file_progress_check_buttons (); + label_set_text (ui->file_label[1], ""); + label_set_text (ui->file_string[1], ""); + return check_progress_buttons (ctx); } } FileProgressStatus -file_progress_show_deleting (char *s) +file_progress_show_deleting (FileOpContext *ctx, char *s) { - label_set_text (FileLabel [0], _("Deleting")); - label_set_text (FileString [0], truncFileString (s)); - return file_progress_check_buttons (); + FileOpContextUI *ui; + + g_return_val_if_fail (ctx != NULL, FILE_CONT); + g_return_val_if_fail (ctx->ui != NULL, FILE_CONT); + + ui = ctx->ui; + + label_set_text (ui->file_label[0], _("Deleting")); + label_set_text (ui->file_label[0], truncFileString (ui, s)); + return check_progress_buttons (ctx); } static int @@ -503,133 +585,152 @@ }; #define ADD_RD_BUTTON(i)\ - add_widgetl (replace_dlg,\ + add_widgetl (ui->replace_dlg,\ button_new (rd_widgets [i].ypos, rd_widgets [i].xpos, rd_widgets [i].value,\ NORMAL_BUTTON, rd_widgets [i].text, 0, 0, rd_widgets [i].tkname), \ rd_widgets [i].layout) -#define ADD_RD_LABEL(i,p1,p2)\ +#define ADD_RD_LABEL(ui,i,p1,p2)\ sprintf (buffer, rd_widgets [i].text, p1, p2);\ - add_widgetl (replace_dlg,\ + add_widgetl (ui->replace_dlg,\ label_new (rd_widgets [i].ypos, rd_widgets [i].xpos, buffer, rd_widgets [i].tkname),\ rd_widgets [i].layout) static void -init_replace (enum OperationMode mode) +init_replace (FileOpContext *ctx, enum OperationMode mode) { + FileOpContextUI *ui; char buffer [128]; - static int rd_xlen = 60, rd_trunc = X_TRUNC; + static int rd_xlen = 60, rd_trunc = X_TRUNC; #ifdef ENABLE_NLS - static int i18n_flag; - if (!i18n_flag) - { - int l1, l2, l, row; - register int i = sizeof (rd_widgets) / sizeof (rd_widgets [0]); - while (i--) - rd_widgets [i].text = _(rd_widgets [i].text); + static int i18n_flag; + if (!i18n_flag) { + int l1, l2, l, row; + register int i = sizeof (rd_widgets) / sizeof (rd_widgets [0]); + while (i--) + rd_widgets [i].text = _(rd_widgets [i].text); - /* - *longest of "Overwrite..." labels - * (assume "Target date..." are short enough) - */ - l1 = max (strlen (rd_widgets [6].text), strlen (rd_widgets [11].text)); - - /* longest of button rows */ - i = sizeof (rd_widgets) / sizeof (rd_widgets [0]); - for (row = l = l2 = 0; i--;) - { - if (rd_widgets [i].value != 0) - { - if (row != rd_widgets [i].ypos) - { - row = rd_widgets [i].ypos; - l2 = max (l2, l); - l = 0; - } - l += strlen (rd_widgets [i].text) + 4; - } + /* + *longest of "Overwrite..." labels + * (assume "Target date..." are short enough) + */ + l1 = max (strlen (rd_widgets [6].text), strlen (rd_widgets [11].text)); + + /* longest of button rows */ + i = sizeof (rd_widgets) / sizeof (rd_widgets [0]); + for (row = l = l2 = 0; i--;) { + if (rd_widgets [i].value != 0) { + if (row != rd_widgets [i].ypos) { + row = rd_widgets [i].ypos; + l2 = max (l2, l); + l = 0; } - l2 = max (l2, l); /* last row */ - rd_xlen = max (rd_xlen, l1 + l2 + 8); - rd_trunc = rd_xlen - 6; - - /* Now place buttons */ - l1 += 5; /* start of first button in the row */ - i = sizeof (rd_widgets) / sizeof (rd_widgets [0]); + l += strlen (rd_widgets [i].text) + 4; + } + } + l2 = max (l2, l); /* last row */ + rd_xlen = max (rd_xlen, l1 + l2 + 8); + rd_trunc = rd_xlen - 6; + + /* Now place buttons */ + l1 += 5; /* start of first button in the row */ + i = sizeof (rd_widgets) / sizeof (rd_widgets [0]); - for (l = l1, row = 0; --i > 1;) - { - if (rd_widgets [i].value != 0) - { - if (row != rd_widgets [i].ypos) - { - row = rd_widgets [i].ypos; - l = l1; - } - rd_widgets [i].xpos = l; - l += strlen (rd_widgets [i].text) + 4; - } + for (l = l1, row = 0; --i > 1;) { + if (rd_widgets [i].value != 0) { + if (row != rd_widgets [i].ypos) { + row = rd_widgets [i].ypos; + l = l1; } - /* Abort button is centered */ - rd_widgets [1].xpos = (rd_xlen - strlen (rd_widgets [1].text) - 3) / 2; - + rd_widgets [i].xpos = l; + l += strlen (rd_widgets [i].text) + 4; + } } + /* Abort button is centered */ + rd_widgets [1].xpos = (rd_xlen - strlen (rd_widgets [1].text) - 3) / 2; + } #endif /* ENABLE_NLS */ + ui = ctx->ui; + replace_colors [0] = ERROR_COLOR; replace_colors [1] = COLOR_NORMAL; replace_colors [2] = ERROR_COLOR; replace_colors [3] = COLOR_NORMAL; - replace_dlg = create_dlg (0, 0, 16, rd_xlen, replace_colors, replace_callback, - "[ Replace ]", "replace", DLG_CENTER); - - x_set_dialog_title (replace_dlg, - mode == Foreground ? _(" File exists ") : _(" Background process: File exists ")); - - - ADD_RD_LABEL(0, name_trunc (file_progress_replace_filename, rd_trunc - strlen (rd_widgets [0].text)), 0 ); - ADD_RD_BUTTON(1); + ui->replace_dlg = create_dlg (0, 0, 16, rd_xlen, replace_colors, replace_callback, + "[ Replace ]", "replace", DLG_CENTER); - ADD_RD_BUTTON(2); - ADD_RD_BUTTON(3); - ADD_RD_BUTTON(4); - ADD_RD_BUTTON(5); - ADD_RD_LABEL(6,0,0); + x_set_dialog_title (ui->replace_dlg, + (mode == Foreground + ? _(" File exists ") + : _(" Background process: File exists "))); + + + ADD_RD_LABEL(ui, 0, + name_trunc (ui->replace_filename, rd_trunc - strlen (rd_widgets [0].text)), 0); + ADD_RD_BUTTON(1); + + ADD_RD_BUTTON(2); + ADD_RD_BUTTON(3); + ADD_RD_BUTTON(4); + ADD_RD_BUTTON(5); + ADD_RD_LABEL(ui, 6, 0, 0); /* "this target..." widgets */ - if (!S_ISDIR (d_stat->st_mode)){ - if ((d_stat->st_size && s_stat->st_size > d_stat->st_size)) - ADD_RD_BUTTON(7); - - ADD_RD_BUTTON(8); - } - ADD_RD_BUTTON(9); - ADD_RD_BUTTON(10); - ADD_RD_LABEL(11,0,0); + if (!S_ISDIR (ui->d_stat->st_mode)){ + if ((ui->d_stat->st_size && ui->s_stat->st_size > ui->d_stat->st_size)) + ADD_RD_BUTTON(7); + + ADD_RD_BUTTON(8); + } + ADD_RD_BUTTON(9); + ADD_RD_BUTTON(10); + ADD_RD_LABEL(ui, 11,0,0); - ADD_RD_LABEL(12, file_date (d_stat->st_mtime), (int) d_stat->st_size); - ADD_RD_LABEL(13, file_date (s_stat->st_mtime), (int) s_stat->st_size); + ADD_RD_LABEL(ui, 12, file_date (ui->d_stat->st_mtime), (int) ui->d_stat->st_size); + ADD_RD_LABEL(ui, 13, file_date (ui->s_stat->st_mtime), (int) ui->s_stat->st_size); +} + +void +file_progress_set_stalled_label (FileOpContext *ctx, char *stalled_msg) +{ + FileOpContextUI *ui; + + g_return_if_fail (ctx != NULL); + g_return_if_fail (ctx->ui != NULL); + + ui = ctx->ui; + + label_set_text (ui->stalled_label, stalled_msg); } FileProgressStatus -file_progress_real_query_replace (enum OperationMode mode, char *destname, struct stat *_s_stat, +file_progress_real_query_replace (FileOpContext *ctx, enum OperationMode mode, + char *destname, struct stat *_s_stat, struct stat *_d_stat) { - if (file_progress_replace_result < REPLACE_ALWAYS){ - file_progress_replace_filename = destname; - s_stat = _s_stat; - d_stat = _d_stat; - init_replace (mode); - run_dlg (replace_dlg); - file_progress_replace_result = replace_dlg->ret_value; - if (file_progress_replace_result == B_CANCEL) - file_progress_replace_result = REPLACE_ABORT; - destroy_dlg (replace_dlg); + FileOpContextUI *ui; + + g_return_val_if_fail (ctx != NULL, FILE_CONT); + g_return_val_if_fail (ctx->ui != NULL, FILE_CONT); + + ui = ctx->ui; + + if (ui->replace_result < REPLACE_ALWAYS){ + ui->replace_filename = destname; + ui->s_stat = _s_stat; + ui->d_stat = _d_stat; + init_replace (ctx, mode); + run_dlg (ui->replace_dlg); + ui->replace_result = ui->replace_dlg->ret_value; + if (ui->replace_result == B_CANCEL) + ui->replace_result = REPLACE_ABORT; + destroy_dlg (ui->replace_dlg); } - switch (file_progress_replace_result){ + switch (ui->replace_result){ case REPLACE_UPDATE: do_refresh (); if (_s_stat->st_mtime > _d_stat->st_mtime) @@ -646,10 +747,10 @@ case REPLACE_REGET: /* Carefull: we fall through and set do_append */ - file_progress_do_reget = _d_stat->st_size; + ctx->do_reget = _d_stat->st_size; case REPLACE_APPEND: - file_progress_do_append = 1; + ctx->do_append = 1; case REPLACE_YES: case REPLACE_ALWAYS: @@ -665,15 +766,9 @@ } } -void -file_progress_set_stalled_label (char *stalled_msg) -{ - label_set_text (stalled_label, stalled_msg); -} - #define FMDY 13 #define FMD_XLEN 64 -extern int fmd_xlen, fmd_i18n_flag; +extern int fmd_xlen; static QuickWidget fmd_widgets [] = { #define FMCB0 FMDC @@ -681,19 +776,12 @@ #define FMCB11 1 /* follow symlinks and preserve Attributes must be the first */ { quick_checkbox, 3, 64, 8, FMDY, N_("preserve &Attributes"), 9, 0, - &op_preserve, 0, XV_WLAY_BELOWCLOSE, "preserve" }, + 0 /* &op_preserve */, 0, XV_WLAY_BELOWCLOSE, "preserve" }, { quick_checkbox, 3, 64, 7, FMDY, N_("follow &Links"), 7, 0, - &file_mask_op_follow_links, 0, XV_WLAY_BELOWCLOSE, "follow" }, -#ifdef HAVE_XVIEW -#define FMDI1 5 -#define FMDI2 2 -#define FMDC 4 - { quick_input, 3, 64, 6, FMDY, "", 58, 0, - 0, 0, XV_WLAY_BELOWCLOSE, "input2" }, -#endif + 0 /* &file_mask_op_follow_links */, 0, XV_WLAY_BELOWCLOSE, "follow" }, { quick_label, 3, 64, 5, FMDY, N_("to:"), 0, 0, 0, 0, XV_WLAY_BELOWOF,"to"}, { quick_checkbox, 37, 64, 4, FMDY, N_("&Using shell patterns"), 0, 0, - 0/* &source_easy_patterns */, 0, XV_WLAY_BELOWCLOSE, "using-shell" }, + 0 /* &source_easy_patterns */, 0, XV_WLAY_BELOWCLOSE, "using-shell" }, { quick_input, 3, 64, 3, FMDY, "", 58, 0, 0, 0, XV_WLAY_BELOWCLOSE, "input-def" }, #define FMDI1 4 @@ -723,19 +811,22 @@ #endif { quick_button, 14, 64, 9, FMDY, N_("&Ok"), 0, B_ENTER, 0, 0, XV_WLAY_NEXTROW, "ok" }, { quick_checkbox, 42, 64, 8, FMDY, N_("&Stable Symlinks"), 0, 0, - &file_mask_stable_symlinks, 0, XV_WLAY_BELOWCLOSE, "stab-sym" }, + 0 /* &file_mask_stable_symlinks */, 0, XV_WLAY_BELOWCLOSE, "stab-sym" }, { quick_checkbox, 31, 64, 7, FMDY, N_("&Dive into subdir if exists"), 0, 0, - &dive_into_subdirs, 0, XV_WLAY_BELOWOF, "dive" }, + 0 /* &dive_into_subdirs */, 0, XV_WLAY_BELOWOF, "dive" }, { 0 } }; void -fmd_init_i18n() +fmd_init_i18n (int force) { -#ifdef ENABLE_NLS - + static int initialized = FALSE; register int i; int len; + if (initialized && !force) + return; + +#ifdef ENABLE_NLS for (i = sizeof (op_names) / sizeof (op_names[0]); i--;) op_names [i] = _(op_names [i]); @@ -791,11 +882,11 @@ #undef chkbox_xpos #endif /* ENABLE_NLS */ - fmd_i18n_flag = 1; + initialized = TRUE; } char * -file_mask_dialog (FileOperation operation, char *text, char *def_text, +file_mask_dialog (FileOpContext *ctx, FileOperation operation, char *text, char *def_text, int only_one, int *do_background) { int source_easy_patterns = easy_patterns; @@ -803,13 +894,22 @@ const char *error; struct stat buf; int val; - QuickDialog Quick_input; - if (!fmd_i18n_flag) - fmd_init_i18n(); + g_return_val_if_fail (ctx != NULL, NULL); + + fmd_init_i18n (FALSE); + + /* Set up the result pointers */ - file_mask_stable_symlinks = 0; + fmd_widgets[FMCB12].result = &ctx->op_preserve; + fmd_widgets[FMCB11].result = &ctx->follow_links; + fmd_widgets[FMCB22].result = &ctx->stable_symlinks; + fmd_widgets[FMCB21].result = &ctx->dive_into_subdirs; + + /* Create the dialog */ + + ctx->stable_symlinks = 0; fmd_widgets [FMDC].result = &source_easy_patterns; fmd_widgets [FMDI1].text = easy_patterns ? "*" : "^\\(.*\\)$"; Quick_input.xlen = fmd_xlen; @@ -818,8 +918,8 @@ Quick_input.help = "[Mask Copy/Rename]"; Quick_input.ylen = FMDY; Quick_input.i18n = 1; - - if (operation == OP_COPY){ + + if (operation == OP_COPY) { Quick_input.class = "quick_file_mask_copy"; Quick_input.widgets = fmd_widgets; } else { /* operation == OP_MOVE */ @@ -837,22 +937,21 @@ if ((val = quick_dialog_skip (&Quick_input, SKIP)) == B_CANCEL) return 0; - if (file_mask_op_follow_links && operation != OP_MOVE) - file_mask_xstat = mc_stat; + if (ctx->follow_links && operation != OP_MOVE) + ctx->stat_func = mc_stat; else - file_mask_xstat = mc_lstat; - - if (op_preserve || operation == OP_MOVE){ - file_mask_preserve = 1; - file_mask_umask_kill = 0777777; - file_mask_preserve_uidgid = (geteuid () == 0) ? 1 : 0; - } - else { + ctx->stat_func = mc_lstat; + + if (ctx->op_preserve || operation == OP_MOVE) { + ctx->preserve = 1; + ctx->umask_kill = 0777777; + ctx->preserve_uidgid = (geteuid () == 0) ? 1 : 0; + } else { int i; - file_mask_preserve = file_mask_preserve_uidgid = 0; + ctx->preserve = ctx->preserve_uidgid = 0; i = umask (0); umask (i); - file_mask_umask_kill = i ^ 0777777; + ctx->umask_kill = i ^ 0777777; } orig_mask = source_mask; @@ -866,10 +965,10 @@ easy_patterns = 1; source_mask = convert_pattern (source_mask, match_file, 1); easy_patterns = source_easy_patterns; - error = re_compile_pattern (source_mask, strlen (source_mask), &file_mask_rx); + error = re_compile_pattern (source_mask, strlen (source_mask), &ctx->rx); free (source_mask); } else - error = re_compile_pattern (source_mask, strlen (source_mask), &file_mask_rx); + error = re_compile_pattern (source_mask, strlen (source_mask), &ctx->rx); if (error){ message_3s (1, MSG_ERROR, _("Invalid source pattern `%s' \n %s "), @@ -880,19 +979,20 @@ } if (orig_mask) free (orig_mask); - file_mask_dest_mask = strrchr (dest_dir, PATH_SEP); - if (file_mask_dest_mask == NULL) - file_mask_dest_mask = dest_dir; + ctx->dest_mask = strrchr (dest_dir, PATH_SEP); + if (ctx->dest_mask == NULL) + ctx->dest_mask = dest_dir; else - file_mask_dest_mask++; - orig_mask = file_mask_dest_mask; - if (!*file_mask_dest_mask || (!dive_into_subdirs && !is_wildcarded (file_mask_dest_mask) && - (!only_one || (!mc_stat (dest_dir, &buf) && S_ISDIR (buf.st_mode)))) || - (dive_into_subdirs && ((!only_one && !is_wildcarded (file_mask_dest_mask)) || - (only_one && !mc_stat (dest_dir, &buf) && S_ISDIR (buf.st_mode))))) - file_mask_dest_mask = strdup ("*"); + ctx->dest_mask++; + orig_mask = ctx->dest_mask; + if (!*ctx->dest_mask || (!ctx->dive_into_subdirs && !is_wildcarded (ctx->dest_mask) && + (!only_one || (!mc_stat (dest_dir, &buf) && S_ISDIR (buf.st_mode)))) || + (ctx->dive_into_subdirs && ((!only_one && !is_wildcarded (ctx->dest_mask)) || + (only_one + && !mc_stat (dest_dir, &buf) && S_ISDIR (buf.st_mode))))) + ctx->dest_mask = strdup ("*"); else { - file_mask_dest_mask = strdup (file_mask_dest_mask); + ctx->dest_mask = strdup (ctx->dest_mask); *orig_mask = 0; } if (!*dest_dir){ diff -ruN old/mc-4.5.7/src/filegui.h new/mc-4.5.9/src/filegui.h --- old/mc-4.5.7/src/filegui.h Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/src/filegui.h Mon Jan 18 17:44:10 1999 @@ -4,54 +4,8 @@ /* * GUI callback routines */ -FileProgressStatus file_progress_check_buttons (void); -FileProgressStatus file_progress_show (long done, long total); -FileProgressStatus file_progress_show_count (long done, long total); -FileProgressStatus file_progress_show_bytes (double done, double total); -FileProgressStatus file_progress_show_source (char *path); -FileProgressStatus file_progress_show_target (char *path); -FileProgressStatus file_progress_show_deleting (char *path); -FileProgressStatus file_progress_real_query_replace (enum OperationMode mode, - char *destname, - struct stat *_s_stat, - struct stat *_d_stat); -void file_progress_set_stalled_label (char *stalled_msg); -void fmd_init_i18n(); - -/* - * Shared variables used to pass information from the file.c module to - * the GUI modules. Yes, this is hackish. - * - * This will be replaced with a FileOpContext soon (which will be created with - * create_op_win). - * - * Now, the reason this has not happened yet is that it needs to be done in - * sync with the background.c code (status result is passed trough the pipe - * and this needs to be handled properly, probably by creating a temporary - * FileOpContext and using this). - * - */ -extern int file_progress_replace_result; -extern int file_progress_recursive_result; -extern char *file_progress_replace_filename; -extern double file_progress_eta_secs; -extern int file_progress_do_reget; -extern int file_progress_do_append; - -extern int file_mask_op_follow_links; -extern int file_mask_stable_symlinks; -extern int file_mask_preserve; -extern int file_mask_preserve_uidgid; -extern int file_mask_umask_kill; -extern char *file_mask_dest_mask; - -extern unsigned long file_progress_bps; -extern unsigned long file_progress_bps_time; - -int (*file_mask_xstat)(char *, struct stat *); - -extern struct re_pattern_buffer file_mask_rx; +void fmd_init_i18n (int force); #ifdef WANT_WIDGETS char *panel_get_file (WPanel *panel, struct stat *stat_buf); diff -ruN old/mc-4.5.7/src/fileopctx.c new/mc-4.5.9/src/fileopctx.c --- old/mc-4.5.7/src/fileopctx.c Wed Dec 31 19:00:00 1969 +++ new/mc-4.5.9/src/fileopctx.c Mon Jan 18 17:44:11 1999 @@ -0,0 +1,62 @@ +/* File operation contexts for the Midnight Commander + * + * Copyright (C) 1998 The Free Software Foundation + * + * Authors: Federico Mena + * Miguel de Icaza + */ + +#include +#include +#include +#include "fileopctx.h" +#include "../vfs/vfs.h" + + +/** + * file_op_context_new: + * + * Creates a new file operation context with the default values. If you later want + * to have a user interface for this, call #file_op_context_create_ui(). + * + * Return value: The newly-created context, filled with the default file mask values. + **/ +FileOpContext * +file_op_context_new (void) +{ + FileOpContext *ctx; + + ctx = g_new0 (FileOpContext, 1); + ctx->eta_secs = 0.0; + ctx->progress_bytes = 0.0; + ctx->op_preserve = TRUE; + ctx->do_reget = TRUE; + ctx->stat_func = mc_lstat; + ctx->preserve = TRUE; + ctx->preserve_uidgid = (geteuid () == 0) ? TRUE : FALSE; + ctx->umask_kill = 0777777; + ctx->erase_at_end = TRUE; + + return ctx; +} + + +/** + * file_op_context_destroy: + * @ctx: The file operation context to destroy. + * + * Destroys the specified file operation context and its associated UI data, if + * it exists. + **/ +void +file_op_context_destroy (FileOpContext *ctx) +{ + g_return_if_fail (ctx != NULL); + + if (ctx->ui) + file_op_context_destroy_ui (ctx); + + /* FIXME: do we need to free ctx->dest_mask? */ + + g_free (ctx); +} diff -ruN old/mc-4.5.7/src/fileopctx.h new/mc-4.5.9/src/fileopctx.h --- old/mc-4.5.7/src/fileopctx.h Wed Dec 31 19:00:00 1969 +++ new/mc-4.5.9/src/fileopctx.h Mon Jan 18 17:44:10 1999 @@ -0,0 +1,150 @@ +/* File operation contexts for the Midnight Commander + * + * Copyright (C) 1998 The Free Software Foundation + * + * Authors: Federico Mena + * Miguel de Icaza + */ + +#ifndef FILEOPCTX_H +#define FILEOPCTX_H + +#include +#include +#include "regex.h" + + +/* This structure describes a context for file operations. It is used to update + * the progress windows and pass around options. + */ +typedef struct { + /* The estimated time of arrival in seconds */ + double eta_secs; + + /* Transferred bytes per second */ + long bps; + + /* Transferred seconds */ + long bps_time; + + /* Whether the panel total has been computed */ + int progress_totals_computed; + + /* Counters for progress indicators */ + long progress_count; + double progress_bytes; + + /* The value of the "preserve Attributes" checkbox in the copy file dialog. + * We can't use the value of "ctx->preserve" because it can change in order + * to preserve file attributs when moving files across filesystem boundaries + * (we want to keep the value of the checkbox between copy operations). + */ + int op_preserve; + + /* Result from the recursive query */ + int recursive_result; + + /* Whether to do a reget */ + int do_reget; + + /* Controls appending to files */ + int do_append; + + /* Whether to stat or lstat */ + int follow_links; + + /* Pointer to the stat function we will use */ + int (*stat_func) (char *filename, struct stat *buf); + + /* Whether to recompute symlinks */ + int stable_symlinks; + + /* Preserve the original files' owner, group, permissions, and + * timestamps (owner, group only as root). + */ + int preserve; + + /* If running as root, preserve the original uid/gid (we don't want to + * try chwon for non root) preserve_uidgid = preserve && uid == 0 + */ + int preserve_uidgid; + + /* The bits to preserve in created files' modes on file copy */ + int umask_kill; + + /* The mask of files to actually operate on */ + char *dest_mask; + + /* Regex for the file mask */ + struct re_pattern_buffer rx; + struct re_registers regs; + + /* Whether to dive into subdirectories for recursive operations */ + int dive_into_subdirs; + + /* When moving directories cross filesystem boundaries delete the + * successfull copied files when all files below the directory and its + * subdirectories were processed. + * + * If erase_at_end is zero files will be deleted immediately after their + * successful copy (Note: this behaviour is not tested and at the moment + * it can't be changed at runtime). + */ + int erase_at_end; + + /* PID of the child for background operations */ + pid_t pid; + + /* User interface data goes here */ + + void *ui; +} FileOpContext; + + +FileOpContext *file_op_context_new (void); +void file_op_context_destroy (FileOpContext *ctx); + + +typedef enum { + OP_COPY, + OP_MOVE, + OP_DELETE +} FileOperation; + +extern char *op_names [3]; + +typedef enum { + FILE_CONT, + FILE_RETRY, + FILE_SKIP, + FILE_ABORT +} FileProgressStatus; + +/* First argument passed to real functions */ +enum OperationMode { + Foreground, + Background +}; + +/* The following functions are implemented separately by each port */ + +void file_op_context_create_ui (FileOpContext *ctx, FileOperation op, int with_eta); +void file_op_context_destroy_ui (FileOpContext *ctx); + +FileProgressStatus file_progress_show (FileOpContext *ctx, long done, long total); +FileProgressStatus file_progress_show_count (FileOpContext *ctx, long done, long total); +FileProgressStatus file_progress_show_bytes (FileOpContext *ctx, double done, double total); +FileProgressStatus file_progress_show_source (FileOpContext *ctx, char *path); +FileProgressStatus file_progress_show_target (FileOpContext *ctx, char *path); +FileProgressStatus file_progress_show_deleting (FileOpContext *ctx, char *path); + +void file_progress_set_stalled_label (FileOpContext *ctx, char *stalled_msg); + +FileProgressStatus file_progress_real_query_replace (FileOpContext *ctx, + enum OperationMode mode, + char *destname, + struct stat *_s_stat, + struct stat *_d_stat); + + +#endif diff -ruN old/mc-4.5.7/src/find.c new/mc-4.5.9/src/find.c --- old/mc-4.5.7/src/find.c Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/src/find.c Mon Jan 18 17:44:10 1999 @@ -145,7 +145,9 @@ find_parameters (char **start_dir, char **pattern, char **content) { int return_value; +#ifndef HAVE_GNOME char *temp_dir; +#endif static char *in_contents = NULL; static char *in_start_dir = NULL; static char *in_start_name = NULL; @@ -481,7 +483,9 @@ static DIR *dirp = 0; static char directory [MC_MAXPATHLEN+2]; struct stat tmp_stat; +#ifndef HAVE_X static int pos; +#endif static int subdirs_left = 0; char *tmp_name; /* For bulding file names */ @@ -493,8 +497,9 @@ dp = 0; return; } - +#ifndef HAVE_X do_search_begin: +#endif while (!dp){ if (dirp){ diff -ruN old/mc-4.5.7/src/info.c new/mc-4.5.9/src/info.c --- old/mc-4.5.7/src/info.c Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/src/info.c Mon Jan 18 17:44:10 1999 @@ -35,6 +35,7 @@ #include "win.h" /* print_bytesize */ #include "layout.h" #include "key.h" /* is_idle() */ +#include "x.h" #ifdef HAVE_TK # include "tkmain.h" diff -ruN old/mc-4.5.7/src/main.c new/mc-4.5.9/src/main.c --- old/mc-4.5.7/src/main.c Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/src/main.c Mon Jan 18 17:44:10 1999 @@ -141,7 +141,7 @@ #include #include "popt.h" -/* "$Id: main.c,v 1.71 1999/01/12 09:08:42 unammx Exp $" */ +/* "$Id: main.c,v 1.72 1999/01/14 01:11:20 unammx Exp $" */ /* When the modes are active, left_panel, right_panel and tree_panel */ /* Point to a proper data structure. You should check with the functions */ @@ -2811,7 +2811,7 @@ #endif void -mc_tree_store_load () +mc_tree_store_load (void) { char *tree_file; @@ -2822,7 +2822,7 @@ } void -mc_tree_store_save () +mc_tree_store_save (void) { char *tree_file; diff -ruN old/mc-4.5.7/src/main.h new/mc-4.5.9/src/main.h --- old/mc-4.5.7/src/main.h Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/src/main.h Mon Jan 18 17:44:10 1999 @@ -25,6 +25,9 @@ extern int quote; extern volatile int quit; +void mc_tree_store_load (void); +void mc_tree_store_save (void); + /* Execute functions: the base and the routines that use it */ void do_execute (const char *shell, const char *command, int internal_command); #define execute_internal(command,args) do_execute (command, args, 1) diff -ruN old/mc-4.5.7/src/panelize.h new/mc-4.5.9/src/panelize.h --- old/mc-4.5.7/src/panelize.h Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/src/panelize.h Mon Jan 18 17:44:10 1999 @@ -7,4 +7,6 @@ void save_panelize (void); void done_panelize (void); +void do_external_panelize (char *command); + #endif diff -ruN old/mc-4.5.7/src/screen.c new/mc-4.5.9/src/screen.c --- old/mc-4.5.7/src/screen.c Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/src/screen.c Mon Jan 18 17:44:10 1999 @@ -29,6 +29,8 @@ #ifdef HAVE_UNISTD_H # include /* For chdir(), readlink() and getwd()/getcwd() */ #endif +/*#include "mc.h"*/ + #include "mem.h" #include "mad.h" #include "global.h" @@ -53,7 +55,6 @@ #include "../vfs/vfs.h" #include "../vfs/extfs.h" #include - #ifdef NEEDS_DRIVE_H # include "drive.h" #endif @@ -277,18 +278,6 @@ } char * -string_file_owner (file_entry *fe, int len) -{ - return get_owner (fe->buf.st_uid); -} - -char * -string_file_group (file_entry *fe, int len) -{ - return get_group (fe->buf.st_gid); -} - -char * string_file_size (file_entry *fe, int len) { static char buffer [16]; @@ -336,12 +325,42 @@ #ifdef HAVE_GNOME /* In GNOME, the CList truncates the names */ char * +string_file_owner (file_entry *fe, int len) +{ + return get_owner (fe->buf.st_uid); +} + +char * +string_file_group (file_entry *fe, int len) +{ + return get_group (fe->buf.st_gid); +} + +char * string_file_name (file_entry *fe, int len) { return fe->fname; } #else char * +string_file_owner (file_entry *fe, int len) +{ + if (len) + return name_trunc (get_owner (fe->buf.st_uid), len); + else + return get_owner (fe->buf.st_uid); +} + +char * +string_file_group (file_entry *fe, int len) +{ + if (len) + return name_trunc (get_group (fe->buf.st_gid), len); + else + return get_group (fe->buf.st_gid); +} + +char * string_file_name (file_entry *fe, int len) { if (len) @@ -1655,7 +1674,9 @@ move_selection (WPanel *panel, int lines) { int new_pos; +#ifndef HAVE_X int adjust = 0; +#endif new_pos = panel->selected + lines; if (new_pos >= panel->count) @@ -2543,7 +2564,8 @@ char *filename; int i; - g_return_if_fail (panel != NULL); + if (panel == NULL) + return; filename = strdup (selection (panel)->fname); unselect_item (panel); diff -ruN old/mc-4.5.7/src/setup.c new/mc-4.5.9/src/setup.c --- old/mc-4.5.7/src/setup.c Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/src/setup.c Mon Jan 18 17:44:10 1999 @@ -66,7 +66,7 @@ extern int ftpfs_use_unix_list_options; #endif -/* "$Id: setup.c,v 1.18 1998/12/21 23:31:06 norbert Exp $" */ +/* "$Id: setup.c,v 1.19 1999/01/17 04:17:23 unammx Exp $" */ #ifdef USE_VFS extern int vfs_timeout; @@ -244,9 +244,11 @@ { "editor_syntax_highlighting", &option_syntax_highlighting }, #endif -#ifndef HAVE_GNOME +#ifdef HAVE_GNOME + { "tree_panel_visible", &tree_panel_visible }, +#else { "nice_rotating_dash", &nice_rotating_dash }, - { "horizontal_split", &horizontal_split }, + { "horizontal_split", &horizontal_split }, #endif { 0, 0 } }; diff -ruN old/mc-4.5.7/src/slint.c new/mc-4.5.9/src/slint.c --- old/mc-4.5.7/src/slint.c Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/src/slint.c Mon Jan 18 17:44:11 1999 @@ -34,7 +34,7 @@ #include "key.h" /* define_sequence */ #include "main.h" /* extern: force_colors */ #include "win.h" /* do_exit_ca_mode */ -#include "background.h" /* we_are_background definition */ +#include "fileopctx.h" #include "setup.h" #ifdef HAVE_SLANG diff -ruN old/mc-4.5.7/src/tree.c new/mc-4.5.9/src/tree.c --- old/mc-4.5.7/src/tree.c Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/src/tree.c Mon Jan 18 17:44:10 1999 @@ -43,6 +43,7 @@ #include "mouse.h" #include "main.h" #include "file.h" /* For copy_dir_dir(), move_dir_dir(), erase_dir() */ +#include "fileopctx.h" #include "help.h" #include "key.h" /* For mi_getch() */ #include "tree.h" @@ -60,7 +61,7 @@ static int tree_callback (Dlg_head *h, WTree *tree, int msg, int par); #define tcallback (callback_fn) tree_callback -/* "$Id: tree.c,v 1.16 1999/01/12 05:55:21 unammx Exp $" */ +/* "$Id: tree.c,v 1.17 1999/01/14 01:11:27 unammx Exp $" */ static tree_entry *back_ptr (tree_entry *ptr, int *count) { @@ -89,7 +90,6 @@ /* Add a directory to the list of directories */ tree_entry *tree_add_entry (WTree *tree, char *name) { - tree_entry entry; if (!tree) return 0; @@ -642,6 +642,7 @@ char *dest; long count = 0; double bytes = 0; + FileOpContext *ctx; if (!tree->selected_ptr) return; @@ -651,11 +652,12 @@ if (!dest || !*dest){ return; } - create_op_win (OP_COPY, 0); - file_mask_defaults (); - copy_dir_dir (tree->selected_ptr->name, dest, 1, 0, 0, 0, &count, &bytes); - destroy_op_win (); + ctx = file_op_context_new (); + file_op_context_create_ui (ctx, OP_COPY, FALSE); + copy_dir_dir (ctx, tree->selected_ptr->name, dest, 1, 0, 0, 0, &count, &bytes); + file_op_context_destroy (ctx); + free (dest); } @@ -678,7 +680,8 @@ struct stat buf; double bytes = 0; long count = 0; - + FileOpContext *ctx; + if (!tree->selected_ptr) return; sprintf (cmd_buf, _("Move \"%s\" directory to:"), @@ -698,10 +701,12 @@ free (dest); return; } - create_op_win (OP_MOVE, 0); - file_mask_defaults (); - move_dir_dir (tree->selected_ptr->name, dest, &count, &bytes); - destroy_op_win (); + + ctx = file_op_context_new (); + file_op_context_create_ui (ctx, OP_MOVE, FALSE); + move_dir_dir (ctx, tree->selected_ptr->name, dest, &count, &bytes); + file_op_context_destroy (ctx); + free (dest); } @@ -737,6 +742,7 @@ char old_dir [MC_MAXPATHLEN]; long count = 0; double bytes = 0; + FileOpContext *ctx; if (tree->selected_ptr){ if (!mc_get_current_wd (old_dir, MC_MAXPATHLEN)) @@ -756,10 +762,12 @@ return; } } - create_op_win (OP_DELETE, 0); - if (erase_dir (tree->selected_ptr->name, &count, &bytes) == FILE_CONT) + + ctx = file_op_context_new (); + file_op_context_create_ui (ctx, OP_DELETE, FALSE); + if (erase_dir (ctx, tree->selected_ptr->name, &count, &bytes) == FILE_CONT) tree_forget_cmd (tree); - destroy_op_win (); + file_op_context_destroy (ctx); mc_chdir (old_dir); return; } else diff -ruN old/mc-4.5.7/src/treestore.c new/mc-4.5.9/src/treestore.c --- old/mc-4.5.7/src/treestore.c Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/src/treestore.c Mon Jan 18 17:44:11 1999 @@ -205,7 +205,7 @@ int len, common; int do_load; - g_return_if_fail (name != NULL); + g_return_val_if_fail (name != NULL, TRUE); if (ts.loaded) return TRUE; @@ -274,6 +274,7 @@ e->scanned = scanned; strcpy (oldname, name); } + free (name); } fclose (file); } @@ -659,6 +660,7 @@ } free (ts.check_name); + ts.check_name = NULL; } tree_entry * @@ -679,8 +681,8 @@ for (dp = mc_readdir (dirp); dp; dp = mc_readdir (dirp)){ char *full_name; - if (dp->d_name [0] == '.' && - dp->d_name [1] == 0 || (dp->d_name [1] == '.' && dp->d_name [2] == 0)) + if ((dp->d_name [0] == '.' && dp->d_name [1] == 0) + || (dp->d_name [1] == '.' && dp->d_name [2] == 0)) continue; full_name = concat_dir_and_file (dir, dp->d_name); @@ -733,6 +735,9 @@ if (!entry) return NULL; } + + if (entry->next == NULL) + return NULL; scan = xmalloc (sizeof (tree_scan), ""); scan->base = entry; diff -ruN old/mc-4.5.7/src/treestore.h new/mc-4.5.9/src/treestore.h --- old/mc-4.5.7/src/treestore.h Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/src/treestore.h Mon Jan 18 17:44:10 1999 @@ -31,17 +31,18 @@ extern void (*tree_store_dirty_notify)(int state); -TreeStore *tree_store_init (void); -int tree_store_load (char *name); -int tree_store_save (char *name); -tree_entry *tree_store_add_entry (char *name); -void tree_store_remove_entry (char *name); -void tree_store_destroy (void); -tree_entry *tree_store_start_check (char *path); -void tree_store_mark_checked (const char *subname); -void tree_store_end_check (void); -tree_entry *tree_store_whereis (char *name); -tree_entry *tree_store_rescan (char *dir); +TreeStore *tree_store_init (void); +int tree_store_load (char *name); +int tree_store_save (char *name); +tree_entry *tree_store_add_entry (char *name); +void tree_store_remove_entry (char *name); +void tree_store_destroy (void); +tree_entry *tree_store_start_check (char *path); +tree_entry *tree_store_start_check_cwd (void); +void tree_store_mark_checked (const char *subname); +void tree_store_end_check (void); +tree_entry *tree_store_whereis (char *name); +tree_entry *tree_store_rescan (char *dir); 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); diff -ruN old/mc-4.5.7/src/view.c new/mc-4.5.9/src/view.c --- old/mc-4.5.7/src/view.c Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/src/view.c Mon Jan 18 17:44:10 1999 @@ -125,7 +125,7 @@ int altered_nroff_flag = 0; /* }}} */ -/* "$Id: view.c,v 1.23 1999/01/10 08:56:10 unammx Exp $" */ +/* "$Id: view.c,v 1.24 1999/01/14 01:04:53 unammx Exp $" */ static char hex_char[] = "0123456789ABCDEF"; @@ -1472,7 +1472,7 @@ if ((count++ % 32) == 0) x_flush_events (); - if (!d->running) + if (verbose && !d->running) break; #endif if (p >= update_activate){ diff -ruN old/mc-4.5.7/src/widget.c new/mc-4.5.9/src/widget.c --- old/mc-4.5.7/src/widget.c Tue Jan 12 22:38:07 1999 +++ new/mc-4.5.9/src/widget.c Mon Jan 18 17:44:10 1999 @@ -23,7 +23,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -/* "$Id: widget.c,v 1.25 1999/01/06 19:47:25 unammx Exp $" */ +/* "$Id: widget.c,v 1.26 1999/01/14 01:11:30 unammx Exp $" */ #include #include @@ -77,7 +77,9 @@ static int button_callback (Dlg_head *h, WButton *b, int Msg, int Par) { +#ifndef HAVE_X char *txt, buf[256]; +#endif int stop = 0; int off = 0; @@ -285,7 +287,9 @@ static int radio_callback (Dlg_head *h, WRadio *r, int Msg, int Par) { +#ifndef HAVE_X int i; +#endif switch (Msg) { case WIDGET_INIT: @@ -812,8 +816,10 @@ update_input (WInput *in, int clear_first) { int has_history = 0; +#ifndef HAVE_X int i, j; unsigned char c; +#endif int buf_len = strlen (in->buffer); if (should_show_history_button (in)) diff -ruN old/mc-4.5.7/vfs/ChangeLog new/mc-4.5.9/vfs/ChangeLog --- old/mc-4.5.7/vfs/ChangeLog Tue Jan 12 22:38:06 1999 +++ new/mc-4.5.9/vfs/ChangeLog Mon Jan 18 17:44:08 1999 @@ -1,3 +1,32 @@ +1999-01-18 Miguel de Icaza + + * vfs.h: The correct thing to use is PATH_SEP and PATH_SEP_STR + +Sun Jan 17 16:19:48 1999 Timur I. Bakeyev + + * Converted memory managment to Glib. Now we use g_new()/g_malloc()/ + g_strdup()/g_free() routings. Also, copy_strings() replaced by + g_strconcat(), and sprintf() by g_snprintf(). + + * utilvfs.h: New header file. Introduced as a stock header, which keeps + all includes in a right order, to avoid order-dependence mistakes. + +Sun Jan 17 15:49:39 1999 Paul Sheer + + * direntry.c: vfs_s_find_entry_tree changed to follow + symlinks properly. Symlinks are now always followed + except for the last part of the filename. + vfs_s_resolve_symlink() now converts absolute paths to + ../../file notation so that they can be easily resolved + within the tree. + + * tar.c: . and .. are missing from directory entries, + making it impossible to resolve links - fixed. + +1999-01-12 Miguel de Icaza + + * vfs.c (mc_get_current_wd): Do not die. Truncate the pathname. + 1999-01-10 Miguel de Icaza * sfs.c (redirect): tempnam returns a malloc()ed buffer. diff -ruN old/mc-4.5.7/vfs/direntry.c new/mc-4.5.9/vfs/direntry.c --- old/mc-4.5.7/vfs/direntry.c Tue Jan 12 22:38:06 1999 +++ new/mc-4.5.9/vfs/direntry.c Mon Jan 18 17:44:08 1999 @@ -30,11 +30,12 @@ #define CALL(x) if (MEDATA->x) MEDATA->x -vfs_s_inode *vfs_s_new_inode (vfs *me, vfs_s_super *super, struct stat *initstat) +vfs_s_inode * +vfs_s_new_inode (vfs *me, vfs_s_super *super, struct stat *initstat) { vfs_s_inode *ino; - ino = xmalloc(sizeof (vfs_s_inode), "Dcache inode"); + ino = xmalloc (sizeof (vfs_s_inode), "Dcache inode"); if (!ino) return NULL; @@ -43,6 +44,7 @@ ino->subdir = NULL; if (initstat) ino->st = *initstat; + ino->super = super; ino->ent = NULL; ino->flags = 0; @@ -53,12 +55,13 @@ super->ino_usage++; total_inodes++; - CALL(init_inode) (me, ino); + CALL (init_inode) (me, ino); return ino; } -vfs_s_entry *vfs_s_new_entry (vfs *me, char *name, vfs_s_inode *inode) +vfs_s_entry * +vfs_s_new_entry (vfs *me, char *name, vfs_s_inode *inode) { vfs_s_entry *entry; @@ -74,59 +77,62 @@ entry->prevp = NULL; entry->ino = inode; entry->ino->ent = entry; - CALL(init_entry) (me, entry); + CALL (init_entry) (me, entry); return entry; } -void vfs_s_free_inode (vfs *me, vfs_s_inode *ino) +void +vfs_s_free_inode (vfs *me, vfs_s_inode *ino) { if (!ino) vfs_die ("Don't pass NULL to me"); /* ==0 can happen if freshly created entry is deleted */ - if(ino->st.st_nlink <= 1) { - while(ino->subdir) { + if (ino->st.st_nlink <= 1){ + while (ino->subdir){ vfs_s_entry *ent; ent = ino->subdir; - vfs_s_free_entry(me, ent); + vfs_s_free_entry (me, ent); } - CALL(free_inode) (me, ino); - ifree(ino->linkname); - if (ino->localname) { - unlink(ino->localname); - free(ino->localname); + CALL (free_inode) (me, ino); + ifree (ino->linkname); + if (ino->localname){ + unlink (ino->localname); + free (ino->localname); } total_inodes--; ino->super->ino_usage--; - free(ino); + free (ino); } else ino->st.st_nlink--; } -void vfs_s_free_entry (vfs *me, vfs_s_entry *ent) +void +vfs_s_free_entry (vfs *me, vfs_s_entry *ent) { int is_dot = 0; - if (ent->prevp) { /* It is possible that we are deleting freshly created entry */ + + if (ent->prevp){ /* It is possible that we are deleting freshly created entry */ *ent->prevp = ent->next; if (ent->next) ent->next->prevp = ent->prevp; } - if (ent->name) { - is_dot = (!strcmp(ent->name, ".")) || (!strcmp(ent->name, "..")); + if (ent->name){ + is_dot = (!strcmp (ent->name, ".")) || (!strcmp (ent->name, "..")); free (ent->name); ent->name = NULL; } - if (!is_dot && ent->ino) { + if (!is_dot && ent->ino){ ent->ino->ent = NULL; vfs_s_free_inode (me, ent->ino); ent->ino = NULL; } total_entries--; - free(ent); + free (ent); } void vfs_s_insert_entry (vfs *me, vfs_s_inode *dir, vfs_s_entry *ent) @@ -164,7 +170,8 @@ return &st; } -void vfs_s_add_dots (vfs *me, vfs_s_inode *dir, vfs_s_inode *parent) +void +vfs_s_add_dots (vfs *me, vfs_s_inode *dir, vfs_s_inode *parent) { struct vfs_s_entry *dot, *dotdot; @@ -172,12 +179,14 @@ parent = dir; dot = vfs_s_new_entry (me, ".", dir); dotdot = vfs_s_new_entry (me, "..", parent); - vfs_s_insert_entry(me, dir, dot); - vfs_s_insert_entry(me, dir, dotdot); - dir->st.st_nlink--; parent->st.st_nlink--; /* We do not count "." and ".." into nlinks */ + vfs_s_insert_entry (me, dir, dot); + vfs_s_insert_entry (me, dir, dotdot); + dir->st.st_nlink--; + parent->st.st_nlink--; /* We do not count "." and ".." into nlinks */ } -struct vfs_s_entry *vfs_s_generate_entry (vfs *me, char *name, struct vfs_s_inode *parent, mode_t mode) +struct vfs_s_entry * +vfs_s_generate_entry (vfs *me, char *name, struct vfs_s_inode *parent, mode_t mode) { struct vfs_s_inode *inode; struct vfs_s_entry *entry; @@ -194,52 +203,77 @@ } /* We were asked to create entries automagically */ -vfs_s_entry *vfs_s_automake(vfs *me, vfs_s_inode *dir, char *path, int flags) +vfs_s_entry * +vfs_s_automake (vfs *me, vfs_s_inode *dir, char *path, int flags) { struct vfs_s_entry *res; - char *sep = strchr( path, DIR_SEP_CHAR ); - if (sep) *sep = 0; - res = vfs_s_generate_entry(me, path, dir, flags & FL_MKDIR ? (0777 | S_IFDIR) : 0777 ); - vfs_s_insert_entry(me, dir, res); - if (sep) *sep = DIR_SEP_CHAR; + char *sep = strchr (path, PATH_SEP); + + if (sep) + *sep = 0; + res = vfs_s_generate_entry (me, path, dir, flags & FL_MKDIR ? (0777 | S_IFDIR) : 0777); + vfs_s_insert_entry (me, dir, res); + + if (sep) + *sep = PATH_SEP; + return res; } -/* Follow > 0: follow links, serves as loop protect, - * == -1: do not follow links */ -vfs_s_entry *vfs_s_find_entry_tree(vfs *me, vfs_s_inode *root, char *path, int follow, int flags) +/* + * Follow > 0: follow links, serves as loop protect, + * == -1: do not follow links + */ +vfs_s_entry * +vfs_s_find_entry_tree (vfs *me, vfs_s_inode *root, char *path, int follow, int flags) { unsigned int pseg; - vfs_s_entry* ent = NULL; + vfs_s_entry *ent = NULL; int found; + char p[MC_MAXPATHLEN] = ""; + + while (1){ + int t; + + for (pseg = 0; path [pseg] == PATH_SEP; pseg++) + ; + if (!path [pseg]) + return ent; - while(1) { - for(pseg = 0; path[pseg] == DIR_SEP_CHAR; pseg++); - if(!path[pseg]) return ent; path += pseg; - for(pseg = 0; path[pseg] && path[pseg] != DIR_SEP_CHAR; pseg++); + for (pseg = 0; path[pseg] && path[pseg] != PATH_SEP; pseg++) + ; + + strcat (p, PATH_SEP_STR); + strncpy (p + (t = strlen (p)), path, pseg); + p[t + pseg] = '\0'; found = 0; - for(ent = root->subdir; ent != NULL; ent = ent->next) - if(strlen(ent->name) == pseg && (!strncmp(ent->name, path, pseg))) + for (ent = root->subdir; ent != NULL; ent = ent->next) + if (strlen (ent->name) == pseg && (!strncmp (ent->name, path, pseg))) /* FOUND! */ break; if (!ent && (flags & (FL_MKFILE | FL_MKDIR))) - ent = vfs_s_automake(me, root, path, flags); + ent = vfs_s_automake (me, root, path, flags); if (!ent) ERRNOR (ENOENT, NULL); path += pseg; - if (!vfs_s_resolve_symlink(me, ent, follow)) return NULL; +/* here we must follow leading directories always; only the actual file is optional */ + if (!(ent = vfs_s_resolve_symlink (me, ent, p, strchr (path, PATH_SEP) ? LINK_FOLLOW : follow))) + return NULL; root = ent->ino; } } -static void split_dir_name(vfs *me, char *path, char **dir, char **name, char **save) +static void +split_dir_name (vfs *me, char *path, char **dir, char **name, char **save) { char *s; - s = strrchr(path, DIR_SEP_CHAR); - if (!s) { + + s = strrchr (path, PATH_SEP); + + if (!s){ *save = NULL; *name = path; *dir = ""; @@ -254,58 +288,60 @@ } } -vfs_s_entry *vfs_s_find_entry_linear(vfs *me, vfs_s_inode *root, char *path, int follow, int flags) +vfs_s_entry * +vfs_s_find_entry_linear (vfs *me, vfs_s_inode *root, char *path, int follow, int flags) { vfs_s_entry* ent = NULL; - if (!(flags & FL_DIR)) { + if (!(flags & FL_DIR)){ char *dirname, *name, *save; vfs_s_inode *ino; vfs_s_entry *ent; - split_dir_name(me, path, &dirname, &name, &save); - ino = vfs_s_find_inode(me, root, dirname, follow, flags | FL_DIR); + split_dir_name (me, path, &dirname, &name, &save); + ino = vfs_s_find_inode (me, root, dirname, follow, flags | FL_DIR); if (save) - *save = DIR_SEP_CHAR; - ent = vfs_s_find_entry_tree(me, ino, name, follow, flags); + *save = PATH_SEP; + ent = vfs_s_find_entry_tree (me, ino, name, follow, flags); return ent; } - for(ent = root->subdir; ent != NULL; ent = ent->next) - if (!strcmp(ent->name, path)) + for (ent = root->subdir; ent != NULL; ent = ent->next) + if (!strcmp (ent->name, path)) break; - if (ent && (! (MEDATA->dir_uptodate) (me, ent->ino))) { + if (ent && (! (MEDATA->dir_uptodate) (me, ent->ino))){ #if 1 - message_1s( 1, "Dir cache expired for", path); + message_1s (1, "Dir cache expired for", path); #endif vfs_s_free_entry (me, ent); } - if (!ent) { + if (!ent){ vfs_s_inode *ino; - ino = vfs_s_new_inode(me, root->super, vfs_s_default_stat (me, S_IFDIR | 0755)); - ent = vfs_s_new_entry(me, path, ino); - if ((MEDATA->dir_load) (me, ino, path) == -1) { - vfs_s_free_entry(me, ent); + ino = vfs_s_new_inode (me, root->super, vfs_s_default_stat (me, S_IFDIR | 0755)); + ent = vfs_s_new_entry (me, path, ino); + if ((MEDATA->dir_load) (me, ino, path) == -1){ + vfs_s_free_entry (me, ent); return NULL; } - vfs_s_insert_entry(me, root, ent); + vfs_s_insert_entry (me, root, ent); - for(ent = root->subdir; ent != NULL; ent = ent->next) - if (!strcmp(ent->name, path)) + for (ent = root->subdir; ent != NULL; ent = ent->next) + if (!strcmp (ent->name, path)) break; } if (!ent) - vfs_die("find_linear: success but directory is not there\n"); + vfs_die ("find_linear: success but directory is not there\n"); #if 0 - if (!vfs_s_resolve_symlink(me, ent, follow)) return NULL; + if (!vfs_s_resolve_symlink (me, ent, follow)) return NULL; #endif return ent; } -vfs_s_inode *vfs_s_find_inode(vfs *me, vfs_s_inode *root, char *path, int follow, int flags) +vfs_s_inode * +vfs_s_find_inode (vfs *me, vfs_s_inode *root, char *path, int follow, int flags) { vfs_s_entry *ent; if ((MEDATA->find_entry == vfs_s_find_entry_tree) && (!*path)) @@ -316,41 +352,52 @@ return ent->ino; } -vfs_s_inode *vfs_s_find_root(vfs *me, vfs_s_entry *entry) -{ - vfs_die("Implement me"); - return NULL; -} - -vfs_s_entry *vfs_s_resolve_symlink (vfs *me, vfs_s_entry *entry, int follow) +vfs_s_entry * +vfs_s_resolve_symlink (vfs *me, vfs_s_entry *entry, char *path, int follow) { - vfs_s_inode *dir; if (follow == LINK_NO_FOLLOW) return entry; + if (follow == 0) ERRNOR (ELOOP, NULL); + if (!entry) ERRNOR (ENOENT, NULL); - if (!S_ISLNK(entry->ino->st.st_mode)) + + if (!S_ISLNK (entry->ino->st.st_mode)) return entry; - /* We have to handle "/" by ourself; "." and ".." have - corresponding entries, so there's no problem with them. - FIXME: no longer true */ - if (*entry->ino->linkname == '/') dir = vfs_s_find_root(me, entry); - else dir = entry->dir; - return (MEDATA->find_entry) (me, dir, entry->ino->linkname, follow-1, 0); + if (*entry->ino->linkname != PATH_SEP) + return (MEDATA->find_entry) (me, entry->dir, entry->ino->linkname, follow - 1, 0); + else { +/* convert the linkname to relative linkname with some leading ../ */ + char linkname[MC_MAXPATHLEN] = "", *p, *q; + for (p = path, q = entry->ino->linkname; *p == *q; p++, q++); + while (*(--q) != PATH_SEP); + q++; + for (;; p++){ + p = strchr (p, PATH_SEP); + if (!p){ + strcat (linkname, q); + break; + } + strcat (linkname, ".."); + strcat (linkname, PATH_SEP_STR); + } + return (MEDATA->find_entry) (me, entry->dir, linkname, follow - 1, 0); + } } /* Ook, these were functions around direcory entries / inodes */ /* -------------------------------- superblock games -------------------------- */ -vfs_s_super *vfs_s_new_super (vfs *me) +vfs_s_super * +vfs_s_new_super (vfs *me) { vfs_s_super *super; - super = xmalloc( sizeof( struct vfs_s_super ), "Direntry: superblock" ); - bzero(super, sizeof(struct vfs_s_super)); + super = xmalloc (sizeof (struct vfs_s_super), "Direntry: superblock"); + memset (super, 0, sizeof (struct vfs_s_super)); super->root = NULL; super->name = NULL; super->fd_usage = 0; @@ -359,18 +406,21 @@ return super; } -void vfs_s_insert_super (vfs *me, vfs_s_super *super) +void +vfs_s_insert_super (vfs *me, vfs_s_super *super) { super->next = MEDATA->supers; super->prevp = &MEDATA->supers; - if (MEDATA->supers != NULL) MEDATA->supers->prevp = &super->next; + if (MEDATA->supers != NULL) + MEDATA->supers->prevp = &super->next; MEDATA->supers = super; } -void vfs_s_free_super (vfs *me, vfs_s_super *super) +void +vfs_s_free_super (vfs *me, vfs_s_super *super) { - if (super->root) { + if (super->root){ vfs_s_free_inode (me, super->root); super->root = NULL; } @@ -381,29 +431,31 @@ message_1s1d (1, " Direntry warning ", "Super ino_usage is %d, memory leak", super->ino_usage); if (super->want_stale) - message_1s( 1, " Direntry warning ", "Super has want_stale set" ); + message_1s (1, " Direntry warning ", "Super has want_stale set"); #endif - if (super->prevp) { + if (super->prevp){ *super->prevp = super->next; - if (super->next) super->next->prevp = super->prevp; + if (super->next) + super->next->prevp = super->prevp; } - CALL(free_archive) (me, super); - ifree(super->name); + CALL (free_archive) (me, super); + ifree (super->name); super->name = NULL; - free(super); + free (super); } /* ------------------------------------------------------------------------= */ -static void vfs_s_stamp_me (vfs *me, struct vfs_s_super *psup, char *fs_name) +static void +vfs_s_stamp_me (vfs *me, struct vfs_s_super *psup, char *fs_name) { struct vfs_stamping *parent; vfs *v; v = vfs_type (fs_name); - if (v == &vfs_local_ops) { + if (v == &vfs_local_ops){ parent = NULL; } else { parent = xmalloc (sizeof (struct vfs_stamping), "vfs stamping"); @@ -415,7 +467,8 @@ vfs_rm_parents (parent); } -char *vfs_s_get_path_mangle (vfs *me, char *inname, struct vfs_s_super **archive, int flags) +char * +vfs_s_get_path_mangle (vfs *me, char *inname, struct vfs_s_super **archive, int flags) { char *local, *op, *archive_name; int result = -1; @@ -423,7 +476,7 @@ void *cookie; archive_name = inname; - vfs_split( inname, &local, &op ); + vfs_split (inname, &local, &op); if (!local) local = ""; @@ -431,9 +484,9 @@ if (! (cookie = MEDATA->archive_check (me, archive_name, op))) return NULL; - for (super = MEDATA->supers; super != NULL; super = super->next) { + for (super = MEDATA->supers; super != NULL; super = super->next){ int i; /* 0 == other, 1 == same, return it, 2 == other but stop scanning */ - if ((i = MEDATA->archive_same (me, super, archive_name, op, cookie))) { + if ((i = MEDATA->archive_same (me, super, archive_name, op, cookie))){ if (i==1) goto return_success; else break; } @@ -444,14 +497,14 @@ super = vfs_s_new_super (me); result = MEDATA->open_archive (me, super, archive_name, op); - if (result == -1) { + if (result == -1){ vfs_s_free_super (me, super); ERRNOR (EIO, NULL); } if (!super->name) - vfs_die( "You have to fill name\n" ); + vfs_die ("You have to fill name\n"); if (!super->root) - vfs_die( "You have to fill root inode\n" ); + vfs_die ("You have to fill root inode\n"); vfs_s_insert_super (me, super); vfs_s_stamp_me (me, super, archive_name); @@ -461,32 +514,40 @@ return local; } -char *vfs_s_get_path (vfs *me, char *inname, struct vfs_s_super **archive, int flags) +char * +vfs_s_get_path (vfs *me, char *inname, struct vfs_s_super **archive, int flags) { - char *buf = strdup( inname ); - char *res = vfs_s_get_path_mangle( me, buf, archive, flags ); + char *buf = strdup (inname); + char *res = vfs_s_get_path_mangle (me, buf, archive, flags); char *res2 = NULL; + if (res) - res2 = strdup(res); - free(buf); + res2 = strdup (res); + free (buf); + return res2; } -void vfs_s_invalidate (vfs *me, vfs_s_super *super) +void +vfs_s_invalidate (vfs *me, vfs_s_super *super) { - if (!super->want_stale) { - vfs_s_free_inode(me, super->root); - super->root = vfs_s_new_inode (me, super, vfs_s_default_stat(me, S_IFDIR | 0755)); + if (!super->want_stale){ + vfs_s_free_inode (me, super->root); + super->root = vfs_s_new_inode (me, super, vfs_s_default_stat (me, S_IFDIR | 0755)); } } -char *vfs_s_fullpath (vfs *me, vfs_s_inode *ino) -{ /* For now, usable only on filesystems with _linear structure */ +char * +vfs_s_fullpath (vfs *me, vfs_s_inode *ino) +{ +/* For now, usable only on filesystems with _linear structure */ if (MEDATA->find_entry != vfs_s_find_entry_linear) - vfs_die( "Implement me!" ); + vfs_die ("Implement me!"); + if ((!ino->ent) || (!ino->ent->dir) || (!ino->ent->dir->ent)) - ERRNOR(EAGAIN, NULL); - return copy_strings( ino->ent->dir->ent->name, "/", ino->ent->name, NULL ); + ERRNOR (EAGAIN, NULL); + + return copy_strings (ino->ent->dir->ent->name, "/", ino->ent->name, NULL); } /* Support of archives */ @@ -501,7 +562,8 @@ return super; } -vfs_s_inode *vfs_s_inode_from_path (vfs *me, char *name, int flags) +vfs_s_inode * +vfs_s_inode_from_path (vfs *me, char *name, int flags) { struct vfs_s_super *super; struct vfs_s_inode *ino; @@ -522,7 +584,8 @@ vfs_s_inode *dir; }; -void * vfs_s_opendir (vfs *me, char *dirname) +void * + vfs_s_opendir (vfs *me, char *dirname) { struct vfs_s_inode *dir; struct dirhandle *info; @@ -536,7 +599,7 @@ dir->st.st_nlink++; #if 0 if (!dir->subdir) /* This can actually happen if we allow empty directories */ - ERRNOR(EAGAIN, NULL); + ERRNOR (EAGAIN, NULL); #endif info = (struct dirhandle *) xmalloc (sizeof (struct dirhandle), "Shared opendir"); info->cur = dir->subdir; @@ -545,7 +608,8 @@ return info; } -void * vfs_s_readdir (void *data) +void * +vfs_s_readdir (void *data) { static struct { struct dirent dir; @@ -562,7 +626,7 @@ if (info->cur->name) strcpy (&(dir.dir.d_name [0]), info->cur->name); else - vfs_die( "Null in structure-can not happen"); + vfs_die ("Null in structure-can not happen"); #ifndef DIRENT_LENGTH_COMPUTED dir.d_namlen = strlen (dir.dir.d_name); @@ -572,14 +636,15 @@ return (void *)&dir; } -int vfs_s_telldir (void *data) +int +vfs_s_telldir (void *data) { struct dirhandle *info = (struct dirhandle *) data; struct vfs_s_entry *cur; int num = 0; cur = info->dir->subdir; - while (cur!=NULL) { + while (cur!=NULL){ if (cur == info->cur) return num; num++; @@ -588,78 +653,92 @@ return -1; } -void vfs_s_seekdir (void *data, int offset) +void +vfs_s_seekdir (void *data, int offset) { struct dirhandle *info = (struct dirhandle *) data; int i; + info->cur = info->dir->subdir; for (i=0; idir; - vfs_s_free_inode(dir->super->me, dir); + vfs_s_free_inode (dir->super->me, dir); free (data); + return 0; } -int vfs_s_chdir (vfs *me, char *path) +int +vfs_s_chdir (vfs *me, char *path) { void *data; - if (!(data = vfs_s_opendir( me, path ))) + if (!(data = vfs_s_opendir (me, path))) return -1; - vfs_s_closedir(data); + vfs_s_closedir (data); return 0; } /* --------------------------- stat and friends ---------------------------- */ -static int vfs_s_internal_stat (vfs *me, char *path, struct stat *buf, int flag) +static int +vfs_s_internal_stat (vfs *me, char *path, struct stat *buf, int flag) { struct vfs_s_inode *ino; - if (!(ino = vfs_s_inode_from_path( me, path, flag ))) + if (!(ino = vfs_s_inode_from_path (me, path, flag))) return -1; *buf = ino->st; return 0; } -int vfs_s_stat (vfs *me, char *path, struct stat *buf) +int +vfs_s_stat (vfs *me, char *path, struct stat *buf) { return vfs_s_internal_stat (me, path, buf, FL_FOLLOW); } -int vfs_s_lstat (vfs *me, char *path, struct stat *buf) +int +vfs_s_lstat (vfs *me, char *path, struct stat *buf) { return vfs_s_internal_stat (me, path, buf, FL_NONE); } -int vfs_s_fstat (void *fh, struct stat *buf) +int +vfs_s_fstat (void *fh, struct stat *buf) { *buf = FH->ino->st; + return 0; } -int vfs_s_readlink (vfs *me, char *path, char *buf, int size) +int +vfs_s_readlink (vfs *me, char *path, char *buf, int size) { struct vfs_s_inode *ino; - ino = vfs_s_inode_from_path(me, path, 0); + ino = vfs_s_inode_from_path (me, path, 0); if (!ino) return -1; if (!S_ISLNK (ino->st.st_mode)) ERRNOR (EINVAL, -1); + strncpy (buf, ino->linkname, size); *(buf+size-1) = 0; - return strlen(buf); + + return strlen (buf); } -void *vfs_s_open (vfs *me, char *file, int flags, int mode) +void * +vfs_s_open (vfs *me, char *file, int flags, int mode) { int was_changed = 0; struct vfs_s_fh *fh; @@ -672,22 +751,23 @@ ino = vfs_s_find_inode (me, super->root, q, LINK_FOLLOW, FL_NONE); if (ino && ((flags & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL))) ERRNOR (EEXIST, NULL); - if (!ino) { + if (!ino){ char *dirname, *name, *save; vfs_s_entry *ent; vfs_s_inode *dir; if (!(flags & O_CREAT)) return NULL; - split_dir_name(me, q, &dirname, &name, &save); + split_dir_name (me, q, &dirname, &name, &save); + /* FIXME: if vfs_s_find_inode returns NULL, this will do rather bad things. */ - dir = vfs_s_find_inode(me, super->root, dirname, LINK_FOLLOW, FL_DIR); + dir = vfs_s_find_inode (me, super->root, dirname, LINK_FOLLOW, FL_DIR); if (save) - *save = DIR_SEP_CHAR; + *save = PATH_SEP; ent = vfs_s_generate_entry (me, name, dir, 0755); ino = ent->ino; - vfs_s_insert_entry(me, dir, ent); + vfs_s_insert_entry (me, dir, ent); ino->localname = tempnam (NULL, me->name); was_changed = 1; } @@ -702,16 +782,16 @@ fh->changed = was_changed; fh->linear = 0; if (MEDATA->fh_open) - if (MEDATA->fh_open (me, fh, flags, mode)) { - free(fh); + if (MEDATA->fh_open (me, fh, flags, mode)){ + free (fh); return NULL; } - if (fh->ino->localname) { - fh->handle = open(fh->ino->localname, flags, mode); - if (fh->handle == -1) { - free(fh); - ERRNOR(errno, NULL); + if (fh->ino->localname){ + fh->handle = open (fh->ino->localname, flags, mode); + if (fh->handle == -1){ + free (fh); + ERRNOR (errno, NULL); } } @@ -722,12 +802,13 @@ return fh; } -int vfs_s_read (void *fh, char *buffer, int count) +int +vfs_s_read (void *fh, char *buffer, int count) { int n; vfs *me = FH_SUPER->me; - if (FH->linear == LS_LINEAR_CLOSED) { + if (FH->linear == LS_LINEAR_CLOSED){ print_vfs_message ("Starting linear transfer..."); if (!MEDATA->linear_start (me, FH, 0)) return -1; @@ -739,47 +820,49 @@ if (FH->linear == LS_LINEAR_OPEN) return MEDATA->linear_read (me, FH, buffer, count); - if (FH->handle) { + if (FH->handle){ n = read (FH->handle, buffer, count); if (n < 0) me->verrno = errno; return n; } - vfs_die( "vfs_s_read: This should not happen\n" ); + vfs_die ("vfs_s_read: This should not happen\n"); return -1; } -int vfs_s_write (void *fh, char *buffer, int count) +int +vfs_s_write (void *fh, char *buffer, int count) { int n; vfs *me = FH_SUPER->me; if (FH->linear) - vfs_die ("no writing to linear files, please" ); + vfs_die ("no writing to linear files, please"); FH->changed = 1; - if (FH->handle) { + if (FH->handle){ n = write (FH->handle, buffer, count); if (n < 0) me->verrno = errno; return n; } - vfs_die( "vfs_s_write: This should not happen\n" ); + vfs_die ("vfs_s_write: This should not happen\n"); return 0; } -int vfs_s_lseek (void *fh, off_t offset, int whence) +int +vfs_s_lseek (void *fh, off_t offset, int whence) { off_t size = FH->ino->st.st_size; - if (FH->handle != -1) { /* If we have local file opened, we want to work with it */ - int retval = lseek(FH->handle, offset, whence); + if (FH->handle != -1){ /* If we have local file opened, we want to work with it */ + int retval = lseek (FH->handle, offset, whence); if (retval == -1) FH->ino->super->me->verrno = errno; return retval; } - switch (whence) { + switch (whence){ case SEEK_CUR: offset += FH->pos; break; case SEEK_END: @@ -794,18 +877,19 @@ return FH->pos; } -int vfs_s_close (void *fh) +int +vfs_s_close (void *fh) { int res = 0; vfs *me = FH_SUPER->me; FH_SUPER->fd_usage--; - if (!FH_SUPER->fd_usage) { + if (!FH_SUPER->fd_usage){ struct vfs_stamping *parent; vfs *v; v = vfs_type (FH_SUPER->name); - if (v == &vfs_local_ops) { + if (v == &vfs_local_ops){ parent = NULL; } else { parent = xmalloc (sizeof (struct vfs_stamping), "vfs stamping"); @@ -820,16 +904,16 @@ MEDATA->linear_close (me, fh); if (MEDATA->fh_close) res = MEDATA->fh_close (me, fh); - if (FH->changed && MEDATA->file_store) { - char *s = vfs_s_fullpath( me, FH->ino ); + if (FH->changed && MEDATA->file_store){ + char *s = vfs_s_fullpath (me, FH->ino); if (!s) res = -1; else res = MEDATA->file_store (me, FH_SUPER, s, FH->ino->localname); - vfs_s_invalidate(me, FH_SUPER); + vfs_s_invalidate (me, FH_SUPER); } if (FH->handle) - close(FH->handle); + close (FH->handle); vfs_s_free_inode (me, FH->ino); free (fh); @@ -838,13 +922,14 @@ /* ------------------------------- mc support ---------------------------- */ -void vfs_s_fill_names (vfs *me, void (*func)(char *)) +void +vfs_s_fill_names (vfs *me, void (*func)(char *)) { struct vfs_s_super *a = MEDATA->supers; char *name; while (a){ - name = copy_strings ( a->name, "#", me->prefix, "/", + name = copy_strings (a->name, "#", me->prefix, "/", /* a->current_dir->name, */ 0); (*func)(name); free (name); @@ -853,15 +938,15 @@ } int -vfs_s_ferrno(vfs *me) +vfs_s_ferrno (vfs *me) { return me->verrno; } void -vfs_s_dump(vfs *me, char *prefix, vfs_s_inode *ino) +vfs_s_dump (vfs *me, char *prefix, vfs_s_inode *ino) { - printf( "%s %s %d ", prefix, S_ISDIR(ino->st.st_mode) ? "DIR" : "FILE", ino->st.st_mode ); + printf ("%s %s %d ", prefix, S_ISDIR (ino->st.st_mode) ? "DIR" : "FILE", ino->st.st_mode); if (!ino->subdir) printf ("FILE\n"); @@ -869,25 +954,26 @@ { struct vfs_s_entry *ent; ent = ino->subdir; - while(ent) { + while (ent){ char *s; - s = copy_strings(prefix, "/", ent->name, NULL ); + s = copy_strings (prefix, "/", ent->name, NULL); if (ent->name[0] == '.') - printf("%s IGNORED\n", s); + printf ("%s IGNORED\n", s); else - vfs_s_dump(me, s, ent->ino); - free(s); + vfs_s_dump (me, s, ent->ino); + free (s); ent = ent->next; } } } -char *vfs_s_getlocalcopy (vfs *me, char *path) +char * +vfs_s_getlocalcopy (vfs *me, char *path) { struct vfs_s_inode *ino; char buf[MC_MAXPATHLEN]; - strcpy( buf, path ); + strcpy (buf, path); ino = vfs_s_inode_from_path (me, path, FL_FOLLOW | FL_NONE); if (!ino->localname) @@ -899,32 +985,36 @@ int vfs_s_setctl (vfs *me, char *path, int ctlop, char *arg) { - vfs_s_inode *ino = vfs_s_inode_from_path(me, path, 0); + vfs_s_inode *ino = vfs_s_inode_from_path (me, path, 0); + if (!ino) return 0; - switch (ctlop) { - case MCCTL_WANT_STALE_DATA: - ino->super->want_stale = 1; - return 1; - case MCCTL_NO_STALE_DATA: - ino->super->want_stale = 0; - vfs_s_invalidate(me, ino->super); - return 1; + + switch (ctlop){ + case MCCTL_WANT_STALE_DATA: + ino->super->want_stale = 1; + return 1; + case MCCTL_NO_STALE_DATA: + ino->super->want_stale = 0; + vfs_s_invalidate(me, ino->super); + return 1; #if 0 /* FIXME: We should implement these */ - case MCCTL_REMOVELOCALCOPY: - return remove_temp_file (path); - case MCCTL_FORGET_ABOUT: - my_forget(path); - return 0; + case MCCTL_REMOVELOCALCOPY: + return remove_temp_file (path); + case MCCTL_FORGET_ABOUT: + my_forget(path); + return 0; #endif } + return 0; } /* ----------------------------- Stamping support -------------------------- */ -vfsid vfs_s_getid (vfs *me, char *path, struct vfs_stamping **parent) +vfsid +vfs_s_getid (vfs *me, char *path, struct vfs_stamping **parent) { vfs_s_super *archive; vfs *v; @@ -935,10 +1025,13 @@ *parent = NULL; if (!(p = vfs_s_get_path (me, path, &archive, FL_NO_OPEN))) return (vfsid) -1; - free(p); + + free (p); + v = vfs_type (archive->name); id = (*v->getid) (v, archive->name, &par); - if (id != (vfsid)-1) { + + if (id != (vfsid)-1){ *parent = xmalloc (sizeof (struct vfs_stamping), "vfs stamping"); (*parent)->v = v; (*parent)->id = id; @@ -948,7 +1041,8 @@ return (vfsid) archive; } -int vfs_s_nothingisopen (vfsid id) +int +vfs_s_nothingisopen (vfsid id) { if (((vfs_s_super *)id)->fd_usage <= 0) return 1; @@ -956,7 +1050,8 @@ return 0; } -void vfs_s_free (vfsid id) +void +vfs_s_free (vfsid id) { vfs_s_free_super (((vfs_s_super *)id)->me, (vfs_s_super *)id); } @@ -973,9 +1068,9 @@ timeout.tv_sec = 1; timeout.tv_usec = 0; - FD_ZERO(&set); - FD_SET(fd1, &set); - FD_SET(fd2, &set); + FD_ZERO (&set); + FD_SET (fd1, &set); + FD_SET (fd2, &set); v = select (maxfd, &set, 0, 0, &timeout); if (v <= 0) return v; @@ -993,20 +1088,20 @@ int i, status; char c; - for (i = 0; i < buf_len; i++, buf++) { - if (read(sock, buf, sizeof(char)) <= 0) + for (i = 0; i < buf_len; i++, buf++){ + if (read (sock, buf, sizeof(char)) <= 0) return 0; if (logfile){ fwrite (buf, 1, 1, logfile); fflush (logfile); } - if (*buf == term) { + if (*buf == term){ *buf = 0; return 1; } } *buf = 0; - while ((status = read(sock, &c, sizeof(c))) > 0){ + while ((status = read (sock, &c, sizeof (c))) > 0){ if (logfile){ fwrite (&c, 1, 1, logfile); fflush (logfile); @@ -1023,10 +1118,10 @@ int n; int i = 0; - enable_interrupt_key(); - for (i = 0; i < size-1; i++) { + enable_interrupt_key (); + for (i = 0; i < size-1; i++){ n = read (fd, buffer+i, 1); - disable_interrupt_key(); + disable_interrupt_key (); if (n == -1 && errno == EINTR){ buffer [i] = 0; return EINTR; diff -ruN old/mc-4.5.7/vfs/vfs.c new/mc-4.5.9/vfs/vfs.c --- old/mc-4.5.7/vfs/vfs.c Tue Jan 12 22:38:06 1999 +++ new/mc-4.5.9/vfs/vfs.c Mon Jan 18 17:44:08 1999 @@ -634,11 +634,8 @@ mc_get_current_wd (char *buffer, int size) { char *cwd = mc_return_cwd(); - - if (strlen (cwd) > size) - vfs_die ("Current_dir size overflow.\n"); - strcpy (buffer, cwd); + strncpy (buffer, cwd, size); return buffer; } diff -ruN old/mc-4.5.7/vfs/vfs.h new/mc-4.5.9/vfs/vfs.h --- old/mc-4.5.7/vfs/vfs.h Tue Jan 12 22:38:06 1999 +++ new/mc-4.5.9/vfs/vfs.h Mon Jan 18 17:44:08 1999 @@ -38,7 +38,7 @@ #endif /* Our virtual file system layer */ - + typedef void * vfsid; struct vfs_stamping; @@ -402,8 +402,6 @@ #else #define MMAPNULL #endif - -#define DIR_SEP_CHAR '/' /* And now some defines for our errors. */ diff -ruN old/mc-4.5.7/vfs/xdirentry.h new/mc-4.5.9/vfs/xdirentry.h --- old/mc-4.5.7/vfs/xdirentry.h Tue Jan 12 22:38:06 1999 +++ new/mc-4.5.9/vfs/xdirentry.h Mon Jan 18 17:44:08 1999 @@ -166,7 +166,7 @@ vfs_s_inode *vfs_s_find_inode (vfs *me, vfs_s_inode *root, char *path, int follow, int flags); vfs_s_inode *vfs_s_find_root (vfs *me, vfs_s_entry *entry); -vfs_s_entry *vfs_s_resolve_symlink (vfs *me, vfs_s_entry *entry, +vfs_s_entry *vfs_s_resolve_symlink (vfs *me, vfs_s_entry *entry, char *path, int follow); /* superblock games */