<?xml version="1.0" encoding="utf-8"?>
<!--RSS generated by Flaimo.com RSS Builder [2026-10-08 10:22:47]-->
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"><channel><docs>http://austingroupbugs.net/</docs><link>http://austingroupbugs.net/</link><description><![CDATA[Austin Group Issue Tracker - Issues]]></description><title>Austin Group Issue Tracker - Issues</title><image><title>Austin Group Issue Tracker - Issues</title><url>http://austingroupbugs.net/images/AG_HEADER.png</url><link>http://austingroupbugs.net/</link><description><![CDATA[Austin Group Issue Tracker - Issues]]></description></image><language>en</language><category>All Projects</category><ttl>10</ttl><dc:language>en</dc:language><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><item><title>0001984: Ambiguous requirements for command -v on printing absolute pathnames</title><author></author><link>http://austingroupbugs.net/view.php?id=1984</link><description><![CDATA[The requirements for command -v read:&lt;br /&gt;
&lt;br /&gt;
- Executable utilities, regular built-in utilities, command_names including a &lt;slash&gt; character, and any implementation-provided functions that are found using the PATH variable (as described in 2.9.1.4 Command Search and Execution), shall be written as absolute pathnames.&lt;br /&gt;
&lt;br /&gt;
This is ambiguous as to whether &quot;that are found using the PATH variable&quot; applies to &quot;Executable utilities, regular built-in utilities, command_names including a &lt;slash&gt; character, and any implementation-provided functions&quot;, or only to &quot;any implementation-provided functions&quot;.&lt;br /&gt;
&lt;br /&gt;
Given that &quot;command_names including a &lt;slash&gt; character&quot; are never looked up using the PATH variable (as pointed out by Herbert Xu on the dash mailing list), the intent must be that &quot;that are found using the PATH variable&quot; applies only to &quot;any implementation-provided functions&quot;, but at least one shell (bash) does not currently write command_names including a &lt;slash&gt; character as absolute pathnames, even in POSIX mode, and in my opinion, the current text of the standard does not say it should.]]></description><category>Shell and Utilities</category><pubDate>Wed, 07 Oct 2026 10:58:16 +0000</pubDate><guid>http://austingroupbugs.net/view.php?id=1984</guid><comments>http://austingroupbugs.net/view.php?id=1984#bugnotes</comments></item><item><title>0001633: Add memrchr</title><author></author><link>http://austingroupbugs.net/view.php?id=1633</link><description><![CDATA[memrchr is a simple and useful function that is similar to memchr, except it finds the last occurrence of a byte. It is provided by the following implementations already:&lt;br /&gt;
&lt;br /&gt;
* glibc (&lt;a href=&quot;https://www.man7.org/linux/man-pages/man3/memrchr.3.html&quot; rel=&quot;noopener&quot;&gt;https://www.man7.org/linux/man-pages/man3/memrchr.3.html&lt;/a&gt;)&lt;br /&gt;
* musl&lt;br /&gt;
* openbsd (&lt;a href=&quot;https://man.openbsd.org/memrchr.3&quot; rel=&quot;noopener&quot;&gt;https://man.openbsd.org/memrchr.3&lt;/a&gt;)&lt;br /&gt;
* freebsd (&lt;a href=&quot;https://man.freebsd.org/cgi/man.cgi?query=memrchr&amp;manpath=FreeBSD+13.1-RELEASE+and+Ports&quot; rel=&quot;noopener&quot;&gt;https://man.freebsd.org/cgi/man.cgi?query=memrchr&amp;manpath=FreeBSD+13.1-RELEASE+and+Ports&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
(And probably many others).]]></description><category>Base Definitions and Headers</category><pubDate>Mon, 05 Oct 2026 14:42:55 +0000</pubDate><guid>http://austingroupbugs.net/view.php?id=1633</guid><comments>http://austingroupbugs.net/view.php?id=1633#bugnotes</comments></item><item><title>0001622: Standardize getpeereid function</title><author></author><link>http://austingroupbugs.net/view.php?id=1622</link><description><![CDATA[This function provides a mechanism to get credentials of a peer that&lt;br /&gt;
created/initialized unix socket. Such mechanism is useful for AF_UNIX servers&lt;br /&gt;
and clients that need a reliable way to know each other's credentials to&lt;br /&gt;
implement e.g. accounting or authorization. See also: &lt;a href=&quot;https://cr.yp.to/docs/secureipc.html&quot; rel=&quot;noopener&quot;&gt;https://cr.yp.to/docs/secureipc.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
It is quite portable and already implemented at least in QNX, AIX, FreeBSD,&lt;br /&gt;
NetBSD, OpenBSD, Cygwin. Linux and Illumos/Solaris provide similar interfaces,&lt;br /&gt;
though they don't look suitable for inclusion. Linux SO_PEERCRED is incompatible&lt;br /&gt;
with OpenBSD due to a different structure name, whereas Illumos/Solaris&lt;br /&gt;
getpeerucred() is just terrible; it allocates memory and requires a dedicated&lt;br /&gt;
function to free it.&lt;br /&gt;
&lt;br /&gt;
I also evaluated LOCAL_PEERCRED from FreeBSD and LOCAL_PEEREID from NetBSD that&lt;br /&gt;
are used there to power getpeereid(). LOCAL_PEERCRED uses structure which has&lt;br /&gt;
platform-specific type in it, so I immidiately rejected it. As of LOCAL_PEEREID,&lt;br /&gt;
it looks fine, but I afraid if we going to standardize it, it'll cause friction&lt;br /&gt;
in systems that already provide similar(and potentially incompatible)interface in&lt;br /&gt;
getsockopt(). Therefore let's just add getpeereid.]]></description><category>System Interfaces</category><pubDate>Mon, 05 Oct 2026 14:40:56 +0000</pubDate><guid>http://austingroupbugs.net/view.php?id=1622</guid><comments>http://austingroupbugs.net/view.php?id=1622#bugnotes</comments></item><item><title>0001548: Addition of a POSIX.utf-8 locale (likely as 7.3 "POSIX.utf-8 locale")</title><author></author><link>http://austingroupbugs.net/view.php?id=1548</link><description><![CDATA[Today's modern POSIX systems use Unicode aware locales, almost all realized via the UTF-8 8-bit character set.&lt;br /&gt;
Even though the standard(s) do not offer proper interfaces to deal with this, external libraries (GNU libunicode, ICU) fill this gap in practice.&lt;br /&gt;
(These libraries can also be used with UTF-16 and UTF-32 character sets, the latter i think prefers the 16-bit encoding that is in use in a widely distributed commercial non-POSIX operating system.)&lt;br /&gt;
&lt;br /&gt;
As it stands users are using language/territory specific UTF-8 locales in real-life, like en_US.utf8 or de_DE.utf8.&lt;br /&gt;
Right now there is no UTF-8 aka Unicode-spectrum POSIX locale available.&lt;br /&gt;
&lt;br /&gt;
Some operating systems (OpenBSD) and some libraries (musl LibC) however, and already, &quot;always work with UTF-8 8-bit&quot; Unicode, giving it the name &quot;C.UTF-8&quot; (musl; and as can be seen, the usual naming scheme mess continues).]]></description><category>Base Definitions and Headers</category><pubDate>Fri, 02 Oct 2026 10:18:41 +0000</pubDate><guid>http://austingroupbugs.net/view.php?id=1548</guid><comments>http://austingroupbugs.net/view.php?id=1548#bugnotes</comments></item><item><title>0001930: Add flock(1) utility to manage locks from shell scripts</title><author></author><link>http://austingroupbugs.net/view.php?id=1930</link><description><![CDATA[I myself make extensive use of this utility in my system management etc shell scripts.&lt;br /&gt;
&lt;br /&gt;
It must be said it is not widely available -- as flock(1).&lt;br /&gt;
Linux has it, NetBSD has it; semantics are somewhat shared&lt;br /&gt;
FreeBSD and DragonFly have lockf(1), which is quite similar, but use lockf(3) (i think).&lt;br /&gt;
Busybox (Linux toolbox) has it, with some minimized interface, currently without -w (wait for lock).&lt;br /&gt;
&lt;br /&gt;
If POSIX could standardize this it would be great, and if it would include F_OFD_SETL locks when doing so, that would be even better!]]></description><category>Shell and Utilities</category><pubDate>Thu, 01 Oct 2026 19:56:10 +0000</pubDate><guid>http://austingroupbugs.net/view.php?id=1930</guid><comments>http://austingroupbugs.net/view.php?id=1930#bugnotes</comments></item><item><title>0001832: Add preadv() and pwritev()</title><author></author><link>http://austingroupbugs.net/view.php?id=1832</link><description><![CDATA[Many implementations offer preadv() and pwritev() interfaces, which are like&lt;br /&gt;
the existing readv() and writev() APIs, except that they use specified &lt;br /&gt;
positions instead of the current file offsets, just like the existing&lt;br /&gt;
pread() and pwrite() versions of read() and write().&lt;br /&gt;
&lt;br /&gt;
FreeBSD: &lt;br /&gt;
 - &lt;a href=&quot;https://man.freebsd.org/cgi/man.cgi?query=preadv&quot; rel=&quot;noopener&quot;&gt;https://man.freebsd.org/cgi/man.cgi?query=preadv&lt;/a&gt;&lt;br /&gt;
 - &lt;a href=&quot;https://man.freebsd.org/cgi/man.cgi?query=pwritev&quot; rel=&quot;noopener&quot;&gt;https://man.freebsd.org/cgi/man.cgi?query=pwritev&lt;/a&gt;&lt;br /&gt;
