[Refdb-cvs] CVS: refdb/src refdbdbib.c,1.36.2.29,1.36.2.30
Status: Beta
Brought to you by:
mhoenicka
From: Markus H. <mho...@us...> - 2005-12-22 20:12:59
|
Update of /cvsroot/refdb/refdb/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10353 Modified Files: Tag: Release_0_9_5_stable refdbdbib.c Log Message: getstyle(): include character encoding in processing instruction Index: refdbdbib.c =================================================================== RCS file: /cvsroot/refdb/refdb/src/refdbdbib.c,v retrieving revision 1.36.2.29 retrieving revision 1.36.2.30 diff -u -U2 -r1.36.2.29 -r1.36.2.30 --- refdbdbib.c 17 Dec 2005 01:34:09 -0000 1.36.2.29 +++ refdbdbib.c 22 Dec 2005 20:12:50 -0000 1.36.2.30 @@ -1927,8 +1927,10 @@ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ int getstyle(struct CLIENT_REQUEST* ptr_clrequest, struct ADDRESULT* ptr_addresult) { + char header[80]; char *sql_command; const char* journal; char *myarg; char *token; + const char *encoding; dbi_conn conn; dbi_result dbires; @@ -1964,17 +1966,29 @@ - write header with container start markup - loop over all journal names - - write style info - - loop over all publication types - - write style info - - write citstyle info + - write style info + - loop over all publication types + - write style info + - write citstyle info - write footer with container end markup - */ + */ send_status(ptr_clrequest->fd, 000, TERM_NO); + /* connect to main database */ + if ((conn = connect_to_db(ptr_clrequest, MAIN_DB, 0)) == NULL) { + LOG_PRINT(LOG_WARNING, get_status_msg(202)); + return 1; + } + driver = dbi_conn_get_driver(conn); + + /* assemble processing instruction */ + encoding = dbi_conn_get_encoding(conn); + snprintf(header, 80, "<?xml version=\"1.0\" encoding=\"%s\"?>\n", encoding); + /* write processing instruction */ - if (tiwrite(ptr_clrequest->fd, PROCESSING_INST, TERM_NO) == -1) { + if (tiwrite(ptr_clrequest->fd, header, TERM_NO) == -1) { LOG_PRINT(LOG_WARNING, get_status_msg(110)); delete_all_lilimem(&sentinel); + dbi_conn_close(conn); return 1; } @@ -1986,162 +2000,149 @@ LOG_PRINT(LOG_WARNING, get_status_msg(110)); delete_all_lilimem(&sentinel); + dbi_conn_close(conn); return 2; } iwrite_elstart(ptr_clrequest, "STYLESET", NULL, 0); } -/* else if (ptr_clrequest->inargc - *(ptr_clrequest->ptr_optind) == 1) { /\* write CITESTYLE element *\/ */ -/* if (tiwrite(ptr_clrequest->fd, DOCTYPE_CITESTYLE, TERM_NO) == -1) { */ -/* LOG_PRINT(LOG_WARNING, get_status_msg(110)); */ -/* delete_all_lilimem(&sentinel); */ -/* return 2; */ -/* } */ -/* } */ else { /* no tokens found */ LOG_PRINT(LOG_WARNING, get_status_msg(111)); delete_all_lilimem(&sentinel); + dbi_conn_close(conn); return 2; } - /* connect to the database */ - if ((conn = connect_to_db(ptr_clrequest, MAIN_DB, 0)) != NULL) { - driver = dbi_conn_get_driver(conn); - - /* loop over all requested styles */ - for (; *(ptr_clrequest->ptr_optind) < ptr_clrequest->inargc; (*(ptr_clrequest->ptr_optind))++) { - sprintf(sql_command, "SELECT ID,JOURNAL,CITSEPARATOR,FOLLOWING,PRECEEDING,RANGESEPARATOR,BIBLIOTITLE,INTEXTSEQUENCE,BIBLIOSEQUENCE,BIBLIOFIRSTINDENT,BIBLIOBLOCKINDENT,FONTSIZE,STYLE,JANABBREV,FEBABBREV,MARABBREV,APRABBREV,MAYABBREV,JUNABBREV,JULABBREV,AUGABBREV,SEPABBREV,OCTABBREV,NOVABBREV,DECABBREV,JANFULL,FEBFULL,MARFULL,APRFULL,MAYFULL,JUNFULL,JULFULL,AUGFULL,SEPFULL,OCTFULL,NOVFULL,DECFULL,JANTHREELET,FEBTHREELET,MARTHREELET,APRTHREELET,MAYTHREELET,JUNTHREELET,JULTHREELET,AUGTHREELET,SEPTHREELET,OCTTHREELET,NOVTHREELET,DECTHREELET FROM CITSTYLE WHERE JOURNAL='%s'", (ptr_clrequest->inargv)[*(ptr_clrequest->ptr_optind)]); + /* loop over all requested styles */ + for (; *(ptr_clrequest->ptr_optind) < ptr_clrequest->inargc; (*(ptr_clrequest->ptr_optind))++) { + sprintf(sql_command, "SELECT ID,JOURNAL,CITSEPARATOR,FOLLOWING,PRECEEDING,RANGESEPARATOR,BIBLIOTITLE,INTEXTSEQUENCE,BIBLIOSEQUENCE,BIBLIOFIRSTINDENT,BIBLIOBLOCKINDENT,FONTSIZE,STYLE,JANABBREV,FEBABBREV,MARABBREV,APRABBREV,MAYABBREV,JUNABBREV,JULABBREV,AUGABBREV,SEPABBREV,OCTABBREV,NOVABBREV,DECABBREV,JANFULL,FEBFULL,MARFULL,APRFULL,MAYFULL,JUNFULL,JULFULL,AUGFULL,SEPFULL,OCTFULL,NOVFULL,DECFULL,JANTHREELET,FEBTHREELET,MARTHREELET,APRTHREELET,MAYTHREELET,JUNTHREELET,JULTHREELET,AUGTHREELET,SEPTHREELET,OCTTHREELET,NOVTHREELET,DECTHREELET FROM CITSTYLE WHERE JOURNAL='%s'", (ptr_clrequest->inargv)[*(ptr_clrequest->ptr_optind)]); - dbires = dbi_conn_query(conn, sql_command); - LOG_PRINT(LOG_DEBUG, sql_command); - if (dbires) { - while (dbi_result_next_row(dbires)) { /* should run only once */ - citstyle_id = my_dbi_result_get_short_idval(dbires, "ID"); - - /* start citestyle */ - iwrite_elstart(ptr_clrequest, "CITESTYLE", NULL, 0); - - /* output style name */ - iwrite_element(ptr_clrequest, "STYLENAME", NULL, my_dbi_result_get_string(dbires, "JOURNAL")); - - /* start refstyle block */ - iwrite_elstart(ptr_clrequest, "REFSTYLE", NULL, 0); - - /* loop over all publication types */ - sprintf(sql_command, "SELECT ID,PUBTYPE FROM REFSTYLE WHERE CITSTYLEID=%u AND PUBTYPE!=\'INTEXT\' AND PUBTYPE!=\'AUTHORONLY\' AND PUBTYPE!=\'YEARONLY\'", citstyle_id); - dbires_ref = dbi_conn_query(conn, sql_command); - LOG_PRINT(LOG_DEBUG, sql_command); - if (dbires_ref) { - while (dbi_result_next_row(dbires_ref)) { - refstyle_id = my_dbi_result_get_short_idval(dbires_ref, "ID"); + dbires = dbi_conn_query(conn, sql_command); + LOG_PRINT(LOG_DEBUG, sql_command); + if (dbires) { + while (dbi_result_next_row(dbires)) { /* should run only once */ + citstyle_id = my_dbi_result_get_short_idval(dbires, "ID"); + + /* start citestyle */ + iwrite_elstart(ptr_clrequest, "CITESTYLE", NULL, 0); + + /* output style name */ + iwrite_element(ptr_clrequest, "STYLENAME", NULL, my_dbi_result_get_string(dbires, "JOURNAL")); + + /* start refstyle block */ + iwrite_elstart(ptr_clrequest, "REFSTYLE", NULL, 0); + + /* loop over all publication types */ + sprintf(sql_command, "SELECT ID,PUBTYPE FROM REFSTYLE WHERE CITSTYLEID=%u AND PUBTYPE!=\'INTEXT\' AND PUBTYPE!=\'AUTHORONLY\' AND PUBTYPE!=\'YEARONLY\'", citstyle_id); + dbires_ref = dbi_conn_query(conn, sql_command); + LOG_PRINT(LOG_DEBUG, sql_command); + if (dbires_ref) { + while (dbi_result_next_row(dbires_ref)) { + refstyle_id = my_dbi_result_get_short_idval(dbires_ref, "ID"); - iwrite_pubtype(ptr_clrequest, my_dbi_result_get_string(dbires_ref, "PUBTYPE"), citstyle_id, conn); - } + iwrite_pubtype(ptr_clrequest, my_dbi_result_get_string(dbires_ref, "PUBTYPE"), citstyle_id, conn); } - dbi_result_free(dbires_ref); - - /* end refstyle block */ - iwrite_elend(ptr_clrequest, "REFSTYLE"); + } + dbi_result_free(dbires_ref); - /* begin citstyle block */ - if (insert_liliform(&attr_sentinel, "INTEXTSEQUENCE", (char*)my_dbi_result_get_string(dbires, "INTEXTSEQUENCE"))) { - LOG_PRINT(LOG_CRIT, get_status_msg(801)); - ptr_addresult->failure++; - break; - } - if (insert_liliform(&attr_sentinel, "STYLE", (char*)my_dbi_result_get_string(dbires, "STYLE"))) { - LOG_PRINT(LOG_CRIT, get_status_msg(801)); - delete_all_liliform(&attr_sentinel); - ptr_addresult->failure++; - break; - } + /* end refstyle block */ + iwrite_elend(ptr_clrequest, "REFSTYLE"); - iwrite_elstart(ptr_clrequest, "CITSTYLE", &attr_sentinel, 0); + /* begin citstyle block */ + if (insert_liliform(&attr_sentinel, "INTEXTSEQUENCE", (char*)my_dbi_result_get_string(dbires, "INTEXTSEQUENCE"))) { + LOG_PRINT(LOG_CRIT, get_status_msg(801)); + ptr_addresult->failure++; + break; + } + if (insert_liliform(&attr_sentinel, "STYLE", (char*)my_dbi_result_get_string(dbires, "STYLE"))) { + LOG_PRINT(LOG_CRIT, get_status_msg(801)); delete_all_liliform(&attr_sentinel); + ptr_addresult->failure++; + break; + } - /* preceeding */ - iwrite_element(ptr_clrequest, "PRECEEDING", NULL, my_dbi_result_get_string(dbires, "PRECEEDING")); + iwrite_elstart(ptr_clrequest, "CITSTYLE", &attr_sentinel, 0); + delete_all_liliform(&attr_sentinel); - /* following */ - iwrite_element(ptr_clrequest, "FOLLOWING", NULL, my_dbi_result_get_string(dbires, "FOLLOWING")); + /* preceeding */ + iwrite_element(ptr_clrequest, "PRECEEDING", NULL, my_dbi_result_get_string(dbires, "PRECEEDING")); - /* citseparator */ - iwrite_element(ptr_clrequest, "CITSEPARATOR", NULL, my_dbi_result_get_string(dbires, "CITSEPARATOR")); + /* following */ + iwrite_element(ptr_clrequest, "FOLLOWING", NULL, my_dbi_result_get_string(dbires, "FOLLOWING")); - /* rangeseparator */ - iwrite_element(ptr_clrequest, "RANGESEPARATOR", NULL, my_dbi_result_get_string(dbires, "RANGESEPARATOR")); + /* citseparator */ + iwrite_element(ptr_clrequest, "CITSEPARATOR", NULL, my_dbi_result_get_string(dbires, "CITSEPARATOR")); - /* intextdef */ - iwrite_pubtype(ptr_clrequest, "INTEXTDEF", citstyle_id, conn); + /* rangeseparator */ + iwrite_element(ptr_clrequest, "RANGESEPARATOR", NULL, my_dbi_result_get_string(dbires, "RANGESEPARATOR")); - /* authoronly */ - iwrite_pubtype(ptr_clrequest, "AUTHORONLY", citstyle_id, conn); + /* intextdef */ + iwrite_pubtype(ptr_clrequest, "INTEXTDEF", citstyle_id, conn); - /* yearonly */ - iwrite_pubtype(ptr_clrequest, "YEARONLY", citstyle_id, conn); + /* authoronly */ + iwrite_pubtype(ptr_clrequest, "AUTHORONLY", citstyle_id, conn); - /* end citstyle block */ - iwrite_elend(ptr_clrequest, "CITSTYLE"); + /* yearonly */ + iwrite_pubtype(ptr_clrequest, "YEARONLY", citstyle_id, conn); - /* begin bibstyle block */ - if (insert_liliform(&attr_sentinel, "BIBLIOSEQUENCE", (char*)my_dbi_result_get_string(dbires, "BIBLIOSEQUENCE"))) { - LOG_PRINT(LOG_CRIT, get_status_msg(801)); - delete_all_liliform(&attr_sentinel); - ptr_addresult->failure++; - break; - } + /* end citstyle block */ + iwrite_elend(ptr_clrequest, "CITSTYLE"); - if (insert_liliform(&attr_sentinel, "BIBLIOFIRSTINDENT", (char*)my_dbi_result_get_string(dbires, "BIBLIOFIRSTINDENT"))) { - LOG_PRINT(LOG_CRIT, get_status_msg(801)); - delete_all_liliform(&attr_sentinel); - ptr_addresult->failure++; - break; - } + /* begin bibstyle block */ + if (insert_liliform(&attr_sentinel, "BIBLIOSEQUENCE", (char*)my_dbi_result_get_string(dbires, "BIBLIOSEQUENCE"))) { + LOG_PRINT(LOG_CRIT, get_status_msg(801)); + delete_all_liliform(&attr_sentinel); + ptr_addresult->failure++; + break; + } - if (insert_liliform(&attr_sentinel, "BIBLIOBLOCKINDENT", (char*)my_dbi_result_get_string(dbires, "BIBLIOBLOCKINDENT"))) { - LOG_PRINT(LOG_CRIT, get_status_msg(801)); - delete_all_liliform(&attr_sentinel); - ptr_addresult->failure++; - break; - } + if (insert_liliform(&attr_sentinel, "BIBLIOFIRSTINDENT", (char*)my_dbi_result_get_string(dbires, "BIBLIOFIRSTINDENT"))) { + LOG_PRINT(LOG_CRIT, get_status_msg(801)); + delete_all_liliform(&attr_sentinel); + ptr_addresult->failure++; + break; + } - if (insert_liliform(&attr_sentinel, "FONTSIZE", (char*)my_dbi_result_get_string(dbires, "FONTSIZE"))) { - LOG_PRINT(LOG_CRIT, get_status_msg(801)); - delete_all_liliform(&attr_sentinel); - ptr_addresult->failure++; - break; - } + if (insert_liliform(&attr_sentinel, "BIBLIOBLOCKINDENT", (char*)my_dbi_result_get_string(dbires, "BIBLIOBLOCKINDENT"))) { + LOG_PRINT(LOG_CRIT, get_status_msg(801)); + delete_all_liliform(&attr_sentinel); + ptr_addresult->failure++; + break; + } - iwrite_elstart(ptr_clrequest, "BIBSTYLE", &attr_sentinel, 0); + if (insert_liliform(&attr_sentinel, "FONTSIZE", (char*)my_dbi_result_get_string(dbires, "FONTSIZE"))) { + LOG_PRINT(LOG_CRIT, get_status_msg(801)); delete_all_liliform(&attr_sentinel); + ptr_addresult->failure++; + break; + } - /* bibliotitle */ - iwrite_element(ptr_clrequest, "BIBLIOTITLE", NULL, my_dbi_result_get_string(dbires, "BIBLIOTITLE")); + iwrite_elstart(ptr_clrequest, "BIBSTYLE", &attr_sentinel, 0); + delete_all_liliform(&attr_sentinel); - /* months block */ - iwrite_months(ptr_clrequest, dbires); + /* bibliotitle */ + iwrite_element(ptr_clrequest, "BIBLIOTITLE", NULL, my_dbi_result_get_string(dbires, "BIBLIOTITLE")); - /* end bibstyle block */ - iwrite_elend(ptr_clrequest, "BIBSTYLE"); + /* months block */ + iwrite_months(ptr_clrequest, dbires); - /* end citestyle */ - iwrite_elend(ptr_clrequest, "CITESTYLE"); - } - dbi_result_free(dbires); - ptr_addresult->success++; - } /* end if style exists */ - else { - ptr_addresult->skipped++; + /* end bibstyle block */ + iwrite_elend(ptr_clrequest, "BIBSTYLE"); + + /* end citestyle */ + iwrite_elend(ptr_clrequest, "CITESTYLE"); } - } /* end for loop over all tokens */ + dbi_result_free(dbires); + ptr_addresult->success++; + } /* end if style exists */ + else { + ptr_addresult->skipped++; + } + } /* end for loop over all tokens */ - dbi_conn_close(conn); + dbi_conn_close(conn); - if (n_have_styleset) { - tiwrite(ptr_clrequest->fd, "</STYLESET>\n", TERM_YES); - } - } - else { - LOG_PRINT(LOG_WARNING, get_status_msg(202)); - return 1; + if (n_have_styleset) { + tiwrite(ptr_clrequest->fd, "</STYLESET>\n", TERM_YES); } + delete_all_lilimem(&sentinel); |