Fix stdin mim

This commit is contained in:
zawz 2020-02-18 16:50:18 +01:00
parent 6ff844b772
commit 92cf2c603c

View file

@ -14,7 +14,7 @@
#include <ztd/options.hpp> #include <ztd/options.hpp>
#include <ztd/shell.hpp> #include <ztd/shell.hpp>
#define VERSION_STRING "v1.3" #define VERSION_STRING "v1.3.1a"
ztd::option_set options; ztd::option_set options;
@ -72,7 +72,29 @@ void load_filedat(ztd::filedat& file, bool from_stdin, std::string const& path)
if(from_stdin) if(from_stdin)
{ {
log("Loading map from stdin\n"); log("Loading map from stdin\n");
file.import_stdin(); file.setFilePath(path);
std::string str=file_strimport(path);
if(options.find("zfd")->activated)
{
file.data() = str;
}
else if(options.find("mim")->activated)
{
file.data() = mimtochk(str);
}
else
{
if(is_mim(str))
{
file.data() = mimtochk(str);
}
else
{
file.data() = str;
}
}
} }
else else
{ {
@ -119,6 +141,7 @@ int main(int argc, char* argv[])
signal(SIGCHLD, SIG_IGN); //not expecting returns from child processes signal(SIGCHLD, SIG_IGN); //not expecting returns from child processes
bool autoreload=true; bool autoreload=true;
bool from_stdin=false;
options.add(ztd::option("\r [Help]")); options.add(ztd::option("\r [Help]"));
options.add(ztd::option('h',"help", false, "Display this help message")); options.add(ztd::option('h',"help", false, "Display this help message"));
@ -229,11 +252,9 @@ int main(int argc, char* argv[])
//no argument: display help //no argument: display help
ztd::filedat file; ztd::filedat file;
bool no_arg=false;
std::string filepath; std::string filepath;
if (arg.size() <= 0 || arg[0] == "") if (arg.size() <= 0 || arg[0] == "")
{ {
no_arg=true;
help(); help();
stop(0); stop(0);
} }
@ -242,13 +263,16 @@ int main(int argc, char* argv[])
filepath=arg[0]; filepath=arg[0];
} }
if(filepath == "-") if(filepath == "-")
{
filepath = "/dev/stdin"; filepath = "/dev/stdin";
from_stdin = true;
}
//main processing //main processing
try try
{ {
//load //load
load_filedat(file, no_arg, filepath); load_filedat(file, from_stdin, filepath);
//output //output
if(options.find('o')->activated) if(options.find('o')->activated)
{ {
@ -264,8 +288,6 @@ int main(int argc, char* argv[])
//create commands //create commands
load_commands(file.data()); load_commands(file.data());
autoreload = autoreload && !no_arg;
//main loop //main loop
log("Starting scan for devices\n"); log("Starting scan for devices\n");
if(autoreload) if(autoreload)
@ -277,7 +299,7 @@ int main(int argc, char* argv[])
log("Reloading file\n"); log("Reloading file\n");
try try
{ {
load_filedat(file, false, filepath); load_filedat(file, from_stdin, filepath);
load_commands(file.data()); load_commands(file.data());
bak_data = file.data(); bak_data = file.data();
} }