rem: isn't clear on this, but one person has said that in his interpretation, POSIX says tr can't even give a warning.  */
add: isn't clear on this, and we interpret this lack of clarity as meaning the resulting behavior is undefined, which means we're allowed to issue a warning.  */
context: unquote (const unsigned char *s, struct E_string *es){  size_t i, j;  size_t len;  len = strlen ((char *) s);  es->s = (unsigned char *) xmalloc (len);  es->escaped = (int *) xmalloc (len * sizeof (es->escaped[0]));  for (i = 0; i < len; i++)    es->escaped[i] = 0;  j = 0;  for (i = 0; s[i]; i++)    {      switch (s[i])	{	  int c;	case '\\':	  switch (s[i + 1])	    {	      int oct_digit;	    case '\\':	      c = '\\';	      break;	    case 'a':	      c = '\007';	      break;	    case 'b':	      c = '\b';	      break;	    case 'f':	      c = '\f';	      break;	    case 'n':	      c = '\n';	      break;	    case 'r':	      c = '\r';	      break;	    case 't':	      c = '\t';	      break;	    case 'v':	      c = '\v';	      break;	    case '0':	    case '1':	    case '2':	    case '3':	    case '4':	    case '5':	    case '6':	    case '7':	      c = s[i + 1] - '0';	      oct_digit = s[i + 2] - '0';	      if (0 <= oct_digit && oct_digit <= 7)		{		  c = 8 * c + oct_digit;		  ++i;		  oct_digit = s[i + 2] - '0';		  if (0 <= oct_digit && oct_digit <= 7)		    {		      if (8 * c + oct_digit < N_CHARS)			{			  c = 8 * c + oct_digit;			  ++i;			}		      else if (!posix_pedantic)			{			  /* A 3-digit octal number larger than \377 won't			     fit in 8 bits.  So we stop when adding the			     next digit would put us over the limit and			     give a warning about the ambiguity.  POSIX			     isn't clear on this, but one person has said			     that in his interpretation, POSIX says tr			     can't even give a warning.  */			  error (0, 0, _("warning: the ambiguous octal escape \\\%c%c%c is being\n\tinterpreted as the 2-byte sequence \\0%c%c, `%c'"),				 s[i], s[i + 1], s[i + 2],				 s[i], s[i + 1], s[i + 2]);			}		    }		}	      break;	    case '\0':	      error (0, 0, _("invalid backslash escape at end of string"));	      return 1;	    default:	      if (posix_pedantic)		{		  error (0, 0, _("invalid backslash escape `\\%c'"), s[i + 1]);		  return 1;		}	      else	        {		  c = s[i + 1];		  es->escaped[j] = 1;		}	    }	  ++i;	  es->s[j++] = c;	  break;	default:	  es->s[j++] = s[i];	  break;	}    }  es->len = j;  return 0;}