@@ -35,6 +35,7 @@ sxiv supports the following command-line options: | |||||
-p pixelize, i.e. turn off image anti-aliasing | -p pixelize, i.e. turn off image anti-aliasing | ||||
-s scale all images to fit into window | -s scale all images to fit into window | ||||
-v print version information and exit | -v print version information and exit | ||||
-W enable printing of warnings | |||||
-w WIDTHxHEIGHT | -w WIDTHxHEIGHT | ||||
set window width to WIDTH and height to HEIGHT | set window width to WIDTH and height to HEIGHT | ||||
(if HEIGHT is omitted, height is also set to WIDTH) | (if HEIGHT is omitted, height is also set to WIDTH) | ||||
@@ -23,7 +23,6 @@ | |||||
#include "sxiv.h" | #include "sxiv.h" | ||||
#include "image.h" | #include "image.h" | ||||
#include "options.h" | |||||
int zl_cnt; | int zl_cnt; | ||||
float zoom_min; | float zoom_min; | ||||
@@ -26,7 +26,6 @@ | |||||
#include "sxiv.h" | #include "sxiv.h" | ||||
#include "image.h" | #include "image.h" | ||||
#include "options.h" | |||||
#include "window.h" | #include "window.h" | ||||
void on_keypress(XEvent*); | void on_keypress(XEvent*); | ||||
@@ -29,7 +29,7 @@ options_t _options; | |||||
const options_t *options = (const options_t*) &_options; | const options_t *options = (const options_t*) &_options; | ||||
void print_usage() { | void print_usage() { | ||||
printf("usage: sxiv [-dfhpsvZ] [-w WIDTH[xHEIGHT]] [-z ZOOM] FILES...\n"); | printf("usage: sxiv [-dfhpsvWZ] [-w WIDTH[xHEIGHT]] [-z ZOOM] FILES...\n"); | ||||
} | } | ||||
void print_version() { | void print_version() { | ||||
@@ -50,7 +50,9 @@ void parse_options(int argc, char **argv) { | |||||
_options.winh = h = 0; | _options.winh = h = 0; | ||||
_options.fullscreen = 0; | _options.fullscreen = 0; | ||||
while ((opt = getopt(argc, argv, "dfhpsvw:Zz:")) != -1) { | _options.warn = 0; | ||||
while ((opt = getopt(argc, argv, "dfhpsvWw:Zz:")) != -1) { | |||||
switch (opt) { | switch (opt) { | ||||
case '?': | case '?': | ||||
print_usage(); | print_usage(); | ||||
@@ -73,6 +75,9 @@ void parse_options(int argc, char **argv) { | |||||
case 'v': | case 'v': | ||||
print_version(); | print_version(); | ||||
exit(0); | exit(0); | ||||
case 'W': | |||||
_options.warn = 1; | |||||
break; | |||||
case 'w': | case 'w': | ||||
if (!sscanf(optarg, "%hux%hu", &w, &h)) { | if (!sscanf(optarg, "%hux%hu", &w, &h)) { | ||||
fprintf(stderr, "sxiv: invalid argument for option -w: %s\n", | fprintf(stderr, "sxiv: invalid argument for option -w: %s\n", | ||||
@@ -32,6 +32,8 @@ typedef struct options_s { | |||||
int winw; | int winw; | ||||
int winh; | int winh; | ||||
unsigned char fullscreen; | unsigned char fullscreen; | ||||
unsigned char warn; | |||||
} options_t; | } options_t; | ||||
extern const options_t *options; | extern const options_t *options; | ||||
@@ -3,7 +3,7 @@ | |||||
sxiv \- Simple (or small or suckless) X Image Viewer | sxiv \- Simple (or small or suckless) X Image Viewer | ||||
.SH SYNOPSIS | .SH SYNOPSIS | ||||
.B sxiv | .B sxiv | ||||
.RB [ \-dfhpsvZ ] | .RB [ \-dfhpsvWZ ] | ||||
.RB [ \-w | .RB [ \-w | ||||
.IB WIDTH x HEIGHT | .IB WIDTH x HEIGHT | ||||
] | ] | ||||
@@ -36,6 +36,9 @@ Scale all images to fit into window. | |||||
.B \-v | .B \-v | ||||
Print version information to standard output and exit. | Print version information to standard output and exit. | ||||
.TP | .TP | ||||
.B \-W | |||||
Enable printing of warnings to standard error stream. | |||||
.TP | |||||
.BI "\-w " WIDTH x HEIGHT | .BI "\-w " WIDTH x HEIGHT | ||||
Set window width to | Set window width to | ||||
.I WIDTH | .I WIDTH | ||||
@@ -20,26 +20,29 @@ | |||||
#define SXIV_H | #define SXIV_H | ||||
#include "config.h" | #include "config.h" | ||||
#include "options.h" | |||||
#define ABS(a) ((a) < 0 ? (-(a)) : (a)) | #define ABS(a) ((a) < 0 ? (-(a)) : (a)) | ||||
#define MIN(a,b) ((a) < (b) ? (a) : (b)) | #define MIN(a,b) ((a) < (b) ? (a) : (b)) | ||||
#define MAX(a,b) ((a) > (b) ? (a) : (b)) | #define MAX(a,b) ((a) > (b) ? (a) : (b)) | ||||
#define WARN(...) \ | #define WARN(...) \ | ||||
do { \ | do { \ | ||||
fprintf(stderr, "sxiv: %s:%d: warning: ", __FILE__, __LINE__); \ | if (options->warn) { \ | ||||
fprintf(stderr, __VA_ARGS__); \ | fprintf(stderr, "sxiv: %s:%d: warning: ", __FILE__, __LINE__); \ | ||||
fprintf(stderr, "\n"); \ | fprintf(stderr, __VA_ARGS__); \ | ||||
} while (0) | fprintf(stderr, "\n"); \ | ||||
} \ | |||||
} while (0) | |||||
#define DIE(...) \ | #define DIE(...) \ | ||||
do { \ | do { \ | ||||
fprintf(stderr, "sxiv: %s:%d: error: ", __FILE__, __LINE__); \ | fprintf(stderr, "sxiv: %s:%d: error: ", __FILE__, __LINE__); \ | ||||
fprintf(stderr, __VA_ARGS__); \ | fprintf(stderr, __VA_ARGS__); \ | ||||
fprintf(stderr, "\n"); \ | fprintf(stderr, "\n"); \ | ||||
cleanup(); \ | cleanup(); \ | ||||
exit(1); \ | exit(1); \ | ||||
} while (0) | } while (0) | ||||
void cleanup(); | void cleanup(); | ||||
@@ -24,7 +24,6 @@ | |||||
#include <X11/cursorfont.h> | #include <X11/cursorfont.h> | ||||
#include "sxiv.h" | #include "sxiv.h" | ||||
#include "options.h" | |||||
#include "window.h" | #include "window.h" | ||||
static Cursor arrow; | static Cursor arrow; | ||||