binfmt: remove file_ioctl and get filename by strrchr

Signed-off-by: Jiuzhu Dong <dongjiuzhu1@xiaomi.com>
This commit is contained in:
Jiuzhu Dong
2021-08-31 15:58:16 +08:00
committed by Xiang Xiao
parent 6df9d1907c
commit 2cfda2bffd
+5 -13
View File
@@ -78,6 +78,7 @@ static int builtin_loadbinary(FAR struct binary_s *binp,
int nexports) int nexports)
{ {
FAR const struct builtin_s *builtin; FAR const struct builtin_s *builtin;
FAR char *name;
struct file file; struct file file;
int index; int index;
int ret; int ret;
@@ -93,22 +94,13 @@ static int builtin_loadbinary(FAR struct binary_s *binp,
return ret; return ret;
} }
/* If this file is a BINFS file system, then we can recover the name of name = strrchr(filename, '/');
* the file using the FIOC_FILENAME ioctl() call. if (name != NULL)
*/
ret = file_ioctl(&file, FIOC_FILENAME,
(unsigned long)((uintptr_t)&filename));
if (ret < 0)
{ {
berr("ERROR: FIOC_FILENAME ioctl failed: %d\n", ret); filename = name + 1;
file_close(&file);
return ret;
} }
/* Other file systems may also support FIOC_FILENAME, so the real proof /* Looking up the index to this name in g_builtins[] */
* is that we can look up the index to this name in g_builtins[].
*/
index = builtin_isavail(filename); index = builtin_isavail(filename);
if (index < 0) if (index < 0)