Skip to content

Commit 4fe7c4d

Browse files
committed
fix
1 parent 62bed9f commit 4fe7c4d

File tree

1 file changed

+23
-25
lines changed

1 file changed

+23
-25
lines changed

libr/core/cbin.c

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ R_API bool r_core_bin_set_by_fd(RCore *core, ut64 bin_fd) {
154154
}
155155

156156
#define RUNSCRIPT 1
157+
157158
R_API void r_core_bin_export_info(RCore *core, int mode) {
158159
char *flagname = NULL, *offset = NULL;
159160
RBinFile *bf = r_bin_cur (core->bin);
@@ -171,38 +172,40 @@ R_API void r_core_bin_export_info(RCore *core, int mode) {
171172

172173
SdbListIter *iter;
173174
SdbKv *kv;
175+
#if RUNSCRIPT
176+
r_cons_push ();
177+
r_strbuf_append (s0, "fs format\n");
178+
#else
174179
if (IS_MODE_RAD (mode)) {
175180
r_strbuf_append (s0, "fs format\n");
176181
} else if (IS_MODE_SET (mode)) {
177182
// just run the script, not the api
178183
r_flag_space_push (core->flags, "format");
179184
}
185+
#endif
180186

181187
// iterate over all keys
182188
SdbList *ls = sdb_foreach_list (db, false);
183189
ls_foreach (ls, iter, kv) {
184190
char *k = sdbkv_key (kv);
185191
char *v = sdbkv_value (kv);
186-
char *dup = strdup (k);
187192
//printf ("?e (%s) (%s)\n", k, v);
188193
// 1
189-
if ((flagname = strstr (dup, ".offset"))) {
190-
*flagname = 0;
191-
flagname = dup;
194+
if ((flagname = strstr (k, ".offset"))) {
192195
#if RUNSCRIPT
193-
r_strbuf_appendf (s0, "f %s @ %s\n", flagname, v);
196+
r_strbuf_appendf (s0, "f %s @ %s\n", k, v);
194197
#else
195198
if (IS_MODE_RAD (mode)) {
196-
r_strbuf_appendf (s0, "f %s @ %s\n", flagname, v);
199+
r_strbuf_appendf (s0, "f %s @ %s\n", k, v);
197200
} else if (IS_MODE_SET (mode)) {
198201
ut64 nv = r_num_math (core->num, v);
199-
r_flag_set (core->flags, flagname, nv, 0);
202+
r_flag_set (core->flags, k, nv, 0);
200203
}
201204
#endif
202205
free (offset);
203206
offset = strdup (v);
204-
}
205-
if (strstr (dup, ".cparse")) {
207+
} else
208+
if (strstr (k, ".cparse")) {
206209
#if RUNSCRIPT
207210
r_strbuf_appendf (s1, "\"td %s\"\n", v);
208211
#else
@@ -223,33 +226,31 @@ R_API void r_core_bin_export_info(RCore *core, int mode) {
223226
}
224227
}
225228
#endif
226-
}
229+
} else
227230
// 2
228-
if ((flagname = strstr (dup, ".format"))) {
231+
if ((flagname = strstr (k, ".format"))) {
229232
*flagname = 0;
230233
if (!offset) {
231234
offset = strdup ("0");
232235
}
233-
flagname = dup;
234236
#if RUNSCRIPT
235-
r_strbuf_appendf (s1, "pf.%s %s\n", flagname, v);
237+
r_strbuf_appendf (s1, "pf.%s %s\n", k, v);
236238
#else
237239
if (IS_MODE_RAD (mode)) {
238-
r_strbuf_appendf (s1, "pf.%s %s\n", flagname, v);
240+
r_strbuf_appendf (s1, "pf.%s %s\n", k, v);
239241
} else if (IS_MODE_SET (mode)) {
240-
sdb_set (core->print->formats, flagname, v, 0);
242+
sdb_set (core->print->formats, k, v, 0);
241243
}
242244
#endif
243-
}
245+
} else
244246
// 3
245-
if ((flagname = strstr (dup, ".format"))) {
247+
if ((flagname = strstr (k, ".format"))) {
246248
*flagname = 0;
247249
if (!offset) {
248250
offset = strdup ("0");
249251
}
250-
flagname = dup;
251252
int fmtsize = r_print_format_struct_size (core->print, v, 0, 0);
252-
char *offset_key = r_str_newf ("%s.offset", flagname);
253+
char *offset_key = r_str_newf ("%s.offset", k);
253254
const char *off = sdb_const_get (db, offset_key, 0);
254255
if (fmtsize < 1) {
255256
continue;
@@ -277,12 +278,9 @@ R_API void r_core_bin_export_info(RCore *core, int mode) {
277278
}
278279
#endif
279280
}
280-
}
281-
if ((flagname = strstr (dup, ".size"))) {
282-
*flagname = 0;
283-
flagname = dup;
281+
} else if ((flagname = strstr (k, ".size"))) {
284282
#if RUNSCRIPT
285-
r_strbuf_appendf (s2, "fl %s %s\n", flagname, v);
283+
r_strbuf_appendf (s2, "fl %s %s\n", k, v);
286284
#else
287285
if (IS_MODE_RAD (mode)) {
288286
r_strbuf_appendf (s2, "fl %s %s\n", flagname, v);
@@ -296,13 +294,13 @@ R_API void r_core_bin_export_info(RCore *core, int mode) {
296294
}
297295
#endif
298296
}
299-
free (dup);
300297
}
301298
R_FREE (offset);
302299
ls_free (ls);
303300
r_strbuf_append_strbuf (s0, s1);
304301
r_strbuf_append_strbuf (s0, s2);
305302
char *s = r_strbuf_drain (s0);
303+
r_cons_pop ();
306304
if (IS_MODE_RAD (mode)) {
307305
r_cons_print (s);
308306
} else if (IS_MODE_SET (mode)) {

0 commit comments

Comments
 (0)