<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.comp.lang.pike.user">
    <title>gmane.comp.lang.pike.user</title>
    <link>http://blog.gmane.org/gmane.comp.lang.pike.user</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.pike.user/8702"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.pike.user/8701"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.pike.user/8700"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.pike.user/8699"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.pike.user/8698"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.pike.user/8697"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.pike.user/8696"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.pike.user/8695"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.pike.user/8694"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.pike.user/8693"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.pike.user/8692"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.pike.user/8691"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.pike.user/8690"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.pike.user/8689"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.pike.user/8688"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.pike.user/8687"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.pike.user/8686"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.pike.user/8685"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.pike.user/8684"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.pike.user/8683"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.pike.user/8702">
    <title>Re: Abuse of thread kill() to achieve setjmp/longjmp</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.pike.user/8702</link>
    <description>&lt;pre&gt;
Cool! The patch works as advertised. Thanks!

ChrisA


&lt;/pre&gt;</description>
    <dc:creator>Chris Angelico</dc:creator>
    <dc:date>2012-05-23T16:08:42</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.pike.user/8701">
    <title>Re: Abuse of thread kill() to achieve setjmp/longjmp</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.pike.user/8701</link>
    <description>&lt;pre&gt;

A closer look at the code gives that the value is ignored in this specific 
case. A two line patch gives the probably intended behaviour:

Before:
(1) Result: 0

After:
(1) Result: -1


Thanks.


--
Henrik Grubbströmgrubba&amp;lt; at &amp;gt;roxen.com
Roxen Internet Software AB&lt;/pre&gt;</description>
    <dc:creator>Henrik Grubbström</dc:creator>
    <dc:date>2012-05-23T16:05:47</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.pike.user/8700">
    <title>Re: Abuse of thread kill() to achieve setjmp/longjmp</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.pike.user/8700</link>
    <description>&lt;pre&gt;
That's actually exactly what I wanted - the ability to throw an
exception that would propagate past most checks. Odd that this hack
should turn out to be exactly that!


Hmm, strange. Testing was what told me that wait() returned 0. I ran
things through gdb and found that the check_thread_interrupt
(threads.c:2733) and f_thread_id_result (threads.c:2697) don't seem to
use the same THIS_THREAD reference. I'm not sure what that means, but
wouldn't that mean that they're not operating on the same thread
object?

Test code:

int main()
{
write("wait(): %O\n",Thread.Thread(die)-&amp;gt;wait());
return 0;
}
void die() {this_thread()-&amp;gt;kill(); int a=0; while (1) a++;}

ChrisA


&lt;/pre&gt;</description>
    <dc:creator>Chris Angelico</dc:creator>
    <dc:date>2012-05-23T14:41:01</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.pike.user/8699">
    <title>Re: Abuse of thread kill() to achieve setjmp/longjmp</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.pike.user/8699</link>
    <description>&lt;pre&gt;

Just a FYI: The implementation of thread-&amp;gt;kill() actually just sets a flag 
on the thread that causes it to throw an exception of severity level
THROW_THREAD_EXIT instead of the usual THROW_ERROR. This causes it to get 
past all normal exception handling, but otherwise it's not much difference 
from throwing a normal exception. I do however find it a bit strange that 
you get a zero, from reading the code, it seems the intention is that you 
should get a -1.


--
Henrik Grubbströmgrubba&amp;lt; at &amp;gt;roxen.com
Roxen Internet Software AB&lt;/pre&gt;</description>
    <dc:creator>Henrik Grubbström</dc:creator>
    <dc:date>2012-05-23T11:07:17</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.pike.user/8698">
    <title>Abuse of thread kill() to achieve setjmp/longjmp</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.pike.user/8698</link>
    <description>&lt;pre&gt;In playing around with some aspects of STONITH protection and
forbidden reconnects, I've set up a situation in which I conditionally
want to abort out of a pgsql reconnect hook back to almost the
top-level of the program, and then restart from there. My current
technique seems somewhat insane, so I'd appreciate any advice!

Sql.Sql db;
int main(int argc,array(string) argv)
{
db=Sql.Sql("pgsql://blahblah");
db-&amp;gt;master_sql-&amp;gt;set_notify_callback("_reconnect",recon,1);
while (Thread.Thread(doit)-&amp;gt;wait()!=5);
return 0;
}
int doit()
{
//do stuff, lots of SQL queries
write("Done!\n");
return 5;
}
void recon(int pid,string cond,string extra)
{
/* if (whatever condition) */ this_thread()-&amp;gt;kill();
}

If the thread is killed, wait() returns 0; if it ends normally, it
returns the thread's nonzero return value. By killing the thread and
starting over, I effectively execute a longjmp straight out of recon()
and back to the main routine. (I can't throw an exception, which is
the obvious thing to do here, because the pgsql reconnect module
catches them.)

