From: "Dmitry V. Levin" <ldv@altlinux.org>
To: ALT Devel discussion list <devel@lists.altlinux.org>
Subject: Re: [devel] Что это? Переопределение функций?
Date: Mon, 31 Jul 2017 22:30:40 +0300
Message-ID: <20170731193039.GA9100@altlinux.org> (raw)
In-Reply-To: <382cf736-040a-ea18-4404-8835b2e26ec1@gmail.com>
[-- Attachment #1.1: Type: text/plain, Size: 1540 bytes --]
On Mon, Jul 31, 2017 at 09:56:02PM +0300, Дмитрий Ханжин wrote:
> 31.07.2017 13:52, Dmitry V. Levin пишет:
> > Hi,
> >
> > Текущее состояние по добавлению strlcpy и strlcat в glibc:
> > https://sourceware.org/ml/libc-alpha/2017-06/msg00703.html
> > На данный момент остался только один человек, препятствующий принятию
> > этого патча. Ну что же, подождём ещё немного.
> >
>
> Вот что мне ответили:
>
> > Thanks for your comment!
> > If we modify the prototype declaration will it then not conflict with other distributions?
> > __THROW is a preprocesor symbol which not all compilers may have?
> > Similar for __nonnull.
> > The declarations we have now originate from OpenBSD/FreeBSD.
> > ALT Linux wants to improve on them and so introduces differences?
> > Does ALT Linux have a preprocessor symbol by which we can identify it?
> > Is there a way we can avoid the ALT Linux declaration from string.h?
> > Could you perhaps attach the output of g++ -E /usr/include/string.h ?
> > What would be harmless is if you add a extern "C" linkage specification.
> > Would that suffice? Probably not.
> > What does the ALT Linux team say?
> > Sorry for all the questions.
>
> Прокомментируйте, пожалуйста, я так глубоко не интересовался.
Апстрим не в теме, и, судя по коду, не скоро будет в теме.
Попробуйте с приложенным патчем, я его не пробовал компилировать,
но, полагаю, что он поможет. Не забудьте перегенерить configure.
> Ссылку выше прочитал, но тоже ничего не понял. :-(
Жаль.
--
ldv
[-- Attachment #1.2: 0001-Do-not-override-strlcpy-and-strlcat-provided-by-the-.patch --]
[-- Type: text/x-patch, Size: 3122 bytes --]
From 2939af61a1e92f7f03950a57f74abaa5bcd0ac07 Mon Sep 17 00:00:00 2001
From: "Dmitry V. Levin" <ldv@altlinux.org>
Date: Mon, 31 Jul 2017 19:17:17 +0000
Subject: [PATCH] Do not override strlcpy and strlcat provided by the OS
---
configure.ac | 2 +-
src/base.h | 5 +++++
src/misc.cc | 7 +++++++
3 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index fe9176e..b004fd2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -119,7 +119,7 @@ if test x$cross_compling != xyes ; then :; AC_FUNC_MALLOC fi
AC_FUNC_MMAP
if test x$cross_compling != xyes ; then :; AC_FUNC_REALLOC fi
AC_FUNC_STRNLEN
-AC_CHECK_FUNCS([dup2 getcwd gethostbyname gethostname gettimeofday mblen memchr memmove memset mkdir nl_langinfo putenv select setlocale socket strcasecmp strchr strcspn strdup strerror strncasecmp strrchr strspn strstr strtol sysinfo uname abort wordexp])
+AC_CHECK_FUNCS([dup2 getcwd gethostbyname gethostname gettimeofday mblen memchr memmove memset mkdir nl_langinfo putenv select setlocale socket strcasecmp strchr strcspn strdup strerror strlcpy strlcat strncasecmp strrchr strspn strstr strtol sysinfo uname abort wordexp])
AC_CHECK_FUNCS([gettimeofday putenv select socket strtol strtoul basename])
AC_CHECK_FUNCS([sysctlbyname asprintf])
AC_CHECK_FUNC([getloadavg],[AC_DEFINE([HAVE_GETLOADAVG2], 1, [getloadavg() is available])])
diff --git a/src/base.h b/src/base.h
index 0df34cc..b76ec69 100644
--- a/src/base.h
+++ b/src/base.h
@@ -1,6 +1,7 @@
#ifndef __BASE_H
#define __BASE_H
+#include "config.h"
#include <stddef.h>
#ifndef __GNUC__
@@ -48,10 +49,14 @@ inline T abs(T v) {
/*** String Functions *********************************************************/
+#ifndef HAVE_STRLCPY
/* Prefer this as a safer alternative over strcpy. Return strlen(from). */
size_t strlcpy(char *dest, const char *from, size_t dest_size);
+#endif
+#ifndef HAVE_STRLCAT
/* Prefer this over strcat. Return strlen(dest) + strlen(from). */
size_t strlcat(char *dest, const char *from, size_t dest_size);
+#endif
char *newstr(char const *str);
char *newstr(char const *str, int len);
diff --git a/src/misc.cc b/src/misc.cc
index b0ac1c9..3a88276 100644
--- a/src/misc.cc
+++ b/src/misc.cc
@@ -447,6 +447,8 @@ void operator delete[](void *p) {
#endif
+#ifndef HAVE_STRLCPY
+
/* Prefer this as a safer alternative over strcpy. Return strlen(from). */
size_t strlcpy(char *dest, const char *from, size_t dest_size)
{
@@ -461,6 +463,9 @@ size_t strlcpy(char *dest, const char *from, size_t dest_size)
while (*in) ++in;
return in - from;
}
+#endif
+
+#ifndef HAVE_STRLCAT
/* Prefer this over strcat. Return strlen(dest) + strlen(from). */
size_t strlcat(char *dest, const char *from, size_t dest_size)
@@ -471,6 +476,8 @@ size_t strlcat(char *dest, const char *from, size_t dest_size)
return to - dest + strlcpy(to, from, dest_size - (to - dest));
}
+#endif
+
char *newstr(char const *str) {
return (str != NULL ? newstr(str, strlen(str)) : NULL);
}
--
ldv
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 801 bytes --]
next prev parent reply other threads:[~2017-07-31 19:30 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-30 16:56 Дмитрий Ханжин
2017-07-30 17:00 ` Pavel Vainerman
2017-07-30 18:12 ` Дмитрий Ханжин
2017-07-30 18:57 ` Pavel Vainerman
2017-07-31 5:13 ` Дмитрий Ханжин
2017-07-31 9:58 ` Michael Shigorin
2017-07-31 10:15 ` Konstantin Lepikhov
2017-07-31 10:52 ` Dmitry V. Levin
2017-07-31 18:56 ` Дмитрий Ханжин
2017-07-31 19:30 ` Dmitry V. Levin [this message]
2017-08-01 17:42 ` [devel] [thx] " Дмитрий Ханжин
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170731193039.GA9100@altlinux.org \
--to=ldv@altlinux.org \
--cc=devel@lists.altlinux.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
ALT Linux Team development discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
public-inbox-index devel
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git