debuggers.hg

view tools/libxl/osdeps.c @ 21067:b4a1832a916f

Update Xen version to 4.0.0-rc6
author Keir Fraser <keir.fraser@citrix.com>
date Tue Mar 09 18:18:05 2010 +0000 (2010-03-09)
parents 2f7cb671ef38
children
line source
1 /*
2 * Copyright (C) 2009 Citrix Ltd.
3 * Author Stefano Stabellini <stefano.stabellini@eu.citrix.com>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU Lesser General Public License as published
7 * by the Free Software Foundation; version 2.1 only. with the special
8 * exception on linking described in file LICENSE.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU Lesser General Public License for more details.
14 */
16 #include "libxl_osdeps.h"
18 #include <unistd.h>
19 #include <stdarg.h>
20 #include <stdio.h>
21 #include <sys/time.h>
22 #include <stdlib.h>
24 #ifdef NEED_OWN_ASPRINTF
26 int vasprintf(char **buffer, const char *fmt, va_list ap)
27 {
28 int size = 0;
29 int nchars;
31 *buffer = 0;
33 nchars = vsnprintf(*buffer, 0, fmt, ap);
35 if (nchars >= size)
36 {
37 char *tmpbuff;
38 /* Reallocate buffer now that we know how much space is needed. */
39 size = nchars+1;
40 tmpbuff = (char*)realloc(*buffer, size);
43 if (tmpbuff == NULL) { /* we need to free it*/
44 free(*buffer);
45 return -1;
46 }
48 *buffer=tmpbuff;
49 /* Try again. */
50 nchars = vsnprintf(*buffer, size, fmt, ap);
51 }
53 if (nchars < 0) return nchars;
54 return size;
55 }
57 int asprintf(char **buffer, char *fmt, ...)
58 {
59 int status;
60 va_list ap;
62 va_start (ap, fmt);
63 status = vasprintf (buffer, fmt, ap);
64 va_end (ap);
65 return status;
66 }
68 #endif