Initial revision
[libfirm] / ir / common / xfprintf.c
1 /* Xfprintf --- extended formatted output to files.
2    Copyright (C) 1995, 1996 Christian von Roques */
3
4 #ifdef HAVE_CONFIG_H
5 # include <config.h>
6 #endif
7
8 #ifndef USE_PRINTF
9
10 #include <assert.h>
11 #include "xprintf.h"
12
13
14 static int
15 xfprinter (void *f, const char *data, size_t len)
16 {
17   size_t togo = len;
18
19   while (togo > 0) {
20     size_t n = fwrite (data, 1, togo, (FILE*)f);
21
22     if (!n) return -1;
23     togo -= n;
24     data += n;
25   }
26
27   return len;
28 }
29
30
31 int
32 xfprintf (FILE *F, const char *fmt, ...)
33 {
34   va_list args;
35   int res;
36
37   va_start (args, fmt);
38   res = xvgprintf (xfprinter, F, fmt, args);
39   va_end (args);
40   return res;
41 }
42
43
44 int
45 xvfprintf (FILE *F, const char *fmt, va_list args)
46 {
47   return xvgprintf (xfprinter, F, fmt, args);
48 }
49
50
51 int
52 xprintf (const char *fmt, ...)
53 {
54   va_list args;
55   int res;
56
57   va_start (args, fmt);
58   res = xvgprintf (xfprinter, stdout, fmt, args);
59   va_end (args);
60   return res;
61 }
62
63 int
64 xvprintf (const char *fmt, va_list args)
65 {
66   return xvgprintf (xfprinter, stdout, fmt, args);
67 }
68
69 #endif /* USE_PRINTF */