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
+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.
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")
-
Documentation
-------------
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 Mutt-ng 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.