The normality configuration file has a rather simple syntax, as shown in the diagram in the next section. Some things to remember is that the normality file's influence is inversely proportional to the user's cluefulness and that, in certain cirumstances, modification of the normality file can and will be considered immoral.
<normality file> := <normality file> <line> | ; <line> := <normality type> ': ' <userlist> | <normality type> '! ' <userlist> | <normality type> '= ' <normality tags> | <comment> <normality type> := [A-Z][a-zA-Z0-9]+ <userlist> := <username> ', ' <userlist> ';\n' | <username> ';\n' <normality tags> := <normality tag> ', ' <normality tags> ';\n' | <normality tag> ';\n' <normality tag> := 'marriage' | 'love-relation' | 'nice-job' | 'money' | 'spare-time' | 'friends' | 'no-pager' | 'vacation' <comment> := '#' .* '\n'
Let's say that we have a system with three normality types, foo, bar and gazonk and two users, cucumber and onion.
Now, a line like "foo! onion;" would exclude onion from having any of the real-life things specified by the foo type, even if that (or those) things appear in another normality type. So, the disallow syntax overrides the allow syntax (specified by "<type>: <username>...").
There is always an implicit type named ``all'', that contains all normality tags.
For all system administrators, you have an implicit rule, "all! asr".
# Normality file for a sad system # Our users are onion, cucumber, jdoe, jrl and washu animetype= love-relation, nice-job, friends, spare-time; notworst= love-relation, nice-job, friends; sysadm= friends; # All normality types we will use are declared # Now let's do the magic stuff... all: jdoe, jrl; animetype: washu; sysadm: cucumber; all! onion; # Now, this is fairly easy, OK?
Has a tendecy to create small discontinuities in the velvet of reality whenever there are syntax errors in the normality file.