Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 5 Jul 2021 02:22:46 +0000
From:      Alexey Dokuchaev <danfe@freebsd.org>
To:        "Tobias C. Berner" <tcberner@freebsd.org>
Cc:        ports-committers@freebsd.org, dev-commits-ports-all@freebsd.org, dev-commits-ports-main@freebsd.org
Subject:   Re: git: bc02049bf8bb - main - graphics/inkscape: update to 1.1
Message-ID:  <YOJs9v8mjWkxEayc@FreeBSD.org>
In-Reply-To: <202107042022.164KMF2R002159@gitrepo.freebsd.org>
References:  <202107042022.164KMF2R002159@gitrepo.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Jul 04, 2021 at 08:22:15PM +0000, Tobias C. Berner wrote:
> commit bc02049bf8bbba23d78ca07d75c02d7940b98995
> 
>     graphics/inkscape: update to 1.1
> 
> ...
> +-#ifdef __APPLE__
> ++#if defined(__APPLE__) || defined(__FreeBSD__)
> +     // workaround for
> +     // static_assert(__is_cpp17_forward_iterator<_ForwardIterator>::value
> +     auto const n = std::vector<Inkscape::XML::Node *>(nodes.begin(), nodes.end());

Interesting...  Is this the bug in Clang or Inkscape?

> ++#elif defined(__FreeBSD__)
> ++       int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 };
> ++       char buf[MAXPATHLEN];
> ++       size_t cb = sizeof(buf);
> ++       if (sysctl(mib, 4, buf, &cb, NULL, 0) == 0) {
> ++           program_name = realpath(buf, nullptr);

I've recently had to patch one program in a similar way, and it looks
like returned path is already normalized on FreeBSD, so you don't have
to call realpath(), contrary to Linux' /proc/self/exe.  If the buffer
is expected to be free()able, s/char buf[...]/char *buf = malloc(...)/
and change the condition to ``if (!buf || sysctl(...) == -1)'' as they
both would set errno and thus could be handled in one if().

./danfe



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?YOJs9v8mjWkxEayc>