From owner-svn-src-head@freebsd.org Mon Sep 26 02:13:20 2016 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 625A9BEAAE4; Mon, 26 Sep 2016 02:13:20 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-io0-x22d.google.com (mail-io0-x22d.google.com [IPv6:2607:f8b0:4001:c06::22d]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2836A912; Mon, 26 Sep 2016 02:13:20 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: by mail-io0-x22d.google.com with SMTP id m186so168609373ioa.2; Sun, 25 Sep 2016 19:13:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=nitCJjsNz5uZccFbf2PNEI4Alhpr1wWaAKunc+ItGJo=; b=uevYg1cmLY3Jngvmneb/uec2JojTH/4dEAYFj2Iax1ey5+i/TzbVhhmDuhosW7ANtt X0zekxVT/NwOYoyJ/MVWV4aDkn1uueBpimsqNCwkgr/YD974L3v4M+wpE8fNlO1qddYq /RIYEtiWJdlUKxhgWvnLRbznyn8FnYv4RtYweflTaIPP70HYq99Hh3o3H5SaO5i4PdVm KWFXrYNIJYzghP19sPnq0gGhdmQEJnH6QZCFuKlOadVjL7P8YO1Nssa+ONpLdgsm5X+7 LS91S5oMZGxMZU2irQrEWdXpxK6uf5AX5gjudTc+kqGjfg+G3vy/MyrTMdhsR3kw8SrJ DhEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=nitCJjsNz5uZccFbf2PNEI4Alhpr1wWaAKunc+ItGJo=; b=SKxKVGvYJULXGvMB++5lTVc2vkaZy1C4C69gQXUKCtcecXe6yG90c3dVYFqI6Qj4RY LcO5SZP/LNyUuQgFOxxxkbLsRXHWvsuurQ5xOStiayR34T73k8I2E47o5z/PVFOjL5F4 7L8Xz0J7+084c6qEZW4MAN6rN+MjoIQyZmhcGovhvfpsqxZXtXKMgh1jfeklAbURotlx zfJQvr6TOdguWP9JhTwf47YfqN5MPYr2AzZKUhc43APFw1pzk6dS6d581poMPPzVE54x T4+4Pfoj8BV0ZItgBLNyrYlvolyE3nJPgUsE/uHiRI9E9XoKx0Xm9uCLmMSjEk1QJ3v0 xAFA== X-Gm-Message-State: AE9vXwOufBR5u8BYYc7RAdCKRePOkWesXU0jKfl+XgYlKYCxjxm5jkrT/KwkmbZZ+96a0UqxnEIjKMeRAPNVEw== X-Received: by 10.107.183.77 with SMTP id h74mr19509424iof.134.1474855998865; Sun, 25 Sep 2016 19:13:18 -0700 (PDT) MIME-Version: 1.0 Received: by 10.36.141.129 with HTTP; Sun, 25 Sep 2016 19:13:18 -0700 (PDT) In-Reply-To: <201609260106.u8Q16Wuv095454@repo.freebsd.org> References: <201609260106.u8Q16Wuv095454@repo.freebsd.org> From: Adrian Chadd Date: Sun, 25 Sep 2016 19:13:18 -0700 Message-ID: Subject: Re: svn commit: r306330 - head/usr.bin/mkimg To: Marcel Moolenaar Cc: "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-head@freebsd.org" Content-Type: text/plain; charset=UTF-8 X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Sep 2016 02:13:20 -0000 Hi, Yeah, for portable-y stuff, I'd recommend: #include "endian.h" -> #ifdef __FreeBSD__ #include #elif __Apple__ etc, etc. That way we don't duplicate contents. Same with sys/queue.h, etc. -adrian On 25 September 2016 at 18:06, Marcel Moolenaar wrote: > Author: marcel > Date: Mon Sep 26 01:06:32 2016 > New Revision: 306330 > URL: https://svnweb.freebsd.org/changeset/base/306330 > > Log: > Avoid depending on the header for le*enc and be*enc. > Not only is the header unportable, the encoding/decoding functions > are as well. Instead, duplicate the handful of small inlines we > need into a private header called endian.h. > > Aside: an alternative approach is to move the encoding/decoding > functions to a separate system header. While the header is still > nonportable, such an approach would make it possible to re-use the > definitions by playing games with include paths. This may be the > preferred approach if more (build) utilities need this. This > change does not preclude that. In fact, it makes it easier. > > Added: > head/usr.bin/mkimg/endian.h (contents, props changed) > Modified: > head/usr.bin/mkimg/apm.c > head/usr.bin/mkimg/bsd.c > head/usr.bin/mkimg/ebr.c > head/usr.bin/mkimg/gpt.c > head/usr.bin/mkimg/mbr.c > head/usr.bin/mkimg/pc98.c > head/usr.bin/mkimg/qcow.c > head/usr.bin/mkimg/raw.c > head/usr.bin/mkimg/vhd.c > head/usr.bin/mkimg/vmdk.c > head/usr.bin/mkimg/vtoc8.c > > Modified: head/usr.bin/mkimg/apm.c > ============================================================================== > --- head/usr.bin/mkimg/apm.c Mon Sep 26 00:41:08 2016 (r306329) > +++ head/usr.bin/mkimg/apm.c Mon Sep 26 01:06:32 2016 (r306330) > @@ -29,12 +29,12 @@ __FBSDID("$FreeBSD$"); > > #include > #include > -#include > #include > #include > #include > #include > > +#include "endian.h" > #include "image.h" > #include "mkimg.h" > #include "scheme.h" > > Modified: head/usr.bin/mkimg/bsd.c > ============================================================================== > --- head/usr.bin/mkimg/bsd.c Mon Sep 26 00:41:08 2016 (r306329) > +++ head/usr.bin/mkimg/bsd.c Mon Sep 26 01:06:32 2016 (r306330) > @@ -29,12 +29,12 @@ __FBSDID("$FreeBSD$"); > > #include > #include > -#include > #include > #include > #include > #include > > +#include "endian.h" > #include "image.h" > #include "mkimg.h" > #include "scheme.h" > > Modified: head/usr.bin/mkimg/ebr.c > ============================================================================== > --- head/usr.bin/mkimg/ebr.c Mon Sep 26 00:41:08 2016 (r306329) > +++ head/usr.bin/mkimg/ebr.c Mon Sep 26 01:06:32 2016 (r306330) > @@ -29,12 +29,12 @@ __FBSDID("$FreeBSD$"); > > #include > #include > -#include > #include > #include > #include > #include > > +#include "endian.h" > #include "image.h" > #include "mkimg.h" > #include "scheme.h" > > Added: head/usr.bin/mkimg/endian.h > ============================================================================== > --- /dev/null 00:00:00 1970 (empty, because file is newly added) > +++ head/usr.bin/mkimg/endian.h Mon Sep 26 01:06:32 2016 (r306330) > @@ -0,0 +1,106 @@ > +/*- > + * Copyright (c) 2002 Thomas Moestl > + * All rights reserved. > + * > + * Redistribution and use in source and binary forms, with or without > + * modification, are permitted provided that the following conditions > + * are met: > + * 1. Redistributions of source code must retain the above copyright > + * notice, this list of conditions and the following disclaimer. > + * 2. Redistributions in binary form must reproduce the above copyright > + * notice, this list of conditions and the following disclaimer in the > + * documentation and/or other materials provided with the distribution. > + * > + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND > + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE > + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE > + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL > + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS > + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) > + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT > + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY > + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF > + * SUCH DAMAGE. > + * > + * $FreeBSD$ > + */ > + > +#ifndef _MKIMG_ENDIAN_H_ > +#define _MKIMG_ENDIAN_H_ > + > +static __inline uint16_t > +be16dec(const void *pp) > +{ > + uint8_t const *p = (uint8_t const *)pp; > + > + return ((p[0] << 8) | p[1]); > +} > + > +static __inline void > +be16enc(void *pp, uint16_t u) > +{ > + uint8_t *p = (uint8_t *)pp; > + > + p[0] = (u >> 8) & 0xff; > + p[1] = u & 0xff; > +} > + > +static __inline void > +be32enc(void *pp, uint32_t u) > +{ > + uint8_t *p = (uint8_t *)pp; > + > + p[0] = (u >> 24) & 0xff; > + p[1] = (u >> 16) & 0xff; > + p[2] = (u >> 8) & 0xff; > + p[3] = u & 0xff; > +} > + > +static __inline void > +be64enc(void *pp, uint64_t u) > +{ > + uint8_t *p = (uint8_t *)pp; > + > + be32enc(p, (uint32_t)(u >> 32)); > + be32enc(p + 4, (uint32_t)(u & 0xffffffffU)); > +} > + > +static __inline uint16_t > +le16dec(const void *pp) > +{ > + uint8_t const *p = (uint8_t const *)pp; > + > + return ((p[1] << 8) | p[0]); > +} > + > +static __inline void > +le16enc(void *pp, uint16_t u) > +{ > + uint8_t *p = (uint8_t *)pp; > + > + p[0] = u & 0xff; > + p[1] = (u >> 8) & 0xff; > +} > + > +static __inline void > +le32enc(void *pp, uint32_t u) > +{ > + uint8_t *p = (uint8_t *)pp; > + > + p[0] = u & 0xff; > + p[1] = (u >> 8) & 0xff; > + p[2] = (u >> 16) & 0xff; > + p[3] = (u >> 24) & 0xff; > +} > + > +static __inline void > +le64enc(void *pp, uint64_t u) > +{ > + uint8_t *p = (uint8_t *)pp; > + > + le32enc(p, (uint32_t)(u & 0xffffffffU)); > + le32enc(p + 4, (uint32_t)(u >> 32)); > +} > + > +#endif /* _MKIMG_ENDIAN_H_ */ > > Modified: head/usr.bin/mkimg/gpt.c > ============================================================================== > --- head/usr.bin/mkimg/gpt.c Mon Sep 26 00:41:08 2016 (r306329) > +++ head/usr.bin/mkimg/gpt.c Mon Sep 26 01:06:32 2016 (r306330) > @@ -29,7 +29,6 @@ __FBSDID("$FreeBSD$"); > > #include > #include > -#include > #include > #include > #include > @@ -39,6 +38,7 @@ __FBSDID("$FreeBSD$"); > #include > #include > > +#include "endian.h" > #include "image.h" > #include "mkimg.h" > #include "scheme.h" > > Modified: head/usr.bin/mkimg/mbr.c > ============================================================================== > --- head/usr.bin/mkimg/mbr.c Mon Sep 26 00:41:08 2016 (r306329) > +++ head/usr.bin/mkimg/mbr.c Mon Sep 26 01:06:32 2016 (r306330) > @@ -29,12 +29,12 @@ __FBSDID("$FreeBSD$"); > > #include > #include > -#include > #include > #include > #include > #include > > +#include "endian.h" > #include "image.h" > #include "mkimg.h" > #include "scheme.h" > > Modified: head/usr.bin/mkimg/pc98.c > ============================================================================== > --- head/usr.bin/mkimg/pc98.c Mon Sep 26 00:41:08 2016 (r306329) > +++ head/usr.bin/mkimg/pc98.c Mon Sep 26 01:06:32 2016 (r306330) > @@ -29,12 +29,12 @@ __FBSDID("$FreeBSD$"); > > #include > #include > -#include > #include > #include > #include > #include > > +#include "endian.h" > #include "image.h" > #include "mkimg.h" > #include "scheme.h" > > Modified: head/usr.bin/mkimg/qcow.c > ============================================================================== > --- head/usr.bin/mkimg/qcow.c Mon Sep 26 00:41:08 2016 (r306329) > +++ head/usr.bin/mkimg/qcow.c Mon Sep 26 01:06:32 2016 (r306330) > @@ -28,7 +28,6 @@ > __FBSDID("$FreeBSD$"); > > #include > -#include > #include > #include > #include > @@ -37,6 +36,7 @@ __FBSDID("$FreeBSD$"); > #include > #include > > +#include "endian.h" > #include "image.h" > #include "format.h" > #include "mkimg.h" > > Modified: head/usr.bin/mkimg/raw.c > ============================================================================== > --- head/usr.bin/mkimg/raw.c Mon Sep 26 00:41:08 2016 (r306329) > +++ head/usr.bin/mkimg/raw.c Mon Sep 26 01:06:32 2016 (r306330) > @@ -28,7 +28,6 @@ > __FBSDID("$FreeBSD$"); > > #include > -#include > #include > #include > #include > > Modified: head/usr.bin/mkimg/vhd.c > ============================================================================== > --- head/usr.bin/mkimg/vhd.c Mon Sep 26 00:41:08 2016 (r306329) > +++ head/usr.bin/mkimg/vhd.c Mon Sep 26 01:06:32 2016 (r306330) > @@ -28,7 +28,6 @@ > __FBSDID("$FreeBSD$"); > > #include > -#include > #include > #include > #include > @@ -36,6 +35,7 @@ __FBSDID("$FreeBSD$"); > #include > #include > > +#include "endian.h" > #include "image.h" > #include "format.h" > #include "mkimg.h" > > Modified: head/usr.bin/mkimg/vmdk.c > ============================================================================== > --- head/usr.bin/mkimg/vmdk.c Mon Sep 26 00:41:08 2016 (r306329) > +++ head/usr.bin/mkimg/vmdk.c Mon Sep 26 01:06:32 2016 (r306330) > @@ -28,7 +28,6 @@ > __FBSDID("$FreeBSD$"); > > #include > -#include > #include > #include > #include > @@ -36,6 +35,7 @@ __FBSDID("$FreeBSD$"); > #include > #include > > +#include "endian.h" > #include "image.h" > #include "format.h" > #include "mkimg.h" > > Modified: head/usr.bin/mkimg/vtoc8.c > ============================================================================== > --- head/usr.bin/mkimg/vtoc8.c Mon Sep 26 00:41:08 2016 (r306329) > +++ head/usr.bin/mkimg/vtoc8.c Mon Sep 26 01:06:32 2016 (r306330) > @@ -28,7 +28,6 @@ > __FBSDID("$FreeBSD$"); > > #include > -#include > #include > #include > #include > @@ -36,6 +35,7 @@ __FBSDID("$FreeBSD$"); > #include > #include > > +#include "endian.h" > #include "image.h" > #include "mkimg.h" > #include "scheme.h" >