version 1.161, 2011/07/27 14:58:28 |
version 1.163, 2011/07/27 20:55:28 |
|
|
|
|
struct roffstr { |
struct roffstr { |
char *key; /* key of symbol */ |
char *key; /* key of symbol */ |
|
size_t keysz; |
char *val; /* current value */ |
char *val; /* current value */ |
|
size_t valsz; |
struct roffstr *next; /* next in list */ |
struct roffstr *next; /* next in list */ |
}; |
}; |
|
|
Line 1472 roff_setstr(struct roff *r, const char *name, const ch |
|
Line 1474 roff_setstr(struct roff *r, const char *name, const ch |
|
/* Create a new string table entry. */ |
/* Create a new string table entry. */ |
n = mandoc_malloc(sizeof(struct roffstr)); |
n = mandoc_malloc(sizeof(struct roffstr)); |
n->key = mandoc_strdup(name); |
n->key = mandoc_strdup(name); |
|
n->keysz = strlen(name); |
n->val = NULL; |
n->val = NULL; |
|
n->valsz = 0; |
n->next = r->first_string; |
n->next = r->first_string; |
r->first_string = n; |
r->first_string = n; |
} else if (0 == multiline) { |
} else if (0 == multiline) { |
/* In multiline mode, append; else replace. */ |
/* In multiline mode, append; else replace. */ |
free(n->val); |
free(n->val); |
n->val = NULL; |
n->val = NULL; |
|
n->valsz = 0; |
} |
} |
|
|
if (NULL == string) |
if (NULL == string) |
Line 1494 roff_setstr(struct roff *r, const char *name, const ch |
|
Line 1499 roff_setstr(struct roff *r, const char *name, const ch |
|
*n->val = '\0'; |
*n->val = '\0'; |
oldch = 0; |
oldch = 0; |
} else { |
} else { |
oldch = strlen(n->val); |
oldch = n->valsz; |
n->val = mandoc_realloc(n->val, oldch + newch); |
n->val = mandoc_realloc(n->val, oldch + newch); |
} |
} |
|
|
Line 1515 roff_setstr(struct roff *r, const char *name, const ch |
|
Line 1520 roff_setstr(struct roff *r, const char *name, const ch |
|
/* Append terminating bytes. */ |
/* Append terminating bytes. */ |
if (multiline) |
if (multiline) |
*c++ = '\n'; |
*c++ = '\n'; |
|
|
*c = '\0'; |
*c = '\0'; |
|
n->valsz = (int)(c - n->val); |
} |
} |
|
|
static const char * |
static const char * |