diff options
author | Bert <ber.t@gmx.com> | 2011-05-25 09:23:23 +0200 |
---|---|---|
committer | Bert <ber.t@gmx.com> | 2011-05-25 09:23:23 +0200 |
commit | 2252a0148d11fc988131eb0bf6397453427d67e8 (patch) | |
tree | 7cb4e226e2405b420876709e033a8bcdffa8777c | |
parent | 00e6cd2bd1a7bfc0b9fcbf958cefee07ef41cb71 (diff) |
New option: -n, start at given picture
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | README.md | 1 | ||||
-rw-r--r-- | main.c | 8 | ||||
-rw-r--r-- | options.c | 17 | ||||
-rw-r--r-- | options.h | 3 | ||||
-rw-r--r-- | sxiv.1 | 5 |
6 files changed, 27 insertions, 9 deletions
@@ -1,6 +1,6 @@ all: sxiv -VERSION=git-20110522 +VERSION=git-20110525 CC?=gcc DESTDIR?= @@ -40,6 +40,7 @@ sxiv supports the following command-line options: -f Start in fullscreen mode -g GEOMETRY Set window position and size (see section GEOMETRY SPECIFICATIONS of X(7)) + -n NUM Start at picture NUM -p Pixelize, i.e. turn off image anti-aliasing -q Be quiet, disable warnings -r Search given directories recursively for images @@ -231,14 +231,14 @@ int main(int argc, char **argv) { } } - filecnt = fileidx; - fileidx = 0; - - if (!filecnt) { + if (!fileidx) { fprintf(stderr, "sxiv: no valid image file given, aborting\n"); exit(1); } + filecnt = fileidx; + fileidx = options->startnum < filecnt ? options->startnum : filecnt - 1; + win_init(&win); img_init(&img, &win); @@ -31,7 +31,7 @@ options_t _options; const options_t *options = (const options_t*) &_options; void print_usage() { - printf("usage: sxiv [-cdFfhpqrstvZ] [-g GEOMETRY] [-z ZOOM] FILES...\n"); + printf("usage: sxiv [-cdFfhpqrstvZ] [-g GEOMETRY] [-n NUM] [-z ZOOM] FILES...\n"); } void print_version() { @@ -40,7 +40,9 @@ void print_version() { void parse_options(int argc, char **argv) { float z; - int opt; + int n, opt; + + _options.startnum = 0; _options.scalemode = SCALE_MODE; _options.zoom = 1.0; @@ -55,7 +57,7 @@ void parse_options(int argc, char **argv) { _options.clean_cache = 0; _options.recursive = 0; - while ((opt = getopt(argc, argv, "cdFfg:hpqrstvZz:")) != -1) { + while ((opt = getopt(argc, argv, "cdFfg:hn:pqrstvZz:")) != -1) { switch (opt) { case '?': print_usage(); @@ -78,6 +80,15 @@ void parse_options(int argc, char **argv) { case 'h': print_usage(); exit(0); + case 'n': + if (!sscanf(optarg, "%d", &n) || n < 1) { + fprintf(stderr, "sxiv: invalid argument for option -n: %s\n", + optarg); + exit(1); + } else { + _options.startnum = n - 1; + } + break; case 'p': _options.aa = 0; break; @@ -23,8 +23,9 @@ typedef struct { const char **filenames; - int filecnt; unsigned char from_stdin; + int filecnt; + int startnum; scalemode_t scalemode; float zoom; @@ -6,6 +6,8 @@ sxiv \- Simple (or small or suckless) X Image Viewer .RB [ \-cdFfhpqrstvZ ] .RB [ \-g .IR GEOMETRY ] +.RB [ \-n +.IR NUM ] .RB [ \-z .IR ZOOM ] .IR FILE ... @@ -49,6 +51,9 @@ Set window position and size. See section GEOMETRY SPECIFICATIONS of X(7) for more information on .IR GEOMETRY . .TP +.BI "\-n " NUM +Start at picture number NUM. +.TP .B \-h Print brief usage information to standard output and exit. .TP |