Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
R_UTIL(3)		     Library Functions Manual		       R_UTIL(3)

NAME
     r_util -- radare2 utility library

SYNOPSIS
     #include <r_util.h>

DESCRIPTION
     The r_util library provides a comprehensive collection of utility functions
     for  radare2, including number parsing, string manipulation, buffer manage-
     ment, memory operations, file handling, and  various  data  structures.  It
     serves as the foundation for many other radare2 libraries.

NUMBERS
     Parse and format numeric values, convert textual representations into inte-
     gers, recognize human-friendly unit suffixes, and evaluate simple mathemat-
     ical expressions. Useful for configuration parsing, user input handling and
     preparing numbers for display.

     RNum * r_num_new(RNumCallback cb, RNumCallback2 cb2, void *ptr)

     Creates a new number parsing context with custom callbacks.

     ut64 r_num_get(RNum *num, const char *str)

     Parses a string into a 64-bit unsigned integer, supporting various formats.

     ut64 r_num_math(RNum *num, const char *str)

     Evaluates mathematical expressions in strings.

     char * r_num_units(char *buf, size_t len, ut64 number)

     Formats a number with appropriate units (KB, MB, etc.).

BUFFERS
     Create  and  manipulate  in-memory  buffers  that support reading, writing,
     seeking and size queries a handy for temporary storage, streaming data  be-
     tween components, or abstracting underlying storage.

     RBuffer * r_buf_new(void)

     Creates a new buffer.

     st64 r_buf_read(RBuffer *b, ut8 *buf, ut64 len)

     Reads data from a buffer.

     st64 r_buf_write(RBuffer *b, const ut8 *buf, ut64 len)

     Writes data to a buffer.

     st64 r_buf_seek(RBuffer *b, st64 addr, int whence)

     Seeks to a position in the buffer.

     ut64 r_buf_size(RBuffer *b)

     Returns the size of the buffer.

STRINGS
     Common string helpers for allocation, concatenation, searching, replacement
     and splitting. They make safe text manipulation and higher-level processing
     simpler and less error-prone.

     char * r_str_new(const char *str)

     Creates a new string (duplicate).

     char * r_str_append(char *str, const char *new)

     Appends a string to another.

     bool r_str_startswith(const char *str, const char *needle)

     Checks if a string starts with a prefix.

     char  * r_str_replace(char *str, const char *find, const char *replace, int
     *count)

     Replaces substrings in a string.

     RList * r_str_split_list(char *str, const char *c, int n)

     Splits a string into a list.

LISTS
     Lightweight linked-list utilities for  creating,  appending,  indexing  and
     querying  lists  of pointers. Use these when a simple ordered collection is
     sufficient.

     RList * r_list_new(void)

     Creates a new linked list.

     void r_list_append(RList *list, void *data)

     Appends data to a list.

     void * r_list_get_n(RList *list, int n)

     Gets the nth element from a list.

     int r_list_length(RList *list)

     Returns the length of a list.

MEMORY
     Convenience wrappers for allocating, duplicating and comparing  raw  memory
     blocks.  These  helpers  centralize routine memory tasks and can be adapted
     for custom allocator hooks or debugging instrumentation.

     void * r_mem_alloc(size_t sz)

     Allocates memory.

     void * r_mem_dup(const void *src, size_t len)

     Duplicates memory.

     int r_mem_cmp(const void *a, const void *b, size_t len)

     Compares memory regions.

FILES
     Simple filesystem helpers to check existence, read entire files  into  mem-
     ory, and write buffers to disk. Intended for straightforward file I/O needs
     in tools and utilities.

     bool r_file_exists(const char *str)

     Checks if a file exists.

     char * r_file_slurp(const char *str, size_t *usz)

     Reads an entire file into memory.

     bool r_file_dump(const char *file, const ut8 *buf, int len, bool append)

     Writes data to a file.

HEX
     Routines to convert between hexadecimal text and binary data, commonly used
     when presenting or parsing hex-encoded blobs.

     int r_hex_str2bin(const char *str, ut8 *buf)

     Converts a hex string to binary.

     char * r_hex_bin2str(const ut8 *bin, int len)

     Converts binary data to a hex string.

BASE64
     Utilities	to  encode  binary data to base64 and decode it back, useful for
     transporting or embedding binary content in text contexts.

     char * r_base64_encode(const ut8 *bin, int len)

     Encodes data to base64.

     ut8 * r_base64_decode(const char *str, int *olen)

     Decodes base64 data.

TABLES
     Helpers for building textual tables: create table objects, add columns  and
     rows,  and  format  output for display when presenting structured, columnar
     data.

     RTable * r_table_new(void)

     Creates a new table.

     void  r_table_add_column(RTable  *t,  RTableColumnType  *type,  const  char
     *name, int maxwidth)

     Adds a column to a table.

     void r_table_add_row(RTable *t, const char *name, ...)

     Adds a row to a table.

GRAPHS
     APIs  to build and traverse basic graph structures made of nodes and edges.
     Suitable  for  representing  relationships,  control-flow,  or   dependency
     graphs.

     RGraph * r_graph_new(void)

     Creates a new graph.

     RGraphNode * r_graph_add_node(RGraph *graph, void *data)

     Adds a node to a graph.

     void r_graph_add_edge(RGraph *graph, RGraphNode *from, RGraphNode *to)

     Adds an edge between nodes.

QUEUES
     A compact FIFO queue API for enqueuing and dequeuing pointer elements; use-
     ful in producer/consumer patterns and simple task scheduling.

     RQueue * r_queue_new(int n)

     Creates a new queue.

     void r_queue_enqueue(RQueue *q, void *el)

     Enqueues an element.

     void * r_queue_dequeue(RQueue *q)

     Dequeues an element.

STACKS
     A	lightweight  LIFO  stack  API  for pushing and popping pointer elements,
     handy for depth-first traversals, undo stacks and transient state storage.

     RStack * r_stack_new(ut32 n)

     Creates a new stack.

     void r_stack_push(RStack *s, void *el)

     Pushes an element onto the stack.

     void * r_stack_pop(RStack *s)

     Pops an element from the stack.

TIME
     Helpers to obtain timestamps and format  them  as	human-readable	strings,
     used for logging, profiling and displaying time-related information.

     ut64 r_time_now(void)

     Gets the current time in microseconds.

     char * r_time_stamp_to_str(ut64 ts)

     Converts a timestamp to a string.

LOGGING
     Minimal logging helpers to emit error and informational messages, acting as
     thin wrappers for diagnostics and user-facing feedback.

     void r_log_error(const char *fmt, ...)

     Logs an error message.

     void r_log_info(const char *fmt, ...)

     Logs an info message.

EXAMPLES
     Number parsing:

	   RNum *num = r_num_new(NULL, NULL, NULL);
	   ut64 val = r_num_get(num, "0x100");
	   r_num_free(num);

     String manipulation:

	   char *str = r_str_new("hello");
	   str = r_str_append(str, " world");

     Buffer operations:

	   RBuffer *buf = r_buf_new();
	   r_buf_write(buf, data, len);
	   ut8 *read_data = malloc(len);
	   r_buf_read(buf, read_data, len);

     List usage:

	   RList *list = r_list_new();
	   r_list_append(list, item);
	   void *first = r_list_get_n(list, 0);

SEE ALSO
     r_types(3)

FreeBSD ports 15.quarterly     September 20, 2025		       R_UTIL(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=r_util&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help