Skip to content

Commit 7b593c2

Browse files
committed
cleanup decompression helpers
1 parent 8b81848 commit 7b593c2

File tree

1 file changed

+38
-34
lines changed

1 file changed

+38
-34
lines changed

test-libbz2-rs-sys/src/lib.rs

Lines changed: 38 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -262,38 +262,40 @@ pub unsafe fn decompress_c(
262262
bzfree: None,
263263
opaque: std::ptr::null_mut::<libc::c_void>(),
264264
};
265-
let mut ret: libc::c_int;
266265
if dest.is_null() || dest_len.is_null() || source.is_null() {
267-
return -(2 as libc::c_int);
266+
return BZ_PARAM_ERROR;
268267
}
269268
strm.bzalloc = None;
270269
strm.bzfree = None;
271270
strm.opaque = std::ptr::null_mut::<libc::c_void>();
272271
unsafe {
273-
ret = BZ2_bzDecompressInit(&mut strm, 0, 0);
274-
if ret != 0 as libc::c_int {
272+
let ret = BZ2_bzDecompressInit(&mut strm, 0, 0);
273+
if ret != 0 {
275274
return ret;
276275
}
277276
strm.next_in = source as *mut libc::c_char;
278277
strm.next_out = dest.cast::<core::ffi::c_char>();
279278
strm.avail_in = source_len;
280279
strm.avail_out = *dest_len;
281-
ret = BZ2_bzDecompress(&mut strm);
282-
if ret == 0 as libc::c_int {
283-
if strm.avail_out > 0 as libc::c_int as libc::c_uint {
280+
match BZ2_bzDecompress(&mut strm) {
281+
BZ_OK => {
282+
if strm.avail_out > 0 {
283+
BZ2_bzDecompressEnd(&mut strm);
284+
BZ_UNEXPECTED_EOF
285+
} else {
286+
BZ2_bzDecompressEnd(&mut strm);
287+
BZ_OUTBUFF_FULL
288+
}
289+
}
290+
BZ_STREAM_END => {
291+
*dest_len = (*dest_len).wrapping_sub(strm.avail_out);
284292
BZ2_bzDecompressEnd(&mut strm);
285-
-(7 as libc::c_int)
286-
} else {
293+
BZ_OK
294+
}
295+
ret => {
287296
BZ2_bzDecompressEnd(&mut strm);
288-
-(8 as libc::c_int)
297+
ret
289298
}
290-
} else if ret != 4 as libc::c_int {
291-
BZ2_bzDecompressEnd(&mut strm);
292-
return ret;
293-
} else {
294-
*dest_len = (*dest_len).wrapping_sub(strm.avail_out);
295-
BZ2_bzDecompressEnd(&mut strm);
296-
return 0 as libc::c_int;
297299
}
298300
}
299301
}
@@ -320,38 +322,40 @@ pub unsafe fn decompress_rs(
320322
bzfree: None,
321323
opaque: std::ptr::null_mut::<libc::c_void>(),
322324
};
323-
let mut ret: libc::c_int;
324325
if dest.is_null() || dest_len.is_null() || source.is_null() {
325-
return -(2 as libc::c_int);
326+
return BZ_PARAM_ERROR;
326327
}
327328
strm.bzalloc = None;
328329
strm.bzfree = None;
329330
strm.opaque = std::ptr::null_mut::<libc::c_void>();
330331
unsafe {
331-
ret = BZ2_bzDecompressInit(&mut strm, 0, 0);
332-
if ret != 0 as libc::c_int {
332+
let ret = BZ2_bzDecompressInit(&mut strm, 0, 0);
333+
if ret != 0 {
333334
return ret;
334335
}
335336
strm.next_in = source as *mut libc::c_char;
336337
strm.next_out = dest.cast::<core::ffi::c_char>();
337338
strm.avail_in = source_len;
338339
strm.avail_out = *dest_len;
339-
ret = BZ2_bzDecompress(&mut strm);
340-
if ret == 0 as libc::c_int {
341-
if strm.avail_out > 0 as libc::c_int as libc::c_uint {
340+
match BZ2_bzDecompress(&mut strm) {
341+
BZ_OK => {
342+
if strm.avail_out > 0 {
343+
BZ2_bzDecompressEnd(&mut strm);
344+
BZ_UNEXPECTED_EOF
345+
} else {
346+
BZ2_bzDecompressEnd(&mut strm);
347+
BZ_OUTBUFF_FULL
348+
}
349+
}
350+
BZ_STREAM_END => {
351+
*dest_len = (*dest_len).wrapping_sub(strm.avail_out);
342352
BZ2_bzDecompressEnd(&mut strm);
343-
-(7 as libc::c_int)
344-
} else {
353+
BZ_OK
354+
}
355+
ret => {
345356
BZ2_bzDecompressEnd(&mut strm);
346-
-(8 as libc::c_int)
357+
ret
347358
}
348-
} else if ret != 4 as libc::c_int {
349-
BZ2_bzDecompressEnd(&mut strm);
350-
return ret;
351-
} else {
352-
*dest_len = (*dest_len).wrapping_sub(strm.avail_out);
353-
BZ2_bzDecompressEnd(&mut strm);
354-
return 0 as libc::c_int;
355359
}
356360
}
357361
}

0 commit comments

Comments
 (0)