]> diplodocus.org Git - nmh/blobdiff - docs/README.developers
Fix test for inlineonly.
[nmh] / docs / README.developers
index 86b2f897d66d923925f05cbdd7ea0bdf1ee88e8f..1d3fd73799c93df756abf0f464ac81e6d7a9e632 100644 (file)
@@ -22,6 +22,15 @@ commit checklist
 8. notify nmh-users?
 
 
+---------------------------------
+C library/system call usage notes
+---------------------------------
+* Use m_mktemp2() or m_mktemp() instead of mkstemp(3) (see section on
+  nmh temporary files below).
+* Use m_unlink() instead of unlink(3).
+* Use done() instead of _exit(3) except after a fork(3).
+
+
 -------------------------
 autoconf & automake files
 -------------------------
@@ -162,6 +171,38 @@ OS function  nmh-local version to use instead
 getpass()    nmh_getpass()
 
 
+-------------------
+nmh temporary files
+-------------------
+
+To create a temporary file, use m_mktemp2() or m_mktemp().  They use
+mkstemp(3), but they also register the temporary file for removal on
+program termination.  So, do not use mkstemp() directly.
+
+To further support this, nmh_init() must be called at the beginning of
+main().  And, if a child process is not going to immediately call one
+of the exec(3) functions or _exit(3) after a fork(3), it should call
+unregister_for_removal(0).  Finally, nmh_init() sets up signal handlers
+for several signals:  these signal handlers should not be disabled.
+
+
+--------------
+nmh test suite
+--------------
+
+The nmh test suite is run through the Makefile, with "make check"
+or "make distcheck".
+
+To enable the use of valgrind, where available, set the environment
+variable NMH_VALGRIND to a non-null value.  However, a separate
+environment variable, VALGRIND_ME, triggers the use of valgrind in
+test/inc/test-eom-align because it greatly extends the duration of
+that test.
+
+In the nmh test suite, nmh programs to be tested should be invoked
+through the run_test or run_prog shell functions defined in
+test/common.sh.
+
 -------------
 releasing nmh
 -------------