]> granicus.if.org Git - multimarkdown/commitdiff
FIXED: Use custom UUID code to minimize external dependencies
authorFletcher T. Penney <fletcher@fletcherpenney.net>
Mon, 13 Mar 2017 21:44:21 +0000 (17:44 -0400)
committerFletcher T. Penney <fletcher@fletcherpenney.net>
Mon, 13 Mar 2017 21:44:21 +0000 (17:44 -0400)
63 files changed:
CMakeLists.txt
QuickStart.epub
QuickStart.pdf
Sources/libMultiMarkdown/epub.c
Sources/libMultiMarkdown/uuid.c [new file with mode: 0644]
Sources/libMultiMarkdown/uuid.h [new file with mode: 0644]
tests/CriticMarkup/CriticMarkup.html
tests/CriticMarkup/CriticMarkup.htmla
tests/CriticMarkup/CriticMarkup.htmlr
tests/MMD6Tests/Abbreviations.html
tests/MMD6Tests/Advanced Emph and Strong.html
tests/MMD6Tests/Advanced Fenced Code Blocks.html
tests/MMD6Tests/Advanced Headers.html
tests/MMD6Tests/Amps and Angles.html
tests/MMD6Tests/Automatic Links.html
tests/MMD6Tests/Basic Blocks.html
tests/MMD6Tests/Basic Lists.html
tests/MMD6Tests/Blockquotes.html
tests/MMD6Tests/Citations.html
tests/MMD6Tests/Code Spans.html
tests/MMD6Tests/CriticMarkup.html
tests/MMD6Tests/Cross-References.html
tests/MMD6Tests/Definition Lists.html
tests/MMD6Tests/Dutch.html
tests/MMD6Tests/Edge Cases 2.html
tests/MMD6Tests/Edge Cases.html
tests/MMD6Tests/Emph and Strong Star.html
tests/MMD6Tests/Emph and Strong UL.html
tests/MMD6Tests/English.html
tests/MMD6Tests/Escapes.html
tests/MMD6Tests/Fenced Code Blocks.html
tests/MMD6Tests/Figure Images.html
tests/MMD6Tests/French.html
tests/MMD6Tests/German Guillemets.html
tests/MMD6Tests/German.html
tests/MMD6Tests/Glossaries.html
tests/MMD6Tests/HTML Blocks.html
tests/MMD6Tests/HTML Inline.html
tests/MMD6Tests/Headers.html
tests/MMD6Tests/Horizontal Rules.html
tests/MMD6Tests/Indented Code Blocks.html
tests/MMD6Tests/Inline Footnotes.html
tests/MMD6Tests/Inline Images.html
tests/MMD6Tests/Inline Links.html
tests/MMD6Tests/Integrated.html
tests/MMD6Tests/Linebreaks.html
tests/MMD6Tests/Link Attributes.html
tests/MMD6Tests/Math.html
tests/MMD6Tests/Metadata.html
tests/MMD6Tests/Nested Definition Lists.html
tests/MMD6Tests/Nested Lists.html
tests/MMD6Tests/Reference Footnotes.html
tests/MMD6Tests/Reference Images.html
tests/MMD6Tests/Reference Links.html
tests/MMD6Tests/Setext Headers.html
tests/MMD6Tests/Smart Quotes.html
tests/MMD6Tests/Special Characters.html
tests/MMD6Tests/Superscript.html
tests/MMD6Tests/Swedish.html
tests/MMD6Tests/Table of Contents.html
tests/MMD6Tests/Tables.html
tests/MMD6Tests/Transclusion.html
tests/MMD6Tests/Variables.html

index f9e01d53c852003d92792bbe58d32aa3b849e71d..7a118aa3f4458e4659fea5617f56c87a39bc3336 100644 (file)
@@ -193,6 +193,7 @@ set(src_files
        Sources/libMultiMarkdown/token.c
        Sources/libMultiMarkdown/token_pairs.c
        Sources/libMultiMarkdown/transclude.c
+       Sources/libMultiMarkdown/uuid.c
        Sources/libMultiMarkdown/writer.c
 )
 
@@ -219,6 +220,7 @@ set(header_files
        Sources/libMultiMarkdown/token_pairs.h
        Sources/libMultiMarkdown/transclude.h
        Sources/libMultiMarkdown/uthash.h
+       Sources/libMultiMarkdown/uuid.h
        Sources/libMultiMarkdown/writer.h
 )
 
