+char *
+xline_encode_spaces(const char *mask)
+{
+ int i, j;
+ int spaces = 0;
+ int backslash = 0;
+ char *encoded;
+
+ for (i = 0; mask[i] != '\0'; i++)
+ if (mask[i] == ' ')
+ spaces++;
+ encoded = rb_malloc(i + spaces + 1);
+ for (i = 0, j = 0; mask[i] != '\0'; i++)
+ {
+ if (mask[i] == '\\')
+ backslash = !backslash;
+ else if (mask[i] == ' ')
+ {
+ if (!backslash)
+ encoded[j++] = '\\';
+ encoded[j++] = 's';
+ backslash = 0;
+ continue;
+ }
+ else
+ backslash = 0;
+ encoded[j++] = mask[i];
+ }
+ return encoded;
+}
+