< 1209773200 0 :atsampson!unknown@unknown.invalid QUIT :Remote closed the connection < 1209773213 0 :atsampson!n=ats@7hw.poik.net JOIN :#esoteric < 1209773270 0 :digital_me!n=digital@wikipedia/Digitalme JOIN :#esoteric < 1209775000 0 :pikhq_!unknown@unknown.invalid NICK :pikhq < 1209775531 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Bye for today :) < 1209775547 0 :ais523|busy!unknown@unknown.invalid QUIT :"(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"" < 1209775566 0 :ehird!unknown@unknown.invalid QUIT :Remote closed the connection < 1209775984 0 :GreaseMonkey!n=saru@122-57-226-168.jetstream.xtra.co.nz JOIN :#esoteric < 1209776308 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric : reminds me of the esoteric file system idea I had, where all files were functions, Unlambda-style, which you evaluated to get the file's contents. That way, you could do special files easily, and files could be stored compressed on disk if necessary, and you could have lazy files which were infinitely long... < 1209776413 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Seeking = PITA < 1209776747 0 :Tritonio!unknown@unknown.invalid QUIT :Read error: 113 (No route to host) < 1209776780 0 :CakeProphet!n=CakeProp@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake JOIN :#esoteric < 1209776880 0 :Tritonio!n=tritonio@150.140.226.107 JOIN :#esoteric < 1209776996 0 :Tritonio!unknown@unknown.invalid QUIT :Client Quit < 1209776998 0 :Slereah!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1209777041 0 :Slereah_!n=gtuilt@ANantes-252-1-48-135.w82-126.abo.wanadoo.fr JOIN :#esoteric < 1209777367 0 :ihope!n=ihope@c-71-205-100-59.hsd1.mi.comcast.net JOIN :#esoteric < 1209778349 0 :Tritonio!n=tritonio@150.140.226.107 JOIN :#esoteric < 1209778757 0 :CakeProphet!unknown@unknown.invalid QUIT :"haaaaaaaaaa" < 1209778882 0 :Corun!n=Corun@halls-129-31-72-183.hor.ic.ac.uk JOIN :#esoteric < 1209779136 0 :Corun!unknown@unknown.invalid NICK :NeilStoleMySleep < 1209779904 0 :NeilStoleMySleep!unknown@unknown.invalid NICK :Corun < 1209781604 0 :Judofyr_!n=Judofyr@cE699BF51.dhcp.bluecom.no JOIN :#esoteric < 1209781604 0 :Judofyr!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1209782153 0 :Slereah_!unknown@unknown.invalid QUIT :leguin.freenode.net irc.freenode.net < 1209782153 0 :digital_me!unknown@unknown.invalid QUIT :leguin.freenode.net irc.freenode.net < 1209782153 0 :sekhmet!unknown@unknown.invalid QUIT :leguin.freenode.net irc.freenode.net < 1209782176 0 :Slereah_!n=gtuilt@ANantes-252-1-48-135.w82-126.abo.wanadoo.fr JOIN :#esoteric < 1209782176 0 :digital_me!n=digital@wikipedia/Digitalme JOIN :#esoteric < 1209782176 0 :sekhmet!n=pez@wilug/madlug/sekhmet JOIN :#esoteric < 1209785315 0 :olsner!unknown@unknown.invalid QUIT :"Leaving" < 1209789772 0 :Corun!unknown@unknown.invalid QUIT :"This computer has gone to sleep" < 1209793370 0 :digital_me!unknown@unknown.invalid QUIT :Read error: 113 (No route to host) < 1209794937 0 :lifthrasiir!unknown@unknown.invalid QUIT :"leaving" < 1209794945 0 :lifthrasiir!n=lifthras@haje8.kaist.ac.kr JOIN :#esoteric < 1209798712 0 :Judofyr_!unknown@unknown.invalid QUIT : < 1209799290 0 :Sgeo!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1209801599 0 :clog!unknown@unknown.invalid QUIT :ended < 1209801600 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1209802927 0 :saudado!unknown@unknown.invalid NICK :lament < 1209803347 0 :Iskr!n=i@host204-52-dynamic.17-87-r.retail.telecomitalia.it JOIN :#esoteric < 1209811554 0 :Tritonio!unknown@unknown.invalid QUIT :Remote closed the connection < 1209811726 0 :Tritonio!n=tritonio@150.140.226.107 JOIN :#esoteric < 1209811908 0 :GreaseMonkey!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1209811955 0 :GreaseMonkey!n=saru@219-88-193-16.jetstream.xtra.co.nz JOIN :#esoteric < 1209813038 0 :GreaseMonkey!unknown@unknown.invalid QUIT :"Unisex." < 1209813850 0 :olsner!n=salparot@h-60-96.A163.cust.bahnhof.se JOIN :#esoteric < 1209815585 0 :ihope_!n=ihope@c-71-205-100-59.hsd1.mi.comcast.net JOIN :#esoteric < 1209815701 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, your TIME fingerprint, wtf are you doing in it? D code as a string constant!? < 1209815746 0 :fizzie!unknown@unknown.invalid QUIT :leguin.freenode.net irc.freenode.net < 1209815746 0 :ihope!unknown@unknown.invalid QUIT :leguin.freenode.net irc.freenode.net < 1209815749 0 :ihope_!unknown@unknown.invalid NICK :ihope < 1209815793 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: metaprogramming < 1209815817 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, you mean, like a macro in C? < 1209815826 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :sorta < 1209815842 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm? < 1209815845 0 :fizzie!n=fis@sesefras.zem.fi JOIN :#esoteric < 1209815873 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :mixin("int x;") - equivalent to just int x; < 1209815887 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :but with templates you can generate the string literal < 1209815897 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1209815901 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :like macros then < 1209815902 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :so I don't have to write the same code over and over < 1209815908 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :sorta. < 1209815916 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :#define ROMAPUSH(x, y) \ < 1209815917 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : static void FingerROMApush ## x (instructionPointer * ip) \ < 1209815917 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : { \ < 1209815917 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : StackPush(ip->stack, (FUNGEDATATYPE)y); \ < 1209815917 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : } < 1209815929 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I do it like that < 1209815936 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :then just: < 1209815938 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ROMAPUSH(I, 1) < 1209815938 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ROMAPUSH(V, 5) < 1209815940 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and so on < 1209815957 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yes, that's similar. < 1209815982 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :quite powerful, macros in C < 1209816083 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oh btw you seem to like using static buffers, instead of allocating on the stack, depending on situation I think creating one in the function may work better, due to risk of cache misses otherwise < 1209816090 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but that is over-optimizing IMO < 1209816106 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, anyway I added JSTR to cfunge now < 1209816120 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :rather simple one really < 1209816352 0 :ehird!n=ehird@91.105.92.194 JOIN :#esoteric < 1209816378 0 :ehird!unknown@unknown.invalid TOPIC #esoteric :* Topic for #esoteric set by http://tunes.org/~nef/logs/esoteric < 1209816381 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, another question: Should the UTC/non-UTC stuff in TIME be local to the ip or global? < 1209816569 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ccbi seems to have it global < 1209817389 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: say it with me: *not spe-ci-fied, up to you* < 1209817404 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hah < 1209817411 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is implementing FILE atm though < 1209817452 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: AnMaster does not know the meaning of that < 1209817471 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :or 'Premature opt-imi-zat-ion is the root of all evil' < 1209819360 0 :Corun!n=Corun@halls-129-31-72-183.hor.ic.ac.uk JOIN :#esoteric < 1209821236 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Zoop < 1209821918 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :damn i'm leet < 1209821922 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i'm using emacs and vi on the same projcet < 1209821923 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :at once < 1209822521 0 :Slereah!n=gtuilt@ANantes-252-1-48-135.w82-126.abo.wanadoo.fr JOIN :#esoteric < 1209822521 0 :Slereah_!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1209822685 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :hopefully you're not using the editor in emacs :P < 1209822888 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :olsner: i so am < 1209822922 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :may your choice of deity have mercy on your soul < 1209823086 0 :Slereah!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1209823096 0 :Slereah!n=gtuilt@ANantes-252-1-48-135.w82-126.abo.wanadoo.fr JOIN :#esoteric < 1209823216 0 :Slereah_!n=gtuilt@ANantes-252-1-48-135.w82-126.abo.wanadoo.fr JOIN :#esoteric < 1209823216 0 :Slereah!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1209823306 0 :Slereah!n=gtuilt@ANantes-252-1-48-135.w82-126.abo.wanadoo.fr JOIN :#esoteric < 1209823307 0 :Slereah_!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1209823389 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :olsner: i don't think the flying spaghetti monster really cares all that much < 1209823438 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :well, poor choice of deity then :P < 1209823447 0 :Slereah!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1209824054 0 :Slereah!n=gtuilt@ANantes-252-1-92-249.w81-53.abo.wanadoo.fr JOIN :#esoteric < 1209825745 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :return $it if $it = ...; // this is a kinda neat perl trick, i wish i could do this in other languages < 1209825747 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :'x and return' < 1209827698 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, there is a bug in FILE of CCBI I think < 1209827704 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :in fopen one: < 1209827705 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :case 2: file = c.fopen(name, "ab"); c.rewind(file); break; < 1209827717 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :you need to check in between that the fopen did work < 1209827730 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :rather than after trying rewind on it < 1209827743 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :doesn't rewind fail on a failed fopen < 1209827763 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well fopen returns NULL on failed open < 1209827771 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :no idea what happens with rewind on a null pointer < 1209827781 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :man rewind says the following: < 1209827781 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :EBADF The stream specified is not a seekable stream. < 1209827793 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :But NULL is not a stream at all. < 1209827804 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : The rewind() function sets the file position indicator for the stream pointed to by stream to the beginning of the file. It is equivalent to: < 1209827805 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : (void) fseek(stream, 0L, SEEK_SET) < 1209827807 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and hence it's not a seekable stream. < 1209827808 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : except that the error indicator for the stream is also cleared (see clearerr(3)). < 1209827809 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1209827815 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, indeex < 1209827817 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :indeed* < 1209827820 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Yes, but you still need to specify a stream. < 1209827878 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :you appear to be correct < 1209827941 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Even if it would happen to work, I don't think you could really rely on it unless The Standard would specifically mention it's safe to call with a null pointer. < 1209827961 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :seeing as it segfaults both on windows and linux I'd say you guys are right. ;-) < 1209828024 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well man 3p on rewind refers to fseek for details, and man 3p fseek doesn't mention null pointer anywhere < 1209828055 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :The Standard That Is Great And Holy In Caps < 1209828055 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1209828066 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but i wouldn't rely on it, yeah < 1209828068 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, it wasn't I that said it... < 1209828068 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it sounds shaky < 1209828074 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and even if it is standard < 1209828076 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i bet some system gets it wrong < 1209828078 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I know < 1209828080 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i just found it amusing < 1209828082 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's like Him < 1209828086 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's The Standard < 1209828087 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Who? < 1209828097 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Him is what religious people call god < 1209828100 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :always capitalized like That < 1209828109 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1209828116 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :'And I talked to Him and asked him for big moneys, and he said FSCK U NOOB' < 1209828141 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :haha < 1209828183 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I also used to refer to The Hitchhiker's Guide to the Galaxy as "The Book". < 1209828189 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hah < 1209828254 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, may I ask wtf you are doing in your fgets routine? it seems overly complex < 1209828279 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :doesn't D have a fgets? < 1209828283 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :D has the C stdlib < 1209828350 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well what are you doing it for then? < 1209828368 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, is it because fgets will look for \n and not \r\n or? < 1209828379 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :if that's what it does then that's definitely a reason < 1209828395 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but well < 1209828396 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :probably the fact that I don't know < 1209828399 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that doesn't really help < 1209828416 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :because both will stop on the \n of \r\n < 1209828429 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :what about only \r < 1209828447 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well... I don't think your code stop on it < 1209828452 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :of course it does < 1209828460 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :case '\r', right there < 1209828474 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oh wait yes it does < 1209828475 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1209828521 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, it will probably use whatever is used on the OS < 1209828528 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :quite possible < 1209828530 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and I can't have that < 1209828546 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :as in \r\n on windows, or if stream is in text mode (eww) just \n < 1209828576 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :shrug about text mode... I never know how that works except that it's never the way I want :-P < 1209828583 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :http://www.youtube.com/watch?v=dmEvPZUdAVI < 1209828585 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1209828599 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :but still, gotta support all 3 line endings regardless of OS < 1209828604 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :How did Microsoft ever became a monopole with ads like that? < 1209828608 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and hence, I don't trust fgets. < 1209828644 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, not got to, the standard says should and "If an interpreter cannot support all three varieties of end-of-line marker, it should be clearly noted in that interpreter's documentation." < 1209828655 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so it is strongly recommended to support all < 1209828659 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but not required < 1209828660 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I think that's crap. :-P < 1209828676 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, it is the 98 specs... < 1209828682 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I think any program that doesn't support all 3 types is crap. < 1209828685 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I support all three < 1209828688 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :regardless of specs. < 1209828701 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, I can think of cases where it may not be possible < 1209828709 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :say if the interpreter is coded in intercal < 1209828715 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :then intercal is crap. :-P < 1209828717 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :doesn't it mess with newlines? < 1209828721 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I don't know. < 1209828737 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :ais523 isn't here so I guess we won't get an authoritative answer, either. :-) < 1209828772 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :also one thing of D I would like in C: being able to break out of multiple loops with a break < 1209828779 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :as it is, that is the only case I use goto < 1209828788 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yep, it's probably the most common case < 1209828789 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :because there is no other way in C < 1209828822 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, yeah, also common for stuff like: goto error, that cleans up stuff or such. I don't do that < 1209828927 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, hm no your doesn't end input on \r < 1209828943 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, it just does break; not break loop; < 1209828948 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so another bug in ccbi < 1209828983 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :good catch :-) < 1209829061 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, hm... FileHandle[c.FOPEN_MAX] handles; that is decided at compile time in CCBI? < 1209829073 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :just like a C array. < 1209829086 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, hm? < 1209829093 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :hm what? < 1209829097 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :it's a static array. < 1209829099 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :C99 got VLA :P < 1209829102 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1209829104 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :not at global scope. :-P < 1209829113 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :true < 1209829125 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :max fds varies however < 1209829134 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :hence, FOPEN_MAX. < 1209829143 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yes, what does that mean in this case? < 1209829163 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :/usr/include/gentoo-multilib/amd64/stdio.h: FOPEN_MAX Minimum number of files that can be open at once. < 1209829167 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :seeing as it's in "c" it's a C constant... < 1209829181 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :FOPEN_MAX is defined to 16 here. heh < 1209829202 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that is the minimum guaranteed. < 1209829207 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :" The value of this macro is an integer constant expression that represents the minimum number of streams that the implementation guarantees can be open simultaneously. You might be able to open more than this many streams, but that is not guaranteed." < 1209829226 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :thus it should be checked at runtime :) < 1209829226 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :oh, darn, it includes stdin/stdout/stderr < 1209829230 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :hm? < 1209829255 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :because you are more likely to be able to open like 1024 fds or so < 1209829263 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :but it's not guaranteed. < 1209829267 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :open files (-n) 1024 < 1209829271 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :from ulimit -a < 1209829275 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :in one program? < 1209829286 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, indeed, but if you can't open, check return value of fopen ;P < 1209829287 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and why does stdio.h then define it as 16? < 1209829296 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, it does here, I don't know why < 1209829306 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :wtf is the point of having all these predefined constants if they don't mean anything < 1209829307 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I malloc my handle array so... < 1209829316 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :seriously, the windows API looks a lot nicer sometimes :-P < 1209829325 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, anyway SOCK could create more fds iirc < 1209829334 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so it isn't FOPEN_MAX -3 < 1209829339 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or something as simple as that < 1209829355 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :fine, dynamic then. < 1209829358 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the best way to check would be getconf() I think.... < 1209829360 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :piece of crap API. < 1209829362 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :if you *need* to know it < 1209829385 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :err not getconf, that is the command line alternative < 1209829388 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :version* < 1209829395 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :sysconf() < 1209829480 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, if you really need to know it is sysconf(_SC_OPEN_MAX) I think < 1209829517 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :whatever. < 1209829532 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, anyway the same applies to Windows afaik < 1209829549 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :you can't know exactly how many files you can have open < 1209829566 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :not at compile time at least < 1209829632 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, also, FOPEN_MAX is from ANSI C < 1209829638 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so don't blame POSIX :P < 1209829654 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I blame distributions for defining it as something anal < 1209829681 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I blame whoever didn't read the docs for not doing so ;) < 1209829695 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :how the hell should I know what docs to read < 1209829697 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I agree it is a stupid name... < 1209829706 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I read the docs for fopen and it says FOPEN_MAX is the absolute limit < 1209829724 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :but oh, actually FOPEN_MAX is only one-sixteenth of the real limit < 1209829729 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :sigh < 1209829733 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :err my man fopen doesn't mention FOPEN_MAX... < 1209829768 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and man 3p fopen doesn't say it is an absolute limit < 1209829781 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :it says it's the maximum guaranteed < 1209829785 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : The fopen() function shall fail if: < 1209829788 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : EMFILE {OPEN_MAX} file descriptors are currently open in the calling process. < 1209829791 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : The fopen() function may fail if: < 1209829795 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : EMFILE {FOPEN_MAX} streams are currently open in the calling process. < 1209829797 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1209829806 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :streams vs. file descriptors too. :-P < 1209829807 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yes maximum guaranteed < 1209829819 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but my point here, is that on most systems you can open way more < 1209829826 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :so why doesn't the man page say that? < 1209829829 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I tested with a befunge program opening 23 files < 1209829834 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :using FILE < 1209829837 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :at the same time < 1209829847 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :why does it say something useless like "may fail" instead of "is very likely not to fail, it's likely you can open 100x more" < 1209829871 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, because when it was written that wasn't the case I guess? < 1209829878 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :documentation can be updated < 1209829919 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I agree that FOPEN_MIN may have been a better name... < 1209829932 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :or _MIN_MAX? :-P < 1209829934 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, but FOPEN_MAX is from ANSI C < 1209829935 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :! < 1209829938 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Huh? < 1209829948 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :exactly. "Huh?" :-P < 1209829955 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so it is not a case of POSIX < 1209829958 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but ANSI C < 1209829958 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :who cares where it's from < 1209829960 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :it's badly written < 1209829971 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :the man pages aren't copied from some 30-year old ANSI C manual either < 1209829972 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : FOPEN_MAX < 1209829972 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :which expands to an integer constant expression that is the minimum number of files that < 1209829972 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the implementation guarantees can be open simultaneously; < 1209829978 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :C99 < 1209829980 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :was that < 1209829992 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :whatever < 1209830011 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and ranting about it in here won't help ;P < 1209830023 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I'm willing to shut up < 1209830032 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :try ranting to ANSI maybe ;) < 1209830048 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or, for C99 I think it is IEEE? hm < 1209830052 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :"not us anyway" < 1209830054 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I don't care that much, I rarely have to mess around with raw C APIs < 1209830058 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :to this degree < 1209830073 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, well why can't you use the D file reading API for it? < 1209830089 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :... because the specs say that it's the C file API ... < 1209830113 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION looks < 1209830115 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :"(like c fgets)" < 1209830139 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, < 1209830141 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :use Tango < 1209830141 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, seems to indicate same behaviour < 1209830144 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you depend on it < 1209830146 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so use its file apis < 1209830147 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :not c's < 1209830147 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :;P < 1209830156 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :ehird: 2008-05-03 17:54:49 ( Deewiant) ... because the specs say that it's the C file API ... < 1209830161 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: D has two 100% incompatible stdlibs that you can't have at the same time. < 1209830164 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, anyway, it is RC/Funge specs so they aren't clear... < 1209830171 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Phobos and Tango, Phobos is the official one. Real men use Tango. < 1209830175 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(read: Phobos sucks) < 1209830176 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, that isn't the question here... < 1209830178 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :ehird: tangobos exists. < 1209830189 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: Yes, but that's for goatse-watchers. < 1209830190 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Or something < 1209830197 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, he is doing this: import c = tango.stdc.stdio; < 1209830209 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :tango has libc in it yes < 1209830221 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and then using c.fgets and so on < 1209830231 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :err not fgets, but several other ones < 1209830261 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, anyway the FILE specs doesn't say it have to be the A file API < 1209830269 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it only says "(like c fgets)" < 1209830272 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :note "like" < 1209830283 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I interpret that as "same behaviour" < 1209830286 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :exactly < 1209830290 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :bug-for-bug compatibility would be ideal < 1209830298 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :which is easiest to get by just using the C functions directly. < 1209830431 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :why bug-for-bug? < 1209830455 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :because of what the specs say. "like c xxx". < 1209830500 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I assume it means "like the C specs describe this function", and it is INTERCAL no C that got the "random compiler bug" in it's specs ;P < 1209830532 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I'm sure that if I used the tango functions you'd be here saying "in this obscure case, fseek does xxx, does tango's do that?" :-P < 1209830556 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and then I'd be like "don't know, don't care". :-P < 1209830593 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1209830625 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :however that is not an argument as you coded it before you knew of me < 1209830655 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :no, but I was sure there might be someone like you. :-P < 1209830670 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :or I just felt like using the C functions to remind myself of how they work, who knows?! < 1209830682 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :anyhoo, WYGIWYGAINGW. < 1209830685 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I'm off to eat. -> < 1209830748 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah you like Discworld :) < 1209837570 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, by the way the HRTI test shows that at some stuff Boehm-GC is a LOT slower. Mainly realloc seems slow in it < 1209837647 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :using preallocaction to alloc at least the needed number of bytes in advance I got it down to acceptable levels. < 1209837667 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :however I suspect I may make no gc the default in future at some point < 1209842144 0 :comex!unknown@unknown.invalid PART #esoteric :? < 1209842547 0 :Sgeo!n=Sgeo@ool-18bf68ca.dyn.optonline.net JOIN :#esoteric < 1209843668 0 :jix!n=jix@dyndsl-091-096-048-216.ewe-ip-backbone.de JOIN :#esoteric < 1209844096 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :a < 1209848716 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :b < 1209848744 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :cd < 1209848746 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :EFG < 1209848806 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :hjkl; < 1209848815 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :ä' < 1209848833 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :