الاسم
- Provided by: manpages-ar-dev (Version: 4.31.0-1)
- Source: manpages-l10n
- Report a bug
مكتبة سي المعيارية (libc، -lc)
#include <sys/types.h> #include <sys/stat.h> #include <fts.h>
FTS *fts_open(char *const *path_argv, int options,
typeof(int (const FTSENT **, const FTSENT **))
*_Nullable compar);
FTSENT *fts_read(FTS *ftsp);
FTSENT *fts_children(FTS *ftsp, int instr);
int fts_set(FTS *ftsp, FTSENT *f, int instr);
int fts_close(FTS *ftsp);
تُوفر دوال fts لاجتياز التسلسلات الهرمية للملفات. نظرة عامة بسيطة هي أن الدالة fts_open() تُرجع "مقبضًا" (من النوع FTS *) يشير إلى "دفق" تسلسل هرمي للملفات. يُمرر هذا المقبض بعد ذلك إلى دوال fts الأخرى. الدالة fts_read() تُرجع مؤشرًا إلى بنية تصف أحد الملفات في التسلسل الهرمي. الدالة fts_children() تُرجع مؤشرًا إلى قائمة مرتبطة من البنى، كل منها يصف أحد الملفات الموجودة في دليل في التسلسل الهرمي.
بشكل عام، تُزار الأدلة مرتين قابلتين للتمييز؛ بالترتيب المسبق (قبل زيارة أي من توابعها) وبالترتيب اللاحق (بعد زيارة جميع توابعها). تُزار الملفات مرة واحدة. من الممكن السير في التسلسل الهرمي "منطقيًا" (زيارة الملفات التي تشير إليها الروابط الرمزية) أو فيزيائيًا (زيارة الروابط الرمزية نفسها)، ترتيب السير في التسلسل الهرمي أو تقليم و/أو إعادة زيارة أجزاء من التسلسل الهرمي.
تُعرف بنيتان (وأنواع مرتبطة) في ملف التضمين <fts.h>. النوع الأول هو FTS، البنية التي تمثل التسلسل الهرمي للملفات نفسه. النوع الثاني هو FTSENT، البنية التي تمثل ملفًا في التسلسل الهرمي. عادةً، تُرجع بنية FTSENT لكل ملف في التسلسل الهرمي. في صفحة الدليل هذه، "ملف" و"بنية FTSENT" قابلان للتبادل بشكل عام.
تحتوي بنية FTSENT على حقول تصف ملفًا. تحتوي البنية على الأقل على الحقول التالية (توجد حقول إضافية ينبغي اعتبارها خاصة بالتنفيذ):
typedef struct _ftsent {
unsigned short fts_info; /* أعلام لبنية FTSENT */
char *fts_accpath; /* مسار الوصول */
char *fts_path; /* مسار الجذر */
short fts_pathlen; /* strlen(fts_path) +
strlen(fts_name) */
char *fts_name; /* اسم الملف */
short fts_namelen; /* strlen(fts_name) */
short fts_level; /* العمق (من -1 إلى N) */
int fts_errno; /* رقم خطأ (errno) الملف */
long fts_number; /* قيمة عددية محلية */
void *fts_pointer; /* قيمة عنوان محلية */
struct _ftsent *fts_parent; /* الدليل الأب */
struct _ftsent *fts_link; /* بنية الملف التالية */
struct _ftsent *fts_cycle; /* بنية الحلقة التكرارية */
struct stat *fts_statp; /* معلومات الدالة [l]stat(2) */
} FTSENT;
تُعرف هذه الحقول كما يلي:
يُستخدم مخزن واحد لجميع مسارات جميع الملفات في تراتبية الملفات. لذلك، يُضمن أن حقلي fts_path و fts_accpath منتهيان بقيمة فارغة فقط للملف الذي أُعيد مؤخرًا بواسطة fts_read(). لاستخدام هذين الحقلين للإشارة إلى أي ملفات ممثلة ببنى FTSENT أخرى، سيتطلب تعديل مخزن المسار باستخدام المعلومات الموجودة في حقل fts_pathlen لتلك البنية FTSENT. يجب التراجع عن أي تعديلات من هذا القبيل قبل محاولة استدعاءات إضافية لـ fts_read(). حقل fts_name دائمًا منتهٍ بقيمة فارغة.
تأخذ دالة fts_open() مؤشرًا إلى مصفوفة من مؤشرات المحارف تسمي مسارًا واحدًا أو أكثر تشكل تراتبية ملفات منطقية ليتم اجتيازها. يجب إنهاء المصفوفة بمؤشر فارغ.
هناك عدد من الخيارات، يجب تحديد واحد منها على الأقل (إما FTS_LOGICAL أو FTS_PHYSICAL). تُختار الخيارات عن طريق إجراء عملية OR على القيم التالية:
يحدد المعامل compar() دالة معرفة من قبل المستخدم يمكن استخدامها لترتيب اجتياز التدرج الهرمي. تأخذ مؤشرين إلى مؤشرات لهياكل FTSENT كمعاملات ويجب أن تُرجع قيمة سالبة، صفر، أو قيمة موجبة للإشارة إلى ما إذا كان الملف المشار إليه بمعاملها الأول يأتي قبل، بأي ترتيب بالنسبة إلى، أو بعد الملف المشار إليه بمعاملها الثاني. لا يجوز أبدًا استخدام حقول fts_accpath و fts_path و fts_pathlen من هياكل FTSENT في هذه المقارنة. إذا كان حقل fts_info مضبوطًا على FTS_NS أو FTS_NSOK، فلا يجوز أيضًا استخدام حقل fts_statp. إذا كان معامل compar() هو NULL، فإن ترتيب اجتياز الدليل يكون بالترتيب المدرج في path_argv للمسارات الجذرية، وبالترتيب المدرج في الدليل لكل شيء آخر.
تُرجع الدالة fts_read() مؤشرًا إلى هيكل FTSENT يصف ملفًا في التدرج الهرمي. تُزار الأدلة (القابلة للقراءة والتي لا تسبب دورات) مرتين على الأقل، مرة بالترتيب المسبق ومرة بالترتيب اللاحق. تُزار جميع الملفات الأخرى مرة واحدة على الأقل. (قد تتسبب الروابط الثابتة بين الأدلة التي لا تسبب دورات أو الروابط الرمزية إلى روابط رمزية في زيارة الملفات أكثر من مرة، أو الأدلة أكثر من مرتين.)
إذا تم إرجاع جميع أعضاء التدرج الهرمي، تُرجع fts_read() NULL وتضبط errno على 0. إذا حدث خطأ غير مرتبط بملف في التدرج الهرمي، تُرجع fts_read() NULL وتضبط errno للإشارة إلى الخطأ. إذا حدث خطأ مرتبط بملف مُعاد، يُرجع مؤشر إلى هيكل FTSENT، وقد يكون errno مضبوطًا أو لا (انظر fts_info).
قد تُستبدل هياكل FTSENT التي تُرجعها fts_read() بعد استدعاء fts_close() على نفس دفق التدرج الهرمي للملف، أو بعد استدعاء fts_read() على نفس دفق التدرج الهرمي للملف ما لم تمثل ملفًا من نوع دليل، وفي هذه الحالة لن تُستبدل حتى بعد استدعاء fts_read() بعد إرجاع هيكل FTSENT بواسطة الدالة fts_read() بالترتيب اللاحق.
تُرجع الدالة fts_children() مؤشرًا إلى هيكل FTSENT يصف الإدخال الأول في قائمة مرتبطة منتهية بـ NULL من الملفات في الدليل الممثل بهيكل FTSENT الذي أُعيد مؤخرًا بواسطة fts_read(). تُربط القائمة من خلال حقل fts_link لهيكل FTSENT، وتُرتب بواسطة دالة المقارنة المحددة من قبل المستخدم، إن وجدت. ستعيد الاستدعاءات المتكررة لـ fts_children() إنشاء هذه القائمة المرتبطة.
كحالة خاصة، إذا لم تُستدع fts_read() بعد لتدرج هرمي، فستُرجع fts_children() مؤشرًا إلى الملفات في الدليل المنطقي المحدد لـ fts_open()، أي المعاملات المحددة لـ fts_open(). بخلاف ذلك، إذا كان هيكل FTSENT الذي أُعيد مؤخرًا بواسطة fts_read() ليس دليلًا يُزار بالترتيب المسبق، أو كان الدليل لا يحتوي على أي ملفات، تُرجع fts_children() NULL وتضبط errno على صفر. إذا حدث خطأ، تُرجع fts_children() NULL وتضبط errno للإشارة إلى الخطأ.
قد تُستبدل هياكل FTSENT التي تُرجعها fts_children() بعد استدعاء fts_children() أو fts_close() أو fts_read() على نفس دفق التدرج الهرمي للملف.
المعامل instr إما صفر أو القيمة التالية:
تسمح الدالة fts_set() لتطبيق المستخدم بتحديد معالجة إضافية للملف f من دفق ftsp. تُرجع الدالة fts_set() 0 عند النجاح، و -1 إذا حدث خطأ.
المعامل instr إما 0 (بمعنى "لا تفعل شيئًا") أو إحدى القيم التالية:
تُغلق دالة fts_close() تدفق التسلسل الهرمي للملفات المُشار إليه بواسطة ftsp وتستعيد الدليل الحالي إلى الدليل الذي استُدعيت منه fts_open() لفتح ftsp. تُعيد دالة fts_close() 0 عند النجاح، و -1 في حالة حدوث خطأ.
قد تفشل دالة fts_open() وتُضبط errno لأي من الأخطاء المُحددة لـ open(2) و malloc(3).
بالإضافة إلى ذلك، قد تفشل fts_open() وتُضبط errno كما يلي:
قد تفشل دالة fts_close() وتُضبط errno لأي من الأخطاء المُحددة لـ chdir(2) و close(2).
قد تفشل الدالتان fts_read() و fts_children() وتُضبطان errno لأي من الأخطاء المُحددة لـ chdir(2)، malloc(3)، opendir(3)، readdir(3)، و [l]stat(2).
بالإضافة إلى ذلك، قد تفشل fts_children()، fts_open()، و fts_set() وتُضبط errno كما يلي:
للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر attributes(7).
| الواجهة | السمة | القيمة |
| fts_open(), fts_set(), fts_close() | سلامة الخيوط | MT-Safe |
| fts_read(), fts_children() | سلامة الخيوط | غير آمن لتعدد الخيوط (MT-Unsafe) |
لا شيء.
glibc 2. 4.4BSD.
قبل glibc 2.23، جميع واجهات برمجة التطبيقات الموصوفة في صفحة الدليل هذه ليست آمنة عند ترجمة برنامج يستخدم واجهات برمجة تطبيقات LFS (مثلًا، عند الترجمة باستخدام -D_FILE_OFFSET_BITS=64).
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>
هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.
إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.