Skip to content

Commit 4f0b864

Browse files
committed
---
yaml --- r: 4985 b: refs/heads/master c: ccc68fc h: refs/heads/master i: 4983: 3a0940a v: v3
1 parent 9b9b207 commit 4f0b864

File tree

3 files changed

+24
-2
lines changed

3 files changed

+24
-2
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: b2408d57f034c0a448b60bf03254d8f73c0882db
2+
refs/heads/master: ccc68fc18b615561694650b25e665c257847cf67

trunk/src/lib/istr.rs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ index, rindex, find, starts_with, ends_with, substr, slice, split,
33
concat, connect, to_upper, replace, char_slice, trim_left, trim_right, trim,
44
unshift_char, shift_char, pop_char, push_char, is_utf8, from_chars, to_chars,
55
char_len, char_at, bytes, is_ascii, shift_byte, pop_byte, unsafe_from_byte,
6-
unsafe_from_bytes, from_char, char_range_at;
6+
unsafe_from_bytes, from_char, char_range_at, str_from_cstr;
77

88
export from_estr, to_estr, from_estrs, to_estrs;
99

@@ -461,4 +461,17 @@ fn trim_right(s: &istr) -> istr {
461461

462462
fn trim(s: &istr) -> istr {
463463
trim_left(trim_right(s))
464+
}
465+
466+
fn str_from_cstr(cstr: *u8) -> istr {
467+
let res = ~"";
468+
let start = cstr;
469+
let curr = start;
470+
let i = 0u;
471+
while *curr != 0u8 {
472+
push_byte(res, *curr);
473+
i += 1u;
474+
curr = ptr::offset(start, i);
475+
}
476+
ret res;
464477
}

trunk/src/test/stdtest/istr.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import std::istr;
2+
import std::vec;
23

34
#[test]
45
fn test_eq() {
@@ -255,4 +256,12 @@ fn unsafe_from_bytes() {
255256
let a = [65u8, 65u8, 65u8, 65u8, 65u8, 65u8, 65u8];
256257
let b = istr::unsafe_from_bytes(a);
257258
assert b == ~"AAAAAAA";
259+
}
260+
261+
#[test]
262+
fn str_from_cstr() {
263+
let a = [65u8, 65u8, 65u8, 65u8, 65u8, 65u8, 65u8, 0u8];
264+
let b = vec::to_ptr(a);
265+
let c = istr::str_from_cstr(b);
266+
assert c == ~"AAAAAAA";
258267
}

0 commit comments

Comments
 (0)