1/* vi: set sw=4 ts=4: */ 2/* 3 * Utility routines. 4 * 5 * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org> 6 * 7 * Licensed under GPLv2 or later, see file LICENSE in this source tree. 8 */ 9#include "libbb.h" 10 11/* Like strncpy but make sure the resulting string is always 0 terminated. */ 12char* FAST_FUNC safe_strncpy(char *dst, const char *src, size_t size) 13{ 14 if (!size) return dst; 15 dst[--size] = '\0'; 16 return strncpy(dst, src, size); 17} 18 19/* Like strcpy but can copy overlapping strings. */ 20void FAST_FUNC overlapping_strcpy(char *dst, const char *src) 21{ 22 /* Cheap optimization for dst == src case - 23 * better to have it here than in many callers. 24 */ 25 if (dst != src) { 26 while ((*dst = *src) != '\0') { 27 dst++; 28 src++; 29 } 30 } 31} 32