1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
Adds a couple of commandline arguments which adds compatibility with fbsd's
install-info program.
Patch by Diego Petten�.
http://bugs.gentoo.org/92434
--- texinfo-4.8/util/install-info.c
+++ texinfo-4.8/util/install-info.c
@@ -22,6 +22,8 @@
#include <getopt.h>
static char *progname = "install-info";
+/* Added for compatibility with FreeBSD texinfo */
+static char *default_section = NULL;
struct spec_entry;
struct spec_section;
@@ -117,9 +119,13 @@
/* This table defines all the long-named options, says whether they
use an argument, and maps them into equivalent single-letter options. */
+/* defentry and defsection added for compatibility with FreeBSD texinfo */
+
struct option longopts[] =
{
{ "delete", no_argument, NULL, 'r' },
+ { "defentry", required_argument, NULL, 'E' },
+ { "defsection", required_argument, NULL, 'S' },
{ "dir-file", required_argument, NULL, 'd' },
{ "entry", required_argument, NULL, 'e' },
{ "help", no_argument, NULL, 'h' },
@@ -428,6 +434,7 @@
xexit (1);
}
+/* defentry and defsection added for compatibility with FreeBSD's texinfo */
void
print_help (void)
{
@@ -439,6 +446,10 @@
--delete delete existing entries for INFO-FILE from DIR-FILE;\n\
don't insert any new entries.\n\
--dir-file=NAME specify file name of Info directory file.\n\
+ --defentry=TEXT same as --entry, but only use TEXT if an entry is not\n\
+ present in INFO-FILE.\n\
+ --desection=SEC same as --section, but only use TEXT if an entry is not\n\
+ present in INFO-FILE.\n\
This is equivalent to using the DIR-FILE argument.\n\
--entry=TEXT insert TEXT as an Info directory entry.\n\
TEXT should have the form of an Info menu item line\n\
@@ -1143,6 +1154,10 @@
struct spec_entry *entries_to_add = NULL;
int n_entries_to_add = 0;
+ /* Added for compatibility w/ original texinfo in FBSD */
+ struct spec_entry *default_entries_to_add = NULL;
+ int n_default_entries_to_add = 0;
+
/* Record the old text of the dir file, as plain characters,
as lines, and as nodes. */
char *dir_data;
@@ -1205,6 +1220,7 @@
dirfile = concat (optarg, "", "/dir");
break;
+ case 'E':
case 'e':
{
struct spec_entry *next
@@ -1222,6 +1238,20 @@
next->next = entries_to_add;
entries_to_add = next;
n_entries_to_add++;
+
+ /* Added for compatibility with FreeBSD's texinfo */
+ if (opt == 'e')
+ {
+ next->next = entries_to_add;
+ entries_to_add = next;
+ n_entries_to_add++;
+ }
+ else
+ {
+ next->next = default_entries_to_add;
+ default_entries_to_add = next;
+ n_default_entries_to_add++;
+ }
}
break;
@@ -1259,6 +1289,11 @@
}
break;
+ /* Added for compatibility with FreeBSD's texinfo */
+ case 'S':
+ default_section = optarg;
+ break;
+
case 'V':
printf ("install-info (GNU %s) %s\n", PACKAGE, VERSION);
puts ("");
@@ -1332,7 +1367,9 @@
{
input_sections = (struct spec_section *)
xmalloc (sizeof (struct spec_section));
- input_sections->name = "Miscellaneous";
+ /* Modified for compatibility with FreeBSD's texinfo */
+ input_sections->name =
+ default_section ? default_section : "Miscellaneous";
input_sections->next = NULL;
input_sections->missing = 1;
}
|