1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
This patch is based on a revert of upstream commit
70b0c5867ad2fcf97ebb61c6ad922a4b7a6bc06d, adapted for use in the Debian package
by Peter Michael Green.
Index: tree-magic-mini/src/fdo_magic/ruleset.rs
===================================================================
--- tree-magic-mini.orig/src/fdo_magic/ruleset.rs
+++ tree-magic-mini/src/fdo_magic/ruleset.rs
@@ -1,14 +1,13 @@
use super::MagicRule;
use nom::{
- AsChar,
IResult,
- Parser,
bytes::complete::{is_not, tag, take, take_while},
+ character::is_digit,
combinator::{map, map_res, opt},
multi::many0,
number::complete::be_u16,
- sequence::{delimited, preceded, terminated},
+ sequence::{delimited, preceded, terminated, tuple},
};
use petgraph::prelude::*;
use std::collections::HashMap;
@@ -17,26 +16,26 @@ use std::str;
// Singular magic ruleset
fn magic_rules(input: &[u8]) -> IResult<&[u8], MagicRule<'_>> {
let int_or = |default| {
- map(take_while(AsChar::is_dec_digit), move |digits| {
+ map(take_while(is_digit), move |digits| {
str::from_utf8(digits).unwrap().parse().unwrap_or(default)
})
};
- let (input, (indent_level, start_off, val_len)) = (
+ let (input, (indent_level, start_off, val_len)) = tuple((
terminated(int_or(0), tag(">")),
terminated(int_or(0), tag("=")),
be_u16,
- ).parse(input)?;
+ ))(input)?;
let (input, (val, mask, _word_len, region_len)) = terminated(
- (
+ tuple((
take(val_len),
opt(preceded(tag("&"), take(val_len))),
opt(preceded(tag("~"), int_or(1))),
opt(preceded(tag("+"), int_or(0))),
- ),
+ )),
tag("\n"),
- ).parse(input)?;
+ )(input)?;
Ok((
input,
@@ -66,8 +65,8 @@ fn ruleset(input: &[u8]) -> IResult<&[u8
str::from_utf8,
);
- let magic_entry = (mime, many0(magic_rules));
- preceded(tag("MIME-Magic\0\n"), many0(magic_entry)).parse(input)
+ let magic_entry = tuple((mime, many0(magic_rules)));
+ preceded(tag("MIME-Magic\0\n"), many0(magic_entry))(input)
}
fn gen_graph(magic_rules: Vec<MagicRule<'_>>) -> DiGraph<MagicRule<'_>, u32> {
Index: tree-magic-mini/Cargo.toml
===================================================================
--- tree-magic-mini.orig/Cargo.toml
+++ tree-magic-mini/Cargo.toml
@@ -54,7 +54,7 @@ path = "src/lib.rs"
version = "2.0"
[dependencies.nom]
-version = "8.0"
+version = "7.1.3"
[dependencies.petgraph]
version = ">= 0.6.4, < 0.9"
|