Skip to content

Commit 108327a

Browse files
committed
Update dependencies and handle quick-xml api changes
1 parent 42750f0 commit 108327a

File tree

3 files changed

+39
-39
lines changed

3 files changed

+39
-39
lines changed

Cargo.lock

Lines changed: 18 additions & 18 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ description = "Fast converter from XML to PostgreSQL dump format"
77
publish = false
88

99
[dependencies]
10-
quick-xml = "0.23"
10+
quick-xml = "0.28"
1111
yaml-rust = "0.4"
1212
regex = "1"
1313
lazy_static = "1"

src/main.rs

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -545,7 +545,7 @@ fn main() {
545545
let mut deferred = Vec::new();
546546
let start = Instant::now();
547547
'main: loop { // Main loop over the XML nodes
548-
let event = state.reader.read_event(&mut buf).unwrap_or_else(|e| fatalerr!("Error: failed to parse XML at position {}: {}", state.reader.buffer_position(), e));
548+
let event = state.reader.read_event_into(&mut buf).unwrap_or_else(|e| fatalerr!("Error: failed to parse XML at position {}: {}", state.reader.buffer_position(), e));
549549
loop { // Repeat loop to be able to process a node twice
550550
state.step = process_event(&event, &mut state);
551551
match state.step {
@@ -624,7 +624,7 @@ fn process_event(event: &Event, mut state: &mut State) -> Step {
624624
Event::Start(ref e) => {
625625
if state.step != Step::Repeat {
626626
state.path.push('/');
627-
state.path.push_str(state.reader.decode(e.name()).unwrap_or_else(|err| fatalerr!("Error: failed to decode XML tag '{}': {}", String::from_utf8_lossy(e.name()), err)));
627+
state.path.push_str(&state.reader.decoder().decode(e.name().as_ref()).unwrap_or_else(|err| fatalerr!("Error: failed to decode XML tag '{}': {}", String::from_utf8_lossy(e.name().as_ref()), err)));
628628
}
629629
if let Some(path) = &state.deferred {
630630
if state.path.starts_with(path) { return Step::Defer; }
@@ -645,13 +645,13 @@ fn process_event(event: &Event, mut state: &mut State) -> Step {
645645
return Step::Next;
646646
}
647647
else if state.xmltotext {
648-
state.text.push_str(&format!("<{}>", &e.unescape_and_decode(&state.reader).unwrap_or_else(|err| fatalerr!("Error: failed to decode XML tag '{}': {}", String::from_utf8_lossy(e.name()), err))));
648+
state.text.push_str(&format!("<{}>", state.reader.decoder().decode(e.name().as_ref()).unwrap_or_else(|err| fatalerr!("Error: failed to decode XML tag '{}': {}", String::from_utf8_lossy(e.name().as_ref()), err))));
649649
return Step::Next;
650650
}
651651
else if state.gmltoewkb {
652-
match state.reader.decode(e.name()) {
652+
match state.reader.decoder().decode(e.name().as_ref()) {
653653
Err(_) => (),
654-
Ok(tag) => match tag {
654+
Ok(tag) => match tag.as_ref() {
655655
"gml:Point" => {
656656
state.gmlcoll.push(Geometry::new(1));
657657
state.gmlcoll.last_mut().unwrap().rings.push(Vec::new());
@@ -675,10 +675,11 @@ fn process_event(event: &Event, mut state: &mut State) -> Step {
675675
match res {
676676
Err(_) => (),
677677
Ok(attr) => {
678-
let key = state.reader.decode(attr.key);
679-
match key {
680-
Ok("srsName") => {
681-
let mut value = String::from(state.reader.decode(&attr.value).unwrap_or_else(|err| fatalerr!("Error: failed to decode XML attribute '{}': {}", String::from_utf8_lossy(&attr.value), err)));
678+
let key = state.reader.decoder().decode(attr.key.as_ref());
679+
if key.is_err() { continue; }
680+
match key.unwrap().as_ref() {
681+
"srsName" => {
682+
let mut value = String::from(state.reader.decoder().decode(&attr.value).unwrap_or_else(|err| fatalerr!("Error: failed to decode XML attribute '{}': {}", String::from_utf8_lossy(&attr.value), err)));
682683
if let Some(i) = value.rfind("::") {
683684
value = value.split_off(i+2);
684685
}
@@ -689,8 +690,8 @@ fn process_event(event: &Event, mut state: &mut State) -> Step {
689690
Err(_) => if !state.settings.hush_warning { eprintln!("Warning: invalid srsName {} in GML", value); }
690691
}
691692
},
692-
Ok("srsDimension") => {
693-
let value = state.reader.decode(&attr.value).unwrap_or_else(|err| fatalerr!("Error: failed to decode XML attribute '{}': {}", String::from_utf8_lossy(&attr.value), err));
693+
"srsDimension" => {
694+
let value = state.reader.decoder().decode(&attr.value).unwrap_or_else(|err| fatalerr!("Error: failed to decode XML attribute '{}': {}", String::from_utf8_lossy(&attr.value), err));
694695
match value.parse::<u8>() {
695696
Ok(int) => {
696697
if let Some(geom) = state.gmlcoll.last_mut() { geom.dims = int };
@@ -733,18 +734,18 @@ fn process_event(event: &Event, mut state: &mut State) -> Step {
733734
if let Some(request) = table.columns[i].attr {
734735
for res in e.attributes() {
735736
if let Ok(attr) = res {
736-
if let Ok(key) = state.reader.decode(attr.key) {
737+
if let Ok(key) = state.reader.decoder().decode(attr.key.as_ref()) {
737738
if key == request {
738-
if let Ok(value) = state.reader.decode(&attr.value) {
739+
if let Ok(value) = state.reader.decoder().decode(&attr.value) {
739740
if !table.columns[i].value.borrow().is_empty() {
740741
if !allow_iteration(&table.columns[i], &state.settings) { break; }
741742
if let Some("last") = table.columns[i].aggr { table.columns[i].value.borrow_mut().clear(); }
742743
}
743-
if i == 0 { table.lastid.borrow_mut().push_str(value); }
744+
if i == 0 { table.lastid.borrow_mut().push_str(&value); }
744745
if let (Some(s), Some(r)) = (table.columns[i].find, table.columns[i].replace) {
745746
table.columns[i].value.borrow_mut().push_str(&value.replace(s, r));
746747
}
747-
else { table.columns[i].value.borrow_mut().push_str(value); }
748+
else { table.columns[i].value.borrow_mut().push_str(&value); }
748749
}
749750
else if !state.settings.hush_warning { eprintln!("Warning: failed to decode attribute {} for column {}", request, table.columns[i].name); }
750751
}
@@ -781,12 +782,12 @@ fn process_event(event: &Event, mut state: &mut State) -> Step {
781782
}
782783
if state.filtered || state.skipped { return Step::Next; }
783784
if state.xmltotext {
784-
state.text.push_str(&e.unescape_and_decode(&state.reader).unwrap_or_else(|err| fatalerr!("Error: failed to decode XML text node '{}': {}", String::from_utf8_lossy(e), err)));
785+
state.text.push_str(&e.unescape().unwrap_or_else(|err| fatalerr!("Error: failed to decode XML text node '{}': {}", String::from_utf8_lossy(e), err)));
785786
return Step::Next;
786787
}
787788
else if state.gmltoewkb {
788789
if state.gmlpos {
789-
let value = String::from(&e.unescape_and_decode(&state.reader).unwrap_or_else(|err| fatalerr!("Error: failed to decode XML gmlpos '{}': {}", String::from_utf8_lossy(e), err)));
790+
let value = String::from(e.unescape().unwrap_or_else(|err| fatalerr!("Error: failed to decode XML gmlpos '{}': {}", String::from_utf8_lossy(e), err)));
790791
for pos in value.split(' ') {
791792
state.gmlcoll.last_mut().unwrap().rings.last_mut().unwrap().push(fast_float::parse(pos).unwrap_or_else(|err| fatalerr!("Error: failed to parse GML pos '{}' into float: {}", pos, err)));
792793
}
@@ -800,10 +801,9 @@ fn process_event(event: &Event, mut state: &mut State) -> Step {
800801
if !allow_iteration(&table.columns[i], &state.settings) { return Step::Next; }
801802
if let Some("last") = table.columns[i].aggr { table.columns[i].value.borrow_mut().clear(); }
802803
}
803-
let unescaped = e.unescaped().unwrap_or_else(|err| fatalerr!("Error: failed to unescape XML text node '{}': {}", String::from_utf8_lossy(e), err));
804-
let decoded = state.reader.decode(&unescaped).unwrap_or_else(|err| fatalerr!("Error: failed to decode XML text node '{}': {}", String::from_utf8_lossy(e), err));
804+
let decoded = e.unescape().unwrap_or_else(|err| fatalerr!("Error: failed to decode XML text node '{}': {}", String::from_utf8_lossy(e), err));
805805
if table.columns[i].trim {
806-
let trimmed = state.trimre.replace_all(decoded, " ");
806+
let trimmed = state.trimre.replace_all(&decoded, " ");
807807
table.columns[i].value.borrow_mut().push_str(&trimmed.cow_replace("\\", "\\\\").cow_replace("\t", "\\t"));
808808
}
809809
else {

0 commit comments

Comments
 (0)