/***********************************************************************1* *2* This software is part of the ast package *3* Copyright (c) 1985-2011 AT&T Intellectual Property *4* and is licensed under the *5* Eclipse Public License, Version 1.0 *6* by AT&T Intellectual Property *7* *8* A copy of the License is available at *9* http://www.eclipse.org/org/documents/epl-v10.html *10* (with md5 checksum b35adb5213ca9657e911e9befb180842) *11* *12* Information and Software Systems Research *13* AT&T Research *14* Florham Park NJ *15* *16* Glenn Fowler <[email protected]> *17* David Korn <[email protected]> *18* Phong Vo <[email protected]> *19* *20***********************************************************************/21#pragma prototyped22/*23* strlcat implementation24*/2526#define strlcat ______strlcat2728#include <ast.h>2930#undef strlcat3132#undef _def_map_ast33#include <ast_map.h>3435#if _lib_strlcat3637NoN(strlcat)3839#else4041/*42* append t onto s limiting total size of s to n43* s 0 terminated if n>044* min(n,strlen(s))+strlen(t) returned45*/4647#if defined(__EXPORT__)48#define extern __EXPORT__49#endif5051extern size_t52strlcat(register char* s, register const char* t, register size_t n)53{54register size_t m;55const char* o = t;5657if (m = n)58{59while (n && *s)60{61n--;62s++;63}64m -= n;65if (n)66do67{68if (!--n)69{70*s = 0;71break;72}73} while (*s++ = *t++);74else75*s = 0;76}77if (!n)78while (*t++);79return (t - o) + m - 1;80}8182#endif838485