mirror of
git://git.sv.gnu.org/nano.git
synced 2024-11-25 06:09:38 +03:00
Added _POSIX_VERSION check to regexp code
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@80 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
This commit is contained in:
parent
cdff015d06
commit
47805612c3
@ -3,7 +3,9 @@ CVS code changes since last release -
|
||||
- New regexp search feature by Bill Soudan. New flags USE_REGEXP
|
||||
and REGEXP_COMPILED, new functions regexp_init, regexp_cleanup
|
||||
replace_line, replace_regexp in search.c, changes to
|
||||
search_init() and do_replace() and strstrwrapper().
|
||||
search_init() and do_replace() and strstrwrapper().
|
||||
- Added _POSIX_VERSION check to regexp code. Better than nothing
|
||||
for non-POSIX systems...
|
||||
- Made search functions & keys more like Pico. Added goto line from
|
||||
search and replace function, changed wording to "No Replace" instead
|
||||
of "To Search", "To Replace" to simply "Replace", and changed to
|
||||
|
6
nano.c
6
nano.c
@ -312,8 +312,10 @@ void usage(void)
|
||||
printf(_
|
||||
(" -T --tabsize=[num] Set width of a tab to num\n"));
|
||||
#endif
|
||||
#ifdef _POSIX_VERSION
|
||||
printf(_
|
||||
(" -R --regexp Use regular expressions for search\n"));
|
||||
#endif
|
||||
printf
|
||||
(_
|
||||
(" -V --version Print version information and exit\n"));
|
||||
@ -1531,7 +1533,9 @@ int main(int argc, char *argv[])
|
||||
#ifdef HAVE_GETOPT_LONG
|
||||
int option_index = 0;
|
||||
struct option long_options[] = {
|
||||
#ifdef _POSIX_VERSION
|
||||
{"regexp", 0, 0, 'R'},
|
||||
#endif
|
||||
{"version", 0, 0, 'V'},
|
||||
{"const", 0, 0, 'c'},
|
||||
{"suspend", 0, 0, 'z'},
|
||||
@ -1582,9 +1586,11 @@ int main(int argc, char *argv[])
|
||||
usage(); /* Oops! You dont really have that option */
|
||||
finish(1);
|
||||
#endif
|
||||
#ifdef _POSIX_VERSION
|
||||
case 'R':
|
||||
SET(USE_REGEXP);
|
||||
break;
|
||||
#endif
|
||||
case 'V':
|
||||
version();
|
||||
exit(0);
|
||||
|
156
po/nano.pot
156
po/nano.pot
@ -6,7 +6,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: 2000-07-06 21:41-0400\n"
|
||||
"POT-Creation-Date: 2000-07-06 22:35-0400\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -32,7 +32,7 @@ msgstr ""
|
||||
msgid "Read %d lines"
|
||||
msgstr ""
|
||||
|
||||
#: files.c:215 search.c:156 search.c:174
|
||||
#: files.c:215 search.c:163 search.c:181
|
||||
#, c-format
|
||||
msgid "\"%s\" not found"
|
||||
msgstr ""
|
||||
@ -55,7 +55,7 @@ msgstr ""
|
||||
msgid "File to insert [from ./] "
|
||||
msgstr ""
|
||||
|
||||
#: files.c:271 files.c:295 files.c:462 nano.c:1133
|
||||
#: files.c:271 files.c:295 files.c:462 nano.c:1135
|
||||
msgid "Cancelled"
|
||||
msgstr ""
|
||||
|
||||
@ -403,323 +403,323 @@ msgstr ""
|
||||
msgid " -T \t\t--tabsize=[num]\t\tSet width of a tab to num\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:316
|
||||
#: nano.c:317
|
||||
msgid " -R\t\t--regexp\t\tUse regular expressions for search\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:319
|
||||
#: nano.c:321
|
||||
msgid " -V \t\t--version\t\tPrint version information and exit\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:321
|
||||
#: nano.c:323
|
||||
msgid " -c \t\t--const\t\t\tConstantly show cursor position\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:323
|
||||
#: nano.c:325
|
||||
msgid " -h \t\t--help\t\t\tShow this message\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:325
|
||||
#: nano.c:327
|
||||
msgid " -i \t\t--autoindent\t\tAutomatically indent new lines\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:327
|
||||
#: nano.c:329
|
||||
msgid " -l \t\t--nofollow\t\tDon't follow symbolic links, overwrite.\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:330
|
||||
#: nano.c:332
|
||||
msgid " -m \t\t--mouse\t\t\tEnable mouse\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:335
|
||||
#: nano.c:337
|
||||
msgid ""
|
||||
" -r [#cols] \t--fill=[#cols]\t\tSet fill cols to (wrap lines at) #cols\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:337
|
||||
#: nano.c:339
|
||||
msgid " -p\t \t--pico\t\t\tMake bottom 2 lines more Pico-like\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:339
|
||||
#: nano.c:341
|
||||
msgid " -s [prog] \t--speller=[prog]\tEnable alternate speller\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:341
|
||||
#: nano.c:343
|
||||
msgid " -t \t\t--tempfile\t\tAuto save on exit, don't prompt\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:343
|
||||
#: nano.c:345
|
||||
msgid " -v \t\t--view\t\t\tView (read only) mode\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:345
|
||||
#: nano.c:347
|
||||
msgid " -w \t\t--nowrap\t\tDon't wrap long lines\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:347
|
||||
#: nano.c:349
|
||||
msgid " -x \t\t--nohelp\t\tDon't show help window\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:349
|
||||
#: nano.c:351
|
||||
msgid " -z \t\t--suspend\t\tEnable suspend\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:351
|
||||
#: nano.c:353
|
||||
msgid " +LINE\t\t\t\t\tStart at line number LINE\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:353
|
||||
#: nano.c:355
|
||||
msgid ""
|
||||
"Usage: nano [option] +LINE <file>\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:354
|
||||
#: nano.c:356
|
||||
msgid "Option\t\tMeaning\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:356
|
||||
#: nano.c:358
|
||||
msgid " -T [num]\tSet width of a tab to num\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:358
|
||||
#: nano.c:360
|
||||
msgid " -R\t\tUse regular expressions for search\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:359
|
||||
#: nano.c:361
|
||||
msgid " -V \t\tPrint version information and exit\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:360
|
||||
#: nano.c:362
|
||||
msgid " -c \t\tConstantly show cursor position\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:361
|
||||
#: nano.c:363
|
||||
msgid " -h \t\tShow this message\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:362
|
||||
#: nano.c:364
|
||||
msgid " -i \t\tAutomatically indent new lines\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:364
|
||||
#: nano.c:366
|
||||
msgid " -l \t\tDon't follow symbolic links, overwrite.\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:367
|
||||
#: nano.c:369
|
||||
msgid " -m \t\tEnable mouse\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:371
|
||||
#: nano.c:373
|
||||
msgid " -r [#cols] \tSet fill cols to (wrap lines at) #cols\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:372
|
||||
#: nano.c:374
|
||||
msgid " -s [prog] \tEnable alternate speller\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:373
|
||||
#: nano.c:375
|
||||
msgid " -p \t\tMake bottom 2 lines more Pico-like\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:374
|
||||
#: nano.c:376
|
||||
msgid " -t \t\tAuto save on exit, don't prompt\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:375
|
||||
#: nano.c:377
|
||||
msgid " -v \t\tView (read only) mode\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:376
|
||||
#: nano.c:378
|
||||
msgid " -w \t\tDon't wrap long lines\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:377
|
||||
#: nano.c:379
|
||||
msgid " -x \t\tDon't show help window\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:378
|
||||
#: nano.c:380
|
||||
msgid " -z \t\tEnable suspend\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:379
|
||||
#: nano.c:381
|
||||
msgid " +LINE\t\tStart at line number LINE\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:386
|
||||
#: nano.c:388
|
||||
#, c-format
|
||||
msgid " nano version %s by Chris Allegretta (compiled %s, %s)\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:388
|
||||
#: nano.c:390
|
||||
msgid " Email: nano@asty.org\tWeb: http://www.asty.org/nano\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:413
|
||||
#: nano.c:415
|
||||
msgid "Mark Set"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:418
|
||||
#: nano.c:420
|
||||
msgid "Mark UNset"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:860
|
||||
#: nano.c:862
|
||||
#, c-format
|
||||
msgid "check_wrap called with inptr->data=\"%s\"\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:920
|
||||
#: nano.c:922
|
||||
#, c-format
|
||||
msgid "current->data now = \"%s\"\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:973
|
||||
#: nano.c:975
|
||||
#, c-format
|
||||
msgid "After, data = \"%s\"\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1043
|
||||
#: nano.c:1045
|
||||
msgid "Error deleting tempfile, ack!"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1060
|
||||
#: nano.c:1062
|
||||
#, c-format
|
||||
msgid "Could not create a temporary filename: %s"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1084
|
||||
#: nano.c:1086
|
||||
#, c-format
|
||||
msgid "Could not invoke spell program \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#. Why 32512? I dont know!
|
||||
#: nano.c:1090
|
||||
#: nano.c:1092
|
||||
msgid "Could not invoke \"ispell\""
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1102
|
||||
#: nano.c:1104
|
||||
msgid "Finished checking spelling"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1120
|
||||
#: nano.c:1122
|
||||
msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1243
|
||||
#: nano.c:1245
|
||||
msgid "Cannot resize top win"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1245
|
||||
#: nano.c:1247
|
||||
msgid "Cannot move top win"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1247
|
||||
#: nano.c:1249
|
||||
msgid "Cannot resize edit win"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1249
|
||||
#: nano.c:1251
|
||||
msgid "Cannot move edit win"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1251
|
||||
#: nano.c:1253
|
||||
msgid "Cannot resize bottom win"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1253
|
||||
#: nano.c:1255
|
||||
msgid "Cannot move bottom win"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1712
|
||||
#: nano.c:1718
|
||||
msgid "Main: set up windows\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1734
|
||||
#: nano.c:1740
|
||||
msgid "Main: bottom win\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1740
|
||||
#: nano.c:1746
|
||||
msgid "Main: open file\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1813
|
||||
#: nano.c:1819
|
||||
#, c-format
|
||||
msgid "I got Alt-[-%c! (%d)\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1829
|
||||
#: nano.c:1835
|
||||
#, c-format
|
||||
msgid "I got Alt-%c! (%d)\n"
|
||||
msgstr ""
|
||||
|
||||
#: search.c:68
|
||||
#: search.c:71
|
||||
#, c-format
|
||||
msgid "Case Sensitive Regexp Search%s"
|
||||
msgstr ""
|
||||
|
||||
#: search.c:70
|
||||
#: search.c:73
|
||||
#, c-format
|
||||
msgid "Regexp Search%s"
|
||||
msgstr ""
|
||||
|
||||
#: search.c:72
|
||||
#: search.c:76
|
||||
#, c-format
|
||||
msgid "Case Sensitive Search%s"
|
||||
msgstr ""
|
||||
|
||||
#: search.c:74
|
||||
#: search.c:78
|
||||
#, c-format
|
||||
msgid "Search%s"
|
||||
msgstr ""
|
||||
|
||||
#: search.c:82
|
||||
#: search.c:86
|
||||
msgid "Search Cancelled"
|
||||
msgstr ""
|
||||
|
||||
#: search.c:170
|
||||
#: search.c:177
|
||||
msgid "Search Wrapped"
|
||||
msgstr ""
|
||||
|
||||
#: search.c:222
|
||||
#: search.c:232
|
||||
#, c-format
|
||||
msgid "Replaced %d occurences"
|
||||
msgstr ""
|
||||
|
||||
#: search.c:224
|
||||
#: search.c:234
|
||||
msgid "Replaced 1 occurence"
|
||||
msgstr ""
|
||||
|
||||
#: search.c:353 search.c:375 search.c:398
|
||||
#: search.c:373 search.c:395 search.c:418
|
||||
msgid "Replace Cancelled"
|
||||
msgstr ""
|
||||
|
||||
#: search.c:371
|
||||
#: search.c:391
|
||||
#, c-format
|
||||
msgid "Replace with [%s]"
|
||||
msgstr ""
|
||||
|
||||
#. last_search is empty
|
||||
#: search.c:396
|
||||
#: search.c:416
|
||||
msgid "Replace with"
|
||||
msgstr ""
|
||||
|
||||
#: search.c:437
|
||||
#: search.c:457
|
||||
msgid "Replace this instance?"
|
||||
msgstr ""
|
||||
|
||||
#. Ask for it
|
||||
#: search.c:487
|
||||
#: search.c:507
|
||||
msgid "Enter line number"
|
||||
msgstr ""
|
||||
|
||||
#: search.c:489
|
||||
#: search.c:509
|
||||
msgid "Aborted"
|
||||
msgstr ""
|
||||
|
||||
#: search.c:509
|
||||
#: search.c:529
|
||||
msgid "Come on, be reasonable"
|
||||
msgstr ""
|
||||
|
||||
#: search.c:514
|
||||
#: search.c:534
|
||||
#, c-format
|
||||
msgid "Only %d lines available, skipping to last line"
|
||||
msgstr ""
|
||||
|
28
search.c
28
search.c
@ -20,6 +20,7 @@
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include "config.h"
|
||||
#include "proto.h"
|
||||
@ -34,6 +35,7 @@
|
||||
|
||||
/* Regular expression helper functions */
|
||||
|
||||
#ifdef _POSIX_VERSION
|
||||
void regexp_init(const char *regexp)
|
||||
{
|
||||
regcomp(&search_regexp, regexp, ISSET(CASE_SENSITIVE) ? 0 : REG_ICASE);
|
||||
@ -45,6 +47,7 @@ void regexp_cleanup()
|
||||
UNSET(REGEXP_COMPILED);
|
||||
regfree(&search_regexp);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Set up the system variables for a search or replace. Returns -1 on
|
||||
abort, 0 on success, and 1 on rerun calling program
|
||||
@ -68,7 +71,8 @@ int search_init(int replacing)
|
||||
prompt = _("Case Sensitive Regexp Search%s");
|
||||
else if (ISSET(USE_REGEXP))
|
||||
prompt = _("Regexp Search%s");
|
||||
else if (ISSET(CASE_SENSITIVE))
|
||||
else
|
||||
if (ISSET(CASE_SENSITIVE))
|
||||
prompt = _("Case Sensitive Search%s");
|
||||
else
|
||||
prompt = _("Search%s");
|
||||
@ -84,13 +88,16 @@ int search_init(int replacing)
|
||||
return -1;
|
||||
} else if (i == -2) { /* Same string */
|
||||
strncpy(answer, last_search, 132);
|
||||
#ifdef _POSIX_VERSION
|
||||
if (ISSET(USE_REGEXP))
|
||||
regexp_init(answer);
|
||||
#endif
|
||||
} else if (i == 0) { /* They entered something new */
|
||||
strncpy(last_search, answer, 132);
|
||||
#ifdef _POSIX_VERSION
|
||||
if (ISSET(USE_REGEXP))
|
||||
regexp_init(answer);
|
||||
|
||||
#endif
|
||||
/* Blow away last_replace because they entered a new search
|
||||
string....uh, right? =) */
|
||||
last_replace[0] = '\0';
|
||||
@ -184,8 +191,11 @@ void search_abort(void)
|
||||
UNSET(KEEP_CUTBUFFER);
|
||||
display_main_list();
|
||||
wrefresh(bottomwin);
|
||||
|
||||
#ifdef _POSIX_VERSION
|
||||
if (ISSET(REGEXP_COMPILED))
|
||||
regexp_cleanup();
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Search for a string */
|
||||
@ -229,10 +239,14 @@ void replace_abort(void)
|
||||
UNSET(KEEP_CUTBUFFER);
|
||||
display_main_list();
|
||||
reset_cursor();
|
||||
|
||||
#ifdef _POSIX_VERSION
|
||||
if (ISSET(REGEXP_COMPILED))
|
||||
regexp_cleanup();
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef _POSIX_VERSION
|
||||
int replace_regexp(char *string, int create_flag)
|
||||
{
|
||||
/* split personality here - if create_flag is null, just calculate
|
||||
@ -293,6 +307,7 @@ int replace_regexp(char *string, int create_flag)
|
||||
|
||||
return new_size;
|
||||
}
|
||||
#endif
|
||||
|
||||
char *replace_line()
|
||||
{
|
||||
@ -301,16 +316,19 @@ char *replace_line()
|
||||
int search_match_count;
|
||||
|
||||
/* Calculate size of new line */
|
||||
#ifdef _POSIX_VERSION
|
||||
if (ISSET(USE_REGEXP)) {
|
||||
search_match_count = regmatches[0].rm_eo -
|
||||
regmatches[0].rm_so;
|
||||
new_line_size = replace_regexp(NULL, 0);
|
||||
|
||||
/* If they specified an invalid subexpression in the replace
|
||||
* text, return NULL indicating an error */
|
||||
if (new_line_size < 0)
|
||||
return NULL;
|
||||
} else {
|
||||
#else
|
||||
{
|
||||
#endif
|
||||
search_match_count = strlen(last_search);
|
||||
new_line_size = strlen(current->data) - strlen(last_search) +
|
||||
strlen(last_replace) + 1;
|
||||
@ -326,8 +344,10 @@ char *replace_line()
|
||||
/* Replacement Text */
|
||||
if (!ISSET(USE_REGEXP))
|
||||
strcat(copy, last_replace);
|
||||
#ifdef _POSIX_VERSION
|
||||
else
|
||||
(void)replace_regexp(copy + current_x, 1);
|
||||
#endif
|
||||
|
||||
/* The tail of the original line */
|
||||
/* This may expose other bugs, because it no longer
|
||||
@ -342,7 +362,7 @@ char *replace_line()
|
||||
return copy;
|
||||
}
|
||||
|
||||
/* Search for a string */
|
||||
/* Replace a string */
|
||||
int do_replace(void)
|
||||
{
|
||||
int i, replaceall = 0, numreplaced = 0, beginx;
|
||||
|
Loading…
Reference in New Issue
Block a user