@@ -32,7 +32,7 @@ const options_t *options = (const options_t*) &_options; | |||||
void print_usage(void) | void print_usage(void) | ||||
{ | { | ||||
printf("usage: sxiv [-abcfhioqrtvZ] [-A FRAMERATE] [-e WID] [-G GAMMA] " | |||||
printf("usage: sxiv [-abcfhiopqrtvZ] [-A FRAMERATE] [-e WID] [-G GAMMA] " | |||||
"[-g GEOMETRY] [-N NAME] [-n NUM] [-S DELAY] [-s MODE] [-z ZOOM] " | "[-g GEOMETRY] [-N NAME] [-n NUM] [-S DELAY] [-s MODE] [-z ZOOM] " | ||||
"FILES...\n"); | "FILES...\n"); | ||||
} | } | ||||
@@ -72,8 +72,9 @@ void parse_options(int argc, char **argv) | |||||
_options.quiet = false; | _options.quiet = false; | ||||
_options.thumb_mode = false; | _options.thumb_mode = false; | ||||
_options.clean_cache = false; | _options.clean_cache = false; | ||||
_options.private_mode = false; | |||||
while ((opt = getopt(argc, argv, "A:abce:fG:g:hin:N:oqrS:s:tvZz:")) != -1) { | |||||
while ((opt = getopt(argc, argv, "A:abce:fG:g:hin:N:opqrS:s:tvZz:")) != -1) { | |||||
switch (opt) { | switch (opt) { | ||||
case '?': | case '?': | ||||
print_usage(); | print_usage(); | ||||
@@ -129,6 +130,9 @@ void parse_options(int argc, char **argv) | |||||
case 'o': | case 'o': | ||||
_options.to_stdout = true; | _options.to_stdout = true; | ||||
break; | break; | ||||
case 'p': | |||||
_options.private_mode = true; | |||||
break; | |||||
case 'q': | case 'q': | ||||
_options.quiet = true; | _options.quiet = true; | ||||
break; | break; | ||||
@@ -50,6 +50,7 @@ typedef struct { | |||||
bool quiet; | bool quiet; | ||||
bool thumb_mode; | bool thumb_mode; | ||||
bool clean_cache; | bool clean_cache; | ||||
bool private_mode; | |||||
} options_t; | } options_t; | ||||
extern const options_t *options; | extern const options_t *options; | ||||
@@ -3,7 +3,7 @@ | |||||
sxiv \- Simple X Image Viewer | sxiv \- Simple X Image Viewer | ||||
.SH SYNOPSIS | .SH SYNOPSIS | ||||
.B sxiv | .B sxiv | ||||
.RB [ \-abcfhioqrtvZ ] | |||||
.RB [ \-abcfhiopqrtvZ ] | |||||
.RB [ \-A | .RB [ \-A | ||||
.IR FRAMERATE ] | .IR FRAMERATE ] | ||||
.RB [ \-e | .RB [ \-e | ||||
@@ -80,6 +80,9 @@ with | |||||
.B \-i | .B \-i | ||||
sxiv can be used as a visual filter/pipe. | sxiv can be used as a visual filter/pipe. | ||||
.TP | .TP | ||||
.B \-p | |||||
Enable private mode, in which sxiv does not write any cache or temporary files. | |||||
.TP | |||||
.B \-q | .B \-q | ||||
Be quiet, disable warnings to standard error stream. | Be quiet, disable warnings to standard error stream. | ||||
.TP | .TP | ||||
@@ -25,6 +25,7 @@ | |||||
#include <unistd.h> | #include <unistd.h> | ||||
#include <utime.h> | #include <utime.h> | ||||
#include "options.h" | |||||
#include "thumbs.h" | #include "thumbs.h" | ||||
#include "util.h" | #include "util.h" | ||||
@@ -83,6 +84,9 @@ void tns_cache_write(Imlib_Image im, const char *filepath, bool force) | |||||
struct utimbuf times; | struct utimbuf times; | ||||
Imlib_Load_Error err = 0; | Imlib_Load_Error err = 0; | ||||
if (options->private_mode) | |||||
return; | |||||
if (stat(filepath, &fstats) < 0) | if (stat(filepath, &fstats) < 0) | ||||
return; | return; | ||||
@@ -270,7 +274,7 @@ bool tns_load(tns_t *tns, int n, bool force, bool cache_only) | |||||
cache_hit = true; | cache_hit = true; | ||||
} | } | ||||
#if HAVE_LIBEXIF | #if HAVE_LIBEXIF | ||||
} else if (!force) { | |||||
} else if (!force && !options->private_mode) { | |||||
int pw = 0, ph = 0, w, h, x = 0, y = 0; | int pw = 0, ph = 0, w, h, x = 0, y = 0; | ||||
bool err; | bool err; | ||||
float zw, zh; | float zw, zh; | ||||