@@ -202,7 +202,9 @@ R_API void r_core_bin_export_info(RCore *core, int mode) {
202
202
r_strbuf_appendf (s0 , "f %s @ %s\n" , k , v );
203
203
} else if (IS_MODE_SET (mode )) {
204
204
ut64 nv = r_num_math (core -> num , v );
205
- r_flag_set (core -> flags , k , nv , 0 );
205
+ if (!r_flag_get (core -> flags , k )) {
206
+ r_flag_set (core -> flags , k , nv , 0 );
207
+ }
206
208
}
207
209
#endif
208
210
free (offset );
@@ -283,14 +285,30 @@ R_API void r_core_bin_export_info(RCore *core, int mode) {
283
285
r_strbuf_appendf (s2 , "fl %s %s\n" , k , v );
284
286
#else
285
287
if (IS_MODE_RAD (mode )) {
286
- r_strbuf_appendf (s2 , "fl %s %s\n" , flagname , v );
288
+ r_strbuf_appendf (s2 , "fl %s %s\n" , k , v );
287
289
} else if (IS_MODE_SET (mode )) {
288
- RFlagItem * fi = r_flag_get (core -> flags , flagname );
290
+ #if 0
291
+ char * s = r_core_cmd_str ("k bin/cur/pe_overlay.size" );
292
+ free (s );
293
+ #else
294
+ RFlagItem * fi = r_flag_get (core -> flags , k );
289
295
if (fi ) {
290
296
fi -> size = r_num_math (core -> num , v );
291
297
} else {
292
- R_LOG_ERROR ("Cannot find flag named '%s'" , flagname );
298
+ char * s = strdup (k );
299
+ char * kk = r_str_replace (s , ".size" , ".offset" , 0 );
300
+ const char * addr = sdb_const_get (db , kk , 0 );
301
+ if (R_STR_ISEMPTY (addr )) {
302
+ R_LOG_ERROR ("Cannot find flag named '%s'" , k );
303
+ } else {
304
+ ut64 naddr = r_num_math (NULL , addr );
305
+ ut64 size = r_num_math (NULL , v );
306
+ r_flag_set (core -> flags , k , naddr , size );
307
+ // r_core_cmdf (core, "fl %s %s@%s", k, v, addr);
308
+ }
309
+ free (kk );
293
310
}
311
+ #endif
294
312
}
295
313
#endif
296
314
}
0 commit comments