Rizin
unix-like reverse engineering framework and cli tools
rz_api.c File Reference
#include "spp.h"
#include "rz_api.h"

Go to the source code of this file.

Functions

SStrBufrz_strbuf_new (const char *str)
 
void rz_strbuf_init (SStrBuf *sb)
 
bool rz_strbuf_set (SStrBuf *sb, const char *s)
 
bool rz_strbuf_append (SStrBuf *sb, const char *s)
 
char * rz_strbuf_get (SStrBuf *sb)
 
char * rz_strbuf_drain (SStrBuf *sb)
 
void rz_strbuf_free (SStrBuf *sb)
 
void rz_strbuf_fini (SStrBuf *sb)
 
int rz_sys_setenv (const char *key, const char *value)
 Set an environment variable in the calling process. More...
 
char * rz_sys_getenv (const char *key)
 Get the value of an environment variable named key or NULL if none exists. More...
 
int rz_sys_getpid ()
 

Function Documentation

◆ rz_strbuf_append()

bool rz_strbuf_append ( SStrBuf sb,
const char *  s 
)

Definition at line 47 of file rz_api.c.

47  {
48  int l = strlen (s);
49  if (l < 1) {
50  return false;
51  }
52  if ((sb->len + l + 1) < sizeof (sb->buf)) {
53  memcpy (sb->buf + sb->len, s, l + 1);
54  RZ_FREE (sb->ptr);
55  } else {
56  int newlen = sb->len + l + 128;
57  char *p = sb->ptr;
58  bool allocated = true;
59  if (!sb->ptr) {
60  p = malloc (newlen);
61  if (p && sb->len > 0) {
62  memcpy (p, sb->buf, sb->len);
63  }
64  } else if (sb->len + l + 1 > sb->ptrlen) {
65  p = realloc (sb->ptr, newlen);
66  } else {
67  allocated = false;
68  }
69  if (allocated) {
70  if (!p) return false;
71  sb->ptr = p;
72  sb->ptrlen = newlen;
73  }
74  memcpy (p + sb->len, s, l + 1);
75  }
76  sb->len += l;
77  return true;
78 }
static SblHeader sb
Definition: bin_mbn.c:26
void * p
Definition: libc.cpp:67
memcpy(mem, inblock.get(), min(CONTAINING_RECORD(inblock.get(), MEMBLOCK, data) ->size, size))
void * realloc(void *ptr, size_t size)
Definition: malloc.c:144
void * malloc(size_t size)
Definition: malloc.c:123
static RzSocket * s
Definition: rtr.c:28
#define RZ_FREE(x)
Definition: rz_types.h:369

References malloc(), memcpy(), p, realloc(), RZ_FREE, s, and sb.

◆ rz_strbuf_drain()

char* rz_strbuf_drain ( SStrBuf sb)

Definition at line 84 of file rz_api.c.

84  {
85  char *res = sb->ptr? sb->ptr: strdup (sb->buf);
86  sb->ptr = NULL;
88  free (sb);
89  return res;
90 }
#define NULL
Definition: cris-opc.c:27
RZ_API void Ht_() free(HtName_(Ht) *ht)
Definition: ht_inc.c:130
return strdup("=SP r13\n" "=LR r14\n" "=PC r15\n" "=A0 r0\n" "=A1 r1\n" "=A2 r2\n" "=A3 r3\n" "=ZF zf\n" "=SF nf\n" "=OF vf\n" "=CF cf\n" "=SN or0\n" "gpr lr .32 56 0\n" "gpr pc .32 60 0\n" "gpr cpsr .32 64 0 ____tfiae_________________qvczn\n" "gpr or0 .32 68 0\n" "gpr tf .1 64.5 0 thumb\n" "gpr ef .1 64.9 0 endian\n" "gpr jf .1 64.24 0 java\n" "gpr qf .1 64.27 0 sticky_overflow\n" "gpr vf .1 64.28 0 overflow\n" "gpr cf .1 64.29 0 carry\n" "gpr zf .1 64.30 0 zero\n" "gpr nf .1 64.31 0 negative\n" "gpr itc .4 64.10 0 if_then_count\n" "gpr gef .4 64.16 0 great_or_equal\n" "gpr r0 .32 0 0\n" "gpr r1 .32 4 0\n" "gpr r2 .32 8 0\n" "gpr r3 .32 12 0\n" "gpr r4 .32 16 0\n" "gpr r5 .32 20 0\n" "gpr r6 .32 24 0\n" "gpr r7 .32 28 0\n" "gpr r8 .32 32 0\n" "gpr r9 .32 36 0\n" "gpr r10 .32 40 0\n" "gpr r11 .32 44 0\n" "gpr r12 .32 48 0\n" "gpr r13 .32 52 0\n" "gpr r14 .32 56 0\n" "gpr r15 .32 60 0\n" "gpr r16 .32 64 0\n" "gpr r17 .32 68 0\n")
void rz_strbuf_fini(SStrBuf *sb)
Definition: rz_api.c:97

References free(), NULL, rz_strbuf_fini(), sb, and strdup().

◆ rz_strbuf_fini()

void rz_strbuf_fini ( SStrBuf sb)

Definition at line 97 of file rz_api.c.

97  {
98  if (sb && sb->ptr)
99  RZ_FREE (sb->ptr);
100 }

References RZ_FREE, and sb.

Referenced by rz_strbuf_drain(), and rz_strbuf_free().

◆ rz_strbuf_free()

void rz_strbuf_free ( SStrBuf sb)

Definition at line 92 of file rz_api.c.

92  {
94  free (sb);
95 }

References free(), rz_strbuf_fini(), and sb.

◆ rz_strbuf_get()

char* rz_strbuf_get ( SStrBuf sb)

Definition at line 80 of file rz_api.c.

80  {
81  return sb? (sb->ptr? sb->ptr: sb->buf) : NULL;
82 }

References NULL, and sb.

◆ rz_strbuf_init()

void rz_strbuf_init ( SStrBuf sb)

Definition at line 18 of file rz_api.c.

18  {
19  memset (sb, 0, sizeof (SStrBuf));
20 }
return memset(p, 0, total)
Definition: spp.h:84

References memset(), and sb.

Referenced by rz_strbuf_set().

◆ rz_strbuf_new()

SStrBuf* rz_strbuf_new ( const char *  str)

Definition at line 12 of file rz_api.c.

12  {
13  SStrBuf *s = RZ_NEW0 (SStrBuf);
14  if (str) rz_strbuf_set (s, str);
15  return s;
16 }
bool rz_strbuf_set(SStrBuf *sb, const char *s)
Definition: rz_api.c:22
#define RZ_NEW0(x)
Definition: rz_types.h:284

References RZ_NEW0, rz_strbuf_set(), s, and cmd_descs_generate::str.

