$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r70867 - branches/quickbook-dev/tools/quickbook/src
From: dnljms_at_[hidden]
Date: 2011-04-02 13:43:19
Author: danieljames
Date: 2011-04-02 13:43:18 EDT (Sat, 02 Apr 2011)
New Revision: 70867
URL: http://svn.boost.org/trac/boost/changeset/70867
Log:
Quickbook: Trying to clarify to myself the doc info stuff.
Text files modified: 
   branches/quickbook-dev/tools/quickbook/src/doc_info_actions.cpp |    63 +++++++++++++++++++++++++-------------- 
   1 files changed, 40 insertions(+), 23 deletions(-)
Modified: branches/quickbook-dev/tools/quickbook/src/doc_info_actions.cpp
==============================================================================
--- branches/quickbook-dev/tools/quickbook/src/doc_info_actions.cpp	(original)
+++ branches/quickbook-dev/tools/quickbook/src/doc_info_actions.cpp	2011-04-02 13:43:18 EDT (Sat, 02 Apr 2011)
@@ -72,6 +72,9 @@
     {
         // The doc_info in the file has been parsed. Here's what we'll do
         // *before* anything else.
+        //
+        // If there isn't a doc info block, then values will be empty, so most
+        // of the following code won't actually do anything.
 
         value_consumer values = actions.values.release();
 
@@ -122,38 +125,26 @@
         if (!id.empty())
             actions.doc_id = id.get_quickbook();
 
-        if (actions.doc_id.empty())
-            actions.doc_id = detail::make_identifier(actions.doc_title_qbk);
-        
-        if (dirname.empty() && actions.doc_type == "library") {
-            if (!id.empty()) {
-                dirname = id;
-            }
-            else {
-                dirname = qbk_bbk_value(actions.doc_id, doc_info_attributes::dirname);
-            }
-        }
+        // This is only meant to kick in for the main document (since in
+        // included documents, the id should already be set), but due to a
+        // bug in old versions the document id is reset when including files.
 
-        if (last_revision.empty())
+        if (actions.doc_id.empty())
         {
-            // default value for last-revision is now
-
-            char strdate[64];
-            strftime(
-                strdate, sizeof(strdate),
-                (debug_mode ?
-                    "DEBUG MODE Date: %Y/%m/%d %H:%M:%S $" :
-                    "$" /* prevent CVS substitution */ "Date: %Y/%m/%d %H:%M:%S $"),
-                current_gm_time
-            );
-            last_revision = qbk_bbk_value(strdate, doc_info_attributes::last_revision);
+            assert(qbk_version_n < 106 || !ignore_docinfo);
+            actions.doc_id = detail::make_identifier(actions.doc_title_qbk);
         }
 
         // if we're ignoring the document info, we're done.
+
         if (ignore_docinfo)
         {
             return;
         }
+        
+        // Make sure we really did have a document info block.
+        
+        assert(doc_title.check());
 
         // Quickbook version
 
@@ -196,6 +187,32 @@
             ++actions.error_count;
         }
 
+        // Set defaults for dirname + last_revision
+
+        if (dirname.empty() && actions.doc_type == "library") {
+            if (!id.empty()) {
+                dirname = id;
+            }
+            else {
+                dirname = qbk_bbk_value(actions.doc_id, doc_info_attributes::dirname);
+            }
+        }
+
+        if (last_revision.empty())
+        {
+            // default value for last-revision is now
+
+            char strdate[64];
+            strftime(
+                strdate, sizeof(strdate),
+                (debug_mode ?
+                    "DEBUG MODE Date: %Y/%m/%d %H:%M:%S $" :
+                    "$" /* prevent CVS substitution */ "Date: %Y/%m/%d %H:%M:%S $"),
+                current_gm_time
+            );
+            last_revision = qbk_bbk_value(strdate, doc_info_attributes::last_revision);
+        }
+
         // Warn about invalid fields
 
         if (actions.doc_type != "library")