Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
4f64a07b
Commit
4f64a07b
authored
Feb 07, 2007
by
Peter Eisentraut
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add strlcat() from OpenBSD, to be used for replacing strncat and other
strange coding practices.
parent
5b706ba4
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
144 additions
and
7 deletions
+144
-7
configure
configure
+72
-1
configure.in
configure.in
+3
-3
src/bin/pg_config/pg_config.c
src/bin/pg_config/pg_config.c
+2
-2
src/include/pg_config.h.in
src/include/pg_config.h.in
+7
-0
src/include/port.h
src/include/port.h
+5
-1
src/port/strlcat.c
src/port/strlcat.c
+55
-0
No files found.
configure
View file @
4f64a07b
...
...
@@ -13973,6 +13973,76 @@ _ACEOF
fi
echo
"
$as_me
:
$LINENO
: checking whether strlcat is declared"
>
&5
echo
$ECHO_N
"checking whether strlcat is declared...
$ECHO_C
"
>
&6
if
test
"
${
ac_cv_have_decl_strlcat
+set
}
"
=
set
;
then
echo
$ECHO_N
"(cached)
$ECHO_C
"
>
&6
else
cat
>
conftest.
$ac_ext
<<
_ACEOF
/* confdefs.h. */
_ACEOF
cat
confdefs.h
>>
conftest.
$ac_ext
cat
>>
conftest.
$ac_ext
<<
_ACEOF
/* end confdefs.h. */
$ac_includes_default
int
main ()
{
#ifndef strlcat
char *p = (char *) strlcat;
#endif
;
return 0;
}
_ACEOF
rm
-f
conftest.
$ac_objext
if
{
(
eval echo
"
$as_me
:
$LINENO
:
\"
$ac_compile
\"
"
)
>
&5
(
eval
$ac_compile
)
2>conftest.er1
ac_status
=
$?
grep
-v
'^ *+'
conftest.er1
>
conftest.err
rm
-f
conftest.er1
cat
conftest.err
>
&5
echo
"
$as_me
:
$LINENO
:
\$
? =
$ac_status
"
>
&5
(
exit
$ac_status
)
;
}
&&
{
ac_try
=
'test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{
(
eval echo
"
$as_me
:
$LINENO
:
\"
$ac_try
\"
"
)
>
&5
(
eval
$ac_try
)
2>&5
ac_status
=
$?
echo
"
$as_me
:
$LINENO
:
\$
? =
$ac_status
"
>
&5
(
exit
$ac_status
)
;
}
;
}
&&
{
ac_try
=
'test -s conftest.$ac_objext'
{
(
eval echo
"
$as_me
:
$LINENO
:
\"
$ac_try
\"
"
)
>
&5
(
eval
$ac_try
)
2>&5
ac_status
=
$?
echo
"
$as_me
:
$LINENO
:
\$
? =
$ac_status
"
>
&5
(
exit
$ac_status
)
;
}
;
}
;
then
ac_cv_have_decl_strlcat
=
yes
else
echo
"
$as_me
: failed program was:"
>
&5
sed
's/^/| /'
conftest.
$ac_ext
>
&5
ac_cv_have_decl_strlcat
=
no
fi
rm
-f
conftest.err conftest.
$ac_objext
conftest.
$ac_ext
fi
echo
"
$as_me
:
$LINENO
: result:
$ac_cv_have_decl_strlcat
"
>
&5
echo
"
${
ECHO_T
}
$ac_cv_have_decl_strlcat
"
>
&6
if
test
$ac_cv_have_decl_strlcat
=
yes
;
then
cat
>>
confdefs.h
<<
_ACEOF
#define HAVE_DECL_STRLCAT 1
_ACEOF
else
cat
>>
confdefs.h
<<
_ACEOF
#define HAVE_DECL_STRLCAT 0
_ACEOF
fi
echo
"
$as_me
:
$LINENO
: checking whether strlcpy is declared"
>
&5
echo
$ECHO_N
"checking whether strlcpy is declared...
$ECHO_C
"
>
&6
if
test
"
${
ac_cv_have_decl_strlcpy
+set
}
"
=
set
;
then
...
...
@@ -14850,7 +14920,8 @@ LIBS=`echo "$LIBS" | sed -e 's/-ledit//g' -e 's/-lreadline//g'`
for
ac_func
in
crypt fseeko getopt getrusage inet_aton random rint srandom strdup strerror strlcpy strtol strtoul unsetenv
for
ac_func
in
crypt fseeko getopt getrusage inet_aton random rint srandom strdup strerror strlcat strlcpy strtol strtoul unsetenv
do
as_ac_var
=
`
echo
"ac_cv_func_
$ac_func
"
|
$as_tr_sh
`
echo
"
$as_me
:
$LINENO
: checking for
$ac_func
"
>
&5
...
...
configure.in
View file @
4f64a07b
dnl Process this file with autoconf to produce a configure script.
dnl $PostgreSQL: pgsql/configure.in,v 1.50
0 2007/02/03 02:43:38 momjian
Exp $
dnl $PostgreSQL: pgsql/configure.in,v 1.50
1 2007/02/07 00:28:54 petere
Exp $
dnl
dnl Developers, please strive to achieve this order:
dnl
...
...
@@ -905,7 +905,7 @@ AC_CHECK_FUNCS([cbrt dlopen fcvt fdatasync getpeereid getrlimit memmove poll pst
AC_CHECK_DECLS(fdatasync, [], [], [#include <unistd.h>])
AC_CHECK_DECLS(posix_fadvise, [], [], [#include <fcntl.h>])
AC_CHECK_DECLS(
strlcpy
)
AC_CHECK_DECLS(
[strlcat, strlcpy]
)
# This is probably only present on Darwin, but may as well check always
AC_CHECK_DECLS(F_FULLFSYNC, [], [], [#include <fcntl.h>])
...
...
@@ -1002,7 +1002,7 @@ fi
pgac_save_LIBS="$LIBS"
LIBS=`echo "$LIBS" | sed -e 's/-ledit//g' -e 's/-lreadline//g'`
AC_REPLACE_FUNCS([crypt fseeko getopt getrusage inet_aton random rint srandom strdup strerror strlcpy strtol strtoul unsetenv])
AC_REPLACE_FUNCS([crypt fseeko getopt getrusage inet_aton random rint srandom strdup strerror strlc
at strlc
py strtol strtoul unsetenv])
LIBS="$pgac_save_LIBS"
...
...
src/bin/pg_config/pg_config.c
View file @
4f64a07b
...
...
@@ -17,7 +17,7 @@
*
* Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group
*
* $PostgreSQL: pgsql/src/bin/pg_config/pg_config.c,v 1.2
3 2007/01/05 22:19:48 momjian
Exp $
* $PostgreSQL: pgsql/src/bin/pg_config/pg_config.c,v 1.2
4 2007/02/07 00:28:54 petere
Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -213,7 +213,7 @@ show_pgxs(bool all)
if
(
all
)
printf
(
"PGXS = "
);
get_pkglib_path
(
mypath
,
path
);
str
ncat
(
path
,
"/pgxs/src/makefiles/pgxs.mk"
,
MAXPGPATH
-
1
-
strlen
(
path
));
str
lcat
(
path
,
"/pgxs/src/makefiles/pgxs.mk"
,
sizeof
(
path
));
cleanup_path
(
path
);
printf
(
"%s
\n
"
,
path
);
}
...
...
src/include/pg_config.h.in
View file @
4f64a07b
...
...
@@ -87,6 +87,10 @@
don't. */
#undef HAVE_DECL_SNPRINTF
/* Define to 1 if you have the declaration of `strlcat', and to 0 if you
don't. */
#undef HAVE_DECL_STRLCAT
/* Define to 1 if you have the declaration of `strlcpy', and to 0 if you
don't. */
#undef HAVE_DECL_STRLCPY
...
...
@@ -389,6 +393,9 @@
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define to 1 if you have the `strlcat' function. */
#undef HAVE_STRLCAT
/* Define to 1 if you have the `strlcpy' function. */
#undef HAVE_STRLCPY
...
...
src/include/port.h
View file @
4f64a07b
...
...
@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $PostgreSQL: pgsql/src/include/port.h,v 1.1
09 2007/01/19 16:42:24 alvher
re Exp $
* $PostgreSQL: pgsql/src/include/port.h,v 1.1
10 2007/02/07 00:28:55 pete
re Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -343,6 +343,10 @@ extern int inet_aton(const char *cp, struct in_addr * addr);
extern
char
*
strdup
(
const
char
*
str
);
#endif
#if !HAVE_DECL_STRLCAT
extern
size_t
strlcat
(
char
*
dst
,
const
char
*
src
,
size_t
siz
);
#endif
#if !HAVE_DECL_STRLCPY
extern
size_t
strlcpy
(
char
*
dst
,
const
char
*
src
,
size_t
siz
);
#endif
...
...
src/port/strlcat.c
0 → 100644
View file @
4f64a07b
/* $OpenBSD: strlcat.c,v 1.13 2005/08/08 08:05:37 espie Exp $ */
/*
* Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#include "c.h"
/*
* Appends src to string dst of size siz (unlike strncat, siz is the
* full size of dst, not space left). At most siz-1 characters
* will be copied. Always NUL terminates (unless siz <= strlen(dst)).
* Returns strlen(src) + MIN(siz, strlen(initial dst)).
* If retval >= siz, truncation occurred.
*/
size_t
strlcat
(
char
*
dst
,
const
char
*
src
,
size_t
siz
)
{
char
*
d
=
dst
;
const
char
*
s
=
src
;
size_t
n
=
siz
;
size_t
dlen
;
/* Find the end of dst and adjust bytes left but don't go past end */
while
(
n
--
!=
0
&&
*
d
!=
'\0'
)
d
++
;
dlen
=
d
-
dst
;
n
=
siz
-
dlen
;
if
(
n
==
0
)
return
(
dlen
+
strlen
(
s
));
while
(
*
s
!=
'\0'
)
{
if
(
n
!=
1
)
{
*
d
++
=
*
s
;
n
--
;
}
s
++
;
}
*
d
=
'\0'
;
return
(
dlen
+
(
s
-
src
));
/* count does not include NUL */
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment