- More cleanups with DISABLE flags, better free_shortcutage and free_toggle, and get rid of unnecessary variable decls with NANO_SMALL in shortcut_init() by David Benbennick

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1194 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
This commit is contained in:
Chris Allegretta 2002-04-23 10:56:06 +00:00
parent b275175bef
commit dab017e786
6 changed files with 269 additions and 200 deletions

View File

@ -15,6 +15,9 @@ CVS code -
- Change from read() and write() to file streams by Jay Carlson. - Change from read() and write() to file streams by Jay Carlson.
Allows OS to implement read and write ahead rather than making Allows OS to implement read and write ahead rather than making
us do it. Hopefully merged properly. us do it. Hopefully merged properly.
- More cleanups with DISABLE flags, better free_shortcutage and
free_toggle, and get rid of unnecessary variable decls with
NANO_SMALL in shortcut_init() by David Benbennick.
- configure.ac: - configure.ac:
- Define NDEBUG to silence asserts (David Benbennick). - Define NDEBUG to silence asserts (David Benbennick).
- files.c: - files.c:

393
global.c
View File

@ -21,6 +21,7 @@
#include "config.h" #include "config.h"
#include <assert.h>
#include <sys/stat.h> #include <sys/stat.h>
#include "nano.h" #include "nano.h"
#include "proto.h" #include "proto.h"
@ -132,20 +133,24 @@ regmatch_t colormatches[1]; /* Match positions for parenthetical */
#endif #endif
int length_of_list(shortcut *s) int length_of_list(const shortcut *s)
{ {
int i = 0; int i = 0;
shortcut *t;
for (t = s; t != NULL; t = t->next) for (; s != NULL; s = s->next)
i++; i++;
return i; return i;
} }
/* Initialize a struct *without* our lovely braces =( */ /* Initialize a struct *without* our lovely braces =( */
void sc_init_one(shortcut **shortcutage, int key, char *desc, char *help, int alt, static void sc_init_one(shortcut **shortcutage, int key,
int misc1, int misc2, int view, int (*func) (void)) const char *desc,
#ifndef DISABLE_HELP
const char *help,
#endif /* !DISABLE_HELP */
int alt, int misc1, int misc2, int view,
int (*func) (void))
{ {
shortcut *s; shortcut *s;
@ -161,7 +166,9 @@ void sc_init_one(shortcut **shortcutage, int key, char *desc, char *help, int al
s->val = key; s->val = key;
s->desc = desc; s->desc = desc;
#ifndef DISABLE_HELP
s->help = help; s->help = help;
#endif /* !DISABLE_HELP */
s->altval = alt; s->altval = alt;
s->misc1 = misc1; s->misc1 = misc1;
s->misc2 = misc2; s->misc2 = misc2;
@ -171,8 +178,9 @@ void sc_init_one(shortcut **shortcutage, int key, char *desc, char *help, int al
} }
#ifndef NANO_SMALL #ifndef NANO_SMALL
/* Initialize the toggles in the same manner */ /* Create one new toggle structure, at the end of the toggles
void toggle_init_one(int val, char *desc, int flag) * linked list. */
static void toggle_init_one(int val, const char *desc, int flag)
{ {
toggle *u; toggle *u;
@ -191,11 +199,22 @@ void toggle_init_one(int val, char *desc, int flag)
u->flag = flag; u->flag = flag;
u->next = NULL; u->next = NULL;
} }
#endif
void toggle_init(void) /* Deallocate all of the toggles */
static void free_toggles(void)
{
toggle *pt; /* Think "previous toggle" */
while (toggles != NULL) {
pt = toggles;
toggles = toggles->next;
free(pt);
}
toggles = NULL;
}
static void toggle_init(void)
{ {
#ifndef NANO_SMALL
char *toggle_const_msg, *toggle_autoindent_msg, *toggle_suspend_msg, char *toggle_const_msg, *toggle_autoindent_msg, *toggle_suspend_msg,
*toggle_nohelp_msg, *toggle_picomode_msg, *toggle_mouse_msg, *toggle_nohelp_msg, *toggle_picomode_msg, *toggle_mouse_msg,
*toggle_cuttoend_msg, *toggle_wrap_msg, *toggle_case_msg, *toggle_cuttoend_msg, *toggle_wrap_msg, *toggle_case_msg,
@ -234,6 +253,8 @@ void toggle_init(void)
toggle_load_msg = _("Multiple file buffers"); toggle_load_msg = _("Multiple file buffers");
#endif #endif
free_toggles();
toggle_init_one(TOGGLE_CONST_KEY, toggle_const_msg, CONSTUPDATE); toggle_init_one(TOGGLE_CONST_KEY, toggle_const_msg, CONSTUPDATE);
toggle_init_one(TOGGLE_AUTOINDENT_KEY, toggle_autoindent_msg, AUTOINDENT); toggle_init_one(TOGGLE_AUTOINDENT_KEY, toggle_autoindent_msg, AUTOINDENT);
toggle_init_one(TOGGLE_SUSPEND_KEY, toggle_suspend_msg, SUSPEND); toggle_init_one(TOGGLE_SUSPEND_KEY, toggle_suspend_msg, SUSPEND);
@ -254,11 +275,28 @@ void toggle_init(void)
toggle_init_one(TOGGLE_DOS_KEY, toggle_dos_msg, DOS_FILE); toggle_init_one(TOGGLE_DOS_KEY, toggle_dos_msg, DOS_FILE);
toggle_init_one(TOGGLE_MAC_KEY, toggle_mac_msg, MAC_FILE); toggle_init_one(TOGGLE_MAC_KEY, toggle_mac_msg, MAC_FILE);
toggle_init_one(TOGGLE_SMOOTH_KEY, toggle_smooth_msg, SMOOTHSCROLL); toggle_init_one(TOGGLE_SMOOTH_KEY, toggle_smooth_msg, SMOOTHSCROLL);
}
#endif /* !NANO_SMALL */ #endif /* !NANO_SMALL */
/* Deallocate the given shortcut. */
static void free_shortcutage(shortcut **shortcutage)
{
shortcut *s, *ps;
assert(shortcutage != NULL);
s = *shortcutage;
while (s != NULL) {
ps = s;
s = s->next;
free(ps);
}
*shortcutage = NULL;
} }
void shortcut_init(int unjustify) void shortcut_init(int unjustify)
{ {
#ifndef DISABLE_HELP
char *nano_help_msg = "", *nano_writeout_msg = "", *nano_exit_msg = "", char *nano_help_msg = "", *nano_writeout_msg = "", *nano_exit_msg = "",
*nano_goto_msg = "", *nano_justify_msg = "", *nano_replace_msg = *nano_goto_msg = "", *nano_justify_msg = "", *nano_replace_msg =
"", *nano_insert_msg = "", *nano_whereis_msg = "", *nano_insert_msg = "", *nano_whereis_msg =
@ -278,7 +316,6 @@ void shortcut_init(int unjustify)
char *nano_openprev_msg = "", *nano_opennext_msg = ""; char *nano_openprev_msg = "", *nano_opennext_msg = "";
#endif #endif
#ifndef NANO_SMALL
char *nano_tofiles_msg = "", *nano_gotodir_msg = "", *nano_case_msg = char *nano_tofiles_msg = "", *nano_gotodir_msg = "", *nano_case_msg =
"", *nano_reverse_msg = "", *nano_execute_msg = ""; "", *nano_reverse_msg = "", *nano_execute_msg = "";
char *nano_dos_msg = "", *nano_mac_msg = ""; char *nano_dos_msg = "", *nano_mac_msg = "";
@ -342,41 +379,52 @@ void shortcut_init(int unjustify)
nano_openprev_msg = _("Open previously loaded file"); nano_openprev_msg = _("Open previously loaded file");
nano_opennext_msg = _("Open next loaded file"); nano_opennext_msg = _("Open next loaded file");
#endif #endif
#endif /* !NANO_SMALL */ #endif /* !DISABLE_HELP */
if (main_list != NULL) free_shortcutage(&main_list);
free_shortcutage(&main_list);
sc_init_one(&main_list, NANO_HELP_KEY, _("Get Help"), /* The following macro is to be used in calling sc_init_one. The point is
nano_help_msg, 0, NANO_HELP_FKEY, 0, VIEW, do_help); * that sc_init_one takes 9 arguments, unless DISABLE_HELP is defined,
* when the fourth one should not be there. */
#ifdef DISABLE_HELP
# define IFHELP(help, nextvar) nextvar
#else
# define IFHELP(help, nextvar) help, nextvar
#endif
sc_init_one(&main_list, NANO_HELP_KEY, _("Get Help"),
IFHELP(nano_help_msg,) 0, NANO_HELP_FKEY, 0, VIEW,
do_help);
#ifdef ENABLE_MULTIBUFFER #ifdef ENABLE_MULTIBUFFER
if (open_files != NULL && (open_files->prev || open_files->next)) if (open_files != NULL && (open_files->prev || open_files->next))
sc_init_one(&main_list, NANO_EXIT_KEY, _("Close"), sc_init_one(&main_list, NANO_EXIT_KEY, _("Close"),
nano_exit_msg, 0, NANO_EXIT_FKEY, 0, VIEW, do_exit); IFHELP(nano_exit_msg,) 0, NANO_EXIT_FKEY, 0, VIEW,
do_exit);
else else
#endif #endif
sc_init_one(&main_list, NANO_EXIT_KEY, _("Exit"), sc_init_one(&main_list, NANO_EXIT_KEY, _("Exit"),
nano_exit_msg, 0, NANO_EXIT_FKEY, 0, VIEW, do_exit); IFHELP(nano_exit_msg,) 0, NANO_EXIT_FKEY, 0, VIEW,
do_exit);
sc_init_one(&main_list, NANO_WRITEOUT_KEY, _("WriteOut"), sc_init_one(&main_list, NANO_WRITEOUT_KEY, _("WriteOut"),
nano_writeout_msg, IFHELP(nano_writeout_msg,)
0, NANO_WRITEOUT_FKEY, 0, NOVIEW, do_writeout_void); 0, NANO_WRITEOUT_FKEY, 0, NOVIEW, do_writeout_void);
if (ISSET(PICO_MODE)) if (ISSET(PICO_MODE))
sc_init_one(&main_list, NANO_JUSTIFY_KEY, _("Justify"), sc_init_one(&main_list, NANO_JUSTIFY_KEY, _("Justify"),
nano_justify_msg, 0, NANO_JUSTIFY_FKEY, 0, IFHELP(nano_justify_msg,) 0, NANO_JUSTIFY_FKEY, 0,
NOVIEW, do_justify); NOVIEW, do_justify);
else else
#ifdef ENABLE_MULTIBUFFER #ifdef ENABLE_MULTIBUFFER
/* this is so we can view multiple files */ /* this is so we can view multiple files */
sc_init_one(&main_list, NANO_INSERTFILE_KEY, _("Read File"), sc_init_one(&main_list, NANO_INSERTFILE_KEY, _("Read File"),
nano_insert_msg, IFHELP(nano_insert_msg,)
0, NANO_INSERTFILE_FKEY, 0, VIEW, do_insertfile_void); 0, NANO_INSERTFILE_FKEY, 0, VIEW, do_insertfile_void);
#else #else
sc_init_one(&main_list, NANO_INSERTFILE_KEY, _("Read File"), sc_init_one(&main_list, NANO_INSERTFILE_KEY, _("Read File"),
nano_insert_msg, IFHELP(nano_insert_msg,)
0, NANO_INSERTFILE_FKEY, 0, NOVIEW, do_insertfile_void); 0, NANO_INSERTFILE_FKEY, 0, NOVIEW, do_insertfile_void);
#endif #endif
@ -385,330 +433,375 @@ void shortcut_init(int unjustify)
#ifdef ENABLE_MULTIBUFFER #ifdef ENABLE_MULTIBUFFER
/* this is so we can view multiple files */ /* this is so we can view multiple files */
sc_init_one(&main_list, NANO_INSERTFILE_KEY, _("Read File"), sc_init_one(&main_list, NANO_INSERTFILE_KEY, _("Read File"),
nano_insert_msg, IFHELP(nano_insert_msg,)
0, NANO_INSERTFILE_FKEY, 0, VIEW, do_insertfile_void); 0, NANO_INSERTFILE_FKEY, 0, VIEW, do_insertfile_void);
#else #else
sc_init_one(&main_list, NANO_INSERTFILE_KEY, _("Read File"), sc_init_one(&main_list, NANO_INSERTFILE_KEY, _("Read File"),
nano_insert_msg, IFHELP(nano_insert_msg,)
0, NANO_INSERTFILE_FKEY, 0, NOVIEW, do_insertfile_void); 0, NANO_INSERTFILE_FKEY, 0, NOVIEW, do_insertfile_void);
#endif #endif
else else
sc_init_one(&main_list, NANO_REPLACE_KEY, _("Replace"), sc_init_one(&main_list, NANO_REPLACE_KEY, _("Replace"),
nano_replace_msg, IFHELP(nano_replace_msg,)
NANO_ALT_REPLACE_KEY, NANO_REPLACE_FKEY, 0, NOVIEW, do_replace); NANO_ALT_REPLACE_KEY, NANO_REPLACE_FKEY, 0, NOVIEW, do_replace);
sc_init_one(&main_list, NANO_WHEREIS_KEY, _("Where Is"), sc_init_one(&main_list, NANO_WHEREIS_KEY, _("Where Is"),
nano_whereis_msg, IFHELP(nano_whereis_msg,)
0, NANO_WHEREIS_FKEY, 0, VIEW, do_search); 0, NANO_WHEREIS_FKEY, 0, VIEW, do_search);
sc_init_one(&main_list, NANO_PREVPAGE_KEY, _("Prev Page"), sc_init_one(&main_list, NANO_PREVPAGE_KEY, _("Prev Page"),
nano_prevpage_msg, IFHELP(nano_prevpage_msg,)
0, NANO_PREVPAGE_FKEY, KEY_PPAGE, VIEW, do_page_up); 0, NANO_PREVPAGE_FKEY, KEY_PPAGE, VIEW, do_page_up);
sc_init_one(&main_list, NANO_NEXTPAGE_KEY, _("Next Page"), sc_init_one(&main_list, NANO_NEXTPAGE_KEY, _("Next Page"),
nano_nextpage_msg, IFHELP(nano_nextpage_msg,)
0, NANO_NEXTPAGE_FKEY, KEY_NPAGE, VIEW, do_page_down); 0, NANO_NEXTPAGE_FKEY, KEY_NPAGE, VIEW, do_page_down);
sc_init_one(&main_list, NANO_CUT_KEY, _("Cut Text"), sc_init_one(&main_list, NANO_CUT_KEY, _("Cut Text"),
nano_cut_msg, 0, NANO_CUT_FKEY, 0, NOVIEW, do_cut_text); IFHELP(nano_cut_msg,)
0, NANO_CUT_FKEY, 0, NOVIEW, do_cut_text);
if (unjustify) if (unjustify)
sc_init_one(&main_list, NANO_UNJUSTIFY_KEY, _("UnJustify"), sc_init_one(&main_list, NANO_UNJUSTIFY_KEY, _("UnJustify"),
nano_unjustify_msg, 0, 0, 0, NOVIEW, do_uncut_text); IFHELP(nano_unjustify_msg,)
0, 0, 0, NOVIEW, do_uncut_text);
else else
sc_init_one(&main_list, NANO_UNCUT_KEY, _("UnCut Txt"), sc_init_one(&main_list, NANO_UNCUT_KEY, _("UnCut Txt"),
nano_uncut_msg, IFHELP(nano_uncut_msg,)
0, NANO_UNCUT_FKEY, 0, NOVIEW, do_uncut_text); 0, NANO_UNCUT_FKEY, 0, NOVIEW, do_uncut_text);
sc_init_one(&main_list, NANO_CURSORPOS_KEY, _("Cur Pos"), sc_init_one(&main_list, NANO_CURSORPOS_KEY, _("Cur Pos"),
nano_cursorpos_msg, IFHELP(nano_cursorpos_msg,)
0, NANO_CURSORPOS_FKEY, 0, VIEW, do_cursorpos_void); 0, NANO_CURSORPOS_FKEY, 0, VIEW, do_cursorpos_void);
sc_init_one(&main_list, NANO_SPELL_KEY, _("To Spell"), sc_init_one(&main_list, NANO_SPELL_KEY, _("To Spell"),
nano_spell_msg, 0, NANO_SPELL_FKEY, 0, NOVIEW, do_spell); IFHELP(nano_spell_msg,)
0, NANO_SPELL_FKEY, 0, NOVIEW, do_spell);
sc_init_one(&main_list, NANO_UP_KEY, _("Up"), sc_init_one(&main_list, NANO_UP_KEY, _("Up"),
nano_up_msg, 0, KEY_UP, 0, VIEW, do_up); IFHELP(nano_up_msg,)
0, KEY_UP, 0, VIEW, do_up);
sc_init_one(&main_list, NANO_DOWN_KEY, _("Down"), sc_init_one(&main_list, NANO_DOWN_KEY, _("Down"),
nano_down_msg, 0, KEY_DOWN, 0, VIEW, do_down); IFHELP(nano_down_msg,)
0, KEY_DOWN, 0, VIEW, do_down);
sc_init_one(&main_list, NANO_FORWARD_KEY, _("Forward"), sc_init_one(&main_list, NANO_FORWARD_KEY, _("Forward"),
nano_forward_msg, 0, KEY_RIGHT, 0, VIEW, do_right); IFHELP(nano_forward_msg,)
0, KEY_RIGHT, 0, VIEW, do_right);
sc_init_one(&main_list, NANO_BACK_KEY, _("Back"), sc_init_one(&main_list, NANO_BACK_KEY, _("Back"),
nano_back_msg, 0, KEY_LEFT, 0, VIEW, do_left); IFHELP(nano_back_msg,)
0, KEY_LEFT, 0, VIEW, do_left);
sc_init_one(&main_list, NANO_HOME_KEY, _("Home"), sc_init_one(&main_list, NANO_HOME_KEY, _("Home"),
nano_home_msg, 0, KEY_HOME, 362, VIEW, do_home); IFHELP(nano_home_msg,)
0, KEY_HOME, 362, VIEW, do_home);
sc_init_one(&main_list, NANO_END_KEY, _("End"), sc_init_one(&main_list, NANO_END_KEY, _("End"),
nano_end_msg, 0, KEY_END, 385, VIEW, do_end); IFHELP(nano_end_msg,)
0, KEY_END, 385, VIEW, do_end);
sc_init_one(&main_list, NANO_REFRESH_KEY, _("Refresh"), sc_init_one(&main_list, NANO_REFRESH_KEY, _("Refresh"),
nano_refresh_msg, 0, 0, 0, VIEW, total_refresh); IFHELP(nano_refresh_msg,)
0, 0, 0, VIEW, total_refresh);
sc_init_one(&main_list, NANO_MARK_KEY, _("Mark Text"), sc_init_one(&main_list, NANO_MARK_KEY, _("Mark Text"),
nano_mark_msg, NANO_ALT_MARK_KEY, 0, 0, NOVIEW, do_mark); IFHELP(nano_mark_msg,)
NANO_ALT_MARK_KEY, 0, 0, NOVIEW, do_mark);
sc_init_one(&main_list, NANO_DELETE_KEY, _("Delete"), sc_init_one(&main_list, NANO_DELETE_KEY, _("Delete"),
nano_delete_msg, 0, KEY_DC, IFHELP(nano_delete_msg,) 0, KEY_DC,
NANO_CONTROL_D, NOVIEW, do_delete); NANO_CONTROL_D, NOVIEW, do_delete);
sc_init_one(&main_list, NANO_BACKSPACE_KEY, _("Backspace"), sc_init_one(&main_list, NANO_BACKSPACE_KEY, _("Backspace"),
nano_backspace_msg, 0, IFHELP(nano_backspace_msg,) 0,
KEY_BACKSPACE, 127, NOVIEW, do_backspace); KEY_BACKSPACE, 127, NOVIEW, do_backspace);
sc_init_one(&main_list, NANO_TAB_KEY, _("Tab"), sc_init_one(&main_list, NANO_TAB_KEY, _("Tab"),
nano_tab_msg, 0, 0, 0, NOVIEW, do_tab); IFHELP(nano_tab_msg,)
0, 0, 0, NOVIEW, do_tab);
if (ISSET(PICO_MODE)) if (ISSET(PICO_MODE))
sc_init_one(&main_list, NANO_REPLACE_KEY, _("Replace"), sc_init_one(&main_list, NANO_REPLACE_KEY, _("Replace"),
nano_replace_msg, IFHELP(nano_replace_msg,)
NANO_ALT_REPLACE_KEY, NANO_REPLACE_FKEY, 0, NOVIEW, do_replace); NANO_ALT_REPLACE_KEY, NANO_REPLACE_FKEY, 0, NOVIEW, do_replace);
else else
sc_init_one(&main_list, NANO_JUSTIFY_KEY, _("Justify"), sc_init_one(&main_list, NANO_JUSTIFY_KEY, _("Justify"),
nano_justify_msg, 0, NANO_JUSTIFY_FKEY, 0, IFHELP(nano_justify_msg,)
NOVIEW, do_justify); 0, NANO_JUSTIFY_FKEY, 0, NOVIEW, do_justify);
sc_init_one(&main_list, NANO_ENTER_KEY, _("Enter"), sc_init_one(&main_list, NANO_ENTER_KEY, _("Enter"),
nano_enter_msg, IFHELP(nano_enter_msg,)
0, KEY_ENTER, NANO_CONTROL_M, NOVIEW, do_enter_void); 0, KEY_ENTER, NANO_CONTROL_M, NOVIEW, do_enter_void);
sc_init_one(&main_list, NANO_GOTO_KEY, _("Goto Line"), sc_init_one(&main_list, NANO_GOTO_KEY, _("Goto Line"),
nano_goto_msg, IFHELP(nano_goto_msg,)
NANO_ALT_GOTO_KEY, NANO_GOTO_FKEY, 0, VIEW, do_gotoline_void); NANO_ALT_GOTO_KEY, NANO_GOTO_FKEY, 0, VIEW, do_gotoline_void);
#if (!defined NANO_SMALL) && (defined HAVE_REGEX_H) #if (!defined NANO_SMALL) && (defined HAVE_REGEX_H)
sc_init_one(&main_list, -9, _("Find Other Bracket"), sc_init_one(&main_list, -9, _("Find Other Bracket"),
nano_bracket_msg, IFHELP(nano_bracket_msg,)
NANO_BRACKET_KEY, 0, 0, VIEW, do_find_bracket); NANO_BRACKET_KEY, 0, 0, VIEW, do_find_bracket);
#endif #endif
#ifdef ENABLE_MULTIBUFFER #ifdef ENABLE_MULTIBUFFER
sc_init_one(&main_list, -9, _("Previous File"), sc_init_one(&main_list, -9, _("Previous File"),
nano_openprev_msg, IFHELP(nano_openprev_msg,)
NANO_OPENPREV_KEY, 0, 0, VIEW, open_prevfile_void); NANO_OPENPREV_KEY, 0, 0, VIEW, open_prevfile_void);
sc_init_one(&main_list, -9, _("Next File"), sc_init_one(&main_list, -9, _("Next File"),
nano_opennext_msg, IFHELP(nano_opennext_msg,)
NANO_OPENNEXT_KEY, 0, 0, VIEW, open_nextfile_void); NANO_OPENNEXT_KEY, 0, 0, VIEW, open_nextfile_void);
#endif #endif
if (whereis_list != NULL) free_shortcutage(&whereis_list);
free_shortcutage(&whereis_list);
sc_init_one(&whereis_list, NANO_HELP_KEY, sc_init_one(&whereis_list, NANO_HELP_KEY,
_("Get Help"), nano_help_msg, 0, 0, 0, VIEW, do_help); _("Get Help"), IFHELP(nano_help_msg,)
0, 0, 0, VIEW, do_help);
sc_init_one(&whereis_list, NANO_CANCEL_KEY, sc_init_one(&whereis_list, NANO_CANCEL_KEY,
_("Cancel"), nano_cancel_msg, 0, 0, 0, VIEW, 0); _("Cancel"), IFHELP(nano_cancel_msg,)
0, 0, 0, VIEW, 0);
sc_init_one(&whereis_list, NANO_FIRSTLINE_KEY, _("First Line"), sc_init_one(&whereis_list, NANO_FIRSTLINE_KEY, _("First Line"),
nano_firstline_msg, 0, 0, 0, VIEW, do_first_line); IFHELP(nano_firstline_msg,)
0, 0, 0, VIEW, do_first_line);
sc_init_one(&whereis_list, NANO_LASTLINE_KEY, _("Last Line"), sc_init_one(&whereis_list, NANO_LASTLINE_KEY, _("Last Line"),
nano_lastline_msg, 0, 0, 0, VIEW, do_last_line); IFHELP(nano_lastline_msg,)
0, 0, 0, VIEW, do_last_line);
sc_init_one(&whereis_list, NANO_OTHERSEARCH_KEY, _("Replace"), sc_init_one(&whereis_list, NANO_OTHERSEARCH_KEY, _("Replace"),
nano_replace_msg, 0, 0, 0, VIEW, do_replace); IFHELP(nano_replace_msg,)
0, 0, 0, VIEW, do_replace);
sc_init_one(&whereis_list, NANO_FROMSEARCHTOGOTO_KEY, sc_init_one(&whereis_list, NANO_FROMSEARCHTOGOTO_KEY, _("Goto Line"),
_("Goto Line"), nano_goto_msg, 0, 0, 0, VIEW, IFHELP(nano_goto_msg,)
do_gotoline_void); 0, 0, 0, VIEW, do_gotoline_void);
#ifndef NANO_SMALL #ifndef NANO_SMALL
sc_init_one(&whereis_list, TOGGLE_CASE_KEY, _("Case Sens"), sc_init_one(&whereis_list, TOGGLE_CASE_KEY, _("Case Sens"),
nano_case_msg, 0, 0, 0, VIEW, 0); IFHELP(nano_case_msg,)
0, 0, 0, VIEW, 0);
sc_init_one(&whereis_list, TOGGLE_BACKWARDS_KEY, _("Direction"), sc_init_one(&whereis_list, TOGGLE_BACKWARDS_KEY, _("Direction"),
nano_reverse_msg, 0, 0, 0, VIEW, 0); IFHELP(nano_reverse_msg,)
0, 0, 0, VIEW, 0);
#ifdef HAVE_REGEX_H #ifdef HAVE_REGEX_H
sc_init_one(&whereis_list, TOGGLE_REGEXP_KEY, sc_init_one(&whereis_list, TOGGLE_REGEXP_KEY,
_("Regexp"), nano_regexp_msg, 0, 0, 0, VIEW, 0); _("Regexp"), IFHELP(nano_regexp_msg,)
0, 0, 0, VIEW, 0);
#endif #endif
#endif /* !NANO_SMALL */ #endif /* !NANO_SMALL */
if (replace_list != NULL) free_shortcutage(&replace_list);
free_shortcutage(&replace_list);
sc_init_one(&replace_list, NANO_HELP_KEY, sc_init_one(&replace_list, NANO_HELP_KEY,
_("Get Help"), nano_help_msg, 0, 0, 0, VIEW, do_help); _("Get Help"), IFHELP(nano_help_msg,)
0, 0, 0, VIEW, do_help);
sc_init_one(&replace_list, NANO_CANCEL_KEY, sc_init_one(&replace_list, NANO_CANCEL_KEY,
_("Cancel"), nano_cancel_msg, 0, 0, 0, VIEW, 0); _("Cancel"), IFHELP(nano_cancel_msg,)
0, 0, 0, VIEW, 0);
sc_init_one(&replace_list, NANO_FIRSTLINE_KEY, _("First Line"), sc_init_one(&replace_list, NANO_FIRSTLINE_KEY, _("First Line"),
nano_firstline_msg, 0, 0, 0, VIEW, do_first_line); IFHELP(nano_firstline_msg,)
0, 0, 0, VIEW, do_first_line);
sc_init_one(&replace_list, NANO_LASTLINE_KEY, _("Last Line"), sc_init_one(&replace_list, NANO_LASTLINE_KEY, _("Last Line"),
nano_lastline_msg, 0, 0, 0, VIEW, do_last_line); IFHELP(nano_lastline_msg,)
0, 0, 0, VIEW, do_last_line);
sc_init_one(&replace_list, NANO_OTHERSEARCH_KEY, _("No Replace"), sc_init_one(&replace_list, NANO_OTHERSEARCH_KEY, _("No Replace"),
nano_whereis_msg, 0, 0, 0, VIEW, do_search); IFHELP(nano_whereis_msg,)
0, 0, 0, VIEW, do_search);
sc_init_one(&replace_list, NANO_FROMSEARCHTOGOTO_KEY, sc_init_one(&replace_list, NANO_FROMSEARCHTOGOTO_KEY,
_("Goto Line"), nano_goto_msg, 0, 0, 0, VIEW, _("Goto Line"), IFHELP(nano_goto_msg,)
do_gotoline_void); 0, 0, 0, VIEW, do_gotoline_void);
#ifndef NANO_SMALL #ifndef NANO_SMALL
sc_init_one(&replace_list, TOGGLE_CASE_KEY, _("Case Sens"), sc_init_one(&replace_list, TOGGLE_CASE_KEY, _("Case Sens"),
nano_case_msg, 0, 0, 0, VIEW, 0); IFHELP(nano_case_msg,)
0, 0, 0, VIEW, 0);
sc_init_one(&replace_list, TOGGLE_BACKWARDS_KEY, _("Direction"), sc_init_one(&replace_list, TOGGLE_BACKWARDS_KEY, _("Direction"),
nano_reverse_msg, 0, 0, 0, VIEW, 0); IFHELP(nano_reverse_msg,)
0, 0, 0, VIEW, 0);
#ifdef HAVE_REGEX_H #ifdef HAVE_REGEX_H
sc_init_one(&replace_list, TOGGLE_REGEXP_KEY, sc_init_one(&replace_list, TOGGLE_REGEXP_KEY,
_("Regexp"), nano_regexp_msg, 0, 0, 0, VIEW, 0); _("Regexp"), IFHELP(nano_regexp_msg,)
0, 0, 0, VIEW, 0);
#endif #endif
#endif /* !NANO_SMALL */ #endif /* !NANO_SMALL */
if (replace_list_2 != NULL) free_shortcutage(&replace_list_2);
free_shortcutage(&replace_list_2);
sc_init_one(&replace_list_2, NANO_HELP_KEY, sc_init_one(&replace_list_2, NANO_HELP_KEY,
_("Get Help"), nano_help_msg, 0, 0, 0, VIEW, do_help); _("Get Help"), IFHELP(nano_help_msg,)
0, 0, 0, VIEW, do_help);
sc_init_one(&replace_list_2, NANO_CANCEL_KEY, sc_init_one(&replace_list_2, NANO_CANCEL_KEY,
_("Cancel"), nano_cancel_msg, 0, 0, 0, VIEW, 0); _("Cancel"), IFHELP(nano_cancel_msg,)
0, 0, 0, VIEW, 0);
sc_init_one(&replace_list_2, NANO_FIRSTLINE_KEY, _("First Line"), sc_init_one(&replace_list_2, NANO_FIRSTLINE_KEY, _("First Line"),
nano_firstline_msg, 0, 0, 0, VIEW, do_first_line); IFHELP(nano_firstline_msg,)
0, 0, 0, VIEW, do_first_line);
sc_init_one(&replace_list_2, NANO_LASTLINE_KEY, _("Last Line"), sc_init_one(&replace_list_2, NANO_LASTLINE_KEY, _("Last Line"),
nano_lastline_msg, 0, 0, 0, VIEW, do_last_line); IFHELP(nano_lastline_msg,)
0, 0, 0, VIEW, do_last_line);
if (goto_list != NULL) free_shortcutage(&goto_list);
free_shortcutage(&goto_list);
sc_init_one(&goto_list, NANO_HELP_KEY, sc_init_one(&goto_list, NANO_HELP_KEY,
_("Get Help"), nano_help_msg, 0, 0, 0, VIEW, do_help); _("Get Help"), IFHELP(nano_help_msg,)
0, 0, 0, VIEW, do_help);
sc_init_one(&goto_list, NANO_CANCEL_KEY, _("Cancel"), sc_init_one(&goto_list, NANO_CANCEL_KEY, _("Cancel"),
nano_cancel_msg, 0, 0, 0, VIEW, 0); IFHELP(nano_cancel_msg,)
0, 0, 0, VIEW, 0);
sc_init_one(&goto_list, NANO_FIRSTLINE_KEY, _("First Line"), sc_init_one(&goto_list, NANO_FIRSTLINE_KEY, _("First Line"),
nano_firstline_msg, 0, 0, 0, VIEW, &do_first_line); IFHELP(nano_firstline_msg,)
0, 0, 0, VIEW, &do_first_line);
sc_init_one(&goto_list, NANO_LASTLINE_KEY, _("Last Line"), sc_init_one(&goto_list, NANO_LASTLINE_KEY, _("Last Line"),
nano_lastline_msg, 0, 0, 0, VIEW, &do_last_line); IFHELP(nano_lastline_msg,)
0, 0, 0, VIEW, &do_last_line);
if (help_list != NULL) free_shortcutage(&help_list);
free_shortcutage(&help_list);
sc_init_one(&help_list, NANO_PREVPAGE_KEY, _("Prev Page"), sc_init_one(&help_list, NANO_PREVPAGE_KEY, _("Prev Page"),
nano_prevpage_msg, IFHELP(nano_prevpage_msg,)
0, NANO_PREVPAGE_FKEY, KEY_PPAGE, VIEW, do_page_up); 0, NANO_PREVPAGE_FKEY, KEY_PPAGE, VIEW, do_page_up);
sc_init_one(&help_list, NANO_NEXTPAGE_KEY, _("Next Page"), sc_init_one(&help_list, NANO_NEXTPAGE_KEY, _("Next Page"),
nano_nextpage_msg, IFHELP(nano_nextpage_msg,)
0, NANO_NEXTPAGE_FKEY, KEY_NPAGE, VIEW, do_page_down); 0, NANO_NEXTPAGE_FKEY, KEY_NPAGE, VIEW, do_page_down);
sc_init_one(&help_list, NANO_EXIT_KEY, _("Exit"), sc_init_one(&help_list, NANO_EXIT_KEY, _("Exit"),
nano_exit_msg, 0, NANO_EXIT_FKEY, 0, VIEW, do_exit); IFHELP(nano_exit_msg,)
0, NANO_EXIT_FKEY, 0, VIEW, do_exit);
if (writefile_list != NULL) free_shortcutage(&writefile_list);
free_shortcutage(&writefile_list);
sc_init_one(&writefile_list, NANO_HELP_KEY, sc_init_one(&writefile_list, NANO_HELP_KEY,
_("Get Help"), nano_help_msg, 0, 0, 0, VIEW, do_help); _("Get Help"), IFHELP(nano_help_msg,)
0, 0, 0, VIEW, do_help);
#ifndef DISABLE_BROWSER #ifndef DISABLE_BROWSER
sc_init_one(&writefile_list, NANO_TOFILES_KEY, _("To Files"), sc_init_one(&writefile_list, NANO_TOFILES_KEY, _("To Files"),
nano_tofiles_msg, 0, 0, 0, NOVIEW, 0); IFHELP(nano_tofiles_msg,)
0, 0, 0, NOVIEW, 0);
#endif #endif
#ifndef NANO_SMALL #ifndef NANO_SMALL
sc_init_one(&writefile_list, TOGGLE_DOS_KEY, sc_init_one(&writefile_list, TOGGLE_DOS_KEY,
_("DOS Format"), nano_dos_msg, 0, 0, 0, NOVIEW, 0); _("DOS Format"), IFHELP(nano_dos_msg,)
0, 0, 0, NOVIEW, 0);
sc_init_one(&writefile_list, TOGGLE_MAC_KEY, sc_init_one(&writefile_list, TOGGLE_MAC_KEY,
_("Mac Format"), nano_mac_msg, 0, 0, 0, NOVIEW, 0); _("Mac Format"), IFHELP(nano_mac_msg,)
0, 0, 0, NOVIEW, 0);
#endif #endif
sc_init_one(&writefile_list, sc_init_one(&writefile_list,
NANO_APPEND_KEY, _("Append"), NANO_APPEND_KEY, _("Append"),
nano_append_msg, 0, 0, 0, NOVIEW, 0); IFHELP(nano_append_msg,)
0, 0, 0, NOVIEW, 0);
sc_init_one(&writefile_list, sc_init_one(&writefile_list,
NANO_PREPEND_KEY, _("Prepend"), NANO_PREPEND_KEY, _("Prepend"),
nano_prepend_msg, 0, 0, 0, NOVIEW, 0); IFHELP(nano_prepend_msg,)
0, 0, 0, NOVIEW, 0);
sc_init_one(&writefile_list, NANO_CANCEL_KEY, sc_init_one(&writefile_list, NANO_CANCEL_KEY,
_("Cancel"), nano_cancel_msg, 0, 0, 0, VIEW, 0); _("Cancel"), IFHELP(nano_cancel_msg,)
0, 0, 0, VIEW, 0);
if (insertfile_list != NULL) free_shortcutage(&insertfile_list);
free_shortcutage(&insertfile_list);
sc_init_one(&insertfile_list, NANO_HELP_KEY, sc_init_one(&insertfile_list, NANO_HELP_KEY,
_("Get Help"), nano_help_msg, 0, 0, 0, VIEW, do_help); _("Get Help"), IFHELP(nano_help_msg,)
0, 0, 0, VIEW, do_help);
sc_init_one(&insertfile_list, NANO_CANCEL_KEY, _("Cancel"), sc_init_one(&insertfile_list, NANO_CANCEL_KEY, _("Cancel"),
nano_cancel_msg, 0, 0, 0, VIEW, 0); IFHELP(nano_cancel_msg,)
0, 0, 0, VIEW, 0);
#ifndef DISABLE_BROWSER #ifndef DISABLE_BROWSER
sc_init_one(&insertfile_list, NANO_TOFILES_KEY, _("To Files"), sc_init_one(&insertfile_list, NANO_TOFILES_KEY, _("To Files"),
nano_tofiles_msg, 0, 0, 0, NOVIEW, 0); IFHELP(nano_tofiles_msg,)
0, 0, 0, NOVIEW, 0);
#endif #endif
#ifndef NANO_SMALL #ifndef NANO_SMALL
sc_init_one(&insertfile_list, NANO_EXTCMD_KEY, _("Execute Command"), sc_init_one(&insertfile_list, NANO_EXTCMD_KEY, _("Execute Command"),
nano_execute_msg, 0, 0, 0, NOVIEW, 0); IFHELP(nano_execute_msg,)
0, 0, 0, NOVIEW, 0);
#endif #endif
if (spell_list != NULL) free_shortcutage(&spell_list);
free_shortcutage(&spell_list);
sc_init_one(&spell_list, NANO_HELP_KEY, sc_init_one(&spell_list, NANO_HELP_KEY,
_("Get Help"), nano_help_msg, 0, 0, 0, VIEW, do_help); _("Get Help"), IFHELP(nano_help_msg,)
0, 0, 0, VIEW, do_help);
sc_init_one(&spell_list, NANO_CANCEL_KEY, _("Cancel"), sc_init_one(&spell_list, NANO_CANCEL_KEY, _("Cancel"),
nano_cancel_msg, 0, 0, 0, VIEW, 0); IFHELP(nano_cancel_msg,)
0, 0, 0, VIEW, 0);
#ifndef NANO_SMALL #ifndef NANO_SMALL
if (extcmd_list != NULL) free_shortcutage(&extcmd_list);
free_shortcutage(&extcmd_list);
sc_init_one(&extcmd_list, NANO_HELP_KEY, sc_init_one(&extcmd_list, NANO_HELP_KEY,
_("Get Help"), nano_help_msg, 0, 0, 0, VIEW, do_help); _("Get Help"), IFHELP(nano_help_msg,)
0, 0, 0, VIEW, do_help);
sc_init_one(&extcmd_list, NANO_CANCEL_KEY, _("Cancel"), sc_init_one(&extcmd_list, NANO_CANCEL_KEY, _("Cancel"),
nano_cancel_msg, 0, 0, 0, VIEW, 0); IFHELP(nano_cancel_msg,)
0, 0, 0, VIEW, 0);
#endif #endif
#ifndef DISABLE_BROWSER #ifndef DISABLE_BROWSER
if (browser_list != NULL) free_shortcutage(&browser_list);
free_shortcutage(&browser_list);
sc_init_one(&browser_list, NANO_HELP_KEY, sc_init_one(&browser_list, NANO_HELP_KEY,
_("Get Help"), nano_help_msg, 0, 0, 0, VIEW, do_help); _("Get Help"), IFHELP(nano_help_msg,)
0, 0, 0, VIEW, do_help);
sc_init_one(&browser_list, NANO_EXIT_KEY, _("Exit"), sc_init_one(&browser_list, NANO_EXIT_KEY, _("Exit"),
nano_exit_msg, 0, NANO_EXIT_FKEY, 0, VIEW, 0); IFHELP(nano_exit_msg,)
0, NANO_EXIT_FKEY, 0, VIEW, 0);
sc_init_one(&browser_list, NANO_PREVPAGE_KEY, _("Prev Page"), sc_init_one(&browser_list, NANO_PREVPAGE_KEY, _("Prev Page"),
nano_prevpage_msg, IFHELP(nano_prevpage_msg,)
0, NANO_PREVPAGE_FKEY, KEY_PPAGE, VIEW, 0); 0, NANO_PREVPAGE_FKEY, KEY_PPAGE, VIEW, 0);
sc_init_one(&browser_list, NANO_NEXTPAGE_KEY, _("Next Page"), sc_init_one(&browser_list, NANO_NEXTPAGE_KEY, _("Next Page"),
nano_nextpage_msg, IFHELP(nano_nextpage_msg,)
0, NANO_NEXTPAGE_FKEY, KEY_NPAGE, VIEW, 0); 0, NANO_NEXTPAGE_FKEY, KEY_NPAGE, VIEW, 0);
sc_init_one(&browser_list, NANO_GOTO_KEY, _("Goto"), sc_init_one(&browser_list, NANO_GOTO_KEY, _("Goto"),
nano_gotodir_msg, NANO_ALT_GOTO_KEY, NANO_GOTO_FKEY, 0, IFHELP(nano_gotodir_msg,)
VIEW, 0); NANO_ALT_GOTO_KEY, NANO_GOTO_FKEY, 0, VIEW, 0);
if (gotodir_list != NULL) free_shortcutage(&gotodir_list);
free_shortcutage(&gotodir_list);
sc_init_one(&gotodir_list, NANO_HELP_KEY, sc_init_one(&gotodir_list, NANO_HELP_KEY,
_("Get Help"), nano_help_msg, 0, 0, 0, VIEW, do_help); _("Get Help"), IFHELP(nano_help_msg,)
0, 0, 0, VIEW, do_help);
sc_init_one(&gotodir_list, NANO_CANCEL_KEY, _("Cancel"), sc_init_one(&gotodir_list, NANO_CANCEL_KEY, _("Cancel"),
nano_cancel_msg, 0, 0, 0, VIEW, 0); IFHELP(nano_cancel_msg,)
0, 0, 0, VIEW, 0);
#endif #endif
@ -717,48 +810,10 @@ void shortcut_init(int unjustify)
currshortcut = main_list; currshortcut = main_list;
#endif #endif
toggle_init();
}
/* delete the structure */
void free_shortcutage(shortcut **shortcutage)
{
shortcut *s,*ps;
s = *shortcutage;
if (s == NULL) {
return;
} else {
s = *shortcutage;
do {
ps = s;
s = s->next;
free(ps);
} while (s->next != NULL);
free(s);
*shortcutage = NULL;
}
}
#ifndef NANO_SMALL #ifndef NANO_SMALL
/* clear the toggles */ toggle_init();
void free_toggles(void)
{
toggle *u,*lu;
if (toggles == NULL) {
return;
} else {
lu = NULL;
for (u = toggles; u->next != NULL; u = u->next) {
if (lu != NULL) free(lu);
lu = u;
}
if (lu != NULL) free(lu);
if (u != NULL) free(u);
}
}
#endif #endif
}
/* added by SPK for memory cleanup, gracefully return our malloc()s */ /* added by SPK for memory cleanup, gracefully return our malloc()s */
void thanks_for_all_the_fish(void) void thanks_for_all_the_fish(void)

52
nano.c
View File

@ -696,7 +696,8 @@ int no_help(void)
return 0; return 0;
} }
#if defined(DISABLE_JUSTIFY) || defined(DISABLE_SPELLER) || defined(DISABLE_HELP) #if defined(DISABLE_JUSTIFY) || defined(DISABLE_SPELLER) || \
defined(DISABLE_HELP) || defined(NANO_SMALL)
void nano_disabled_msg(void) void nano_disabled_msg(void)
{ {
statusbar("Sorry, support for this function has been disabled"); statusbar("Sorry, support for this function has been disabled");
@ -746,33 +747,36 @@ int do_enter(filestruct * inptr)
{ {
filestruct *newnode; filestruct *newnode;
char *tmp; char *tmp;
#ifndef NANO_SMALL
char *spc;
int extra = 0;
#endif
newnode = make_new_node(inptr); newnode = make_new_node(inptr);
assert(current->data != NULL);
tmp = &current->data[current_x]; tmp = &current->data[current_x];
current_x = 0;
#ifndef NANO_SMALL #ifndef NANO_SMALL
/* Do auto-indenting, like the neolithic Turbo Pascal editor */ /* Do auto-indenting, like the neolithic Turbo Pascal editor */
if (ISSET(AUTOINDENT)) { if (ISSET(AUTOINDENT)) {
spc = current->data; int extra = 0;
if (spc) { char *spc = current->data;
while ((*spc == ' ') || (*spc == '\t')) { while ((*spc == ' ') || (*spc == '\t')) {
extra++; extra++;
spc++; spc++;
current_x++;
totsize++;
}
newnode->data = charalloc(strlen(tmp) + extra + 1);
strncpy(newnode->data, current->data, extra);
strcpy(&newnode->data[extra], tmp);
} }
/* If the cursor is in the indentation, only indent to the cursor.
* Ex, if cursor is at col 0, don't indent at all.
*/
if (current_x < extra)
extra = current_x;
else
current_x = extra;
totsize += extra;
newnode->data = charalloc(strlen(tmp) + extra + 1);
strncpy(newnode->data, current->data, extra);
strcpy(&newnode->data[extra], tmp);
} else } else
#endif #endif
{ {
current_x = 0;
newnode->data = charalloc(strlen(tmp) + 1); newnode->data = charalloc(strlen(tmp) + 1);
strcpy(newnode->data, tmp); strcpy(newnode->data, tmp);
} }
@ -2477,7 +2481,9 @@ void help_init(void)
int i, sofar = 0, meta_shortcut = 0, helplen; int i, sofar = 0, meta_shortcut = 0, helplen;
long allocsize = 1; /* How much space we're gonna need for the help text */ long allocsize = 1; /* How much space we're gonna need for the help text */
char buf[BUFSIZ] = "", *ptr = NULL; char buf[BUFSIZ] = "", *ptr = NULL;
#ifndef NANO_SMALL
toggle *t; toggle *t;
#endif
shortcut *s; shortcut *s;
helplen = length_of_list(currshortcut); helplen = length_of_list(currshortcut);
@ -2579,12 +2585,14 @@ void help_init(void)
s = s->next; s = s->next;
} }
#ifndef NANO_SMALL
/* If we're on the main list, we also allocate space for toggle help text. */ /* If we're on the main list, we also allocate space for toggle help text. */
if (currshortcut == main_list) { if (currshortcut == main_list) {
for (t = toggles; t != NULL; t = t->next) for (t = toggles; t != NULL; t = t->next)
if (t->desc != NULL) if (t->desc != NULL)
allocsize += strlen(t->desc) + 30; allocsize += strlen(t->desc) + 30;
} }
#endif /* !NANO_SMALL */
allocsize += strlen(ptr); allocsize += strlen(ptr);
@ -2658,6 +2666,7 @@ void help_init(void)
s = s->next; s = s->next;
} }
#ifndef NANO_SMALL
/* And the toggles... */ /* And the toggles... */
if (currshortcut == main_list) if (currshortcut == main_list)
for (t = toggles; t != NULL; t = t->next) { for (t = toggles; t != NULL; t = t->next) {
@ -2670,15 +2679,13 @@ void help_init(void)
strcat(help_text, buf); strcat(help_text, buf);
strcat(help_text, "\n"); strcat(help_text, "\n");
} }
#endif /* !NANO_SMALL */
} }
#endif #endif
#ifndef NANO_SMALL
void do_toggle(toggle *which) void do_toggle(toggle *which)
{ {
#ifdef NANO_SMALL
nano_disabled_msg();
#else
char *enabled = _("enabled"); char *enabled = _("enabled");
char *disabled = _("disabled"); char *disabled = _("disabled");
@ -2733,9 +2740,8 @@ void do_toggle(toggle *which)
else else
statusbar("%s %s", which->desc, enabled); statusbar("%s %s", which->desc, enabled);
} }
#endif
} }
#endif /* !NANO_SMALL */
/* If the NumLock key has made the keypad go awry, print an error /* If the NumLock key has made the keypad go awry, print an error
message; hopefully we can address it later. */ message; hopefully we can address it later. */

