Date: Tue, 13 Jul 2004 19:42:51 +0200 From: Robert Millan <rmh@debian.org> To: FreeBSD-gnats-submit@FreeBSD.org Subject: bin/69010: [2] Portability fixes for FreeBSD build utils Message-ID: <E1BkRIp-0008B6-00@khazad.dyndns.org> Resent-Message-ID: <200407131750.i6DHo0Vf025962@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 69010 >Category: bin >Synopsis: [2] Portability fixes for FreeBSD build utils >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Tue Jul 13 17:50:00 GMT 2004 >Closed-Date: >Last-Modified: >Originator: Robert Millan >Release: 5.2.1 >Organization: Debian >Environment: System: GNU/Linux aragorn 2.4.26-1-k7 #1 Sat May 1 21:40:09 EST 2004 i686 Architecture: i686 >Description: Some portability fixes for using the FreeBSD build utilities on non-FreeBSD systems. >How-To-Repeat: >Fix: Patch follows. These changes are non-intrusive but if you have any questions let me know. diff -ur src.old/contrib/one-true-awk/b.c src/contrib/one-true-awk/b.c --- src.old/contrib/one-true-awk/b.c Tue Jul 6 21:06:03 2004 +++ src/contrib/one-true-awk/b.c Tue Jul 6 21:10:06 2004 @@ -25,6 +25,7 @@ /* lasciate ogne speranza, voi ch'entrate. */ #define DEBUG +#define _ISOC99_SOURCE /* isblank */ #include <ctype.h> #include <stdio.h> diff -ur src.old/usr.bin/cksum/cksum.c src/usr.bin/cksum/cksum.c --- src.old/usr.bin/cksum/cksum.c Tue Jul 6 21:06:03 2004 +++ src/usr.bin/cksum/cksum.c Tue Jul 6 21:10:06 2004 @@ -65,11 +65,11 @@ int main(int argc, char **argv) { - uint32_t val; + u_int32_t val; int ch, fd, rval; off_t len; char *fn, *p; - int (*cfncn)(int, uint32_t *, off_t *); + int (*cfncn)(int, u_int32_t *, off_t *); void (*pfncn)(char *, u_int32_t, off_t); if ((p = rindex(argv[0], '/')) == NULL) diff -ur src.old/usr.bin/cksum/extern.h src/usr.bin/cksum/extern.h --- src.old/usr.bin/cksum/extern.h Tue Jul 6 21:06:03 2004 +++ src/usr.bin/cksum/extern.h Tue Jul 6 21:10:06 2004 @@ -37,11 +37,11 @@ #include <sys/cdefs.h> __BEGIN_DECLS -int crc(int, uint32_t *, off_t *); -void pcrc(char *, uint32_t, off_t); -void psum1(char *, uint32_t, off_t); -void psum2(char *, uint32_t, off_t); -int csum1(int, uint32_t *, off_t *); -int csum2(int, uint32_t *, off_t *); -int crc32(int, uint32_t *, off_t *); +int crc(int, u_int32_t *, off_t *); +void pcrc(char *, u_int32_t, off_t); +void psum1(char *, u_int32_t, off_t); +void psum2(char *, u_int32_t, off_t); +int csum1(int, u_int32_t *, off_t *); +int csum2(int, u_int32_t *, off_t *); +int crc32(int, u_int32_t *, off_t *); __END_DECLS diff -ur src.old/usr.bin/make/main.c src/usr.bin/make/main.c --- src.old/usr.bin/make/main.c Tue Jul 6 21:06:04 2004 +++ src/usr.bin/make/main.c Tue Jul 6 21:10:06 2004 @@ -61,18 +61,18 @@ */ #include <sys/types.h> -#include <sys/time.h> #include <sys/param.h> #include <sys/resource.h> #include <sys/signal.h> #include <sys/stat.h> -#if defined(__i386__) +#if defined(__FreeBSD__) && defined(__i386__) #include <sys/sysctl.h> #endif #ifndef MACHINE #include <sys/utsname.h> #endif #include <sys/wait.h> +#include <time.h> #include <err.h> #include <stdlib.h> #include <errno.h> @@ -477,8 +477,8 @@ iMkLvl = 0; } if (iMkLvl++ > MKLVL_MAXVAL) { - errc(2, EAGAIN, - "Max recursion level (%d) exceeded.", MKLVL_MAXVAL); + errno = EAGAIN; + err (2, "Max recursion level (%d) exceeded.", MKLVL_MAXVAL); } bzero(szMkLvl = emalloc(32), 32); sprintf(szMkLvl, "%d", iMkLvl); @@ -506,6 +506,7 @@ } #endif +#ifdef __FreeBSD__ /* * PC-98 kernel sets the `i386' string to the utsname.machine and * it cannot be distinguished from IBM-PC by uname(3). Therefore, @@ -525,6 +526,7 @@ machine = "pc98"; } } +#endif /* * Get the name of this type of MACHINE from utsname diff -ur src.old/usr.bin/yacc/main.c src/usr.bin/yacc/main.c --- src.old/usr.bin/yacc/main.c Tue Jul 6 21:06:04 2004 +++ src/usr.bin/yacc/main.c Tue Jul 6 21:10:06 2004 @@ -114,7 +114,10 @@ volatile sig_atomic_t sigdie; -__dead2 void +#ifdef __dead2 +__dead2 +#endif +void done(k) int k; { diff -ur src.old/usr.sbin/btxld/btx.h src/usr.sbin/btxld/btx.h --- src.old/usr.sbin/btxld/btx.h Tue Jul 6 21:06:04 2004 +++ src/usr.sbin/btxld/btx.h Tue Jul 6 21:10:06 2004 @@ -30,6 +30,7 @@ #define _BTX_H_ #include <sys/types.h> +#include <stdint.h> #define BTX_PGSIZE 0x1000 /* Page size */ #define BTX_PGBASE 0x5000 /* Start of page tables */ diff -ur src.old/usr.sbin/btxld/elfh.c src/usr.sbin/btxld/elfh.c --- src.old/usr.sbin/btxld/elfh.c Tue Jul 6 21:06:04 2004 +++ src/usr.sbin/btxld/elfh.c Tue Jul 6 21:10:06 2004 @@ -29,6 +29,7 @@ #include <sys/types.h> #include <stddef.h> +#include <stdint.h> #include "elfh.h" #include "endian.h" diff -ur src.old/usr.sbin/config/main.c src/usr.sbin/config/main.c --- src.old/usr.sbin/config/main.c Tue Jul 6 21:06:04 2004 +++ src/usr.sbin/config/main.c Tue Jul 6 21:10:06 2004 @@ -56,6 +56,9 @@ #include <sysexits.h> #include <unistd.h> #include <dirent.h> +#ifndef _DIRENT_HAVE_D_NAMLEN +# include <string.h> /* strlen */ +#endif #include "y.tab.h" #include "config.h" @@ -431,7 +434,11 @@ if ((dirp = opendir(p)) == NULL) err(EX_OSERR, "opendir %s", p); while ((dp = readdir(dirp)) != NULL) { +#ifdef _DIRENT_HAVE_D_NAMLEN i = dp->d_namlen - 2; +#else + i = strlen (dp->d_name) - 2; +#endif /* Skip non-headers */ if (dp->d_name[i] != '.' || dp->d_name[i + 1] != 'h') continue; diff -ur src.old/usr.sbin/kgzip/endian.h src/usr.sbin/kgzip/endian.h --- src.old/usr.sbin/kgzip/endian.h Tue Jul 6 21:06:04 2004 +++ src/usr.sbin/kgzip/endian.h Tue Jul 6 21:10:06 2004 @@ -3,7 +3,9 @@ */ #include <sys/types.h> +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) #include <machine/endian.h> +#endif #define bswap16(x) (uint16_t) \ ((x >> 8) | (x << 8)) diff -ur src.old/usr.sbin/mtree/compare.c src/usr.sbin/mtree/compare.c --- src.old/usr.sbin/mtree/compare.c Tue Jul 6 21:06:04 2004 +++ src/usr.sbin/mtree/compare.c Tue Jul 6 21:10:06 2004 @@ -77,7 +77,9 @@ off_t len; char *cp; const char *tab = ""; +#ifdef __FreeBSD__ char *fflags; +#endif label = 0; switch(s->type) { @@ -173,21 +175,22 @@ (intmax_t)s->st_size, (intmax_t)p->fts_statp->st_size); tab = "\t"; } +#ifdef ST_MTIM /* * XXX * Catches nano-second differences, but doesn't display them. */ if ((s->flags & F_TIME) && - ((s->st_mtimespec.tv_sec != p->fts_statp->st_mtimespec.tv_sec) || - (s->st_mtimespec.tv_nsec != p->fts_statp->st_mtimespec.tv_nsec))) { + ((s->ST_MTIM.tv_sec != p->fts_statp->ST_MTIM.tv_sec) || + (s->ST_MTIM.tv_nsec != p->fts_statp->ST_MTIM.tv_nsec))) { LABEL; (void)printf("%smodification time expected %.24s ", - tab, ctime(&s->st_mtimespec.tv_sec)); + tab, ctime(&s->ST_MTIM.tv_sec)); (void)printf("found %.24s", - ctime(&p->fts_statp->st_mtimespec.tv_sec)); + ctime(&p->fts_statp->ST_MTIM.tv_sec)); if (uflag) { - tv[0].tv_sec = s->st_mtimespec.tv_sec; - tv[0].tv_usec = s->st_mtimespec.tv_nsec / 1000; + tv[0].tv_sec = s->ST_MTIM.tv_sec; + tv[0].tv_usec = s->ST_MTIM.tv_nsec / 1000; tv[1] = tv[0]; if (utimes(p->fts_accpath, tv)) (void)printf(" not modified: %s\n", @@ -198,6 +201,7 @@ (void)printf("\n"); tab = "\t"; } +#endif if (s->flags & F_CKSUM) { if ((fd = open(p->fts_accpath, O_RDONLY, 0)) < 0) { LABEL; @@ -220,6 +224,7 @@ } } } +#ifdef __FreeBSD__ if ((s->flags & F_FLAGS) && s->st_flags != p->fts_statp->st_flags) { LABEL; fflags = flags_to_string(s->st_flags); @@ -240,6 +245,7 @@ (void)printf("\n"); tab = "\t"; } +#endif #ifdef MD5 if (s->flags & F_MD5) { char *new_digest, buf[33]; diff -ur src.old/usr.sbin/mtree/create.c src/usr.sbin/mtree/create.c --- src.old/usr.sbin/mtree/create.c Tue Jul 6 21:06:04 2004 +++ src/usr.sbin/mtree/create.c Tue Jul 6 21:10:06 2004 @@ -70,7 +70,11 @@ static u_long flags = 0xffffffff; static int dsort(const FTSENT * const *, const FTSENT * const *); -static void output(int, int *, const char *, ...) __printflike(3, 4); +static void output(int, int *, const char *, ...) +#ifdef __printflike +__printflike(3, 4) +#endif +; static int statd(FTS *, FTSENT *, uid_t *, gid_t *, mode_t *, u_long *); static void statf(int, FTSENT *); @@ -147,12 +151,15 @@ uint32_t val; off_t len; int fd, offset; +#ifdef __FreeBSD__ char *fflags; +#endif char *escaped_name; escaped_name = calloc(1, p->fts_namelen * 4 + 1); if (escaped_name == NULL) errx(1, "statf(): calloc() failed"); + strvis(escaped_name, p->fts_name, VIS_WHITE | VIS_OCTAL | VIS_GLOB); if (iflag || S_ISDIR(p->fts_statp->st_mode)) @@ -208,10 +215,12 @@ if (keys & F_SIZE) output(indent, &offset, "size=%jd", (intmax_t)p->fts_statp->st_size); +#ifdef ST_MTIM if (keys & F_TIME) output(indent, &offset, "time=%ld.%ld", - (long)p->fts_statp->st_mtimespec.tv_sec, - p->fts_statp->st_mtimespec.tv_nsec); + (long)p->fts_statp->ST_MTIM.tv_sec, + p->fts_statp->ST_MTIM.tv_nsec); +#endif if (keys & F_CKSUM && S_ISREG(p->fts_statp->st_mode)) { if ((fd = open(p->fts_accpath, O_RDONLY, 0)) < 0 || crc(fd, &val, &len)) @@ -252,11 +261,13 @@ if (keys & F_SLINK && (p->fts_info == FTS_SL || p->fts_info == FTS_SLNONE)) output(indent, &offset, "link=%s", rlink(p->fts_accpath)); +#ifdef __FreeBSD__ if (keys & F_FLAGS && p->fts_statp->st_flags != flags) { fflags = flags_to_string(p->fts_statp->st_flags); output(indent, &offset, "flags=%s", fflags); free(fflags); } +#endif (void)putchar('\n'); } @@ -282,7 +293,9 @@ u_long saveflags = *pflags; u_short maxgid, maxuid, maxmode, maxflags; u_short g[MAXGID], u[MAXUID], m[MAXMODE], f[MAXFLAGS]; +#ifdef __FreeBSD__ char *fflags; +#endif static int first = 1; if ((p = fts_children(t, 0)) == NULL) { @@ -315,6 +328,7 @@ maxuid = u[suid]; } +#ifdef __FreeBSD__ /* * XXX * note that the below will break when file flags @@ -328,6 +342,7 @@ saveflags = sflags; maxflags = f[FLAGS2IDX(sflags)]; } +#endif } } /* @@ -371,11 +386,13 @@ (void)printf(" mode=%#o", savemode); if (keys & F_NLINK) (void)printf(" nlink=1"); +#ifdef __FreeBSD__ if (keys & F_FLAGS) { fflags = flags_to_string(saveflags); (void)printf(" flags=%s", fflags); free(fflags); } +#endif (void)printf("\n"); *puid = saveuid; *pgid = savegid; diff -ur src.old/usr.sbin/mtree/extern.h src/usr.sbin/mtree/extern.h --- src.old/usr.sbin/mtree/extern.h Tue Jul 6 21:06:04 2004 +++ src/usr.sbin/mtree/extern.h Tue Jul 6 21:10:06 2004 @@ -29,12 +29,12 @@ * @(#)extern.h 8.1 (Berkeley) 6/6/93 * $FreeBSD: src/usr.sbin/mtree/extern.h,v 1.13 2004/01/11 19:38:48 phk Exp $ */ -extern uint32_t crc_total; +extern u_int32_t crc_total; #ifdef _FTS_H_ int compare(char *, NODE *, FTSENT *); #endif -int crc(int, uint32_t *, off_t *); +int crc(int, u_int32_t *, off_t *); void cwalk(void); char *flags_to_string(u_long); diff -ur src.old/usr.sbin/mtree/misc.c src/usr.sbin/mtree/misc.c --- src.old/usr.sbin/mtree/misc.c Tue Jul 6 21:06:04 2004 +++ src/usr.sbin/mtree/misc.c Tue Jul 6 21:10:06 2004 @@ -103,6 +103,7 @@ return (strcmp(((const KEY *)a)->name, ((const KEY *)b)->name)); } +#ifdef __FreeBSD__ char * flags_to_string(u_long fflags) { @@ -118,3 +119,4 @@ return string; } +#endif diff -ur src.old/usr.sbin/mtree/mtree.c src/usr.sbin/mtree/mtree.c --- src.old/usr.sbin/mtree/mtree.c Tue Jul 6 21:06:04 2004 +++ src/usr.sbin/mtree/mtree.c Tue Jul 6 21:10:06 2004 @@ -164,7 +164,7 @@ if (dir && chdir(dir)) err(1, "%s", dir); - if ((cflag || sflag) && !getwd(fullpath)) + if ((cflag || sflag) && !getcwd(fullpath, PATH_MAX)) errx(1, "%s", fullpath); if (cflag) { diff -ur src.old/usr.sbin/mtree/mtree.h src/usr.sbin/mtree/mtree.h --- src.old/usr.sbin/mtree/mtree.h Tue Jul 6 21:06:04 2004 +++ src/usr.sbin/mtree/mtree.h Tue Jul 6 21:10:06 2004 @@ -42,7 +42,16 @@ struct _node *parent, *child; /* up, down */ struct _node *prev, *next; /* left, right */ off_t st_size; /* size */ - struct timespec st_mtimespec; /* last modification time */ +#ifdef __GLIBC__ +# ifdef _STATBUF_ST_NSEC +# define ST_MTIM st_mtim +# endif +#else +# define ST_MTIM st_mtimespec +#endif +#ifdef ST_MTIM + struct timespec ST_MTIM; /* last modification time */ +#endif u_long cksum; /* check sum */ char *md5digest; /* MD5 digest */ char *sha1digest; /* SHA-1 digest */ @@ -50,6 +59,9 @@ char *slink; /* symbolic link reference */ uid_t st_uid; /* uid */ gid_t st_gid; /* gid */ +#ifndef S_ISTXT +#define S_ISTXT S_ISVTX +#endif #define MBITS (S_ISUID|S_ISGID|S_ISTXT|S_IRWXU|S_IRWXG|S_IRWXO) mode_t st_mode; /* mode */ u_long st_flags; /* flags */ diff -ur src.old/usr.sbin/mtree/spec.c src/usr.sbin/mtree/spec.c --- src.old/usr.sbin/mtree/spec.c Tue Jul 6 21:06:04 2004 +++ src/usr.sbin/mtree/spec.c Tue Jul 6 21:10:13 2004 @@ -169,7 +169,9 @@ char *kw, *val = NULL; struct group *gr; struct passwd *pw; +#ifdef __FreeBSD__ mode_t *m; +#endif int value; char *ep; @@ -199,12 +201,14 @@ if(!ip->rmd160digest) errx(1, "strdup"); break; +#ifdef __FreeBSD__ case F_FLAGS: if (strcmp("none", val) == 0) ip->st_flags = 0; else if (strtofflags(&val, &ip->st_flags, NULL) != 0) errx(1, "line %d: invalid flag %s",lineno, val); break; +#endif case F_GID: ip->st_gid = strtoul(val, &ep, 10); if (*ep) @@ -218,6 +222,7 @@ case F_IGN: /* just set flag bit */ break; +#ifdef __FreeBSD__ case F_MODE: if ((m = setmode(val)) == NULL) errx(1, "line %d: invalid file mode %s", @@ -225,6 +230,7 @@ ip->st_mode = getmode(m, 0); free(m); break; +#endif case F_NLINK: ip->st_nlink = strtoul(val, &ep, 10); if (*ep) @@ -244,17 +250,19 @@ if (strunvis(ip->slink, val) == -1) errx(1, "symlink %s is ill-encoded", val); break; +#ifdef ST_MTIM case F_TIME: - ip->st_mtimespec.tv_sec = strtoul(val, &ep, 10); + ip->ST_MTIM.tv_sec = strtoul(val, &ep, 10); if (*ep != '.') errx(1, "line %d: invalid time %s", lineno, val); val = ep + 1; - ip->st_mtimespec.tv_nsec = strtoul(val, &ep, 10); + ip->ST_MTIM.tv_nsec = strtoul(val, &ep, 10); if (*ep) errx(1, "line %d: invalid time %s", lineno, val); break; +#endif case F_TYPE: switch(*val) { case 'b': diff -ur src.old/usr.sbin/mtree/specspec.c src/usr.sbin/mtree/specspec.c --- src.old/usr.sbin/mtree/specspec.c Tue Jul 6 21:06:04 2004 +++ src/usr.sbin/mtree/specspec.c Tue Jul 6 21:10:06 2004 @@ -63,8 +63,10 @@ printf(" sha1digest=%s", n->sha1digest); if (f & F_RMD160) printf(" rmd160digest=%s", n->rmd160digest); +#ifdef __FreeBSD__ if (f & F_FLAGS) printf(" flags=%s", flags_to_string(n->st_flags)); +#endif printf("\n"); } @@ -123,8 +125,10 @@ differs |= F_SIZE; if (FS(n1, n2, F_SLINK, slink)) differs |= F_SLINK; - if (FM(n1, n2, F_TIME, st_mtimespec)) +#ifdef ST_MTIM + if (FM(n1, n2, F_TIME, ST_MTIM)) differs |= F_TIME; +#endif if (FF(n1, n2, F_UID, st_uid)) differs |= F_UID; if (FF(n1, n2, F_UNAME, st_uid)) diff -ur src.old/usr.sbin/mtree/verify.c src/usr.sbin/mtree/verify.c --- src.old/usr.sbin/mtree/verify.c Tue Jul 6 21:06:04 2004 +++ src/usr.sbin/mtree/verify.c Tue Jul 6 21:10:06 2004 @@ -225,9 +225,11 @@ if (chmod(path, p->st_mode)) (void)printf("%s: permissions not set: %s\n", path, strerror(errno)); +#ifdef __FreeBSD__ if ((p->flags & F_FLAGS) && p->st_flags && chflags(path, p->st_flags)) (void)printf("%s: file flags not set: %s\n", path, strerror(errno)); +#endif } } >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E1BkRIp-0008B6-00>