rpmatch(3)

الاسم
rpmatch - تحديد ما إذا كانت الإجابة على سؤال إيجابية أم سلبية

المكتبة
مكتبة سي المعيارية (libc، -lc)

موجز
#include <stdlib.h>

int rpmatch(const char *response);

    متطلبات ماكروات اختبار الميزات لـ glibc (انظر feature_test_macros(7)):

rpmatch():
    منذ glibc 2.19:
        _DEFAULT_SOURCE
    في glibc 2.19 وما قبله:
        _SVID_SOURCE

الوصف
تتعامل rpmatch() مع استجابة المستخدم لأسئلة نعم أو لا، مع دعم التدويل.

يجب أن تكون response سلسلة محارف منتهية بقيمة خالية تحتوي على استجابة مقدمة من المستخدم، ربما تم الحصول عليها باستخدام fgets(3) أو getline(3).

يُؤخذ تفضيل لغة المستخدم في الاعتبار وفقًا لمتغيرات البيئة LANG وLC_MESSAGES وLC_ALL، إذا كان البرنامج قد استدعى setlocale(3) لتطبيق تغييراتها.

بغض النظر عن الإعدادات المحلية، تُقبل الاستجابات المطابقة لـ ^[Yy] دائمًا كإيجابية، وتُقبل تلك المطابقة لـ ^[Nn] دائمًا كسلبية.

قيمة الإرجاع
بعد فحص response، تُرجع rpmatch() 0 لاستجابة سلبية معروفة ("لا")، و1 لاستجابة إيجابية معروفة ("نعم")، و-1 عندما تكون قيمة response غير معروفة.

الأخطاء
قد تشير قيمة الإرجاع -1 إلى إدخال غير صالح، أو خطأ آخر. من غير الصحيح اختبار ما إذا كانت قيمة الإرجاع غير صفرية فقط.

يمكن أن تفشل rpmatch() لأي من الأسباب التي قد تفشل بها regcomp(3) أو regexec(3)؛ الخطأ غير متاح من errno أو أي مكان آخر، ولكنه يشير إلى فشل محرك التعبير النمطي (لكن هذه الحالة لا يمكن تمييزها عن حالة قيمة غير معروفة لـ response).

السمات
للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر attributes(7).
الواجهة | السمة | القيمة
rpmatch() | سلامة الخيوط | المنطقة (locale) آمنة لتعدد المسالك (MT-Safe)

المعايير
لا شيء.

التاريخ
GNU، FreeBSD، AIX.

العلل
تفحص YESEXPR وNOEXPR لبعض الإعدادات المحلية (بما في ذلك "C") الحرف الأول فقط من response. قد يعني هذا أن "yno" وما شابه ذلك تُحل إلى 1. هذا أثر جانبي تاريخي مؤسف يجب إصلاحه في الوقت المناسب مع التوطين المناسب، ولا ينبغي أن يثني عن كون rpmatch() الطريقة الصحيحة للتمييز بين الإجابات الثنائية.

أمثلة
يعرض البرنامج التالي النتائج عند تطبيق rpmatch() على السلسلة المحارف المعطاة في وسيط سطر أوامر البرنامج.

    #define _DEFAULT_SOURCE
    #include <locale.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    #define streq(...)  (strcmp(__VA_ARGS__) == 0)

    int
    main(int argc, char *argv[])
    {
        if (argc != 2 || streq(argv[1], "--help")) {
            fprintf(stderr, "%s response\n", argv[0]);
            exit(EXIT_FAILURE);
        }

        setlocale(LC_ALL, "");
        printf("rpmatch() returns: %d\n", rpmatch(argv[1]));
        exit(EXIT_SUCCESS);
    }

انظر أيضًا
fgets(3)، getline(3)، nl_langinfo(3)، regcomp(3)، setlocale(3)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.