]> git.wh0rd.org Git - nano.git/commitdiff
move duplicate code from the +LINE,COLUMN feature into a separate
authorDavid Lawrence Ramsey <pooka109@gmail.com>
Mon, 16 May 2005 23:23:15 +0000 (23:23 +0000)
committerDavid Lawrence Ramsey <pooka109@gmail.com>
Mon, 16 May 2005 23:23:15 +0000 (23:23 +0000)
function, parse_line_column()

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

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

index b3315e6916f5a16d997bc5e9271d6b16d05ff046..31f2b93184a9a264abee386d8c3bf2b86ab556a0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -15,8 +15,8 @@ CVS code -
          various comments. (DLR)
        - Add the ability to open a file on a specified column as well
          as a specified line, by allowing an argument of the form
-         +LINE,COLUMN.  Changes to main(), nano.1, and nano.texi. (DLR,
-         suggested by PFTank)
+         +LINE,COLUMN.  New function parse_line_column(); changes to
+         main(), nano.1, and nano.texi. (DLR, suggested by PFTank)
 - cut.c:
   cut_line()
        - Set placewewant properly after cutting a line, to avoid a
index ec564212fac372693b0a3a9afaa099c613ae3b17..c3869d647bcab38756adf361388e11ebba66732c 100644 (file)
@@ -4427,13 +4427,7 @@ int main(int argc, char **argv)
      * non-option argument, and it is followed by at least one other
      * argument, the filename it applies to. */
     if (0 < optind && optind < argc - 1 && argv[optind][0] == '+') {
-       char *comma = strchr(&argv[optind][1], ',');
-
-       if (comma != NULL)
-           parse_num(&argv[optind][comma - argv[optind] + 1],
-               &startcol);
-
-       startline = atoi(&argv[optind][1]);
+       parse_line_column(&argv[optind][1], &startline, &startcol);
        optind++;
     }
 
@@ -4453,12 +4447,7 @@ int main(int argc, char **argv)
             * applies to. */
            if (i < argc - 1 && argv[i][0] == '+' && iline == 1 &&
                icol == 1) {
-               char *comma = strchr(&argv[i][1], ',');
-
-               if (comma != NULL)
-                   parse_num(&argv[i][comma - argv[i] + 1], &icol);
-
-               iline = atoi(&argv[i][1]);
+               parse_line_column(&argv[i][1], &iline, &icol);
            } else {
                load_buffer(argv[i]);
 
index 4d16a9a265ae8814b38b16a413508b604a5d8afd..3af2a5551030071d5d79f4c0ae0d565b249a6899 100644 (file)
@@ -547,6 +547,7 @@ int regexp_bol_or_eol(const regex_t *preg, const char *string);
 int digits(size_t n);
 void get_homedir(void);
 bool parse_num(const char *str, ssize_t *val);
+void parse_line_column(const char *str, int *line, ssize_t *column);
 void align(char **strp);
 void null_at(char **data, size_t index);
 void unsunder(char *str, size_t true_len);
index 5cd86d3c59add71cd4da35874a449c1f70c07fee..de7b43d37aebe26f7f7191db01c7b6e36e274aa2 100644 (file)
@@ -105,6 +105,21 @@ bool parse_num(const char *str, ssize_t *val)
     return TRUE;
 }
 
+void parse_line_column(const char *str, int *line, ssize_t *column)
+{
+    char *comma;
+
+    assert(str != NULL);
+
+    comma = strchr(str, ',');
+
+    if (comma != NULL && column != NULL)
+       parse_num(&str[comma - str + 1], column);
+
+    if (line != NULL)
+       *line = atoi(str);
+}
+
 /* Fix the memory allocation for a string. */
 void align(char **strp)
 {