rem: for (p = path; *p; ++p) if (portable_chars[(unsigned char) *p] == 0) { error (0, 0, _("path `%s' contains nonportable character `%c'"), path, *p); return 0; } return 1;
add: if (*invalid) { mbstate_t mbstate = {0}; size_t charlen = mbrlen (invalid, filelen - validlen, &mbstate); error (0, 0, _("nonportable character %s in file name %s"), quotearg_n_style_mem (1, locale_quoting_style, invalid, (charlen <= MB_LEN_MAX ? charlen : 1)), quote_n (0, file)); return false; }  return true;
context: portable_chars_only (const char *path){  const char *p;  for (p = path; *p; ++p)    if (portable_chars[(unsigned char) *p] == 0)      {	error (0, 0, _("path `%s' contains nonportable character `%c'"),	       path, *p);	return 0;      }  return 1;}