+ }
+ if(state == 0) {
+ if(hc->rescode != 0) {
+ if(hc->rescode != 200) {
+ msgbox(GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("The hublist server returned an error: \"%i %s\""), hc->rescode, hc->resstr);
+ aborthublist();
+ return;
+ }
+ state = 1;
+ gtk_progress_bar_set_text(GTK_PROGRESS_BAR(main_pubhubbar), _("Getting list..."));
+ }
+ }
+ if(state == 1) {
+ if(hc->tlen > 0) {
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(main_pubhubbar), ((double)hc->rxd) / ((double)hc->tlen));
+ } else {
+ gtk_progress_bar_set_pulse_step(GTK_PROGRESS_BAR(main_pubhubbar), ((double)hc->databufdata) / 10000.0);
+ gtk_progress_bar_pulse(GTK_PROGRESS_BAR(main_pubhubbar));
+ }
+ if(hc->databufdata > 0) {
+ if(bzs == NULL) {
+ bufcat(mybuf, hc->databuf, hc->databufdata);
+ hc->databufdata = 0;
+ } else {
+ bzs->next_in = hc->databuf;
+ bzs->avail_in = hc->databufdata;
+ do {
+ sizebuf2(mybuf, mybufdata + 1024, 1);
+ bzs->next_out = mybuf + mybufdata;
+ bzs->avail_out = mybufsize - mybufdata;
+ bzret = BZ2_bzDecompress(bzs);
+ if((bzret != BZ_OK) && (bzret != BZ_STREAM_END)) {
+ msgbox(GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Could not decompress hublist (%i)"), hret);
+ aborthublist();
+ return;
+ }
+ mybufdata = mybufsize - bzs->avail_out;
+ if(bzret == BZ_STREAM_END) {
+ ret = 1;
+ break;
+ }
+ } while(bzs->avail_out == 0);
+ memmove(hc->databuf, bzs->next_in, hc->databufdata -= (bzs->next_in - hc->databuf));
+ }
+ if((hret = handler(PHO_DATA, mybuf, mybufdata)) < 0)
+ aborthublist();
+ else
+ memmove(mybuf, mybuf + hret, mybufdata -= hret);
+ }
+ if(ret) {
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(main_pubhubbar), 1);
+ gtk_progress_bar_set_text(GTK_PROGRESS_BAR(main_pubhubbar), _("Finalizing list..."));
+ gdk_window_process_updates(main_pubhubbar->window, FALSE);