Blob Blame History Raw
--- texinfo-4.8/makeinfo/makeinfo.c.0xA0	2004-12-19 18:15:42.000000000 +0100
+++ texinfo-4.8/makeinfo/makeinfo.c	2006-12-04 22:37:54.000000000 +0100
@@ -2427,6 +2427,10 @@
       len = fill_column - output_column;
       break;
 
+    case NON_BREAKING_SPACE:
+      len = 1;
+      break;
+
     default:
       /* ASCII control characters appear as two characters in the output
          (e.g., ^A).  But characters with the high bit set are just one
@@ -2584,7 +2588,7 @@
           character = ';';
         }
       else
-        character = META (' '); /* unmeta-d in flush_output */
+        character = NON_BREAKING_SPACE; /* restored in flush_output */
     }
 
   insertion_paragraph_closed = 0;
@@ -2922,17 +2926,11 @@
           node_line_number++;
         }
 
-      /* If we turned on the 8th bit for a space inside @w, turn it
-         back off for output.  This might be problematic, since the
-         0x80 character may be used in 8-bit character sets.  Sigh.
-         In any case, don't do this for HTML, since the nbsp character
-         is valid input and must be passed along to the browser.  */
-      if (!html && (output_paragraph[i] & meta_character_bit))
-        {
-          int temp = UNMETA (output_paragraph[i]);
-          if (temp == ' ')
-            output_paragraph[i] &= 0x7f;
-        }
+      /* If we turned on the 8th bit for a space inside @w, turn it back off
+         for output.  Don't do this for HTML, since the nbsp character is valid
+         input and must be passed along to the browser.  */
+      if (!html && output_paragraph[i] == NON_BREAKING_SPACE)
+	output_paragraph[i] = ' ';
     }
 
   fwrite (output_paragraph, 1, output_paragraph_offset, output_stream);
--- texinfo-4.8/makeinfo/makeinfo.h.0xA0	2004-11-30 03:03:23.000000000 +0100
+++ texinfo-4.8/makeinfo/makeinfo.h	2006-12-04 22:35:06.000000000 +0100
@@ -242,13 +242,6 @@
 #define coerce_to_upper(c) ((islower(c) ? toupper(c) : (c)))
 #define coerce_to_lower(c) ((isupper(c) ? tolower(c) : (c)))
 
-#define control_character_bit 0x40 /* %01000000, must be off. */
-#define meta_character_bit 0x080/* %10000000, must be on.  */
-#define CTL(c) ((c) & (~control_character_bit))
-#define UNCTL(c) coerce_to_upper(((c)|control_character_bit))
-#define META(c) ((c) | (meta_character_bit))
-#define UNMETA(c) ((c) & (~meta_character_bit))
-
 #define whitespace(c)       ((c) == '\t' || (c) == ' ')
 #define sentence_ender(c)   ((c) == '.'  || (c) == '?' || (c) == '!')
 #define cr_or_whitespace(c) (whitespace(c) || (c) == '\r' || (c) == '\n')
@@ -282,6 +275,9 @@
 
 #define COMMAND_PREFIX '@'
 
+/* A byte value to represent a non-breaking space until flush_output (). */
+#define NON_BREAKING_SPACE 036
+
 #define END_VERBATIM "end verbatim"
 
 /* Stuff for splitting large files.  The numbers for Emacs