diff options
author | Moritz Patelscheck | 2015-11-15 17:46:29 +0100 |
---|---|---|
committer | Moritz Patelscheck | 2015-11-15 17:46:29 +0100 |
commit | e16617fc717cc93258262878446129789f3794b6 (patch) | |
tree | 5fe013aeecba204d1bab4df9f341bff31b82c5cc /minidlna-custom-icon.patch | |
download | aur-e16617fc717cc93258262878446129789f3794b6.tar.gz |
initial
Diffstat (limited to 'minidlna-custom-icon.patch')
-rw-r--r-- | minidlna-custom-icon.patch | 314 |
1 files changed, 314 insertions, 0 deletions
diff --git a/minidlna-custom-icon.patch b/minidlna-custom-icon.patch new file mode 100644 index 000000000000..271aa66b6c7d --- /dev/null +++ b/minidlna-custom-icon.patch @@ -0,0 +1,314 @@ +diff --new-file -aur a/icons.c b/icons.c +--- a/icons.c 2015-09-10 21:24:09.000000000 +0200 ++++ b/icons.c 2015-11-15 13:42:18.581940515 +0100 +@@ -21,7 +21,7 @@ + #ifdef NETGEAR + /* NG_Icon_48x48.png */ + unsigned char +-png_sm[] = "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\x00\x00\x30\x00\x00\x00\x30" ++_png_sm[] = "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\x00\x00\x30\x00\x00\x00\x30" + "\x08\x06\x00\x00\x00\x57\x02\xf9\x87\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72" + "\x65\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\x79\x71\xc9\x65\x3c\x00\x00" + "\x03\x22\x69\x54\x58\x74\x58\x4d\x4c\x3a\x63\x6f\x6d\x2e\x61\x64\x6f\x62\x65\x2e\x78\x6d\x70\x00" +@@ -138,7 +138,7 @@ + + /* NG_Icon_120x120.png */ + unsigned char +-png_lrg[] = "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\x00\x00\x78\x00\x00\x00\x78" ++_png_lrg[] = "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\x00\x00\x78\x00\x00\x00\x78" + "\x08\x06\x00\x00\x00\x39\x64\x36\xd2\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72" + "\x65\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\x79\x71\xc9\x65\x3c\x00\x00" + "\x03\x22\x69\x54\x58\x74\x58\x4d\x4c\x3a\x63\x6f\x6d\x2e\x61\x64\x6f\x62\x65\x2e\x78\x6d\x70\x00" +@@ -355,7 +355,7 @@ + + /* NG_Icon_48x48.jpg */ + unsigned char +-jpeg_sm[] = "\xff\xd8\xff\xe1\x00\x18\x45\x78\x69\x66\x00\x00\x49\x49\x2a\x00\x08\x00\x00\x00\x00\x00\x00\x00" ++_jpeg_sm[] = "\xff\xd8\xff\xe1\x00\x18\x45\x78\x69\x66\x00\x00\x49\x49\x2a\x00\x08\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\xff\xec\x00\x11\x44\x75\x63\x6b\x79\x00\x01\x00\x04\x00\x00\x00\x64\x00\x00\xff" + "\xe1\x03\x2b\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\x2f\x78" + "\x61\x70\x2f\x31\x2e\x30\x2f\x00\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\x62\x65\x67\x69\x6e\x3d" +@@ -562,7 +562,7 @@ + + /* NG_Icon_120x120.jpg */ + unsigned char +-jpeg_lrg[] = "\xff\xd8\xff\xe1\x00\x18\x45\x78\x69\x66\x00\x00\x49\x49\x2a\x00\x08\x00\x00\x00\x00\x00\x00\x00" ++_jpeg_lrg[] = "\xff\xd8\xff\xe1\x00\x18\x45\x78\x69\x66\x00\x00\x49\x49\x2a\x00\x08\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\xff\xec\x00\x11\x44\x75\x63\x6b\x79\x00\x01\x00\x04\x00\x00\x00\x64\x00\x00\xff" + "\xe1\x03\x2b\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\x2f\x78" + "\x61\x70\x2f\x31\x2e\x30\x2f\x00\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\x62\x65\x67\x69\x6e\x3d" +@@ -1104,7 +1104,7 @@ + #elif __FreeBSD__ + /* Small Daemon PNG image */ + unsigned char +-png_sm[] = "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\x00\x00\x29\x00\x00\x00\x30" ++_png_sm[] = "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\x00\x00\x29\x00\x00\x00\x30" + "\x08\x06\x00\x00\x00\x8c\xb9\x53\xa5\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00" + "\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\x00\x09\x70\x48\x59\x73" + "\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xdc\x03" +@@ -1264,7 +1264,7 @@ + + /* Large Daemon PNG image */ + unsigned char +-png_lrg[] = "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\x00\x00\x66\x00\x00\x00\x78" ++_png_lrg[] = "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\x00\x00\x66\x00\x00\x00\x78" + "\x08\x06\x00\x00\x00\x00\x03\x87\x89\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00" + "\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\x00\x09\x70\x48\x59\x73" + "\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xdc\x03" +@@ -1932,7 +1932,7 @@ + + /* Small Daemon JPEG image */ + unsigned char +-jpeg_sm[] = "\xff\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\x48\x00\x48\x00\x00\xff\xdb\x00\x43" ++_jpeg_sm[] = "\xff\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\x48\x00\x48\x00\x00\xff\xdb\x00\x43" + "\x00\x05\x03\x04\x04\x04\x03\x05\x04\x04\x04\x05\x05\x05\x06\x07\x0c\x08\x07\x07\x07\x07\x0f\x0b" + "\x0b\x09\x0c\x11\x0f\x12\x12\x11\x0f\x11\x11\x13\x16\x1c\x17\x13\x14\x1a\x15\x11\x11\x18\x21\x18" + "\x1a\x1d\x1d\x1f\x1f\x1f\x13\x17\x22\x24\x22\x1e\x24\x1c\x1e\x1f\x1e\xff\xdb\x00\x43\x01\x05\x05" +@@ -1984,7 +1984,7 @@ + + /* Large Daemon JPEG image */ + unsigned char +-jpeg_lrg[] = "\xff\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\x48\x00\x48\x00\x00\xff\xdb\x00\x43" ++_jpeg_lrg[] = "\xff\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\x48\x00\x48\x00\x00\xff\xdb\x00\x43" + "\x00\x05\x03\x04\x04\x04\x03\x05\x04\x04\x04\x05\x05\x05\x06\x07\x0c\x08\x07\x07\x07\x07\x0f\x0b" + "\x0b\x09\x0c\x11\x0f\x12\x12\x11\x0f\x11\x11\x13\x16\x1c\x17\x13\x14\x1a\x15\x11\x11\x18\x21\x18" + "\x1a\x1d\x1d\x1f\x1f\x1f\x13\x17\x22\x24\x22\x1e\x24\x1c\x1e\x1f\x1e\xff\xdb\x00\x43\x01\x05\x05" +@@ -2127,7 +2127,7 @@ + #else + /* Small Tux PNG image */ + unsigned char +-png_sm[] = "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\x00\x00\x29\x00\x00\x00\x30" ++_png_sm[] = "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\x00\x00\x29\x00\x00\x00\x30" + "\x08\x06\x00\x00\x00\x8c\xb9\x53\xa5\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00" + "\x08\xf3\x49\x44\x41\x54\x58\xc3\xc5\x99\x7b\x6c\x53\xd7\x19\xc0\x7f\xf7\x5e\x3f\x62\xe7\x69\x02" + "\x24\x4b\x52\xe2\x84\x24\x24\x24\x83\x50\x5a\x06\x6b\x80\x96\x74\xa5\x1b\x63\xd5\xe8\xd6\x69\x65" +@@ -2229,7 +2229,7 @@ + + /* Large Tux PNG image */ + unsigned char +-png_lrg[] = "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\x00\x00\x66\x00\x00\x00\x78" ++_png_lrg[] = "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\x00\x00\x66\x00\x00\x00\x78" + "\x08\x06\x00\x00\x00\x00\x03\x87\x89\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00" + "\x20\x00\x49\x44\x41\x54\x78\xda\xed\x9d\x79\x78\x64\x55\x9d\xf7\x3f\xe7\xde\x5b\x7b\x65\xdf\xd3" + "\x7b\xd2\x49\xba\x09\xe9\x25\x0d\x74\xb3\x0c\x8d\xd0\x80\x88\xe0\x23\xa3\x88\x40\x3f\xe0\x20\xca" +@@ -2588,7 +2588,7 @@ + + /* Small Tux JPEG image */ + unsigned char +-jpeg_sm[] = "\xff\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\x5a\x00\x5a\x00\x00\xff\xdb\x00\x43" ++_jpeg_sm[] = "\xff\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\x5a\x00\x5a\x00\x00\xff\xdb\x00\x43" + "\x00\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x02\x03\x02\x02\x02\x02\x02\x04\x03" + "\x03\x02\x03\x05\x04\x05\x05\x05\x04\x04\x04\x05\x06\x07\x06\x05\x05\x07\x06\x04\x04\x06\x09\x06" + "\x07\x08\x08\x08\x08\x08\x05\x06\x09\x0a\x09\x08\x0a\x07\x08\x08\x08\xff\xdb\x00\x43\x01\x01\x01" +@@ -2673,7 +2673,7 @@ + + /* Large Tux JPEG image */ + unsigned char +-jpeg_lrg[] = "\xff\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\x5a\x00\x5a\x00\x00\xff\xdb\x00\x43" ++_jpeg_lrg[] = "\xff\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\x5a\x00\x5a\x00\x00\xff\xdb\x00\x43" + "\x00\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x02\x03\x02\x02\x02\x02\x02\x04\x03" + "\x03\x02\x03\x05\x04\x05\x05\x05\x04\x04\x04\x05\x06\x07\x06\x05\x05\x07\x06\x04\x04\x06\x09\x06" + "\x07\x08\x08\x08\x08\x08\x05\x06\x09\x0a\x09\x08\x0a\x07\x08\x08\x08\xff\xdb\x00\x43\x01\x01\x01" +@@ -2929,3 +2929,15 @@ + "\x1e\x88\x20\xa8\xd8\xba\xe2\x7e\xdc\x26\x9a\x69\x08\xf7\x22\x22\x02\x82\x28\x82\x29\xe8\x88\x9e" + "\xda\x69\xa6\x90\x8f\xff\xd9"; + #endif ++ ++char *png_sm = (char*) _png_sm; ++size_t png_sm_size = sizeof(_png_sm); ++ ++char *png_lrg = (char*) _png_lrg; ++size_t png_lrg_size = sizeof(_png_lrg); ++ ++char *jpeg_sm = (char*) _jpeg_sm; ++size_t jpeg_sm_size = sizeof(_jpeg_sm); ++ ++char *jpeg_lrg = (char*) _jpeg_lrg; ++size_t jpeg_lrg_size = sizeof(_jpeg_lrg); +diff --new-file -aur a/icons.h b/icons.h +--- a/icons.h 1970-01-01 01:00:00.000000000 +0100 ++++ b/icons.h 2015-11-15 13:45:47.882281953 +0100 +@@ -0,0 +1,11 @@ ++extern char *png_sm; ++extern size_t png_sm_size; ++ ++extern char *png_lrg; ++extern size_t png_lrg_size; ++ ++extern char *jpeg_sm; ++extern size_t jpeg_sm_size; ++ ++extern char *jpeg_lrg; ++extern size_t jpeg_lrg_size; +diff --new-file -aur a/minidlna.c b/minidlna.c +--- a/minidlna.c 2015-09-10 21:24:09.000000000 +0200 ++++ b/minidlna.c 2015-11-15 13:42:18.581940515 +0100 +@@ -94,6 +94,7 @@ + #include "log.h" + #include "tivo_beacon.h" + #include "tivo_utils.h" ++#include "icons.h" + + #if SQLITE_VERSION_NUMBER < 3005001 + # warning "Your SQLite3 library appears to be too old! Please use 3.5.1 or newer." +@@ -738,6 +739,68 @@ + if (strtobool(ary_options[i].value)) + SETFLAG(MERGE_MEDIA_DIRS_MASK); + break; ++ case ICON_PNG_SM: ++ case ICON_PNG_LRG: ++ case ICON_JPEG_SM: ++ case ICON_JPEG_LRG: ++ { ++ FILE *f = fopen(ary_options[i].value, "rb"); ++ if (f == NULL) ++ { ++ DPRINTF(E_WARN, L_GENERAL, "Icon file not found: %s\n", ary_options[i].value); ++ DPRINTF(E_WARN, L_GENERAL, "Fallback to default icon!\n"); ++ break; ++ } ++ fseek(f, 0, SEEK_END); ++ size_t fsize = ftell(f); ++ if (fsize >= 192*1024) ++ { ++ fclose(f); ++ DPRINTF(E_WARN, L_GENERAL, "Icon file to big! Maximum is 192kB! [%s]\n", ary_options[i].value); ++ DPRINTF(E_WARN, L_GENERAL, "Fallback to default icon!\n"); ++ break; ++ } ++ fseek(f, 0, SEEK_SET); ++ char *data = malloc(fsize); ++ if (!data) ++ { ++ fclose(f); ++ DPRINTF(E_WARN, L_GENERAL, "Not enough memory to load icon!\n"); ++ DPRINTF(E_WARN, L_GENERAL, "Fallback to default icon!\n"); ++ break; ++ } ++ if (fread(data, 1, fsize, f) != fsize) ++ { ++ fclose(f); ++ free(data); ++ DPRINTF(E_WARN, L_GENERAL, "I/O error while reading icon file: %s!\n", ary_options[i].value); ++ DPRINTF(E_WARN, L_GENERAL, "Fallback to default icon!\n"); ++ break; ++ } ++ fclose(f); ++ ++ switch (ary_options[i].id) ++ { ++ case ICON_PNG_SM: ++ png_sm = data; ++ png_sm_size = fsize; ++ break; ++ case ICON_PNG_LRG: ++ png_lrg = data; ++ png_lrg_size = fsize; ++ break; ++ case ICON_JPEG_SM: ++ jpeg_sm = data; ++ jpeg_sm_size = fsize; ++ break; ++ case ICON_JPEG_LRG: ++ jpeg_lrg = data; ++ jpeg_lrg_size = fsize; ++ break; ++ default:; ++ } ++ } ++ break; + default: + DPRINTF(E_ERROR, L_GENERAL, "Unknown option in file %s\n", + optionsfile); +diff --new-file -aur a/minidlna.conf.5 b/minidlna.conf.5 +--- a/minidlna.conf.5 2015-09-10 21:24:09.000000000 +0200 ++++ b/minidlna.conf.5 2015-11-15 13:52:12.405695834 +0100 +@@ -163,6 +163,16 @@ + + .fi + ++.IP "\fBicon_[format]_[size]\fP" ++Set these options to the filepath to your custom icon file. ++.nf ++The possible options are: ++ icon_png_small ++ icon_png_large ++ icon_jpeg_small ++ icon_jpeg_large ++.fi ++ + + + .SH VERSION +diff --new-file -aur a/options.c b/options.c +--- a/options.c 2015-09-10 21:24:09.000000000 +0200 ++++ b/options.c 2015-11-15 13:42:18.581940515 +0100 +@@ -64,7 +64,11 @@ + { USER_ACCOUNT, "user" }, + { FORCE_SORT_CRITERIA, "force_sort_criteria" }, + { MAX_CONNECTIONS, "max_connections" }, +- { MERGE_MEDIA_DIRS, "merge_media_dirs" } ++ { MERGE_MEDIA_DIRS, "merge_media_dirs" }, ++ { ICON_PNG_SM, "icon_png_small" }, ++ { ICON_PNG_LRG, "icon_png_large" }, ++ { ICON_JPEG_SM, "icon_jpeg_small" }, ++ { ICON_JPEG_LRG, "icon_jpeg_large" } + }; + + int +diff --new-file -aur a/options.h b/options.h +--- a/options.h 2015-09-10 21:24:09.000000000 +0200 ++++ b/options.h 2015-11-15 13:42:18.581940515 +0100 +@@ -57,7 +57,11 @@ + USER_ACCOUNT, /* user account to run as */ + FORCE_SORT_CRITERIA, /* force sorting by a given sort criteria */ + MAX_CONNECTIONS, /* maximum number of simultaneous connections */ +- MERGE_MEDIA_DIRS /* don't add an extra directory level when there are multiple media dirs */ ++ MERGE_MEDIA_DIRS, /* don't add an extra directory level when there are multiple media dirs */ ++ ICON_PNG_SM, /* path to small png icon */ ++ ICON_PNG_LRG, /* path to large png icon */ ++ ICON_JPEG_SM, /* path to small jpeg icon */ ++ ICON_JPEG_LRG /* path to large jpeg icon */ + }; + + /* readoptionsfile() +diff --new-file -aur a/upnphttp.c b/upnphttp.c +--- a/upnphttp.c 2015-09-10 21:24:09.000000000 +0200 ++++ b/upnphttp.c 2015-11-15 13:42:18.581940515 +0100 +@@ -1341,28 +1341,32 @@ + { + DPRINTF(E_DEBUG, L_HTTP, "Sending small PNG icon\n"); + data = (char *)png_sm; +- size = sizeof(png_sm)-1; ++ //size = sizeof(png_sm)-1; ++ size = png_sm_size; + strcpy(mime+6, "png"); + } + else if( strcmp(icon, "lrg.png") == 0 ) + { + DPRINTF(E_DEBUG, L_HTTP, "Sending large PNG icon\n"); + data = (char *)png_lrg; +- size = sizeof(png_lrg)-1; ++ //size = sizeof(png_lrg)-1; ++ size = png_lrg_size; + strcpy(mime+6, "png"); + } + else if( strcmp(icon, "sm.jpg") == 0 ) + { + DPRINTF(E_DEBUG, L_HTTP, "Sending small JPEG icon\n"); + data = (char *)jpeg_sm; +- size = sizeof(jpeg_sm)-1; ++ //size = sizeof(jpeg_sm)-1; ++ size = jpeg_sm_size; + strcpy(mime+6, "jpeg"); + } + else if( strcmp(icon, "lrg.jpg") == 0 ) + { + DPRINTF(E_DEBUG, L_HTTP, "Sending large JPEG icon\n"); + data = (char *)jpeg_lrg; +- size = sizeof(jpeg_lrg)-1; ++ //size = sizeof(jpeg_lrg)-1; ++ size = jpeg_lrg_size; + strcpy(mime+6, "jpeg"); + } + else |