R_API void r_cons_canvas_print_region(RConsCanvas *c) { char *o = r_cons_canvas_to_string (c); if (o) { char *p = r_str_trim_tail (o); if (p) { r_cons_strcat (p); free (p); } else { free (o); } } }
// Removes spaces from the head of the string, and zeros out whitespaces from // the tail of the string. The string is changed in place. R_API char *r_str_trim_head_tail(char *str) { return r_str_trim_tail (r_str_trim_head (str)); }
// no copy, like trim_head+tail but with trim_head_ro R_API char *r_str_trim_nc(char *str) { char *s = (char *)r_str_trim_ro (str); return r_str_trim_tail (s); }
static char *getstr(const char *src) { int len; char *ret = NULL; switch (*src) { case '\'': ret = strdup (src+1); if (ret) { len = strlen (ret); if (len>0) { len--; if (ret[len]=='\'') { ret[len] = 0; return ret; } else eprintf ("Missing \"\n"); } free (ret); } return NULL; case '"': ret = strdup (src+1); if (ret) { len = strlen (ret); if (len>0) { len--; if (ret[len]=='"') { ret[len] = 0; r_str_unescape (ret); return ret; } else eprintf ("Missing \"\n"); } free (ret); } return NULL; case '@': { char *pat = strchr (src+1, '@'); if (pat) { *pat++ = 0; int i, rep = atoi (src+1); int len = strlen (pat); if (rep>0) { char *buf = malloc (rep); for(i=0;i<rep;i++) { buf[i] = pat[i%len]; } return buf; } } // slurp file return r_file_slurp (src+1, NULL); } case '!': return r_str_trim_tail (r_sys_cmd_str (src+1, NULL, NULL)); case ':': if (src[1]=='!') { ret = r_str_trim_tail (r_sys_cmd_str (src+1, NULL, NULL)); } else { ret = strdup (src); } len = r_hex_str2bin (src+1, (ut8*)ret); if (len>0) { ret[len] = 0; return ret; } else { eprintf ("Invalid hexpair string\n"); free (ret); return NULL; } } r_str_unescape ((ret = strdup (src))); return ret; }
static char *getstr(const char *src) { int len; char *ret = NULL; switch (*src) { case '\'': ret = strdup (src+1); if (ret) { len = strlen (ret); if (len > 0) { len--; if (ret[len] == '\'') { ret[len] = 0; return ret; } eprintf ("Missing \"\n"); } free (ret); } return NULL; case '"': ret = strdup (src + 1); if (ret) { len = strlen (ret); if (len > 0) { len--; if (ret[len] == '"') { ret[len] = 0; r_str_unescape (ret); return ret; } eprintf ("Missing \"\n"); } free (ret); } return NULL; case '@': { char *pat = strchr (src + 1, '@'); if (pat) { int i, len, rep; *pat++ = 0; rep = atoi (src + 1); len = strlen (pat); if (rep > 0) { char *buf = malloc (rep); if (buf) { for (i = 0; i < rep; i++) { buf[i] = pat[i%len]; } } return buf; } } // slurp file return r_file_slurp (src + 1, NULL); } case '`': { char *msg = strdup (src + 1); int msg_len = strlen (msg); if (msg_len > 0) { msg [msg_len - 1] = 0; char *ret = r_str_trim_tail (r_sys_cmd_str (msg, NULL, NULL)); free (msg); return ret; } free (msg); return strdup (""); } case '!': return r_str_trim_tail (r_sys_cmd_str (src + 1, NULL, NULL)); case ':': if (src[1] == '!') { ret = r_str_trim_tail (r_sys_cmd_str (src + 1, NULL, NULL)); } else { ret = strdup (src); } len = r_hex_str2bin (src + 1, (ut8*)ret); if (len > 0) { ret[len] = 0; return ret; } eprintf ("Invalid hexpair string\n"); free (ret); return NULL; #if 0 // what is this for?? case '%': return (char *) strtoul (src + 1, NULL, 0); #endif } r_str_unescape ((ret = strdup (src))); return ret; }