198ee79f4SPrasad Joshi 298ee79f4SPrasad Joshi /* user defined headers */ 3*ec52d504SLai Jiangshan #include <kvm/util.h> 498ee79f4SPrasad Joshi #include <kvm/strbuf.h> 598ee79f4SPrasad Joshi 698ee79f4SPrasad Joshi int prefixcmp(const char *str, const char *prefix) 798ee79f4SPrasad Joshi { 898ee79f4SPrasad Joshi for (; ; str++, prefix++) { 998ee79f4SPrasad Joshi if (!*prefix) 1098ee79f4SPrasad Joshi return 0; 1198ee79f4SPrasad Joshi else if (*str != *prefix) 1298ee79f4SPrasad Joshi return (unsigned char)*prefix - (unsigned char)*str; 1398ee79f4SPrasad Joshi } 1498ee79f4SPrasad Joshi } 15*ec52d504SLai Jiangshan 16*ec52d504SLai Jiangshan /** 17*ec52d504SLai Jiangshan * strlcat - Append a length-limited, %NUL-terminated string to another 18*ec52d504SLai Jiangshan * @dest: The string to be appended to 19*ec52d504SLai Jiangshan * @src: The string to append to it 20*ec52d504SLai Jiangshan * @count: The size of the destination buffer. 21*ec52d504SLai Jiangshan */ 22*ec52d504SLai Jiangshan size_t strlcat(char *dest, const char *src, size_t count) 23*ec52d504SLai Jiangshan { 24*ec52d504SLai Jiangshan size_t dsize = strlen(dest); 25*ec52d504SLai Jiangshan size_t len = strlen(src); 26*ec52d504SLai Jiangshan size_t res = dsize + len; 27*ec52d504SLai Jiangshan 28*ec52d504SLai Jiangshan DIE_IF(dsize >= count); 29*ec52d504SLai Jiangshan 30*ec52d504SLai Jiangshan dest += dsize; 31*ec52d504SLai Jiangshan count -= dsize; 32*ec52d504SLai Jiangshan if (len >= count) 33*ec52d504SLai Jiangshan len = count - 1; 34*ec52d504SLai Jiangshan 35*ec52d504SLai Jiangshan memcpy(dest, src, len); 36*ec52d504SLai Jiangshan dest[len] = 0; 37*ec52d504SLai Jiangshan 38*ec52d504SLai Jiangshan return res; 39*ec52d504SLai Jiangshan } 40