Error processing request

Parameters

CONTENT_LENGTH0
REQUEST_METHODGET
REQUEST_URI/revision/basic+snack+stream+player?V=25
QUERY_STRINGV=25
CONTENT_TYPE
DOCUMENT_URI/revision/basic+snack+stream+player
DOCUMENT_ROOT/var/www/nikit/nikit/nginx/../docroot
SCGI1
SERVER_PROTOCOLHTTP/1.1
HTTPSon
REMOTE_ADDR172.69.7.129
REMOTE_PORT12892
SERVER_PORT4443
SERVER_NAMEwiki.tcl-lang.org
HTTP_HOSTwiki.tcl-lang.org
HTTP_CONNECTIONKeep-Alive
HTTP_ACCEPT_ENCODINGgzip, br
HTTP_X_FORWARDED_FOR3.133.137.17
HTTP_CF_RAY87e7e26efa326159-ORD
HTTP_X_FORWARDED_PROTOhttps
HTTP_CF_VISITOR{"scheme":"https"}
HTTP_ACCEPT*/*
HTTP_USER_AGENTMozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; [email protected])
HTTP_CF_CONNECTING_IP3.133.137.17
HTTP_CDN_LOOPcloudflare
HTTP_CF_IPCOUNTRYUS

Body


Error

Unknow state transition: LINE -> END

-code

1

-level

0

-errorstack

INNER {returnImm {Unknow state transition: LINE -> END} {}} CALL {my render_wikit {basic snack stream player} \[Kroc\]\ -\ 8\ Oct\ 2004\ :\ This\ is\ very\ simple\ '''ogg/mp3'''\ stream\ player.\ \nIt\ ''might''\ require\ \[snack\]\ 2.2.8.\n----\n\ \n======\n################################################################################\n\ #\n\ #\ Basic\ Snack\ stream\ player\n\ #\n\ #\ Copyright\ ©\ 2004\ -\ Kroc,\ rmax\ and\ AK\n\ #\n\ #\ Shared\ under\ NOL\ licence\ :\ http://wiki.tcl.tk/nol\n\ #\n\ #\ Version\ 1.1\ -\ October\ 2004\n\ #\n\ ################################################################################\n\ \n\ package\ require\ snack\ 2.2\n\ package\ require\ snackogg\n\ package\ require\ http\n\ \n\ proc\ quit\ \{\}\ \{\n\ \ \ \ ::snack::audio\ stop\n\ \ \ \ s\ stop\n\ \ \ \ exit\n\ \}\n\n\ proc\ playstream\ \{\ socket\ token\ \}\ \{\n\ \ \ package\ require\ Tk\n\ \ \ wm\ title\ \ \ \ .\ \"Basic\ Snack\ stream\ player\"\n\ \ \ wm\ protocol\ .\ WM_DELETE_WINDOW\ \{quit\}\n\n\ \ \ fileevent\ \$socket\ readable\ \"\"\n\ \ \ set\ ::status\ \"Buffering...\"\n\ \ \ grid\ \[label\ .l1\ -text\ \"Playing\ \[lindex\ \$::argv\ 0\]\"\]\ -sticky\ ew\n\ \ \ grid\ \[label\ .l2\ -textvariable\ ::status\ -justify\ left\]\ -sticky\ w\n\ \ \ grid\ \[button\ .b\ -text\ Quit\ -command\ quit\]\ -sticky\ ew\n\ \ \ update\n\ \ \ list\ http::cleanup\ \$token\n\ \ \ ::snack::sound\ s\ -channel\ \$socket\n\ \ \ for\ \{set\ i\ 0\}\ \{\$i\ <\ 30\}\ \{incr\ i\}\ \{\n\ \ \ \ \ \ \ after\ 100\n\ \ \ \ \ \ \ append\ ::status\ .\n\ \ \ \ \ \ \ update\n\ \ \ \}\n\ \ \ set\ ::status\ \"stream\ type\ is\ \[s\ info\]\"\n\ \ \ update\n\ \ \ s\ play\ -blocking\ 0\n\ \ \ return\ 0\n\ \}\n\ \n\ proc\ savestream\ \{outfile\ socket\ token\}\ \{\n\ \ \ \ fileevent\ \$socket\ readable\ \"\"\n\ \ \ \ #http::cleanup\ \$token\n\n\ \ \ \ set\ chan\ \[open\ \$outfile\ w\]\n\n\ \ \ \ #\ Ogg\ is\ binary,\ 2\ MB\ buffer,\ write\ to\ OS\ only\ if\ buffer\ is\ full.\n\ \ \ \ #\ This\ also\ writes\ on\ exit\ of\ application.\n\n\ \ \ \ fconfigure\ \$chan\ -translation\ binary\ -buffering\ full\ -buffersize\ 2097152\n\n\ \ \ \ #\ I\ am\ using\ fileevent\ and\ explicit\ copying\ to\ ensure\ that\ I\ am\n\ \ \ \ #\ told\ about\ eof.\ fcopy\ will\ not\ do\ that.\n\n\ \ \ \ fileevent\ \ \$socket\ readable\ \[list\ copy\ \$socket\ \$chan\]\n\ \ \ \ fconfigure\ \$socket\ -blocking\ 0\n\ \ \ \ return\n\ \}\n\ \n\ proc\ copy\ \{in\ out\}\ \{\n\ \ \ \ #\ Stop\ recording\ if\ the\ connection\ is\ lost.\n\ \ \ \ if\ \{\[eof\ \$in\]\}\ exit\n\n\ \ \ \ #\ Read,\ ignore\ empty\ reads.\n\ \ \ \ set\ data\ \[read\ \$in\]\n\ \ \ \ if\ \{!\[string\ length\ \$data\]\}\ return\n\n\ \ \ \ #\ Record\ to\ file\n\ \ \ \ puts\ -nonewline\ \$out\ \$data\n\ \ \ \ return\n\ \}\n\ \n\ if\ \{\ \$argc\ ==\ 2\ \}\ \{\n\ \ \ set\ url\ \[lindex\ \$argv\ 0\]\n\ \ \ set\ out\ \[lindex\ \$argv\ 1\]\n\n\ \ \ http::geturl\ \$url\ -handler\ \[list\ savestream\ \$out\]\n\n\ \}\ elseif\ \{\ \$argc\ !=\ 1\ \}\ \{\n\ \ \ puts\ stdout\ \"\\n\$::argv0\ a\ basic\ mp3\ &\ ogg\ stream\ player\\n\\n\\\n\ \ \ \ \ \ \ \ \ \ \ \ \ Usage:\ \\n\\t\$::argv0\ URL\\n\\\n\ \ \ \ \ \ \ \ \ \ \ \ \ Examples:\\n\\t\$::argv0\ http://ogg.smgradio.com:80/vc32.ogg\\n\\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \\t\$::argv0\ http://slaptech.net:8000/cmrn.mp3\"\n\ \ \ ::snack::audio\ stop\n\ \ \ exit\n\ \}\ else\ \{\n\ \ \ set\ url\ \[lindex\ \$argv\ 0\]\n\ \ \ http::geturl\ \$url\ -handler\ playstream\n\ \}\n======\n----\nThere\ is\ some\ streamed\ radios\ you\ can\ try\ here:\ \[http://dir.xiph.org/index.php\]\n\nI\ tested\ it\ successfully\ under\ linux\ with\ http://64.62.252.140:8628/soulfm.ogg\ ,\ http://64.62.252.140:8672/divaradio.ogg\ \ ,\ http://ogg.tv-radio.fr:1441/encoderfinter.ogg\ and\ http://wired.s6n.com:8012\n----\n\[LES\]:\ tested\ on\ Win\ 98.\ The\ three\ URLs\ above\ work\ flawlessly.\ Yay!\ 8-)\n----\n''\[escargo\]\ 12\ Oct\ 2004''\ -\ I\ tested\ it\ on\ Windows\ XP.\ \nThe\ first\ three\ URLs\ caused\ abnormal\ termination\;\ the\ last\ one\ just\ produced\ noise.\ \nI\ downloaded\ the\ latest\ version\ of\ snack,\ and\ tested\ it\ again.\ \ \nNo\ abnormal\ terminations\ now,\ and\ reasonable\ sound\ on\ three\ of\ the\ URLs\ (not\ on\ ogg.tv-radio.fr).\n----\n\[Kroc\]\ 21\ Oct\ 2004\ :\ the\ same\ thing\ but\ this\ one\ doesn't\ require\ Tk:\n\n======\ ################################################################################\n\ #\n\ #\ Basic\ Snack\ stream\ player\ (command\ line)\n\ #\n\ #\ Copyright\ ©\ 2004\ -\ Kroc\ &\ rmax\n\ #\n\ #\ Shared\ under\ NOL\ licence\ :\ http://wiki.tcl.tk/nol\n\ #\n\ #\ Version\ 1.1\ -\ October\ 2004\n\ #\n\ ################################################################################\n\ \n\ package\ require\ snack\ 2.2\n\ package\ require\ snackogg\n\ package\ require\ http\n\ \n\ #\ this\ is\ to\ enter\ event\ loop\n\ update\n\ \n\ proc\ quit\ \{\}\ \{\n\ \ \ \ \ ::snack::audio\ stop\n\ \ \ \ \ catch\ \"s\ stop\"\ snckerr\n\ \ \ \ \ exit\n\ \}\n\ \n\ proc\ cdline\ \{\}\ \{\n\ \ \ \ \ gets\ stdin\ data\n\ \ \ \ \ if\ \{\$data\ eq\ \"Q\"\ ||\ \$data\ eq\ \"q\"\}\ \{\n\ \ \ \ \ \ \ \ \ quit\n\ \ \ \ \ \}\n\ \ \ \ \ return\n\ \}\n\ \n\ fileevent\ stdin\ readable\ cdline\n\ \n\ proc\ playstream\ \{\ socket\ token\ \}\ \{\n\ \ \ \ \ fileevent\ \$socket\ readable\ \"\"\n\ \ \ \ \ puts\ -nonewline\ stdout\ \"Buffering...\"\n\ \ \ \ \ flush\ stdout\n\ \ \ \ \ list\ http::cleanup\ \$token\n\ \ \ \ \ ::snack::sound\ s\ -channel\ \$socket\n\ \ \ \ \ for\ \{set\ i\ 0\}\ \{\$i\ <\ 30\}\ \{incr\ i\}\ \{\n\ \ \ \ \ \ \ \ \ after\ 100\n\ \ \ \ \ \ \ \ \ puts\ -nonewline\ stdout\ .\n\ \ \ \ \ \ \ \ \ flush\ stdout\n\ \ \ \ \ \}\n\ \ \ \ \ puts\ stdout\ \"\\nPlaying...\ (q\ +\ Return\ to\ stop\ player\ and\ exit)\"\n\ \ \ \ \ flush\ stdout\n\ \ \ \ \ s\ play\ -blocking\ 0\n\ \ \ \ \ return\ 0\n\ \}\n\ \n\ proc\ help\ \{\}\ \{\n\ \ \ \ \ puts\ stdout\ \"\\n\$::argv0\ a\ command\ line\ mp3\ &\ ogg\ stream\ player\\n\\n\\\n\ \ \ \ \ \ \ \ \ \ \ \ \ Usage:\ \\n\\t\$::argv0\ URL\\n\\\n\ \ \ \ \ \ \ \ \ \ \ \ \ Examples:\\n\\t\$::argv0\ http://ogg.smgradio.com:80/vc32.ogg\\n\\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \\t\$::argv0\ http://slaptech.net:8000/cmrn.mp3\\n\\n\\\n\ \ \ \ \ \ \ \ \ \ \ \ \ Q\ (or\ q)\ +\ Return\ to\ stop\ player\ and\ exit.\\n\"\n\ \ \ \ \ quit\n\ \}\n\ \n\ if\ \{\ \$argc\ !=\ 1\ \}\ \{\n\ \ \ \ \ help\n\ \}\ elseif\ \{\[lindex\ \$argv\ 0\]\ eq\ \"-h\"\ ||\ \[lindex\ \$argv\ 0\]\ eq\ \"--help\"\}\ \{\n\ \ \ \ \ help\n\ \}\ else\ \{\n\ \ \ \ \ set\ url\ \[lindex\ \$argv\ 0\]\n\ \ \ \ \ if\ \{\[file\ extension\ \$url\]\ ne\ \".mp3\"\ &&\ \[file\ extension\ \$url\]\ ne\ \".ogg\"\}\ \{\n\ \ \ \ \ \ \ \ \ puts\ stdout\ \"Wrong\ URL\ target:\ it\ must\ be\ an\ .mp3\ or\ .ogg\ stream\ file.\"\n\ \ \ \ \ \ \ \ \ exit\n\ \ \ \ \ \}\n\ \ \ \ \ if\ \{!\[catch\ \"http::geturl\ \$url\ -handler\ playstream\"\ weberr\]\}\ \{\n\ \ \ \ \ \ \ \ \ vwait\ forever\n\ \ \ \ \ \}\ else\ \ \{\n\ \ \ \ \ \ \ \ \ puts\ stdout\ \$weberr\n\ \ \ \ \ \ \ \ \ quit\n\ \ \ \ \ \}\n\ \}\n======\n\n----\n\[DZ\]:\ see\ also\ \[basic\ snack\ stream\ player\ 2\ -\ shoutcast\]\n\n\n<<categories>>\ Application\ |\ Internet\ |\ Sound\ |\ File regexp2} CALL {my render {basic snack stream player} \[Kroc\]\ -\ 8\ Oct\ 2004\ :\ This\ is\ very\ simple\ '''ogg/mp3'''\ stream\ player.\ \nIt\ ''might''\ require\ \[snack\]\ 2.2.8.\n----\n\ \n======\n################################################################################\n\ #\n\ #\ Basic\ Snack\ stream\ player\n\ #\n\ #\ Copyright\ ©\ 2004\ -\ Kroc,\ rmax\ and\ AK\n\ #\n\ #\ Shared\ under\ NOL\ licence\ :\ http://wiki.tcl.tk/nol\n\ #\n\ #\ Version\ 1.1\ -\ October\ 2004\n\ #\n\ ################################################################################\n\ \n\ package\ require\ snack\ 2.2\n\ package\ require\ snackogg\n\ package\ require\ http\n\ \n\ proc\ quit\ \{\}\ \{\n\ \ \ \ ::snack::audio\ stop\n\ \ \ \ s\ stop\n\ \ \ \ exit\n\ \}\n\n\ proc\ playstream\ \{\ socket\ token\ \}\ \{\n\ \ \ package\ require\ Tk\n\ \ \ wm\ title\ \ \ \ .\ \"Basic\ Snack\ stream\ player\"\n\ \ \ wm\ protocol\ .\ WM_DELETE_WINDOW\ \{quit\}\n\n\ \ \ fileevent\ \$socket\ readable\ \"\"\n\ \ \ set\ ::status\ \"Buffering...\"\n\ \ \ grid\ \[label\ .l1\ -text\ \"Playing\ \[lindex\ \$::argv\ 0\]\"\]\ -sticky\ ew\n\ \ \ grid\ \[label\ .l2\ -textvariable\ ::status\ -justify\ left\]\ -sticky\ w\n\ \ \ grid\ \[button\ .b\ -text\ Quit\ -command\ quit\]\ -sticky\ ew\n\ \ \ update\n\ \ \ list\ http::cleanup\ \$token\n\ \ \ ::snack::sound\ s\ -channel\ \$socket\n\ \ \ for\ \{set\ i\ 0\}\ \{\$i\ <\ 30\}\ \{incr\ i\}\ \{\n\ \ \ \ \ \ \ after\ 100\n\ \ \ \ \ \ \ append\ ::status\ .\n\ \ \ \ \ \ \ update\n\ \ \ \}\n\ \ \ set\ ::status\ \"stream\ type\ is\ \[s\ info\]\"\n\ \ \ update\n\ \ \ s\ play\ -blocking\ 0\n\ \ \ return\ 0\n\ \}\n\ \n\ proc\ savestream\ \{outfile\ socket\ token\}\ \{\n\ \ \ \ fileevent\ \$socket\ readable\ \"\"\n\ \ \ \ #http::cleanup\ \$token\n\n\ \ \ \ set\ chan\ \[open\ \$outfile\ w\]\n\n\ \ \ \ #\ Ogg\ is\ binary,\ 2\ MB\ buffer,\ write\ to\ OS\ only\ if\ buffer\ is\ full.\n\ \ \ \ #\ This\ also\ writes\ on\ exit\ of\ application.\n\n\ \ \ \ fconfigure\ \$chan\ -translation\ binary\ -buffering\ full\ -buffersize\ 2097152\n\n\ \ \ \ #\ I\ am\ using\ fileevent\ and\ explicit\ copying\ to\ ensure\ that\ I\ am\n\ \ \ \ #\ told\ about\ eof.\ fcopy\ will\ not\ do\ that.\n\n\ \ \ \ fileevent\ \ \$socket\ readable\ \[list\ copy\ \$socket\ \$chan\]\n\ \ \ \ fconfigure\ \$socket\ -blocking\ 0\n\ \ \ \ return\n\ \}\n\ \n\ proc\ copy\ \{in\ out\}\ \{\n\ \ \ \ #\ Stop\ recording\ if\ the\ connection\ is\ lost.\n\ \ \ \ if\ \{\[eof\ \$in\]\}\ exit\n\n\ \ \ \ #\ Read,\ ignore\ empty\ reads.\n\ \ \ \ set\ data\ \[read\ \$in\]\n\ \ \ \ if\ \{!\[string\ length\ \$data\]\}\ return\n\n\ \ \ \ #\ Record\ to\ file\n\ \ \ \ puts\ -nonewline\ \$out\ \$data\n\ \ \ \ return\n\ \}\n\ \n\ if\ \{\ \$argc\ ==\ 2\ \}\ \{\n\ \ \ set\ url\ \[lindex\ \$argv\ 0\]\n\ \ \ set\ out\ \[lindex\ \$argv\ 1\]\n\n\ \ \ http::geturl\ \$url\ -handler\ \[list\ savestream\ \$out\]\n\n\ \}\ elseif\ \{\ \$argc\ !=\ 1\ \}\ \{\n\ \ \ puts\ stdout\ \"\\n\$::argv0\ a\ basic\ mp3\ &\ ogg\ stream\ player\\n\\n\\\n\ \ \ \ \ \ \ \ \ \ \ \ \ Usage:\ \\n\\t\$::argv0\ URL\\n\\\n\ \ \ \ \ \ \ \ \ \ \ \ \ Examples:\\n\\t\$::argv0\ http://ogg.smgradio.com:80/vc32.ogg\\n\\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \\t\$::argv0\ http://slaptech.net:8000/cmrn.mp3\"\n\ \ \ ::snack::audio\ stop\n\ \ \ exit\n\ \}\ else\ \{\n\ \ \ set\ url\ \[lindex\ \$argv\ 0\]\n\ \ \ http::geturl\ \$url\ -handler\ playstream\n\ \}\n======\n----\nThere\ is\ some\ streamed\ radios\ you\ can\ try\ here:\ \[http://dir.xiph.org/index.php\]\n\nI\ tested\ it\ successfully\ under\ linux\ with\ http://64.62.252.140:8628/soulfm.ogg\ ,\ http://64.62.252.140:8672/divaradio.ogg\ \ ,\ http://ogg.tv-radio.fr:1441/encoderfinter.ogg\ and\ http://wired.s6n.com:8012\n----\n\[LES\]:\ tested\ on\ Win\ 98.\ The\ three\ URLs\ above\ work\ flawlessly.\ Yay!\ 8-)\n----\n''\[escargo\]\ 12\ Oct\ 2004''\ -\ I\ tested\ it\ on\ Windows\ XP.\ \nThe\ first\ three\ URLs\ caused\ abnormal\ termination\;\ the\ last\ one\ just\ produced\ noise.\ \nI\ downloaded\ the\ latest\ version\ of\ snack,\ and\ tested\ it\ again.\ \ \nNo\ abnormal\ terminations\ now,\ and\ reasonable\ sound\ on\ three\ of\ the\ URLs\ (not\ on\ ogg.tv-radio.fr).\n----\n\[Kroc\]\ 21\ Oct\ 2004\ :\ the\ same\ thing\ but\ this\ one\ doesn't\ require\ Tk:\n\n======\ ################################################################################\n\ #\n\ #\ Basic\ Snack\ stream\ player\ (command\ line)\n\ #\n\ #\ Copyright\ ©\ 2004\ -\ Kroc\ &\ rmax\n\ #\n\ #\ Shared\ under\ NOL\ licence\ :\ http://wiki.tcl.tk/nol\n\ #\n\ #\ Version\ 1.1\ -\ October\ 2004\n\ #\n\ ################################################################################\n\ \n\ package\ require\ snack\ 2.2\n\ package\ require\ snackogg\n\ package\ require\ http\n\ \n\ #\ this\ is\ to\ enter\ event\ loop\n\ update\n\ \n\ proc\ quit\ \{\}\ \{\n\ \ \ \ \ ::snack::audio\ stop\n\ \ \ \ \ catch\ \"s\ stop\"\ snckerr\n\ \ \ \ \ exit\n\ \}\n\ \n\ proc\ cdline\ \{\}\ \{\n\ \ \ \ \ gets\ stdin\ data\n\ \ \ \ \ if\ \{\$data\ eq\ \"Q\"\ ||\ \$data\ eq\ \"q\"\}\ \{\n\ \ \ \ \ \ \ \ \ quit\n\ \ \ \ \ \}\n\ \ \ \ \ return\n\ \}\n\ \n\ fileevent\ stdin\ readable\ cdline\n\ \n\ proc\ playstream\ \{\ socket\ token\ \}\ \{\n\ \ \ \ \ fileevent\ \$socket\ readable\ \"\"\n\ \ \ \ \ puts\ -nonewline\ stdout\ \"Buffering...\"\n\ \ \ \ \ flush\ stdout\n\ \ \ \ \ list\ http::cleanup\ \$token\n\ \ \ \ \ ::snack::sound\ s\ -channel\ \$socket\n\ \ \ \ \ for\ \{set\ i\ 0\}\ \{\$i\ <\ 30\}\ \{incr\ i\}\ \{\n\ \ \ \ \ \ \ \ \ after\ 100\n\ \ \ \ \ \ \ \ \ puts\ -nonewline\ stdout\ .\n\ \ \ \ \ \ \ \ \ flush\ stdout\n\ \ \ \ \ \}\n\ \ \ \ \ puts\ stdout\ \"\\nPlaying...\ (q\ +\ Return\ to\ stop\ player\ and\ exit)\"\n\ \ \ \ \ flush\ stdout\n\ \ \ \ \ s\ play\ -blocking\ 0\n\ \ \ \ \ return\ 0\n\ \}\n\ \n\ proc\ help\ \{\}\ \{\n\ \ \ \ \ puts\ stdout\ \"\\n\$::argv0\ a\ command\ line\ mp3\ &\ ogg\ stream\ player\\n\\n\\\n\ \ \ \ \ \ \ \ \ \ \ \ \ Usage:\ \\n\\t\$::argv0\ URL\\n\\\n\ \ \ \ \ \ \ \ \ \ \ \ \ Examples:\\n\\t\$::argv0\ http://ogg.smgradio.com:80/vc32.ogg\\n\\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \\t\$::argv0\ http://slaptech.net:8000/cmrn.mp3\\n\\n\\\n\ \ \ \ \ \ \ \ \ \ \ \ \ Q\ (or\ q)\ +\ Return\ to\ stop\ player\ and\ exit.\\n\"\n\ \ \ \ \ quit\n\ \}\n\ \n\ if\ \{\ \$argc\ !=\ 1\ \}\ \{\n\ \ \ \ \ help\n\ \}\ elseif\ \{\[lindex\ \$argv\ 0\]\ eq\ \"-h\"\ ||\ \[lindex\ \$argv\ 0\]\ eq\ \"--help\"\}\ \{\n\ \ \ \ \ help\n\ \}\ else\ \{\n\ \ \ \ \ set\ url\ \[lindex\ \$argv\ 0\]\n\ \ \ \ \ if\ \{\[file\ extension\ \$url\]\ ne\ \".mp3\"\ &&\ \[file\ extension\ \$url\]\ ne\ \".ogg\"\}\ \{\n\ \ \ \ \ \ \ \ \ puts\ stdout\ \"Wrong\ URL\ target:\ it\ must\ be\ an\ .mp3\ or\ .ogg\ stream\ file.\"\n\ \ \ \ \ \ \ \ \ exit\n\ \ \ \ \ \}\n\ \ \ \ \ if\ \{!\[catch\ \"http::geturl\ \$url\ -handler\ playstream\"\ weberr\]\}\ \{\n\ \ \ \ \ \ \ \ \ vwait\ forever\n\ \ \ \ \ \}\ else\ \ \{\n\ \ \ \ \ \ \ \ \ puts\ stdout\ \$weberr\n\ \ \ \ \ \ \ \ \ quit\n\ \ \ \ \ \}\n\ \}\n======\n\n----\n\[DZ\]:\ see\ also\ \[basic\ snack\ stream\ player\ 2\ -\ shoutcast\]\n\n\n<<categories>>\ Application\ |\ Internet\ |\ Sound\ |\ File} CALL {my revision {basic snack stream player}} CALL {::oo::Obj5313296 process revision/basic+snack+stream+player} CALL {::oo::Obj5313294 process}

-errorcode

NONE

-errorinfo

Unknow state transition: LINE -> END
    while executing
"error $msg"
    (class "::Wiki" method "render_wikit" line 6)
    invoked from within
"my render_$default_markup $N $C $mkup_rendering_engine"
    (class "::Wiki" method "render" line 8)
    invoked from within
"my render $name $C"
    (class "::Wiki" method "revision" line 31)
    invoked from within
"my revision $page"
    (class "::Wiki" method "process" line 56)
    invoked from within
"$server process [string trim $uri /]"

-errorline

4