summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/resources/webidl2/test/widlproc/src/misc.c
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/resources/webidl2/test/widlproc/src/misc.c')
-rw-r--r--testing/web-platform/tests/resources/webidl2/test/widlproc/src/misc.c119
1 files changed, 119 insertions, 0 deletions
diff --git a/testing/web-platform/tests/resources/webidl2/test/widlproc/src/misc.c b/testing/web-platform/tests/resources/webidl2/test/widlproc/src/misc.c
new file mode 100644
index 000000000..37aff3f34
--- /dev/null
+++ b/testing/web-platform/tests/resources/webidl2/test/widlproc/src/misc.c
@@ -0,0 +1,119 @@
+/***********************************************************************
+ * $Id$
+ * Copyright 2009 Aplix Corporation. All rights reserved.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ***********************************************************************/
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "misc.h"
+#include "os.h" /* to get va_copy on windows */
+
+extern const char *progname;
+
+/***********************************************************************
+ * memory allocation wrappers
+ */
+void *
+memalloc(size_t size)
+{
+ void *ptr = malloc(size);
+ if (!ptr)
+ errorexit("out of memory");
+ /* Zero initialise memory from memalloc. */
+ memset(ptr, 0, size);
+ return ptr;
+}
+
+void *
+memrealloc(void *ptr, size_t size)
+{
+ void *newptr = realloc(ptr, size);
+ if (!newptr)
+ errorexit("out of memory");
+ return newptr;
+}
+
+void
+memfree(void *ptr)
+{
+ *(int *)ptr = 0xfefefefe;
+ free(ptr);
+}
+
+/***********************************************************************
+ * vmemprintf, memprintf : allocate buffer and sprintf into it
+ */
+char *
+memprintf(const char *format, ...)
+{
+ va_list ap;
+ char *buf;
+ va_start(ap, format);
+ buf = vmemprintf(format, ap);
+ va_end(ap);
+ return buf;
+}
+
+char *
+vmemprintf(const char *format, va_list ap)
+{
+ char *buf;
+ unsigned int max, len;
+ va_list ap2;
+ max = 16;
+ for (;;) {
+ va_copy(ap2, ap);
+ buf = memalloc(max);
+ len = vsnprintf(buf, max, format, ap2);
+ va_end(ap2);
+ if (len < max)
+ break;
+ memfree(buf);
+ max *= 2;
+ }
+ return buf;
+}
+
+/***********************************************************************
+ * errorexit : print error message then exit
+ */
+void
+vlocerrorexit(const char *filename, unsigned int linenum,
+ const char *format, va_list ap)
+{
+ if (filename)
+ fprintf(stderr, linenum ? "%s: %i: " : "%s: ", filename, linenum);
+ vfprintf(stderr, format, ap);
+ fputc('\n', stderr);
+ exit(1);
+}
+
+void
+locerrorexit(const char *filename, unsigned int linenum,
+ const char *format, ...)
+{
+ va_list ap;
+ va_start(ap, format);
+ vlocerrorexit(filename, linenum, format, ap);
+ va_end(ap);
+}
+
+void
+errorexit(const char *format, ...)
+{
+ va_list ap;
+ va_start(ap, format);
+ vlocerrorexit(0, 0, format, ap);
+ va_end(ap);
+}
+