]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/irc-write.c
Remove imp.h and exp.h header files
[ngircd-alex.git] / src / ngircd / irc-write.c
index 93753564770f3dbdeb32f768d01c0c991959f237..c6a3dce23c00b42a7363a0857c162502e4247dd3 100644 (file)
@@ -16,7 +16,6 @@
  * Sending IRC commands over the network
  */
 
-#include "imp.h"
 #include <assert.h>
 #ifdef PROTOTYPES
 #      include <stdarg.h>
@@ -30,7 +29,6 @@
 #include "conn-func.h"
 #include "channel.h"
 
-#include "exp.h"
 #include "irc-write.h"
 
 #define SEND_TO_USER 1
@@ -41,6 +39,43 @@ static void cb_writeStrServersPrefixFlag PARAMS((CLIENT *Client,
                                         CLIENT *Prefix, void *Buffer));
 static void Send_Marked_Connections PARAMS((CLIENT *Prefix, const char *Buffer));
 
+/**
+ * Send an error message to a client and enforce a penalty time.
+ *
+ * @param Client The target client.
+ * @param Format Format string.
+ * @return CONNECTED or DISCONNECTED.
+ */
+#ifdef PROTOTYPES
+GLOBAL bool
+IRC_WriteErrClient( CLIENT *Client, const char *Format, ... )
+#else
+GLOBAL bool
+IRC_WriteErrClient( Client, Format, va_alist )
+CLIENT *Client;
+const char *Format;
+va_dcl
+#endif
+{
+       char buffer[1000];
+       va_list ap;
+
+       assert(Client != NULL);
+       assert(Format != NULL);
+
+#ifdef PROTOTYPES
+       va_start(ap, Format);
+#else
+       va_start(ap);
+#endif
+       vsnprintf(buffer, sizeof(buffer), Format, ap);
+       va_end(ap);
+
+       IRC_SetPenalty(Client, 2);
+       return IRC_WriteStrClientPrefix(Client, Client_ThisServer(),
+                                       "%s", buffer);
+}
+
 /**
  * Send a message to a client.
  *
@@ -70,7 +105,7 @@ va_dcl
 #else
        va_start(ap);
 #endif
-       vsnprintf(buffer, 1000, Format, ap);
+       vsnprintf(buffer, sizeof(buffer), Format, ap);
        va_end(ap);
 
        return IRC_WriteStrClientPrefix(Client, Client_ThisServer(),
@@ -111,7 +146,7 @@ va_dcl
 #else
        va_start( ap );
 #endif
-       vsnprintf( buffer, 1000, Format, ap );
+       vsnprintf(buffer, sizeof(buffer), Format, ap);
        va_end( ap );
 
        return Conn_WriteStr(Client_Conn(Client_NextHop(Client)), ":%s %s",
@@ -153,7 +188,7 @@ va_dcl
 #else
        va_start( ap );
 #endif
-       vsnprintf( buffer, 1000, Format, ap );
+       vsnprintf(buffer, sizeof(buffer), Format, ap);
        va_end( ap );
 
        IRC_WriteStrChannelPrefix(Client, Chan, Client_ThisServer(),
@@ -202,7 +237,7 @@ va_dcl
 #else
        va_start( ap  );
 #endif
-       vsnprintf( buffer, 1000, Format, ap );
+       vsnprintf(buffer, sizeof(buffer), Format, ap);
        va_end( ap );
 
        Conn_ClearFlags( );
@@ -259,7 +294,7 @@ va_dcl
 #else
        va_start( ap );
 #endif
-       vsnprintf( buffer, 1000, Format, ap );
+       vsnprintf(buffer, sizeof(buffer), Format, ap);
        va_end( ap );
 
        IRC_WriteStrServersPrefix(ExceptOf, Client_ThisServer(), "%s", buffer);
@@ -296,7 +331,7 @@ va_dcl
 #else
        va_start( ap );
 #endif
-       vsnprintf( buffer, 1000, Format, ap );
+       vsnprintf(buffer, sizeof(buffer), Format, ap);
        va_end( ap );
 
        IRC_WriteStrServersPrefixFlag( ExceptOf, Prefix, '\0', "%s", buffer );
@@ -336,7 +371,7 @@ va_dcl
 #else
        va_start( ap );
 #endif
-       vsnprintf( buffer, 1000, Format, ap );
+       vsnprintf(buffer, sizeof(buffer), Format, ap);
        va_end( ap );
 
        IRC_WriteStrServersPrefixFlag_CB(ExceptOf, Prefix, Flag,
@@ -414,7 +449,7 @@ va_dcl
 #else
        va_start( ap );
 #endif
-       vsnprintf( buffer, 1000, Format, ap );
+       vsnprintf(buffer, sizeof(buffer), Format, ap);
        va_end( ap );
 
        Conn_ClearFlags( );
@@ -476,7 +511,7 @@ va_dcl
 #else
        va_start(ap);
 #endif
-       vsnprintf(msg, 1000, Format, ap);
+       vsnprintf(msg, sizeof(msg), Format, ap);
        va_end(ap);
 
        for (to=Client_First(); to != NULL; to=Client_Next(to)) {
@@ -501,24 +536,27 @@ va_dcl
 /**
  * Set a "penalty time" for an IRC client.
  *
- * Note: penalty times are never set for server links!
+ * Note: penalty times are never set for server links or remote clients!
  *
  * @param Client The client.
  * @param Seconds The additional "penalty time" to enforce.
  */
 GLOBAL void
-IRC_SetPenalty( CLIENT *Client, time_t Seconds )
+IRC_SetPenalty(CLIENT *Client, time_t Seconds)
 {
        CONN_ID c;
 
-       assert( Client != NULL );
-       assert( Seconds > 0 );
+       assert(Client != NULL);
+       assert(Seconds > 0);
+
+       if (Client_Type(Client) == CLIENT_SERVER)
+               return;
 
-       if( Client_Type( Client ) == CLIENT_SERVER ) return;
+       c = Client_Conn(Client);
+       if (c <= NONE)
+               return;
 
-       c = Client_Conn( Client );
-       if (c > NONE)
-               Conn_SetPenalty(c, Seconds);
+       Conn_SetPenalty(c, Seconds);
 } /* IRC_SetPenalty */
 
 static const char *