FreeBSD Bugzilla – Attachment 143830 Details for
Bug 191078
[PATCH] net/minidlna: New version 1.1.3 and minor addition
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Revised patch incl kqueue support
minidlna-1.1.3.patch (text/plain), 18.47 KB, created by
Bernard Spil
on 2014-06-16 12:19:08 UTC
(
hide
)
Description:
Revised patch incl kqueue support
Filename:
MIME Type:
Creator:
Bernard Spil
Created:
2014-06-16 12:19:08 UTC
Size:
18.47 KB
patch
obsolete
>diff -ruN minidlna.orig/Makefile minidlna/Makefile >--- minidlna.orig/Makefile 2014-06-16 09:59:27.238813854 +0200 >+++ minidlna/Makefile 2014-06-14 16:21:27.907138380 +0200 >@@ -1,9 +1,8 @@ > # Created by: Mikhail Teterin <mi@aldan.algebra.com> >-# $FreeBSD$ >+# $FreeBSD: head/net/minidlna/Makefile 355719 2014-05-29 18:19:55Z wg $ > > PORTNAME= minidlna >-PORTVERSION= 1.1.2 >-PORTREVISION= 1 >+PORTVERSION= 1.1.3 > PORTEPOCH= 1 > CATEGORIES= net multimedia www > MASTER_SITES= SF >diff -ruN minidlna.orig/distinfo minidlna/distinfo >--- minidlna.orig/distinfo 2014-06-16 10:00:00.366809234 +0200 >+++ minidlna/distinfo 2014-06-14 16:21:44.502135521 +0200 >@@ -1,2 +1,2 @@ >-SHA256 (minidlna-1.1.2.tar.gz) = 97e2e9141c1190d76ad97f0da083874bccf9f9590841be9eb7668bcf695b7204 >-SIZE (minidlna-1.1.2.tar.gz) = 671295 >+SHA256 (minidlna-1.1.3.tar.gz) = ed42d5cadf9488a95a0107341918879ef8ce4c650e19337688c46cdcd484bc4e >+SIZE (minidlna-1.1.3.tar.gz) = 481789 >diff -ruN minidlna.orig/files/extra-patch-kqueue minidlna/files/extra-patch-kqueue >--- minidlna.orig/files/extra-patch-kqueue 2013-12-27 21:51:37.000000000 +0100 >+++ minidlna/files/extra-patch-kqueue 2014-06-16 14:10:57.387766209 +0200 >@@ -1,16 +1,5 @@ >---- ./configure.ac.orig 2013-11-02 05:06:41.000000000 +0400 >-+++ ./configure.ac 2013-11-13 17:25:27.000000000 +0400 >-@@ -453,7 +453,7 @@ >- ################################################################################################################ >- ### Header checks >- >--AC_CHECK_HEADERS([arpa/inet.h asm/unistd.h endian.h machine/endian.h fcntl.h libintl.h locale.h netdb.h netinet/in.h stddef.h stdlib.h string.h sys/file.h sys/inotify.h sys/ioctl.h sys/param.h sys/socket.h sys/time.h unistd.h]) >-+AC_CHECK_HEADERS([arpa/inet.h asm/unistd.h endian.h machine/endian.h fcntl.h libintl.h locale.h netdb.h netinet/in.h stddef.h stdlib.h string.h sys/file.h sys/inotify.h sys/ioctl.h sys/param.h sys/socket.h sys/time.h unistd.h sys/event.h]) >- >- AC_CHECK_FUNCS(inotify_init, AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support]), [ >- AC_MSG_CHECKING([for __NR_inotify_init syscall]) >---- ./inotify.c.orig 2013-11-02 05:06:41.000000000 +0400 >-+++ ./inotify.c 2013-11-13 17:25:27.000000000 +0400 >+--- inotify.c.orig 2014-06-16 11:32:44.970869900 +0200 >++++ inotify.c 2014-06-16 14:05:20.065204300 +0200 > @@ -15,9 +15,10 @@ > * You should have received a copy of the GNU General Public License > * along with MiniDLNA. If not, see <http://www.gnu.org/licenses/>. >@@ -183,16 +172,17 @@ > i += add_dir_watch(fd, dir, e->d_name); > } > } >-@@ -294,6 +337,8 @@ >+@@ -293,6 +336,9 @@ >+ media_types types = ALL_MEDIA; > struct media_dir_s * media_path = media_dirs; > struct stat st; >- >-+ DPRINTF(E_DEBUG, L_INOTIFY, "inotify_insert_file: %s @ %s\n", name, path); >++ struct timeval now; > + >++ DPRINTF(E_DEBUG, L_INOTIFY, "inotify_insert_file: %s @ %s\n", name, path); >+ > /* Is it cover art for another file? */ > if( is_image(path) ) >- update_if_album_art(path); >-@@ -314,25 +359,25 @@ >+@@ -314,25 +360,25 @@ > { > case ALL_MEDIA: > if( !is_image(path) && >@@ -226,7 +216,7 @@ > return -1; > break; > case TYPE_VIDEO: >-@@ -341,14 +386,14 @@ >+@@ -341,14 +387,14 @@ > break; > case TYPE_VIDEO|TYPE_IMAGES: > if( !is_image(path) && >@@ -243,7 +233,24 @@ > return -1; > break; > } >-@@ -371,11 +416,11 @@ >+@@ -357,6 +403,16 @@ >+ if( stat(path, &st) != 0 ) >+ return -1; >+ >++ (void)gettimeofday(&now, NULL); >++ while (now.tv_sec < st.st_mtime + 3) >++ { >++ DPRINTF(E_DEBUG, L_INOTIFY, "Sleeping until %s is stable for a few seconds ...\n", path); >++ sleep(1); >++ (void)gettimeofday(&now, NULL); >++ if (stat(path, &st) != 0) >++ return -1; >++ } >++ >+ ts = sql_get_int_field(db, "SELECT TIMESTAMP from DETAILS where PATH = '%q'", path); >+ if( !ts && is_playlist(path) && (sql_get_int_field(db, "SELECT ID from PLAYLISTS where PATH = '%q'", path) > 0) ) >+ { >+@@ -371,11 +427,11 @@ > inotify_remove_file(path); > } > >@@ -258,7 +265,7 @@ > return -1; > base_copy = base_name; > while( depth ) >-@@ -386,9 +431,9 @@ >+@@ -386,9 +442,9 @@ > > do > { >@@ -270,23 +277,23 @@ > if( id ) > { > if( !depth ) >-@@ -421,13 +466,13 @@ >+@@ -421,13 +477,13 @@ > > if( !depth ) > { > - //DEBUG DPRINTF(E_DEBUG, L_INOTIFY, "Inserting %s\n", name); > + DPRINTF(E_DEBUG, L_INOTIFY, "Inserting %s\n", name); >- insert_file(name, path, id+2, get_next_available_id("OBJECTS", id)); >+ insert_file(name, path, id+2, get_next_available_id("OBJECTS", id), types); > sqlite3_free(id); > if( (is_audio(path) || is_playlist(path)) && next_pl_fill != 1 ) > { > next_pl_fill = time(NULL) + 120; // Schedule a playlist scan for 2 minutes from now. > - //DEBUG DPRINTF(E_WARN, L_INOTIFY, "Playlist scan scheduled for %s", ctime(&next_pl_fill)); >-+ //DEBUG DPRINTF(E_WARN, L_INOTIFY, "Playlist scan scheduled for %s", ctime(&next_pl_fill)); >++ DPRINTF(E_WARN, L_INOTIFY, "Playlist scan scheduled for %s", ctime(&next_pl_fill)); > } > } > return depth; >-@@ -446,6 +491,8 @@ >+@@ -446,6 +502,8 @@ > struct media_dir_s* media_path; > struct stat st; > >@@ -295,7 +302,7 @@ > if( access(path, R_OK|X_OK) != 0 ) > { > DPRINTF(E_WARN, L_INOTIFY, "Could not access %s [%s]\n", path, strerror(errno)); >-@@ -459,7 +506,7 @@ >+@@ -459,7 +517,7 @@ > > parent_buf = strdup(path); > id = sql_get_text_field(db, "SELECT OBJECT_ID from OBJECTS o left join DETAILS d on (d.ID = o.DETAIL_ID)" >@@ -304,32 +311,19 @@ > if( !id ) > id = sqlite3_mprintf("%s", BROWSEDIR_ID); > insert_directory(name, path, BROWSEDIR_ID, id+2, get_next_available_id("OBJECTS", id)); >-@@ -538,9 +585,12 @@ >+@@ -538,7 +596,10 @@ > int64_t detailID; > int rows, playlist; > >+- if( is_caption(path) ) > + DPRINTF(E_DEBUG, L_INOTIFY, "inotify_remove_file: %s\n", path); > + >- if( ends_with(path, ".srt") ) >- { >-- return sql_exec(db, "DELETE from CAPTIONS where PATH = '%q'", path); >-+ rows = sql_exec(db, "DELETE from CAPTIONS where PATH = '%q'", path); >-+ return rows; >- } >- /* Invalidate the scanner cache so we don't insert files into non-existent containers */ >- valid_cache = 0; >-@@ -554,27 +604,25 @@ >++ if( is_caption(path) ) >++ > { >- sql_exec(db, "DELETE from PLAYLISTS where ID = %lld", detailID); >- sql_exec(db, "DELETE from DETAILS where ID =" >-- " (SELECT DETAIL_ID from OBJECTS where OBJECT_ID = '%s$%llX')", >-- MUSIC_PLIST_ID, detailID); >-+ " (SELECT DETAIL_ID from OBJECTS where OBJECT_ID = '%s$%llX')", >-+ MUSIC_PLIST_ID, detailID); >- sql_exec(db, "DELETE from OBJECTS where OBJECT_ID = '%s$%llX' or PARENT_ID = '%s$%llX'", >-- MUSIC_PLIST_ID, detailID, MUSIC_PLIST_ID, detailID); >-+ MUSIC_PLIST_ID, detailID, MUSIC_PLIST_ID, detailID); >+ return sql_exec(db, "DELETE from CAPTIONS where PATH = '%q'", path); > } >+@@ -562,19 +623,17 @@ > else > { > /* Delete the parent containers if we are about to empty them. */ >@@ -352,7 +346,7 @@ > } > > children = sql_get_int_field(db, "SELECT count(*) from OBJECTS where PARENT_ID = '%s'", result[i]); >-@@ -582,6 +630,8 @@ >+@@ -582,6 +641,8 @@ > continue; > if( children < 2 ) > { >@@ -361,7 +355,7 @@ > sql_exec(db, "DELETE from OBJECTS where OBJECT_ID = '%s'", result[i]); > > ptr = strrchr(result[i], '$'); >-@@ -589,6 +639,8 @@ >+@@ -589,6 +650,8 @@ > *ptr = '\0'; > if( sql_get_int_field(db, "SELECT count(*) from OBJECTS where PARENT_ID = '%s'", result[i]) == 0 ) > { >@@ -370,7 +364,7 @@ > sql_exec(db, "DELETE from OBJECTS where OBJECT_ID = '%s'", result[i]); > } > } >-@@ -613,11 +665,13 @@ >+@@ -613,11 +676,13 @@ > int64_t detailID = 0; > int rows, i, ret = 1; > >@@ -385,7 +379,7 @@ > if( (sql_get_table(db, sql, &result, &rows, NULL) == SQLITE_OK) ) > { > if( rows ) >-@@ -639,6 +693,7 @@ >+@@ -639,6 +704,7 @@ > return ret; > } > >@@ -393,7 +387,7 @@ > void * > start_inotify() > { >-@@ -649,7 +704,7 @@ >+@@ -649,7 +715,7 @@ > int length, i = 0; > char * esc_name = NULL; > struct stat st; >@@ -402,7 +396,7 @@ > pollfds[0].fd = inotify_init(); > pollfds[0].events = POLLIN; > >-@@ -664,13 +719,13 @@ >+@@ -664,13 +730,13 @@ > } > inotify_create_watches(pollfds[0].fd); > if (setpriority(PRIO_PROCESS, 0, 19) == -1) >@@ -419,7 +413,7 @@ > if( !length ) > { > if( next_pl_fill && (time(NULL) >= next_pl_fill) ) >-@@ -682,14 +737,14 @@ >+@@ -682,9 +748,9 @@ > } > else if( length < 0 ) > { >@@ -432,14 +426,8 @@ > DPRINTF(E_ERROR, L_INOTIFY, "read failed!\n"); > } > else >- { >-- length = read(pollfds[0].fd, buffer, BUF_LEN); >-+ length = read(pollfds[0].fd, buffer, BUF_LEN); >- } >- >- i = 0; >-@@ -707,12 +762,12 @@ >- sprintf(path_buf, "%s/%s", get_path_from_wd(event->wd), event->name); >+@@ -708,12 +774,12 @@ >+ snprintf(path_buf, sizeof(path_buf), "%s/%s", get_path_from_wd(event->wd), event->name); > if ( event->mask & IN_ISDIR && (event->mask & (IN_CREATE|IN_MOVED_TO)) ) > { > - DPRINTF(E_DEBUG, L_INOTIFY, "The directory %s was %s.\n", >@@ -453,7 +441,7 @@ > { > if( S_ISLNK(st.st_mode) ) > { >-@@ -726,7 +781,7 @@ >+@@ -727,7 +793,7 @@ > else if( event->mask & (IN_CLOSE_WRITE|IN_MOVED_TO) && st.st_size > 0 ) > { > if( (event->mask & IN_MOVED_TO) || >@@ -462,7 +450,7 @@ > { > DPRINTF(E_DEBUG, L_INOTIFY, "The file %s was %s.\n", > path_buf, (event->mask & IN_MOVED_TO ? "moved here" : "changed")); >-@@ -755,4 +810,234 @@ >+@@ -756,4 +822,234 @@ > > return 0; > } >@@ -697,156 +685,4 @@ > + > +#endif // defined(HAVE_INOTIFY) || defined(HAVE_SYS_EVENT_H) > + >---- ./inotify.h.orig 2013-11-02 05:06:41.000000000 +0400 >-+++ ./inotify.h 2013-11-13 17:25:27.000000000 +0400 >-@@ -4,4 +4,10 @@ >- >- void * >- start_inotify(); >-+#elif defined(HAVE_SYS_EVENT_H) >-+int >-+inotify_remove_file(const char* path); >-+ >-+void * >-+start_kqueue(); >- #endif >---- ./metadata.c.orig 2013-11-02 05:06:41.000000000 +0400 >-+++ ./metadata.c 2013-11-13 17:25:27.000000000 +0400 >-@@ -183,7 +183,7 @@ >- strcat(file, ".srt"); >- if( access(file, R_OK) == 0 ) >- { >-- sql_exec(db, "INSERT into CAPTIONS" >-+ sql_exec(db, "INSERT OR REPLACE into CAPTIONS" >- " (ID, PATH) " >- "VALUES" >- " (%lld, %Q)", detailID, file); >-@@ -492,7 +492,7 @@ >- m.dlna_pn, song.mime?song.mime:m.mime, album_art); >- if( ret != SQLITE_OK ) >- { >-- fprintf(stderr, "Error inserting details for '%s'!\n", path); >-+ DPRINTF(E_ERROR, L_DB_SQL, "Error inserting details for '%s'!\n", path); >- ret = 0; >- } >- else >-@@ -675,7 +675,7 @@ >- m.rotation, thumb, m.creator, m.dlna_pn, m.mime); >- if( ret != SQLITE_OK ) >- { >-- fprintf(stderr, "Error inserting details for '%s'!\n", path); >-+ DPRINTF(E_ERROR, L_DB_SQL, "Error inserting details for '%s'!\n", path); >- ret = 0; >- } >- else >-@@ -1587,7 +1587,7 @@ >- m.mime, album_art); >- if( ret != SQLITE_OK ) >- { >-- fprintf(stderr, "Error inserting details for '%s'!\n", path); >-+ DPRINTF(E_ERROR, L_DB_SQL, "Error inserting details for '%s'!\n", path); >- ret = 0; >- } >- else >---- ./minidlna.c.orig 2013-11-02 05:06:41.000000000 +0400 >-+++ ./minidlna.c 2013-11-13 17:25:27.000000000 +0400 >-@@ -46,6 +46,7 @@ >- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE >- * POSSIBILITY OF SUCH DAMAGE. >- */ >-+#define FD_SETSIZE 8192 >- #include <stdlib.h> >- #include <unistd.h> >- #include <string.h> >-@@ -365,6 +365,7 @@ >- open_db(&db); >- if (*scanner_pid == 0) /* child (scanner) process */ >- { >-+ DPRINTF(E_DEBUG, L_GENERAL, "Starting scanner in forked child\n"); >- start_scanner(); >- sqlite3_close(db); >- log_close(); >-@@ -373,6 +374,7 @@ >- } >- else if (*scanner_pid < 0) >- { >-+ DPRINTF(E_DEBUG, L_GENERAL, "Starting scanner in parent\n"); >- start_scanner(); >- } >- #else >-@@ -997,6 +999,15 @@ >- else if (pthread_create(&inotify_thread, NULL, start_inotify, NULL) != 0) >- DPRINTF(E_FATAL, L_GENERAL, "ERROR: pthread_create() failed for start_inotify. EXITING\n"); >- } >-+#elif defined(HAVE_SYS_EVENT_H) >-+ if( GETFLAG(INOTIFY_MASK) ) >-+ { >-+ if (!sqlite3_threadsafe() || sqlite3_libversion_number() < 3005001) >-+ DPRINTF(E_ERROR, L_GENERAL, "SQLite library is not threadsafe! " >-+ "Kqueue will be disabled.\n"); >-+ else if (pthread_create(&inotify_thread, NULL, start_kqueue, NULL) != 0) >-+ DPRINTF(E_FATAL, L_GENERAL, "ERROR: pthread_create() failed for start_kqueue. EXITING\n"); >-+ } >- #endif >- smonitor = OpenAndConfMonitorSocket(); >- >---- ./scanner.c.orig 2013-11-02 05:06:41.000000000 +0400 >-+++ ./scanner.c 2013-11-13 17:25:27.000000000 +0400 >-@@ -590,7 +590,7 @@ >- >- sql_failed: >- if( ret != SQLITE_OK ) >-- fprintf(stderr, "Error creating SQLite3 database!\n"); >-+ DPRINTF(E_ERROR, L_DB_SQL, "Error creating SQLite3 database!\n"); >- return (ret != SQLITE_OK); >- } >- >---- upnpevents.c.orig 2013-11-02 02:06:41.000000000 +0100 >-+++ upnpevents.c 2013-12-24 12:22:41.533935174 +0100 >-@@ -416,6 +416,10 @@ >- { >- struct upnp_event_notify * obj; >- for(obj = notifylist.lh_first; obj != NULL; obj = obj->entries.le_next) { >-+ if (obj->s > FD_SETSIZE) >-+ DPRINTF(E_FATAL, L_HTTP, >-+ "upnpevents_selectfds: file descriptor %d too big for select, limit is %d\n", >-+ obj->s, FD_SETSIZE); >- DPRINTF(E_DEBUG, L_HTTP, "upnpevents_selectfds: %p %d %d\n", >- obj, obj->state, obj->s); >- if(obj->s >= 0) { >---- inotify.c.orig 2013-12-26 13:49:59.985302596 +0000 >-+++ inotify.c 2013-12-26 13:50:04.281302535 +0000 >-@@ -336,6 +336,7 @@ >- media_types types = ALL_MEDIA; >- struct media_dir_s * media_path = media_dirs; >- struct stat st; >-+ struct timeval now; >- >- DPRINTF(E_DEBUG, L_INOTIFY, "inotify_insert_file: %s @ %s\n", name, path); >- >-@@ -402,6 +403,16 @@ >- if( stat(path, &st) != 0 ) >- return -1; >- >-+ (void)gettimeofday(&now, NULL); >-+ while (now.tv_sec < st.st_mtime + 3) >-+ { >-+ DPRINTF(E_DEBUG, L_INOTIFY, "Sleeping until %s is stable for a few seconds ...\n", path); >-+ sleep(1); >-+ (void)gettimeofday(&now, NULL); >-+ if (stat(path, &st) != 0) >-+ return -1; >-+ } >-+ >- ts = sql_get_int_field(db, "SELECT TIMESTAMP from DETAILS where PATH = '%q'", path); >- if( !ts && is_playlist(path) && (sql_get_int_field(db, "SELECT ID from PLAYLISTS where PATH = '%q'", path) > 0) ) >- { >-@@ -472,7 +483,7 @@ >- if( (is_audio(path) || is_playlist(path)) && next_pl_fill != 1 ) >- { >- next_pl_fill = time(NULL) + 120; // Schedule a playlist scan for 2 minutes from now. >-- //DEBUG DPRINTF(E_WARN, L_INOTIFY, "Playlist scan scheduled for %s", ctime(&next_pl_fill)); >-+ DPRINTF(E_WARN, L_INOTIFY, "Playlist scan scheduled for %s", ctime(&next_pl_fill)); >- } >- } >- return depth; >+ >diff -ruN minidlna.orig/files/patch-clang-inline minidlna/files/patch-clang-inline >--- minidlna.orig/files/patch-clang-inline 2014-06-16 10:01:07.571797033 +0200 >+++ minidlna/files/patch-clang-inline 1970-01-01 01:00:00.000000000 +0100 >@@ -1,137 +0,0 @@ >-diff --git tagutils/misc.c tagutils/misc.c >-index 98ad543..5dc94e5 100644 >---- tagutils/misc.c >-+++ tagutils/misc.c >-@@ -30,7 +30,7 @@ >- >- #include "misc.h" >- >--inline __u16 >-+__u16 >- le16_to_cpu(__u16 le16) >- { >- #if __BYTE_ORDER == __LITTLE_ENDIAN >-@@ -41,7 +41,7 @@ le16_to_cpu(__u16 le16) >- #endif >- } >- >--inline __u32 >-+__u32 >- le32_to_cpu(__u32 le32) >- { >- #if __BYTE_ORDER == __LITTLE_ENDIAN >-@@ -56,7 +56,7 @@ le32_to_cpu(__u32 le32) >- #endif >- } >- >--inline __u64 >-+__u64 >- le64_to_cpu(__u64 le64) >- { >- #if __BYTE_ORDER == __LITTLE_ENDIAN >-@@ -77,7 +77,7 @@ le64_to_cpu(__u64 le64) >- #endif >- } >- >--inline __u8 >-+__u8 >- fget_byte(FILE *fp) >- { >- __u8 d; >-@@ -87,7 +87,7 @@ fget_byte(FILE *fp) >- return d; >- } >- >--inline __u16 >-+__u16 >- fget_le16(FILE *fp) >- { >- __u16 d; >-@@ -98,7 +98,7 @@ fget_le16(FILE *fp) >- return d; >- } >- >--inline __u32 >-+__u32 >- fget_le32(FILE *fp) >- { >- __u32 d; >-@@ -109,7 +109,7 @@ fget_le32(FILE *fp) >- return d; >- } >- >--inline __u32 >-+__u32 >- cpu_to_be32(__u32 cpu32) >- { >- #if __BYTE_ORDER == __LITTLE_ENDIAN >-diff --git tagutils/misc.h tagutils/misc.h >-index c7642fe..fc488a1 100644 >---- tagutils/misc.h >-+++ tagutils/misc.h >-@@ -37,14 +37,14 @@ typedef signed long long __s64; >- #endif >- >- >--inline __u16 le16_to_cpu(__u16 le16); >--inline __u32 le32_to_cpu(__u32 le32); >--inline __u64 le64_to_cpu(__u64 le64); >--inline __u8 fget_byte(FILE *fp); >--inline __u16 fget_le16(FILE *fp); >--inline __u32 fget_le32(FILE *fp); >-- >--inline __u32 cpu_to_be32(__u32 cpu32); >-+__u16 le16_to_cpu(__u16 le16); >-+__u32 le32_to_cpu(__u32 le32); >-+__u64 le64_to_cpu(__u64 le64); >-+__u8 fget_byte(FILE *fp); >-+__u16 fget_le16(FILE *fp); >-+__u32 fget_le32(FILE *fp); >-+ >-+__u32 cpu_to_be32(__u32 cpu32); >- >- extern char * sha1_hex(char *key); >- >-diff --git utils.c utils.c >-index 57ae5a4..d46f2f0 100644 >---- utils.c >-+++ utils.c >-@@ -33,7 +33,7 @@ >- #include "upnpglobalvars.h" >- #include "log.h" >- >--inline int >-+int >- strcatf(struct string_s *str, const char *fmt, ...) >- { >- int ret; >-@@ -52,14 +52,14 @@ strcatf(struct string_s *str, const char *fmt, ...) >- return ret; >- } >- >--inline void >-+void >- strncpyt(char *dst, const char *src, size_t len) >- { >- strncpy(dst, src, len); >- dst[len-1] = '\0'; >- } >- >--inline int >-+int >- xasprintf(char **strp, char *fmt, ...) >- { >- va_list args; >-diff --git utils.h utils.h >-index d9d49a4..fbff582 100644 >---- utils.h >-+++ utils.h >-@@ -29,7 +29,7 @@ >- /* String functions */ >- int strcatf(struct string_s *str, char *fmt, ...); >- void strncpyt(char *dst, const char *src, size_t len); >--inline int xasprintf(char **strp, char *fmt, ...); >-+int xasprintf(char **strp, char *fmt, ...); >- int ends_with(const char * haystack, const char * needle); >- char *trim(char *str); >- char *strstrc(const char *s, const char *p, const char t); >diff -ruN minidlna.orig/files/patch-minidlna.conf minidlna/files/patch-minidlna.conf >--- minidlna.orig/files/patch-minidlna.conf 2013-06-09 22:10:54.000000000 +0200 >+++ minidlna/files/patch-minidlna.conf 2014-06-16 10:07:53.786772308 +0200 >@@ -1,8 +1,6 @@ >-diff --git minidlna.conf minidlna.conf >-index bfb71d5..b579912 100644 >---- minidlna.conf >-+++ minidlna.conf >-@@ -21,7 +21,7 @@ media_dir=/opt >+--- minidlna.conf.orig 2014-06-06 00:14:30.000000000 +0200 >++++ minidlna.conf 2014-06-16 10:05:28.456790810 +0200 >+@@ -25,7 +25,7 @@ > #friendly_name=My DLNA Server > > # set this if you would like to specify the directory where you want MiniDLNA to store its database and album art cache >@@ -11,3 +9,13 @@ > > # set this if you would like to specify the directory where you want MiniDLNA to store its log file > #log_dir=/var/log >+@@ -61,6 +61,9 @@ >+ serial=12345678 >+ model_number=1 >+ >++# Override the uuid to run multiple instances >++# uuid=550e8400-e29b-41d4-a716-446655440000 >++ >+ # specify the path to the MiniSSDPd socket >+ #minissdpdsocket=/var/run/minissdpd.sock >+
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 191078
:
143826
| 143830