mirror of
https://github.com/MidnightCommander/mc
synced 2024-12-22 20:36:50 +03:00
Init/deinit clean up
...to provide symmetrical usage of init/deinit functions. Signed-off-by: Andrew Borodin <aborodin@vmail.ru> Signed-off-by: Slava Zanko <slavazanko@gmail.com>
This commit is contained in:
parent
fdb61594df
commit
116fdc4220
33
src/main.c
33
src/main.c
@ -46,9 +46,10 @@
|
|||||||
#include "lib/tty/win.h" /* xterm_flag */
|
#include "lib/tty/win.h" /* xterm_flag */
|
||||||
#include "lib/skin.h"
|
#include "lib/skin.h"
|
||||||
#include "lib/filehighlight.h"
|
#include "lib/filehighlight.h"
|
||||||
|
#include "lib/fileloc.h"
|
||||||
#include "lib/strutil.h"
|
#include "lib/strutil.h"
|
||||||
#include "lib/util.h"
|
#include "lib/util.h"
|
||||||
#include "lib/vfs/mc-vfs/vfs.h" /* vfs_translate_url() */
|
#include "lib/vfs/mc-vfs/vfs.h" /* vfs_init(), vfs_shut() */
|
||||||
|
|
||||||
#include "args.h"
|
#include "args.h"
|
||||||
#include "midnight.h" /* current_panel */
|
#include "midnight.h" /* current_panel */
|
||||||
@ -58,11 +59,6 @@
|
|||||||
#include "layout.h" /* command_prompt */
|
#include "layout.h" /* command_prompt */
|
||||||
#include "ext.h" /* flush_extension_file() */
|
#include "ext.h" /* flush_extension_file() */
|
||||||
#include "command.h" /* cmdline */
|
#include "command.h" /* cmdline */
|
||||||
#include "clipboard.h" /* clipboard_store_path, clipboard_store_path */
|
|
||||||
|
|
||||||
#ifdef USE_INTERNAL_EDIT
|
|
||||||
#include "src/editor/edit.h" /* edit_stack_init(), edit_stack_free() */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAVE_CHARSET
|
#ifdef HAVE_CHARSET
|
||||||
#include "lib/charsets.h"
|
#include "lib/charsets.h"
|
||||||
@ -213,7 +209,7 @@ OS_Setup (void)
|
|||||||
/* This variable is used by the subshell */
|
/* This variable is used by the subshell */
|
||||||
home_dir = getenv ("HOME");
|
home_dir = getenv ("HOME");
|
||||||
|
|
||||||
if (!home_dir)
|
if (home_dir == NULL)
|
||||||
home_dir = mc_home;
|
home_dir = mc_home;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -440,10 +436,6 @@ main (int argc, char *argv[])
|
|||||||
|
|
||||||
vfs_init ();
|
vfs_init ();
|
||||||
|
|
||||||
#ifdef USE_INTERNAL_EDIT
|
|
||||||
edit_stack_init ();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (!mc_args_handle (argc, argv, "mc"))
|
if (!mc_args_handle (argc, argv, "mc"))
|
||||||
exit (EXIT_FAILURE);
|
exit (EXIT_FAILURE);
|
||||||
|
|
||||||
@ -484,11 +476,8 @@ main (int argc, char *argv[])
|
|||||||
load_keymap_defs ();
|
load_keymap_defs ();
|
||||||
|
|
||||||
tty_init_colors (mc_args__disable_colors, mc_args__force_colors);
|
tty_init_colors (mc_args__disable_colors, mc_args__force_colors);
|
||||||
|
|
||||||
isInitialized = mc_skin_init (&error);
|
isInitialized = mc_skin_init (&error);
|
||||||
|
|
||||||
mc_filehighlight = mc_fhl_new (TRUE);
|
mc_filehighlight = mc_fhl_new (TRUE);
|
||||||
|
|
||||||
dlg_set_default_colors ();
|
dlg_set_default_colors ();
|
||||||
|
|
||||||
if (!isInitialized)
|
if (!isInitialized)
|
||||||
@ -500,7 +489,7 @@ main (int argc, char *argv[])
|
|||||||
|
|
||||||
/* create home directory */
|
/* create home directory */
|
||||||
/* do it after the screen library initialization to show the error message */
|
/* do it after the screen library initialization to show the error message */
|
||||||
mc_dir = concat_dir_and_file (home_dir, MC_USERCONF_DIR);
|
mc_dir = g_build_filename (home_dir, MC_USERCONF_DIR, (char *) NULL);
|
||||||
canonicalize_pathname (mc_dir);
|
canonicalize_pathname (mc_dir);
|
||||||
if ((stat (mc_dir, &s) != 0) && (errno == ENOENT) && mkdir (mc_dir, 0700) != 0)
|
if ((stat (mc_dir, &s) != 0) && (errno == ENOENT) && mkdir (mc_dir, 0700) != 0)
|
||||||
message (D_ERROR, _("Warning"), _("Cannot create %s directory"), mc_dir);
|
message (D_ERROR, _("Warning"), _("Cannot create %s directory"), mc_dir);
|
||||||
@ -548,9 +537,12 @@ main (int argc, char *argv[])
|
|||||||
|
|
||||||
mc_fhl_free (&mc_filehighlight);
|
mc_fhl_free (&mc_filehighlight);
|
||||||
mc_skin_deinit ();
|
mc_skin_deinit ();
|
||||||
|
tty_colors_done ();
|
||||||
|
|
||||||
tty_shutdown ();
|
tty_shutdown ();
|
||||||
|
|
||||||
|
done_setup ();
|
||||||
|
|
||||||
if (console_flag && (quit & SUBSHELL_EXIT) == 0)
|
if (console_flag && (quit & SUBSHELL_EXIT) == 0)
|
||||||
handle_console (CONSOLE_RESTORE);
|
handle_console (CONSOLE_RESTORE);
|
||||||
if (alternate_plus_minus)
|
if (alternate_plus_minus)
|
||||||
@ -560,7 +552,6 @@ main (int argc, char *argv[])
|
|||||||
|
|
||||||
if (console_flag)
|
if (console_flag)
|
||||||
handle_console (CONSOLE_DONE);
|
handle_console (CONSOLE_DONE);
|
||||||
putchar ('\n'); /* Hack to make shell's prompt start at left of screen */
|
|
||||||
|
|
||||||
if (mc_run_mode == MC_RUN_FULL && mc_args__last_wd_file != NULL
|
if (mc_run_mode == MC_RUN_FULL && mc_args__last_wd_file != NULL
|
||||||
&& last_wd_string != NULL && !print_last_revert)
|
&& last_wd_string != NULL && !print_last_revert)
|
||||||
@ -584,21 +575,13 @@ main (int argc, char *argv[])
|
|||||||
g_free (shell);
|
g_free (shell);
|
||||||
|
|
||||||
done_key ();
|
done_key ();
|
||||||
#ifdef HAVE_CHARSET
|
|
||||||
free_codepages_list ();
|
|
||||||
g_free (autodetect_codeset);
|
|
||||||
#endif
|
|
||||||
g_free (clipboard_store_path);
|
|
||||||
g_free (clipboard_paste_path);
|
|
||||||
|
|
||||||
str_uninit_strings ();
|
str_uninit_strings ();
|
||||||
|
|
||||||
g_free (mc_run_param0);
|
g_free (mc_run_param0);
|
||||||
g_free (mc_run_param1);
|
g_free (mc_run_param1);
|
||||||
|
|
||||||
#ifdef USE_INTERNAL_EDIT
|
putchar ('\n'); /* Hack to make shell's prompt start at left of screen */
|
||||||
edit_stack_free ();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -44,6 +44,7 @@
|
|||||||
|
|
||||||
#include "lib/tty/tty.h"
|
#include "lib/tty/tty.h"
|
||||||
#include "lib/tty/key.h" /* For init_key() */
|
#include "lib/tty/key.h" /* For init_key() */
|
||||||
|
#include "lib/tty/mouse.h"
|
||||||
#include "lib/tty/win.h" /* xterm_flag */
|
#include "lib/tty/win.h" /* xterm_flag */
|
||||||
#include "lib/skin.h"
|
#include "lib/skin.h"
|
||||||
#include "lib/util.h"
|
#include "lib/util.h"
|
||||||
@ -821,7 +822,6 @@ done_screen (void)
|
|||||||
tty_reset_shell_mode ();
|
tty_reset_shell_mode ();
|
||||||
tty_noraw_mode ();
|
tty_noraw_mode ();
|
||||||
tty_keypad (FALSE);
|
tty_keypad (FALSE);
|
||||||
tty_colors_done ();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
@ -934,7 +934,6 @@ mc_maybe_editor_or_viewer (void)
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
midnight_shutdown = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
@ -1284,6 +1283,7 @@ midnight_callback (Dlg_head * h, Widget * sender, dlg_msg_t msg, int parm, void
|
|||||||
switch (msg)
|
switch (msg)
|
||||||
{
|
{
|
||||||
case DLG_INIT:
|
case DLG_INIT:
|
||||||
|
panel_init ();
|
||||||
setup_panels ();
|
setup_panels ();
|
||||||
return MSG_HANDLED;
|
return MSG_HANDLED;
|
||||||
|
|
||||||
@ -1464,6 +1464,10 @@ midnight_callback (Dlg_head * h, Widget * sender, dlg_msg_t msg, int parm, void
|
|||||||
}
|
}
|
||||||
return MSG_HANDLED;
|
return MSG_HANDLED;
|
||||||
|
|
||||||
|
case DLG_END:
|
||||||
|
panel_deinit ();
|
||||||
|
return MSG_HANDLED;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return default_dlg_callback (h, sender, msg, parm, data);
|
return default_dlg_callback (h, sender, msg, parm, data);
|
||||||
}
|
}
|
||||||
@ -1574,13 +1578,16 @@ void
|
|||||||
do_nc (void)
|
do_nc (void)
|
||||||
{
|
{
|
||||||
dlg_colors_t midnight_colors;
|
dlg_colors_t midnight_colors;
|
||||||
|
|
||||||
midnight_colors[DLG_COLOR_NORMAL] = mc_skin_color_get ("dialog", "_default_");
|
midnight_colors[DLG_COLOR_NORMAL] = mc_skin_color_get ("dialog", "_default_");
|
||||||
midnight_colors[DLG_COLOR_FOCUS] = mc_skin_color_get ("dialog", "focus");
|
midnight_colors[DLG_COLOR_FOCUS] = mc_skin_color_get ("dialog", "focus");
|
||||||
midnight_colors[DLG_COLOR_HOT_NORMAL] = mc_skin_color_get ("dialog", "hotnormal");
|
midnight_colors[DLG_COLOR_HOT_NORMAL] = mc_skin_color_get ("dialog", "hotnormal");
|
||||||
midnight_colors[DLG_COLOR_HOT_FOCUS] = mc_skin_color_get ("dialog", "hotfocus");
|
midnight_colors[DLG_COLOR_HOT_FOCUS] = mc_skin_color_get ("dialog", "hotfocus");
|
||||||
midnight_colors[DLG_COLOR_TITLE] = mc_skin_color_get ("dialog", "title");
|
midnight_colors[DLG_COLOR_TITLE] = mc_skin_color_get ("dialog", "title");
|
||||||
|
|
||||||
panel_init ();
|
#ifdef USE_INTERNAL_EDIT
|
||||||
|
edit_stack_init ();
|
||||||
|
#endif
|
||||||
|
|
||||||
midnight_dlg = create_dlg (FALSE, 0, 0, LINES, COLS, midnight_colors, midnight_callback,
|
midnight_dlg = create_dlg (FALSE, 0, 0, LINES, COLS, midnight_colors, midnight_callback,
|
||||||
"[main]", NULL, DLG_WANT_IDLE);
|
"[main]", NULL, DLG_WANT_IDLE);
|
||||||
@ -1597,20 +1604,21 @@ do_nc (void)
|
|||||||
{
|
{
|
||||||
create_panels_and_run_mc ();
|
create_panels_and_run_mc ();
|
||||||
|
|
||||||
/* Program end */
|
|
||||||
midnight_shutdown = 1;
|
|
||||||
|
|
||||||
/* destroy_dlg destroys even current_panel->cwd, so we have to save a copy :) */
|
/* destroy_dlg destroys even current_panel->cwd, so we have to save a copy :) */
|
||||||
if (mc_args__last_wd_file != NULL && vfs_current_is_local ())
|
if (mc_args__last_wd_file != NULL && vfs_current_is_local ())
|
||||||
last_wd_string = g_strdup (current_panel->cwd);
|
last_wd_string = g_strdup (current_panel->cwd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Program end */
|
||||||
|
midnight_shutdown = 1;
|
||||||
dialog_switch_shutdown ();
|
dialog_switch_shutdown ();
|
||||||
done_mc ();
|
done_mc ();
|
||||||
destroy_dlg (midnight_dlg);
|
destroy_dlg (midnight_dlg);
|
||||||
panel_deinit ();
|
current_panel = NULL;
|
||||||
current_panel = 0;
|
|
||||||
done_setup ();
|
#ifdef USE_INTERNAL_EDIT
|
||||||
|
edit_stack_free ();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
@ -990,6 +990,8 @@ done_setup (void)
|
|||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
|
g_free (clipboard_store_path);
|
||||||
|
g_free (clipboard_paste_path);
|
||||||
g_free (profile_name);
|
g_free (profile_name);
|
||||||
g_free (global_profile_name);
|
g_free (global_profile_name);
|
||||||
g_free (color_terminal_string);
|
g_free (color_terminal_string);
|
||||||
@ -1008,6 +1010,11 @@ done_setup (void)
|
|||||||
done_hotlist ();
|
done_hotlist ();
|
||||||
done_panelize ();
|
done_panelize ();
|
||||||
/* directory_history_free (); */
|
/* directory_history_free (); */
|
||||||
|
|
||||||
|
#ifdef HAVE_CHARSET
|
||||||
|
g_free (autodetect_codeset);
|
||||||
|
free_codepages_list ();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
Loading…
Reference in New Issue
Block a user