There's no reason to have two nearly identical structs for metadata, move metadata struct to ircd.h and use it for both channel and user metadata.
This commit is contained in:
parent
07b7b659c1
commit
0b370fcc63
|
@ -72,7 +72,7 @@ struct Channel
|
||||||
unsigned int join_count; /* joins within delta */
|
unsigned int join_count; /* joins within delta */
|
||||||
unsigned int join_delta; /* last ts of join */
|
unsigned int join_delta; /* last ts of join */
|
||||||
|
|
||||||
struct Dictionary *c_metadata;
|
struct Dictionary *metadata;
|
||||||
|
|
||||||
unsigned long bants;
|
unsigned long bants;
|
||||||
time_t channelts;
|
time_t channelts;
|
||||||
|
@ -92,13 +92,6 @@ struct membership
|
||||||
unsigned long bants;
|
unsigned long bants;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct c_Metadata
|
|
||||||
{
|
|
||||||
const char *name;
|
|
||||||
const char *value;
|
|
||||||
time_t timevalue;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define BANLEN 195
|
#define BANLEN 195
|
||||||
struct Ban
|
struct Ban
|
||||||
{
|
{
|
||||||
|
|
|
@ -313,12 +313,6 @@ struct ListClient
|
||||||
*/
|
*/
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Metadata
|
|
||||||
{
|
|
||||||
const char *name;
|
|
||||||
const char *value;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* status macros.
|
* status macros.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -47,6 +47,13 @@ struct SetOptions
|
||||||
char adminstring[REALLEN];
|
char adminstring[REALLEN];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct Metadata
|
||||||
|
{
|
||||||
|
const char *name;
|
||||||
|
const char *value;
|
||||||
|
time_t timevalue;
|
||||||
|
};
|
||||||
|
|
||||||
struct Counter
|
struct Counter
|
||||||
{
|
{
|
||||||
int oper; /* Opers */
|
int oper; /* Opers */
|
||||||
|
|
|
@ -93,12 +93,12 @@ struct Channel *
|
||||||
allocate_channel(const char *chname)
|
allocate_channel(const char *chname)
|
||||||
{
|
{
|
||||||
struct Channel *chptr;
|
struct Channel *chptr;
|
||||||
struct Dictionary *c_metadata;
|
struct Dictionary *metadata;
|
||||||
chptr = rb_bh_alloc(channel_heap);
|
chptr = rb_bh_alloc(channel_heap);
|
||||||
chptr->chname = rb_strdup(chname);
|
chptr->chname = rb_strdup(chname);
|
||||||
|
|
||||||
c_metadata = irc_dictionary_create(irccmp);
|
metadata = irc_dictionary_create(irccmp);
|
||||||
chptr->c_metadata = c_metadata;
|
chptr->metadata = metadata;
|
||||||
return (chptr);
|
return (chptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -829,7 +829,7 @@ can_join(struct Client *source_p, struct Channel *chptr, char *key)
|
||||||
int use_althost = 0;
|
int use_althost = 0;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
hook_data_channel moduledata;
|
hook_data_channel moduledata;
|
||||||
struct c_Metadata *md;
|
struct Metadata *md;
|
||||||
struct DictionaryIter iter;
|
struct DictionaryIter iter;
|
||||||
char *text = rb_strdup("");
|
char *text = rb_strdup("");
|
||||||
|
|
||||||
|
@ -869,7 +869,7 @@ can_join(struct Client *source_p, struct Channel *chptr, char *key)
|
||||||
return ERR_KICKNOREJOIN;
|
return ERR_KICKNOREJOIN;
|
||||||
}
|
}
|
||||||
/* cleanup the channel's kicknorejoin metadata. */
|
/* cleanup the channel's kicknorejoin metadata. */
|
||||||
DICTIONARY_FOREACH(md, &iter, chptr->c_metadata)
|
DICTIONARY_FOREACH(md, &iter, chptr->metadata)
|
||||||
{
|
{
|
||||||
text = rb_strdup(md->name);
|
text = rb_strdup(md->name);
|
||||||
if((text[0] == 'K') && (md->timevalue + ConfigChannel.kick_no_rejoin_time > rb_current_time()))
|
if((text[0] == 'K') && (md->timevalue + ConfigChannel.kick_no_rejoin_time > rb_current_time()))
|
||||||
|
@ -1933,13 +1933,13 @@ void user_join(struct Client * client_p, struct Client * source_p, const char *
|
||||||
struct Metadata *
|
struct Metadata *
|
||||||
channel_metadata_add(struct Channel *target, const char *name, const char *value, int propegate)
|
channel_metadata_add(struct Channel *target, const char *name, const char *value, int propegate)
|
||||||
{
|
{
|
||||||
struct c_Metadata *md;
|
struct Metadata *md;
|
||||||
|
|
||||||
md = rb_malloc(sizeof(struct Metadata));
|
md = rb_malloc(sizeof(struct Metadata));
|
||||||
md->name = rb_strdup(name);
|
md->name = rb_strdup(name);
|
||||||
md->value = rb_strdup(value);
|
md->value = rb_strdup(value);
|
||||||
|
|
||||||
irc_dictionary_add(target->c_metadata, md->name, md);
|
irc_dictionary_add(target->metadata, md->name, md);
|
||||||
|
|
||||||
if(propegate)
|
if(propegate)
|
||||||
sendto_match_servs(&me, "*", CAP_ENCAP, NOCAPS, "ENCAP * METADATA ADD %s %s :%s",
|
sendto_match_servs(&me, "*", CAP_ENCAP, NOCAPS, "ENCAP * METADATA ADD %s %s :%s",
|
||||||
|
@ -1960,13 +1960,13 @@ channel_metadata_add(struct Channel *target, const char *name, const char *value
|
||||||
struct Metadata *
|
struct Metadata *
|
||||||
channel_metadata_time_add(struct Channel *target, const char *name, time_t value)
|
channel_metadata_time_add(struct Channel *target, const char *name, time_t value)
|
||||||
{
|
{
|
||||||
struct c_Metadata *md;
|
struct Metadata *md;
|
||||||
|
|
||||||
md = rb_malloc(sizeof(struct c_Metadata));
|
md = rb_malloc(sizeof(struct Metadata));
|
||||||
md->name = rb_strdup(name);
|
md->name = rb_strdup(name);
|
||||||
md->timevalue = value;
|
md->timevalue = value;
|
||||||
|
|
||||||
irc_dictionary_add(target->c_metadata, md->name, md);
|
irc_dictionary_add(target->metadata, md->name, md);
|
||||||
|
|
||||||
return md;
|
return md;
|
||||||
}
|
}
|
||||||
|
@ -1983,12 +1983,12 @@ channel_metadata_time_add(struct Channel *target, const char *name, time_t value
|
||||||
void
|
void
|
||||||
channel_metadata_delete(struct Channel *target, const char *name, int propegate)
|
channel_metadata_delete(struct Channel *target, const char *name, int propegate)
|
||||||
{
|
{
|
||||||
struct c_Metadata *md = channel_metadata_find(target, name);
|
struct Metadata *md = channel_metadata_find(target, name);
|
||||||
|
|
||||||
if(!md)
|
if(!md)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
irc_dictionary_delete(target->c_metadata, md->name);
|
irc_dictionary_delete(target->metadata, md->name);
|
||||||
|
|
||||||
rb_free(md);
|
rb_free(md);
|
||||||
|
|
||||||
|
@ -2011,10 +2011,10 @@ channel_metadata_find(struct Channel *target, const char *name)
|
||||||
if(!target)
|
if(!target)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if(!target->c_metadata)
|
if(!target->metadata)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return irc_dictionary_retrieve(target->c_metadata, name);
|
return irc_dictionary_retrieve(target->metadata, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -2030,7 +2030,7 @@ channel_metadata_clear(struct Channel *chptr)
|
||||||
struct Metadata *md;
|
struct Metadata *md;
|
||||||
struct DictionaryIter iter;
|
struct DictionaryIter iter;
|
||||||
|
|
||||||
DICTIONARY_FOREACH(md, &iter, chptr->c_metadata)
|
DICTIONARY_FOREACH(md, &iter, chptr->metadata)
|
||||||
{
|
{
|
||||||
channel_metadata_delete(chptr, md->name, 0);
|
channel_metadata_delete(chptr, md->name, 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -587,7 +587,7 @@ burst_TS6(struct Client *client_p)
|
||||||
}
|
}
|
||||||
sendto_one(client_p, "%s", buf);
|
sendto_one(client_p, "%s", buf);
|
||||||
|
|
||||||
DICTIONARY_FOREACH(md, &iter, chptr->c_metadata)
|
DICTIONARY_FOREACH(md, &iter, chptr->metadata)
|
||||||
{
|
{
|
||||||
/* don't bother bursting +J metadata */
|
/* don't bother bursting +J metadata */
|
||||||
if(!(md->name[0] == 'K'))
|
if(!(md->name[0] == 'K'))
|
||||||
|
|
Loading…
Reference in New Issue