OSDN Git Service

(split) Apply minor changes from v3.32 to v3.35 in the upstream.
[linuxjm/LDP_man-pages.git] / release / man3 / getsubopt.3
1 .\" Copyright (C) 2007 Michael Kerrisk <mtk.manpages@gmail.com>
2 .\" and Copyright (C) 2007 Justin Pryzby <pryzbyj@justinpryzby.com>
3 .\"
4 .\" Permission is hereby granted, free of charge, to any person obtaining
5 .\" a copy of this software and associated documentation files (the
6 .\" "Software"), to deal in the Software without restriction, including
7 .\" without limitation the rights to use, copy, modify, merge, publish,
8 .\" distribute, sublicense, and/or sell copies of the Software, and to
9 .\" permit persons to whom the Software is furnished to do so, subject to
10 .\" the following conditions:
11 .\"
12 .\" The above copyright notice and this permission notice shall be
13 .\" included in all copies or substantial portions of the Software.
14 .\"
15 .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16 .\" EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17 .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
18 .\" IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
19 .\" CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
20 .\" TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
21 .\" SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22 .\"
23 .\" Japanese Version Copyright (c) 2007  Akihiro MOTOKI
24 .\"         all rights reserved.
25 .\" Translated 2007-06-02, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
26 .\" 
27 .TH GETSUBOPT 3 2010-09-26 "GNU" "Linux Programmer's Manual"
28 .SH Ì¾Á°
29 getsubopt \- Ê¸»úÎóÃæ¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó°ú¤­¿ô¤Î²ò¼á¤ò¹Ô¤¦
30 .SH ½ñ¼°
31 .B #include <stdlib.h>
32
33 .BI "int getsubopt(char **"optionp ", char * const *" tokens \
34 ", char **" valuep );
35 .sp
36 .in -4n
37 glibc ¸þ¤±¤Îµ¡Ç½¸¡ºº¥Þ¥¯¥í¤ÎÍ×·ï
38 .RB ( feature_test_macros (7)
39 »²¾È):
40 .in
41 .sp
42 .BR getsubopt ():
43 .ad l
44 .RS 4
45 .PD 0
46 _XOPEN_SOURCE\ >= 500 ||
47 _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
48 .br
49 || /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L
50 .PD
51 .RE
52 .ad
53 .SH ÀâÌÀ
54 .BR getsubopt ()
55 ¤Ï¡¢
56 .I optionp
57 ¤ÇÍ¿¤¨¤é¤ì¤¿¥«¥ó¥Þ¶èÀÚ¤ê¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¡¦¥ê¥¹¥È¤ò²òÀϤ¹¤ë¡£
58 (¤³¤Î¤è¤¦¤Ê¥µ¥Ö¥ª¥×¥·¥ç¥ó¡¦¥ê¥¹¥È¤Ï
59 .BR getopt (3)
60 ¤ò»È¤Ã¤Æ¥³¥Þ¥ó¥É¥é¥¤¥ó¤ò²ò¼á¤·¤¿¾ì¹ç¤Ë¸½¤ì¤ë¤³¤È¤¬Â¿¤¤¡£
61 Î㤨¤Ð¡¢
62 .BR mount (8)
63 ¤Î \fI-o\fP ¥ª¥×¥·¥ç¥ó¤ò¸«¤ë¤È¤è¤¤¡£)
64 ¤½¤ì¤¾¤ì¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¤Ë¤ÏÂбþ¤¹¤ëÃͤò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤ë¡£
65 ¥µ¥Ö¥ª¥×¥·¥ç¥ó¤Î̾Á°¤ÈÂбþ¤¹¤ëÃͤÏÅù¹æ (\(aq=\(aq) ¤Ç¶èÀÚ¤é¤ì¤ë¡£
66 Î㤨¤Ð¡¢°Ê²¼¤Î¤è¤¦¤Êʸ»úÎó¤ò
67 .I optionp
68 ¤ËÅϤ¹¤³¤È¤¬¤Ç¤­¤ë¡£
69 .sp
70 .in +4n
71 .B ro,name=xyz
72 .in
73
74 .I tokens
75 °ú¤­¿ô¤Ï¥È¡¼¥¯¥ó¤Ø¤Î¥Ý¥¤¥ó¥¿¤ÎÇÛÎó¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¡¢
76 ÇÛÎó¤Ï NULL ¤Ç½ªÃ¼¤µ¤ì¤ë¡£
77 .BR getsubopt ()
78 ¤Ï¤³¤Î¥È¡¼¥¯¥ó¤ò
79 .I optionp
80 Æâ¤Çõ¤¹¡£
81 ¤½¤ì¤¾¤ì¤Î¥È¡¼¥¯¥ó¤Ï¡¢NULL ½ªÃ¼¤µ¤ì¤¿ 1ʸ»ú°Ê¾å¤Îʸ»úÎó¤Ç¡¢
82 ¾¤Î¥È¡¼¥¯¥ó¤È¶èÊ̤Ǥ­¤ëɬÍפ¬¤¢¤ë¡£
83 ¤Þ¤¿¡¢Åù¹æ¤È¥«¥ó¥Þ¤ò´Þ¤ó¤Ç¤Ï¤Ê¤é¤Ê¤¤¡£
84
85 .BR getsubopt ()
86 ¤Ï¸Æ¤Ó½Ð¤µ¤ì¤ë¤¿¤Ó¤Ë¡¢
87 .I optionp
88 Ãæ¤Î¼¡¤Î̤½èÍý¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¤Î¾ðÊó¤òÊÖ¤¹¡£
89 ¥µ¥Ö¥ª¥×¥·¥ç¥óÆâ¤ËÅù¹æ¤¬¤¢¤Ã¤¿¾ì¹ç¡¢ºÇ½é¤ÎÅù¹æ¤Ï
90 ¤½¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¤Î̾Á°¤ÈÃͤζèÀÚ¤ê¤È²ò¼á¤µ¤ì¤ë¡£
91 ¶èÀڤ꤫¤é¼¡¤Î¥«¥ó¥Þ (ºÇ¸å¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¤Î¾ì¹ç¡¢Ê¸»úÎó¤ÎËöÈø)
92 ¤Þ¤Ç¤¬¡¢¥µ¥Ö¥ª¥×¥·¥ç¥ó¤ÎÃͤȤʤ롣
93 ¥µ¥Ö¥ª¥×¥·¥ç¥ó¤Î̾Á°¤¬
94 .I tokens
95 Æâ¤Î̾Á°¤È°ìÃפ·¡¢Ãͤòɽ¤¹Ê¸»úÎ󤬸«¤Ä¤«¤Ã¤¿¾ì¹ç¡¢
96 .BR getsubopt ()
97 ¤Ï
98 .I *valuep
99 ¤òÃͤòɽ¤¹Ê¸»úÎó¤Î¥¢¥É¥ì¥¹¤ËÀßÄꤹ¤ë¡£
100 .I optionp
101 Ãæ¤ÎºÇ½é¤Î¥«¥ó¥Þ¤Ï¥Ì¥ë¥Ð¥¤¥È¤Ç¾å½ñ¤­¤µ¤ì¤ë¡£¤½¤Î¤¿¤á¡¢
102 .I *valuep
103 ¤Ï¤½¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¤Î¡ÖÃͤÎʸ»úÎó¡×¤½¤Î¤â¤Î¤È¤Ê¤ë¡£
104
105 ¥µ¥Ö¥ª¥×¥·¥ç¥ó¤¬Ç§¼±¤µ¤ì¤¿¤¬¡¢Ãͤòɽ¤¹Ê¸»úÎ󤬸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿¾ì¹ç¡¢
106 .RI * valuep
107 ¤Ï NULL ¤ËÀßÄꤵ¤ì¤ë¡£
108
109 .BR getsubopt ()
110 ¤¬ÊÖ¤ë»þ¡¢
111 .I optionp
112 ¤Ï¼¡¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¤ò»Ø¤·¤Æ¤¤¤ë¡£
113 ¤Á¤ç¤¦¤ÉºÇ¸å¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¤¬½èÍý¤µ¤ì¤¿¾ì¹ç¤Ï¡¢
114 ʸ»úÎóËöÈø¤Î¥Ì¥ë¥Ð¥¤¥È (\(aq\\0\(aq) ¤ò»Ø¤·¤Æ¤¤¤ë¡£
115 .SH ÊÖ¤êÃÍ
116 .I optionp
117 Æâ¤Ç¥µ¥Ö¥ª¥×¥·¥ç¥ó¤¬¸«¤Ä¤«¤Ã¤¿¾ì¹ç¡¢
118 .BR getsubopt ()
119 ¤ÏºÇ½é¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¤Ë¥Þ¥Ã¥Á¤¹¤ë
120 .I tokens
121 ¤ÎÍ×ÁǤÎź»ú¤òÊÖ¤¹¡£
122 ¸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿¾ì¹ç¡¢\-1 ¤òÊÖ¤¹¡£¤³¤Î¾ì¹ç¡¢
123 .I *valuep
124 ¤Ï
125 .IB name [= value ]
126 ¤Îʸ»úÎóÁ´ÂΤȤʤ롣
127
128 .I *optionp
129 ¤ÏÊѹ¹¤µ¤ì¤ë¤Î¤Ç¡¢
130 .BR getsubopt ()
131 ¤ò¸Æ¤Ó½Ð¤¹Á°¤ÎºÇ½é¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¤Ï
132 .BR getsubopt ()
133 ¤ò¸Æ¤Ó½Ð¤·¸å¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¤Èɬ¤º¤·¤âƱ¤¸¤È¤Ï¸Â¤é¤Ê¤¤¡£
134 .SH ½àµò
135 POSIX.1-2001.
136 .SH Ãí°Õ
137
138 .BR getsubopt ()
139 ¤Ï¡¢Ê¸»úÎó
140 .RI * optionp
141 Ãæ¤Ë¸«¤Ä¤±¤¿¥«¥ó¥Þ¤ò¾å½ñ¤­¤¹¤ë¤Î¤Ç¡¢Ê¸»úÎó
142 .I *optionp
143 ¤Ï½ñ¤­¹þ¤ß²Äǽ¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤º¡¢
144 ʸ»úÎóÄê¿ô¤Ë¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Ê¤¤¡£
145 .SH Îã
146 °Ê²¼¤Î¥×¥í¥°¥é¥à¤Ï "\-o" ¥ª¥×¥·¥ç¥ó¤Ë³¤¤¤Æ¥µ¥Ö¥ª¥×¥·¥ç¥ó¤¬¤¢¤ë¤³¤È¤ò
147 ´üÂÔ¤·¤Æ¤¤¤ë¡£
148
149 .nf
150 #define _XOPEN_SOURCE 500
151 #include <stdlib.h>
152 #include <assert.h>
153 #include <stdio.h>
154
155 int main(int argc, char **argv)
156 {
157     enum {
158         RO_OPT = 0,
159         RW_OPT,
160         NAME_OPT
161     };
162     char *const token[] = {
163         [RO_OPT]   = "ro",
164         [RW_OPT]   = "rw",
165         [NAME_OPT] = "name",
166         NULL
167     };
168     char *subopts;
169     char *value;
170     int opt;
171
172     int readonly = 0;
173     int readwrite = 0;
174     char *name = NULL;
175     int errfnd = 0;
176
177     while ((opt = getopt(argc, argv, "o:")) != \-1) {
178         switch (opt) {
179         case \(aqo\(aq:
180             subopts = optarg;
181             while (*subopts != \(aq\\0\(aq && !errfnd) {
182
183             switch (getsubopt(&subopts, token, &value)) {
184             case RO_OPT:
185                 readonly = 1;
186                 break;
187
188             case RW_OPT:
189                 readwrite = 1;
190                 break;
191
192             case NAME_OPT:
193                 if (value == NULL) {
194                     fprintf(stderr, "Missing value for "
195                             "suboption \(aq%s\(aq\\n", token[NAME_OPT]);
196                     errfnd = 1;
197                     continue;
198                 }
199
200                 name = value;
201                 break;
202
203             default:
204                 fprintf(stderr, "No match found "
205                         "for token: /%s/\\n", value);
206                 errfnd = 1;
207                 break;
208             }
209         }
210         if (readwrite && readonly) {
211             fprintf(stderr, "Only one of \(aq%s\(aq and \(aq%s\(aq can be "
212                     "specified\\n", token[RO_OPT], token[RW_OPT]);
213             errfnd = 1;
214         }
215         break;
216
217         default:
218             errfnd = 1;
219         }
220     }
221
222     if (errfnd || argc == 1) {
223         fprintf(stderr, "\\nUsage: %s \-o <suboptstring>\\n", argv[0]);
224         fprintf(stderr, "suboptions are \(aqro\(aq, \(aqrw\(aq, "
225                 "and \(aqname=<value>\(aq\\n");
226         exit(EXIT_FAILURE);
227     }
228
229     /* Remainder of program... */
230
231     exit(EXIT_SUCCESS);
232 }
233 .fi
234 .SH ´ØÏ¢¹àÌÜ
235 .BR getopt (3)