Warning: Cannot modify header information - headers already sent by (output started at /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code:102) in /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code on line 4

Warning: Cannot modify header information - headers already sent by (output started at /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code:102) in /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code on line 4

Warning: Cannot modify header information - headers already sent by (output started at /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code:102) in /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code on line 4

Warning: Cannot modify header information - headers already sent by (output started at /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code:102) in /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code on line 4

Warning: Cannot modify header information - headers already sent by (output started at /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code:102) in /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code on line 4

Warning: Cannot modify header information - headers already sent by (output started at /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code:102) in /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code on line 4
sbin/insserv000066600000155250150770150550007134 0ustar00ELF>@@@8@@@@@@@@@@ ``X ``@@DDPtd88@8@Qtd/lib64/ld-linux-x86-64.so.2GNUGNU<wؾJ I5?840-H"<B7 @$A( 6#/ED>%9 !1G'&2 C ;=,:.+F*3)D "DEFGI93|ZX]|!c DTEK !H.:*TBgg]0\&=!A<y"\)o} CSp``6`@@@!@__gmon_start__libc.so.6strcpyexitsprintfstrncmpoptindstrrchrposix_memalignregexecreadlinkat__strdup__fxstatat64unlinkatclosedirstrncpyputsregfreemkdirrewinddirstrpbrkpopenstrspnstrtolalphasort64fgetsstrlenmemsetwarnstrstr__errno_locationchdirfputcregerrormemcpyfclosesymlinkatmallocstrcatstrcasecmpftello64__lxstat64opendir__xstat64regcompoptargstderrgetuidreadlinkgetopt_long__strsep_gpclosegetcwdfwritestrchrscandir64fdopenreaddir64__ctype_toupper_locmemmovefopen64openat64strcmpstrerror__libc_start_maindirfdvfprintfbasenamesnprintfposix_fadvise64GLIBC_2.4GLIBC_2.3GLIBC_2.3.4GLIBC_2.2.5ii mii wti ui ``F`E`D```````` ` ` ` ` ``` `(`0`8`@`H`P`X```h`p`x``G```` `!`"`#`$`%`&`'`(`)`*`+`,`-`.`/ `0(`10`28`3@`4H`5P`6X`7``8h`9p`:x`;`<`=`>`?`@`A`B`CH荕H5Z %\ @%Z h%R h%J h%B h%: h%2 h%* h%" hp% h`% h P% h @% h 0% h % h % h% h%ڶ h%Ҷ h%ʶ h%¶ h% h% h% h% hp% h`% hP% h@% h0%z h %r h%j h%b h%Z h %R h!%J h"%B h#%: h$%2 h%%* h&%" h'p% h(`% h)P% h*@% h+0% h, % h-% h.% h/%ڵ h0%ҵ h1%ʵ h2%µ h3% h4% h5% h6% h7p% h8`% h9P% h:@% h;0%z h< %r h=%j h>%b h?%Z h@%R hA%J hB1I^HHPTI @H0@HP@_HHѲ HtHÐUHSH= uK`H H`HHH9s$fDHHͶ `H H9r H[fff.UH= HtHt`Ðfff.f.HcH@ÐSG<.twtsH_.HzH)HP$@HtD(@Ht3@ 39u,J: &u J: uJ: u1[@ 9u-J: u!J: uJ: ݏtf ̏97@Ht<@HtA@Hz 9u(B:uB:uB:vGJ@H2f,H;Ht&HP@:?uB:4[@[ÐJ: /J: J: ܎1fUHH]LeLmLuIH H=n ILHHD!H5O HH)H\$HHIHILLf: @H=ݳ LH:H]LeLmLuHHT$0Hh@HL$8LD$@H)H$LL$H)z)r)j)b)Z)R)J)B9= H|1H$HH$D$0HT$HT$ HT$H@HHT$0H @Ht$(HL$8HH)H$LD$@LL$H)z)r)j)b)Z)R)J)BH$$D$0HD$HD$ HD$5Hffff.S~1Q@JHcH@[f.S~1Q@HcHH@[f.SHH@41fD@82t#Hu1@d@1[HH@[fS~1Q@HcH@[f.HHT$0H!@Ht$(HL$8H)H$LD$@LL$H)z)r)j)b)Z)R)J)Bx Pm u3H$H$D$0HD$HD$ HD$ fAWAVIAUATIUSHHH-b H} Hs;tWLLmAMHp`uHCHH{HBHHH[HH[]A\A]A^A_LmM;mtH}I9H/tG HL|$tfDA$~J(LIVHD$H HAHHPHHSHPHKHHI9HE_E HHu]HHC8$uA$ #fK LA$Lfc A,$믿 @1YH[]A\A]A^A_ Hsȱ@18@H1DUHAWAAVIHAUATISHHHPHHLKH)H|$HHHEEHHE~@H)EDۃ]EDEH}Hvp@H]HHHHEt HHEf<$Ez<+uDeHHvAI9HMqHX HEHH9IMXLuED}MIHI DHI9tpHCLHxX8uEfD cMLuD}UH}LH}H}Ⱦ}@HH%He[A\A]A^A_fDELLuMD}H} HEHH@H@H@HSHEH fD`LhHAHHPHAf.LoIHXHE@H@HU\fANHHQx@H]Ht98@8Hu8@8DHu1yL% MM,$AMIp`?It$ HRuI\$IL9@HSDLqHL9uHHHMAHjxH]HQ8t@8Ɛt@8Hu@8t@8Ɛt@8tHu1fANH |@8@H1eDUHAWAVAUIATIHSH8HPHLHH)H|$HHHEXL5A~@L}ȃM)EIAAv@4HMHHMHxHHEtHHE@HUtU<$tg<+uHEuH}u_IT$XuHIo}@LHEH}uDHe[A\A]A^A_fHI HH  Hp` Hr H}HUHMHUHMuHBHHUH9@HPLHENHEHH;Eu@A~@unHEHHEEHt08t0@8uf'fD8fDt@8tHu1HMHHMA~HEHHEHt8t@8t@8u#@fD8fDt@8t@8tHu18@H1ffffff.AWIAVAUAHATUSHHt$HHHl$ HL$0AHƄ$ DALHD$H%=9HHDLcBD |$ /tp/HLD$D$HT$LD$tLHH)H N)H| HL$ICЃHc(HL$HHHHHeHHAtAAD$wHAMtHkHHHIA((Ht$H¿x@1/HHHt^HHt5H[]A\A]A^A_8HH¿@1k8s@H1LDUHHSHHx`HHHH|uHHĘ[]Ð11h11XHHĘ[]8ui1H꾢@@rp tHbf N tBy8HH¿ѭ@1HHĘ[]^HH¿@1478@HH¿ѭ@1fDUSHHH|$;uGHl$11 HHEt0H HD$HH HAHHPHxH[]8HH¿@1f.H= `StBH H{jx0H H{HPHHQH H@HqH[h[18:HsH¿ز@1ffffff.H(DǺH1DH$HD$HD$HtH9v Ht9N0HLjHHtHDHu΃u1<$uH(x4Q@1pHHuf8o@H1HSHHHfff.UHAWAVAUATSHH(_HPHHHH)H|$HHHEL5cA~@L}fEM)IA6@ANH]H@H[HHEtHHED#EtHHu@HH{NHM1B4@@:0/Hu1@d@{1f EI5}@LHHgEHe[A\A]A^A_@A~@u^H]Htt3@8t28Huf'fD@8Dt8@tHu1H@HHUA~]H]Hit@8t8t@8Hfu @@8Dt8@t@8tHu1HcH@8@H1f.AWH1@AVAUATUSHHxk;/H{J@HE>HH$*HHD$~@H)D$H-ݎHD$ HD$HD$(HH$@`H% <#t< tHL$0E1@```@``0@`@17HL$0E1@``@```@`@1$@uD$Hu16HXxLd$XMxA$t8uLHHL$X@8t@8LuffD8t@8Ɛt@8tHu1m8v@H1OJ@HHH$88AHH¿@1fAW1AVAUATUSHh |$,Ht$T$$H@L$(H|$HHEH|$AH$@Ld$0AƄ$0HD$fAHHT$X%=LHHcD 0|$0/td/HH $D$HT$H $tBALI)N,(DIL D)K<,HCЃHcLHLjHH5c LULHH AD((Ht$H¿@1H! Ht$1|$,AJ@HH11DE1E11L$@ fH= *H= TH=ܝ H=֝ H=Н H=ʝ TH=ĝ H= H= H= ,H= o@@`oH H@`H H*[@@`3HHtH= Ht ?H= Hܜ Ht ?H=ל HĜ Ht ?H= H Ht ?FH= H Ht ?>H= H| Ht ?.H=w Hd Ht ?H=_ HL Ht ?.H=G H4 Ht ?H=/ H Ht ?H= H Ht ?H `fDE1L@`@`V@`@`g@`@`@1E1L@``@```M@`@1T{E1L@``@```@`@1 E1L@``6@``G`@`@1E1L@``@```-1@`@4H=ܙ  fDE1L@``n @```1@`@H=| fDE1L@``e@```]1@`@dH= XfDE1L@`@`@`@`@`@`@1E1L@``>@``O`1@`@H=4 XfDE1L@`@`%@`@`@`-@`@14E1L@``v@```@`@1}]scSC3%#5B$T 9$P Hc$P Hƀ@`H@`HH f$L 9$H Hc$H Hƀ@`H@`/HHO f$L 9$H Hc$H Hƀ@`H@`H?H @f$L 9$H Hc$H Hƀ@`H@`HHg f$L 9$H Hc$H Hƀ@`H@`?HHO fP$T 9$P  Hc$P Hƀ@`H@`HOHߔ f$T 9$P kHc$P Hƀ@`H@`HH f$L 9$H [Hc$H Hƀ@`H@`OHH/ Nf$T 9$P Hc$P Hƀ@`H@`H_H Df$L 9$H Hc$H Hƀ@`H@`HH f$T 9$P Hc$P Hƀ@`H@`_HHW fHD$A1MHA L>EtTH HH=``H=ݒ H=ג H= H= Hh D[]A\A]A^A_MAD$^|$$HKIH1D1LDHA E+|$ H|$kKtSuHHƿX@1ct$(@1H|$&KtSuHHƿ@1H H H=``H= H= H= H= ش@1H ``HV ``HV ``H> ``{H ``H ``H ``!Hސ ``H ``GHΐ ``H ``C8Ht$H¿@1 11D"HT$@H|$XHIH ͅ I;@1HN=J@HHHAA@1=`X@1,A@1"@1 @H 8@H1dg8pHt$H¿@1DG8PHt$H¿L@1$Ht$0@1Hl$Ld$H\$HH ц IIAHtcD EuW1@H=wzH$H/t31H$H$L$HĸÐ@f$(%=uDH;tfC8L@H1%DH\$Hl$HLd$Ll$Lt$L|$HHHT$HEEE1SHIH=Ѝ Ht ?bH=Í H Ht ?2H= H Ht ?H= H Ht ?H={ Hh Ht ?H=c HP Ht ?rH=K H8 Ht ?BH=3 H Ht ?H= H Ht ?H= H Ht ?H= H، Ht?u~DDHމH [Au' DH|$DDL0AA LjDH\$Hl$ Ld$(Ll$0Lt$8L|$@HH@;xfD#AQ!DDL@-D UHcHHAWHAVAUATISH1H>H)HD$HHxEH )u ~(CHxH1HHH9uDžDž\AĮ@DžHDž֮@HDž@DE1`?@L9?7w؉$@ H H8H DžL- MvA}kH@tHL-M LMIALHH@HJD28/H HH9*   H5 @1<@!@xP@n@dص@Z@PX@F@<ض@2 @(11DžBDž\3L= MtA?tK H53 @1g DžX)ÉuDžXa?HIHHHHnH=}@<,}@HHt 8F&/HHN,H H޿M:8%=@4+HH9H ?HH>/HnHI>H@t HA$HH@LH?/%11;HH1HHHHHHHH| HH~ ,>HH{tH=~ @HH=~ HHo~ @HH>HA~@LL+-lL HHHhHËA`H;}@HHt>tHxIcHH4H3LyxaH;/HtHHHEWAIuH6l tH(lx@uTH;\Hl8Iƃ<H]H3L<^HkDBEuUH3.9@9HD99HuH^kxH39@9EA9H 9tA9tH9uHP@`DHEL*=@`<H { H-)={ @HEH1MN@=<HH { H(={ @HEH1MS@Ϳ=;HuH@@D`LLIcHDHEtsAHEH@LL1IL=>;LLx(%=uLHEH<H}Ht` `L5y IIp`tyL}MfMnM9I$uPf.L9Ht;IHID$8$ufAL$ LLLEfAd$ L9HuIIHIp`u8@`*;p@`pK;@@`T;@`8<@@`;@`;@@`_;0@`ȿ#;p@`謿:@`萿:@@`to:HHDž~@L=FgL)HDžHH@HHpWHHH$HpUDHlH(HEXKtSuL`Z@LpLȾHv1 LcHE1L`DHHMALH} H HH=``EHy E1HEƒ`f.H2A&Aw@(HUH+HHHHHEHHtHHEfD<$<#]HMHKI@[AL$LH@89~ AL$Lf M)LL6JHuL:=AD$HfAD$JƒfAT$HfAD$HL@1}H~ HtH``t LKH} HtH``t L)H} HtH``t LGH} HtH``t LH} HtH``t LH} HtH``t LH5} H@fAL$HHf.H}}@蚺HHfDH}Ht ?H=| HEHt ?H=| H| Ht ?H=| H| Ht ?H=| Ho| Ht ?H=j| HW| Ht ?H=R| H?| Ht ?~H=:| H'| Ht ?nH="| H| Ht ?^H= | H{ Ht ?NH={ H{ Ht ?>H={ H{ Ht ?.H{ L@1 @MAL$MH@@9AL$MfDLh@1i@EGEBHUH t?8 @8Hu$f8@8DHu1H}@Nr 1L z]8HÃeZHpHLe@1虾@AD$Mcc`L@1VHpHM@1莽YHfDH@AHUH 8t@8tA8Huf.8t@8ΐtA8tHu@IH0@H$y /Hg0Hy LHD0H@0Hx N 2BRӵbõr賵裵蓵胵scUH觷HHBqBHHHHi0H@S011.11HvH]A~@LmI)DHD1HAL7LuL@1脻H= w HH``Hz.HH2.HE1HEIs@HUHHHHRHHEHHtHHEta<$)<#H9EMHLHPAHPfHHIV}@L貳HHufH,H9sHDž~@H A\H)HHE辵HIHXl LhD@IELI6A:uHmuDXD-gl E-EAƅAA|$.[H AHڿH۴8%=t1=t*=@EfH޿@@1 @t=@ȯ@H0ϯ@HJ@HE|$HA9uC:HuC:Hۯ@H蜰tv @H膰t`HA9u$C:sHuC:hHu C:]Ht0UHA9C:CHC:4HqEH޿@1ҷDL@1蹷y@ILh@1葷Q@DCEu^HUH t'8t.@8Hu$@8t$@8ΐtHu1H}`HDH{HUH t8t@8tA8Hu@8t@8ΐtA8tHuM)LcHH)H8r HHLe@1N=b u\1LhtH迩8IƐt#A>辨HHLe@19L uHHM@1"HACJffCJ-fcH#LCH@$tHL1'@"IE@f}QAUMHMH4@1KLDžDH}HDLHITA:^uIFI~Z@HMHvHI~触uLHL荦D:_ E-1LH8H9EHHLe@1脫AEJffAEJEup=^ u!HHnLHLHD@1qAEJffAEJtfAMH|ur @^ u!HHLHLHD@1AEJffAEJtfAMHfDž E1tߋtՋ] 1L_貤8H9诣HHLe@1AEJffAEJhfAeH]LHPHP@HHM@1ިLHP藤HPBHHM@1莨;IE8fAULHMH<@1S\wfAeHv@EDDEzDEjD\ Eu!HH赡LHLHD@1踧AEJffAEJfAMHʢ8ӡHHHI@1蕢8螡HHHI@1ҧCSAT$LL0*HSXL芫L=sZ HIT$XHiI$=Z uk1L菢tW8Ht%9HHLe@1& LHP?HPuHHM@1:1@b@HI1@@HI@1ǰ@1ݥH]SL ߰@HE訡SH>HfxJ~HU@L1胡HxHHHHH蕞HHHJY h8qo@H1躥H1DžXpL EL ߰@HEƠSH\HtfxJ~HU@L1襠L L @oL @XHESHHt9fxJ~HPH;tHP8L:IH@HtHU@1L SL FHELSHmHIfA|$J~ID$8HM|$8IIM;?HtMt$t1IFHPH@~fxJ~wI9tr umHp8IT$86f2t\L@NMtSu*HUH@1LP)LPHL¾@1PPM6M9\H #LLOLG1@@舞HI_ @1胢KYL ߰@HERKHHtfxJ~HU@L11L rHEKHHIfA~J~M~ M;?tIF@8xMn M9t1IEHthPH@u\fxJ~UHH@IV@ f tEHHNHtM~MtwH1LHHt ID8,uuVIVH:Ht?tHHŌHHHLHH舌HHHHI mH Ht H A~tH@8f뀻4H@@fh1H5xlLmMyLt8@8@8HDLA?nj@H1蠔H谋HtHHN HIHyN H1H=``%HeN HH=``HqN HPH=``DH]N HtBH=``t:H= N LH޿@1bLH޿h@1KID$@ftH=M HM L@@1袓襌8讋HH¿@1H1}@苊H@HfM qH@HTM WHx@HbM =H^HUM H޿@1q}LHxLhIǺHL;AEtGIMHHHPP@HHHPuIWXHqX@11MmHIT$8fAD$H\ID$8fEt@u7HcHC HxH<u"HHƿ@1lID$8HL ID$8fǟHK L=C HIH_ L9t8HH5HMHHtA:L$MvIt$@HH@6f1u HH!HxXHHdHHLK L=B HIH_ L9t諆H3H¿@1聎H豅/@LQHHM@1x@H999fHHߐH? UΆ8ׅ@H1谍EH޿x@ uEtAAƅUDžXj8sHH¿ѭ@1Eǹ@``7`}@`@1ǹ@```8HH@H01Ҍǹ@``Ą`닉ǹ@`@`规@`kǹ@``臄`Kǹ@`@`g@`+ǹ@``G` ǹ@``'`ǹ@```ǹ@`@`@`ǹ@``ǃ`ǹ@``觃`kǹ@``臃`Kfff.HG0H@PLD$@KLD$LD$D H 1LExsfDHy< H=`HuL@H`H Ht9HH%9uHHH8HOH9HL$LHD$HHHf.D9~HD$L9t"HL$H< H@`H; HJHD GH 1LExvfH; H=`HuL@H`H Ht9HHE9uHHH8HOH9HL$LHD$HHHf.D9~HD$I9nHL$HN; H@`H?; HJHH); @"u@BuHH H=`u1øf.H?L GG L f.@XtjDQ ML uJLH`taHDAEHAP@KD@MDA%HAPD@LHAPL@NLuMDQ@L tfAtL F DDQ fD Q@@L F 1H ?: H F IvLd$H\$IHl$Ll$H(Hu 1H\$Hl$Ld$Ll$ H(DL-9 I]H{XL茁tHH+ML9uHATIUSH9 H{`Ht LGtHHkMH`u[]1A\HCh[]A\AUAATIUSHHQ9 H{`Ht Lt+HHkMH`uH1[]A\A]f.HC0HAKHE@H[]A\A]ÐAUIATUSHL%8 I$fDH{XLlt HH+ML9uH1[]A\A]@HCNH[]A\A]ÐAUIATIUSHHq8 H{`Ht LtHHkMH`u1Im0H}`Ht LH[]A\A]DHtkHC`HE`H 7 HH H9u<@HH H9t*I9tI]0H9X0uHxNuH]`fHHHXN@H[]A\A]LH}HtIENfAMHHE`|8#~@H1fff.AWAAVAUATUSHXKH|$Ht$T$HDD$OLl$HD$@h@HD$(IH|$tHT$HHT$(IEAEtVH|$(H\$(KfKHD$(IuHPHL$@HXp@[]A\A]A^A_1靃DAM9L$HML$HcL$ L$OLd$AD$$\$fopen(%s): %s script '%s' is upstart job %s %s lsb-headerpopen(%s): %s ### BEGIN INIT INFO### END INIT INFOexiting now! %s%s/%ssnprintf(): %s /usr/share/insserv/overrides/etc/insserv.conf/etc/insserv/overrides/etc/init.dFor help use: %s -h Available options: -h, --help This help.c:dfrhvno:p:u:%s%s%s%s.d0123456789can not remove(%s%s): %s remove service %s/%s%s $remote_fs $syslogtruecan not stat(%s) rebootREADMEMakefilerxskeletonpowerfailrcSrc$.#%_+-\*[]^:()~2 3 4 50 1 6emptystart=stop=../init.d/%sK%.2d%sS%.2d%senable service %s -> %s/%s%s .depend.bootfopen(.depend.stop): %s .depend.startfopen(.depend.start): %s creating .depend.boot creating .depend.start TARGETS = %sINTERACTIVE =%s:.depend.stopcreating .depend.stop /lib/init/upstart-jobverboseconfigdryrundefaultremoveforcepathoverridehelp../rc0.d/../rc1.d/../rc2.d/../rc3.d/../rc4.d/../rc5.d/../rc6.d/../rcS.d/Loop detected during expanding system facilities in the insserv.conf file(s): %s The nested level of the system facilities in the insserv.conf file(s) is to large Can not determine script name for %s: %s pushd() can not change to directory %s: %s popd() can not change directory %s: %s Can not determine upstart job name for %s: %s snprintf: insufficient buffer for %s Script %s is broken: missing end of LSB comment. Script %s is broken: incomplete LSB comment. missing `Provides:' entry: please add. missing valid name for `Provides:' please add. missing `Required-Start:' entry: please add even if empty. missing `Required-Stop:' entry: please add even if empty. missing `Default-Start:' entry: please add even if empty. missing `Default-Stop:' entry: please add even if empty. Usage: %s [] [init_script|init_directory] -r, --remove Remove the listed scripts from all runlevels. -f, --force Ignore if a required service is missed. -v, --verbose Provide information on what is being done. -p , --path Path to replace /etc/init.d. -o , --override Path to replace /etc/insserv/overrides. -c , --config Path to config file. -n, --dryrun Do not change the system, only talk about it. -d, --default Use default runlevels a defined in the scriptsusage: %s [[-r] init_script|init_directory] ^(\$[a-z0-9_-]+)([[:blank:]]*[=:][[:blank:]]*|[[:blank:]]+)([[:print:]]*)^(<[a-z0-9_-]+>)([[:blank:]]*[=:][[:blank:]]*|[[:blank:]]+)([[:print:]]*)^#[[:blank:]]*provides:[[:blank:]]*([[:print:]]*)^#[[:blank:]]*required[-_]+start:[[:blank:]]*([[:print:]]*)^#[[:blank:]]*required[-_]+stop:[[:blank:]]*([[:print:]]*)^#[[:blank:]]*(x[-_]+[a-z0-9_-]*)?should[-_]+start:[[:blank:]]*([[:print:]]*)^#[[:blank:]]*(x[-_]+[a-z0-9_-]*)?should[-_]+stop:[[:blank:]]*([[:print:]]*)^#[[:blank:]]*(x[-_]+[a-z0-9_-]*)?start[-_]+before:[[:blank:]]*([[:print:]]*)^#[[:blank:]]*(x[-_]+[a-z0-9_-]*)?stop[-_]+after:[[:blank:]]*([[:print:]]*)^#[[:blank:]]*default[-_]+start:[[:blank:]]*([[:print:]]*)^#[[:blank:]]*default[-_]+stop:[[:blank:]]*([[:print:]]*)^#[[:blank:]]*description:[[:blank:]]*([[:print:]]*)^#[[:blank:]]*(x[-_]+[a-z0-9_-]*)?interactive:[[:blank:]]*([[:print:]]*)warning: script is corrupt or invalid: %s/%s%s script %s provides system facility %s, skipped! script %s provides facility %s with comment sign, skipped! warning: script '%s' missing LSB tags and overrides warning: script '%s' missing LSB tags script %s is not an executable regular file, skipped! script %s is a symlink to another script, skipped! script name %s is not valid, skipped! script %s: service %s already provided! Service %s has to be enabled to start service %s warning: current start runlevel(s) (%s) of script `%s' overwrites defaults (%s). warning: current start runlevel(s) (%s) of script `%s' overwrites defaults (empty). warning: current stop runlevel(s) (%s) of script `%s' overwrites defaults (%s). warning: current stop runlevel(s) (%s) of script `%s' overwrites defaults (empty). Default-Start undefined, assuming empty start runlevel(s) for script `%s' Default-Stop undefined, assuming empty stop runlevel(s) for script `%s' exiting now without changing boot order! Maximum of %u in ordering reached can not symlink(%s, %s%s): %s dryrun, not creating .depend.boot, .depend.start, and .depend.stop R@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@R@R@P@R@P@ R@P@P@P@P@P@Q@Q@@Q@P@4Q@P@P@Q@ Q@}@w@0@1@2@3@4@ 5@@6@SstoppedstartedThere is a loop between service %s and %s if %s There is a loop at service %s if %s Max recursions depth %d for %s reached System facilities not fully expanded, see %s! Max recursions depth %d reached Stopping %s depends on %s and therefore on system facility `$all' which can not be true! Starting %s depends on %s and therefore on system facility `$all' which can not be true! loop involving service %s at depth %d ;18XHXXXhX8ZZ8x[P\hH\x\\]]h_c@xfhhijkkHn@vx؋ 8P8hx8@p(H0`x@XzRx V4xVLpVdhVAH$| XAC SXG YGY&DBY&DBYWAB Z&DB48ZG4LZBBCB B(CA0A8CDP$H\;AH EEJJ$``AC IEF4cKBCBB CE(A0A8G"E$  e*AFFGC4(fAKCD0TfqLBlgD0$gfAC L4jBLB B(A0A8CI4xrBDB B(A0A8GA^@LL!U$<MZPK$d؆EAN OCph `y6}MN0E$$IBCAA G,L BCBCA A(D0G,|p_BCBA A(D0G,$BCBCA A(D0G4BCBB B(A0A8D\HMK4,0!BCBCB B(CA0CA8D@Gd(AG|CN K,BHBA CA(D@L,BCBA A(CF0,+BBA A(D0G4DBBB B(A0CA8CDP,|BBA A(CD@$Q_@F @ @`@o@ @@  `H@x@` o(@oo@`N@^@n@~@@@@@@@@@@@.@>@N@^@n@~@@@@@@@@@@@.@>@N@^@n@~@@@@@@@@@@@.@>@N@^@n@~@@@@@@@@@@@.@>@N@^@n@#@9@vA@cH@nO@dW@r^@fd@pi@o-@ur@hp`p````````.shstrtab.interp.note.ABI-tag.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.ctors.dtors.jcr.dynamic.got.got.plt.data.bss @@ !<@<$8`@`T4o@P> @F @ No@[o(@(Pjx@x`t@H ~ @ y8@8@@x@ @  8@8@``````0` `X @etc/bash_completion.d/insserv000066600000001340150770503250012331 0ustar00# insserv(8) completion # # Copyright (c) 2009 Kel Modderman # have insserv && _insserv() { local cur prev sysvdir services options cur=`_get_cword` prev=${COMP_WORDS[COMP_CWORD-1]} [ -d /etc/rc.d/init.d ] && sysvdir=/etc/rc.d/init.d \ || sysvdir=/etc/init.d services=( $(echo $sysvdir/!(README*|*.dpkg*|*.rpm@(orig|new|save))) ) services=( ${services[@]#$sysvdir/} ) options=( -c --config -d -f -n -o --override -p --path -r -v ) case "$prev" in -c|--config) _filedir ;; -o|--override|-p|--path) _filedir -d ;; *) COMPREPLY=( $( compgen -W '${options[@]} ${services[@]}' -- \ $cur ) ) ;; esac return 0 } && complete -F _insserv insserv check-archive-initd-scripts000066600000021415150771660400011772 0ustar00#!/usr/bin/perl # # Check the consistency of all init.d scripts in the archive. Run # this on bellini.debian.org. use warnings; use strict; use File::Basename; my $warn = 1; my $basedir = "/org/lintian.debian.org/laboratory/binary"; my @scripts = @ARGV; @scripts = <$basedir/*/init.d/*> unless (@scripts); my %scriptinfo; my %provides; my @virts = qw($local_fs $remote_fs $syslog $time $named $portmap $network $all $mail-transport-agent $x-font-server $null $x-display-manager ); my @harddepheaders = qw(required-start required-stop); my @softdepheaders = qw(should-start should-stop x-start-before x-stop-after); my $lsbheaders = "Provides|Required-Start|Required-Stop|Default-Start|Default-Stop"; my $optheaders = "x-start-before|x-stop-after|should-start|should-stop"; for my $virt (@virts) { $provides{$virt} = ['insserv/etc/insserv.conf']; } # Ignore obsolete scripts, as these are unlikely to cause problems. for my $old (qw(glibc evms raid2 ldm sdm)) { $provides{$old} = ['obsolete']; } # First pass to load the database for my $initdscript (@scripts) { next if $initdscript =~ m%/rc|/rcS|/README%; my %lsbinfo = parse_lsb_header($initdscript); $scriptinfo{$initdscript} = \%lsbinfo; next unless ($lsbinfo{'found'}); my %checked; for my $provide (split(/[ ,\t]+/, $lsbinfo{provides})) { if (exists $provides{$provide}) { push(@{$provides{$provide}}, $initdscript) } else { $provides{$provide} = [$initdscript]; } $checked{$provide} = 1; } } for my $provide (sort keys %provides) { if (1 < scalar @{$provides{$provide}}) { my %script; map { $script{basename($_)} = 1; } @{$provides{$provide}}; if (1 < scalar keys %script) { error(sprintf("scripts %s provide duplicate '%s'", join(",", short_name(@{$provides{$provide}})), $provide)); } } } # Second pass, to see which dependencies are missing for my $initdscript (@scripts) { next unless ($scriptinfo{$initdscript}->{'found'}); my $short = short_name($initdscript); my %checked; my @hardmissing = (); for my $header (@harddepheaders) { my $list = $scriptinfo{$initdscript}->{$header}; next unless defined $list; for my $facility (split(/[ ,\t]+/, $list)) { next if exists $checked{$facility}; $checked{$facility} = 1; push(@hardmissing, $facility) unless exists $provides{$facility}; } } error("script $short depend on non-existing provides: " . join(" ", @hardmissing)) if (@hardmissing); my @softmissing = (); for my $header (@softdepheaders) { my $list = $scriptinfo{$initdscript}->{$header}; next unless defined $list; for my $facility (split(/[ ,\t]+/, $list)) { next if exists $checked{$facility}; $checked{$facility} = 1; push(@softmissing, $facility) unless exists $provides{$facility}; } } warning("script $short relate to non-existing provides: " . join(" ", @softmissing)) if (@softmissing); if (exists $checked{'$syslog'} && $scriptinfo{$initdscript}->{'default-start'} =~ m/s/i) { error("script $short depend on \$syslog and start from rcS.d/"); } if (!exists $checked{'$remote_fs'} && !exists $checked{'$syslog'} && $scriptinfo{$initdscript}->{'need_remote_fs'} && $scriptinfo{$initdscript}->{'default-start'} =~ m/s/i) { warning("script $short possibly missing dependency on \$remote_fs"); } elsif (!exists $checked{'$local_fs'} && !exists $checked{'$remote_fs'} && !exists $checked{'$syslog'} && $scriptinfo{$initdscript}->{'need_local_fs'} && $scriptinfo{$initdscript}->{'default-start'} =~ m/s/i) { warning("script $short possibly missing dependency on \$local_fs"); } if (!exists $checked{'$local_fs'} && $scriptinfo{$initdscript}->{'need_syslog'}) { warning("script $short possibly missing dependency on \$syslog"); } my %provided; for my $provide (split(/[ ,\t]+/, $scriptinfo{$initdscript}->{provides})) { $provided{$provide} = 1; if ($provide =~ m/\$/) { error("script $short provide virtual facility $provide"); } } my $basename = basename($initdscript, ".sh"); info("script $short does not provide its own name") unless exists $provided{$basename}; # Detect common problems with runlevel settings. my @startrl = sort split(/\s+/, lc($scriptinfo{$initdscript}->{'default-start'})); my @stoprl = sort split(/\s+/, lc($scriptinfo{$initdscript}->{'default-stop'})); unless ( @startrl || @stoprl) { error("script $short do not start or stop in any runlevels"); } # Scripts starting in rcS.d/ normally do not stop or only stop # during hald and shutdown. elsif ((array_equal(['s'], \@startrl) && array_equal([], \@stoprl)) || ( array_equal(['s'], \@startrl) && array_equal(['0','6'], \@stoprl))) { # OK } else { # Most scripts either start in rcS.d, or in runlevels 2-5 if (!array_equal(['2', '3', '4', '5'], \@startrl) && !array_equal(['s'], \@startrl) && (!array_equal([], \@startrl) && @stoprl)) { # Some obvious errors (runlevels 2-5 are equivalent in Debian) if (array_equal(['3', '5'], \@startrl) || array_equal(['3', '4', '5'], \@startrl)) { error("script $short have inconsistent start runlevels: ", join(" ", @startrl)); } else { warning("script $short does not start in the usual runlevels: ", join(" ", @startrl)); } } # And most scripts stop in runlevel (1) runlevels (0, 1, 6), # only starts or only stops in (0) or (6). if (!array_equal(['0', '1', '6'], \@stoprl) && !array_equal(['1'], \@stoprl) && !array_equal(['0', '6'], \@stoprl) && !(array_equal(['0'], \@stoprl) && !@startrl) && !(array_equal(['6'], \@stoprl) && !@startrl) && !(array_equal([], \@stoprl) && @startrl)) { warning("script $short does not stop in the usual runlevels: ", join(" ", @stoprl)); } } } exit 0; sub parse_lsb_header { my $initdscript = shift; my $short = short_name($initdscript); my %lsbinfo; unless (open(INIT, "<", $initdscript)) { error("script $short is unreadable"); return (); } my $inheader = 0; while () { # print; chomp; if (m/^\#\#\# BEGIN INIT INFO\s*$/) { $lsbinfo{'found'} = 1; $inheader = 1; } $inheader = 0 if (m/\#\#\# END INIT INFO$/); if ($inheader && m/^\# ($lsbheaders|$optheaders):\s*(\S?.*)$/i) { # print "$1\n"; $lsbinfo{lc($1)} = $2; } s/\#.*$//; # Remove comments $lsbinfo{'need_remote_fs'} = 1 if m%/usr/s?bin/%; $lsbinfo{'need_local_fs'} = 1 if m%/var/%; # Detect the use of tools resting in /usr/ $lsbinfo{'need_remote_fs'} = 1 if m%awk%; $lsbinfo{'need_remote_fs'} = 1 if m%which%; } close(INIT); # When running on bellini.debian.org, check if $syslog is needed my $objdumpinfo = dirname($initdscript) . "/../objdump-info"; if ( -f $objdumpinfo) { print "Checking for syslog symbol\n"; if (open(OBJDUMP, "<", $objdumpinfo)) { while () { $lsbinfo{'need_syslog'} = 1 if /GLIBC.* syslog/; } close OBJDUMP; } } # Check that all the required headers are present if (!$lsbinfo{'found'}) { error("script $short is missing LSB header"); } else { for my $key (split(/\|/, lc($lsbheaders))) { if (!exists $lsbinfo{$key}) { error("script $short missing LSB keyword '$key'"); } } } return %lsbinfo } sub short_name { my @scripts; for my $script ( @_ ) { my $copy = $script; $copy =~ s%$basedir/%%g; push @scripts, $copy; } if (wantarray) { return @scripts; } else { return $scripts[0]; } } sub array_equal { my ($a1, $a2) = @_; return 0 if (scalar @{$a1} != scalar @{$a2}); my $i = 0; while ($i < scalar @{$a1}) { return 0 if $a1->[$i] ne $a2->[$i]; $i++; } return 1; } sub info { print "info: @_\n"; } sub warning { print "warning: @_\n" if $warn; } sub error { print "error: @_\n"; } make-testsuite000066600000001317150771660400007447 0ustar00#!/bin/sh # # Extract key information from the current to try to generate a test # suite script to demonstrate detected bugs. echo 'set +C' echo "cat <<'EOF' > \$insconf" grep -v '#' /etc/insserv.conf |grep -v '^$' echo "EOF" echo 'set -C' echo for f in /etc/init.d/*; do name=$(basename $f) case $name in README|rc|rcS|skeleton) ;; *) echo "addscript $name <<'EOF'" sed -n -r '/^### BEGIN INIT INFO/, /END INIT INFO/p' < $f echo "EOF" echo ;; esac done echo 'cd $tmpdir/etc' echo 'mkdir rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d rcS.d' cd /etc for f in rc?.d/*; do case $f in */README) ;; *) echo ln -s $(readlink $f) $f ;; esac done echo echo list_rclinks overrides/hotplug-net000066600000000276150771660400010756 0ustar00### BEGIN INIT INFO # Provides: hotplug-net # Required-Start: $local_fs ifupdown # Required-Stop: $local_fs # Default-Start: S # Default-Stop: 0 6 ### END INIT INFO overrides/hotplug000066600000000311150771660400010160 0ustar00### BEGIN INIT INFO # Provides: hotplug # Required-Start: mountdevsubfs checkroot $local_fs # Required-Stop: $local_fs # Default-Start: S # Default-Stop: 0 6 ### END INIT INFO overrides/devfsd000066600000000335150771660400007757 0ustar00### BEGIN INIT INFO # Provides: devfsd # Required-Start: mountdevsubfs # Required-Stop: reboot # Default-Start: S 1 2 3 4 5 # Default-Stop: 0 6 ### END INIT INFO # Reported to BTS as bug #324671 overrides/modutils000066600000000270150771660400010342 0ustar00### BEGIN INIT INFO # Provides: modutils # Required-Start: checkroot # Required-Stop: # Default-Start: S # Default-Stop: ### END INIT INFO # Reported to BTS as #335311 overrides/initrd-tools.sh000066600000000244150771660400011543 0ustar00### BEGIN INIT INFO # Provides: initrd-tools # Required-Start: mountdevsubfs # Required-Stop: # Default-Start: S # Default-Stop: ### END INIT INFO seq-changes000066600000002430150771660400006676 0ustar00#! /bin/bash # Script from Frans Pop set -e if [ -z "$1" ]; then echo "Usage: insserv-seq-changes /var/lib/insserv/" exit 1 fi oldtar="$(tar tzf $1)" for i in S $(seq 0 6); do echo "Runlevel $i" new="$(cd /etc/rc$i.d; ls -1 [KS]* | sort | nl)" old="$(echo "$oldtar" | grep "^rc$i.d/[KS]" | cut -d/ -f2 | sort | nl)" case $i in S|0|6) old="$(echo "$old" | sed -r "s/[KS][0-9]+//")" new="$(echo "$new" | sed -r "s/[KS][0-9]+//")" ;; *) old="$(echo "$old" | sed -r "s/([KS])[0-9]+/\1_/")" new="$(echo "$new" | sed -r "s/([KS])[0-9]+/\1_/")" ;; esac echo "$new" | while read num cmd; do oldnum=$(echo "$old" | grep "[[:space:]]$cmd$" | awk '{print $1}') if [ "$oldnum" ]; then diff=$(($num - $oldnum)) else oldnum="---" diff="" fi if [ ${#cmd} -ge 16 ]; then echo -e "$cmd\t$num\t$oldnum\t$diff" elif [ ${#cmd} -ge 8 ]; then echo -e "$cmd\t\t$num\t$oldnum\t$diff" else echo -e "$cmd\t\t\t$num\t$oldnum\t$diff" fi done echo "$old" | while read num cmd; do if ! echo "$new" | grep -q "[[:space:]]$cmd$"; then if [ ${#cmd} -ge 16 ]; then echo -e "$cmd\t---\t$oldnum" elif [ ${#cmd} -ge 8 ]; then echo -e "$cmd\t\t---\t$oldnum" else echo -e "$cmd\t\t\t---\t$oldnum" fi fi done echo done check-initd-order000066600000032404150771660400007777 0ustar00#!/usr/bin/perl # # Author: Petter Reinholdtsen # Date: 2005-08-21 # # Read LSM init.d headers in SysV init.d scripts, and verify correct # start order for all runlevels. It can also provide a graph. # # To generate a graph, run it like this # # check-initd-order -g > initorder.dotty && dotty initorder.dotty use strict; use warnings; my $rcbase = "/etc"; my $overridepath = "/usr/share/insserv/overrides"; my $hostoverridepath = "/etc/insserv/overrides"; my $debug = 0; my $errors = 0; my %rcmap = ( 'B' => 'rc.boot', 'S' => 'rcS.d', '1' => 'rc1.d', '2' => 'rc2.d', '3' => 'rc3.d', '4' => 'rc4.d', '5' => 'rc5.d', '6' => 'rc6.d', ); my %sysmap; my %provideslist; my %scriptorder; my %opts; # Used to draw graphs my %gotrevdeps; my %allprovides; while($#ARGV >= 0 && ($_ = $ARGV[0]) =~ /^-/) { shift @ARGV; if (/^-([cdgko])$/) { $opts{$1}++; next } if (/^-b$/) { $rcbase = shift; next } if (/^-h|--help$/) { &usage; } &usage("unknown option"); } load_sysmap("$rcbase/insserv.conf"); $debug = $opts{'d'}; my $useoverrides = $opts{'o'} ? 0 : 1; if ($opts{'g'}) { graph_generate(); exit 0; } check_bootorder(); exit $errors > 0 ? 1 : 0; sub usage { print STDERR "check-initd-order: error: @_\n" if ($#_ >= 0); print STDERR <) { chomp; s/\#.*$//; next if m/^\s*$/; if (m/^(\$\S+)\s+(\S.*\S*)\S*$/) { my $virt = $1; for my $dep (split(/\s+/, $2)) { $dep =~ s/^\+//g; $sysmap{$dep} = $virt; } } } close(CONF); } sub graph_addnode { my ($isstopseq, $lsbinforef) = @_; my %lsbinfo = %{$lsbinforef}; unless ($lsbinfo{'provides'}) { error "File ". $lsbinfo{'file'} . " is missing the provides header\n"; $lsbinfo{'provides'} = $lsbinfo{'file'}; $lsbinfo{'provides'} =~ s/^[SK]\d{2}//; } my $key = $opts{'k'} ? 'stop' : 'start'; my $revkey = $opts{'k'} ? 'stop-after' : 'start-before'; my @provides = split(/\s+/, $lsbinfo{'provides'}); for my $name (@provides) { if (exists $sysmap{$name}) { graph_addnode($isstopseq, {'provides' => $sysmap{$name}, "required-$key" => $name}); } } if (1 < @provides) { my @providescopy = @provides; my $lastprovide = shift @providescopy; for my $provide (@providescopy) { graph_addnode($isstopseq, {'provides' => $lastprovide, "required-$key" => $provide}); graph_addnode($isstopseq, {'provides' => $provide, "required-$key" => $lastprovide}); } } for my $provide (@provides) { my $provideesc = $provide; $provideesc =~ s/"/\\"/g; my %deps = ( "required-$key" => 'blue', "should-$key" => 'springgreen', "$revkey" => 'yellow' ); for $key (keys %deps) { if (exists $lsbinfo{$key} && $lsbinfo{$key}) { my @depends = split(/\s+/, $lsbinfo{$key}); my $dependonall = 0; for my $pkg (@depends) { $dependonall = 1 if ($pkg eq '$all'); } for my $pkg (@depends) { my $pkgesc = $pkg; $pkgesc =~ s/"/\\"/g; my $color = $deps{$key}; if ($revkey eq $key) { print "\"$provideesc\" -> \"$pkgesc\"[color=$color] ;\n"; $gotrevdeps{$pkg} = 1 unless $dependonall; } else { print "\"$pkgesc\" -> \"$provideesc\"[color=$color] ;\n"; $gotrevdeps{$provide} = 1 unless $dependonall; } } } } print "\"$provideesc\" [shape=box];\n" unless $allprovides{$provide}; $allprovides{$provide} = 1; } } sub graph_generate_mode { my ($isstopseq) = @_; my @dirs = $isstopseq ? $rcmap{6} : ($rcmap{S}, $rcmap{2}); for my $rcdir (@dirs) { chdir "$rcbase/$rcdir/."; my @scripts = $isstopseq ? : ; for my $script (@scripts) { my $lsbinforef = load_lsb_tags("$rcbase/$rcdir/$script", $useoverrides); unless (defined $lsbinforef) { error "LSB header missing in $rcbase/$rcdir/$script\n"; $script =~ s/^[SK]\d{2}//; $lsbinforef = {'provides' => $script, 'required-start' => '$remote_fs $syslog', 'required-stop' => '$remote_fs $syslog'}; } graph_addnode($isstopseq, $lsbinforef); } } # Mark all packages without any reverse dependencies as depending # on $all for my $provide (keys %allprovides) { next unless (exists $gotrevdeps{$provide}); my $lsbinforef = {'provides' => '$all', 'required-start' => "$provide", 'required-stop' => "$provide"}; graph_addnode($isstopseq, $lsbinforef); } } sub graph_generate { print "# Generating graph\n"; print < $bootorder)) { my $deporder; if (exists $scriptorder{$tag}{$dep}) { $deporder = $scriptorder{$tag}{$dep} } else { $deporder = exists $provideslist{$dep} ? $provideslist{$dep} : "?"; } error(sprintf("Incorrect order %s@%s %s %s%s\n", $dep, $deporder, 'S' eq $tag ? '>' : '<', $name, $order)); } } } } } sub check_bootorder { my $bootorder = 0; my @dirs = $opts{'k'} ? $rcmap{6} : ($rcmap{S}, $rcmap{2}); my @scripts; for my $rcdir (@dirs) { push(@scripts, $opts{'k'} ? <$rcbase/$rcdir/K*> : <$rcbase/$rcdir/S*>); } if ($opts{'k'}) { $scriptorder{'K'}{'$all'} = 1; } else { # Calculate script order for the script before the scripts # with the last boot sequence number. my $tmpbootorder = 0; my $allorder = 0; my $maxorder = 0; my $maxbootorder = 0; for my $scriptpath (@scripts) { my $script = $scriptpath; $script =~ s%^.*/([^/]+)$%$1%; $tmpbootorder++; my ($tag, $order, $name) = $script =~ m/^(.)(\d{2})(.+)$/; if ($order > $maxorder) { $allorder = $maxbootorder; $maxbootorder = $tmpbootorder; $maxorder = $order; } my $lsbinforef = load_lsb_tags($scriptpath, $useoverrides); if (exists $lsbinforef->{'provides'} && $lsbinforef->{'provides'}) { for my $provide (split(/\s+/, $lsbinforef->{'provides'})) { $provideslist{$provide} = $order; } } else { $provideslist{$script} = $order; } } $scriptorder{'S'}{'$all'} = $allorder; } for my $scriptpath (@scripts) { my $script = $scriptpath; $script =~ s%^.*/([^/]+)$%$1%; $bootorder++; my ($tag, $order, $name) = $script =~ m/^(.)(\d{2})(.+)$/; $scriptorder{$tag}{$name} = $bootorder; $scriptorder{$tag}{$sysmap{$name}} = $bootorder if (exists $sysmap{$name}); # print "$script\n"; # print "T: $tag O: $order N: $name\n"; my $lsbinforef = load_lsb_tags($scriptpath, $useoverrides); unless (defined $lsbinforef) { error "LSB header missing in $scriptpath\n"; next; } my %lsbinfo = %{$lsbinforef}; if (exists $lsbinfo{'provides'} && $lsbinfo{'provides'}) { for my $provide (split(/\s+/, $lsbinfo{'provides'})) { $scriptorder{$tag}{$provide} = $bootorder; $scriptorder{$tag}{$sysmap{$provide}} = $bootorder if (exists $sysmap{$provide}); } } else { error "no LSB header provides value in script $scriptpath\n"; } if ('S' eq $tag) { check_deps($lsbinforef, $tag, $order, $bootorder, 'required-start', 1); check_deps($lsbinforef, $tag, $order, $bootorder, 'should-start', 0); # check_deps($lsbinforef, 'K', $order, $bootorder, 'start-before', 0); } if ('K' eq $tag) { check_deps($lsbinforef, $tag, $order, $bootorder, 'required-stop', 1); check_deps($lsbinforef, $tag, $order, $bootorder, 'should-stop', 0); # check_deps($lsbinforef, 'S', $order, $bootorder, 'stop-after', 0); } } } sub load_lsb_tags { my ($initfile, $useoverrides) = @_; my $lsbinforef = load_lsb_tags_from_file($initfile); if ($useoverrides) { # Try override file $initfile = readlink($initfile) if (-l $initfile); my $basename = basename($initfile); # Only read shipped override file when initscript does not # contain LSB tags. if (! defined($lsbinforef) && -f "$overridepath/$basename") { print STDERR "Override $overridepath/$basename\n" if $debug; $lsbinforef = load_lsb_tags_from_file("$overridepath/$basename"); } # Always read the host override in $hostoverridepath. if (-f "$hostoverridepath/$basename") { print STDERR "Override $hostoverridepath/$basename\n" if $debug; $lsbinforef = load_lsb_tags_from_file("$hostoverridepath/$basename"); } } return $lsbinforef; } sub load_lsb_tags_from_file { my ($file) = @_; print STDERR "Loading $file\n" if $debug; ### BEGIN INIT INFO # Provides: xdebconfigurator # Required-Start: $syslog # Required-Stop: $syslog # Default-Start: 2 3 4 5 # Default-Stop: 1 6 # Short-Description: Genererate xfree86 configuration at boot time # Description: Preseed X configuration and use dexconf to # genereate a new configuration file. ### END INIT INFO unless (open(FILE, "<$file")) { warn "error: Unable to read $file"; return; } my $found = 0; my ($provides, $requiredstart, $requiredstop, $shouldstart, $shouldstop); my ($startbefore, $stopafter); while () { chomp; $found = 1 if (m/\#\#\# BEGIN INIT INFO/); next unless $found; last if (m/\#\#\# END INIT INFO/); $provides = $1 if (m/^\# provides:\s+(\S*.*\S+)\s*$/i); $requiredstart = $1 if (m/^\# required-start:\s+(\S*.*\S+)\s*$/i); $requiredstop = $1 if (m/^\# required-stop:\s+(\S*.*\S+)\s*$/i); $shouldstart = $1 if (m/^\# should-start:\s+(\S*.*\S+)\s*$/i); $shouldstop = $1 if (m/^\# should-stop:\s+(\S*.*\S+)\s*$/i); $startbefore = $1 if (m/^\# X-Start-Before:\s+(\S*.*\S+)\s*$/i); $stopafter = $1 if (m/^\# X-Stop-After:\s+(\S*.*\S+)\s*$/i); } close(FILE); return undef unless ($found); # print "Provides: $provides\n" if $provides; return { 'provides' => $provides, 'required-start' => $requiredstart, 'required-stop' => $requiredstop, 'should-start' => $shouldstart, 'should-stop' => $shouldstop, 'start-before' => $startbefore, 'stop-after' => $stopafter, 'file' => $file, }; }