What better ways are there of achieving this? I'm sure there must be
some. Opening up for random thoughts, queries as to my sanity, demands
for revocation of my coder's license, etcetera...

Chris Angelico


&lt;/pre&gt;</description>
    <dc:creator>Chris Angelico</dc:creator>
    <dc:date>2012-05-23T08:05:54</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.pike.user/8697">
    <title>Stackoverflow question: how is pike different from C?</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.pike.user/8697</link>
    <description>&lt;pre&gt;hi,

maybe some of you who are more knowlegeable about C can help answer this
question:

http://stackoverflow.com/questions/10307319/is-there-a-guide-to-ch-cint-or-pike-for-c-c-programmers

greetings, martin.
&lt;/pre&gt;</description>
    <dc:creator>Martin Bähr</dc:creator>
    <dc:date>2012-05-22T04:24:49</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.pike.user/8696">
    <title>Re: read callbacks</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.pike.user/8696</link>
    <description>&lt;pre&gt;

I've now updated the CNAME for pike.roxen.com to point to 
pike.lysator.liu.se.

--
Henrik Grubbströmgrubba&amp;lt; at &amp;gt;roxen.com
Roxen Internet Software AB&lt;/pre&gt;</description>
    <dc:creator>Henrik Grubbström</dc:creator>
    <dc:date>2012-05-21T09:15:43</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.pike.user/8695">
    <title>Re: read callbacks</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.pike.user/8695</link>
    <description>&lt;pre&gt;




http://pike.ida.liu.se/generated/manual/modref/ex/predef_3A_3A/Stdio/File/set_read_callback.html

I always went to pike.roxen.com, which redirects to pike.ida.liu.se.  I suppose I should go to the other site...&lt;/pre&gt;</description>
    <dc:creator>Lance Dillon</dc:creator>
    <dc:date>2012-05-19T16:51:43</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.pike.user/8694">
    <title>Re: read callbacks</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.pike.user/8694</link>
    <description>&lt;pre&gt;

What documentation are you reading?

   https://pike.lysator.liu.se/generated/manual/modref/ex/predef_3A_3A/Stdio/File/set_read_callback.html

has the prototype

   void set_read_callback(function(mixed, string:int) read_cb)


--
Henrik Grubbströmgrubba&amp;lt; at &amp;gt;roxen.com
Roxen Internet Software AB&lt;/pre&gt;</description>
    <dc:creator>Henrik Grubbström</dc:creator>
    <dc:date>2012-05-19T16:10:56</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.pike.user/8693">
    <title>Re: read callbacks</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.pike.user/8693</link>
    <description>&lt;pre&gt;




Thanks, that was exactly it.

However, is the documentation incorrect, or am I reading it wrong?  It says:

void set_read_callback(function(mixed:int) read_cb)

Doesn't that mean that function read_cb gets mixed and returns an int?  Shouldn't it say maybe function(int,string:int) read_cb?&lt;/pre&gt;</description>
    <dc:creator>Lance Dillon</dc:creator>
    <dc:date>2012-05-19T11:33:06</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.pike.user/8692">
    <title>Re: read callbacks</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.pike.user/8692</link>
    <description>&lt;pre&gt;
The callback gets called with read_cb(id, data) (id can be set with
f-&amp;gt;set_id(x)).


&lt;/pre&gt;</description>
    <dc:creator>Tobias S. Josefowitz</dc:creator>
    <dc:date>2012-05-19T11:21:10</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.pike.user/8691">
    <title>read callbacks</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.pike.user/8691</link>
    <description>&lt;pre&gt;So I'm trying to implement a read_callback, and it is not doing quite what I want.

I have a class Connection, that creates a Transport object, that itself creates a Stdio.File object.  I pass a callback function like this, mostly:

class Connection {
    object transport;

    void create() {
        predef::write("before transport\n");
        transport=.Transport(read_cb);
        predef::write("after transport\n");
    }

    void read_cb(mixed in_str) {
        predef::write("Connection: in_str==%O\n",in_str);
    }
}


class Transport {
    function in_cb;
    Stdio.File con;

