str8_substr returns copy of the string
This commit is contained in:
parent
80f20a06cd
commit
dcbda91730
@ -61,15 +61,15 @@ internal TinyArgs parse_args(Arena *arena, int argc, char *argv[]) {
|
|||||||
exit(TINY_EXIT_OBJ_NOT_EXIST);
|
exit(TINY_EXIT_OBJ_NOT_EXIST);
|
||||||
}
|
}
|
||||||
|
|
||||||
const Str8 basename = str8_substr(&args.obj, 0, args.obj.length - 4);
|
u64 substr_end = args.obj.length - 4;
|
||||||
|
|
||||||
args.diffuse = str8_copy(arena, &basename);
|
args.diffuse = str8_substr(arena, &args.obj, 0, substr_end);
|
||||||
str8_concat(arena, &args.diffuse, "_diffuse.pnm");
|
str8_concat(arena, &args.diffuse, "_diffuse.pnm");
|
||||||
if (!file_exists(&args.diffuse)) {
|
if (!file_exists(&args.diffuse)) {
|
||||||
args.diffuse = (Str8){0};
|
args.diffuse = (Str8){0};
|
||||||
}
|
}
|
||||||
|
|
||||||
args.nm_tangent = str8_copy(arena, &basename);
|
args.nm_tangent = str8_substr(arena, &args.obj, 0, substr_end);
|
||||||
str8_concat(arena, &args.nm_tangent, "_nm_tangent.pnm");
|
str8_concat(arena, &args.nm_tangent, "_nm_tangent.pnm");
|
||||||
if (!file_exists(&args.nm_tangent)) {
|
if (!file_exists(&args.nm_tangent)) {
|
||||||
args.nm_tangent = (Str8){0};
|
args.nm_tangent = (Str8){0};
|
||||||
|
@ -85,14 +85,16 @@ i32 str8_concat(Arena *arena, Str8 *dst, char *src) {
|
|||||||
return STR_OP_SUCEEDED;
|
return STR_OP_SUCEEDED;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Str8 str8_substr(const Str8 *str, u64 start, u64 count) {
|
Str8 str8_substr(Arena *arena, const Str8 *str, u64 start, u64 count) {
|
||||||
if (start > str->length || start + count > str->length) {
|
if (start > str->length || start + count > str->length) {
|
||||||
return (Str8){0};
|
return (Str8){0};
|
||||||
}
|
}
|
||||||
|
|
||||||
return (Str8){
|
Str8 tmp = {
|
||||||
.str = str->str + start,
|
.str = str->str + start,
|
||||||
.length = count,
|
.length = count,
|
||||||
.capacity = count,
|
.capacity = count,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
return str8_copy(arena, &tmp);
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,6 @@ struct str8 {
|
|||||||
Str8 str8(Arena *arena, char *str);
|
Str8 str8(Arena *arena, char *str);
|
||||||
Str8 str8_copy(Arena *arena, const Str8 *str);
|
Str8 str8_copy(Arena *arena, const Str8 *str);
|
||||||
i32 str8_concat(Arena *arena, Str8 *dst, char *src);
|
i32 str8_concat(Arena *arena, Str8 *dst, char *src);
|
||||||
const Str8 str8_substr(const Str8 *str, u64 start, u64 count);
|
Str8 str8_substr(Arena *arena, const Str8 *str, u64 start, u64 count);
|
||||||
|
|
||||||
#endif // !STR_H
|
#endif // !STR_H
|
||||||
|
Loading…
Reference in New Issue
Block a user