.\" -*- coding: UTF-8 -*- '\" t .\" Copyright, the authors of the Linux man-pages project .\" .\" %%%LICENSE_START(BSD_ONELINE_CDROM) .\" This page was taken from the 4.4BSD-Lite CDROM (BSD license) .\" %%%LICENSE_END .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH xdr 3 "21 سبتمبر 2025" "صفحات دليل لينكس 6.18" .SH الاسم xdr \- دوال مكتبة لتمثيل البيانات الخارجي .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH "الملخص والوصف" تسمح هذه الدوال لمبرمجي C بوصف هياكل بيانات عشوائية بطريقة مستقلة عن الآلة. تُنقل بيانات استدعاءات الإجراءات البعيدة باستخدام هذه الدوال. .P النماذج الأولية أدناه مُصرَّح بها في \fI\fP وتستخدم الأنواع التالية: .P .RS 4 .EX \fBtypedef int \fP\fIbool_t\fP\fB;\fP .P \fBtypedef typeof(bool_t (XDR *, void *, ...)) *\fP\fIxdrproc_t\fP\fB;\fP .EE .RE .P للإعلان عن النوع \fIXDR\fP، انظر \fI\fP. .P .nf \fBbool_t xdr_array(XDR *\fP\fIxdrs\fP\fB, char **\fP\fIarrp\fP\fB, unsigned int *\fP\fIsizep\fP\fB,\fP \fB unsigned int \fP\fImaxsize\fP\fB, unsigned int \fP\fIelsize\fP\fB,\fP \fB xdrproc_t \fP\fIelproc\fP\fB);\fP .fi .IP أولية مرشح تترجم بين المصفوفات متغيرة الطول وتمثيلاتها الخارجية المقابلة. الوسيط \fIarrp\fP هو عنوان المؤشر إلى المصفوفة، بينما \fIsizep\fP هو عنوان عدد عناصر المصفوفة؛ لا يمكن أن يتجاوز عدد العناصر هذا \fImaxsize\fP. الوسيط \fIelsize\fP هو \fIsizeof\fP لكل عنصر من عناصر المصفوفة، و \fIelproc\fP هو مرشح XDR يترجم بين شكل C لعناصر المصفوفة وتمثيلها الخارجي. تُرجع هذه الدالة واحدًا إذا نجحت، صفرًا بخلاف ذلك. .P .nf \fBbool_t xdr_bool(XDR *\fP\fIxdrs\fP\fB, bool_t *\fP\fIbp\fP\fB);\fP .fi .IP أولية مرشح تترجم بين القيم المنطقية (أعداد صحيحة C) وتمثيلاتها الخارجية. عند ترميز البيانات، يُنتج هذا المرشح قيمًا إما واحد أو صفر. تُرجع هذه الدالة واحدًا إذا نجحت، صفرًا بخلاف ذلك. .P .nf \fBbool_t xdr_bytes(XDR *\fP\fIxdrs\fP\fB, char **\fP\fIsp\fP\fB, unsigned int *\fP\fIsizep\fP\fB,\fP \fB unsigned int \fP\fImaxsize\fP\fB);\fP .fi .IP أولية مرشح تترجم بين سلاسل البايت المعدودة وتمثيلاتها الخارجية. الوسيط \fIsp\fP هو عنوان مؤشر السلسلة. يقع طول السلسلة في العنوان \fIsizep\fP؛ لا يمكن أن تكون السلاسل أطول من \fImaxsize\fP. تُرجع هذه الدالة واحدًا إذا نجحت، صفرًا بخلاف ذلك. .P .nf \fBbool_t xdr_char(XDR *\fP\fIxdrs\fP\fB, char *\fP\fIcp\fP\fB);\fP .fi .IP أولية مرشح تترجم بين محارف C وتمثيلاتها الخارجية. تُرجع هذه الدالة واحدًا إذا نجحت، صفرًا بخلاف ذلك. ملاحظة: المحارف المُعمَّاة غير مضغوطة، وتشغل 4 بايت لكل منها. بالنسبة لمصفوفات المحارف، من المفيد النظر في \fBxdr_bytes\fP() أو \fBxdr_opaque\fP() أو \fBxdr_string\fP(). .P .nf \fBvoid xdr_destroy(XDR *\fP\fIxdrs\fP\fB);\fP .fi .IP كليّة تستدعي دالة التدمير المرتبطة بدفق XDR، \fIxdrs\fP. يتضمن التدمير عادةً تحرير هياكل البيانات الخاصة المرتبطة بالدفق. استخدام \fIxdrs\fP بعد استدعاء \fBxdr_destroy\fP() غير مُعرَّف. .P .nf \fBbool_t xdr_double(XDR *\fP\fIxdrs\fP\fB, double *\fP\fIdp\fP\fB);\fP .fi .IP أولية مرشح تترجم بين أعداد الدقة المزدوجة \fIdouble\fP في C وتمثيلاتها الخارجية. تُرجع هذه الدالة واحدًا إذا نجحت، صفرًا بخلاف ذلك. .P .nf \fBbool_t xdr_enum(XDR *\fP\fIxdrs\fP\fB, enum_t *\fP\fIep\fP\fB);\fP .fi .IP أولية مرشح تترجم بين التعدادات \fIenum\fP في C (أعداد صحيحة فعليًا) وتمثيلاتها الخارجية. تُرجع هذه الدالة واحدًا إذا نجحت، صفرًا بخلاف ذلك. .P .nf \fBbool_t xdr_float(XDR *\fP\fIxdrs\fP\fB, float *\fP\fIfp\fP\fB);\fP .fi .IP أولية مرشح تترجم بين الأعداد العائمة \fIfloat\fP في C وتمثيلاتها الخارجية. تُرجع هذه الدالة واحدًا إذا نجحت، صفرًا بخلاف ذلك. .P .nf \fBvoid xdr_free(xdrproc_t \fP\fIproc\fP\fB, char *\fP\fIobjp\fP\fB);\fP .fi .IP دالة تحرير عامة. الوسيط الأول هو دالة XDR للكائن الذي يُحرر. الوسيط الثاني هو مؤشر للكائن نفسه. ملاحظة: المؤشر المُمرر لهذه الدالة لا \fI يُحرر\fP، بل ما يشير إليه \fIيُحرر\fP (بشكل تكراري). .P .nf \fBunsigned int xdr_getpos(XDR *\fP\fIxdrs\fP\fB);\fP .fi .IP كليّة تستدعي دالة الحصول على الموضع المرتبطة بدفق XDR، \fIxdrs\fP. تُرجع الدالة عددًا صحيحًا غير مُوقّع، يُشير إلى موضع دفق البايتات XDR. من الميزات المرغوبة لتدفقات XDR أن العمليات الحسابية البسيطة تعمل مع هذا الرقم، رغم أن نسخ دفق XDR لا تحتاج ضمان ذلك. .P .nf \fBlong *xdr_inline(XDR *\fP\fIxdrs\fP\fB, int \fP\fIlen\fP\fB);\fP .fi .IP كليّة تستدعي الدالة المضمنة المرتبطة بدفق XDR، \fIxdrs\fP. تُرجع الدالة مؤشرًا إلى قطعة متصلة من مخبأ الدفق؛ \fIlen\fP هو طول البايت للمخبأ المطلوب. ملاحظة: يُحوّل المؤشر إلى \fIlong\ *\fP. .IP تحذير: قد تُرجع \fBxdr_inline\fP() القيمة NULL (0) إذا لم تستطع تخصيص قطعة متصلة من مخبأ. لذلك قد يختلف السلوك بين نسخ الدفق؛ وهي موجودة من أجل الكفاءة. .P .nf \fBbool_t xdr_int(XDR *\fP\fIxdrs\fP\fB, int *\fP\fIip\fP\fB);\fP .fi .IP أولية ترشيح تُترجم بين الأعداد الصحيحة في لغة C وتمثيلاتها الخارجية. تُرجع هذه الدالة واحدًا إذا نجحت، صفرًا خلاف ذلك. .P .nf \fBbool_t xdr_long(XDR *\fP\fIxdrs\fP\fB, long *\fP\fIlp\fP\fB);\fP .fi .IP أولية ترشيح تُترجم بين الأعداد الصحيحة من نوع \fIlong\fP في لغة C وتمثيلاتها الخارجية. تُرجع هذه الدالة واحدًا إذا نجحت، صفرًا خلاف ذلك. .P .nf \fBvoid xdrmem_create(XDR *\fP\fIxdrs\fP\fB, char *\fP\fIaddr\fP\fB, unsigned int \fP\fIsize\fP\fB,\fP \fB enum xdr_op \fP\fIop\fP\fB);\fP .fi .IP تُهيئ هذه الدالة كائن دفق XDR المُشار إليه بواسطة \fIxdrs\fP. تُكتب بيانات الدفق إلى، أو تُقرأ من، قطعة ذاكرة في موقع \fIaddr\fP لا يتجاوز طولها \fIsize\fP بايت. يُحدد \fIop\fP اتجاه دفق XDR (إما \fBXDR_ENCODE\fP أو \fBXDR_DECODE\fP أو \fBXDR_FREE\fP). .P .nf \fBbool_t xdr_opaque(XDR *\fP\fIxdrs\fP\fB, char *\fP\fIcp\fP\fB, unsigned int \fP\fIcnt\fP\fB);\fP .fi .IP أولية ترشيح تُترجم بين بيانات معتمة ذات حجم ثابت وتمثيلها الخارجي. الوسيط \fIcp\fP هو عنوان الكائن المعتم، و\fIcnt\fP هو حجمه بالبايت. تُرجع هذه الدالة واحدًا إذا نجحت، صفرًا خلاف ذلك. .P .nf \fBbool_t xdr_pointer(XDR *\fP\fIxdrs\fP\fB, char **\fP\fIobjpp\fP\fB,\fP \fB unsigned int \fP\fIobjsize\fP\fB, xdrproc_t \fP\fIxdrobj\fP\fB);\fP .fi .IP مثل \fBxdr_reference\fP() باستثناء أنها تُسلسل المؤشرات الفارغة، بينما \fBxdr_reference\fP() لا تفعل. وبالتالي، يمكن لـ \fBxdr_pointer\fP() تمثيل هياكل بيانات تكرارية، مثل الأشجار الثنائية أو القوائم المترابطة. .P .nf \fBvoid xdrrec_create(XDR *\fP\fIxdrs\fP\fB, unsigned int \fP\fIsendsize\fP\fB,\fP \fB unsigned int \fP\fIrecvsize\fP\fB, char *\fP\fIhandle\fP\fB,\fP \fB typeof(int (char *, char *, int)) *\fP\fIreadit\fP\fB,\fP \fB typeof(int (char *, char *, int)) *\fP\fIwriteit\fP\fB);\fP .fi .IP تُهيئ هذه الدالة كائن دفق XDR المُشار إليه بواسطة \fIxdrs\fP. تُكتب بيانات الدفق إلى مخبأ بحجم \fIsendsize\fP؛ قيمة صفر تُشير إلى أن النظام يجب أن يستخدم مبدئيًا مناسبًا. تُقرأ بيانات الدفق من مخبأ بحجم \fIrecvsize\fP؛ يمكن أيضًا ضبطه على مبدئي مناسب بتمرير قيمة صفر. عندما يمتلئ مخبأ الإخراج للدفق، تُستدعى \fIwriteit\fP. وبالمثل، عندما يفرغ مخبأ الإدخال للدفق، تُستدعى \fIreadit\fP. سلوك هاتين الدالتين مشابه لاستدعاءات النظام \fBread\fP(2) و\fBwrite\fP(2)، باستثناء أن \fIhandle\fP يُمرر للدالتين السابقتين كوسيط أول. ملاحظة: يجب على المُستدعي تعيين حقل \fIop\fP لدفق XDR. .IP تحذير: للقراءة من دفق XDR مُنشأ بواسطة واجهة البرمجة هذه، ستحتاج استدعاء \fBxdrrec_skiprecord\fP() أولاً قبل استدعاء أي دوال XDR أخرى. يُدخل هذا بايتات إضافية في الدفق لتوفير معلومات حدود السجل. أيضًا، دفقات XDR المُنشأة بواجهات برمجة \fBxdr*_create\fP مختلفة غير متوافقة لنفس السبب. .P .nf \fBbool_t xdrrec_endofrecord(XDR *\fP\fIxdrs\fP\fB, int \fP\fIsendnow\fP\fB);\fP .fi .IP لا يمكن استدعاء هذه الروتين إلا على التدفقات المنشأة بواسطة \fBxdrrec_create\fP(). تُوسم البيانات في المخزن المؤقت للمخرجات كسجل مكتمل، ويُكتب المخزن المؤقت للمخرجات اختياريًا إذا كان \fIsendnow\fP غير صفري. يُرجع هذا الروتين واحدًا إذا نجح، وصفرًا خلاف ذلك. .P .nf \fBbool_t xdrrec_eof(XDR *\fP\fIxdrs\fP\fB);\fP .fi .IP لا يمكن استدعاء هذه الروتين إلا على التدفقات المنشأة بواسطة \fBxdrrec_create\fP(). بعد استهلاك باقي السجل الحالي في التدفق، يُرجع هذا الروتين واحدًا إذا لم يكن للتدفق أي مدخلات أخرى، وصفرًا خلاف ذلك. .P .nf \fBbool_t xdrrec_skiprecord(XDR *\fP\fIxdrs\fP\fB);\fP .fi .IP لا يمكن استدعاء هذه الروتين إلا على التدفقات المنشأة بواسطة \fBxdrrec_create\fP(). يُخبر تطبيق XDR بأن باقي السجل الحالي في المخزن المؤقت للإدخال للتدفق يجب التخلص منه. يُرجع هذا الروتين واحدًا إذا نجح، وصفرًا خلاف ذلك. .P .nf \fBbool_t xdr_reference(XDR *\fP\fIxdrs\fP\fB, char **\fP\fIpp\fP\fB, unsigned int \fP\fIsize\fP\fB,\fP \fB xdrproc_t \fP\fIproc\fP\fB);\fP .fi .IP بدائية توفر تتبع المؤشرات داخل الهياكل. الوسيط \fIpp\fP هو عنوان المؤشر؛ \fIsize\fP هو \fIsizeof\fP الهيكل الذي يشير إليه \fI*pp\fP؛ و \fIproc\fP هو إجراء XDR يُرشح الهيكل بين شكله في C وتمثيله الخارجي. يُرجع هذا الروتين واحدًا إذا نجح، وصفرًا خلاف ذلك. .IP تحذير: لا يفهم هذا الروتين المؤشرات الفارغة. استخدم \fBxdr_pointer\fP() بدلاً من ذلك. .P .nf \fBxdr_setpos(XDR *\fP\fIxdrs\fP\fB, unsigned int \fP\fIpos\fP\fB);\fP .fi .IP كليّة تستدعي روتين تعيين الموضع المرتبط بتدفق XDR \fIxdrs\fP. الوسيط \fIpos\fP هو قيمة موضع تم الحصول عليها من \fBxdr_getpos\fP(). يُرجع هذا الروتين واحدًا إذا أمكن إعادة وضع تدفق XDR، وصفرًا خلاف ذلك. .IP تحذير: من الصعب إعادة وضع بعض أنواع تدفقات XDR، لذا قد يفشل هذا الروتين مع نوع واحد من التدفقات وينجح مع آخر. .P .nf \fBbool_t xdr_short(XDR *\fP\fIxdrs\fP\fB, short *\fP\fIsp\fP\fB);\fP .fi .IP بدائية ترشيح تترجم بين الأعداد الصحيحة القصيرة \fIshort\fP في C وتمثيلاتها الخارجية. يُرجع هذا الروتين واحدًا إذا نجح، وصفرًا خلاف ذلك. .P .nf \fBvoid xdrstdio_create(XDR *\fP\fIxdrs\fP\fB, FILE *\fP\fIfile\fP\fB, enum xdr_op \fP\fIop\fP\fB);\fP .fi .IP يُهيئ هذا الروتين كائن تدفق XDR المشار إليه بواسطة \fIxdrs\fP. تُكتب بيانات تدفق XDR إلى، أو تُقرأ من، تدفق \fIstdio\fP \fIfile\fP. يُحدد الوسيط \fIop\fP اتجاه تدفق XDR (إما \fBXDR_ENCODE\fP أو \fBXDR_DECODE\fP أو \fBXDR_FREE\fP). .IP تحذير: روتين التدمير المرتبط بمثل هذه التدفقات XDR يستدعي \fBfflush\fP(3) على تدفق \fIfile\fP، لكن لا يستدعي \fBfclose\fP(3) أبدًا. .P .nf \fBbool_t xdr_string(XDR *\fP\fIxdrs\fP\fB, char **\fP\fIsp\fP\fB, unsigned int \fP\fImaxsize\fP\fB);\fP .fi .IP بدائية ترشيح تترجم بين سلاسل محارف C وتمثيلاتها الخارجية المقابلة. لا يمكن أن تكون السلاسل أطول من \fImaxsize\fP. ملاحظة: \fIsp\fP هو عنوان مؤشر السلسلة. يُرجع هذا الروتين واحدًا إذا نجح، وصفرًا خلاف ذلك. .P .nf \fBbool_t xdr_u_char(XDR *\fP\fIxdrs\fP\fB, unsigned char *\fP\fIucp\fP\fB);\fP .fi .IP بدائية ترشيح تترجم بين محارف C \fIغير المُشار إليها\fP وتمثيلاتها الخارجية. تُرجع هذه الروتين واحدًا إذا نجحت، صفرًا بخلاف ذلك. .P .nf \fBbool_t xdr_u_int(XDR *\fP\fIxdrs\fP\fB, unsigned int *\fP\fIup\fP\fB);\fP .fi .IP بدائية ترشيح تترجم بين أعداد صحيحة C \fIغير مُشار إليها\fP وتمثيلاتها الخارجية. تُرجع هذه الروتين واحدًا إذا نجحت، صفرًا بخلاف ذلك. .P .nf \fBbool_t xdr_u_long(XDR *\fP\fIxdrs\fP\fB, unsigned long *\fP\fIulp\fP\fB);\fP .fi .IP بدائية ترشيح تترجم بين أعداد صحيحة C \fIغير مُشار إليها طويلة\fP وتمثيلاتها الخارجية. تُرجع هذه الروتين واحدًا إذا نجحت، صفرًا بخلاف ذلك. .P .nf \fBbool_t xdr_u_short(XDR *\fP\fIxdrs\fP\fB, unsigned short *\fP\fIusp\fP\fB);\fP .fi .IP بدائية ترشيح تترجم بين أعداد صحيحة C \fIغير مُشار إليها قصيرة\fP وتمثيلاتها الخارجية. تُرجع هذه الروتين واحدًا إذا نجحت، صفرًا بخلاف ذلك. .P .nf \fBbool_t xdr_union(XDR *\fP\fIxdrs\fP\fB, enum_t *\fP\fIdscmp\fP\fB, char *\fP\fIunp\fP\fB,\fP \fB const struct xdr_discrim *\fP\fIchoices\fP\fB,\fP \fB xdrproc_t \fP\fIdefaultarm\fP\fB); /* may equal NULL */\fP .fi .IP بدائية ترشيح تترجم بين اتحاد C \fIمُميَّز\fP وتمثيله الخارجي المُقابل. تُترجم أولاً مميِّز الاتحاد الموجود في \fIdscmp\fP. هذا المميِّز هو دائمًا \fIenum_t\fP. بعد ذلك، يُترجم الاتحاد الموجود في \fIunp\fP. المُعامل \fIchoices\fP هو مؤشر لمصفوفة من بنى \fBxdr_discrim\fP(). تحتوي كل بنية على زوج مُرتَّب من [\fIvalue\fP,\fIproc\fP]. إذا كان مميِّز الاتحاد مساويًا لـ \fIvalue\fP المُقابل، فتُستدعى \fIproc\fP لترجمة الاتحاد. يُشار إلى نهاية مصفوفة بنى \fBxdr_discrim\fP() بروتين قيمته NULL. إذا لم يُوجد المميِّز في مصفوفة \fIchoices\fP، فتُستدعى إجراءات \fIdefaultarm\fP (إذا لم تكن NULL). تُرجع واحدًا إذا نجحت، صفرًا بخلاف ذلك. .P .nf \fBbool_t xdr_vector(XDR *\fP\fIxdrs\fP\fB, char *\fP\fIarrp\fP\fB, unsigned int \fP\fIsize\fP\fB,\fP \fB unsigned int \fP\fIelsize\fP\fB, xdrproc_t \fP\fIelproc\fP\fB);\fP .fi .IP بدائية ترشيح تترجم بين مصفوفات ثابتة الطول وتمثيلاتها الخارجية المُقابلة. المُعامل \fIarrp\fP هو عنوان المؤشر للمصفوفة، بينما \fIsize\fP هو عدد عناصر المصفوفة. المُعامل \fIelsize\fP هو \fIsizeof\fP كل عنصر من عناصر المصفوفة، و\fIelproc\fP هو مرشح XDR يترجم بين شكل C لعناصر المصفوفة وتمثيلها الخارجي. يُرجع هذا الروتين واحدًا إذا نجح، صفرًا بخلاف ذلك. .P .nf \fBbool_t xdr_void(void);\fP .fi .IP يُرجع هذا الروتين واحدًا دائمًا. قد يُمرَّر إلى روتينات RPC التي تتطلب مُعامل دالة، حيث لا يُفعل شيء. .P .nf \fBbool_t xdr_wrapstring(XDR *\fP\fIxdrs\fP\fB, char **\fP\fIsp\fP\fB);\fP .fi .IP بدائية تستدعي \fBxdr_string(xdrs, sp,MAXUN.UNSIGNED );\fP حيث \fBMAXUN.UNSIGNED\fP هي القيمة القصوى لعدد صحيح غير مُشار إليه. \fBxdr_wrapstring\fP() مُفيدة لأن حزمة RPC تُمرِّر حدًا أقصى من روتينين XDR كمُعاملات، و\fBxdr_string\fP()، إحدى البدائيات الأكثر استخدامًا، تتطلب ثلاثة. تُرجع واحدًا إذا نجحت، صفرًا بخلاف ذلك. .SH السمات للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. الواجهة السمة القيمة T{ .na .nh \fBxdr_array\fP(), \fBxdr_bool\fP(), \fBxdr_bytes\fP(), \fBxdr_char\fP(), \fBxdr_destroy\fP(), \fBxdr_double\fP(), \fBxdr_enum\fP(), \fBxdr_float\fP(), \fBxdr_free\fP(), \fBxdr_getpos\fP(), \fBxdr_inline\fP(), \fBxdr_int\fP(), \fBxdr_long\fP(), \fBxdrmem_create\fP(), \fBxdr_opaque\fP(), \fBxdr_pointer\fP(), \fBxdrrec_create\fP(), \fBxdrrec_eof\fP(), \fBxdrrec_endofrecord\fP(), \fBxdrrec_skiprecord\fP(), \fBxdr_reference\fP(), \fBxdr_setpos\fP(), \fBxdr_short\fP(), \fBxdrstdio_create\fP(), \fBxdr_string\fP(), \fBxdr_u_char\fP(), \fBxdr_u_int\fP(), \fBxdr_u_long\fP(), \fBxdr_u_short\fP(), \fBxdr_union\fP(), \fBxdr_vector\fP(), \fBxdr_void\fP(), \fBxdr_wrapstring\fP() T} سلامة الخيوط MT\-Safe .TE .SH "انظر أيضًا" \fBrpc\fP(3) .P كتيبات الأدلة التالية: .RS معيار تمثيل البيانات الخارجي: مواصفات البروتوكول .br تمثيل البيانات الخارجي: ملاحظات تقنية من صن .br \fIXDR: معيار تمثيل البيانات الخارجي\fP، RFC\ 1014، شركة صن ميكروسيستمز، USC\-ISI. .RE .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .