ÈÌß
mkstr - coçäaíèe ôaéëa c òeêcòaìè cooáùeíèé
ÑÈÍÒÀÊÑÈÑ
mkstr [ - ] messagefile prefix file ...
ÎÏÈÑÀÍÈÅ
Mkstr ècïoëüçyeòcÿ äëÿ coçäaíèÿ ôaéëoâ c òeêcòaìè cooáùeíèé
oá oøèáêax. Ee ïpèìeíeíèe ìoæeò çía÷èòeëüío coêpaòèòü paçìep
ïpoãpaììû c áoëüøèì êoëè÷ecòâoì äèaãíocòè÷ecêèx cooáùeíèé è
cíèçèòü íaãpyçêy ía cècòeìy ça c÷eò ycòpaíeíèÿ íeoáxoäèìocòè
ïocòoÿíío âûãpyæaòü è çaãpyæaòü òeêcò cooáùeíèé.
Mkstr oápaáaòûâaeò êaæäûé yêaçaííûé ôaéë file, ïoìeùaÿ oápaáoòaííyþ âepcèþ âxoäíoão ôaéëa â äpyãoé ôaéë, ÷üe èìÿ cocòoèò èç ïpeôèêca prefix è ïepâoía÷aëüíoão èìeíè ôaéëa. Tèïè÷íaÿ êoìaíäa mkstr âûãëÿäèò cëeäyþùèì oápaçoì:
mkstr pistrings xx *.cÝòa êoìaíäa ïpèâoäèò ê òoìy, ÷òo âce cooáùeíèÿ èç ôaéëoâ ía Cè, xpaíÿùèxcÿ â òeêyùeì êaòaëoãe, áyäyò ïoìeùeíû â ôaéë pistrings, a oápaáoòaííûe êoïèè ècxoäíûx ôaéëoâ áyäyò íaxoäèòücÿ â ôaéëax c ïpeôèêcaìè xx.
Äëÿ oápaáoòêè cooáùeíèé â ècxoäíûx ôaéëax mkstr èùeò âo âxoäíoì ïoòoêe còpoêy `error("'. Ïpè ee oáíapyæeíèè còpoêa, ía÷èíaþùaÿcÿ c `"', ïoìeùaeòcÿ â ôaéë, äoïoëíÿeìaÿ íyëeâûì cèìâoëoì è ïepeâoäoì còpoêè. Hyëeâoé cèìâoë ïoçâoëÿeò yïpocòèòü ïpoöeäypy èçâëe÷eíèÿ còpoê, ïepeâoä còpoêè ïoçâoëÿeò äëÿ ïpocìoòpa coäepæèìoão ôaéëa cooáùeíèé ïpèìeíÿòü ïpoãpaììy cat. Oápaáoòaííaÿ êoïèÿ ècxoäíoão òeêcòa ïpoãpaììû coäepæèò ycòaíoâêy yêaçaòeëÿ c ïoìoùüþ ôyíêöèè lseek âíyòpè ôaéëa, èç êoòopoão èçâëeêaþòcÿ cooáùeíèÿ. Ïpoãpaììècò äoëæeí íaïècaòü ôyíêöèþ error, êoòopaÿ oòêpûâaeò ôaéë cooáùeíèé, ÷èòaeò èç íeão còpoêy è âûâoäèò ee. Cëeäyþùèé ïpèìep èëëþcòpèpyeò ýòoò ïoäxoä.
char efilname[] = "/usr/lib/pi_strings"; int efil = -1; error(a1, a2, a3, a4) { char buf[256]; if (efil < 0) { efil = open(efilname, 0); if (efil < 0) { oops: perror(efilname); exit(1); } } if (lseek(efil, (long) a1, 0) || read(efil, buf, 256) <= 0) goto oops; printf(buf, a2, a3, a4); }
ÏÐÈÌÅ×ÀÍÈß
Bce apãyìeíòû, ça ècêëþ÷eíèeì èìeíè ôaéëa, ÿâëÿþòcÿ
íeoáÿçaòeëüíûìè