diff --git a/src/librustdoc/html/markdown.rs b/src/librustdoc/html/markdown.rs
index dd754e580729f..c98a54e451475 100644
--- a/src/librustdoc/html/markdown.rs
+++ b/src/librustdoc/html/markdown.rs
@@ -24,7 +24,6 @@
//! // ... something using html
//! ```
-#![allow(dead_code)]
#![allow(non_camel_case_types)]
use libc;
@@ -51,7 +50,7 @@ pub struct Markdown<'a>(pub &'a str);
pub struct MarkdownWithToc<'a>(pub &'a str);
const DEF_OUNIT: libc::size_t = 64;
-const HOEDOWN_EXT_NO_INTRA_EMPHASIS: libc::c_uint = 1 << 10;
+const HOEDOWN_EXT_NO_INTRA_EMPHASIS: libc::c_uint = 1 << 11;
const HOEDOWN_EXT_TABLES: libc::c_uint = 1 << 0;
const HOEDOWN_EXT_FENCED_CODE: libc::c_uint = 1 << 1;
const HOEDOWN_EXT_AUTOLINK: libc::c_uint = 1 << 3;
@@ -65,52 +64,63 @@ const HOEDOWN_EXTENSIONS: libc::c_uint =
HOEDOWN_EXT_STRIKETHROUGH | HOEDOWN_EXT_SUPERSCRIPT |
HOEDOWN_EXT_FOOTNOTES;
-type hoedown_document = libc::c_void; // this is opaque to us
+enum hoedown_document {}
type blockcodefn = extern "C" fn(*mut hoedown_buffer, *const hoedown_buffer,
- *const hoedown_buffer, *mut libc::c_void);
+ *const hoedown_buffer, *const hoedown_renderer_data);
+
+type blockquotefn = extern "C" fn(*mut hoedown_buffer, *const hoedown_buffer,
+ *const hoedown_renderer_data);
type headerfn = extern "C" fn(*mut hoedown_buffer, *const hoedown_buffer,
- libc::c_int, *mut libc::c_void);
+ libc::c_int, *const hoedown_renderer_data);
+
+type blockhtmlfn = extern "C" fn(*mut hoedown_buffer, *const hoedown_buffer,
+ *const hoedown_renderer_data);
type codespanfn = extern "C" fn(*mut hoedown_buffer, *const hoedown_buffer,
- *mut libc::c_void) -> libc::c_int;
+ *const hoedown_renderer_data) -> libc::c_int;
type linkfn = extern "C" fn (*mut hoedown_buffer, *const hoedown_buffer,
*const hoedown_buffer, *const hoedown_buffer,
- *mut libc::c_void) -> libc::c_int;
+ *const hoedown_renderer_data) -> libc::c_int;
+
+type entityfn = extern "C" fn (*mut hoedown_buffer, *const hoedown_buffer,
+ *const hoedown_renderer_data);
type normaltextfn = extern "C" fn(*mut hoedown_buffer, *const hoedown_buffer,
- *mut libc::c_void);
+ *const hoedown_renderer_data);
+
+#[repr(C)]
+struct hoedown_renderer_data {
+ opaque: *mut libc::c_void,
+}
#[repr(C)]
struct hoedown_renderer {
opaque: *mut libc::c_void,
blockcode: Option,
- blockquote: Option,
- blockhtml: Option,
+ blockquote: Option,
header: Option,
- other_block_level_callbacks: [libc::size_t; 9],
+
+ other_block_level_callbacks: [libc::size_t; 11],
+
+ blockhtml: Option,
/* span level callbacks - NULL or return 0 prints the span verbatim */
autolink: libc::size_t, // unused
codespan: Option,
other_span_level_callbacks_1: [libc::size_t; 7],
link: Option,
- other_span_level_callbacks_2: [libc::size_t; 5],
- // hoedown will add `math` callback here, but we use an old version of it.
+ other_span_level_callbacks_2: [libc::size_t; 6],
/* low level callbacks - NULL copies input directly into the output */
- entity: Option,
+ entity: Option,
normal_text: Option,
/* header and footer */
- doc_header: Option,
- doc_footer: Option,
+ other_callbacks: [libc::size_t; 2],
}
#[repr(C)]
@@ -120,7 +130,7 @@ struct hoedown_html_renderer_state {
flags: libc::c_uint,
link_attributes: Option,
+ *const hoedown_renderer_data)>,
}
#[repr(C)]
@@ -133,7 +143,7 @@ struct html_toc_data {
struct MyOpaque {
dfltblk: extern "C" fn(*mut hoedown_buffer, *const hoedown_buffer,
- *const hoedown_buffer, *mut libc::c_void),
+ *const hoedown_buffer, *const hoedown_renderer_data),
toc_builder: Option,
}
@@ -153,7 +163,7 @@ extern {
-> *mut hoedown_renderer;
fn hoedown_html_renderer_free(renderer: *mut hoedown_renderer);
- fn hoedown_document_new(rndr: *mut hoedown_renderer,
+ fn hoedown_document_new(rndr: *const hoedown_renderer,
extensions: libc::c_uint,
max_nesting: libc::size_t) -> *mut hoedown_document;
fn hoedown_document_render(doc: *mut hoedown_document,
@@ -212,11 +222,11 @@ thread_local!(pub static PLAYGROUND_KRATE: RefCell