* Changes between versions -*- mode:indented-text; mode:outline-minor -*- This file (NEWS) documents the significant changes between all versions of zgv, with the newest changes first. * Changes in zgv 5.9 ** New features Added SDL mouse support. Thanks to Dimitar Zhekov for this. ** Bugfixes Added width/height limits to all picture readers, 32767x32765 is now the maximum image size supported (essentially consistent with xzgv). This is a crude (albeit effective) fix for several reported overflow bugs, which had previously meant that zgv could be exploited to run commands as the user when viewing a maliciously-formatted file. Thanks to Luke Macken for letting me know about the problems. I suppose I should also thank "infamous41md" for publishing the original advisory/exploit, even if he didn't bother emailing me or anything. Added more multiple-image GIF brokenness checks than before. Previously it was possible to get a segfault with the `right' file, despite there already being various range checks. Thanks to Mikulas Patocka for spotting this. Fixed a problem with freeing memory when a GIF fails to load. Thanks to Mikulas Patocka for the fix. Fixed a possible hang when reading GIF files with corrupted extension blocks. Thanks to Mikulas Patocka for finding this. Fixed a possible hang when reading corrupted non-raw PBM files. The SDL backend previously had a timer-related bug which could cause some odd problems. Thanks to Dimitar Zhekov for spotting this one. ** Other changes The `fullscreen' option now defaults to on, so you now have to use `--fullscreen=off' (or similar config file option) to disable it. This keeps the SDL backend's behaviour closer to the svgalib one. * Changes in zgv 5.8 ** New features Added FreeBSD support, thanks to Radim Kolar for contributing this. Be sure to read INSTALL in full before building zgv on FreeBSD, there's a minor problem with it at the moment (nothing too horrible though :-)). Added support for dithering in 15/16-bit modes. It's slower than I'd hoped, so it's not enabled by default, but it seems to work well enough. You can toggle it in the viewer by pressing `F', or add `dither-hicol on' to a config file. Thanks to Stephane ODUL for suggesting this. Added `fullscreen' option, to override possible use of a windowed display with non-svgalib backends in some situations, the obvious example being the SDL backend running under X. This isn't necessarily what you'd want, and has problems like not being able to fill the screen in modes it doesn't support natively under svgalib. (And SDL can cause further problems, from what I've seen.) ** Bugfixes Fixed long-standing bug with interpolation (fix ported from xzgv). In xzgv the bug could have caused segfaults, but I don't believe this was the case in zgv due to the way it allocates memory. Added SDL getbox routine, fixing one of the display glitches when using that (dialogs not restoring previous screen contents). Fixed missing-picture-update bug when doing certain mode changes under SDL. The SDL backend will now only ever use SDL's non-native-depth mode emulation for 8-bit modes. This should improve picture quality when only 8-bit modes are available, and make all modes other than 24/32-bit quite a bit faster. Thanks to David Matthews for inspiring this change. The SDL backend is now a lot more sensible about automatically picking a file selector mode, and should have a better chance of working when using a single-mode VESA framebuffer. Thanks to David Matthews for indirectly spotting this problem. Added timer start/stop to backend code, so now timer-based stuff (most notably GIF animation) works ok under SDL. Fixed colour glitches in dialogs under SDL. ** Other changes Finally changed default installation prefix to /usr/local. `make install' now removes any old version (both program and documentation) in the old default locations. Removed embedded LFs from src/bdf2h.c, which were causing compilation errors with newer versions of gcc. Not strictly a bug - blame the gcc folks :-), though to be fair there had been plenty of advance warning. Thanks to Dimitar Zhekov for the patch. Moved `fake-cols' toggle key from `F' to `G'. Removed support for a repeat-timer setting of "-1" (i.e. constantly reload the image), which had been broken previously anyway. `x' now aborts GIF animation like Esc does. Thanks to Thomas M. Ott for pointing out the inconsistency. Note that I don't consider supporting this slightly pointless alternative to Esc to be terribly important (e.g. dialogs don't support it and never have, and they've been in zgv since 1993), and couldn't add it everywhere even if I wanted to (e.g. change-to-arbitrary-directory dialog). * Changes in zgv 5.7 ** New features Added support for display backends other than svgalib; currently SDL is supported. (There are still problems with this - e.g. graphical glitches with dialog boxes, and broken GIF animation - but it seems to be mostly working.) Alternative backends are by definition never going to be *better* than native svgalib, but if you somehow can't use svgalib then at least this gives you a way of running zgv. Note that you have to compile a separate zgv executable for each backend, and only the svgalib one is compiled by default. New `--auto-mode-fit-diff' option, allows you to specify a pixel width/height to be disregarded when zgv picks a mode to use and auto-mode-fit is enabled. So e.g. a 330x250 image would be shown in 320x240 mode if auto-mode-fit-diff is 10. Thanks to Dimitar Zhekov for this. ** Bugfixes 32-bit modes can now be specified on the command-line (they couldn't previously). Thanks to "kscott" for spotting this one. Fixed mouse cursor appearance in 32-bit modes. Thanks to Dimitar Zhekov for the patch. No longer sets background colour to black for 1-bit mono PNG files, where this sometimes caused problems. Thanks to Morten Bo Johansen for spotting this. ** Other changes Restored documentation for `-r', `-s', and `-w' options, which was mistakenly dropped when I added long-option support. * Changes in zgv 5.6 ** New features New `-A' or `--auto-animate' option, forces the viewer to automatically animate multiple-image GIF files. Thanks to John Fitzgerald for suggesting this (more or less). It limits your viewing options greatly, of course (since it's like pressing `e' every time you view one, and exiting the image when you exit the animation), but can be handy for slideshows etc. When this option is enabled, you can use Backspace/Enter/Space for file navigation/tagging during an animation. (The skip-to-next-frame key (previously Enter) is now `n'.) Added multi-file delete. This is on `D', by analogy with `C' and `M' for copy/move (since it works the same way) - the single-file-only delete remains available on the Delete key. A new config variable `delete-tagged-prompt' says whether to prompt before deleting all tagged files (enabled by default). Thanks to Max Drozdoff for prodding me into action on this. :-) ** Bugfixes In the very unusual case of both global and local GIF colourmaps being present, they were applied in the wrong order. Thanks to Michal Svec for spotting this. Should now support 16-bit RGB TGA files. 16-bit palette-based files *may* also work now, but are untested - it's not all that easy to find samples of these rather unusual types of TGA file. Thanks to Michal Svec for spotting the problem. If a 32-bit mode existed without a corresponding 24-bit mode, and it was one of the modes which are listed on the viewer right-button menu, then it was incorrectly `greyed out', i.e. made unavailable from the menu. Thanks for Dimitar Zhekov for spotting this. When using `delete-single-prompt off', it previously didn't update the screen after the deletion. Thanks to Max Drozdoff for spotting this one. ** Other changes Added 15/16/24/32-bit 320x240 modes. Thanks to Michal Svec for suggesting this. Currently only the 24/32-bit mode is selectable directly (using `^', on the assumption that it's shift-6 - unshifted 6 selects 320x240x8). Removed `--version-svgalib' option, this was causing trouble when compiling with old versions of svgalib. * Changes in zgv 5.5 ** New features Recursive thumbnail update, ported from xzgv. This updates thumbnails for the current dir and all subdirs (being careful to avoid symlink loops). The selector looks different in various ways. Most obviously, the logo is gone (replaced with a sort of `title bar' with similar content to xzgv's), the scrollbar is enabled by default, and 20 thumbnails are visible by default rather than 12 - but there are other changes, like losing the `raised border' look in most cases, and buttons looking roughly like they do in GTK+. GIF animation speed is now much, much more accurate; it previously tended to run rather slowly. Now supports GIF animation with the same orientation as the normal picture. So for example you can flip the picture, and the animation will be of similarly flipped frames. The file info dialog (on `:') is much improved - it's now roughly the same as the one in xzgv. Added GNU-style long-option support, and changed/reorganised config file option names to suit this; see `Invoking zgv' in info file or `OPTIONS' in man page. Essentially things are a lot more xzgv-like now (and just about everything can be messed about with on the command-line). Note that most old option names are still supported in config files, so it shouldn't break things. Optional black background in 8-bit modes, disabled by default (use the `black-background' config file option to enable). It works by swapping the nearest-to-black palette index with the zero index, and altering the in-memory image to match. This can be rather nice for consistency with high-colour images, but means that 8-bit images which need such a `fix' will take longer to appear. ** Bugfixes Fixed three buffer overruns. Given the nature of these, I suspect they weren't exploitable for a DoS (i.e. leaving the console in graphics mode), but it's difficult to be certain. More BMP fixes - thanks to Jakub Bogusz for most of these. Finally generates correct height comment for animated GIFs. (Be sure to remove any old `.xvpics' dir if you want to fix this for existing files.) GIF animation with zoom mode enabled no longer pointlessly clears the screen for each frame. It previously drew entire pixel lines unnecessarily for images which remained smaller than the screen width when scaled up. It didn't previously do the required redraw when toggling fakecols (with `F') when in 16-colour mode. No longer undraws/redraws scrollbar unnecessarily during thumbnail update. The progress report bar now says "Reading" rather than "Decompressing". At last. :-) ** Other changes Message boxes can now pop up over the existing viewer screen in most cases (i.e. in any mode which is 640x480 or higher and has 256 or more colours), using much the same approach as the mouse menu does. This means that e.g. doing `:' in the viewer to get file info generally doesn't need a mode switch any more. The old `fullsel', `hicolmodes', and `hicontrol' settings have been dropped, as they're now obsolete. You get a warning if you try to use them. The `centre' setting can no longer be toggled on the command-line with the `-c' option. (You can use `--centre=off' if you still want to disable this from the command-line.) * Changes in zgv 5.4 ** New features Added equivalent of xzgv's zoom-reduce-only option, which lets you reduce big pictures in zoom mode without it also enlarging small ones. The toggle is on Alt-r, and the config file option is `zoom_reduce_only'. Thanks to Jan Blasiak for this. You can now optionally use a magic-number-based scheme to choose which files to list in the selector (Alt-m toggles it, and `fsmagic' is the relevant config file option). This approach is much slower, but useful when you have files lacking extensions. Thanks to Dankó Miklós for suggesting this. Added optional error-diffused dithering in 640x480x4 mode (enable with Alt-c or `fastdither16col off' in config file) - this usually looks better, but is much too slow to be the default. ** Bugfixes A fix for `restore to background colour' replacement method in animated GIFs - it previously trusted the left/top/width/height values for the GIF images to be sane (i.e. to fit within the defined `screen'), which was a pretty stupid mistake. Thanks to Michal Svec for spotting the problem. Several significant BMP-reading fixes, particularly affecting some 16-colour and 24-bit files. Thanks to Matan Ziv-Av and Vlad Harchev for spotting the problems. Previously, when you deleted a file, or a file-move wasn't successful, all tags were lost. This could be extremely annoying at times, but it's finally fixed. Thanks to Dankó Miklós for reminding me about this one (I'd noticed it before). Animated GIFs now have thumbnails showing only the first image, though the current implementation is... less efficient than it could be (it reads the lot, then ignores everything after the first :-)). The 640x480x4 (16-colour) mode-select key was still listed as `4' on the mode help page, when it's been `0' for a while. (A similar problem with the mouse menu meant the 640x480x4 option on that wasn't working, either.) Thanks to Wim Osterholt for spotting this. ** Other changes Improved 640x480x4 mode's colour dithering slightly, and changed so it now transparently adjusts base gamma adjustment (without changing the effect of user-specified gamma). Essentially, it tends to look a bit more like it does in proper 8-bit modes now. :-) The GIF reader didn't previously read a certain form of broken animated GIF (those with multiple image block terminators, which breaks the GIF spec) - it stopped after one image. This was *not* a bug, but it now tolerates such bogosity anyway. Thanks to Daniel Biddle for spotting this. Now allows `1' and `0' as alternatives to `on'/`off' and `yes'/`no' for boolean option setting in config files. Also made the documentation a bit clearer about how bools can be set. Thanks to Johannes Zellner for indirectly noticing the problem. The man page's OPTIONS section now has the right name again. * Changes in zgv 5.3 ** New features Builtin TIFF reader (libtiff-based). No more tifftopnm kludges :-), and it makes things a lot faster. It does currently mean there's no progress report while reading the TIFF; this looks hard to fix without bloating the TIFF code tremendously, but it's on the TODO list. Added support for PRF, which is basically a kind of extrapolated version of my old mrf format - unlike mrf, PRF supports greyscale and colour. Thanks to Brian Raiter for both devising the format, and writing the reference implementation readprf.c is heavily based on. File details reported by `:' now include image width and height. You can now show file details (with `:') in the viewer. Thanks to Leopoldo Cerbaro for suggesting this sort of thing, even if it's not entirely what he had in mind. :-) It has to change modes, so it's a bit ugly, but may be useful if you're using zgv from lynx or something. (To this end, it reports the correct height for animated GIFs even though the selector doesn't yet do this.) You can now use Alt-f in the selector to get a file and tagged-file count, i.e. to show how many picture files there are in the dir, and how many are tagged. Thanks to Leopoldo Cerbaro (again) for this idea. ** Bugfixes Big-endian TIFF magic was wrong, so it didn't recognise those files. Thanks to Gaute Strokkenes for noting this, albeit shortly after I'd spotted it. :-) A fix for certain unusual GIFs (with an abnormally large code size - larger than even non-LZW GIFs need), which previously caused zgv to keep using more and more stack, eventually leading to a segfault and potential DoS (since the console was left in graphics mode). Thanks to Lenart Janos (in particular), Josip Rodin, Chris Lawrence, and Andy Mortimer for all helping with this in one way or another. The GIF reader no longer uses any recursive code; not really a bugfix, but avoids the potential for any as-yet-unknown GIF bug to screw up the console. (And no, I don't know of any unknown bugs. :-)) Interlaced GIFs with less than 4 lines are now read correctly. Minor man page fixes. ** Other changes The viewer's mode help page now mentions the `[' and `]' keys. Makefiles now use `cd foo && $(MAKE)' instead of the previous `$(MAKE) -C foo', in case a FreeBSD port gets integrated in future. Thanks to Michael Lynn for pointing this out. `make install' permissions are now Debian-ish, i.e. explicitly marked as writeable by root (rather than implicitly so ;-)), and all world-readable. * Changes in zgv 5.2 ** New features Added gamma support (finally!). The basic idea is to ignore the rather unworkable image/screen gamma distinction, and just use a relative gamma with fast shortcuts for common cases. So pressing `1' gives a gamma adjustment of 1.0 (i.e. no adjustment), `2' gives 2.2 (for e.g. viewing linear-gamma files on an average PC monitor), `3' gives 1/2.2 (~0.45, for e.g. viewing 2.2-gamma files on a linear-gamma display), and `4' reverts to any `-G' setting (or 1.0 if none was set). You can also use alt-comma and alt-dot for more precise control of gamma adjustment. root is now allowed to run zgv from any tty, for consistency with svgalib's approach to this. (I was reluctant to make this change, but if you're root there are rather worse things you could do...) Thanks to Vlad Harchev for convincing me to do this. :-) ** Bugfixes TIFF-reading used to blindly run an unmodified filename through the shell. Fixed that. Thanks to Sergei Ivanov for pointing this out, and suggesting the fix. Since the TIFF reader still trusts that `tifftopnm' will do what the name suggests, there's now a TIFFTOPNM setting in config.mk to specify the exact location of the tifftopnm executable. Previously, JPEG thumbnails for images over a certain size were generated with bogus width/height info. This isn't shown in zgv yet, but was a pain from things like xzgv. If you found this an annoyance, you should delete any old thumbnails generated by zgv 5.0 or 5.1 (removing the whole .xvpics dir is easiest), and generate new ones. makeman.awk used to output a slightly broken NAME line (with "-" rather than "\-"). ** Other changes Moved 640x480 16-colour mode select to `0' (rather than 4) and off-by-one interpolation toggle to `!' (rather than 1). This was to make room for the gamma support keys. * Changes in zgv 5.1 ** New features You can now switch to a smaller/bigger (lower/higher-res) video mode in the viewer by using `[' and `]' respectively. Thanks to Michal Svec for this idea. I'd wanted a saner way to select modes for some time now, and this approach seems to have been sufficiently obvious that it never occurred to me. :-) Added auto-mode-fit mode (enabled by shift-z in viewer, or `automodefit on' in config file, but disabled by default) which, if enabled, chooses the `smallest' mode in which the picture can be shown in its entirety. A bit like zoom mode, but using video modes to do the work. Thanks to Michal Svec for suggesting this, too. I feel duty bound to point out that all the mode-switching can be a bit hard on your monitor, so even if you really like this idea you might not want to enable it all the time. Still, it's up to you. Added an `xzgvkeys' mode which changes some keys to match xzgv, as while xzgv has similar keys to zgv some of them differ - in particular, the tagging keys in the selector, and the previous/next/tag-then-next keys in the viewer. ** Bugfixes Three buffer overrun fixes. See the new `SECURITY' file if you think this is the end of the world. Fixed typo which meant that, if you started up in a non-640x480 selector with the mouse enabled, the pointer still started at (320,240). File rename used to theoretically allow renaming to `./foo', but screwed up the test. Made it just refuse anything with `/' in, formalising the bug. :-) A couple of corrections to the docs. ** Other changes A new file `SECURITY' discussing security issues. Now installs info file/man page in /usr/share/{info,man/man1} by default, but this is easily changed back to `traditional' locations (by commenting out the SHARE_INFIX line in the Makefile). Note also that the binary distribution still uses the old locations by default, to try and avoid problems. Now supports raw 16-bit PNMs, as added in netpbm 9.0. Thanks to Bryan Henderson for pointing out this format. Added `uninstall' target to Makefile. * Changes in zgv 5.0 ** New features Animated GIF support, and optional Photo-CD support. Thanks to Matan Ziv-Av for these. Scaling is now supported in 320x400 and 360x480 modes. ** Bugfixes Finally removed that annoying flashing off and on of most of the display just to draw a single newly-created/updated thumbnail! Not doing a VT_WAITACTIVE when switching to a new console seemed to be breaking things sometimes when switching from a graphics mode (particularly from X). Added several changes from Debian as pointed out by Andy Mortimer. Thanks to Andy and the others responsible for these. Mostly these were fixes for potential buffer overruns, though there was also a fix for corrupt GIFs, and the `-a' option was removed for security reasons (well, personally I removed it for `it was a kludgey old crock' reasons, but one has to keep up appearances, y'know :-)). The modes chosen by shift-F1 to shift-F9 were two keys out of sync on most/all `modern' keymaps (I didn't notice as I don't tend to use these modes :-)). Fixed now, but I had to move the 1280x1024x24 mode to another key. (I decided the least nasty thing to do would be to move it to Tab-F1, and move up all the (1152x864 and 1600x1200) modes previously on Tab-F1..F8 up a key. Sorry if this annoys anyone.) The online help and non-thumbnail selector now deal with colours more like the thumbnail-based selector, saving the screen from suddenly sprouting a border on svgalib drivers which enable it (e.g. the SiS 5597/8 driver, at the time of writing). The mouse pointer is no longer distorted (double-width) in 320x400 and 360x480 modes. Thumbnails are now generated with width/height info. This isn't yet used by zgv, but it's used by (e.g.) xzgv's `file details' dialog. Fixed `nextline' memory leak, which was leaking width*3 bytes on 15/16/24/32-bit displays for every redraw when viewing a scaled picture. ** Other changes `:' and `;' now both reset brightness and contrast to normal (`*' still does this too). These keys make more sense, I think (being next to the keys used for brightness/contrast). I honestly have no idea why I picked `*' for this originally... Uses libraries in a saner way, using `-lfoo' and assuming you've got them installed. * Note on `newzgv', and why there was no zgv 4.x A modified version of zgv 3.0 called `newzgv' was, for a while, maintained independently by Matan Ziv-Av, under the impression that I had ceased maintaining zgv and could no longer be contacted (he was wrong on both counts :-)). Once I had learned of this and asked Matan about it, I incorporated into zgv 3.2 the `newzgv' additions I thought reasonable at the time. Later, with Matan's help (and some reluctance on my part I admit :-)), zgv 5.0 incorporated the remaining `big' features from it - animated GIF support, and Photo-CD support (the latter being optional). The reason I named this version 5.0 (despite it following 3.3) was to avoid confusion with newzgv, which had used version numbers in the 4.x range (such as 4.2). *Some* Linux distributions, who shall remain nameless, had replaced their zgv packages with newzgv ones, *despite zgv being newer* (and having a similar number of new features relative to zgv 3.0), and still called them `zgv' - thus both misrepresenting zgv and ignoring Matan's contribution to newzgv! Matan conceded that his rather incomplete renaming may have contributed to this, but I don't think the packaging errors were entirely (or even mostly) down to that. Anyway, Matan agreed that zgv 5.0 would be "not too confusing" for newzgv 4.2 users, as only a few fairly minor newzgv features remain `missing'. I welcome feedback on any features zgv still lacks which newzgv users miss. * Changes in zgv 3.3 ** New features Support for 32-bit modes; zgv will now use a suitable 32-bit mode as a kind of substitute 24-bit mode, if a requested 24-bit mode is unavailable. This is more a bugfix than a new feature though, as zgv was apparently rather broken on some (all?) cards with 32-bit modes before. Some of the 32-bit support was based on Matan Ziv-Av's code. You can now reverse the order in which brightness and contrast are applied, using `B' or the config file option `bc_order_rev'. ** Bugfixes Fixed bug where thin images would cause FP exceptions. (This applied to pictures with aspect ratios wider than 80:1 or taller than 1:60.) Thanks to Jan Willamowius for finding this one. Now has a less stupid check-for-high-colour-modes routine. `zgv -T' now outputs filenames followed by LFs, not spaces. This should hopefully avoid problems for filenames with embedded spaces, at least. Multi-plane (4-bit or 24-bit) PCXs which had runs going across planes weren't decoded correctly; fixed that. When updating thumbnails, the "Resampling..." text could previously have appeared in just about any colour. :-) ** Other changes vkludge in 8-bit modes is now slightly less accurate (it works with 15-bit RGB values rather than 18-bit ones), but considerably faster. You can now use R to rename a file, by analogy with C, M, and D for copy/move/delete. The old alt-r still works, though. (The slideshow shuffle (randomise) toggle is now only available on S.) The old `README.src' was renamed to the more reasonable `INSTALL'. * Changes in zgv 3.2 ** New features The file selector can now run in higher-res modes (800x600, 1024x768, and 1280x1024). You can change modes with F1/F2/F3/F4, or use the config file var `fs_startmode' to set the initial mode. The higher-res selector was Matan Ziv-Av's idea, though I found his approach slightly confusing so I ended up writing my own code to do it. :-) You can now have files sorted by `extension', size or last-modified date/time (using Alt-e, Alt-s, or Alt-d respectively) instead of just in filename order (Alt-n). Thanks to Jan Willamowius for the suggestion, but it would be fair to say it's been in the back of my mind for, oh, it must only be three or four years now. :-) (Matan Ziv-Av also deserves a mention for reminding me of it.) Brightness/contrast now work in 15/16/24-bit modes (thanks to Matan Ziv-Av for this). There's no slowdown if you haven't changed brightness/contrast (it uses the old display method in that case), but if you still don't like the idea you can use `hicontrol off' in a config file to disable it completely. Brightness/contrast also now work in the 640x480 16-colour mode. Picture orientation (the effect of mirrors/flips/rotations) can now be preserved between pictures in various ways. Alt-n reverts to normal (undoing any mirrors/flips/rotations), Alt-o restores the orientation which was used for the previous picture, and Alt-s saves the current orientation to be used for all pictures until you press Esc. Also, the config file option `revert_orient' can be disabled to always preserve orientation between pictures. Thanks to Ben Schluricke for the basic idea behind this (I extended and generalised it a bit). You can rename a file with Alt-r. Thanks to Matan Ziv-Av (again) for the code this was based on. `:' is now much more useful as it shows the file size and last-modified date/time in addition to the full filename. The viewer now has separate video-mode help (listing which key combination gives which video mode) on `/'. (Another of Matan's ideas.) zgv's man page is now automagically generated from zgv.texi. This effectively brings it up to date and should make it a lot more usable, which should be good news for everyone out there who hates Info. :-) ** Bugfixes Previously, zgv segfaulted on (some, possibly all) GIFs which had both global *and* local colour maps. Fixed a display bug where you could sometimes have had weirdness after a file delete or move, or after rescanning a directory where there were fewer files. Fixed `-p' bug where mouse pointer position was effectively uninitialised. Removed a couple more unnecessary redraws in the selector. ** Other changes zgv now only changes mode in the viewer when needed - otherwise, it just clears the screen. (Thanks to Matan Ziv-Av for the nth time.) The directory structure in the distribution is now much more sensible. Removed `-src' from source distribution's filename. :-) * Changes in zgv 3.1 ** New features Mouse support is much improved. There's a mouse pointer, the file selector has a scrollbar, you can click on a file to view it, and a menu appears when you right-click (in both the file selector and viewer). Texinfo documentation. It's rather better than the man page, largely because much of the text has been rewritten. (The man page is still included, but probably won't be updated in future other than for really major changes.) Added support for XBM and XPM files. Added simple-minded (but working) support for TIFF files. A hint as to how it works - you need to have netpbm's `tifftopnm' on the path for the TIFF support to work. :-) (I did it this way as it was dead easy and I don't like TIFF very much. But there are TIFF files out there, so *some* sort of support seemed a good idea.) You can now copy/move the current file or tagged files to a specified directory using the file selector. Thumbnail updating is now much faster on large dirs, as the screen is only redrawn when a thumbnail needs to be created/updated. (There's a config file option `slowupdate' to get the old behaviour.) Added `go to file starting with next char' function to file selector, on `g' and `'' (quote). Slideshow picture order can now be randomised (shuffled). Added slideshow pause/resume (on ^S/^Q). Added `-S' option to set slideshow timeout (like `tagtimeout' in config file). Added 24-bit PCX support. I haven't tested this very much (as I just hacked it in quickly because I didn't like zgv not supporting them) but it seems to work. :-) In the file selector you can now use `G' to go straight to a specified directory. Added `-w' option, which writes a PPM to stdout instead of viewing a file, acting as a sort of poor-man's-converter. This is primarily useful where zgv copes with some images in a given format that (say) netpbm's filters can't. (This seems to apply to PCX, XBM and XPM.) Now supports GNU-ish `--help' and `--version' options. ** Bugfixes zgv's key-reader routine used to lose keys in some situations; this was mainly a theoretical problem in the past, but caused real problems with zgv 3.1's new directory-name input. Fixed that. Fixed bug in 24-bit image rotate code. Previously the last line ended up being (in three out of four cases) an `earlier' line. PBM/PGM/PPM-reading code could previously have dropped into an infinite loop for certain bizarre kinds of corrupt files with comments. When started on (or jumped to) unreadable dir, previously would have segfaulted if $HOME wasn't set. Now coughs and dies, as it does in the same situation when the home dir itself isn't readable. Previously a permission-denied message on a picture moved to with enter etc. *from the viewer* didn't update the screen, resulting in a corrupted file selector screen. Fixed that. Fixed some bugs in help text you get with `-h'. ** Other changes The file selector now dynamically allocates memory for the directory, so it should now work with any size dir (previous limit was 4096 files) and shouldn't take up memory it doesn't need. This generally makes the zgv process several hundred K smaller. Mouse support now works by using svgalib's mouse interface. In those cases where vgadisp.c only wants to clear the screen, that's now all it does (rather than changing mode, setting palette etc. too). This speeds up a few things a little when viewing an image. Similarly, the file selector now doesn't redraw the screen unless it has to (though there are still a few niggling exceptions). The drawing of the blank background for dialogs is much faster in 16-colour mode now. Made bitmap fonts the default even for cards without a 640x480 256-colour mode. Made `thicktext' mode nicer if using bitmap fonts by using a proper bold font for it. Added Emacs-style ^B/^F/^N/^P to file selector. To toggle between colour and greyscale in the viewer's 640x480 16-colour mode, you can now use `c' rather than `C'. This makes it consistent with the similar toggle in the 16-colour file selector. Esc now aborts when a single file specified on the command-line is loading. Renamed poorly-named `gamma' command/cfg-file-option `fakecols', which is a much more sensible name for it. :-) * Changes in zgv 3.0 ** New features Added `mrf' support. Mrf is a 1-bit-mono-only file format I thought up while thinking about how you could compress such images more effectively. For some kinds of input (esp. line-art), it compresses better than GIF or PNG. (I've also written PD convertors to/from PBM - look for `pbmtomrf'.) Added bitmap fonts (from X, though you don't need X installed). You can still get the old line-based font if you want, though. It now remembers where you were in a directory if you return to it. So if you go into a subdir then return to the parent dir, the cursor will be on that subdir. Added thumbnails for subdirs. These are made up of the first four files in the dir squeezed together into a single thumbnail. Details in the man page. Added support for 1152x864 and 1600x1200 modes. You get at them by prefixing the function key (F1-F8) with tab. (I can't actually test these modes, but they should work.) Zoom mode (for images smaller than the screen) works more sensibly now, and is roughly twice as fast. (It also happens to fix an occasional segfault in 320x200 modes - albeit only by completely replacing the code. An unusual debugging technique, to be sure. :-)) There's now support for the 640x480 16-colour mode in the viewer. It works by emulating an 8-bit mode, and either displays in greyscale (default) or in dithered colour. New `smallfiletext' option which reduces the size of the filename text in the file selector. You may find this useful if you think the text is too big or if you'd like to see more of the filename. Alternatively, you can do `:' in the file selector to display the full filename of the currently-selected file (or at least, as much as will fit on a single line). ** Bugfixes Previously, if errors occurred when zgv was loading a new file while the old file was still being displayed, the error message appeared over the top of the old image (which looked terrible). It now changes modes to display the message if necessary. The 7-missing-or-junk-pixels problem in 320x200 and 320x240 modes has been fixed (finally). Fixed starting-on-unreadable-dir problem. Previously, if you started with `visual off', the mid-grey colour was set to the tagged-file colour (i.e. red). Fixed that. Bugs in usage output (i.e. output from zgv -h) fixed. Fixed a couple of minor problems with the help pages. Fixed a few spelling errors in the man page. ** Other changes Updated png support (better late than never :-)). Apparently it was terribly out of date before and did bad things for some files; thanks to Greg Roelofs for pointing this out. Hopefully it's reasonably up-to-date now, and should work with any future versions of libpng. Sped directory reading up a little for directories where no files have any associated thumbnails (i.e. dirs with no `.xvpics' subdir etc.). The help screens now use 256-colour mode (which is faster) in the same circumstances as the file selector does (i.e. if the mode's available and not specifically disabled with the force16fs option). * Changes in zgv 2.8 ** New features PCX support. (But 24-bit PCXs aren't supported yet.) Much faster generation of JPEG thumbnails, thanks to Costa Sapuntzakis. Optionally ditch the logo to get a proper, full-screen selector, with `f' or `z', or with `fullsel on' in config file. Thumbnail files can be viewed like other images, and thumbnail files are their own thumbnails - this means you can browse thumbnail directories even if you don't have the images they represent. `-T' option, to echo tagged files on exit. ** Bugfixes Thumbnail create/update for read-only media and DOS filesystems fixed. It previously created all of them each time rather than only doing those necessary. Fixed problem with uncleared display when switching from zoom mode to scaling up. The switching-from-X etc. now works with kernel 2.0.x. Previously it hanged. (It should still work with 1.2.x, too.) Now resets to blocking input even when ^C'ed. Various documentation `bugs' fixed, e.g. the `c' and `n' keys weren't previously listed. ** Other changes ANSIfied the code. This caught a couple of (as it turned out) innocuous bugs. (Fortuitously, they had no ill effect in practice.) Updated PNG support to work with libpng 0.81 (and, hopefully, any later versions). Sped up viewing in 15/16-bit modes a little. Incorporated Adam Radulovic's patch to v2.7 allowing more files in the directory and reducing memory usage. `TO-DO' renamed to `TODO'. :-) * Changes in zgv 2.7 ** New features PNG support. PNG is a new format primarily designed to replace GIF. It has better compression (still lossless), supports 24-bit, and has much more useful interlacing. It currently can't handle images with alpha channels, but it should - and as far as I can tell, does - handle everything else. '-i' option added, to ignore errors with PNG or GIF files. You should now be able to view files of all types as they download or are generated (see the description of the '-i' option in the man page for details). This is particularly effective with interlaced PNG files, where you can see a rough image after only 15% of the file has downloaded. ** Bugfixes A couple of memory leaks related to aborting the loading of a 24-bit image on an 8-bit display fixed. * Changes in zgv 2.6 ** New features zgv will now load create/update thumbnails in the background. That is, when you switch to another VC while zgv is updating the index, it'll keep doing it rather than suspending until you switch back. Support for TGA files, types 1, 2, 9 and 10 (this should include most of them; certainly the ones produced by Povray). Heiko Eissfeldt deserves honourable mention for doing a similar job independently. Better BMP support (from Carsten Engelmann). Added support for GIFs with local colour maps, such as those produced by Ghostscript. ** Bugfixes Problem with -p fixed. I hope. :-) File selector bug fixed. If you pressed enter to view a file, then used ^N or Enter to go through more than a screen's-worth of files, then exited or reached the end of the list of picture files, it used to try and undraw the file you started with, which meant the screen got corrupted. ** Other changes Now gets through '-Wall -Wno-implicit -Wno-return-type' without warnings. * Changes in zgv 2.5 ** New features Mouse support by Edwin Fong. The mouse driving code is from 'selection' by Andrew Haylett. A few other features by Edwin, mostly to do with tagging and slideshows, such as slideshows from the command line (e.g. 'zgv ~/graphics/*.jpg'). Windows 3.x BMP support by Carsten Engelmann. zgv will now load pictures in the background. That is, when you switch to another VC while zgv is loading a picture, it'll keep loading rather than suspending until you switch back. The visual file selector now works in 16-colour modes. This should be useful for machines with 'normal' VGA cards rather than SVGA, or for machines with SVGA cards not supported by svgalib. Due to the limitation of 16 colours, it operates in greyscale usually, with optional (poor quality) colour. ** Bugfixes Avoided 'logs you out on exiting zgv' problem with (some versions of?) bash. Fixed automatic mode changing from 320x400 and 360x480 bug. Fixed 'strange colours' bug with PBM files and vkludge. * Changes in zgv 2.4 ** New features zgv now uses version 5 of the IJG's JPEG software. Version four *will not work* any more, so get version 5 if you're compiling from source. Added the facility to do 'slide shows'. You tag/untag files using 't' and 'n' (or 'T' and 'N' for all files in the current directory), and press Tab to start displaying the files. See the man page for more details. Ctrl-P and Ctrl-N now move backward one file and forward one file respectively. These keys work while viewing a file. The idea is, you can skip back and forth between files easily without needing to quit to the file selector. Thanks to Mark A. Pitcher for suggesting this. ** Bugfixes Stopped errors being reported when a corrupt file is read during thumbnail index updating. Thanks to David Meyer for pointing this out. Added '.jpeg' to listed filetypes. Thanks to Alan Shutko for pointing this out as a common alternative to '.jpg'. ** Other changes Tnpic has been removed. (It's been pretty much obsolete since version 2.2). If anyone is terribly upset about this, contact me and I'll consider putting it back or releasing it separately. * Changes in zgv 2.3 ** New features zgv can now be run from a non-console tty and still work, provided there is a free VT available - that is, one without a getty or other process running on it. (Generally you'll have at least one or two.) If this is required, it switches to the new VT before starting and switches back when finished; this gives reasonably transparent operation from X, Emacs, iScreen, etc. (Redirect stderr to a non-console to force this behaviour when running from consoles - e.g. "zgv 2>/dev/null" with bash/ksh/zsh.) Scaling mode - allows you to 'zoom in' on a picture and pan around the enlarged image. Also available in 'interpolation between the enlarged pixels' flavour in 24-bit modes, if you really want your computer to crawl... :) PgUp, PgDn and similar all do what you might expect now. The '-a "command"' option which allows you to use the zgv file selection front-end while actually invoking some other program when a file is selected for viewing. At the moment, this is a little rough around the edges (shell scripts seem to confuse it). A couple of other small hacks which might be useful, although they aren't strictly the domain of a picture viewer - the '-s' option outputs the area of the picture onscreen when Esc is pressed, which can be useful in constructions like "djpeg foo.jpg|pnmcut `zgv -s foo.jpg` >blarg.ppm"; and the '-r' option to repeatedly re-read a picture after a certain timeout. ** Bugfixes I think I've fixed the 'floating point exception or division by zero' problem which several people noted. However, I can't test it, so if v2.3 works on your machine and v2.2 didn't, please email me saying so. A couple of other, more innocuous bugs fixed. ** Other changes Added 'force16fs' entry in config file, to force 16-colour mode for file selector. Designed for use if the 256-colour 640x480 mode is available from your video card, but for some reason is unusable. System config. file is now /etc/zgv.conf. /etc/system.zgvrc still works, but it's best to rename it. zgv uses stdin now for keyboard input instead of /dev/tty. (Since reading output from another process from stdin in graphics mode (along the lines of "djpeg thingy.jpg | zgv /proc/self/fd/0") doesn't really work, there was no reason not to; in addition, starting up on a free VT would be more tricky otherwise.) zgv is now distributed under the terms of the GNU General Public License. * Changes in zgv 2.2 ** New features zgv now supports 'xv' format thumbnail files - i.e. it views them together with filenames on the file selector, and creates them if asked to. The files created by zgv are compatible with xv. This requires the 640x480x256 mode. Added file deletion to file selector; it also deletes any accompanying xv thumbnail format file. Added command-line options for zoom, startup mode, etc. ** Bugfixes [where did all these bugs come from!] zgv now opens /dev/tty instead of /dev/tty0. This eliminates any security hole that needing a world-readable /dev/tty0 might have caused. If you previously installed version 2.1, you should probably issue a "chmod go-r /dev/tty0" as root to be on the safe side. in v2.1, tnpic often segfaulted when loading JPEG files due to a change in the JPEG reading routine which I forgot to allow for in tnpic.c (blush). zgv segfaulted when trying to load a file which didn't exist - this has been fixed. It wasn't the canonical dumb segfault bug, it was to do with files not ending in {.gif,.jpg} being loaded as PNM files, and free() trying to deallocate a random pointer (two, in fact) when that couldn't load the file. Oops. fixed bug on file select screen to do with moving a file or two with the cursor on an entry past the new number of files (if you see what I mean), where it previously didn't redraw. fixed typo in aborted_file_cleanup() which caused nasty transient bugs. fixed obscure bug in 'zoom' mode. fixed equally obscure bug in PPM dithering. bug with vkludge for <256 colour pictures fixed. fixed bug with 'junk on right-hand side' in (most? all?) standard VGA modes. ** Other changes Allows files ending in all caps .GIF and .JPG to appear in the directory listing also. This was meant to be in v2.1 but wasn't, due to what can only be described as a clerical error. Added 'hicolmodes' entry in .zgvrc file. This is to force high-colour modes if your card - for example - has a 640x480 high-colour mode, but no 320x200 high-colour mode. This is definitely a kludge, but it's very tricky/awkward to fix properly. * Changes in zgv 2.1 ** New features Now supports PBM/PGM/PPM format. Option to centre pictures on screen (default) Optional block prompt and thick text, which may help if you find the file selection screen unclear. ** Bugfixes Fixed "Directory of ..." bug for long pathnames. If you had a 15/16/24-bit mode but had 'jpeg24bit off' in your /etc/system.zgvrc or ~/.zgvrc file, zgv ignored it. [fixed] Greyscale JPEGs wouldn't load when you had a 15/16/24-bit mode and had 'jpeg24bit on'. [fixed, but not as fast as it should be] * Changes in zgv 2.0 (These changes were relative to zgv 1.3.) ** New features 15/16/24-bit support. You can now use zgv like 'zgv filename' and it'll view that file, then quit on Esc. Proper (i.e. usable) .rc file handling. See the manpage and sample.zgvrc for details. Filters out unusable modes (not really sure why it took me so long to fix this!). ** Bugfixes Fixed so that zgv displays long filenames truncated instead of messing up the screen. ** Other changes Saving of configuration removed. The .zgvrc file is now designed to be written by the user. Mono and 16-colour modes no longer used (they never really worked anyhow). More documentation (TeX doc. brings together the loose ends, to a degree.)