* argp-pvh.c (argp_program_version_hook): Provide initial value.
[gnulib.git] / README
diff --git a/README b/README
index 25907e9..221aa9f 100644 (file)
--- a/README
+++ b/README
@@ -112,6 +112,8 @@ should use fixincludes or fix their include files manually.
 Even if the include files conform to C89, the library itself may not.
 For example, SunOS 4's (free (NULL)) can dump core, so GNULib code
 must avoid freeing a null pointer, even though C89 allows it.
+You can work around some of these problems by requiring the relevant
+modules, e.g., the GNULib 'free' module supplies a conforming 'free'.
 
 The GNU coding standards allow one departure from strict C99: GNULib
 code can assume that standard internal types like size_t are no wider
@@ -120,7 +122,9 @@ 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.
+   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.
 
  * There are no "holes" in integer values: all the bits of an integer
    contribute to its value in the usual way.
@@ -130,9 +134,17 @@ as well.  GNULib code makes the following additional assumptions:
    for all practical hosts with flat address spaces, but it is not
    always true for hosts with segmented address spaces.
 
+ * If an existing object has size S, and if T is sufficiently small
+   (e.g., 8 KiB), then S + T cannot overflow.  Overflow in this case
+   would mean that the rest of your program fits into T bytes, which
+   can't happen in realistic flat-address-space hosts.
+
  * Objects with all bits zero are treated as 0 or NULL.  For example,
    memset (A, 0, sizeof A) initializes an array A of pointers to NULL.
 
+ * Adding zero to a null pointer does not change the pointer.
+   For example, 0 + (char *) NULL == (char *) NULL.
+
 The above assumptions are not required by the C or POSIX standards but
 hold on all practical porting targets that we're familiar with.  If
 you have a porting target where these assumptions are not true, we'd
@@ -166,3 +178,21 @@ $ cvs -d :pserver:anoncvs@cvs.gnu.org:/cvsroot/gnulib login
 (Just hit Enter or Return when prompt for a password)
 $ cvs -d :pserver:anoncvs@cvs.gnu.org:/cvsroot/gnulib checkout gnulib
 
+
+-----
+
+Copyright (C) 2001, 2003, 2004 Free Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software Foundation,
+Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */