OSDN Git Service

(split) Import translated manuals from JM CVS Repository.
[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 2008-05-29 "GNU" "Linux Programmer's Manual"
28 .SH Ì¾Á°
29 getsubopt \- Ê¸»úÎóÃæ¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó°ú¤­¿ô¤Î²ò¼á¤ò¹Ô¤¦
30 .SH ½ñ¼°
31 .B #define _XOPEN_SOURCE 500
32 .br
33 .B #include <stdlib.h>
34
35 .BI "int getsubopt(char **"optionp ", char * const *" tokens \
36 ", char **" valuep );
37 .SH ÀâÌÀ
38 .BR getsubopt ()
39 ¤Ï¡¢
40 .I optionp
41 ¤ÇÍ¿¤¨¤é¤ì¤¿¥«¥ó¥Þ¶èÀÚ¤ê¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¡¦¥ê¥¹¥È¤ò²òÀϤ¹¤ë¡£
42 (¤³¤Î¤è¤¦¤Ê¥µ¥Ö¥ª¥×¥·¥ç¥ó¡¦¥ê¥¹¥È¤Ï
43 .BR getopt (3)
44 ¤ò»È¤Ã¤Æ¥³¥Þ¥ó¥É¥é¥¤¥ó¤ò²ò¼á¤·¤¿¾ì¹ç¤Ë¸½¤ì¤ë¤³¤È¤¬Â¿¤¤¡£
45 Î㤨¤Ð¡¢
46 .BR mount (8)
47 ¤Î \fI-o\fP ¥ª¥×¥·¥ç¥ó¤ò¸«¤ë¤È¤è¤¤¡£)
48 ¤½¤ì¤¾¤ì¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¤Ë¤ÏÂбþ¤¹¤ëÃͤò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤ë¡£
49 ¥µ¥Ö¥ª¥×¥·¥ç¥ó¤Î̾Á°¤ÈÂбþ¤¹¤ëÃͤÏÅù¹æ (\(aq=\(aq) ¤Ç¶èÀÚ¤é¤ì¤ë¡£
50 Î㤨¤Ð¡¢°Ê²¼¤Î¤è¤¦¤Êʸ»úÎó¤ò
51 .I optionp
52 ¤ËÅϤ¹¤³¤È¤¬¤Ç¤­¤ë¡£
53 .sp
54 .in +4n
55 .B ro,name=xyz
56 .in
57
58 .I tokens
59 °ú¤­¿ô¤Ï¥È¡¼¥¯¥ó¤Î¥ê¥¹¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¡¢¥ê¥¹¥È¤Ï NULL ¤Ç½ªÃ¼¤µ¤ì¤ë¡£
60 .BR getsubopt ()
61 ¤Ï¤³¤Î¥È¡¼¥¯¥ó¤ò
62 .I optionp
63 Æâ¤Çõ¤¹¡£
64 ¤½¤ì¤¾¤ì¤Î¥È¡¼¥¯¥ó¤Ï¡¢NULL ½ªÃ¼¤µ¤ì¤¿ 1ʸ»ú°Ê¾å¤Îʸ»úÎó¤Ç¡¢
65 ¾¤Î¥È¡¼¥¯¥ó¤È¶èÊ̤Ǥ­¤ëɬÍפ¬¤¢¤ë¡£
66 ¤Þ¤¿¡¢Åù¹æ¤È¥«¥ó¥Þ¤ò´Þ¤ó¤Ç¤Ï¤Ê¤é¤Ê¤¤¡£
67
68 .BR getsubopt ()
69 ¤Ï¸Æ¤Ó½Ð¤µ¤ì¤ë¤¿¤Ó¤Ë¡¢
70 .I optionp
71 Ãæ¤Î¼¡¤Î̤½èÍý¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¤Î¾ðÊó¤òÊÖ¤¹¡£
72 ¥µ¥Ö¥ª¥×¥·¥ç¥óÆâ¤ËÅù¹æ¤¬¤¢¤Ã¤¿¾ì¹ç¡¢ºÇ½é¤ÎÅù¹æ¤Ï
73 ¤½¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¤Î̾Á°¤ÈÃͤζèÀÚ¤ê¤È²ò¼á¤µ¤ì¤ë¡£
74 ¶èÀڤ꤫¤é¼¡¤Î¥«¥ó¥Þ (ºÇ¸å¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¤Î¾ì¹ç¡¢Ê¸»úÎó¤ÎËöÈø)
75 ¤Þ¤Ç¤¬¡¢¥µ¥Ö¥ª¥×¥·¥ç¥ó¤ÎÃͤȤʤ롣
76 ¥µ¥Ö¥ª¥×¥·¥ç¥ó¤Î̾Á°¤¬
77 .I tokens
78 Æâ¤Î̾Á°¤È°ìÃפ·¡¢Ãͤòɽ¤¹Ê¸»úÎ󤬸«¤Ä¤«¤Ã¤¿¾ì¹ç¡¢
79 .BR getsubopt ()
80 ¤Ï
81 .I *valuep
82 ¤òÃͤòɽ¤¹Ê¸»úÎó¤Î¥¢¥É¥ì¥¹¤ËÀßÄꤹ¤ë¡£
83 .I optionp
84 Ãæ¤ÎºÇ½é¤Î¥«¥ó¥Þ¤Ï¥Ì¥ë¥Ð¥¤¥È¤Ç¾å½ñ¤­¤µ¤ì¤ë¡£¤½¤Î¤¿¤á¡¢
85 .I *valuep
86 ¤Ï¤½¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¤Î¡ÖÃͤÎʸ»úÎó¡×¤½¤Î¤â¤Î¤È¤Ê¤ë¡£
87
88 ¥µ¥Ö¥ª¥×¥·¥ç¥ó¤¬Ç§¼±¤µ¤ì¤¿¤¬¡¢Ãͤòɽ¤¹Ê¸»úÎ󤬸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿¾ì¹ç¡¢
89 .RI * valuep
90 ¤Ï NULL ¤ËÀßÄꤵ¤ì¤ë¡£
91
92 .BR getsubopt ()
93 ¤¬ÊÖ¤ë»þ¡¢
94 .I optionp
95 ¤Ï¼¡¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¤ò»Ø¤·¤Æ¤¤¤ë¡£
96 ¤Á¤ç¤¦¤ÉºÇ¸å¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¤¬½èÍý¤µ¤ì¤¿¾ì¹ç¤Ï¡¢
97 ʸ»úÎóËöÈø¤Î¥Ì¥ëʸ»ú¤ò»Ø¤·¤Æ¤¤¤ë¡£
98 .SH ÊÖ¤êÃÍ
99 .I optionp
100 Æâ¤Ç¥µ¥Ö¥ª¥×¥·¥ç¥ó¤¬¸«¤Ä¤«¤Ã¤¿¾ì¹ç¡¢
101 .BR getsubopt ()
102 ¤ÏºÇ½é¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¤Ë¥Þ¥Ã¥Á¤¹¤ë
103 .I tokens
104 ¤ÎÍ×ÁǤÎź»ú¤òÊÖ¤¹¡£
105 ¸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿¾ì¹ç¡¢\-1 ¤òÊÖ¤¹¡£¤³¤Î¾ì¹ç¡¢
106 .I *valuep
107 ¤Ï
108 .IB name [= value ]
109 ¤Îʸ»úÎóÁ´ÂΤȤʤ롣
110
111 .I *optionp
112 ¤ÏÊѹ¹¤µ¤ì¤ë¤Î¤Ç¡¢
113 .BR getsubopt ()
114 ¤ò¸Æ¤Ó½Ð¤¹Á°¤ÎºÇ½é¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¤Ï
115 .BR getsubopt ()
116 ¤ò¸Æ¤Ó½Ð¤·¸å¤Î¥µ¥Ö¥ª¥×¥·¥ç¥ó¤Èɬ¤º¤·¤âƱ¤¸¤È¤Ï¸Â¤é¤Ê¤¤¡£
117 .SH ½àµò
118 POSIX.1-2001.
119 .SH Ãí°Õ
120
121 .BR getsubopt ()
122 ¤Ï¡¢Ê¸»úÎó
123 .RI * optionp
124 Ãæ¤Ë¸«¤Ä¤±¤¿¥«¥ó¥Þ¤ò¾å½ñ¤­¤¹¤ë¤Î¤Ç¡¢Ê¸»úÎó
125 .I *optionp
126 ¤Ï½ñ¤­¹þ¤ß²Äǽ¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤º¡¢
127 ʸ»úÎóÄê¿ô¤Ë¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Ê¤¤¡£
128 .SH Îã
129 °Ê²¼¤Î¥×¥í¥°¥é¥à¤Ï "\-o" ¥ª¥×¥·¥ç¥ó¤Ë³¤¤¤Æ¥µ¥Ö¥ª¥×¥·¥ç¥ó¤¬¤¢¤ë¤³¤È¤ò
130 ´üÂÔ¤·¤Æ¤¤¤ë¡£
131
132 .nf
133 #define _XOPEN_SOURCE 500
134 #include <stdlib.h>
135 #include <assert.h>
136 #include <stdio.h>
137
138 int main(int argc, char **argv)
139 {
140     enum {
141         RO_OPT = 0,
142         RW_OPT,
143         NAME_OPT
144     };
145     char *const token[] = {
146         [RO_OPT]   = "ro",
147         [RW_OPT]   = "rw",
148         [NAME_OPT] = "name",
149         NULL
150     };
151     char *subopts;
152     char *value;
153     int opt;
154
155     int readonly = 0;
156     int readwrite = 0;
157     char *name = NULL;
158     int errfnd = 0;
159
160     while ((opt = getopt(argc, argv, "o:")) != \-1) {
161         switch (opt) {
162         case \(aqo\(aq:
163             subopts = optarg;
164             while (*subopts != \(aq\\0\(aq && !errfnd) {
165
166             switch (getsubopt(&subopts, token, &value)) {
167             case RO_OPT:
168                 readonly = 1;
169                 break;
170
171             case RW_OPT:
172                 readwrite = 1;
173                 break;
174
175             case NAME_OPT:
176                 if (value == NULL) {
177                     fprintf(stderr, "Missing value for "
178                             "suboption \(aq%s\(aq\\n", token[NAME_OPT]);
179                     errfnd = 1;
180                     continue;
181                 }
182
183                 name = value;
184                 break;
185
186             default:
187                 fprintf(stderr, "No match found "
188                         "for token: /%s/\\n", value);
189                 errfnd = 1;
190                 break;
191             }
192         }
193         if (readwrite && readonly) {
194             fprintf(stderr, "Only one of \(aq%s\(aq and \(aq%s\(aq can be "
195                     "specified\\n", token[RO_OPT], token[RW_OPT]);
196             errfnd = 1;
197         }
198         break;
199
200         default:
201             errfnd = 1;
202         }
203     }
204
205     if (errfnd || argc == 1) {
206         fprintf(stderr, "\\nUsage: %s \-o <suboptstring>\\n", argv[0]);
207         fprintf(stderr, "suboptions are \(aqro\(aq, \(aqrw\(aq, "
208                 "and \(aqname=<value>\(aq\\n");
209         exit(EXIT_FAILURE);
210     }
211
212     /* Remainder of program... */
213
214     exit(EXIT_SUCCESS);
215 }
216 .fi
217 .SH ´ØÏ¢¹àÌÜ
218 .BR getopt (3),
219 .BR feature_test_macros (7)