]> jfr.im git - irc/quakenet/snircd.git/blobdiff - ircd/m_account.c
add sbounce from asuka into snircd tree
[irc/quakenet/snircd.git] / ircd / m_account.c
index 7d1ff20ad8a268671815951de150e01caa1f2a29..07349bb742261d44eec2859cd30a1054f5c99a15 100644 (file)
  * parv[0] = sender prefix
  * parv[1] = numeric of client to act on
  * parv[2] = account name (12 characters or less)
+ * parv[3] = account timestamp (optional)
+ * parv[4] = account id (optional, requires timestamp to be set to use)
  */
 int ms_account(struct Client* cptr, struct Client* sptr, int parc,
               char* parv[])
@@ -134,15 +136,28 @@ int ms_account(struct Client* cptr, struct Client* sptr, int parc,
     cli_user(acptr)->acc_create = atoi(parv[3]);
     Debug((DEBUG_DEBUG, "Received timestamped account: account \"%s\", "
            "timestamp %Tu", parv[2], cli_user(acptr)->acc_create));
+    if (parc > 4) {
+      cli_user(acptr)->acc_id = atoi(parv[4]); 
+      Debug((DEBUG_DEBUG, "Received account id for account \"%s\": id %d", parv[2], parv[4]));
+    }
   }
 
   ircd_strncpy(cli_user(acptr)->account, parv[2], ACCOUNTLEN);
   hide_hostmask(acptr, FLAG_ACCOUNT);
 
-  sendcmdto_serv_butone(sptr, CMD_ACCOUNT, cptr,
-                        cli_user(acptr)->acc_create ? "%C %s %Tu" : "%C %s",
-                        acptr, cli_user(acptr)->account,
-                        cli_user(acptr)->acc_create);
+   if (cli_user(acptr)->acc_id) {
+     sendcmdto_serv_butone(sptr, CMD_ACCOUNT, cptr, "%C %s %Tu %lu",
+                           acptr, cli_user(acptr)->account,
+                           cli_user(acptr)->acc_create,
+                           cli_user(acptr)->acc_id);
+   } else if (cli_user(acptr)->acc_create) {
+     sendcmdto_serv_butone(sptr, CMD_ACCOUNT, cptr, "%C %s %Tu",
+                           acptr, cli_user(acptr)->account,
+                           cli_user(acptr)->acc_create);
+   } else {
+     sendcmdto_serv_butone(sptr, CMD_ACCOUNT, cptr, "%C %s",
+                           acptr, cli_user(acptr)->account);
+   }
 
   return 0;
 }