if (source->type == para_Config) {
if (!ustricmp(source->keyword, L"info-filename")) {
sfree(ret.filename);
- ret.filename = utoa_dup(uadv(source->keyword));
+ ret.filename = dupstr(adv(source->origkeyword));
} else if (!ustricmp(source->keyword, L"info-max-file-size")) {
ret.maxfilesize = utoi(uadv(source->keyword));
}
paragraph *info_config_filename(char *filename)
{
- paragraph *p;
- wchar_t *ufilename, *up;
- int len;
-
- p = mknew(paragraph);
- memset(p, 0, sizeof(*p));
- p->type = para_Config;
- p->next = NULL;
- p->fpos.filename = "<command line>";
- p->fpos.line = p->fpos.col = -1;
-
- ufilename = ufroma_dup(filename);
- len = ustrlen(ufilename) + 2 + lenof(L"info-filename");
- p->keyword = mknewa(wchar_t, len);
- up = p->keyword;
- ustrcpy(up, L"info-filename");
- up = uadv(up);
- ustrcpy(up, ufilename);
- up = uadv(up);
- *up = L'\0';
- assert(up - p->keyword < len);
- sfree(ufilename);
-
- return p;
+ return cmdline_cfg_simple("info-filename", filename, NULL);
}
void info_backend(paragraph *sourceform, keywordlist *keywords,
- indexdata *idx) {
+ indexdata *idx, void *unused) {
paragraph *p;
infoconfig conf;
word *prefix, *body, *wp;
int width = 70, listindentbefore = 1, listindentafter = 3;
int indent_code = 2, index_width = 40;
- IGNORE(keywords); /* we don't happen to need this */
- IGNORE(idx); /* or this */
+ IGNORE(unused);
conf = info_configure(sourceform);
}
rdaddsc(&intro_text, "INFO-DIR-SECTION ");
- s = utoa_dup(section);
+ s = utoa_dup(section, CS_FIXME);
rdaddsc(&intro_text, s);
sfree(s);
rdaddsc(&intro_text, "\nSTART-INFO-DIR-ENTRY\n* ");
- s = utoa_dup(shortname);
+ s = utoa_dup(shortname, CS_FIXME);
rdaddsc(&intro_text, s);
sfree(s);
rdaddsc(&intro_text, ": (");
}
}
rdaddsc(&intro_text, ". ");
- s = utoa_dup(longname);
+ s = utoa_dup(longname, CS_FIXME);
rdaddsc(&intro_text, s);
sfree(s);
rdaddsc(&intro_text, "\nEND-INFO-DIR-ENTRY\n\n");
attraux(words->aux) == attr_Only))
rdaddc(rs, '`'); /* FIXME: configurability */
if (removeattr(words->type) == word_Normal) {
- if (info_convert(words->text, &c))
+ if (info_convert(words->text, &c) || !words->alt)
rdaddsc(rs, c);
else
info_rdaddwc(rs, words->alt, NULL, FALSE);
? (attraux(words->aux) == attr_Only ? 2 :
attraux(words->aux) == attr_Always ? 0 : 1)
: 0) +
- (info_convert(words->text, NULL) ?
+ (info_convert(words->text, NULL) || !words->alt ?
ustrlen(words->text) :
info_width_internal_list(words->alt, xrefs)));
return 0; /* should never happen */
}
-static int info_width_noxrefs(word *words)
+static int info_width_noxrefs(void *ctx, word *words)
{
+ IGNORE(ctx);
return info_width_internal(words, FALSE);
}
-static int info_width_xrefs(word *words)
+static int info_width_xrefs(void *ctx, word *words)
{
+ IGNORE(ctx);
return info_width_internal(words, TRUE);
}
firstlinewidth = width - length;
wrapwidth = width;
- wrapping = wrap_para(words, firstlinewidth, wrapwidth, info_width_noxrefs);
+ wrapping = wrap_para(words, firstlinewidth, wrapwidth,
+ info_width_noxrefs, NULL, 0);
for (p = wrapping; p; p = p->next) {
info_rdaddwc(&t, p->begin, p->end, FALSE);
length = (t.text ? strlen(t.text) : 0);
} else
e = indent + extraindent;
- wrapping = wrap_para(words, firstlinewidth, width, info_width_xrefs);
+ wrapping = wrap_para(words, firstlinewidth, width, info_width_xrefs,
+ NULL, 0);
for (p = wrapping; p; p = p->next) {
for (i = 0; i < e; i++)
rdaddc(text, ' ');