aboutsummaryrefslogtreecommitdiff
path: root/manual/examples
diff options
context:
space:
mode:
Diffstat (limited to 'manual/examples')
-rw-r--r--manual/examples/README8
-rw-r--r--manual/examples/add.c47
-rw-r--r--manual/examples/argp-ex1.c31
-rw-r--r--manual/examples/argp-ex2.c61
-rw-r--r--manual/examples/argp-ex3.c169
-rw-r--r--manual/examples/argp-ex4.c183
-rw-r--r--manual/examples/atexit.c32
-rw-r--r--manual/examples/db.c69
-rw-r--r--manual/examples/dir.c41
-rw-r--r--manual/examples/dir2.c46
-rw-r--r--manual/examples/execinfo.c54
-rw-r--r--manual/examples/filecli.c71
-rw-r--r--manual/examples/filesrv.c65
-rw-r--r--manual/examples/fmtmsgexpl.c29
-rw-r--r--manual/examples/genpass.c49
-rw-r--r--manual/examples/inetcli.c76
-rw-r--r--manual/examples/inetsrv.c120
-rw-r--r--manual/examples/isockad.c40
-rw-r--r--manual/examples/longopt.c113
-rw-r--r--manual/examples/memopen.c34
-rw-r--r--manual/examples/memstrm.c36
-rw-r--r--manual/examples/mkdirent.c42
-rw-r--r--manual/examples/mkfsock.c62
-rw-r--r--manual/examples/mkisock.c48
-rw-r--r--manual/examples/mygetpass.c42
-rw-r--r--manual/examples/ofdlocks.c77
-rw-r--r--manual/examples/pipe.c87
-rw-r--r--manual/examples/popen.c55
-rw-r--r--manual/examples/rprintf.c84
-rw-r--r--manual/examples/search.c113
-rw-r--r--manual/examples/select.c58
-rw-r--r--manual/examples/setjmp.c49
-rw-r--r--manual/examples/sigh1.c53
-rw-r--r--manual/examples/sigusr.c78
-rw-r--r--manual/examples/stpcpy.c30
-rw-r--r--manual/examples/strdupa.c36
-rw-r--r--manual/examples/strftim.c48
-rw-r--r--manual/examples/subopt.c95
-rw-r--r--manual/examples/swapcontext.c116
-rw-r--r--manual/examples/termios.c77
-rw-r--r--manual/examples/testopt.c72
-rw-r--r--manual/examples/testpass.c43
-rw-r--r--manual/examples/timeval_subtract.c44
43 files changed, 0 insertions, 2783 deletions
diff --git a/manual/examples/README b/manual/examples/README
deleted file mode 100644
index 7d0070fdd5..0000000000
--- a/manual/examples/README
+++ /dev/null
@@ -1,8 +0,0 @@
-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
deleted file mode 100644
index 9261f105da..0000000000
--- a/manual/examples/add.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Example of a Variadic Function
- Copyright (C) 1991-2017 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>
-
-int
-add_em_up (int count,...)
-{
- va_list ap;
- int i, sum;
-
- va_start (ap, count); /* Initialize the argument list. */
-
- sum = 0;
- for (i = 0; i < count; i++)
- sum += va_arg (ap, int); /* Get the next argument value. */
-
- va_end (ap); /* Clean up. */
- return sum;
-}
-
-int
-main (void)
-{
- /* This call prints 16. */
- printf ("%d\n", add_em_up (3, 5, 5, 6));
-
- /* This call prints 55. */
- printf ("%d\n", add_em_up (10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
-
- return 0;
-}
diff --git a/manual/examples/argp-ex1.c b/manual/examples/argp-ex1.c
deleted file mode 100644
index 9058595e9b..0000000000
--- a/manual/examples/argp-ex1.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Argp example #1 -- a minimal program using argp
- Copyright (C) 1991-2017 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
- messages and exit when there are any arguments, and print
- a (rather pointless) messages for --help. */
-
-#include <stdlib.h>
-#include <argp.h>
-
-int
-main (int argc, char **argv)
-{
- argp_parse (0, argc, argv, 0, 0, 0);
- exit (0);
-}
diff --git a/manual/examples/argp-ex2.c b/manual/examples/argp-ex2.c
deleted file mode 100644
index 83bb85b107..0000000000
--- a/manual/examples/argp-ex2.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/* Argp example #2 -- a pretty minimal program using argp
- Copyright (C) 1991-2017 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
- format.
-
- In addition to making sure no arguments are given, and
- implementing a --help option, this example will have a
- --version option, and will put the given documentation string
- and bug address in the --help output, as per GNU standards.
-
- The variable ARGP contains the argument parser specification;
- adding fields to this structure is the way most parameters are
- passed to argp_parse (the first three fields are usually used,
- but not in this small program). There are also two global
- variables that argp knows about defined here,
- ARGP_PROGRAM_VERSION and ARGP_PROGRAM_BUG_ADDRESS (they are
- global variables because they will almost always be constant
- for a given program, even if it uses different argument
- parsers for various tasks). */
-
-#include <stdlib.h>
-#include <argp.h>
-
-const char *argp_program_version =
- "argp-ex2 1.0";
-const char *argp_program_bug_address =
- "<bug-gnu-utils@@gnu.org>";
-
-/* Program documentation. */
-static char doc[] =
- "Argp example #2 -- a pretty minimal program using argp";
-
-/* Our argument parser. The @code{options}, @code{parser}, and
- @code{args_doc} fields are zero because we have neither options or
- arguments; @code{doc} and @code{argp_program_bug_address} will be
- used in the output for @samp{--help}, and the @samp{--version}
- option will print out @code{argp_program_version}. */
-static struct argp argp = { 0, 0, 0, doc };
-
-int
-main (int argc, char **argv)
-{
- argp_parse (&argp, argc, argv, 0, 0, 0);
- exit (0);
-}
diff --git a/manual/examples/argp-ex3.c b/manual/examples/argp-ex3.c
deleted file mode 100644
index e37ab73408..0000000000
--- a/manual/examples/argp-ex3.c
+++ /dev/null
@@ -1,169 +0,0 @@
-/* Argp example #3 -- a program with options and arguments using argp
- Copyright (C) 1991-2017 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.
-
- We now use the first four fields in ARGP, so here's a description of them:
- OPTIONS -- A pointer to a vector of struct argp_option (see below)
- PARSER -- A function to parse a single option, called by argp
- ARGS_DOC -- A string describing how the non-option arguments should look
- DOC -- A descriptive string about this program; if it contains a
- vertical tab character (\v), the part after it will be
- printed *following* the options
-
- The function PARSER takes the following arguments:
- KEY -- An integer specifying which option this is (taken
- from the KEY field in each struct argp_option), or
- a special key specifying something else; the only
- special keys we use here are ARGP_KEY_ARG, meaning
- a non-option argument, and ARGP_KEY_END, meaning
- that all arguments have been parsed
- ARG -- For an option KEY, the string value of its
- argument, or NULL if it has none
- STATE-- A pointer to a struct argp_state, containing
- various useful information about the parsing state; used here
- are the INPUT field, which reflects the INPUT argument to
- argp_parse, and the ARG_NUM field, which is the number of the
- current non-option argument being parsed
- It should return either 0, meaning success, ARGP_ERR_UNKNOWN, meaning the
- given KEY wasn't recognized, or an errno value indicating some other
- error.
-
- Note that in this example, main uses a structure to communicate with the
- parse_opt function, a pointer to which it passes in the INPUT argument to
- argp_parse. Of course, it's also possible to use global variables
- instead, but this is somewhat more flexible.
-
- The OPTIONS field contains a pointer to a vector of struct argp_option's;
- that structure has the following fields (if you assign your option
- structures using array initialization like this example, unspecified
- fields will be defaulted to 0, and need not be specified):
- NAME -- The name of this option's long option (may be zero)
- KEY -- The KEY to pass to the PARSER function when parsing this option,
- *and* the name of this option's short option, if it is a
- printable ascii character
- ARG -- The name of this option's argument, if any
- FLAGS -- Flags describing this option; some of them are:
- OPTION_ARG_OPTIONAL -- The argument to this option is optional
- OPTION_ALIAS -- This option is an alias for the
- previous option
- OPTION_HIDDEN -- Don't show this option in --help output
- DOC -- A documentation string for this option, shown in --help output
-
- An options vector should be terminated by an option with all fields zero. */
-
-#include <stdlib.h>
-#include <argp.h>
-
-const char *argp_program_version =
- "argp-ex3 1.0";
-const char *argp_program_bug_address =
- "<bug-gnu-utils@@gnu.org>";
-
-/* Program documentation. */
-static char doc[] =
- "Argp example #3 -- a program with options and arguments using argp";
-
-/* A description of the arguments we accept. */
-static char args_doc[] = "ARG1 ARG2";
-
-/* The options we understand. */
-static struct argp_option options[] = {
- {"verbose", 'v', 0, 0, "Produce verbose output" },
- {"quiet", 'q', 0, 0, "Don't produce any output" },
- {"silent", 's', 0, OPTION_ALIAS },
- {"output", 'o', "FILE", 0,
- "Output to FILE instead of standard output" },
- { 0 }
-};
-
-/* Used by @code{main} to communicate with @code{parse_opt}. */
-struct arguments
-{
- char *args[2]; /* @var{arg1} & @var{arg2} */
- int silent, verbose;
- char *output_file;
-};
-
-/* Parse a single option. */
-static error_t
-parse_opt (int key, char *arg, struct argp_state *state)
-{
- /* Get the @var{input} argument from @code{argp_parse}, which we
- know is a pointer to our arguments structure. */
- struct arguments *arguments = state->input;
-
- switch (key)
- {
- case 'q': case 's':
- arguments->silent = 1;
- break;
- case 'v':
- arguments->verbose = 1;
- break;
- case 'o':
- arguments->output_file = arg;
- break;
-
- case ARGP_KEY_ARG:
- if (state->arg_num >= 2)
- /* Too many arguments. */
- argp_usage (state);
-
- arguments->args[state->arg_num] = arg;
-
- break;
-
- case ARGP_KEY_END:
- if (state->arg_num < 2)
- /* Not enough arguments. */
- argp_usage (state);
- break;
-
- default:
- return ARGP_ERR_UNKNOWN;
- }
- return 0;
-}
-
-/* Our argp parser. */
-static struct argp argp = { options, parse_opt, args_doc, doc };
-
-int
-main (int argc, char **argv)
-{
- struct arguments arguments;
-
- /* Default values. */
- arguments.silent = 0;
- arguments.verbose = 0;
- arguments.output_file = "-";
-
- /* Parse our arguments; every option seen by @code{parse_opt} will
- be reflected in @code{arguments}. */
- argp_parse (&argp, argc, argv, 0, 0, &arguments);
-
- printf ("ARG1 = %s\nARG2 = %s\nOUTPUT_FILE = %s\n"
- "VERBOSE = %s\nSILENT = %s\n",
- arguments.args[0], arguments.args[1],
- arguments.output_file,
- arguments.verbose ? "yes" : "no",
- arguments.silent ? "yes" : "no");
-
- exit (0);
-}
diff --git a/manual/examples/argp-ex4.c b/manual/examples/argp-ex4.c
deleted file mode 100644
index 37218af23e..0000000000
--- a/manual/examples/argp-ex4.c
+++ /dev/null
@@ -1,183 +0,0 @@
-/* Argp example #4 -- a program with somewhat more complicated options
- Copyright (C) 1991-2017 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
- also shows how you can `steal' the remainder of the input
- arguments past a certain point, for programs that accept a
- list of items. It also shows the special argp KEY value
- ARGP_KEY_NO_ARGS, which is only given if no non-option
- arguments were supplied to the program.
-
- For structuring the help output, two features are used,
- *headers* which are entries in the options vector with the
- first four fields being zero, and a two part documentation
- string (in the variable DOC), which allows documentation both
- before and after the options; the two parts of DOC are
- separated by a vertical-tab character ('\v', or '\013'). By
- convention, the documentation before the options is just a
- short string saying what the program does, and that afterwards
- is longer, describing the behavior in more detail. All
- documentation strings are automatically filled for output,
- although newlines may be included to force a line break at a
- particular point. All documentation strings are also passed to
- the `gettext' function, for possible translation into the
- current locale. */
-
-#include <stdlib.h>
-#include <error.h>
-#include <argp.h>
-
-const char *argp_program_version =
- "argp-ex4 1.0";
-const char *argp_program_bug_address =
- "<bug-gnu-utils@@prep.ai.mit.edu>";
-
-/* Program documentation. */
-static char doc[] =
- "Argp example #4 -- a program with somewhat more complicated\
-options\
-\vThis part of the documentation comes *after* the options;\
- note that the text is automatically filled, but it's possible\
- to force a line-break, e.g.\n<-- here.";
-
-/* A description of the arguments we accept. */
-static char args_doc[] = "ARG1 [STRING...]";
-
-/* Keys for options without short-options. */
-#define OPT_ABORT 1 /* --abort */
-
-/* The options we understand. */
-static struct argp_option options[] = {
- {"verbose", 'v', 0, 0, "Produce verbose output" },
- {"quiet", 'q', 0, 0, "Don't produce any output" },
- {"silent", 's', 0, OPTION_ALIAS },
- {"output", 'o', "FILE", 0,
- "Output to FILE instead of standard output" },
-
- {0,0,0,0, "The following options should be grouped together:" },
- {"repeat", 'r', "COUNT", OPTION_ARG_OPTIONAL,
- "Repeat the output COUNT (default 10) times"},
- {"abort", OPT_ABORT, 0, 0, "Abort before showing any output"},
-
- { 0 }
-};
-
-/* Used by @code{main} to communicate with @code{parse_opt}. */
-struct arguments
-{
- char *arg1; /* @var{arg1} */
- char **strings; /* [@var{string}@dots{}] */
- int silent, verbose, abort; /* @samp{-s}, @samp{-v}, @samp{--abort} */
- char *output_file; /* @var{file} arg to @samp{--output} */
- int repeat_count; /* @var{count} arg to @samp{--repeat} */
-};
-
-/* Parse a single option. */
-static error_t
-parse_opt (int key, char *arg, struct argp_state *state)
-{
- /* Get the @code{input} argument from @code{argp_parse}, which we
- know is a pointer to our arguments structure. */
- struct arguments *arguments = state->input;
-
- switch (key)
- {
- case 'q': case 's':
- arguments->silent = 1;
- break;
- case 'v':
- arguments->verbose = 1;
- break;
- case 'o':
- arguments->output_file = arg;
- break;
- case 'r':
- arguments->repeat_count = arg ? atoi (arg) : 10;
- break;
- case OPT_ABORT:
- arguments->abort = 1;
- break;
-
- case ARGP_KEY_NO_ARGS:
- argp_usage (state);
-
- case ARGP_KEY_ARG:
- /* Here we know that @code{state->arg_num == 0}, since we
- force argument parsing to end before any more arguments can
- get here. */
- arguments->arg1 = arg;
-
- /* Now we consume all the rest of the arguments.
- @code{state->next} is the index in @code{state->argv} of the
- next argument to be parsed, which is the first @var{string}
- we're interested in, so we can just use
- @code{&state->argv[state->next]} as the value for
- arguments->strings.
-
- @emph{In addition}, by setting @code{state->next} to the end
- of the arguments, we can force argp to stop parsing here and
- return. */
- arguments->strings = &state->argv[state->next];
- state->next = state->argc;
-
- break;
-
- default:
- return ARGP_ERR_UNKNOWN;
- }
- return 0;
-}
-
-/* Our argp parser. */
-static struct argp argp = { options, parse_opt, args_doc, doc };
-
-int
-main (int argc, char **argv)
-{
- int i, j;
- struct arguments arguments;
-
- /* Default values. */
- arguments.silent = 0;
- arguments.verbose = 0;
- arguments.output_file = "-";
- arguments.repeat_count = 1;
- arguments.abort = 0;
-
- /* Parse our arguments; every option seen by @code{parse_opt} will be
- reflected in @code{arguments}. */
- argp_parse (&argp, argc, argv, 0, 0, &arguments);
-
- if (arguments.abort)
- error (10, 0, "ABORTED");
-
- for (i = 0; i < arguments.repeat_count; i++)
- {
- printf ("ARG1 = %s\n", arguments.arg1);
- printf ("STRINGS = ");
- for (j = 0; arguments.strings[j]; j++)
- printf (j == 0 ? "%s" : ", %s", arguments.strings[j]);
- printf ("\n");
- printf ("OUTPUT_FILE = %s\nVERBOSE = %s\nSILENT = %s\n",
- arguments.output_file,
- arguments.verbose ? "yes" : "no",
- arguments.silent ? "yes" : "no");
- }
-
- exit (0);
-}
diff --git a/manual/examples/atexit.c b/manual/examples/atexit.c
deleted file mode 100644
index fe14930ef8..0000000000
--- a/manual/examples/atexit.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Cleanups on Exit
- Copyright (C) 1991-2017 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
-bye (void)
-{
- puts ("Goodbye, cruel world....");
-}
-
-int
-main (void)
-{
- atexit (bye);
- exit (EXIT_SUCCESS);
-}
diff --git a/manual/examples/db.c b/manual/examples/db.c
deleted file mode 100644
index 652662682d..0000000000
--- a/manual/examples/db.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/* User and Group Database Example
- Copyright (C) 1991-2017 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>
-#include <unistd.h>
-#include <stdlib.h>
-
-int
-main (void)
-{
- uid_t me;
- struct passwd *my_passwd;
- struct group *my_group;
- char **members;
-
- /* Get information about the user ID. */
- me = getuid ();
- my_passwd = getpwuid (me);
- if (!my_passwd)
- {
- printf ("Couldn't find out about user %d.\n", (int) me);
- exit (EXIT_FAILURE);
- }
-
- /* Print the information. */
- printf ("I am %s.\n", my_passwd->pw_gecos);
- printf ("My login name is %s.\n", my_passwd->pw_name);
- printf ("My uid is %d.\n", (int) (my_passwd->pw_uid));
- printf ("My home directory is %s.\n", my_passwd->pw_dir);
- printf ("My default shell is %s.\n", my_passwd->pw_shell);
-
- /* Get information about the default group ID. */
- my_group = getgrgid (my_passwd->pw_gid);
- if (!my_group)
- {
- printf ("Couldn't find out about group %d.\n",
- (int) my_passwd->pw_gid);
- exit (EXIT_FAILURE);
- }
-
- /* Print the information. */
- printf ("My default group is %s (%d).\n",
- my_group->gr_name, (int) (my_passwd->pw_gid));
- printf ("The members of this group are:\n");
- members = my_group->gr_mem;
- while (*members)
- {
- printf (" %s\n", *(members));
- members++;
- }
-
- return EXIT_SUCCESS;
-}
diff --git a/manual/examples/dir.c b/manual/examples/dir.c
deleted file mode 100644
index da6eef2a46..0000000000
--- a/manual/examples/dir.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Simple Program to List a Directory
- Copyright (C) 1991-2017 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>
-#include <dirent.h>
-/*@end group*/
-
-int
-main (void)
-{
- DIR *dp;
- struct dirent *ep;
-
- dp = opendir ("./");
- if (dp != NULL)
- {
- while (ep = readdir (dp))
- puts (ep->d_name);
- (void) closedir (dp);
- }
- else
- perror ("Couldn't open the directory");
-
- return 0;
-}
diff --git a/manual/examples/dir2.c b/manual/examples/dir2.c
deleted file mode 100644
index a8390822b4..0000000000
--- a/manual/examples/dir2.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Simple Program to List a Directory, Mark II
- Copyright (C) 1991-2017 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>
-/*@end group*/
-
-static int
-one (const struct dirent *unused)
-{
- return 1;
-}
-
-int
-main (void)
-{
- struct dirent **eps;
- int n;
-
- n = scandir ("./", &eps, one, alphasort);
- if (n >= 0)
- {
- int cnt;
- for (cnt = 0; cnt < n; ++cnt)
- puts (eps[cnt]->d_name);
- }
- else
- perror ("Couldn't open the directory");
-
- return 0;
-}
diff --git a/manual/examples/execinfo.c b/manual/examples/execinfo.c
deleted file mode 100644
index c357fa48ed..0000000000
--- a/manual/examples/execinfo.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Obtain a backtrace and print it.
- Copyright (C) 1991-2017 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>
-
-/* Obtain a backtrace and print it to @code{stdout}. */
-void
-print_trace (void)
-{
- void *array[10];
- size_t size;
- char **strings;
- size_t i;
-
- size = backtrace (array, 10);
- strings = backtrace_symbols (array, size);
-
- printf ("Obtained %zd stack frames.\n", size);
-
- for (i = 0; i < size; i++)
- printf ("%s\n", strings[i]);
-
- free (strings);
-}
-
-/* A dummy function to make the backtrace more interesting. */
-void
-dummy_function (void)
-{
- print_trace ();
-}
-
-int
-main (void)
-{
- dummy_function ();
- return 0;
-}
diff --git a/manual/examples/filecli.c b/manual/examples/filecli.c
deleted file mode 100644
index 50f4ef43ac..0000000000
--- a/manual/examples/filecli.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/* Example of Reading Datagrams
- Copyright (C) 1991-2017 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>
-#include <stdlib.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-
-#define SERVER "/tmp/serversocket"
-#define CLIENT "/tmp/mysocket"
-#define MAXMSG 512
-#define MESSAGE "Yow!!! Are we having fun yet?!?"
-
-int
-main (void)
-{
- extern int make_named_socket (const char *name);
- int sock;
- char message[MAXMSG];
- struct sockaddr_un name;
- size_t size;
- int nbytes;
-
- /* Make the socket. */
- sock = make_named_socket (CLIENT);
-
- /* Initialize the server socket address. */
- name.sun_family = AF_LOCAL;
- strcpy (name.sun_path, SERVER);
- size = strlen (name.sun_path) + sizeof (name.sun_family);
-
- /* Send the datagram. */
- nbytes = sendto (sock, MESSAGE, strlen (MESSAGE) + 1, 0,
- (struct sockaddr *) & name, size);
- if (nbytes < 0)
- {
- perror ("sendto (client)");
- exit (EXIT_FAILURE);
- }
-
- /* Wait for a reply. */
- nbytes = recvfrom (sock, message, MAXMSG, 0, NULL, 0);
- if (nbytes < 0)
- {
- perror ("recfrom (client)");
- exit (EXIT_FAILURE);
- }
-
- /* Print a diagnostic message. */
- fprintf (stderr, "Client: got message: %s\n", message);
-
- /* Clean up. */
- remove (CLIENT);
- close (sock);
-}
diff --git a/manual/examples/filesrv.c b/manual/examples/filesrv.c
deleted file mode 100644
index 9cf3d0ee91..0000000000
--- a/manual/examples/filesrv.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/* Datagram Socket Example
- Copyright (C) 1991-2017 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>
-#include <sys/socket.h>
-#include <sys/un.h>
-
-#define SERVER "/tmp/serversocket"
-#define MAXMSG 512
-
-int
-main (void)
-{
- int sock;
- char message[MAXMSG];
- struct sockaddr_un name;
- size_t size;
- int nbytes;
-
- /* Remove the filename first, it's ok if the call fails */
- unlink (SERVER);
-
- /* Make the socket, then loop endlessly. */
- sock = make_named_socket (SERVER);
- while (1)
- {
- /* Wait for a datagram. */
- size = sizeof (name);
- nbytes = recvfrom (sock, message, MAXMSG, 0,
- (struct sockaddr *) & name, &size);
- if (nbytes < 0)
- {
- perror ("recfrom (server)");
- exit (EXIT_FAILURE);
- }
-
- /* Give a diagnostic message. */
- fprintf (stderr, "Server: got message: %s\n", message);
-
- /* Bounce the message back to the sender. */
- nbytes = sendto (sock, message, nbytes, 0,
- (struct sockaddr *) & name, size);
- if (nbytes < 0)
- {
- perror ("sendto (server)");
- exit (EXIT_FAILURE);
- }
- }
-}
diff --git a/manual/examples/fmtmsgexpl.c b/manual/examples/fmtmsgexpl.c
deleted file mode 100644
index 5cd965cd3f..0000000000
--- a/manual/examples/fmtmsgexpl.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/* How to use fmtmsg and addseverity.
- Copyright (C) 1991-2017 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
-main (void)
-{
- addseverity (5, "NOTE2");
- fmtmsg (MM_PRINT, "only1field", MM_INFO, "text2", "action2", "tag2");
- fmtmsg (MM_PRINT, "UX:cat", 5, "invalid syntax", "refer to manual",
- "UX:cat:001");
- fmtmsg (MM_PRINT, "label:foo", 6, "text", "action", "tag");
- return 0;
-}
diff --git a/manual/examples/genpass.c b/manual/examples/genpass.c
deleted file mode 100644
index 7d76dedfbc..0000000000
--- a/manual/examples/genpass.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Encrypting Passwords
- Copyright (C) 1991-2017 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
-main(void)
-{
- unsigned long seed[2];
- char salt[] = "$1$........";
- const char *const seedchars =
- "./0123456789ABCDEFGHIJKLMNOPQRST"
- "UVWXYZabcdefghijklmnopqrstuvwxyz";
- char *password;
- int i;
-
- /* 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
deleted file mode 100644
index 1723e2fc56..0000000000
--- a/manual/examples/inetcli.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/* Byte Stream Socket Example
- Copyright (C) 1991-2017 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>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netdb.h>
-
-#define PORT 5555
-#define MESSAGE "Yow!!! Are we having fun yet?!?"
-#define SERVERHOST "www.gnu.org"
-
-void
-write_to_server (int filedes)
-{
- int nbytes;
-
- nbytes = write (filedes, MESSAGE, strlen (MESSAGE) + 1);
- if (nbytes < 0)
- {
- perror ("write");
- exit (EXIT_FAILURE);
- }
-}
-
-
-int
-main (void)
-{
- extern void init_sockaddr (struct sockaddr_in *name,
- const char *hostname,
- uint16_t port);
- int sock;
- struct sockaddr_in servername;
-
- /* Create the socket. */
- sock = socket (PF_INET, SOCK_STREAM, 0);
- if (sock < 0)
- {
- perror ("socket (client)");
- exit (EXIT_FAILURE);
- }
-
- /* Connect to the server. */
- init_sockaddr (&servername, SERVERHOST, PORT);
- if (0 > connect (sock,
- (struct sockaddr *) &servername,
- sizeof (servername)))
- {
- perror ("connect (client)");
- exit (EXIT_FAILURE);
- }
-
- /* Send data to the server. */
- write_to_server (sock);
- close (sock);
- exit (EXIT_SUCCESS);
-}
diff --git a/manual/examples/inetsrv.c b/manual/examples/inetsrv.c
deleted file mode 100644
index 01ae631818..0000000000
--- a/manual/examples/inetsrv.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/* Byte Stream Connection Server Example
- Copyright (C) 1991-2017 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>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netdb.h>
-
-#define PORT 5555
-#define MAXMSG 512
-
-int
-read_from_client (int filedes)
-{
- char buffer[MAXMSG];
- int nbytes;
-
- nbytes = read (filedes, buffer, MAXMSG);
- if (nbytes < 0)
- {
- /* Read error. */
- perror ("read");
- exit (EXIT_FAILURE);
- }
- else if (nbytes == 0)
- /* End-of-file. */
- return -1;
- else
- {
- /* Data read. */
- fprintf (stderr, "Server: got message: `%s'\n", buffer);
- return 0;
- }
-}
-
-int
-main (void)
-{
- extern int make_socket (uint16_t port);
- int sock;
- fd_set active_fd_set, read_fd_set;
- int i;
- struct sockaddr_in clientname;
- size_t size;
-
- /* Create the socket and set it up to accept connections. */
- sock = make_socket (PORT);
- if (listen (sock, 1) < 0)
- {
- perror ("listen");
- exit (EXIT_FAILURE);
- }
-
- /* Initialize the set of active sockets. */
- FD_ZERO (&active_fd_set);
- FD_SET (sock, &active_fd_set);
-
- while (1)
- {
- /* Block until input arrives on one or more active sockets. */
- read_fd_set = active_fd_set;
- if (select (FD_SETSIZE, &read_fd_set, NULL, NULL, NULL) < 0)
- {
- perror ("select");
- exit (EXIT_FAILURE);
- }
-
- /* Service all the sockets with input pending. */
- for (i = 0; i < FD_SETSIZE; ++i)
- if (FD_ISSET (i, &read_fd_set))
- {
- if (i == sock)
- {
- /* Connection request on original socket. */
- int new;
- size = sizeof (clientname);
- new = accept (sock,
- (struct sockaddr *) &clientname,
- &size);
- if (new < 0)
- {
- perror ("accept");
- exit (EXIT_FAILURE);
- }
- fprintf (stderr,
- "Server: connect from host %s, port %hd.\n",
- inet_ntoa (clientname.sin_addr),
- ntohs (clientname.sin_port));
- FD_SET (new, &active_fd_set);
- }
- else
- {
- /* Data arriving on an already-connected socket. */
- if (read_from_client (i) < 0)
- {
- close (i);
- FD_CLR (i, &active_fd_set);
- }
- }
- }
- }
-}
diff --git a/manual/examples/isockad.c b/manual/examples/isockad.c
deleted file mode 100644
index be2def3be8..0000000000
--- a/manual/examples/isockad.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Internet Socket Example using sockaddr_in.
- Copyright (C) 1991-2017 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
-init_sockaddr (struct sockaddr_in *name,
- const char *hostname,
- uint16_t port)
-{
- struct hostent *hostinfo;
-
- name->sin_family = AF_INET;
- name->sin_port = htons (port);
- hostinfo = gethostbyname (hostname);
- if (hostinfo == NULL)
- {
- fprintf (stderr, "Unknown host %s.\n", hostname);
- exit (EXIT_FAILURE);
- }
- name->sin_addr = *(struct in_addr *) hostinfo->h_addr;
-}
diff --git a/manual/examples/longopt.c b/manual/examples/longopt.c
deleted file mode 100644
index 40967174aa..0000000000
--- a/manual/examples/longopt.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/* Example of Parsing Long Options with getopt_long.
- Copyright (C) 1991-2017 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>
-
-/* Flag set by @samp{--verbose}. */
-static int verbose_flag;
-
-int
-main (int argc, char **argv)
-{
- int c;
-
- while (1)
- {
- static struct option long_options[] =
- {
- /* These options set a flag. */
- {"verbose", no_argument, &verbose_flag, 1},
- {"brief", no_argument, &verbose_flag, 0},
- /* These options don't set a flag.
- We distinguish them by their indices. */
- {"add", no_argument, 0, 'a'},
- {"append", no_argument, 0, 'b'},
- {"delete", required_argument, 0, 'd'},
- {"create", required_argument, 0, 'c'},
- {"file", required_argument, 0, 'f'},
- {0, 0, 0, 0}
- };
- /* @code{getopt_long} stores the option index here. */
- int option_index = 0;
-
- c = getopt_long (argc, argv, "abc:d:f:",
- long_options, &option_index);
-
- /* Detect the end of the options. */
- if (c == -1)
- break;
-
- switch (c)
- {
- case 0:
- /* If this option set a flag, do nothing else now. */
- if (long_options[option_index].flag != 0)
- break;
- printf ("option %s", long_options[option_index].name);
- if (optarg)
- printf (" with arg %s", optarg);
- printf ("\n");
- break;
-
- case 'a':
- puts ("option -a\n");
- break;
-
- case 'b':
- puts ("option -b\n");
- break;
-
- case 'c':
- printf ("option -c with value `%s'\n", optarg);
- break;
-
- case 'd':
- printf ("option -d with value `%s'\n", optarg);
- break;
-
- case 'f':
- printf ("option -f with value `%s'\n", optarg);
- break;
-
- case '?':
- /* @code{getopt_long} already printed an error message. */
- break;
-
- default:
- abort ();
- }
- }
-
- /* Instead of reporting @samp{--verbose}
- and @samp{--brief} as they are encountered,
- we report the final status resulting from them. */
- if (verbose_flag)
- puts ("verbose flag is set");
-
- /* Print any remaining command line arguments (not options). */
- if (optind < argc)
- {
- printf ("non-option ARGV-elements: ");
- while (optind < argc)
- printf ("%s ", argv[optind++]);
- putchar ('\n');
- }
-
- exit (0);
-}
diff --git a/manual/examples/memopen.c b/manual/examples/memopen.c
deleted file mode 100644
index 407aeba878..0000000000
--- a/manual/examples/memopen.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* String Streams
- Copyright (C) 1991-2017 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";
-
-int
-main (void)
-{
- int ch;
- FILE *stream;
-
- stream = fmemopen (buffer, strlen (buffer), "r");
- while ((ch = fgetc (stream)) != EOF)
- printf ("Got %c\n", ch);
- fclose (stream);
-
- return 0;
-}
diff --git a/manual/examples/memstrm.c b/manual/examples/memstrm.c
deleted file mode 100644
index d339ffb95d..0000000000
--- a/manual/examples/memstrm.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* open_memstream example.
- Copyright (C) 1991-2017 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
-main (void)
-{
- char *bp;
- size_t size;
- FILE *stream;
-
- stream = open_memstream (&bp, &size);
- fprintf (stream, "hello");
- fflush (stream);
- printf ("buf = `%s', size = %zu\n", bp, size);
- fprintf (stream, ", world");
- fclose (stream);
- printf ("buf = `%s', size = %zu\n", bp, size);
-
- return 0;
-}
diff --git a/manual/examples/mkdirent.c b/manual/examples/mkdirent.c
deleted file mode 100644
index 988e988460..0000000000
--- a/manual/examples/mkdirent.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Example for creating a struct dirent object for use with glob.
- Copyright (C) 2016-2017 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 <dirent.h>
-#include <errno.h>
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-
-struct dirent *
-mkdirent (const char *name)
-{
- size_t dirent_size = offsetof (struct dirent, d_name) + 1;
- size_t name_length = strlen (name);
- size_t total_size = dirent_size + name_length;
- if (total_size < dirent_size)
- {
- errno = ENOMEM;
- return NULL;
- }
- struct dirent *result = malloc (total_size);
- if (result == NULL)
- return NULL;
- result->d_type = DT_UNKNOWN;
- result->d_ino = 1; /* Do not skip this entry. */
- memcpy (result->d_name, name, name_length + 1);
- return result;
-}
diff --git a/manual/examples/mkfsock.c b/manual/examples/mkfsock.c
deleted file mode 100644
index ffe1b46928..0000000000
--- a/manual/examples/mkfsock.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* Example of Local-Namespace Sockets
- Copyright (C) 1991-2017 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>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-
-int
-make_named_socket (const char *filename)
-{
- struct sockaddr_un name;
- int sock;
- size_t size;
-
- /* Create the socket. */
- sock = socket (PF_LOCAL, SOCK_DGRAM, 0);
- if (sock < 0)
- {
- perror ("socket");
- exit (EXIT_FAILURE);
- }
-
- /* Bind a name to the socket. */
- name.sun_family = AF_LOCAL;
- strncpy (name.sun_path, filename, sizeof (name.sun_path));
- name.sun_path[sizeof (name.sun_path) - 1] = '\0';
-
- /* The size of the address is
- the offset of the start of the filename,
- plus its length (not including the terminating null byte).
- Alternatively you can just do:
- size = SUN_LEN (&name);
- */
- size = (offsetof (struct sockaddr_un, sun_path)
- + strlen (name.sun_path));
-
- if (bind (sock, (struct sockaddr *) &name, size) < 0)
- {
- perror ("bind");
- exit (EXIT_FAILURE);
- }
-
- return sock;
-}
diff --git a/manual/examples/mkisock.c b/manual/examples/mkisock.c
deleted file mode 100644
index 5657322631..0000000000
--- a/manual/examples/mkisock.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Internet Socket Example
- Copyright (C) 1991-2017 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
-make_socket (uint16_t port)
-{
- int sock;
- struct sockaddr_in name;
-
- /* Create the socket. */
- sock = socket (PF_INET, SOCK_STREAM, 0);
- if (sock < 0)
- {
- perror ("socket");
- exit (EXIT_FAILURE);
- }
-
- /* Give the socket a name. */
- name.sin_family = AF_INET;
- name.sin_port = htons (port);
- name.sin_addr.s_addr = htonl (INADDR_ANY);
- if (bind (sock, (struct sockaddr *) &name, sizeof (name)) < 0)
- {
- perror ("bind");
- exit (EXIT_FAILURE);
- }
-
- return sock;
-}
diff --git a/manual/examples/mygetpass.c b/manual/examples/mygetpass.c
deleted file mode 100644
index 152d7bee7f..0000000000
--- a/manual/examples/mygetpass.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Reading Passwords
- Copyright (C) 1991-2017 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>
-
-ssize_t
-my_getpass (char **lineptr, size_t *n, FILE *stream)
-{
- struct termios old, new;
- int nread;
-
- /* Turn echoing off and fail if we can't. */
- if (tcgetattr (fileno (stream), &old) != 0)
- return -1;
- new = old;
- 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/ofdlocks.c b/manual/examples/ofdlocks.c
deleted file mode 100644
index 42074105a8..0000000000
--- a/manual/examples/ofdlocks.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/* Open File Description Locks Usage Example
- Copyright (C) 1991-2017 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, see <http://www.gnu.org/licenses/>.
-*/
-
-#define _GNU_SOURCE
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <pthread.h>
-
-#define FILENAME "/tmp/foo"
-#define NUM_THREADS 3
-#define ITERATIONS 5
-
-void *
-thread_start (void *arg)
-{
- int i, fd, len;
- long tid = (long) arg;
- char buf[256];
- struct flock lck = {
- .l_whence = SEEK_SET,
- .l_start = 0,
- .l_len = 1,
- };
-
- fd = open ("/tmp/foo", O_RDWR | O_CREAT, 0666);
-
- for (i = 0; i < ITERATIONS; i++)
- {
- lck.l_type = F_WRLCK;
- fcntl (fd, F_OFD_SETLKW, &lck);
-
- len = sprintf (buf, "%d: tid=%ld fd=%d\n", i, tid, fd);
-
- lseek (fd, 0, SEEK_END);
- write (fd, buf, len);
- fsync (fd);
-
- lck.l_type = F_UNLCK;
- fcntl (fd, F_OFD_SETLK, &lck);
-
- /* sleep to ensure lock is yielded to another thread */
- usleep (1);
- }
- pthread_exit (NULL);
-}
-
-int
-main (int argc, char **argv)
-{
- long i;
- pthread_t threads[NUM_THREADS];
-
- truncate (FILENAME, 0);
-
- for (i = 0; i < NUM_THREADS; i++)
- pthread_create (&threads[i], NULL, thread_start, (void *) i);
-
- pthread_exit (NULL);
- return 0;
-}
diff --git a/manual/examples/pipe.c b/manual/examples/pipe.c
deleted file mode 100644
index adfa4658dc..0000000000
--- a/manual/examples/pipe.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/* Creating a Pipe
- Copyright (C) 1991-2017 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>
-#include <stdlib.h>
-
-/* Read characters from the pipe and echo them to @code{stdout}. */
-
-void
-read_from_pipe (int file)
-{
- FILE *stream;
- int c;
- stream = fdopen (file, "r");
- while ((c = fgetc (stream)) != EOF)
- putchar (c);
- fclose (stream);
-}
-
-/* Write some random text to the pipe. */
-
-void
-write_to_pipe (int file)
-{
- FILE *stream;
- stream = fdopen (file, "w");
- fprintf (stream, "hello, world!\n");
- fprintf (stream, "goodbye, world!\n");
- fclose (stream);
-}
-
-int
-main (void)
-{
- pid_t pid;
- int mypipe[2];
-
-/*@group*/
- /* Create the pipe. */
- if (pipe (mypipe))
- {
- fprintf (stderr, "Pipe failed.\n");
- return EXIT_FAILURE;
- }
-/*@end group*/
-
- /* Create the child process. */
- pid = fork ();
- if (pid == (pid_t) 0)
- {
- /* This is the child process.
- Close other end first. */
- close (mypipe[1]);
- read_from_pipe (mypipe[0]);
- return EXIT_SUCCESS;
- }
- else if (pid < (pid_t) 0)
- {
- /* The fork failed. */
- fprintf (stderr, "Fork failed.\n");
- return EXIT_FAILURE;
- }
- else
- {
- /* This is the parent process.
- Close other end first. */
- close (mypipe[0]);
- write_to_pipe (mypipe[1]);
- return EXIT_SUCCESS;
- }
-}
diff --git a/manual/examples/popen.c b/manual/examples/popen.c
deleted file mode 100644
index cc7617c65c..0000000000
--- a/manual/examples/popen.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Pipe to a Subprocess
- Copyright (C) 1991-2017 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
-write_data (FILE * stream)
-{
- int i;
- for (i = 0; i < 100; i++)
- fprintf (stream, "%d\n", i);
- if (ferror (stream))
- {
- fprintf (stderr, "Output to stream failed.\n");
- exit (EXIT_FAILURE);
- }
-}
-
-/*@group*/
-int
-main (void)
-{
- FILE *output;
-
- output = popen ("more", "w");
- if (!output)
- {
- fprintf (stderr,
- "incorrect parameters or too many files.\n");
- return EXIT_FAILURE;
- }
- write_data (output);
- if (pclose (output) != 0)
- {
- fprintf (stderr,
- "Could not run more or other error.\n");
- }
- return EXIT_SUCCESS;
-}
-/*@end group*/
diff --git a/manual/examples/rprintf.c b/manual/examples/rprintf.c
deleted file mode 100644
index e49a2c4fbf..0000000000
--- a/manual/examples/rprintf.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/* Printf Extension Example
- Copyright (C) 1991-2017 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>
-
-/*@group*/
-typedef struct
-{
- char *name;
-}
-Widget;
-/*@end group*/
-
-int
-print_widget (FILE *stream,
- const struct printf_info *info,
- const void *const *args)
-{
- const Widget *w;
- char *buffer;
- int len;
-
- /* Format the output into a string. */
- w = *((const Widget **) (args[0]));
- len = asprintf (&buffer, "<Widget %p: %s>", w, w->name);
- if (len == -1)
- return -1;
-
- /* Pad to the minimum field width and print to the stream. */
- len = fprintf (stream, "%*s",
- (info->left ? -info->width : info->width),
- buffer);
-
- /* Clean up and return. */
- free (buffer);
- return len;
-}
-
-
-int
-print_widget_arginfo (const struct printf_info *info, size_t n,
- int *argtypes)
-{
- /* We always take exactly one argument and this is a pointer to the
- structure.. */
- if (n > 0)
- argtypes[0] = PA_POINTER;
- return 1;
-}
-
-
-int
-main (void)
-{
- /* Make a widget to print. */
- Widget mywidget;
- mywidget.name = "mywidget";
-
- /* Register the print function for widgets. */
- register_printf_function ('W', print_widget, print_widget_arginfo);
-
- /* Now print the widget. */
- printf ("|%W|\n", &mywidget);
- printf ("|%35W|\n", &mywidget);
- printf ("|%-35W|\n", &mywidget);
-
- return 0;
-}
diff --git a/manual/examples/search.c b/manual/examples/search.c
deleted file mode 100644
index c434c11f8c..0000000000
--- a/manual/examples/search.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/* Searching and Sorting Example
- Copyright (C) 1991-2017 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>
-
-/* Define an array of critters to sort. */
-
-struct critter
- {
- const char *name;
- const char *species;
- };
-
-struct critter muppets[] =
- {
- {"Kermit", "frog"},
- {"Piggy", "pig"},
- {"Gonzo", "whatever"},
- {"Fozzie", "bear"},
- {"Sam", "eagle"},
- {"Robin", "frog"},
- {"Animal", "animal"},
- {"Camilla", "chicken"},
- {"Sweetums", "monster"},
- {"Dr. Strangepork", "pig"},
- {"Link Hogthrob", "pig"},
- {"Zoot", "human"},
- {"Dr. Bunsen Honeydew", "human"},
- {"Beaker", "human"},
- {"Swedish Chef", "human"}
- };
-
-int count = sizeof (muppets) / sizeof (struct critter);
-
-
-
-/* This is the comparison function used for sorting and searching. */
-
-int
-critter_cmp (const void *v1, const void *v2)
-{
- const struct critter *c1 = v1;
- const struct critter *c2 = v2;
-
- return strcmp (c1->name, c2->name);
-}
-
-
-/* Print information about a critter. */
-
-void
-print_critter (const struct critter *c)
-{
- printf ("%s, the %s\n", c->name, c->species);
-}
-
-
-/*@group*/
-/* Do the lookup into the sorted array. */
-
-void
-find_critter (const char *name)
-{
- struct critter target, *result;
- target.name = name;
- result = bsearch (&target, muppets, count, sizeof (struct critter),
- critter_cmp);
- if (result)
- print_critter (result);
- else
- printf ("Couldn't find %s.\n", name);
-}
-/*@end group*/
-
-/* Main program. */
-
-int
-main (void)
-{
- int i;
-
- for (i = 0; i < count; i++)
- print_critter (&muppets[i]);
- printf ("\n");
-
- qsort (muppets, count, sizeof (struct critter), critter_cmp);
-
- for (i = 0; i < count; i++)
- print_critter (&muppets[i]);
- printf ("\n");
-
- find_critter ("Kermit");
- find_critter ("Gonzo");
- find_critter ("Janice");
-
- return 0;
-}
diff --git a/manual/examples/select.c b/manual/examples/select.c
deleted file mode 100644
index 16c54c0c63..0000000000
--- a/manual/examples/select.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Waiting for Input or Output
- Copyright (C) 1991-2017 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>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/time.h>
-/*@end group*/
-
-/*@group*/
-int
-input_timeout (int filedes, unsigned int seconds)
-{
- fd_set set;
- struct timeval timeout;
-/*@end group*/
-
- /* Initialize the file descriptor set. */
- FD_ZERO (&set);
- FD_SET (filedes, &set);
-
- /* Initialize the timeout data structure. */
- timeout.tv_sec = seconds;
- timeout.tv_usec = 0;
-
-/*@group*/
- /* @code{select} returns 0 if timeout, 1 if input available, -1 if error. */
- return TEMP_FAILURE_RETRY (select (FD_SETSIZE,
- &set, NULL, NULL,
- &timeout));
-}
-/*@end group*/
-
-/*@group*/
-int
-main (void)
-{
- fprintf (stderr, "select returned %d.\n",
- input_timeout (STDIN_FILENO, 5));
- return 0;
-}
-/*@end group*/
diff --git a/manual/examples/setjmp.c b/manual/examples/setjmp.c
deleted file mode 100644
index 20b5064914..0000000000
--- a/manual/examples/setjmp.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Introduction to Non-Local Exits
- Copyright (C) 1991-2017 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
-abort_to_main_loop (int status)
-{
- longjmp (main_loop, status);
-}
-
-int
-main (void)
-{
- while (1)
- if (setjmp (main_loop))
- puts ("Back at main loop....");
- else
- do_command ();
-}
-
-
-void
-do_command (void)
-{
- char buffer[128];
- if (fgets (buffer, 128, stdin) == NULL)
- abort_to_main_loop (-1);
- else
- exit (EXIT_SUCCESS);
-}
diff --git a/manual/examples/sigh1.c b/manual/examples/sigh1.c
deleted file mode 100644
index 6d4a0752f3..0000000000
--- a/manual/examples/sigh1.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Signal Handlers that Return
- Copyright (C) 1991-2017 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>
-
-/* This flag controls termination of the main loop. */
-volatile sig_atomic_t keep_going = 1;
-
-/* The signal handler just clears the flag and re-enables itself. */
-void
-catch_alarm (int sig)
-{
- keep_going = 0;
- signal (sig, catch_alarm);
-}
-
-void
-do_stuff (void)
-{
- puts ("Doing stuff while waiting for alarm....");
-}
-
-int
-main (void)
-{
- /* Establish a handler for SIGALRM signals. */
- signal (SIGALRM, catch_alarm);
-
- /* Set an alarm to go off in a little while. */
- alarm (2);
-
- /* Check the flag once in a while to see when to quit. */
- while (keep_going)
- do_stuff ();
-
- return EXIT_SUCCESS;
-}
diff --git a/manual/examples/sigusr.c b/manual/examples/sigusr.c
deleted file mode 100644
index 51b44dcf03..0000000000
--- a/manual/examples/sigusr.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/* Using kill for Communication
- Copyright (C) 1991-2017 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>
-#include <sys/types.h>
-#include <unistd.h>
-/*@end group*/
-
-/* When a @code{SIGUSR1} signal arrives, set this variable. */
-volatile sig_atomic_t usr_interrupt = 0;
-
-void
-synch_signal (int sig)
-{
- usr_interrupt = 1;
-}
-
-/* The child process executes this function. */
-void
-child_function (void)
-{
- /* Perform initialization. */
- printf ("I'm here!!! My pid is %d.\n", (int) getpid ());
-
- /* Let parent know you're done. */
- kill (getppid (), SIGUSR1);
-
- /* Continue with execution. */
- puts ("Bye, now....");
- exit (0);
-}
-
-int
-main (void)
-{
- struct sigaction usr_action;
- sigset_t block_mask;
- pid_t child_id;
-
- /* Establish the signal handler. */
- sigfillset (&block_mask);
- usr_action.sa_handler = synch_signal;
- usr_action.sa_mask = block_mask;
- usr_action.sa_flags = 0;
- sigaction (SIGUSR1, &usr_action, NULL);
-
- /* Create the child process. */
- child_id = fork ();
- if (child_id == 0)
- child_function (); /* Does not return. */
-
-/*@group*/
- /* Busy wait for the child to send a signal. */
- while (!usr_interrupt)
- ;
-/*@end group*/
-
- /* Now continue execution. */
- puts ("That's all, folks!");
-
- return 0;
-}
diff --git a/manual/examples/stpcpy.c b/manual/examples/stpcpy.c
deleted file mode 100644
index a0dda1757a..0000000000
--- a/manual/examples/stpcpy.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* stpcpy example.
- Copyright (C) 1991-2017 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>
-
-int
-main (void)
-{
- char buffer[10];
- char *to = buffer;
- to = stpcpy (to, "foo");
- to = stpcpy (to, "bar");
- puts (buffer);
- return 0;
-}
diff --git a/manual/examples/strdupa.c b/manual/examples/strdupa.c
deleted file mode 100644
index c8e61bac16..0000000000
--- a/manual/examples/strdupa.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* strdupa example.
- Copyright (C) 1991-2017 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>
-
-const char path[] = _PATH_STDPATH;
-
-int
-main (void)
-{
- char *wr_path = strdupa (path);
- char *cp = strtok (wr_path, ":");
-
- while (cp != NULL)
- {
- puts (cp);
- cp = strtok (NULL, ":");
- }
- return 0;
-}
diff --git a/manual/examples/strftim.c b/manual/examples/strftim.c
deleted file mode 100644
index 08eb22d539..0000000000
--- a/manual/examples/strftim.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Time Functions Example
- Copyright (C) 1991-2017 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>
-
-#define SIZE 256
-
-int
-main (void)
-{
- char buffer[SIZE];
- time_t curtime;
- struct tm *loctime;
-
- /* Get the current time. */
- curtime = time (NULL);
-
- /* Convert it to local time representation. */
- loctime = localtime (&curtime);
-
- /* Print out the date and time in the standard format. */
- fputs (asctime (loctime), stdout);
-
-/*@group*/
- /* Print it out in a nice format. */
- strftime (buffer, SIZE, "Today is %A, %B %d.\n", loctime);
- fputs (buffer, stdout);
- strftime (buffer, SIZE, "The time is %I:%M %p.\n", loctime);
- fputs (buffer, stdout);
-
- return 0;
-}
-/*@end group*/
diff --git a/manual/examples/subopt.c b/manual/examples/subopt.c
deleted file mode 100644
index 278b6dbbc1..0000000000
--- a/manual/examples/subopt.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/* Parsing of Suboptions Example
- Copyright (C) 1991-2017 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>
-
-int do_all;
-const char *type;
-int read_size;
-int write_size;
-int read_only;
-
-enum
-{
- RO_OPTION = 0,
- RW_OPTION,
- READ_SIZE_OPTION,
- WRITE_SIZE_OPTION,
- THE_END
-};
-
-const char *mount_opts[] =
-{
- [RO_OPTION] = "ro",
- [RW_OPTION] = "rw",
- [READ_SIZE_OPTION] = "rsize",
- [WRITE_SIZE_OPTION] = "wsize",
- [THE_END] = NULL
-};
-
-int
-main (int argc, char **argv)
-{
- char *subopts, *value;
- int opt;
-
- while ((opt = getopt (argc, argv, "at:o:")) != -1)
- switch (opt)
- {
- case 'a':
- do_all = 1;
- break;
- case 't':
- type = optarg;
- break;
- case 'o':
- subopts = optarg;
- while (*subopts != '\0')
- switch (getsubopt (&subopts, mount_opts, &value))
- {
- case RO_OPTION:
- read_only = 1;
- break;
- case RW_OPTION:
- read_only = 0;
- break;
- case READ_SIZE_OPTION:
- if (value == NULL)
- abort ();
- read_size = atoi (value);
- break;
- case WRITE_SIZE_OPTION:
- if (value == NULL)
- abort ();
- write_size = atoi (value);
- break;
- default:
- /* Unknown suboption. */
- printf ("Unknown suboption `%s'\n", value);
- break;
- }
- break;
- default:
- abort ();
- }
-
- /* Do the real work. */
-
- return 0;
-}
diff --git a/manual/examples/swapcontext.c b/manual/examples/swapcontext.c
deleted file mode 100644
index 3747230c31..0000000000
--- a/manual/examples/swapcontext.c
+++ /dev/null
@@ -1,116 +0,0 @@
-/* Complete Context Control
- Copyright (C) 1991-2017 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>
-#include <ucontext.h>
-#include <sys/time.h>
-
-/* Set by the signal handler. */
-static volatile int expired;
-
-/* The contexts. */
-static ucontext_t uc[3];
-
-/* We do only a certain number of switches. */
-static int switches;
-
-
-/* This is the function doing the work. It is just a
- skeleton, real code has to be filled in. */
-static void
-f (int n)
-{
- int m = 0;
- while (1)
- {
- /* This is where the work would be done. */
- if (++m % 100 == 0)
- {
- putchar ('.');
- fflush (stdout);
- }
-
- /* Regularly the @var{expire} variable must be checked. */
- if (expired)
- {
- /* We do not want the program to run forever. */
- if (++switches == 20)
- return;
-
- printf ("\nswitching from %d to %d\n", n, 3 - n);
- expired = 0;
- /* Switch to the other context, saving the current one. */
- swapcontext (&uc[n], &uc[3 - n]);
- }
- }
-}
-
-/* This is the signal handler which simply set the variable. */
-void
-handler (int signal)
-{
- expired = 1;
-}
-
-
-int
-main (void)
-{
- struct sigaction sa;
- struct itimerval it;
- char st1[8192];
- char st2[8192];
-
- /* Initialize the data structures for the interval timer. */
- sa.sa_flags = SA_RESTART;
- sigfillset (&sa.sa_mask);
- sa.sa_handler = handler;
- it.it_interval.tv_sec = 0;
- it.it_interval.tv_usec = 1;
- it.it_value = it.it_interval;
-
- /* Install the timer and get the context we can manipulate. */
- if (sigaction (SIGPROF, &sa, NULL) < 0
- || setitimer (ITIMER_PROF, &it, NULL) < 0
- || getcontext (&uc[1]) == -1
- || getcontext (&uc[2]) == -1)
- abort ();
-
- /* Create a context with a separate stack which causes the
- function @code{f} to be call with the parameter @code{1}.
- Note that the @code{uc_link} points to the main context
- which will cause the program to terminate once the function
- return. */
- uc[1].uc_link = &uc[0];
- uc[1].uc_stack.ss_sp = st1;
- uc[1].uc_stack.ss_size = sizeof st1;
- makecontext (&uc[1], (void (*) (void)) f, 1, 1);
-
- /* Similarly, but @code{2} is passed as the parameter to @code{f}. */
- uc[2].uc_link = &uc[0];
- uc[2].uc_stack.ss_sp = st2;
- uc[2].uc_stack.ss_size = sizeof st2;
- makecontext (&uc[2], (void (*) (void)) f, 1, 2);
-
- /* Start running. */
- swapcontext (&uc[0], &uc[1]);
- putchar ('\n');
-
- return 0;
-}
diff --git a/manual/examples/termios.c b/manual/examples/termios.c
deleted file mode 100644
index 8ac2f626d5..0000000000
--- a/manual/examples/termios.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/* Noncanonical Mode Example
- Copyright (C) 1991-2017 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>
-#include <termios.h>
-
-/* Use this variable to remember original terminal attributes. */
-
-struct termios saved_attributes;
-
-void
-reset_input_mode (void)
-{
- tcsetattr (STDIN_FILENO, TCSANOW, &saved_attributes);
-}
-
-void
-set_input_mode (void)
-{
- struct termios tattr;
- char *name;
-
- /* Make sure stdin is a terminal. */
- if (!isatty (STDIN_FILENO))
- {
- fprintf (stderr, "Not a terminal.\n");
- exit (EXIT_FAILURE);
- }
-
- /* Save the terminal attributes so we can restore them later. */
- tcgetattr (STDIN_FILENO, &saved_attributes);
- atexit (reset_input_mode);
-
-/*@group*/
- /* Set the funny terminal modes. */
- tcgetattr (STDIN_FILENO, &tattr);
- tattr.c_lflag &= ~(ICANON|ECHO); /* Clear ICANON and ECHO. */
- tattr.c_cc[VMIN] = 1;
- tattr.c_cc[VTIME] = 0;
- tcsetattr (STDIN_FILENO, TCSAFLUSH, &tattr);
-}
-/*@end group*/
-
-int
-main (void)
-{
- char c;
-
- set_input_mode ();
-
- while (1)
- {
- read (STDIN_FILENO, &c, 1);
- if (c == '\004') /* @kbd{C-d} */
- break;
- else
- putchar (c);
- }
-
- return EXIT_SUCCESS;
-}
diff --git a/manual/examples/testopt.c b/manual/examples/testopt.c
deleted file mode 100644
index 1cb53352eb..0000000000
--- a/manual/examples/testopt.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Example of Parsing Arguments with getopt.
- Copyright (C) 1991-2017 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>
-#include <stdlib.h>
-#include <unistd.h>
-
-int
-main (int argc, char **argv)
-{
- int aflag = 0;
- int bflag = 0;
- char *cvalue = NULL;
- int index;
- int c;
-
- opterr = 0;
-/*@end group*/
-
-/*@group*/
- while ((c = getopt (argc, argv, "abc:")) != -1)
- switch (c)
- {
- case 'a':
- aflag = 1;
- break;
- case 'b':
- bflag = 1;
- break;
- case 'c':
- cvalue = optarg;
- break;
- case '?':
- if (optopt == 'c')
- fprintf (stderr, "Option -%c requires an argument.\n", optopt);
- else if (isprint (optopt))
- fprintf (stderr, "Unknown option `-%c'.\n", optopt);
- else
- fprintf (stderr,
- "Unknown option character `\\x%x'.\n",
- optopt);
- return 1;
- default:
- abort ();
- }
-/*@end group*/
-
-/*@group*/
- printf ("aflag = %d, bflag = %d, cvalue = %s\n",
- aflag, bflag, cvalue);
-
- for (index = optind; index < argc; index++)
- printf ("Non-option argument %s\n", argv[index]);
- return 0;
-}
-/*@end group*/
diff --git a/manual/examples/testpass.c b/manual/examples/testpass.c
deleted file mode 100644
index 12c44f3028..0000000000
--- a/manual/examples/testpass.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Verify a password.
- Copyright (C) 1991-2017 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
-main(void)
-{
- /* Hashed form of "GNU libc manual". */
- const char *const pass = "$1$/iSaq7rB$EoUw5jJPPvAPECNaaWzMK/";
-
- char *result;
- int ok;
-
-/*@group*/
- /* Read in the user's password and encrypt it,
- passing the expected password in as the salt. */
- result = crypt(getpass("Password:"), pass);
-/*@end group*/
-
- /* Test the result. */
- ok = strcmp (result, pass) == 0;
-
- puts(ok ? "Access granted." : "Access denied.");
- return ok ? 0 : 1;
-}
diff --git a/manual/examples/timeval_subtract.c b/manual/examples/timeval_subtract.c
deleted file mode 100644
index 554dc77f40..0000000000
--- a/manual/examples/timeval_subtract.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* struct timeval subtraction.
- Copyright (C) 1991-2017 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. */
-
-int
-timeval_subtract (struct timeval *result, struct timeval *x, struct timeval *y)
-{
- /* Perform the carry for the later subtraction by updating @var{y}. */
- if (x->tv_usec < y->tv_usec) {
- int nsec = (y->tv_usec - x->tv_usec) / 1000000 + 1;
- y->tv_usec -= 1000000 * nsec;
- y->tv_sec += nsec;
- }
- if (x->tv_usec - y->tv_usec > 1000000) {
- int nsec = (x->tv_usec - y->tv_usec) / 1000000;
- y->tv_usec += 1000000 * nsec;
- y->tv_sec -= nsec;
- }
-
- /* Compute the time remaining to wait.
- @code{tv_usec} is certainly positive. */
- result->tv_sec = x->tv_sec - y->tv_sec;
- result->tv_usec = x->tv_usec - y->tv_usec;
-
- /* Return 1 if result is negative. */
- return x->tv_sec < y->tv_sec;
-}