ZIP_SOURCE(5) File Formats Manual ZIP_SOURCE(5)
zip_source - ساختار منبع داده zip در libzip

libzip (-lzip)

<zip.h> zip_source_t *source;

یک zip_source_t نمایانگر یک منبع داده است (یا مقصد هنگام استفاده برای نوشتن). libzip(3) از آن برای افزودن یا جایگزینی محتویات پرونده برای یک پرونده در یک آرشیو zip استفاده می‌کند. اگر منبع از پیمایش (seeking) پشتیبانی کند، می‌تواند برای باز کردن آرشیوهای zip از آن نیز استفاده شود.

داده‌ها می‌توانند از یک پرونده روی دیسک (zip_source_file(3) ، zip_source_file_create(3) ، zip_source_filep(3) یا zip_source_filep_create(3)) ، حافظه (zip_source_buffer(3) ، zip_source_buffer_create(3) ، zip_source_buffer_fragment(3) یا zip_source_buffer_fragment_create(3)) ، یک پرونده درون یک آرشیو (zip_source_zip(3)) ، یا ارائه‌شده از طریق یک تابع بازخوانی (callback function) (zip_source_function(3) یا zip_source_function_create(3)) فراهم شوند. zip_source_window(3) یا zip_source_window_create(3) می‌تواند برای محدود کردن دسترسی به بخشی از داده‌های موجود استفاده شود.

همچنین می‌تواند به عنوان یک فیلتر برای پردازش داده‌های ارائه‌شده توسط یک zip_source_t زیرین استفاده شود (به عنوان مثال، برای فشرده‌سازی آن یا محاسبه checksum)، که با zip_source_layered(3) یا zip_source_layered_create(3) ایجاد می‌شود.

منابع با zip_source_free(3) آزاد می‌شوند.

منابع باید از خواندن پشتیبانی کنند، و می‌توانند به صورت اختیاری از پیمایش (seeking) و نوشتن نیز پشتیبانی کنند.

zip_source_t دارای شمارش ارجاع (reference counted) است و با مقدار شمارش ارجاع ۱ ایجاد می‌شود. zip_open_from_source(3) ، zip_file_add(3) و zip_file_replace(3) مالکیت منبع ارسال‌شده را بر عهده می‌گیرند (پس از اتمام استفاده از آن، شمارش ارجاع را کاهش می‌دهند)، بنابراین zip_source_free(3) تنها زمانی نیاز به فراخوانی دارد که این توابع خطایی را برگردانند. داده‌های زیرین (پرونده یا بافر) باید تا زمان بسته شدن آرشیو معتبر باقی بمانند. از zip_source_keep(3) برای افزایش شمارش ارجاع استفاده کنید، به عنوان مثال اگر پس از zip_close(3) به منبع نیاز دارید.

libzip(3), zip_source_buffer(3), zip_source_file(3), zip_source_filep(3), zip_source_free(3), zip_source_function(3), zip_source_keep(3), zip_source_window(3), zip_source_zip(3)

Dieter Baron <dillo@nih.at> و Thomas Klausner <wiz@gatalith.at>

May 5, 2025 Linux 6.12.107+deb13-amd64