mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-02-15 03:34:22 +08:00
searchFile: use filenamemcopy
This commit is contained in:
parent
e0cdb5d7a7
commit
31e430744b
2 changed files with 23 additions and 24 deletions
|
@ -662,64 +662,63 @@ int searchAndList(const char *pm3dir, const char *ext) {
|
||||||
return PM3_SUCCESS;
|
return PM3_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *searchFile(const char *pm3dir, const char *ext, const char *filename) {
|
char *searchFile(const char *pm3dir, const char *suffix, const char *preferredName) {
|
||||||
const char *suffix = "";
|
char *filename = filenamemcopy(preferredName, suffix);
|
||||||
if (!str_endswith(filename, ext)) {
|
if (filename == NULL) return NULL;
|
||||||
suffix = ext;
|
|
||||||
}
|
|
||||||
|
|
||||||
// explicit absolute (/) or relative path (./) => try only to match it directly
|
// explicit absolute (/) or relative path (./) => try only to match it directly
|
||||||
if (((strlen(filename) > 1) && (filename[0] == '/')) ||
|
if (((strlen(filename) > 1) && (filename[0] == '/')) ||
|
||||||
((strlen(filename) > 2) && (filename[0] == '.') && (filename[1] == '/')))
|
((strlen(filename) > 2) && (filename[0] == '.') && (filename[1] == '/')))
|
||||||
{
|
{
|
||||||
char *path = malloc(strlen(filename) + strlen(suffix) + 1);
|
if (fileExists(filename))
|
||||||
strcpy(path, filename);
|
return filename;
|
||||||
strcat(path, suffix);
|
|
||||||
if (fileExists(path))
|
|
||||||
return path;
|
|
||||||
else
|
else
|
||||||
free(path);
|
free(filename);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
// else
|
// else
|
||||||
// try pm3 dirs in current workdir (dev mode)
|
// try pm3 dirs in current workdir (dev mode)
|
||||||
const char *exec_path = get_my_executable_directory();
|
const char *exec_path = get_my_executable_directory();
|
||||||
if (exec_path != NULL) {
|
if (exec_path != NULL) {
|
||||||
char *path = malloc(strlen(exec_path) + strlen(pm3dir) + strlen(filename) + strlen(suffix) + 1);
|
char *path = malloc(strlen(exec_path) + strlen(pm3dir) + strlen(filename) + 1);
|
||||||
strcpy(path, exec_path);
|
strcpy(path, exec_path);
|
||||||
strcat(path, pm3dir);
|
strcat(path, pm3dir);
|
||||||
strcat(path, filename);
|
strcat(path, filename);
|
||||||
strcat(path, suffix);
|
if (fileExists(path)) {
|
||||||
if (fileExists(path))
|
free(filename);
|
||||||
return path;
|
return path;
|
||||||
else
|
} else {
|
||||||
free(path);
|
free(path);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// try pm3 dirs in user .proxmark3 (user mode)
|
// try pm3 dirs in user .proxmark3 (user mode)
|
||||||
char *user_path = getenv("HOME");
|
char *user_path = getenv("HOME");
|
||||||
if (user_path != NULL) {
|
if (user_path != NULL) {
|
||||||
char *path = malloc(strlen(user_path) + strlen(PM3_USER_DIRECTORY) + strlen(pm3dir) + strlen(filename) + strlen(suffix) + 1);
|
char *path = malloc(strlen(user_path) + strlen(PM3_USER_DIRECTORY) + strlen(pm3dir) + strlen(filename) + 1);
|
||||||
strcpy(path, user_path);
|
strcpy(path, user_path);
|
||||||
strcat(path, PM3_USER_DIRECTORY);
|
strcat(path, PM3_USER_DIRECTORY);
|
||||||
strcat(path, pm3dir);
|
strcat(path, pm3dir);
|
||||||
strcat(path, filename);
|
strcat(path, filename);
|
||||||
strcat(path, suffix);
|
if (fileExists(path)) {
|
||||||
if (fileExists(path))
|
free(filename);
|
||||||
return path;
|
return path;
|
||||||
else
|
} else {
|
||||||
free(path);
|
free(path);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// try pm3 dirs in pm3 installation dir (install mode)
|
// try pm3 dirs in pm3 installation dir (install mode)
|
||||||
{
|
{
|
||||||
char *path = malloc(strlen(PM3_SHARE_PATH) + strlen(pm3dir) + strlen(filename) + strlen(suffix) + 1);
|
char *path = malloc(strlen(PM3_SHARE_PATH) + strlen(pm3dir) + strlen(filename) + 1);
|
||||||
strcpy(path, PM3_SHARE_PATH);
|
strcpy(path, PM3_SHARE_PATH);
|
||||||
strcat(path, pm3dir);
|
strcat(path, pm3dir);
|
||||||
strcat(path, filename);
|
strcat(path, filename);
|
||||||
strcat(path, suffix);
|
if (fileExists(path)) {
|
||||||
if (fileExists(path))
|
free(filename);
|
||||||
return path;
|
return path;
|
||||||
else
|
} else {
|
||||||
free(path);
|
free(path);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
free(filename);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -161,6 +161,6 @@ int loadFileDICTIONARY(const char *preferredName, void *data, size_t *datalen, u
|
||||||
int convertOldMfuDump(uint8_t **dump, size_t *dumplen);
|
int convertOldMfuDump(uint8_t **dump, size_t *dumplen);
|
||||||
|
|
||||||
int searchAndList(const char *pm3dir, const char *ext);
|
int searchAndList(const char *pm3dir, const char *ext);
|
||||||
char *searchFile(const char *pm3dir, const char *ext, const char *filename);
|
char *searchFile(const char *pm3dir, const char *suffix, const char *preferredName);
|
||||||
|
|
||||||
#endif // FILEUTILS_H
|
#endif // FILEUTILS_H
|
||||||
|
|
Loading…
Reference in a new issue