    void create(function in_read_cb) {
        in_cb=in_read_cb;
        con=Stdio.File();
        write("before set_read_callback\n");
        con-&amp;gt;set_read_callback(read_cb);
        write("after set_read_callback\n");
        con-&amp;gt;open_socket();
        con-&amp;gt;connect(/* specific host and port */);
        write("before write\n");
        con-&amp;gt;write(/* protocol start data);
        write("after write\n");
    }

    int read_cb(mixed in_str) {
        predef::write("Entering Transport::read_cb()\n");

        mixed ret=in_cb(in_str);
        predef::write("ret==%O\n",ret);
        predef::write("in_str==%O\n",in_str);
        predef::write("Leaving Transport::read_cb()\n");
        return ret;
    }

}


So, in my main code, I am creating a connection object.  This should set the read_cb and send the data.  As shown, I have the transport set the read_cb to itself, and pass the information up to the function set at create time.

However, I don't seem to get anything anywhere.  I know that I am getting data because it was working when I just do a read directly, before attempting the callback, and also with the callback set I did a tcpdump and verified that I was getting the same data as before.  It just doesn't seem to be getting to the callback.  Here is what my debug statements are printing:

before transport
before set_read_callback
after set_read_callback
before write
after write
after transport
Entering Transport::read_cb()
Connection: in_str==0
ret==0
in_str==0
Leaving Transport::read_cb()


As shown, it seems to be receiving something, because the callback gets called, but there is no data there.

Maybe I'm using the function wrong?

Thanks
&lt;/pre&gt;</description>
    <dc:creator>Lance Dillon</dc:creator>
    <dc:date>2012-05-18T19:48:59</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.pike.user/8690">
    <title>Re: multiple return types?</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.pike.user/8690</link>
    <description>&lt;pre&gt;

It's a known limitation in the parser that the Pike compiler uses.
You can work around it by using the old-style syntax:

   object(.Frame)|mapping start_frame;

or by swapping the order of the types:

   mapping|.Frame start_frame;

--
Henrik Grubbströmgrubba&amp;lt; at &amp;gt;roxen.com
Roxen Internet Software AB&lt;/pre&gt;</description>
    <dc:creator>Henrik Grubbström</dc:creator>
    <dc:date>2012-05-17T15:24:27</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.pike.user/8689">
    <title>multiple return types?</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.pike.user/8689</link>
    <description>&lt;pre&gt;I have a class method that returns either an object (.Frame) or a mapping.  I have the function defined as such:

.Frame|mapping read_frame();

but when I try to define a variable:

.Frame|mapping start_frame;

I get the following error:

Connection.pike:45:syntax error, unexpected TOK_MAPPING_ID

However, if I change it to object instead of .Frame:

object|mapping start_frame;

It works fine.

Is this an error somewhere?  Or is that a syntax error on my part?
&lt;/pre&gt;</description>
    <dc:creator>Lance Dillon</dc:creator>
    <dc:date>2012-05-17T14:27:10</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.pike.user/8688">
    <title>Re: Crypto.MD5</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.pike.user/8688</link>
    <description>&lt;pre&gt;
Nope. Might be faster to use the short version, is definitely briefer.
They're guaranteed equivalent.

ChrisA


&lt;/pre&gt;</description>
    <dc:creator>Chris Angelico</dc:creator>
    <dc:date>2012-05-15T22:36:05</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.pike.user/8687">
    <title>Re: Crypto.MD5</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.pike.user/8687</link>
    <description>&lt;pre&gt;Actually, I just did:

String.string2hex(Crypto.MD5.hash(str));

Is there a difference between what is below and what I did?  Crypto.MD5()-&amp;gt;update(str)-&amp;gt;digest() vi Crypto.MD5.hash(str)?

Thanks




&amp;gt;&lt;/pre&gt;</description>
    <dc:creator>Lance Dillon</dc:creator>
    <dc:date>2012-05-15T22:29:54</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.pike.user/8686">
    <title>Re: Crypto.MD5</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.pike.user/8686</link>
    <description>&lt;pre&gt;-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


Hello!

String.string2hex(Crypto.MD5()-&amp;gt;update("INPUT")-&amp;gt;digest());

Best regards,
David Santiago


Em Tue, 15 May 2012 08:12:15 -0700 (PDT)
Lance Dillon &amp;lt;riffraff169&amp;lt; at &amp;gt;yahoo.com&amp;gt; escreveu:


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (GNU/Linux)

iQIcBAEBAgAGBQJPstHhAAoJEAiFd8wEHg6FjxcP/ibOZFbTICn+HMHvaYlzY5RZ
ok4vIHUYE/D8KJzTgKMYpcd1FetD6nDdVWqfBv8u4YtVb5823tE77o7k480CfLCK
QiiMV42vjve/xoHEM/bbg3Ou0PdlEWfxg+cO9j34N7NQkzDp7KamYXjWjZ8jEXOE
6AyTKhNk45P/GgJs3FForqf8fXvLhm5dX2i48Eaf59J+h3qn3gXE+a4gTKmPNgtQ
8W5mh8vUH9uPfly1z2TgmP4Ek/KuwMWVSNkoKaUA/6lQwwX6Qd8LzDdaGcdmWVI5
NVnEcSp9K9M8gQOtcHXtvrqZPQDmiTWFwqHIBb+kJ3HlTo2QK7WisOp/lowlqX3v
vVon4+9gFWb1gmmpcxTmooS8TluQPQZzD4t5NW82Et8s5k/ogv/EY8Z/8SRufOzi
qgpqlpzKtcWiuLZkP6rVOp7w4PU2boh21zoREQwae5ckCJQAIMdh0Y37iFcVEti+
my+PQjWP9lgf6f/k20KpEMyViCHsPq4uQKdW21mOpXrmVuQfkDqm4v8XGEv7qEyw
27Gyk/Xh04q5/pa/24QoMxVEon3z0tIVV0SqOjQt25hLjpOCqVVBZqZy0v0VZnM1
toeT8Nu5/QVR2TpRKfAPGkTGpZ3cGne+rItyxX/e5RUMKTFD/3YAoPTr/ixZor8V
g2SiLK2U7DAdiP/M+yq4
=gXM9
-----END PGP SIGNATURE-----
&lt;/pre&gt;</description>
    <dc:creator>David Emanuel da Costa Santiago</dc:creator>
    <dc:date>2012-05-15T21:59:52</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.pike.user/8685">
    <title>Re: Crypto.MD5</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.pike.user/8685</link>
    <description>&lt;pre&gt;

If you don't use Safari (it will crash), you can try the (experimental)
manual at

http://pike.lysator.liu.se/generated/manual/modref/ex/predef_3A_3A/Crypto/MD5.html

which does list the inherited symbols (when javascript is enabled).


As you've noticed, the digest is returned as a binary string.


There's no need for the array_sscanf(). Just cast the string to an 
array(int).


There are multiple ways, the most common is to use String.string2hex().

A more exotic one is

   Gmp.mpz(str, 256)-&amp;gt;digits(16);

--
Henrik Grubbströmgrubba&amp;lt; at &amp;gt;roxen.com
Roxen Internet Software AB&lt;/pre&gt;</description>
    <dc:creator>Henrik Grubbström</dc:creator>
    <dc:date>2012-05-15T15:29:57</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.pike.user/8684">
    <title>Crypto.MD5</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.pike.user/8684</link>
    <description>&lt;pre&gt;I want to generate a hash exactly as md5sum would.  What would be the best way of doing that?  The docs don't seem to be that helpful.

http://pike.ida.liu.se/generated/manual/modref/ex/predef_3A_3A/Crypto/MD5.html

doesn't really say how to use it, other than it inherits from MD5_Info (Nettle.MD5_Info) and Hash (.Hash).

Nettle.MD5_Info just says it is an internal mixin class.
.Hash just says it is an abstract class, with only `()() listed, but it inherits Nettle.HashInfo
Nettle.HashInfo has block_size(), digest_size(), hash(), and name().

md5sum on a certain file game me:
2fcb2fbe1ff9e1dd6cfa10429879008

Crypto.MD5.hash() gave me "/\313/\276\37\371\341\335l\372\20B\230y\0\213"

I'm assuming there is some sort of transformation after Crypto.MD5.hash() to get the same result as md5sum, I just don't know what that is.

Actually, with a little experimenting, and looking at rfc1321 (http://www.ietf.org/rfc/rfc1321.txt), page 20, I came up with the following code.

string md5sum(string str) {
    string hash=Crypto.MD5.hash(str);
    string md5s=sprintf("%{%02x%}",map(hash/"",lambda(string h1) { return array_sscanf(h1,"%c")[0]; } ));
    return md5s;
}


There may be a more efficient way, if anybody can think of it.  I need to output every byte of the string returned from Crypto.MD5.hash() as a 2-byte hex, but I think doing array_sscanf() for each character is a little inefficient.

Thanks
&lt;/pre&gt;</description>
    <dc:creator>Lance Dillon</dc:creator>
    <dc:date>2012-05-15T15:12:15</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.pike.user/8683">
    <title>Re: newbie questions - "finally"</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.pike.user/8683</link>
    <description>&lt;pre&gt;

The last comment is not quite true, since the lock variable may get reused 
if there are further variable declarations after the block.


True.

--
Henrik Grubbströmgrubba&amp;lt; at &amp;gt;roxen.com
Roxen Internet Software AB&lt;/pre&gt;</description>
    <dc:creator>Henrik Grubbström</dc:creator>
    <dc:date>2012-05-04T15:13:32</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.pike.user/8682">
    <title>Re: SQLite and pike strings in bindings</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.pike.user/8682</link>
    <description>&lt;pre&gt;

If I remember correctly, the Oracle glue uses strings wrapped in multisets 
to indicate BLOBS in bindings. This should be doable in the SQLite case as 
well.

--
Henrik Grubbströmgrubba&amp;lt; at &amp;gt;roxen.com
Roxen Internet Software AB&lt;/pre&gt;</description>
    <dc:creator>Henrik Grubbström</dc:creator>
    <dc:date>2012-05-04T15:11:10</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.comp.lang.pike.user">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.lang.pike.user</link>
  </textinput>
</rdf:RDF>

