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 10#include "libbb.h" 11 12/* Like strncpy but make sure the resulting string is always 0 terminated. */ 13char* FAST_FUNC safe_strncpy(char *dst, const char *src, size_t size) 14{ 15 if (!size) return dst; 16 dst[--size] = '\0'; 17 return strncpy(dst, src, size); 18} 19 20/* Like strcpy but can copy overlapping strings. */ 21void FAST_FUNC overlapping_strcpy(char *dst, const char *src) 22{ 23 /* Cheap optimization for dst == src case - 24 * better to have it here than in many callers. 25 */ 26 if (dst != src) { 27 while ((*dst = *src) != '\0') { 28 dst++; 29 src++; 30 } 31 } 32} 33