1. uranium
  2. shadowircd

Commits

B.Greenham  committed 241b7ff

Add strip_unprintable, a function that strips all unprintable characters from a string.

  • Participants
  • Parent commits 6748b9e
  • Branches trunk

Comments (0)

Files changed (1)

File include/inline/stringops.h

View file
 	return string;
 }
 
+static inline char *
+strip_unprintable(char *string)
+{
+	char *c = string;
+	char *c2 = string;
+	char *last_non_space = NULL;
+
+	/* c is source, c2 is target */
+	for(; c && *c; c++)
+		switch (*c)
+		{
+		case 3:
+			if(isdigit(c[1]))
+			{
+				c++;
+				if(isdigit(c[1]))
+					c++;
+				if(c[1] == ',' && isdigit(c[2]))
+				{
+					c += 2;
+					if(isdigit(c[1]))
+						c++;
+				}
+			}
+			break;
+		case 32:
+			*c2++ = *c;
+			break;
+		default:
+			if (*c < 32)
+				break;
+			*c2++ = *c;
+			last_non_space = c2;
+			break;
+		}
+
+	*c2 = '\0';
+
+	if(last_non_space)
+		*last_non_space = '\0';
+
+	return string;
+}
+
 #endif