Referenced by __config_toggle_cb(), __config_value_cb(), __draw_menu(), __esil_step_range_cb(), __generic_io_dest(), __init_menu_color_settings_layout(), __init_menu_disasm_asm_settings_layout(), __init_menu_disasm_settings_layout(), __init_menu_screen_settings_layout(), __op_refs(), __panels_refresh(), __parse_string_on_cursor(), __update_help(), __update_help_title(), __update_modal(), __update_panel_title(), argv_get_help(), avr_op(), c_parser_state_new(), c_parser_state_reset_keep_ht(), cmd_print_fromage(), cmd_pxr(), construct_reloc_name(), core_analysis_bytes_standard(), DEFINE_HANDLE_TS_FCN_AND_SYMBOL(), dex_resolve_proto_id(), do_handle_ts_unescape_arg(), ds_build_op_str(), fill_usage_strbuf(), gdb_to_rz_profile(), generic_array_obj_to_string(), group_get_help(), java_field_access_flags_readable(), java_method_access_flags_readable(), main(), mk_reg_str(), mnemonics(), parse_localvar(), parse_simple_type(), pdb_types_print_standard(), print_rop(), read_string_val(), replace_directives_for(), rz_analysis_cc_get(), rz_analysis_data_to_string(), rz_analysis_fcn_format_sig(), rz_asm_mdisassemble(), rz_asm_rasm_assemble(), rz_asm_token_string_clone(), rz_asm_token_string_new(), rz_asn1_print_hexdump_padded(), rz_asn1_to_string(), rz_axml_decode(), rz_base_type_as_format(), rz_bin_dex_access_flags_readable(), rz_bin_java_class_access_flags_readable(), rz_buf_get_nstring(), rz_cmd_disassembly_all_possible_opcodes_handler(), rz_cmd_disassembly_all_possible_opcodes_treeview_handler(), rz_cmd_get_help_json(), rz_cmd_help_search_handler(), rz_cmd_javac_handler(), rz_cmd_javaf_handler(), rz_cmd_javai_handler(), rz_cmd_javam_handler(), rz_cmd_javap_handler(), rz_cmd_javas_handler(), rz_cmd_parsed_args_argstr(), rz_cmd_parsed_args_execstr(), rz_cmd_shell_mkdir_handler(), rz_cons_canvas_box(), rz_cons_echo(), rz_cons_grepbuf(), rz_cons_html_filter(), rz_core_analysis_all_vars_display(), rz_core_analysis_hasrefs_to_depth(), rz_core_analysis_il_step_with_events(), rz_core_analysis_il_vm_status(), rz_core_analysis_var_display(), rz_core_assembly_of_hex(), rz_core_bin_method_flags_str(), rz_core_bin_pdb_gvars_as_string(), rz_core_bin_relocs_print(), rz_core_bin_sections_mapping_print(), rz_core_disasm_instruction(), rz_core_disasm_pdi_with_buf(), rz_core_esil_of_assembly(), rz_core_esil_of_hex(), rz_core_hex_of_assembly(), rz_core_print_hexdump_byline_str(), rz_core_print_string_c_cpp(), rz_core_types_as_c_all(), rz_core_types_enum_as_c_all(), rz_core_types_struct_as_c_all(), rz_core_types_typedef_as_c_all(), rz_core_types_union_as_c_all(), rz_core_visual_analysis(), rz_core_visual_analysis_refresh(), rz_core_visual_view_rop(), rz_core_yank_as_string(), rz_debug_thread_list(), rz_diff_unified_text(), rz_list_to_str(), rz_load_panels_layout(), rz_parse_pseudocode(), rz_pkcs7_cms_to_string(), rz_print_colorize_asm_str(), rz_print_hexdiff_str(), rz_print_hexdump_str(), rz_protobuf_decode(), rz_run_get_environ_profile(), rz_sign_flirt_parse_string_pattern_from_buffer(), rz_str_array_join(), rz_str_list_join(), rz_str_repeat(), rz_str_trim_lines(), rz_str_version(), rz_str_widget_list(), rz_table_tocsv(), rz_table_tofancystring(), rz_table_tosimplestring(), rz_table_visual_list(), rz_type_as_format(), rz_type_as_format_pair(), rz_type_callable_as_string(), rz_type_callable_ptr_as_string(), rz_type_format_data(), rz_x509_crl_to_string(), sh_op_param_to_str(), sh_op_to_str(), show_config_options(), spp_eval_str(), spp_run_str(), strings_print(), type_as_pretty_string(), ut64_to_hex(), visual_help(), and wasm_dis().

◆ rz_strbuf_set()

bool rz_strbuf_set ( SStrBuf sb,
const char *  s 
)

Definition at line 22 of file rz_api.c.

22  {
23  int l;
24  if (!sb) return false;
25  if (!s) {
27  return true;
28  }
29  l = strlen (s);
30  if (l >= sizeof (sb->buf)) {
31  char *ptr = sb->ptr;
32  if (!ptr || l+1 > sb->ptrlen) {
33  ptr = malloc (l + 1);
34  if (!ptr) return false;
35  sb->ptrlen = l + 1;
36  sb->ptr = ptr;
37  }
38  memcpy (ptr, s, l+1);
39  } else {
40  sb->ptr = NULL;
41  memcpy (sb->buf, s, l+1);
42  }
43  sb->len = l;
44  return true;
45 }
void rz_strbuf_init(SStrBuf *sb)
Definition: rz_api.c:18

References malloc(), memcpy(), NULL, rz_strbuf_init(), s, and sb.

Referenced by rz_strbuf_new().

◆ rz_sys_getenv()

char* rz_sys_getenv ( const char *  key)

Get the value of an environment variable named key or NULL if none exists.

Definition at line 122 of file rz_api.c.

