]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/client.c
More spelling fixes
[ngircd-alex.git] / src / ngircd / client.c
index 9358dbb5fb281db125dd448c8e50c4098b6e34b5..09bd6fdeaee8400ae3e5c75ee539fb230a607a09 100644 (file)
@@ -87,7 +87,7 @@ Client_Init( void )
                exit( 1 );
        }
 
-       /* Client-Struktur dieses Servers */
+       /* Client structure for this server */
        This_Server->next = NULL;
        This_Server->type = CLIENT_SERVER;
        This_Server->conn_id = NONE;
@@ -318,6 +318,8 @@ Client_Destroy( CLIENT *Client, const char *LogMsg, const char *FwdMsg, bool Sen
                                }
                        }
 
+                       if (c->cloaked)
+                               free(c->cloaked);
                        free( c );
                        break;
                }
@@ -513,7 +515,7 @@ GLOBAL bool
 Client_ModeAdd( CLIENT *Client, char Mode )
 {
        /* Set Mode.
-        * If Client already alread had Mode, return false.
+        * If Client already had Mode, return false.
         * If the Mode was newly set, return true.
         */
 
@@ -589,7 +591,7 @@ Client_Search( const char *Nick )
 
 
 /**
- * Serach first CLIENT structure matching a given mask of a server.
+ * Search first CLIENT structure matching a given mask of a server.
  *
  * The order of servers is arbitrary, but this function makes sure that the
  * local server is always returned if the mask matches it.
@@ -744,8 +746,6 @@ Client_HostnameCloaked(CLIENT *Client)
  * Get (potentially cloaked) hostname of a client to display it to other users.
  *
  * If the client has not enabled cloaking, the real hostname is used.
- * Please note that this function uses a global static buffer, so you can't
- * nest invocations without overwriting earlier results!
  *
  * @param Client Pointer to client structure
  * @return Pointer to client hostname
@@ -760,7 +760,7 @@ Client_HostnameDisplayed(CLIENT *Client)
                return Client_Hostname(Client);
 
        /* Use an already saved cloaked hostname, if there is one */
-       if (Client->cloaked[0])
+       if (Client->cloaked)
                return Client->cloaked;
 
        Client_UpdateCloakedHostname(Client, NULL, NULL);
@@ -781,25 +781,32 @@ GLOBAL void
 Client_UpdateCloakedHostname(CLIENT *Client, CLIENT *Origin,
                             const char *Hostname)
 {
-       static char Cloak_Buffer[CLIENT_HOST_LEN];
+       char Cloak_Buffer[CLIENT_HOST_LEN];
 
        assert(Client != NULL);
        if (!Origin)
                Origin = Client_ThisServer();
 
+       if (!Client->cloaked) {
+               Client->cloaked = malloc(CLIENT_HOST_LEN);
+               if (!Client->cloaked)
+                       return;
+       }
+
        if (!Hostname) {
                /* Generate new cloaked hostname */
                if (*Conf_CloakHostModeX) {
-                       strlcpy(Cloak_Buffer, Client->host, CLIENT_HOST_LEN);
+                       strlcpy(Cloak_Buffer, Client->host,
+                               sizeof(Cloak_Buffer));
                        strlcat(Cloak_Buffer, Conf_CloakHostSalt,
-                               CLIENT_HOST_LEN);
-                       snprintf(Client->cloaked, sizeof(Client->cloaked),
+                               sizeof(Cloak_Buffer));
+                       snprintf(Client->cloaked, CLIENT_HOST_LEN,
                                 Conf_CloakHostModeX, Hash(Cloak_Buffer));
                } else
                        strlcpy(Client->cloaked, Client_ID(Client->introducer),
-                               sizeof(Client->cloaked));
+                               CLIENT_HOST_LEN);
        } else
-               strlcpy(Client->cloaked, Hostname, sizeof(Client->cloaked));
+               strlcpy(Client->cloaked, Hostname, CLIENT_HOST_LEN);
        LogDebug("Cloaked hostname of \"%s\" updated to \"%s\"",
                 Client_ID(Client), Client->cloaked);
 
@@ -950,6 +957,14 @@ Client_HasMode( CLIENT *Client, char Mode )
 } /* Client_HasMode */
 
 
+GLOBAL bool
+Client_HasFlag( CLIENT *Client, char Flag )
+{
+       assert( Client != NULL );
+       return strchr( Client->flags, Flag ) != NULL;
+} /* Client_HasFlag */
+
+
 GLOBAL char *
 Client_Away( CLIENT *Client )
 {
@@ -1326,8 +1341,6 @@ MyCount( CLIENT_TYPE Type )
 static CLIENT *
 New_Client_Struct( void )
 {
-       /* Neue CLIENT-Struktur pre-initialisieren */
-
        CLIENT *c;
 
        c = (CLIENT *)malloc( sizeof( CLIENT ));
@@ -1362,7 +1375,7 @@ Generate_MyToken( CLIENT *Client )
        {
                if( c->mytoken == token )
                {
-                       /* Das Token wurde bereits vergeben */
+                       /* The token is already in use */
                        token++;
                        c = My_Clients;
                        continue;