mirror of
https://github.com/osmarks/ngircd.git
synced 2024-12-12 09:50:29 +00:00
Configuration: get rid of Conf_Oper_Count and Conf_Channel_Count
Count elements dynamically when needed.
This commit is contained in:
parent
ee21490887
commit
0a85c58878
@ -55,8 +55,6 @@ static bool Use_Log = true, Using_MotdFile = true;
|
|||||||
static CONF_SERVER New_Server;
|
static CONF_SERVER New_Server;
|
||||||
static int New_Server_Idx;
|
static int New_Server_Idx;
|
||||||
|
|
||||||
static size_t Conf_Oper_Count;
|
|
||||||
static size_t Conf_Channel_Count;
|
|
||||||
static char Conf_MotdFile[FNAME_LEN];
|
static char Conf_MotdFile[FNAME_LEN];
|
||||||
|
|
||||||
static void Set_Defaults PARAMS(( bool InitServers ));
|
static void Set_Defaults PARAMS(( bool InitServers ));
|
||||||
@ -265,18 +263,18 @@ static void
|
|||||||
opers_puts(void)
|
opers_puts(void)
|
||||||
{
|
{
|
||||||
struct Conf_Oper *op;
|
struct Conf_Oper *op;
|
||||||
size_t len;
|
size_t count, i;
|
||||||
|
|
||||||
len = array_length(&Conf_Opers, sizeof(*op));
|
count = array_length(&Conf_Opers, sizeof(*op));
|
||||||
op = array_start(&Conf_Opers);
|
op = array_start(&Conf_Opers);
|
||||||
while (len--) {
|
for (i = 0; i < count; i++, op++) {
|
||||||
assert(op->name[0]);
|
if (!op->name[0])
|
||||||
|
continue;
|
||||||
|
|
||||||
puts("[OPERATOR]");
|
puts("[OPERATOR]");
|
||||||
printf(" Name = %s\n", op->name);
|
printf(" Name = %s\n", op->name);
|
||||||
printf(" Password = %s\n", op->pwd);
|
printf(" Password = %s\n", op->pwd);
|
||||||
printf(" Mask = %s\n\n", op->mask ? op->mask : "");
|
printf(" Mask = %s\n\n", op->mask ? op->mask : "");
|
||||||
op++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -709,10 +707,6 @@ Set_Defaults(bool InitServers)
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Initialize IRC operators and channels */
|
|
||||||
Conf_Oper_Count = 0;
|
|
||||||
Conf_Channel_Count = 0;
|
|
||||||
|
|
||||||
/* Initialize server configuration structures */
|
/* Initialize server configuration structures */
|
||||||
if (InitServers) {
|
if (InitServers) {
|
||||||
for (i = 0; i < MAX_SERVERS;
|
for (i = 0; i < MAX_SERVERS;
|
||||||
@ -787,6 +781,7 @@ Read_Config( bool ngircd_starting )
|
|||||||
char section[LINE_LEN], str[LINE_LEN], *var, *arg, *ptr;
|
char section[LINE_LEN], str[LINE_LEN], *var, *arg, *ptr;
|
||||||
const UINT16 defaultport = 6667;
|
const UINT16 defaultport = 6667;
|
||||||
int line, i, n;
|
int line, i, n;
|
||||||
|
size_t count;
|
||||||
FILE *fd;
|
FILE *fd;
|
||||||
|
|
||||||
/* Open configuration file */
|
/* Open configuration file */
|
||||||
@ -887,12 +882,30 @@ Read_Config( bool ngircd_starting )
|
|||||||
else New_Server_Idx = i;
|
else New_Server_Idx = i;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strcasecmp(section, "[CHANNEL]") == 0) {
|
if (strcasecmp(section, "[CHANNEL]") == 0) {
|
||||||
Conf_Channel_Count++;
|
count = array_length(&Conf_Channels,
|
||||||
|
sizeof(struct Conf_Channel));
|
||||||
|
if (!array_alloc(&Conf_Channels,
|
||||||
|
sizeof(struct Conf_Channel),
|
||||||
|
count)) {
|
||||||
|
Config_Error(LOG_ERR,
|
||||||
|
"Could not allocate memory for new operator (line %d)",
|
||||||
|
line);
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strcasecmp(section, "[OPERATOR]") == 0) {
|
if (strcasecmp(section, "[OPERATOR]") == 0) {
|
||||||
Conf_Oper_Count++;
|
count = array_length(&Conf_Opers,
|
||||||
|
sizeof(struct Conf_Oper));
|
||||||
|
if (!array_alloc(&Conf_Opers,
|
||||||
|
sizeof(struct Conf_Oper),
|
||||||
|
count)) {
|
||||||
|
Config_Error(LOG_ERR,
|
||||||
|
"Could not allocate memory for new channel (line &d)",
|
||||||
|
line);
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1584,13 +1597,11 @@ Handle_OPERATOR( int Line, char *Var, char *Arg )
|
|||||||
assert( Line > 0 );
|
assert( Line > 0 );
|
||||||
assert( Var != NULL );
|
assert( Var != NULL );
|
||||||
assert( Arg != NULL );
|
assert( Arg != NULL );
|
||||||
assert( Conf_Oper_Count > 0 );
|
|
||||||
|
|
||||||
op = array_alloc(&Conf_Opers, sizeof(*op), Conf_Oper_Count - 1);
|
op = array_get(&Conf_Opers, sizeof(*op),
|
||||||
if (!op) {
|
array_length(&Conf_Opers, sizeof(*op)) - 1);
|
||||||
Config_Error(LOG_ERR, "Could not allocate memory for operator (%d:%s = %s)", Line, Var, Arg);
|
if (!op)
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
if (strcasecmp(Var, "Name") == 0) {
|
if (strcasecmp(Var, "Name") == 0) {
|
||||||
/* Name of IRC operator */
|
/* Name of IRC operator */
|
||||||
@ -1756,21 +1767,17 @@ static void
|
|||||||
Handle_CHANNEL(int Line, char *Var, char *Arg)
|
Handle_CHANNEL(int Line, char *Var, char *Arg)
|
||||||
{
|
{
|
||||||
size_t len;
|
size_t len;
|
||||||
size_t chancount;
|
|
||||||
struct Conf_Channel *chan;
|
struct Conf_Channel *chan;
|
||||||
|
|
||||||
assert( Line > 0 );
|
assert( Line > 0 );
|
||||||
assert( Var != NULL );
|
assert( Var != NULL );
|
||||||
assert( Arg != NULL );
|
assert( Arg != NULL );
|
||||||
assert(Conf_Channel_Count > 0);
|
|
||||||
|
|
||||||
chancount = Conf_Channel_Count - 1;
|
chan = array_get(&Conf_Channels, sizeof(*chan),
|
||||||
|
array_length(&Conf_Channels, sizeof(*chan)) - 1);
|
||||||
chan = array_alloc(&Conf_Channels, sizeof(*chan), chancount);
|
if (!chan)
|
||||||
if (!chan) {
|
|
||||||
Config_Error(LOG_ERR, "Could not allocate memory for predefined channel (%d:%s = %s)", Line, Var, Arg);
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
if (strcasecmp(Var, "Name") == 0) {
|
if (strcasecmp(Var, "Name") == 0) {
|
||||||
if (!Handle_Channelname(chan, Arg))
|
if (!Handle_Channelname(chan, Arg))
|
||||||
Config_Error_TooLong(Line, Var);
|
Config_Error_TooLong(Line, Var);
|
||||||
@ -1917,8 +1924,10 @@ Validate_Config(bool Configtest, bool Rehash)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Log(LOG_DEBUG,
|
Log(LOG_DEBUG,
|
||||||
"Configuration: Operators=%d, Servers=%d[%d], Channels=%d",
|
"Configuration: Operators=%ld, Servers=%d[%d], Channels=%ld",
|
||||||
Conf_Oper_Count, servers, servers_once, Conf_Channel_Count);
|
array_length(&Conf_Opers, sizeof(struct Conf_Oper)),
|
||||||
|
servers, servers_once,
|
||||||
|
array_length(&Conf_Channels, sizeof(struct Conf_Channel)));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return config_valid;
|
return config_valid;
|
||||||
|
Loading…
Reference in New Issue
Block a user