Frink 1.2 Frink is a tcl formatting program. It can prettify your program, minimise or obfuscate it. You pass it filenames (or the stdin) and the output is generated to stdout. There are a variety of options you can pass in : -a : add spaces after {} and "" when processing -command. (default = OFF) -A : turn OFF special processing of expr commands. -b : add braces (see manual page for details) (default = OFF) -B : turn OFF processing code passed to the bind command. -c : set further indent for continuations to n. default = 2 -C : turn OFF processing code passed to the catch command. -d : remove braces in certain (safe) circumstances (default = OFF) -e : produce "else". default = OFF -E : optimise string comparisons. Use at own risk. (default = OFF) -g : indent switch cases. default = OFF -h : print information about options. -i : set indent for each level to n. default = 4 -j : remove non-essential blank lines. (default = OFF) -k : remove non-essential braces. (default = OFF) -l : try for one-liners -m : minimise the code by removing redundant spacing. default = OFF -n : do not generate tab characters. default = OFF -o : obfuscate : default = OFF -p : If v is a number produce that many blank lines after each proc definition, otherwise produce whatever format the code indicates. No codes are defined yet..... (default = do nothing) -r : remove comments. default = OFF -s : format according to style name "c". (no style names defined yet) -t : set tabs every n characters. -T : produce "then". default = OFF -u : Safe to remove brackets from round elseif conditions. default = OFF -v : put { } round variable names where appropriate. -w : set line length. default = 80 -W : halt on warning. -x : produce "xf style" continuations -X : recognise tclX features -z : do not put a single space before the \ character on continuations. Please try it and let me know how else you would like to be able to tailor the output. (And all the bugs you find as well) Currently it is geared very much towards the style of tcl programming that I use myself. Obfuscation is not particularly sophisticated yet. In particular it can be (in most cases) reversed by running the obfuscated program through frink again! Frink uses quite a few heuristics (i.e. a bunch of ad hoc hacks) to improve both formatting and minimisation. In some obscure cases these may burn you. Please let me know of any cases you find. Suggestions for new heuristics are always welcome. Currently frink supports straightforward tcl (it doesn't do case either), tclX and [incr tcl] 1.0. I will be adding support for other common extensions where this is appropriate. N.B. frink assumes that you are running it over a correct tcl program. If this is not the case then all bets are off! There are some constructions possible in tcl where it is impossible to determine the correct formatting except at runtime. If you use these, sorry, but frink can't help you. To install frink run the configure program, set the values and click on install. The configure script is produced using my Obeah system (q.v.) Comment handling is poor - suggestions are welcome for how it could be improved..... Lindsay Lindsay.Marshall@newcastle.ac.uk