Created new functions for allocating configuration data:
o cfg_alloc(size) -- generic memory allocation o cfg_allocu(size) -- unaligned memory allocation o cfg_allocz(size) -- zeroed memory allocation o cfg_strcpy(str) -- allocate a copy of a string Also fixed a bug in lexing of string literals.
This commit is contained in:
parent
5cd462f291
commit
49e4a4d1fd
2 changed files with 19 additions and 3 deletions
|
@ -107,7 +107,7 @@ WHITE [ \t]
|
||||||
|
|
||||||
["][^"\n]*["] {
|
["][^"\n]*["] {
|
||||||
cf_lval.t = yytext+1;
|
cf_lval.t = yytext+1;
|
||||||
yytext[yyleng] = 0;
|
yytext[yyleng-1] = 0;
|
||||||
return TEXT;
|
return TEXT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -172,7 +172,7 @@ cf_find_sym(byte *c, unsigned int h0)
|
||||||
l = strlen(c);
|
l = strlen(c);
|
||||||
if (l > SYM_MAX_LEN)
|
if (l > SYM_MAX_LEN)
|
||||||
cf_error("Symbol too long");
|
cf_error("Symbol too long");
|
||||||
s = mp_alloc(cfg_mem, sizeof(struct symbol) + l);
|
s = cfg_alloc(sizeof(struct symbol) + l);
|
||||||
s->next = sym_hash[h];
|
s->next = sym_hash[h];
|
||||||
sym_hash[h] = s;
|
sym_hash[h] = s;
|
||||||
s->class = SYM_VOID;
|
s->class = SYM_VOID;
|
||||||
|
@ -202,7 +202,7 @@ void
|
||||||
cf_lex_init(int flag)
|
cf_lex_init(int flag)
|
||||||
{
|
{
|
||||||
if (allow_new_symbols = flag)
|
if (allow_new_symbols = flag)
|
||||||
sym_hash = mp_allocz(cfg_mem, SYM_HASH_SIZE * sizeof(struct keyword *));
|
sym_hash = cfg_allocz(SYM_HASH_SIZE * sizeof(struct keyword *));
|
||||||
cf_lino = 1;
|
cf_lino = 1;
|
||||||
default_counter = 1;
|
default_counter = 1;
|
||||||
}
|
}
|
||||||
|
@ -234,3 +234,12 @@ cf_allocate(void)
|
||||||
cfg_pool = rp_new(&root_pool, "Config");
|
cfg_pool = rp_new(&root_pool, "Config");
|
||||||
cfg_mem = mp_new(cfg_pool, 1024);
|
cfg_mem = mp_new(cfg_pool, 1024);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
cfg_strcpy(char *c)
|
||||||
|
{
|
||||||
|
int l = strlen(c) + 1;
|
||||||
|
char *z = cfg_allocu(l);
|
||||||
|
memcpy(z, c, l);
|
||||||
|
return z;
|
||||||
|
}
|
||||||
|
|
|
@ -11,9 +11,16 @@
|
||||||
|
|
||||||
#include "lib/resource.h"
|
#include "lib/resource.h"
|
||||||
|
|
||||||
|
/* Pools */
|
||||||
|
|
||||||
extern pool *cfg_pool;
|
extern pool *cfg_pool;
|
||||||
extern mempool *cfg_mem;
|
extern mempool *cfg_mem;
|
||||||
|
|
||||||
|
#define cfg_alloc(size) mp_alloc(cfg_mem, size)
|
||||||
|
#define cfg_allocu(size) mp_allocu(cfg_mem, size)
|
||||||
|
#define cfg_allocz(size) mp_allocz(cfg_mem, size)
|
||||||
|
char *cfg_strcpy(char *c);
|
||||||
|
|
||||||
/* Lexer */
|
/* Lexer */
|
||||||
|
|
||||||
extern int (*cf_read_hook)(byte *buf, unsigned int max);
|
extern int (*cf_read_hook)(byte *buf, unsigned int max);
|
||||||
|
|
Loading…
Reference in a new issue