Ejemplo n.º 1
0
static int
artwork_get_dir_image(char *path, int isdir, int max_w, int max_h, int format, struct evbuffer *evbuf)
{
  char artwork[PATH_MAX];
  char *ptr;
  int i;
  int j;
  int len;
  int ret;

  ret = snprintf(artwork, sizeof(artwork), "%s", path);
  if ((ret < 0) || (ret >= sizeof(artwork)))
    {
      DPRINTF(E_INFO, L_ART, "Artwork path exceeds PATH_MAX\n");

      return -1;
    }

  if (!isdir)
    {
      ptr = strrchr(artwork, '/');
      if (ptr)
	*ptr = '\0';
    }

  len = strlen(artwork);

  for (i = 0; i < (sizeof(cover_basename) / sizeof(cover_basename[0])); i++)
    {
      for (j = 0; j < (sizeof(cover_extension) / sizeof(cover_extension[0])); j++)
	{
	  ret = snprintf(artwork + len, sizeof(artwork) - len, "/%s.%s", cover_basename[i], cover_extension[j]);
	  if ((ret < 0) || (ret >= sizeof(artwork) - len))
	    {
	      DPRINTF(E_INFO, L_ART, "Artwork path exceeds PATH_MAX (%s.%s)\n", cover_basename[i], cover_extension[j]);

	      continue;
	    }

	  DPRINTF(E_DBG, L_ART, "Trying directory artwork file %s\n", artwork);

	  ret = access(artwork, F_OK);
	  if (ret < 0)
	    continue;

	  break;
	}

      if (j < (sizeof(cover_extension) / sizeof(cover_extension[0])))
	break;
    }

  if (i == (sizeof(cover_basename) / sizeof(cover_basename[0])))
    return -1;

  return artwork_get(artwork, max_w, max_h, format, evbuf);
}
Ejemplo n.º 2
0
static int
artwork_get_own_image(char *path, int max_w, int max_h, int format, struct evbuffer *evbuf)
{
  char artwork[PATH_MAX];
  char *ptr;
  int len;
  int i;
  int ret;

  ret = snprintf(artwork, sizeof(artwork), "%s", path);
  if ((ret < 0) || (ret >= sizeof(artwork)))
    {
      DPRINTF(E_INFO, L_ART, "Artwork path exceeds PATH_MAX\n");

      return -1;
    }

  ptr = strrchr(artwork, '.');
  if (ptr)
    *ptr = '\0';

  len = strlen(artwork);

  for (i = 0; i < (sizeof(cover_extension) / sizeof(cover_extension[0])); i++)
    {
      ret = snprintf(artwork + len, sizeof(artwork) - len, ".%s", cover_extension[i]);
      if ((ret < 0) || (ret >= sizeof(artwork) - len))
	{
	  DPRINTF(E_INFO, L_ART, "Artwork path exceeds PATH_MAX (ext %s)\n", cover_extension[i]);

	  continue;
	}

      DPRINTF(E_DBG, L_ART, "Trying own artwork file %s\n", artwork);

      ret = access(artwork, F_OK);
      if (ret < 0)
	continue;

      break;
    }

  if (i == (sizeof(cover_extension) / sizeof(cover_extension[0])))
    return -1;

  return artwork_get(artwork, max_w, max_h, format, evbuf);
}