removed text and help file backends; added some usage crap and removed the help command line optin(who needs that)
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@1542 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
ef17957fff
commit
048c27836c
23 changed files with 7533 additions and 10037 deletions
|
@ -6,338 +6,289 @@
|
|||
#include <stdlib.h>
|
||||
#include "halibut.h"
|
||||
|
||||
static void dbg_prtsource (paragraph * sourceform);
|
||||
static void dbg_prtwordlist (int level, word * w);
|
||||
static void dbg_prtkws (keywordlist * kws);
|
||||
static void dbg_prtsource(paragraph * sourceform);
|
||||
static void dbg_prtwordlist(int level, word * w);
|
||||
static void dbg_prtkws(keywordlist * kws);
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
char **infiles;
|
||||
char *outfile;
|
||||
int nfiles;
|
||||
int nogo;
|
||||
int errs;
|
||||
int reportcols;
|
||||
int debug;
|
||||
char **infiles;
|
||||
char *outfile;
|
||||
int nfiles;
|
||||
int nogo;
|
||||
int errs;
|
||||
int reportcols;
|
||||
int debug;
|
||||
|
||||
/*
|
||||
* Set up initial (default) parameters.
|
||||
*/
|
||||
infiles = mknewa (char *, argc);
|
||||
outfile = NULL;
|
||||
nfiles = 0;
|
||||
nogo = errs = FALSE;
|
||||
reportcols = 0;
|
||||
debug = 0;
|
||||
/*
|
||||
* Set up initial (default) parameters.
|
||||
*/
|
||||
infiles = mknewa(char *, argc);
|
||||
outfile = NULL;
|
||||
nfiles = 0;
|
||||
nogo = errs = FALSE;
|
||||
reportcols = 0;
|
||||
debug = 0;
|
||||
|
||||
if (argc == 1)
|
||||
{
|
||||
usage ();
|
||||
exit (EXIT_SUCCESS);
|
||||
if (argc == 1) {
|
||||
usage();
|
||||
exit(EXIT_SUCCESS);
|
||||
}
|
||||
|
||||
/*
|
||||
* Parse command line arguments.
|
||||
*/
|
||||
while (--argc)
|
||||
{
|
||||
char *p = *++argv;
|
||||
if (*p == '-')
|
||||
{
|
||||
/*
|
||||
* An option.
|
||||
*/
|
||||
while (p && *++p)
|
||||
{
|
||||
char c = *p;
|
||||
switch (c)
|
||||
{
|
||||
case '-':
|
||||
/*
|
||||
* Long option.
|
||||
*/
|
||||
{
|
||||
char *opt, *val;
|
||||
opt = p++; /* opt will have _one_ leading - */
|
||||
while (*p && *p != '=')
|
||||
p++; /* find end of option */
|
||||
if (*p == '=')
|
||||
{
|
||||
*p++ = '\0';
|
||||
val = p;
|
||||
}
|
||||
else
|
||||
val = NULL;
|
||||
if (!strcmp (opt, "-help"))
|
||||
{
|
||||
help ();
|
||||
nogo = TRUE;
|
||||
}
|
||||
else if (!strcmp (opt, "-version"))
|
||||
{
|
||||
showversion ();
|
||||
nogo = TRUE;
|
||||
}
|
||||
else if (!strcmp (opt, "-licence") ||
|
||||
!strcmp (opt, "-license"))
|
||||
{
|
||||
licence ();
|
||||
nogo = TRUE;
|
||||
}
|
||||
else if (!strcmp (opt, "-output"))
|
||||
{
|
||||
if (!val)
|
||||
errs = TRUE, error (err_optnoarg, opt);
|
||||
else
|
||||
outfile = val;
|
||||
}
|
||||
else if (!strcmp (opt, "-precise"))
|
||||
{
|
||||
reportcols = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
errs = TRUE, error (err_nosuchopt, opt);
|
||||
}
|
||||
}
|
||||
p = NULL;
|
||||
break;
|
||||
case 'h':
|
||||
case 'V':
|
||||
case 'L':
|
||||
case 'P':
|
||||
case 'd':
|
||||
/*
|
||||
* Option requiring no parameter.
|
||||
*/
|
||||
switch (c)
|
||||
{
|
||||
case 'h':
|
||||
help ();
|
||||
nogo = TRUE;
|
||||
break;
|
||||
case 'V':
|
||||
showversion ();
|
||||
nogo = TRUE;
|
||||
break;
|
||||
case 'L':
|
||||
licence ();
|
||||
nogo = TRUE;
|
||||
break;
|
||||
case 'P':
|
||||
reportcols = 1;
|
||||
break;
|
||||
case 'd':
|
||||
debug = TRUE;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 'o':
|
||||
/*
|
||||
* Option requiring parameter.
|
||||
*/
|
||||
p++;
|
||||
if (!*p && argc > 1)
|
||||
--argc, p = *++argv;
|
||||
else if (!*p)
|
||||
{
|
||||
char opt[2];
|
||||
opt[0] = c;
|
||||
opt[1] = '\0';
|
||||
errs = TRUE, error (err_optnoarg, opt);
|
||||
}
|
||||
/*
|
||||
* Now c is the option and p is the parameter.
|
||||
*/
|
||||
switch (c)
|
||||
{
|
||||
case 'o':
|
||||
outfile = p;
|
||||
break;
|
||||
}
|
||||
p = NULL; /* prevent continued processing */
|
||||
break;
|
||||
default:
|
||||
/*
|
||||
* Unrecognised option.
|
||||
*/
|
||||
{
|
||||
char opt[2];
|
||||
opt[0] = c;
|
||||
opt[1] = '\0';
|
||||
errs = TRUE, error (err_nosuchopt, opt);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* A non-option argument.
|
||||
*/
|
||||
infiles[nfiles++] = p;
|
||||
}
|
||||
/*
|
||||
* Parse command line arguments.
|
||||
*/
|
||||
while (--argc) {
|
||||
char *p = *++argv;
|
||||
if (*p == '-') {
|
||||
/*
|
||||
* An option.
|
||||
*/
|
||||
while (p && *++p) {
|
||||
char c = *p;
|
||||
switch (c) {
|
||||
case '-':
|
||||
/*
|
||||
* Long option.
|
||||
*/
|
||||
{
|
||||
char *opt, *val;
|
||||
opt = p++; /* opt will have _one_ leading - */
|
||||
while (*p && *p != '=')
|
||||
p++; /* find end of option */
|
||||
if (*p == '=') {
|
||||
*p++ = '\0';
|
||||
val = p;
|
||||
} else
|
||||
val = NULL;
|
||||
if (!strcmp(opt, "-version")) {
|
||||
showversion();
|
||||
nogo = TRUE;
|
||||
} else if (!strcmp(opt, "-licence") ||
|
||||
!strcmp(opt, "-license")) {
|
||||
licence();
|
||||
nogo = TRUE;
|
||||
} else if (!strcmp(opt, "-output")) {
|
||||
if (!val)
|
||||
errs = TRUE, error(err_optnoarg, opt);
|
||||
else
|
||||
outfile = val;
|
||||
} else if (!strcmp(opt, "-precise")) {
|
||||
reportcols = 1;
|
||||
} else {
|
||||
errs = TRUE, error(err_nosuchopt, opt);
|
||||
}
|
||||
}
|
||||
p = NULL;
|
||||
break;
|
||||
case 'V':
|
||||
case 'L':
|
||||
case 'P':
|
||||
case 'd':
|
||||
/*
|
||||
* Option requiring no parameter.
|
||||
*/
|
||||
switch (c) {
|
||||
case 'V':
|
||||
showversion();
|
||||
nogo = TRUE;
|
||||
break;
|
||||
case 'L':
|
||||
licence();
|
||||
nogo = TRUE;
|
||||
break;
|
||||
case 'P':
|
||||
reportcols = 1;
|
||||
break;
|
||||
case 'd':
|
||||
debug = TRUE;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 'o':
|
||||
/*
|
||||
* Option requiring parameter.
|
||||
*/
|
||||
p++;
|
||||
if (!*p && argc > 1)
|
||||
--argc, p = *++argv;
|
||||
else if (!*p) {
|
||||
char opt[2];
|
||||
opt[0] = c;
|
||||
opt[1] = '\0';
|
||||
errs = TRUE, error(err_optnoarg, opt);
|
||||
}
|
||||
/*
|
||||
* Now c is the option and p is the parameter.
|
||||
*/
|
||||
switch (c) {
|
||||
case 'o':
|
||||
outfile = p;
|
||||
break;
|
||||
}
|
||||
p = NULL; /* prevent continued processing */
|
||||
break;
|
||||
default:
|
||||
/*
|
||||
* Unrecognised option.
|
||||
*/
|
||||
{
|
||||
char opt[2];
|
||||
opt[0] = c;
|
||||
opt[1] = '\0';
|
||||
errs = TRUE, error(err_nosuchopt, opt);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
/*
|
||||
* A non-option argument.
|
||||
*/
|
||||
infiles[nfiles++] = p;
|
||||
}
|
||||
}
|
||||
|
||||
if (errs)
|
||||
exit (EXIT_FAILURE);
|
||||
if (nogo)
|
||||
exit (EXIT_SUCCESS);
|
||||
if (errs)
|
||||
exit(EXIT_FAILURE);
|
||||
if (nogo)
|
||||
exit(EXIT_SUCCESS);
|
||||
|
||||
/*
|
||||
* Do the work.
|
||||
*/
|
||||
if (nfiles == 0)
|
||||
{
|
||||
error (err_noinput);
|
||||
usage ();
|
||||
exit (EXIT_FAILURE);
|
||||
/*
|
||||
* Do the work.
|
||||
*/
|
||||
if (nfiles == 0) {
|
||||
error(err_noinput);
|
||||
usage();
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
{
|
||||
input in;
|
||||
paragraph *sourceform, *p;
|
||||
indexdata *idx;
|
||||
keywordlist *keywords;
|
||||
{
|
||||
input in;
|
||||
paragraph *sourceform, *p;
|
||||
indexdata *idx;
|
||||
keywordlist *keywords;
|
||||
|
||||
in.filenames = infiles;
|
||||
in.nfiles = nfiles;
|
||||
in.currfp = NULL;
|
||||
in.currindex = 0;
|
||||
in.npushback = in.pushbacksize = 0;
|
||||
in.pushback = NULL;
|
||||
in.reportcols = reportcols;
|
||||
in.stack = NULL;
|
||||
in.filenames = infiles;
|
||||
in.nfiles = nfiles;
|
||||
in.currfp = NULL;
|
||||
in.currindex = 0;
|
||||
in.npushback = in.pushbacksize = 0;
|
||||
in.pushback = NULL;
|
||||
in.reportcols = reportcols;
|
||||
in.stack = NULL;
|
||||
|
||||
idx = make_index ();
|
||||
idx = make_index();
|
||||
|
||||
sourceform = read_input (&in, idx);
|
||||
if (!sourceform)
|
||||
exit (EXIT_FAILURE);
|
||||
sourceform = read_input(&in, idx);
|
||||
if (!sourceform)
|
||||
exit(EXIT_FAILURE);
|
||||
|
||||
sfree (in.pushback);
|
||||
sfree(in.pushback);
|
||||
|
||||
mark_attr_ends (sourceform);
|
||||
mark_attr_ends(sourceform);
|
||||
|
||||
sfree (infiles);
|
||||
sfree(infiles);
|
||||
|
||||
keywords = get_keywords (sourceform);
|
||||
if (!keywords)
|
||||
exit (EXIT_FAILURE);
|
||||
gen_citations (sourceform, keywords);
|
||||
subst_keywords (sourceform, keywords);
|
||||
keywords = get_keywords(sourceform);
|
||||
if (!keywords)
|
||||
exit(EXIT_FAILURE);
|
||||
gen_citations(sourceform, keywords);
|
||||
subst_keywords(sourceform, keywords);
|
||||
|
||||
for (p = sourceform; p; p = p->next)
|
||||
if (p->type == para_IM)
|
||||
index_merge (idx, TRUE, p->keyword, p->words);
|
||||
for (p = sourceform; p; p = p->next)
|
||||
if (p->type == para_IM)
|
||||
index_merge(idx, TRUE, p->keyword, p->words);
|
||||
|
||||
build_index (idx);
|
||||
build_index(idx);
|
||||
|
||||
if (debug)
|
||||
{
|
||||
index_debug (idx);
|
||||
dbg_prtkws (keywords);
|
||||
dbg_prtsource (sourceform);
|
||||
}
|
||||
if (debug) {
|
||||
index_debug(idx);
|
||||
dbg_prtkws(keywords);
|
||||
dbg_prtsource(sourceform);
|
||||
}
|
||||
|
||||
text_backend (sourceform, keywords, idx);
|
||||
xhtml_backend (sourceform, keywords, idx);
|
||||
whlp_backend (sourceform, keywords, idx);
|
||||
xhtml_backend(sourceform, keywords, idx);
|
||||
|
||||
free_para_list (sourceform);
|
||||
free_keywords (keywords);
|
||||
cleanup_index (idx);
|
||||
}
|
||||
free_para_list(sourceform);
|
||||
free_keywords(keywords);
|
||||
cleanup_index(idx);
|
||||
}
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
dbg_prtsource (paragraph * sourceform)
|
||||
static void dbg_prtsource(paragraph * sourceform)
|
||||
{
|
||||
/*
|
||||
* Output source form in debugging format.
|
||||
*/
|
||||
/*
|
||||
* Output source form in debugging format.
|
||||
*/
|
||||
|
||||
paragraph *p;
|
||||
for (p = sourceform; p; p = p->next)
|
||||
{
|
||||
wchar_t *wp;
|
||||
printf ("para %d ", p->type);
|
||||
if (p->keyword)
|
||||
{
|
||||
wp = p->keyword;
|
||||
while (*wp)
|
||||
{
|
||||
putchar ('\"');
|
||||
for (; *wp; wp++)
|
||||
putchar (*wp);
|
||||
putchar ('\"');
|
||||
if (*++wp)
|
||||
printf (", ");
|
||||
}
|
||||
}
|
||||
else
|
||||
printf ("(no keyword)");
|
||||
printf (" {\n");
|
||||
dbg_prtwordlist (1, p->words);
|
||||
printf ("}\n");
|
||||
paragraph *p;
|
||||
for (p = sourceform; p; p = p->next) {
|
||||
wchar_t *wp;
|
||||
printf("para %d ", p->type);
|
||||
if (p->keyword) {
|
||||
wp = p->keyword;
|
||||
while (*wp) {
|
||||
putchar('\"');
|
||||
for (; *wp; wp++)
|
||||
putchar(*wp);
|
||||
putchar('\"');
|
||||
if (*++wp)
|
||||
printf(", ");
|
||||
}
|
||||
} else
|
||||
printf("(no keyword)");
|
||||
printf(" {\n");
|
||||
dbg_prtwordlist(1, p->words);
|
||||
printf("}\n");
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
dbg_prtkws (keywordlist * kws)
|
||||
static void dbg_prtkws(keywordlist * kws)
|
||||
{
|
||||
/*
|
||||
* Output keywords in debugging format.
|
||||
*/
|
||||
/*
|
||||
* Output keywords in debugging format.
|
||||
*/
|
||||
|
||||
int i;
|
||||
keyword *kw;
|
||||
int i;
|
||||
keyword *kw;
|
||||
|
||||
for (i = 0; (kw = index234 (kws->keys, i)) != NULL; i++)
|
||||
{
|
||||
wchar_t *wp;
|
||||
printf ("keyword ");
|
||||
wp = kw->key;
|
||||
while (*wp)
|
||||
{
|
||||
putchar ('\"');
|
||||
for (; *wp; wp++)
|
||||
putchar (*wp);
|
||||
putchar ('\"');
|
||||
if (*++wp)
|
||||
printf (", ");
|
||||
}
|
||||
printf (" {\n");
|
||||
dbg_prtwordlist (1, kw->text);
|
||||
printf ("}\n");
|
||||
for (i = 0; (kw = index234(kws->keys, i)) != NULL; i++) {
|
||||
wchar_t *wp;
|
||||
printf("keyword ");
|
||||
wp = kw->key;
|
||||
while (*wp) {
|
||||
putchar('\"');
|
||||
for (; *wp; wp++)
|
||||
putchar(*wp);
|
||||
putchar('\"');
|
||||
if (*++wp)
|
||||
printf(", ");
|
||||
}
|
||||
printf(" {\n");
|
||||
dbg_prtwordlist(1, kw->text);
|
||||
printf("}\n");
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
dbg_prtwordlist (int level, word * w)
|
||||
static void dbg_prtwordlist(int level, word * w)
|
||||
{
|
||||
for (; w; w = w->next)
|
||||
{
|
||||
wchar_t *wp;
|
||||
printf ("%*sword %d ", level * 4, "", w->type);
|
||||
if (w->text)
|
||||
{
|
||||
printf ("\"");
|
||||
for (wp = w->text; *wp; wp++)
|
||||
putchar (*wp);
|
||||
printf ("\"");
|
||||
}
|
||||
else
|
||||
printf ("(no text)");
|
||||
if (w->alt)
|
||||
{
|
||||
printf (" alt = {\n");
|
||||
dbg_prtwordlist (level + 1, w->alt);
|
||||
printf ("%*s}", level * 4, "");
|
||||
}
|
||||
printf ("\n");
|
||||
for (; w; w = w->next) {
|
||||
wchar_t *wp;
|
||||
printf("%*sword %d ", level * 4, "", w->type);
|
||||
if (w->text) {
|
||||
printf("\"");
|
||||
for (wp = w->text; *wp; wp++)
|
||||
putchar(*wp);
|
||||
printf("\"");
|
||||
} else
|
||||
printf("(no text)");
|
||||
if (w->alt) {
|
||||
printf(" alt = {\n");
|
||||
dbg_prtwordlist(level + 1, w->alt);
|
||||
printf("%*s}", level * 4, "");
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue