groff-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Groff-commit] groff ChangeLog src/roff/troff/input.cpp


From: Werner LEMBERG
Subject: [Groff-commit] groff ChangeLog src/roff/troff/input.cpp
Date: Mon, 19 Mar 2007 08:04:29 +0000

CVSROOT:        /cvsroot/groff
Module name:    groff
Changes by:     Werner LEMBERG <wl>     07/03/19 08:04:29

Modified files:
        .              : ChangeLog 
        src/roff/troff : input.cpp 

Log message:
        * src/roff/troff/input.cpp (get_copy): Add third argument to control
        whether \E shall be expanded.
        (get_char_for_escape_name): Allow \E.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/groff/ChangeLog?cvsroot=groff&r1=1.1078&r2=1.1079
http://cvs.savannah.gnu.org/viewcvs/groff/src/roff/troff/input.cpp?cvsroot=groff&r1=1.43&r2=1.44

Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/groff/groff/ChangeLog,v
retrieving revision 1.1078
retrieving revision 1.1079
diff -u -b -r1.1078 -r1.1079
--- ChangeLog   15 Mar 2007 20:41:49 -0000      1.1078
+++ ChangeLog   19 Mar 2007 08:04:29 -0000      1.1079
@@ -1,3 +1,9 @@
+2007-03-19  Werner LEMBERG  <address@hidden>
+
+       * src/roff/troff/input.cpp (get_copy): Add third argument to control
+       whether \E shall be expanded.
+       (get_char_for_escape_name): Allow \E.
+
 2007-03-15  Werner LEMBERG  <address@hidden>
 
        * tmac/s.tmac (MO, CH, pg*OH, pg*EH, pg*OF, pg*EF, *, [., .],

Index: src/roff/troff/input.cpp
===================================================================
RCS file: /cvsroot/groff/groff/src/roff/troff/input.cpp,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -b -r1.43 -r1.44
--- src/roff/troff/input.cpp    26 Oct 2006 19:39:07 -0000      1.43
+++ src/roff/troff/input.cpp    19 Mar 2007 08:04:29 -0000      1.44
@@ -1,6 +1,6 @@
 // -*- C++ -*-
 /* Copyright (C) 1989, 1990, 1991, 1992, 2000, 2001, 2002, 2003, 2004, 2005,
-                 2006
+                 2006, 2007
    Free Software Foundation, Inc.
      Written by James Clark (address@hidden)
 
@@ -128,15 +128,15 @@
 // Defaults to the current directory.
 search_path include_search_path(0, 0, 0, 1);
 
-static int get_copy(node**, int = 0);
+static int get_copy(node**, int = 0, int = 0);
 static void copy_mode_error(const char *,
                            const errarg & = empty_errarg,
                            const errarg & = empty_errarg,
                            const errarg & = empty_errarg);
 
 enum read_mode { ALLOW_EMPTY, WITH_ARGS, NO_ARGS };
-static symbol read_escape_name(read_mode mode = NO_ARGS);
-static symbol read_long_escape_name(read_mode mode = NO_ARGS);
+static symbol read_escape_name(read_mode = NO_ARGS);
+static symbol read_long_escape_name(read_mode = NO_ARGS);
 static void interpolate_string(symbol);
 static void interpolate_string_with_args(symbol);
 static void interpolate_macro(symbol);
@@ -799,7 +799,7 @@
 
 static char get_char_for_escape_name(int allow_space = 0)
 {
-  int c = get_copy(0);
+  int c = get_copy(0, 0, 1);
   switch (c) {
   case EOF:
     copy_mode_error("end of input in escape name");
@@ -940,7 +940,7 @@
   return symbol(buf);
 }
 
-static int get_copy(node **nd, int defining)
+static int get_copy(node **nd, int defining, int handle_escape_E)
 {
   for (;;) {
     int c = input_stack::get(nd);
@@ -968,6 +968,8 @@
     }
     if (c == DOUBLE_QUOTE)
       continue;
+    if (c == ESCAPE_E && handle_escape_E)
+      c = escape_char;
     if (c == ESCAPE_NEWLINE) {
       if (defining)
        return c;
@@ -977,6 +979,7 @@
     }
     if (c != escape_char || escape_char <= 0)
       return c;
+  again:
     c = input_stack::peek();
     switch(c) {
     case 0:
@@ -1022,6 +1025,8 @@
       return ESCAPE_e;
     case 'E':
       (void)input_stack::get(0);
+      if (handle_escape_E)
+       goto again;
       return ESCAPE_E;
     case 'n':
       {




reply via email to

[Prev in Thread] Current Thread [Next in Thread]