122  {
123 #if __WINDOWS__
124  DWORD dwRet;
125  char *envbuf = NULL, *tmp_ptr;
126  char *val = NULL;
127  const int TMP_BUFSIZE = 4096;
128  if (!key) {
129  return NULL;
130  }
131  envbuf = malloc (sizeof (envbuf) * TMP_BUFSIZE);
132  if (!envbuf) {
133  goto err_r_sys_get_env;
134  }
135  dwRet = GetEnvironmentVariableA (key, envbuf, TMP_BUFSIZE);
136  if (dwRet == 0) {
137  if (GetLastError () == ERROR_ENVVAR_NOT_FOUND) {
138  goto err_r_sys_get_env;
139  }
140  } else if (TMP_BUFSIZE < dwRet) {
141  tmp_ptr = realloc (envbuf, dwRet);
142  if (!tmp_ptr) {
143  goto err_r_sys_get_env;
144  }
145  envbuf = tmp_ptr;
146  dwRet = GetEnvironmentVariableA (key, envbuf, dwRet);
147  if (!dwRet) {
148  goto err_r_sys_get_env;
149  }
150  }
151  val = strdup (envbuf);
152 err_r_sys_get_env:
153  free (envbuf);
154  return val;
155 #else
156  char *b;
157  if (!key) {
158  return NULL;
159  }
160  b = getenv (key);
161  return b? strdup (b): NULL;
162 #endif
163 }
ut16 val
Definition: armass64_const.h:6
static static sync static getppid static getegid const char static filename char static len const char char static bufsiz static mask static vfork const void static prot static getpgrp const char static swapflags static arg static fd static protocol static who struct sockaddr static addrlen static backlog struct timeval struct timezone static tz const struct iovec static count static mode const void const struct sockaddr static tolen const char static pathname void static offset struct stat static buf void long static basep static whence static length const void static len key
Definition: sflib.h:118
#define b(i)
Definition: sha256.c:42
char * getenv()
DWORD

References b, DWORD, free(), getenv(), key, malloc(), NULL, realloc(), strdup(), and val.

Referenced by __load_plugins(), binutils_assemble(), create_cache_bins(), find_include(), gdbr_connect(), hash_load_plugins(), interact_commands(), loadSystemPlugins(), parse_signature(), rz_assert_log(), rz_cmd_shell_env_handler(), rz_cons_get_size(), rz_core_config_init(), rz_core_parse_rizinrc(), rz_core_run_script(), rz_core_sysenv_end(), rz_egg_Cfile_getCompiler(), rz_egg_Cfile_set_cEnv(), rz_egg_lang_include_path(), rz_file_binsh(), rz_file_path(), rz_file_tmpdir(), rz_lib_path(), rz_main_rizin(), rz_main_rz_asm(), rz_main_rz_bin(), rz_main_rzpipe(), rz_path_home(), rz_path_home_prefix(), rz_reg_parse_gdb_profile(), rz_reg_set_profile(), rz_run_config_env(), rz_run_parseline(), rz_str_home(), rzp_open_spawn(), set_color_default(), socket_http_get_recursive(), spp_var_get(), windbg_gcore(), windbg_init(), and windbg_open().

◆ rz_sys_getpid()

int rz_sys_getpid ( void  )

Definition at line 165 of file rz_api.c.

165  {
166 #if __UNIX__
167  return getpid();
168 #elif __WINDOWS__
169  return GetCurrentProcessId();
170 #else
171 #warning rz_sys_getpid not implemented for this platform
172  return -1;
173 #endif
174 }

Referenced by num_callback(), sdb_lock(), and TAG_CALLBACK().

◆ rz_sys_setenv()

int rz_sys_setenv ( const char *  key,
const char *  value 
)

Set an environment variable in the calling process.

Definition at line 103 of file rz_api.c.

103  {
104  if (!key) {
105  return 0;
106  }
107 #if __UNIX__
108  if (!value) {
109  unsetenv (key);
110  return 0;
111  }
112  return setenv (key, value, 1);
113 #elif __WINDOWS__
114  int ret = SetEnvironmentVariableA (key, value);
115  return ret ? 0 : -1;
116 #else
117 #warning rz_sys_setenv : unimplemented for this platform
118  return 0;
119 #endif
120 }
static int value
Definition: cmd_api.c:93

References free(), key, L, LPWSTR, and value.

Referenced by ARG_CALLBACK(), cb_dirhome(), cb_dirtmp(), env(), rcc_next(), rz_cmd_shell_env_handler(), rz_core_cmd_subst_i(), rz_core_config_init(), rz_core_sysenv_begin(), rz_core_sysenv_end(), rz_egg_lang_include_init(), rz_egg_lang_include_path(), rz_main_rz_bin(), rz_run_config_env(), rz_run_parseline(), rz_test_main(), spp_var_set(), TAG_CALLBACK(), and tmpenvs_free().