BIO_S_FILE(3SSL)

الاسم
BIO_s_file, BIO_new_file, BIO_new_fp, BIO_set_fp, BIO_get_fp, BIO_read_filename, BIO_write_filename, BIO_append_filename, BIO_rw_filename - BIO ملف

موجز
 #include <openssl/bio.h>

 const BIO_METHOD *BIO_s_file(void);
 BIO *BIO_new_file(const char *filename, const char *mode);
 BIO *BIO_new_fp(FILE *stream, int flags);

 BIO_set_fp(BIO *b, FILE *fp, int flags);
 BIO_get_fp(BIO *b, FILE **fpp);

 int BIO_read_filename(BIO *b, char *name);
 int BIO_write_filename(BIO *b, char *name);
 int BIO_append_filename(BIO *b, char *name);
 int BIO_rw_filename(BIO *b, char *name);

الوصف
BIO_s_file() تُرجع طريقة ملف BIO. كما يوحي اسمها، فهي غلاف حول بنية FILE في stdio وهي BIO مصدر/مصرف.

استدعاءات BIO_read_ex() و BIO_write_ex() تقرأ وتكتب البيانات إلى التدفق الأساسي. BIO_gets() و BIO_puts() مدعومة على BIOs الملف.

BIO_flush() على BIO ملف تستدعي الدالة fflush() على التدفق المُغلّف.

BIO_reset() تحاول تغيير مؤشر الملف إلى بداية الملف باستخدام fseek(stream, 0, 0).

BIO_seek() تُعيِّن مؤشر الملف إلى الموضع ofs من بداية الملف باستخدام fseek(stream, ofs, 0).

BIO_eof() تستدعي feof().

تعيين العلامة BIO_CLOSE يستدعي fclose() على التدفق عندما يُحرَّر BIO.

BIO_new_file() تُنشئ BIO ملف جديد بالوضع mode معنى mode هو نفسه دالة stdio fopen(). العلامة BIO_CLOSE مُعيَّنة على BIO المُرجَع.

BIO_new_fp() تُنشئ BIO ملف يُغلِّف stream. العلامات يمكن أن تكون: BIO_CLOSE، BIO_NOCLOSE (علامة الإغلاق) BIO_FP_TEXT (تُعيِّن التدفق الأساسي إلى وضع النص، المبدئي هو ثنائي: هذا له تأثير فقط تحت Win32).

BIO_set_fp() تُعيِّن fp لـ BIO ملف إلى fp. flags له نفس المعنى كما في BIO_new_fp()، وهي كليّة.

BIO_get_fp() تسترجع fp لـ BIO ملف، وهي كليّة.

BIO_seek() هي كليّة تُعيِّن مؤشر الموضع إلى offset بايت من بداية الملف.

BIO_tell() تُرجع قيمة مؤشر الموضع.

BIO_read_filename()، BIO_write_filename()، BIO_append_filename() و BIO_rw_filename() تُعيِّن BIO الملف b لاستخدام الملف name للقراءة، الكتابة، الإلحاق أو القراءة والكتابة على التوالي.

ملاحظات
عند تغليف stdout أو stdin أو stderr، لا ينبغي عادةً إغلاق التدفق الأساسي لذا يجب تعيين العلم BIO_NOCLOSE.

لأن BIO الملف يستدعي دوال stdio الأساسية، فإن أي شذوذ في سلوك stdio سينعكس في BIO المقابل.

في Windows، تحتفظ BIO_new_files بأن تكون وسيطة اسم الملف مُرمَّزة بـ UTF-8. بعبارة أخرى، إذا كان عليك جعلها تعمل في بيئة متعددة اللغات، قم بترميز أسماء الملفات بـ UTF-8.

القيم المُرجعة
BIO_s_file() تُرجع أسلوب BIO الملف.

BIO_new_file() و BIO_new_fp() تُرجعان BIO ملف أو NULL إذا حدث خطأ.

BIO_set_fp() و BIO_get_fp() تُرجعان 1 للنجاح أو <=0 للفشل (على الرغم من أن التنفيذ الحالي لا يُرجع 0 أبدًا).

BIO_seek() تُرجع 0 للنجاح أو قيمًا سالبة للفشل.

BIO_tell() تُرجع موضع الملف الحالي أو قيمًا سالبة للفشل.

BIO_read_filename() و BIO_write_filename() و BIO_append_filename() و BIO_rw_filename() تُرجع 1 للنجاح أو <=0 للفشل. يُرجع خطأ أيضًا إذا لم يكن الملف موجودًا.

أمثلة
BIO ملف "hello world":

 BIO *bio_out;

 bio_out = BIO_new_fp(stdout, BIO_NOCLOSE);
 BIO_printf(bio_out, "Hello World\n");

تقنية بديلة:

 BIO *bio_out;

 bio_out = BIO_new(BIO_s_file());
 if (bio_out == NULL)
     /* Error */
 if (BIO_set_fp(bio_out, stdout, BIO_NOCLOSE) <= 0)
     /* Error */
 BIO_printf(bio_out, "Hello World\n");

اكتب إلى ملف:

 BIO *out;

 out = BIO_new_file("filename.txt", "w");
 if (!out)
     /* Error */
 BIO_printf(out, "Hello World\n");
 BIO_free(out);

تقنية بديلة:

 BIO *out;

 out = BIO_new(BIO_s_file());
 if (out == NULL)
     /* Error */
 if (BIO_write_filename(out, "filename.txt") <= 0)
     /* Error */
 BIO_printf(out, "Hello World\n");
 BIO_free(out);

العلل
BIO_reset() و BIO_seek() مُنفَّذتان باستخدام fseek() على التدفق الأساسي. قيمة الإرجاع لـ fseek() هي 0 للنجاح أو -1 إذا حدث خطأ، وهذا يختلف عن أنواع BIO الأخرى التي تُرجع عادةً 1 للنجاح وقيمة غير موجبة إذا حدث خطأ.

انظر أيضًا
BIO_seek(3), BIO_tell(3), BIO_reset(3), BIO_flush(3), BIO_read_ex(3), BIO_write_ex(3), BIO_puts(3), BIO_gets(3), BIO_printf(3), BIO_set_close(3), BIO_get_close(3)

حقوق النسخ
حقوق النشر 2000-2020 لمؤلفي مشروع OpenSSL. جميع الحقوق محفوظة.

مرخص بموجب رخصة Apache 2.0 (المشار إليها فيما يلي بـ ”الرخصة“). لا يجوز لك استخدام هذا الملف إلا وفقًا لشروط الرخصة. يمكنك الحصول على نسخة منها في الملف LICENSE الموجود في حزمة التوزيع المصدرية أو على الرابط <https://www.openssl.org/source/license.html>.

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

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

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