RStrBuf setters return boolean for success

This commit is contained in:
pancake 2013-12-08 02:47:55 +01:00
parent fbc17f6f6e
commit b97eecc06f
3 changed files with 20 additions and 12 deletions

View File

@ -1429,6 +1429,7 @@ R_API int r_core_print_disasm_instructions (RCore *core, int len, int l) {
}
if (ret<1) {
ret = err = 1;
ret = analop.size;
r_cons_printf ("???\n");
} else {
r_cons_printf ("%s\n", opstr);

View File

@ -615,9 +615,9 @@ typedef struct {
} RStrBuf;
R_API RStrBuf *r_strbuf_new();
R_API void r_strbuf_set(RStrBuf *sb, const char *s);
R_API void r_strbuf_setf(RStrBuf *sb, const char *fmt, ...);
R_API void r_strbuf_append(RStrBuf *sb, const char *s);
R_API int r_strbuf_set(RStrBuf *sb, const char *s);
R_API int r_strbuf_setf(RStrBuf *sb, const char *fmt, ...);
R_API int r_strbuf_append(RStrBuf *sb, const char *s);
R_API char *r_strbuf_get(RStrBuf *sb);
R_API void r_strbuf_free(RStrBuf *sb);
R_API void r_strbuf_fini(RStrBuf *sb);

View File

@ -12,20 +12,24 @@ R_API void r_strbuf_init(RStrBuf *sb) {
memset (sb, 0, sizeof (RStrBuf));
}
R_API void r_strbuf_set(RStrBuf *sb, const char *s) {
R_API int r_strbuf_set(RStrBuf *sb, const char *s) {
int l = strlen (s);
if (l>=sizeof (sb->buf)) {
char *ptr = malloc (l+1);
if (!ptr)
return R_FALSE;
free (sb->ptr);
sb->ptr = malloc (l+1);
memcpy (sb->ptr, s, l+1);
sb->ptr = ptr;
memcpy (ptr, s, l+1);
} else {
sb->ptr = NULL;
memcpy (sb->buf, s, l+1);
}
sb->len = l;
return R_TRUE;
}
R_API void r_strbuf_setf(RStrBuf *sb, const char *fmt, ...) {
R_API int r_strbuf_setf(RStrBuf *sb, const char *fmt, ...) {
int ret;
char string[4096];
va_list ap;
@ -34,27 +38,30 @@ R_API void r_strbuf_setf(RStrBuf *sb, const char *fmt, ...) {
ret = vsnprintf (string, sizeof (string), fmt, ap);
if (ret>=sizeof (string)) {
char *p = malloc (ret+2);
if (!p) return;
if (!p) return R_FALSE;
vsnprintf (p, ret+1, fmt, ap);
r_strbuf_set (sb, p);
ret = r_strbuf_set (sb, p);
free (p);
} else r_strbuf_set (sb, string);
} else ret = r_strbuf_set (sb, string);
va_end (ap);
return ret;
}
R_API void r_strbuf_append(RStrBuf *sb, const char *s) {
R_API int r_strbuf_append(RStrBuf *sb, const char *s) {
int l = strlen (s);
if ((sb->len+l+1)<sizeof (sb->buf)) {
strcpy (sb->buf+sb->len, s);
sb->ptr = NULL;
} else {
char *p = malloc (sb->len+l+1);
if (!p) return R_FALSE;
strcpy (p, sb->ptr?sb->ptr:sb->buf);
strcpy (p+sb->len, s);
free (sb->ptr);
sb->ptr = p;
}
sb->len += l;
return R_TRUE;
}
R_API char *r_strbuf_get(RStrBuf *sb) {