about summary refs log tree commit diff
path: root/user.c
diff options
context:
space:
mode:
authorNakidai <nakidai@disroot.org>2026-01-04 17:41:32 +0300
committerNakidai <nakidai@disroot.org>2026-01-04 17:44:09 +0300
commit78426afe18d9ce730a4d92033ca261f9b2f173a0 (patch)
tree0c511b571e9a37496f170fce08737a849a8ba5ef /user.c
downloadlibreircd-78426afe18d9ce730a4d92033ca261f9b2f173a0.tar.gz
libreircd-78426afe18d9ce730a4d92033ca261f9b2f173a0.zip
Add code
Diffstat (limited to 'user.c')
-rw-r--r--user.c50
1 files changed, 50 insertions, 0 deletions
diff --git a/user.c b/user.c
new file mode 100644
index 0000000..4411144
--- /dev/null
+++ b/user.c
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2026 Nakidai Perumenei <nakidai at disroot dot org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include "ircd.h"
+
+#include <string.h>
+
+
+const char *
+getnick(const struct Peer *peer)
+{
+	return *peer->nick ? peer->nick : "*";
+}
+
+void
+user_reg(struct Peer *peer, const char *nick, const char *user, const char *real)
+{
+	if (nick)
+		strlcpy(peer->nick, nick, sizeof(peer->nick));
+	if (user)
+		strlcpy(peer->user, user, sizeof(peer->user));
+	if (real)
+		strlcpy(peer->real, real, sizeof(peer->real));
+	if (*peer->nick && *peer->user && *peer->real)
+	{
+		peer->type = CLIENT;
+		writef(
+			peer->fd,
+			":%s 001 %s :Welcome to the Internet Relay Network %s!%s@%s",
+			hostname,
+			getnick(peer),
+			getnick(peer),
+			peer->user,
+			peer->host
+		);
+	}
+}