Skip to content

Commit 534dfa4

Browse files
tarkahjoebonrichie
authored andcommitted
Small fixes
1 parent e4ad120 commit 534dfa4

File tree

6 files changed

+26
-18
lines changed

6 files changed

+26
-18
lines changed

crates/stone/src/payload/meta.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ pub enum StonePayloadMetaDependency {
4848
#[strum(serialize = "sysbinary")]
4949
SystemBinary,
5050

51-
/// An emul32-compatible pkgconfig .pc dependency (lib32/*.pc)
51+
/// An emul32-compatible pkgconfig .pc dependency (lib32*.pc)
5252
PkgConfig32,
5353
}
5454

crates/stone/src/read/mod.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -237,14 +237,14 @@ impl StoneDecodedPayload {
237237
)?,
238238
}),
239239
StonePayloadKind::Content => {
240-
let offset = reader.stream_position()?;
241-
242240
// Skip past, these are read by user later
243-
reader.seek(SeekFrom::Current(header.stored_size as i64))?;
241+
let new_offset = reader.seek(SeekFrom::Current(header.stored_size as i64))?;
244242

245243
StoneDecodedPayload::Content(StonePayload {
246244
header,
247-
body: StonePayloadContent { offset },
245+
body: StonePayloadContent {
246+
offset: (new_offset as i64 - header.stored_size as i64) as u64,
247+
},
248248
})
249249
}
250250
StonePayloadKind::Dumb => unimplemented!("??"),

libstone/cbindgen.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ prefix_with_name = true
1212
rename_variants = "ScreamingSnakeCase"
1313

1414
[export]
15-
include = []
15+
include = ["STONE_HEADER_SIZE"]
1616
exclude = []
1717

1818
[export.rename]

libstone/examples/read.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ size_t read_shim(void *fptr, char *buf, size_t n) {
330330
return fread(buf, 1, n, fptr);
331331
}
332332

333-
uint64_t seek_shim(void *fptr, int64_t offset, StoneSeekFrom from) {
333+
int64_t seek_shim(void *fptr, int64_t offset, StoneSeekFrom from) {
334334
fseek(fptr, offset, from);
335335
return ftell(fptr);
336336
}

libstone/src/lib.rs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ pub use self::payload::{
2626

2727
mod payload;
2828

29+
pub const STONE_HEADER_SIZE: usize = 32;
30+
2931
pub type StoneReader<'a> = stone::StoneReader<StoneReadImpl<'a>>;
3032
pub type StonePayloadContentReader<'a> = stone::StonePayloadContentReader<'a, StoneReadImpl<'a>>;
3133

@@ -115,13 +117,13 @@ enum StoneSeekFrom {
115117
#[repr(C)]
116118
pub struct StoneReadVTable {
117119
read: Option<unsafe extern "C" fn(*mut c_void, *mut c_char, usize) -> usize>,
118-
seek: Option<unsafe extern "C" fn(*mut c_void, i64, StoneSeekFrom) -> u64>,
120+
seek: Option<unsafe extern "C" fn(*mut c_void, i64, StoneSeekFrom) -> i64>,
119121
}
120122

121123
pub struct StoneReadShim {
122124
data: *mut c_void,
123125
read: unsafe extern "C" fn(*mut c_void, *mut c_char, usize) -> usize,
124-
seek: unsafe extern "C" fn(*mut c_void, i64, StoneSeekFrom) -> u64,
126+
seek: unsafe extern "C" fn(*mut c_void, i64, StoneSeekFrom) -> i64,
125127
}
126128

127129
impl Read for StoneReadShim {
@@ -138,7 +140,13 @@ impl Seek for StoneReadShim {
138140
std::io::SeekFrom::End(i) => (StoneSeekFrom::End, i),
139141
};
140142

141-
unsafe { Ok((self.seek)(self.data, offset, from)) }
143+
let ret = unsafe { (self.seek)(self.data, offset, from) };
144+
145+
if ret < 0 {
146+
Err(std::io::Error::new(std::io::ErrorKind::Other, ret.to_string()))
147+
} else {
148+
Ok(ret as u64)
149+
}
142150
}
143151
}
144152

libstone/src/payload.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@ impl StonePayload {
2525
return None;
2626
}
2727

28-
self.next_record += 1;
29-
3028
let payload = self.decoded.layout()?;
3129
let record = payload.body.get(self.next_record)?;
3230

31+
self.next_record += 1;
32+
3333
Some(record.into())
3434
}
3535

@@ -38,11 +38,11 @@ impl StonePayload {
3838
return None;
3939
}
4040

41-
self.next_record += 1;
42-
4341
let payload = self.decoded.meta()?;
4442
let record = payload.body.get(self.next_record)?;
4543

44+
self.next_record += 1;
45+
4646
Some(record.into())
4747
}
4848

@@ -51,11 +51,11 @@ impl StonePayload {
5151
return None;
5252
}
5353

54-
self.next_record += 1;
55-
5654
let payload = self.decoded.index()?;
5755
let record = payload.body.get(self.next_record)?;
5856

57+
self.next_record += 1;
58+
5959
Some(record.into())
6060
}
6161

@@ -64,11 +64,11 @@ impl StonePayload {
6464
return None;
6565
}
6666

67-
self.next_record += 1;
68-
6967
let payload = self.decoded.attributes()?;
7068
let record = payload.body.get(self.next_record)?;
7169

70+
self.next_record += 1;
71+
7272
Some(record.into())
7373
}
7474
}

0 commit comments

Comments
 (0)