Date: Thu, 21 May 2009 21:08:31 -0300 From: francis keyes <fkeymo@gmail.com> To: Roland Smith <rsmith@xs4all.nl> Cc: Polytropon <freebsd@edvax.de>, Chuck Robey <chuckr@telenix.org>, freebsd-questions@freebsd.org Subject: Re: compiling FreeBSD date on Linux Message-ID: <d64607cc0905211708u2d2c4e75q95a804f70ce03eb7@mail.gmail.com> In-Reply-To: <20090520192011.GA97805@slackbox.xs4all.nl> References: <d64607cc0905191419p621f7e65tf5515d1d3696bfa0@mail.gmail.com> <20090520000137.3d46fcb2.freebsd@edvax.de> <4A135119.8010007@telenix.org> <d64607cc0905201045i36084a34g2a6c0d4e9d5f750d@mail.gmail.com> <20090520192011.GA97805@slackbox.xs4all.nl>
next in thread | previous in thread | raw e-mail | index | archive | help
I patched date.c and tried to compile but I get a few errors, as you suspected: In file included from date.c:59: vary.h:35: warning: =91struct tm=92 declared inside parameter list vary.h:35: warning: its scope is only this definition or declaration, which is probably not what you want date.c: In function =91main=92: date.c:85: error: storage size of =91lt=92 isn=92t known date.c:163: error: invalid type argument of =91unary *=92 (have =91int=92) date.c:172: warning: incompatible implicit declaration of built-in function =91strftime=92 date.c: In function =91setthetime=92: date.c:190: warning: assignment makes pointer from integer without a cast date.c:191: warning: assignment makes pointer from integer without a cast date.c:211: warning: assignment makes pointer from integer without a cast date.c:217: error: dereferencing pointer to incomplete type date.c:218: error: dereferencing pointer to incomplete type date.c:221: error: dereferencing pointer to incomplete type date.c:227: error: dereferencing pointer to incomplete type date.c:232: error: dereferencing pointer to incomplete type date.c:234: error: dereferencing pointer to incomplete type date.c:235: error: dereferencing pointer to incomplete type date.c:236: error: dereferencing pointer to incomplete type date.c:238: error: dereferencing pointer to incomplete type date.c:242: error: dereferencing pointer to incomplete type date.c:243: error: dereferencing pointer to incomplete type date.c:245: error: dereferencing pointer to incomplete type date.c:248: error: dereferencing pointer to incomplete type date.c:249: error: dereferencing pointer to incomplete type date.c:253: error: dereferencing pointer to incomplete type date.c:254: error: dereferencing pointer to incomplete type date.c:258: error: dereferencing pointer to incomplete type date.c:259: error: dereferencing pointer to incomplete type date.c:268: error: dereferencing pointer to incomplete type On Wed, May 20, 2009 at 4:20 PM, Roland Smith <rsmith@xs4all.nl> wrote: > On Wed, May 20, 2009 at 02:45:59PM -0300, francis keyes wrote: > > Hmm... the date program looks pretty simple but I don't understand the > > Makfile: > > > > # @(#)Makefile 8.1 (Berkeley) 5/31/93 > > # $FreeBSD: src/bin/date/Makefile,v 1.11.30.1 2009/04/15 03:14:26 > kensmith > > Exp $ > > > > PROG=3D date > > SRCS=3D date.c netdate.c vary.c > > DPADD=3D ${LIBUTIL} > > LDADD=3D -lutil > > > > .include <bsd.prog.mk> > > > > > > Would it be possible to compile this without a makefile? > > Sure. A command like "gcc -o date date.c netdate.c vary.c" works, > provided you patch date.c to remove the dependency on libutil (logwtmp > function). This will stop date from logging to wtmp(5). > > ----- patch for date.c ----- > --- date.c.orig 2009-05-04 22:09:01.000000000 +0200 > +++ date.c 2009-05-20 21:05:32.000000000 +0200 > @@ -48,7 +48,7 @@ > #include <ctype.h> > #include <err.h> > #include <locale.h> > -#include <libutil.h> > +/*#include <libutil.h>*/ > #include <stdio.h> > #include <stdlib.h> > #include <string.h> > @@ -274,12 +274,12 @@ > if (!jflag) { > /* set the time */ > if (nflag || netsettime(tval)) { > - logwtmp("|", "date", ""); > + /*logwtmp("|", "date", "");*/ > tv.tv_sec =3D tval; > tv.tv_usec =3D 0; > if (settimeofday(&tv, (struct timezone *)NULL)) > err(1, "settimeofday (timeval)"); > - logwtmp("{", "date", ""); > + /*logwtmp("{", "date", "");*/ > } > > if ((p =3D getlogin()) =3D=3D NULL) > ----- patch for date.c ----- > > With this patch, the executable only depends on libc. > > Note that I have only confirmed that it compiles _on FreeBSD_. There > might be additional differences between FreeBSD libc and the GNU libc > that is used on Linux that make further tinkering with the source > necessary. > > Roland > -- > R.F.Smith http://www.xs4all.nl/~rsmith/= <http://www.xs4all.nl/%7Ersmith/> > [plain text _non-HTML_ PGP/GnuPG encrypted/signed email much appreciated] > pgp: 1A2B 477F 9970 BA3C 2914 B7CE 1277 EFB0 C321 A725 (KeyID: C321A725) >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?d64607cc0905211708u2d2c4e75q95a804f70ce03eb7>