From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/10360 Path: news.gmane.org!.POSTED!not-for-mail From: Thomas Petazzoni Newsgroups: gmane.linux.lib.musl.general Subject: utmp symbol conflict Date: Thu, 4 Aug 2016 22:28:52 +0200 Organization: Free Electrons Message-ID: <20160804222852.6fbec1a6@free-electrons.com> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Trace: blaine.gmane.org 1470342566 3960 195.159.176.226 (4 Aug 2016 20:29:26 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Thu, 4 Aug 2016 20:29:26 +0000 (UTC) To: musl@lists.openwall.com Original-X-From: musl-return-10373-gllmg-musl=m.gmane.org@lists.openwall.com Thu Aug 04 22:29:18 2016 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by blaine.gmane.org with smtp (Exim 4.84_2) (envelope-from ) id 1bVPGP-0007Af-EY for gllmg-musl@m.gmane.org; Thu, 04 Aug 2016 22:29:09 +0200 Original-Received: (qmail 9346 invoked by uid 550); 4 Aug 2016 20:29:08 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Original-Received: (qmail 9313 invoked from network); 4 Aug 2016 20:29:05 -0000 X-Mailer: Claws Mail 3.13.2 (GTK+ 2.24.30; x86_64-pc-linux-gnu) Xref: news.gmane.org gmane.linux.lib.musl.general:10360 Archived-At: Hello, The shellinabox project (https://github.com/shellinabox/shellinabox) fails to build with musl due to the following define in musl's utmp.h: #define utmp utmpx Indeed shellinabox/launcher.c has the following piece of code (https://github.com/shellinabox/shellinabox/blob/master/shellinabox/launche= r.c#L1572) : struct utmpx utmpx =3D utmp->utmpx; if (service->useLogin || service->authUser) { utmpx.ut_type =3D LOGIN_PROCESS; memset(utmpx.ut_host, 0, sizeof(utmpx.ut_host)); } Where "utmp" is of type "struct Utmp *", which is an internal structure type defined as: struct Utmp { const char pid[32]; int pty; int useLogin; #ifdef HAVE_UTMPX_H struct utmpx utmpx; #endif }; Unfortunately, with musl's definition #define utmp utmpx, the line: struct utmpx utmpx =3D utmp->utmpx; gets turned after pre-processing to: struct utmpx utmpx =3D utmpx->utmpx; which obviously causes a build failure: shellinabox/launcher.c: In function =E2=80=98childProcess=E2=80=99: shellinabox/launcher.c:1576:41: error: invalid type argument of =E2=80=98->= =E2=80=99 (have =E2=80=98struct utmpx=E2=80=99) struct utmpx utmpx =3D utmp->utmpx; ^ I don't think the symbol "utmp" as a variable name is reserved, so is the #define utmp utmpx done by musl really a legal thing to do? Best regards, Thomas --=20 Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com