Required tools
--------------
-If you are planning to hack on Mutt-ng, please subscribe to the
-Mutt-ng-dev mailinglist (mutt-ng-deve-@lists.berlios.de).
+If you are planning to hack on Madmutt, please subscribe to the
+Madmutt-devel mailinglist (Madmutt-deve-l@lists.berlios.de).
Announcements about recent development
versions go to that mailing list, as go technical discussions and
patches.
-You'll need several GNU development utilities for working on mutt-ng:
+You'll need several GNU development utilities for working on Madmutt:
- automake
------------------------
Once you've checked out a copy of the source from SVN from
-svn.berlios.de/svnroot/repos/mutt-ng , you'll need to
-run the script called 'prepare' that is in the root directory. The
-script does all the automake/autoconf magic that needs to be done with
-a fresh checkout.
+svn.berlios.de/svnroot/repos/Madmutt , you'll need to run the script
+called 'autogen.sh' that is in the root directory. The script does all the
+automake/autoconf magic that needs to be done with a fresh checkout. If
+all steps succeed, you'll have a configure script to start off with.
A word about warnings
---------------------
-Mutt-ng's default build process sets some pretty restrictive compiler
+Madmutt's default build process sets some pretty restrictive compiler
flags which may lead to lots of warnings. Generally, warnings are
something which should be eliminated.
Nevertheless, the code in intl/ is said to generate some warnings with
the compiler settings we usually rely upon. This code is not
-maintained by the Mutt-ng developpers, so please redirect any comments to
+maintained by the Madmutt developpers, so please redirect any comments to
the GNU gettext library's developpers.
Style Guide
-----------
-- global functions should have the prefix "mutt_". All
- other functions should be declared "static".
+- global functions outside the library directory should have the prefix
+ "mutt_". All other functions should be declared "static". All global
+ functions defined within the library directory should have the the
+ prefix according to their source file, i.e. "str_" for everything in
+ lib/str.[ch] etc.
- avoid global vars where possible. If one is required,
try to contain it to a single source file and declare it
in ELM and PINE is the tremendous duplication of code...
Help keep Mutt small!
-- when adding new options, make the old behaviour the
- default.
+- When adding new options, make the old behaviour the default. Also,
+ add them to UPGRADING in the top-level source directory.
-- try to keep Mutt-ng as portable as possible.
-
-- do not use C++-style comments (i.e. "// Comment")
+- try to keep Madmutt as portable as possible.
Documentation
-------------
that this includes documentation for possibly added format flags!
When adding variables which depend on system-functionality and/or
-./configure switches, you have to add additional availability
-information to avoid confusion in the manual.
+./configure switches, you have to add additional "availability"
+information to init.h to avoid confusion in the manual. Please see
+init.h for examples.
The parts of The Manual and the muttngrc manual page dealing with
these variables, and the global Muttrc, are generated automatically
- \fB switches to boldface
+ - \fT switches to typewriter (only for SGML and ignored otherwise)
+
- \fP switches to normal display
- \(as can be used to represent an asterisk (*). This is intended
This is used to protect indentations in tables.
Do _not_ use any other SGML or nroff formatting instructions here!
+
+
+String comparison
+-----------------
+
+A word of warning about string comparisons: Since Madmutt may run in a
+huge variety of locales, case-insensitive string comparisons and
+case conversions may be dangerous. For instance, in iso-8859-9,
+tolower('I') is DIFFERENT from 'i' - it's indeed the Turkish dotless
+lowercase i.
+
+For this reason, always use the ascii_* functions defined in ascii.h
+and implemented in ascii.c when comparing or handling strings which
+are defined as us-ascii. This concerns lots of text-based
+protocols, message header tags, character set names, domain names,
+e-mail addresses, etc.