.\" -*- coding: UTF-8 -*- .\" Copyright 2001, Andreas Grünbacher .\" Copyright 2001, Silicon Graphics, Inc. .\" 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 listxattr 2 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم listxattr, llistxattr, flistxattr \- سرد أسماء السمات الموسعة .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP .P \fBssize_t listxattr(const char *\fP\fIpath\fP\fB, char *_Nullable \fP\fIlist\fP\fB, size_t \fP\fIsize\fP\fB);\fP \fBssize_t llistxattr(const char *\fP\fIpath\fP\fB, char *_Nullable \fP\fIlist\fP\fB, size_t \fP\fIsize\fP\fB);\fP \fBssize_t flistxattr(int \fP\fIfd\fP\fB, char *_Nullable \fP\fIlist\fP\fB, size_t \fP\fIsize\fP\fB);\fP .fi .SH الوصف السمات الممتدة هي أزواج \fIالاسم\fP:\fIالقيمة\fP المرتبطة بالفهارس (الملفات، المجلدات، الروابط الرمزية، إلخ). وهي امتدادات للسمات العادية المرتبطة بكافة الفهارس في النظام (أي بيانات \fBstat\fP(2)). يمكن العثور على نظرة شاملة لمفاهيم السمات الممتدة في \fBxattr\fP(7). .P تسترد الدالة \fBlistxattr\fP() قائمة أسماء السمات الموسعة المرتبطة بالمسار \fIpath\fP المعطى في نظام الملفات. توضع القائمة المستردة في \fIlist\fP، وهي مخزن مؤقت مخصص من قبل المستدعي ويُحدد حجمه (بالبايت) في الوسيط \fIsize\fP. القائمة هي مجموعة من الأسماء (منتهية بقيمة خالية) واحدة تلو الأخرى. قد تُحذف من القائمة أسماء السمات الموسعة التي لا تملك العملية المستدعية صلاحية الوصول إليها. يُعاد طول قائمة أسماء السمات \fIlist\fP. .P تطابق \fBllistxattr\fP() الدالة \fBlistxattr\fP()، باستثناء حالة الارتباط الرمزي، حيث تُسترجع قائمة أسماء السمات الموسعة المرتبطة بالارتباط نفسه، وليس الملف الذي يشير إليه. .P تطابق \fBflistxattr\fP() الدالة \fBlistxattr\fP()، لكن يُستجوب الملف المفتوح المشار إليه بواسطة \fIfd\fP (كما تُعيده \fBopen\fP(2)) بدلاً من \fIpath\fP. .P السمة الموسعة المفردة \fIname\fP هي سلسلة منتهية بقيمة خالية. يتضمن الاسم بادئة نطاق أسماء؛ قد توجد عدة نطاقات أسماء منفصلة مرتبطة بعقدة فهرسة فردية. .P إذا حُدد \fIsize\fP بقيمة صفر، تُعيد هذه الاستدعاءات الحجم الحالي لقائمة أسماء السمات الموسعة (وتترك \fIlist\fP دون تغيير). يمكن استخدام هذا لتحديد حجم المخزن المؤقت الذي ينبغي توفيره في استدعاء لاحق. (لكن، ضع في اعتبارك أن هناك احتمالاً أن تتغير مجموعة السمات الموسعة بين الاستدعاءين، لذا لا يزال من الضروري التحقق من حالة الإرجاع من الاستدعاء الثاني.) .SS مثال تُعاد \fIقائمة\fP الأسماء على شكل مصفوفة غير مرتبة من سلاسل الأحرف المنتهية بـ null (يُفصل بين أسماء السمات بايتات null (\[aq]\[rs]0\[aq]))، على النحو التالي: .P .in +4n .EX user.name1\[rs]0system.name1\[rs]0user.name2\[rs]0 .EE .in .P أنظمة الملفات التي تنفذ قوائم التحكم بالوصول POSIX باستخدام السمات الموسعة قد تُعيد قائمة \fIlist\fP هكذا: .P .in +4n .EX system.posix_acl_access\[rs]0system.posix_acl_default\[rs]0 .EE .in .SH "قيمة الإرجاع" عند النجاح، يُعاد رقم غير سالب يشير إلى حجم قائمة أسماء السمات الموسعة. عند الفشل، يُعاد \-1 ويُضبط \fIerrno\fP للإشارة إلى الخطأ. .SH الأخطاء .TP \fBE2BIG\fP حجم قائمة أسماء السمات الموسعة أكبر من الحجم الأقصى المسموح به؛ لا يمكن استرجاع القائمة. قد يحدث هذا في أنظمة الملفات التي تدعم عدداً غير محدود من السمات الموسعة لكل ملف، مثل XFS على سبيل المثال. انظر الأخطاء. .TP \fBENOTSUP\fP السمات الموسعة غير مدعومة من قبل نظام الملفات، أو أنها معطلة. .TP \fBERANGE\fP حجم \fIsize\fP للمخزن المؤقت \fIlist\fP صغير جداً لاستيعاب النتيجة. .P بالإضافة إلى ذلك، يمكن أن تحدث أيضًا الأخطاء الموثقة في \fBstat\fP(2). .SH المعايير لينكس. .SH التاريخ .\" .SH AUTHORS .\" Andreas Gruenbacher, .\" .RI < a.gruenbacher@computer.org > .\" and the SGI XFS development team, .\" .RI < linux-xfs@oss.sgi.com >. .\" Please send any bug reports or comments to these addresses. لينكس 2.4، glibc 2.3. .SH العلل .\" The xattr(7) page refers to this text: كما هو مذكور في \fBxattr\fP(7)، يفرض نظام VFS حدًا أقصى قدره 64 كيلوبايت لحجم قائمة أسماء السمات الموسعة التي تُرجعها الدالة \fBlistxattr\fP(). وإذا تجاوز الحجم الإجمالي لأسماء السمات المرتبطة بملف ما هذا الحد، فلن يكون من الممكن بعد ذلك استرداد قائمة أسماء السمات. .SH أمثلة يوضح البرنامج التالي استخدام \fBlistxattr\fP() و \fBgetxattr\fP(2). بالنسبة للملف الذي يُقدم اسم مساره كوسيط سطر أوامر، يسرد جميع سمات الملف الموسعة وقيمها. .P لإبقاء الكود بسيطاً، يفترض البرنامج أن مفاتيح وقيم السمات ثابتة أثناء تنفيذ البرنامج. يجب أن يتوقع برنامج الإنتاج التغييرات أثناء تنفيذ البرنامج ويتعامل معها. على سبيل المثال، قد يزيد عدد البايتات المطلوبة لمفاتيح السمات بين الاستدعاءين لـ \fBlistxattr\fP(). يمكن للتطبيق التعامل مع هذا الاحتمال باستخدام حلقة تعيد محاولة الاستدعاء (ربما حتى عدد أقصى محدد مسبقاً من المحاولات) مع مخزن مؤقت أكبر في كل مرة يفشل فيها مع الخطأ \fBERANGE\fP. يمكن التعامل مع استدعاءات \fBgetxattr\fP(2) بطريقة مماثلة. .P سُجل المخرج التالي بإنشاء ملف أولاً، وتعيين بعض سمات الملف الموسعة، ثم سرد السمات باستخدام البرنامج المثال. .SS "مثال على الخرج" .in +4n .EX $\fB touch /tmp/foo\fP; $\fB setfattr \-n user.fred \-v chocolate /tmp/foo\fP; $\fB setfattr \-n user.frieda \-v bar /tmp/foo\fP; $\fB setfattr \-n user.empty /tmp/foo\fP; $\fB ./listxattr /tmp/foo\fP; user.fred: chocolate user.frieda: bar user.empty: .EE .in .SS "مصدر البرنامج (listxattr.c)" .\" SRC BEGIN (listxattr.c) .EX #include #include #include #include \& int main(int argc, char *argv[]) { char *buf, *key, *val; ssize_t buflen, keylen, vallen; \& if (argc != 2) { fprintf(stderr, "Usage: %s path\[rs]n", argv[0]); exit(EXIT_FAILURE); } \& /* * Determine the length of the buffer needed. */ buflen = listxattr(argv[1], NULL, 0); if (buflen == \-1) { perror("listxattr"); exit(EXIT_FAILURE); } if (buflen == 0) { printf("%s has no attributes.\[rs]n", argv[1]); exit(EXIT_SUCCESS); } \& /* * Allocate the buffer. */ buf = malloc(buflen); if (buf == NULL) { perror("malloc"); exit(EXIT_FAILURE); } \& /* * Copy the list of attribute keys to the buffer. */ buflen = listxattr(argv[1], buf, buflen); if (buflen == \-1) { perror("listxattr"); exit(EXIT_FAILURE); } \& /* * Loop over the list of zero terminated strings with the * attribute keys. Use the remaining buffer length to determine * the end of the list. */ key = buf; while (buflen > 0) { \& /* * Output attribute key. */ printf("%s: ", key); \& /* * Determine length of the value. */ vallen = getxattr(argv[1], key, NULL, 0); if (vallen == \-1) perror("getxattr"); \& if (vallen > 0) { \& /* * Allocate value buffer. * One extra byte is needed to append 0x00. */ val = malloc(vallen + 1); if (val == NULL) { perror("malloc"); exit(EXIT_FAILURE); } \& /* * Copy value to buffer. */ vallen = getxattr(argv[1], key, val, vallen); if (vallen == \-1) { perror("getxattr"); } else { /* * Output attribute value. */ val[vallen] = 0; printf("%s", val); } \& free(val); } else if (vallen == 0) { printf(""); } \& printf("\[rs]n"); \& /* * Forward to next attribute key. */ keylen = strlen(key) + 1; buflen \-= keylen; key += keylen; } \& free(buf); exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "انظر أيضًا" \fBgetfattr\fP(1), \fBsetfattr\fP(1), \fBgetxattr\fP(2), \fBopen\fP(2), \fBremovexattr\fP(2), \fBsetxattr\fP(2), \fBstat\fP(2), \fBsymlink\fP(7), \fBxattr\fP(7) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .