summaryrefslogtreecommitdiff
path: root/support/dktools/hbchm.ctr
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/dktools/hbchm.ctr
Initial commit
Diffstat (limited to 'support/dktools/hbchm.ctr')
-rw-r--r--support/dktools/hbchm.ctr752
1 files changed, 752 insertions, 0 deletions
diff --git a/support/dktools/hbchm.ctr b/support/dktools/hbchm.ctr
new file mode 100644
index 0000000000..5b35769bc1
--- /dev/null
+++ b/support/dktools/hbchm.ctr
@@ -0,0 +1,752 @@
+%% options
+
+copyright owner = Dirk Krause
+copyright year = 2013-xxxx
+license = bsd
+
+
+
+%% header
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** Write files needed by the HTML help compiler.
+ @param job Job structure.
+ @return 1 on success, 0 on error.
+*/
+int
+hbchm_write_project(hb_job_t *job);
+
+/** Check whether there are index entries available.
+ @param job Job structure.
+ @return 1 if we must write an index file, 0 otherwise.
+*/
+int
+hbchm_have_index_entries(hb_job_t *job);
+
+#ifdef __cplusplus
+}
+#endif
+
+%% module
+
+
+#include "dk3all.h"
+#include "htmlbook.h"
+
+
+
+$!trace-include
+
+
+
+/** 8-bit character keywords, not localized.
+*/
+static char const * const hbchm_c8_kw[] = {
+$!string-table
+#
+# 0 Newline for DOS text files
+#
+\r\n
+#
+# 1 2 3 4 5 6 7 8 9
+#
+[OPTIONS]
+Compiled file=index.chm
+Contents file=contents.hhc
+Index file=index.hhk
+Compatibility=1.1 or later
+Display compile progress=Yes
+Language=
+Title=
+Default topic=
+#
+# 10 Default language
+#
+0x409 English (USA)
+#
+# 11 Files section
+#
+[FILES]
+#
+# 12 Infotypes section
+#
+[INFOTYPES]
+#
+# 13 14 15 16 17 18 19 Header of index file
+#
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML>
+<HEAD>
+<meta name="GENERATOR" content="Microsoft&reg; HTML Help Workshop 4.1">
+<!-- Sitemap 1.0 -->
+</HEAD><BODY>
+<UL>
+#
+# 20 21 Footer of index file.
+#
+</UL>
+</BODY></HTML>
+#
+# 22 23 24 25 Strings for entry
+#
+<LI><OBJECT type="text/sitemap">
+ <param name="Name" value="
+ <param name="Local" value="
+">
+#
+# 26
+#
+\#
+#
+# 27-36
+#
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML>
+<HEAD>
+<meta name="GENERATOR" content="Microsoft&reg; HTML Help Workshop 4.1">
+<!-- Sitemap 1.0 -->
+</HEAD><BODY>
+<OBJECT type="text/site properties">
+ <param name="Window Styles" value="0x800025">
+ <param name="ImageType" value="Folder">
+</OBJECT>
+#
+# 37
+#
+</BODY></HTML>
+#
+# 38 (four spaces)
+#
+
+#
+# 39 40
+#
+<LI><OBJECT type="text/sitemap">
+ </OBJECT>
+#
+# 41 42
+#
+ <param name="Name" value="
+ <param name="Local" value="
+#
+# 43 44
+#
+<UL>
+</UL>
+#
+# 45
+#
+<?xml version="1.0" encoding="utf-8"?>
+#
+# 46 47
+#
+<CONFIG>
+</CONFIG>
+#
+# 48 49
+#
+ <Files>
+ </Files>
+#
+# 50 51
+#
+ <OtherFiles>
+ </OtherFiles>
+#
+# 52
+#
+ <Count Value="0"/>
+#
+# 53 54
+#
+ <Windows>
+ </Windows>
+#
+# 55 56
+#
+ <MergeFiles>
+ </MergeFiles>
+#
+# 57 58
+#
+ <Settings>
+ </Settings>
+#
+# 59 60
+#
+ <IndexFile Value="
+"/>
+#
+# 61
+#
+ <TOCFile Value="
+#
+# 62 ... 71
+#
+ <MakeBinaryTOC Value="False"/>
+ <MakeBinaryIndex Value="True"/>
+ <AutoFollowLinks Value="False"/>
+ <MakeSearchable Value="True"/>
+ <DefaultPage Value="index.html"/>
+ <Title Value="
+ <OutputFileName Value="index.chm"/>
+ <DefaultFont Value=""/>
+ <DefaultWindow Value=""/>
+ <ScanHtmlContents Value="True"/>
+#
+# 72
+#
+ <Count Value="%lu"/>
+#
+# 73 74
+#
+ <FileName%lu Value="
+" ContextName="" ContextNumber="0"/>
+#
+# 75
+#
+Test
+#
+# 76
+#
+ <param name="ID" value="%ld">
+#
+# 77 78 79 80 81 82 83 84 85 86
+#
+Binary TOC=No
+Binary Index=Yes
+Default Window=
+Default Font=
+Full-text search=Yes
+Auto Index=Yes
+Create CHI file=No
+Full text search stop list file=
+Display compile progress=Yes
+Display compile notes=Yes
+#
+# 87
+#
+Full-text search=No
+$!end
+};
+
+
+
+int
+hbchm_have_index_entries(hb_job_t *job)
+{
+ int back = 0;
+ $? "+ hbchm_have_index_entries"
+ if ((job->i_index) && (job->s_index)) {
+ dk3sto_it_reset(job->i_index);
+ if(dk3sto_it_next(job->i_index)) { back = 1; }
+ }
+ $? "- hbchm_have_index_entries %d", back
+ return back;
+}
+
+
+
+/** Write hhp file (project).
+ @param job Job structure.
+ @param haveindex Flag: Need to write an index file.
+ @return 1 on success, 0 on error.
+*/
+static
+int
+hbchm_write_hhp(hb_job_t *job, int haveindex)
+{
+ dkChar fn[DK3_MAX_PATH]; /* Name of output file */
+ dkChar of[DK3_MAX_PATH]; /* Output file name */
+ dkChar const *onefn; /* Resource file name */
+ hb_node_t *nptr; /* Root node or first node */
+ int res; /* Operation result */
+ int back = 0;
+ $? "+ hbchm_write_hhp"
+ job->of = dk3sf_fopen_app((job->kwnl)[26], (job->kwnl)[30], job->app);
+ if(job->of) {
+ back = 1;
+ /* Write options section
+ */
+ fputs(hbchm_c8_kw[1], job->of); fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[77], job->of); fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[78], job->of); fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[2], job->of); fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[3], job->of); fputs(hbchm_c8_kw[0], job->of);
+ if(haveindex) {
+ fputs(hbchm_c8_kw[4], job->of); fputs(hbchm_c8_kw[0], job->of);
+ }
+ fputs(hbchm_c8_kw[79], job->of); fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[80], job->of); fputs(hbchm_c8_kw[0], job->of);
+ if ((job->options) & HB_JOB_OPT_CHM_FULL_TEXT_SEARCH) {
+ fputs(hbchm_c8_kw[81], job->of);
+ } else {
+ fputs(hbchm_c8_kw[87], job->of);
+ }
+ fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[82], job->of); fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[83], job->of); fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[84], job->of); fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[85], job->of); fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[86], job->of); fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[5], job->of); fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[6], job->of); fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[7], job->of);
+ /* Language */
+ if(job->chmlang) {
+ res = dk3se_ansi_fputs(
+ job->chmlang, dk3app_get_encoding(job->app), job->of, job->app
+ );
+ if(!(res)) { back = 0; }
+ } else {
+ fputs(hbchm_c8_kw[10], job->of);
+ }
+ fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[8], job->of);
+ if (job->rootnode) {
+ if ((job->rootnode)->title) {
+ res = dk3se_ansi_fputs(
+ (job->rootnode)->title, dk3app_get_encoding(job->app),
+ job->of, job->app
+ );
+ if(!(res)) { back = 0; }
+ } else {
+ fputs(hbchm_c8_kw[75], job->of);
+ }
+ } else {
+ fputs(hbchm_c8_kw[75], job->of);
+ }
+ fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[9], job->of);
+ /* Default topic */
+ if (NULL != job->rootnode) {
+ nptr = job->rootnode;
+ if(!(nptr->filename)) { nptr = nptr->jumpnode; }
+ if(nptr) {
+ if(hbhtml_create_output_filename(fn,DK3_SIZEOF(fn,dkChar),job,nptr)) {
+ res = dk3se_ansi_fputs(
+ fn, dk3app_get_encoding(job->app), job->of, job->app
+ );
+ if(!(res)) { back = 0; }
+ } else {
+ back = 0;
+ }
+ } else {
+ back = 0;
+ /* ERROR: No default topic found! */
+ dk3app_log_1(job->app, DK3_LL_ERROR, job->msg, 47);
+ }
+ fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ }
+ /* Write files section - files mentioned explicitly
+ */
+ fputs(hbchm_c8_kw[11], job->of); fputs(hbchm_c8_kw[0], job->of);
+ dk3sto_it_reset(job->i_files);
+ while(NULL != (onefn = (dkChar const *)dk3sto_it_next(job->i_files))) {
+ res = dk3se_ansi_fputs(
+ onefn, dk3app_get_encoding(job->app), job->of, job->app
+ );
+ if(!(res)) { back = 0; }
+ fputs(hbchm_c8_kw[0], job->of);
+ }
+#if (!(VERSION_BEFORE_20140416))
+ /* 2014-04-16
+ Write files section - HTML files not mentioned explicitly.
+ */
+ dk3sto_it_reset(job->i_pnodes);
+ while (NULL != (nptr = (hb_node_t *)dk3sto_it_next(job->i_pnodes))) {
+ if (!(nptr->jumpnode)) {
+ if (hbhtml_create_output_filename(of,DK3_SIZEOF(of,dkChar),job,nptr)) {
+ if (!(dk3sto_it_find_like(job->i_files, of, 0))) {
+ res = dk3se_ansi_fputs(
+ of, dk3app_get_encoding(job->app), job->of, job->app
+ );
+ if(!(res)) { back = 0; }
+ fputs(hbchm_c8_kw[0], job->of);
+ }
+ }
+ }
+ }
+#endif
+ fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[12], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ if(!dk3sf_fclose_fn_app(job->of, (job->kwnl)[26], job->app)) { back = 0; }
+ }
+ if(!hbtool_add_file(job, (job->kwnl)[26])) { back = 0; }
+ if(!hbtool_add_file(job, (job->kwnl)[28])) { back = 0; }
+ if(haveindex) {
+ if(!hbtool_add_file(job, (job->kwnl)[29])) { back = 0; }
+ } $? "- hbchm_write_hhp %d", back
+ return back;
+}
+
+
+
+/** Write hhc file (table of contents).
+ @param job Job structure.
+ @return 1 on success, 0 on error.
+*/
+static
+int
+hbchm_write_hhc(hb_job_t *job)
+{
+ dkChar bu[DK3_MAX_PATH]; /* Name of output file */
+ hb_node_t *cnptr; /* Current node to process */
+ hb_node_t *nnptr; /* Next node to process */
+ int i; /* Used to print spaces */
+ int res; /* Operation result */
+ int mwrn = 1; /* Flag: Must write root node */
+ int back = 0;
+ $? "+ hbchm_write_hhc"
+ job->of = dk3sf_fopen_app((job->kwnl)[28], (job->kwnl)[30], job->app);
+ if(job->of) {
+ back = 1;
+ fputs(hbchm_c8_kw[27], job->of); fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[28], job->of); fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[29], job->of); fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[30], job->of); fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[31], job->of); fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[32], job->of); fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[33], job->of); fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[34], job->of); fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[35], job->of); fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[36], job->of); fputs(hbchm_c8_kw[0], job->of);
+ dk3sto_it_reset(job->i_nodes);
+ while(NULL != (cnptr = (hb_node_t *)dk3sto_it_next(job->i_nodes))) {
+ cnptr->tocstate = HB_TOC_STATE_INIT;
+ }
+ cnptr = job->rootnode;
+ while(cnptr) {
+ switch(cnptr->tocstate) {
+ case HB_TOC_STATE_INIT: {
+ if(cnptr->parent) {
+ /* Write OBJECT for node */
+ for(i = 0;i < cnptr->depth;i++) { fputs(hbchm_c8_kw[38],job->of); }
+ fputs(hbchm_c8_kw[39],job->of); fputs(hbchm_c8_kw[0],job->of);
+ for(i = 0;i < cnptr->depth;i++) { fputs(hbchm_c8_kw[38],job->of); }
+ fputs(hbchm_c8_kw[41],job->of);
+ if(!hbhtml_output_for_text(job, cnptr->title)) { back = 0; }
+ fputs(hbchm_c8_kw[25],job->of);
+ fputs(hbchm_c8_kw[0],job->of);
+ if (0L != cnptr->contnum) {
+ fprintf(job->of, hbchm_c8_kw[76], cnptr->contnum);
+ fputs(hbchm_c8_kw[0],job->of);
+ }
+ if(cnptr->filename) {
+ res = hbhtml_create_output_filename(
+ bu, DK3_SIZEOF(bu,dkChar), job, cnptr
+ );
+ if(res) {
+ for(i = 0;i < cnptr->depth;i++) {
+ fputs(hbchm_c8_kw[38],job->of);
+ }
+ fputs(hbchm_c8_kw[42],job->of);
+ if(!hbhtml_url_output_for_text(job, bu)) { back = 0; }
+ fputs(hbchm_c8_kw[25],job->of);
+ fputs(hbchm_c8_kw[0],job->of);
+ } else {
+ back = 0;
+ }
+ }
+ for(i = 0;i < cnptr->depth;i++) { fputs(hbchm_c8_kw[38],job->of); }
+ fputs(hbchm_c8_kw[40],job->of); fputs(hbchm_c8_kw[0],job->of);
+ } else { $? ". no parent, probably root node"
+ }
+ dk3sto_it_reset(cnptr->i_subnodes);
+ nnptr = (hb_node_t *)dk3sto_it_next(cnptr->i_subnodes);
+ if(nnptr) {
+ /* Write UL */
+ for(i = 0;i < cnptr->depth;i++) {
+ fputs(hbchm_c8_kw[38],job->of);
+ }
+ fputs(hbchm_c8_kw[43],job->of);
+ fputs(hbchm_c8_kw[0],job->of);
+ if (mwrn) {
+ mwrn = 0;
+ if ((!(cnptr->parent)) && (job->rootnode)) {
+ if (cnptr->objno == (job->rootnode)->objno) {
+ if (cnptr->filename) {
+ res = hbhtml_create_output_filename(
+ bu, DK3_SIZEOF(bu,dkChar), job, cnptr
+ );
+ if (res) {
+ fputs(hbchm_c8_kw[38],job->of);
+ fputs(hbchm_c8_kw[39],job->of);
+ fputs(hbchm_c8_kw[0],job->of);
+ fputs(hbchm_c8_kw[38],job->of);
+ fputs(hbchm_c8_kw[41],job->of);
+ /* Title */
+ if (cnptr->title) {
+ if(!hbhtml_output_for_text(job, cnptr->title)) {
+ back = 0;
+ }
+ } else {
+ if(!hbhtml_output_for_text(job, (job->msg)[87])) {
+ back = 0;
+ }
+ }
+ fputs(hbchm_c8_kw[25],job->of);
+ fputs(hbchm_c8_kw[0],job->of);
+ fputs(hbchm_c8_kw[38],job->of);
+ fputs(hbchm_c8_kw[42],job->of);
+ /* File name */
+ if(!hbhtml_url_output_for_text(job, bu)) { back = 0; }
+ fputs(hbchm_c8_kw[25],job->of);
+ fputs(hbchm_c8_kw[0],job->of);
+ fputs(hbchm_c8_kw[38],job->of);
+ fputs(hbchm_c8_kw[40],job->of);
+ fputs(hbchm_c8_kw[0],job->of);
+ }
+ }
+ }
+ }
+ }
+ cnptr->tocstate = HB_TOC_STATE_IN_PROGRESS;
+ cnptr = nnptr;
+ } else {
+ cnptr->tocstate = HB_TOC_STATE_FINISHED;
+ cnptr = cnptr->parent;
+ }
+ } break;
+ case HB_TOC_STATE_IN_PROGRESS: {
+ nnptr = (hb_node_t *)dk3sto_it_next(cnptr->i_subnodes);
+ if(nnptr) {
+ cnptr = nnptr;
+ } else {
+ /* Write /UL */
+ for(i = 0;i < cnptr->depth;i++) {
+ fputs(hbchm_c8_kw[38],job->of);
+ }
+ fputs(hbchm_c8_kw[44],job->of);
+ fputs(hbchm_c8_kw[0],job->of);
+ cnptr->tocstate = HB_TOC_STATE_FINISHED;
+ cnptr = cnptr->parent;
+ }
+ } break;
+ case HB_TOC_STATE_FINISHED: {
+ cnptr = cnptr->parent;
+ } break;
+ }
+ }
+ fputs(hbchm_c8_kw[37], job->of); fputs(hbchm_c8_kw[0], job->of);
+ if(!dk3sf_fclose_fn_app(job->of, (job->kwnl)[28], job->app)) { back = 0; }
+ } $? "- hbchm_write_hhc %d", back
+ return back;
+}
+
+
+
+/** Write hhk file (Keyword index).
+ @param job Job structure.
+ @return 1 on success, 0 on error.
+*/
+static
+int
+hbchm_write_hhk(hb_job_t *job)
+{
+ hb_index_entry_t *ie; /* Current index entry to process */
+ int back = 0;
+ $? "+ hbchm_write_hhk"
+ job->of = dk3sf_fopen_app((job->kwnl)[29], (job->kwnl)[30], job->app);
+ if(job->of) {
+ back = 1;
+ fputs(hbchm_c8_kw[13], job->of); fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[14], job->of); fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[15], job->of); fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[16], job->of); fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[17], job->of); fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[18], job->of); fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[19], job->of); fputs(hbchm_c8_kw[0], job->of);
+ dk3sto_it_reset(job->i_index);
+ while(NULL != (ie = (hb_index_entry_t *)dk3sto_it_next(job->i_index))) {
+ fputs(hbchm_c8_kw[22], job->of); fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[23], job->of);
+ if(!hbhtml_output_for_text(job, ie->tx)) { back = 0; }
+ fputs(hbchm_c8_kw[25], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[24], job->of);
+ if(ie->fn) {
+ if(!hbhtml_url_output_for_text(job, ie->fn)) { back = 0; }
+ }
+ fputs(hbchm_c8_kw[26], job->of);
+ if(!hb_index_write_anchor(job, ie)) { back = 0; }
+ fputs(hbchm_c8_kw[25], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[40], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ }
+ fputs(hbchm_c8_kw[20], job->of); fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[21], job->of); fputs(hbchm_c8_kw[0], job->of);
+ if(!dk3sf_fclose_fn_app(job->of, (job->kwnl)[29], job->app)) { back = 0; }
+ } $? "- hbchm_write_hhk %d", back
+ return back;
+}
+
+
+
+/** Write XML project file for chmcmd.
+ @param job Job structure.
+ @return 1 on success, 0 on error.
+*/
+static
+int
+hbchm_write_xml(hb_job_t *job)
+{
+ dkChar of[DK3_MAX_PATH]; /* XML output file name */
+ dkChar const *fn; /* File name in list */
+ hb_node_t *nptr; /* Current node */
+ unsigned long count; /* Number of files in list */
+ unsigned long cu; /* Current file number */
+ int back = 0;
+ job->of = dk3sf_fopen_app((job->kwnl)[36], (job->kwnl)[30], job->app);
+ if (job->of) {
+ back = 1;
+ /* xml */
+ fputs(hbchm_c8_kw[45], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ /* CONFIG */
+ fputs(hbchm_c8_kw[46], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ /* Files */
+ fputs(hbchm_c8_kw[48], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ count = 0UL;
+ cu = 0UL;
+ dk3sto_it_reset(job->i_files);
+ while (NULL != (fn = (dkChar const *)dk3sto_it_next(job->i_files))) {
+ count++;
+ }
+ dk3sto_it_reset(job->i_pnodes);
+ while (NULL != (nptr = (hb_node_t *)dk3sto_it_next(job->i_pnodes))) {
+ if (!(nptr->jumpnode)) {
+ if (hbhtml_create_output_filename(of,DK3_SIZEOF(of,dkChar),job,nptr)) {
+ if (!(dk3sto_it_find_like(job->i_files, of, 0))) {
+ count++;
+ }
+ }
+ }
+ }
+ fprintf(job->of, hbchm_c8_kw[72], count);
+ fputs(hbchm_c8_kw[0], job->of);
+ dk3sto_it_reset(job->i_files);
+ while (NULL != (fn = (dkChar const *)dk3sto_it_next(job->i_files))) {
+ fprintf(job->of, hbchm_c8_kw[73], cu++);
+ if (!(hbtool_write_text_utf(job, fn))) { back = 0; }
+ fputs(hbchm_c8_kw[74], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ }
+ dk3sto_it_reset(job->i_pnodes);
+ while (NULL != (nptr = (hb_node_t *)dk3sto_it_next(job->i_pnodes))) {
+ if (!(nptr->jumpnode)) {
+ if (hbhtml_create_output_filename(of,DK3_SIZEOF(of,dkChar),job,nptr)) {
+ if (!(dk3sto_it_find_like(job->i_files, of, 0))) {
+ fprintf(job->of, hbchm_c8_kw[73], cu++);
+ if (!(hbtool_write_text_utf(job, of))) { back = 0; }
+ fputs(hbchm_c8_kw[74], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ }
+ }
+ }
+ }
+ /* /Files */
+ fputs(hbchm_c8_kw[49], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ /* OtherFiles */
+ fputs(hbchm_c8_kw[50], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[52], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[51], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+
+ /* Windows */
+ fputs(hbchm_c8_kw[53], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[52], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[54], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+
+ /* MergeFiles */
+ fputs(hbchm_c8_kw[55], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[52], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[56], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+
+ /* Settings */
+ fputs(hbchm_c8_kw[57], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ if ((job->options) & HB_JOB_OPT_CREATE_INDEX) {
+ fputs(hbchm_c8_kw[59], job->of);
+ if (!(hbtool_write_text_utf(job, (job->kwnl)[29]))) { back = 0; }
+ fputs(hbchm_c8_kw[60], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ }
+ fputs(hbchm_c8_kw[61], job->of);
+ if (!(hbtool_write_text_utf(job, (job->kwnl)[28]))) { back = 0; }
+ fputs(hbchm_c8_kw[60], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[62], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[63], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[64], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[65], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[66], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[67], job->of);
+ if (job->rootnode) {
+ if ((job->rootnode)->title) {
+ if (!(hbtool_write_text_utf(job, (job->rootnode)->title))) { back = 0; }
+ }
+ }
+ fputs(hbchm_c8_kw[60], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[68], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[69], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[70], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[71], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ fputs(hbchm_c8_kw[58], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ /* /CONFIG */
+ fputs(hbchm_c8_kw[47], job->of);
+ fputs(hbchm_c8_kw[0], job->of);
+ if(!dk3sf_fclose_fn_app(job->of, (job->kwnl)[36], job->app)) { back = 0; }
+ } else {
+ }
+ return back;
+}
+
+
+
+int
+hbchm_write_project(hb_job_t *job)
+{
+ int haveindex; /* Flag: Must write index */
+ int back = 1;
+ $? "+ hbchm_write_project"
+ haveindex = hbchm_have_index_entries(job);
+ if(!hbchm_write_xml(job)) { back = 0; }
+ if(!hbchm_write_hhp(job, haveindex)) { back = 0; }
+ if(!hbchm_write_hhc(job)) { back = 0; }
+ if(haveindex) {
+ if(!hbchm_write_hhk(job)) { back = 0; }
+ } $? "- hbchm_write_project %d", back
+ return back;
+}
+
+