rem: b = p + 1;
context: print_it (char const *masterformat, char const *filename,	  void (*print_func) (char *, char, char const *, void const *),	  void const *data){  char *b;  /* create a working copy of the format string */  char *format = xstrdup (masterformat);  char *dest = xmalloc (strlen (format) + 1);  b = format;  while (b)    {      char *p = strchr (b, '%');      if (p != NULL)	{	  size_t len;	  *p++ = '\0';	  fputs (b, stdout);	  len = strspn (p, "#-+.I 0123456789");	  dest[0] = '%';	  memcpy (dest + 1, p, len);	  dest[1 + len] = 0;	  p += len;	  switch (*p)	    {	    case '\0':	    case '%':	      putchar ('%');	      break;	    default:	      print_func (dest, *p, filename, data);	      break;	    }	  b = p + 1;	}      else	{	  fputs (b, stdout);	  b = NULL;	}    }  free (format);  free (dest);  fputc ('\n', stdout);}