< 1266278584 0 :lament!unknown@unknown.invalid QUIT :Ping timeout: 245 seconds < 1266278750 0 :MissPiggy!unknown@unknown.invalid QUIT :Quit: Lost terminal < 1266278943 0 :lament!~lament@S0106001b63f462cc.vc.shawcable.net JOIN :#esoteric < 1266279252 0 :oerjan!unknown@unknown.invalid QUIT :Quit: leaving < 1266279389 0 :scarf!unknown@unknown.invalid QUIT :Remote host closed the connection < 1266280453 0 :Asztal!unknown@unknown.invalid QUIT :Ping timeout: 272 seconds < 1266281473 0 :coppro!~coppro@unaffiliated/coppro JOIN :#esoteric < 1266282693 0 :coppro!unknown@unknown.invalid QUIT :Quit: restarting < 1266282752 0 :coppro!~coppro@unaffiliated/coppro JOIN :#esoteric < 1266283350 0 :jcp!~jw@bzflag/contributor/javawizard2539 JOIN :#esoteric < 1266283380 0 :Pthing!unknown@unknown.invalid QUIT :Remote host closed the connection < 1266288130 0 :MizardX!~MizardX@unaffiliated/mizardx JOIN :#esoteric < 1266290662 0 :augur!~augur@208-59-119-22.c3-0.161-ubr1.lnh-161.md.cable.rcn.com JOIN :#esoteric < 1266292330 0 :Wareya!unknown@unknown.invalid QUIT :Remote host closed the connection < 1266292668 0 :jcp!unknown@unknown.invalid NICK :man_in_radio_sha < 1266292672 0 :man_in_radio_sha!unknown@unknown.invalid NICK :jcp < 1266292684 0 :jcp!unknown@unknown.invalid NICK :man_in_house < 1266292727 0 :man_in_house!unknown@unknown.invalid NICK :jcp < 1266292746 0 :augur_!~augur@208-59-119-22.c3-0.161-ubr1.lnh-161.md.cable.rcn.com JOIN :#esoteric < 1266292748 0 :augur!unknown@unknown.invalid QUIT :Read error: Connection reset by peer < 1266293041 0 :wareya!~wareya@cpe-74-70-140-214.nycap.res.rr.com JOIN :#esoteric < 1266293045 0 :wareya!unknown@unknown.invalid NICK :Wareya < 1266294313 0 :Gracenotes!unknown@unknown.invalid QUIT :Read error: Connection reset by peer < 1266294771 0 :Gracenotes!~person@wikipedia/Gracenotes JOIN :#esoteric < 1266295156 0 :augur_!unknown@unknown.invalid QUIT :Ping timeout: 260 seconds < 1266297840 0 :jcp!unknown@unknown.invalid QUIT :Read error: Connection reset by peer < 1266298048 0 :jcp!~jw@bzflag/contributor/javawizard2539 JOIN :#esoteric < 1266298486 0 :augur!~augur@216-164-33-76.c3-0.slvr-ubr2.lnh-slvr.md.cable.rcn.com JOIN :#esoteric < 1266298552 0 :Sgeo_!~Sgeo@ool-18bf618a.dyn.optonline.net JOIN :#esoteric < 1266298740 0 :Sgeo!unknown@unknown.invalid QUIT :Ping timeout: 260 seconds < 1266302000 0 :FireFly!~firefly@unaffiliated/firefly JOIN :#esoteric < 1266302105 0 :bsmntbombdood!unknown@unknown.invalid NICK :_bsmntbombdood < 1266302191 0 :_bsmntbombdood!unknown@unknown.invalid NICK :bsmntbombdood < 1266304488 0 :jcp!unknown@unknown.invalid QUIT :Quit: I will do anything (almost) for a new router. < 1266305305 0 :kar8nga!~kar8nga@jol13-1-82-66-176-74.fbx.proxad.net JOIN :#esoteric < 1266307199 0 :clog!unknown@unknown.invalid QUIT :ended < 1266307200 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1266307665 0 :MigoMipo!~MigoMipo@84-217-7-155.tn.glocalnet.net JOIN :#esoteric < 1266309033 0 :gm|lap!unknown@unknown.invalid QUIT :Quit: 2 hour UPS expired. Shutting down laptop. < 1266312065 0 :MigoMipo!unknown@unknown.invalid QUIT :Quit: When two people dream the same dream, it ceases to be an illusion. KVIrc 3.4.2 Shiny http://www.kvirc.net < 1266313540 0 :coppro!unknown@unknown.invalid QUIT :Quit: I am leaving. You are about to explode. < 1266313618 0 :Wareya!unknown@unknown.invalid PRIVMSG #esoteric :but I don't WANT to explode! < 1266313747 0 :Asztal!~asztal@host86-156-193-0.range86-156.btcentralplus.com JOIN :#esoteric < 1266314401 0 :kar8nga!unknown@unknown.invalid QUIT :Remote host closed the connection < 1266314877 0 :tombom!tombom@wikipedia/Tombomp JOIN :#esoteric < 1266316737 0 :KingOfKarlsruhe!~nice@p5B132456.dip.t-dialin.net JOIN :#esoteric < 1266316808 0 :FireFly!unknown@unknown.invalid QUIT :Quit: Leaving < 1266318655 0 :Edicius!~Edicius@83.149.52.37 JOIN :#esoteric < 1266318667 0 :Edicius!unknown@unknown.invalid PRIVMSG #esoteric :yo < 1266318830 0 :Wareya!unknown@unknown.invalid PRIVMSG #esoteric :hi < 1266318876 0 :Edicius!unknown@unknown.invalid PRIVMSG #esoteric :god hate me < 1266319767 0 :kar8nga!~kar8nga@jol13-1-82-66-176-74.fbx.proxad.net JOIN :#esoteric < 1266321562 0 :Pthing!~pthing@cpc11-pres4-0-0-cust168.pres.cable.virginmedia.com JOIN :#esoteric < 1266322823 0 :Asztal!unknown@unknown.invalid QUIT :Ping timeout: 272 seconds < 1266323823 0 :Edicius!unknown@unknown.invalid PART #esoteric :? < 1266324361 0 :scarf!~scarf@unaffiliated/ais523 JOIN :#esoteric < 1266324872 0 :kar8nga!unknown@unknown.invalid QUIT :Remote host closed the connection < 1266325409 0 :oerjan!~oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1266325492 0 :MizardX-!~MizardX@unaffiliated/mizardx JOIN :#esoteric < 1266325657 0 :MizardX!unknown@unknown.invalid QUIT :Ping timeout: 248 seconds < 1266325671 0 :MizardX-!unknown@unknown.invalid NICK :MizardX < 1266326155 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :poor, poor fireballs. < 1266326158 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(iwc) < 1266326336 0 :Wareya!unknown@unknown.invalid PRIVMSG #esoteric :http://www.youtube.com/user/cendamos < 1266326340 0 :Wareya!unknown@unknown.invalid PRIVMSG #esoteric :This guy is insane < 1266326341 0 :Wareya!unknown@unknown.invalid PRIVMSG #esoteric :y/n < 1266328258 0 :BeholdMyGlory!~behold@unaffiliated/beholdmyglory JOIN :#esoteric < 1266328961 0 :Asztal!~asztal@host86-156-193-0.range86-156.btcentralplus.com JOIN :#esoteric < 1266329229 0 :KingOfKarlsruhe!unknown@unknown.invalid QUIT :Remote host closed the connection < 1266329505 0 :co_sobat!~user@110.138.183.50 JOIN :#esoteric < 1266329959 0 :augur!unknown@unknown.invalid QUIT :Ping timeout: 245 seconds < 1266330514 0 :deschutron!~alex@115-166-55-84.ip.adam.com.au JOIN :#esoteric < 1266330571 0 :deschutron!unknown@unknown.invalid PART #esoteric :? < 1266331930 0 :augur!~augur@129-2-175-79.wireless.umd.edu JOIN :#esoteric < 1266331953 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :`c printf("%d %d %d", 'B', 'Z', 'h'); < 1266331961 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :No output. < 1266331971 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :`c printf("%d %d %d\n", 'B', 'Z', 'h'); < 1266331972 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :No output. < 1266331976 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :ugh < 1266331992 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :`c int main(){printf("%d %d %d\n", 'B', 'Z', 'h');} < 1266331992 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :No output. < 1266331999 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :what am I doing wrong? < 1266332023 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :`c printf("%d\n", 42); < 1266332024 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :No output. < 1266332047 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oh wait < 1266332054 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :!c printf("%d\n", 42); < 1266332062 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :42 < 1266332066 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :heh, wrong bot < 1266332069 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :!c printf("%d %d %d\n", 'B', 'Z', 'h'); < 1266332070 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :66 90 104 < 1266332099 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :!c printf("%d", (66 << 24) + (90 << 16) + (104 << 8)); < 1266332100 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :1113221120 < 1266332113 0 :Wareya!unknown@unknown.invalid PRIVMSG #esoteric :!c printf("what"); < 1266332114 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :what < 1266332118 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :!sh date -d '@1113221120' < 1266332118 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Mon Apr 11 12:05:20 UTC 2005 < 1266332127 0 :Wareya!unknown@unknown.invalid PRIVMSG #esoteric :!sh ls < 1266332128 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :interps < 1266332128 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :gah, how annoyingly coincidentally recent < 1266332143 0 :Wareya!unknown@unknown.invalid PRIVMSG #esoteric :I doubt this is secure < 1266332150 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :it ought to be < 1266332160 0 :Wareya!unknown@unknown.invalid PRIVMSG #esoteric :!sh rm -rf / < 1266332161 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :/bin/rm: cannot remove root directory `/' < 1266332163 0 :Wareya!unknown@unknown.invalid PRIVMSG #esoteric :awesome < 1266332181 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :!sh rm -rf --no-preserve-root / < 1266332183 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :/bin/rm: cannot remove `/': Function not implemented < 1266332195 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :see, /that/'s where you start seeing things getting weird < 1266332210 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :the OS it's on doesn't actually support deletion of directories < 1266332221 0 :Wareya!unknown@unknown.invalid PRIVMSG #esoteric :okay < 1266332230 0 :Wareya!unknown@unknown.invalid PRIVMSG #esoteric :how about ls / | rm < 1266332240 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :feel free to try it < 1266332246 0 :Wareya!unknown@unknown.invalid PRIVMSG #esoteric :!sh ls / | rm < 1266332246 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :/bin/rm: missing operand < 1266332250 0 :Wareya!unknown@unknown.invalid PRIVMSG #esoteric :!sh ls / | rm - < 1266332250 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :/bin/rm: cannot remove `-': Permission denied < 1266332253 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :but you probably mean ls / | xargs rm < 1266332258 0 :Wareya!unknown@unknown.invalid PRIVMSG #esoteric :w/e < 1266332263 0 :Wareya!unknown@unknown.invalid PRIVMSG #esoteric :!sh rm -h < 1266332263 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :/bin/rm: invalid option -- h < 1266332265 0 :Wareya!unknown@unknown.invalid PRIVMSG #esoteric :!sh rm -help < 1266332265 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :/bin/rm: invalid option -- h < 1266332267 0 :Wareya!unknown@unknown.invalid PRIVMSG #esoteric :!sh rm --help < 1266332267 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Usage: /bin/rm [OPTION]... FILE... < 1266332274 0 :Wareya!unknown@unknown.invalid PRIVMSG #esoteric :I guess I'll hit ^a S < 1266332297 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :!perl #!/bin/cat < 1266332298 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :#!/bin/cat < 1266332336 0 :Wareya!unknown@unknown.invalid PRIVMSG #esoteric :!sh rm -r / < 1266332337 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :/bin/rm: cannot remove root directory `/' < 1266332348 0 :Wareya!unknown@unknown.invalid PRIVMSG #esoteric :!sh rm -r < 1266332349 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :/bin/rm: missing operand < 1266332351 0 :Wareya!unknown@unknown.invalid PRIVMSG #esoteric :!sh rm -r ./ < 1266332351 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :/bin/rm: cannot remove directory `./' < 1266332356 0 :Wareya!unknown@unknown.invalid PRIVMSG #esoteric :!sh ;s < 1266332357 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :/tmp/input.16264: line 1: syntax error near unexpected token `;' < 1266332361 0 :Wareya!unknown@unknown.invalid PRIVMSG #esoteric :!sh ls < 1266332362 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :interps < 1266332370 0 :Wareya!unknown@unknown.invalid PRIVMSG #esoteric :!sh ls interps < 1266332370 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :1l < 1266332375 0 :Wareya!unknown@unknown.invalid PRIVMSG #esoteric :you know what I give up < 1266332393 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :!sh ls / < 1266332393 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :bin < 1266332406 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :!sh ls / | xargs echo < 1266332407 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :bin dev etc home lib lib64 proc tmp usr < 1266332413 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :!sh ls /etc < 1266332414 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :alternatives < 1266332421 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :no /etc/passwd should be another clue < 1266332442 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :it's basically a sandbox, with every operation that could escape or seriously damage the sandbox blocked or unimplemented < 1266332897 0 :co_sobat!unknown@unknown.invalid QUIT :Quit: Leaving < 1266333923 0 :lifthrasiir!unknown@unknown.invalid QUIT :Ping timeout: 265 seconds < 1266333935 0 :lifthrasiir!pJIrEl1C@haje12.kaist.ac.kr JOIN :#esoteric < 1266334108 0 :FireFly!~firefly@unaffiliated/firefly JOIN :#esoteric < 1266334287 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :scarf: In other words, every operation that could seriously damage the sandbox blocked and no root access. < 1266334295 0 :cpressey!~CPressey@173-9-215-173-Illinois.hfc.comcastbusiness.net JOIN :#esoteric < 1266334301 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(it's a chroot with a replacement libc, after all) < 1266334307 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: yep < 1266334476 0 :kar8nga!~kar8nga@jol13-1-82-66-176-74.fbx.proxad.net JOIN :#esoteric < 1266336596 0 :Gracenotes!unknown@unknown.invalid QUIT :Ping timeout: 260 seconds < 1266337545 0 :MigoMipo!~MigoMipo@84-217-9-101.tn.glocalnet.net JOIN :#esoteric < 1266337604 0 :Gracenotes!~person@wikipedia/Gracenotes JOIN :#esoteric < 1266339092 0 :MissPiggy!~none@unaffiliated/fax JOIN :#esoteric < 1266339505 0 :MigoMipo!unknown@unknown.invalid QUIT :Quit: When two people dream the same dream, it ceases to be an illusion. KVIrc 3.4.2 Shiny http://www.kvirc.net < 1266339787 0 :MigoMipo!~migomipo@84-217-9-101.tn.glocalnet.net JOIN :#esoteric < 1266340034 0 :oerjan!unknown@unknown.invalid QUIT :Quit: Good night < 1266341442 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :So, in C, what operations can be performed on pointers? < 1266341472 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :++ -- == < 1266341528 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Increment, decrement, comparison? < 1266341556 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :reading and writing to a pointer < 1266341557 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :How about addition and casting and stuff? < 1266341614 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Addition and subtraction are defined. < 1266341625 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Casting between pointer types is defined. < 1266341647 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Casting from a pointer to an int is defined. < 1266341658 0 :jcp!~jw@bzflag/contributor/javawizard2539 JOIN :#esoteric < 1266341660 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :So is it legal to... < 1266341668 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Casting from an int to a pointer is very, very undefined behavior. < 1266341677 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Oh, whew. < 1266341744 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Start with a pointer to an A, cast it to a pointer to a B, add 5, cast it to a pointer to a C, add 8, cast it back to B, subtract 5, cast it back to C, subtract 8, cast it back to A, and assume that the result is the same pointer you had originally? < 1266341805 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :uorygl: Only valid if *A, *B, and *C have the same sizeof. < 1266341845 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Also, I *think* casting from an intptr_t is defined, if and only if you don't do any operations on it that aren't allowed on pointers. < 1266341851 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :"pointer+integer" is defined, but "pointer+pointer" is not. And "pointer-pointer" is only defined for pointers to elements of the same array. (And pointer+integer, pointer-integer are also undefined behaviour if they go outside the borders of an object.) < 1266341889 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(though I'm not sure on that. That's *really* an edge case, and I doubt it ever comes up.) < 1266341894 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: why is it invalid if they don't have the same sizeof? < 1266341915 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :uorygl: Actually, it's just that you'll get a completely different pointer if they don't. < 1266341932 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Why will you get a completely different pointer if they don't? < 1266341953 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :"i + 1" is the same as "(char*)i + (1 * sizeof(*i))". < 1266341970 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :oh m god < 1266341972 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :ACTION ponders what that means in English. < 1266341984 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Erm. < 1266342008 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Okay, I think it makes perfect sense. < 1266342010 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Well, that's the semantics of the *addition*. You don't actually *get* a char*. ;) < 1266342028 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Well, no. < 1266342041 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Suppose the address you start with is x, the size of B is y, and the size of C is z. < 1266342053 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Kay... < 1266342064 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :I would expect you to start with x, then turn it into x + 5y, then into x + 5y + 8z, then into x + 8z, then back into x. < 1266342116 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Ah. You do the casts in such a way that you do end up getting the same thing back. < 1266342122 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, that works. < 1266342125 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :ACTION nods. < 1266342129 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: I don't think it's guaranteed to work. < 1266342131 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Assuming you don't go beyond the bounds of the allocation for x. < 1266342153 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :If you do, then the C compiler is free to destroy everything. < 1266342161 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(it probably *won't*, but it's allowed to.) < 1266342173 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :What's that colorful expression for undefined behavior? < 1266342188 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :I think it's "the C compiler may cause demons to fly out of your nose". < 1266342244 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Pointers to different types can have completely different representations; I don't think that pointer magic there is guaranteed to work. < 1266342248 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Sounds right. < 1266342270 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: ... I'm pretty sure the casts are valid. < 1266342284 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :You can convert any pointer to void * and back; not between pointers. < 1266342307 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :So is converting a pointer to void * and then to a totally different type of pointer undefined behavior? < 1266342309 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I could've sworn that it was perfectly valid so long as there weren't function pointers involved. < 1266342318 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I think some Crays, for example, have "char *"s composed of a pointer-to-word plus an offset into the word. < 1266342334 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :And in general, sizeof(foo *) is not guaranteed to be sizeof(bar *). < 1266342408 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :All this almost makes me want to read the spec and see this stuff for myself. < 1266342447 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :C99 section 6.3.2.3 lists pointer-related allowed conversions. < 1266342449 0 :Gracenotes!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1266342458 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :pointers point to pointer-pointing pointers < 1266342485 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :void * * * < 1266342666 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :You can convert: 1) pointer to void to/from pointer to any type; 2) remove qualifiers (like const); 3) integer constant expression with a value of 0 to a null pointer of any type; 4) null pointer of any type to null pointer of any other type; 5) integer to any pointer type (with implementation-defined behaviour, possibly ending up with a trap representation); 6) any pointer type to integer (with implementation-defined result, which needs not be in the range of < 1266342666 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :any integer type; intptr_t is optional); 7) pointer of any type to pointer to some other type, but if the result is not aligned correctly it's undefined behaviour; 8) function pointers between other sort of function pointers. < 1266342689 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :The conversion #7 is involved in your example, and getting correct alignment there is certainly not guaranteed. < 1266342752 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wonders what percentage of all C programs ever written are technically undefined in their behaviour. < 1266342759 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Oh, and as a subcase of #7 you can convert any pointer to a char* and then access all bytes of the object. < 1266342905 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :So, 7 allows casting to and from pointers to *structs* in the common case of having structs with a common heading, for a bit of runtime polymorphism... < 1266342930 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Fuck transparency... < 1266342953 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Yes, and I think there was even something more explicit about the layout for structs with common initial sequence of members. < 1266342980 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Yes, the layout for structs is defined such that they alignment will be correct. < 1266342999 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I *know* C allows that. < 1266343054 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :The trap representations are a nasty thing, though. You get undefined behaviour simply by reading such a value; you don't even have to dereference a pointer or do some other risky-looking operation. < 1266343211 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Undefined behavior is nice if you're trying to implement C. < 1266343255 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :So, fizzie, you say you "can convert" stuff. I'm guessing that means you can convert the stuff without encountering undefined behavior, which means that the behavior is defined. < 1266343284 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Yes. Though some of those were only implementation-defined. < 1266343323 0 :lament!unknown@unknown.invalid QUIT :Ping timeout: 256 seconds < 1266343324 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Isn't that the same thing as undefined? < 1266343345 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :No. Implementation-defined means the implementation is required to document what it will do in that case. < 1266343353 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Oh. < 1266343357 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Sometimes the spec even restricts the set of allowed things an implementation can do. < 1266343386 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :"If you try to do anything implementation-defined, the program will segfault. Nyah!" < 1266343392 0 :sebbu!unknown@unknown.invalid QUIT :Ping timeout: 264 seconds < 1266343396 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :For instance, the signedness of chars are implementation-defined. < 1266343423 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Also the representation for signed integers in C99; it's guaranteed to be either two's-complement, one's-complement or sign-magnitude, but it's implementation-defined which one. < 1266343433 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(a char is neither a signed char nor an unsigned char) < 1266343454 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :There's a nice 13-page list of bullet points (appendix J, section 2) in the C99 spec titled "Undefined behaviour". Of course the appendixes aren't normative, but that's still an impressive list. < 1266343576 0 :lament!~lament@S0106001b63f462cc.vc.shawcable.net JOIN :#esoteric < 1266343603 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :It's so comforting to know that I can rely on signed integers being in exactly one of three formats, without knowing which one. < 1266343614 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :You can test which one. < 1266343633 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Somehow. < 1266343694 0 :Gracenotes!~person@wikipedia/Gracenotes JOIN :#esoteric < 1266343702 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Take -1, cast it to unsigned, rotate it left. If it's 3, you're on sign-magnitude. < 1266343753 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Take -1, cast it to unsigned, add 1. If it's 0, you're on two's complement. < 1266343763 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Take -1, cast it to unsigned, add 2. If it's 0, you're on ones' complement. < 1266343787 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Heck, I think there's a more efficient way to do this. < 1266343827 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :That sounds like it would work, thanks to the very friendly conversion-to-unsigned rule. < 1266343859 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Take -1, cast it to unsigned, add 2, and rotate it left. If it's 5, you're on sign-magnitude; if it's 2, you're on two's complement; if it's 0, you're on ones' complement. < 1266343895 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Uh, wait. < 1266343924 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Signed value of -1, converted to unsigned integer, is always guaranteed to return UINT_MAX-1. < 1266343931 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :No matter what the representation is. < 1266343962 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :So it acts like two's complement no matter what it actually is? < 1266343994 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :In the sense that conversion to unsigned integer is defined in terms of the value. < 1266344017 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :So why would a person care what the actual representation is? < 1266344060 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I'm not sure, especially since the representation might have an arbitrary amount of padding bits in it, even if it's guaranteed to have its value bits arranged using one of those three schemes. < 1266344085 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ACTION thought uorygl was singing a version of 99 bottles < 1266344522 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :You could probably test it via very careful bit twiddling. < 1266344578 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :You can look at the bits of the representation through a char *, but the padding bits might make that really hard to figure out, given that arithmetic operations on the value can set them to arbitrary values. < 1266344622 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :I guess that in practice, there's a lot that people are never going to do. < 1266344706 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Addressing arrays, and the pointer arithmetic that entails, is something they're going to do. < 1266344715 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Casting between compatible types is something they might do. < 1266344725 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Anything else, I think not. < 1266344729 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :What if I need to send an integer to a hardware port? < 1266344738 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :You'd be surprised. < 1266344751 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Why would you need to send an integer to a hardware port? < 1266344760 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :If it will compile, someone out there has done it in C. < 1266344772 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :If it won't compile, someone out there has *tried* to do it in C. < 1266344780 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Hardware ports sound very implementation-defined, and, coincidentally enough, so's converting an integer to a pointer. < 1266344790 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: yes, but that doesn't mean it's done very often. < 1266344856 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :If you have XOR linked lists, I don't care about your stupid program. < 1266344867 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :So on a particular implementation, *((unsigned *)0xdeadbeef) = 0xf00d; might be well-defined behaviour. < 1266344905 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :If you have xor linked lists, I will do nasty things to you. < 1266344932 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :If you have XOR linked lists, I will refuse to garbage collect you. :P < 1266344935 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I will also force you to use garbage collection. < 1266344941 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(as punishment) < 1266345134 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I collect all my garbage into xor-style linked lists. < 1266345260 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I garbage collect by calling free after allocation. < 1266345321 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :I garbage collect by ceasing to refer to a value. < 1266345361 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :I don't garbage collect. I have an infinite supply of tape. < 1266345367 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :ouch, what's an XOR linked list again? < 1266345379 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :I vaguely remember how they work and knowing why it's such an incredibly bad idea, but I can't quite remember the details < 1266345391 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :scarf: Doubly linked list with a single pointer. < 1266345395 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :A XOR linked list is a doubly linked list where the pointer field consists of the XOR of the forward and backward pointers. < 1266345396 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :is it that you don't store a next and a prev pointer, but instead next XOR prev? < 1266345396 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :scarf: It's one with the "prev" and "next" pointers xor'd together, under the assumption that you already know one, since you came to the node from there. < 1266345399 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :ah, yes < 1266345404 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :next XOR prev. < 1266345416 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Next XOR perv. < 1266345422 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :No, it's definitely fore XOR back. :P < 1266345430 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :anyway, I spent the last 3 hours translating an implementation of unzip2 from C to Java < 1266345434 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :time to go home now, I think < 1266345437 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It hurts garbage collection so very much. < 1266345439 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :*bunzip2 < 1266345459 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :This is why people don't program in C. < 1266345470 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Except Apple developers. < 1266345475 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :ACTION crushes his iPhone in frustration. < 1266345480 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Apple developers don't program in C. < 1266345485 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :They program in Objective C. < 1266345493 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Object system, garbage collection... < 1266345495 0 :scarf!unknown@unknown.invalid PRIVMSG #esoteric :I'm suspicious of pointer-based garbage collection too, though < 1266345502 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Objective C is a superset of C. < 1266345510 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Objective C has garbage collection? That's new to me. < 1266345523 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :uorygl: Optional feature added by Apple. < 1266345527 0 :scarf!unknown@unknown.invalid QUIT :Remote host closed the connection < 1266345531 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :uorygl: Also, it's always done reference counting. < 1266345569 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Did "garbage collect by calling free after allocation" refer to the clever "void *gc_alloc(size_t size) { void *p = malloc(size); free(p); return p; }" GC? < 1266345593 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: Heheheh. < 1266345615 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: is there an interesting story behind that? < 1266345670 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :There might, but I only remember having seen the "technique" (if you can call it that) somewhere, maybe usenet. < 1266345681 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :It's certainly efficient. < 1266345699 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :The "technique" is "hope that there's not another allocation until you want it to go away". < 1266345717 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Oh, and "hope that free just marks the space as free, instead of actually unmapping it." < 1266345722 0 :sebbu!~sebbu@ADijon-152-1-47-173.w83-194.abo.wanadoo.fr JOIN :#esoteric < 1266345748 0 :kar8nga!unknown@unknown.invalid QUIT :Remote host closed the connection < 1266345767 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :ACTION ponders something that's like C except easy to compile Haskell into. < 1266345790 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :A G-machine? < 1266345854 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :I dunno, what's a G-machine? < 1266345873 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :it evaluates combinator calculus lazily < 1266345939 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :That doesn't sound like a programming language. < 1266345992 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It's a graph reduction machine. < 1266346007 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Does it have a Wikipedia article? < 1266346014 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :If not, I deny that it exists. < 1266346022 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :And by "deny that it exists", I mean "wonder where to find more information on it". < 1266346024 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It's a type of machine. < 1266346030 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :GHC documentation. < 1266346072 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(After compiling down to core, GHC compiles to a G machine, does optimisation, then compiles to C--, then compiles to machine code) < 1266346089 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :That's a lot of compiling. < 1266346256 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :GCC does * -> AST -> (optional intermediate form) -> GENERIC -> GIMPLE -> RTL -> assembly -> machine code < 1266346274 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :what the fuck is a programming language?? < 1266346320 0 :Wareya!unknown@unknown.invalid PRIVMSG #esoteric :idk lopl < 1266346406 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Oh, some frontends do * -> AST -> language-specific passes -> RTL -> assembly -> machine code < 1266346416 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :For no freaking good reason. < 1266346607 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :3. Profit! < 1266346631 0 :Wareya!unknown@unknown.invalid PRIVMSG #esoteric :Borland delphi compiles to C code < 1266346636 0 :Wareya!unknown@unknown.invalid PRIVMSG #esoteric :IIRC < 1266346727 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :I hope Borland Turbo C doesn't compile to C code. < 1266346785 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :I remember Turbo Pascal! < 1266346847 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :My brother and I wrote a program using it. I think it was called "cinderella". Its most impressive feature was that if you went into the cafe and asked for milk, it would respond with "Chocolate?" < 1266347040 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :We once found an I-think-it-was-in-Turbo-Pascal "adventure" "game" from the school file server, designed to teach about right and wrong (for example, "stealing is bad") to around-puberty-aged children. As a game, it was remarkably bad; but hilarious anyway. < 1266347248 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :It had a graphical-adventure style list-of-commands-at-the-bottom-of-the-screen interface, but I think the graphics were mostly text-based; in any case, there were such things like the "listen" command, which wasn't actually used anywhere in the game, it just produced some PC speaker noises and the text "I hear voices, do you?" -- and the "look" - "at yourself" command, which described your state: "I feel . I smell bad. The videos I stole weig < 1266347248 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :h on my conscience." < 1266347258 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :(You started to smell bad if you took the sausage to your dog.) < 1266347262 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :Turbo Pascal was cool. I remember writing a Minesweeper in it, with a friend. < 1266347278 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :No, that must have been Borland C. < 1266347288 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :TP was a little earlier than that. < 1266347482 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :In Turbo Pascal I remember writing a good chunk of a roguelike, but it was too ambitious and was never finished. < 1266347577 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :We wrote a good chunk of a tile-based mostly-a-roguelike (sort of Exile-inspired) with DJGPP and the Allegro lib, but that wasn't ever finished either. Oh, the foolishness. < 1266347801 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :You should have used libtcod! < 1266347812 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Which, as Gregor can contest, is probably the most important library ever. < 1266347989 0 :oklopol!unknown@unknown.invalid QUIT :Read error: Connection reset by peer < 1266348015 0 :oklopol!~oklopol@a91-153-117-208.elisa-laajakaista.fi JOIN :#esoteric < 1266348347 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :what's sevenfold today? < 1266348759 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well? < 1266350172 0 :KingOfKarlsruhe!~nice@p5B133278.dip.t-dialin.net JOIN :#esoteric < 1266350552 0 :jcp!unknown@unknown.invalid QUIT :Quit: I will do anything (almost) for a new router. < 1266352530 0 :MizardX-!~MizardX@unaffiliated/mizardx JOIN :#esoteric < 1266352696 0 :MizardX!unknown@unknown.invalid QUIT :Ping timeout: 260 seconds < 1266352709 0 :MizardX-!unknown@unknown.invalid NICK :MizardX < 1266352788 0 :tombom!unknown@unknown.invalid QUIT :Ping timeout: 264 seconds < 1266352870 0 :tombom!~tombom@wikipedia/Tombomp JOIN :#esoteric < 1266354771 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : Borland delphi compiles to C code < 1266354771 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : IIRC < 1266354775 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pretty sure it doesn't < 1266354796 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or at least didn't in delphi 7 or such < 1266354809 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :when I used it (I was young and innocent, I didn't know better!) < 1266354897 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : You should have used libtcod! <-- what was that library? < 1266355119 0 :tombom!unknown@unknown.invalid PRIVMSG #esoteric :http://doryen.eptalys.net/ < 1266355125 0 :tombom!unknown@unknown.invalid PRIVMSG #esoteric :roguelike library, it's interesting < 1266356032 0 :gm|lap!~gm@unaffiliated/greasemonkey JOIN :#esoteric < 1266356833 0 :jcp!~jw@bzflag/contributor/javawizard2539 JOIN :#esoteric < 1266358343 0 :MigoMipo!unknown@unknown.invalid QUIT :Remote host closed the connection < 1266358611 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: sevenfold are the midnights that have passed since last Tuesday. < 1266359068 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :That's pretty much it. < 1266359095 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Sevenfold are the capital letters on the fifth row of my keyboard. < 1266359170 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Sevenfold are my irssi windows to the left of #haskell. < 1266359183 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Er, #lojban. < 1266359214 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Thirty-twofold are my irssi windows to the right of #lojban. < 1266359267 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Sevenfold are the English-speaking oceans of Puzzle Pirates, if you consider Ice and Crimson each half an ocean. < 1266359337 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :wtfold < 1266361030 0 :coppro!~coppro@unaffiliated/coppro JOIN :#esoteric < 1266361077 0 :oklopol!unknown@unknown.invalid QUIT :Read error: Operation timed out < 1266361103 0 :oklopol!~oklopol@a91-153-117-208.elisa-laajakaista.fi JOIN :#esoteric < 1266361409 0 :augur!unknown@unknown.invalid QUIT :Ping timeout: 245 seconds < 1266361817 0 :cheater2!unknown@unknown.invalid QUIT :Ping timeout: 276 seconds < 1266362364 0 :BeholdMyGlory!unknown@unknown.invalid QUIT :Read error: Connection reset by peer < 1266362513 0 :tombom!unknown@unknown.invalid QUIT :Quit: Leaving < 1266362773 0 :oklogon!~oklopol@a91-153-117-208.elisa-laajakaista.fi JOIN :#esoteric < 1266362906 0 :oklopol!unknown@unknown.invalid QUIT :Remote host closed the connection < 1266362998 0 :oklogon!unknown@unknown.invalid QUIT :Read error: Operation timed out < 1266363103 0 :KingOfKarlsruhe!unknown@unknown.invalid QUIT :Remote host closed the connection < 1266363458 0 :oklopol!~oklopol@a91-153-117-208.elisa-laajakaista.fi JOIN :#esoteric < 1266364500 0 :FireFly!unknown@unknown.invalid QUIT :Quit: Leaving