mirror of
https://github.com/radareorg/radare2.git
synced 2025-02-13 18:32:56 +00:00
Implement r_file_dirname and support DOS paths in r_file_basename too
This commit is contained in:
parent
1a65e14627
commit
31d1ec7349
@ -462,6 +462,7 @@ R_API int r_file_chmod (const char *file, const char *mod, int recursive);
|
||||
R_API char *r_file_temp (const char *prefix);
|
||||
R_API char *r_file_path(const char *bin);
|
||||
R_API const char *r_file_basename (const char *path);
|
||||
R_API char *r_file_dirname (const char *path);
|
||||
R_API char *r_file_abspath(const char *file);
|
||||
R_API ut8 *r_inflate(const ut8 *src, int srcLen, int *dstLen);
|
||||
R_API ut8 *r_file_gzslurp(const char *str, int *outlen, int origonfail);
|
||||
|
@ -39,12 +39,40 @@ R_API boolt r_file_truncate (const char *filename, ut64 newsize) {
|
||||
return R_TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
Example:
|
||||
str = r_file_basename ("home/inisider/Downloads/user32.dll");
|
||||
// str == user32.dll
|
||||
*/
|
||||
R_API const char *r_file_basename (const char *path) {
|
||||
const char *ptr = strrchr (path, '/');
|
||||
if (ptr) path = ptr + 1;
|
||||
const char *ptr = r_str_rchr (path, NULL, '/');
|
||||
if (ptr) {
|
||||
path = ptr + 1;
|
||||
} else {
|
||||
ptr = r_str_rchr (path, NULL, '\\');
|
||||
if (ptr) path = ptr + 1;
|
||||
}
|
||||
return path;
|
||||
}
|
||||
|
||||
/*
|
||||
Example:
|
||||
str = r_file_basename ("home/inisider/Downloads");
|
||||
// str == "home/inisider/Downloads"
|
||||
free (str);
|
||||
*/
|
||||
R_API char *r_file_dirname (const char *path) {
|
||||
char *newpath = strdup (path);
|
||||
char *ptr = (char*)r_str_rchr (newpath, NULL, '/');
|
||||
if (ptr) {
|
||||
*ptr = 0;
|
||||
} else {
|
||||
ptr = (char*)r_str_rchr (newpath, NULL, '\\');
|
||||
if (ptr) *ptr = 0;
|
||||
}
|
||||
return newpath;
|
||||
}
|
||||
|
||||
R_API boolt r_file_is_regular(const char *str) {
|
||||
struct stat buf = {0};
|
||||
if (!str||!*str)
|
||||
|
Loading…
x
Reference in New Issue
Block a user