argz_add(3)

الاسم
argz_add, argz_add_sep, argz_append, argz_count, argz_create, argz_create_sep, argz_delete, argz_extract, argz_insert, argz_next, argz_replace, argz_stringify - دوال لمعالجة قائمة argz

المكتبة
مكتبة سي المعيارية (libc، -lc)

موجز
#include <argz.h>

error_t argz_add(char **restrict argz, size_t *restrict argz_len,
                const char *restrict str);

error_t argz_add_sep(char **restrict argz, size_t *restrict argz_len,
                const char *restrict str, int delim);

error_t argz_append(char **restrict argz, size_t *restrict argz_len,
                const char *restrict buf, size_t buf_len);

size_t argz_count(const char *argz, size_t argz_len);

error_t argz_create(char *const argv[], char **restrict argz,
                size_t *restrict argz_len);

error_t argz_create_sep(const char *restrict str, int sep,
                char **restrict argz, size_t *restrict argz_len);

void argz_delete(char **restrict argz, size_t *restrict argz_len,
                char *restrict entry);

void argz_extract(const char *restrict argz, size_t argz_len,
                char **restrict argv);

error_t argz_insert(char **restrict argz, size_t *restrict argz_len,
                char *restrict before, const char *restrict entry);

char *argz_next(const char *restrict argz, size_t argz_len,
                const char *restrict entry);

error_t argz_replace(char **restrict argz, size_t *restrict argz_len,
                const char *restrict str, const char *restrict with,
                unsigned int *restrict replace_count);

void argz_stringify(char *argz, size_t len, int sep);

الوصف
هذه الدوال خاصة بـ glibc.

مُتجه argz هو مؤشر إلى مخزن محارف مع طول. التفسير المقصود لمخزن المحارف هو مصفوفة من السلاسل، حيث تُفصل السلاسل بواسطة بايتات فارغة ('\0'). إذا كان الطول غير صفري، يجب أن يكون آخر بايت في المخزن بايتًا فارغًا.

هذه الدوال مخصصة لمعالجة متجهات argz. الزوج (NULL,0) هو مُتجه argz، وبالمقابل، متجهات argz ذات الطول 0 يجب أن يكون لها مؤشر فارغ. يُجرى تخصيص متجهات argz غير الفارغة باستخدام malloc(3)، بحيث يمكن استخدام free(3) للتخلص منها مرة أخرى.

تضيف argz_add() السلسلة str في نهاية المصفوفة *argz، وتُحدّث *argz و *argz_len.

argz_add_sep() مماثلة، لكنها تقسم السلسلة str إلى سلاسل فرعية مفصولة بالمحدد delim. على سبيل المثال، قد يُستخدم هذا على مسار بحث UNIX مع المحدد ':'.

تُلحق argz_append() مُتجه argz (buf, buf_len) بعد (*argz, *argz_len) وتُحدّث *argz و *argz_len. (وبالتالي، سيزداد *argz_len بمقدار buf_len.)

تحسب argz_count() عدد السلاسل، أي عدد البايتات الفارغة ('\0')، في (argz, argz_len).

argz_create() يحول متجه وسائط بنمط UNIX argv، المنتهي بـ (char *) 0، إلى متجه argz (*argz، *argz_len).

argz_create_sep() يحول السلسلة المنتهية بصفر str إلى متجه argz (*argz، *argz_len) بتقسيمها عند كل ظهور للفاصل sep.

argz_delete() يزيل السلسلة الفرعية المشار إليها بـ entry من متجه argz (*argz، *argz_len) ويُحدّث *argz و *argz_len.

argz_extract() هو عكس argz_create(). يأخذ متجه argz (argz، argz_len) ويملأ المصفوفة التي تبدأ بـ argv بمؤشرات إلى السلاسل الفرعية، وصفر ختامي، لصنع متجه argv بنمط UNIX. يجب أن تحتوي المصفوفة argv على مساحة لـ argz_count(argz، argz_len) + 1 مؤشرًا.

argz_insert() هو عكس argz_delete(). يُدرج الوسيط entry في الموضع before داخل متجه argz (*argz، *argz_len) ويُحدّث *argz و *argz_len. إذا كان before NULL، فسيُدرج entry في النهاية.

argz_next() هي دالة للتنقل عبر متجه argz. إذا كان entry NULL، يُعاد الإدخال الأول. وإلا، يُعاد الإدخال التالي. تُعيد NULL إذا لم يكن هناك إدخال تالٍ.

argz_replace() يستبدل كل ظهور لـ str بـ with، مع إعادة تخصيص argz حسب الحاجة. إذا كان replace_count غير NULL، فسيُزاد *replace_count بعدد الاستبدالات.

argz_stringify() هو عكس argz_create_sep(). يحول متجه argz إلى سلسلة عادية باستبدال كل البايتات الصفرية ('\0') باستثناء الأخيرة بـ sep.

قيمة الإرجاع
جميع دوال argz التي تقوم بتخصيص الذاكرة لها نوع إرجاع error_t (نوع صحيح)، وتُعيد 0 للنجاح، و ENOMEM إذا حدث خطأ تخصيص.

السمات
للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر attributes(7).
الواجهة | السمة | القيمة
argz_add(), argz_add_sep(), argz_append(), argz_count(), argz_create(), argz_create_sep(), argz_delete(), argz_extract(), argz_insert(), argz_next(), argz_replace(), argz_stringify() | سلامة الخيوط | MT-Safe

المعايير
GNU.

العلل
متجهات argz بدون بايت صفر ختامي قد تؤدي إلى أخطاء تجزئة.

انظر أيضًا
envz_add(3)

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

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

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