* Fix build of r_util

* Added r_bprintf helper for buffering printfs
  - Can be used to capture the output of r_io_handle_list()
    without having to use r_cons
This commit is contained in:
pancake 2009-08-22 05:04:29 +00:00
parent 1ee0247b94
commit 3cfdaff55f
2 changed files with 28 additions and 3 deletions

View file

@ -23,7 +23,7 @@ R_API ut64 r_num_htonq(ut64 value) {
R_API int r_num_rand(int max)
{
// TODO: add srand here for security and so on
return rand(max);
return rand()%max;
}
R_API void r_num_minmax_swap(ut64 *a, ut64 *b)

View file

@ -93,10 +93,10 @@ R_API int r_str_char_count(const char *string, char ch)
R_API int r_str_word_count(const char *string)
{
char *text, *tmp;
const char *text, *tmp;
int word = 0;
for(text=tmp=string;(*text)&&(isseparator(*text));text=text+1);
for(text=tmp=string;(*text)&&(isseparator(*text));text++);
for(word = 0; *text; word++) {
for(;*text && !isseparator(*text);text = text +1);
@ -439,6 +439,31 @@ R_API const char *r_str_ansi_chrn(const char *str, int n)
return str+i;
}
// TODO: make it dynamic
static int bprintf_init = 0;
static char bprintf_buf[4096];
// XXX overflow
R_API int r_bprintf(const char *fmt, ...)
{
va_list ap;
if (bprintf_init==0)
*bprintf_buf = 0;
va_start(ap, fmt);
r_str_concatf(bprintf_buf, fmt, ap);
va_end(ap);
return strlen(bprintf_buf);
}
R_API char *r_bprintf_get()
{
char *s;
if (bprintf_init==0)
*bprintf_buf = 0;
s = strdup(bprintf_buf);
bprintf_buf[0]='\0';
return s;
}
#if 0
int r_str_argv_parse(const char *str, int argc, char **argv)