.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man 5.0102 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "BUFFCHAN 8" .TH BUFFCHAN 8 2023-03-07 "INN 2.7.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" buffchan \- موتور پس‌زمینه بافرشده نوشتن در فایل برای INN .SH "خلاصه دستور (SYNOPSIS)" .IX Header "SYNOPSIS" \&\fBbuffchan\fR [\fB\-bru\fR] [\fB\-c\fR \fIlines\fR] [\fB\-C\fR \fIseconds\fR] [\fB\-d\fR \&\fIdirectory\fR] [\fB\-f\fR \fInum-fields\fR] [\fB\-l\fR \fIlines\fR] [\fB\-L\fR \fIseconds\fR] [\fB\-m\fR \fImap\fR] [\fB\-p\fR \fIpid-file\fR] [\fB\-s\fR \fIformat\fR] .SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" \&\fBbuffchan\fR خطوط را از ورودی استاندارد می‌خواند و فیلدهای اولیه در هر خط را در فایل‌هایی که توسط فیلدهای باقی‌مانده در آن خط نام‌گذاری شده‌اند کپی می‌کند. \&\fBbuffchan\fR برای این در نظر گرفته شده است که توسط \fBinnd\fR به‌عنوان یک خوراک بسط‌دهنده (exploder feed) فراخوانی شود. .PP ورودی به‌صورت توالی‌ای از خطوط تفسیر می‌شود. هر خط شامل تعداد ثابتی از فیلدهای اولیه است که پس از آن‌ها تعداد متغیری از فیلدهای نام فایل قرار دارند. تمامی فیلدها در یک خط با نویسه‌های فاصله (whitespace) از هم جدا می‌شوند و نباید شامل هیچ نویسه فاصله‌ای باشند. تعداد پیش‌فرض فیلدهای اولیه یک است. .PP برای هر خط ورودی، \fBbuffchan\fR فیلدهای اولیه را که با یک فاصله از هم جدا شده و در انتها یک خط جدید دارند، در هر یک از فایل‌های نام‌برده‌شده در فیلدهای نام فایل می‌نویسد. فایل‌های خروجی باز نگه داشته می‌شوند و تخلیه بافر (flush) یا بسته شدن آن‌ها تنها بر اساس زمان‌بندی ارائه‌شده توسط گزینه‌های \fB\-c\fR، \fB\-C\fR، \fB\-l\fR و \fB\-L\fR انجام می‌شود. .PP به‌عنوان یک خوراک بسط‌دهنده (برای توضیحات به newsfeeds(5) مراجعه کنید)، \fBbuffchan\fR خطوطی را که با علامت تعجب شروع می‌شوند به‌عنوان دستور تفسیر می‌کند. علاوه بر \&\f(CW\*(C`!begin\*(C'\fR (که تنها آغاز خوراک را مشخص می‌کند)، سه دستور پشتیبانی‌شده وجود دارد: .IP "!flush [\fIsite\fR]" 4 .IX Item "!flush [site]" دستور flush تمام فایل‌های باز را می‌بندد و دوباره باز می‌کند. می‌توان یک سایت اختیاری را مشخص کرد که در این صورت \fBbuffchan\fR فقط آن فایل را تخلیه و بازگشایی می‌کند. این دستور مشابه دستور \f(CW\*(C`ctlinnd flush\*(C'\fR است. این دستور می‌تواند از طریق \fBinnd\fR با استفاده از \f(CW\*(C`ctlinnd send \fR\f(CIbuffchan\-site\fR\f(CW \*(Aqflush \fR\f(CIsite\fR\f(CW\*(Aq\*(C'\fR ارسال شود. .Sp برنامه‌های کاربردی می‌توانند با تغییر نام فایل پیش از صدور دستور، از تکمیل شدن عملیات flush مطلع شوند. هنگامی که نام فایل اصلی مجدداً ظاهر شد، عملیات flush کامل شده است. اگر fchmod(3) در دسترس باشد، \fBbuffchan\fR همچنین در حین نوشتن فعال در فایل، آن را به حالت فقط‌خواندنی تغییر می‌دهد و پس از بسته شدن، آن را دوباره به حالت خواندن/نوشتن بازمی‌گرداند. این برنامه فقط در صورتی حالت را به فقط‌خواندنی بازمی‌گرداند که همان فایل را دوباره باز کند. .IP "!drop [\fIsite\fR]" 4 .IX Item "!drop [site]" دستور drop شبیه دستور flush است، با این تفاوت که هیچ فایلی دوباره باز نمی‌شود. اگر آرگومانی داده شود، تنها سایت مشخص‌شده حذف (drop) می‌شود؛ در غیر این صورت، تمامی سایت‌ها حذف خواهند شد. (توجه داشته باشید که اگر در جریان ورودی مجدداً از آن سایت نام برده شود، سایت دوباره راه‌اندازی خواهد شد.) .Sp هنگامی که دستور \f(CW\*(C`ctlinnd drop site\*(C'\fR ارسال می‌شود، اگر آن سایت به‌عنوان یک قیف (funnel) ورودی به بسط‌دهنده \fBbuffchan\fR فهرست شده باشد، \fBinnd\fR به‌طور خودکار دستور را به \fBbuffchan\fR هدایت می‌کند. برای حذف تمام سایت‌ها، از \f(CW\*(C`ctlinnd send \fR\f(CIbuffchan\-site\fR\f(CW drop\*(C'\fR استفاده کنید. .IP !readmap 4 .IX Item "!readmap" فایل نگاشت مشخص‌شده با گزینه \fB\-m\fR، در صورت ارائه، دوباره بارگذاری خواهد شد. .PP هنگامی که \fBbuffchan\fR فایلی را باز می‌کند، آن را باز نگه می‌دارد (مگر اینکه دستور drop صادر شود). بنابراین ورودی نباید هرگز بیش از حداکثر تعداد فایل‌هایی که یک فرایند مجاز به باز کردن آنهاست، فایل مشخص کند. .SH "گزینه‌ها (OPTIONS)" .IX Header "OPTIONS" .IP \fB\-b\fR 4 .IX Item "-b" خروجی را به استفاده از بافر وادار می‌کند. (این حالت معمولاً پیش‌فرض است، اما ممکن است به سیستم‌عامل بستگی داشته باشد.) در صورت ارائه \fB\-b\fR، اندازه بافر معادل BUFSIZ (یک مقدار ثابت در کتابخانه استاندارد I/O سیستم) استفاده می‌شود. .IP "\fB\-c\fR \fIlines\fR" 4 .IX Item "-c lines" اگر پرچم \fB\-c\fR داده شود، \fBbuffchan\fR پس از نوشته شدن هر \fIlines\fR خط در یک فایل، آن را می‌بندد و مجدداً باز می‌کند. .IP "\fB\-C\fR \fIseconds\fR" 4 .IX Item "-C seconds" اگر پرچم \fB\-C\fR داده شود، \fBbuffchan\fR در صورتی که فایلی بیش از \fIseconds\fR ثانیه باز مانده باشد، آن را می‌بندد و مجدداً باز می‌کند. .IP "\fB\-d\fR \fIdirectory\fR" 4 .IX Item "-d directory" به‌طور پیش‌فرض، \fBbuffchan\fR خروجی خود را در دایرکتوری \fIpathoutgoing\fR می‌نویسد. از این پرچم می‌توان برای تعیین دایرکتوری‌ای استفاده کرد که برنامه باید پیش از شروع به آن تغییر مسیر دهد. در صورت استفاده از این پرچم، مقدار پیش‌فرض پرچم \fB\-s\fR (در ادامه را ببینید) به یک \f(CW\*(C`%s\*(C'\fR ساده تغییر می‌یابد (به عبارت دیگر، فایل‌های خروجی نسبت به \fIdirectory\fR در نظر گرفته می‌شوند). .IP "\fB\-f\fR \fInum-fields\fR" 4 .IX Item "-f num-fields" به‌طور پیش‌فرض، انتظار می‌رود هر خط شامل یک فیلد ثابت و به دنبال آن تعدادی فیلد نام فایل باشد. اگر این پرچم داده شود، از \fInum-fields\fR به‌عنوان تعداد فیلدهای ثابت اولیه استفاده خواهد شد. .IP "\fB\-l\fR \fIlines\fR" 4 .IX Item "-l lines" اگر پرچم \fB\-l\fR داده شود، \fBbuffchan\fR پس از نوشته شدن هر \fIlines\fR خط در یک فایل، بافر خروجی آن را تخلیه (flush) می‌کند. .IP "\fB\-L\fR \fIseconds\fR" 4 .IX Item "-L seconds" اگر پرچم \fB\-L\fR داده شود، \fBbuffchan\fR بافر هر فایل خروجی را هر \fIseconds\fR ثانیه یک بار تخلیه می‌کند. .IP "\fB\-m\fR \fImap\fR" 4 .IX Item "-m map" فایل‌های نگاشت، نام‌های موجود در فیلدهای نام فایل در هر خط را به نام‌های فایلی که باید به‌جای آن‌ها استفاده شوند ترجمه می‌کنند. این قابلیت عمدتاً زمانی استفاده می‌شود که در \fInewsfeeds\fR از نام‌های کوتاه استفاده شده باشد، اما فایل‌های خروجی باید از نام دامنه کامل همتایان دوردست (remote peers) استفاده کنند. .Sp در فایل نگاشت، خطوط خالی و خطوطی که با علامت شارپ (\f(CW\*(C`#\*(C'\fR) شروع می‌شوند نادیده گرفته می‌شوند. سایر خطوط باید شامل دو نام میزبان باشند که با دونقطه از هم جدا شده‌اند. فیلد اول نامی است که ممکن است در جریان ورودی ظاهر شود؛ فیلد دوم نام فایلی را مشخص می‌کند که هنگام ظاهر شدن نام در فیلد اول، باید استفاده شود. .Sp به‌عنوان مثال، فایل نگاشت زیر می‌تواند برای نگاشت نام‌های کوتاه استفاده‌شده در مثال پایین به نام‌های دامنه کامل به کار رود: .Sp .Vb 4 \& # This is a comment \& uunet:news.uu.net \& foo:foo.com \& munnari:munnari.oz.au .Ve .IP "\fB\-p\fR \fIpid-file\fR" 4 .IX Item "-p pid-file" اگر گزینه \fB\-p\fR داده شود، \fBbuffchan\fR هنگام شروع، خطی حاوی شناسه فرایند (PID) خود را (به‌صورت متنی) در فایل مشخص‌شده می‌نویسد. .IP \fB\-r\fR 4 .IX Item "-r" به‌طور پیش‌فرض، \fBbuffchan\fR پیام‌های خطای خود را به \fIpathlog\fR/errlog ارسال می‌کند. برای لغو این تغییر مسیر و ارسال پیام‌های خطا به خروجی خطای استاندارد (stderr)، از پرچم \fB\-r\fR استفاده کنید. .IP \fB\-s\fR 4 .IX Item "-s" از پرچم \fB\-s\fR می‌توان برای تعیین قالبی استفاده کرد که نام فایل را از فیلدهای نام فایل در انتهای هر خط به یک نام فایل واقعی نگاشت می‌کند. این رشته، یک رشته قالب‌بندی sprintf(3) است که باید شامل یک نمونه واحد از \f(CW\*(C`%s\*(C'\fR باشد، که با مقدار فیلد نام فایل (احتمالاً پس از نگاشت با فایل نگاشت مشخص‌شده در \fB\-m\fR) جایگزین خواهد شد. مقدار پیش‌فرض \fIpathoutgoing\fR/\f(CW\*(C`%s\*(C'\fR است. .IP \fB\-u\fR 4 .IX Item "-u" اگر پرچم \fB\-u\fR استفاده شود، خروجی بدون بافر خواهد بود. .SH "مثال‌ها (EXAMPLES)" .IX Header "EXAMPLES" اگر \fBbuffchan\fR با \f(CW\*(C`\-f 2\*(C'\fR فراخوانی شود و ورودی زیر به آن داده شود: .PP .Vb 3 \& news.software.nntp <1643@munnari.oz.au> foo uunet \& news.software.nntp <102060@litchi.foo.com> uunet munnari \& comp.sources.unix <999@news.foo.com> foo uunet munnari .Ve .PP آنگاه فایل \fIfoo\fR در \fIpathoutgoing\fR شامل این خطوط خواهد بود: .PP .Vb 2 \& news.software.nntp <1643@munnari.oz.au> \& comp.sources.unix <999@news.foo.com> .Ve .PP فایل \fImunnari\fR در \fIpathoutgoing\fR شامل این خطوط خواهد بود: .PP .Vb 2 \& news.software.nntp <102060@litchi.foo.com> \& comp.sources.unix <999@news.foo.com> .Ve .PP و فایل \fIuunet\fR در \fIpathoutgoing\fR شامل این خطوط خواهد بود: .PP .Vb 3 \& news.software.nntp <1643@munnari.oz.au> \& news.software.nntp <102060@litchi.foo.com> \& comp.sources.unix <999@news.foo.com> .Ve .PP استفاده از \fBbuffchan\fR به این روش را می‌توان در \fInewsfeeds\fR برای مثال به صورت زیر انجام داد: .PP .Vb 4 \& foo:*,@misc.*:Ap,Tm:buffchan! \& munnari:*,@rec.*:Ap,Tm:buffchan! \& uunet:*:Ap,Tm:buffchan! \& buffchan!:*:Tx,WGm*:/buffchan \-f 2 .Ve .PP این پیکربندی مثال‌های بالا را ایجاد می‌کند. برای چگونگی پارامتربندی خروجی، به پرچم \f(CW\*(C`W\*(C'\fR در newsfeeds(5) مراجعه کنید. .SH "تاریخچه (HISTORY)" .IX Header "HISTORY" نوشته‌شده توسط Rich $alz برای InterNetNews. تبدیل‌شده به POD توسط Russ Allbery . .SH "همچنین ببینید (SEE ALSO)" .IX Header "SEE ALSO" ctlinnd(8), inn.conf(5), innd(8), newsfeeds(5).