/* This file is in the public domain. */ #include #include #include "panic.h" #define STR__INLINE #include "str.h" int str_equalss(STR a, STR b) { return((a.len == b.len) && !bcmp(a.data,b.data,a.len)); } int str_equalcC(ROSTR s, const char *c) { int cl; cl = strlen(c); return((s.len == cl) && !bcmp(s.data,c,cl)); } int str_equalsC(STR s, const char *c) { int cl; cl = strlen(c); return((s.len == cl) && !bcmp(s.data,c,cl)); } int str_equalcs(ROSTR a, STR b) { return((a.len == b.len) && !bcmp(a.data,b.data,a.len)); } int str_equalcc(ROSTR a, ROSTR b) { return((a.len == b.len) && !bcmp(a.data,b.data,a.len)); } int str_equalsb(STR a, const void *bd, int bl) { return((a.len == bl) && !bcmp(a.data,bd,bl)); } void free_str(STR s) { free(s.data); } STR str_copyro(ROSTR s) { void *t; if (s.data == 0) { if (s.len == 0) return(STRZERO); panic("length without data"); } t = malloc(s.len); bcopy(s.data,t,s.len); return(blk_to_str(t,s.len)); }