RStrBuf setters return boolean for success
This commit is contained in:
parent
fbc17f6f6e
commit
b97eecc06f
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue