#include <libpspp/message.h>
#include <libpspp/pool.h>
+#include <relocatable.h>
#include "minmax.h"
#include "xalloc.h"
#include "xsize.h"
return false;
}
+/* If the first character in SS is in MATCH, removes it and
+ returns the character that was removed.
+ Otherwise, returns EOF without changing the string. */
+int
+ss_match_char_in (struct substring *ss, struct substring match)
+{
+ int c = EOF;
+ if (ss->length > 0
+ && memchr (match.string, ss->string[0], match.length) != NULL)
+ {
+ c = ss->string[0];
+ ss->string++;
+ ss->length--;
+ }
+ return c;
+}
+
/* If SS begins with TARGET, removes it and returns true.
Otherwise, returns false without changing SS. */
bool
{
memset (ds_put_uninit (st, cnt), ch, cnt);
}
+
+
+/* If relocation has been enabled, replace ST,
+ with its relocated version */
+void
+ds_relocate (struct string *st)
+{
+ const char *orig = ds_cstr (st);
+ const char *rel = relocate (orig);
+
+ if ( orig != rel)
+ {
+ ds_clear (st);
+ ds_put_cstr (st, rel);
+ free ((char *) rel);
+ }
+}