illumos: &lt;br /&gt;
 - &lt;a href=&quot;https://illumos.org/man/2/preadv&quot; rel=&quot;noopener&quot;&gt;https://illumos.org/man/2/preadv&lt;/a&gt;&lt;br /&gt;
 - &lt;a href=&quot;https://illumos.org/man/2/pwritev&quot; rel=&quot;noopener&quot;&gt;https://illumos.org/man/2/pwritev&lt;/a&gt;&lt;br /&gt;
Linux (GNU libc):  &lt;br /&gt;
 - &lt;a href=&quot;https://man7.org/linux/man-pages/man2/preadv.2.html&quot; rel=&quot;noopener&quot;&gt;https://man7.org/linux/man-pages/man2/preadv.2.html&lt;/a&gt;&lt;br /&gt;
NetBSD:&lt;br /&gt;
 - &lt;a href=&quot;https://man.netbsd.org/preadv.2&quot; rel=&quot;noopener&quot;&gt;https://man.netbsd.org/preadv.2&lt;/a&gt;&lt;br /&gt;
 - &lt;a href=&quot;https://man.netbsd.org/pwritev.2&quot; rel=&quot;noopener&quot;&gt;https://man.netbsd.org/pwritev.2&lt;/a&gt;&lt;br /&gt;
OpenBSD:&lt;br /&gt;
 - &lt;a href=&quot;https://man.openbsd.org/preadv.2&quot; rel=&quot;noopener&quot;&gt;https://man.openbsd.org/preadv.2&lt;/a&gt;&lt;br /&gt;
 - &lt;a href=&quot;https://man.openbsd.org/pwritev.2&quot; rel=&quot;noopener&quot;&gt;https://man.openbsd.org/pwritev.2&lt;/a&gt;&lt;br /&gt;
Solaris: &lt;br /&gt;
 - (man pages not online yet, just added in 11.4.69 in May 2024)&lt;br /&gt;
&lt;br /&gt;
Known consumers include PostgreSQL and libuv, as discussed in the thread at&lt;br /&gt;
&lt;a href=&quot;https://twitter.com/MengTangmu/status/1729704220368990235&quot; rel=&quot;noopener&quot;&gt;https://twitter.com/MengTangmu/status/1729704220368990235&lt;/a&gt; .]]></description><category>System Interfaces</category><pubDate>Thu, 01 Oct 2026 19:54:16 +0000</pubDate><guid>http://austingroupbugs.net/view.php?id=1832</guid><comments>http://austingroupbugs.net/view.php?id=1832#bugnotes</comments></item><item><title>0001824: cp: directories and symlinks</title><author></author><link>http://austingroupbugs.net/view.php?id=1824</link><description><![CDATA[I would like to request a clarification on the matter of cp's handling&lt;br /&gt;
of symbolic links in the destination.&lt;br /&gt;
&lt;br /&gt;
To begin with, I find the wording of the final paragraph of the&lt;br /&gt;
rationale (90876-90880) confusing.  It mentions “file types not&lt;br /&gt;
specified by the System Interfaces” and implies that symbolic links&lt;br /&gt;
fall into that category, but I can no indication anywhere else that&lt;br /&gt;
this is the case.  On the contrary, the definition of “file” in §3.139&lt;br /&gt;
on page 51 explicitly includes “symbolic link” in its enumeration of&lt;br /&gt;
file types (1592-1593), before stating that “[o]ther types of files&lt;br /&gt;
may be supported by the implementation” (1593-1594).&lt;br /&gt;
&lt;br /&gt;
If we jump back to the description section, the behavior of cp if a&lt;br /&gt;
source file is a directory and the corresponding destination file&lt;br /&gt;
exists and is a symbolic link is not entirely clear to me.  If you&lt;br /&gt;
believe the final paragraph of the rationale, it is covered by item 2c&lt;br /&gt;
(90638-90639) which says it's implementation-defined.  If you don't,&lt;br /&gt;
it depends on a couple of additional factors.  First, do you consider&lt;br /&gt;
the type of the link or the type of its target?  (I will come back to&lt;br /&gt;
this later.)  If you consider the type of the link, or if you consider&lt;br /&gt;
the type of its target and its target is not a directory, we turn to&lt;br /&gt;
item 2d (90640-90642) which says to emit an error, not descend, and go&lt;br /&gt;
on with the next source file.  If you consider the type of its target&lt;br /&gt;
and its target is a directory, we turn to item 2f (90649-90650) which&lt;br /&gt;
says to copy the contents of the source into the destination.&lt;br /&gt;
&lt;br /&gt;
I cannot find any discussion anywhere in the specification for cp of&lt;br /&gt;
what to do if the target of a symbolic link does not exist, unless the&lt;br /&gt;
second paragraph of item 4c (90697-90698) is intended to cover this&lt;br /&gt;
case (but 4c discusses the case where the source is a symbolic link,&lt;br /&gt;
so it doesn't tell us what to do if the destination exists, is a&lt;br /&gt;
symbolic link, and references a non-existent file).&lt;br /&gt;
&lt;br /&gt;
Now for the matter of whether, if the destination file is a symbolic&lt;br /&gt;
link, we should consider instead the type of its target.  The&lt;br /&gt;
descriptions of the -L and -P options repeatedly use the phrase&lt;br /&gt;
“symbolic links encountered during traversal of a file hierarchy”&lt;br /&gt;
(cf. 90625, 90627, 90712, 90715).  Given that the surrounding text&lt;br /&gt;
mostly refers to the source, it is not clear to me whether this phrase&lt;br /&gt;
only applies to the source, or to both the source and the destination.&lt;br /&gt;
Turning to historical precedent, BSD cp has traditionally followed&lt;br /&gt;
symbolic links in the destination hierarchy while GNU cp appears not&lt;br /&gt;
to.  FreeBSD recently changed its implementation to take the -R, -L,&lt;br /&gt;
and -P options into consideration when checking the destination as&lt;br /&gt;
well, while the GNU cp documentation appears to state quite clearly&lt;br /&gt;
(and, in my opinion, correctly) that these options only apply to the&lt;br /&gt;
source.  I believe that this change was a mistake, and I intend to&lt;br /&gt;
revert it.  However, I cannot make up my mind as to whether the&lt;br /&gt;
historical behavior of BSD cp (always follow symbolic links in the&lt;br /&gt;
destination) is correct.  I can easily conceive of situations where&lt;br /&gt;
you would want cp to do that, but it has been pointed out to me that&lt;br /&gt;
doing so, at least by default, can be considered a security risk.&lt;br /&gt;
&lt;br /&gt;
Note that in the case where the source file is a file and the&lt;br /&gt;
destination exists (item 3a lines 90657-90671), the file type of the&lt;br /&gt;
destination is not taken into account at all.  I am not as concerned&lt;br /&gt;
with this case as I am with the directory case, but it should probably&lt;br /&gt;
be addressed as well.&lt;br /&gt;
&lt;br /&gt;
To summarize:&lt;br /&gt;
&lt;br /&gt;
- The rationale implies that symbolic links are an extension, which I&lt;br /&gt;
  believe to be incorrect.&lt;br /&gt;
&lt;br /&gt;
- It is unclear whether symbolic links in the destination should be&lt;br /&gt;
  followed, and whether the -L and -P options apply, when inspecting&lt;br /&gt;
  destination paths.&lt;br /&gt;
&lt;br /&gt;
- There is historical precedent for answering these questions with&lt;br /&gt;
  “yes” and “no”, respectively.  Recent history suggests the wording&lt;br /&gt;
  is vague enough that implementers are confused on the second point.&lt;br /&gt;
&lt;br /&gt;
- The description section does not adequately discuss how cp should&lt;br /&gt;
  behave if the source is a directory and the destination exists and&lt;br /&gt;
  is a symbolic link.&lt;br /&gt;
&lt;br /&gt;
- The description section does not consider the type of the&lt;br /&gt;
  destination at all in the case where the source is a file and the&lt;br /&gt;
  destination exists.]]></description><category>Shell and Utilities</category><pubDate>Thu, 01 Oct 2026 19:53:37 +0000</pubDate><guid>http://austingroupbugs.net/view.php?id=1824</guid><comments>http://austingroupbugs.net/view.php?id=1824#bugnotes</comments></item><item><title>0001794: Please add tzalloc/tzfree and localtime_rz, mktime_z interfaces</title><author></author><link>http://austingroupbugs.net/view.php?id=1794</link><description><![CDATA[[I copy a mail from austin-group-l@]&lt;br /&gt;
&lt;br /&gt;
As stated in [1] the localtime() and mktime() series of functions&lt;br /&gt;
have the inherent problem of not being thread-safe regarding&lt;br /&gt;
possible changes to the time zone: in a pure POSIX environment&lt;br /&gt;
changes to TZ always affect global data.&lt;br /&gt;
&lt;br /&gt;
If my memory serves correctly, about a decade ago the NetBSD&lt;br /&gt;
project contacted the IANA TZ maintainer in order to upstream&lt;br /&gt;
a new, truly thread-safe interface that addresses this issue.&lt;br /&gt;
Since some time in 2014 (see [1]) the IANA TZ database, which&lt;br /&gt;
includes the Public Domain aka open source code as is used by many&lt;br /&gt;
projects to implement the time related programming interface,&lt;br /&gt;
includes a new series of functions:&lt;br /&gt;
&lt;br /&gt;
       timezone_t tzalloc(char const *TZ);&lt;br /&gt;
       void tzfree(timezone_t tz);&lt;br /&gt;
&lt;br /&gt;
       struct tm *localtime_rz(timezone_t restrict zone,&lt;br /&gt;
           time_t const *restrict clock,&lt;br /&gt;
           struct tm *restrict result);&lt;br /&gt;
           struct tm *restrict tm);&lt;br /&gt;
       time_t mktime_z(timezone_t restrict zone,&lt;br /&gt;
           struct tm *restrict tm);&lt;br /&gt;
&lt;br /&gt;
  [1] &lt;a href=&quot;https://austingroupbugs.net/view.php?id=1788&quot; rel=&quot;noopener&quot;&gt;https://austingroupbugs.net/view.php?id=1788&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
If POSIX would offer this interface, the open source (public&lt;br /&gt;
domain) code and manual of which are available via the IANA TZ,&lt;br /&gt;
truly &quot;thread-safe&quot; time programming becomes possible in POSIX.&lt;br /&gt;
&lt;br /&gt;
This is especially important if no CLOCK_TAI is available.&lt;br /&gt;
For an example, here is what the widely used NTP server chrony&lt;br /&gt;
performs in order to achieve its task:&lt;br /&gt;
&lt;br /&gt;
  tm = gmtime(&amp;when);&lt;br /&gt;
  if (!tm)&lt;br /&gt;
    return tz_leap;&lt;br /&gt;
&lt;br /&gt;
  stm = *tm;&lt;br /&gt;
&lt;br /&gt;
  /* Temporarily switch to the timezone containing leap seconds */&lt;br /&gt;
  tz_env = getenv(&quot;TZ&quot;);&lt;br /&gt;
  if (tz_env) {&lt;br /&gt;
    if (strlen(tz_env) &gt;= sizeof (tz_orig))&lt;br /&gt;
      return tz_leap;&lt;br /&gt;
    strcpy(tz_orig, tz_env);&lt;br /&gt;
  }&lt;br /&gt;
  setenv(&quot;TZ&quot;, leap_tzname, 1);&lt;br /&gt;
  tzset();&lt;br /&gt;
&lt;br /&gt;
  /* Get the TAI-UTC offset, which started at the epoch at 10 seconds */&lt;br /&gt;
  t = mktime(&amp;stm);&lt;br /&gt;
  if (t != -1)&lt;br /&gt;
    tz_tai_offset = t - when + 10;&lt;br /&gt;
&lt;br /&gt;
  /* Set the time to 23:59:60 and see how it overflows in mktime() */&lt;br /&gt;
  stm.tm_sec = 60;&lt;br /&gt;
  stm.tm_min = 59;&lt;br /&gt;
  stm.tm_hour = 23;&lt;br /&gt;
&lt;br /&gt;
  t = mktime(&amp;stm);&lt;br /&gt;
&lt;br /&gt;
  if (tz_env)&lt;br /&gt;
    setenv(&quot;TZ&quot;, tz_orig, 1);&lt;br /&gt;
  else&lt;br /&gt;
    unsetenv(&quot;TZ&quot;);&lt;br /&gt;
  tzset();&lt;br /&gt;
&lt;br /&gt;
  if (t == -1)&lt;br /&gt;
    return tz_leap;&lt;br /&gt;
&lt;br /&gt;
  if (stm.tm_sec == 60)&lt;br /&gt;
    tz_leap = LEAP_InsertSecond;&lt;br /&gt;
  else if (stm.tm_sec == 1)&lt;br /&gt;
    tz_leap = LEAP_DeleteSecond;&lt;br /&gt;
&lt;br /&gt;
  *tai_offset = tz_tai_offset;&lt;br /&gt;
&lt;br /&gt;
This is especially important if no CLOCK_TAI is available.&lt;br /&gt;
For an example, here is what the widely used NTP server chrony&lt;br /&gt;
performs in order to achieve its task:&lt;br /&gt;
&lt;br /&gt;
  tm = gmtime(&amp;when);&lt;br /&gt;
  if (!tm)&lt;br /&gt;
    return tz_leap;&lt;br /&gt;
&lt;br /&gt;
  stm = *tm;&lt;br /&gt;
&lt;br /&gt;
  /* Temporarily switch to the timezone containing leap seconds */&lt;br /&gt;
  tz_env = getenv(&quot;TZ&quot;);&lt;br /&gt;
  if (tz_env) {&lt;br /&gt;
    if (strlen(tz_env) &gt;= sizeof (tz_orig))&lt;br /&gt;
      return tz_leap;&lt;br /&gt;
    strcpy(tz_orig, tz_env);&lt;br /&gt;
  }&lt;br /&gt;
  setenv(&quot;TZ&quot;, leap_tzname, 1);&lt;br /&gt;
  tzset();&lt;br /&gt;
&lt;br /&gt;
  /* Get the TAI-UTC offset, which started at the epoch at 10 seconds */&lt;br /&gt;
  t = mktime(&amp;stm);&lt;br /&gt;
  if (t != -1)&lt;br /&gt;
    tz_tai_offset = t - when + 10;&lt;br /&gt;
&lt;br /&gt;
  /* Set the time to 23:59:60 and see how it overflows in mktime() */&lt;br /&gt;
  stm.tm_sec = 60;&lt;br /&gt;
  stm.tm_min = 59;&lt;br /&gt;
  stm.tm_hour = 23;&lt;br /&gt;
&lt;br /&gt;
  t = mktime(&amp;stm);&lt;br /&gt;
&lt;br /&gt;
  if (tz_env)&lt;br /&gt;
    setenv(&quot;TZ&quot;, tz_orig, 1);&lt;br /&gt;
  else&lt;br /&gt;
    unsetenv(&quot;TZ&quot;);&lt;br /&gt;
  tzset();&lt;br /&gt;
&lt;br /&gt;
  if (t == -1)&lt;br /&gt;
    return tz_leap;&lt;br /&gt;
&lt;br /&gt;
  if (stm.tm_sec == 60)&lt;br /&gt;
    tz_leap = LEAP_InsertSecond;&lt;br /&gt;
  else if (stm.tm_sec == 1)&lt;br /&gt;
    tz_leap = LEAP_DeleteSecond;&lt;br /&gt;
&lt;br /&gt;
  *tai_offset = tz_tai_offset;&lt;br /&gt;
&lt;br /&gt;
I want to point out that setting an environment variable can be&lt;br /&gt;
a costly operation, but moreover changing the timezone as such&lt;br /&gt;
may involve several file system operations, being a potentially&lt;br /&gt;
very expensive operation.  (By the way the draft 4 uses &quot;file&lt;br /&gt;
system&quot; as well as &quot;filesystem&quot;.)&lt;br /&gt;
&lt;br /&gt;
With the new interface two timezone objects can be preallocated,&lt;br /&gt;
and the operations are totally detached from global data and&lt;br /&gt;
multithread-safe.]]></description><category>System Interfaces</category><pubDate>Thu, 01 Oct 2026 19:52:45 +0000</pubDate><guid>http://austingroupbugs.net/view.php?id=1794</guid><comments>http://austingroupbugs.net/view.php?id=1794#bugnotes</comments></item><item><title>0001774: Support ' &lt;apostrophe&gt; as a format specifier flag character in utilities</title><author></author><link>http://austingroupbugs.net/view.php?id=1774</link><description><![CDATA[[Page numbers against draft 3 for Issue 8; this will need to be updated once Issue 8 is finalized]&lt;br /&gt;
&lt;br /&gt;
During the 31 Aug 2023 teleconference, it was noted that many, but not all, shells have already implemented support for printf &quot;%'i&quot; 1000 outputting thousands separators (for example, producing &quot;1,000&quot; in the en_US.UTF-8 locale), matching what is already specified for the &lt;i&gt;printf&lt;/i&gt;( ) function under &lt;CX&gt; shading.  However, we also discussed that standardizing this would be a feature addition, and therefore too late for Issue 8, and thus not fit for inclusion in &lt;a href=&quot;http://austingroupbugs.net/view.php?id=1771&quot;&gt;0001771&lt;/a&gt;]]></description><category>Base Definitions and Headers</category><pubDate>Thu, 01 Oct 2026 19:48:49 +0000</pubDate><guid>http://austingroupbugs.net/view.php?id=1774</guid><comments>http://austingroupbugs.net/view.php?id=1774#bugnotes</comments></item><item><title>0001635: iconv: please be more explicit in input-not-convertible case</title><author></author><link>http://austingroupbugs.net/view.php?id=1635</link><description><![CDATA[issue 1007 resolves this to&lt;br /&gt;
&lt;br /&gt;
    If iconv() encounters a character in the input buffer that is valid, but for which an identical character does not exist in the output codeset:&lt;br /&gt;
&lt;br /&gt;
        If either the //IGNORE or the //NON_IDENTICAL_DISCARD indicator suffix was specified when the conversion descriptor cd was opened, the character shall be discarded but shall still be counted in the return value of the iconv() call.&lt;br /&gt;
&lt;br /&gt;
        If the //TRANSLIT indicator suffix was specified when the conversion descriptor cd was opened, an implementation-defined transliteration shall be performed, if possible, to convert the character into one or more characters of the output codeset that best resemble the input character. The character shall be counted as one character in the return value of the iconv() call, regardless of the number of output characters.&lt;br /&gt;
&lt;br /&gt;
        If no indicator suffix was specified when the conversion descriptor cd was opened, or the //TRANSLIT indicator suffix was specified but no transliteration of the character is possible, iconv() shall perform an implementation-defined conversion on the character and it shall be counted in the return value of the iconv() call.&lt;br /&gt;
&lt;br /&gt;
However, as Martin Sebor stated in the issue description,&lt;br /&gt;
&lt;br /&gt;
 	The specification for the iconv() function assumes that every input sequence that is valid in the source codeset is convertible to some sequence in the destination codeset. In particular, the specification doesn't allow the function to fail when a valid sequence in the source codeset cannot be represented in the destination codeset. As an example where this assumption doesn't hold, consider a conversion from UTF-8 to ISO-8859 where a large number of source characters don't have equivalents in the destination codeset.&lt;br /&gt;
&lt;br /&gt;
 	A survey of a subset of existing implementations shows that they fail with EILSEQ in such cases, despite the specification defining the error condition as &quot;Input conversion stopped due to an input byte that does not belong to the input codeset.&quot; &lt;br /&gt;
&lt;br /&gt;
And this is true, GNU C library and GNU libiconv seem to fail output conversion immediately with the same EILSEQ error that denotes invalid input data.&lt;br /&gt;
(A much more drastic error, .. is it!?!)]]></description><category>Base Definitions and Headers</category><pubDate>Thu, 01 Oct 2026 19:47:24 +0000</pubDate><guid>http://austingroupbugs.net/view.php?id=1635</guid><comments>http://austingroupbugs.net/view.php?id=1635#bugnotes</comments></item><item><title>0001818: Add strcasestr() &amp; strcasestr_l()</title><author></author><link>http://austingroupbugs.net/view.php?id=1818</link><description><![CDATA[strcasestr(), a case insensitive version of strstr(), is a popular extension&lt;br /&gt;
implemented on many platforms already.  Many of them also offer the strcasestr_l() variant to specify the locale to be used for determining&lt;br /&gt;
matching characters.&lt;br /&gt;
&lt;br /&gt;
FreeBSD: &lt;a href=&quot;https://man.freebsd.org/cgi/man.cgi?query=strcasestr&amp;sektion=3&quot; rel=&quot;noopener&quot;&gt;https://man.freebsd.org/cgi/man.cgi?query=strcasestr&amp;sektion=3&lt;/a&gt;&lt;br /&gt;
illumos: &lt;a href=&quot;https://illumos.org/man/3C/strcasestr&quot; rel=&quot;noopener&quot;&gt;https://illumos.org/man/3C/strcasestr&lt;/a&gt;&lt;br /&gt;
Linux (GNU libc): &lt;a href=&quot;https://man7.org/linux/man-pages/man3/strcasestr.3.html&quot; rel=&quot;noopener&quot;&gt;https://man7.org/linux/man-pages/man3/strcasestr.3.html&lt;/a&gt;&lt;br /&gt;
MacOS: &lt;a href=&quot;https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man3/strcasestr.3.html&quot; rel=&quot;noopener&quot;&gt;https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man3/strcasestr.3.html&lt;/a&gt;&lt;br /&gt;
NetBSD: &lt;a href=&quot;https://man.netbsd.org/strcasestr.3&quot; rel=&quot;noopener&quot;&gt;https://man.netbsd.org/strcasestr.3&lt;/a&gt;&lt;br /&gt;
OpenBSD: &lt;a href=&quot;https://man.openbsd.org/strcasestr.3&quot; rel=&quot;noopener&quot;&gt;https://man.openbsd.org/strcasestr.3&lt;/a&gt;&lt;br /&gt;
Solaris: &lt;a href=&quot;https://docs.oracle.com/cd/E88353_01/html/E37843/strcasestr-3c.html&quot; rel=&quot;noopener&quot;&gt;https://docs.oracle.com/cd/E88353_01/html/E37843/strcasestr-3c.html&lt;/a&gt;]]></description><category>System Interfaces</category><pubDate>Thu, 01 Oct 2026 19:44:30 +0000</pubDate><guid>http://austingroupbugs.net/view.php?id=1818</guid><comments>http://austingroupbugs.net/view.php?id=1818#bugnotes</comments></item><item><title>0001831: how do you get the timestamp resolution of a symlink?</title><author></author><link>http://austingroupbugs.net/view.php?id=1831</link><description><![CDATA[The description of pathconf() doesn't contain any specific wording about how it should handle a path which names a symlink.  Contrast rename()'s description which says&lt;br /&gt;
    If either the old or new argument names a symbolic link, rename() shall&lt;br /&gt;
    operate on the symbolic link itself, and shall not resolve the last&lt;br /&gt;
    component of the argument.&lt;br /&gt;
&lt;br /&gt;
and unlink()'s description which says&lt;br /&gt;
    If path names a symbolic link, unlink() shall remove the symbolic link&lt;br /&gt;
    named by path and shall not affect any file or directory named by the&lt;br /&gt;
    contents of the symbolic link.&lt;br /&gt;
&lt;br /&gt;
It thus appears that pathconf() is expected to completely follow symlinks and report the values appropriate for the final result of the pathname resolution.&lt;br /&gt;
&lt;br /&gt;
However, it would be useful to be able to get the timestamp resolution (_PC_TIMESTAMP_RESOLUTION) for a symlink, even if it's dangling or points to a path on a filesystem with a different timestamp resolution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(This was encountered when trying to fix a pax implementation's handling of timestamp comparison for -u when the target filesystem had courser resolution that the source filesystem by using pathconf(_PC_TIMESTAMP_RESOLUTION) on the target path to handle the loss of high-precision time info...but the symlink pointed to a location with high-precision timestamps so it couldn't know to round the times when doing the comparison...)]]></description><category>System Interfaces</category><pubDate>Thu, 01 Oct 2026 19:43:38 +0000</pubDate><guid>http://austingroupbugs.net/view.php?id=1831</guid><comments>http://austingroupbugs.net/view.php?id=1831#bugnotes</comments></item><item><title>0000864: Insufficient specification of storage requirements for synchronization objects</title><author></author><link>http://austingroupbugs.net/view.php?id=864</link><description><![CDATA[This report actually covers multiple questions, mostly related to process-shared synchronization objects, but they all stem from a lack of specification of the storage requirements for synchronization objects, which is the core issue I'm reporting.&lt;br /&gt;
&lt;br /&gt;
The rationale for pthread_mutexattr_init and pthread_mutexattr_destroy provide the only documentation I can find regarding the intended supported usage cases for process-shared mutexes and their storage in shared memory, but this text is not normative.&lt;br /&gt;
&lt;br /&gt;
Here are some specific questions I have:&lt;br /&gt;
&lt;br /&gt;
1. Is it permitted to perform operations on a non-process-shared synchronization objects if they are stored in shared memory by the process that created them, but only used by this process? If so, if this shared memory is mapped more than once at different addresses, is it permitted to access the non-process-shared object mapped at an address different from the address where it was originally initialized?&lt;br /&gt;
&lt;br /&gt;
2. If storage for a synchronization object is deallocated without first destroying the object, is the behavior undefined? The answer to this question has implications for shared memory objects which have already been unlinked and for which there are no file descriptors, which cease to exist when the last process with a mapping unmaps them -- in this case the deallocation of storage is not explicit.&lt;br /&gt;
&lt;br /&gt;
3. Under what conditions can the storage for a synchronization object in MAP_SHARED storage be unmapped without destroying it? As an example of a difficult case, if two threads in a process both access a mutex via a common shared memory mapping, is thread A permitted to unmap the memory after successfully locking and unlocking the mutex if (1) thread B was the previous owner of the mutex, (2) thread B will not attempt to access the mutex again, but (3) due to scheduling, thread B has not actually finished returning from the pthread_mutex_unlock function (this is related to issue 811, but for unmapping rather than destruction).&lt;br /&gt;
&lt;br /&gt;
4. Is it permitted for a thread to lock a mutex in shared memory, unmap it, then later map it again (possibly at a different address) to unlock it?]]></description><category>System Interfaces</category><pubDate>Thu, 01 Oct 2026 19:42:57 +0000</pubDate><guid>http://austingroupbugs.net/view.php?id=864</guid><comments>http://austingroupbugs.net/view.php?id=864#bugnotes</comments></item><item><title>0001291: Add method to obtain pthread attributes</title><author></author><link>http://austingroupbugs.net/view.php?id=1291</link><description><![CDATA[This is a commonly added pthread capability but there is little agreement on the API name.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://musl.openwall.narkive.com/dD88I7eH/pthread-getattr-np&quot; rel=&quot;noopener&quot;&gt;https://musl.openwall.narkive.com/dD88I7eH/pthread-getattr-np&lt;/a&gt; provides this list of API names for this capability in the context of discussing how to get the current stack information:&lt;br /&gt;
&lt;br /&gt;
glibc: pthread_getattr_np&lt;br /&gt;
freebsd: pthread_attr_get_np&lt;br /&gt;
netbsd: pthread_attr_get_np and pthread_getattr_np&lt;br /&gt;
&lt;br /&gt;
RTEMS follows glibc/linux with pthread_getattr_np.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If this capability is provided, then the current stack information can also be obtained.&lt;br /&gt;
&lt;br /&gt;
The naming pattern pthread_[sg]attr_* is used to modify the pthread_attr_t structure used in a pthread_create() call. The Linux name of pthread_attr_get() seems like a choice which is an easy name and wouldn't be confused.]]></description><category>Base Definitions and Headers</category><pubDate>Thu, 01 Oct 2026 19:39:32 +0000</pubDate><guid>http://austingroupbugs.net/view.php?id=1291</guid><comments>http://austingroupbugs.net/view.php?id=1291#bugnotes</comments></item><item><title>0000031: Want to know what mail header information is put in bug mails</title><author></author><link>http://austingroupbugs.net/view.php?id=31</link><description><![CDATA[is there a difference in the email headers between types of mail notifications?&lt;br /&gt;
bugzilla does this. enables mail sorting.]]></description><category>Aardvark Mk III</category><pubDate>Thu, 01 Oct 2026 19:27:18 +0000</pubDate><guid>http://austingroupbugs.net/view.php?id=31</guid><comments>http://austingroupbugs.net/view.php?id=31#bugnotes</comments></item><item><title>0000132: Obsolete tags listed as "existing tags"</title><author></author><link>http://austingroupbugs.net/view.php?id=132</link><description><![CDATA[There are some tags that were used during development of Aardvark Mk&lt;br /&gt;
III that are no longer needed, and have been removed from all bugs&lt;br /&gt;
that were tagged with them.  They are:&lt;br /&gt;
&lt;br /&gt;
in aardvark, Real bug, real bug in aardvark, real bug not in aardvark&lt;br /&gt;
&lt;br /&gt;
These tags are still included in the drop-down list of &quot;existing tags&quot;&lt;br /&gt;
that is presented when adding a tag to a bug, or when choosing tags in&lt;br /&gt;
the View Issues filter.  Since they are not intended for future use,&lt;br /&gt;
it would be good if they could be removed from the list of existing tags.]]></description><category>Aardvark Mk III</category><pubDate>Thu, 01 Oct 2026 19:26:33 +0000</pubDate><guid>http://austingroupbugs.net/view.php?id=132</guid><comments>http://austingroupbugs.net/view.php?id=132#bugnotes</comments></item><item><title>0001999: Session timeouts too short</title><author></author><link>http://austingroupbugs.net/view.php?id=1999</link><description><![CDATA[I just spent an hour or two filling in an issue report (a long one)&lt;br /&gt;
only for when I submitted it to be told there was an invalid security&lt;br /&gt;
token, either I had submitted twice (no) or the session had timed&lt;br /&gt;
out (possible, given it had taken a LONG time to get all the details&lt;br /&gt;
page numbers, line numbers, ... inserted properly. And to decide&lt;br /&gt;
what exactly I needed to report.&lt;br /&gt;
&lt;br /&gt;
It told me to press the back button on my browser. I did. All the&lt;br /&gt;
text I had entered was gone (in previous interfaces that didn't happen,&lt;br /&gt;
I could create a new report, and cut and paste everything from the old&lt;br /&gt;
to the new, which would take much less time, and no timeout would&lt;br /&gt;
occur - it has been ages since my last interaction with this, I had forgotten&lt;br /&gt;
this issue.]]></description><category>Aardvark 2025</category><pubDate>Thu, 01 Oct 2026 19:22:51 +0000</pubDate><guid>http://austingroupbugs.net/view.php?id=1999</guid><comments>http://austingroupbugs.net/view.php?id=1999#bugnotes</comments></item><item><title>0000039: tag filter ignores first tag</title><author></author><link>http://austingroupbugs.net/view.php?id=39</link><description><![CDATA[I think there is an off-by-one error in the way the &quot;View Issues&quot; filter processes the selected tags.  It ignores the first tag in the list.&lt;br /&gt;
&lt;br /&gt;
For example, with the default filters there are currently 15 issues listed.  Selecting &quot;real bug in aardvark&quot; from the tag list and clicking &quot;Apply Filter&quot; produces the same list.  However, selecting the same tag again (so that the filter is now looking for &quot;real bug in aardvark, real bug in aardvark&quot;) and re-applying produces the correct list of the 5 issues with that tag.]]></description><category></category><pubDate>Thu, 01 Oct 2026 19:20:49 +0000</pubDate><guid>http://austingroupbugs.net/view.php?id=39</guid><comments>http://austingroupbugs.net/view.php?id=39#bugnotes</comments></item><item><title>0001982: probably-unintended wording difference with ISO C in mbrtowc(3) and mbrtowcs(3)</title><author></author><link>http://austingroupbugs.net/view.php?id=1982</link><description><![CDATA[I'm forwarding a report I received by email from someone else.&lt;br /&gt;
&lt;br /&gt;
On 2026-05-21T23:08:20+0800, Kang-Che Sung wrote:&lt;br /&gt;
&gt; There's a discrepancy in the wording of the mbrtowc(3) function (and&lt;br /&gt;
&gt; similarly, mbsrtowcs(3) function) between in POSIX and ISO C. It could be&lt;br /&gt;
&gt; reported as an issue to POSIX (the Austin Group), and I am not sure if you&lt;br /&gt;
&gt; can do that.&lt;br /&gt;
&gt;&lt;br /&gt;
&gt; In ISO C (I checked in both C99 and C23, in particular the N3220 draft),&lt;br /&gt;
&gt; there's a statement that if mbrtowc() returns a (size_t)(-1) as an encoding&lt;br /&gt;
&gt; error occurs, &quot;the conversion state is unspecified&quot;.&lt;br /&gt;
&gt;&lt;br /&gt;
&gt; POSIX (see &lt;&lt;br /&gt;
&gt; &lt;a href=&quot;https://pubs.opengroup.org/onlinepubs/9799919799/functions/mbrtowc.html&gt;&quot; rel=&quot;noopener&quot;&gt;https://pubs.opengroup.org/onlinepubs/9799919799/functions/mbrtowc.html&gt;&lt;/a&gt;),&lt;br /&gt;
&gt; for the same part it says &quot;the conversion state is undefined&quot;.&lt;br /&gt;
&gt;&lt;br /&gt;
&gt; This wording difference matters when the &quot;unspecified behavior&quot; and&lt;br /&gt;
&gt; &quot;undefined behavior&quot; are technically different. An example is how the&lt;br /&gt;
&gt; mbstate_t object can be reused after an invalid sequence is encountered.&lt;br /&gt;
&gt; When the state is said to be &quot;undefined&quot; it's implied to be not usable&lt;br /&gt;
&gt; again (unless it is reset, e.g., by an `mbrtowc(NULL, &quot;&quot;, 1, ps)` call).&lt;br /&gt;
&gt; When it's &quot;unspecified&quot; then implementations can allow the state to be&lt;br /&gt;
&gt; reused for certain encodings (possible for UTF-8, for example).&lt;br /&gt;
&gt;&lt;br /&gt;
&gt; This is something I discovered accidentally when researching the multibyte&lt;br /&gt;
&gt; functions in the C standard library and how they work with an encoding like&lt;br /&gt;
&gt; UTF-8.&lt;br /&gt;
&lt;br /&gt;
Reported-by: Kang-Che Sung &lt;&lt;a href=&quot;mailto:explorer09@gmail.com&quot;&gt;explorer09@gmail.com&lt;/a&gt;&gt;]]></description><category>System Interfaces</category><pubDate>Wed, 30 Sep 2026 08:59:32 +0000</pubDate><guid>http://austingroupbugs.net/view.php?id=1982</guid><comments>http://austingroupbugs.net/view.php?id=1982#bugnotes</comments></item><item><title>0001987: The option value type for TCP_NODELAY is not specified.</title><author></author><link>http://austingroupbugs.net/view.php?id=1987</link><description><![CDATA[The option value type for TCP_NODELAY is not specified. This seem to be the case since at least Issue 6.&lt;br /&gt;
&lt;br /&gt;
Many other options have types of rank `int`, and their Windows counterparts often have DWORD or similar, as such I believe the type for this option value is most likely also `int`, rather than `_Bool` which may have issue with ABI compatibility.]]></description><category>Base Definitions and Headers</category><pubDate>Wed, 30 Sep 2026 08:47:22 +0000</pubDate><guid>http://austingroupbugs.net/view.php?id=1987</guid><comments>http://austingroupbugs.net/view.php?id=1987#bugnotes</comments></item><item><title>0001997: cp,mv,pax should not need to diagnose timestamp downresing</title><author></author><link>http://austingroupbugs.net/view.php?id=1997</link><description><![CDATA[When the command ‘mv /a/SOURCE DEST’ crosses file system boundaries, the resulting file DEST can have a timestamp with less low-order information as described by futimens (POSIX.1-2024 page 1075 lines 36821–36822). For example, the source file’s timestamp might be 1786900895.478636836 but the destinations might be on a FAT32 filesystem so its timestamp might be only 1786900895.47, as FAT32 has only 10 ms resolution.&lt;br /&gt;
&lt;br /&gt;
This topic recently came up in a bug report for GNU mv &lt;&lt;a href=&quot;https://bugs.gnu.org/13601#40&gt;&quot; rel=&quot;noopener&quot;&gt;https://bugs.gnu.org/13601#40&gt;.&lt;/a&gt; One commenter there said that this loss of information triggers the clause for mv (page 3199 lines 108114–108115) saying “If the duplication of the file characteristics fails for any reason, mv shall write a diagnostic message to standard error” which means a diagnostic is required.&lt;br /&gt;
&lt;br /&gt;
GNU mv, and I expect all other mv implementations, does not do that. Instead, it uses futimens or utimensat to set DEST’s timestamps, and if that succeeds it does not issue a diagnostic. Checking whether DEST’s timestamp lost low-order info would require another system call, and I don’t know of any mv implementation that does so.&lt;br /&gt;
&lt;br /&gt;
A clarification is needed here for the phrase “duplication of the file characteristic fails for any reason”. Does the phrase mean that (a) a system call like futimens failed, or does it mean that (b) the destination’s characteristics disagree, even slightly, from the source’s? Although implementations have chosen (a) POSIX could be read as requiring (b).&lt;br /&gt;
&lt;br /&gt;
If an implementation wanted to implement (b), for efficiency it would be helpful if utimensat acquired an additional flag to cause the system call to fail if the timestamp is downresed. However, that would be a separate topic from this bug report, and I know of no platform that has such a flag so at this point it would be pure invention on the POSIX committee’s part.&lt;br /&gt;
&lt;br /&gt;
In the DESIRED ACTION I have attempted to word things so that an implementation can do either (a) or (b). (b) is allowed because an implementation can always issue a diagnostic whenever it likes, so long as it does not change the exit status.]]></description><category>Shell and Utilities</category><pubDate>Wed, 30 Sep 2026 08:43:59 +0000</pubDate><guid>http://austingroupbugs.net/view.php?id=1997</guid><comments>http://austingroupbugs.net/view.php?id=1997#bugnotes</comments></item><item><title>0000921: please add support for the tt (typewriter text) tag</title><author></author><link>http://austingroupbugs.net/view.php?id=921</link><description><![CDATA[If a comment contains lessthan-tt-greaterthan then Mantis escapes the angle brackets rather than formatting the text in a monospace font.]]></description><category>Aardvark Mk III</category><pubDate>Mon, 28 Sep 2026 17:24:37 +0000</pubDate><guid>http://austingroupbugs.net/view.php?id=921</guid><comments>http://austingroupbugs.net/view.php?id=921#bugnotes</comments></item><item><title>0001893: Many links are followed by extra spaces</title><author></author><link>http://austingroupbugs.net/view.php?id=1893</link><description><![CDATA[Many links in the HTML edition are followed by undesirable spaces that are not present in the PDF edition.  I believe most if not all of the affected links are cross-references, but I don't know whether all cross-references are affected.  These extra spaces should be removed, if possible.&lt;br /&gt;
&lt;br /&gt;
(This problem is also widespread in the 2008 edition of Issue 7 but is significantly rarer in the 2013, 2016, and 2018 editions.)]]></description><category>Base Definitions and Headers</category><pubDate>Mon, 28 Sep 2026 15:32:43 +0000</pubDate><guid>http://austingroupbugs.net/view.php?id=1893</guid><comments>http://austingroupbugs.net/view.php?id=1893#bugnotes</comments></item><item><title>0000694: missing PDF bookmark for mbsnrtowcs()</title><author></author><link>http://austingroupbugs.net/view.php?id=694</link><description><![CDATA[The PDF for Issue7+TC1 contains hierarchical bookmarks (PDF metadata) to help the reader easily jump between sections.  These bookmarks are missing an entry for mbsnrtowcs() (to jump to page 1289) under XSH Chapter 3.&lt;br /&gt;
&lt;br /&gt;
(The HTML version is OK -- the link to mbsnrtowcs() is not missing.)]]></description><category>System Interfaces</category><pubDate>Mon, 28 Sep 2026 15:29:11 +0000</pubDate><guid>http://austingroupbugs.net/view.php?id=694</guid><comments>http://austingroupbugs.net/view.php?id=694#bugnotes</comments></item><item><title>0001985: Add a dark theme to the HTML rendition</title><author></author><link>http://austingroupbugs.net/view.php?id=1985</link><description><![CDATA[Right now, there's only a light theme of the HTML rendition, which has a bright background.&lt;br /&gt;
&lt;br /&gt;
This may cause eye sore for some readers, who switches back and forth between their IDE and the standard text.]]></description><category>Base Definitions and Headers</category><pubDate>Mon, 28 Sep 2026 15:25:18 +0000</pubDate><guid>http://austingroupbugs.net/view.php?id=1985</guid><comments>http://austingroupbugs.net/view.php?id=1985#bugnotes</comments></item></channel></rss>