8
nano.h
View File

@ -99,14 +99,16 @@ typedef struct shortcut {
int misc2; int misc2;
int viewok; /* is this function legal in view mode? */ int viewok; /* is this function legal in view mode? */
int (*func) (void); /* Function to call when we catch this key */ int (*func) (void); /* Function to call when we catch this key */
char *desc; /* Description, e.g. "Page Up" */ const char *desc; /* Description, e.g. "Page Up" */
char *help; /* Help file entry text */ #ifndef DISABLE_HELP
const char *help; /* Help file entry text */
#endif
struct shortcut *next; struct shortcut *next;
} shortcut; } shortcut;
typedef struct toggle { typedef struct toggle {
int val; /* Sequence to toggle the key. Should only need 1 */ int val; /* Sequence to toggle the key. Should only need 1 */
char *desc; /* Description for when toggle is, uh, toggled, const char *desc; /* Description for when toggle is, uh, toggled,
e.g. "Pico Messages"; we'll append Enabled or e.g. "Pico Messages"; we'll append Enabled or
Disabled */ Disabled */
int flag; /* What flag actually gets toggled */ int flag; /* What flag actually gets toggled */

11
proto.h
View File

@ -97,6 +97,13 @@ extern toggle *toggles;
/* Programs we want available */ /* Programs we want available */
/* public functions in global.c */
int length_of_list(const shortcut *s);
void shortcut_init(int unjustify);
void thanks_for_all_the_fish(void);
char *revstrstr(char *haystack, char *needle, char *rev_start); char *revstrstr(char *haystack, char *needle, char *rev_start);
char *stristr(char *haystack, char *needle); char *stristr(char *haystack, char *needle);
char *revstristr(char *haystack, char *needle, char *rev_start); char *revstristr(char *haystack, char *needle, char *rev_start);
@ -122,7 +129,6 @@ int no_help(void);
int renumber_all(void); int renumber_all(void);
int open_file(char *filename, int insert, int quiet); int open_file(char *filename, int insert, int quiet);
int do_insertfile(int loading_file); int do_insertfile(int loading_file);
int length_of_list(shortcut *s);
int num_of_digits(int n); int num_of_digits(int n);
int open_pipe(char *command); int open_pipe(char *command);
int read_file(FILE *f, char *filename, int quiet); int read_file(FILE *f, char *filename, int quiet);
@ -156,7 +162,6 @@ int check_wildcard_match(const char *text, const char *pattern);
char *input_tab(char *buf, int place, int *lastWasTab, int *newplace, int *list); char *input_tab(char *buf, int place, int *lastWasTab, int *newplace, int *list);
char *real_dir_from_tilde(char *buf); char *real_dir_from_tilde(char *buf);
void shortcut_init(int unjustify);
void signal_init(void); void signal_init(void);
void lowercase(char *src); void lowercase(char *src);
void blank_bottombars(void); void blank_bottombars(void);
@ -223,8 +228,6 @@ void unlink_opennode(openfilestruct * fileptr);
void cut_marked_segment(filestruct * top, int top_x, filestruct * bot, void cut_marked_segment(filestruct * top, int top_x, filestruct * bot,
int bot_x, int destructive); int bot_x, int destructive);
void free_shortcutage(shortcut **src);
void thanks_for_all_the_fish(void);
#ifdef ENABLE_NANORC #ifdef ENABLE_NANORC
void do_rcfile(void); void do_rcfile(void);

View File

@ -579,7 +579,7 @@ void titlebar(char *path)
reset_cursor(); reset_cursor();
} }
void onekey(char *keystroke, char *desc, int len) void onekey(char *keystroke, const char *desc, int len)
{ {
int i; int i;