Mercurial > hg > octave-jordi > gnulib-hg
annotate README @ 8603:4aea800039c0
New module 'iconv_open'.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Sat, 31 Mar 2007 21:00:19 +0000 |
parents | c1709670004e |
children | 0d037d707401 |
rev | line source |
---|---|
6019
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
1 Gnulib |
3563
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
2 ====== |
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
3 |
6019
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
4 Gnulib is intended to be the canonical source for most of the important |
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
5 "portability" and/or common files for GNU projects. These are files |
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
6 intended to be shared at the source level; Gnulib is not a library meant |
6506
a199553cf8b5
Gnulib doesn't generate a tarball.
Paul Eggert <eggert@cs.ucla.edu>
parents:
6019
diff
changeset
|
7 to be installed and linked against. Unlike most projects, Gnulib does |
a199553cf8b5
Gnulib doesn't generate a tarball.
Paul Eggert <eggert@cs.ucla.edu>
parents:
6019
diff
changeset
|
8 not normally generate a source tarball distribution; instead, developers |
a199553cf8b5
Gnulib doesn't generate a tarball.
Paul Eggert <eggert@cs.ucla.edu>
parents:
6019
diff
changeset
|
9 should just grab modules directly from the repository. |
3563
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
10 |
6019
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
11 While portability across operating systems is not one of GNU's primary |
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
12 goals, it has helped introduce many people to the GNU system, and is |
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
13 worthwhile when it can be achieved at a low cost. This collection helps |
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
14 lower that cost. |
3563
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
15 |
6019
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
16 |
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
17 Contributing to Gnulib |
3563
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
18 ====================== |
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
19 All software here is Copyright (c) Free Software Foundation - you need |
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
20 to have filled out an assignment form for a project that uses the |
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
21 module for that contribution to be accepted here. |
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
22 |
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
23 If you have a piece of code that you would like to contribute, please |
6019
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
24 email bug-gnulib@gnu.org. You can review the archives, subscribe, etc., |
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
25 via http://lists.gnu.org/mailman/listinfo/bug-gnulib. |
3563
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
26 |
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
27 Generally we are looking for files that fulfill at least one of the |
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
28 following requirements: |
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
29 |
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
30 * If your .c and .h files define functions that are broken or |
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
31 missing on some other system, we should be able to include it. |
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
32 |
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
33 * If your functions remove arbitrary limits from existing |
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
34 functions (either under the same name, or as a slightly different |
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
35 name), we should be able to include it. |
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
36 |
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
37 If your functions define completely new but rarely used functionality, |
4415 | 38 you should probably consider packaging it as a separate library. |
4393
03ca5982ec96
Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
3563
diff
changeset
|
39 |
6019
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
40 |
5258
bff440dded40
Note about licensing, from Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
5073
diff
changeset
|
41 License |
bff440dded40
Note about licensing, from Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
5073
diff
changeset
|
42 ------- |
6019
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
43 Gnulib contains code both under GPL and LGPL. Because several packages |
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
44 that use Gnulib are GPL, the files state they are licensed under GPL. |
5258
bff440dded40
Note about licensing, from Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
5073
diff
changeset
|
45 However, to support LGPL projects as well, you may use some of the |
bff440dded40
Note about licensing, from Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
5073
diff
changeset
|
46 files under LGPL. The "License:" information in the files under |
6016
699468ab4fea
2005-08-08 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> (tiny change)
Simon Josefsson <simon@josefsson.org>
parents:
5848
diff
changeset
|
47 modules/ clarifies the real license that applies to the module source. |
5258
bff440dded40
Note about licensing, from Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
5073
diff
changeset
|
48 |
6019
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
49 Keep in mind that if you submit patches to files in Gnulib, you should |
6016
699468ab4fea
2005-08-08 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> (tiny change)
Simon Josefsson <simon@josefsson.org>
parents:
5848
diff
changeset
|
50 license them under a compatible license, which means that sometimes |
5258
bff440dded40
Note about licensing, from Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
5073
diff
changeset
|
51 the contribution will have to be LGPL, if the original file is |
bff440dded40
Note about licensing, from Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
5073
diff
changeset
|
52 available under LGPL via a "License: LGPL" information in the |
bff440dded40
Note about licensing, from Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
5073
diff
changeset
|
53 projects' modules/ file. |
bff440dded40
Note about licensing, from Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
5073
diff
changeset
|
54 |
6019
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
55 |
4393
03ca5982ec96
Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
3563
diff
changeset
|
56 How to add a new module |
03ca5982ec96
Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
3563
diff
changeset
|
57 ----------------------- |
03ca5982ec96
Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
3563
diff
changeset
|
58 * Add the header files and source files to lib/. |
03ca5982ec96
Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
3563
diff
changeset
|
59 * If the module needs configure-time checks, write an autoconf |
03ca5982ec96
Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
3563
diff
changeset
|
60 macro for it in m4/<module>.m4. See m4/README for details. |
03ca5982ec96
Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
3563
diff
changeset
|
61 * Write a module description modules/<module>, based on modules/TEMPLATE. |
6951
9934ce51cefd
Mention where to put documentation.
Bruno Haible <bruno@clisp.org>
parents:
6506
diff
changeset
|
62 * If the module contributes a section to the end-user documentation, |
9934ce51cefd
Mention where to put documentation.
Bruno Haible <bruno@clisp.org>
parents:
6506
diff
changeset
|
63 put this documentation in doc/<module>.texi and add it to the "Files" |
9934ce51cefd
Mention where to put documentation.
Bruno Haible <bruno@clisp.org>
parents:
6506
diff
changeset
|
64 section of modules/<module>. Most modules don't do this; they have only |
9934ce51cefd
Mention where to put documentation.
Bruno Haible <bruno@clisp.org>
parents:
6506
diff
changeset
|
65 documentation for the programmer (= gnulib user). Such documentation |
9934ce51cefd
Mention where to put documentation.
Bruno Haible <bruno@clisp.org>
parents:
6506
diff
changeset
|
66 usually goes into the lib/ source files. It may also go into doc/; |
9934ce51cefd
Mention where to put documentation.
Bruno Haible <bruno@clisp.org>
parents:
6506
diff
changeset
|
67 but don't add it to the module description in this case. |
4393
03ca5982ec96
Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
3563
diff
changeset
|
68 * Add the module to the list in MODULES.html.sh. |
03ca5982ec96
Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
3563
diff
changeset
|
69 |
03ca5982ec96
Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
3563
diff
changeset
|
70 You can test that a module builds correctly with: |
03ca5982ec96
Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
3563
diff
changeset
|
71 $ ./gnulib-tool --create-testdir --dir=/tmp/testdir module1 ... moduleN |
03ca5982ec96
Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
3563
diff
changeset
|
72 $ cd /tmp/testdir |
03ca5982ec96
Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
3563
diff
changeset
|
73 $ ./configure && make |
03ca5982ec96
Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
3563
diff
changeset
|
74 |
03ca5982ec96
Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
3563
diff
changeset
|
75 Other things: |
03ca5982ec96
Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
3563
diff
changeset
|
76 * Check the license and copyright year of headers. |
4661
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
77 * Check that the source code follows the GNU coding standards; |
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
78 see <http://www.gnu.org/prep/standards>. |
4393
03ca5982ec96
Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
3563
diff
changeset
|
79 * Add source files to config/srclist* if they are identical to upstream |
03ca5982ec96
Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
3563
diff
changeset
|
80 and should be upgraded in gnulib whenever the upstream source changes. |
03ca5982ec96
Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
3563
diff
changeset
|
81 * Include header files in source files to verify the function prototypes. |
03ca5982ec96
Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
3563
diff
changeset
|
82 * Make sure a replacement function doesn't cause warnings or clashes on |
03ca5982ec96
Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
3563
diff
changeset
|
83 systems that have the function. |
03ca5982ec96
Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
3563
diff
changeset
|
84 * Autoconf functions can use gl_* prefix. The AC_* prefix is for |
03ca5982ec96
Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents:
3563
diff
changeset
|
85 autoconf internal functions. |
4768
3027c8485825
Rework advice for preventing empty .o files.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4726
diff
changeset
|
86 * Build files only if they are needed on a platform. Look at the |
3027c8485825
Rework advice for preventing empty .o files.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4726
diff
changeset
|
87 alloca and fnmatch modules for how to achieve this. If for some |
3027c8485825
Rework advice for preventing empty .o files.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4726
diff
changeset
|
88 reason you cannot do this, and you have a .c file that leads to an |
3027c8485825
Rework advice for preventing empty .o files.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4726
diff
changeset
|
89 empty .o file on some platforms (through some big #if around all the |
3027c8485825
Rework advice for preventing empty .o files.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4726
diff
changeset
|
90 code), then ensure that the compilation unit is not empty after |
3027c8485825
Rework advice for preventing empty .o files.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4726
diff
changeset
|
91 preprocessing. One way to do this is to #include <stddef.h> or |
3027c8485825
Rework advice for preventing empty .o files.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4726
diff
changeset
|
92 <stdio.h> before the big #if. |
3563
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
93 |
4661
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
94 Portability guidelines |
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
95 ---------------------- |
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
96 |
6019
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
97 Gnulib code is intended to be portable to a wide variety of platforms, |
4661
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
98 not just GNU platforms. |
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
99 |
6019
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
100 Many Gnulib modules exist so that applications need not worry about |
4661
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
101 undesirable variability in implementations. For example, an |
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
102 application that uses the 'malloc' module need not worry about (malloc |
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
103 (0)) returning NULL on some Standard C platforms; and 'time_r' users |
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
104 need not worry about localtime_r returning int (not char *) on some |
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
105 platforms that predate POSIX 1003.1-2001. |
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
106 |
6019
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
107 Originally much of the Gnulib code was portable to ancient hosts like |
4661
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
108 4.2BSD, but it is a maintenance hassle to maintain compatibility with |
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
109 unused hosts, so currently we assume at least a freestanding C89 |
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
110 compiler, possibly operating with a C library that predates C89. The |
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
111 oldest environment currently ported to is probably SunOS 4 + GCC 1.x, |
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
112 though we haven't tested this exact combination. SunOS 4 last shipped |
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
113 on 1998-09-30, and Sun dropped support for it on 2003-10-01, so at |
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
114 some point we may start assuming a C89 library as well. |
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
115 |
6019
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
116 Because we assume a freestanding C89 compiler, Gnulib code can include |
4661
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
117 <float.h>, <limits.h>, <stdarg.h>, and <stddef.h> unconditionally. It |
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
118 can also include hosted headers like <errno.h> that were present in |
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
119 Unix Version 7 and are thus widely available. Similarly, many modules |
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
120 include <sys/types.h> even though it's not even in C99; that's OK |
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
121 since <sys/types.h> has been around nearly forever. <string.h> and |
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
122 <stdlib.h> were not in Unix Version 7, so they weren't universally |
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
123 available on ancient hosts, but they are both in SunOS 4 (the oldest |
6019
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
124 platform still in relatively-common use) so Gnulib assumes them now. |
4661
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
125 |
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
126 Even if the include files exist, they may not conform to C89. |
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
127 However, GCC has a "fixincludes" script that attempts to fix most |
6019
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
128 C89-conformance problems. So Gnulib currently assumes include files |
4661
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
129 largely conform to C89 or better. People still using ancient hosts |
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
130 should use fixincludes or fix their include files manually. |
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
131 |
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
132 Even if the include files conform to C89, the library itself may not. |
6019
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
133 For example, SunOS 4's (free (NULL)) can dump core, so Gnulib code |
4661
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
134 must avoid freeing a null pointer, even though C89 allows it. |
5073
d4c310e7951f
Mention that the 'free' module, LIA-1.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4875
diff
changeset
|
135 You can work around some of these problems by requiring the relevant |
6019
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
136 modules, e.g., the Gnulib 'free' module supplies a conforming 'free'. |
4661
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
137 |
6019
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
138 The GNU coding standards allow one departure from strict C99: Gnulib |
4726
f6c445bbf87c
* README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents:
4661
diff
changeset
|
139 code can assume that standard internal types like size_t are no wider |
f6c445bbf87c
* README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents:
4661
diff
changeset
|
140 than 'long'. POSIX 1003.1-2001 and the GNU coding standards both |
6019
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
141 require 'int' to be at least 32 bits wide, so Gnulib code assumes this |
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
142 as well. Gnulib code makes the following additional assumptions: |
4726
f6c445bbf87c
* README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents:
4661
diff
changeset
|
143 |
8255
77e7d77d96c7
* README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents:
7698
diff
changeset
|
144 * With one exception noted below, signed integer arithmetic is two's |
77e7d77d96c7
* README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents:
7698
diff
changeset
|
145 complement, without runtime overflow checking. This is the |
77e7d77d96c7
* README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents:
7698
diff
changeset
|
146 traditional behavior, and is supported by C99 implementations that |
77e7d77d96c7
* README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents:
7698
diff
changeset
|
147 conform to ISO/IEC 10967-1 (LIA-1) and that define signed integer |
77e7d77d96c7
* README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents:
7698
diff
changeset
|
148 types as being modulo. |
77e7d77d96c7
* README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents:
7698
diff
changeset
|
149 |
77e7d77d96c7
* README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents:
7698
diff
changeset
|
150 The exception is signed loop indexes. Here, the behavior is |
77e7d77d96c7
* README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents:
7698
diff
changeset
|
151 undefined if any signed expression derived from the loop index |
77e7d77d96c7
* README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents:
7698
diff
changeset
|
152 overflows. For example, the following code contains two such |
77e7d77d96c7
* README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents:
7698
diff
changeset
|
153 overflows (the "i++" and the "i + 1") and therefore has undefined |
77e7d77d96c7
* README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents:
7698
diff
changeset
|
154 behavior: |
77e7d77d96c7
* README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents:
7698
diff
changeset
|
155 |
77e7d77d96c7
* README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents:
7698
diff
changeset
|
156 int i; |
77e7d77d96c7
* README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents:
7698
diff
changeset
|
157 for (i = INT_MAX - 10; i <= INT_MAX; i++) |
77e7d77d96c7
* README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents:
7698
diff
changeset
|
158 if (i + 1 < 0) |
77e7d77d96c7
* README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents:
7698
diff
changeset
|
159 { |
77e7d77d96c7
* README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents:
7698
diff
changeset
|
160 report_overflow (); |
77e7d77d96c7
* README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents:
7698
diff
changeset
|
161 break; |
77e7d77d96c7
* README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents:
7698
diff
changeset
|
162 } |
77e7d77d96c7
* README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents:
7698
diff
changeset
|
163 |
77e7d77d96c7
* README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents:
7698
diff
changeset
|
164 This exception is a concession to modern optimizing compilers, |
77e7d77d96c7
* README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents:
7698
diff
changeset
|
165 which can turn the above loop into code that executes the loop body |
77e7d77d96c7
* README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents:
7698
diff
changeset
|
166 11 times, even though wraparound arithmetic would cause the loop to |
77e7d77d96c7
* README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents:
7698
diff
changeset
|
167 iterate forever. |
4726
f6c445bbf87c
* README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents:
4661
diff
changeset
|
168 |
f6c445bbf87c
* README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents:
4661
diff
changeset
|
169 * There are no "holes" in integer values: all the bits of an integer |
f6c445bbf87c
* README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents:
4661
diff
changeset
|
170 contribute to its value in the usual way. |
f6c445bbf87c
* README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents:
4661
diff
changeset
|
171 |
f6c445bbf87c
* README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents:
4661
diff
changeset
|
172 * If two nonoverlapping objects have sizes S and T represented as |
f6c445bbf87c
* README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents:
4661
diff
changeset
|
173 size_t values, then S + T cannot overflow. This assumption is true |
f6c445bbf87c
* README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents:
4661
diff
changeset
|
174 for all practical hosts with flat address spaces, but it is not |
f6c445bbf87c
* README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents:
4661
diff
changeset
|
175 always true for hosts with segmented address spaces. |
f6c445bbf87c
* README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents:
4661
diff
changeset
|
176 |
4875
2f724c1e6ebe
Mention that S+T cannot overflow if S is the size of an existing
Paul Eggert <eggert@cs.ucla.edu>
parents:
4797
diff
changeset
|
177 * If an existing object has size S, and if T is sufficiently small |
2f724c1e6ebe
Mention that S+T cannot overflow if S is the size of an existing
Paul Eggert <eggert@cs.ucla.edu>
parents:
4797
diff
changeset
|
178 (e.g., 8 KiB), then S + T cannot overflow. Overflow in this case |
2f724c1e6ebe
Mention that S+T cannot overflow if S is the size of an existing
Paul Eggert <eggert@cs.ucla.edu>
parents:
4797
diff
changeset
|
179 would mean that the rest of your program fits into T bytes, which |
2f724c1e6ebe
Mention that S+T cannot overflow if S is the size of an existing
Paul Eggert <eggert@cs.ucla.edu>
parents:
4797
diff
changeset
|
180 can't happen in realistic flat-address-space hosts. |
2f724c1e6ebe
Mention that S+T cannot overflow if S is the size of an existing
Paul Eggert <eggert@cs.ucla.edu>
parents:
4797
diff
changeset
|
181 |
4726
f6c445bbf87c
* README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents:
4661
diff
changeset
|
182 * Objects with all bits zero are treated as 0 or NULL. For example, |
f6c445bbf87c
* README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents:
4661
diff
changeset
|
183 memset (A, 0, sizeof A) initializes an array A of pointers to NULL. |
f6c445bbf87c
* README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents:
4661
diff
changeset
|
184 |
4797 | 185 * Adding zero to a null pointer does not change the pointer. |
186 For example, 0 + (char *) NULL == (char *) NULL. | |
187 | |
4726
f6c445bbf87c
* README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents:
4661
diff
changeset
|
188 The above assumptions are not required by the C or POSIX standards but |
f6c445bbf87c
* README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents:
4661
diff
changeset
|
189 hold on all practical porting targets that we're familiar with. If |
f6c445bbf87c
* README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents:
4661
diff
changeset
|
190 you have a porting target where these assumptions are not true, we'd |
f6c445bbf87c
* README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents:
4661
diff
changeset
|
191 appreciate hearing of any fixes. We need fixes that do not increase |
f6c445bbf87c
* README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents:
4661
diff
changeset
|
192 runtime overhead on standard hosts and that are relatively easy to |
f6c445bbf87c
* README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents:
4661
diff
changeset
|
193 maintain. |
f6c445bbf87c
* README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents:
4661
diff
changeset
|
194 |
6019
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
195 With the above caveats, Gnulib code should port without problem to new |
4726
f6c445bbf87c
* README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents:
4661
diff
changeset
|
196 hosts, e.g., hosts conforming to C99 or to recent POSIX standards. |
6019
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
197 Hence Gnulib code should avoid using constructs (e.g., undeclared |
4726
f6c445bbf87c
* README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents:
4661
diff
changeset
|
198 functions return 'int') that do not conform to C99. |
4661
3d0185179f62
New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4415
diff
changeset
|
199 |
3563
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
200 High Quality |
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
201 ============ |
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
202 |
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
203 We will be developing a testsuite for these applications. The goal is |
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
204 to have a 100% firm interface so that maintainers can feel free to |
8597
c1709670004e
Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents:
8255
diff
changeset
|
205 update to the code in git at *any* time and know that their |
3563
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
206 application will not break. This means that before any change can be |
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
207 committed to the repository, a test suite program must be produced |
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
208 that exposes the bug for regression testing. All experimental work |
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
209 should be done on branches to help promote this. |
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
210 |
8597
c1709670004e
Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents:
8255
diff
changeset
|
211 git and CVS |
c1709670004e
Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents:
8255
diff
changeset
|
212 =========== |
3563
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
213 |
6019
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
214 Gnulib is available for anonymous checkout. In any Bourne-shell the |
3563
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
215 following should work: |
8597
c1709670004e
Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents:
8255
diff
changeset
|
216 $ git clone git://git.sv.gnu.org/gnulib |
c1709670004e
Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents:
8255
diff
changeset
|
217 Or, if you prefer the CVS-like 'cogito' frontend to plain 'git': |
c1709670004e
Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents:
8255
diff
changeset
|
218 $ cg clone git://git.sv.gnu.org/gnulib |
3563
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
219 |
8597
c1709670004e
Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents:
8255
diff
changeset
|
220 git resources: |
c1709670004e
Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents:
8255
diff
changeset
|
221 Overview: http://en.wikipedia.org/wiki/Git_(software) |
c1709670004e
Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents:
8255
diff
changeset
|
222 Homepage: http://git.or.cz/ |
c1709670004e
Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents:
8255
diff
changeset
|
223 Download: http://www.kernel.org/pub/software/scm/git/ |
c1709670004e
Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents:
8255
diff
changeset
|
224 Tutorial: http://git.or.cz/course/ |
c1709670004e
Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents:
8255
diff
changeset
|
225 http://www.kernel.org/pub/software/scm/git/docs/tutorial.html |
c1709670004e
Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents:
8255
diff
changeset
|
226 FAQ: http://git.or.cz/gitwiki/GitFaq |
c1709670004e
Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents:
8255
diff
changeset
|
227 |
c1709670004e
Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents:
8255
diff
changeset
|
228 cogito resources: |
c1709670004e
Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents:
8255
diff
changeset
|
229 Overview: http://en.wikipedia.org/wiki/Cogito_(software) |
c1709670004e
Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents:
8255
diff
changeset
|
230 Homepage: http://git.or.cz/cogito/ |
c1709670004e
Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents:
8255
diff
changeset
|
231 Download: http://kernel.org/pub/software/scm/cogito/ |
c1709670004e
Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents:
8255
diff
changeset
|
232 Tutorial: http://git.or.cz/course/ |
c1709670004e
Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents:
8255
diff
changeset
|
233 |
c1709670004e
Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents:
8255
diff
changeset
|
234 For those among us who have tightly limited disk space and a fast network |
c1709670004e
Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents:
8255
diff
changeset
|
235 connection, CVS checkouts are also supported: |
c1709670004e
Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents:
8255
diff
changeset
|
236 $ cvs -d :pserver:anoncvs@cvs.gnu.org:/cvsroot/gnulib login |
c1709670004e
Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents:
8255
diff
changeset
|
237 (Just hit Enter or Return when prompted for a password) |
c1709670004e
Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents:
8255
diff
changeset
|
238 $ cvs -d :pserver:anoncvs@cvs.gnu.org:/cvsroot/gnulib checkout gnulib |
3563
1a9a7f5d6536
Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff
changeset
|
239 |
6019
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
240 Gnulib is hosted on savannah.gnu.org. The project page is |
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
241 http://savannah.gnu.org/projects/gnulib. |
9336c75a2ed8
typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents:
6016
diff
changeset
|
242 |
7698
8f2cc37b285f
* README: Advise users that they might find the bug-gnulig@gnu.org
Paul Eggert <eggert@cs.ucla.edu>
parents:
7618
diff
changeset
|
243 Keeping Up-to-date |
8f2cc37b285f
* README: Advise users that they might find the bug-gnulig@gnu.org
Paul Eggert <eggert@cs.ucla.edu>
parents:
7618
diff
changeset
|
244 ================== |
8f2cc37b285f
* README: Advise users that they might find the bug-gnulig@gnu.org
Paul Eggert <eggert@cs.ucla.edu>
parents:
7618
diff
changeset
|
245 |
8597
c1709670004e
Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents:
8255
diff
changeset
|
246 The best way to work with Gnulib is to check it out of git. |
7698
8f2cc37b285f
* README: Advise users that they might find the bug-gnulig@gnu.org
Paul Eggert <eggert@cs.ucla.edu>
parents:
7618
diff
changeset
|
247 Subscribing to the bug-gnulib@gnu.org mailing list will help you to |
8f2cc37b285f
* README: Advise users that they might find the bug-gnulig@gnu.org
Paul Eggert <eggert@cs.ucla.edu>
parents:
7618
diff
changeset
|
248 plan when to update your local copy of Gnulib (which you use to |
8597
c1709670004e
Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents:
8255
diff
changeset
|
249 maintain your software) from git. To synchronize, you can use "git pull" |
c1709670004e
Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents:
8255
diff
changeset
|
250 or "cg update", or "cvs update -dP" if you are still using CVS. |
7698
8f2cc37b285f
* README: Advise users that they might find the bug-gnulig@gnu.org
Paul Eggert <eggert@cs.ucla.edu>
parents:
7618
diff
changeset
|
251 |
8f2cc37b285f
* README: Advise users that they might find the bug-gnulig@gnu.org
Paul Eggert <eggert@cs.ucla.edu>
parents:
7618
diff
changeset
|
252 Sometimes, using an updated version of Gnulib will require you to use |
8f2cc37b285f
* README: Advise users that they might find the bug-gnulig@gnu.org
Paul Eggert <eggert@cs.ucla.edu>
parents:
7618
diff
changeset
|
253 newer versions of GNU Automake or Autoconf. You may find it helpful |
8f2cc37b285f
* README: Advise users that they might find the bug-gnulig@gnu.org
Paul Eggert <eggert@cs.ucla.edu>
parents:
7618
diff
changeset
|
254 to join the autotools-announce mailing list to be advised of such |
8f2cc37b285f
* README: Advise users that they might find the bug-gnulig@gnu.org
Paul Eggert <eggert@cs.ucla.edu>
parents:
7618
diff
changeset
|
255 changes. |
8f2cc37b285f
* README: Advise users that they might find the bug-gnulig@gnu.org
Paul Eggert <eggert@cs.ucla.edu>
parents:
7618
diff
changeset
|
256 |
5073
d4c310e7951f
Mention that the 'free' module, LIA-1.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4875
diff
changeset
|
257 |
d4c310e7951f
Mention that the 'free' module, LIA-1.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4875
diff
changeset
|
258 ----- |
8597
c1709670004e
Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents:
8255
diff
changeset
|
259 Copyright (C) 2001, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. |
5073
d4c310e7951f
Mention that the 'free' module, LIA-1.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4875
diff
changeset
|
260 |
d4c310e7951f
Mention that the 'free' module, LIA-1.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4875
diff
changeset
|
261 This program is free software; you can redistribute it and/or modify |
d4c310e7951f
Mention that the 'free' module, LIA-1.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4875
diff
changeset
|
262 it under the terms of the GNU General Public License as published by |
d4c310e7951f
Mention that the 'free' module, LIA-1.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4875
diff
changeset
|
263 the Free Software Foundation; either version 2, or (at your option) |
d4c310e7951f
Mention that the 'free' module, LIA-1.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4875
diff
changeset
|
264 any later version. |
d4c310e7951f
Mention that the 'free' module, LIA-1.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4875
diff
changeset
|
265 |
d4c310e7951f
Mention that the 'free' module, LIA-1.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4875
diff
changeset
|
266 This program is distributed in the hope that it will be useful, |
d4c310e7951f
Mention that the 'free' module, LIA-1.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4875
diff
changeset
|
267 but WITHOUT ANY WARRANTY; without even the implied warranty of |
d4c310e7951f
Mention that the 'free' module, LIA-1.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4875
diff
changeset
|
268 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
d4c310e7951f
Mention that the 'free' module, LIA-1.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4875
diff
changeset
|
269 GNU General Public License for more details. |
d4c310e7951f
Mention that the 'free' module, LIA-1.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4875
diff
changeset
|
270 |
d4c310e7951f
Mention that the 'free' module, LIA-1.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4875
diff
changeset
|
271 You should have received a copy of the GNU General Public License |
d4c310e7951f
Mention that the 'free' module, LIA-1.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4875
diff
changeset
|
272 along with this program; if not, write to the Free Software Foundation, |
5848
a48fb0e98c8c
*** empty log message ***
Paul Eggert <eggert@cs.ucla.edu>
parents:
5258
diff
changeset
|
273 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ |