# PaCkAgE DaTaStReAm CSWpkgutil 1 707 # end of header 070701000004eb000081a40000418900000065000000014a36513e00000142000001380000012700000000000000000000001300000000CSWpkgutil/pkginfoPKG=CSWpkgutil NAME=pkgutil - Installs Solaris packages easily ARCH=sparc VERSION=1.6.1,REV=2009.06.15 CATEGORY=application VENDOR=http://pkgutil.wikidot.com/ packaged for CSW by Peter Bonivart EMAIL=bonivart@blastwave.org PSTAMP=bonivart@ra-r2417UNCOMMITTED-20090615134844 CLASSES=none HOTLINE=http://wiki.blastwave.org/ 070701000004ea000081a40000418900000065000000014a36513e00000655000001380000012700000000000000000000001200000000CSWpkgutil/pkgmap: 1 707 1 d none /etc/opt/csw 0755 root bin 1 f none /etc/opt/csw/pkgutil.conf.CSW 0644 root bin 1486 65523 1245073723 1 d none /opt/csw 0755 root bin 1 d none /opt/csw/bin 0755 root bin 1 f none /opt/csw/bin/bldcat 0755 root bin 5870 65067 1245073721 1 f none /opt/csw/bin/chkcat 0755 root bin 10475 14816 1245073721 1 f none /opt/csw/bin/pkgutil 0755 root bin 42390 50198 1245073721 1 d none /opt/csw/etc 0755 root bin 1 f none /opt/csw/etc/pkgutil.conf.CSW 0644 root bin 1486 65523 1245073721 1 d none /opt/csw/libexec 0755 root bin 1 d none /opt/csw/libexec/pkgutil 0755 root bin 1 f none /opt/csw/libexec/pkgutil/wget 0755 root bin 224672 8936 1245073721 1 d none /opt/csw/share 0755 root bin 1 d none /opt/csw/share/doc 0755 root bin 1 d none /opt/csw/share/doc/pkgutil 0755 root bin 1 f none /opt/csw/share/doc/pkgutil/license 0644 root bin 18007 29780 1245073721 1 f none /opt/csw/share/doc/pkgutil/readme 0644 root bin 5913 45567 1245073721 1 d none /opt/csw/share/man 0755 root bin 1 d none /opt/csw/share/man/man1 0755 root bin 1 f none /opt/csw/share/man/man1/bldcat.1 0644 root bin 5442 14159 1245073722 1 f none /opt/csw/share/man/man1/chkcat.1 0644 root bin 6274 13573 1245073723 1 f none /opt/csw/share/man/man1/pkgutil.1 0644 root bin 13136 20240 1245073722 1 d none /var/opt/csw 0755 root bin 1 d none /var/opt/csw/pkgutil 0755 root bin 1 f none /var/opt/csw/pkgutil/admin.CSW 0644 root bin 167 16130 1245073721 1 d none /var/opt/csw/pkgutil/packages 0755 root bin 1 i copyright 73 6713 1245073724 1 i pkginfo 322 26863 1245073726 1 i postinstall 623 50246 1236963787 1 i preremove 577 46271 1236963828 07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000b00000000TRAILER!!!070701000004eb000081a40000418900000065000000014a36513e00000142000001380000012700000000000000000000000800000000pkginfoPKG=CSWpkgutil NAME=pkgutil - Installs Solaris packages easily ARCH=sparc VERSION=1.6.1,REV=2009.06.15 CATEGORY=application VENDOR=http://pkgutil.wikidot.com/ packaged for CSW by Peter Bonivart EMAIL=bonivart@blastwave.org PSTAMP=bonivart@ra-r2417UNCOMMITTED-20090615134844 CLASSES=none HOTLINE=http://wiki.blastwave.org/ 070701000004ea000081a40000418900000065000000014a36513e00000655000001380000012700000000000000000000000700000000pkgmap: 1 707 1 d none /etc/opt/csw 0755 root bin 1 f none /etc/opt/csw/pkgutil.conf.CSW 0644 root bin 1486 65523 1245073723 1 d none /opt/csw 0755 root bin 1 d none /opt/csw/bin 0755 root bin 1 f none /opt/csw/bin/bldcat 0755 root bin 5870 65067 1245073721 1 f none /opt/csw/bin/chkcat 0755 root bin 10475 14816 1245073721 1 f none /opt/csw/bin/pkgutil 0755 root bin 42390 50198 1245073721 1 d none /opt/csw/etc 0755 root bin 1 f none /opt/csw/etc/pkgutil.conf.CSW 0644 root bin 1486 65523 1245073721 1 d none /opt/csw/libexec 0755 root bin 1 d none /opt/csw/libexec/pkgutil 0755 root bin 1 f none /opt/csw/libexec/pkgutil/wget 0755 root bin 224672 8936 1245073721 1 d none /opt/csw/share 0755 root bin 1 d none /opt/csw/share/doc 0755 root bin 1 d none /opt/csw/share/doc/pkgutil 0755 root bin 1 f none /opt/csw/share/doc/pkgutil/license 0644 root bin 18007 29780 1245073721 1 f none /opt/csw/share/doc/pkgutil/readme 0644 root bin 5913 45567 1245073721 1 d none /opt/csw/share/man 0755 root bin 1 d none /opt/csw/share/man/man1 0755 root bin 1 f none /opt/csw/share/man/man1/bldcat.1 0644 root bin 5442 14159 1245073722 1 f none /opt/csw/share/man/man1/chkcat.1 0644 root bin 6274 13573 1245073723 1 f none /opt/csw/share/man/man1/pkgutil.1 0644 root bin 13136 20240 1245073722 1 d none /var/opt/csw 0755 root bin 1 d none /var/opt/csw/pkgutil 0755 root bin 1 f none /var/opt/csw/pkgutil/admin.CSW 0644 root bin 167 16130 1245073721 1 d none /var/opt/csw/pkgutil/packages 0755 root bin 1 i copyright 73 6713 1245073724 1 i pkginfo 322 26863 1245073726 1 i postinstall 623 50246 1236963787 1 i preremove 577 46271 1236963828 0707010000050b000041ed0000418900000065000000024a36513f00000000000001380000012700000000000000000000000800000000install0707010000050e000081a400004189000000650000000149ba91f400000241000001380000012700000000000000000000001200000000install/preremove#!/bin/sh ETC1=$PKG_INSTALL_ROOT/opt/csw/etc ETC2=$PKG_INSTALL_ROOT/etc/opt/csw VAR=$PKG_INSTALL_ROOT/var/opt/csw/pkgutil echo if [ "`cmp "$ETC1/pkgutil.conf" "$ETC1/pkgutil.conf.CSW"`" ]; then echo "pkgutil.conf modified, will not remove it." else /bin/rm $ETC1/pkgutil.conf fi if [ "`cmp "$ETC2/pkgutil.conf" "$ETC2/pkgutil.conf.CSW"`" ]; then echo "pkgutil.conf modified, will not remove it." else /bin/rm $ETC2/pkgutil.conf fi if [ "`cmp "$VAR/admin" "$VAR/admin.CSW"`" ]; then echo "admin modified, will not remove it." else /bin/rm $VAR/admin fi exit 0 0707010000050d000081a400004189000000650000000149ba91cb0000026f000001380000012700000000000000000000001400000000install/postinstall#!/bin/sh ETC1=$PKG_INSTALL_ROOT/opt/csw/etc ETC2=$PKG_INSTALL_ROOT/etc/opt/csw VAR=$PKG_INSTALL_ROOT/var/opt/csw/pkgutil echo if [ ! -f "$ETC1/pkgutil.conf" ]; then cp -p $ETC1/pkgutil.conf.CSW $ETC1/pkgutil.conf else echo "pkgutil.conf already exists, will not copy pkgutil.conf.CSW to it." fi if [ ! -f "$ETC2/pkgutil.conf" ]; then cp -p $ETC2/pkgutil.conf.CSW $ETC2/pkgutil.conf else echo "pkgutil.conf already exists, will not copy pkgutil.conf.CSW to it." fi if [ ! -f "$VAR/admin" ]; then cp -p $VAR/admin.CSW $VAR/admin else echo "admin already exists, will not copy admin.CSW to it." fi exit 0 0707010000050c000081a40000418900000065000000014a36513c00000049000001380000012700000000000000000000001200000000install/copyright Please see /opt/csw/share/doc/pkgutil/license for license information. 070701000004ec000041ed0000418900000065000000054a36513f00000000000001380000012700000000000000000000000500000000root070701000004ed000041ed0000418900000065000000034a36513e00000000000001380000012700000000000000000000000900000000root/etc070701000004ee000041ed0000418900000065000000034a36513e00000000000001380000012700000000000000000000000d00000000root/etc/opt070701000004ef000041ed0000418900000065000000024a36513e00000000000001380000012700000000000000000000001100000000root/etc/opt/csw070701000004f0000081a40000418900000065000000014a36513b000005ce000001380000012700000000000000000000002200000000root/etc/opt/csw/pkgutil.conf.CSW# Configuration file for pkgutil # $Id: pkgutil.conf 7 2009-03-07 18:48:54Z bonivart $ # Master configuration file is placed in /opt/csw/etc. Place a pkgutil.conf # file in /etc/opt/csw if you want a local override setting-by-setting # Nothing below is mandatory to change, pkgutil will use the default values # noted below for each option unless something is uncommented # Mirror to use for downloads # See http://www.blastwave.org/mirrors.php for alternative mirrors # Default: http://blastwave.network.com/csw/unstable #mirror=http://blastwave.network.com/csw/unstable # Solaris 10: If you wish to limit pkgutil to installing packages # only to the global zone, then uncomment this line. Note that pkgrm does not # have the same option # WARNING: do not modify this unless you know what you're doing # Default: blank #pkgaddopts=-G # Flags for use with wget, e.g. "-nv" for less verbose or "-q" for quiet # WARNING: do not modify this unless you know what you're doing # Default: blank #wgetopts=-q # To enable use of gpg or md5, uncomment these # NOTE: it doesn't make sense to use md5 but not gpg so your options should be: # 1. both disabled, 2. gpg enabled, 3. both enabled # Default: false, false #use_gpg=true #use_md5=true # Support non-CSW packages. If you have your own packages that have a different # prefix that you want to use with pkgutil you must enable this otherwise # pkgutil will skip every package not prefixed by CSW # Default: false #noncsw=true 07070100000506000041ed0000418900000065000000034a36513f00000000000001380000012700000000000000000000000900000000root/var07070100000507000041ed0000418900000065000000034a36513f00000000000001380000012700000000000000000000000d00000000root/var/opt07070100000508000041ed0000418900000065000000034a36513f00000000000001380000012700000000000000000000001100000000root/var/opt/csw07070100000509000041ed0000418900000065000000024a36513f00000000000001380000012700000000000000000000001900000000root/var/opt/csw/pkgutil0707010000050a000081a40000418900000065000000014a365139000000a7000001380000012700000000000000000000002300000000root/var/opt/csw/pkgutil/admin.CSWmail= instance=overwrite partial=nocheck runlevel=nocheck idepend=nocheck rdepend=nocheck space=nocheck setuid=nocheck conflict=nocheck action=nocheck basedir=default 070701000004f1000041ed0000418900000065000000034a36513e00000000000001380000012700000000000000000000000900000000root/opt070701000004f2000041ed0000418900000065000000064a36513e00000000000001380000012700000000000000000000000d00000000root/opt/csw070701000004f7000041ed0000418900000065000000024a36513e00000000000001380000012700000000000000000000001100000000root/opt/csw/etc070701000004f8000081a40000418900000065000000014a365139000005ce000001380000012700000000000000000000002200000000root/opt/csw/etc/pkgutil.conf.CSW# Configuration file for pkgutil # $Id: pkgutil.conf 7 2009-03-07 18:48:54Z bonivart $ # Master configuration file is placed in /opt/csw/etc. Place a pkgutil.conf # file in /etc/opt/csw if you want a local override setting-by-setting # Nothing below is mandatory to change, pkgutil will use the default values # noted below for each option unless something is uncommented # Mirror to use for downloads # See http://www.blastwave.org/mirrors.php for alternative mirrors # Default: http://blastwave.network.com/csw/unstable #mirror=http://blastwave.network.com/csw/unstable # Solaris 10: If you wish to limit pkgutil to installing packages # only to the global zone, then uncomment this line. Note that pkgrm does not # have the same option # WARNING: do not modify this unless you know what you're doing # Default: blank #pkgaddopts=-G # Flags for use with wget, e.g. "-nv" for less verbose or "-q" for quiet # WARNING: do not modify this unless you know what you're doing # Default: blank #wgetopts=-q # To enable use of gpg or md5, uncomment these # NOTE: it doesn't make sense to use md5 but not gpg so your options should be: # 1. both disabled, 2. gpg enabled, 3. both enabled # Default: false, false #use_gpg=true #use_md5=true # Support non-CSW packages. If you have your own packages that have a different # prefix that you want to use with pkgutil you must enable this otherwise # pkgutil will skip every package not prefixed by CSW # Default: false #noncsw=true 070701000004f9000041ed0000418900000065000000034a36513e00000000000001380000012700000000000000000000001500000000root/opt/csw/libexec070701000004fa000041ed0000418900000065000000024a36513e00000000000001380000012700000000000000000000001d00000000root/opt/csw/libexec/pkgutil070701000004fb000081a40000418900000065000000014a36513900036da0000001380000012700000000000000000000002200000000root/opt/csw/libexec/pkgutil/wgetELF;H4ih4 (44BBDD>>tL/usr/lib/ld.so.1ol !#$%')*+,-./13567:;=>?@CDFGIKLMNOPQRTUWY[\^_`acdfgiknpsuvwx{}~    "#%&')+,-/012679;<=?CDEHIJLMNOPRSUVWYZ\]_`abdefik  "&(02489<ABEHJSVXZ]behjlmoqrtyz|  !$(*.3458:>@ABFGKQTX[^cghj  p0  .Xp 8d Dh RTY` l@t  zL \L0 @  x "H      H # 4Xh E3\  Vl@ bP p1  x~D x,   ݸL ? h   d /DL DH L -8L ) 29T G,S_0 n  }Xd X 4 g   > BT  B ;H   #X+ 6H=Ep Y{ n?Hp ŀ p, A B`l h D$ 0$  @h "((t1 : OV@ ` jh y4 ) VP x ' (\ x DX P P( -@5<CT Q< j{ $ 0TD  L DX L Ԭ D&x 2t X, P%$ 34 <EQY`_Le@( r(yC   H  x  D< DhA  /TX A V.( d8o!P uc HH<@`  < Cx (  ì '#, 3@@ @@@ @Ԑ @AȒ@O'@@Ӑ @ @@͐ @Ԑ<@A@O L@@ @P@@ @Ԑd@A@N ؀ F@Ԑt@@ F؀Ԓ@AG 'ܒ@ +' Ԁ !@@ @̱@@{ @̵Ԑ@A_@N@@i @̙@@c F؀ F F@̊ @@T F؀Ԓ@@  @ +' Ԁ "(@@8 @h,@@2 @lԐd@A@Nu@{@i<t$MF @̉ ['܄"ܐ @̂ ]ܶ5"4'"@@ /@@Ԅ /(܈ I . /(I ( *I (F@@ FF@@xF؀@@? @`* 8'F؀Ԑ @@cܐ@ܶ   TF 9GԀ 7@@? @Ȑ@? @̐ԐL@@v@MՐ\@? @˱`@?{ @˵Ԑ@@_@M@?j @˚ @@@˝Ԑ@@G@M؀ `@ˁ@?K `` H @t@?> F` F"M@@!M/3 '@ˋ@ˈ`    ?#h'77Ֆ@˫FF@?$F"ՐP@?6F@W ?#h@tL / [,  L   ]I  ./") I  2I  ]) ) FF@?F"Ւ@?FcՐ @?m@    WF ;]Հ 7V@> @Ґؒ@> @֐FՐ@?@Lސ @> @ʺ$@> @ʾFՐP@?g@LƐ`@>r @ʢd` @? @ʥFՐ@?N@LcF@ʇ@>Q F@ʀ@>J FЄ`G' E` A` FЀ" `$2`$`$@> `$@ǔ !'܀ Հ Ւ@> @OȒ@> @SՐ@>@L\܁ ` @6@> ` ]' Ւ@= @  '  T  Հ &D5Հ 7(@=Ր @,@=ϐ @ Րd@>@Lt@= @x@= @Ր@>@K@= @א@=  @= @̐ܒ@=  ? ((0' %'G@ɽՐ@>g@KƐ@ɧ @`@ɰ @>䀤Ԡ    @ɍ,@=W  Ւ8@=L @      QՀ ieՀ b  " jՀ 7H@=  @PL@= @TՐ@=@K[@= @7@= @;Ր@=o@KB@< G@-Ք@= @ Ր@=ʒT@K'@<Ӑ @G@@=z @ @< @@< @֐ @=)@J @ؐ0@< "֐ <@=E@    d   E"9 7>P@ H2@D? א @:@ @9ؐ  @1?` 2@א$@:@H, *( *@[ @=4 G@8@:Z  *@e@  @:O@@e@$ *ӐӒ@ŵ ӐӒ@ŭ ڄ`Ӓ@Ŧ ڀ`Ԓ$@ş `(Ԑ,Ԓ<@ŗ ?@@ŋ F@F@F@FՐlՒ|@}!g [@žF@źB@Ŷ @Ų@Ů @Ū@Ŧ$,,$,,,,$,,$,,,@$$,$$,$F@[&F e@c\ e@D@9  "(@c"@@2@@  `  $``7  ;<`@S`$``$`@G"``$`$`@F"``$``$``"``$`$` L"L`2L@b"Lx@-2L"L ` $`@b  Ā @]e h@p @Ď|h@טh @9@Ī "'d 'ddd@F2``$`$`& 6(@Rΐ̀ " d% @R̀"T̀P@FZ" ,`" ,@C`ԀאP@8`@FL , @ad @@P  @``@"`Ԁא@8`@F+@ d @8Ā2`Ȁ2`@\ƒ dג#\ @8o@` . @RhdȄ$' @RadȄ$ Ԁ@8@̐4 @8G@A G@הD@8:  "``$` "$` "@ 㿠-$@`&``&``&`@Zd@b^`@þF"&@@Ìl@8E&@ V " &@@@ ɐ&F&F@ G@|ה@7  @c @7ޔ@Ç`&`㾀,0 0FF0`耠 ,@>,0F@7,0  0 #`'&2&&&@E32&`&`R "9($;<@QC,@ " @_$ @V@YÐ$@쀠"D  2@ @@fx2: @  @    "   @ ` @̐@ @7F   @,@@7<   @¸h @73  {`"l "P"z W`  @˜@6b q @@)@¸ "״   ?#`'@@ @耐 ת @m@ @6 D @d@ @6ސ @@ @@? G@cה@6ΐ ג@6 ' "%  2 @: @6  "   @)8 @6  2 P""  " `" @`T@" T  XT@"  @`  2  @\@@6r  " 2 耥`"@@W  אx@6@@@$@@U@ 6  `$`  0  0 6F F,06 @",,耠 ,@,0F@6T,0  0ג@$_'㿘3Fc"m خ׬@Pb`2[`@ @`$  ?#`L L /L  `@c`А@c"c@6c`@5@`  @8L @5`&@^ @U@ @U@J``  @8  6 "㿘`$`Y ""F'$F(" $"@_@@5_ @D2 $H12."  $ ? @$2 $?G@$@ؒ@5( ?2@% 0E2 `@ $@5  $` X@@O! "2 6~$`(@ @~ )F"@@B ؂@ ` ` ` $Hd ""耠`؂@Ԃ@ "~Id@]+d`@]"@VԐ@`@  '耠#dL?@@|@`@  @4 @ @4~@'Ԃ@@y`-j $ 2"耠2 ؐ@     ؂@Ô" ""`$`@@A֐@@` ؂@@4g``@ϐ ``@ǐ㿠  @  @ @$"$`$㿠 @  @ @`2 㿠@\/ (Ѷ&`9F (  '#ز  $ `,@\#$`$"& & H`( @AX& & H`( S`H  ˀ` ($ #`H 2#`(#؀`@3   ؐ@3`  `H( `H( `H( `H  F`P@^ ,   㿠 @ @@[`777ؠؒ @F؀ؒ,@ ؒ4 @3"ؒ<@2j FؐT@3M㿘% @H2@ @ؐ`@ @ 7@ @H22H@ 3 @x -, 4 @r`@w`*`- ,@`J0&I J9,`I  ( 0I 0I 9,`I   @ @7 @3ؐ5@0 䥒@$ 7@  @H2@ @  㿈7Y >   ?#h#`0#\   @# ؐ@ Y@ؐ 7@ԐA @H2@Ð @ 㿘ؐ @ .@ 7@ @H2@ 'H"I Hцa(2I  I  I (" I   &.@ђI ( @(I  ( 0.@I ( 2@I ,      &.@@O @K &㿘/ؐ/H@C 㸒@7 7@3 @+H2@" @ 㿘@ ㍒@  7@u @H52H@ 2@ @ 㿘9@_!ؐ@ V@Ր 7@ѐ> @H3@ @ 㿘@ +@ 7@ @H52H@ 1@ @ 㿘@ @x 7@t @lH52H@c 1@\ @X 㿘ؐW @R ǒ@F 7@B @:H5@1 @ؒ@ @9䀐 &`ؒ@0&`@(  &`ؒ@ &` &`@ 㿘ؐ @ p@ 7@X @H5@ڐ @5ؒ @1 `@`@X&`@ 㿘Ő@ 5@& 7@ @&H5 @& !G$! @ &!@& @ 㿠ؒ@ N  N ҆`(8 I㿠@h    ,`L x  L s L  L  L  rw`?(`?( @,`㿠@:  H 2I " . H 2N .N  L  ", L  2L 8#`P@8 #\G@ؖT @/T #h@Z#deѮ,<#tb\@ @Kd@?2'@ڐA'J - 7Fd" l"   '"$`@/Th`'"`@/Jt`'"`@/@ `'"`@/6`"! !!'''"#pؐ@/#p  '"#p@/#pغ?#l @Ր      a`C @:  & '$`L( L $  0@耤 '/`(L (2L  ؅,@.؄ #l䀧``L`" L`L` 0(L`( 0 0yؐ@.sm`L`    (K L`(- L``( 0L`(- L`:3 L` (`-`I  ( 0I (-`I : I ( -J  ( 0J (- " ؐ@.?؀ؒ@.4 c@ ,`@t$@   ,@ؒ @#t #lr@V? #x'􀠠"tؐ@.xt(ؒ$@>Sؒ(@8"N@c @U'@(< H / ("=@-֐H8䀡 H @ ("+@-Đ`&䀡 2#IH *2("@-x #l  @-, #p䀠 2 􀠠2 #l"l@-lJpGd2h@U #d#h@ $   $ '@U $  #h@ $ @ '@ڐ' '''' $   '''̀l&'Є l''Є?''@ h @"@-8䀠"@􀠠@@@X\@\d@؝Xؒ@ G@fؖ @,Д @Xr  9 (@U0`'7F'ؒ@,ؒ@@ ج @ @ذ@ @ Fئ d@ @آ@ @` " N`P"`   ؒlД@,'?''''''''@'쀠ْ@,ْ @n J  ٢@e J H< '!'' @, '@['!' @,r  '@T| @ %  % '@Tq $@ $@Ȑ@WR@㿠N  R ,",`D"`E" ` F"`W"`F    " @,,8 L 2L Pْ@ G@oٖ @+ٔ @W{  @z@Ws@s@Wl@l@We,l)zْ@)F#ِ@+L "HL ; HH;2H;"(@:ِ$@",@S#'䀠"L@+L  '#'耠"'@+ '#'"'@+'ْ@h 2/##@+@@VْL@O##@+v@#@+kِP@+bْd@- #ِh@+V@2٬t@ ̠  @  &*@ < 8 ( ($ْ@ @ #"'l#`@+&٦  @ @O`"L O`:  L L :2 L "L  @L "L L :  L L :2 L "#@ʐ #" '`ٔ#\@*ޚ'?''''''''@#'쀠ْ@*ɐْ@ ْ@ ْ @  #@*@ (_#'ٔ<@* '@R @ؔ &  &'@R &  @˔ & @@U#@*{x@@@㿠` ``*, ـ`%% T@ G@ٖX @* @+@$0 '  @~`@)  㿠7FTْ@Ő G@xٖ @) T`(5@D`(`,  @D`,  @y @v@R 77 7ْ@@Z  @U@Rْ@ْ@~@` `` @uْ@q@4` `` @hْL@d, 7D /ْ`@W`  @!`  l ( d@F   p @=`ْ|@7`@Ӑ@0` "ـ"@@@@@@@Ȓ@ @Z`ٴ ؐ@ H/  |$$( @ H  o$$(ْ@ܔ`  c$$(ْ@˔`  W$$(ڒ@` @U@VZ`@`2 ``@ 3$$(@]``7ڒ@@ST@@  /@ِ /@ِ /@ِ /@ڐ @ѐ:` @ ; +  "@ J  `* J @J*  ` 2  ?#:  㿐 . @ @ؔ    Ք  @ ,8/ɔ ,* ̒@ N  N  N  N  "  .  *  @ L  L  L  L  " ,   * @w L  L  L  L  " , ! ] * @T L  L  L  L  " , , : * @1 L  L  L  L  " , 7  * @ , Fڐ4@'Œ㿀@.;  ?#`@'@$ ?#`@@@@.*@@.'@.,''@ϔ  & @. @.@.''@ $ 9Đ͒ J ` J@  J`2J    J   *` @ &K 㿘!9'4##` (`` ?#`(ߔ# (#(`(Ԓ`Є# (ʔ# `%`$#㿠4 '4Ъ19# 2 # $$$&#N- $#N+$ #@ِD"$$##􀠠"#H`22" " "$ЀЅ(H-2 Ѕ(H Є$Ѐ&$Ѐ"%Ѕ(@T2Є$" "J $2$$$$Ѐ2 "ʢ?$Ё?(H-2Ѕ(H`  Ѕ(H-  Ѐ`(&#"(#Ѕ(H-2!#Ѕ(H-`"##  #\ HH= `L`L`=2``# ##$@@2@#$@ 2    #\ `2#`\4Ԁ@CXG<Ѕ(G@h@e##&#Є$Ё ? { Є$L`"7  `4\ 4Ԁ$Ѕ(H- @xG<Gh@i @G<Ѕ(HGh@X @###&# ?+Ѐ 4І$Ѕ(4 Ԁ@ېG<Ѕ(G@1h@##&#M:Ϣ ? :@##& "     4Ѕ(H- 4#H2/#4Ԁ#7Ѕ(H- @G<G#@h7@ G<Ѕ(HG#@ߐh7aL&#Є$Ё ?&#H’#H Є$N`:M4J :hJ :2##H 4# Є $&#4 &#H 4# Є $%&#Ѐ4Ԁ 4@5\G<Gh@4 M:2  ? : &#І$Ѕ(4 &#4Ԁ 4@@G<Gh@l4 ؁ ?2Ё?$Т (4 ́    њ В  ``G* *`  㿠@L " " $  ( 88$ $  @L($   (@ϒ 㿠@ @܁㿠   @R  * -   @ 2   㿠ؒ 2 㿠͒ ` $ "  $`  㿠@ 㿠   ( n(* &  88&  @L( (@\ @(& ,  " @ *    *@I㿠    @ * -`  ŀ 2  $ $  & $ $   㿠62   ( "    &  ,  @o * 2   %  2  㿠  (@ & 㿠   ("@"2* J ` J   *`" J@J *` 㿠@U " 㿠| |v XJ јc `J *`" J @J *` 㿠@l " 㿠| |K!㿘@J P&` P   O@$ `,@Jݒ&`$"& & H`( @0& & H`( P `H 2͢````H `@/"< ?"9 O "` "-``` `цaH(@ $``  `H(@2$` `(F"  ڐ@"P` @" 㿠N`"I N ђ N` 2I  I   J  I  " I  J : @>@ 㿠N Ѣ (@,L``( 0L`(,@ @L@"&`  㿠@J&`  "` J "J` " J` "J` J "J "J "J ""  "` "㿠 @  @ ,`@ ڒ@ܔ q 㿠2`  "  ( @-``?㿠 @  &   6& ڒ@  㿠@I|    ` ``%`%`@Ih,`%` `%`   ` @  &`ڒ@{ %`㿠@IE  " " @I? $ $  @i 㿠@ @㿠 #F & c"  ڐ@!  cڐ@!㿠 #\@\㿠%92`  $` &` @I.Fڨ8ڐ(@ ޒ``  ֐@ ѐ`&`@ ɑ<㿘@ ?'9kF" ڐ@@  $ ` @ݐl @ X@`2 @ϐG@y@@ F  @@ < z㿠 F4 44@! 2` ` `@   ڐڒ@!6F㿠@ -Ѥ @@? ?L`H ?  "` & L  ,ۀӮL #5$@ "MM("M M((L  ( 0L ((: ,L (2M,` ڒ@ `L ;" ,`" ,L (`, v` ڒ@Ô `L ;" ,`" ,L (`, Y` ڒ@ `L ;" ,`" ,L (`, <` ڒ@ `L ;" ,`" ,L (`, `*&Mڒ@k 2ML ;" ,`" ,L (2M, L ;  M,*L , @ ,``& @&,`@" @F% %@F@%% %@%7 @ ,``& @&,`@" @Fu% %@Fe@%% %@ )%HшH(H2H㿠 "  &@*   @  2      l(L㿠  N ц 쀤"  (!2 L "- $ (L! "L "L  "" '"  "z >"  sqo(2i ."f -"c _"`  ^ ( ." L-" L_"L MLI',"Lڅ,L 8<2L 63@L +-?L #-2 L -2L --L  - L U" ڒ$@o!,4ڒH@h!LXڒd@a!Ltڒ@Z!L@'  ' #''`'`!'!#'`' ''''$@ <   @J !2 J 2'􀠠/ @۴ L`(2`L`." `L`-"`L`_@`@L`(2`L`."`L`-"`L`_"`@"'L`(@ `@L`(@2`"L`>2l      L`'(@"L``@xL`(@2`L`/2L``@iL`(@"L``@^L`(@2`L`>2YL`>& L`(L`." `L`-"`L`_`@8L`(2`L`."`L`-"`L`_"`"(L`(@"L``@L`(@2`L`(L`.L`-L`_L`/~L`>zL`=2`@L`(@"L``@L`(@2`L`""+L`L`'&L`(@@L`>@`@L`(@@L`>2`@"'Ą '''8 L`'`@ H"L` L`   L`"`L`>" L``@L`ꀠL`2''Ģ`@ '' ' '' K ` -  & &- -` -  (@Cq' @C`(( (@''-` ($ i $ b$ Ȅ $  "`@*,'$'Ѐ`''$'ܐ   !  !  &'ܠ`''* '􀠠2@m' '''@`㿠@B T3:4&`1F `  #@#@ #@`#@ @S #@2#@` `2#  @7 `2 "`  `  &`,  @B 4ll " ` *`(  !4   ` %@ `@&     .@B~""`` ݬ '㿠4 ܤ@Ւ 4 ?``*?㿠    @   &  ,&  ( 㿠@6I  ` `(/F @ @G  @ @74 3F"m  @ @=1F# ۔ 0@ژ@7 # P@˔@8 @4Fېx@`@Aɐ  @  %.%  ( %  %.` ( -L`/ @-  "   - "'   ' ' 㿠4|?  & = 7.` (  `6%@2! @@2   &  ` ` "  & ے@i! 㿘۔#  *  * "@}@= &@A5&㿘۔ ې @p"  ے@i   㿘ې ۤ sѦ@Gmےy J ("I ,I  ( 0I (,I ;I  (@" J  J (@2 J ҆`UkJ ReJ L_J =[J  (@" H(@2 BB * " 9ے@Ӑ2ې *@Ē &Lۦ @ , @@$@&L㿠 ? ,4`ې$ے0@<"\,㿀@C G@Hۖ< @ -F/: "ېD@ߒ`'''''F'''􀠠2\\@"&耠@@C㿠:"?@??@ 㿠ې&`t@  ?N ѐ ( "I *`I  ( 0I ( *`I .TR I ( " J J J  ( 2J J 2>?";?`6J ?( "0?J ( ")?J ( ""?J  0( (J ( 0((J  0J    J 2 ? &`&`?㿠ې|@  L :" +L L ѐ(  L ("L (L  ( 0L ((L -G L (@ $`  L ("I (I  ( 0I ((I /2$ I (" $` I ("$`( I  ( 0I (($` 㿠@k &` &` 㿠@ ;@I?цa(@!  I?(@2! @>ϒ$` 㿠@ &` 㿠%: $`F-$F@A袘㿠.`):6`.`0  􀠀'@}F@&] $4 $% F۰@ ېے@@!iے@9!n4㿠:.` 6`.`0 & 2 D  }@F@Ȑ8s  㿠 " @*  " @$   @  & & & ~ 2',?'F||' # ####' ?'`$$$ $$$#2# (t0"@h @% :d"!ې@W #;  (0Ȕ 1 #`G7P# 7 X#("@(   ?@ ۶@(7\#7p# F@B   ?@ ۸@F!7@pt   ?@ #@t (@d p   ?@ # p@ (' ,' @u 쀠''耠''    @ Ģ @3 @ '@` $" `(("`($(#`,#    ېԴ @ @0   @B   ?@| ۴@) G7tG$ `    `@< ##@34##"#@ΐ##`"#@ǐ##"#@## "#@##`"#@##"#@##Ā F@#Fx#@#@@@@ @Ą@{Ȓ G ?@ Ѐ##`7`#7##7# # 7#`#`7##7# #7#F#Fx7#7 #7#`#d#\#h#p#l#t#|#x# @IF`ܐ<@`@ @ @@@h`7#7#@ @-'?'Ю @? % @   Ђ@̂@t < ̂@`H4 ܒ@M @}Ȓ@G ̂@@`@@@qd:ܐ@:" :@2  NF܀̂@@t``@;̐@``@3 ..Ẑ@`Ȃ@P$?2Ȃ@`H @\@;$F@;$FF؀ ܂@p` @܂@x` @ŵ@`H @0@:$ @D@:$̂@@`܂̂@`HF؀"  ܒ@I䀠F䀠2܂̒@}`X.䀐܂̒@`܂̒@}` ܂̒@}` {਀܂̒Ă@U`k܂̒Ђ@}` ޖ[܂@`ĔT@˖Ă@`A%<܂@`L@ﭖ" @`$ 􀠠܂̒@}`$ ܂̒@`0̂@@2`k@.ܒ@͐ 䀠"􀠠"Z # ! (0c!ZW"'@'Ґ@ސF:ܐ@@:" :@2(+@ ܒ@  цH(@H܄ '#@@h@c  5@P@[ @ 5 @'  !-!,!-!-%!.!,2 !,2.2*%@ؔ@̀2%%-),@ .@䀐ܒ@z,@b,@9 , ,@y %2o܀"n$8䀠"6$&2$@@ڐ $$ %@+@&@d:ܐ8@:"M ):@2H )N )$"0$@ݐH,@W @@@Ԑd:ܐ@~:" (:@2 ( (@M  䀠'?$T"G"C\2?@ؒ@` 䀠"h@=@W "@@= @ @u @o @8ݒ@ ݒ @* "'@'"$2$؀2C,@0ip",@07$,(,@;G@<,ݒ @ @-d:ݐ(@ג: :@x"m @5 ):G0 ):@f@g@h ` ,` ):` " @ Є #`@#\@&$  2-@אd" ݐ8@ "@2$@d" ݐH@k " @2؀@@?$ " @ 2 * $ @@@d:ݐ@0:"І *:@2ˆ * *@@@cd:ܐ@ :" /:@2 / /@<@57 @, @@.d:ܐ@ؒ:" :@2y@5"h @0 ܒ@ ͐ @G@@t ̂@@`@@@d:ܐ @:"6 !:@21 !7 !@ʐhG@@A @ɐd:ܐ@s:" 7:@2 7 7   Hے`@"i'ܐ ܒ8@$A H,,H,,pp,,H,,HH,H㾰' ' G'$$??"'``" '`): 2'`Ƨ` % '` @y * @.X@   '(@/&'(@/''('('@5'$ ?#h'(~耠/@7<+ @@ p $@8"@ݒ@ܐ2$" "@ " 4 ',Ā",($@ݐ@ D@02,' ',,2 @"D2' t   '  $@'O@6 ~" ~@1W 4@גȀ @Ԓ4@ݘ4 @ @~ `"$$'4"'@6"'D@ǐ2 'X< 2't''4 Ԁ  ' 4`2$̄$̐7((@5 ܪ@4'`& c92(~@&u~"@!ݒ@  @G@@ c ݐ"@ݒ@  @Ӑ @ O ɐ"@܀@H@ ; "܄ %@ސ %"҄ @Ԑ "Ȅ "@ʐ "`!  @@ Y @? @}В@ G =  $0 -Ѐ @^ @ S"z "@| " @LH @  @C|@  9~",~~2(~̀؀2 ~?" (&~~2~(  ,("~@5~ @" ̀°؀?W@0̐ @ r~@%d~~@̐ Д@ ^~@%PՐ~@Ր\В ̔#\@ K#\ݐ #`@ A$@%A  @3# @3"҄ "@Ԑ ""@̒ @ #\ݐ @ $@%  @2 @2z" "@ "@sԠG@~̒ @ ~@$ِ^~@^G@i̒#\ @ і~@$ÐH~"~ ,"@<В ̔#\@ #\ݐ #`@ $@$  @2 @2"9 "@; "@  "+ "@- "~ݐ@.ƒ ݠt @ s@@| @ hݒ@  ސ" %@ %@;㿘@e? '  & @]?.?'@|@R" ?   $ @J?.?  2J  `ѓ*`!@ `@" JJ `*`@ `@2J  J G2 JJ M2JJ T J +"JJ -2  J *    x'4 |@)``*?܁   $$4"J: `J@ + J * J: @J+ J * J: @J+ J ?J+  &J@ =+?+ @ =+?+?+ 㿘@J@G*  @  < ?8# `(ޠh@j ?#`@& #@1`p@V㿠@@+K@ L?籐L=?H?磐L"?H?H"LH" LL"2L2?@@1$&  ` :  6 ` `:  0*:  W* `  6 ` `  0*  W*`& `* 9:  &&' N 4 4̐6 @  i b  *`@`2:M`M`"M`M`= `M`M`=2`M`"%M`M``" M`@M`"2M`M``"M`M`" `M`M`"2`M`2`M`"M`M`, `M`M`,2`M`2`M`  "@ "@ "ɠ @  " " `" " "  " @  ?#`@@@ޒ @@  @ޒ @@Ӑ@@ @ڐ@Ő@הޒ @Ҕ@@̔@ѐ@̒ @ޒ @@@ޒ @ @@Ғ @@@@ @~@{@0#\ ޔ@@gޢ@א@Ԑޒ@Аޒ@̐"@M "@G @A㿠ސ@E N a(@21 N "- ސ @1 N a(@2 N " ސ(@ N a(@2  N    㿠ސ0@   ސ8ޒH@ ްPސ`@ ::` `;㿠4  R08, (@ː  6$?F㿠c P @!`$!T?$ @/\h$ @ $  $ ($ 8@/Sl$ @/Ox$ $ $ $!0$ $ @"$ @/$ $ #$ ؄$$ $!,$!8 $!@ 2$!<㿠@@@    @/ 㿠ޠ @ʐ J  @0\+G@/`@=@9@.Ӑޠ@j` @)  @08@ @G<Ghޒ@E@Ԑ @.ϑ㿘G/Ghޒ@0@ԐĠG@<@*-: %$@1 1@^@ @  @<@ @@ 2 @<@@1Ӓ%$@㿠 @/ 4R@rH @p\G<Gh@ɖ@@㿠ѠL "LL (@"LL L(@2LL#L( L_"L-2LL(2L_"L-"L(@$L=$ @-ؐ$``M _"  M -" M  (*M (^`?2L@` (@" LL(@2L="L@` (@ `L`(@2`@ H(@  H(@2 @-֐& ?㿠  ?@G<Gh@ * 4 b(4 㿐 @ y @zG<Gh@Ҙ t   77@@-* &@U  㿠ޒ@% N`1N` ޒ@" N`0N`" @7G<Gh@ & 㿠TPޒ @^G N`2N`? ޒ(@O"8 N`1N`"0 ޒ,@@") N`0N`"! ޒ0@1"?N`- N`1N`"?@8G<Gh@9 &  㿠@n?@ƐlG<Gh@ & 㿠ޒ@& 㿠@@,& 㿠:@:$=N`~9N`/5G 0@"N`H/2 N` (H/ N`/``M`/"`@@,0@\ /,@& @,E& 㿠N` @,~@0;& @0#& 㿠N`' @,l" `@^ $ ``H/2```(`2`@0 & @/& 㿠N` iN`n2N`N`f2 N`N`2N`& N`N`є( *`J   ( 0J  J ( *`/J "J J 'J цck "&g" *` "*` m"*` & &@@} & @@s 㿠N` N`є( *`J   ( 0J  J ( *`GJ "J J ?J цcm "2&d"*`h"*`#"*`w"*`ބ (& (@(& ( ((& ( (( &@E@   @<ؒ@ 㿠#Fbٔ2b  $ $  㿠N` !F#x"8$#x@B#x4$#x@@G<Gh@g %Fx @+x@(@@*x$xx@C@x@  (x) x( 㿠!G   F 㿘t2 F !??!?! !?!  㿠@ F@@G<Gh@ #Fc@c@*$c 㿠#Fb52b   $  㿠N` @  @*^F  @ihG<Gh@ J  "J`J`јa *  "J`* * J``" 0J`  J` *  *J`  "?? 㿠N " J N :"J N цa(@2J  J  J : J (@" J :  @L "   FcT cT@T㿠. :`0( ( "$ @ $ $ 㿠@{/:,,%-5̀%̇( (  ( @)$  $ JL@,$ BL̇((  (@@)v`$@ ($"L@ @)V $@@| ($ L@q,$L 2 %,,̄%̀6%́㿠N @  @nL`=!X = a\ Ga\`h㿠@8   F "F FԀ&Ѐ FԀЀ@j=T55Ȁ @P= P  =T@-5   @? -  @($ $     @($ $  d@% 5@ 5Ȁ @ = P 㿠b @ = P㿠!5"Ȁ =$"ȁP  $"ȁ=T"T㿐'L'P'T@'X=X1   F "F FԀЀFԀЀ  @b YL㿐'HF'L'P'T'X@=X  @C :H㿠8a8a@q= \\FG=`h \@x\@=  T@@ 㿠!=!\!\ @R!\$!\  $$  5? $rЁ㿠+5b<:): , ," 6 , ( ( @& 6 b̀,  ,b̈(( ( ḃ(( (@@㿠@)@:(Gh@ߒ@= \\@̠G@@۔ = X@= T5bЀ  "bЂǞ5Ѐ  :=!T : ":" (㿠ߒ@& ߒ@" ߐ@ @ 㿠@>G<@ߝ㿠@587@p@-lGX@@&@@!@@@}@@x@D@s@ (@n@H@i@`@d@@^ 4Plx  < t 8 p $@\ h (  D ` X T   8Tdp (D`| 4  Pl<`)G@? /% <  <2 <`% <% <9`5Ԓ{ ?v9܈ ?fd(4<Y@LRP\K`pDt=6/(4|!ung `4Y R K,0D<@=LP6X۔\/lԔp(|͔!Ɣ  $,0ے<Ԓy͒r4Ɛk4d4 ]4V4 O4(H48A4D:4P34X,4d%4yp4rx4k4d 4]4V4O4 G4@49ޔ42ה'4u&@@Ĕ444 44$4LLpd H"倠c"%c"倠k"0\"&倠r"倠vS0Ғ8%<̒HLƒX\hl| L2LN4G4@49424+4 $4x(4q04j<4cD4\X ?FG? G-FF"耠 -F """ " -FЀ2 І FԀ" %ЀFFԀF䀠+4F +4`Ц@FFF܀"@$pЀ F@a( ?#`$ `Ю(@ "`%(@#%`Ь%`&`Ъ -%F]F %F7p892L3 LH- LLHG`X$ %  9aLL9a@$  p @@0p  <   $  @$  H@ H@  @ @  Q "5F'ld3G'h"  @ " @  ,lhd@z ," h@$Gl"h@lw @ql" h@ak h"l@l @  2'l!F#F#F@ɔ`` F@ʐ#E F耠F#5GFȆ@.GFЀ9 FȆ@'@Ƞ@# F @7G@F@' G,F,F G@ fx   @  & j "" (@N Y7p@@@ST@P@L@@E@ @2 =@. q@8 <G@h@! d@+ <@L@@ @ <@  Ʀ@ސd@h@ <@  @ @@ 8F@@@ 8+4@@ <@@@ <@ِ 0F@L@Ӑ  㿠 9 b 9b9bp@@H X@    @  @Fd!=!`))G_+G %a $!`" )G@@$  ?,#9` @@x@)G@%a)G!S`"!K!   "   @  2 `"   @R`2,$ $&` # $`!  2 &`$㿠 ` @B@@@> $ @ ֐  @ $ $`J  J`*``J` 2J` 4X㿐 ''4@>#\@8G@G<Gh@5@#  +#`TGh90Ѵ ` H L (@  L  L (@2  2L L " L  L "L L (@ L  L (@2 L #L L "o L *"L L "2 L "(@L \2 V L "L L "2L  (@"L "L >L ,   2`- ")@  $`@  `9@  `b0` ``"` @G<@Z  EL @  9@ x $@t  @% 6   % @% 4@ % @Y#d#`#@ d B`ąB#\\h㿠 &@ b H & 㿠5G ? ?@   &  NXTL`2  ` @ؒ: 8   @.`  `$` `& ``@` 2` `@` %@$` $``` @`` $``6`k 㿠1G ??@ ` `2`` @: 8 \l ` 6` hd@ѐ    & `"`` @\`@X`9``@P``@` `@$9lw   @Б㿠GN  G Ip@Ր $G !? !  2 x@Ő G !? !  0 @ @G !? !  0 @ G !? !  @WGh@㿠@  @W 6$$ $@$ @_ @㿠  &  6   6 6 & #  "  # &  @  &  & 2& & @* @㿠 `   `  `&  @@  @ @@Y@@㿐   @!Ӑ@ 6  &   #`p` B ąB#\\`dD`d @ @ @ : 6#d #`d`DB#\\@ [,` `  > =(%`! 4( >( 6  ] (&( ](<:, @F $  ["$ [," ]!   <  > =  ( ( 2((뀠  ]( & @!(0@@F` ' @ #7`(#`8#\`@f\@+  D @~  $g  $c #dx d #`$h `D ąB#\\@gń < 8 , (($"""@Y < 8 -  ( $c  , P@~ T@~ c\@  d@~t@~@~  $   @~}   $$  : , ,  *,,@~\"<`d $@~T"N݄ [@~M" 㿠ǐ   㿠@~  F@~3F=  hFG@~h@~ =`@~ =hɑ@$f -6 㿠@$U -6 @~ؑ "  "  "  ?@ ?"  `Y㿠' $$ I4$H,` 㿠' `"@} && "  " 㿠@]  @} @}㿠@I " " " "  &   !F & #"#"#"    "&   &   & 㿠 `2  &  %F& `&``&`&  & "`` 0 @}N p "@ @P  z κ @  @9h9x'@  `!=!x""'!x{"'!xU@F'=\=p@g7  4 !F'"$"@ *$"" 䀢 "2 耈"䀈2 䀠 @2 @@|䀥 '' F"! " GF"" "F   "+ L!G''F  @ 8!G@L  `02$`" `0"`@"``@'@$`@``2 `@@!G  5@0F"   Ē @| @{ w@|q G@{Hj @@|"@|  @| ܔؖ@{؀@{ܔؖw28@@`@ Y " 6`" @{!TY `㿘 1F#`#TU@0" `#"#Hx#"``2#d2 `#"#4# `0 #"##Ϯ2 #"##",P`2'P`@{2!P ` 2P<" `02P @c` 2 P#"#`  #2` L"`$` @ 2 `$#"#` <̒{#H"*`@@{`h@z "`&`@`$2 `#"V#`$lO#`2 2`@{`" #"=#``6#";#`27#`@[` 2`@u @"@z`@֒ `` @ `@ϐ2##U@#" K   C 㿠@ w )@ q , @? @z $ Ę@^@\@z Ft<P@zF"qӐXl@z>"tА 㿠N  `N``N`N `  I  `J `J I " `2I  2I J 2I  "I J "I  2J /2" J /J  @y`?㿠@y =x@z@z 㿠=!xG!㿘)=!|!|2˄ %!|2!|} $!|G@y8y" !|L"!|Ȓ@y@yȐ@@ʄ!| ʮ@y@y@~@{l㿠'=||2, $|2% $ @T@QB@yO#=㿘%=||2 $|2| $| |R@yb@y`R㿠%=ppڐ $p ppɺ p@`@f$`@@㿘@ !=@`!t!t$!t!t ]    9F`s2 ##"K E գ / 0"`$ # L`" @$ $ #" `킔 0"$ $ #" s`  2 @q@ m  2 @b @Q@x@#dhd #`#\`\㿠#=a|a|"?@Ca|a|$a|?"?@:??$??􀠠@?@?$?㿠` N * $ $`  h@x  $ $`$ $`㿠@N`/"`@l &   $   &   (&  ( (@ &  (  ( 㿠  ,`    ` & ,` @ӑ(        "`"`"``   &   @x& & & p|@wҔ  㿘' '@  @wޔ   `є&@x 2 @@L`(@@`@ @L`(@2`@:L`#"@" LL(@"L# 񀤀@L(@@$ @L(@2$@֬@L`(2`L`-`@L`(2`L`-"`@L`(@`@ L`(@2`|@{FL`:v`L`(@ L(@2*  @wI `2$"J   G@w- "9`` 1Ȑ@w "#` @ `F뀒 Fu&`" ( (@y&&@v!(㿠@ G@v   `@O㿠 $    @v ` @&  @v @v㿠N N``" ҈ѐ쀢}`%8%J (1%J (*%J 0& J J 94J J  0J  7J 0& J J 94J J  0* 7* (8/% %8@ I (1@ I (*@ I 0& I I 94I I  0I  7I 0& I I 94I I  0* 7* (8/@  @2  J  I  `  㿠2  -   g   &  , ( F9 9  a 㿘@uǐ@ ?#`@u :-!=@!2!\ $!!   !X@_!P㿘@u@ ?#`@uR :,@=က2ခ ſ㿠@0@u>< &`  @ @u[" "`"@uR`&`"`?㿠@uE 㿠!=! !Pv U!$!E "!E"!@@㿠%E$$FDąB#\\$ $   Fh鑓, 鉒,  (@u($$㿠@Y F$ иЪ   ``3;20 = @uQ @$ ѐ`" ` @t ` F?bFЀ"x 쀠n@ \= G=;  % %Ҕ0 @u@t ` 2(?@ F"A@FЀ" 0 $ Ȁ Ā&?FЀ"``2 @㿐'@!997(`E#`#\`@t[\@@@?P㿘3 9`@#`#\` F\ȁ 9 D&  & FD   & Ą &@s!ɀ @s!À`㿠@s 㿠#,㿐#\  "@z\`&2&`@y@ؐ @s 耥XlF '' @ `  @ `  "P`@ `;@B#  @2p @s6$ 籔@'@А@sS 4@s%@) 眔@@s@ 4@sܐ @@@s0 4 ٦ / `+ ~􀤠%~t%~􀤠  ` @ܐ @sLT@s  %w􀠠"@r@ ~@r'@M@r@ ' Z @*` ( @:  @@rÐ@, @r  @@@)@r@r %@r|  @m@k@@r@r %@nt @V@@r@r```n"``` `  " &`&`@rV@!@ʐ& G@rGG2&@rAG0 0@r!G㿐     "@# " h&3F'5Gb' 02S@2T 6b耠" " ; "',"#@"v@q4 @r." @q( '"@qʐ"@qĐ $ 2'@O㿠@q  @q,KFЀ````@B#`#``` @   А?#`#`Fc c     c: @  * 㿠7  F ## $ ?#& @r+#@r(? ? 4??(@ , `??"8Ж`@r ?@rJ KҘ њ!J` %2J`J` "J`J` "J`J` *  !" J`J` *  !2J`J`*$` 0& J`J` 94J`J`" 0J` J`" 70& J`J`94J`J`"0*  * "7` *`J` 2J`*㿠N   ҐH H2H  @ h`N +!҆H % "HH 8 ) 0) 7)   670) )  H)  H2H!) p@p[ Ё㿠@ BJ %BJa *  !"J J *  !"C J 0& JJ 94JJ" 0J Ґ @J" 7`0& JJ`94JJ"`0*  `Ғ` * "`7 Ҕ! @ 2  @ 2  JҒ a @`"  J ` @   㿠N    "``L`$$$@(@  N V$Ң %z "L` "?L`AL``8 ,0,7, 670,,+L`L`0& L`L`94L`L` 0L` 7L`0& L`L`94L`L` 0( 7(`,L`,`L`$,@ok!㿠7$ $$@o`@o ` `2` ,7 `,("  J іa *  2 J` -"J` +2JJ *  2J -"J +"J :"J /J /"" J іa *  2 J` -"J` +2JJ *  2J -"J +"J :`?* 7"@* `(@* 7"@ * `,"㿠@oڐ J @" 㿠  :@o  "& $&@`@ &&@@n (@ x&@n (" 㿠y N N :N /L L:L/22L :/ Lшa(  I  (2   I /I @nx@  @n$ /(@ni@  @n㿠@o+@nWJ ` єcњaJ `*`@ `"J  ` @ *J`2J 㿈''  #``"  &` `7#\  ( `$( @n   #d`"ׄ  $` `M`:2`#h `"  $`  : L hђJ (  ,J  ( 0*J  L `"  $` L /  dL L ;2 L  TJ ?2 L  HJ #2 L  @mL h% `"Z  $` @ ! 0 @me 0`$ @ td$ $ $ ($ ,@ k$ @   @W $  @ Z$  `@ S$ ``@ L$ ` @ \2$ @ $  @ْ $ \"@m0@l#㿠 . 7`H4@l#K. 㿘@m  ?#`@m-ѐ@m / @ <$`@ &@ $`@  &㿠  " @l   " @l  @ @l  @㿠 " @l͐` /.`@@l " @l ;,``@@l   @l ?,``@lv㿠@ : ƒ,@㿠@l  H@ I $]"(& @l|#& @l{ @lx $@   @l< /-@@ $@l5@ (;"& @lZ& @lW @ & 㿠@lJ @ & 㿠@l> $@ & $㿠@l2 @l0 @l.  " @l(  " @l"  " (@l  (" ,@l ( ,@l ,@l @l  $@l 㿘@ 3 G@k@ L F"  H{   t Ѧ %@l  @L`(@`@ L`(@2`H(@  H(@2 6@ @1@kbm` ޖ@k@k@!  @ke $`$`$ @ 㿠  " /  @k\ @kZ`2 @kP%F@ ix ?#` ?#`@k< $x逤$@ka@k\@k $@kO @k@k N/   H/2 H/ @@k9x<F@j g@k%@ 3 G@j @jĐJ `  J`/"J`2J 㿘    H  -F-F- H /`?א &M@ L /"  L 2L @j  ?#`@j 9 H /`?9D"3 @ji @jf @    ?H#`.  H2 @ju  @j +  "M`@jB :,@ v M`H.2   HM` M`@j(@j% M ?#`/̖@jK@j " $H/"( $H $ @i @i@i@LԖ@j @jN@jK@iΐ㾠N 0`ҒJ` %  "J`J`` 8 * 0* 7*   670* *  J`* `J` *J``+" ("  ?*  N`!" " " N` F % 2/2 J`* `* *  J`* `J` *J`" :/* @)㿠%F   $H  $ 9`    H  t 2``H.`H"`@i1`@i.@Ȑ`@i^@i ``\ `耠 @#@& @U@i㿠"*:@ * : J`  "`@ 8J`   㿠N  /" @hڐ@L .2L L /"L L 2L L /  $ @h$L , .23L L .2/L L /L 2'L (L $ (L L?/ $L/2$L /   $@h$$L ,/2L L /L/"L  $@h$$L , "L L /  L L /2 L  L 㿠ޠSN`2N`@ ?$@`@h @h,N`#@hJ # @h- @Ő`@g@g,* /N`/2'N`N`/2#N`$@h5 /"J /2  @` "@gƔ@g”-N`/K $@h /  H/ $ @h /  %@ %@  %@"%@ 2%@@T` @g|"6-@gu- /    J?/    @) `@gQ`(".@gF.@l@㿠' " @gf㿠 7 ( `(( ( 7($`` (` ( , 9lU ,@g7@g4   @ G   @g# @@g @@@g@fޔ @g @fԔ @ :,@f@fƔ@ @(@f``@f`   :.`@ `  @ !-  `(@fΐ `,@f@f's (@f'9܀ 㿠 F  F㈀ @g$ ㌀ @g 0 " L " ː E@f۔$,#㿠  " 㿠@f<< ڷ   ` 2 2 @f$P @y @f`G@f% ڑ @{F耠@F@f|%G@e@f n@@f@@eG@e Z@ ?"y{q% @fr " _"1"SX@~@ 0 @, ? @h? =@e@e.@ P 0 @ ? @??D@e` |@2z ?"$  $ @e@e@ ٪@ee㿠N`/@N /R  N"NN@"NN@N2 NN/" NN@/"N N/  N@/  NN @H/`H2H@ @e,` @` ,@dД , @@e@d(- 㿘@d`   ?#`@e @d)7 )7 ?#`@d@d \  @d"   2 @e@dG@d @@ @a$  \$ % \㿘N " N   "'2N   &` $&&(@d@>@  @d`2` &&(@dӒ@dΒ㿘@p @dP ?М#`@d~   K #&    ` ""    *K  㿘G@ Ɛ@ ?+@d,`N  ?#`$@L F % 3?",`L,``,`,``L2L$@ ,`@ @c)$,`   7  7 7  7 ```d`h`l 㿘 %F2 '2  2. $' '@]N 㿠@c 㿠!F! !8 !$!㿠 @cDG< ׽@c- 㿠@d7㿠@d+ @d# Ґ 㿠@dÐ(㿠J цH(H2HJ *`:`*` :`  J  J 2J 㿠&@@bΔ,㿠FN BN   . Ѧ L , ,ڒ$`$ L(@"L(@2LL2L (h- $$ 㿘@b?' F(ᤄᤁ@bF 0@b㿐@b?' F(᳄᳁@b #\ #` l  F@@b㿠%F  @`$@cB +@b.t@b &@b&@b@c.G@c*HG@c#XG@ch@bސl@a @a 㿘''@c? G@b nx @bf#<(F֐@bN@a͐G@a C㿠@bՒ 2 @b4x" < " 㿠@aϐ@f<@aϐ@a 㿠 ې`㿘@a  ? /#`@aM /dM"MM/" MH`H/M" - @bb!?-`M 㿠@a /" @a]`@a" /,@@as㿠@aF"NN/" N! I /2N/2FF$$`$@”  `@    $@ ` `@    J "J J``"JK J @ J`  K `K J@ "J "  㿠 ")    H/  2㿠`FL /" F0 002    㿠@`@`  @J`J   ! "`"  6J` ?" 㿠 '   D   "   Ð   @`"    2   㿠@`."NN/"NN."N  H/H.2 N.  㿠 R R @` R`@_@ H ,$@`ٔ`  `@_Ր N -  N G@` H @`  X x@`k%     @` %    @_ % % "8"4`%  @8$  ,`7%    $@@_~  % 4`2 @_U @$%  "%   % % @_B@_a @__ 㿠  @`P @_R@_P @_N㿠  `@_C``2`@_=㿠`2` @_,     ` `(,(@^ג@_㿠 $ $ ``2`$`㿠~ $ $   "  `2 㿠 @^"    2   㿠 `@^`@^ 2`㿠 b9xR㿠@^ 㿠̐@ 㿠@^x@^v 㿠̲  㿠N 1F!Ǥ- -.!Ǥ`@^c*@_Z2`(  $ $ M@M`, &I M@"",  ,@@^ < 8 ( 2M`"M`,M`` ,M`,㿈@]㿠   @_`0( 8 ,@_` @ 4`@8$.$`I  J `@ )  * " &I . ̐w㿠   g@^=< :`   `@^3< :`  4`㿠  -.    0,``"( d@^g< :` 0,`(($0,``(#"z@^< :` 0,`( (($@]g< :` 0,`(($0,``( 1@]ےӇ< :` 0,`( (($z@]̒< :` 0,`( (($@]g< :` 0,`(($0,``(aB6@]< :` 0,`(( (($@]Ӈ< :` 0,`( (($z@]< :` 0,`( (($@]xg< :` 0,`(($0,``r(Є@U>-@]b< :` 0,`((!((($6@]O< :` 0,`(( (($@]>Ӈ< :` 0,`( (($z@]/< :` 0,`( (($@] g< :` 0,`(($0,``(&%f@] < :` 0,`( (!(($>-@\< :` 0,`((!((($6@\< :` 0,`(( (($@\ՒӇ< :` 0,`( (($z@\ƒ< :` 0,`( (($@\g< :` 0,`(($0,``(}xy@\k< :` 0,`( (!((($@\< :` 0,`( (!(($>-@\}< :` 0,`((!((($6@\j< :` 0,`(( (($@\YӇ< :` 0,`( (($z@\J< :` 0,`( (($@\;g< :` 0,`(($0,``5(沄y@\%< :` 0,`( ( ( ( (($@\k< :` 0,`( (!((($@[< :` 0,`( (!(($>-@[< :` 0,`((!((($6@[ْ< :` 0,`(( (($@[ȒӇ< :` 0,`( (($z@[< :` 0,`( (($@[g< :` 0,`(($0,`` (. @[< :` 0,`( (((!((( $y@[< :` 0,`( ( ( ( (($@[mk< :` 0,`( (!((($@[Z< :` 0,`( (!(($>-@[I< :` 0,`((!((($6@[6< :` 0,`(( (($@[%Ӈ< :` 0,`( (($z@[< :` 0,`( (($@[g< :` 0,`(($0,` ` ( .㿠@ @Z|㿘@[ & & 㿘@[v   @Z͒Ӈ<  :`  (!) ( 㿠N # H&2H <" H>" H"2H   2  H2Hː N "N( pN  & # 3 2 ; q u o t a m<  "+("" (&" (*J "(>" (#J (((( J  g<" l((( (((((  (((( ( J 2J (㿘FG @Zhh@ZԔ6 ?@㿘#FbH@Yΐ @Z $bH@Z#`h#dpDd` F …B#\\㿠@k??@@㿠@k? @k<??@@);Ok[WQ  /?"!,i9Ka~֝jבe  7CA f!*7ΑH^P}zdK5 _U^/%=kO[G)6F\I (QۚK5ަ5)n>5#F[uvT~>QwCBBBBQ00000000000000000000000000000000  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~connection_host_name == NULLconnect.cconnection_host_name != NULLconnect.cConnecting to %s[%s]:%hu... Connecting to %s:%hu... connected. Created socket %d. failed: %s. Closing fd %d Master socket fd %d bound. Closing fd %d Closing fd %d Created socket fd %d. Closing fd %d Closing fd %d Deleted old cookie (to be replaced.) Stored cookie %s %d %s %s %d %s %s %s res != 0cookies.cDiscarded old cookie. name_b != NULL && name_e != NULLcookies.cdomainpathexpiresmax-age%lfsecureError in Set-Cookie, field `%s'Syntax error in Set-Cookie at character `%c'. Syntax error in Set-Cookie: premature end of string. cdm: 1 2 3 4 5 6Attempt to fake the domain: %s, %s Attempt to fake the path: %s, %s p != NULLcookies.cocnt == countcookies.cCookie: pos == result_sizecookies.crCannot open cookies file `%s': %s TRUE%lu%s %s %s %s %lu %s %s Saving cookies to %s. wCannot open cookies file `%s': %s # HTTP cookie file. # Generated by Wget on %s. # Edit at your own risk. Error writing to `%s': %s Error closing `%s': %s Done saving cookies. bytecon != NULLftp.ccon->target != NULLftp.c!((cmd & DO_LIST) && (cmd & DO_RETR))ftp.c(cmd & (DO_LIST | DO_CWD | DO_RETR | DO_LOGIN)) != 0ftp.cuser && passwdftp.cLogging in as %s ... Error in server response, closing control connection. Closing fd %d Error in server greeting. Closing fd %d Write failed, closing control connection. Closing fd %d The server refuses login. Closing fd %d Login incorrect. Closing fd %d Logged in! ==> SYST ... Error in server response, closing control connection. Closing fd %d Server error, can't determine system type. done. ==> PWD ... Error in server response, closing control connection. Closing fd %d /Initial VMS directory not in the form [...]! Preprocessing the initial VMS directory old = '%s' new = '%s' done. ==> TYPE %c ... Error in server response, closing control connection. Closing fd %d Write failed, closing control connection. Closing fd %d Unknown type `%c', closing control connection. Closing fd %d done. ==> CWD not needed. changing working directory %s%s%sPrepended initial PWD to relative path: old: '%s' new: '%s' *ntarget == '/'ftp.cChanged file name to VMS syntax: Unix: '%s' VMS: '%s' ==> CWD %s ... Error in server response, closing control connection. Closing fd %d Write failed, closing control connection. Closing fd %d No such directory `%s'. Closing fd %d done. ==> CWD not required. ==> SIZE %s ... Error in server response, closing control connection. Closing fd %d done. ==> PASV ... Error in server response, closing control connection. Closing fd %d Write failed, closing control connection. Closing fd %d Cannot initiate PASV transfer. Cannot parse PASV response. Closing fd %d couldn't connect to %s:%hu: %s done. ==> PORT ... Error in server response, closing control connection. Closing fd %d Write failed, closing control connection. Closing fd %d socket: %s Closing fd %d Bind error (%s). Invalid PORT. Closing fd %d done. ==> REST %ld ... Error in server response, closing control connection. Closing fd %d Write failed, closing control connection. Closing fd %d REST failed; will not truncate `%s'. Closing fd %d REST failed, starting from scratch. done. ==> RETR %s ... Error in server response, closing control connection. Closing fd %d Write failed, closing control connection. Closing fd %d No such file `%s'. done. ==> LIST ... Error in server response, closing control connection. Closing fd %d Write failed, closing control connection. Closing fd %d No such file or directory `%s'. done. Lying FTP server found, adjusting. accept: %s %s: %s Closing fd %d Length: %s [%s to go] Length: %s [%s to go] (unauthoritative) %s: %s, closing control connection. Closing fd %d %s (%s) - Data connection: %s; %s (%s) - Control connection closed. Closing fd %d %s (%s) - Data transfer aborted. Closing fd %d r%s: %s %s File `%s' already there, not retrieving. (try:%2d)--%s-- %s %s => `%s' Closing fd %d %s (%s) - `%s' saved [%ld] %s URL: %s [%ld] -> "%s" [%d] Removing file due to --delete-after in ftp_loop_internal(): Removing %s. unlink: %s Closing fd %d .listingUsing `%s' as listing tmp file. unlink: %s Removed `%s'. Recursion depth %d exceeded max. depth %d. f != NULLftp.cRemote file no newer than local file `%s' -- not retrieving. Remote file is newer than local file `%s' -- retrieving. The sizes do not match (local %ld) -- retrieving. Invalid name of the symlink, skipping. Already have correct symlink %s -> %s Creating symlink %s -> %s symlink: %s Skipping directory `%s'. %s: unknown/unsupported file type. %s: corrupt time-stamp. Unrecognized permissions for %s. Will not retrieve dirs since depth is %d (max %d). %s%s%s/%sComposing new CWD relative to the initial directory. odir = '%s' f->name = '%s' newdir = '%s' Not descending to `%s' as it is excluded/not-included. Rejecting `%s'. %s: %s No matches on pattern `%s'. Wrote HTML-ized index to `%s' [%ld]. Wrote HTML-ized index to `%s'. Closing fd %d %s %s %s%s%s PASS--> %s --> PASS Turtle Power! --> %s USER331 s/key 331 opiekey PASS%d,%d,%d,%d,%d,%dPORTPASVTYPECWDRESTRETRLISTSYST VMSUNIXWINDOWS_NTMACOSPWD""SIZEtype=JanFebMarAprMayJunJulAugSepOctNovDecrb%s: %s total PLAINFILE; DIRECTORY; SYMLINK; UNKNOWN; implicit perms %0o; perms %0o; month: %s; day: %d; year: %d (no tm); time: %02d:%02d:%02d (no yr); -> link to: %s ... Ignoring `.' and `..'; trailing `/' on dir. trailing `@' on link. trailing `*' on exec. Skipping. rb%s: %s Name: '%s' -- :MYYYY/MM/DD HH:MM - %d/%02d/%02d %02d:%02d Timestamp: %ld Directory File, size %ld bytes wrong VMS permissons! JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDECrb%s: %s file name: '%s' .DIRName: '%s' Directory File Getting additional line empty line read, leaving listing parser confusing VMS listing item, leaving listing parser second token: '%s' -day: '%s' -nonsense in VMS listing, skipping this line date parsed YYYY/MM/DD HH:MM:SS - %d/%02d/%02d %02d:%02d:%02d Timestamp: %ld ,)confusing VMS permissions, skipping line permissions: %s -> 0%o rb%s: %s Unsupported listing type, trying Unix listing parser. wb%s: %s %s%s%s@ ���Index of /%s on %s:%d���

