rem: printf (p, *argument);
add: if (!have_field_width) printf (p, *argument); else printf (p, field_width, *argument);
context: print_direc (const char *start, size_t length, int field_width,	     int precision, const char *argument){  char *p;		/* Null-terminated copy of % directive. */  p = xmalloc ((unsigned) (length + 1));  strncpy (p, start, length);  p[length] = 0;  switch (p[length - 1])    {    case 'd':    case 'i':      if (field_width == UNSPECIFIED)	{	  if (precision == UNSPECIFIED)	    printf (p, xstrtol (argument));	  else	    printf (p, precision, xstrtol (argument));	}      else	{	  if (precision == UNSPECIFIED)	    printf (p, field_width, xstrtol (argument));	  else	    printf (p, field_width, precision, xstrtol (argument));	}      break;    case 'o':    case 'u':    case 'x':    case 'X':      if (field_width == UNSPECIFIED)	{	  if (precision == UNSPECIFIED)	    printf (p, xstrtoul (argument));	  else	    printf (p, precision, xstrtoul (argument));	}      else	{	  if (precision == UNSPECIFIED)	    printf (p, field_width, xstrtoul (argument));	  else	    printf (p, field_width, precision, xstrtoul (argument));	}      break;    case 'f':    case 'e':    case 'E':    case 'g':    case 'G':      if (field_width == UNSPECIFIED)	{	  if (precision == UNSPECIFIED)	    printf (p, xstrtod (argument));	  else	    printf (p, precision, xstrtod (argument));	}      else	{	  if (precision == UNSPECIFIED)	    printf (p, field_width, xstrtod (argument));	  else	    printf (p, field_width, precision, xstrtod (argument));	}      break;    case 'c':      printf (p, *argument);      break;    case 's':      if (field_width == UNSPECIFIED)	{	  if (precision == UNSPECIFIED)	    printf (p, argument);	  else	    printf (p, precision, argument);	}      else	{	  if (precision == UNSPECIFIED)	    printf (p, field_width, argument);	  else	    printf (p, field_width, precision, argument);	}      break;    }  free (p);}