+/*--------------------------.
+| Is SUFFIX ending STRING? |
+`--------------------------*/
+
+static int
+strsuffix (const char *string, const char *suffix)
+{
+ size_t string_len = strlen (string);
+ size_t suffix_len = strlen (suffix);
+ if (suffix_len <= string_len)
+ return !strcmp (string + string_len - suffix_len, suffix);
+ else
+ return 0;
+}
+
+
+/*-----------------------------------------------------------------.
+| Return a newly allocated string composed of the concatenation of |
+| STRING1, and STRING2. |
+`-----------------------------------------------------------------*/
+
+static char *
+stringappend (const char *string1, const char *string2)
+{
+ size_t len = strlen (string1) + strlen (string2);
+ char *res = XMALLOC (char, len + 1);
+ char *cp;
+ cp = stpcpy (res, string1);
+ cp = stpcpy (cp, string2);
+ return res;
+}
+
+/*-----------------------------------------------------------------.
+| Try to open file NAME with mode MODE, and print an error message |
+| if fails. |
+`-----------------------------------------------------------------*/