FreeBSD Manual Pages
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)
NAME | SYNOPSIS | DESCRIPTION | NUMBERS | BUFFERS | STRINGS | LISTS | MEMORY | FILES | HEX | BASE64 | TABLES | GRAPHS | QUEUES | STACKS | TIME | LOGGING | EXAMPLES | SEE ALSO
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>
