]> git.wh0rd.org Git - nano.git/commitdiff
DB's fill and window length fixes
authorChris Allegretta <chrisa@asty.org>
Mon, 10 Feb 2003 02:43:48 +0000 (02:43 +0000)
committerChris Allegretta <chrisa@asty.org>
Mon, 10 Feb 2003 02:43:48 +0000 (02:43 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1442 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
nano.c
nano.h

index 6312858db9566b1afc996bebc161c4af76218e14..73252f70979a24aaa07285bdb2f6b44020385355 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,12 @@ CVS code
        - Translation updates (see po/ChangeLog for details).
        - Fix globals and externs such that nano will compile with
          DISABLE_SPELLER (David Benbennick).
+       - Fix unreasonable fill values by wrapping at length 0 instead
+         of erroring out, and don't start up if the window size is too
+         small but fill is set reasonably.  Changes to 
+         nano.c:global_init(), window_init(), and handle_sigwinch().
+         New macro MIN_EDITOR_COLS replaces MIN_FILL_LENGTH
+         (David Benbennick).
 - files.c:
   cwd_tab_completion()
        - Memory leak fix (David Benbennick).
diff --git a/nano.c b/nano.c
index 07217646e2c34ca4d94055a011e0a51365d1db32..591d288723be8ada996532cc0754f031061d78e0 100644 (file)
--- a/nano.c
+++ b/nano.c
@@ -199,7 +199,8 @@ void global_init(int save_cutbuffer)
     current_x = 0;
     current_y = 0;
 
-    if ((editwinrows = LINES - 5 + no_help()) < MIN_EDITOR_ROWS)
+    editwinrows = LINES - 5 + no_help();
+    if (editwinrows < MIN_EDITOR_ROWS || COLS < MIN_EDITOR_COLS)
        die_too_small();
 
     fileage = NULL;
@@ -216,8 +217,8 @@ void global_init(int save_cutbuffer)
     fill = wrap_at;
     if (fill <= 0)
        fill += COLS;
-    if (fill < MIN_FILL_LENGTH)
-       die_too_small();
+    if (fill < 0)
+       fill = 0;
 #endif
 
     hblank = charalloc(COLS + 1);
@@ -227,7 +228,8 @@ void global_init(int save_cutbuffer)
 
 void window_init(void)
 {
-    if ((editwinrows = LINES - 5 + no_help()) < MIN_EDITOR_ROWS)
+    editwinrows = LINES - 5 + no_help();
+    if (editwinrows < MIN_EDITOR_ROWS)
        die_too_small();
 
     if (edit != NULL)
@@ -2867,15 +2869,16 @@ void handle_sigwinch(int s)
      * But not in all cases, argh. */
     COLS = win.ws_col;
     LINES = win.ws_row;
-    if ((editwinrows = LINES - 5 + no_help()) < MIN_EDITOR_ROWS)
+    editwinrows = LINES - 5 + no_help();
+    if (editwinrows < MIN_EDITOR_ROWS || COLS < MIN_EDITOR_COLS)
        die_too_small();
 
 #ifndef DISABLE_WRAPJUSTIFY
     fill = wrap_at;
     if (fill <= 0)
        fill += COLS;
-    if (fill < MIN_FILL_LENGTH)
-       die_too_small();
+    if (fill < 0)
+       fill = 0;
 #endif
 
     hblank = nrealloc(hblank, COLS + 1);
diff --git a/nano.h b/nano.h
index de0fe7c304411ce020080d90a974f2bc6deb7157..40a3ff80fbe88a751e4b2bd6688be2d15e7e3cf2 100644 (file)
--- a/nano.h
+++ b/nano.h
@@ -417,14 +417,13 @@ typedef enum {
 /* Minimum editor window rows required for nano to work correctly */
 #define MIN_EDITOR_ROWS 3
 
+/* Minimum editor window cols required for nano to work correctly */
+#define MIN_EDITOR_COLS 10
+
 /* Default number of characters from end-of-line where text wrapping
    occurs */
 #define CHARS_FROM_EOL 8
 
-/* Minimum fill length (space available for text before wrapping
-   occurs) */
-#define MIN_FILL_LENGTH 10
-
 /* Maximum number of search history strings saved, same value used for
    replace history */
 #define MAX_SEARCH_HISTORY 100