- vsprintf(dst, fmt, args);
- len = strlen(dst) + 1;
-# endif
-
- va_end(args);
-
- /* on some gnu systems, vsnprintf returns -1 if output is truncated.
- * In the C99 spec, vsnprintf returns the number of characters that
- * would have been written, were space available.
- */
- if ((len < 0) || len >= n)
+ vsprintf(dst, fmt, args);
+ len = strlen(dst) + 1;
+# endif
+
+ va_end(args);
+
+ /* on some gnu systems, vsnprintf returns -1 if output is truncated.
+ * In the C99 spec, vsnprintf returns the number of characters that
+ * would have been written, were space available.
+ */
+ if ((len < 0) || (size_t) len >= n) {
+ fprintf(stderr, "internal error: sprintf truncated.\n");
+ }
+
+ return len;
+}
+#endif
+
+/** Pragma tokenizer
+ */
+void
+init_pragma_token(struct pragma_token_s *token)
+{
+ dbuf_init(&token->dbuf, 16);
+ token->type = TOKEN_UNKNOWN;
+}
+
+char *
+get_pragma_token(const char *s, struct pragma_token_s *token)
+{
+ dbuf_set_size(&token->dbuf, 0);
+
+ /* skip leading spaces */
+ while ('\n' != *s && isspace(*s))
+ ++s;
+
+ if ('\0' == *s || '\n' == *s)