tazpkg annotate tazpkgbox @ rev 230

tazpkgbox: Major improvement (all list in the same tab + icons)
author Christophe Lincoln <pankso@slitaz.org>
date Sat Feb 21 22:06:40 2009 +0100 (2009-02-21)
parents 5c0e601b47d3
children 1956016c0998
rev   line source
pankso@82 1 #!/bin/sh
pankso@82 2 #
pankso@82 3 # GTKdialog interface to SliTaz Packages Manager aka Tazpkg. Functions
pankso@86 4 # path: /usr/lib/slitaz/tazpkgbox. Notes: Notebook tab are vbox, tab are
pankso@82 5 # used to indent.
pankso@82 6 #
pankso@229 7 # (C) GNU gpl v3 - SliTaz GNU/Linux 2009.
pankso@82 8 #
pascal@211 9 VERSION=2.6
pankso@82 10
pankso@82 11 # Tazpkgbox is only for root.
pankso@82 12 if test $(id -u) != 0 ; then
pankso@82 13 exec subox tazpkgbox
pankso@82 14 exit 0
pankso@82 15 fi
pankso@82 16
pankso@230 17 export LIB=$PWD/lib/tazpkgbox
pankso@230 18
pankso@82 19 # We need at least a mirror URL.
pankso@82 20 if [ ! -f /var/lib/tazpkg/mirror ]; then
pankso@82 21 tazpkg >/dev/null
pankso@82 22 fi
pankso@82 23
pankso@82 24 # Tmp dir and files used to get pkgs infos on the fly. Clean also
pankso@82 25 # list and search files to load less data and have a faster start.
pankso@82 26 mkdir -p /tmp/tazpkgbox
pankso@230 27 echo "all" > /tmp/tazpkgbox/status
pankso@230 28 echo "all" > /tmp/tazpkgbox/category
pascal@187 29 echo "all" > /tmp/tazpkgbox/undigest-category
pankso@82 30 echo "" > /tmp/tazpkgbox/search-installed
pankso@82 31 echo "" > /tmp/tazpkgbox/search-mirrored
pankso@82 32
pankso@82 33 # English/French help dialod.
pankso@82 34 export HELP='
pankso@82 35 <window title="Tazpkgbox Help" icon-name="help">
pankso@82 36 <vbox>
pankso@82 37 <text use-markup="true" width-chars="54">
pankso@82 38 <label>"
pankso@82 39 <b>Tazpkgbox - Packages Manager Help</b>"
pankso@82 40 </label>
pankso@82 41 </text>
pankso@86 42
pankso@82 43 <frame English>
pankso@82 44 <text wrap="false">
pankso@82 45 <label>"
pankso@86 46 Tazpkgbox is a simple and easy to use interface to the SliTaz
pankso@86 47 package manager - aka Tazpkg. You can install, remove, repack or
pankso@86 48 get packages by double-clicking on the package item. A Search engine
pankso@86 49 lets you find and install new applications in a few mouse clicks.
pankso@86 50
pankso@86 51 Downloaded and repacked packages are stored in: /var/cache/tazpkg"
pankso@82 52 </label>
pankso@82 53 </text>
pankso@82 54 </frame>
pankso@86 55
pankso@82 56 <frame Français>
pankso@82 57 <text wrap="false">
pankso@82 58 <label>"
pankso@82 59 Tazpkgbox est une interface graphique au gestionnaire de paquet
pankso@86 60 de Slitaz aka Tazpkg. Simple et facile à utiliser, vous pouvez
pankso@82 61 installer, télécharger ou supprimer des paquet en double-cliquant
pankso@86 62 sur sa ligne. Les paquets téléchargés ou recréés sont stocké
pankso@82 63 dans: /var/cache/tazpkg"
pankso@82 64 </label>
pankso@82 65 </text>
pankso@82 66 </frame>
pankso@86 67
pankso@82 68 <hbox>
pankso@82 69 <button ok>
pankso@82 70 <action type="closewindow">HELP</action>
pankso@82 71 </button>
pankso@82 72 </hbox>
pankso@82 73 </vbox>
pankso@82 74 </window>
pankso@82 75 '
pankso@82 76
pascal@210 77 FILES="$2"
pascal@210 78 [ "$1" = "list_config" ] || FILES=""
pascal@210 79 export LIST_CONFIG_FILES="
pascal@210 80 <window title=\"configuration files\" icon-name=\"system-file-manager\">
pascal@139 81 <vbox>
pascal@210 82 <tree exported_column=\"5\">
pascal@143 83 <width>560</width><height>160</height>
pascal@142 84 <variable>CONF_FILE</variable>
pascal@143 85 <label>Access | User | Group | Size | Update Date | Name</label>
pascal@210 86 <input>tazpkg list-config --box $FILES</input>
pascal@210 87 <action>leafpad \$CONF_FILE</action>
pascal@139 88 </tree>
pascal@139 89 <hbox>
pascal@210 90 <text wrap=\"false\">
pascal@142 91 <label>
pascal@210 92 \"Only files with Update Date have been modified after package installation\"
pascal@142 93 </label>
pascal@141 94 </text>
pascal@139 95 <button>
pascal@210 96 <input file icon=\"gtk-close\"></input>
pascal@210 97 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
pascal@139 98 </button>
pascal@139 99 </hbox>
pascal@139 100 </vbox>
pascal@139 101 </window>
pascal@210 102 "
pascal@210 103 if [ "$1" = "list_config" ]; then
pascal@210 104 gtkdialog --center --program=LIST_CONFIG_FILES >/dev/null
pascal@210 105 exit 0
pascal@210 106 fi
pascal@139 107
pascal@187 108 export SETUP_UNDIGEST='
pascal@187 109 <window title="undigest mirrors" icon-name="tazpkg">
pascal@187 110 <vbox>
pascal@187 111 <tree>
pascal@187 112 <width>560</width><height>160</height>
pascal@187 113 <variable>UNDIGEST_LIST</variable>
pascal@187 114 <label>Name | URL</label>
pascal@187 115 <input>tazpkg list-undigest --box</input>
pascal@187 116 <action>xterm -T "Remove undigest" -geometry 80x16+120+120 -e "tazpkg remove-undigest $UNDIGEST_LIST; sleep 2"</action>
pascal@187 117 </tree>
pascal@187 118 <hbox>
pascal@187 119 <text>
pascal@187 120 <label>URL:</label>
pascal@187 121 </text>
pascal@187 122 <entry>
pascal@187 123 <variable>UNDIGEST_URL</variable>
pascal@187 124 </entry>
pascal@187 125 </hbox>
pascal@187 126 <hbox>
pascal@187 127 <text>
pascal@187 128 <label>Name:</label>
pascal@187 129 </text>
pascal@187 130 <entry>
pascal@187 131 <variable>UNDIGEST_NAME</variable>
pascal@187 132 </entry>
pascal@187 133 <button>
pascal@187 134 <label>Add</label>
pascal@187 135 <input file icon="gtk-add"></input>
pascal@187 136 <action>tazpkg add-undigest "$UNDIGEST_NAME" $UNDIGEST_URL</action>
pascal@187 137 <action>refresh:UNDIGEST_LIST</action>
pascal@187 138 </button>
pascal@187 139 <button>
pascal@187 140 <label>Remove</label>
pascal@187 141 <input file icon="gtk-remove"></input>
pascal@187 142 <action>xterm -T "Remove undigest" -geometry 80x16+120+120 -e "tazpkg remove-undigest $UNDIGEST_NAME; sleep 2"</action>
pascal@187 143 <action>refresh:UNDIGEST_LIST</action>
pascal@187 144 </button>
pascal@187 145 <button>
pascal@187 146 <label>Update</label>
pascal@187 147 <input file icon="reload"></input>
pascal@187 148 <action>tazpkg setup-undigest "$UNDIGEST_NAME" $UNDIGEST_URL</action>
pascal@187 149 <action>refresh:UNDIGEST_LIST</action>
pascal@187 150 </button>
pascal@187 151 <button>
pascal@187 152 <input file icon="gtk-close"></input>
pascal@187 153 <action type="closewindow">SETUP_UNDIGEST</action>
pascal@187 154 </button>
pascal@187 155 </hbox>
pascal@187 156 </vbox>
pascal@187 157 </window>
pascal@187 158 '
pascal@187 159
pankso@229 160 # Scan notifycation
pankso@229 161 desktopbox notify "Scanning packages database" 6 &
pankso@229 162
pankso@82 163 # Main dialog
pankso@82 164 export TAZPKG_DIALOG='
pankso@82 165 <window title="SliTaz Packages Manager" icon-name="package-x-generic">
pankso@82 166 <vbox>
pankso@82 167
pankso@82 168 <hbox>
pankso@82 169 <text use-markup="true">
pankso@82 170 <label>"<b>Packages Manager</b>"</label>
pankso@82 171 </text>
pankso@82 172 <pixmap>
pankso@82 173 <input file>/usr/share/pixmaps/tazpkg.png</input>
pankso@82 174 </pixmap>
pankso@82 175 </hbox>
pankso@82 176
pankso@230 177 <notebook labels="Packages list|Search|Undigest|Configuration">
pankso@82 178
pankso@82 179 <vbox>
pankso@82 180 <tree>
pankso@102 181 <width>620</width><height>240</height>
pankso@82 182 <variable>PKG</variable>
pankso@230 183 <label>Name|Version|Description</label>
pankso@230 184 <input icon_column="0">$LIB/list all</input>
pankso@82 185 <action>echo "$PKG" > /tmp/tazpkgbox/pkg</action>
pankso@230 186 <action>$LIB/package_infos</action>
pankso@82 187 <action>refresh:PKG</action>
pascal@187 188 <action>refresh:GETIT</action>
pankso@82 189 <action>refresh:PKG_STATS</action>
pankso@82 190 <action>refresh:CACHE_STATS</action>
pankso@82 191 </tree>
pankso@82 192 <hbox>
pankso@82 193 <text>
pankso@230 194 <label>"Status:"</label>
pankso@230 195 </text>
pankso@230 196 <combobox>
pankso@230 197 <variable>STATUS</variable>
pankso@230 198 <item>all</item>
pankso@230 199 <item>installed</item>
pankso@230 200 <item>installable</item>
pankso@230 201 <item>blocked</item>
pankso@230 202 </combobox>
pankso@230 203 <text>
pankso@82 204 <label>"Category:"</label>
pankso@82 205 </text>
pankso@82 206 <combobox>
pankso@230 207 <variable>CAT</variable>
pankso@82 208 <item>all</item>
pankso@82 209 <item>base-system</item>
pascal@160 210 <item>x-window</item>
pankso@82 211 <item>utilities</item>
pankso@82 212 <item>network</item>
pankso@82 213 <item>graphics</item>
pankso@82 214 <item>multimedia</item>
pankso@82 215 <item>office</item>
pankso@82 216 <item>development</item>
pankso@82 217 <item>system-tools</item>
pankso@82 218 <item>security</item>
pankso@82 219 <item>games</item>
pankso@82 220 <item>misc</item>
pankso@82 221 <item>meta</item>
pankso@82 222 <item>non-free</item>
pankso@82 223 </combobox>
pankso@82 224 <button>
pankso@82 225 <label>List</label>
pankso@82 226 <input file icon="reload"></input>
pankso@230 227 <action>echo "$CAT" > /tmp/tazpkgbox/category</action>
pankso@230 228 <action>echo "$STATUS" > /tmp/tazpkgbox/status</action>
pankso@82 229 <action>refresh:PKG</action>
pankso@82 230 </button>
pankso@82 231 </hbox>
pankso@82 232 </vbox>
pankso@230 233
pankso@230 234 <vbox>
pankso@230 235 <tree icon="tazpkg">
pankso@230 236 <width>620</width><height>120</height>
pankso@230 237 <variable>RESULT_INSTALLED</variable>
pankso@230 238 <label>Installed packages|Version|Description / File</label>
pankso@230 239 <input>cat /tmp/tazpkgbox/search-installed</input>
pankso@230 240 <action>echo "$RESULT_INSTALLED" > /tmp/tazpkgbox/pkg</action>
pankso@230 241 <action>$LIB/package_infos</action>
pankso@230 242 <action>$LIB/search</action>
pankso@230 243 <action>refresh:RESULT_INSTALLED</action>
pascal@130 244 <action>refresh:PKG</action>
pankso@230 245 <action>refresh:PKG_STATS</action>
pankso@230 246 <action>refresh:CACHE_STATS</action>
pankso@230 247 </tree>
pankso@230 248 <tree icon="tazpkg">
pankso@230 249 <width>620</width><height>120</height>
pankso@230 250 <variable>RESULT_MIRROR</variable>
pankso@230 251 <label>Mirrored packages|Version|Description / File</label>
pankso@230 252 <input>cat /tmp/tazpkgbox/search-mirrored</input>
pankso@230 253 <action>echo "$RESULT_MIRROR" > /tmp/tazpkgbox/pkg</action>
pankso@230 254 <action>$LIB/package_infos</action>
pankso@230 255 <action>$LIB/search</action>
pankso@230 256 <action>refresh:RESULT_INSTALLED</action>
pankso@230 257 <action>refresh:PKG</action>
pascal@130 258 <action>refresh:PKG_STATS</action>
pascal@130 259 <action>refresh:CACHE_STATS</action>
pascal@130 260 </tree>
pascal@130 261 <hbox>
pankso@230 262 <entry>
pankso@230 263 <variable>SEARCH</variable>
pankso@230 264 </entry>
pascal@130 265 <button>
pankso@230 266 <label>Search Packages</label>
pankso@230 267 <input file icon="system-search"></input>
pankso@230 268 <action>$LIB/search</action>
pankso@230 269 <action>refresh:RESULT_INSTALLED</action>
pankso@230 270 <action>refresh:RESULT_MIRROR</action>
pascal@130 271 </button>
pankso@82 272 <button>
pankso@230 273 <label>Search Files</label>
pankso@230 274 <input file icon="system-search"></input>
pankso@230 275 <action>$LIB/search --files</action>
pankso@230 276 <action>refresh:RESULT_INSTALLED</action>
pankso@230 277 <action>refresh:RESULT_MIRROR</action>
pankso@82 278 </button>
pankso@82 279 </hbox>
pankso@82 280 </vbox>
pankso@82 281
pankso@82 282 <vbox>
pascal@178 283 <tree>
pascal@178 284 <width>620</width><height>240</height>
pascal@187 285 <variable>DEV</variable>
pascal@187 286 <label>Package name|Version|Description</label>
pankso@230 287 <input>$LIB/list undigest</input>
pascal@187 288 <action>echo "$DEV" > /tmp/tazpkgbox/pkg</action>
pankso@230 289 <action>$LIB/package_infos</action>
pascal@187 290 <action>refresh:PKG</action>
pascal@187 291 <action>refresh:GETIT</action>
pascal@187 292 <action>refresh:PKG_STATS</action>
pascal@187 293 <action>refresh:CACHE_STATS</action>
pascal@187 294 </tree>
pascal@187 295 <hbox>
pascal@187 296 <button>
pascal@187 297 <label>Setup undigest mirrors</label>
pascal@187 298 <input file icon="go-next"></input>
pascal@187 299 <action type="launch">SETUP_UNDIGEST</action>
pascal@187 300 </button>
pascal@187 301 </hbox>
pascal@187 302 <hbox>
pascal@187 303 <text>
pascal@187 304 <label>"Undigest:"</label>
pascal@187 305 </text>
pascal@187 306 <combobox>
pascal@187 307 <variable>UNDIGEST_ENTRY</variable>
pascal@213 308 '
pascal@213 309 for i in all $(ls /var/lib/tazpkg/undigest 2> /dev/null); do
pascal@213 310 TAZPKG_DIALOG="$TAZPKG_DIALOG <item>$i</item> "
pascal@213 311 done
pascal@213 312 tmp=' </combobox>
pascal@187 313 <text>
pascal@187 314 <label>"Category:"</label>
pascal@187 315 </text>
pascal@187 316 <combobox>
pascal@187 317 <variable>UNDIGEST_CAT</variable>
pascal@187 318 <item>all</item>
pascal@187 319 <item>base-system</item>
pascal@187 320 <item>x-window</item>
pascal@187 321 <item>utilities</item>
pascal@187 322 <item>network</item>
pascal@187 323 <item>graphics</item>
pascal@187 324 <item>multimedia</item>
pascal@187 325 <item>office</item>
pascal@187 326 <item>development</item>
pascal@187 327 <item>system-tools</item>
pascal@187 328 <item>security</item>
pascal@187 329 <item>games</item>
pascal@187 330 <item>misc</item>
pascal@187 331 <item>meta</item>
pascal@187 332 <item>non-free</item>
pascal@187 333 </combobox>
pascal@187 334 <button>
pascal@187 335 <label>List</label>
pascal@187 336 <input file icon="reload"></input>
pascal@187 337 <action>echo "$UNDIGEST_CAT $UNDIGEST_ENTRY" > /tmp/tazpkgbox/undigest-category</action>
pascal@187 338 <action>refresh:DEV</action>
pascal@187 339 </button>
pascal@187 340 </hbox>
pascal@187 341 </vbox>
pascal@187 342
pascal@187 343 <vbox>
pankso@227 344 <frame Files and Cache directory>
pascal@143 345 <text use-markup="true" width-chars="60" wrap="false">
pankso@227 346 <label>"
pankso@227 347 Lists, mirror URL and installed packages: <b>/var/lib/tazpkg</b>
pankso@227 348 The cache directory is used to store downloaded or repacked packages.
pankso@227 349 "</label>
pankso@86 350 </text>
pankso@82 351 <hbox>
pankso@82 352 <entry editable="false">
pankso@82 353 <input>cd /var/cache/tazpkg; echo "Packages: `ls | wc -l`, size: `du -sh $PWD`"</input>
pankso@82 354 <variable>CACHE_STATS</variable>
pankso@82 355 </entry>
pankso@82 356 <button>
pankso@82 357 <label>Clean cache</label>
pankso@86 358 <input file icon="go-next"></input>
pankso@82 359 <action>rm -rf /var/cache/tazpkg/*</action>
pankso@82 360 <action>refresh:CACHE_STATS</action>
pankso@82 361 </button>
pankso@82 362 </hbox>
pankso@82 363 </frame>
pankso@82 364 <frame Mirror URL>
pankso@82 365 <hbox>
pankso@82 366 <entry>
pankso@82 367 <input>head -n 1 /var/lib/tazpkg/mirror</input>
pankso@82 368 <variable>MIRROR</variable>
pankso@82 369 </entry>
pankso@82 370 <button>
pankso@82 371 <label>Setup</label>
pankso@82 372 <input file icon="go-next"></input>
pankso@82 373 <action>echo "$MIRROR" > /var/lib/tazpkg/mirror</action>
pankso@82 374 <action>clear:MIRROR</action>
pankso@82 375 <action>refresh:MIRROR</action>
pankso@82 376 </button>
pankso@82 377 <button>
pankso@82 378 <label>Add</label>
pankso@82 379 <input file icon="gtk-add"></input>
pankso@82 380 <action>echo "$MIRROR" >> /var/lib/tazpkg/mirror</action>
pankso@82 381 <action>clear:MIRROR</action>
pankso@82 382 <action>refresh:MIRROR</action>
pankso@82 383 </button>
pankso@82 384 </hbox>
pankso@82 385 </frame>
pascal@142 386 <hbox>
pascal@183 387 <frame Journal>
pascal@183 388 <hbox>
pascal@183 389 <button>
pascal@183 390 <label>Show journal</label>
pascal@183 391 <input file icon="find"></input>
pascal@207 392 <action>xterm -fa MiscFixed -fs 11 -bg gray93 -fg black -T "$(ls -l /var/log/tazpkg.log | while read mod links user grep remain ; do echo $remain ; done) (q to quit)" -geometry 80x25+120+120 -e "cat /var/log/tazpkg.log | less"</action>
pascal@183 393 </button>
pascal@183 394 </hbox>
pascal@183 395 </frame>
pascal@142 396 <frame Configuration files>
pascal@142 397 <hbox>
pascal@91 398 <button>
pascal@139 399 <label>Repack config</label>
pascal@139 400 <input file icon="edit-redo"></input>
pascal@142 401 <action>xterm -fa MiscFixed -fs 11 -bg gray93 -fg black -T "Repack configs" -geometry 80x25+120+120 -e "tazpkg repack-config ; sleep 5" 2> /dev/null</action>
pascal@139 402 </button>
pascal@139 403 <button>
pascal@139 404 <label>Config Files</label>
pascal@139 405 <input file icon="tazpkg"></input>
pascal@139 406 <action type="launch">LIST_CONFIG_FILES</action>
pascal@139 407 </button>
pascal@142 408 </hbox>
pascal@142 409 </frame>
pascal@142 410 <frame Packages check>
pascal@142 411 <hbox>
pascal@139 412 <button>
pascal@91 413 <label>Quick check</label>
pascal@91 414 <input file icon="go-next"></input>
pascal@130 415 <action>xterm -fa MiscFixed -fs 11 -bg gray93 -fg black -T "Check packages (q to quit)" -geometry 80x25+120+120 -e "tazpkg check | less " 2> /dev/null</action>
pascal@91 416 </button>
pascal@91 417 <button>
pascal@91 418 <label>Full check</label>
pascal@91 419 <input file icon="go-next"></input>
pascal@130 420 <action>xterm -fa MiscFixed -fs 11 -bg gray93 -fg black -T "Check packages (q to quit)" -geometry 80x25+120+120 -e "tazpkg check --full | less " 2> /dev/null</action>
pascal@91 421 </button>
pascal@142 422 </hbox>
pascal@142 423 </frame>
pascal@142 424 </hbox>
pankso@82 425 </vbox>
pankso@82 426
pankso@82 427 </notebook>
pankso@82 428
pankso@82 429 <hbox>
pascal@143 430 <text wrap="false">
pankso@230 431 <input>installed=`ls /var/lib/tazpkg/installed | wc -l`; mirrored=`cat /var/lib/tazpkg/packages.list | wc -l`; undigest=`cat /var/lib/tazpkg/undigest/*/packages.list 2> /dev/null | wc -l`; blocked=`cat /var/lib/tazpkg/blocked-packages.list 2> /dev/null | wc -l`; installable=$(($mirrored + $undigest - $installed)); [ $installable -lt 0 ] && installable=0; echo "Packages statistics: $installed installed, $blocked blocked, $installable installable, $undigest undigest, $mirrored mirrored, `cat /var/lib/tazpkg/upgradable-packages.list 2> /dev/null | wc -l` to upgrade "</input>
pankso@82 432 <variable>PKG_STATS</variable>
pankso@82 433 </text>
pankso@82 434 </hbox>
pankso@82 435
pankso@82 436 <hbox>
pascal@118 437 <button>
pankso@227 438 <label>Recharge lists</label>
pankso@227 439 <input file icon="system-software-update"></input>
pankso@227 440 <action>xterm -T "Recharge" -geometry 80x16+120+120 -e "tazpkg recharge; sleep 2" 2>/dev/null</action>
pankso@227 441 <action>refresh:DEV</action>
pankso@227 442 <action>refresh:GET</action>
pankso@227 443 <action>refresh:GETIT</action>
pankso@227 444 <action>refresh:PKG_STATS</action>
pankso@227 445 </button>
pankso@227 446 <button>
pankso@227 447 <label>Upgrade all</label>
pankso@227 448 <input file icon="system-software-update"></input>
pankso@227 449 <action>xterm -T "Package upgrade" -geometry 80x16+120+120 -e "tazpkg upgrade; sleep 2" 2>/dev/null</action>
pankso@227 450 <action>refresh:PKG</action>
pankso@227 451 <action>refresh:DEV</action>
pankso@227 452 <action>refresh:GET</action>
pankso@227 453 <action>refresh:GETIT</action>
pankso@227 454 <action>refresh:PKG_STATS</action>
pankso@227 455 <action>refresh:CACHE_STATS</action>
pankso@227 456 </button>
pankso@227 457 <button>
pascal@118 458 <label>Wok</label>
pascal@118 459 <input file icon="gtk-open"></input>
pascal@118 460 <action>firefox http://hg.slitaz.org/wok/file/</action>
pascal@118 461 </button>
pankso@82 462 <button help>
pankso@82 463 <label>Help</label>
pankso@82 464 <action type="launch">HELP</action>
pankso@82 465 </button>
pankso@82 466 <button>
pankso@82 467 <label>Exit</label>
pankso@82 468 <input file icon="exit"></input>
pankso@82 469 <action type="exit">Exit</action>
pankso@82 470 </button>
pankso@82 471 </hbox>
pankso@82 472
pankso@82 473 </vbox>
pankso@82 474
pankso@82 475 </window>
pankso@82 476 '
pascal@213 477 TAZPKG_DIALOG="$TAZPKG_DIALOG$tmp"
pankso@82 478
pankso@82 479 gtkdialog --center --program=TAZPKG_DIALOG >/dev/null
pankso@82 480
pankso@82 481 exit 0