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
115
116
117
118
119
120
121
122
|
/*
* rarian-example.c
* This file is part of Rarian
*
* Copyright (C) 2006 - Don Scorgie
*
* Rarian is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* Rarian is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Rarian; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor,
* Boston, MA 02110-1301 USA
*/
#include <stdio.h>
#include <stdlib.h>
#define I_KNOW_RARIAN_0_8_IS_UNSTABLE
#include <rarian.h>
void
print_section (RrnSect *sect, int depth)
{
int i=0;
RrnSect *child;
for (i=0; i < depth; i++) {
printf (" ");
}
printf ("Child: %s\n", sect->name);
for (i=0; i < depth; i++) {
printf (" ");
}
printf ("-> %s\n\n", sect->uri);
child = sect->children;
while (child) {
print_section (child, depth+1);
child = child->next;
}
}
int
for_each_cb (RrnReg *reg, void * user_data)
{
RrnSect *sect;
char **cats;
if (!reg) {
printf ("Error: No reg passed in!\n");
exit (6);
}
printf ("Document: %s\n", reg->name);
printf ("-> %s\n", reg->uri);
printf ("-> ghelp:%s\n", reg->ghelp_name);
cats = reg->categories;
if (cats && *cats)
printf ("Categories:\n");
while (cats && *cats) {
printf ("-> %s\n", *cats);
cats++;
}
printf ("\n");
sect = reg->children;
while (sect) {
print_section (sect, 1);
sect = sect->next;
}
return TRUE;
}
info_for_each (RrnInfoEntry *entry, void *data)
{
if (entry->section)
printf ("Info page: %s\n\tPath: %s#%s\n\tComment: %s\n",
entry->doc_name, entry->base_filename,
entry->section, entry->comment);
else
printf ("Info page: %s\n\tPath: %s\n\tComment: %s\n",
entry->doc_name, entry->base_filename,
entry->comment);
return TRUE;
}
man_for_each (RrnManEntry *entry, void *data)
{
printf ("Man page %s\n", entry->name);
printf ("\tPath: %s\n", entry->path);
return TRUE;
}
int
main(int argc, char *argv[])
{
char **cats = rrn_info_get_categories ();
char **iter = cats;
rrn_man_for_each ((RrnManForeachFunc) man_for_each, NULL);
while (iter && *iter) {
printf ("Info category: %s\n", *iter);
iter++;
}
rrn_info_for_each ((RrnInfoForeachFunc) info_for_each, NULL);
rrn_for_each((RrnForeachFunc) for_each_cb, NULL);
rrn_shutdown ();
rrn_info_shutdown ();
rrn_man_shutdown ();
return 0;
}
|