diff options
44 files changed, 777 insertions, 32 deletions
diff --git a/ChangeLog b/ChangeLog index 1fa12aaf8a..2ca5280064 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,53 @@ 2012-03-02 Roland McGrath <roland@hack.frob.com> [BZ #13792] + * manual/examples/README: New file, says the example source files + can be used under GPL>=2. + * manual/Makefile (%.c.texi): Eat the leading part of the file until a + line containing just "*/". + * manual/examples/add.c: Add copyright header (GPL>=2). + * manual/examples/argp-ex1.c: Likewise. + * manual/examples/argp-ex2.c: Likewise. + * manual/examples/argp-ex3.c: Likewise. + * manual/examples/argp-ex4.c: Likewise. + * manual/examples/atexit.c: Likewise. + * manual/examples/db.c: Likewise. + * manual/examples/dir.c: Likewise. + * manual/examples/dir2.c: Likewise. + * manual/examples/execinfo.c: Likewise. + * manual/examples/filecli.c: Likewise. + * manual/examples/filesrv.c: Likewise. + * manual/examples/fmtmsgexpl.c: Likewise. + * manual/examples/genpass.c: Likewise. + * manual/examples/inetcli.c: Likewise. + * manual/examples/inetsrv.c: Likewise. + * manual/examples/isockad.c: Likewise. + * manual/examples/longopt.c: Likewise. + * manual/examples/memopen.c: Likewise. + * manual/examples/memstrm.c: Likewise. + * manual/examples/mkfsock.c: Likewise. + * manual/examples/mkisock.c: Likewise. + * manual/examples/mygetpass.c: Likewise. + * manual/examples/pipe.c: Likewise. + * manual/examples/popen.c: Likewise. + * manual/examples/rprintf.c: Likewise. + * manual/examples/search.c: Likewise. + * manual/examples/select.c: Likewise. + * manual/examples/setjmp.c: Likewise. + * manual/examples/sigh1.c: Likewise. + * manual/examples/sigusr.c: Likewise. + * manual/examples/stpcpy.c: Likewise. + * manual/examples/strdupa.c: Likewise. + * manual/examples/strftim.c: Likewise. + * manual/examples/strncat.c: Likewise. + * manual/examples/subopt.c: Likewise. + * manual/examples/swapcontext.c: Likewise. + * manual/examples/termios.c: Likewise. + * manual/examples/testopt.c: Likewise. + * manual/examples/testpass.c: Likewise. + * manual/examples/timeval_subtract.c: Likewise. + + [BZ #13792] * manual/time.texi (Elapsed Time): Move timeval_subtract example function to ... * manual/timeval_subtract.c.texi: ... here, new file. diff --git a/manual/Makefile b/manual/Makefile index 0137afddd7..e291509a3a 100644 --- a/manual/Makefile +++ b/manual/Makefile @@ -122,7 +122,8 @@ stamp-version: $(common-objpfx)config.make # Generate Texinfo files from the C source for the example programs. %.c.texi: examples/%.c - sed -e 's,[{}],@&,g' \ + sed -e '1,/^\*\/$$/d' \ + -e 's,[{}],@&,g' \ -e 's,/\*\(@.*\)\*/,\1,g' \ -e 's,/\* *,/* @r{,g' -e 's, *\*/,} */,' \ -e 's/\(@[a-z][a-z]*\)@{\([^}]*\)@}/\1{\2}/g'\ diff --git a/manual/examples/README b/manual/examples/README new file mode 100644 index 0000000000..7d0070fdd5 --- /dev/null +++ b/manual/examples/README @@ -0,0 +1,8 @@ +These are source files for example code that appears in The GNU C +Library Reference Manual. + +While the manual itself is licensed under the terms of the GNU Free +Documentation License, you can use these source files on their own +under the terms of the GNU General Public License as published by +the Free Software Foundation; version 2 of the License, or (at your +option) any later version. diff --git a/manual/examples/add.c b/manual/examples/add.c index e4b1bba365..d4b9af9c99 100644 --- a/manual/examples/add.c +++ b/manual/examples/add.c @@ -1,3 +1,20 @@ +/* Example of a Variadic Function + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <stdarg.h> #include <stdio.h> diff --git a/manual/examples/argp-ex1.c b/manual/examples/argp-ex1.c index 931a8264a5..01c3639218 100644 --- a/manual/examples/argp-ex1.c +++ b/manual/examples/argp-ex1.c @@ -1,4 +1,19 @@ -/* Argp example #1 -- a minimal program using argp */ +/* Argp example #1 -- a minimal program using argp + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ /* This is (probably) the smallest possible program that uses argp. It won't do much except give an error diff --git a/manual/examples/argp-ex2.c b/manual/examples/argp-ex2.c index 097ce7622c..0e038bbc90 100644 --- a/manual/examples/argp-ex2.c +++ b/manual/examples/argp-ex2.c @@ -1,4 +1,19 @@ -/* Argp example #2 -- a pretty minimal program using argp */ +/* Argp example #2 -- a pretty minimal program using argp + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ /* This program doesn't use any options or arguments, but uses argp to be compliant with the GNU standard command line diff --git a/manual/examples/argp-ex3.c b/manual/examples/argp-ex3.c index d5896ee139..689d7cfdaa 100644 --- a/manual/examples/argp-ex3.c +++ b/manual/examples/argp-ex3.c @@ -1,4 +1,19 @@ -/* Argp example #3 -- a program with options and arguments using argp */ +/* Argp example #3 -- a program with options and arguments using argp + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ /* This program uses the same features as example 2, and uses options and arguments. diff --git a/manual/examples/argp-ex4.c b/manual/examples/argp-ex4.c index 2b61358c7e..b946dd106b 100644 --- a/manual/examples/argp-ex4.c +++ b/manual/examples/argp-ex4.c @@ -1,4 +1,19 @@ -/* Argp example #4 -- a program with somewhat more complicated options */ +/* Argp example #4 -- a program with somewhat more complicated options + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ /* This program uses the same features as example 3, but has more options, and somewhat more structure in the -help output. It diff --git a/manual/examples/atexit.c b/manual/examples/atexit.c index 42bba71126..5f07c87511 100644 --- a/manual/examples/atexit.c +++ b/manual/examples/atexit.c @@ -1,7 +1,24 @@ +/* Cleanups on Exit + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <stdio.h> #include <stdlib.h> -void +void bye (void) { puts ("Goodbye, cruel world...."); diff --git a/manual/examples/db.c b/manual/examples/db.c index 1a1cb0c0d7..d6405e50d1 100644 --- a/manual/examples/db.c +++ b/manual/examples/db.c @@ -1,3 +1,20 @@ +/* User and Group Database Example + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <grp.h> #include <pwd.h> #include <sys/types.h> diff --git a/manual/examples/dir.c b/manual/examples/dir.c index 8ab77dc34c..9ca63fec0e 100644 --- a/manual/examples/dir.c +++ b/manual/examples/dir.c @@ -1,3 +1,20 @@ +/* Simple Program to List a Directory + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + /*@group*/ #include <stdio.h> #include <sys/types.h> diff --git a/manual/examples/dir2.c b/manual/examples/dir2.c index a75c885742..7f095c84d9 100644 --- a/manual/examples/dir2.c +++ b/manual/examples/dir2.c @@ -1,3 +1,20 @@ +/* Simple Program to List a Directory, Mark II + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + /*@group*/ #include <stdio.h> #include <dirent.h> diff --git a/manual/examples/execinfo.c b/manual/examples/execinfo.c index 5a04901957..18a3a29731 100644 --- a/manual/examples/execinfo.c +++ b/manual/examples/execinfo.c @@ -1,3 +1,20 @@ +/* Obtain a backtrace and print it. + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <execinfo.h> #include <stdio.h> #include <stdlib.h> diff --git a/manual/examples/filecli.c b/manual/examples/filecli.c index 9f64445fa9..71dc461800 100644 --- a/manual/examples/filecli.c +++ b/manual/examples/filecli.c @@ -1,3 +1,20 @@ +/* Example of Reading Datagrams + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <stdio.h> #include <errno.h> #include <unistd.h> diff --git a/manual/examples/filesrv.c b/manual/examples/filesrv.c index 32507c6555..e1f80aa7bd 100644 --- a/manual/examples/filesrv.c +++ b/manual/examples/filesrv.c @@ -1,3 +1,20 @@ +/* Datagram Socket Example + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <stdio.h> #include <errno.h> #include <stdlib.h> diff --git a/manual/examples/fmtmsgexpl.c b/manual/examples/fmtmsgexpl.c index 42b8bb517f..fd7b16bb25 100644 --- a/manual/examples/fmtmsgexpl.c +++ b/manual/examples/fmtmsgexpl.c @@ -1,3 +1,20 @@ +/* How to use fmtmsg and addseverity. + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <fmtmsg.h> int diff --git a/manual/examples/genpass.c b/manual/examples/genpass.c index a7626dbed5..cb4d99f069 100644 --- a/manual/examples/genpass.c +++ b/manual/examples/genpass.c @@ -1,31 +1,48 @@ +/* Encrypting Passwords + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <stdio.h> #include <time.h> #include <unistd.h> #include <crypt.h> -int +int main(void) { unsigned long seed[2]; char salt[] = "$1$........"; - const char *const seedchars = + const char *const seedchars = "./0123456789ABCDEFGHIJKLMNOPQRST" "UVWXYZabcdefghijklmnopqrstuvwxyz"; char *password; int i; - - /* Generate a (not very) random seed. + + /* Generate a (not very) random seed. You should do it better than this... */ seed[0] = time(NULL); seed[1] = getpid() ^ (seed[0] >> 14 & 0x30000); - + /* Turn it into printable characters from `seedchars'. */ for (i = 0; i < 8; i++) salt[3+i] = seedchars[(seed[i/5] >> (i%5)*6) & 0x3f]; - + /* Read in the user's password and encrypt it. */ password = crypt(getpass("Password:"), salt); - + /* Print the results. */ puts(password); return 0; diff --git a/manual/examples/inetcli.c b/manual/examples/inetcli.c index 35dfb379e8..afd4a91a6a 100644 --- a/manual/examples/inetcli.c +++ b/manual/examples/inetcli.c @@ -1,3 +1,20 @@ +/* Byte Stream Socket Example + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <stdio.h> #include <errno.h> #include <stdlib.h> @@ -11,7 +28,7 @@ #define MESSAGE "Yow!!! Are we having fun yet?!?" #define SERVERHOST "mescaline.gnu.org" -void +void write_to_server (int filedes) { int nbytes; diff --git a/manual/examples/inetsrv.c b/manual/examples/inetsrv.c index 3d544c005c..d245f0d111 100644 --- a/manual/examples/inetsrv.c +++ b/manual/examples/inetsrv.c @@ -1,3 +1,20 @@ +/* Byte Stream Connection Server Example + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <stdio.h> #include <errno.h> #include <stdlib.h> diff --git a/manual/examples/isockad.c b/manual/examples/isockad.c index 9c21149a85..b7c73a7f41 100644 --- a/manual/examples/isockad.c +++ b/manual/examples/isockad.c @@ -1,10 +1,27 @@ +/* Internet Socket Example using sockaddr_in. + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <stdio.h> #include <stdlib.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> -void +void init_sockaddr (struct sockaddr_in *name, const char *hostname, uint16_t port) @@ -14,7 +31,7 @@ init_sockaddr (struct sockaddr_in *name, name->sin_family = AF_INET; name->sin_port = htons (port); hostinfo = gethostbyname (hostname); - if (hostinfo == NULL) + if (hostinfo == NULL) { fprintf (stderr, "Unknown host %s.\n", hostname); exit (EXIT_FAILURE); diff --git a/manual/examples/longopt.c b/manual/examples/longopt.c index 989e88713e..6e7d4d939a 100644 --- a/manual/examples/longopt.c +++ b/manual/examples/longopt.c @@ -1,3 +1,20 @@ +/* Example of Parsing Long Options with getopt_long. + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <stdio.h> #include <stdlib.h> #include <getopt.h> diff --git a/manual/examples/memopen.c b/manual/examples/memopen.c index 682830fe5f..3fa29d5219 100644 --- a/manual/examples/memopen.c +++ b/manual/examples/memopen.c @@ -1,3 +1,20 @@ +/* String Streams + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <stdio.h> static char buffer[] = "foobar"; diff --git a/manual/examples/memstrm.c b/manual/examples/memstrm.c index 1674c36e0b..be8366064f 100644 --- a/manual/examples/memstrm.c +++ b/manual/examples/memstrm.c @@ -1,3 +1,20 @@ +/* open_memstream example. + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <stdio.h> int diff --git a/manual/examples/mkfsock.c b/manual/examples/mkfsock.c index 615ecd8684..e5c3b2847f 100644 --- a/manual/examples/mkfsock.c +++ b/manual/examples/mkfsock.c @@ -1,3 +1,20 @@ +/* Example of Local-Namespace Sockets + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <stddef.h> #include <stdio.h> #include <errno.h> diff --git a/manual/examples/mkisock.c b/manual/examples/mkisock.c index 2fd8b3d2f9..68cf348f1b 100644 --- a/manual/examples/mkisock.c +++ b/manual/examples/mkisock.c @@ -1,9 +1,26 @@ +/* Internet Socket Example + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <stdio.h> #include <stdlib.h> #include <sys/socket.h> #include <netinet/in.h> -int +int make_socket (uint16_t port) { int sock; diff --git a/manual/examples/mygetpass.c b/manual/examples/mygetpass.c index 6fe06f4637..a927a13ac1 100644 --- a/manual/examples/mygetpass.c +++ b/manual/examples/mygetpass.c @@ -1,3 +1,20 @@ +/* Reading Passwords + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <termios.h> #include <stdio.h> @@ -14,12 +31,12 @@ my_getpass (char **lineptr, size_t *n, FILE *stream) new.c_lflag &= ~ECHO; if (tcsetattr (fileno (stream), TCSAFLUSH, &new) != 0) return -1; - + /* Read the password. */ nread = getline (lineptr, n, stream); /* Restore terminal. */ (void) tcsetattr (fileno (stream), TCSAFLUSH, &old); - + return nread; } diff --git a/manual/examples/pipe.c b/manual/examples/pipe.c index 92d339a7b9..b03c90f8f0 100644 --- a/manual/examples/pipe.c +++ b/manual/examples/pipe.c @@ -1,3 +1,20 @@ +/* Creating a Pipe + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <sys/types.h> #include <unistd.h> #include <stdio.h> diff --git a/manual/examples/popen.c b/manual/examples/popen.c index 1b9ee826b4..6716dc2463 100644 --- a/manual/examples/popen.c +++ b/manual/examples/popen.c @@ -1,3 +1,20 @@ +/* Pipe to a Subprocess + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <stdio.h> #include <stdlib.h> diff --git a/manual/examples/rprintf.c b/manual/examples/rprintf.c index 2b8f6bfe74..14de9d2432 100644 --- a/manual/examples/rprintf.c +++ b/manual/examples/rprintf.c @@ -1,3 +1,20 @@ +/* Printf Extension Example + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <stdio.h> #include <stdlib.h> #include <printf.h> diff --git a/manual/examples/search.c b/manual/examples/search.c index 182e6e4a3f..e37656721b 100644 --- a/manual/examples/search.c +++ b/manual/examples/search.c @@ -1,3 +1,20 @@ +/* Searching and Sorting Example + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <stdlib.h> #include <stdio.h> #include <string.h> @@ -35,7 +52,7 @@ int count = sizeof (muppets) / sizeof (struct critter); /* This is the comparison function used for sorting and searching. */ -int +int critter_cmp (const struct critter *c1, const struct critter *c2) { return strcmp (c1->name, c2->name); @@ -44,7 +61,7 @@ critter_cmp (const struct critter *c1, const struct critter *c2) /* Print information about a critter. */ -void +void print_critter (const struct critter *c) { printf ("%s, the %s\n", c->name, c->species); @@ -54,7 +71,7 @@ print_critter (const struct critter *c) /*@group*/ /* Do the lookup into the sorted array. */ -void +void find_critter (const char *name) { struct critter target, *result; diff --git a/manual/examples/select.c b/manual/examples/select.c index a65ed77503..635163026c 100644 --- a/manual/examples/select.c +++ b/manual/examples/select.c @@ -1,3 +1,20 @@ +/* Waiting for Input or Output + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + /*@group*/ #include <errno.h> #include <stdio.h> diff --git a/manual/examples/setjmp.c b/manual/examples/setjmp.c index 023339c602..ffd7744c1a 100644 --- a/manual/examples/setjmp.c +++ b/manual/examples/setjmp.c @@ -1,10 +1,27 @@ +/* Introduction to Non-Local Exits + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <setjmp.h> #include <stdlib.h> #include <stdio.h> jmp_buf main_loop; -void +void abort_to_main_loop (int status) { longjmp (main_loop, status); @@ -21,7 +38,7 @@ main (void) } -void +void do_command (void) { char buffer[128]; diff --git a/manual/examples/sigh1.c b/manual/examples/sigh1.c index 2c6e95b9c9..d05afd9af9 100644 --- a/manual/examples/sigh1.c +++ b/manual/examples/sigh1.c @@ -1,3 +1,20 @@ +/* Signal Handlers that Return + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <signal.h> #include <stdio.h> #include <stdlib.h> @@ -6,14 +23,14 @@ volatile sig_atomic_t keep_going = 1; /* The signal handler just clears the flag and re-enables itself. */ -void +void catch_alarm (int sig) { keep_going = 0; signal (sig, catch_alarm); } -void +void do_stuff (void) { puts ("Doing stuff while waiting for alarm...."); diff --git a/manual/examples/sigusr.c b/manual/examples/sigusr.c index 11e3ceee8f..5bfbc80716 100644 --- a/manual/examples/sigusr.c +++ b/manual/examples/sigusr.c @@ -1,3 +1,20 @@ +/* Using kill for Communication + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + /*@group*/ #include <signal.h> #include <stdio.h> @@ -8,14 +25,14 @@ /* When a @code{SIGUSR1} signal arrives, set this variable. */ volatile sig_atomic_t usr_interrupt = 0; -void +void synch_signal (int sig) { usr_interrupt = 1; } /* The child process executes this function. */ -void +void child_function (void) { /* Perform initialization. */ diff --git a/manual/examples/stpcpy.c b/manual/examples/stpcpy.c index b83226354b..f94cb636b1 100644 --- a/manual/examples/stpcpy.c +++ b/manual/examples/stpcpy.c @@ -1,3 +1,20 @@ +/* stpcpy example. + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <string.h> #include <stdio.h> diff --git a/manual/examples/strdupa.c b/manual/examples/strdupa.c index 7d6ef39947..f01e115245 100644 --- a/manual/examples/strdupa.c +++ b/manual/examples/strdupa.c @@ -1,3 +1,20 @@ +/* strdupa example. + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <paths.h> #include <string.h> #include <stdio.h> diff --git a/manual/examples/strftim.c b/manual/examples/strftim.c index 7f95ef02ad..93428177e4 100644 --- a/manual/examples/strftim.c +++ b/manual/examples/strftim.c @@ -1,3 +1,20 @@ +/* Time Functions Example + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <time.h> #include <stdio.h> diff --git a/manual/examples/strncat.c b/manual/examples/strncat.c index 948d662a4e..fb7b7078a2 100644 --- a/manual/examples/strncat.c +++ b/manual/examples/strncat.c @@ -1,3 +1,20 @@ +/* strncat example. + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <string.h> #include <stdio.h> diff --git a/manual/examples/subopt.c b/manual/examples/subopt.c index a87bee1669..ecf75f9a91 100644 --- a/manual/examples/subopt.c +++ b/manual/examples/subopt.c @@ -1,3 +1,20 @@ +/* Parsing of Suboptions Example + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <stdio.h> #include <stdlib.h> #include <unistd.h> diff --git a/manual/examples/swapcontext.c b/manual/examples/swapcontext.c index f733510f88..c993d1450a 100644 --- a/manual/examples/swapcontext.c +++ b/manual/examples/swapcontext.c @@ -1,3 +1,20 @@ +/* Complete Context Control + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <signal.h> #include <stdio.h> #include <stdlib.h> diff --git a/manual/examples/termios.c b/manual/examples/termios.c index 6db5990a0c..40d4325b5d 100644 --- a/manual/examples/termios.c +++ b/manual/examples/termios.c @@ -1,3 +1,20 @@ +/* Noncanonical Mode Example + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <unistd.h> #include <stdio.h> #include <stdlib.h> @@ -7,13 +24,13 @@ struct termios saved_attributes; -void +void reset_input_mode (void) { tcsetattr (STDIN_FILENO, TCSANOW, &saved_attributes); } -void +void set_input_mode (void) { struct termios tattr; diff --git a/manual/examples/testopt.c b/manual/examples/testopt.c index 44ca8e4ad0..081742d85d 100644 --- a/manual/examples/testopt.c +++ b/manual/examples/testopt.c @@ -1,3 +1,20 @@ +/* Example of Parsing Arguments with getopt. + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + /*@group*/ #include <ctype.h> #include <stdio.h> diff --git a/manual/examples/testpass.c b/manual/examples/testpass.c index 5bd616d2a0..4e05a90598 100644 --- a/manual/examples/testpass.c +++ b/manual/examples/testpass.c @@ -1,9 +1,26 @@ +/* Verify a password. + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + #include <stdio.h> #include <string.h> #include <unistd.h> #include <crypt.h> -int +int main(void) { /* Hashed form of "GNU libc manual". */ @@ -11,7 +28,7 @@ main(void) char *result; int ok; - + /*@group*/ /* Read in the user's password and encrypt it, passing the expected password in as the salt. */ diff --git a/manual/examples/timeval_subtract.c b/manual/examples/timeval_subtract.c index 683322ffeb..f0f237568f 100644 --- a/manual/examples/timeval_subtract.c +++ b/manual/examples/timeval_subtract.c @@ -1,3 +1,20 @@ +/* struct timeval subtraction. + Copyright (C) 1991-2012 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 + of the License, 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, if not, see <http://www.gnu.org/licenses/>. +*/ + /* Subtract the `struct timeval' values X and Y, storing the result in RESULT. Return 1 if the difference is negative, otherwise 0. */ |