pike.git / lib / modules / Process.pmod

version» Context lines:

pike.git/lib/modules/Process.pmod:229: Inside #if constant(Thread.Thread)
      exitcode = p->wait();    threads->wait();   #else //No threads, use callbacks    mystdout->set_read_callback( lambda( mixed i, string data) {    gotstdout += data;    } );    mystderr->set_read_callback( lambda( mixed i, string data) {    gotstderr += data;    } ); +  mystdout->set_close_callback( lambda () { +  mystdout->set_read_callback(0); +  mystdout = 0; +  }); +  mystderr->set_close_callback( lambda () { +  mystderr->set_read_callback(0); +  mystderr = 0; +  });       if (mystdin) {    Shuffler.Shuffle sf = Shuffler.Shuffler()->shuffle( mystdin );    sf->add_source(stdin_str); -  sf->start(); +  sf->set_done_callback (lambda () {    mystdin = 0; -  +  }); +  sf->start();    }    -  while( !p->status() || p->status() == 1 ) +  while( mystdout || mystderr || mystdin )    Pike.DefaultBackend( 1.0 );    -  mystdout->set_read_callback(0); -  mystderr->set_read_callback(0); -  -  gotstdout += mystdout->read(); -  gotstderr += mystderr->read(); -  +     exitcode = p->wait();   #endif       return ([ "stdout" : gotstdout,    "stderr" : gotstderr,    "exitcode": exitcode ]);   }      #if constant(exece)   //!