- New functions Channel_[Set]Key(), Channel_[Set]MaxUsers.
authorAlexander Barton <alex@barton.de>
Mon, 16 Dec 2002 23:05:24 +0000 (23:05 +0000)
committerAlexander Barton <alex@barton.de>
Mon, 16 Dec 2002 23:05:24 +0000 (23:05 +0000)
src/ngircd/channel.c
src/ngircd/channel.h

index 386aaa2a1ad7f5166a31490746b822356e32f56c..aafb8bc0d91ddc249f1bca19265cbefd880f645f 100644 (file)
@@ -17,7 +17,7 @@
 
 #include "portab.h"
 
-static char UNUSED id[] = "$Id: channel.c,v 1.37 2002/12/14 13:21:56 alex Exp $";
+static char UNUSED id[] = "$Id: channel.c,v 1.38 2002/12/16 23:05:24 alex Exp $";
 
 #include "imp.h"
 #include <assert.h>
@@ -350,6 +350,22 @@ Channel_Modes( CHANNEL *Chan )
 } /* Channel_Modes */
 
 
+GLOBAL CHAR *
+Channel_Key( CHANNEL *Chan )
+{
+       assert( Chan != NULL );
+       return Chan->key;
+} /* Channel_Key */
+
+
+GLOBAL LONG
+Channel_MaxUsers( CHANNEL *Chan )
+{
+       assert( Chan != NULL );
+       return Chan->maxusers;
+} /* Channel_MaxUsers */
+
+
 GLOBAL CHANNEL *
 Channel_First( VOID )
 {
@@ -629,6 +645,27 @@ Channel_SetModes( CHANNEL *Chan, CHAR *Modes )
 } /* Channel_SetModes */
 
 
+GLOBAL VOID
+Channel_SetKey( CHANNEL *Chan, CHAR *Key )
+{
+       assert( Chan != NULL );
+       assert( Key != NULL );
+
+       strncpy( Chan->key, Key, CLIENT_PASS_LEN - 1 );
+       Chan->key[CLIENT_PASS_LEN - 1] = '\0';
+       Log( LOG_DEBUG, "Channel %s: Key is now \"%s\".", Chan->name, Chan->key );
+} /* Channel_SetKey */
+
+
+GLOBAL VOID
+Channel_SetMaxUsers( CHANNEL *Chan, LONG Count )
+{
+       assert( Chan != NULL );
+
+       Chan->maxusers = Count;
+       Log( LOG_DEBUG, "Channel %s: Member limit is now %ld.", Chan->name, Chan->maxusers );
+} /* Channel_SetMaxUsers */
+
 
 GLOBAL BOOLEAN
 Channel_Write( CHANNEL *Chan, CLIENT *From, CLIENT *Client, CHAR *Text )
@@ -678,6 +715,8 @@ Channel_Create( CHAR *Name )
        strcpy( c->modes, "" );
        strcpy( c->topic, "" );
        c->hash = Hash( c->name );
+       strcpy( c->key, "" );
+       c->maxusers = 0;
 
        /* Verketten */
        c->next = My_Channels;
index 18957d7b93d88378024d1d3f34a35df5bee917f2..9c0971034f099609686a56641e1fda0bbc36b95b 100644 (file)
@@ -8,7 +8,7 @@
  * (at your option) any later version.
  * Please read the file COPYING, README and AUTHORS for more information.
  *
- * $Id: channel.h,v 1.25 2002/12/14 13:21:56 alex Exp $
+ * $Id: channel.h,v 1.26 2002/12/16 23:05:24 alex Exp $
  *
  * Channel management (header)
  */
 typedef struct _CHANNEL
 {
        struct _CHANNEL *next;
-       CHAR name[CHANNEL_NAME_LEN];    /* Name des Channel */
-       UINT32 hash;                    /* Hash ueber (kleingeschrieben) Namen */
-       CHAR modes[CHANNEL_MODE_LEN];   /* Channel-Modes */
-       CHAR topic[CHANNEL_TOPIC_LEN];  /* Topic des Channels */
+       CHAR name[CHANNEL_NAME_LEN];    /* Name of the channel */
+       UINT32 hash;                    /* Hash of the (lowecase!) name */
+       CHAR modes[CHANNEL_MODE_LEN];   /* Channel modes */
+       CHAR topic[CHANNEL_TOPIC_LEN];  /* Topic of the channel */
+       CHAR key[CLIENT_PASS_LEN];      /* Channel key ("password", mode "k" ) */
+       LONG maxusers;                  /* Maximum number of members (mode "l") */
 } CHANNEL;
 
 typedef struct _CLIENT2CHAN
@@ -66,9 +68,13 @@ GLOBAL INT Channel_PCount PARAMS(( VOID ));
 GLOBAL CHAR *Channel_Name PARAMS(( CHANNEL *Chan ));
 GLOBAL CHAR *Channel_Modes PARAMS(( CHANNEL *Chan ));
 GLOBAL CHAR *Channel_Topic PARAMS(( CHANNEL *Chan ));
+GLOBAL CHAR *Channel_Key PARAMS(( CHANNEL *Chan ));
+GLOBAL LONG Channel_MaxUsers PARAMS(( CHANNEL *Chan ));
 
 GLOBAL VOID Channel_SetTopic PARAMS(( CHANNEL *Chan, CHAR *Topic ));
 GLOBAL VOID Channel_SetModes PARAMS(( CHANNEL *Chan, CHAR *Modes ));
+GLOBAL VOID Channel_SetKey PARAMS(( CHANNEL *Chan, CHAR *Key ));
+GLOBAL VOID Channel_SetMaxUsers PARAMS(( CHANNEL *Chan, LONG Count ));
 
 GLOBAL CHANNEL *Channel_Search PARAMS(( CHAR *Name ));