HTML_Generator/RB_HTML_Generate_Doc_Start [ Functions ]
NAME
RB_HTML_Generate_Doc_Start --
FUNCTION
Generate the first part of a HTML document. As far as ROBODoc is concerned a HTML document consists of three parts:
- The start of a document
- The body of a document
- The end of a document
SYNOPSIS
void RB_HTML_Generate_Doc_Start( FILE *dest_doc, char *src_name, char *name, char *dest_name, char *charset )
INPUTS
- dest_doc -- the output file.
- src_name -- The file or directoryname from which this document is generated.
- name -- The title for this document
- dest_name -- the name of the output file.
- charset -- the charset to be used for the file.
SOURCE
{ if ( course_of_action.do_headless ) { /* The user wants a headless document, so we skip everything * upto and until <BODY> */ } else { /* Append document type and title */ fprintf( dest_doc, "<?xml version=\"1.0\" encoding=\"%s\"?>\n", charset ? charset : DEFAULT_CHARSET ); fprintf( dest_doc, "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n" ); fprintf( dest_doc, " \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n" ); fprintf( dest_doc, "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n" ); fprintf( dest_doc, "<head>\n" ); fprintf( dest_doc, "<meta http-equiv=\"Content-Style-Type\" content=\"text/css\" />\n" ); /* TODO is charset still needed?? */ fprintf( dest_doc, "<meta http-equiv=\"Content-type\" content=\"text/html; charset=%s\" />\n", charset ? charset : DEFAULT_CHARSET ); RB_InsertCSS( dest_doc, dest_name ); fprintf( dest_doc, "<title>%s</title>\n", name ); /* append SGML-comment with document- and copyright-info. This code * ensures that every line has an own comment to avoid problems with * buggy browsers */ fprintf( dest_doc, "<!-- Source: %s -->\n", src_name ); if ( course_of_action.do_nogenwith ) { } else { static const char copyright_text[] = COMMENT_ROBODOC /* COMMENT_COPYRIGHT */ ; size_t i = 0; char previous_char = '\n'; char current_char = copyright_text[i]; while ( current_char ) { if ( previous_char == '\n' ) { fprintf( dest_doc, "<!-- " ); } if ( current_char == '\n' ) { fprintf( dest_doc, " -->" ); } else if ( ( current_char == '-' ) && ( previous_char == '-' ) ) { /* avoid "--" inside SGML-comment, and use "-_" instead; this * looks a bit strange, but one should still be able to figure * out what is meant when reading the output */ current_char = '_'; } fputc( current_char, dest_doc ); i += 1; previous_char = current_char; current_char = copyright_text[i]; } } /* append heading and start list of links to functions */ fprintf( dest_doc, "</head>\n" ); fprintf( dest_doc, "<body>\n" ); } // HTML_Generate_Div( dest_doc, "container" ); /* Generate document title if available (Thuffir) */ HTML_Generate_Div( dest_doc, "logo" ); fprintf( dest_doc, "<a name=\"robo_top_of_doc\">" ); if ( document_title ) RB_HTML_Generate_String( dest_doc, document_title ); fprintf( dest_doc, "</a>\n" ); HTML_Generate_Div_End( dest_doc, "logo" ); }