forked from github/server
fix sections handling, remove it from nrmessage.
This commit is contained in:
parent
c11a020846
commit
22f6d4feed
4 changed files with 44 additions and 40 deletions
|
@ -122,6 +122,42 @@ message_type *mt_create(message_type * mtype, const char *args[], int nparameter
|
||||||
return mtype;
|
return mtype;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *sections[MAXSECTIONS];
|
||||||
|
|
||||||
|
const char *section_find(const char *name)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (name == NULL) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i != MAXSECTIONS && sections[i]; ++i) {
|
||||||
|
if (strcmp(sections[i], name) == 0) {
|
||||||
|
return sections[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *section_add(const char *name) {
|
||||||
|
int i;
|
||||||
|
if (name == NULL) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
for (i = 0; i != MAXSECTIONS && sections[i]; ++i) {
|
||||||
|
if (strcmp(sections[i], name) == 0) {
|
||||||
|
return sections[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
assert(i < MAXSECTIONS);
|
||||||
|
assert(sections[i] == NULL);
|
||||||
|
if (i + 1 < MAXSECTIONS) {
|
||||||
|
sections[i + 1] = NULL;
|
||||||
|
}
|
||||||
|
return sections[i] = str_strdup(name);
|
||||||
|
}
|
||||||
|
|
||||||
message_type *mt_new(const char *name, const char *section)
|
message_type *mt_new(const char *name, const char *section)
|
||||||
{
|
{
|
||||||
message_type *mtype;
|
message_type *mtype;
|
||||||
|
@ -134,7 +170,10 @@ message_type *mt_new(const char *name, const char *section)
|
||||||
mtype = (message_type *)malloc(sizeof(message_type));
|
mtype = (message_type *)malloc(sizeof(message_type));
|
||||||
mtype->key = 0;
|
mtype->key = 0;
|
||||||
mtype->name = str_strdup(name);
|
mtype->name = str_strdup(name);
|
||||||
mtype->section = section;
|
mtype->section = section_find(section);
|
||||||
|
if (!mtype->section) {
|
||||||
|
mtype->section = section_add(section);
|
||||||
|
}
|
||||||
mtype->nparameters = 0;
|
mtype->nparameters = 0;
|
||||||
mtype->pnames = NULL;
|
mtype->pnames = NULL;
|
||||||
mtype->types = NULL;
|
mtype->types = NULL;
|
||||||
|
@ -267,3 +306,4 @@ void message_done(void) {
|
||||||
free(at);
|
free(at);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,9 @@ extern "C" {
|
||||||
|
|
||||||
#define MSG_MAXARGS 8
|
#define MSG_MAXARGS 8
|
||||||
#define MT_NEW_END ((const char *)0)
|
#define MT_NEW_END ((const char *)0)
|
||||||
|
#define MAXSECTIONS 16
|
||||||
|
|
||||||
|
extern char *sections[MAXSECTIONS];
|
||||||
|
|
||||||
typedef struct arg_type {
|
typedef struct arg_type {
|
||||||
struct arg_type *next;
|
struct arg_type *next;
|
||||||
|
|
|
@ -65,42 +65,6 @@ static nrmessage_type *nrt_find(const struct message_type * mtype)
|
||||||
return found;
|
return found;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *sections[MAXSECTIONS];
|
|
||||||
|
|
||||||
const char *section_find(const char *name)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (name == NULL) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i != MAXSECTIONS && sections[i]; ++i) {
|
|
||||||
if (strcmp(sections[i], name) == 0) {
|
|
||||||
return sections[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *section_add(const char *name) {
|
|
||||||
int i;
|
|
||||||
if (name == NULL) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
for (i = 0; i != MAXSECTIONS && sections[i]; ++i) {
|
|
||||||
if (strcmp(sections[i], name) == 0) {
|
|
||||||
return sections[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
assert(i < MAXSECTIONS);
|
|
||||||
assert(sections[i] == NULL);
|
|
||||||
if (i + 1 < MAXSECTIONS) {
|
|
||||||
sections[i + 1] = NULL;
|
|
||||||
}
|
|
||||||
return sections[i] = str_strdup(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
nrt_register(const struct message_type *mtype)
|
nrt_register(const struct message_type *mtype)
|
||||||
{
|
{
|
||||||
|
|
|
@ -25,9 +25,6 @@ extern "C" {
|
||||||
struct message_type;
|
struct message_type;
|
||||||
struct nrmessage_type;
|
struct nrmessage_type;
|
||||||
|
|
||||||
#define MAXSECTIONS 8
|
|
||||||
extern char *sections[MAXSECTIONS];
|
|
||||||
|
|
||||||
void free_nrmesssages(void);
|
void free_nrmesssages(void);
|
||||||
|
|
||||||
void nrt_register(const struct message_type *mtype);
|
void nrt_register(const struct message_type *mtype);
|
||||||
|
|
Loading…
Reference in a new issue