getmntent(3)

الاسم
getmntent, setmntent, addmntent, endmntent, hasmntopt, getmntent_r - الحصول على مدخل ملف واصف نظام الملفات

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

موجز
#include <stdio.h>
#include <mntent.h>

FILE *setmntent(const char *path, const char *type);

struct mntent *getmntent(FILE *stream);

int addmntent(FILE *restrict stream,
              const struct mntent *restrict mnt);

int endmntent(FILE *streamp);

char *hasmntopt(const struct mntent *mnt, const char *opt);

/* GNU extension */
#include <mntent.h>

struct mntent *getmntent_r(int size;
              FILE *restrict streamp,
              struct mntent *restrict mntbuf,
              char buf[restrict size], int size);

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

getmntent_r():
    منذ glibc 2.19:
        _DEFAULT_SOURCE
    glibc 2.19 وما قبله:
        _BSD_SOURCE || _SVID_SOURCE

الوصف
تُستخدم هذه الروتينات للوصول إلى ملف وصف نظام الملفات /etc/fstab وملف وصف نظام الملفات المُوصَل /etc/mtab.

تفتح الدالة setmntent() ملف وصف نظام الملفات path وتُعيد مؤشر ملف يمكن استخدامه بواسطة getmntent(). المعامل type هو نوع الوصول المطلوب ويمكن أن يأخذ نفس قيم معامل mode للدالة fopen(3). يجب إغلاق الدفق المُعاد باستخدام endmntent() بدلاً من fclose(3).

تقرأ الدالة getmntent() السطر التالي من ملف وصف نظام الملفات من stream وتُعيد مؤشراً إلى بنية تحتوي على الحقول المفصولة من سطر في الملف. يشير المؤشر إلى منطقة ذاكرة ثابتة تُستبدل باستدعاءات لاحقة لـ getmntent().

تُضيف الدالة addmntent() بنية mntent mnt إلى نهاية الدفق المفتوح stream.

تُغلق الدالة endmntent() الدفق stream المرتبط بملف وصف نظام الملفات.

تفحص الدالة hasmntopt() حقل mnt_opts (انظر أدناه) من بنية mntent mnt بحثاً عن سلسلة فرعية تطابق opt. انظر <mntent.h> و mount(8) لخيارات الوصل الصالحة.

الدالة المعاد دخولها getmntent_r() مشابهة لـ getmntent()، لكنها تخزن بنية mntent في *mntbuf المُقدم، وتخزن السلاسل التي تشير إليها المدخلات في تلك البنية في المصفوفة المُقدمة buf ذات الحجم size.

تُعرف بنية mntent في <mntent.h> كما يلي:

    struct mntent {
        char *mnt_fsname;   /* اسم نظام الملفات الموصول */
        char *mnt_dir;      /* بادئة مسار نظام الملفات */
        char *mnt_type;     /* نوع الوصل (انظر mntent.h) */
        char *mnt_opts;     /* خيارات الوصل (انظر mntent.h) */
        int   mnt_freq;     /* تواتر النسخ الاحتياطي (dump) بالأيام */
        int   mnt_passno;    /* رقم المرور لبرنامج fsck المتوازي */
    };

نظراً لأن الحقول في ملفات mtab و fstab مفصولة بمسافات بيضاء، تُستخدم الهروب الثماني لتمثيل الأحرف مسافة (\040)، تبويب (\011)، سطر جديد (\012)، وخط مائل عكسي (\\) في تلك الملفات عندما تظهر في إحدى السلاسل الأربع في بنية mntent. ستحول الروتينات addmntent() و getmntent() من تمثيل السلسلة إلى تمثيل الهروب والعكس. عند التحويل من تمثيل الهروب، يُحول التسلسل \134 أيضاً إلى خط مائل عكسي.

قيمة الإرجاع
تُعيد الدالتان getmntent() و getmntent_r() مؤشرًا إلى بنية mntent أو NULL عند الفشل.

تُعيد الدالة addmntent() 0 عند النجاح و 1 عند الفشل.

تُعيد الدالة endmntent() دائمًا 1.

تُعيد الدالة hasmntopt() عنوان السلسلة الفرعية إذا وُجد تطابق و NULL بخلاف ذلك.

الملفات

/etc/fstab
    ملف وصف نظام الملفات

/etc/mtab
    ملف وصف نظام الملفات الموصول

السمات
للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر attributes(7).
الواجهة | السمة | القيمة
setmntent(), endmntent(), hasmntopt() | سلامة الخيوط | MT-Safe
getmntent() | سلامة الخيوط | MT-Unsafe race:mntentbuf locale
addmntent() | سلامة الخيوط | MT-Safe race:stream locale
getmntent_r() | سلامة الخيوط | المنطقة (locale) آمنة لتعدد المسالك (MT-Safe)

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

التاريخ
الدوال غير المعاد دخولها من SunOS 4.1.3. أُدخلت روتين getmntent_r() في HP-UX 10، لكنها تُعيد int. النموذج الأولي المعروض أعلاه خاص بـ glibc فقط.

يحتوي System V أيضًا على دالة getmntent() لكن تسلسل الاستدعاء يختلف، والبنية المُعادة مختلفة. تحت System V يُستخدم /etc/mnttab. 4.4BSD و Digital UNIX لديهما روتين getmntinfo()، وهو غلاف حول استدعاء النظام getfsstat().

انظر أيضًا
fopen(3)، fstab(5)، mount(8)

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

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

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