index d2da72e6f3f0e44bbc22d7acab5ab73afe7726c6..c18779b93c7bc9485eec60eb50e0ddf4f6e0e26c 100644 (file)
Binary files a/QuickStart.epub and b/QuickStart.epub differ
index 72752fe97600bc99a11b2c4031675aa7551d24b5..6926d2906aabfc6e810c6f618c0ce30b8f685547 100644 (file)
Binary files a/QuickStart.pdf and b/QuickStart.pdf differ
index 910bc40a4941801de960c2df7b8d4f8ca240289d..7c8477487b516fc59b0314c91e861bea342b8f5b 100644 (file)
 #include <stdlib.h>
 #include <sys/stat.h>
 #include <time.h>
-#include <uuid/uuid.h>
+
 
 #include "d_string.h"
 #include "epub.h"
 #include "html.h"
 #include "miniz.h"
 #include "mmd.h"
+#include "uuid.h"
 #include "writer.h"
 
 
@@ -97,6 +98,22 @@ char * epub_container_xml(void) {
 }
 
 
+// http://stackoverflow.com/questions/322938/recommended-way-to-initialize-srand
+// http://www.concentric.net/~Ttwang/tech/inthash.htm
+unsigned long mix(unsigned long a, unsigned long b, unsigned long c)
+{
+    a=a-b;  a=a-c;  a=a^(c >> 13);
+    b=b-c;  b=b-a;  b=b^(a << 8);
+    c=c-a;  c=c-b;  c=c^(b >> 13);
+    a=a-b;  a=a-c;  a=a^(c >> 12);
+    b=b-c;  b=b-a;  b=b^(a << 16);
+    c=c-a;  c=c-b;  c=c^(b >> 5);
+    a=a-b;  a=a-c;  a=a^(c >> 3);
+    b=b-c;  b=b-a;  b=b^(a << 10);
+    c=c-a;  c=c-b;  c=c^(b >> 15);
+    return c;
+}
+
 char * epub_package_document(scratch_pad * scratch) {
        DString * out = d_string_new("");
 
@@ -117,12 +134,16 @@ char * epub_package_document(scratch_pad * scratch) {
                print_const("</dc:identifier>\n");
        } else {
                print_const("<dc:identifier id=\"pub-id\">urn:uuid:");
-               uuid_t u;
-               uuid_generate_random(u);
-               char id[36] = "";
-               uuid_unparse_lower(u, id);
+               // Seed random number generator
+               // This is not a "cryptographically secure" random seed,
+               // but good enough for an EPUB id....
+               unsigned long seed = mix(clock(), time(NULL), clock());
+               srand(seed);
+
+               char * id = uuid_new();
                print(id);
                print_const("</dc:identifier>\n");
+               free(id);
        }
 
        // Title
diff --git a/Sources/libMultiMarkdown/uuid.c b/Sources/libMultiMarkdown/uuid.c
new file mode 100644 (file)
index 0000000..0088653
--- /dev/null
@@ -0,0 +1,109 @@
+/**
+
+       MultiMarkdown -- Lightweight markup processor to produce HTML, LaTeX, and more.
+
+       @file uuid.c
+
+       @brief 
+
+
+       @author Fletcher T. Penney
+       @bug    
+
+**/
+
+/*
+
+       Copyright © 2016 - 2017 Fletcher T. Penney.
+
+
+       The `MultiMarkdown 6` project is released under the MIT License..
+       
+       GLibFacade.c and GLibFacade.h are from the MultiMarkdown v4 project:
+       
+               https://github.com/fletcher/MultiMarkdown-4/
+       
+       MMD 4 is released under both the MIT License and GPL.
+       
+       
+       CuTest is released under the zlib/libpng license. See CuTest.c for the
+       text of the license.
+       
+       uthash library:
+               Copyright (c) 2005-2016, Troy D. Hanson
+       
+               Licensed under BSD Revised license
+       
+       miniz library:
+               Copyright 2013-2014 RAD Game Tools and Valve Software
+               Copyright 2010-2014 Rich Geldreich and Tenacious Software LLC
+       
+               Licensed under the MIT license
+       
+       
+       ## The MIT License ##
+       
+       Permission is hereby granted, free of charge, to any person obtaining
+       a copy of this software and associated documentation files (the
+       "Software"), to deal in the Software without restriction, including
+       without limitation the rights to use, copy, modify, merge, publish,
+       distribute, sublicense, and/or sell copies of the Software, and to
+       permit persons to whom the Software is furnished to do so, subject to
+       the following conditions:
+       
+       The above copyright notice and this permission notice shall be
+       included in all copies or substantial portions of the Software.
+       
+       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+       
+
+*/
+
+
+#include <limits.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "uuid.h"
+
+
+#define SETBIT(a, n) (a[n/CHAR_BIT] |= (1<<(n % CHAR_BIT)))
+#define CLEARBIT(a, n) (a[n/CHAR_BIT] &= ~(1<<(n % CHAR_BIT)))
+
+char * uuid_string_from_bits(unsigned char * raw);
+
+char * uuid_new(void) {
+       unsigned char raw[16];
+
+       // Get 128 bits of random goodness
+       for (int i = 0; i < 16; ++i)
+       {
+               raw[i] = rand() % 256;
+       }
+
+//     Need to set certain bits for v4 compliance
+       CLEARBIT(raw, 52);
+       CLEARBIT(raw, 53);
+       SETBIT(raw, 54);
+       CLEARBIT(raw, 55);
+       CLEARBIT(raw, 70);
+       SETBIT(raw, 71);
+
+       return uuid_string_from_bits(raw);
+}
+
+char * uuid_string_from_bits(unsigned char * raw) {
+       char * result = malloc(37);
+
+       sprintf(result, "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
+               raw[0], raw[1], raw[2], raw[3], raw[4], raw[5], raw[6], raw[7],
+               raw[8], raw[9], raw[10], raw[11], raw[12], raw[13], raw[14], raw[15] );
+
+       return result;
+}
diff --git a/Sources/libMultiMarkdown/uuid.h b/Sources/libMultiMarkdown/uuid.h
new file mode 100644 (file)
index 0000000..32bcacd
--- /dev/null
@@ -0,0 +1,75 @@
+/**
+
+       MultiMarkdown -- Lightweight markup processor to produce HTML, LaTeX, and more.
+
+       @file uuid.h
+
+       @brief 
+
+
+       @author Fletcher T. Penney
+       @bug    
+
+**/
+
+/*
+
+       Copyright © 2016 - 2017 Fletcher T. Penney.
+
+
+       The `MultiMarkdown 6` project is released under the MIT License..
+       
+       GLibFacade.c and GLibFacade.h are from the MultiMarkdown v4 project:
+       
+               https://github.com/fletcher/MultiMarkdown-4/
+       
+       MMD 4 is released under both the MIT License and GPL.
+       
+       
+       CuTest is released under the zlib/libpng license. See CuTest.c for the
+       text of the license.
+       
+       uthash library:
+               Copyright (c) 2005-2016, Troy D. Hanson
+       
+               Licensed under BSD Revised license
+       
+       miniz library:
+               Copyright 2013-2014 RAD Game Tools and Valve Software
+               Copyright 2010-2014 Rich Geldreich and Tenacious Software LLC
+       
+               Licensed under the MIT license
+       
+       
+       ## The MIT License ##
+       
+       Permission is hereby granted, free of charge, to any person obtaining
+       a copy of this software and associated documentation files (the
+       "Software"), to deal in the Software without restriction, including
+       without limitation the rights to use, copy, modify, merge, publish,
+       distribute, sublicense, and/or sell copies of the Software, and to
+       permit persons to whom the Software is furnished to do so, subject to
+       the following conditions:
+       
+       The above copyright notice and this permission notice shall be
+       included in all copies or substantial portions of the Software.
+       
+       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+       
+
+*/
+
+
+#ifndef UUID_MULTIMARKDOWN_H
+#define UUID_MULTIMARKDOWN_H
+
+char * uuid_new(void);
+char * uuid_string_from_bits(unsigned char * raw);
+
+#endif
index 3b3f98b3d82fbfe95a9e15fbde5629807693c63d..d1799670aaeb1ce4f1e9f78e16030921c488a69b 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Extended CriticMarkup</title>
index 2bb18d0d4317fba542d885f03b8a3c7ee8fb763e..d4e30615c0baa48f0827090a815f0bc3a7edd97b 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Extended CriticMarkup</title>
index 0331bc31822d846374807c8911eaeadd9af9ddac..773c00c456cd99a65ce60a0fa68a818c92fd904f 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Extended CriticMarkup</title>
index e590c36a579b5069a6268b2cabfd62b2108763b2..b969a37ac8f54c803316921ba3090f7649b3364b 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Abbreviations</title>
index 0ba1384cd81412552e05e2c9cd34be7e5c864859..98201f45c2280418dd281dc9cf8d42bdea5ff249 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Advanced Emph and Strong</title>
index a9e53aaef7950f9cdda0fe7f8b5e7b47d1aa2cf8..165b157d2f9f58612736a9d8b811c16b108a3565 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Advanced Fenced Code Blocks</title>
index ad7b052b3a269294f09491f2c8ce8f5aecc7f597..3e0dc7a8224538b9fcf21b2879c90331e4154f21 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Advanced Headers</title>
index bea8995eafa24ef0008654d8583674b13d7f8745..c540daed14e46521961530df0bb86e5aecaf430b 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Amps and Angles</title>
index f53121246e6ed63a0b73f65b7708dca81c523ed4..5728c5db57b0a79c156c08f0427487eb0dbf89e4 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Automatic Links</title>
index 0d1ac8e0c826d8998eb2e10a7c317567f681e47d..d8fa6c4da7717962fa65639c4c35e598384e7949 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Basic Blocks</title>
index 8d1f82b09749d7888d78e133cb3767d834ef48c8..0fd925dfea703ac37e746296a7eb3bcb6c5a77a7 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Basic Lists</title>
index f38ee77de17e93fa4b2cfa2e6b21e51d64cf10cc..63a323c1599ccc67eb28ddce980426f644f18802 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Blockquotes</title>
index 329d7679af7ce1e7476c593e4a32fec93b590a83..b41cdac41c1b7e5df0f0155cf5a2bab6624e775a 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Citations</title>
index 020eef179a4fc6e00810ddee40570cdd2556e6c6..48094c8d6507dde802b1c2d2bbf0ac4f199b6736 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Code Spans</title>
index 78c5a1f024be6966fca642806601224c9350fcbc..291f80115026543de08370d0f8af2fe205eed5f1 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>CriticMarkup</title>
index 6f18b4d999e9880c572fe0b870ad49084ebd804b..ab8e1e59e1d7c413de0e2ae94d3127f4167179a5 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Cross-References</title>
index 33853c2af6ffb15a97d6cd6298331560fe5edf5e..76ea0bc03a45e760cb0720bfcd3b9dd9624eb9e1 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Definition Lists</title>
index 8b6987022943783b2222d1b0236b1c8987bbbabe..1b4a239c38979a39b336075c2357cf1557e0b898 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="nl">
 <head>
        <meta charset="utf-8"/>
        <title>Dutch</title>
index b5dc80215c52ebf709911e7568afa69b5cfafb1e..24e9b6cffa32bd9d2e3dcdca86b84a8041a785e5 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Edge Cases 2</title>
index d55494531c8330f9478d74cbb62bb0a3391b4e0a..174d55d8a2c1f030e1b96a5a0c48de77b1eb27fc 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Edge Cases</title>
index 07b8527a413773a57bbea04b843526e5db64d6b7..398dd274127259735e27b1108f72eb0ac28f1d1a 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Emph and Strong Star</title>
index 9abe857a77999b637a234007fa59172db1c7fcb2..155d28fa3ae125412d470fdaa8277c4e1ae5acdb 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Emph and Strong UL</title>
index 32eb6c25bc54f683c26988fc077e133b7b9c870d..877491008f85c1031b73080d06467f482ef9f9f4 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>English</title>
index f9266d3de830f9d358647c7ff43f2c643643e3ac..6c6d413827988fe801623f5c927409791bc64a69 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Escapes</title>
index 70384da21ccd7b11819816e1372bf8b0e510d152..7e8bcb5af3797e67c478f04ac8d787451a2d8218 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Fenced Code Blocks</title>
index e572298f97a5e3234c78ee592ed441d3fc46926b..8bd46c32debb4238b6c9841c26f0c5127f27be33 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Figure Images</title>
index 7eae9e012d7f7422083eb2d7089e5e037fd3ccc5..08afd2e09bf6c921c47c94e2fa660701e7be552b 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="fr">
 <head>
        <meta charset="utf-8"/>
        <title>French</title>
index 4e73cb7db39a7b2c965e19958677bdc2c93e32ca..d09d68b15e6a6c377691995795ae55a3ca5998af 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="de">
 <head>
        <meta charset="utf-8"/>
        <title>German Guillemets</title>
index da60f1c704dac6981cb7184055d69b4335d067a4..bb895e7600a19422d0dcafc85bd1a5763379a31a 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="de">
 <head>
        <meta charset="utf-8"/>
        <title>German</title>
index ae3b96e1901117ffad684ee90eab892cb5c2eabf..0608494a0392acbabffc3790e595d62fc391ce2c 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Glossaries</title>
index 980a997ccf003727b3affa44d59a654ec49c9188..a797acd9feef3811fafd298b1848dcf826f5d183 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>HTML Blocks</title>
index 14956edfa6ae7127d1628799fc5c3dc86ded6c18..d9ab963ff42bcc2377c1ea40d9cbb7a9ed0dd8d9 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>HTML Inline</title>
index bc6e8985df4fa10a304da2b1cf8bf6c67e88ff0e..7a9a8ca2ef86d747183ae611e1f8dff071e049ca 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Headers</title>
index c18e0e27d6a275cb5b2ecc89df570a7a31500cd1..c18d58317670707f182f096b447b5affe3c2fc50 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Horizontal Rules</title>
index d2092f3eee00e51960b6c3700eaa01c7e893d559..fa3043cf5d01a4742ca6c40fbe855a4e4df4c622 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Indented Code Blocks</title>
index 189c67a4ac30f5651c969122dcb6398bc79e06b3..9c07f175b136e9fb837a6f84a195765927c0566e 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Inline Footnotes</title>
index 36352717fa51516b31cffcded3f3d4fd368ea69d..85ba389195471600173aed4649a1cee36c6707c3 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Inline Images</title>
index b3fad88f39138ee925b7018896c307e9f83f60a3..8e5bdbae5187a9bb8ec17e00608097255a995c55 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Inline Links</title>
index 913ad41970beeee83a730e37533b35b03f9e414b..4b12ab6d6fbfe5e516867cbd631dc4e48309371f 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Integrated</title>
index 693fc16ef5ba9a9369d62aa2b0cfbf4c495da33e..e46588d24b9ae350a716d8d2ee1b1f597aaca9c3 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Linebreaks</title>
index 08eef5a83fa3b9ca5f02c483787b2f96f3e50784..4ce49287fb6f55f7240621453b44ee4bb90e2e3b 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Link Attributes</title>
index 09a4d244719fdd842e3253b90b7474d60259dc02..1408abf2cf79ffbaebd371b4dfd180f18ce3a5a7 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Math</title>
index 7d65067c10ddcbb6a35b449bd6a4bf090ff493d5..24b55ef279f73db83338266e40dfc1afcd8c3023 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>*foo* &quot;bar&quot;</title>
index 5e6d261c6ea700eca73bcb8c8ca12ee900c55d4c..c5bdc76751bfdd5d433f622ae0632c79178b2114 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Nested Definition Lists</title>
index 153a3ebc4ff4709dc5d688a7fc9240ace9c9b621..ff276dd6b20ddd21a5a894d883cbeba1db168295 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Nested Lists</title>
index dd4736fb55f99e2337654d9750581132ab77c9bb..23c93a69b7deecceb51da948063da02c14ead716 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Reference Footnotes</title>
index bc9e9ed9d1b58c6be79c70aeb95bad56c175f5aa..369ea8ceb2c97c9010e87428dfc308b1126c0336 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Reference Images</title>
index b9038a540b212299c4a94fa9a598fce7c4e945e2..2735271d123b03f15c52ff5e5d14c711e9f91900 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Reference Links</title>
index b2c4478d223705068ce49b83fc0a8d3c8eb4ed37..54f272e0b77c5975c34ac031060878cc941b881e 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Setext Headers</title>
index f203b1f38d4f1baa64703ddb10688c6f4078bb5a..cf49903579a2a6ca19b5f19ed2a4e36f2ecba921 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Smart Quotes</title>
index d60f8236e0ca95b00b5e36e14a63b994016e624b..a236713d9e790d062f54f8ce6d9180cabf381ad0 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Special Characters</title>
index f7fa0845cb15763463c955766d1eb31901dc8663..92f03095f993f839c18add7762bc5ac51c67a86c 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Superscript</title>
index 6f143e3508ad8d0b32a42922a50806b3113fa85e..56d52fa9787b6c415bd228369c543feba8ccc1ca 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="sv">
 <head>
        <meta charset="utf-8"/>
        <title>Swedish</title>
index f524d2af08bb001670423b36265d306fbeebc299..b03d0822b5962dd9859fe87bdc42d421f1999b69 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Table of Contents</title>
index e4eae863900ebd97ce8cab1b79aeb587e3e9f168..7450dbf0bddaf686bedc648366a8cfba27418a66 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Tables</title>
index 5c73fe031df22ddd4efd19c7322c2df96a924612..27b38194b35818c821476a65c1336994e8300662 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Transclusion</title>
index dd96c851f78f34e94be4e0c5d3f11c5754b25415..6dc0e42a077597eb2ad56b32d30e3a2d5cea5bf7 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
        <meta charset="utf-8"/>
        <title>Variables</title>