.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 1993, David Metcalfe .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" The pieces on scandirat(3) were copyright and licensed as follows. .\" .\" Copyright 2012, Mark R. Bannister .\" Copyright 2006, Michael Kerrisk .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH scandir 3 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم scandir, scandirat, alphasort, versionsort \- مسح دليل للبحث عن مدخلات مطابقة .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP .P \fBint scandir(const char *restrict \fP\fIdirp\fP\fB,\fP \fB struct dirent ***restrict \fP\fInamelist\fP\fB,\fP \fB typeof(int (const struct dirent *)) *\fP\fIfilter\fP\fB,\fP \fBtypeof(int (const struct dirent **, const struct dirent **))\fP \fB *\fP\fIcompar\fP\fB);\fP .P \fBint alphasort(const struct dirent **\fP\fIa\fP\fB, const struct dirent **\fP\fIb\fP\fB);\fP \fBint versionsort(const struct dirent **\fP\fIa\fP\fB, const struct dirent **\fP\fIb\fP\fB);\fP .P \fB#include \fP /* تعريف ثوابت AT_* */ \fB#include \fP .P \fBint scandirat(int \fP\fIdirfd\fP\fB, const char *restrict \fP\fIdirp\fP\fB,\fP \fB struct dirent ***restrict \fP\fInamelist\fP\fB,\fP \fB typeof(int (const struct dirent *)) *\fP\fIfilter\fP\fB,\fP \fBtypeof(int (const struct dirent **, const struct dirent **))\fP \fB *\fP\fIcompar\fP\fB);\fP .fi .P .RS -4 متطلبات ماكروات اختبار الميزات لـ glibc (انظر \fBfeature_test_macros\fP(7)): .RE .P \fBscandir\fP(), \fBalphasort\fP(): .nf /* منذ glibc 2.10: */ _POSIX_C_SOURCE >= 200809L || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE .fi .P \fBversionsort\fP(): .nf _GNU_SOURCE .fi .P \fBscandirat\fP(): .nf _GNU_SOURCE .fi .SH الوصف تفحص الدالة \fBscandir\fP() الدليل \fIdirp\fP، وتستدعي \fIfilter\fP() على كل مدخل دليل. تُخزَّن المدخلات التي تُرجع \fIfilter\fP() قيمة غير صفرية في سلاسل محارف مخصصة عبر \fBmalloc\fP(3)، وتُرتَّب باستخدام \fBqsort\fP(3) مع دالة المقارنة \fIcompar\fP()، وتُجمَع في مصفوفة \fInamelist\fP المخصصة عبر \fBmalloc\fP(3). إذا كان \fIfilter\fP NULL، تُحدد جميع المدخلات. .P يمكن استخدام الدالتين \fBalphasort\fP() و \fBversionsort\fP() كدالة مقارنة \fIcompar\fP(). ترتب الأولى مدخلات الدليل باستخدام \fBstrcoll\fP(3)، والثانية باستخدام \fBstrverscmp\fP(3) على السلاسل \fI(*a)\->d_name\fP و \fI(*b)\->d_name\fP. .SS scandirat() تعمل الدالة \fBscandirat\fP() بنفس طريقة \fBscandir\fP() تمامًا، باستثناء الاختلافات الموصوفة هنا. .P إذا كان \fIdirp\fP نسبيًا، فسيُفسَّر بالنسبة إلى الدليل المشار إليه بواصف الملف \fIdirfd\fP (بدلاً من دليل العمل الحالي للعملية المستدعية، كما تفعل \fBscandir\fP() لمسار نسبي). .P إذا كان \fIdirp\fP نسبيًا و \fIdirfd\fP هو القيمة الخاصة \fBAT_FDCWD\fP، فسيُفسَّر \fIdirp\fP بالنسبة إلى دليل العمل الحالي للعملية المستدعية (مثل \fBscandir\fP()). .P إذا كان \fIdirp\fP مطلقًا، فسيُتجاهل \fIdirfd\fP. .P انظر \fBopenat\fP(2) لشرح الحاجة إلى \fBscandirat\fP(). .SH "قيمة الإرجاع" تُرجع الدالة \fBscandir\fP() عدد مدخلات الدليل المحددة. عند حدوث خطأ، تُرجع \-1، مع تعيين \fIerrno\fP للإشارة إلى الخطأ. .P تُرجع الدالتان \fBalphasort\fP() و \fBversionsort\fP() عددًا صحيحًا أقل من، أو يساوي، أو أكبر من الصفر إذا كانت الوسيطة الأولى تُعتبر على التوالي أقل من، أو تساوي، أو أكبر من الثانية. .SH الأخطاء .TP \fBEBADF\fP (\fBscandirat\fP()) \fIdirp\fP نسبي ولكن \fIdirfd\fP ليس \fBAT_FDCWD\fP ولا واصف ملف صالح. .TP \fBENOENT\fP المسار في \fIdirp\fP غير موجود. .TP \fBENOMEM\fP الذاكرة غير كافية لإكمال العملية. .TP \fBENOTDIR\fP المسار في \fIdirp\fP ليس دليلاً. .TP \fBENOTDIR\fP (\fBscandirat\fP()) \fIdirp\fP نسبي و \fIdirfd\fP هو واصف ملف يشير إلى ملف غير دليل. .SH السمات للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. الواجهة السمة القيمة T{ .na .nh \fBscandir\fP()، \fBscandirat\fP() T} سلامة الخيوط MT\-Safe T{ .na .nh \fBalphasort\fP()، \fBversionsort\fP() T} سلامة الخيوط المنطقة (locale) آمنة لتعدد المسالك (MT\-Safe) .TE .SH المعايير .TP \fBalphasort\fP() .TQ \fBscandir\fP() POSIX.1\-2008. .TP \fBversionsort\fP() .TQ \fBscandirat\fP() GNU. .SH التاريخ .TP \fBalphasort\fP() .TQ \fBscandir\fP() 4.3BSD، POSIX.1\-2008. .TP \fBversionsort\fP() glibc 2.1. .TP \fBscandirat\fP() .\" .P .\" The functions .\" .BR scandir () .\" and .\" .BR alphasort () .\" are from 4.3BSD, and have been available under Linux since libc4. .\" Libc4 and libc5 use the more precise prototype .\" .sp .\" .nf .\" int alphasort(const struct dirent ** a, .\" const struct dirent **b); .\" .fi .\" .sp .\" but glibc 2.0 returns to the imprecise BSD prototype. glibc 2.15. .SH ملاحظات منذ glibc 2.1، تستدعي \fBalphasort\fP() الدالة \fBstrcoll\fP(3)؛ سابقًا كانت تستخدم \fBstrcmp\fP(3). .P قبل glibc 2.10، كانت الوسيطتان للدالتين \fBalphasort\fP() و \fBversionsort\fP() مكتوبتين كـ \fIconst void\ *\fP. عندما تم توحيد \fBalphasort\fP() في POSIX.1\-2008، تم تحديد نوع الوسيطة كـ \fIconst struct dirent\ **\fP الآمن من حيث النوع، وغيّر glibc 2.10 تعريف \fBalphasort\fP() (و \fBversionsort\fP() غير القياسية) لمطابقة المعيار. .SH أمثلة .\" يطبع البرنامج أدناه قائمة بالملفات في الدليل الحالي بترتيب عكسي. .SS "مصدر البرنامج" .\" SRC BEGIN (scandir.c) \& .EX #define _DEFAULT_SOURCE #include #include #include \& int main(void) { struct dirent **namelist; int n; \& n = scandir(".", &namelist, NULL, alphasort); if (n == \-1) { perror("scandir"); exit(EXIT_FAILURE); } \& while (n\-\-) { printf("%s\[rs]n", namelist[n]\->d_name); free(namelist[n]); } free(namelist); \& exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "انظر أيضًا" \fBclosedir\fP(3)، \fBfnmatch\fP(3)، \fBopendir\fP(3)، \fBreaddir\fP(3)، \fBrewinddir\fP(3)، \fBseekdir\fP(3)، \fBstrcmp\fP(3)، \fBstrcoll\fP(3)، \fBstrverscmp\fP(3)، \fBtelldir\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 .