예제 #1
0
파일: watchdog.c 프로젝트: xbmcin/XBMCinTC
bool sc_watchdog_get_events_defaults(sc_list_t *list) {
    sc_list_node_append(list, sc_list_node_create(sc_param_create_boolean("init", false, true)));
    sc_list_node_append(list, sc_list_node_create(sc_param_create_integer("cur_play_type", 0, true)));
    sc_list_node_append(list, sc_list_node_create(sc_param_create_integer("event_active_id", 0, true)));

    return true;
}
예제 #2
0
파일: stb.c 프로젝트: kenji123/pvr.stalker
bool sc_stb_do_auth_defaults(sc_list_t *list) {
    sc_list_node_append(list, sc_list_node_create(sc_param_create_string("login", "", true)));
    sc_list_node_append(list, sc_list_node_create(sc_param_create_string("password", "", true)));
    sc_list_node_append(list, sc_list_node_create(sc_param_create_string("device_id", "", false)));
    sc_list_node_append(list, sc_list_node_create(sc_param_create_string("device_id2", "", false)));

    return true;
}
예제 #3
0
sc_list_t *sc_xmltv_parse(const char *filename) {
    xmlTextReaderPtr reader = NULL;
    sc_list_t *channels = NULL;
    sc_list_t *programmes = NULL;
    int ret;
    sc_list_node_t *node = NULL;

    reader = xmlNewTextReaderFilename(filename);
    if (!reader)
        return NULL;

    channels = sc_list_create();
    programmes = sc_list_create();

    for (ret = xmlTextReaderRead(reader); ret == 1; ret = xmlTextReaderRead(reader)) {
        if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_ELEMENT, SC_XMLTV_CHANNEL_NAME,
                                               SC_XMLTV_CHANNEL_DEPTH)) {
            node = sc_list_node_create(sc_xmltv_parse_channel(reader));
            sc_list_node_append(channels, node);
        }
        if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_ELEMENT, SC_XMLTV_PROGRAMME_NAME,
                                               SC_XMLTV_PROGRAMME_DEPTH)) {
            node = sc_list_node_create(sc_xmltv_parse_programme(reader));
            sc_list_node_append(programmes, node);
        }
    }

    xmlFreeTextReader(reader);

    node = channels->first;
    while (node) {
        sc_xmltv_link_progs_to_chan(programmes, (sc_xmltv_channel_t *) node->data);
        node = node->next;
    }

    sc_xmltv_list_free(SC_XMLTV_PROGRAMME, &programmes);

    return channels;
}
예제 #4
0
void sc_request_set_missing_required(sc_param_params_t *dst_params, sc_param_params_t *src_params) {
    sc_list_node_t *node;
    sc_param_t *param;

    node = src_params->list->first;
    while (node) {
        param = (sc_param_t *) node->data;

        if (!sc_param_get(dst_params, param->name) && param->required) {
            fprintf(stdout, "appending %s\n", param->name);
            sc_param_t *copy = sc_param_copy(param);
            sc_list_node_append(dst_params->list, sc_list_node_create(copy));
        }

        node = node->next;
    }
}
예제 #5
0
sc_xmltv_channel_t *sc_xmltv_parse_channel(xmlTextReaderPtr reader) {
    sc_xmltv_channel_t *chan = NULL;
    int ret;

    chan = (sc_xmltv_channel_t *) sc_xmltv_create(SC_XMLTV_CHANNEL);
    sc_xmltv_get_reader_property_value(reader, "id", &chan->id_);

    for (ret = xmlTextReaderRead(reader); ret == 1; ret = xmlTextReaderRead(reader)) {
        if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_END_ELEMENT, SC_XMLTV_CHANNEL_NAME,
                                               SC_XMLTV_CHANNEL_DEPTH)) {
            break;
        }
        if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_ELEMENT, "display-name",
                                               SC_XMLTV_CHANNEL_DEPTH + 1)) {
            sc_list_node_t *node = sc_list_node_create(NULL);
            sc_xmltv_get_reader_element_value(reader, (char **) (&node->data));
            sc_list_node_append(chan->display_names, node);
//            node = NULL;
        }
    }

    return chan;
}
예제 #6
0
void sc_xmltv_parse_credits(xmlTextReaderPtr reader, sc_list_t **list) {
    sc_xmltv_credit_t *cred = NULL;
    int ret;
    xmlChar *val;
    sc_xmltv_credit_type_t type;
    sc_list_node_t *node = NULL;

    for (ret = xmlTextReaderRead(reader); ret == 1; ret = xmlTextReaderRead(reader)) {
        if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_END_ELEMENT, SC_XMLTV_CREDIT_NAME,
                                               SC_XMLTV_CREDIT_DEPTH)) {
            break;
        }

        val = xmlTextReaderName(reader);
        type = SC_XMLTV_CREDIT_TYPE_UNKNOWN;
        if ((!xmlStrcmp(val, (const xmlChar *) "actor"))) type = SC_XMLTV_CREDIT_TYPE_ACTOR;
        if ((!xmlStrcmp(val, (const xmlChar *) "director"))) type = SC_XMLTV_CREDIT_TYPE_DIRECTOR;
        if ((!xmlStrcmp(val, (const xmlChar *) "guest"))) type = SC_XMLTV_CREDIT_TYPE_GUEST;
        if ((!xmlStrcmp(val, (const xmlChar *) "presenter"))) type = SC_XMLTV_CREDIT_TYPE_PRESENTER;
        if ((!xmlStrcmp(val, (const xmlChar *) "producer"))) type = SC_XMLTV_CREDIT_TYPE_PRODUCER;
        if ((!xmlStrcmp(val, (const xmlChar *) "writer"))) type = SC_XMLTV_CREDIT_TYPE_WRITER;
        xmlFree(val);

        if (!xmlTextReaderIsEmptyElement(reader) &&
                xmlTextReaderNodeType(reader) == XML_READER_TYPE_ELEMENT &&
                type > 0 &&
                xmlTextReaderDepth(reader) == SC_XMLTV_CREDIT_DEPTH + 1) {
            cred = (sc_xmltv_credit_t *) sc_xmltv_create(SC_XMLTV_CREDIT);
            cred->type = type;
            sc_xmltv_get_reader_element_value(reader, &cred->name);
            node = sc_list_node_create(cred);
            sc_list_node_append(*list, node);
        }
    }

