⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lt__strl.c

📁 MPI stands for the Message Passing Interface. Written by the MPI Forum (a large committee comprising
💻 C
字号:
/* lt__strl.c -- size-bounded string copying and concatenation   Copyright (C) 2004 Free Software Foundation, Inc.   Written by Bob Friesenhahn, 2004   NOTE: The canonical source of this file is maintained with the   GNU Libtool package.  Report bugs to bug-libtool@gnu.org.GNU Libltdl is free software; you can redistribute it and/ormodify it under the terms of the GNU Lesser General PublicLicense as published by the Free Software Foundation; eitherversion 2 of the License, or (at your option) any later version.As a special exception to the GNU Lesser General Public License,if you distribute this file as part of a program or library thatis built using GNU Libtool, you may include this file under thesame distribution terms that you use for the rest of that program.GNU Libltdl is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU Lesser General Public License for more details.You should have received a copy of the GNU Lesser General PublicLicense along with GNU Libltdl; see the file COPYING.LIB.  If not, acopy can be downloaded from  http://www.gnu.org/licenses/lgpl.html,or obtained by writing to the Free Software Foundation, Inc.,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.*/#include <assert.h>#include <string.h>#include "lt__strl.h"/* lt_strlcat appends the NULL-terminated string src to the end of dst. It will append at most dstsize - strlen(dst) - 1 bytes, NULL-terminating the result. The total length of the string which would have been created given sufficient buffer size (may be longer than dstsize) is returned.  This function substitutes for strlcat() which is available under NetBSD, FreeBSD and Solaris 9. Buffer overflow can be checked as follows:   if (lt_strlcat(dst, src, dstsize) >= dstsize)     return -1;*/#if !defined(HAVE_STRLCAT)size_tlt_strlcat(char *dst, const char *src, const size_t dstsize){  size_t length;  char *p;  const char *q;  assert(dst != NULL);  assert(src != (const char *) NULL);  assert(dstsize >= 1);  length=strlen(dst);  /*    Copy remaining characters from src while constraining length to    size - 1.  */  for ( p = dst + length, q = src;        (*q != 0) && (length < dstsize - 1) ;        length++, p++, q++ )    *p = *q;  dst[length]='\0';  /*    Add remaining length of src to length.  */  while (*q++)    length++;  return length;}#endif /* !defined(HAVE_STRLCAT) *//*  lt_strlcpy copies up to dstsize - 1 characters from the NULL-terminated  string src to dst, NULL-terminating the result. The total length of  the string which would have been created given sufficient buffer  size (may be longer than dstsize) is returned. This function  substitutes for strlcpy() which is available under OpenBSD, FreeBSD  and Solaris 9.  Buffer overflow can be checked as  follows:    if (lt_strlcpy(dst, src, dstsize) >= dstsize)      return -1;*/#if !defined(HAVE_STRLCPY)size_tlt_strlcpy(char *dst, const char *src, const size_t dstsize){  size_t length=0;  char *p;  const char *q;  assert(dst != NULL);  assert(src != (const char *) NULL);  assert(dstsize >= 1);  /*    Copy src to dst within bounds of size-1.  */  for ( p=dst, q=src, length=0 ;        (*q != 0) && (length < dstsize-1) ;        length++, p++, q++ )    *p = *q;  dst[length]='\0';  /*    Add remaining length of src to length.  */  while (*q++)    length++;  return length;}#endif /* !defined(HAVE_STRLCPY) */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -