add bbsmenuparser_item_t allocater for external bbs.
@@ -415,6 +415,57 @@ | ||
415 | 415 | bbsmnparser_item_clear(parser->itembuffer); |
416 | 416 | } |
417 | 417 | |
418 | +EXPORT bbsmnparser_item_t* bbsmnparser_newcategoryitem(bbsmnparser_t *parser, TC *category, W category_len) | |
419 | +{ | |
420 | + bbsmnparser_item_t *item; | |
421 | + | |
422 | + item = bbsmnparser_item_new(); | |
423 | + if (item == NULL) { | |
424 | + return NULL; | |
425 | + } | |
426 | + item->category = malloc(sizeof(TC)*(category_len+1)); | |
427 | + if (item->category == NULL) { | |
428 | + bbsmnparser_item_delete(item); | |
429 | + return NULL; | |
430 | + } | |
431 | + memcpy(item->category, category, sizeof(TC)*category_len); | |
432 | + item->category[category_len] = TNULL; | |
433 | + item->category_len = category_len; | |
434 | + | |
435 | + return item; | |
436 | +} | |
437 | + | |
438 | +EXPORT bbsmnparser_item_t* bbsmnparser_newboarditem(bbsmnparser_t *parser, TC *title, W title_len, UB *url, W url_len) | |
439 | +{ | |
440 | + bbsmnparser_item_t *item; | |
441 | + | |
442 | + item = bbsmnparser_item_new(); | |
443 | + if (item == NULL) { | |
444 | + return NULL; | |
445 | + } | |
446 | + | |
447 | + free(item->url); | |
448 | + item->url = malloc(sizeof(UB)*(url_len+1)); | |
449 | + if (item->url == NULL) { | |
450 | + bbsmnparser_item_delete(item); | |
451 | + return NULL; | |
452 | + } | |
453 | + memcpy(item->url, url, sizeof(UB)*url_len); | |
454 | + item->url[url_len] = '\0'; | |
455 | + item->url_len = url_len; | |
456 | + | |
457 | + item->title = malloc(sizeof(TC)*(title_len+1)); | |
458 | + if (item->title == NULL) { | |
459 | + bbsmnparser_item_delete(item); | |
460 | + return NULL; | |
461 | + } | |
462 | + memcpy(item->title, title, sizeof(TC)*title_len); | |
463 | + item->title[title_len] = TNULL; | |
464 | + item->title_len = title_len; | |
465 | + | |
466 | + return item; | |
467 | +} | |
468 | + | |
418 | 469 | EXPORT bbsmnparser_t* bbsmnparser_new(bbsmncache_t *cache) |
419 | 470 | { |
420 | 471 | bbsmnparser_t *parser; |
@@ -1,7 +1,7 @@ | ||
1 | 1 | /* |
2 | 2 | * bbsmenuparser.h |
3 | 3 | * |
4 | - * Copyright (c) 2009 project bchan | |
4 | + * Copyright (c) 2009-2012 project bchan | |
5 | 5 | * |
6 | 6 | * This software is provided 'as-is', without any express or implied |
7 | 7 | * warranty. In no event will the authors be held liable for any damages |
@@ -49,5 +49,7 @@ | ||
49 | 49 | IMPORT VOID bbsmnparser_delete(bbsmnparser_t *parser); |
50 | 50 | IMPORT W bbsmnparser_getnextitem(bbsmnparser_t *parser, bbsmnparser_item_t **item); |
51 | 51 | IMPORT VOID bbsmnparser_clear(bbsmnparser_t *parser); |
52 | +IMPORT bbsmnparser_item_t* bbsmnparser_newcategoryitem(bbsmnparser_t *parser, TC *category, W category_len); | |
53 | +IMPORT bbsmnparser_item_t* bbsmnparser_newboarditem(bbsmnparser_t *parser, TC *title, W title_len, UB *url, W url_len); | |
52 | 54 | |
53 | 55 | #endif |