]> git.feebdaed.xyz Git - 0xmirror/radare2.git/commitdiff
Delete charset.c we have it inside the muta
authorpancake <pancake@nowsecure.com>
Mon, 22 Dec 2025 20:40:31 +0000 (21:40 +0100)
committerGitHub <noreply@github.com>
Mon, 22 Dec 2025 20:40:31 +0000 (21:40 +0100)
libr/include/r_lib.h
libr/util/Makefile
libr/util/charset.c [deleted file]
libr/util/meson.build
test/db/anal/arm
test/db/anal/x86_32
test/db/anal/x86_64

index b4b317f46afc573281609e02b4ad22a3f86216d8..670c11fa0a331e2eb5b72f41f99f943bb4b8c16a 100644 (file)
@@ -23,7 +23,7 @@ R_LIB_VERSION_HEADER (r_lib);
 // double-indirection required because cpp is crap
 #define STRINGIFY2(x) #x
 #define STRINGIFY(x) STRINGIFY2(x)
-#define R2_ABIVERSION 50
+#define R2_ABIVERSION 51
 #define R2_ABIVERSION_STRING STRINGIFY(R2_ABIVERSION)
 
 #define R_LIB_ENV "R2_LIBR_PLUGINS"
index 191e815c9ff98ad2b9efc617c53ffaec05eea0cc..8d040156cc0df82ae565a558a9d58c79f699da8f 100644 (file)
@@ -3,7 +3,7 @@ include ../config.mk
 NAME=r_util
 CFLAGS+=-DR2_PLUGIN_INCORE -I$(TOP)/shlr
 PCLIBS=@LIBZIP@ @DL_LIBS@
-OBJS=mem.o arena.o unum.o str.o hex.o file.o range.o charset.o xdg.o rxml.o rlz4.o
+OBJS=mem.o arena.o unum.o str.o hex.o file.o range.o xdg.o rxml.o rlz4.o
 OBJS+=prof.o sys.o buf.o sys_w32.o ubase64.o base85.o base91.o base36.o str_pseudo.o
 OBJS+=list.o chmod.o graph.o event.o alloc.o donut.o print_code.o
 OBJS+=regex/regcomp.o regex/regerror.o regex/regexec.o uleb128.o rstr.o str_strip.o
