aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--README.md1
-rw-r--r--main.c8
-rw-r--r--options.c17
-rw-r--r--options.h3
-rw-r--r--sxiv.15
6 files changed, 27 insertions, 9 deletions
diff --git a/Makefile b/Makefile
index c1c3169..24574cc 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
all: sxiv
-VERSION=git-20110522
+VERSION=git-20110525
CC?=gcc
DESTDIR?=
diff --git a/README.md b/README.md
index e65bc4b..3dabbd6 100644
--- a/README.md
+++ b/README.md
@@ -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
diff --git a/main.c b/main.c
index 421d14f..344d55a 100644
--- a/main.c
+++ b/main.c
@@ -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);
diff --git a/options.c b/options.c
index 0644363..b2b3a14 100644
--- a/options.c
+++ b/options.c
@@ -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;
diff --git a/options.h b/options.h
index f465855..0c62986 100644
--- a/options.h
+++ b/options.h
@@ -23,8 +23,9 @@
typedef struct {
const char **filenames;
- int filecnt;
unsigned char from_stdin;
+ int filecnt;
+ int startnum;
scalemode_t scalemode;
float zoom;
diff --git a/sxiv.1 b/sxiv.1
index 6c4fb3b..c5dce3b 100644
--- a/sxiv.1
+++ b/sxiv.1
@@ -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