Index of /%s on %s:%d


  %d %s %02d %02d:%02d         time unknown       File        Directory   Link        Not sure    %s  (%s bytes)-> %s
store is `%s' POSIXLY_CORRECT--%s: option `%s' is ambiguous %s: option `--%s' doesn't allow an argument %s: option `%c%s' doesn't allow an argument %s: option `%s' requires an argument %s: unrecognized option `--%s' %s: unrecognized option `%c%s' %s: illegal option -- %c %s: option requires an argument -- %c %s index >= al->faulty && index < al->counthost.cindex == al->faultyhost.ccount > 0host.cReleasing %p (new refcount %d). Deleting unused %p. Caching %s => %s Found %s in host_name_addresses_map (%p) Resolving %s... failed: %s. done. u->host != NULLhost.cHost not foundUnknown erroral->refcount == 1host.cltgtampquotnbspch == '\'' || ch == 0x22html-parse.cch == quote_charhtml-parse.cch == '-'html-parse.cch == '-'html-parse.caappletareabasebgsoundbodyembedfigframeiframeimginputlayerlinkmetaoverlayscripttabletdthhrefcodehrefsrcbackgroundhrefsrcsrcsrcsrchreflowsrcsrcsrcsrcsrcsrcbackgroundbackgroundbackgroundrelhttp-equivnamecontent%s: no base, merge will use "%s". %s: Cannot resolve incomplete link %s. %s: link "%s" doesn't parse. %s: merge("%s", "%s") -> %s %s: merged link "%s" doesn't parse. appending "%s" to urlpos. first != -1html-url.chrefhrefrelstylesheetshortcut iconnamehttp-equivrefreshcontentrobotscontentnonenofollowtagid != -1html-url.c%s: %s Loaded %s (size %ld). no-follow in %s: %d HTTP/bytesnoneKeep-AliveInvalidating fd %d from further reuse. Closing fd %d pc_last_host_ip == NULLhttp.cpc_last_host_ip != NULLhttp.cRegistered fd %d for persistent reuse. Closing fd %d *hs->local_file != NULLhttp.cReusing connection to %s:%hu. Reusing fd %d. Referer: %s Range: bytes=%ld- Wget/%sAuthorizationProxy-Authorization:%d*/*%s %s HTTP/1.0 User-Agent: %s Host: %s%s Accept: %s %s%s%s%s%s%s%s%s ---request begin--- %s---request end--- Failed writing HTTP request: %s. Closing fd %d %s request sent, awaiting response... End of file while parsing headers. Closing fd %d Read error (%s) in headers. Closing fd %d No data receivedMalformed status line(no description) %2d %s%2d %s %2d %sContent-LengthContent-TypeLocationLast-ModifiedSet-CookieWWW-AuthenticateAccept-RangesContent-RangeKeep-AliveConnection inhibit_keep_alive == 0http.cClosing fd %d Authorization failed. Unknown authentication scheme. BasicLocation: %s%s unspecified [following]Closing fd %d text/htmltext/html.htm.html.html The file is already fully retrieved; nothing to do. Closing fd %d Continued download failed on this file, which conflicts with `-c'. Refusing to truncate existing file `%s'. Closing fd %d Closing fd %d Length: (%s to go)ignoredunspecified [%s] Closing fd %d %s: %s Closing fd %d Closing fd %d Closing fd %d Warning: wildcards not supported in HTTP. File `%s' already there, will not retrieve. htmlhtm.orig (try:%2d)--%s-- %s %s => `%s' Cannot write to `%s' (%s). Unable to establish SSL connection. ERROR: Redirection (%d) without location. %s: %s ERROR %d: %s. Last-modified header missing -- time-stamps turned off. Last-modified header invalid -- time-stamp ignored. Server file no newer than local file `%s' -- not retrieving. The sizes do not match (local %ld) -- retrieving. Remote file is newer, retrieving. %d %s %s (%s) - `%s' saved [%ld/%ld] %s URL:%s [%ld/%ld] -> "%s" [%d] %s (%s) - `%s' saved [%ld] %s URL:%s [%ld] -> "%s" [%d] %s (%s) - Connection closed at byte %ld. %s (%s) - `%s' saved [%ld/%ld]) %s URL:%s [%ld/%ld] -> "%s" [%d] %s (%s) - Connection closed at byte %ld/%ld. %s (%s) - Read error at byte %ld (%s).%s (%s) - Read error at byte %ld/%ld (%s). %a, %d %b %Y %T%A, %d-%b-%y %T%a, %d-%b-%Y %T%a %b %d %T %Y%s:%s%s: Basic %s realmopaquenonce:::::Authorization: Digest username="%s", realm="%s", nonce="%s", uri="%s", response="%s", opaque="" BasicDigestNTLMBasicAuthorizationNTLMAuthorizationDigest.anonymous-wget@no_proxyHOMEWGETRC%s: %s: %s. .wgetrc%s/.wgetrcrb%s: Cannot read %s (%s). %s: Error in %s at line %d. %s: Error in %s at line %d. /opt/csw/etc/wgetrc/opt/csw/etc/wgetrc/opt/csw/etc/wgetrc%s: Warning: Both system and user wgetrc point to `%s'. %s: BUG: unknown command `%s', value `%s'. %s: %s: Cannot convert `%s' to an IP address. onoff%s: %s: Please specify on or off. alwaysonoffnever%s: %s: Please specify always, on, off, or never. %s: %s: Invalid specification `%s'. inf%s: Invalid specification `%s' %s: Invalid specification `%s' %s: Invalid specification `%s' %s: Invalid specification `%s' %s: %s: Invalid specification `%s'. %s: %s: Invalid progress type `%s'. %s: %s: Invalid specification `%s'. wget-log %s received, redirecting output to `%s'. w%s: %s; disabling logging. wget/opt/csw/share/localewgetUsage: %s [OPTION]... [URL]... GNU Wget %s, a non-interactive network retriever. Mandatory arguments to long options are mandatory for short options too. Startup: -V, --version display the version of Wget and exit. -h, --help print this help. -b, --background go to background after startup. -e, --execute=COMMAND execute a `.wgetrc'-style command. Logging and input file: -o, --output-file=FILE log messages to FILE. -a, --append-output=FILE append messages to FILE. -d, --debug print debug output. -q, --quiet quiet (no output). -v, --verbose be verbose (this is the default). -nv, --non-verbose turn off verboseness, without being quiet. -i, --input-file=FILE download URLs found in FILE. -F, --force-html treat input file as HTML. -B, --base=URL prepends URL to relative links in -F -i file. --sslcertfile=FILE optional client certificate. --sslcertkey=KEYFILE optional keyfile for this certificate. --egd-file=FILE file name of the EGD socket. Download: --bind-address=ADDRESS bind to ADDRESS (hostname or IP) on local host. -t, --tries=NUMBER set number of retries to NUMBER (0 unlimits). -O --output-document=FILE write documents to FILE. -nc, --no-clobber don't clobber existing files or use .# suffixes. -c, --continue resume getting a partially-downloaded file. --progress=TYPE select progress gauge type. -N, --timestamping don't re-retrieve files unless newer than local. -S, --server-response print server response. --spider don't download anything. -T, --timeout=SECONDS set the read timeout to SECONDS. -w, --wait=SECONDS wait SECONDS between retrievals. --waitretry=SECONDS wait 1...SECONDS between retries of a retrieval. --random-wait wait from 0...2*WAIT secs between retrievals. -Y, --proxy=on/off turn proxy on or off. -Q, --quota=NUMBER set retrieval quota to NUMBER. --limit-rate=RATE limit download rate to RATE. Directories: -nd --no-directories don't create directories. -x, --force-directories force creation of directories. -nH, --no-host-directories don't create host directories. -P, --directory-prefix=PREFIX save files to PREFIX/... --cut-dirs=NUMBER ignore NUMBER remote directory components. HTTP options: --http-user=USER set http user to USER. --http-passwd=PASS set http password to PASS. -C, --cache=on/off (dis)allow server-cached data (normally allowed). -E, --html-extension save all text/html documents with .html extension. --ignore-length ignore `Content-Length' header field. --header=STRING insert STRING among the headers. --proxy-user=USER set USER as proxy username. --proxy-passwd=PASS set PASS as proxy password. --referer=URL include `Referer: URL' header in HTTP request. -s, --save-headers save the HTTP headers to file. -U, --user-agent=AGENT identify as AGENT instead of Wget/VERSION. --no-http-keep-alive disable HTTP keep-alive (persistent connections). --cookies=off don't use cookies. --load-cookies=FILE load cookies from FILE before session. --save-cookies=FILE save cookies to FILE after session. FTP options: -nr, --dont-remove-listing don't remove `.listing' files. -g, --glob=on/off turn file name globbing on or off. --passive-ftp use the "passive" transfer mode. --retr-symlinks when recursing, get linked-to files (not dirs). Recursive retrieval: -r, --recursive recursive web-suck -- use with care! -l, --level=NUMBER maximum recursion depth (inf or 0 for infinite). --delete-after delete files locally after downloading them. -k, --convert-links convert non-relative links to relative. -K, --backup-converted before converting file X, back up as X.orig. -m, --mirror shortcut option equivalent to -r -N -l inf -nr. -p, --page-requisites get all images, etc. needed to display HTML page. Recursive accept/reject: -A, --accept=LIST comma-separated list of accepted extensions. -R, --reject=LIST comma-separated list of rejected extensions. -D, --domains=LIST comma-separated list of accepted domains. --exclude-domains=LIST comma-separated list of rejected domains. --follow-ftp follow FTP links from HTML documents. --follow-tags=LIST comma-separated list of followed HTML tags. -G, --ignore-tags=LIST comma-separated list of ignored HTML tags. -H, --span-hosts go to foreign hosts when recursive. -L, --relative follow relative links only. -I, --include-directories=LIST list of allowed directories. -X, --exclude-directories=LIST list of excluded directories. -np, --no-parent don't ascend to the parent directory. Mail bug reports and suggestions to . spideronnoparentondeleteafteronretrsymlinksonignorelengthonpassiveftponnoclobberonfollowftponcutdirsverboseoffdirstructoffaddhostdiroffremovelistingoffbindaddresshttpkeepaliveoffrandomwaitonbackgroundoncontinueondebugonhtmlextensiononforcehtmlonspanhostsonbackupconvertedonconvertlinksonrelativeonlyonmirrorontimestampingonpagerequisitesonserverresponseonsaveheadersonquietonrecursiveonGNU Wget %s %sCopyright (C) 1995, 1996, 1997, 1998, 2000, 2001 Free Software Foundation, Inc. %sThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Originally written by Hrvoje Niksic . verboseondirstructonhttpuserhttppasswdheaderdotstylehtmlifyexcludedomainsproxyuserproxypasswdbackupswaitretryfollowtagscookiesloadcookiessavecookiesprogresslimitraterefereracceptlogfilebasecachedomains%s: %s: invalid command ignoretagsglobincludedirectoriesinputreclevelverboseoffaddhostdiroffdirstructoffnoclobberonremovelistingoffnoparentonhttpkeepaliveoff%s: illegal option -- `-n%c' Try `%s --help' for more options. outputdocumentlogfiledirprefixquotarejecttimeouttriesuseragentwaitexcludedirectoriesuseproxy Try `%s --help' for more options. Can't be verbose and quiet at the same time. Can't timestamp and not clobber old files at the same time. %s: missing URL Try `%s --help' for more options. DEBUG output created by Wget %s on %s. Removing file due to --delete-after in main(): Removing %s. unlink: %s No URLs found in %s. FINISHED --%s-- Downloaded: %s bytes in %d files Download quota (%s bytes) EXCEEDED! .netrc%s/%sr%s: Cannot read %s (%s). %s: %s:%d: warning: "%s" token appears before any machine name accountdefaultloginmacdefmachinepassword%s: %s:%d: unknown token "%s" bardot %*s[ skipping %dK ] %5ldK ,dp->dots < opt.dots_in_lineprogress.c%3d%% %s %5ldK . %5ldK defaultbinarymegagigaInvalid dot style specification `%s'; leaving unchanged. percentage <= 100progress.c%2d%% 100% dlsz <= progress_sizeprogress.c %-11s %7.2f%s --.--K/s ETA --:--%d:%02d:%02d%02d:%02d ETA --:--p - bp->buffer <= bp->widthprogress.c TERMforceemacsdotEnqueuing %s at depth %d Queue count %d, maxcount %d. Dequeuing %s at depth %d Queue count %d, maxcount %d. %s: %s. Already downloaded "%s", reusing it from "%s". Not descending further; at depth %d, max. %d. url_parsed != NULLrecur.cRemoving file due to %s in recursive_retrieve(): Removing %s. Removing %s since it should be rejected. unlink: %s Deciding whether to enqueue "%s". Already on the black list. Not following non-HTTP schemes. It doesn't really look like a relative link. The domain was not accepted. Going to "%s" would escape "%s" with no_parent on. %s (%s) is excluded/not-included. htmlhtm%s (%s) does not match acc/rej rules. This is not the same hostname as the parent's (%s and %s). Not following %s because robots.txt forbids it. Decided to load it. Decided NOT to load it. orig_parsed != NULLrecur.cnew_parsed != NULLrecur.cRedirection "%s" failed the test. /index.htmlfile != NULLrecur.cApparently %s has been removed. Scanning %s (from %s) will convert url %s to local %s will convert url %s to complete Converted %d files in %.2f seconds. wgetj == cntres.c!EOL (p)res.cIgnoring malformed line %duser-agentallowdisallowIgnoring unknown field at line %dCannot open %s: %s%s path %s because of rule `%s'. /robots.txtLoading robots.txt; please ignore errors. deferring a %ld ms sleep (%ld/%ld) until later. sleeping %ld ms msecs >= 0retr.cbytes >= 0retr.c%s: %s. Could not find proxy host. Error parsing proxy URL %s: %s. Error in proxy URL %s: Must be HTTP. htmlhtmmynewloc != NULLretr.c%s: %s. %d redirections exceeded. %s: Redirection cycle detected. Removing file due to --delete-after in retrieve_from_file(): Removing %s. unlink: %s Giving up. Retrying. sleep_between_retrievals: norm=%ld,fuzz=%ld,sleep=%d p2 - newstr == newlenurl.cp2 - newstr == newlenurl.c/?@ftp://%shttp://%s:/;?#/;?#;?#?##*p == 0url.cerror_code >= 0 && error_code < ARRAY_SIZE (parse_errors)url.c%s: %s Loaded %s (size %ld). %s: Invalid URL %s: %s %s.%d%s.%d%s.%dRemoving %s because of directory danger! %s: %s%s/%s%s%s%s%s%s%s?%s/%s?;#scheme_str != NULLurl.cp - result == sizeurl.chttp_proxyftp_proxyConverting %s... nothing to do. Cannot convert links in %s: %s Unable to delete `%s': %s wbCannot convert links in %s: %s Something strange is going on. Please investigate.Skipping %s at position %d. TO_RELATIVE: %s to %s at position %d in %s. TO_COMPLETE: to %s at position %d in %s. %d-%d *s1 != '/'url.c../orig.origCannot back up %s as %s: %s %d; URL=%sto - newname == fsqlenurl.c%s: %s: Not enough memory. mallocreallocstrdup%02d:%02d:%02d%04d-%02d-%02d %02d:%02d:%02dwget-logforkContinuing in background, pid %d. Output will be written to `%s'. /dev/nullr/dev/nullw/dev/nullwutime(%s): %s Unlinking %s (symlink). Failed to unlink symlink `%s': %s %s.%d00<0H0T0`0l0x00000000000000 0,080D0P0\0h0t0000000000000~0{0x(0u40r@0oL0lX0id0fp0c|0`0]0Z0W0T0Q0N0K0H0E0B0? 0<09$06003<00H0-T0*`0'l0$x0!0000000 0 00000 0,080D0P0\0h0t000000000000000(040@0L0X0d0p0 C DH#  \ oo4oL55 ooH@ܐܘܠܨܸܰahatb b$b(b,b0b4b8b<b@bDbHbLdPdTdXd\d`dddhdldpdtdxd| $(,048<@AABEACEACTADADAADDAGOAIDAIMAIRALLALPAMAMYANANAANDANNANTANYAPEAPSAPTARCAREARKARMARTASASHASKATATEAUGAUKAVEAWEAWKAWLAWNAXAYEBADBAGBAHBAMBANBARBATBAYBEBEDBEEBEGBENBETBEYBIBBIDBIGBINBITBOBBOGBONBOOBOPBOWBOYBUBBUDBUGBUMBUNBUSBUTBUYBYBYECABCALCAMCANCAPCARCATCAWCODCOGCOLCONCOOCOPCOTCOWCOYCRYCUBCUECUPCURCUTDABDADDAMDANDARDAYDEEDELDENDESDEWDIDDIEDIGDINDIPDODOEDOGDONDOTDOWDRYDUBDUDDUEDUGDUNEAREATEDEELEGGEGOELIELKELMELYEMENDESTETCEVAEVEEWEEYEFADFANFARFATFAYFEDFEEFEWFIBFIGFINFIRFITFLOFLYFOEFOGFORFRYFUMFUNFURGABGADGAGGALGAMGAPGASGAYGEEGELGEMGETGIGGILGINGOGOTGUMGUNGUSGUTGUYGYMGYPHAHADHALHAMHANHAPHASHATHAWHAYHEHEMHENHERHEWHEYHIHIDHIMHIPHISHITHOHOBHOCHOEHOGHOPHOTHOWHUBHUEHUGHUHHUMHUTIICYIDAIFIKEILLINKINNIOIONIQIRAIREIRKISITITSIVYJABJAGJAMJANJARJAWJAYJETJIGJIMJOJOBJOEJOGJOTJOYJUGJUTKAYKEGKENKEYKIDKIMKINKITLALABLACLADLAGLAMLAPLAWLAYLEALEDLEELEGLENLEOLETLEWLIDLIELINLIPLITLOLOBLOGLOPLOSLOTLOULOWLOYLUGLYEMAMACMADMAEMANMAOMAPMATMAWMAYMEMEGMELMENMETMEWMIDMINMITMOBMODMOEMOOMOPMOSMOTMOWMUDMUGMUMMYNABNAGNANNAPNATNAYNENEDNEENETNEWNIBNILNIPNITNONOBNODNONNORNOTNOVNOWNUNUNNUTOOAFOAKOAROATODDODEOFOFFOFTOHOILOKOLDONONEORORBOREORROSOTTOUROUTOVAOWOWEOWLOWNOXPAPADPALPAMPANPAPPARPATPAWPAYPEAPEGPENPEPPERPETPEWPHIPIPIEPINPITPLYPOPODPOEPOPPOTPOWPROPRYPUBPUGPUNPUPPUTQUORAGRAMRANRAPRATRAWRAYREBREDREPRETRIBRIDRIGRIMRIORIPROBRODROERONROTROWROYRUBRUERUGRUMRUNRYESACSADSAGSALSAMSANSAPSATSAWSAYSEASECSEESENSETSEWSHESHYSINSIPSIRSISSITSKISKYSLYSOSOBSODSONSOPSOWSOYSPASPYSUBSUDSUESUMSUNSUPTABTADTAGTANTAPTARTEATEDTEETENTHETHYTICTIETIMTINTIPTOTOETOGTOMTONTOOTOPTOWTOYTRYTUBTUGTUMTUNTWOUNUPUSUSEVANVATVETVIEWADWAGWARWASWAYWEWEBWEDWEEWETWHOWHYWINWITWOKWONWOOWOWWRYWUYAMYAPYAWYEYEAYESYETYOUABEDABELABETABLEABUTACHEACIDACMEACREACTAACTSADAMADDSADENAFARAFROAGEEAHEMAHOYAIDAAIDEAIDSAIRYAJARAKINALANALECALGAALIAALLYALMAALOEALSOALTOALUMALVAAMENAMESAMIDAMMOAMOKAMOSAMRAANDYANEWANNAANNEANTEANTIAQUAARABARCHAREAARGOARIDARMYARTSARTYASIAASKSATOMAUNTAURAAUTOAVERAVIDAVISAVONAVOWAWAYAWRYBABEBABYBACHBACKBADEBAILBAITBAKEBALDBALEBALIBALKBALLBALMBANDBANEBANGBANKBARBBARDBAREBARKBARNBARRBASEBASHBASKBASSBATEBATHBAWDBAWLBEADBEAKBEAMBEANBEARBEATBEAUBECKBEEFBEENBEERBEETBELABELLBELTBENDBENTBERGBERNBERTBESSBESTBETABETHBHOYBIASBIDEBIENBILEBILKBILLBINDBINGBIRDBITEBITSBLABBLATBLEDBLEWBLOBBLOCBLOTBLOWBLUEBLUMBLURBOARBOATBOCABOCKBODEBODYBOGYBOHRBOILBOLDBOLOBOLTBOMBBONABONDBONEBONGBONNBONYBOOKBOOMBOONBOOTBOREBORGBORNBOSEBOSSBOTHBOUTBOWLBOYDBRADBRAEBRAGBRANBRAYBREDBREWBRIGBRIMBROWBUCKBUDDBUFFBULBBULKBULLBUNKBUNTBUOYBURGBURLBURNBURRBURTBURYBUSHBUSSBUSTBUSYBYTECADYCAFECAGECAINCAKECALFCALLCALMCAMECANECANTCARDCARECARLCARRCARTCASECASHCASKCASTCAVECEILCELLCENTCERNCHADCHARCHATCHAWCHEFCHENCHEWCHICCHINCHOUCHOWCHUBCHUGCHUMCITECITYCLADCLAMCLANCLAWCLAYCLODCLOGCLOTCLUBCLUECOALCOATCOCACOCKCOCOCODACODECODYCOEDCOILCOINCOKECOLACOLDCOLTCOMACOMBCOMECOOKCOOLCOONCOOTCORDCORECORKCORNCOSTCOVECOWLCRABCRAGCRAMCRAYCREWCRIBCROWCRUDCUBACUBECUFFCULLCULTCUNYCURBCURDCURECURLCURTCUTSDADEDALEDAMEDANADANEDANGDANKDAREDARKDARNDARTDASHDATADATEDAVEDAVYDAWNDAYSDEADDEAFDEALDEANDEARDEBTDECKDEEDDEEMDEERDEFTDEFYDELLDENTDENYDESKDIALDICEDIEDDIETDIMEDINEDINGDINTDIREDIRTDISCDISHDISKDIVEDOCKDOESDOLEDOLLDOLTDOMEDONEDOOMDOORDORADOSEDOTEDOUGDOURDOVEDOWNDRABDRAGDRAMDRAWDREWDRUBDRUGDRUMDUALDUCKDUCTDUELDUETDUKEDULLDUMBDUNEDUNKDUSKDUSTDUTYEACHEARLEARNEASEEASTEASYEBENECHOEDDYEDENEDGEEDGYEDITEDNAEGANELANELBAELLAELSEEMILEMITEMMAENDSERICEROSEVENEVEREVILEYEDFACEFACTFADEFAILFAINFAIRFAKEFALLFAMEFANGFARMFASTFATEFAWNFEARFEATFEEDFEELFEETFELLFELTFENDFERNFESTFEUDFIEFFIGSFILEFILLFILMFINDFINEFINKFIREFIRMFISHFISKFISTFITSFIVEFLAGFLAKFLAMFLATFLAWFLEAFLEDFLEWFLITFLOCFLOGFLOWFLUBFLUEFOALFOAMFOGYFOILFOLDFOLKFONDFONTFOODFOOLFOOTFORDFOREFORKFORMFORTFOSSFOULFOURFOWLFRAUFRAYFREDFREEFRETFREYFROGFROMFUELFULLFUMEFUNDFUNKFURYFUSEFUSSGAFFGAGEGAILGAINGAITGALAGALEGALLGALTGAMEGANGGARBGARYGASHGATEGAULGAURGAVEGAWKGEARGELDGENEGENTGERMGETSGIBEGIFTGILDGILLGILTGINAGIRDGIRLGISTGIVEGLADGLEEGLENGLIBGLOBGLOMGLOWGLUEGLUMGLUTGOADGOALGOATGOERGOESGOLDGOLFGONEGONGGOODGOOFGOREGORYGOSHGOUTGOWNGRABGRADGRAYGREGGREWGREYGRIDGRIMGRINGRITGROWGRUBGULFGULLGUNKGURUGUSHGUSTGWENGWYNHAAGHAASHACKHAILHAIRHALEHALFHALLHALOHALTHANDHANGHANKHANSHARDHARKHARMHARTHASHHASTHATEHATHHAULHAVEHAWKHAYSHEADHEALHEARHEATHEBEHECKHEEDHEELHEFTHELDHELLHELMHERBHERDHEREHEROHERSHESSHEWNHICKHIDEHIGHHIKEHILLHILTHINDHINTHIREHISSHIVEHOBOHOCKHOFFHOLDHOLEHOLMHOLTHOMEHONEHONKHOODHOOFHOOKHOOTHORNHOSEHOSTHOURHOVEHOWEHOWLHOYTHUCKHUEDHUFFHUGEHUGHHUGOHULKHULLHUNKHUNTHURDHURLHURTHUSHHYDEHYMNIBISICONIDEAIDLEIFFYINCAINCHINTOIONSIOTAIOWAIRISIRMAIRONISLEITCHITEMIVANJACKJADEJAILJAKEJANEJAVAJEANJEFFJERKJESSJESTJIBEJILLJILTJIVEJOANJOBSJOCKJOELJOEYJOHNJOINJOKEJOLTJOVEJUDDJUDEJUDOJUDYJUJUJUKEJULYJUNEJUNKJUNOJURYJUSTJUTEKAHNKALEKANEKANTKARLKATEKEELKEENKENOKENTKERNKERRKEYSKICKKILLKINDKINGKIRKKISSKITEKLANKNEEKNEWKNITKNOBKNOTKNOWKOCHKONGKUDOKURDKURTKYLELACELACKLACYLADYLAIDLAINLAIRLAKELAMBLAMELANDLANELANGLARDLARKLASSLASTLATELAUDLAVALAWNLAWSLAYSLEADLEAFLEAKLEANLEARLEEKLEERLEFTLENDLENSLENTLEONLESKLESSLESTLETSLIARLICELICKLIEDLIENLIESLIEULIFELIFTLIKELILALILTLILYLIMALIMBLIMELINDLINELINKLINTLIONLISALISTLIVELOADLOAFLOAMLOANLOCKLOFTLOGELOISLOLALONELONGLOOKLOONLOOTLORDLORELOSELOSSLOSTLOUDLOVELOWELUCKLUCYLUGELUKELULULUNDLUNGLURALURELURKLUSHLUSTLYLELYNNLYONLYRAMACEMADEMAGIMAIDMAILMAINMAKEMALEMALIMALLMALTMANAMANNMANYMARCMAREMARKMARSMARTMARYMASHMASKMASSMASTMATEMATHMAULMAYOMEADMEALMEANMEATMEEKMEETMELDMELTMEMOMENDMENUMERTMESHMESSMICEMIKEMILDMILEMILKMILLMILTMIMIMINDMINEMINIMINKMINTMIREMISSMISTMITEMITTMOANMOATMOCKMODEMOLDMOLEMOLLMOLTMONAMONKMONTMOODMOONMOORMOOTMOREMORNMORTMOSSMOSTMOTHMOVEMUCHMUCKMUDDMUFFMULEMULLMURKMUSHMUSTMUTEMUTTMYRAMYTHNAGYNAILNAIRNAMENARYNASHNAVENAVYNEALNEARNEATNECKNEEDNEILNELLNEONNERONESSNESTNEWSNEWTNIBSNICENICKNILENINANINENOAHNODENOELNOLLNONENOOKNOONNORMNOSENOTENOUNNOVANUDENULLNUMBOATHOBEYOBOEODINOHIOOILYOINTOKAYOLAFOLDYOLGAOLINOMANOMENOMITONCEONESONLYONTOONUSORALORGYOSLOOTISOTTOOUCHOUSTOUTSOVALOVENOVEROWLYOWNSQUADQUITQUODRACERACKRACYRAFTRAGERAIDRAILRAINRAKERANKRANTRARERASHRATERAVERAYSREADREALREAMREARRECKREEDREEFREEKREELREIDREINRENARENDRENTRESTRICERICHRICKRIDERIFTRILLRIMERINGRINKRISERISKRITEROADROAMROARROBEROCKRODEROILROLLROMEROODROOFROOKROOMROOTROSAROSEROSSROSYROTHROUTROVEROWEROWSRUBERUBYRUDERUDYRUINRULERUNGRUNSRUNTRUSERUSHRUSKRUSSRUSTRUTHSACKSAFESAGESAIDSAILSALESALKSALTSAMESANDSANESANGSANKSARASAULSAVESAYSSCANSCARSCATSCOTSEALSEAMSEARSEATSEEDSEEKSEEMSEENSEESSELFSELLSENDSENTSETSSEWNSHAGSHAMSHAWSHAYSHEDSHIMSHINSHODSHOESHOTSHOWSHUNSHUTSICKSIDESIFTSIGHSIGNSILKSILLSILOSILTSINESINGSINKSIRESITESITSSITUSKATSKEWSKIDSKIMSKINSKITSLABSLAMSLATSLAYSLEDSLEWSLIDSLIMSLITSLOBSLOGSLOTSLOWSLUGSLUMSLURSMOGSMUGSNAGSNOBSNOWSNUBSNUGSOAKSOARSOCKSODASOFASOFTSOILSOLDSOMESONGSOONSOOTSORESORTSOULSOURSOWNSTABSTAGSTANSTARSTAYSTEMSTEWSTIRSTOWSTUBSTUNSUCHSUDSSUITSULKSUMSSUNGSUNKSURESURFSWABSWAGSWAMSWANSWATSWAYSWIMSWUMTACKTACTTAILTAKETALETALKTALLTANKTASKTATETAUTTEALTEAMTEARTECHTEEMTEENTEETTELLTENDTENTTERMTERNTESSTESTTHANTHATTHEETHEMTHENTHEYTHINTHISTHUDTHUGTICKTIDETIDYTIEDTIERTILETILLTILTTIMETINATINETINTTINYTIRETOADTOGOTOILTOLDTOLLTONETONGTONYTOOKTOOLTOOTTORETORNTOTETOURTOUTTOWNTRAGTRAMTRAYTREETREKTRIGTRIMTRIOTRODTROTTROYTRUETUBATUBETUCKTUFTTUNATUNETUNGTURFTURNTUSKTWIGTWINTWITULANUNITURGEUSEDUSERUSESUTAHVAILVAINVALEVARYVASEVASTVEALVEDAVEILVEINVENDVENTVERBVERYVETOVICEVIEWVINEVISEVOIDVOLTVOTEWACKWADEWAGEWAILWAITWAKEWALEWALKWALLWALTWANDWANEWANGWANTWARDWARMWARNWARTWASHWASTWATSWATTWAVEWAVYWAYSWEAKWEALWEANWEARWEEDWEEKWEIRWELDWELLWELTWENTWEREWERTWESTWHAMWHATWHEEWHENWHETWHOAWHOMWICKWIFEWILDWILLWINDWINEWINGWINKWINOWIREWISEWISHWITHWOLFWONTWOODWOOLWORDWOREWORKWORMWORNWOVEWRITWYNNYALEYANGYANKYARDYARNYAWLYAWNYEAHYEARYELLYOGAYOKE?kkkkkkkkkkkkkkk\kll llll$l,l4l8lDlLlPlT lX l\ ld ll lp ltlxl|lllllllx(x8xHxXABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/xxx $lxhdXhdhdhd jk g(hd0Xhd<hdL$hdTj\hddhdpkH|pވ4lxސm|ޜ jިj޴k,l8lxDhd<lxhdkhhdq<$hd4r@<|hdLtkXkdkppk|hdߌ@lxߘ0l߬kHߴhdm|(kHkH\krdhd hdhdlxj$LkH4hdDliP`kXsdkpk|hdm|hdjs|k(lxhdhdHhdhd,kHhdhd hd, hd4o(<hdLjThd`slhdto(|o(bKckdxx$F0h8EHXm`l|pqrL$s4SDHPXNhvpVxAaBCPDeX ,g4<DP\GhI|ilnOoYQR T$t,U8@YLwTL$0PPX\`dP,|permanentnonpermanent.com.edu.net.org.gov.mil.intTRUEFALSETRUEFALSE/.abwb :JanFebMarAprMayJunJulAugSepOctNovDec(nil)HEADGETPragma: no-cache Connection: Keep-Alive */*ProxyHTTPabwbacceptaddhostdiralwaysrestbackgroundbackupconvertedbackupsbasebindaddresscachecontinueconvertlinkscookiescutdirsdebugdeleteafterdirprefixdirstructdomainsdotbytesdotsinlinedotspacingdotstyleexcludedirectoriesexcludedomainsfollowftpfollowtagsforcehtmlftpproxyglobheaderhtmlextensionhtmlifyhttpkeepalivehttppasswdhttpproxyhttpsproxyhttpuserignorelengthignoretagsincludedirectoriesinputkilllongerlimitrateloadcookieslogfileloginmirrornetrcnoclobbernoparentnoproxynumtriesoutputdocumentpagerequisitespassiveftppasswdprogressproxypasswdproxyuserquietquotarandomwaitreclevelrecursiverefererrejectrelativeonlyremovelistingretrsymlinksrobotssavecookiessaveheadersserverresponsespanhostsspidertimeouttimestampingtriesuseproxyuseragentverbosewaitwaitretryawbackgroundbackup-convertedcontinueconvert-linksdebugdelete-afterdont-remove-listingfollow-ftpforce-directoriesforce-hierforce-htmlhelphtml-extensionignore-lengthmirrorno-clobberno-directoriesno-host-directoriesno-host-lookupno-http-keep-aliveno-parentnon-verbosepassive-ftppage-requisitesquietrandom-waitrecursiverelativeretr-symlinkssave-headersserver-responsespan-hostsspidertimestampingverboseversionacceptappend-outputbackupsbasebind-addresscachecookiescut-dirsdirectory-prefixdomainsdot-styleexecuteexclude-directoriesexclude-domainsfollow-tagsglobheaderhtmlifyhttp-passwdhttp-userignore-tagsinclude-directoriesinput-filelevellimit-rateload-cookiesnooutput-documentoutput-fileprogressproxyproxy-passwdproxy-userquotarejectsave-cookiestimeouttriesuser-agentrefereruse-proxywaitwaitretryhpVqvdkKsxmNWrHSLcFbEY:G:g:T:U:O:l:n:i:o:a:t:D:A:R:P:B:e:Q:X:I:w:C:hpVqvdkKsxmNWrHSLcFbEY:G:g:T:U:O:l:n:i:o:a:t:D:A:R:P:B:e:Q:X:I:w:C:solaris2.8abwbSIGHUPSIGUSR1WTF?!.netrcloginpasswordmacdefaccountdotbarB/sK/sM/sG/s--delete-afterrecursive rejection criteriaAllowingRejectingB/sKB/sMB/sGB/s%7.2f %s%.2f %shttp://ftp://No errorUnsupported schemeEmpty hostBad port numberInvalid user name/index.html/index.html*password*11.8.2cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)unistd.h 1.58 99/11/11 SMI@(#)unistd.h 1.37 98/10/28 SMI@(#)limits.h 1.51 99/10/08 SMI@(#)limits_iso.h 1.1 99/08/09 SMI@(#)int_limits.h 1.6 99/08/06 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)unistd.h 1.58 99/11/11 SMI@(#)unistd.h 1.37 98/10/28 SMI@(#)assert.h 1.9 92/07/14 SMI@(#)socket.h 1.54 01/03/12 SMI@(#)uio.h 1.29 97/06/29 SMI@(#)netconfig.h 1.20 99/04/27 SMI@(#)in.h 1.31 00/10/28 SMI@(#)stream.h 1.86 00/10/23 SMI@(#)vnode.h 1.85 99/07/30 SMI@(#)t_lock.h 1.45 98/02/01 SMI@(#)machlock.h 1.21 00/04/27 SMI@(#)param.h 1.76 00/02/14 SMI@(#)mutex.h 1.20 98/02/01 SMI@(#)rwlock.h 1.9 98/02/18 SMI@(#)semaphore.h 1.5 98/02/01 SMI@(#)condvar.h 1.13 01/03/15 SMI@(#)cred.h 1.21 97/01/09 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)seg_enum.h 1.3 95/12/22 SMI@(#)poll.h 1.28 98/11/23 SMI@(#)strmdep.h 1.10 98/01/06 SMI@(#)model.h 1.20 97/09/22 SMI@(#)strft.h 1.2 00/10/23 SMI@(#)byteorder.h 1.14 98/04/19 SMI@(#)un.h 1.9 96/07/12 SMI@(#)if_dl.h 1.7 98/01/06 SMI@(#)netdb.h 1.25 01/05/08 SMI@(#)inet.h 1.18 01/01/16 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)assert.h 1.9 92/07/14 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)unistd.h 1.58 99/11/11 SMI@(#)unistd.h 1.37 98/10/28 SMI@(#)assert.h 1.9 92/07/14 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)unistd.h 1.58 99/11/11 SMI@(#)unistd.h 1.37 98/10/28 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)unistd.h 1.58 99/11/11 SMI@(#)unistd.h 1.37 98/10/28 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)assert.h 1.9 92/07/14 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)assert.h 1.9 92/07/14 SMI@(#)socket.h 1.54 01/03/12 SMI@(#)uio.h 1.29 97/06/29 SMI@(#)netconfig.h 1.20 99/04/27 SMI@(#)in.h 1.31 00/10/28 SMI@(#)stream.h 1.86 00/10/23 SMI@(#)vnode.h 1.85 99/07/30 SMI@(#)t_lock.h 1.45 98/02/01 SMI@(#)machlock.h 1.21 00/04/27 SMI@(#)param.h 1.76 00/02/14 SMI@(#)unistd.h 1.37 98/10/28 SMI@(#)mutex.h 1.20 98/02/01 SMI@(#)rwlock.h 1.9 98/02/18 SMI@(#)semaphore.h 1.5 98/02/01 SMI@(#)condvar.h 1.13 01/03/15 SMI@(#)cred.h 1.21 97/01/09 SMI@(#)seg_enum.h 1.3 95/12/22 SMI@(#)poll.h 1.28 98/11/23 SMI@(#)strmdep.h 1.10 98/01/06 SMI@(#)model.h 1.20 97/09/22 SMI@(#)strft.h 1.2 00/10/23 SMI@(#)byteorder.h 1.14 98/04/19 SMI@(#)un.h 1.9 96/07/12 SMI@(#)if_dl.h 1.7 98/01/06 SMI@(#)inet.h 1.18 01/01/16 SMI@(#)netdb.h 1.25 01/05/08 SMI@(#)utsname.h 1.26 98/12/03 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)assert.h 1.9 92/07/14 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)assert.h 1.9 92/07/14 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)unistd.h 1.58 99/11/11 SMI@(#)unistd.h 1.37 98/10/28 SMI@(#)assert.h 1.9 92/07/14 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)unistd.h 1.58 99/11/11 SMI@(#)unistd.h 1.37 98/10/28 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)socket.h 1.54 01/03/12 SMI@(#)uio.h 1.29 97/06/29 SMI@(#)netconfig.h 1.20 99/04/27 SMI@(#)in.h 1.31 00/10/28 SMI@(#)stream.h 1.86 00/10/23 SMI@(#)vnode.h 1.85 99/07/30 SMI@(#)t_lock.h 1.45 98/02/01 SMI@(#)machlock.h 1.21 00/04/27 SMI@(#)param.h 1.76 00/02/14 SMI@(#)mutex.h 1.20 98/02/01 SMI@(#)rwlock.h 1.9 98/02/18 SMI@(#)semaphore.h 1.5 98/02/01 SMI@(#)condvar.h 1.13 01/03/15 SMI@(#)cred.h 1.21 97/01/09 SMI@(#)seg_enum.h 1.3 95/12/22 SMI@(#)poll.h 1.28 98/11/23 SMI@(#)strmdep.h 1.10 98/01/06 SMI@(#)model.h 1.20 97/09/22 SMI@(#)strft.h 1.2 00/10/23 SMI@(#)byteorder.h 1.14 98/04/19 SMI@(#)un.h 1.9 96/07/12 SMI@(#)if_dl.h 1.7 98/01/06 SMI@(#)inet.h 1.18 01/01/16 SMI@(#)pwd.h 1.19 96/03/12 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)stdarg.h 1.45 99/08/10 SMI@(#)stdarg_iso.h 1.1 99/08/09 SMI@(#)unistd.h 1.58 99/11/11 SMI@(#)unistd.h 1.37 98/10/28 SMI@(#)assert.h 1.9 92/07/14 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)unistd.h 1.58 99/11/11 SMI@(#)unistd.h 1.37 98/10/28 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)signal.h 1.38 99/08/10 SMI@(#)signal_iso.h 1.1 99/08/09 SMI@(#)signal_iso.h 1.1 99/08/09 SMI@(#)signal.h 1.54 99/07/26 SMI@(#)locale.h 1.19 99/08/10 SMI@(#)locale_iso.h 1.1 99/08/09 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)md5.h 1.1 99/07/02 SMI@(#)md5.h 1.5 99/07/05 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)assert.h 1.9 92/07/14 SMI@(#)unistd.h 1.58 99/11/11 SMI@(#)unistd.h 1.37 98/10/28 SMI@(#)signal.h 1.38 99/08/10 SMI@(#)signal_iso.h 1.1 99/08/09 SMI@(#)signal_iso.h 1.1 99/08/09 SMI@(#)signal.h 1.54 99/07/26 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)unistd.h 1.58 99/11/11 SMI@(#)unistd.h 1.37 98/10/28 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)assert.h 1.9 92/07/14 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)assert.h 1.9 92/07/14 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)unistd.h 1.58 99/11/11 SMI@(#)unistd.h 1.37 98/10/28 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)assert.h 1.9 92/07/14 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)unistd.h 1.58 99/11/11 SMI@(#)unistd.h 1.37 98/10/28 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)assert.h 1.9 92/07/14 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)unistd.h 1.58 99/11/11 SMI@(#)unistd.h 1.37 98/10/28 SMI@(#)mman.h 1.38 99/05/19 SMI@(#)pwd.h 1.19 96/03/12 SMI@(#)limits.h 1.51 99/10/08 SMI@(#)limits_iso.h 1.1 99/08/09 SMI@(#)int_limits.h 1.6 99/08/06 SMI@(#)utime.h 1.8 92/07/14 SMI@(#)utime.h 1.9 97/08/12 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)fcntl.h 1.14 97/12/05 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMI@(#)fcntl.h 1.45 98/07/17 SMI@(#)assert.h 1.9 92/07/14 SMI@(#)ioctl.h 1.9 92/07/14 SMI@(#)termios.h 1.6 92/07/14 SMI@(#)termios.h 1.38 98/02/20 SMI@(#)ttydev.h 1.7 92/07/14 SMI@(#)libintl.h 1.12 97/08/20 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11acomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11ld: Software Generation Utilities - Solaris Link Editors: 5.8-1.273.interp.hash.dynsym.dynstr.SUNW_version.rela.ex_shared.rela.cpp_finidata.rela.data.rela.bss.rela.plt.text.init.fini.exception_ranges.rodata.rodata1.got.plt.dynamic.ex_shared.cpp_finidata.data.data1.bss.symtab.strtab.stab.index.comment.shstrtab.stab.indexstr  t  \ \"##o44-B550 =B55  PB55  [B55$ eB55L o;H;HuCCP{DHDHDDDD JJ^VDDHH ( ,tt 6 hF 070701000004f3000041ed0000418900000065000000024a36513e00000000000001380000012700000000000000000000001100000000root/opt/csw/bin070701000004f4000081a40000418900000065000000014a365139000016ee000001380000012700000000000000000000001800000000root/opt/csw/bin/bldcat#!/opt/csw/bin/perl -w # bldcat - build a CSW catalog from packages in a directory # Copyright (C) 2008-2009 Peter Bonivart # $Id: bldcat 40 2009-05-04 12:43:19Z bonivart $ use strict; use Digest::MD5; my $tmpdir = "/tmp/bldcat.$$.$^T"; my $pkgdir = "."; my ($deptmp,$status,$pkgname); my ($description,$common,$version,$package,$pkgfile,$hash,$size,$deps,$category); my %oldcatalog; my %olddescriptions; $pkgdir = $ARGV[0] if $ARGV[0]; if ($#ARGV > 0) { print STDERR "Usage: $0 []\n"; exit 1; } if (open (CATALOG,"$pkgdir/catalog")) { while () { chomp; my @line = split /\s+/; my $hash = $line[4]; $oldcatalog{$hash} = \@line; } close CATALOG; } if (open (DESCRIPTIONS,"$pkgdir/descriptions")) { while () { chomp; my @line = split /\s+/; my $common = $line[0]; $olddescriptions{$common} = $_; } close DESCRIPTIONS; } open (CATALOG,">$pkgdir/catalog.new") || die "Could not write new catalog at $pkgdir/catalog.new: $!"; open (DESCRIPTIONS,">$pkgdir/descriptions.new") || die "Could not write new descriptions at $pkgdir/descriptions.new: $!"; foreach my $file (glob "$pkgdir/*") { ($common,$version,$package,$pkgfile,$hash,$size,$deps,$category) = ("","","","","","","",""); next unless (-r $file); # must be a readable file next unless ($file =~ /\.pkg(\.gz)?$/); # must end with .pkg or .pkg.gz # Calculate hash before we do anything else to look up the cache if (! $hash) { open (FILE2,"<$file") || die "Could not open $file: $!\n"; binmode (FILE2); $hash = Digest::MD5->new->addfile(*FILE2)->hexdigest; close FILE2; } if (exists $oldcatalog{$hash} && exists $olddescriptions{$oldcatalog{$hash}[0]}) { print "Reusing old information for $file\n"; print CATALOG join(' ', @{$oldcatalog{$hash}}), "\n"; print DESCRIPTIONS $olddescriptions{$oldcatalog{$hash}[0]}, "\n"; next; } print "Inspecting $file\n"; # unpack package if (! -d "$tmpdir") { mkdir $tmpdir || die "Could not create directory $tmpdir: $!\n"; } my $DECOMPRESS = ($file =~ /\.gz$/ ? "/bin/gzip -c -d $file" : "cat $file"); $status = system("$DECOMPRESS | /bin/pkgtrans /dev/fd/0 $tmpdir all 2> /dev/null"); die "Could not transform $file: $!" if $status; foreach (glob "$tmpdir/*") { ($pkgname) = (/([\w\+-]+)$/) if (-d); } open (FILE,"<$tmpdir/$pkgname/pkginfo") || die "Could not open $tmpdir/$pkgname/pkginfo: $!"; while (my $line = ) { chomp $line; # field 1: common name if ($line =~ /^NAME=/) { ($description,$common) = ($line =~ /=((.+?)\s.*)/); next; } # field 2: version if ($line =~ /^VERSION=/) { ($version) = ($line =~ /=(.+)$/); next; } # field 3: package name if ($line =~ /^PKG=/) { ($package) = ($line =~ /=(.+)$/); next; } # field 4: filename if (! $pkgfile) { ($pkgfile) = ($file =~ /\//) ? ($file =~ /\/(.+)$/) : ($file); } # field 5: md5 hash # Already computed # field 6: file size if (! $size) { $size = (stat($file))[7]; } # field 8: categories if ($line =~ /^CSW_CATEGORY=/) { ($category) = ($line =~ /=(.+)$/); $category = join('|',split(/,\s?/,$category)); next; } } close FILE; # field 7: dependencies $deps = ""; if (-r "$tmpdir/$pkgname/install/depend") { open (FILE,"<$tmpdir/$pkgname/install/depend"); while () { chomp; if (/^P\s+CSW/) { ($deptmp) = (/P\s+(\S+)/); if ($deptmp ne $pkgname) { # skip if circular $deps = ($deps) ? "$deps|$deptmp" : $deptmp; } } } close FILE; } # clean up $status = system("/bin/rm -rf $tmpdir"); die "Could not delete files in $tmpdir: $!" if $status; $deps = "none" unless $deps; $category = "none" unless $category; print CATALOG "$common $version $package $pkgfile $hash $size $deps $category\n"; print DESCRIPTIONS "$description\n"; } close DESCRIPTIONS; close CATALOG; unlink "$pkgdir/descriptions"; # May or may not be there link "$pkgdir/descriptions.new", "$pkgdir/descriptions" or die "Cannot link $pkgdir/descriptions.new to $pkgdir/descriptions: $!"; unlink "$pkgdir/descriptions.new" or die "Cannot unlink $pkgdir/descriptions.new: $!"; unlink "$pkgdir/catalog"; # May or may not be there link "$pkgdir/catalog.new", "$pkgdir/catalog" or die "Cannot link $pkgdir/catalog.new to $pkgdir/catalog: $!"; unlink "$pkgdir/catalog.new" or die "Cannot unlink $pkgdir/catalog.new: $!"; exit 0; =head1 NAME bldcat - build a CSW catalog from packages in a directory. =head1 SYNOPSIS bldcat =head1 DESCRIPTION Build a CSW catalog from packages in a directory. =head1 EXAMPLES =head2 Example 1 C<# bldcat catalog> Will build a catalog from packages in the current directory. =head1 SEE ALSO http://pkgutil.wikidot.com http://pkgutil.sourceforge.net =head1 AUTHOR Peter Bonivart =head1 CREDITS Dagobert Michelsen Derek Whayman For more details, see the readme file. =head1 COPYRIGHT AND DISCLAIMER Copyright (C) 2008-2009 Peter Bonivart. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. =cut 070701000004f5000081a40000418900000065000000014a365139000028eb000001380000012700000000000000000000001800000000root/opt/csw/bin/chkcat#!/opt/csw/bin/perl -w # chkcat - check that a CSW catalog is consistent # Copyright (C) 2008-2009 Peter Bonivart # $Id: chkcat 43 2009-05-05 16:06:27Z bonivart $ use strict; use Digest::MD5; use Getopt::Long; Getopt::Long::Configure qw(no_ignore_case bundling); my @pkglist; my ($verbose,$hash,$catalog,$status,$deps,$deptmp,$cat,$help,$quiet, $erroronly,$pkgver); my $prefix = "."; my $tmpdir = "/tmp/chkcat.$$.$^T"; my %pkg; my $rc = 0; usage() if (@ARGV == 0); GetOptions("v|verbose" => \$verbose, "h|help" => \$help, "q|quiet" => \$quiet, "e|erroronly" => \$erroronly) || usage(); usage() if $help; if ($#ARGV >= 0) { $catalog = $ARGV[0]; } else { usage(); } sub usage { print "Chkcat, check CSW catalog for problems.\n\n"; print "Usage: chkcat [-veqh] \n"; print "\n -v, --verbose\t\tVerbose mode"; print "\n -e, --erroronly\tOnly show errors (supress warnings)"; print "\n -q, --quiet\t\tNo output (only return codes)"; print "\n -h, --help\t\tShow this help\n"; print "\nWritten and maintained by Peter Bonivart.\n"; exit 1; } sub retcode { my ($rctmp) = @_; $rc = $rctmp if ($rctmp > $rc); } (-r $catalog) || die "Can't open $catalog"; # must be a readable file ($prefix) = ($catalog =~ /^(.+)\//) if ($verbose && $catalog =~ /\//); my (@tmp) = `cat $catalog`; while ($#tmp >= 0) { my $line = $tmp[0]; shift @tmp; chomp $line; if ($line =~ /-BEGIN PGP SIGNED MESSAGE-/) { shift @tmp; shift @tmp; shift @tmp; next; } last if ($line =~ /-BEGIN PGP SIGNATURE-/); next if ($line =~ /^#/); my @line = split(/\s+/,$line); $pkg{$line[2]} = 1 if ($line[2] =~ /^CSW/); } (@tmp) = `cat $catalog`; while ($#tmp >= 0) { my $line = $tmp[0]; shift @tmp; chomp $line; my (@field) = split(/ /,$line); # if gpg signed catalog, skip a few lines in the beginning if ($line =~ /-BEGIN PGP SIGNED MESSAGE-/) { print "Skipping signature at start of file.\n" unless ($erroronly || $quiet); shift @tmp; shift @tmp; shift @tmp; next; } # if gpg signature found at the end, exit if ($line =~ /-BEGIN PGP SIGNATURE-/) { print "\nSkipping signature at end of file.\n" unless ($erroronly || $quiet); last; } # if line starts with a comment, skip if ($line =~ /^#/) { print "Skipping comment.\n" unless ($erroronly || $quiet); next; } # number of fields, should be 8 if ($#field != 7) { retcode(2); if (! $quiet) { print "\nERROR! ",$#field + 1," fields instead of normal 8. [$line]\n"; } next; } # packages that are not compressed, normal for gzip and pkg-get if ($field[3] !~ /\.gz$/) { retcode(1); if (! $erroronly && ! $quiet) { print "\nWARNING! Package $field[2] is not compressed. [$line]\n"; } } # check the naming standard - http://opencsw.org/standards/build#versioning my ($name, $version, $uname, $arch, $footer, $rest) = split /-/, $field[3]; if (! $footer && $arch) { # assume arch is missing - it is optional after all $footer = $arch; $arch = ''; } if ($arch && ($arch ne 'i386' && $arch ne 'sparc' && $arch ne 'all')) { retcode(1); if (! $erroronly && ! $quiet) { print "\nWARNING! Package $field[2] has an unknown architecture. [$line]\n"; } } if ($rest) { retcode(1); if (! $erroronly && ! $quiet) { print "\nWARNING! Package $field[2] does not meet the CSW naming standard - too many hyphens. [$line]\n"; } } if ($field[3] !~ /\.pkg(\.gz)?$/) { retcode(1); if (! $erroronly && ! $quiet) { print "\nWARNING! Package $field[2] does not meet the CSW naming standard - should end in .pkg(.gz). [$line]\n"; } } if (! $version || $version !~ /[0-9\.]+,REV=(\d{4})\.(\d{2})\.(\d{2})/) { retcode(1); if (! $erroronly && ! $quiet) { print "\nWARNING! Package $field[2] does not meet the CSW naming standard - REV section incorrect. [$line]\n"; } } # check that dependency field begins and ends with a word char if ($field[6] !~ /^\w/) { retcode(2); if (! $quiet) { print "\nERROR! The dependency field of package $field[2] begins with a non-char. [$line]\n"; } } if ($field[6] =~ /\|$/) { # non-char is actually used, e.g. gcc2g++ retcode(2); if (! $quiet) { print "\nERROR! The dependency field of package $field[2] ends with a pipe char. [$line]\n"; } } # check that no dependencies are missing if ($field[6] ne "none") { foreach (split(/\|/,$field[6])) { if (! $pkg{$_}) { retcode(1); print "\nWARNING! Dependency $_ of package $field[2] is missing.\n" unless ($erroronly || $quiet); } } } # check for circular dependencies if ($field[6] ne "none") { foreach (split(/\|/,$field[6])) { if ($_ eq $field[2]) { retcode(2); print "\nERROR! Circular dependency detected in package $field[2].\n" unless $quiet; } } } # check that category field begins and ends with a word char if ($field[7] !~ /^\w/) { retcode(2); if (! $quiet) { print "\nERROR! The category field of package $field[2] begins with a non-char. [$line]\n"; } } if ($field[7] !~ /\w$/) { retcode(2); if (! $quiet) { print "\nERROR! The category field of package $field[2] ends with a non-char. [$line]\n"; } } # if in verbose mode, check catalog entries against packages if found in # same directory as catalog if ($verbose) { if (! -r "$prefix/$field[3]") { # does the file exist? retcode(2); print "ERROR! File $field[3] not found.\n" unless $quiet; } else { if ($field[5] != (stat("$prefix/$field[3]"))[7]) { # correct size? retcode(2); print "ERROR! Size does not match for $field[2].\n" unless $quiet; } open (FILE,"<$prefix/$field[3]"); # MD5 check binmode (FILE); $hash = Digest::MD5->new->addfile(*FILE)->hexdigest; close FILE; if ($hash ne $field[4]) { retcode(2); print "ERROR! MD5 hash does not match for $field[2].\n" unless $quiet; } # unpack package if depends and/or categories are not "none" if (! -d "$tmpdir") { mkdir $tmpdir || die "Could not create directory $tmpdir: $!\n"; } $status = system("/bin/gunzip -cf $prefix/$field[3] | /bin/pkgtrans /dev/fd/0 $tmpdir all 2> /dev/null"); die "Could not transform $field[2]: $!" if $status; # check deps against depend file in package if ($field[6] ne "none") { $deps = ""; if (-r "$tmpdir/$field[2]/install/depend") { open (FILE,"<$tmpdir/$field[2]/install/depend"); while () { chomp; if (/^P\s+\w/) { ($deptmp) = (/P\s+([\w\+-]+)/); $deps = ($deps) ? "$deps|$deptmp" : $deptmp; } } } else { print "No depend file found in $field[2]\n" unless $quiet; } if ($deps ne $field[6]) { retcode(2); print "ERROR! Dependencies does not match for $field[2].\n" unless $quiet; } } # check categories against pkginfo file in package if ($field[7] ne "none") { $pkgver = ""; $cat = ""; open (FILE,"<$tmpdir/$field[2]/pkginfo"); while () { chomp; if (/^CSW_CATEGORY=/) { ($cat) = (/=(.+)$/) if (/^CSW_CATEGORY=/); $cat = join('|',split(/,\s?/,$cat)); } elsif (/^VERSION=(\S+)/) { $pkgver = $1; } last if $cat && $pkgver; } } if ($field[7] ne "none") { if ($cat ne $field[7]) { retcode(2); print "ERROR! Categories does not match for $field[2].\n" unless $quiet; } } # check version field matches filename if ($pkgver && $version && $pkgver ne $version) { retcode(2); print "ERROR! version in filename doesn't match version in pkginfo for $field[2].\n" unless $quiet; } # clean up $status = system("/bin/rm -rf $tmpdir"); die "Could not delete files in $tmpdir: $!" if $status; } } # add package to array for later duplicate check push(@pkglist,$field[2]); } my @tmplist = sort(@pkglist); my $dup = ""; while ($#tmplist > 0) { # no need to check for dups if only one entry my $tmp = $tmplist[0]; shift @tmplist; if ($tmp eq $tmplist[0] && $dup ne $tmp) { retcode(2); print "ERROR! $tmp exists more than once.\n" unless $quiet; $dup = $tmp; } } exit $rc; =head1 NAME chkcat - check CSW catalog for problems =head1 SYNOPSIS chkcat [-veqh] =head1 DESCRIPTION Check CSW catalog for problems. =head1 OPTIONS =over 5 =item B<-v, --verbose> Verbose mode. Will compare size, MD5 hash, dependencies and categories specified in catalog against the information in the actual package. The packages must be in the current directory. =item B<-e, --erroronly> Only show errors (supress warnings). =item B<-q, --quiet> No output (only return codes). =item B<-h, --help> Show this help. =back =head1 EXAMPLES =head2 Example 1 C<# chkcat catalog> Will check catalog for problems. =head2 Example 2 C<# chkcat -q catalog> Will supress all output and only generate a return code, 0 for OK, 1 for warnings found and 2 for errors found. =head1 EXIT STATUS The following exit values are returned: 0 OK 1 Warning 2 Error =head1 SEE ALSO http://pkgutil.wikidot.com http://pkgutil.sourceforge.net =head1 AUTHOR Peter Bonivart =head1 CREDITS Derek Whayman For more details, see the readme file. =head1 COPYRIGHT AND DISCLAIMER Copyright (C) 2008-2009 Peter Bonivart. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. =cut 070701000004f6000081a40000418900000065000000014a3651390000a596000001380000012700000000000000000000001900000000root/opt/csw/bin/pkgutil#!/usr/bin/env perl -w # pkgutil - manages packages on Sun Solaris systems # Copyright (C) 2008-2009 Peter Bonivart # $Id: pkgutil 59 2009-06-05 13:11:02Z bonivart $ # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. # # The author, Peter Bonivart, can be contacted by email at bonivart@blastwave.org use strict; use Getopt::Long; Getopt::Long::Configure qw(no_ignore_case bundling); my $debug = 0; my $pkgutilver = "1.6.1"; my $use_md5 = 0; my $use_gpg = 0; my $noncsw = 0; my @mirror; my $defaultmirror = ("http://blastwave.network.com/csw/unstable"); my $workdir = "/var/opt/csw/pkgutil"; my $pkgdir; my $admin; my ($line,$tmp,$wget,$force,$nomod,$gzip,$name,$ver,$pkgname,$filename,$hash,$size,$deps,$cat,$tmppkg,$tmppkg2,$trace); my (@exclude,%config,%pkg,%commonpkg,%pkgmirror); chomp(my $arch = `uname -p`); chomp(my $rel = `uname -r`); # show available packages in catalog sub available { foreach my $common (sort keys %commonpkg) { my $pkgname = $commonpkg{$common}; foreach my $vers (sort keys %{$pkg{$pkgname}}) { my($size) = (split /\s+/, $pkg{$pkgname}{$vers})[5]; my $tmp = sprintf ("%-20s %-20s %-25s %9s\n",$common,$pkgname,$vers,format_byte($size)); if ($#ARGV >= 0) { foreach (@ARGV) { print $tmp if ("$pkgname-$vers" =~ /$_/i || "$common-$vers" =~ /$_/i); } } else { print $tmp; } } } exit 0; } # check catalog # always - always update catalog sub check_catalog { my($always) = @_; foreach my $url (@mirror) { my $filename = mangle_url($url); my $age = 0; $age = -M $filename if (-r $filename); print "Catalog $url age in days: $age\n" if $debug; fetch_catalog($url, $filename) if ($age > 14 || ! -e $filename || $always); gpg($filename) if $use_gpg; read_catalog($url, $filename); # Once per file } } # check if package is already installed and if so, which version # pkg - package to check for # mode - 0 = return full string, 1 = return only rev part sub check_pkg { my ($pkg,$mode) = @_; my ($tmp,$exit_code,$retvalue); $tmp = `/bin/pkgparam $pkg VERSION 2> /dev/null`; $exit_code = $?; chomp $tmp; if (! $exit_code) { if ($mode == 0) { $retvalue = $tmp; } else { ($retvalue) = ($tmp =~ /REV=(.+)$/); } print "$pkg installed, version $retvalue\n" if $debug; } if ($exit_code > 0) { $retvalue = "notinst"; print "$pkg not installed\n" if $debug; } return $retvalue; } # compare current to available packages # mode - 0 = print full list, 1 = return list of old packages # 2 = return full list of old packages, 3 = same as 0 but only diffs sub compare { my ($mode) = @_; my (@cswpkgs,@retlist); my ($pkg,$local_ver,$remote_ver,$tmp); print "package\t\t\t installed\t\t catalog\n" if ($mode == 0 || $mode == 3); if ($noncsw) { @cswpkgs = `/bin/pkginfo`; } else { @cswpkgs = `/bin/pkginfo | grep CSW`; } foreach $pkg (@cswpkgs) { ($pkg) = ($pkg =~ /\s+?(\S+?)\s/); $local_ver = check_pkg($pkg,0); $remote_ver = parse_catalog($pkg,1); $remote_ver = "SAME" if ($local_ver eq $remote_ver); if ($mode == 1) { push(@retlist,$pkg) if ($remote_ver ne "SAME" && $remote_ver ne "not in catalog"); } else { $tmp = sprintf ("%-25s %-25s %-25s\n",$pkg,$local_ver,$remote_ver); if ($mode == 2) { push(@retlist,$tmp) if ($remote_ver ne "SAME" && $remote_ver ne "not in catalog"); } else { if ($#ARGV >= 0) { foreach (@ARGV) { if ($pkg =~ /$_/i) { print $tmp unless ($mode == 3 && $remote_ver eq "SAME"); } } } else { print $tmp unless ($mode == 3 && $remote_ver eq "SAME"); } } } } if ($mode == 1 || $mode == 2) { return @retlist; } else { exit 0; } } # email notifications when updates are available # email - address to send notications to sub email { my ($email) = @_; my $file = "/tmp/pkgutil.$$.$^T"; die "Mailx not found on system!\n" if (! -x "/bin/mailx"); my @update_list = compare(2); if ($#update_list >= 0) { open (FILE,">$file") or die "Can't open $file: $!\n"; foreach (@update_list) { print FILE; } close FILE; chomp(my $host = `uname -n`); my $subject = "$host: CSW updates available"; my @args = ("/bin/mailx -s \"$subject\" $email < $file"); system (@args); unlink $file; } exit 0; } # fetch catalog # url - url to download from # filename - filename to use for local catalog sub fetch_catalog { my($url, $filename) = @_; my $wgetopts = ""; my $status; $wgetopts .= " $config{wgetopts}" if $config{wgetopts}; print "Fetching new catalog $url if available...\n"; die "Option -n selected, stopping here.\n" if $nomod; if ($url =~ /^file:/) { my ($tmpcatsrc) = ($url =~ /^file:\/(.+)$/); $status = system("/bin/cp $tmpcatsrc/catalog $filename"); } else { $status = system("$wget $wgetopts -O $filename $url/catalog"); } system("/bin/touch $filename") if (-w $filename); if ($status) { print "\nFetching of catalog failed.\n"; exit 1; } } # get wanted package and its dependencies # pkglist - packages to fetch # mode - 4 = stream silent sub fetch_pkgs { my ($mode,@pkglist) = @_; my $wgetopts = ""; my ($file,$status); my $fh = ($mode == 4 ? *STDERR : *STDOUT); if ($#pkglist > 0 && ! $force) { print $#pkglist + 1 . " packages to fetch. Do you want to continue? [Y,n] "; chomp (my $prompt = ); if ($prompt =~ /^[nN]/) { unlink $admin if (-r $admin); exit 1; } } $wgetopts .= " $config{wgetopts}" if $config{wgetopts}; foreach (@pkglist) { $file = parse_catalog($_,3); if (-r "$pkgdir/$file" && -s _ != parse_catalog($_,5)) { # broken/empty files may be present print $fh "Removing non-matching local file.\n"; unlink "$pkgdir/$file"; } if (-r "$pkgdir/$file") { print $fh "A local copy of $_ exists and is of matching size.\n"; } else { print $fh "Fetching $_...\n"; locate_wget() if (-x $wget); # if wget disappeared locate alt. my $tried; foreach (@{$pkgmirror{$file}}) { $tried = 1; if ($_ =~ /^file:/) { my ($tmpcatsrc) = ($_ =~ /^file:\/(.+)$/); $status = system("/bin/cp $tmpcatsrc/$file $pkgdir/$file"); } else { $status = system("$wget $wgetopts -O $pkgdir/$file $_/$file"); } last unless $status; } if ($status || ! $tried) { print "\nFetching of $_ failed. Try updating your catalog with pkgutil -U.\n"; exit 1; } } md5($_,"$pkgdir/$file",$mode) if $use_md5; } } # format size in bytes to more human friendly format with suffixes # size - size in bytes sub format_byte { my ($size) = @_; my $suffix = "B"; if ($size > 1024) { $size /= 1024; $suffix = "KB"; } if ($size > 1024) { $size /= 1024; $suffix = "MB"; } if ($size > 1024) { $size /= 1024; $suffix = "GB"; } return sprintf ("%1.1f %s",$size,$suffix); } # check signature on catalog sub gpg { my ($catalog) = @_; my $line; my $gpg_signed_catalog = 0; if (! -x "/opt/csw/bin/gpg") { print "GPG not found! Install CSWgnupg or disable use_gpg in pkgutil.conf.\n"; exit 1; } open (CATALOG,"<$catalog") or die "Can't open $catalog: $!\n"; while ($line = ) { $gpg_signed_catalog = 1 if ($line =~ /-BEGIN PGP SIGNED MESSAGE-/); last; } close CATALOG; print "GPG catalog: $gpg_signed_catalog\n" if $debug; if ($gpg_signed_catalog) { print "Checking catalog integrity with gpg.\n"; rename($catalog, $catalog . ".asc") or die "Couldn't rename catalog!\n"; my $status = system("/opt/csw/bin/gpg $catalog.asc"); die "Catalog signature is not correct!\n" if $status; rename($catalog . ".asc", $catalog) or die "Couldn't rename catalog!\n"; print "Status GPG: $status\n" if $debug; } else { print "Catalog $catalog is not signed! Check your mirror settings or disable use_gpg in pkgutil.conf.\n"; exit 1; } } # init sub init { my ($conf) = @_; my @conf_file; if ($conf) { @conf_file = ($conf); } else { @conf_file = ("/opt/csw/etc/pkgutil.conf","/etc/opt/csw/pkgutil.conf"); } %config = ("mirror" => [], "pkgaddopts" => "", "wgetopts" => "", "use_gpg" => "", "use_md5" => "", "noncsw" => ""); foreach (@conf_file) { if (-r $_) { # if conf file found, parse it print "Conf file: $_\n" if $debug; open (CONFIG,"<$_") or die "Can't open $_: $!\n"; while () { chomp; # remove newline s/#.*//; # remove comments s/^\s+//; # remove leading white s/\s+$//; # remove trailing white next unless length; # next if nothing left my ($var,$value) = split(/\s*=\s*/,$_,2); print "Found $var = $value\n" if $debug; my $r = ref($config{$var}); if (! $r) { $config{$var} = $value; } elsif ($r eq 'ARRAY') { push(@{$config{$var}},$value); } } close CONFIG; } } if ($debug) { print "mirror: " . join("\t", @{$config{mirror}}) . "\n"; print "pkgaddopts: $config{pkgaddopts}\n"; print "wgetopts: $config{wgetopts}\n"; print "use_gpg: $config{use_gpg}\n"; print "use_md5: $config{use_md5}\n"; print "noncsw: $config{noncsw}\n"; } $use_md5 = $use_gpg = $noncsw = 0; $use_md5 = 1 if ($config{use_md5} eq "true"); $use_gpg = 1 if ($config{use_gpg} eq "true"); $noncsw = 1 if ($config{noncsw} eq "true" || $config{noncsw} eq "yes"); } # install packages # pkglist - packages to install sub inst_pkgs { my @pkglist = @_; my $tmp = ""; my $pkgadd = "/usr/sbin/pkgadd"; my $pkgaddopts = ""; my $pkgrm = "/usr/sbin/pkgrm"; my $file; my $name; my $pkgtrace = ""; $pkgaddopts .= " $config{pkgaddopts}" if $config{pkgaddopts}; $pkgtrace = "-v" if $trace; foreach (@pkglist) { my $pkgforce = ""; $pkgforce = "-a $admin -n" if ($force && -r $admin); my ($pkgname) = ($_ =~ /^(.+)-/); $tmp = check_pkg($pkgname,0); if ($tmp ne "notinst") { print "Removing old version of $pkgname\n"; system("$pkgrm $pkgforce $pkgtrace $pkgname`"); } $file = parse_catalog($_,3); $name = parse_catalog($_,2); print "Installing $_\n"; if ($file =~ /\.gz$/) { # not all packages are compressed my $status = locate_gzip(); if (! $status) { if ($force) { `$gzip -f -d $pkgdir/$file`; } else { `$gzip -d $pkgdir/$file`; } } else { print "\nGzip not found, please install CSWgzip.\n"; exit 1; } ($file) = ($file =~ /(.+)\.gz$/); } system("$pkgadd $pkgforce $pkgtrace $pkgaddopts -d $pkgdir/$file $name`"); unlink "$pkgdir/$file" or die "Can't delete $pkgdir/$file: $!\n"; } } # install (-i) option # mode - 0 = install, 1 = download only, 2 = remove, 3 = stream, # 4 = stream silent sub install { my ($mode) = @_; my $retvalue; my (@tmppkglist,@revpkglist,@newpkglist,@instpkglist,@updpkglist,@curpkglist,@dlpkglist); my $fh = ($mode == 4 ? *STDERR : *STDOUT); my(%pkgvers, @pkglist); # @pkglist is specifically in the correct order. print $fh "Parsing catalog, may take a while...\n"; foreach my $tmppkg (@ARGV) { my $tmp = parse_catalog($tmppkg,2); my $vers = parse_catalog($tmppkg,1); if ($tmp ne 'not in catalog' && ($tmp =~ /^CSW/ || $noncsw)) { push(@pkglist,$tmp); $pkgvers{$tmp} = $vers; } else { print "Package $tmppkg not in catalog...exiting.\n"; exit 1; } } foreach my $tmppkg2 (@pkglist) { # N.B. This array grows and we keep looping until we've satisfied all # of the dependencies. my @tmpdeps; if ($tmppkg2 ne "CSWcommon") { $retvalue = parse_catalog($tmppkg2,6); if ($retvalue eq "not in catalog") { system("pkginfo -q $tmppkg2"); next if $? == 0; # already installed... forgive its absence from the catalog print "Package $tmppkg2 not in catalog...exiting.\n"; exit 1; } else { @tmpdeps = split(/\|/,$retvalue); print "depmap: $tmppkg2 -> ", $retvalue, "\n" if $debug; } } else { next; } if ($tmpdeps[0] ne "none") { foreach my $dep (@tmpdeps) { # there is no support for dependencies against a particular version, e.g. CSWzope-3.3.1, just CSWzope if (! exists $pkgvers{$dep}) { $pkgvers{$dep} = parse_catalog($dep,1); } push(@pkglist,$dep); # append to list, does not include deduplication } } next; } print "pkglist ", join(",", @pkglist), "\n" if $debug; # clean list from excludes. Delete from the %pkgvers hash: foreach my $pkg (@exclude) { delete $pkgvers{$pkg} if exists $pkgvers{$pkg}; } # now reverse and deduplicate @pkglist. Need the last instance of each # package if reading @pkglist forwards. my %deduped; for my $pkg (reverse @pkglist) { next unless $pkgvers{$pkg}; # not if excluded unless (exists $deduped{$pkg}) { push(@revpkglist,$pkg); $deduped{$pkg} = 1; } } if ($mode == 2) { # if -r used if ($#revpkglist >= 0) { rem_pkgs(reverse @revpkglist); } } print "revpkglist ", join(",", @revpkglist), "\n" if $debug; # which packages do we really need to download? if ($mode != 3 && $mode != 4) { foreach (@revpkglist) { my $old = check_pkg($_,0); my $new = $pkgvers{$_}; if ($old eq "notinst") { # new package needed push(@newpkglist,"$_-$new"); } else { # package already installed if (verscmp($new,$old) == 1) { push(@updpkglist,"$_-$new"); # updated package needed } else { push(@curpkglist,"$_-$old"); # package is current } } } } else { # if -s or -d then just copy revpkglist to newpkglist foreach (@revpkglist) { push(@newpkglist,"$_-$pkgvers{$_}"); } } if ($#newpkglist >= 0) { print $fh "New packages: ", join(" ", @newpkglist), "\n"; } if ($mode != 3 && $mode != 4) { # not needed if -s if ($#updpkglist >= 0) { print "Updated packages: ", join(" ", @updpkglist), "\n"; } if ($#curpkglist >= 0) { print "Current packages: ", join(" ", @curpkglist), "\n"; } } # what packages do we need to fetch? # make sure they are in correct order foreach my $i (@revpkglist) { my $hit = 0; foreach (@curpkglist) { my ($j) = ($_ =~ /^(.+)-/); if ($i eq $j) { $hit = 1; print "i: $i j: $j hit: $hit\n" if $debug; last; } print "i: $i j: $j hit: $hit\n" if $debug; } my $tmp = "$i-$pkgvers{$i}"; push(@dlpkglist,$tmp) unless $hit; } print "dlpkglist ", join(",", @dlpkglist), "\n" if $debug; # print size of download if ($#dlpkglist >= 0) { foreach (@dlpkglist) { $size += parse_catalog($_,5); } print $fh "Total size: " . format_byte($size) . "\n"; } die "Option -n selected, stopping here.\n" if ($nomod); if ($#dlpkglist >= 0) { fetch_pkgs($mode,@dlpkglist); } return @revpkglist if ($mode == 3 || $mode == 4); # is -s used if ($mode == 0) { # if -d not used, install if ($#dlpkglist >= 0) { inst_pkgs(@dlpkglist); } } unlink $admin if (-r $admin); exit 0; } # find gzip sub locate_gzip { my @locations = ("/opt/csw/bin","/bin","/usr/local/bin"); foreach (@locations) { if (-x "$_/gzip") { $gzip = "$_/gzip"; last; } } print "gzip: $gzip\n" if $debug; return 1 if (! $gzip); } # find wget sub locate_wget { my @locations = ("/opt/csw/bin","/usr/sfw/bin","/usr/local/bin"); my $libexec = "/opt/csw/libexec/pkgutil"; foreach (@locations) { if (-x "$_/wget") { $wget = "$_/wget"; last; } } if (! $wget) { $wget = "$libexec/wget" if (-x "$libexec/wget"); } print "wget: $wget\n" if $debug; return 1 if (! $wget); } # make a filename from the URL - /es to _es. # url - url to mangle sub mangle_url { my($url) = @_; (my $mangled = $url) =~ s?\w+://??; $mangled =~ s?/?_?g; my $filename = "$workdir/catalog.$mangled"; return $filename; } # check md5 on downloaded files # mode - 4 = stream silent sub md5 { my ($pkg,$file,$mode) = @_; my $md5; my $fh = ($mode == 4 ? *STDERR : *STDOUT); eval { require Digest::MD5; }; if ($@) { if (-x "/opt/csw/bin/gmd5sum") { die "Can't open $file: $!\n" unless (-r $file); $md5 = `/opt/csw/bin/gmd5sum $file`; ($md5) = ($md5 =~ /^(.*\w) /); } else { print "\nMD5 support not available! Install CSWtextutils to get MD5\n"; print "support. Another alternative is to install CSWperl and use\n"; print "that for pkgutil. Do that by having /opt/csw/bin before\n"; print "/usr/bin in your path.\n"; exit 1; } } else { open (FILE,"<$file") or die "Can't open $file: $!\n"; binmode (FILE); $md5 = Digest::MD5->new->addfile(*FILE)->hexdigest; close FILE; } my $md5cat = parse_catalog($pkg,4); print "$pkg md5 file: $md5\n$pkg md5 cat: $md5cat\n" if $debug; die "MD5 for $pkg doesn't match catalog!" if ($md5 ne $md5cat); print $fh "MD5 for $pkg matched.\n"; } # parse catalog # pkg - package to look for, can be both common name and true name # mode - what we want to return, field number from catalog sub parse_catalog { my ($pkg,$mode) = @_; my ($retvalue, $name); print "Parsing catalog...looking for: $pkg (mode $mode)\n" if $debug; # do we have an embedded version? my @p = split /-/, $pkg; my $vers = pop @p; my $tryname = join('-', @p); # first check the whole name without stripping off a "version" # e.g. CSWdovecot-devel: if ($pkg{$pkg}) { # SysV, no version (e.g. CSWdovecot-devel) $name = $pkg; undef $vers; } elsif ($commonpkg{$pkg} && $pkg{$commonpkg{$pkg}}) { # Common (e.g. dovecot_devel) $name = $commonpkg{$pkg}; undef $vers; } elsif ($pkg{$tryname}) { # SysV, version (e.g. CSWdovecot-devel-1.0.13,REV=2008.03.16) $name = $tryname; } elsif ($commonpkg{$tryname} && $pkg{$commonpkg{$tryname}}) { # Common (e.g. dovecot_devel-1.0.13,REV=2008.03.16) $name = $commonpkg{$tryname}; } if ($name) { # have we a version match? if ($vers && exists $pkg{$name}{$vers}) { $retvalue = (split(/ /,$pkg{$name}{$vers}))[$mode]; } elsif (! $vers) { # we may have multiple versions in the catalog, take the highest # note this won't work unless at least one has a REV in it my $highest = (sort { verscmp($b, $a) } keys %{$pkg{$name}})[0]; $retvalue = (split(/ /,$pkg{$name}{$highest}))[$mode]; } else { $retvalue = "not in catalog" if (! $retvalue); } } else { $retvalue = "not in catalog" if (! $retvalue); } print "Return value: $retvalue\n" if $debug; return $retvalue; } # parse command line sub parse_cl { my ($opt_install,$opt_upgrade,$opt_remove,$opt_download,$opt_avail, $opt_compare,$opt_upd_cat,$opt_email,@opt_temp,$opt_help,$opt_version, $opt_syscheck,$opt_stream,$opt_target,$opt_output,$opt_workdir, $opt_config,$opt_compare_diffonly); usage() if (@ARGV == 0); GetOptions("i|install" => \$opt_install, "u|upgrade" => \$opt_upgrade, "r|remove" => \$opt_remove, "d|download" => \$opt_download, "a|available" => \$opt_avail, "c|compare" => \$opt_compare, "C" => \$opt_compare_diffonly, "config=s" => \$opt_config, "U|catalog" => \$opt_upd_cat, "e|email=s" => \$opt_email, "t|temp=s" => \@opt_temp, "y|yes" => \$force, "s|stream" => \$opt_stream, "T|target=s" => \$opt_target, "o|output=s" => \$opt_output, "x|exclude=s" => \@exclude, "W|workdir=s" => \$opt_workdir, "n|nomod" => \$nomod, "D|debug" => \$debug, "trace" => \$trace, "h|help" => \$opt_help, "v|version" => \$opt_version, "V|syscheck" => \$opt_syscheck) || usage(); usage() if $opt_help; init($opt_config) if $opt_config; locate_wget(); locate_gzip(); if ($opt_workdir) { # set/create optional working dir $workdir = $opt_workdir; print "new workdir: $workdir\n" if $debug; } $pkgdir = "$workdir/packages"; # create runtime copy of admin to make sure we have one # available even during upgrade of pkgutil itself $admin = "$workdir/admin"; open (ADMSRC,"<$admin") or die "Can't open $admin: $!\n"; open (ADMCPY,">$admin.run") or die "Can't open $admin.run: $!\n"; while () { print ADMCPY; } close ADMSRC; close ADMCPY; $admin = "$workdir/admin.run"; my $status = system("/bin/mkdir -p $pkgdir"); die "Could not create $pkgdir: $!" if $status; pkgutilver(0) if $opt_version; pkgutilver(1) if $opt_syscheck; # Get mirrors together @mirror = @{$config{mirror}}; $mirror[0] = $defaultmirror unless @mirror; # if no mirrors configured # Prepend temp mirrors so they are selected first unshift(@mirror,@opt_temp) if @opt_temp; foreach (my $i=0; $i < scalar @mirror; $i++) { ($mirror[$i]) = ($mirror[$i] =~ q!^(.+\w)!); $mirror[$i] .= "/" . $arch . "/" . $rel; } print "primary mirror: $mirror[0]\n" if $debug; if ($opt_upd_cat || @opt_temp) { check_catalog(1); # Reread everything } else { check_catalog(); } stream($opt_target,$opt_output) if $opt_stream; email($opt_email) if $opt_email; available() if $opt_avail; compare(3) if $opt_compare_diffonly; compare(0) if $opt_compare; install(0) if $opt_install; install(2) if $opt_remove; # remove instead of install install(1) if $opt_download; # download only # upgrade is a special case of install if ($opt_upgrade) { if (@ARGV == 0 || $ARGV[0] eq "all" || $ARGV[0] eq "ALL") { # need to manipulate ARGV to match installed CSW packages # that need upgrading (use -c mode 1) print "Looking for packages that can be upgraded...\n"; my @cswpkgs = compare(1); my $i = 0; foreach (@cswpkgs) { $ARGV[$i++] = $_; } } install(0); } # arguments but no options print "You need to select an option!\n" if (! $opt_upd_cat); } # show version info # mode - 0 = print only version, 1 = system check sub pkgutilver { my ($mode) = @_; my $flag = 0; chomp(my $solver = `uname -r`); chomp(my $solarch = `uname -p`); my ($pkgpatch,$pkgpatchinst); if ($mode) { print "Pkgutil\t\t$pkgutilver\n"; print "Arch\t\t$solarch\n"; print "Solaris\t\t$solver\n"; $pkgpatch = ($solarch eq "sparc") ? "110934" : "110935" if ("$solver" eq "5.8"); $pkgpatch = ($solarch eq "sparc") ? "113713" : "114568" if ("$solver" eq "5.9"); $pkgpatch = ($solarch eq "sparc") ? "119317" : "119318" if ("$solver" eq "5.10"); if ($solver ne "5.11") { chomp($pkgpatchinst = `showrev -p | grep $pkgpatch | cut -d' ' -f2 | grep $pkgpatch | sort | tail -1`); $pkgpatchinst = ($pkgpatchinst) ? "$pkgpatchinst installed" : "not found"; } else { $pkgpatch = $pkgpatchinst = "na"; } print "Pkg patch\t$pkgpatch ($pkgpatchinst)\n"; if (-x "/opt/csw/bin/gpg") { print "GPG binary\t/opt/csw/bin/gpg\n"; } else { print "GPG binary\tnot found (suggestion: install CSWgnupg)\n"; } my $status = locate_gzip(); print "Gzip binary\t" . (($status) ? "not found (suggestion: install CSWgzip)" : $gzip) . "\n"; if (-x "/bin/mailx") { print "Mailx binary\t/bin/mailx\n"; } else { print "Mailx binary\tnot found (option --email not available)\n"; } if (-x "/opt/csw/bin/gmd5sum") { print "MD5 binary\t/opt/csw/bin/gmd5sum\n"; } else { print "MD5 binary\tnot found"; print " (suggestion: install CSWtextutils)" unless $flag; print "\n"; $flag = 0; } eval { require Digest::MD5; }; if ($@) { print "MD5 module\tnot found\n"; } else { print "MD5 module\t",Digest::MD5->VERSION," (primary choice for MD5)\n"; $flag = 1; } print "Perl\t\t$]\n"; print "Perl binary\t" . `which perl`; $status = locate_wget(); print "Wget binary\t" . (($status) ? "not found (suggestion: install CSWwget)" : $wget) . "\n"; print "PATH\t\t$ENV{PATH}\n"; } else { print "$pkgutilver\n"; } exit 0; } # read catalog into hash # catalog - catalog to read # filename - filename to use sub read_catalog { my($catalog, $filename) = @_; my @llst; open (CATALOG,"<$filename") or die "Can't open $filename: $!\n"; while (my $line = ) { chomp $line; if ($line =~ /^\w/) { @llst = split(/ /,$line); if ($llst[0] && $llst[1] && $llst[2] && $llst[3] && $llst[4] && $llst[5] && $llst[6] && $llst[7]) { $pkg{$llst[2]}{$llst[1]} = $line; $commonpkg{$llst[0]} = $llst[2]; push(@{$pkgmirror{$llst[3]}},$catalog); } } } close CATALOG; } # remove packages # pkglist - packages to remove sub rem_pkgs { my @pkgs = @_; my $retval = ""; my $pkgrm = "/usr/sbin/pkgrm"; my $pkgforce = ""; my $pkgtrace = ""; my ($pkg,$i,$j,$k,$l,$depinuse,$skip); my (@cswpkgs,@deptmp,@rempkgs); $pkgforce = "-a $admin -n" if $force; $pkgtrace = "-v" if $trace; print "Looking at installed CSW packages...\n"; my @cswpkgstmp = `/bin/pkginfo | grep CSW`; foreach $pkg (@cswpkgstmp) { ($pkg) = ($pkg =~ /\s+?(\w+?)\s/); $skip = 0; foreach (@pkgs) { $skip = 1 if ($_ eq $pkg); } push(@cswpkgs,$pkg) unless $skip; } print "Examining dependencies for:\n"; foreach $i (@pkgs) { print " $i"; $depinuse = 0; foreach $j (@cswpkgs) { $retval = parse_catalog($j,6); if ($retval ne "none" && $i ne $j) { (@deptmp) = split(/\|/,$retval); foreach $k (@deptmp) { if ($k eq $i) { print "\n$i is in use by $j\n" if $debug; $depinuse = 1; last; } } } $depinuse ? last : next; } push(@rempkgs,$i) unless $depinuse; $depinuse ? print " (in use)\n" : print " (remove)\n"; } if ($#rempkgs > 0 && ! $force) { print $#rempkgs + 1 . " packages to remove. Do you want to continue? [Y,n] "; chomp (my $prompt = ); exit 1 if ($prompt =~ /^[nN]/); } if ($#rempkgs >= 0) { foreach (@rempkgs) { $retval = check_pkg($_,0); if ($retval ne "notinst") { die "Option -n selected, stopping here.\n" if ($nomod); print "Removing $_\n"; system("$pkgrm $pkgforce $pkgtrace $_`"); } } } else { print "Nothing to remove.\n"; } unlink $admin if (-r $admin); exit 1; } # build package streams # target - arch and os release # output - file name for package stream sub stream { my ($target,$output) = @_; my @supp_arch = qw(sparc i386); my @supp_rel = qw(5.8 5.9 5.10 5.11); my ($fh,$mode,$loc_arch,$loc_rel,$transfile); my ($ok_arch,$ok_rel) = (0,0); if ($output) { $fh = ($output eq "-" ? *STDERR : *STDOUT); $mode = ($output eq "-" ? 4 : 3); } else { $fh = *STDOUT; $mode = 3; } if ($target) { if ($target =~ /.:./) { ($loc_arch,$loc_rel) = split(/:/,$target); } else { print "$target is not a correct arch:rel combo.\n"; exit 1; } } else { chomp($loc_arch = `uname -p`); # arch type sparc|i386 chomp($loc_rel = `uname -r`); # os version, e.g. 5.10 } print "arch: $loc_arch\nos rel: $loc_rel\n" if $debug; foreach (@supp_arch) { if ($loc_arch eq $_) { $ok_arch = 1; last; } } foreach (@supp_rel) { if ($loc_rel eq $_) { $ok_rel = 1; last; } } print "Architecture $loc_arch not supported.\n" if (! $ok_arch); print "OS release $loc_rel not supported.\n" if (! $ok_rel); exit 1 if (($ok_arch + $ok_rel) < 2); foreach (my $i=0; $i < scalar @mirror; $i++) { print "mirror $i: $mirror[$i]\n" if $debug; $mirror[$i] =~ s!\b$arch\b!$loc_arch!; $mirror[$i] =~ s!\b$rel\b!$loc_rel!; print "mirror $i: $mirror[$i]\n" if $debug; } if ($output) { $transfile = ($output eq "-" ? "/dev/fd/1" : "$pkgdir/$output"); } else { $output = "$ARGV[0].$loc_arch.$loc_rel.pkg"; $transfile = "$pkgdir/$output"; } print STDERR "output: $output\ntransfile: $transfile\n" if $debug; check_catalog(); my @install_order = install($mode); # download packages needed exit 1 if ($#install_order < 0); # empty list, nothing to do my $pkglist = join(' ',@install_order); print "install order: $pkglist\n" if $debug; foreach (@install_order) { # delete package directories my $status = system("/bin/rm -rf $pkgdir/$_") if (-d "$pkgdir/$_"); die "Could not delete $pkgdir/$_: $!" if $status; } foreach (@install_order) { # pkgtrans them one by one my $file = parse_catalog($_,3); print $fh "Transforming $_...\n"; my $status = system("$gzip -c -f -d $pkgdir/$file | /bin/pkgtrans /dev/fd/0 $pkgdir all 2> /dev/null"); die "Could not transform $file: $!" if $status; } # pkgtrans all of them into one package stream print $fh "Transforming packages into stream ($transfile)...\n"; my $status = system("/bin/touch $transfile"); die "Could not create stream file: $!" if $status; $status = system("/bin/pkgtrans -s $pkgdir $transfile all 2> /dev/null"); die "Could not transform packages into stream: $!" if $status; foreach (@install_order) { # delete package directories my $status = system("/bin/rm -rf $pkgdir/$_"); die "Could not delete $pkgdir/$_: $!" if $status; } # print cmd needed to install print $fh "\nInstall commands in dependency safe order:\n\n"; foreach (@install_order) { print $fh "pkgadd -d $output $_\n"; } exit 0; } # show usage info sub usage { print "Pkgutil $pkgutilver, install Solaris packages the easy way.\n\n"; print "Usage: pkgutil [option]... [package](-[version])...\n"; print "\n -i, --install\t\tInstall package"; print "\n -u, --upgrade\t\tUpgrade package"; print "\n -r, --remove\t\tRemove package (experimental)"; print "\n -d, --download\tDownload only"; print "\n -U, --catalog\t\tUpdate catalog"; print "\n -a, --available\tShow available packages"; print "\n -c, --compare\t\tCompare installed packages to current"; print "\n -C \t\tSame as -c but only show different versions"; print "\n -e, --email=address\tSend e-mail with available updates"; print "\n -t, --temp=site\tTemporarily use this site as primary for download"; print "\n -s, --stream\t\tBuild a package stream"; print "\n -T, --target=arch:rel\tSpecify architecture and OS release for stream"; print "\n -o, --output=file\tFile name for package stream (used with -s)"; print "\n -x, --exclude=package\tPackage to exclude"; print "\n -W, --workdir=path\tPath to use for downloads"; print "\n --config=file\tUse this configuration file"; print "\n -y, --yes\t\tAnswer yes on all prompts"; print "\n -n, --nomod\t\tNo modifications are made to the system"; print "\n -D, --debug\t\tDebug mode"; print "\n --trace\t\tSet trace mode (-v) for pkgadd/pkgrm"; print "\n -h, --help\t\tShow this help"; print "\n -v, --version\t\tShow version"; print "\n -V, --syscheck\tSystem check\n"; print "\nExample: pkgutil -i CSWwget\ (install wget and its dependencies)\n"; print "\nWritten and maintained by Peter Bonivart.\n"; exit 0; } # comparison of two package versions as per # http://pkgutil.wikidot.com/get-install-and-configure#toc7 # as per cmp or <=>, -1, 0, or 1 if p1 is less than, equal to or greater than p2 # Note that if neither has a REV code, -1 is *ALWAYS* returned. # p1rev, p2rev - versions to compare sub verscmp { my($p1rev,$p2rev) = @_; # crev (new), irev (old), then 1 => upgrade my (@p1list,@p2list); my $p1tmp = ""; my $p2tmp = ""; my $update = 0; my $skip = 0; # 1st case: same strings => no upgrade $skip = 1 if ($p1rev eq $p2rev); # 2nd case: installed no REV, catalog REV => upgrade if (! $skip) { if ($p1rev !~ /REV=/ && $p2rev =~ /REV=/) { $update = -1; $skip = 1; } elsif ($p2rev !~ /REV=/ && $p1rev =~ /REV=/) { # Reverse case (intalled REV, catalog no REV => "downgrade") $update = 1; $skip = 1; } } # 3rd case: installed REV, catalog REV => if newer, upgrade if (! $skip) { if ($p1rev =~ /REV=/ && $p2rev =~ /REV=/) { if ($p1rev =~ /rev=/) { ($p1tmp) = ($p1rev =~ /REV=(.+)_/); } else { ($p1tmp) = ($p1rev =~ /REV=(.+)$/); } @p1list = split(/\./,$p1tmp); if ($p2rev =~ /rev=/) { ($p2tmp) = ($p2rev =~ /REV=(.+)_/); } else { ($p2tmp) = ($p2rev =~ /REV=(.+)$/); } @p2list = split(/\./,$p2tmp); for (my $i = 0; $i <= $#p1list; $i++) { if (! $p2list[$i]) { $update = 1; last; } if ($p1list[$i] != $p2list[$i]) { if ($p1list[$i] > $p2list[$i]) { $update = 1; } else { $update = -1; } print "$i $p1list[$i] $p2list[$i] $update\n" if $debug; last; } print "$i $p1list[$i] $p2list[$i] $update\n" if $debug; } $update = -1 if (! $update && $#p2list > $#p1list); $skip = 1; } } # 4th case: installed no REV, catalog no REV => upgrade if (! $skip) { $update = 1 if ($p1rev !~ /REV=/ && $p2rev !~ /REV=/); } return $update; } # main init(); parse_cl(); exit 0; =head1 NAME pkgutil - install Solaris packages the easy way =head1 SYNOPSIS pkgutil [option]... [package]... =head1 DESCRIPTION Pkgutil, written in Perl and licensed under GPL, is a tool to make installation of packages in Solaris easier. It handles package dependencies so all required packages are installed before the desired package automatically. A catalog is used to make this possible. The format is: S Example: S In the example CSWbind has two dependencies separated by a pipe. Multiple categories can also be separated by pipe characters. =head1 OPTIONS =over 5 =item B<-i, --install> Install package. Will install the specified packages with all their dependencies. You may specify an explicit version (e.g. amarok-1.4.8,REV=2008.02.26) if desired, otherwise the latest version found is chosen. =item B<-u, --upgrade> Upgrade package. A special argument is "all" which will upgrade all installed packages if possible, no argument is the same as "all". If one or more packages are given as arguments only those will be upgraded. =item B<-r, --remove> Remove package. This will remove a package including all dependencies that are not in use by other packages. =item B<-d, --download> Download only. Same as install but stops after downloading the packages. =item B<-U, --catalog> Update catalog. =item B<-a, --available> Show available packages. =item B<-c, --compare> Compare installed packages to current. =item B<-C> Compare installed packages to current, show only different versions. =item B<-e, --email=address> Send e-mail with available updates. E-mail address as argument. Don't use with other options. =item B<-t, --temp=site> Temporarily use this site for download. Must be the complete url where to find the catalog and associated packages. May be specified multiple times. =item B<-s, --stream> Build a package stream for a certain architecture and OS release. All dependencies will be included in the stream and the needed command to install them in the correct order will be displayed. =item B<-T, --target=arch:rel> Specify architecture and OS release for stream, e.g. i386:5.9 or sparc:5.10. Used with -s. If not specified defaults to architecture and release of the host running pkgutil. =item B<-o, --output=file> File name for package stream. Used with -s. A special argument is "-" which sends the stream to standard output, see example below. The default name is the first package argument followed by architecture and OS release, for example "bind.i386.5.10.pkg". =item B<-x, --exclude=package> Package to exclude. This option can be specified multiple times. =item B<-W, --workdir=path> Path to use for downloads. This can be used to run pkgutil as non-root, e.g. called from a web server. =item B<--config=file> Use this configuration file instead of the default ones. =item B<-y, --yes> Answer yes on all prompts. Skips prompt when multiple packares are to be downloaded. Makes pkgrm/pkgadd operations more silent and without prompts. Only makes sense with -i and -u. =item B<-n, --nomod> No modifications are made to the system. Stops before downloading catalog/packages. Use it to simulate if catalog needs updating or which packages will be downloaded. Only makes sense with -i, -u and -U. =item B<-D, --debug> Debug mode. Adds a lot of info about what's going on. Only use if you're having problems you think is a bug. =item B<--trace> Set trace mode (-v) for pkgadd/pkgrm. =item B<-h, --help> Show this help. =item B<-v, --version> Show pkgutil version. =item B<-V, --syscheck> System check. This shows info about binaries and more that pkgutil needs to support all features. =back =head1 EXAMPLES =head2 Example 1 C<# pkgutil -i CSWbind> Will install CSWbind with all required dependencies. =head2 Example 2 C<# pkgutil -e nobody@foo.bar> Will run silently and send an e-mail (with mailx) to the given address if there's updated packages available. Run it from crontab once weekly. =head2 Example 3 C<# pkgutil -y -o - -s bind | gzip E bind.pkg.gz> Will send a package stream including all dependencies needed for CSWbind to standard output which is piped to gzip. With "-o -" the normal output is sent to standard error and "-y" is used to skip the confirmation prompt. =head2 Example 4 C<# pkgutil -T i386:5.10 -s bind> Will make a package stream including all dependencies needed for CSWbind. The package stream will contain packages for the i386 architecture and Solaris 10 regardless of host used to run pkgutil. =head1 CONFIGURATION Pkgutil uses a configuration file, pkgutil.conf, that contains a few important settings. No modifications are mandatory though since pkgutil will happily run with the defaults. Pkgutil will look for pkgutil.conf in /opt/csw/etc but the primary location is /etc/opt/csw. If no pkgutil.conf is found in either of those two locations defaults are used. The settings that can be used are: C This is the mirror that is used for downloading the catalog and packages. Try setting it to your nearest mirror to improve download speed. This option may be specified multiple times. It also supports (in an experimental way) the file:// protocol for local/NFS mirrors. Example: C C Send options to pkgadd, one example is -G that will only install the packages in the global zone for Solaris 10. C Send options to wget, for example to show more or less information during downloads. C C These two can enable (default is disabled for both) checking the catalogs integrity (GPG) and that each downloaded file is unchanged from the published one (MD5). To use GPG you need CSWgnupg installed. MD5 is supported by default in Solaris 10 and on Solaris 8 and 9 if you have CSWperl installed and have /opt/csw/bin first in your path. You can also install CSWtextutils to get MD5 support. C Enable (default is disable) support for non-CSW prefixed packages. Pkgutil also uses a file to configure pkgadd when the yes (-y) option is used. This file is located in /var/opt/csw/pkgutil and is called admin. It's by default set up to fully automate installations but if you change something in this file it will be preserved during upgrades of pkgutil. Read more about the admin file with "man -s4 admin". =head1 SEE ALSO http://pkgutil.wikidot.com http://pkgutil.sourceforge.net =head1 TODO Some functionality and lots of error handling. =head1 AUTHOR Peter Bonivart =head1 CREDITS Dennis Clarke Ihsan Dogan Don Jackson Sebastian Kayser James Lee Dagobert Michelsen Yann Rouillard Ben Walton Derek Whayman For more details, see the readme file. =head1 COPYRIGHT AND DISCLAIMER Copyright (C) 2008-2009 Peter Bonivart. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. =cut 070701000004fc000041ed0000418900000065000000044a36513e00000000000001380000012700000000000000000000001300000000root/opt/csw/share070701000004fd000041ed0000418900000065000000034a36513e00000000000001380000012700000000000000000000001700000000root/opt/csw/share/doc070701000004fe000041ed0000418900000065000000024a36513e00000000000001380000012700000000000000000000001f00000000root/opt/csw/share/doc/pkgutil070701000004ff000081a40000418900000065000000014a36513900004657000001380000012700000000000000000000002700000000root/opt/csw/share/doc/pkgutil/license GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. 07070100000500000081a40000418900000065000000014a36513900001719000001380000012700000000000000000000002600000000root/opt/csw/share/doc/pkgutil/readmePKGUTIL ======= Pkgutil, written in Perl and licensed under GPL, is a tool to make installation of packages in Solaris easier. It handles package dependencies so all required packages are installed before the desired package automatically. Configure --------- There's a configuration file in /opt/csw/etc/pkgutil.conf. The only thing you normally need to change there is the mirror location. If you have a pkgutil.conf file in /etc/opt/csw/ the settings in it will override the ones in /opt/csw/etc. If no pkgutil.conf is found in either of those two locations defaults are used. Official web sites ------------------ URL: http://pkgutil.wikidot.com URL: http://pkgutil.sourceforge.net Version history --------------- * v1.6.1. Released 2009-06-05 - Fix -y bug when upgrading pkgutil (#3701) (Sebastian Kayser, Dagobert Michelsen) - Fix order of install to ,e.g., make sure that cswclassutils is always installed first/early (#3702) (Sebastian Kayser) * v1.6. Released 2009-05-29 - Fix -T bug (#3689) (Sebastian Kayser) - Fix -W bug (#3688) (Sebastian Kayser) - New option -C, same as -c but only shows different versions, no more piping to grep -v SAME (Ben Walton) - New option --trace to debug pkgadd/pkgrm operations (#3683) (Yann Rouillard) - Replaced some system commands with native Perl - New option --config for using custom configuration file (Don Jackson) - Fix size formatting - Skip showing pkgadd patch when using -V on 5.11 (Dennis Clarke) - Update credits in perldoc/man page - Perldoc/man page added to both bldcat and chkcat - Chkcat now includes more tests (Derek Whayman) - Chkcat exit values are 0 for OK, 1 for warning and 2 for error - New option -e (erroronly) added to chkcat to supress warnings - New option -q (quiet) added to chkcat to supress all output * v1.5. Released 2009-04-09 - Support multiple catalogs with multiple versions of each package and selecting specific versions (Derek Whayman) - Performance enhancements (Derek Whayman) - Fix catalog update issue when mirror catalog is old (Ivo De Decker) - Increased protection against broken/empty local package files (Sebastian Kayser) - Perldoc/man updates - Bldcat skips dependencies to the same package - Chkcat checks for packages that contain dependencies to themselves * v1.4. Released 2009-01-19 - Dependency calculations are now much faster - Support for local file repositories (Dennis Clarke) - Keyword "same" when using -c replaced with "SAME" (Dennis Clarke) - Bldcat now skips SUNW packages as dependencies * v1.3.1. Released 2008-12-17 - Small packaging bug fixed. No code changes * v1.3. Released 2008-12-12 - New option -x (exclude) to exclude packages (Ihsan Dogan) - New option -s (stream) to build a custom package (Dagobert Michelsen) - New option -T (target) to set architecture and release for package stream (-s) - New option -o (output) names the package stream from -s (Dagobert Michelsen) - New option -W (workdir) to set another directory to use for downloads. Some operations are now possible without being root - Option -f (force) renamed to -y (yes) (Dagobert Michelsen) - Make config file more NFS/read-only friendly (Dagobert Michelsen) - Changed default mirror from unstable to current (Dagobert Michelsen) - Fixed bug which caused a warning to be displayed during some upgrades - Fixed that locally cached packages are also MD5 checked (Dennis Clarke) - PATH added to -V (syscheck) output - Wget and Perl binaries added to -V - Documented admin file in perldoc/man page - Several changes in bldcat to improve speed (Dagobert Michelsen) - bldcat supports the description file (Dagobert Michelsen) - chkcat in verbose mode benefits from the same speed fix as in bldcat - chkcat now checks for missing dependencies * v1.2.1. Released 2008-11-28 - Fixes compare bug with package names containing dashes * v1.2. Released 2008-11-12 - Temp site (-t) does no longer replace the mirror defined in pkgutil.conf. It instead is considered the primary location and the mirror defined in pkgutil.conf is considered the secondary. That means you can point -t to your own repository of packages that are built with dependencies to CSW and it will fetch all packages necessary regardless of their location - Better MD5 support for Solaris 8 and 9 - Arguments to -a and -c are now treated like filters so "pkgutil -a bind dhcp" equals "pkgutil -a | egrep -i 'bind|dhcp'" - Changed version info to be -v instead of -V - Added -V (syscheck) to show info about binaries and more that pkgutil needs to support all features - Perldoc/man page updated with configuration file info - Search for gzip in more places - fixed bug when reporting package missing in catalog (Dagobert Michelsen) - bundled wget binaries moved to /opt/csw/libexec/pkgutil - bldcat supports CSW_CATEGORY - bldcat now extracts data in a more dependable way - chkcat checks for duplicates in catalog - chkcat with option -v checks the catalog data against actual package files if they are located in the same directory as the catalog parsed * v1.1. Released 2008-10-24 - Added possibility to use both common name and package name - Added bldcat to build catalalogs from package files - Added chkcat to check catalogs for errors - Fix for packages that are not compressed (e.g. gzip) - Fix for size zero local files (failed package downloads) - Fix for gpg-checks when updating the catalog (Yann Rouillard) - Fix for version compare code rule #3 (Yann Rouillard) - Updated prototype for package (Dennis Clarke) * v1.0. Released 2008-10-07 - Initial release - Version compare method by James Lee and Dagobert Michelsen - Tested to work on Solaris 8 with default Perl 5.5.3 -- $Id: readme 60 2009-06-05 14:15:18Z bonivart $ 07070100000501000041ed0000418900000065000000034a36513f00000000000001380000012700000000000000000000001700000000root/opt/csw/share/man07070100000502000041ed0000418900000065000000024a36513f00000000000001380000012700000000000000000000001c00000000root/opt/csw/share/man/man107070100000504000081a40000418900000065000000014a36513b00001882000001380000012700000000000000000000002500000000root/opt/csw/share/man/man1/chkcat.1.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== .de Sh \" Subsection heading .br .if t .Sp .ne 5 .PP \fB\\$1\fR .PP .. .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 .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' '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 turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .el \{\ . de IX .. .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "CHKCAT 1" .TH CHKCAT 1 "2009-06-15" "perl v5.10.0" "User Contributed Perl 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" chkcat \- check CSW catalog for problems .SH "SYNOPSIS" .IX Header "SYNOPSIS" chkcat [\-veqh] .SH "DESCRIPTION" .IX Header "DESCRIPTION" Check \s-1CSW\s0 catalog for problems. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-v, \-\-verbose\fR" 5 .IX Item "-v, --verbose" Verbose mode. Will compare size, \s-1MD5\s0 hash, dependencies and categories specified in catalog against the information in the actual package. The packages must be in the current directory. .IP "\fB\-e, \-\-erroronly\fR" 5 .IX Item "-e, --erroronly" Only show errors (supress warnings). .IP "\fB\-q, \-\-quiet\fR" 5 .IX Item "-q, --quiet" No output (only return codes). .IP "\fB\-h, \-\-help\fR" 5 .IX Item "-h, --help" Show this help. .SH "EXAMPLES" .IX Header "EXAMPLES" .Sh "Example 1" .IX Subsection "Example 1" \&\f(CW\*(C`# chkcat catalog\*(C'\fR .PP Will check catalog for problems. .Sh "Example 2" .IX Subsection "Example 2" \&\f(CW\*(C`# chkcat \-q catalog\*(C'\fR .PP Will supress all output and only generate a return code, 0 for \s-1OK\s0, 1 for warnings found and 2 for errors found. .SH "EXIT STATUS" .IX Header "EXIT STATUS" The following exit values are returned: .PP .Vb 1 \& 0 OK \& \& 1 Warning \& \& 2 Error .Ve .SH "SEE ALSO" .IX Header "SEE ALSO" http://pkgutil.wikidot.com .PP http://pkgutil.sourceforge.net .SH "AUTHOR" .IX Header "AUTHOR" Peter Bonivart .SH "CREDITS" .IX Header "CREDITS" Derek Whayman .PP For more details, see the readme file. .SH "COPYRIGHT AND DISCLAIMER" .IX Header "COPYRIGHT AND DISCLAIMER" Copyright (C) 2008\-2009 Peter Bonivart. This program is free software; you can redistribute it and/or modify it under the terms of the \s-1GNU\s0 General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. .PP This program is distributed in the hope that it will be useful, but \s-1WITHOUT\s0 \s-1ANY\s0 \s-1WARRANTY\s0; without even the implied warranty of \s-1MERCHANTABILITY\s0 or \s-1FITNESS\s0 \s-1FOR\s0 A \s-1PARTICULAR\s0 \s-1PURPOSE\s0. See the \s-1GNU\s0 General Public License for more details. .PP You should have received a copy of the \s-1GNU\s0 General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, \s-1MA\s0 02111\-1307 \s-1USA\s0. 07070100000505000081a40000418900000065000000014a36513a00003350000001380000012700000000000000000000002600000000root/opt/csw/share/man/man1/pkgutil.1.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== .de Sh \" Subsection heading .br .if t .Sp .ne 5 .PP \fB\\$1\fR .PP .. .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 .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' '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 turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .el \{\ . de IX .. .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "PKGUTIL 1" .TH PKGUTIL 1 "2009-06-15" "perl v5.10.0" "User Contributed Perl 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" pkgutil \- install Solaris packages the easy way .SH "SYNOPSIS" .IX Header "SYNOPSIS" pkgutil [option]... [package]... .SH "DESCRIPTION" .IX Header "DESCRIPTION" Pkgutil, written in Perl and licensed under \s-1GPL\s0, is a tool to make installation of packages in Solaris easier. .PP It handles package dependencies so all required packages are installed before the desired package automatically. .PP A catalog is used to make this possible. The format is: .PP common_name\ version\ package_name\ file_name\ md5_hash\ pkg_size\ dependencies\ category .PP Example: .PP bind\ 9.4.2,REV=2008.07.09_rev=p1\ CSWbind\ bind\-9.4.2,REV=2008.07.09_rev=p1\-SunOS5.8\-sparc\-CSW.pkg.gz\ f68df57fcf54bfd37304b79d6f7eeacc\ 2954112\ CSWcommon|CSWosslrt\ net .PP In the example CSWbind has two dependencies separated by a pipe. Multiple categories can also be separated by pipe characters. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-i, \-\-install\fR" 5 .IX Item "-i, --install" Install package. Will install the specified packages with all their dependencies. You may specify an explicit version (e.g. amarok\-1.4.8,REV=2008.02.26) if desired, otherwise the latest version found is chosen. .IP "\fB\-u, \-\-upgrade\fR" 5 .IX Item "-u, --upgrade" Upgrade package. A special argument is \*(L"all\*(R" which will upgrade all installed packages if possible, no argument is the same as \*(L"all\*(R". If one or more packages are given as arguments only those will be upgraded. .IP "\fB\-r, \-\-remove\fR" 5 .IX Item "-r, --remove" Remove package. This will remove a package including all dependencies that are not in use by other packages. .IP "\fB\-d, \-\-download\fR" 5 .IX Item "-d, --download" Download only. Same as install but stops after downloading the packages. .IP "\fB\-U, \-\-catalog\fR" 5 .IX Item "-U, --catalog" Update catalog. .IP "\fB\-a, \-\-available\fR" 5 .IX Item "-a, --available" Show available packages. .IP "\fB\-c, \-\-compare\fR" 5 .IX Item "-c, --compare" Compare installed packages to current. .IP "\fB\-C\fR" 5 .IX Item "-C" Compare installed packages to current, show only different versions. .IP "\fB\-e, \-\-email=address\fR" 5 .IX Item "-e, --email=address" Send e\-mail with available updates. E\-mail address as argument. Don't use with other options. .IP "\fB\-t, \-\-temp=site\fR" 5 .IX Item "-t, --temp=site" Temporarily use this site for download. Must be the complete url where to find the catalog and associated packages. May be specified multiple times. .IP "\fB\-s, \-\-stream\fR" 5 .IX Item "-s, --stream" Build a package stream for a certain architecture and \s-1OS\s0 release. All dependencies will be included in the stream and the needed command to install them in the correct order will be displayed. .IP "\fB\-T, \-\-target=arch:rel\fR" 5 .IX Item "-T, --target=arch:rel" Specify architecture and \s-1OS\s0 release for stream, e.g. i386:5.9 or sparc:5.10. Used with \-s. If not specified defaults to architecture and release of the host running pkgutil. .IP "\fB\-o, \-\-output=file\fR" 5 .IX Item "-o, --output=file" File name for package stream. Used with \-s. A special argument is \*(L"\-\*(R" which sends the stream to standard output, see example below. The default name is the first package argument followed by architecture and \s-1OS\s0 release, for example \*(L"bind.i386.5.10.pkg\*(R". .IP "\fB\-x, \-\-exclude=package\fR" 5 .IX Item "-x, --exclude=package" Package to exclude. This option can be specified multiple times. .IP "\fB\-W, \-\-workdir=path\fR" 5 .IX Item "-W, --workdir=path" Path to use for downloads. This can be used to run pkgutil as non-root, e.g. called from a web server. .IP "\fB\-\-config=file\fR" 5 .IX Item "--config=file" Use this configuration file instead of the default ones. .IP "\fB\-y, \-\-yes\fR" 5 .IX Item "-y, --yes" Answer yes on all prompts. Skips prompt when multiple packares are to be downloaded. Makes pkgrm/pkgadd operations more silent and without prompts. Only makes sense with \-i and \-u. .IP "\fB\-n, \-\-nomod\fR" 5 .IX Item "-n, --nomod" No modifications are made to the system. Stops before downloading catalog/packages. Use it to simulate if catalog needs updating or which packages will be downloaded. Only makes sense with \-i, \-u and \-U. .IP "\fB\-D, \-\-debug\fR" 5 .IX Item "-D, --debug" Debug mode. Adds a lot of info about what's going on. Only use if you're having problems you think is a bug. .IP "\fB\-\-trace\fR" 5 .IX Item "--trace" Set trace mode (\-v) for pkgadd/pkgrm. .IP "\fB\-h, \-\-help\fR" 5 .IX Item "-h, --help" Show this help. .IP "\fB\-v, \-\-version\fR" 5 .IX Item "-v, --version" Show pkgutil version. .IP "\fB\-V, \-\-syscheck\fR" 5 .IX Item "-V, --syscheck" System check. This shows info about binaries and more that pkgutil needs to support all features. .SH "EXAMPLES" .IX Header "EXAMPLES" .Sh "Example 1" .IX Subsection "Example 1" \&\f(CW\*(C`# pkgutil \-i CSWbind\*(C'\fR .PP Will install CSWbind with all required dependencies. .Sh "Example 2" .IX Subsection "Example 2" \&\f(CW\*(C`# pkgutil \-e nobody@foo.bar\*(C'\fR .PP Will run silently and send an e\-mail (with mailx) to the given address if there's updated packages available. Run it from crontab once weekly. .Sh "Example 3" .IX Subsection "Example 3" \&\f(CW\*(C`# pkgutil \-y \-o \- \-s bind | gzip > bind.pkg.gz\*(C'\fR .PP Will send a package stream including all dependencies needed for CSWbind to standard output which is piped to gzip. With \*(L"\-o \-\*(R" the normal output is sent to standard error and \*(L"\-y\*(R" is used to skip the confirmation prompt. .Sh "Example 4" .IX Subsection "Example 4" \&\f(CW\*(C`# pkgutil \-T i386:5.10 \-s bind\*(C'\fR .PP Will make a package stream including all dependencies needed for CSWbind. The package stream will contain packages for the i386 architecture and Solaris 10 regardless of host used to run pkgutil. .SH "CONFIGURATION" .IX Header "CONFIGURATION" Pkgutil uses a configuration file, pkgutil.conf, that contains a few important settings. No modifications are mandatory though since pkgutil will happily run with the defaults. .PP Pkgutil will look for pkgutil.conf in /opt/csw/etc but the primary location is /etc/opt/csw. If no pkgutil.conf is found in either of those two locations defaults are used. .PP The settings that can be used are: .PP \&\f(CW\*(C`mirror\*(C'\fR .PP This is the mirror that is used for downloading the catalog and packages. Try setting it to your nearest mirror to improve download speed. This option may be specified multiple times. .PP It also supports (in an experimental way) the file:// protocol for local/NFS mirrors. Example: \f(CW\*(C`mirror=file:///absolute/path/to/files\*(C'\fR .PP \&\f(CW\*(C`pkgaddopts\*(C'\fR .PP Send options to pkgadd, one example is \-G that will only install the packages in the global zone for Solaris 10. .PP \&\f(CW\*(C`wgetopts\*(C'\fR .PP Send options to wget, for example to show more or less information during downloads. .PP \&\f(CW\*(C`use_gpg\*(C'\fR \&\f(CW\*(C`use_md5\*(C'\fR .PP These two can enable (default is disabled for both) checking the catalogs integrity (\s-1GPG\s0) and that each downloaded file is unchanged from the published one (\s-1MD5\s0). To use \s-1GPG\s0 you need CSWgnupg installed. \s-1MD5\s0 is supported by default in Solaris 10 and on Solaris 8 and 9 if you have CSWperl installed and have /opt/csw/bin first in your path. You can also install CSWtextutils to get \s-1MD5\s0 support. .PP \&\f(CW\*(C`noncsw\*(C'\fR .PP Enable (default is disable) support for non-CSW prefixed packages. .PP Pkgutil also uses a file to configure pkgadd when the yes (\-y) option is used. This file is located in /var/opt/csw/pkgutil and is called admin. It's by default set up to fully automate installations but if you change something in this file it will be preserved during upgrades of pkgutil. Read more about the admin file with \*(L"man \-s4 admin\*(R". .SH "SEE ALSO" .IX Header "SEE ALSO" http://pkgutil.wikidot.com .PP http://pkgutil.sourceforge.net .SH "TODO" .IX Header "TODO" Some functionality and lots of error handling. .SH "AUTHOR" .IX Header "AUTHOR" Peter Bonivart .SH "CREDITS" .IX Header "CREDITS" Dennis Clarke .PP Ihsan Dogan .PP Don Jackson .PP Sebastian Kayser .PP James Lee .PP Dagobert Michelsen .PP Yann Rouillard .PP Ben Walton .PP Derek Whayman .PP For more details, see the readme file. .SH "COPYRIGHT AND DISCLAIMER" .IX Header "COPYRIGHT AND DISCLAIMER" Copyright (C) 2008\-2009 Peter Bonivart. This program is free software; you can redistribute it and/or modify it under the terms of the \s-1GNU\s0 General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. .PP This program is distributed in the hope that it will be useful, but \s-1WITHOUT\s0 \s-1ANY\s0 \s-1WARRANTY\s0; without even the implied warranty of \s-1MERCHANTABILITY\s0 or \s-1FITNESS\s0 \s-1FOR\s0 A \s-1PARTICULAR\s0 \s-1PURPOSE\s0. See the \s-1GNU\s0 General Public License for more details. .PP You should have received a copy of the \s-1GNU\s0 General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, \s-1MA\s0 02111\-1307 \s-1USA\s0. 07070100000503000081a40000418900000065000000014a36513a00001542000001380000012700000000000000000000002500000000root/opt/csw/share/man/man1/bldcat.1.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== .de Sh \" Subsection heading .br .if t .Sp .ne 5 .PP \fB\\$1\fR .PP .. .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 .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' '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 turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .el \{\ . de IX .. .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "BLDCAT 1" .TH BLDCAT 1 "2009-06-15" "perl v5.10.0" "User Contributed Perl 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" bldcat \- build a CSW catalog from packages in a directory. .SH "SYNOPSIS" .IX Header "SYNOPSIS" bldcat .SH "DESCRIPTION" .IX Header "DESCRIPTION" Build a \s-1CSW\s0 catalog from packages in a directory. .SH "EXAMPLES" .IX Header "EXAMPLES" .Sh "Example 1" .IX Subsection "Example 1" \&\f(CW\*(C`# bldcat catalog\*(C'\fR .PP Will build a catalog from packages in the current directory. .SH "SEE ALSO" .IX Header "SEE ALSO" http://pkgutil.wikidot.com .PP http://pkgutil.sourceforge.net .SH "AUTHOR" .IX Header "AUTHOR" Peter Bonivart .SH "CREDITS" .IX Header "CREDITS" Dagobert Michelsen .PP Derek Whayman .PP For more details, see the readme file. .SH "COPYRIGHT AND DISCLAIMER" .IX Header "COPYRIGHT AND DISCLAIMER" Copyright (C) 2008\-2009 Peter Bonivart. This program is free software; you can redistribute it and/or modify it under the terms of the \s-1GNU\s0 General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. .PP This program is distributed in the hope that it will be useful, but \s-1WITHOUT\s0 \s-1ANY\s0 \s-1WARRANTY\s0; without even the implied warranty of \s-1MERCHANTABILITY\s0 or \s-1FITNESS\s0 \s-1FOR\s0 A \s-1PARTICULAR\s0 \s-1PURPOSE\s0. See the \s-1GNU\s0 General Public License for more details. .PP You should have received a copy of the \s-1GNU\s0 General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, \s-1MA\s0 02111\-1307 \s-1USA\s0. 07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000b00000000TRAILER!!!