To help ensure that non-ASCII characters don't appear in distribution filenames, changes to zic.c so that the "-v" option warns about them. Both attached and tab-mangled below. --ado *** /tmp/,azic.c 2014-06-25 19:32:44.803874900 -0400 --- /tmp/,bzic.c 2014-06-25 19:32:44.906880800 -0400 *************** *** 134,139 **** --- 134,140 ---- static int itsdir(const char * name); static int lowerit(int c); static int mkdirs(char * filename); + static void namecheck(const char * name); static void newabbr(const char * abbr); static zic_t oadd(zic_t t1, zic_t t2); static void outzone(const struct zone * zp, int ntzones); *************** *** 621,632 **** --- 622,652 ---- return (errors == 0) ? EXIT_SUCCESS : EXIT_FAILURE; } + #define BENIGN "+-_/" + + static void + namecheck(const char * const name) + { + register const char * cp; + + if (!noise) + return; + for (cp = name; *cp != '\0'; ++cp) + if (!isascii(*cp) || + (!isalnum(*cp) && strchr(BENIGN, *cp) == NULL)) { + warning(_("file name %s has non-ASCII-alphanumeric character other than %s"), + name, BENIGN); + return; + } + } + static void dolink(const char *const fromfield, const char *const tofield) { register char * fromname; register char * toname; + namecheck(tofield); if (fromfield[0] == '/') fromname = ecpyalloc(fromfield); else { *************** *** 1495,1500 **** --- 1515,1521 ---- void *typesptr = ats + timecnt; unsigned char *types = typesptr; + namecheck(name); /* ** Sort. */