Merge pull request #496 from phord/master

Replace mkstemp with std::tmpfile
pull/503/merge
Tim Stack 6 years ago committed by GitHub
commit faf47ca041
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -439,39 +439,28 @@ void rl_callback(void *dummy, readline_curses *rc)
} }
case LNM_EXEC: { case LNM_EXEC: {
char fn_template[PATH_MAX]; auto_mem<FILE> tmpout(fclose);
auto_mem<char> abspath;
auto_fd fd; tmpout = std::tmpfile();
snprintf(fn_template, sizeof(fn_template), if (!tmpout) {
"/%s/lnav-script-out.XXXXXX",
getenv("TMPDIR"));
if ((fd = mkstemp(fn_template)) == -1) {
rc->set_value("Unable to open temporary output file: " + string(strerror(errno))); rc->set_value("Unable to open temporary output file: " + string(strerror(errno)));
} }
else if ((abspath = realpath(fn_template, NULL)) == NULL) {
rc->set_value("Unable to get real path to temporary file");
}
else { else {
auto_fd fd(fileno(tmpout));
auto_fd fd_copy((const auto_fd &) fd); auto_fd fd_copy((const auto_fd &) fd);
char desc[256], timestamp[32]; char desc[256], timestamp[32];
time_t current_time = time(NULL); time_t current_time = time(NULL);
string path_and_args = rc->get_value(); string path_and_args = rc->get_value();
{ lnav_data.ld_output_stack.push(tmpout);
auto_mem<FILE> tmpout(fclose); string result = execute_file(ec, path_and_args);
string::size_type lf_index = result.find('\n');
if ((tmpout = fdopen(fd, "w+")) != NULL) { if (lf_index != string::npos) {
lnav_data.ld_output_stack.push(tmpout); result = result.substr(0, lf_index);
string result = execute_file(ec, path_and_args); }
string::size_type lf_index = result.find('\n'); rc->set_value(result);
if (lf_index != string::npos) { lnav_data.ld_output_stack.pop();
result = result.substr(0, lf_index);
}
rc->set_value(result);
lnav_data.ld_output_stack.pop();
}
}
struct stat st; struct stat st;
@ -493,8 +482,6 @@ void rl_callback(void *dummy, readline_curses *rc)
X, "to close the file")); X, "to close the file"));
} }
} }
remove(abspath.in());
} }
break; break;
} }

Loading…
Cancel
Save