OSDN Git Service

(split) LDP v3.24 -> v3.29 の定型的な変更内容を反映。
[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 °ú¤­¿ô¤Ï¥È¡¼¥¯¥ó¤Î¥ê¥¹¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¡¢¥ê¥¹¥È¤Ï NULL ¤Ç½ªÃ¼¤µ¤ì¤ë¡£
76 .BR getsubopt ()
77 ¤Ï¤³¤Î¥È¡¼¥¯¥ó¤ò
78 .I optionp
79 Æâ¤Çõ¤¹¡£
80 ¤½¤ì¤¾¤ì¤Î¥È¡¼¥¯¥ó¤Ï¡¢NULL ½ªÃ¼¤µ¤ì¤¿ 1ʸ»ú°Ê¾å¤Îʸ»úÎó¤Ç¡¢
81 ¾¤Î¥È¡¼¥¯¥ó¤È¶èÊ̤Ǥ­¤ëɬÍפ¬¤¢¤ë¡£
82 ¤Þ¤¿¡¢Åù¹æ¤È¥«¥ó¥Þ¤ò´Þ¤ó¤Ç¤Ï¤Ê¤é¤Ê¤¤¡£
83
84 .BR getsubopt ()
85 ¤Ï¸Æ¤Ó½Ð¤µ¤ì¤ë¤¿¤Ó¤Ë¡¢
86 .I optionp
87 Ãæ¤Î¼¡¤Î̤½èÍý¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¤Î¾ðÊó¤òÊÖ¤¹¡£
88 ¥µ¥Ö¥ª¥×¥·¥ç¥óÆâ¤ËÅù¹æ¤¬¤¢¤Ã¤¿¾ì¹ç¡¢ºÇ½é¤ÎÅù¹æ¤Ï
89 ¤½¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¤Î̾Á°¤ÈÃͤζèÀÚ¤ê¤È²ò¼á¤µ¤ì¤ë¡£
90 ¶èÀڤ꤫¤é¼¡¤Î¥«¥ó¥Þ (ºÇ¸å¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¤Î¾ì¹ç¡¢Ê¸»úÎó¤ÎËöÈø)
91 ¤Þ¤Ç¤¬¡¢¥µ¥Ö¥ª¥×¥·¥ç¥ó¤ÎÃͤȤʤ롣
92 ¥µ¥Ö¥ª¥×¥·¥ç¥ó¤Î̾Á°¤¬
93 .I tokens
94 Æâ¤Î̾Á°¤È°ìÃפ·¡¢Ãͤòɽ¤¹Ê¸»úÎ󤬸«¤Ä¤«¤Ã¤¿¾ì¹ç¡¢
95 .BR getsubopt ()
96 ¤Ï
97 .I *valuep
98 ¤òÃͤòɽ¤¹Ê¸»úÎó¤Î¥¢¥É¥ì¥¹¤ËÀßÄꤹ¤ë¡£
99 .I optionp
100 Ãæ¤ÎºÇ½é¤Î¥«¥ó¥Þ¤Ï¥Ì¥ë¥Ð¥¤¥È¤Ç¾å½ñ¤­¤µ¤ì¤ë¡£¤½¤Î¤¿¤á¡¢
101 .I *valuep
102 ¤Ï¤½¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¤Î¡ÖÃͤÎʸ»úÎó¡×¤½¤Î¤â¤Î¤È¤Ê¤ë¡£
103
104 ¥µ¥Ö¥ª¥×¥·¥ç¥ó¤¬Ç§¼±¤µ¤ì¤¿¤¬¡¢Ãͤòɽ¤¹Ê¸»úÎ󤬸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿¾ì¹ç¡¢
105 .RI * valuep
106 ¤Ï NULL ¤ËÀßÄꤵ¤ì¤ë¡£
107
108 .BR getsubopt ()
109 ¤¬ÊÖ¤ë»þ¡¢
110 .I optionp
111 ¤Ï¼¡¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¤ò»Ø¤·¤Æ¤¤¤ë¡£
112 ¤Á¤ç¤¦¤ÉºÇ¸å¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¤¬½èÍý¤µ¤ì¤¿¾ì¹ç¤Ï¡¢
113 ʸ»úÎóËöÈø¤Î¥Ì¥ë¥Ð¥¤¥È ('\\0') ¤ò»Ø¤·¤Æ¤¤¤ë¡£
114 .SH ÊÖ¤êÃÍ
115 .I optionp
116 Æâ¤Ç¥µ¥Ö¥ª¥×¥·¥ç¥ó¤¬¸«¤Ä¤«¤Ã¤¿¾ì¹ç¡¢
117 .BR getsubopt ()
118 ¤ÏºÇ½é¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¤Ë¥Þ¥Ã¥Á¤¹¤ë
119 .I tokens
120 ¤ÎÍ×ÁǤÎź»ú¤òÊÖ¤¹¡£
121 ¸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿¾ì¹ç¡¢\-1 ¤òÊÖ¤¹¡£¤³¤Î¾ì¹ç¡¢
122 .I *valuep
123 ¤Ï
124 .IB name [= value ]
125 ¤Îʸ»úÎóÁ´ÂΤȤʤ롣
126
127 .I *optionp
128 ¤ÏÊѹ¹¤µ¤ì¤ë¤Î¤Ç¡¢
129 .BR getsubopt ()
130 ¤ò¸Æ¤Ó½Ð¤¹Á°¤ÎºÇ½é¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¤Ï
131 .BR getsubopt ()
132 ¤ò¸Æ¤Ó½Ð¤·¸å¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¤Èɬ¤º¤·¤âƱ¤¸¤È¤Ï¸Â¤é¤Ê¤¤¡£
133 .SH ½àµò
134 POSIX.1-2001.
135 .SH Ãí°Õ
136
137 .BR getsubopt ()
138 ¤Ï¡¢Ê¸»úÎó
139 .RI * optionp
140 Ãæ¤Ë¸«¤Ä¤±¤¿¥«¥ó¥Þ¤ò¾å½ñ¤­¤¹¤ë¤Î¤Ç¡¢Ê¸»úÎó
141 .I *optionp
142 ¤Ï½ñ¤­¹þ¤ß²Äǽ¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤º¡¢
143 ʸ»úÎóÄê¿ô¤Ë¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Ê¤¤¡£
144 .SH Îã
145 °Ê²¼¤Î¥×¥í¥°¥é¥à¤Ï "\-o" ¥ª¥×¥·¥ç¥ó¤Ë³¤¤¤Æ¥µ¥Ö¥ª¥×¥·¥ç¥ó¤¬¤¢¤ë¤³¤È¤ò
146 ´üÂÔ¤·¤Æ¤¤¤ë¡£
147
148 .nf
149 #define _XOPEN_SOURCE 500
150 #include <stdlib.h>
151 #include <assert.h>
152 #include <stdio.h>
153
154 int main(int argc, char **argv)
155 {
156     enum {
157         RO_OPT = 0,
158         RW_OPT,
159         NAME_OPT
160     };
161     char *const token[] = {
162         [RO_OPT]   = "ro",
163         [RW_OPT]   = "rw",
164         [NAME_OPT] = "name",
165         NULL
166     };
167     char *subopts;
168     char *value;
169     int opt;
170
171     int readonly = 0;
172     int readwrite = 0;
173     char *name = NULL;
174     int errfnd = 0;
175
176     while ((opt = getopt(argc, argv, "o:")) != \-1) {
177         switch (opt) {
178         case \(aqo\(aq:
179             subopts = optarg;
180             while (*subopts != \(aq\\0\(aq && !errfnd) {
181
182             switch (getsubopt(&subopts, token, &value)) {
183             case RO_OPT:
184                 readonly = 1;
185                 break;
186
187             case RW_OPT:
188                 readwrite = 1;
189                 break;
190
191             case NAME_OPT:
192                 if (value == NULL) {
193                     fprintf(stderr, "Missing value for "
194                             "suboption \(aq%s\(aq\\n", token[NAME_OPT]);
195                     errfnd = 1;
196                     continue;
197                 }
198
199                 name = value;
200                 break;
201
202             default:
203                 fprintf(stderr, "No match found "
204                         "for token: /%s/\\n", value);
205                 errfnd = 1;
206                 break;
207             }
208         }
209         if (readwrite && readonly) {
210             fprintf(stderr, "Only one of \(aq%s\(aq and \(aq%s\(aq can be "
211                     "specified\\n", token[RO_OPT], token[RW_OPT]);
212             errfnd = 1;
213         }
214         break;
215
216         default:
217             errfnd = 1;
218         }
219     }
220
221     if (errfnd || argc == 1) {
222         fprintf(stderr, "\\nUsage: %s \-o <suboptstring>\\n", argv[0]);
223         fprintf(stderr, "suboptions are \(aqro\(aq, \(aqrw\(aq, "
224                 "and \(aqname=<value>\(aq\\n");
225         exit(EXIT_FAILURE);
226     }
227
228     /* Remainder of program... */
229
230     exit(EXIT_SUCCESS);
231 }
232 .fi
233 .SH ´ØÏ¢¹àÌÜ
234 .BR getopt (3),
235 .BR feature_test_macros (7)