]> git.wh0rd.org Git - nano.git/commitdiff
put DB's old efficiency tweaks back in bottombars()
authorDavid Lawrence Ramsey <pooka109@gmail.com>
Mon, 25 Oct 2004 15:00:38 +0000 (15:00 +0000)
committerDavid Lawrence Ramsey <pooka109@gmail.com>
Mon, 25 Oct 2004 15:00:38 +0000 (15:00 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2025 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
src/winio.c

index 4af20b34d245ad24af937351e9b952e02ed18c74..faf48906d0e3d8ed17fc8c5df23d1ee270ce21ee 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -258,6 +258,10 @@ CVS code -
        - New function to set resetstatuspos to FALSE when we don't
          properly exit the statusbar prompt, e.g. when we get a file
          from the file browser). (DLR)
+  bottombars()
+       - For efficiency, no longer dynamically allocate space for each
+         visible shortcut, as they're all of a constant short length.
+         (David Benbennick)
   reset_cursor()
        - If this is called before any files have been opened, as it can
          be by statusbar(), put the cursor at the top left corner of
index 70180321b141164c7d158bc0c2e42ffe7b14a0f5..c6f5bc4f7da071a84efe5d334be6b9b379b5462e 100644 (file)
@@ -2450,7 +2450,6 @@ void statusbar(const char *msg, ...)
 void bottombars(const shortcut *s)
 {
     size_t i, colwidth, slen;
-    char *keystr;
 
     if (ISSET(NO_HELP))
        return;
@@ -2469,35 +2468,40 @@ void bottombars(const shortcut *s)
     /* There will be this many characters per column.  We need at least
      * 3 to display anything properly.*/
     colwidth = COLS / ((slen / 2) + (slen % 2));
-    keystr = charalloc(colwidth);
 
     blank_bottombars();
 
     for (i = 0; i < slen; i++, s = s->next) {
-       wmove(bottomwin, 1 + i % 2, (i / 2) * colwidth);
+       const char *keystr;
 
        /* Yucky sentinel values we can't handle a better way. */
 #ifndef NANO_SMALL
        if (s->ctrlval == NANO_HISTORY_KEY)
-           strncpy(keystr, _("Up"), colwidth);
-       else
+           keystr = _("Up");
+       else {
 #endif
-       if (s->ctrlval == NANO_CONTROL_SPACE)
-           strncpy(keystr, "^ ", colwidth);
-       else if (s->ctrlval == NANO_CONTROL_8)
-           strncpy(keystr, "^?", colwidth);
-       /* Normal values.  Assume that the shortcut has an equivalent
-        * control key, meta key sequence, or both. */
-       else if (s->ctrlval != NANO_NO_KEY)
-           snprintf(keystr, colwidth, "^%c", s->ctrlval + 64);
-       else if (s->metaval != NANO_NO_KEY)
-           snprintf(keystr, colwidth, "M-%c", toupper(s->metaval));
+           char foo[4];
+
+           if (s->ctrlval == NANO_CONTROL_SPACE)
+               strcpy(foo, "^ ");
+           else if (s->ctrlval == NANO_CONTROL_8)
+               strcpy(foo, "^?");
+           /* Normal values.  Assume that the shortcut has an
+            * equivalent control key, meta key sequence, or both. */
+           else if (s->ctrlval != NANO_NO_KEY)
+               sprintf(foo, "^%c", s->ctrlval + 64);
+           else if (s->metaval != NANO_NO_KEY)
+               sprintf(foo, "M-%c", toupper(s->metaval));
 
+           keystr = foo;
+#ifndef NANO_SMALL
+       }
+#endif
+
+       wmove(bottomwin, 1 + i % 2, (i / 2) * colwidth);
        onekey(keystr, s->desc, colwidth);
     }
 
-    free(keystr);
-
     wnoutrefresh(bottomwin);
     reset_cursor();
     wrefresh(edit);