aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorN-R-K <79544946+N-R-K@users.noreply.github.com>2021-09-21 05:11:47 +0600
committerGitHub <noreply@github.com>2021-09-20 23:11:47 +0000
commit63972db743398a4c2f0159110f5e14fb1effb6d5 (patch)
tree31be25daaa0278f0fb153b3d703f39501c76866a
parent3234b0e521cca006a94cb135a88d146122d7f66d (diff)
add -0 for outputting null-terminated list (#68)
* add -0 for outputting null-terminated list this doesn't add much, if any, additional complexity to the codebase and can be quite handy for scripting purposes. Closes: https://github.com/nsxiv/nsxiv/issues/67 * Fix typo Co-authored-by: Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr>
-rw-r--r--commands.c2
-rw-r--r--nsxiv.h1
-rw-r--r--options.c7
3 files changed, 8 insertions, 2 deletions
diff --git a/commands.c b/commands.c
index aad2c3c..15859fa 100644
--- a/commands.c
+++ b/commands.c
@@ -59,7 +59,7 @@ bool cg_quit(arg_t _)
if (options->to_stdout && markcnt > 0) {
for (i = 0; i < filecnt; i++) {
if (files[i].flags & FF_MARK)
- printf("%s\n", files[i].name);
+ printf("%s%c", files[i].name, options->stdout_separator);
}
}
exit(EXIT_SUCCESS);
diff --git a/nsxiv.h b/nsxiv.h
index 0a3bff1..be7ffe6 100644
--- a/nsxiv.h
+++ b/nsxiv.h
@@ -268,6 +268,7 @@ struct opt {
char **filenames;
bool from_stdin;
bool to_stdout;
+ char stdout_separator;
bool recursive;
int filecnt;
int startnum;
diff --git a/options.c b/options.c
index 31cfa39..d46bac8 100644
--- a/options.c
+++ b/options.c
@@ -52,6 +52,7 @@ void parse_options(int argc, char **argv)
_options.from_stdin = false;
_options.to_stdout = false;
+ _options.stdout_separator = '\n';
_options.recursive = false;
_options.startnum = 0;
@@ -75,7 +76,7 @@ void parse_options(int argc, char **argv)
_options.clean_cache = false;
_options.private_mode = false;
- while ((opt = getopt(argc, argv, "A:abce:fG:g:hin:N:opqrS:s:T:tvZz:")) != -1) {
+ while ((opt = getopt(argc, argv, "A:abce:fG:g:hin:N:0opqrS:s:T:tvZz:")) != -1) {
switch (opt) {
case '?':
print_usage();
@@ -128,6 +129,10 @@ void parse_options(int argc, char **argv)
case 'N':
_options.res_name = optarg;
break;
+ case '0':
+ _options.stdout_separator = '\0';
+ /* -0 implies -o */
+ /* fall through */
case 'o':
_options.to_stdout = true;
break;