.de1 NOP . it 1 an-trap . if \\n[.$] \,\\$*\/ .. .ie t \ .ds B-Font [CB] .ds I-Font [CI] .ds R-Font [CR] .el \ .ds B-Font B .ds I-Font I .ds R-Font R .TH autogen 1 "26 Aug 2018" "GNU AutoGen (5.18.16)" "دستورات کاربر" .\" .\" DO NOT EDIT THIS FILE (in-mem file) .\" .\" It has been AutoGen-ed .\" From the definitions /u/bkorb/tools/ag/autogen-bld/agen5/opts.def .\" and the template file agman-cmd .SH "نام (NAME)" autogen \- ابزار خودکارسازی و تولید خودکار فایل‌های متنی و کدهای برنامه‌نویسی بر اساس قالب .SH "خلاصه دستور (SYNOPSIS)" \f\*[B-Font]autogen\fP .\" Mixture of short (flag) options and long options [\f\*[B-Font]\-flags\f[]] [\f\*[B-Font]\-flag\f[] [\f\*[I-Font]value\f[]]] [\f\*[B-Font]\-\-option-name\f[][[=| ]\f\*[I-Font]value\f[]]] [ ] .sp \n(Ppu .ne 2 برنامهٔ AutoGen فایل‌های متنی را با استفاده از تعاریف خارجی از روی قالب‌ها ایجاد می‌کند. .SH "توضیحات (DESCRIPTION)" برنامهٔ \fBAutoGen\fP برای تولید فایل‌های برنامه‌نویسی حاوی متن‌های تکراری با جایگذاری‌های گوناگون طراحی شده است. هدف، ساده‌سازی نگهداری برنامه‌هایی است که شامل مقادیر زیادی از متن‌های تکراری هستند. این امر به‌ویژه زمانی بسیار ارزشمند است که چندین بلوک از چنین متن‌هایی وجود داشته باشد که باید با یکدیگر هماهنگ و همگام بمانند. .sp یک نمونه رایج، مسئله نگهداری کدهای مورد نیاز برای پردازش گزینه‌های برنامه است. پردازش گزینه‌ها مستلزم حفظ حداقل چهار ساختار مختلف به ترتیب مناسب در بخش‌های مختلف برنامه شما است. شما حداقل به موارد زیر نیاز دارید: نویسه فلگ در رشته فلگ‌ها، کد مربوط به پردازش فلگ در زمان مواجهه با آن، یک یا دو متغیر وضعیت سراسری، و یک خط در متن راهنمای استفاده (usage). اگر بخواهید نام‌های طولانی گزینه‌ها، پردازش فایل پیکربندی، متغیرهای محیطی و موارد دیگر را پیاده‌سازی کنید، به امکانات بیشتری فراتر از این نیاز خواهید داشت. .sp تمامی این کارها را می‌توان به صورت مکانیکی؛ با استفاده از قالب‌های مناسب و این برنامه انجام داد. .SH "گزینه‌ها (OPTIONS)" .SS "گزینه‌های زیر تعاریف، قالب‌ها و توابع scheme مورد استفاده را انتخاب می‌کنند" .TP .NOP \f\*[B-Font]\-L\f[] \f\*[I-Font]dir\f[], \f\*[B-Font]\-\-templ\-dirs\f[]=\f\*[I-Font]dir\f[] جستجو برای قالب‌ها در \fIDIR\fP. این گزینه می‌تواند به تعداد نامحدود تکرار شود. .sp افزودن یک دایرکتوری به فهرست دایرکتوری‌هایی که \fBautogen\fP هنگام باز کردن یک قالب، چه به عنوان قالب اصلی و چه قالب درج‌شده (included)، در آن‌ها جستجو می‌کند. آخرین مورد اضافه شده بالاترین اولویت را در فهرست جستجو دارد؛ به این معنا که جستجو به ترتیب معکوس انجام می‌شود. .TP .NOP \f\*[B-Font]\-T\f[] \f\*[I-Font]tpl\-file\f[], \f\*[B-Font]\-\-override\-tpl\f[]=\f\*[I-Font]tpl\-file\f[] استفاده از \fITPL-FILE\fP برای قالب. این گزینه را نمی‌توان از پیش با متغیرهای محیطی یا در فایل‌های مقداردهی اولیه (rc) تنظیم کرد. .sp فایل‌های تعاریف، قالب استانداردی را که باید بسط داده شود مشخص می‌کنند. این گزینه آن نام را لغو کرده و قالب متفاوتی را بسط می‌دهد. .TP .NOP \f\*[B-Font]\-\-definitions\f[]=\f\*[I-Font]file\f[], \f\*[B-Font]\-\-no\-definitions\f[] خواندن تعاریف از \fIFILE\fP. شکل \fIno\-definitions\fP این گزینه را غیرفعال می‌کند. این گزینه به صورت پیش‌فرض فعال است. این گزینه را نمی‌توان از پیش با متغیرهای محیطی یا در فایل‌های مقداردهی اولیه (rc) تنظیم کرد. .sp از این آرگومان برای مشخص کردن فایل تعاریف ورودی با یک گزینه خط فرمان استفاده کنید. اگر این گزینه را مشخص نکنید، باید یک آرگومان خط فرمان وجود داشته باشد که فایل را مشخص کند، حتی اگر فقط برای تعیین ورودی استاندارد (stdin) با یک خط تیره (\fB-\fP) باشد. زمانی که می‌خواهید یک قالب را بدون هیچ تعریف فعال AutoGen پردازش کنید، \fB--no-definitions\fP را مشخص کنید. .TP .NOP \f\*[B-Font]\-\-shell\f[]=\f\*[I-Font]shell\f[] نام یا مسیر شل (shell) مورد استفاده. .sp به‌طور پیش‌فرض، هنگام ساخت AutoGen، پیکربندی سیستم برای یافتن یک شل معقول شبیه به Bourne جهت پردازش اسکریپت‌های شل بررسی می‌شود. اگر یک قالب خاص به شل دیگری نیاز دارد، باید با این گزینه در خط فرمان، با متغیر محیطی (\fBSHELL\fP) یا در فایل پیکربندی/مقداردهی اولیه مشخص شود. .TP .NOP \f\*[B-Font]\-m\f[], \f\*[B-Font]\-\-no\-fmemopen\f[] عدم استفاده از جریان‌های درون‌حافظه‌ای (in-mem streams). .sp اگر کتابخانه محلی C از "\fBfopencookie(3GNU)\fP" یا "\fBfunopen(3BSD)\fP" پشتیبانی کند، در این صورت AutoGen ترجیح می‌دهد به جای فایل‌های ناشناس (anonymous) از باز کردن بافرهای جریان در حافظه استفاده کند. اگر کمبود حافظه مجازی وجود داشته باشد، این ممکن است به مشکلاتی منجر شود. اگر برای یک کاربرد خاص با کمبود حافظه مواجه شدید، این گزینه را مشخص کنید. این امر در یک محیط مدرن با حافظه مجازی ۶۴ بیتی بعید است. .sp در پلتفرم‌های فاقد این توابع، این گزینه پذیرفته شده اما نادیده گرفته می‌شود. تابع \fBfmemopen(POSIX)\fP کافی نیست زیرا بافر رشته‌ای آن قابل تخصیص مجدد (reallocatable) نیست. همچنین \fBopen_memstream(POSIX)\fP \fIنیز\fP کافی نیست زیرا جریان فقط برای خروجی باز می‌شود. AutoGen به یک بافر با قابلیت تخصیص مجدد نیاز دارد که هم برای خواندن و هم نوشتن در دسترس باشد. .TP .NOP \f\*[B-Font]\-\-equate\f[]=\f\*[I-Font]char\-list\f[] نویسه‌هایی که معادل در نظر گرفته می‌شوند. مقدار پیش‌فرض \f\*[I-Font]char\-list\f[] برای این گزینه عبارت است از: .ti +4 _-^ .sp این گزینه فهرست نویسه‌هایی را که معادل در نظر گرفته می‌شوند تغییر می‌دهد. مقدار پیش‌فرض سه نویسه "_-^" است. (نویسه آخر در سیستم‌های Tandem/HP-NonStop مرسوم است و من قبلاً کارهای زیادی روی Tandem انجام می‌دادم.) .SS "گزینه‌های زیر نحوه مدیریت خروجی را تغییر می‌دهند" .TP .NOP \f\*[B-Font]\-b\f[] \f\*[I-Font]name\f[], \f\*[B-Font]\-\-base\-name\f[]=\f\*[I-Font]name\f[] مشخص کردن \fBNAME\fP به عنوان نام پایه برای خروجی. این گزینه را نمی‌توان از پیش با متغیرهای محیطی یا در فایل‌های مقداردهی اولیه (rc) تنظیم کرد. .sp یک قالب ممکن است نام دقیق فایل خروجی را مشخص کند. به طور معمول چنین نیست. در عوض، نام از نام پایه فایل تعاریف همراه با پسوندهای الحاق‌شده تشکیل می‌شود. این گزینه نام پایه مشتق‌شده از نام فایل تعاریف را لغو می‌کند. این امر در صورت نبود فایل تعاریف الزامی است و در صورتی که تعاریف از ورودی استاندارد (stdin) خوانده می‌شوند، توصیه می‌شود. اگر تعاریف از ورودی استاندارد خوانده شوند، نام پایه به طور پیش‌فرض \fIstdin\fP خواهد بود. هرگونه بخش‌های مربوط به دایرکتوری در ابتدای نام بدون اخطار حذف خواهند شد. اگر می‌خواهید فایل خروجی در یک دایرکتوری خاص ظاهر شود، توصیه می‌شود ابتدا به آن دایرکتوری "cd" کنید یا از نام دایرکتوری‌ها در مشخصات قالب برای فهرست‌های پسوند خروجی استفاده نمایید، به ماکروی شبه (pseudo macro) مراجعه کنید. .TP .NOP \f\*[B-Font]\-\-source\-time\f[], \f\*[B-Font]\-\-no\-source\-time\f[] تنظیم زمان‌های تغییر بر اساس جدیدترین منبع. شکل \fIno\-source\-time\fP این گزینه را غیرفعال می‌کند. .sp اگر فایل‌های خروجی خود را با خروجی ماکروی \fBDNE\fP نشانه‌گذاری زمانی (stamp) کنید، فایل‌های خروجی شما همیشه متفاوت خواهند بود، حتی اگر محتوا واقعاً تغییر نکرده باشد. اگر از این گزینه استفاده کنید، زمان تغییر فایل‌های خروجی تنها در صورتی تغییر می‌کند که فایل‌های ورودی تغییر کرده باشند. این به کاهش ساخت‌های (builds) غیرضروری کمک می‌کند. .TP .NOP \f\*[B-Font]\-\-writable\f[], \f\*[B-Font]\-\-not\-writable\f[] مجاز کردن قابلیت نوشتن برای فایل‌های خروجی. شکل \fInot\-writable\fP این گزینه را غیرفعال می‌کند. .sp این گزینه فایل‌های خروجی را قابل نوشتن (writable) باقی می‌گذارد. به طور معمول، فایل‌های خروجی فقط‌خواندنی هستند. .SS "گزینه‌های زیر اغلب هنگام اشکال‌زدایی قالب‌های جدید مفید هستند" آن‌ها محدودیت‌هایی را مشخص می‌کنند که مانع از طولانی شدن بیش از حد قالب یا تولید خروجی بیشتر از حد انتظار می‌شوند. .TP .NOP \f\*[B-Font]\-\-loop\-limit\f[]=\f\*[I-Font]lim\f[] محدودیت روی حلقه‌های افزایشی. این گزینه یک عدد صحیح را به عنوان آرگومان دریافت می‌کند. مقدار \f\*[I-Font]lim\f[] محدود به موارد زیر است: .in +4 .nf .na دقیقاً \-1، یا در محدوده 1 تا 0x1000000 .fi .in -4 مقدار پیش‌فرض \f\*[I-Font]lim\f[] برای این گزینه عبارت است از: .ti +4 256 .sp این گزینه از حلقه‌های بی‌پایان جلوگیری می‌کند. به عنوان مثال، اگر به طور تصادفی عبارت "FOR x (for-from 1) (for-to \-1) (for-by 1)" را مشخص کنید، زمان زیادی طول می‌کشد تا تمام شود. اگر بیش از ۲۵۶ مدخل در جداول دارید، باید با این گزینه محدودیت جدیدی را تعیین کنید. .TP .NOP \f\*[B-Font]\-t\f[] \f\*[I-Font]seconds\f[], \f\*[B-Font]\-\-timeout\f[]=\f\*[I-Font]seconds\f[] محدود کردن عملیات شل سرور به \fBSECONDS\fP ثانیه. این گزینه یک عدد صحیح را به عنوان آرگومان دریافت می‌کند. مقدار \f\*[I-Font]seconds\f[] محدود به موارد زیر است: .in +4 .nf .na در محدوده 0 تا 3600 .fi .in -4 .sp برنامهٔ AutoGen با یک فرایند شل سرور کار می‌کند. بیشتر دستورات عادی در کمتر از ۱۰ ثانیه کامل می‌شوند. با این حال، اگر دستورات شما به زمان بیشتری از این نیاز دارند، از این گزینه استفاده کنید. .sp محدوده معتبر ۰ تا ۳۶۰۰ ثانیه (۱ ساعت) است. مقدار صفر محدودیت زمانی سرور را غیرفعال می‌کند. .TP .NOP \f\*[B-Font]\-\-trace\f[]=\f\*[I-Font]level\f[] سطح جزئیات ردگیری (tracing). این گزینه یک کلمه کلیدی را به عنوان آرگومان دریافت می‌کند. این آرگومان یک مقدار شمارشی (enumeration) را تنظیم می‌کند که با مقایسه با ماکروی مقدار گزینه قابل آزمایش است. کلمات کلیدی موجود عبارتند از: .in +4 .nf .na nothing debug-message server-shell templates block-macros expressions everything .fi یا معادل عددی آن‌ها. .in -4 .sp مقدار پیش‌فرض \f\*[I-Font]level\f[] برای این گزینه عبارت است از: .ti +4 nothing .sp این گزینه باعث می‌شود AutoGen ردگیری از پردازش قالب خود را نمایش دهد. شش سطح وجود دارد که هر سطح شامل پیام‌های سطوح قبلی نیز می‌شود: .sp .sp .IR "nothing" هیچ‌گونه ردگیری انجام نمی‌دهد (پیش‌فرض) .sp .sp .IR "debug-message" پیام‌ها را از ماکروی "DEBUG" در AutoGen چاپ می‌کند (به DEBUG مراجعه کنید). .sp .sp .IR "server-shell" تمام ورودی‌ها و خروجی‌ها به شل سرور را ردگیری می‌کند. این شامل یک اسکریپت مقداردهی اولیه "مستقل" شل به طول حدود ۳۰ خط است. خروجی آن دور ریخته می‌شود و در هیچ قالبی درج نمی‌گردد. .sp .sp .IR "templates" فراخوانی ماکروهای تعریف‌شده با \fBDEFINE\fP و ماکروهای \fBINCLUDE\fP را ردگیری می‌کند. .sp .sp .IR "block-macros" تمام ماکروهای بلوکی را ردگیری می‌کند. موارد فوق به علاوه \fBIF\fP، \fBFOR\fP، \fBCASE\fP و \fBWHILE\fP. .sp .sp .IR "expressions" نتایج ارزیابی عبارت‌ها (expressions) را نمایش می‌دهد. .sp .sp .IR "everything" فراخوانی تمام ماکروهای AutoGen را نمایش می‌دهد، حتی ماکروهای \fBTEXT\fP (یعنی متن خارج از نشانه‌های نقل‌قول ماکرو). علاوه بر این، اگر فایل ``expr.ini'' را با فعال بودن اشکال‌زدایی بازسازی کنید، تمام فراخوانی‌های توابع scheme تعریف‌شده در AutoGen نیز ثبت (log) خواهند شد: .br .nf cd ${top_builddir}/agen5 DEBUG_ENABLED=true bash bootstrap.dir expr.ini make CFLAGS='-g \-DDEBUG_ENABLED=1' .fi .sp توجه داشته باشید که نمی‌توانید این سورس را به این روش بازسازی کنید بدون اینکه ابتدا فایل اجرایی \fBautogen\fP را در مسیر جستجوی (search path) خود نصب کرده باشید. به همین دلیل، "expr.ini" در فهرست سورس‌های توزیع‌شده قرار دارد و در وابستگی‌ها نیست. .br .TP .NOP \f\*[B-Font]\-\-trace\-out\f[]=\f\*[I-Font]file\f[] فایل خروجی ردگیری یا فیلتر. .sp خروجی مشخص‌شده می‌تواند نام یک فایل باشد، فایلی که داده‌ها به انتهای آن اضافه می‌شوند (append)، یا اگر آرگومان گزینه با عملگر پایپ (\fB|\fP) آغاز شود، دستوری است که خروجی ردگیری را به عنوان ورودی استاندارد دریافت می‌کند. برای مثال، \fB--traceout='| less'\fP خروجی ردگیری را از طریق برنامهٔ \fBless\fP اجرا می‌کند. الحاق به یک فایل با قرار دادن دو نویسه بزرگتر-از (\fB>>\fP) قبل از نام فایل مشخص می‌شود. .TP .NOP \f\*[B-Font]\-\-show\-defs\f[] نمایش درخت تعاریف. این گزینه را نمی‌توان از پیش با متغیرهای محیطی یا در فایل‌های مقداردهی اولیه (rc) تنظیم کرد. .sp این گزینه درخت کامل تعاریف را پیش از پردازش قالب چاپ می‌کند. .TP .NOP \f\*[B-Font]\-\-used\-defines\f[] نمایش تعاریف استفاده‌شده. این گزینه را نمی‌توان از پیش با متغیرهای محیطی یا در فایل‌های مقداردهی اولیه (rc) تنظیم کرد. .sp این گزینه نام مقادیر تعاریفی را که در حین پردازش قالب جستجو شده‌اند (چه در عمل پیدا شده باشند یا نه) چاپ می‌کند. ممکن است تعاریف ارجاع‌شده دیگری در بخش‌هایی از قالب وجود داشته باشند که ارزیابی نشده‌اند. برخی از نام‌های فهرست‌شده ممکن است نام‌های محاسباتی باشند و برخی دیگر آرگومان‌های ماکروی AutoGen باشند. این روشی برای تولید یک فهرست قطعی و فراگیر از همه مقادیر و فقط مقادیر استفاده‌شده از یک فایل تعاریف نیست. این صرفاً به عنوان کمکی برای مستندسازی قالب در نظر گرفته شده است. .TP .NOP \f\*[B-Font]\-C\f[], \f\*[B-Font]\-\-core\f[] به‌جا گذاشتن core dump در زمان خروج ناشی از شکست. .sp در بسیاری از سیستم‌ها مقدار پیش‌فرض محدودیت اندازه core صفر است. اگر سیستم دارای هدر sys/resource.h باشد و اگر این گزینه ارائه شود، در مسیر خروج ناموفق، autogen تلاش خواهد کرد محدودیت نرم (soft limit) اندازه core را روی هر مقداری که محدودیت سخت (hard limit) اندازه core است تنظیم کند. اگر این کار نکرد، مدیر سیستم باید محدودیت اندازه سخت core را افزایش دهد. .SS "از این گزینه‌ها می‌توان برای کنترل آنچه در فایل‌های تعاریف و فایل‌های قالب پردازش می‌شود استفاده کرد" آن‌ها مشخص می‌کنند کدام خروجی‌ها و چه بخش‌هایی از خروجی‌ها تولید شوند. .TP .NOP \f\*[B-Font]\-s\f[] \f\*[I-Font]suffix\f[], \f\*[B-Font]\-\-skip\-suffix\f[]=\f\*[I-Font]suffix\f[] صرف‌نظر کردن از فایل با این \fISUFFIX\fP. این گزینه می‌تواند به تعداد نامحدود تکرار شود. این گزینه را نمی‌توان از پیش با متغیرهای محیطی یا در فایل‌های مقداردهی اولیه (rc) تنظیم کرد. این گزینه نباید در ترکیب با هیچ یک از گزینه‌های زیر استفاده شود: select-suffix. .sp گاهی اوقات، ممکن است تولید تمام فایل‌های خروجی مشخص‌شده در قالب مطلوب نباشد. (برای مثال، فقط فایل هدر \fI.h\fP، اما نه متن برنامهٔ \fI.c\fP.) برای انجام این کار، \fB--skip-suffix=c\fP را در خط فرمان مشخص کنید. .TP .NOP \f\*[B-Font]\-o\f[] \f\*[I-Font]suffix\f[], \f\*[B-Font]\-\-select\-suffix\f[]=\f\*[I-Font]suffix\f[] مشخص کردن این پسوند خروجی. این گزینه می‌تواند به تعداد نامحدود تکرار شود. این گزینه را نمی‌توان از پیش با متغیرهای محیطی یا در فایل‌های مقداردهی اولیه (rc) تنظیم کرد. .sp اگر می‌خواهید مشخصات پسوند موجود در قالب را نادیده بگیرید و جایگزین کنید، می‌توانید از یک یا چند نسخه از این گزینه استفاده کنید. به بخش مشخصات پسوند در بخش @ref{pseudo macro} مستندات info مراجعه کنید. .TP .NOP \f\*[B-Font]\-D\f[] \f\*[I-Font]value\f[], \f\*[B-Font]\-\-define\f[]=\f\*[I-Font]value\f[] نام برای افزودن به فهرست تعاریف. این گزینه می‌تواند به تعداد نامحدود تکرار شود. .sp نام‌های تعریف AutoGen برای اهداف زیر استفاده می‌شوند: .sp .sp 1 بخش‌هایی از تعاریف AutoGen ممکن است با استفاده از دستورات سبک زبان C مانند #ifdef و #ifndef فعال یا غیرفعال شوند. .sp 1 هنگام تعریف یک مقدار برای یک نام، می‌توانید نمایه (index) را برای یک مقدار خاص مشخص کنید. آن نمایه می‌تواند یک مقدار صریح، یک گزینه define یا یک مقدار #define شده در خود تعاریف باشد. .sp 1 نام یک فایل ممکن است دارای پیشوند \fB$NAME/\fP باشد. بخش \fB$NAME\fP از رشته نام با مقدار تعریف‌شده برای \fBNAME\fP جایگزین خواهد شد. .sp 1 هنگامی که بارگذاری تعاریف توسط AutoGen به پایان می‌رسد، مقادیر تعریف‌شده با \fBputenv(3)\fP به محیط صادر می‌شوند. سپس می‌توان از این مقادیر در اسکریپت‌های شل با ارجاعات \fB${NAME@\fP} و در قالب‌ها با \fB(getenv "NAME")\fP استفاده کرد. .sp 1 هنگام پردازش یک قالب، می‌توانید یک نمایه را برای بازیابی یک مقدار خاص مشخص کنید. آن نمایه همچنین می‌تواند یک مقدار تعریف‌شده باشد. .br .sp قرار دادن این نام در محیط صادرشده کاملاً معادل است. از نظر داخلی، این دقیقاً همان کاری است که AutoGen با این گزینه انجام می‌دهد. .TP .NOP \f\*[B-Font]\-U\f[] \f\*[I-Font]name\-pat\f[], \f\*[B-Font]\-\-undefine\f[]=\f\*[I-Font]name\-pat\f[] الگوی حذف از فهرست تعاریف. این گزینه می‌تواند به تعداد نامحدود تکرار شود. این گزینه را نمی‌توان از پیش با متغیرهای محیطی یا در فایل‌های مقداردهی اولیه (rc) تنظیم کرد. .sp مشابه با 'C'، برنامهٔ AutoGen از دستورات پیش‌پردازنده \fB#ifdef/#ifndef\fP استفاده می‌کند. این گزینه باعث می‌شود نام‌های منطبق از فهرست مقادیر تعریف‌شده حذف شوند. .SS "این گزینه برای خودکارسازی ردیابی وابستگی‌ها استفاده می‌شود" .TP .NOP \f\*[B-Font]\-M\f[] \f\*[I-Font]type\f[], \f\*[B-Font]\-\-make\-dep\f[] [\f\*[I-Font]type\f[]] تولید فایل وابستگی make. این گزینه می‌تواند به تعداد نامحدود تکرار شود. این گزینه را نمی‌توان از پیش با متغیرهای محیطی یا در فایل‌های مقداردهی اولیه (rc) تنظیم کرد. .sp این گزینه عملکردی بسیار شبیه به سری گزینه‌های \fB-M\fP در کامپایلر gcc دارد، با این تفاوت که به جای فقط تولید وابستگی‌های پیشین، وابستگی‌های پسین (فایل‌های هدف خروجی) را نیز تولید می‌کند. به‌طور پیش‌فرض، اطلاعات وابستگی خروجی در \fB.d\fP قرار می‌گیرد، اما می‌تواند با \fB-MF\fP نیز مشخص شود. برچسب زمانی این فایل به گونه‌ای دستکاری می‌شود که یک ثانیه قدیمی‌تر از قدیمی‌ترین فایل خروجی اصلی باشد. .sp هدف (target) در این فایل وابستگی معمولاً نام فایل وابستگی خواهد بود، اما می‌تواند با \fB-MT\fP نیز بازنویسی و لغو شود. برنامهٔ AutoGen محتوای آن فایل را تغییر نخواهد داد، اما ممکن است آن را ایجاد کرده و زمان تغییر آن را با زمان شروع مطابقت دهد. .sp \fBNB:\fP این حروف دوم بخشی از آرگومان گزینه هستند، بنابراین \fB-MF \fP باید نویسه فاصله را نقل‌قول کرده یا آن را حذف کند، و \fB-M "F "\fP قابل قبول است زیرا \fBF\fP بخشی از آرگومان گزینه است. .sp عبارت \fB-M\fP می‌تواند با هر یک از حروف M، F، P، T، Q، D یا G همراه باشد. با این حال، تنها F، Q، T و P معنادار هستند. همه به جز F معانی تا حدی متفاوتی دارند. \fB-MT\fP به این معنی تفسیر می‌شود که \fB\fP یک فایل نگهبان (sentinel file) است که به تمام ورودی‌ها (قالب‌ها و فایل‌های تعاریف) وابسته خواهد بود و تمام فایل‌های خروجی به این فایل نگهبان وابسته خواهند بود. این گزینه برای استفاده به عنوان یک هدف واقعی make مناسب است. حرف Q همانند T رفتار می‌کند، با این تفاوت که نویسه‌های دلار ('$') دو برابر می‌شوند. حرف P باعث می‌شود یک قانون ساختگی (phony rule) ویژه clean (clobber) در قطعه فایل make درج شود. یک قانون خالی همیشه برای ساخت فهرست اهداف ایجاد می‌شود. .sp نحوه استفاده پیشنهادی به این صورت است: .nf \-MFwhatever-you-like.dep \-MTyour-sentinel-file \-MP .fi و سپس در \fBMakefile\fP خود، قانون \fIautogen\fP را بسازید: .nf \-include whatever-you-like.dep clean_targets += clean-your-sentinel-file .sp your-sentinel-file: autogen \-MT$@@ \-MF$*.d ..... .sp local-clean : rm \-f $(clean_targets) .fi .sp زمان تغییر در فایل وابستگی به گونه‌ای تنظیم می‌شود که یک ثانیه قبل از زودترین برچسب زمانی هر فایل خروجی دیگر باشد. در نتیجه، برای استفاده به عنوان فایل نگهبان که گواهی بر اجرای موفقیت‌آمیز برنامه است، مناسب خواهد بود. (\fB-include\fP روش GNU make برای مشخص کردن «اگر وجود دارد آن را شامل شو» است. make شما باید از این قابلیت پشتیبانی کند یا فرایند bootstrap شما باید فایل را ایجاد نماید.) .sp تمامی این موارد را می‌توان با استفاده از متغیرهای محیطی \fBDEPENDENCIES_OUTPUT\fP یا \fBAUTOGEN_MAKE_DEP\fP نیز مشخص کرد. در صورت تعریف، اطلاعات وابستگی خروجی داده خواهد شد. اگر با متنی بدون فاصله تعریف شود که چیزی غیر از \fBtrue\fP، \fBfalse\fP، \fByes\fP، \fBno\fP، \fB0\fP یا \fB1\fP باشد، آن رشته به عنوان نام فایل خروجی در نظر گرفته می‌شود. اگر شامل رشته‌ای از نویسه‌های فاصله باشد، توکن اول همانند بالا است و توکن دوم به عنوان فایل هدف (نگهبان) مانند \fB-MT\fP در پاراگراف‌های بالا در نظر گرفته می‌شود. \fBDEPENDENCIES_OUTPUT\fP اگر شامل چندین توالی از نویسه‌های فاصله باشد یا اگر محتوای آن به طور خاص \fBfalse\fP، \fBno\fP یا \fB0\fP باشد، نادیده گرفته خواهد شد. .SS "راهنما، نسخه، گزینه‌ها و مدیریت خطا" .TP .NOP \f\*[B-Font]\-\-no\-abort\f[] عدم توقف ناگهانی (abort) در صورت بروز خطا. .sp به‌طور پیش‌فرض، \fBAutoGen\fP در صورت بروز خطا متوقف می‌شود و یک ایمیج core بر جای می‌گذارد. این گاهی اوقات ناخوشایند است. در صورت وجود در خط فرمان یا در محیط، AutoGen به جای \fBabort()\fP تابع \fBexit(1)\fP را فراخوانی خواهد کرد. .TP .NOP \f\*[B-Font]\-\&?\f[], \f\*[B-Font]\-\-help\f[] نمایش اطلاعات نحوه استفاده و خروج. .TP .NOP \f\*[B-Font]\-\&!\f[], \f\*[B-Font]\-\-more-help\f[] ارسال اطلاعات تفصیلی نحوه استفاده از طریق یک صفحه‌بند (pager). .TP .NOP \f\*[B-Font]\->\f[] [\f\*[I-Font]cfgfile\f[]], \f\*[B-Font]\-\-save-opts\f[] [=\f\*[I-Font]cfgfile\f[]] ذخیره وضعیت گزینه‌ها در \fIcfgfile\fP. مقدار پیش‌فرض، \fIآخرین\fP فایل پیکربندی فهرست‌شده در بخش \fBپیش‌تنظیمات گزینه‌ها (OPTION PRESETS)\fP در زیر است. دستور پس از به‌روزرسانی فایل پیکربندی خارج خواهد شد. .TP .NOP \f\*[B-Font]\-<\f[] \f\*[I-Font]cfgfile\f[], \f\*[B-Font]\-\-load-opts\f[]=\f\*[I-Font]cfgfile\f[], \f\*[B-Font]\-\-no-load-opts\f[] بارگذاری گزینه‌ها از \fIcfgfile\fP. شکل \fIno-load-opts\fP بارگذاری فایل‌های پیکربندی قبلی config/rc/ini را غیرفعال می‌کند. گزینهٔ \fI\-\-no-load-opts\fP زودتر و خارج از نوبت معمول بررسی می‌شود. .TP .NOP \f\*[B-Font]\-v\f[] [{\f\*[I-Font]v|c|n\f[] \f\*[B-Font]\-\-version\f[] [{\f\*[I-Font]v|c|n\f[]}]}] نمایش نسخه برنامه و خروج. حالت پیش‌فرض `v` است که یک نسخه ساده است. حالت `c` اطلاعات کپی‌رایت را چاپ می‌کند و `n` متن کامل اعلان کپی‌رایت را چاپ خواهد کرد. .PP .SH "پیش‌تنظیمات گزینه‌ها (OPTION PRESETS)" هر گزینه‌ای که به عنوان \fInot presettable\fP (غیرقابل پیش‌تنظیم) علامت‌گذاری نشده باشد، ممکن است با بارگذاری مقادیر از فایل(های) پیکربندی ("RC" یا ".INI") و مقادیر برگرفته از متغیرهای محیطی زیر پیش‌تنظیم شود: .nf \fBAUTOGEN_\fP یا \fBAUTOGEN\fP .fi .ad پیش‌تنظیمات متغیرهای محیطی اولویت بیشتری نسبت به فایل‌های پیکربندی دارند (بعد از آن‌ها پردازش می‌شوند). فایل‌های \fIhomerc\fP عبارتند از "\fI$HOME\fP" و "\fI.\fP". اگر هر یک از این‌ها دایرکتوری باشند، آنگاه فایل \fI.autogenrc\fP درون آن دایرکتوری‌ها جستجو می‌شود. .SH "محیط (ENVIRONMENT)" برای متغیرهای محیطی پیکربندی به بخش \fBپیش‌تنظیمات گزینه‌ها (OPTION PRESETS)\fP مراجعه کنید. .SH "فایل‌ها (FILES)" برای فایل‌های پیکربندی به بخش \fBپیش‌تنظیمات گزینه‌ها (OPTION PRESETS)\fP مراجعه کنید. .SH "مثال‌ها (EXAMPLES)" در اینجا نحوه تولید صفحه راهنما آورده شده است: .br .in +4 .nf autogen \-Tagman\-cmd.tpl \-MFman\-dep \-MTstamp\-man opts.def .in -4 .fi .sp این دستور این صفحه راهنما را از روی فایل تعاریف گزینه‌های AutoGen تولید کرده است. این دستور قالب مشخص‌شده در \fIopts.def\fP (که معمولاً \fIoptions.tpl\fP است) را لغو کرده و از \fIagman\-cmd.tpl\fP استفاده می‌کند. همچنین خروجی وابستگی فایل make را روی \fIman\-dep\fP و فایل نگهبان (فایل برچسب زمانی) را روی \fIman\-stamp\fP تنظیم می‌کند. نام پایه فایل از مقدار تعریف‌شدهٔ \fBprog\-name\fP مشتق می‌شود. .sp سند فراخوانی texi از طریق زیر تولید می‌شود: .br .in +4 .nf autogen \-Tagtexi\-cmd.tpl \-MFtexi\-dep \-MTtexi\-stamp opts.def .in -4 .fi .SH "وضعیت خروج (EXIT STATUS)" یکی از مقادیر خروج زیر بازگردانده خواهد شد: .TP .NOP 0 " (EXIT_SUCCESS)" اجرای موفقیت‌آمیز برنامه. .TP .NOP 1 " (EXIT_OPTION_ERROR)" گزینه‌های دستور به درستی پیکربندی نشده بودند. .TP .NOP 2 " (EXIT_BAD_TEMPLATE)" هنگام پردازش قالب خطایی رخ داد. .TP .NOP 3 " (EXIT_BAD_DEFINITIONS)" تعاریف قابل فهم و تجزیه نبودند. .TP .NOP 4 " (EXIT_LOAD_ERROR)" خطایی در طول مرحله بارگذاری رخ داد. .TP .NOP 5 " (EXIT_FS_ERROR)" یک خطای سیستم فایل برنامه را متوقف کرد. .TP .NOP 6 " (EXIT_NO_MEM)" حافظه ناکافی برای انجام عملیات وجود ندارد. .TP .NOP 128 " (EXIT_SIGNAL)" برنامهٔ \fBautogen\fP به دلیل دریافت یک سیگنال خارج شد. اگر قالب شما شامل فرمت‌بندی رشته‌ای باشد، یک آرگومان عددی برای یک عنصر فرمت‌بندی "%s" باعث ایجاد خطای segmentation fault خواهد شد. برنامهٔ Autogen سیگنال seg fault را دریافت کرده و با \fBAUTOGEN_EXIT_SIGNAL(5)\fP خارج می‌شود. از طرف دیگر، ممکن است AutoGen با یک سیگنال \fBkill(2)\fP متوقف شده باشد. برای تشخیص شماره سیگنال، ۱۲۸ را از کد خروج واقعی کم کنید. .TP .NOP 66 " (EX_NOINPUT)" یک فایل پیکربندی مشخص‌شده بارگذاری نشد. .TP .NOP 70 " (EX_SOFTWARE)" کتابخانه libopts با یک خطای عملیاتی داخلی مواجه شد. لطفاً آن را به نشانی autogen-users@lists.sourceforge.net گزارش دهید. با تشکر. .PP .SH "نویسندگان (AUTHORS)" Bruce Korb .SH "کپی‌رایت (COPYRIGHT)" حق نشر \(co 1992-2018 متعلق به Bruce Korb است؛ تمامی حقوق محفوظ است. این برنامه تحت شرایط مجوز عمومی همگانی گنو (GNU General Public License)، نسخه ۳ یا جدیدتر منتشر شده است. .SH "گزارش باگ‌ها (REPORTING BUGS)" لطفاً گزارش‌های باگ را به نشانی autogen-users@lists.sourceforge.net ارسال کنید. .SH "نکات (NOTES)" این صفحه راهنما توسط \fIAutoGen\fP از روی تعاریف گزینه‌های \fBautogen\fP تولید شده است.