Merge pull request #156 from sateler/output_stdout

Added option to print to standard output
This commit is contained in:
kernc 2016-08-17 00:56:12 +02:00 committed by GitHub
commit bf02fa123e
3 changed files with 20 additions and 3 deletions

View File

@ -49,6 +49,8 @@ Set ouput log file to \fIlogfile\fR. If no \fB-o\fR option is provided, logkeys
appends to \fI/var/log/logkeys.log\fR file. If \fIlogfile\fR doesn't exist, logkeys
creates the file with 600 permissions.
.IP
To print output to standard output, use '-' as logfile: \fB-o\fR \fI-\fR.
.IP
See also \fBLOGFILE FORMAT\fR section.
.TP

View File

@ -393,6 +393,11 @@ int main(int argc, char **argv)
if (!args.keymap.empty() && (!(args.flags & FLAG_EXPORT_KEYMAP) && args.us_keymap)) { // exporting uses args.keymap also
error(EXIT_FAILURE, 0, "Incompatible flags '-m' and '-u'. See usage.");
}
// check for incompatible flags: if posting remote and output is set to stdout
if (args.post_size != 0 && ( args.logfile == "-" )) {
error(EXIT_FAILURE, 0, "Incompatible flags [--post-size | --post-http] and --output to stdout");
}
set_utf8_locale();
@ -423,7 +428,11 @@ int main(int argc, char **argv)
int noclose = 1; // don't close streams (stderr used)
if (daemon(nochdir, noclose) == -1) // become daemon
error(EXIT_FAILURE, errno, "Failed to become daemon");
close(STDIN_FILENO); close(STDOUT_FILENO); // leave stderr open
close(STDIN_FILENO);
// leave stderr open
if (args.logfile != "-") {
close(STDOUT_FILENO);
}
// open input device for reading
input_fd = open(args.device.c_str(), O_RDONLY);
@ -439,7 +448,13 @@ int main(int argc, char **argv)
// open log file (if file doesn't exist, create it with safe 0600 permissions)
umask(0177);
FILE *out = fopen(args.logfile.c_str(), "a");
FILE *out = NULL;
if (args.logfile == "-") {
out = stdout;
}
else {
out = fopen(args.logfile.c_str(), "a");
}
if (!out)
error(EXIT_FAILURE, errno, "Error opening output file '%s'", args.logfile.c_str());

View File

@ -19,7 +19,7 @@ void usage()
"\n"
" -s, --start start logging keypresses\n"
" -m, --keymap=FILE use keymap FILE\n"
" -o, --output=FILE log output to FILE [" DEFAULT_LOG_FILE "]\n"
" -o, --output=FILE log output to FILE [" DEFAULT_LOG_FILE "] or standard output '-'\n"
" -u, --us-keymap use en_US keymap instead of configured default\n"
" -k, --kill kill running logkeys process\n"
" -d, --device=FILE input event device [eventX from " INPUT_EVENT_PATH "]\n"