diff --git a/libr/util/charset.c b/libr/util/charset.c
deleted file mode 100644 (file)
index 7d392f1..0000000
+++ /dev/null
@@ -1,298 +0,0 @@
-/* radare - LGPL - Copyright 2020-2025 - gogo, pancake */
-
-#include <r_util.h>
-#include <config.h>
-
-#define USE_RUNES 0
-
-// TODO: this api must be deprecated because we have rmuta plugins now for that. think about the best way to simplify this usecase
-R_API SdbGperf *r_charset_get_gperf(const char *k) {
-       return NULL;
-}
-
-R_API RList *r_charset_list(RCharset *ch) {
-       RList *list = r_list_newf (free);
-       // iterate in disk
-       char *cs = r_file_new (r_sys_prefix (NULL), R2_DATDIR_R2, "charsets", NULL);
-       RList *files = r_sys_dir (cs);
-       free (cs);
-       RListIter *iter;
-       char *file;
-       r_list_foreach (files, iter, file) {
-               char *dot = strstr (file, ".sdb");
-               if (dot) {
-                       *dot = 0;
-                       r_list_append (list, strdup (file));
-               }
-       }
-       r_list_free (files);
-       return list;
-}
-
-R_API RCharset *r_charset_new(void) {
-       RCharset *ch = R_NEW0 (RCharset);
-       ch->db = sdb_new0 ();
-       ch->db_char_to_hex = sdb_new0 ();
-       return ch;
-}
-
-R_API void r_charset_free(RCharset *c) {
-       if (c) {
-               sdb_free (c->db);
-               sdb_free (c->db_char_to_hex);
-               free (c);
-       }
-}
-
-R_API void r_charset_close(RCharset *c) {
-       R_RETURN_IF_FAIL (c);
-       c->loaded = false;
-}
-
-R_API bool r_charset_use(RCharset *c, const char *cf) {
-       R_RETURN_VAL_IF_FAIL (c && cf, false);
-       bool rc = false;
-       SdbGperf *gp = r_charset_get_gperf (cf);
-       if (gp) {
-               sdb_free (c->db);
-               c->db = sdb_new0 ();
-               if (sdb_open_gperf (c->db, gp) != -1) {
-                       rc = r_charset_open (c, NULL);
-                       r_sys_setenv ("RABIN2_CHARSET", cf);
-                       rc = true;
-               }
-       } else {
-               char *cs = r_file_new (r_sys_prefix (NULL), R2_DATDIR_R2, "charsets", NULL);
-               char *syscs = r_str_newf ("%s%s%s.sdb", cs, R_SYS_DIR, cf);
-               free (cs);
-               if (r_file_exists (syscs)) {
-                       rc = r_charset_open (c, syscs);
-                       r_sys_setenv ("RABIN2_CHARSET", cf);
-               } else {
-                       if (r_file_exists (cf)) {
-                               rc = r_charset_open (c, cf);
-                               r_sys_setenv ("RABIN2_CHARSET", cf);
-                       }
-               }
-               free (syscs);
-       }
-       return rc;
-}
-
-R_API bool r_charset_open(RCharset *c, const char *cs) {
-       R_RETURN_VAL_IF_FAIL (c, false);
-       if (cs) {
-               sdb_reset (c->db);
-               sdb_open (c->db, cs);
-
-               sdb_free (c->db_char_to_hex);
-               c->db_char_to_hex = sdb_new0 ();
-       }
-
-       SdbListIter *iter;
-       SdbKv *kv;
-       SdbList *sdbls = sdb_foreach_list (c->db, true);
-
-       c->loaded = false;
-       ls_foreach (sdbls, iter, kv) {
-               const char *new_key = kv->base.value;
-               const char *new_value = kv->base.key;
-               const size_t key_len = strlen (new_key);
-               if (key_len > c->encode_maxkeylen) {
-                       c->encode_maxkeylen = key_len;
-               }
-               if (r_str_startswith (new_value, "0x")) {
-                       size_t vlen = strlen (new_value + 2) / 2;
-                       if (vlen > c->decode_maxkeylen) {
-                               c->decode_maxkeylen = vlen;
-                       }
-               }
-               sdb_add (c->db_char_to_hex, new_key, new_value, 0);
-               c->loaded = true;
-       }
-       ls_free (sdbls);
-
-       return true;
-}
-
-// rune
-R_API RCharsetRune *r_charset_rune_new(const ut8 *ch, const ut8 *hx) {
-       R_RETURN_VAL_IF_FAIL (ch && hx, NULL);
-       RCharsetRune* c = R_NEW0 (RCharsetRune);
-       c->ch = (ut8 *) strdup ((char *) ch);
-       c->hx = (ut8 *) strdup ((char *) hx);
-       c->left = NULL;
-       c->right = NULL;
-       return c;
-}
-
-R_API void r_charset_rune_free(RCharsetRune *c) {
-       if (c) {
-               free (c->ch);
-               free (c->hx);
-               free (c);
-       }
-}
-
-R_API size_t r_charset_encode_str(RCharset *rc, ut8 *out, size_t out_len, const ut8 *in, size_t in_len, bool early_exit) {
-       if (!rc->loaded) {
-               return in_len;
-       }
-       char k[32];
-       char *o = (char*)out;
-       size_t i, oi;
-       char *o_end = o + out_len;
-       bool fine = false;
-       size_t ws = rc->decode_maxkeylen;
-       if (ws < 1) {
-               ws = 1;
-       } else if (ws > 4) {
-               ws = 4;
-       }
-       for (i = oi = 0; i < in_len && o < o_end; i += ws) {
-               if (ws == 2) {
-                       snprintf (k, sizeof (k), "0x%02x%02x", in[i], in[i + 1]);
-               } else {
-                       snprintf (k, sizeof (k), "0x%02x", in[i]);
-               }
-               const char *v = sdb_const_get (rc->db, k, 0);
-               if (!v && in_len > 1 && ws == 1 && i + 1 < in_len) {
-                       const char *v = sdb_const_get (rc->db, k, 0);
-                       snprintf (k, sizeof (k), "0x%02x%02x", in[i], in[i + 1]);
-                       v = sdb_const_get (rc->db, k, 0);
-                       if (v) {
-                               ws = 2;
-                       }
-               }
-               if (!v) {
-                       if (early_exit) {
-                               break;
-                       }
-                       if (IS_PRINTABLE (in[i])) {
-                               v = (const char*)(in + i);
-                       }
-               }
-               const char *ret = r_str_get_fail (v, "?");
-               char *res = strdup (ret);
-               if (res) {
-                       size_t reslen = strlen (res);
-                       if (reslen >= o_end - o) {
-                               free (res);
-                               break;
-                       }
-                       fine = true;
-                       r_str_unescape (res);
-               //      memcpy (o, res, out_len - i);
-                       r_str_ncpy (o, res, out_len - oi);
-                       free (res);
-               }
-               const size_t di = strlen (o);
-               oi += di;
-               o += di;
-       }
-       if (!fine) {
-               return 0;
-       }
-       return o - (char*)out;
-}
-
-// assumes out is as big as in_len
-R_API size_t r_charset_decode_str(RCharset *rc, ut8 *out, size_t out_len, const ut8 *in, size_t in_len) {
-       if (!rc->loaded) {
-               return in_len;
-       }
-       char *o = (char*)out;
-       char *o_end = o + out_len;
-
-       size_t maxkeylen = rc->encode_maxkeylen;
-       size_t cur, j;
-       for (cur = 0; cur < in_len; cur++) {
-               size_t left = in_len - cur;
-               size_t toread = R_MIN (left + 1, maxkeylen);
-               char *str = calloc (toread + 128, 1);
-               if (!str) {
-                       break;
-               }
-               memcpy (str, in + cur, toread);
-               bool found = false;
-               for (j = toread; cur < in_len && j > 0; j--) {
-                       left = in_len - cur + 1;
-                       toread = R_MIN (left, maxkeylen);
-                       str[j] = 0;
-                       const char *v = sdb_const_get (rc->db_char_to_hex, (char *) str, 0);
-                       if (v) {
-                               int repeat = r_str_startswith (v, "0x")? strlen (v + 2) / 2: 1;
-                               ut64 nv = r_num_get (NULL, v);
-                               if (!nv) {
-                                       int i;
-                                       // write 0x00 N times (
-                                       for (i = 0; i < repeat; i++) {
-                                               // write null byte
-                                               if (o + 2 > o_end) {
-                                                       break;
-                                               }
-                                               memcpy (o, "\x00", 2);
-                                               o++;
-                                       }
-                                       o--;
-                                       found = true;
-                                       break;
-                               }
-                               // convert to ascii
-                               char *str_hx = malloc (1 + maxkeylen);
-                               if (!str_hx) {
-                                       break;
-                               }
-                               if (nv > 0xff) {
-                                       ut64 d  = 0;
-                                       r_mem_swapendian ((ut8*)&d, (const ut8*)&nv, 8);
-                                       nv = d;
-                               }
-                               int i;
-                               bool skip = true;
-                               int chcount = 0;
-                               for (i = 0; i < 8; i++) {
-                                       ut8 bv = nv & 0xff;
-                                       // skip until we found one byet
-                                       if (bv & 0xff) {
-                                               skip = false;
-                                       }
-                                       if (skip) {
-                                               nv >>= 8;
-                                               continue;
-                                       } else if (!bv) {
-                                               break;
-                                       }
-                                       // eprintf ("-> 0x%02x\n", nv & 0xff);
-                                       // TODO: support multiple chars output
-                                       str_hx[0] = bv;
-                                       str_hx[1] = 0;
-                                       const char *ret = r_str_get_fail (str_hx, "?");
-
-                                       // concatenate
-                                       const size_t ll = R_MIN (left, strlen (ret) + 1);
-                                       if (ll > 0 && o + ll + 1 <= o_end) {
-                                               memcpy (o, ret, ll);
-                                               o[ll] = 0;
-                                               o += ll - 1;
-                                               chcount++;
-                                       }
-                                       found = true;
-                                       nv >>= 8;
-                               }
-                               cur += (chcount>1)?chcount - 2:j-1;
-                               free (str_hx);
-                               break;
-                       }
-               }
-               if (!found) {
-                       if (o + 2 <= o_end) {
-                               o[0] = '?';
-                               o[1] = 0;
-                       }
-                       o++;
-               }
-               free (str);
-       }
-       return o - (char*)out;
-}
index d992a85680af9d3471351f065fe65cbe046a506e..9dbcae8bae134fb0eb95f5e5b85e0c4bca20d75f 100644 (file)
@@ -16,7 +16,6 @@ r_util_sources = [
   'bscanf.c',
   'buf.c',
   'cfloat.c',
-  'charset.c',
   'chartable.c',
   'chmod.c',
   'debruijn.c',
index b400378dd0c6f887576ee9b4f62267e80dfed99d..fbba2026e76fa91dc1a98091706fd30a1be3ac4b 100644 (file)
@@ -246,7 +246,7 @@ CMDS=<<EOF
 wx ff0000e2010050e30000001affffffea70009de594008de5e4139fe500f09ee5
 e asm.arch=arm
 e asm.bits=32
-.a2f
+a:a2f
 afb
 EOF
 EXPECT=<<EOF
index bdb264ee6d4a285eb7e6b98d0108469fa998ab1f..bb2deb89cb21448241594c07d2ce8888d0745cad 100644 (file)
@@ -80,7 +80,7 @@ e anal.hasnext=0
 e asm.arch=x86
 e asm.bits=32
 wx 85c0740585c07405c385c0eb01c385c07401c3b8efbeaddec3
-a2f
+a:a2f
 afb
 EOF
 EXPECT=<<EOF
@@ -103,7 +103,7 @@ e asm.arch=x86
 e asm.bits=32
 wx 31c031c983c10183c10285c975f231c931c040c3
 s 0xa
-a2f
+a:a2f
 afb
 EOF
 EXPECT=<<EOF
@@ -121,7 +121,7 @@ e asm.arch=x86
 e asm.bits=32
 wx 31c083c00183e801750831c083e80183c00131c983c10183e90175e431d283ea0183c2017402ebd831c0c3
 s 0x26
-a2f
+a:a2f
 afb
 EOF
 EXPECT=<<EOF
@@ -142,7 +142,7 @@ e anal.arch = x86
 e io.cache=true
 e asm.bits=32
 wx 31c0740140c3
-a2f
+a:a2f
 afb
 EOF
 EXPECT=<<EOF
index de9008557664f8d1c6aca1cf3150e28f3b4daef8..13c076cb4cffe65426752ec5cdf2c8eacc665697 100644 (file)
@@ -581,7 +581,7 @@ e anal.hasnext=0
 e asm.arch=x86
 e asm.bits=64
 wx b8010000004839ca7f26b8ffffffff4839ca7c1c498b4838498b5138b8010000004839ca7f0ab8ffffffff4839ca7d025dc34883c7684883c6685dc3
-a2f
+a:a2f
 afl~?
 EOF
 EXPECT=<<EOF
@@ -596,7 +596,7 @@ e anal.hasnext=0
 e asm.arch=x86
 e asm.bits=64
 wx b8010000004839ca7f26b8ffffffff4839ca7c1c498b4838498b5138b8010000004839ca7f0ab8ffffffff4839ca7d025dc34883c7684883c6685dc3
-a2f
+a:a2f
 afl~?
 afl~[2]
 EOF
@@ -613,7 +613,7 @@ e anal.hasnext=0
 e asm.arch=x86
 e asm.bits=64
 wx b8010000004839ca7f26b8ffffffff4839ca7c1c498b4838498b5138b8010000004839ca7f0ab8ffffffff4839ca7d025dc34883c7684883c6685dc3
-a2f
+a:a2f
 afl~?
 afl~[2]
 EOF