summary refs log tree commit diff
path: root/state.c
diff options
context:
space:
mode:
Diffstat (limited to 'state.c')
-rw-r--r--state.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/state.c b/state.c
index c7d517e..161fd90 100644
--- a/state.c
+++ b/state.c
@@ -14,8 +14,10 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <assert.h>
 #include <err.h>
 #include <stdbool.h>
+#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <sysexits.h>
@@ -128,3 +130,24 @@ void stateParse(char *line) {
 		break;
 	}
 }
+
+void stateSync(struct Client *client) {
+	char buf[4096];
+	int len = snprintf(
+		buf, sizeof(buf),
+		":%s 001 %s :%s\r\n"
+		":%s 002 %s :%s\r\n"
+		":%s 003 %s :%s\r\n"
+		":%s 004 %s %s %s %s %s\r\n",
+		intro.origin, nick, intro.welcome,
+		intro.origin, nick, intro.yourHost,
+		intro.origin, nick, intro.created,
+		intro.origin, nick,
+		intro.myInfo[0], intro.myInfo[1], intro.myInfo[2], intro.myInfo[3]
+	);
+	assert(len > 0 && (size_t)len < sizeof(buf));
+
+	// TODO: Send ISUPPORT.
+
+	clientSend(client, buf, len);
+}