]> jfr.im git - irc/evilnet/x3.git/blobdiff - src/tools.c
quick fix for "Unable to find user SOME-SERVER whose mark is changing." errors, bette...
[irc/evilnet/x3.git] / src / tools.c
index 4a3d52b743668bf465e5600f3fdbec462bb90673..7d1fdcd9b3dc5ac6ff72f3cacf50d9f065fdc8e5 100644 (file)
@@ -357,6 +357,14 @@ static char irc_tolower[256];
 #undef tolower
 #define tolower(X) irc_tolower[(unsigned char)(X)]
 
+void
+irc_strtolower(char *str) {
+    char *p;
+    for(p = str;*p;p++) {
+       *p = tolower(*p);
+    }
+}
+
 int
 irccasecmp(const char *stra, const char *strb) {
     while (*stra && (tolower(*stra) == tolower(*strb)))
@@ -1111,6 +1119,23 @@ char *mysep(char **sepstr, char *delim)
   return(retstr);
 }
 
+/* Mallocing snprintf *
+ *
+ * If it overruns size, it will simply be safely truncated.
+ */
+char *
+x3_msnprintf(const int size, const char *format, ...)
+{
+    va_list ap;
+    char* buff = calloc(sizeof(char *), size+1);
+
+    va_start(ap, format);
+    vsnprintf(buff, size, format, ap);
+    va_end(ap);
+    buff = realloc(buff, strlen(buff) + 1);
+    return buff;
+}
+
 char *time2str(time_t thetime)
 {
     char *buf, *tmp;
@@ -1276,3 +1301,16 @@ char *pretty_mask(char *mask)
   }
   return make_nick_user_host(retmask, nick, user, host);
 }
+
+int str_is_number(const char *str)
+{
+    char *ptr;
+    int ret = false;
+    for(ptr = (char *)str;*ptr;ptr++) {
+        if((*ptr >= '0' && *ptr <= '9') || *ptr == '-')
+            ret = true;
+        else
+            return false;
+    }
+    return ret;
+}