ret.achapter.just_numbers = FALSE;
ret.achapter.number_suffix = L": ";
ret.nasect = 1;
- ret.asect = mknewa(sectlevel, ret.nasect);
+ ret.asect = snewn(ret.nasect, sectlevel);
ret.asect[0].just_numbers = TRUE;
ret.asect[0].number_suffix = L" ";
ret.ncdepths = 0;
}
if (n >= ret.nasect) {
int i;
- ret.asect = resize(ret.asect, n+1);
+ ret.asect = sresize(ret.asect, n+1, sectlevel);
for (i = ret.nasect; i <= n; i++)
ret.asect[i] = ret.asect[ret.nasect-1];
ret.nasect = n+1;
}
if (n >= ret.nasect) {
int i;
- ret.asect = resize(ret.asect, n+1);
+ ret.asect = sresize(ret.asect, n+1, sectlevel);
for (i = ret.nasect; i <= n; i++) {
ret.asect[i] = ret.asect[ret.nasect-1];
}
}
if (n >= ret.ncdepths) {
int i;
- ret.contents_depths = resize(ret.contents_depths, n+1);
+ ret.contents_depths =
+ sresize(ret.contents_depths, n+1, int);
for (i = ret.ncdepths; i <= n; i++) {
ret.contents_depths[i] = i+2;
}
* configuration template. For the moment I'll just
* invent something completely stupid.
*/
- sect->fragment = mknewa(char, 40);
+ sect->fragment = snewn(40, char);
sprintf(sect->fragment, "frag%p", sect);
}
}
*/
for (i = 0; (entry = index234(idx->entries, i)) != NULL; i++) {
- htmlindex *hi = mknew(htmlindex);
+ htmlindex *hi = snew(htmlindex);
hi->nrefs = hi->refsize = 0;
hi->refs = NULL;
for (w = p->words; w; w = w->next)
if (w->type == word_IndexRef) {
- htmlindexref *hr = mknew(htmlindexref);
+ htmlindexref *hr = snew(htmlindexref);
indextag *tag;
int i;
if (hi->nrefs >= hi->refsize) {
hi->refsize += 32;
- hi->refs = resize(hi->refs, hi->refsize);
+ hi->refs = sresize(hi->refs, hi->refsize, word *);
}
hi->refs[hi->nrefs++] = w;
if (adepth <= a->contents_depth) {
if (ntoc >= tocsize) {
tocsize += 64;
- toc = resize(toc, tocsize);
+ toc = sresize(toc, tocsize, htmlsect *);
}
toc[ntoc++] = s;
}
* Now display the section text.
*/
if (s->text) {
- stackhead = mknew(struct stackelement);
+ stackhead = snew(struct stackelement);
stackhead->next = NULL;
stackhead->listtype = NOLIST;
stackhead->itemtype = NOITEM;
break;
case para_LcontPush:
- se = mknew(struct stackelement);
+ se = snew(struct stackelement);
se->next = stackhead;
se->listtype = NOLIST;
se->itemtype = NOITEM;
static htmlfile *html_new_file(htmlfilelist *list, char *filename)
{
- htmlfile *ret = mknew(htmlfile);
+ htmlfile *ret = snew(htmlfile);
ret->next = NULL;
if (list->tail)
static htmlsect *html_new_sect(htmlsectlist *list, paragraph *title)
{
- htmlsect *ret = mknew(htmlsect);
+ htmlsect *ret = snew(htmlsect);
ret->next = NULL;
if (list->tail)
indexentry *entry;
for (i = 0; (entry = index234(idx->entries, i)) != NULL; i++) {
- info_idx *ii = mknew(info_idx);
+ info_idx *ii = snew(info_idx);
info_data id = EMPTY_INFO_DATA;
id.charset = conf.charset;
if (fp)
fclose(fp);
- fname = mknewa(char, strlen(conf.filename) + 40);
+ fname = snewn(strlen(conf.filename) + 40, char);
sprintf(fname, "%s-%d", conf.filename, filenum);
fp = fopen(fname, "w");
if (!fp) {
if (ii->nnodes >= ii->nodesize) {
ii->nodesize += 32;
- ii->nodes = resize(ii->nodes, ii->nodesize);
+ ii->nodes = sresize(ii->nodes, ii->nodesize, node *);
}
ii->nodes[ii->nnodes++] = n;
{
node *n;
- n = mknew(node);
+ n = snew(node);
n->text = empty_info_data;
n->text.charset = charset;
n->up = n->next = n->prev = n->lastchild = n->listnext = NULL;
while (*ep)
ep = uadv(ep);
sfree(ret.th);
- ret.th = mknewa(wchar_t, ep - wp + 1);
+ ret.th = snewn(ep - wp + 1, wchar_t);
memcpy(ret.th, wp, (ep - wp + 1) * sizeof(wchar_t));
} else if (!ustricmp(p->keyword, L"man-charset")) {
char *csname = utoa_dup(uadv(p->keyword), CS_ASCII);
psize = 384;
plen = 0;
- p = mknewa(char, psize);
+ p = snewn(psize, char);
err = 0;
while (slen > 0) {
plen += ret;
if (psize - plen < 256) {
psize = plen + 256;
- p = resize(p, psize);
+ p = sresize(p, psize, char);
}
}
}
paragraph index_placeholder_para;
page_data *first_index_page;
- fontlist = mknew(font_list);
+ fontlist = snew(font_list);
fontlist->head = fontlist->tail = NULL;
ourconf = paper_configure(sourceform, fontlist);
has_index = FALSE;
for (i = 0; (entry = index234(idx->entries, i)) != NULL; i++) {
- paper_idx *pi = mknew(paper_idx);
+ paper_idx *pi = snew(paper_idx);
has_index = TRUE;
}
if (has_index) {
- first_index_page = mknew(page_data);
+ first_index_page = snew(page_data);
first_index_page->next = first_index_page->prev = NULL;
first_index_page->first_line = NULL;
first_index_page->last_line = NULL;
* Start putting together the overall document structure we're
* going to return.
*/
- doc = mknew(document);
+ doc = snew(document);
doc->fonts = fontlist;
doc->pages = pages;
doc->paper_width = conf->paper_width;
{
int osize = 20;
- doc->outline_elements = mknewa(outline_element, osize);
+ doc->outline_elements = snewn(osize, outline_element);
doc->n_outline_elements = 0;
/* First find the title. */
if (doc->n_outline_elements >= osize) {
osize += 20;
doc->outline_elements =
- resize(doc->outline_elements, osize);
+ sresize(doc->outline_elements, osize, outline_element);
}
doc->outline_elements[doc->n_outline_elements].level =
int extra_indent, firstline_indent, aux_indent;
word *aux, *aux2;
- pdata = mknew(para_data);
+ pdata = snew(para_data);
pdata->outline_level = -1;
pdata->outline_title = NULL;
pdata->rect_type = RECT_NONE;
font_encoding *fe;
int i;
- fe = mknew(font_encoding);
+ fe = snew(font_encoding);
fe->next = NULL;
if (font->list->tail)
for (nglyphs = 0; ps_std_glyphs[nglyphs] != NULL; nglyphs++);
- f = mknew(font_data);
+ f = snew(font_data);
f->list = fontlist;
f->name = name;
f->nglyphs = nglyphs;
f->glyphs = ps_std_glyphs;
f->widths = widths;
- f->subfont_map = mknewa(subfont_map_entry, nglyphs);
+ f->subfont_map = snewn(nglyphs, subfont_map_entry);
/*
* Our first subfont will contain all of US-ASCII. This isn't
word *wd;
int len, wid, spaces;
- ldata = mknew(line_data);
+ ldata = snew(line_data);
ldata->pdata = pdata;
ldata->first = p->begin;
*/
for (l = last; l; l = l->prev) {
- l->bestcost = mknewa(int, ncols+1);
- l->vshortfall = mknewa(int, ncols+1);
- l->text = mknewa(int, ncols+1);
- l->space = mknewa(int, ncols+1);
- l->page_last = mknewa(line_data *, ncols+1);
+ l->bestcost = snewn(ncols+1, int);
+ l->vshortfall = snewn(ncols+1, int);
+ l->text = snewn(ncols+1, int);
+ l->space = snewn(ncols+1, int);
+ l->page_last = snewn(ncols+1, line_data *);
for (n = 0; n <= ncols; n++) {
int minheight, text = 0, space = 0;
page_data *page;
int text, space, head;
- page = mknew(page_data);
+ page = snew(page_data);
page->next = NULL;
page->prev = pt;
if (pt)
static void add_rect_to_page(page_data *page, int x, int y, int w, int h)
{
- rect *r = mknew(rect);
+ rect *r = snew(rect);
r->next = NULL;
if (page->last_rect)
{
text_fragment *frag;
- frag = mknew(text_fragment);
+ frag = snew(text_fragment);
frag->next = NULL;
if (page->last_text)
int textpos, textwid, glyph;
font_encoding *subfont = NULL, *sf;
- text = mknewa(char, 1 + ustrlen(str));
+ text = snewn(1 + ustrlen(str), char);
textpos = textwid = 0;
while (*str) {
}
}
if (dest.type != NONE) {
- *xr = mknew(xref);
+ *xr = snew(xref);
(*xr)->dest = dest; /* structure copy */
if (page->last_xref)
page->last_xref->next = *xr;
* previous line.
*/
if (dest->type != NONE) {
- xr = mknew(xref);
+ xr = snew(xref);
xr->next = NULL;
xr->dest = *dest; /* structure copy */
if (ldata->page->last_xref)
*/
if (pdata->contents_entry && ldata->page != cxref_page) {
cxref_page = ldata->page;
- cxref = mknew(xref);
+ cxref = snew(xref);
cxref->next = NULL;
cxref->dest.type = PAGE;
if (pdata->contents_entry == index_placeholder) {
static para_data *code_paragraph(int indent, word *words, paper_conf *conf)
{
- para_data *pdata = mknew(para_data);
+ para_data *pdata = snew(para_data);
/*
* For code paragraphs, I'm going to hack grievously and
* which has the same emphasis. Form it into a word
* structure.
*/
- w = mknew(word);
+ w = snew(word);
w->next = NULL;
w->alt = NULL;
w->type = (prev == 0 ? word_WeakCode :
prev == 1 ? word_Emph : word_Normal);
- w->text = mknewa(wchar_t, t-start+1);
+ w->text = snewn(t-start+1, wchar_t);
memcpy(w->text, start, (t-start) * sizeof(wchar_t));
w->text[t-start] = '\0';
w->breaks = FALSE;
prev = -1;
}
- ldata = mknew(line_data);
+ ldata = snew(line_data);
ldata->pdata = pdata;
ldata->first = lhead;
static para_data *rule_paragraph(int indent, paper_conf *conf)
{
- para_data *pdata = mknew(para_data);
+ para_data *pdata = snew(para_data);
line_data *ldata;
- ldata = mknew(line_data);
+ ldata = snew(line_data);
ldata->pdata = pdata;
ldata->first = NULL;
static word *fake_word(wchar_t *text)
{
- word *ret = mknew(word);
+ word *ret = snew(word);
ret->next = NULL;
ret->alt = NULL;
ret->type = word_Normal;
static word *fake_space_word(void)
{
- word *ret = mknew(word);
+ word *ret = snew(word);
ret->next = NULL;
ret->alt = NULL;
ret->type = word_WhiteSpace;
static word *fake_page_ref(page_data *page)
{
- word *ret = mknew(word);
+ word *ret = snew(word);
ret->next = NULL;
ret->alt = NULL;
ret->type = word_PageXref;
static word *fake_end_ref(void)
{
- word *ret = mknew(word);
+ word *ret = snew(word);
ret->next = NULL;
ret->alt = NULL;
ret->type = word_XrefEnd;
static object *new_object(objlist *list)
{
- object *obj = mknew(object);
+ object *obj = snew(object);
obj->list = list;
ret.achapter.number_suffix = L": ";
ret.achapter.underline = L"\x203E\0-\0\0";
ret.nasect = 1;
- ret.asect = mknewa(alignstruct, ret.nasect);
+ ret.asect = snewn(ret.nasect, alignstruct);
ret.asect[0].align = LEFTPLUS;
ret.asect[0].just_numbers = TRUE;
ret.asect[0].number_suffix = L" ";
}
if (n >= ret.nasect) {
int i;
- ret.asect = resize(ret.asect, n+1);
+ ret.asect = sresize(ret.asect, n+1, alignstruct);
for (i = ret.nasect; i <= n; i++)
ret.asect[i] = ret.asect[ret.nasect-1];
ret.nasect = n+1;
}
if (n >= ret.nasect) {
int i;
- ret.asect = resize(ret.asect, n+1);
+ ret.asect = sresize(ret.asect, n+1, alignstruct);
for (i = ret.nasect; i <= n; i++)
ret.asect[i] = ret.asect[ret.nasect-1];
ret.nasect = n+1;
}
if (n >= ret.nasect) {
int i;
- ret.asect = resize(ret.asect, n+1);
+ ret.asect = sresize(ret.asect, n+1, alignstruct);
for (i = ret.nasect; i <= n; i++)
ret.asect[i] = ret.asect[ret.nasect-1];
ret.nasect = n+1;
}
if (n >= ret.nasect) {
int i;
- ret.asect = resize(ret.asect, n+1);
+ ret.asect = sresize(ret.asect, n+1, alignstruct);
for (i = ret.nasect; i <= n; i++) {
ret.asect[i] = ret.asect[ret.nasect-1];
}
tolower(conf.filename[len-2] != 'l') ||
tolower(conf.filename[len-1] != 'p')) {
char *newf;
- newf = mknewa(char, len + 5);
+ newf = snewn(len + 5, char);
sprintf(newf, "%s.hlp", conf.filename);
sfree(conf.filename);
conf.filename = newf;
len = strlen(newf);
}
- cntname = mknewa(char, len+1);
+ cntname = snewn(len+1, char);
sprintf(cntname, "%.*s.cnt", len-4, conf.filename);
}
whlp_set_font(h, FONT_BOLD_CODE);
else
whlp_set_font(h, FONT_CODE);
- tmp = mknewa(wchar_t, n+1);
+ tmp = snewn(n+1, wchar_t);
ustrncpy(tmp, t, n);
tmp[n] = L'\0';
whlp_wtext(&state, tmp);
};
numberstate *number_init(void) {
- numberstate *ret = mknew(numberstate);
+ numberstate *ret = snew(numberstate);
ret->chapternum = 0;
ret->appendixnum = -1;
ret->ischapter = 1;
ret->oklevel = -1; /* not even in a chapter yet */
ret->maxsectlevel = 32;
- ret->sectionlevels = mknewa(int, ret->maxsectlevel);
- ret->currentsects = mknewa(paragraph *, ret->maxsectlevel+1);
+ ret->sectionlevels = snewn(ret->maxsectlevel, int);
+ ret->currentsects = snewn(ret->maxsectlevel+1, paragraph *);
memset(ret->currentsects, 0, (ret->maxsectlevel+1)*sizeof(paragraph *));
ret->lastsect = NULL;
ret->listitem = -1;
}
static void dotext(word ***wret, wchar_t *text) {
- word *mnewword = mknew(word);
+ word *mnewword = snew(word);
mnewword->text = ustrdup(text);
mnewword->type = word_Normal;
mnewword->alt = NULL;
}
static void dospace(word ***wret) {
- word *mnewword = mknew(word);
+ word *mnewword = snew(word);
mnewword->text = NULL;
mnewword->type = word_WhiteSpace;
mnewword->alt = NULL;
state->oklevel = level+1;
if (state->maxsectlevel <= level) {
state->maxsectlevel = level + 32;
- state->sectionlevels = resize(state->sectionlevels,
- state->maxsectlevel);
+ state->sectionlevels = sresize(state->sectionlevels,
+ state->maxsectlevel, int);
}
state->sectionlevels[level]++;
for (i = level+1; i < state->maxsectlevel; i++)
donumber(&pret, state->listitem);
break;
case para_LcontPush:
- lse = mknew(struct listitem_stack_entry);
+ lse = snew(struct listitem_stack_entry);
lse->listitem = state->listitem;
lse->prev = *prev;
stk_push(state->listitem_stack, lse);
word *dup_word_list(word *w);
char *dupstr(char *s);
-#define mknew(type) ( (type *) smalloc (sizeof (type)) )
-#define mknewa(type, number) ( (type *) smalloc ((number) * sizeof (type)) )
-#define resize(array, len) ( srealloc ((array), (len) * sizeof (*(array))) )
+#define snew(type) ( (type *) smalloc (sizeof (type)) )
+#define snewn(number, type) ( (type *) smalloc ((number) * sizeof (type)) )
+#define sresize(array, number, type) \
+ ( (type *) srealloc ((array), (number) * sizeof (type)) )
#define lenof(array) ( sizeof(array) / sizeof(*(array)) )
/*
static int compare_entries(void *av, void *bv);
indexdata *make_index(void) {
- indexdata *ret = mknew(indexdata);
+ indexdata *ret = snew(indexdata);
ret->tags = newtree234(compare_tags);
ret->entries = newtree234(compare_entries);
return ret;
}
static indextag *make_indextag(void) {
- indextag *ret = mknew(indextag);
+ indextag *ret = snew(indextag);
ret->name = NULL;
ret->implicit_text = NULL;
ret->explicit_texts = NULL;
}
if (t->nexplicit >= t->explicit_size) {
t->explicit_size = t->nexplicit + 8;
- t->explicit_texts = resize(t->explicit_texts,
- t->explicit_size);
- t->explicit_fpos = resize(t->explicit_fpos,
- t->explicit_size);
+ t->explicit_texts = sresize(t->explicit_texts,
+ t->explicit_size, word *);
+ t->explicit_fpos = sresize(t->explicit_fpos,
+ t->explicit_size, filepos);
}
t->explicit_texts[t->nexplicit] = text;
t->explicit_fpos[t->nexplicit] = *fpos;
fa = t->explicit_fpos;
}
if (t->nrefs) {
- t->refs = mknewa(indexentry *, t->nrefs);
+ t->refs = snewn(t->nrefs, indexentry *);
for (j = 0; j < t->nrefs; j++) {
- indexentry *ent = mknew(indexentry);
+ indexentry *ent = snew(indexentry);
ent->text = *ta++;
ent->fpos = *fa++;
t->refs[j] = add234(i->entries, ent);
static void unget(input *in, int c, filepos *pos) {
if (in->npushback >= in->pushbacksize) {
in->pushbacksize = in->npushback + 16;
- in->pushback = resize(in->pushback, in->pushbacksize);
+ in->pushback = sresize(in->pushback, in->pushbacksize, pushback);
}
in->pushback[in->npushback].chr = c;
in->pushback[in->npushback].pos = *pos; /* structure copy */
}
static void macrodef(tree234 *macros, wchar_t *name, wchar_t *text,
filepos fpos) {
- macro *m = mknew(macro);
+ macro *m = snew(macro);
m->name = name;
m->text = text;
if (add234(macros, m) != m) {
m.name = name;
gotit = find234(macros, &m, NULL);
if (gotit) {
- macrostack *expansion = mknew(macrostack);
+ macrostack *expansion = snew(macrostack);
expansion->next = in->stack;
expansion->text = gotit->text;
expansion->pos = *pos; /* structure copy */
word *mnewword;
if (!hptrptr)
return NULL;
- mnewword = mknew(word);
+ mnewword = snew(word);
*mnewword = newword; /* structure copy */
mnewword->next = NULL;
**hptrptr = mnewword;
* Adds a new paragraph to a linked list
*/
static paragraph *addpara(paragraph newpara, paragraph ***hptrptr) {
- paragraph *mnewpara = mknew(paragraph);
+ paragraph *mnewpara = snew(paragraph);
*mnewpara = newpara; /* structure copy */
mnewpara->next = NULL;
**hptrptr = mnewpara;
* nested lists, code paras etc). Hence, the previous
* paragraph must be of a list type.
*/
- sitem = mknew(struct crossparaitem);
+ sitem = snew(struct crossparaitem);
stop = (struct crossparaitem *)stk_top(crossparastk);
if (stop)
*sitem = *stop;
* block-quoted (typically they will be indented a
* bit).
*/
- sitem = mknew(struct crossparaitem);
+ sitem = snew(struct crossparaitem);
stop = (struct crossparaitem *)stk_top(crossparastk);
if (stop)
*sitem = *stop;
case tok_lbrace:
error(err_unexbrace, &t.pos);
/* Error recovery: push nop */
- sitem = mknew(struct stack_item);
+ sitem = snew(struct stack_item);
sitem->type = stack_nop;
sitem->fpos = t.pos;
stk_push(parsestk, sitem);
rdadd(&indexstr, L'"');
addword(wd, &idximplicit);
}
- sitem = mknew(struct stack_item);
+ sitem = snew(struct stack_item);
sitem->fpos = t.pos;
sitem->type = stack_quote;
stk_push(parsestk, sitem);
* delimiting the text marked by the link.
*/
dtor(t), t = get_token(in);
- sitem = mknew(struct stack_item);
+ sitem = snew(struct stack_item);
sitem->fpos = wd.fpos;
sitem->type = stack_hyper;
/*
error(err_nestedstyles, &t.pos);
/* Error recovery: eat lbrace, push nop. */
dtor(t), t = get_token(in);
- sitem = mknew(struct stack_item);
+ sitem = snew(struct stack_item);
sitem->fpos = t.pos;
sitem->type = stack_nop;
stk_push(parsestk, sitem);
type == c_cw ? word_WeakCode :
word_Emph);
spcstyle = tospacestyle(style);
- sitem = mknew(struct stack_item);
+ sitem = snew(struct stack_item);
sitem->fpos = t.pos;
sitem->type = stack_style;
stk_push(parsestk, sitem);
error(err_nestedindex, &t.pos);
/* Error recovery: eat lbrace, push nop. */
dtor(t), t = get_token(in);
- sitem = mknew(struct stack_item);
+ sitem = snew(struct stack_item);
sitem->fpos = t.pos;
sitem->type = stack_nop;
stk_push(parsestk, sitem);
}
- sitem = mknew(struct stack_item);
+ sitem = snew(struct stack_item);
sitem->fpos = t.pos;
sitem->type = stack_idx;
dtor(t), t = get_token(in);
* sidetrack from the main thread of the
* paragraph.
*/
- sitem = mknew(struct stack_item);
+ sitem = snew(struct stack_item);
sitem->fpos = t.pos;
sitem->type = stack_ualt;
sitem->whptr = whptr;
*/
keywordlist *get_keywords(paragraph *source) {
int errors = FALSE;
- keywordlist *kl = mknew(keywordlist);
+ keywordlist *kl = snew(keywordlist);
numberstate *n = number_init();
int prevpara = para_NotParaType;
if (source->kwtext || source->type == para_Biblio) {
keyword *kw, *ret;
- kw = mknew(keyword);
+ kw = snew(keyword);
kw->key = p;
kw->text = source->kwtext;
kw->para = source;
} else {
if (kl->nlooseends >= kl->looseendssize) {
kl->looseendssize = kl->nlooseends + 32;
- kl->looseends = resize(kl->looseends, kl->looseendssize);
+ kl->looseends = sresize(kl->looseends, kl->looseendssize,
+ word *);
}
kl->looseends[kl->nlooseends++] = source->kwtext;
}
kw->para->type != para_BiblioCited)
ustrlow(subst->text);
- close = mknew(word);
+ close = snew(word);
close->text = NULL;
close->alt = NULL;
close->type = word_XrefEnd;
/*
* Set up initial (default) parameters.
*/
- infiles = mknewa(char *, argc);
+ infiles = snewn(argc, char *);
nfiles = 0;
nogo = errs = FALSE;
reportcols = 0;
word *head, **eptr = &head;
while (w) {
- word *newwd = mknew(word);
+ word *newwd = snew(word);
*newwd = *w; /* structure copy */
newwd->text = ustrdup(w->text);
if (w->alt)
stack stk_new(void) {
stack s;
- s = mknew(struct stackTag);
+ s = snew(struct stackTag);
s->sp = 0;
s->size = 0;
s->data = NULL;
void stk_push(stack s, void *item) {
if (s->size <= s->sp) {
s->size = s->sp + 32;
- s->data = resize(s->data, s->size);
+ s->data = sresize(s->data, s->size, void *);
}
s->data[s->sp++] = item;
}
void rdadd(rdstring *rs, wchar_t c) {
if (rs->pos >= rs->size-1) {
rs->size = rs->pos + 128;
- rs->text = resize(rs->text, rs->size);
+ rs->text = sresize(rs->text, rs->size, wchar_t);
}
rs->text[rs->pos++] = c;
rs->text[rs->pos] = 0;
int len = ustrlen(p);
if (rs->pos >= rs->size - len) {
rs->size = rs->pos + len + 128;
- rs->text = resize(rs->text, rs->size);
+ rs->text = sresize(rs->text, rs->size, wchar_t);
}
ustrcpy(rs->text + rs->pos, p);
rs->pos += len;
}
wchar_t *rdtrim(rdstring *rs) {
- rs->text = resize(rs->text, rs->pos + 1);
+ rs->text = sresize(rs->text, rs->pos + 1, wchar_t);
return rs->text;
}
void rdaddc(rdstringc *rs, char c) {
if (rs->pos >= rs->size-1) {
rs->size = rs->pos + 128;
- rs->text = resize(rs->text, rs->size);
+ rs->text = sresize(rs->text, rs->size, char);
}
rs->text[rs->pos++] = c;
rs->text[rs->pos] = 0;
int len = strlen(p);
if (rs->pos >= rs->size - len) {
rs->size = rs->pos + len + 128;
- rs->text = resize(rs->text, rs->size);
+ rs->text = sresize(rs->text, rs->size, char);
}
strcpy(rs->text + rs->pos, p);
rs->pos += len;
}
char *rdtrimc(rdstringc *rs) {
- rs->text = resize(rs->text, rs->pos + 1);
+ rs->text = sresize(rs->text, rs->pos + 1, char);
return rs->text;
}
*/
i = 0;
while (i < nwords) {
- wrappedline *w = mknew(wrappedline);
+ wrappedline *w = snew(wrappedline);
*ptr = w;
ptr = &w->next;
w->next = NULL;
upos = ulen;
ulen += 2 + ustrlen(ustring);
- cfg->keyword = resize(cfg->keyword, ulen);
+ cfg->keyword = sresize(cfg->keyword, ulen, wchar_t);
ustrcpy(cfg->keyword+upos, ustring);
cfg->keyword[ulen-1] = L'\0';
pos = len;
len += 2 + strlen(string);
- cfg->origkeyword = resize(cfg->origkeyword, len);
+ cfg->origkeyword = sresize(cfg->origkeyword, len, char);
strcpy(cfg->origkeyword+pos, string);
cfg->origkeyword[len-1] = '\0';
{
paragraph *p;
- p = mknew(paragraph);
+ p = snew(paragraph);
memset(p, 0, sizeof(*p));
p->type = para_Config;
p->next = NULL;
#define smalloc malloc
#define sfree free
-#define mknew(typ) ( (typ *) smalloc (sizeof (typ)) )
+#define snew(typ) ( (typ *) smalloc (sizeof (typ)) )
#ifdef TEST
#define LOG(x) (printf x)
* Create a 2-3-4 tree.
*/
tree234 *newtree234(cmpfn234 cmp) {
- tree234 *ret = mknew(tree234);
+ tree234 *ret = snew(tree234);
LOG(("created tree %p\n", ret));
ret->root = NULL;
ret->cmp = cmp;
LOG((" done\n"));
break;
} else {
- node234 *m = mknew(node234);
+ node234 *m = snew(node234);
m->parent = n->parent;
LOG((" splitting a 4-node; created new node %p\n", m));
/*
return 0; /* root unchanged */
} else {
LOG((" root is overloaded, split into two\n"));
- (*root) = mknew(node234);
+ (*root) = snew(node234);
(*root)->kids[0] = left; (*root)->counts[0] = lcount;
(*root)->elems[0] = e;
(*root)->kids[1] = right; (*root)->counts[1] = rcount;
LOG(("adding element \"%s\" to tree %p\n", e, t));
if (t->root == NULL) {
- t->root = mknew(node234);
+ t->root = snew(node234);
t->root->elems[1] = t->root->elems[2] = NULL;
t->root->kids[0] = t->root->kids[1] = NULL;
t->root->kids[2] = t->root->kids[3] = NULL;
* nodes.
*/
node234 *newroot;
- newroot = mknew(node234);
+ newroot = snew(node234);
newroot->kids[0] = left; newroot->counts[0] = countnode234(left);
newroot->elems[0] = sep;
newroot->kids[1] = right; newroot->counts[1] = countnode234(right);
* new node pointers in halves[0] and halves[1], and go up
* a level.
*/
- sib = mknew(node234);
+ sib = snew(node234);
for (i = 0; i < 3; i++) {
if (i+ki < 3 && n->elems[i+ki]) {
sib->elems[i] = n->elems[i+ki];
static node234 *copynode234(node234 *n, copyfn234 copyfn, void *copyfnstate) {
int i;
- node234 *n2 = mknew(node234);
+ node234 *n2 = snew(node234);
for (i = 0; i < 3; i++) {
if (n->elems[i] && copyfn)
wchar_t *ustrdup(wchar_t const *s) {
wchar_t *r;
if (s) {
- r = mknewa(wchar_t, 1+ustrlen(s));
+ r = snewn(1+ustrlen(s), wchar_t);
ustrcpy(r, s);
} else {
- r = mknew(wchar_t);
+ r = snew(wchar_t);
*r = 0;
}
return r;
len = ustrlen(s);
outlen = len + 10;
- outbuf = mknewa(char, outlen);
+ outbuf = snewn(outlen, char);
outpos = 0;
outbuf[outpos] = '\0';
}
if (!ret) {
outlen = outlen * 3 / 2;
- outbuf = resize(outbuf, outlen);
+ outbuf = sresize(outbuf, outlen, char);
}
outpos += ret;
outbuf[outpos] = '\0';
* Clean up
*/
outlen = outpos + 32;
- outbuf = resize(outbuf, outlen);
+ outbuf = sresize(outbuf, outlen, char);
ret = charset_from_unicode(NULL, 0,
outbuf + outpos, outlen - outpos + 1,
charset, &state, NULL);
len = strlen(s) + 1;
do {
- buf = resize(buf, len);
+ buf = sresize(buf, len, wchar_t);
ustrfroma(s, buf, len, charset);
len = (3 * len) / 2 + 1; /* this guarantees a strict increase */
} while (ustrlen(buf) >= len-1);
- buf = resize(buf, ustrlen(buf)+1);
+ buf = sresize(buf, ustrlen(buf)+1, wchar_t);
return buf;
}
len = ustrlen(s);
- ret = mknewa(char, 1 + MB_CUR_MAX * len);
+ ret = snewn(1 + MB_CUR_MAX * len, char);
siz = wcstombs(ret, s, len);
if (siz) {
assert(siz <= MB_CUR_MAX * len);
ret[siz] = '\0';
- ret = resize(ret, siz+1);
+ ret = sresize(ret, siz+1, char);
return ret;
}
len = strlen(s);
- ret = mknewa(wchar_t, 1 + 2*len); /* be conservative */
+ ret = snewn(1 + 2*len, wchar_t); /* be conservative */
siz = mbstowcs(ret, s, len);
if (siz) {
assert(siz <= (size_t)(2 * len));
ret[siz] = L'\0';
- ret = resize(ret, siz+1);
+ ret = sresize(ret, siz+1, wchar_t);
return ret;
}
size = 0;
do {
size += USTRFTIME_DELTA;
- buf = resize(buf, size);
+ buf = sresize(buf, size, wchar_t);
ret = (int) wcsftime(buf, size, fmt, timespec);
} while (ret == 0);
size = 0;
do {
size += USTRFTIME_DELTA;
- buf = resize(buf, size);
+ buf = sresize(buf, size, char);
ret = (int) strftime(buf, size, fmt, timespec);
} while (ret == 0);
#define smalloc malloc
#define srealloc realloc
#define sfree free
-#define mknew(type) ( (type *) smalloc (sizeof (type)) )
-#define mknewa(type, number) ( (type *) smalloc ((number) * sizeof (type)) )
-#define resize(array, len) ( srealloc ((array), (len) * sizeof (*(array))) )
+#define snew(type) ( (type *) smalloc (sizeof (type)) )
+#define snewn(number, type) ( (type *) smalloc ((number) * sizeof (type)) )
+#define sresize(array, len, type) \
+ ( (type *) srealloc ((array), (len) * sizeof (type)) )
#define lenof(array) ( sizeof(array) / sizeof(*(array)) )
char *dupstr(char *s) {
- char *r = mknewa(char, 1+strlen(s)); strcpy(r,s); return r;
+ char *r = snewn(1+strlen(s), char); strcpy(r,s); return r;
}
#endif
WHLP_TOPIC whlp_register_topic(WHLP h, char *context_name, char **clash)
{
- context *ctx = mknew(context);
+ context *ctx = snew(context);
context *otherctx;
/*
while ( (ctx = index234(h->pre_contexts, 0)) != NULL ) {
delpos234(h->pre_contexts, 0);
- ctx->name = mknewa(char, 20);
+ ctx->name = snewn(20, char);
do {
sprintf(ctx->name, "t%08d", ctx_num++);
ctx->hash = context_hash(ctx->name);
void whlp_begin_topic(WHLP h, WHLP_TOPIC topic, char *title, ...)
{
- struct topiclink *link = mknew(struct topiclink);
+ struct topiclink *link = snew(struct topiclink);
int len, slen;
char *macro;
va_list ap;
link->recordtype = 2; /* topic header */
link->len1 = 4*7; /* standard linkdata1 size */
- link->data1 = mknewa(unsigned char, link->len1);
+ link->data1 = snewn(link->len1, unsigned char);
slen = strlen(title);
assert(slen+1 <= TOPIC_BLKSIZE);
len--; /* lose the last \0 on the last macro */
link->len2 = len;
- link->data2 = mknewa(unsigned char, link->len2);
+ link->data2 = snewn(link->len2, unsigned char);
memcpy(link->data2, h->linkdata2, link->len2);
topic->title = dupstr(title);
if (alignment == WHLP_ALIGN_RIGHT)
tabstop |= 0x10000;
- p = mknew(int);
+ p = snew(int);
*p = tabstop;
add234(h->tabstops, p);
h->para_flags |= 0x0200;
void whlp_begin_para(WHLP h, int para_type)
{
- struct topiclink *link = mknew(struct topiclink);
+ struct topiclink *link = snew(struct topiclink);
int i;
/*
whlp_linkdata_cslong(h, 1, data1cut);
whlp_linkdata_cushort(h, 1, h->link->len2);
- h->link->data1 = mknewa(unsigned char, h->link->len1);
+ h->link->data1 = snewn(h->link->len1, unsigned char);
memcpy(h->link->data1, h->linkdata1 + data1cut, h->link->len1 - data1cut);
memcpy(h->link->data1 + h->link->len1 - data1cut, h->linkdata1, data1cut);
- h->link->data2 = mknewa(unsigned char, h->link->len2);
+ h->link->data2 = snewn(h->link->len2, unsigned char);
memcpy(h->link->data2, h->linkdata2, h->link->len2);
addpos234(h->text, h->link, count234(h->text));
/*
* Create a final TOPICLINK containing no usable data.
*/
- link = mknew(struct topiclink);
+ link = snew(struct topiclink);
link->nexttopic = NULL;
if (h->prevtopic)
h->prevtopic->nexttopic = link;
h->prevtopic = link;
- link->data1 = mknewa(unsigned char, 0x1c);
+ link->data1 = snewn(0x1c, unsigned char);
link->block_size = 0;
link->data2 = NULL;
link->len1 = 0x1c;
void whlp_index_term(WHLP h, char *index, WHLP_TOPIC topic)
{
- struct indexrec *idx = mknew(struct indexrec);
+ struct indexrec *idx = snew(struct indexrec);
idx->term = dupstr(index);
idx->topic = topic;
sfree(fontname);
}
- fontdesc = mknew(struct fontdesc);
+ fontdesc = snew(struct fontdesc);
fontdesc->font = font;
fontdesc->family = family;
fontdesc->halfpoints = halfpoints;
npages_this_level++;
if (npages >= pagessize) {
pagessize = npages + 32;
- page_elements = resize(page_elements, pagessize);
+ page_elements = sresize(page_elements, pagessize, void *);
}
page_elements[npages++] = element;
npages_this_level++;
if (npages >= pagessize) {
pagessize = npages + 32;
- page_elements = resize(page_elements, pagessize);
+ page_elements = sresize(page_elements, pagessize, void *);
}
page_elements[npages++] = page_elements[current];
static struct file *whlp_new_file(WHLP h, char *name)
{
struct file *f;
- f = mknew(struct file);
+ f = snew(struct file);
f->data = NULL;
f->pos = f->len = f->size = 0;
if (name) {
{
if (f->pos + len > f->size) {
f->size = f->pos + len + 1024;
- f->data = resize(f->data, f->size);
+ f->data = sresize(f->data, f->size, unsigned char);
}
memcpy(f->data + f->pos, data, len);
f->pos += len;
{
if (f->pos + len > f->size) {
f->size = f->pos + len + 1024;
- f->data = resize(f->data, f->size);
+ f->data = sresize(f->data, f->size, unsigned char);
}
memset(f->data + f->pos, 0, len);
f->pos += len;
WHLP ret;
struct file *f;
- ret = mknew(struct WHLP_tag);
+ ret = snew(struct WHLP_tag);
/*
* Internal B-trees.