@@ -154,6 +154,7 @@ R_API bool r_core_bin_set_by_fd(RCore *core, ut64 bin_fd) {
154
154
}
155
155
156
156
#define RUNSCRIPT 1
157
+
157
158
R_API void r_core_bin_export_info (RCore * core , int mode ) {
158
159
char * flagname = NULL , * offset = NULL ;
159
160
RBinFile * bf = r_bin_cur (core -> bin );
@@ -171,38 +172,40 @@ R_API void r_core_bin_export_info(RCore *core, int mode) {
171
172
172
173
SdbListIter * iter ;
173
174
SdbKv * kv ;
175
+ #if RUNSCRIPT
176
+ r_cons_push ();
177
+ r_strbuf_append (s0 , "fs format\n" );
178
+ #else
174
179
if (IS_MODE_RAD (mode )) {
175
180
r_strbuf_append (s0 , "fs format\n" );
176
181
} else if (IS_MODE_SET (mode )) {
177
182
// just run the script, not the api
178
183
r_flag_space_push (core -> flags , "format" );
179
184
}
185
+ #endif
180
186
181
187
// iterate over all keys
182
188
SdbList * ls = sdb_foreach_list (db , false);
183
189
ls_foreach (ls , iter , kv ) {
184
190
char * k = sdbkv_key (kv );
185
191
char * v = sdbkv_value (kv );
186
- char * dup = strdup (k );
187
192
//printf ("?e (%s) (%s)\n", k, v);
188
193
// 1
189
- if ((flagname = strstr (dup , ".offset" ))) {
190
- * flagname = 0 ;
191
- flagname = dup ;
194
+ if ((flagname = strstr (k , ".offset" ))) {
192
195
#if RUNSCRIPT
193
- r_strbuf_appendf (s0 , "f %s @ %s\n" , flagname , v );
196
+ r_strbuf_appendf (s0 , "f %s @ %s\n" , k , v );
194
197
#else
195
198
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 );
197
200
} else if (IS_MODE_SET (mode )) {
198
201
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 );
200
203
}
201
204
#endif
202
205
free (offset );
203
206
offset = strdup (v );
204
- }
205
- if (strstr (dup , ".cparse" )) {
207
+ } else
208
+ if (strstr (k , ".cparse" )) {
206
209
#if RUNSCRIPT
207
210
r_strbuf_appendf (s1 , "\"td %s\"\n" , v );
208
211
#else
@@ -223,33 +226,31 @@ R_API void r_core_bin_export_info(RCore *core, int mode) {
223
226
}
224
227
}
225
228
#endif
226
- }
229
+ } else
227
230
// 2
228
- if ((flagname = strstr (dup , ".format" ))) {
231
+ if ((flagname = strstr (k , ".format" ))) {
229
232
* flagname = 0 ;
230
233
if (!offset ) {
231
234
offset = strdup ("0" );
232
235
}
233
- flagname = dup ;
234
236
#if RUNSCRIPT
235
- r_strbuf_appendf (s1 , "pf.%s %s\n" , flagname , v );
237
+ r_strbuf_appendf (s1 , "pf.%s %s\n" , k , v );
236
238
#else
237
239
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 );
239
241
} else if (IS_MODE_SET (mode )) {
240
- sdb_set (core -> print -> formats , flagname , v , 0 );
242
+ sdb_set (core -> print -> formats , k , v , 0 );
241
243
}
242
244
#endif
243
- }
245
+ } else
244
246
// 3
245
- if ((flagname = strstr (dup , ".format" ))) {
247
+ if ((flagname = strstr (k , ".format" ))) {
246
248
* flagname = 0 ;
247
249
if (!offset ) {
248
250
offset = strdup ("0" );
249
251
}
250
- flagname = dup ;
251
252
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 );
253
254
const char * off = sdb_const_get (db , offset_key , 0 );
254
255
if (fmtsize < 1 ) {
255
256
continue ;
@@ -277,12 +278,9 @@ R_API void r_core_bin_export_info(RCore *core, int mode) {
277
278
}
278
279
#endif
279
280
}
280
- }
281
- if ((flagname = strstr (dup , ".size" ))) {
282
- * flagname = 0 ;
283
- flagname = dup ;
281
+ } else if ((flagname = strstr (k , ".size" ))) {
284
282
#if RUNSCRIPT
285
- r_strbuf_appendf (s2 , "fl %s %s\n" , flagname , v );
283
+ r_strbuf_appendf (s2 , "fl %s %s\n" , k , v );
286
284
#else
287
285
if (IS_MODE_RAD (mode )) {
288
286
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) {
296
294
}
297
295
#endif
298
296
}
299
- free (dup );
300
297
}
301
298
R_FREE (offset );
302
299
ls_free (ls );
303
300
r_strbuf_append_strbuf (s0 , s1 );
304
301
r_strbuf_append_strbuf (s0 , s2 );
305
302
char * s = r_strbuf_drain (s0 );
303
+ r_cons_pop ();
306
304
if (IS_MODE_RAD (mode )) {
307
305
r_cons_print (s );
308
306
} else if (IS_MODE_SET (mode )) {
0 commit comments