Some notices for you who would like to hack the source in order to improve cancan, fix bugs or just have fun: * Try not to run large chunks of existing code through your C beautifier if the indentation style doesn't please you. This will only greatly confuse the original author (if he can't recognize and maintain his own code, who can?). If you write any new functions, ok, use your own style as long as it's clear and consistent. * For portability, cancan is written in K&R C - no ANSI stuff. If people convince me that non-ANSI compilers are rare enough these days, we should switch to prototypes. Even then, please, do NOT use any gcc-specific features (I've seen the char constant '\e' in some places) even if gcc is very common. Our goal should be to let the maximum number of people use cancan. (Most non-ANSI compilers grok void, so that's safe to use.) * To sum it up, assume that the user has: - a non-ANSI C compiler - an exotic non-VT100 terminal (use TERMCAP!), possibly on a slow line - a slow workstation, or a larger computer shared by 100 users and aggressive sysadmins who think that mudding doesn't justify 10% or even 5% CPU load. * Document your changes! A brief report of changes in the changes.log file is absolutely necessary. So is updating the doc files (cancan.doc and README). * Remember, that although I (Yorick) am the original author, I don't dictate the code; it is explicitly in the public domain. I am merely trying to keep some kind of order; if versions are permitted to diverge, they are very painful to merge later. Also, different version branches are very confusing, and makes it hard to define the "latest and best" version. Please try to synchronize your hacks into one - the latest - version! * From version 2.5.0, I've tried to make the code obey the following rules for modularity: - All exported things from one .c file is declared in its .h file. (cancan.h is used as header for several source files) - Conversely, symbols are imported by #including .h files, not by local extern declarations. - Everything that can be static should be (this is not quite true yet) Please obey these rules (or improve them). More .h files should be added, and more things should be declared static.