src/irc_proto.h
changeset 45 71e65564afd2
parent 39 a4891d71aca9
child 72 43084f103c2a
--- a/src/irc_proto.h	Thu Mar 12 22:06:01 2009 +0200
+++ b/src/irc_proto.h	Thu Mar 12 22:50:08 2009 +0200
@@ -10,11 +10,18 @@
 #include <stddef.h>
 
 /**
- * Maximum length of an IRC nickname including terminating NUL
+ * Maximum length of an IRC nickname including terminating NUL.
  */
 #define IRC_NICK_MAX 31
 
 /**
+ * Maximum length of an IRC prefix/nickmask string, including any termianting NULs.
+ *
+ * XXX: currently this is pretty large, but does it really matter? We have more than 4k stack...
+ */
+#define IRC_PREFIX_MAX 510
+
+/**
  * Parsed nickmask
  */
 struct irc_nm {
@@ -31,9 +38,10 @@
 /**
  * Parse a full nickmask from a prefix. This fails if the prefix is a server name.
  *
- * XXX: not implemented, and memory-management issues
+ * Since we cannot modify the prefix string, the user must provide a buffer of at least IRC_PREFIX_MAX bytes to store
+ * the procesed prefix. The returned nm's fields will point into this buffer.
  */
-err_t irc_nm_parse (struct irc_nm *nm, char *prefix);
+err_t irc_nm_parse (struct irc_nm *nm, char *buf, const char *prefix);
 
 /**
  * Compare two nicknames for equality, with standard strcmp() semantics.