Compare commits
9 Commits
v0.16_alph
...
v0.16_alph
Author | SHA1 | Date | |
---|---|---|---|
![]() |
c7265f9689 | ||
![]() |
46ab8d18e2 | ||
![]() |
f384f8da93 | ||
![]() |
23cd8a74be | ||
![]() |
cc1debc948 | ||
![]() |
5a3aa1262a | ||
![]() |
ad52eb236d | ||
![]() |
d2c2cbd0ae | ||
![]() |
462bba8e2f |
7
NEWS
7
NEWS
@@ -109,6 +109,13 @@ ver 0.16 (20??/??/??)
|
|||||||
* make single mode 'sticky'
|
* make single mode 'sticky'
|
||||||
|
|
||||||
|
|
||||||
|
ver 0.15.15 (2010/11/08)
|
||||||
|
* input:
|
||||||
|
- rewind: fix assertion failure
|
||||||
|
* output:
|
||||||
|
- shout: artist comes first in stream title
|
||||||
|
|
||||||
|
|
||||||
ver 0.15.14 (2010/11/06)
|
ver 0.15.14 (2010/11/06)
|
||||||
* player_thread: fix assertion failure due to wrong music pipe on seek
|
* player_thread: fix assertion failure due to wrong music pipe on seek
|
||||||
* output_thread: fix assertion failure due to race condition in OPEN
|
* output_thread: fix assertion failure due to race condition in OPEN
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
AC_PREREQ(2.60)
|
AC_PREREQ(2.60)
|
||||||
AC_INIT(mpd, 0.16~alpha3, musicpd-dev-team@lists.sourceforge.net)
|
AC_INIT(mpd, 0.16~alpha4, musicpd-dev-team@lists.sourceforge.net)
|
||||||
AC_CONFIG_SRCDIR([src/main.c])
|
AC_CONFIG_SRCDIR([src/main.c])
|
||||||
AM_INIT_AUTOMAKE([foreign 1.10 dist-bzip2 subdir-objects])
|
AM_INIT_AUTOMAKE([foreign 1.10 dist-bzip2 subdir-objects])
|
||||||
AM_CONFIG_HEADER(config.h)
|
AM_CONFIG_HEADER(config.h)
|
||||||
|
@@ -81,7 +81,7 @@ copy_attributes(struct input_rewind *r)
|
|||||||
const struct input_stream *src = r->input;
|
const struct input_stream *src = r->input;
|
||||||
|
|
||||||
assert(dest != src);
|
assert(dest != src);
|
||||||
assert(dest->mime != src->mime);
|
assert(src->mime == NULL || dest->mime != src->mime);
|
||||||
|
|
||||||
dest->ready = src->ready;
|
dest->ready = src->ready;
|
||||||
dest->seekable = src->seekable;
|
dest->seekable = src->seekable;
|
||||||
|
@@ -494,7 +494,7 @@ shout_tag_to_metadata(const struct tag *tag, char *dest, size_t size)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(dest, size, "%s - %s", title, artist);
|
snprintf(dest, size, "%s - %s", artist, title);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void my_shout_set_tag(void *data,
|
static void my_shout_set_tag(void *data,
|
||||||
|
@@ -72,6 +72,14 @@ apply_song_metadata(struct song *dest, const struct song *src)
|
|||||||
song_free(dest);
|
song_free(dest);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (dest->tag != NULL && dest->tag->time > 0 &&
|
||||||
|
src->start_ms > 0 && src->end_ms == 0 &&
|
||||||
|
src->start_ms / 1000 < (unsigned)dest->tag->time)
|
||||||
|
/* the range is open-ended, and the playlist plugin
|
||||||
|
did not know the total length of the song file
|
||||||
|
(e.g. last track on a CUE file); fix it up here */
|
||||||
|
tmp->tag->time = dest->tag->time - src->start_ms / 1000;
|
||||||
|
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -546,6 +546,31 @@ update_container_file( struct directory* directory,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if the given permissions on the mapped file are given.
|
||||||
|
*/
|
||||||
|
static bool
|
||||||
|
directory_child_access(const struct directory *directory,
|
||||||
|
const char *name, int mode)
|
||||||
|
{
|
||||||
|
#ifdef WIN32
|
||||||
|
/* access() is useless on WIN32 */
|
||||||
|
(void)directory;
|
||||||
|
(void)name;
|
||||||
|
return true;
|
||||||
|
#else
|
||||||
|
char *path = map_directory_child_fs(directory, name);
|
||||||
|
if (path == NULL)
|
||||||
|
/* something went wrong, but that isn't a permission
|
||||||
|
problem */
|
||||||
|
return true;
|
||||||
|
|
||||||
|
bool success = access(path, mode) == 0 || errno != EACCES;
|
||||||
|
g_free(path);
|
||||||
|
return success;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
update_regular_file(struct directory *directory,
|
update_regular_file(struct directory *directory,
|
||||||
const char *name, const struct stat *st)
|
const char *name, const struct stat *st)
|
||||||
@@ -562,6 +587,14 @@ update_regular_file(struct directory *directory,
|
|||||||
{
|
{
|
||||||
struct song* song = songvec_find(&directory->songs, name);
|
struct song* song = songvec_find(&directory->songs, name);
|
||||||
|
|
||||||
|
if (!directory_child_access(directory, name, R_OK)) {
|
||||||
|
g_warning("no read permissions on %s/%s",
|
||||||
|
directory_get_path(directory), name);
|
||||||
|
if (song != NULL)
|
||||||
|
delete_song(directory, song);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!(song != NULL && st->st_mtime == song->mtime &&
|
if (!(song != NULL && st->st_mtime == song->mtime &&
|
||||||
!walk_discard) &&
|
!walk_discard) &&
|
||||||
plugin->container_scan != NULL)
|
plugin->container_scan != NULL)
|
||||||
|
Reference in New Issue
Block a user