Beispiel #1
0
byte *tf_get_block(int i)
{
  seg_desc[0] = '\0';

  if(jump_to_segment(i, &tf_cseg)) {
    tf_segoffs = ftell(tapefd);

    if(read_header(rbuf, &tf_cseg) && 
       interpret_header(rbuf, &tf_cseg)) return rbuf;
  }
  return NULL;
}
Beispiel #2
0
int next_segment(void)
{
  if(endnext) {
    endnext = 0;
    tf_cseg.segtype = endtype;
    tf_cseg.pause = endpause;
    playstate = endplay;
    return tf_cseg.segtype;
  }

  seg_desc[0] = '\0';
  lead_pause = tf_cseg.pause;
  
  if(end_seg(&tf_cseg)) {
    currsegi = segi;
    if(read_header(rbuf, &tf_cseg)) interpret_header(rbuf, &tf_cseg);
  }

  if(tf_cseg.segtype >= SEG_DATA) {
    playstate = PL_PAUSE;
    if(lead_pause) finished = 1;
  }
  else playstate = PL_NONE;
  
  if(tf_cseg.segtype <= SEG_STOP && !finished) {
    endnext = 1;
    endtype = tf_cseg.segtype;
    endpause = tf_cseg.pause;
    endplay  = playstate;
    if(lead_pause > 0) lead_pause--;

    tf_cseg.pause = 1;
    tf_cseg.segtype = SEG_VIRTUAL;
    playstate = PL_END;
  }

  return tf_cseg.segtype;
}
Beispiel #3
0
static void interpret_one(gpointer d, gpointer ud)
{
    Atom*    a = (Atom*) d;
    GSList** stack = (GSList**) ud;

    /* g_debug("a->level=%i; e->last_level=%i", a->level, e->last_level); */
    if ( a->level < g_slist_length(*stack) ) {
        fold_to(stack, a->level);
    } else if ( a->level > g_slist_length(*stack) ) {
        /* implicit multipart */
        implicit_level_increase(stack);
    }

    switch (a->type) {
        case at_Header:
            interpret_header(stack, a->args);
            break;
        case at_Text:
            interpret_text(stack, a->args);
            break;
        case at_Message:
            interpret_message(stack, a->args);
            break;
        case at_Att:
            interpret_att(stack, a->args);
            break;

        case at_Multi:
            interpret_mlt(stack, a->args);
            break;

        case at_Empty:
        case at_Invalid:
        default:
            ;
    }
}
static int on_headers_complete(http_parser* parser) {
  print_debug("headers complete\n");
  return interpret_header((evweb_http_processer*)parser);
}