//    node = NULL;
}
예제 #7
0
sc_xmltv_programme_t *sc_xmltv_parse_programme(xmlTextReaderPtr reader) {
    sc_xmltv_programme_t *prog = NULL;
    char *val = NULL;
    int ret;

    prog = (sc_xmltv_programme_t *) sc_xmltv_create(SC_XMLTV_PROGRAMME);

    sc_xmltv_get_reader_property_value(reader, "start", &val);
    prog->start = sc_xmltv_to_unix_time(val);
    free(val);
    val = NULL;

    sc_xmltv_get_reader_property_value(reader, "stop", &val);
    prog->stop = sc_xmltv_to_unix_time(val);
    free(val);
    val = NULL;

    sc_xmltv_get_reader_property_value(reader, "channel", &prog->channel);

    for (ret = xmlTextReaderRead(reader); ret == 1; ret = xmlTextReaderRead(reader)) {
        if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_END_ELEMENT, SC_XMLTV_PROGRAMME_NAME,
                                               SC_XMLTV_PROGRAMME_DEPTH)) {
            break;
        }
        if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_ELEMENT, "title",
                                               SC_XMLTV_PROGRAMME_DEPTH + 1)) {
            sc_xmltv_get_reader_element_value(reader, &prog->title);
        }
        if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_ELEMENT, "sub-title",
                                               SC_XMLTV_PROGRAMME_DEPTH + 1)) {
            sc_xmltv_get_reader_element_value(reader, &prog->sub_title);
        }
        if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_ELEMENT, "desc", SC_XMLTV_PROGRAMME_DEPTH + 1)) {
            sc_xmltv_get_reader_element_value(reader, &prog->desc);
        }
        if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_ELEMENT, "credits",
                                               SC_XMLTV_PROGRAMME_DEPTH + 1)) {
            sc_xmltv_parse_credits(reader, &prog->credits);
        }
        if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_ELEMENT, "date", SC_XMLTV_PROGRAMME_DEPTH + 1)) {
            sc_xmltv_get_reader_element_value(reader, &prog->date);
        }
        if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_ELEMENT, "category",
                                               SC_XMLTV_PROGRAMME_DEPTH + 1)) {
            sc_list_node_t *node = sc_list_node_create(NULL);
            sc_xmltv_get_reader_element_value(reader, (char **) (&node->data));
            sc_list_node_append(prog->categories, node);
//            node = NULL;
        }
        if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_ELEMENT, "episode-num",
                                               SC_XMLTV_PROGRAMME_DEPTH + 1)) {
            sc_xmltv_get_reader_property_value(reader, "system", &val);
            if (val && (!strcmp(val, "onscreen"))) {
                free(val);
                val = NULL;
                sc_xmltv_get_reader_element_value(reader, &val);
                uintmax_t num = strtoumax((const char *) val, NULL, 10);
                if (errno != ERANGE) {
                    prog->episode_num = (int) num;
                }
            }
            free(val);
            val = NULL;
        }
        if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_ELEMENT, "previously-shown",
                                               SC_XMLTV_PROGRAMME_DEPTH + 1)) {
            sc_xmltv_get_reader_property_value(reader, "start", &val);
            prog->start = sc_xmltv_to_unix_time(val);
            free(val);
            val = NULL;
        }
        if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_ELEMENT, "star-rating",
                                               SC_XMLTV_PROGRAMME_DEPTH + 1)) {
            int iret;
            for (iret = xmlTextReaderRead(reader); iret == 1; iret = xmlTextReaderRead(reader)) {
                if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_END_ELEMENT, "star-rating",
                                                       SC_XMLTV_PROGRAMME_DEPTH + 1)) {
                    break;
                }

                xmlChar *ival = xmlTextReaderName(reader);
                if ((!xmlStrcmp(ival, (const xmlChar *) "value"))) {
                    sc_xmltv_get_reader_element_value(reader, &prog->star_rating);
                }
                xmlFree(ival);
            }
        }
        if (sc_xmltv_check_current_reader_node(reader, XML_READER_TYPE_ELEMENT, "icon", SC_XMLTV_PROGRAMME_DEPTH + 1)) {
            sc_xmltv_get_reader_property_value(reader, "src", &prog->icon);
        }
    }

    return prog;
}
예제 #8
0
파일: stb.c 프로젝트: kenji123/pvr.stalker
bool sc_stb_get_profile_defaults(sc_list_t *list) {
    sc_list_node_append(list, sc_list_node_create(sc_param_create_string("stb_type", "MAG250", true)));
    sc_list_node_append(list, sc_list_node_create(sc_param_create_string("sn", "0000000000000", true)));
    sc_list_node_append(list, sc_list_node_create(
            sc_param_create_string("ver",
                                   "ImageDescription: 0.2.16-250; "
                                           "ImageDate: 18 Mar 2013 19:56:53 GMT+0200; "
                                           "PORTAL version: 4.9.9; "
                                           "API Version: JS API version: 328; "
                                           "STB API version: 134; "
                                           "Player Engine version: 0x566",
                                   true)));
    sc_list_node_append(list, sc_list_node_create(sc_param_create_string("device_id", "", false)));
    sc_list_node_append(list, sc_list_node_create(sc_param_create_string("device_id2", "", false)));
    sc_list_node_append(list, sc_list_node_create(sc_param_create_string("signature", "", false)));
    sc_list_node_append(list, sc_list_node_create(sc_param_create_boolean("not_valid_token", false, true)));
    sc_list_node_append(list, sc_list_node_create(sc_param_create_boolean("auth_second_step", false, true)));
    sc_list_node_append(list, sc_list_node_create(sc_param_create_boolean("hd", true, true)));
    sc_list_node_append(list, sc_list_node_create(sc_param_create_integer("num_banks", 1, true)));
    sc_list_node_append(list, sc_list_node_create(sc_param_create_integer("image_version", 216, true)));
    sc_list_node_append(list, sc_list_node_create(sc_param_create_string("hw_version", "1.7-BD-00", true)));

    return true;
}
예제 #9
0
파일: stb.c 프로젝트: kenji123/pvr.stalker
bool sc_stb_handshake_defaults(sc_list_t *list) {
    sc_list_node_append(list, sc_list_node_create(sc_param_create_string("token", "", false)));

    return true;
}