29 #define __UPX_UTIL_H 1 35 #define New(type, n) new type[mem_size_get_n(sizeof(type), n)] 37 upx_rsize_t mem_size(upx_uint64_t element_size, upx_uint64_t n, upx_uint64_t extra1 = 0,
38 upx_uint64_t extra2 = 0);
39 upx_rsize_t mem_size_get_n(upx_uint64_t element_size, upx_uint64_t n);
41 inline void mem_size_assert(upx_uint64_t element_size, upx_uint64_t n, upx_uint64_t extra1 = 0,
42 upx_uint64_t extra2 = 0) {
43 (void) mem_size(element_size, n, extra1, extra2);
46 bool mem_size_valid(upx_uint64_t element_size, upx_uint64_t n, upx_uint64_t extra1 = 0,
47 upx_uint64_t extra2 = 0);
48 bool mem_size_valid_bytes(upx_uint64_t bytes);
50 int ptr_diff(
const void *p1,
const void *p2);
51 unsigned ptr_udiff(
const void *p1,
const void *p2);
57 char *fn_basename(
const char *name);
58 int fn_strcmp(
const char *n1,
const char *n2);
59 char *fn_strlwr(
char *n);
60 bool fn_has_ext(
const char *name,
const char *ext,
bool ignore_case =
true);
62 bool file_exists(
const char *name);
63 bool maketempname(
char *ofilename,
size_t size,
const char *ifilename,
const char *ext,
65 bool makebakname(
char *ofilename,
size_t size,
const char *ifilename,
bool force =
true);
67 unsigned get_ratio(upx_uint64_t u_len, upx_uint64_t c_len);
68 bool set_method_name(
char *buf,
size_t size,
int method,
int level);
69 void center_string(
char *buf,
size_t size,
const char *s);
71 int find(
const void *b,
int blen,
const void *what,
int wlen);
72 int find_be16(
const void *b,
int blen,
unsigned what);
73 int find_be32(
const void *b,
int blen,
unsigned what);
74 int find_be64(
const void *b,
int blen, upx_uint64_t what);
75 int find_le16(
const void *b,
int blen,
unsigned what);
76 int find_le32(
const void *b,
int blen,
unsigned what);
77 int find_le64(
const void *b,
int blen, upx_uint64_t what);
79 int mem_replace(
void *b,
int blen,
const void *what,
int wlen,
const void *r);