blob: d8a642920d83e29a0965185422fcd6fe49e5f8ed (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
#include<u.h>
#include<libc.h>
#include<mheap.h>
const char *
hprint(char *fmt, ...)
{
char *buf, *hbuf;
int len, n;
va_list args;
/* Initial buffer */
len = 512;
buf = nil;
do{
len <<= 1;
buf = realloc(buf, len);
if(buf == nil)
sysfatal("hsprint: %r");
va_start(args, fmt);
n = vsnprint(buf, len, fmt, args) + 1;
va_end(args);
}while(n == len);
hbuf = halloc(n);
memmove(hbuf, buf, n);
free(buf);
return hbuf;
}
const char *
hstrdup(char *s)
{
char *u;
u = halloc(strlen(s) + 1);
memmove(u, s, strlen(s) + 1);
return u;
}
|