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>
This commit is contained in:
N-R-K 2021-09-21 05:11:47 +06:00 committed by GitHub
parent 3234b0e521
commit 63972db743
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 8 additions and 2 deletions

View file

@ -59,7 +59,7 @@ bool cg_quit(arg_t _)
if (options->to_stdout && markcnt > 0) { if (options->to_stdout && markcnt > 0) {
for (i = 0; i < filecnt; i++) { for (i = 0; i < filecnt; i++) {
if (files[i].flags & FF_MARK) if (files[i].flags & FF_MARK)
printf("%s\n", files[i].name); printf("%s%c", files[i].name, options->stdout_separator);
} }
} }
exit(EXIT_SUCCESS); exit(EXIT_SUCCESS);

View file

@ -268,6 +268,7 @@ struct opt {
char **filenames; char **filenames;
bool from_stdin; bool from_stdin;
bool to_stdout; bool to_stdout;
char stdout_separator;
bool recursive; bool recursive;
int filecnt; int filecnt;
int startnum; int startnum;

View file

@ -52,6 +52,7 @@ void parse_options(int argc, char **argv)
_options.from_stdin = false; _options.from_stdin = false;
_options.to_stdout = false; _options.to_stdout = false;
_options.stdout_separator = '\n';
_options.recursive = false; _options.recursive = false;
_options.startnum = 0; _options.startnum = 0;
@ -75,7 +76,7 @@ void parse_options(int argc, char **argv)
_options.clean_cache = false; _options.clean_cache = false;
_options.private_mode = 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) { switch (opt) {
case '?': case '?':
print_usage(); print_usage();
@ -128,6 +129,10 @@ void parse_options(int argc, char **argv)
case 'N': case 'N':
_options.res_name = optarg; _options.res_name = optarg;
break; break;
case '0':
_options.stdout_separator = '\0';
/* -0 implies -o */
/* fall through */
case 'o': case 'o':
_options.to_stdout = true; _options.to_stdout = true;
break; break;