aboutsummaryrefslogtreecommitdiffstats
path: root/support/makeinfo.patch
diff options
context:
space:
mode:
Diffstat (limited to 'support/makeinfo.patch')
-rw-r--r--support/makeinfo.patch233
1 files changed, 233 insertions, 0 deletions
diff --git a/support/makeinfo.patch b/support/makeinfo.patch
new file mode 100644
index 00000000..7d2d307f
--- /dev/null
+++ b/support/makeinfo.patch
@@ -0,0 +1,233 @@
+*** makeinfo.c.dist Thu Sep 26 21:45:04 1991
+--- makeinfo.c Thu Oct 24 21:04:19 1991
+***************
+*** 73,78 ****
+--- 73,79 ----
+ /* Forward declarations. */
+ unsigned char *xmalloc (), *xrealloc ();
+ extern int in_fixed_width_font;
++ extern int the_current_enumerate_type;
+
+ /* Some systems don't declare this function in pwd.h. */
+ struct passwd *getpwnam ();
+***************
+*** 925,931 ****
+ extern int executing_string;
+ FSTACK *temp = filestack;
+
+! if (!filestack)
+ abort (); /* My fault. I wonder what I did? */
+
+ /* Make sure that commands with braces have been satisfied. */
+--- 926,932 ----
+ extern int executing_string;
+ FSTACK *temp = filestack;
+
+! if (!filestack && !executing_string)
+ abort (); /* My fault. I wonder what I did? */
+
+ /* Make sure that commands with braces have been satisfied. */
+***************
+*** 941,947 ****
+
+ /* Pop the stack. */
+ filestack = filestack->next;
+! free (temp);
+ pop_node_filename ();
+ }
+
+--- 942,949 ----
+
+ /* Pop the stack. */
+ filestack = filestack->next;
+! if (temp)
+! free (temp);
+ pop_node_filename ();
+ }
+
+***************
+*** 2586,2593 ****
+ case enumerate:
+ inhibit_paragraph_indentation = 0;
+ current_indent += default_indentation_increment;
+- start_numbering (1);
+ filling_enabled = indented_fill = true;
+ break;
+
+ case alphaenumerate:
+--- 2588,2610 ----
+ case enumerate:
+ inhibit_paragraph_indentation = 0;
+ current_indent += default_indentation_increment;
+ filling_enabled = indented_fill = true;
++
++ if (*(insertion_stack->item_function))
++ {
++ if (isalpha (*(insertion_stack->item_function)))
++ {
++ start_lettering (*(insertion_stack->item_function));
++ }
++ else
++ {
++ int n = atoi (insertion_stack->item_function);
++
++ start_numbering (n);
++ }
++ }
++ else
++ start_numbering (1);
+ break;
+
+ case alphaenumerate:
+***************
+*** 2687,2693 ****
+ break;
+
+ case enumerate:
+! stop_numbering ();
+ current_indent -= default_indentation_increment;
+ break;
+
+--- 2704,2714 ----
+ break;
+
+ case enumerate:
+! if (isalpha (the_current_enumerate_type))
+! stop_lettering ();
+! else
+! stop_numbering ();
+!
+ current_indent -= default_indentation_increment;
+ break;
+
+***************
+*** 2770,2775 ****
+--- 2791,2800 ----
+ int letter_offset = 0;
+ int the_current_letter = 0;
+
++ int enumerate_type_stack[max_ns];
++ int enumerate_type_offset = 0;
++ int the_current_enumerate_type = '1';
++
+ start_numbering (at_number)
+ int at_number;
+ {
+***************
+*** 2778,2783 ****
+--- 2803,2815 ----
+ line_error ("Enumeration stack overflow");
+ return;
+ }
++ if (enumerate_type_offset + 1 == max_ns)
++ {
++ line_error ("Enumeration stack overflow");
++ return;
++ }
++ the_current_enumerate_type =
++ enumerate_type_stack[enumerate_type_offset++] = '1';
+ number_stack[number_offset++] = the_current_number;
+ the_current_number = at_number;
+ }
+***************
+*** 2787,2792 ****
+--- 2819,2831 ----
+ the_current_number = number_stack[--number_offset];
+ if (number_offset < 0)
+ number_offset = 0;
++ --enumerate_type_offset;
++ the_current_enumerate_type = enumerate_type_stack[enumerate_type_offset-1];
++ if (enumerate_type_offset < 0)
++ {
++ enumerate_type_offset = 0;
++ the_current_enumerate_type = '1';
++ }
+ }
+
+ start_lettering (at_letter)
+***************
+*** 2797,2802 ****
+--- 2836,2848 ----
+ line_error ("Alpha-enumeration stack overflow");
+ return;
+ }
++ if (enumerate_type_offset + 1 == max_ns)
++ {
++ line_error ("Enumeration stack overflow");
++ return;
++ }
++ the_current_enumerate_type =
++ enumerate_type_stack[enumerate_type_offset++] = 'a';
+ letter_stack[letter_offset++] = the_current_letter;
+ the_current_letter = at_letter;
+ }
+***************
+*** 2806,2811 ****
+--- 2852,2864 ----
+ the_current_letter = letter_stack[--letter_offset];
+ if (letter_offset < 0)
+ letter_offset = 0;
++ --enumerate_type_offset;
++ the_current_enumerate_type = enumerate_type_stack[enumerate_type_offset-1];
++ if (enumerate_type_offset < 0)
++ {
++ enumerate_type_offset = 0;
++ the_current_enumerate_type = '1';
++ }
+ }
+
+ /* Place a letter into the output stream. */
+***************
+*** 4307,4319 ****
+ temp++;
+ else
+ {
+! if (input_text[temp] == '.' ||
+! input_text[temp] == ',' ||
+ input_text[temp] == '\t')
+ return;
+ else
+ {
+! line_error ("Cross-reference must be terminated with a period or a comma");
+ return;
+ }
+ }
+--- 4360,4372 ----
+ temp++;
+ else
+ {
+! if (member (input_text[temp], ".,;:") ||
+! (px_ref_flag && input_text[temp] == ')' ) ||
+ input_text[temp] == '\t')
+ return;
+ else
+ {
+! line_error ("Cross-reference must be terminated with punctuation");
+ return;
+ }
+ }
+***************
+*** 4729,4736 ****
+ output_column++;
+ }
+ else if (current_insertion_type () == enumerate)
+! number_item ();
+! else
+ letter_item ();
+
+ /* Special hack. This makes close paragraph ignore you until
+--- 4782,4794 ----
+ output_column++;
+ }
+ else if (current_insertion_type () == enumerate)
+! {
+! if (isalpha (the_current_enumerate_type))
+! letter_item ();
+! else
+! number_item ();
+! }
+! else /* alphaenumerate or capsenumerate */
+ letter_item ();
+
+ /* Special hack. This makes close paragraph ignore you until
+