[T106][ZXW-22]7520V3SCV2.01.01.02P42U09_VEC_V0.8_AP_VEC origin source commit
Change-Id: Ic6e05d89ecd62fc34f82b23dcf306c93764aec4b
diff --git a/ap/libc/glibc/glibc-2.22/manual/examples/subopt.c b/ap/libc/glibc/glibc-2.22/manual/examples/subopt.c
new file mode 100644
index 0000000..2c99b73
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/manual/examples/subopt.c
@@ -0,0 +1,95 @@
+/* Parsing of Suboptions Example
+ Copyright (C) 1991-2015 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;
+}