Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit996b203

Browse files
committed
Add strlcpy() to the set of functions supported by src/port/ when not
available directly on the platform. Per discussion, this function issufficiently widely recognized to be treated as standard.
1 parent1d45168 commit996b203

File tree

5 files changed

+80
-5
lines changed

5 files changed

+80
-5
lines changed

‎configure

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14505,7 +14505,8 @@ fi
1450514505

1450614506

1450714507

14508-
for ac_func in crypt fseeko getopt getrusage inet_aton random rint srandom strdup strerror strtol strtoul unsetenv
14508+
14509+
for ac_func in crypt fseeko getopt getrusage inet_aton random rint srandom strdup strerror strlcpy strtol strtoul unsetenv
1450914510
do
1451014511
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
1451114512
echo "$as_me:$LINENO: checking for $ac_func" >&5

‎configure.in

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
dnl Process this file with autoconf to produce a configure script.
2-
dnl $PostgreSQL: pgsql/configure.in,v 1.475 2006/09/23 01:33:32 pgsql Exp $
2+
dnl $PostgreSQL: pgsql/configure.in,v 1.476 2006/09/27 16:29:45 tgl Exp $
33
dnl
44
dnl Developers, please strive to achieve this order:
55
dnl
@@ -958,7 +958,7 @@ else
958958
AC_CHECK_FUNCS([fpclass fp_class fp_class_d class], [break])
959959
fi
960960

961-
AC_REPLACE_FUNCS([crypt fseeko getopt getrusage inet_aton random rint srandom strdup strerror strtol strtoul unsetenv])
961+
AC_REPLACE_FUNCS([crypt fseeko getopt getrusage inet_aton random rint srandom strdup strerrorstrlcpystrtol strtoul unsetenv])
962962

963963
# System's version of getaddrinfo(), if any, may be used only if we found
964964
# a definition for struct addrinfo; see notes in src/include/getaddrinfo.h.

‎src/include/pg_config.h.in

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,9 @@
375375
/* Define to 1 if you have the <string.h> header file. */
376376
#undef HAVE_STRING_H
377377

378+
/* Define to 1 if you have the `strlcpy' function. */
379+
#undef HAVE_STRLCPY
380+
378381
/* Define to 1 if you have the `strtol' function. */
379382
#undef HAVE_STRTOL
380383

‎src/include/port.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group
77
* Portions Copyright (c) 1994, Regents of the University of California
88
*
9-
* $PostgreSQL: pgsql/src/include/port.h,v 1.99 2006/09/22 21:39:58 tgl Exp $
9+
* $PostgreSQL: pgsql/src/include/port.h,v 1.100 2006/09/27 16:29:46 tgl Exp $
1010
*
1111
*-------------------------------------------------------------------------
1212
*/
@@ -329,7 +329,11 @@ extern intinet_aton(const char *cp, struct in_addr * addr);
329329
#endif
330330

331331
#ifndefHAVE_STRDUP
332-
externchar*strdup(charconst*);
332+
externchar*strdup(constchar*str);
333+
#endif
334+
335+
#ifndefHAVE_STRLCPY
336+
externsize_tstrlcpy(char*dst,constchar*src,size_tsiz);
333337
#endif
334338

335339
#ifndefHAVE_RANDOM

‎src/port/strlcpy.c

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
/*-------------------------------------------------------------------------
2+
*
3+
* strlcpy.c
4+
* strncpy done right
5+
*
6+
* Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group
7+
*
8+
*
9+
* IDENTIFICATION
10+
* $PostgreSQL: pgsql/src/port/strlcpy.c,v 1.1 2006/09/27 16:29:46 tgl Exp $
11+
*
12+
* This file was taken from OpenBSD and is used on platforms that don't
13+
* provide strlcpy(). The OpenBSD copyright terms follow.
14+
*-------------------------------------------------------------------------
15+
*/
16+
17+
/*$OpenBSD: strlcpy.c,v 1.11 2006/05/05 15:27:38 millert Exp $*/
18+
19+
/*
20+
* Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
21+
*
22+
* Permission to use, copy, modify, and distribute this software for any
23+
* purpose with or without fee is hereby granted, provided that the above
24+
* copyright notice and this permission notice appear in all copies.
25+
*
26+
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
27+
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
28+
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
29+
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
30+
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
31+
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
32+
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
33+
*/
34+
35+
#include"c.h"
36+
37+
38+
/*
39+
* Copy src to string dst of size siz. At most siz-1 characters
40+
* will be copied. Always NUL terminates (unless siz == 0).
41+
* Returns strlen(src); if retval >= siz, truncation occurred.
42+
*/
43+
size_t
44+
strlcpy(char*dst,constchar*src,size_tsiz)
45+
{
46+
char*d=dst;
47+
constchar*s=src;
48+
size_tn=siz;
49+
50+
/* Copy as many bytes as will fit */
51+
if (n!=0) {
52+
while (--n!=0) {
53+
if ((*d++=*s++)=='\0')
54+
break;
55+
}
56+
}
57+
58+
/* Not enough room in dst, add NUL and traverse rest of src */
59+
if (n==0) {
60+
if (siz!=0)
61+
*d='\0';/* NUL-terminate dst */
62+
while (*s++)
63+
;
64+
}
65+
66+
return(s-src-1);/* count does not include NUL */
67+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp