| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 | Most TODOs live in the TODO section of doc/file.man (i.e. file(1)).They are more visible there, so please add any further TODOs to thatfile, not here. More speculative material can live here.(This change was made when Reuben Thomas noticed that all the bugslisted in the BUGS section of the man page had been fixed!)---It would be nice to simplify file considerably. For example,reimplement the apprentice and non-pattern magic methods in Python,and compile the magic patterns to a giant regex (or something similar;maybe using Ragel (http://www.complang.org/ragel/)) so that only asmall amount of C is needed (because fast execution is typically onlyrequired for soft magic, not the more detailed information given byhard-wired routines). In this regard, note that hplip, which isBSD-licensed, has a magic reimplementation in Python.---Read the kerberos magic entry for more ideas.---Write a string merger to make magic entry sizes dynamic.Strings will be converted to offsets from the string table.---Programming language support, we can introduce the concept of a groupof rules where n rules need to match before the rule is positive. Thiscould require structural changes to the matching code :-(0	group	2	# require 2 matches# rule 1>0	.......# rule 2>0	.......---- Merge the stat code dance in one place and keep it in one place  (perhaps struct buffer).- Enable seeking around if offset > nbytes if possible (the fd  is seekable).- We could use file_pipe2file more (for EOF offsets, CDF documents),  but that is expensive; perhaps we should provide a way to disable it- The implementation of struct buffer needs re-thinking and more work.  For example we don't always pass the fd in the child. This is not  important yet as we don't have yet cases where use/indirect magic  needs negative offsets.- Really the whole thing just needs here's an (offset, buffer, size)  you have (filebuffer, filebuffersize &&|| fd), fill the buffer with  data from offset. The buffer API should be changed to just do that.christos
 |