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); }
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); }