.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 2007, Michael Kerrisk .\" Copyright 2007, Justin Pryzby .\" Copyright, the authors of the Linux man-pages project .\" .\" %%%LICENSE_START(PERMISSIVE_MISC) .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be .\" included in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, .\" EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY .\" CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, .\" TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE .\" SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. .\" %%%LICENSE_END .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH getsubopt 3 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم getsubopt \- تحليل وسائط الخيارات الفرعية من سلسلة محارف .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP .P \fBint getsubopt(char **restrict \fP\fIoptionp\fP\fB, char *const *restrict \fP\fItokens\fP\fB,\fP \fB char **restrict \fP\fIvaluep\fP\fB);\fP .fi .P .RS -4 متطلبات ماكروات اختبار الميزات لـ glibc (انظر \fBfeature_test_macros\fP(7)): .RE .P \fBgetsubopt\fP(): .nf .\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED _XOPEN_SOURCE >= 500 || /* منذ glibc 2.12: */ _POSIX_C_SOURCE >= 200809L .fi .SH الوصف \fBgetsubopt\fP() يُحلل قائمة الخيارات الفرعية المفصولة بفواصل والمُقدمة في \fIoptionp\fP. (تُنتج قائمة الخيارات الفرعية هذه عادةً عند استخدام \fBgetopt\fP(3) لتحليل سطر أوامر؛ انظر مثلاً الخيار \fI\-o\fP من \fBmount\fP(8).) قد يتضمن كل خيار فرعي قيمة مرتبطة، تُفصل عن اسم الخيار الفرعي بعلامة يساوي. فيما يلي مثال على نوع السلسلة التي قد تُمرر في \fIoptionp\fP: .P .in +4n .EX \fBro,name=xyz\fP .EE .in .P وسيط \fItokens\fP هو مؤشر لمصفوفة منتهية بـ NULL من المؤشرات إلى الرموز التي سيبحث عنها \fBgetsubopt\fP() في \fIoptionp\fP. يجب أن تكون الرموز سلاسل محارف مميزة ومنتهية بـ null وتحتوي على حرف واحد على الأقل، دون علامات يساوي أو فواصل مضمنة. .P كل استدعاء لـ \fBgetsubopt\fP() يُرجع معلومات عن الخيار الفرعي التالي غير المعالج في \fIoptionp\fP. تُفسر أول علامة يساوي في خيار فرعي (إن وُجدت) كفاصل بين اسم وقيمة ذلك الخيار الفرعي. تمتد القيمة إلى الفاصلة التالية، أو (للخيار الفرعي الأخير) إلى نهاية السلسلة. إذا طابق اسم الخيار الفرعي اسمًا معروفًا من \fItokens\fP، ووُجدت سلسلة قيمة، يضبط \fBgetsubopt\fP() \fI*valuep\fP على عنوان تلك السلسلة. تُستبدل أول فاصلة في \fIoptionp\fP ببايت فارغ، لذا يكون \fI*valuep\fP بدقة "سلسلة القيمة" لذلك الخيار الفرعي. .P إذا تم التعرف على الخيار الفرعي، ولكن لم تُوجد سلسلة قيمة، يُضبط \fI*valuep\fP على NULL. .P عندما يُرجع \fBgetsubopt\fP()، يشير \fIoptionp\fP إلى الخيار الفرعي التالي، أو إلى البايت الفارغ (\[aq]\[rs]0\[aq]) في نهاية السلسلة إذا كان الخيار الفرعي الأخير قد عُولج لتوه. .SH "قيمة الإرجاع" إذا تم التعرف على أول خيار فرعي في \fIoptionp\fP، يُرجع \fBgetsubopt\fP() فهرس عنصر الخيار الفرعي المطابق في \fItokens\fP. وإلا، يُرجع \-1 ويكون \fI*valuep\fP هو السلسلة الكاملة \fIname\fP\fB[=\fP\fIvalue\fP\fB]\fP. .P بما أن \fI*optionp\fP قد تغير، فإن أول خيار فرعي قبل استدعاء \fBgetsubopt\fP() ليس (بالضرورة) نفس أول خيار فرعي بعد \fBgetsubopt\fP(). .SH السمات للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. الواجهة السمة القيمة T{ .na .nh \fBgetsubopt\fP() T} سلامة الخيوط MT\-Safe .TE .SH المعايير POSIX.1\-2008. .SH التاريخ POSIX.1\-2001. .SH ملاحظات بما أن \fBgetsubopt\fP() يستبدل أي فواصل يجدها في السلسلة \fI*optionp\fP، يجب أن تكون تلك السلسلة قابلة للكتابة؛ لا يمكن أن تكون ثابت سلسلة. .SH أمثلة يتوقع البرنامج التالي خيارات فرعية تتبع خيار "\-o". .P .\" SRC BEGIN (getsubopt.c) .EX #define _XOPEN_SOURCE 500 #include #include \& #include \& int main(int argc, char *argv[]) { enum { RO_OPT = 0, RW_OPT, NAME_OPT }; char *const token[] = { [RO_OPT] = "ro", [RW_OPT] = "rw", [NAME_OPT] = "name", NULL }; char *subopts; char *value; int opt; \& int readonly = 0; int readwrite = 0; char *name = NULL; int errfnd = 0; \& while ((opt = getopt(argc, argv, "o:")) != \-1) { switch (opt) { case \[aq]o\[aq]: subopts = optarg; while (*subopts != \[aq]\[rs]0\[aq] && !errfnd) { \& switch (getsubopt(&subopts, token, &value)) { case RO_OPT: readonly = 1; break; \& case RW_OPT: readwrite = 1; break; \& case NAME_OPT: if (value == NULL) { fprintf(stderr, "Missing value for suboption \[aq]%s\[aq]\[rs]n", token[NAME_OPT]); errfnd = 1; continue; } \& name = value; break; \& default: fprintf(stderr, "No match found for token: /%s/\[rs]n", value); errfnd = 1; break; } } if (readwrite && readonly) { fprintf(stderr, "Only one of \[aq]%s\[aq] and \[aq]%s\[aq] can be specified\[rs]n", token[RO_OPT], token[RW_OPT]); errfnd = 1; } break; \& default: errfnd = 1; } } \& if (errfnd || argc == 1) { fprintf(stderr, "\[rs]nUsage: %s \-o \[rs]n", argv[0]); fprintf(stderr, "suboptions are \[aq]ro\[aq], \[aq]rw\[aq], and \[aq]name=\[aq]\[rs]n"); exit(EXIT_FAILURE); } \& /* Remainder of program... */ \& exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "انظر أيضًا" \fBgetopt\fP(3) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .