X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=README;h=ba838e21a760864c5addeae61f9677978cc1e122;hb=b0d9d3aa695aebab5ebc0fb02ebeac9e59f57242;hp=04bde18c0e0a1936068b449344e28d76f999a0fc;hpb=98b3edaec794de4e5e8a0da62b49dba44e5446b5;p=gnulib.git diff --git a/README b/README index 04bde18c0..ba838e21a 100644 --- a/README +++ b/README @@ -59,6 +59,12 @@ How to add a new module * If the module needs configure-time checks, write an autoconf macro for it in m4/.m4. See m4/README for details. * Write a module description modules/, based on modules/TEMPLATE. +* If the module contributes a section to the end-user documentation, + put this documentation in doc/.texi and add it to the "Files" + section of modules/. Most modules don't do this; they have only + documentation for the programmer (= gnulib user). Such documentation + usually goes into the lib/ source files. It may also go into doc/; + but don't add it to the module description in this case. * Add the module to the list in MODULES.html.sh. You can test that a module builds correctly with: @@ -135,10 +141,30 @@ than 'long'. POSIX 1003.1-2001 and the GNU coding standards both require 'int' to be at least 32 bits wide, so Gnulib code assumes this as well. Gnulib code makes the following additional assumptions: - * Signed integer arithmetic is two's complement, without runtime - overflow checking. This is the traditional behavior, and is - supported by C99 implementations that conform to ISO/IEC 10967-1 - (LIA-1) and that define signed integer types as being modulo. + * With one exception noted below, signed integer arithmetic is two's + complement, without runtime overflow checking. This is the + traditional behavior, and is supported by C99 implementations that + conform to ISO/IEC 10967-1 (LIA-1) and that define signed integer + types as being modulo. + + The exception is signed loop indexes. Here, the behavior is + undefined if any signed expression derived from the loop index + overflows. For example, the following code contains two such + overflows (the "i++" and the "i + 1") and therefore has undefined + behavior: + + int i; + for (i = INT_MAX - 10; i <= INT_MAX; i++) + if (i + 1 < 0) + { + report_overflow (); + break; + } + + This exception is a concession to modern optimizing compilers, + which can turn the above loop into code that executes the loop body + 11 times, even though wraparound arithmetic would cause the loop to + iterate forever. * There are no "holes" in integer values: all the bits of an integer contribute to its value in the usual way. @@ -189,12 +215,26 @@ Gnulib is available for anonymous checkout. In any Bourne-shell the following should work: $ cvs -d :pserver:anoncvs@cvs.gnu.org:/cvsroot/gnulib login -(Just hit Enter or Return when prompt for a password) +(Just hit Enter or Return when prompted for a password) $ cvs -d :pserver:anoncvs@cvs.gnu.org:/cvsroot/gnulib checkout gnulib Gnulib is hosted on savannah.gnu.org. The project page is http://savannah.gnu.org/projects/gnulib. +Keeping Up-to-date +================== + +The best way to work with Gnulib is to check it out of CVS. +Subscribing to the bug-gnulib@gnu.org mailing list will help you to +plan when to update your local copy of Gnulib (which you use to +maintain your software) from CVS. You can use "cvs update -dP" to +synchronize. + +Sometimes, using an updated version of Gnulib will require you to use +newer versions of GNU Automake or Autoconf. You may find it helpful +to join the autotools-announce mailing list to be advised of such +changes. + ----- Copyright (C) 2001, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.