Add slash to dir options and replace slashes with backslash on windows when loading file
This commit is contained in:
parent
d4897432a1
commit
3c49d9387a
1 changed files with 16 additions and 7 deletions
|
@ -2742,19 +2742,23 @@ static void server_params_parse(int argc, char ** argv, server_params & sparams,
|
||||||
invalid_param = true;
|
invalid_param = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
char *name = argv[i];
|
std::string name = argv[i];
|
||||||
|
|
||||||
if (++i >= argc) {
|
if (++i >= argc) {
|
||||||
invalid_param = true;
|
invalid_param = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
size_t slen = strlen(argv[i]);
|
std::string fname = argv[i];
|
||||||
|
|
||||||
|
size_t slen = fname.length();
|
||||||
bool is_dir = slen < 5 || strncmp(argv[i] + slen - 5, ".gguf", 5) != 0;
|
bool is_dir = slen < 5 || strncmp(argv[i] + slen - 5, ".gguf", 5) != 0;
|
||||||
|
|
||||||
// Append path separator for dirs
|
// Append path separator for dir names
|
||||||
std::string fname = argv[i];
|
|
||||||
if (is_dir && argv[i][slen - 1] != '/')
|
if (is_dir && argv[i][slen - 1] != '/')
|
||||||
fname += '/';
|
fname += '/';
|
||||||
sparams.control_vector_load_options.push_back({ argv[i-1], fname, is_dir });
|
if (is_dir && argv[i-1][slen - 1] != '/')
|
||||||
|
name += '/';
|
||||||
|
sparams.control_vector_load_options.push_back({ name, fname, is_dir });
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr, "error: unknown argument: %s\n", arg.c_str());
|
fprintf(stderr, "error: unknown argument: %s\n", arg.c_str());
|
||||||
|
@ -3260,8 +3264,13 @@ int main(int argc, char ** argv) {
|
||||||
}
|
}
|
||||||
if (opt.is_dir && v.fname.rfind(opt.name, 0) == 0) {
|
if (opt.is_dir && v.fname.rfind(opt.name, 0) == 0) {
|
||||||
std::cout << "file exact match\n";
|
std::cout << "file exact match\n";
|
||||||
// opt.fname already includes '/' (or '\') while opt.name doesn't
|
real_fname = opt.fname + v.fname.substr(opt.name.length());
|
||||||
real_fname = opt.fname + v.fname.substr(opt.name.length() + 1);
|
#if defined(_WIN32)
|
||||||
|
std::replace(real_fname.begin(), real_fname.end(), '/', '\\');
|
||||||
|
#endif
|
||||||
|
size_t len = real_fname.length();
|
||||||
|
if (len < 5 || real_fname.compare(len - 5, 5, ".gguf") != 0)
|
||||||
|
real_fname += ".gguf";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue