<div dir="ltr"><div>If you allow dot, you&#39;ll want to add checks that &quot;.&quot; and &quot;..&quot; are not used as file name components.<br><br>Our guidelines in Theory prevent us from doing this to ourselves.  It states, &quot;Within a file name component, use only
 ASCII letters, [dot, hyphen, and underscore].&quot;  (Slash delimits 
components, and plus is used in some Etc zones.)  However, Theory also says to &quot;[o]mit [dot] from abbreviations in names&quot;.<br><br>So the question is: Could we imagine some use case where someone (likely not us) might want to use a dot that makes this worthwhile?<br>
</div><div><br></div><div>A related question that arose along those lines: Are we already checking that components do not start with a hyphen?  Theory specifies that as well.<br></div></div><div class="gmail_extra"><br clear="all">
<div>--<br>Tim Parenti<br></div>
<br><br><div class="gmail_quote">On 25 June 2014 20:52, Arthur David Olson <span dir="ltr">&lt;<a href="mailto:arthurdavidolson@gmail.com" target="_blank">arthurdavidolson@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><div><div>I limited the BENIGN list to charcters other than [a-zA-Z0-9] currently used in distribution file names; &lt;dot&gt; could be added.<br><br></div>(The &quot;etcetera&quot; file has lines such as &quot;Zone Etc/GMT+10...&quot;)<br>

<br></div><div>On an unrelated note: I checked; &quot;zic -v&quot; already checks abbreviations and issues warnings.<span class="HOEnZb"><font color="#888888"><br></font></span></div><span class="HOEnZb"><font color="#888888"><div>
<br></div>    --ado<br></font></span></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Jun 25, 2014 at 8:36 PM, Jonathan Leffler <span dir="ltr">&lt;<a href="mailto:jonathan.leffler@gmail.com" target="_blank">jonathan.leffler@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div>Dot is pretty benign in a file name, isn&#39;t it?<br><br></div>POSIX defines the portable file name character set as:<br>

<br><h3 style="font-family:Arial,Helvetica,sans-serif;color:rgb(0,102,0);font-size:14pt;font-style:normal;font-variant:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255)">



<a name="146d5aa297c2b2ad_146d59a760ca6bb5_tag_03_278">3.278<span> </span></a>Portable Filename Character Set</h3><p style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">



The set of characters from which portable filenames are constructed.</p><pre style="font-size:11pt;font-family:monospace;color:rgb(0,0,0);font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;word-spacing:0px">

<tt>A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
0 1 2 3 4 5 6 7 8 9 . _ -
</tt></pre><br>(<a href="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_278" target="_blank">http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_278</a>)<br></div>

or<br>(<a href="http://pubs.opengroup.org/onlinepubs/9699919799/toc.htm" target="_blank">http://pubs.opengroup.org/onlinepubs/9699919799/toc.htm</a> and under Base Definitions, section 3 Definitions, and thence to 3.278).<br>



<br></div>Your list omits . &lt;dot&gt; and adds + &lt;plus&gt; (and includes / &lt;slash&gt; the path separator).<br><br><div><div><br></div></div></div><div class="gmail_extra"><div><div><br><br><div class="gmail_quote">



On Wed, Jun 25, 2014 at 4:37 PM, Arthur David Olson <span dir="ltr">&lt;<a href="mailto:arthurdavidolson@gmail.com" target="_blank">arthurdavidolson@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div dir="ltr"><div><div>To help ensure that non-ASCII characters don&#39;t appear in distribution filenames,<br></div>changes to zic.c so that the &quot;-v&quot; option warns about them. Both attached and<br>tab-mangled below.<br>




<br></div>    --ado<br><br>*** /tmp/,azic.c    2014-06-25 19:32:44.803874900 -0400<br>--- /tmp/,bzic.c    2014-06-25 19:32:44.906880800 -0400<br>***************<br>*** 134,139 ****<br>--- 134,140 ----<br>  static int    itsdir(const char * name);<br>




  static int    lowerit(int c);<br>  static int    mkdirs(char * filename);<br>+ static void    namecheck(const char * name);<br>  static void    newabbr(const char * abbr);<br>  static zic_t    oadd(zic_t t1, zic_t t2);<br>




  static void    outzone(const struct zone * zp, int ntzones);<br>***************<br>*** 621,632 ****<br>--- 622,652 ----<br>      return (errors == 0) ? EXIT_SUCCESS : EXIT_FAILURE;<br>  }<br>  <br>+ #define BENIGN    &quot;+-_/&quot;<br>




+ <br>+ static void<br>+ namecheck(const char * const name)<br>+ {<br>+     register const char *    cp;<br>+ <br>+     if (!noise)<br>+         return;<br>+     for (cp = name; *cp != &#39;\0&#39;; ++cp)<br>+         if (!isascii(*cp) ||<br>




+             (!isalnum(*cp) &amp;&amp; strchr(BENIGN, *cp) == NULL)) {<br>+ warning(_(&quot;file name %s has non-ASCII-alphanumeric character other than %s&quot;),<br>+                     name, BENIGN);<br>+             return;<br>




+         }<br>+ }<br>+ <br>  static void<br>  dolink(const char *const fromfield, const char *const tofield)<br>  {<br>      register char *    fromname;<br>      register char *    toname;<br>  <br>+     namecheck(tofield);<br>




      if (fromfield[0] == &#39;/&#39;)<br>          fromname = ecpyalloc(fromfield);<br>      else {<br>***************<br>*** 1495,1500 ****<br>--- 1515,1521 ----<br>      void *typesptr = ats + timecnt;<br>      unsigned char *types = typesptr;<br>




  <br>+     namecheck(name);<br>      /*<br>      ** Sort.<br>      */<br><br><br></div>
</blockquote></div><br><br clear="all"><br></div></div><span><font color="#888888">-- <br><div dir="ltr">Jonathan Leffler &lt;<a href="mailto:jonathan.leffler@gmail.com" target="_blank">jonathan.leffler@gmail.com</a>&gt;  #include &lt;disclaimer.h&gt;<br>

Guardian of DBD::Informix - v2013.0521 - <a href="http://dbi.perl.org" target="_blank">http://dbi.perl.org</a><br>

&quot;Blessed are we who can laugh at ourselves, for we shall never cease to be amused.&quot;</div>
</font></span></div>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>