]> git.wh0rd.org Git - nano.git/commitdiff
move xplustabs(), actual_x(), strnlenpt(), and strlenpt() from winio.c
authorDavid Lawrence Ramsey <pooka109@gmail.com>
Mon, 31 Oct 2005 23:07:58 +0000 (23:07 +0000)
committerDavid Lawrence Ramsey <pooka109@gmail.com>
Mon, 31 Oct 2005 23:07:58 +0000 (23:07 +0000)
to utils.c, as they're really utility functions

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3064 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
src/proto.h
src/utils.c
src/winio.c

index 804329033d996098fa175391a8e30d174586dec2..6f889dcba2b7bb4533825e670f856cd2c0ec77d6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -15,6 +15,8 @@ CVS code -
          that make use of a smaller number.  Changes to window_init(),
          nanoget_repaint(), titlebar(), statusbar(), and
          get_page_start(). (DLR)
+       - Move xplustabs(), actual_x(), strnlenpt(), and strlenpt() from
+         winio.c to utils.c, as they're really utility functions. (DLR)
 - nano.h:
        - Readd MIN_EDITOR_COLS #define. (DLR)
 - winio.c:
index 0a73aec4eb61e27d53d33853251d2eb2464cd9fe..955f8f2522be01e83e8cc1d94136310443bd8ac4 100644 (file)
@@ -565,6 +565,10 @@ void *nrealloc(void *ptr, size_t howmuch);
 char *mallocstrncpy(char *dest, const char *src, size_t n);
 char *mallocstrcpy(char *dest, const char *src);
 char *mallocstrassn(char *dest, char *src);
+size_t xplustabs(void);
+size_t actual_x(const char *s, size_t column);
+size_t strnlenpt(const char *s, size_t maxlen);
+size_t strlenpt(const char *s);
 void new_magicline(void);
 #ifndef NANO_SMALL
 void remove_magicline(void);
@@ -634,10 +638,6 @@ bool do_statusbar_prev_word(bool allow_punct);
 void do_statusbar_verbatim_input(bool *got_enter);
 size_t statusbar_xplustabs(void);
 size_t get_statusbar_page_start(size_t start_col, size_t column);
-size_t xplustabs(void);
-size_t actual_x(const char *str, size_t xplus);
-size_t strnlenpt(const char *buf, size_t size);
-size_t strlenpt(const char *buf);
 void blank_line(WINDOW *win, int y, int x, int n);
 void blank_titlebar(void);
 void blank_topbar(void);
index fa4cdf166341f7a4121e6826738dce72f2fcff46..ff97788b18ad7e5dade28d99dd2c9daeecafc742 100644 (file)
@@ -395,6 +395,73 @@ char *mallocstrassn(char *dest, char *src)
     return src;
 }
 
+/* Return the placewewant associated with current_x, i.e, the zero-based
+ * column position of the cursor.  The value will be no smaller than
+ * current_x. */
+size_t xplustabs(void)
+{
+    return strnlenpt(openfile->current->data, openfile->current_x);
+}
+
+/* actual_x() gives the index in s of the character displayed at the
+ * given column.  That is, actual_x() is the largest value such that
+ * strnlenpt(s, actual_x(s, column)) <= column. */
+size_t actual_x(const char *s, size_t column)
+{
+    size_t i = 0;
+       /* The position in s, returned. */
+    size_t len = 0;
+       /* The screen display width to s[i]. */
+
+    assert(s != NULL);
+
+    while (*s != '\0') {
+       int s_len = parse_mbchar(s, NULL, &len);
+
+       if (len > column)
+           break;
+
+       i += s_len;
+       s += s_len;
+    }
+
+    return i;
+}
+
+/* A strnlen() with tabs and multicolumn characters factored in, similar
+ * to xplustabs().  How many columns wide are the first maxlen characters
+ * of s? */
+size_t strnlenpt(const char *s, size_t maxlen)
+{
+    size_t len = 0;
+       /* The screen display width to s[i]. */
+
+    if (maxlen == 0)
+       return 0;
+
+    assert(s != NULL);
+
+    while (*s != '\0') {
+       int s_len = parse_mbchar(s, NULL, &len);
+
+       s += s_len;
+
+       if (maxlen <= s_len)
+           break;
+
+       maxlen -= s_len;
+    }
+
+    return len;
+}
+
+/* A strlen() with tabs and multicolumn characters factored in, similar
+ * to xplustabs().  How many columns wide is s? */
+size_t strlenpt(const char *s)
+{
+    return strnlenpt(s, (size_t)-1);
+}
+
 /* Append a new magicline to filebot. */
 void new_magicline(void)
 {
index e59570f78a7a9e2c8caf895b7411f04dd55e7bc0..bef79c4258d5cad2a78137e5482e6bb5c8fa6bd7 100644 (file)
@@ -2220,71 +2220,6 @@ size_t get_statusbar_page_start(size_t start_col, size_t column)
                start_col - 1);
 }
 
-/* Return the placewewant associated with current_x, i.e, the zero-based
- * column position of the cursor.  The value will be no smaller than
- * current_x. */
-size_t xplustabs(void)
-{
-    return strnlenpt(openfile->current->data, openfile->current_x);
-}
-
-/* actual_x() gives the index in str of the character displayed at
- * column xplus.  That is, actual_x() is the largest value such that
- * strnlenpt(str, actual_x(str, xplus)) <= xplus. */
-size_t actual_x(const char *str, size_t xplus)
-{
-    size_t i = 0;
-       /* The position in str, returned. */
-    size_t length = 0;
-       /* The screen display width to str[i]. */
-
-    assert(str != NULL);
-
-    while (*str != '\0') {
-       int str_len = parse_mbchar(str, NULL, &length);
-
-       if (length > xplus)
-           break;
-
-       i += str_len;
-       str += str_len;
-    }
-
-    return i;
-}
-
-/* A strlen() with tabs factored in, similar to xplustabs().  How many
- * columns wide are the first size characters of str? */
-size_t strnlenpt(const char *str, size_t size)
-{
-    size_t length = 0;
-       /* The screen display width to str[i]. */
-
-    if (size == 0)
-       return 0;
-
-    assert(str != NULL);
-
-    while (*str != '\0') {
-       int str_len = parse_mbchar(str, NULL, &length);
-
-       str += str_len;
-
-       if (size <= str_len)
-           break;
-
-       size -= str_len;
-    }
-
-    return length;
-}
-
-/* How many columns wide is buf? */
-size_t strlenpt(const char *buf)
-{
-    return strnlenpt(buf, (size_t)-1);
-}
-
 /* Move to (x, y) in win, and display a line of n spaces with the
  * current attributes. */
 void blank_line(WINDOW *win, int y, int x, int n)