Big patch for mcview
Roland Illig
roland.illig at gmx.de
Wed Mar 2 18:40:19 UTC 2005
Hi all,
I must have had too much time, as I have partly rewritten mcview. The
patch is quite large and changes many things. However, I have tested it
with all available types of data sources (see the code for explanation),
and it seems to work.
http://www.roland-illig.de/tmp/viewer.patch
Here are the major improvements:
* Dropped mmap support.
* Don't load large files completely into memory.
* Grouped all variables that have to do with the data source management.
* Made every variable have only one purpose. (Before, you could never be
sure what the view->data field contained, as it was used for keeping
the error message as well as the mmapped file and the data of the
non-mmapped file.)
* Provided a clean interface for the get_byte() function, as well as
four different implementations of it.
* Added assertions to guarantee that the code is only used in situations
where it is meant to be used.
* First steps to supporting 64-bit files. (Mainly through consistent
use of the appropriate data types.)
Perhaps you may worry about the fact that my patch makes the file 119
lines longer, but I hope the code becomes more readable and maintainable.
Of course, there are many things that don't work yet or that can be
improved. I will work on them, perhaps by first marking the relevant
places with FIXMEs. Things that don't work nicely at the moment are:
* Initialization of a WView object. (I'd like to have a function that
initializes _every_ field to a sensible default value; "constructor".)
* Destruction of a WView object. (The counterpart to the constructor.
Cleans up the object and frees it.)
* Cursor movement in all display modes (textview, textwrap, hexview,
hexedit, rawmode, nroffmode, ...) should be rewritten in cleaner code.
* Support for 64-bit files still needs much work.
Roland
More information about the mc-devel
mailing list