if (*character == '\x01') *character = '\n';
}
- ~History() {
+ ~History() { try {
for (HIST_ENTRY *history((history_set_pos(0), current_history())); history; history = next_history())
for (char *character(history->line); *character; ++character)
if (*character == '\n') *character = '\x01';
} else {
_assert(write_history(histfile_.c_str()) == 0);
}
- }
+ } catch (const CYException &error) {
+ CYPool pool;
+ std::cout << error.PoolCString(pool) << std::endl;
+ } }
void operator +=(std::string command) {
add_history(command.c_str());
CYConsoleRemapKeys(vi_movement_keymap);
}
+static void CYOutputRun(const std::string &code, bool expand = false) {
+ CYPool pool;
+ Output(Run(pool, client_, code), &std::cout, expand);
+}
+
static void Console(CYOptions &options) {
std::string basedir;
+#ifdef __ANDROID__
+ basedir = "/data/local/tmp";
+#else
if (const char *home = getenv("HOME"))
basedir = home;
else {
passwd = getpwuid(getuid());
basedir = passwd->pw_dir;
}
+#endif
basedir += "/.cycript";
mkdir(basedir.c_str(), 0700);
rl_prep_term_function = CYConsolePrepTerm;
}
+ CYOutputRun("");
+
struct sigaction action;
sigemptyset(&action.sa_mask);
action.sa_handler = &sigint;
std::cout << std::endl;
}
- CYPool pool;
- Output(Run(pool, client_, code), &std::cout, expand);
+ CYOutputRun(code, expand);
}
}
return 0;
}
-int main(int argc, char * const argv[], char const * const envp[]) {
+_visible int main(int argc, char * const argv[], char const * const envp[]) {
try {
return Main(argc, argv, envp);
} catch (const CYException &error) {