< 1144540819 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :would probably screw up something else like netcat tho < 1144540867 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :speaking of netcat.. how are you using it? netcat < blah > blah ? < 1144540909 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :netcat -e whatever < 1144540933 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :I mean for capturing program i/o < 1144540947 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :netcat -e whatever < 1144540984 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :-e, --exec=PROGRAM program to exec after connect < 1144540989 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :oic < 1144541002 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :so netcat is pulling this off then < 1144541033 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :so that means it should be possible < 1144541082 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :It probably just does the right dup2's, I don't know whether it messes with the buffering ... < 1144541105 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :In fact, I doubt severely that it does. < 1144541128 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :well it works good enough to wrap the interpreters and that's all I need < 1144541152 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :ACTION downloads the source < 1144541266 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :... I don't wrap any interpreter in netcat ... < 1144541284 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :then what is "whatever" ? < 1144541295 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :egobot itself < 1144541305 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :how is egobot handling program I/O ? < 1144541321 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :pipes, dup2'd into stdin and stdout. < 1144541365 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :ACTION downloads egobot < 1144541385 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Heh < 1144541513 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :ahh GPL.. so I can lift large sections of your code at will :) < 1144541535 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Please < 1144541594 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric : // set up our output < 1144541595 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric : signal(14, sendOutput); < 1144541619 0 :Sgeo!n=sgeo@ool-18bf61f7.dyn.optonline.net JOIN :#esoteric < 1144541626 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :signal 14 = alarm, it does an output every 1.5 (?) seconds and uses alarm() to manage that. < 1144541633 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :But that's not really the code you want. < 1144541637 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :The code you want is probably in proc.* < 1144541662 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :well I think I found one thing I want < 1144541664 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric : // make stdin nonblocking < 1144541664 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric : if (fcntl(0, F_SETFL, O_NONBLOCK) == -1) { perror("fcntl"); exit(1); } < 1144541818 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :ahh, you're doing that on the pipe too < 1144542190 0 :Sgeo!unknown@unknown.invalid QUIT : < 1144542223 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :dup2(2, 3); // what does this do ? < 1144542261 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :O_O < 1144542266 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Did I seriously do that ...? < 1144542269 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1144542290 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :maybe thats why it is crashing? :) < 1144542295 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Oh, right, I remember. < 1144542298 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :No, that's right. < 1144542305 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :2 is stderr, I copied it to 3 to preserve it. < 1144542314 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :what if something else was using 3 < 1144542316 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :That's still nae good though >_O < 1144542325 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, I'm wondering why I thought that was wise <_< < 1144542385 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :AFAICT, it's not even being used 8-X < 1144542391 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Well that's just plain silly. < 1144542402 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :So, erm, ignore that ^^ < 1144542445 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :should I submit a patch? lol < 1144542513 0 :CXII!i=Sanity@dialup-127.89.221.203.acc50-kent-syd.comindico.com.au JOIN :#esoteric < 1144543299 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :GregorR: if (pipe(i) == -1) { perror("pipe"); exit(1); } is this line using some kind of c++ magic? < 1144543337 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :oh wait, nm, I see it < 1144543489 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Umm < 1144543532 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :past that now.. :) < 1144543559 0 :CXI!unknown@unknown.invalid QUIT :Connection timed out < 1144544165 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :GregorR: where is the part of the program that you intercept a programs output and make it safe? < 1144544328 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :ahh, found it < 1144544379 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :argh.. you're buffering the output and just dealing with it in those 1.5sec intervals < 1144544570 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Well, yeah. < 1144544612 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :say that the interpreter wants input (,) ..how is that handled? < 1144544665 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :does it just block on the pipe? < 1144544706 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :and you put data into the pipe when it is given? < 1144544711 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :ACTION guesses: yes < 1144544726 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :hmm, why can't I do the same thing? < 1144544803 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :hmm, where is it putting the input data into the pipe? I don't see it < 1144544877 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :found it! < 1144544926 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :hmm I guess the difference here is that the user types a command that egobot receives, saying "here is input".. but unix doesn't do that < 1144544969 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :I suppose I could fork again and just wait on input < 1144545306 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :odds of a concurrency problem are rapidly approaching 1 < 1144545361 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :hmm maybe I can use pthread < 1144545611 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :no man pages? < 1144545641 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :ahh, finally < 1144545932 0 :GregorR!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1144548681 0 :brk3nc0nstra1nt5!n=demonix@c-68-53-109-129.hsd1.ky.comcast.net JOIN :#esoteric < 1144548683 0 :brk3nc0nstra1nt5!unknown@unknown.invalid PART #esoteric :? < 1144548765 0 :GregorR!n=gregor@198.107.20.174 JOIN :#esoteric < 1144548792 0 :jix!unknown@unknown.invalid PART #esoteric :? < 1144551080 0 :CXII!unknown@unknown.invalid NICK :CXI < 1144553390 0 :GregorR!unknown@unknown.invalid QUIT :Remote closed the connection < 1144553421 0 :GregorR!n=gregor@198.107.20.174 JOIN :#esoteric < 1144553477 0 :Sgeo!n=sgeo@ool-18bf61f7.dyn.optonline.net JOIN :#esoteric < 1144554383 0 :heatsink!n=heatsink@ppp-70-225-170-215.dsl.chmpil.ameritech.net JOIN :#esoteric < 1144557595 0 :cmeme!unknown@unknown.invalid QUIT :zelazny.freenode.net irc.freenode.net < 1144557595 0 :twobitsprite!unknown@unknown.invalid QUIT :zelazny.freenode.net irc.freenode.net < 1144557595 0 :sekhmet!unknown@unknown.invalid QUIT :zelazny.freenode.net irc.freenode.net < 1144557597 0 :sp3tt!unknown@unknown.invalid QUIT :zelazny.freenode.net irc.freenode.net < 1144557597 0 :SimonRC!unknown@unknown.invalid QUIT :zelazny.freenode.net irc.freenode.net < 1144557600 0 :twobitsprite!n=isaac@cpe-024-211-175-154.nc.res.rr.com JOIN :#esoteric < 1144557600 0 :cmeme!n=cmeme@boa.b9.com JOIN :#esoteric < 1144557600 0 :sekhmet!n=pez@ppp-70-226-176-64.dsl.mdsnwi.ameritech.net JOIN :#esoteric < 1144557600 0 :sp3tt!n=sp3tt@80.244.80.162 JOIN :#esoteric < 1144557600 0 :SimonRC!n=sc@bylands.dur.ac.uk JOIN :#esoteric < 1144558225 0 :GregorR_!n=gregor@198.107.20.174 JOIN :#esoteric < 1144558451 0 :Arrogant!i=Scott@103.orlando-04-05rs.fl.dial-access.att.net JOIN :#esoteric < 1144559492 0 :GregorR!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1144559649 0 :GregorR_!unknown@unknown.invalid NICK :GregorR < 1144559902 0 :CXII!i=Sanity@dialup-162.88.221.203.acc50-kent-syd.comindico.com.au JOIN :#esoteric < 1144559915 0 :CXI!unknown@unknown.invalid QUIT :Connection timed out < 1144562692 0 :heatsink!unknown@unknown.invalid QUIT :"Connection reset by sleep" < 1144566145 0 :Arrogant!unknown@unknown.invalid QUIT :"Leaving" < 1144569599 0 :clog!unknown@unknown.invalid QUIT :ended < 1144569600 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1144569839 0 :calamari!unknown@unknown.invalid QUIT :"Leaving" < 1144572430 0 :GregorR!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1144577325 0 :CXII!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1144578637 0 :Sgeo!unknown@unknown.invalid QUIT :Remote closed the connection < 1144578832 0 :nooga!i=nooga@ip-50.net-41.rev.inter-c.pl JOIN :#esoteric < 1144578843 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :hi < 1144579707 0 :SimonRC!unknown@unknown.invalid QUIT :Connection reset by peer < 1144579762 0 :SimonRC!i=sc@bylands.dur.ac.uk JOIN :#esoteric < 1144579808 0 :SimonRC!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1144580061 0 :SimonRC!i=sc@bylands.dur.ac.uk JOIN :#esoteric < 1144580122 0 :SimonRC!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1144580364 0 :SimonRC!i=sc@bylands.dur.ac.uk JOIN :#esoteric < 1144580451 0 :SimonRC!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1144580663 0 :SimonRC!i=sc@bylands.dur.ac.uk JOIN :#esoteric < 1144580746 0 :SimonRC!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1144580964 0 :SimonRC!i=sc@bylands.dur.ac.uk JOIN :#esoteric < 1144580995 0 :SimonRC!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1144581263 0 :SimonRC!i=sc@bylands.dur.ac.uk JOIN :#esoteric < 1144581351 0 :SimonRC!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1144581563 0 :SimonRC!i=sc@bylands.dur.ac.uk JOIN :#esoteric < 1144581589 0 :SimonRC!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1144581864 0 :SimonRC!i=sc@bylands.dur.ac.uk JOIN :#esoteric < 1144581974 0 :SimonRC!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1144582164 0 :SimonRC!i=sc@bylands.dur.ac.uk JOIN :#esoteric < 1144582315 0 :SimonRC!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1144582465 0 :SimonRC!i=sc@bylands.dur.ac.uk JOIN :#esoteric < 1144584961 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :Sorry about my connection earlier. < 1144584962 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :The whole Uni was dropping off the net. < 1144588892 0 :SimonRC!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1144588943 0 :SimonRC!i=sc@bylands.dur.ac.uk JOIN :#esoteric < 1144589010 0 :SimonRC!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1144589244 0 :SimonRC!i=sc@bylands.dur.ac.uk JOIN :#esoteric < 1144589914 0 :jix!i=jix@L635a.l.strato-dslnet.de JOIN :#esoteric < 1144590784 0 :nooga!unknown@unknown.invalid QUIT : < 1144591138 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ACTION goes to eat < 1144592835 0 :CXI!i=Sanity@dialup-59.105.221.203.acc51-kent-syd.comindico.com.au JOIN :#esoteric < 1144594690 0 :puzzlet!unknown@unknown.invalid PRIVMSG #esoteric :how do you pronounce "quine"? < 1144596409 0 :ZeroOne!unknown@unknown.invalid PRIVMSG #esoteric :http://www.auralgasms.com/default.aspx?BandID=jodyq a person called Jody Quine pronounces her name so that it rhymes with "wine" < 1144596437 0 :ZeroOne!unknown@unknown.invalid PRIVMSG #esoteric :and that's how I would've done it < 1144600867 0 :tokigun!unknown@unknown.invalid QUIT :Remote closed the connection < 1144602792 0 :tokigun!i=tokigun@sparcs45.kaist.ac.kr JOIN :#esoteric < 1144603181 0 :tokigun!unknown@unknown.invalid QUIT :Remote closed the connection < 1144604789 0 :tokigun!i=tokigun@sparcs45.kaist.ac.kr JOIN :#esoteric < 1144605128 0 :Sgeo!n=sgeo@ool-18bf61f7.dyn.optonline.net JOIN :#esoteric < 1144609134 0 :jix!unknown@unknown.invalid QUIT :"This computer has gone to sleep" < 1144613083 0 :GregorR!n=gregor@198.107.20.174 JOIN :#esoteric < 1144614786 0 :GregorR_!n=gregor@198.107.20.174 JOIN :#esoteric < 1144615238 0 :GregorR__!n=gregor@198.107.20.174 JOIN :#esoteric < 1144615613 0 :GregorR__!unknown@unknown.invalid QUIT :Remote closed the connection < 1144615679 0 :GregorR__!n=gregor@198.107.20.174 JOIN :#esoteric < 1144615714 0 :GregorR!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1144616038 0 :GregorR___!n=gregor@198.107.20.174 JOIN :#esoteric < 1144616400 0 :GregorR___!unknown@unknown.invalid NICK :GregorR < 1144616656 0 :GregorR_!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1144617493 0 :GregorR__!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1144617594 0 :jix!i=jix@L635a.l.strato-dslnet.de JOIN :#esoteric < 1144617707 0 :GregorR!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1144624198 0 :jix!unknown@unknown.invalid QUIT :"Bitte waehlen Sie eine Beerdigungnachricht" < 1144625040 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ACTION goes to bed < 1144625046 0 :GregorR!n=gregor@198.107.20.174 JOIN :#esoteric < 1144626415 0 :GregorR-L!n=gregor@198.107.20.174 JOIN :#esoteric